-
Notifications
You must be signed in to change notification settings - Fork 626
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pandemonium Warden: Full Rework #4538
Conversation
end | ||
|
||
return returnEffect | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are we setting and checking a local var on the mob?
Why not just...
local typeEffect = typeEffects[math.random(1, #typeEffects)]
And then we just don't set local variables on the mob nor check them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
because that would be a different effect for each player
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if mob:getFamily() == 91 then | ||
local mobSkin = mob:getModelId() | ||
|
||
if mobSkin == 1746 then | ||
return 0 | ||
else | ||
return 1 | ||
end | ||
end | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I haven't looked at the rest, but love all of these exceptions being removed 🙏
Ok, so about The number of status effects is limited. Unlike with modifiers, we have a limit on available slots for them. In this case, I think we could avoid creating brainjack altogether. Brainjack skill script mobskillObject.onMobWeaponSkill = function(target, mob, skill)
local duration = 90
local typeEffect = xi.effect.CHARM_I
if not target:isPC() then
skill:setMsg(xi.msg.basic.SKILL_MISS)
return typeEffect
elseif mob:getFamily() == 316 then -- Pandemonium Warden
duration = 30
end
local msg = xi.mobskills.mobPhysicalStatusEffectMove(mob, target, skill, typeEffect, 0, 0, duration)
if msg == xi.msg.basic.SKILL_ENFEEB_IS then
target:addStatusEffectEx(typeEffect, 0, 0, 0, duration, 0, 25)
mob:charm(target)
mob:resetEnmity(target)
end
skill:setMsg(msg)
return typeEffect
end Charm effect script effectObject.onEffectGain = function(target, effect)
local DoT = effect:getSubPower()
if DoT > 0 then
target:addMod(xi.mod.REGEN_DOWN, DoT)
end
end
effectObject.onEffectTick = function(target, effect)
end
effectObject.onEffectLose = function(target, effect)
local DoT = effect:getSubPower()
target:setTP(0)
target:uncharm()
-- remove brainjack if present
if DoT > 0 then
target:delMod(xi.mod.REGEN_DOWN, DoT)
end
end DISCLAIMER: I made this inpromptu. Would need testing. However, the real point here is that we should really try not to create new status effects whenever possible if it isn't absolutely necesary. |
PW_WHO_DARES = 7964, -- Pandemonium Warden: Who dares disturb these gates... | ||
PW_END_OF_NOTHING = 7965, -- Pandemonium Warden: This is the end...of nothing... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comments following text IDs need to match exactly what we have listed in our extracts in UpdateExtractor: https://github.com/LandSandBoat/UpdateExtractor/blob/main/out/scripts/zones/Aydeewa_Subterrane/Text.lua.raw.txt#L7870-L7871
Otherwise, when/if there are ID shifts during version updates our automatic tooling will fail
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wow good info, thanks!
I've got Xaver's idea working in theory, and lua prints confirm it's applying the DoT... but it reliably crashes my game when applying the effect with subid 0 (my guess on the culprit). I'll have to play around with it later unless someone knows what the dealio is Edit: actually any reason not to just use the main charm effect power to signal brainjack? |
entity.onMobDeath = function(mob, player, isKiller) | ||
if player ~= nil then | ||
player:addTitle(xi.title.PANDEMONIUM_QUELLER) | ||
mob:showText(mob, ID.text.PW_END_OF_NOTHING) | ||
end | ||
|
||
pwFuncs.despawnPets() | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
onMobDeath was changed to pass a table of options instead of isKiller. You want the death text behind that so it doesn't get spammed for each player in the party, noKiller is if it dies while unclaimed like from a DoT or something.
entity.onMobDeath = function(mob, player, optParams)
if optParams.isKiller or optParams.noKiller then
mob:showText(mob, ID.text.PW_END_OF_NOTHING)
end
if player ~= nil then
player:addTitle(xi.title.PANDEMONIUM_QUELLER)
end
pwFuncs.despawnPets()
end
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice. I remember reading about those changes but this is my first time using the new properties.
Also on wings i wasn't using mob:showText
so i was able to run it for every player. Good catch there.
Well I'm ashamed to admit I can't figure out why my adjustments to
TL;DR - something about manually setting the skill message instead of using |
Was reminded that the 4 chariot phases weren't using the different model IDs that they should, which then also alerted me to the fact that homing missile wasn't triggering in phase 8. Both are resolved in this newest force push |
- Odd-number phases to match retail as simply a short intermediate phase - Mob spell/skill list defined in mob's lua per phase for pet and PW - This removes need for most familyid conditionals in skill luas - Astral Flow given retail-accurate delay on spawn - Phase and pet change logic moved to functions - Coded skills: cackle, brainjack - Added flavor text to PW spawn/death
went ahead and broke up this PR into the required sql changes here: #4706 |
I affirm:
What does this pull request do?
Port of Pandemonium Warden from WingsXI after countless hours of research/testing.
Mobskill adjustments:
I do have one concern on the phase and pet functions: They don't function (har har) asGot it working with a local table of functionslocal function
since they call eachother. It works as global functions but I'm sure this isn't what is preferredSteps to test these changes
!pos 200 33 -140 68
Spawn by trading Pandemonium key:
!additem 2572
or manually!spawnmob 17056168
Fight and bask in his greatness.
Outline of fight: