Implement Hundredfaced Hapool Ja (Mamook)
I affirm:
- [x] I have paid attention to this example and will edit again if need be to not break the formatting, or I will be ignored
- [x] I have read and understood the Contributing Guide
- [x] I've tested my code and the things my code has changed since the last commit in the PR, and will test after any later commits
What does this pull request do?
As it stands, on server init, the NM will be up along with his 4 'clones' by default. However according to FFXIClopedia, and confirmed by me research in retail, the clones spawn only when NM uses Utsusemi.
Steps to test these changes
engage mob, wait until it uses utsusemi, and clones should spawn around him, rather than being pre-spawned
Everything relating to the mob's actions appears to be working properly now. My issue is converting this to a scripted spawn now. I've updated the spawntype value to 128 - "Scripted", and added the logic to onMobDespawn... but now the mob won't pop unless done manually... what am i missing?
everything is working in this current state, however i did find the need for the static ID entry. if this is not correct or if any additional changes required let me know. thanks!
https://media.tenor.com/re_Txs4OUToAAAAd/tab-tab-key.gif
We're trying to move away from hard-coded IDs, since shifts are a major pain for us, downstream, and players. You can get the mob-object for a mob by asking the zone for it, you can see me doing it here for FSA: https://github.com/LandSandBoat/server/blob/base/scripts/zones/Batallia_Downs/Zone.lua#L32-L44
and here in a module: https://github.com/LandSandBoat/server/blob/base/modules/custom/lua/conquest_regional_npcs_always_up.lua
It might look something like this:
zone_object.onInitialize = function(zone)
xi.helm.initZone(zone, xi.helm.type.LOGGING)
local hundredFacedHapoolJaID = zone:queryEntitiesByName("Hundredfaced_Hapool_Ja")[1]:getID()
UpdateNMSpawnPoint(hundredFacedHapoolJaID)
SpawnMob(hundredFacedHapoolJaID)
end
This is also the idea behind DYNAMIC_LOOKUP. This works especially well for NMs because they tend to have unique names in a zone that we don't have to disambiguate for any reason.
Everything relating to the mob's actions appears to be working properly now. My issue is converting this to a scripted spawn now. I've updated the spawntype value to 128 - "Scripted", and added the logic to onMobDespawn... but now the mob won't pop unless done manually... what am i missing?
His helpers spawned by his shadows would be type scripted, he himself would not be since he's a timed pop. If initial pop is randomized (like HNM timers tend to be for example) we'd init his time in the zone lua and then re-random every time his corpse despawns. The clones aren't the same ID and shouldn't have the same group so that they can be different spawn type and diff loot pool than the main NM.
Once this PR lands: https://github.com/LandSandBoat/server/pull/2882
it'll be safe for you to just use the table entry: HUNDREDFACED_HAPOOL_JA = DYNAMIC_LOOKUP,
Oooh. Very fancy. I'll give it a shot.
Everything relating to the mob's actions appears to be working properly now. My issue is converting this to a scripted spawn now. I've updated the spawntype value to 128 - "Scripted", and added the logic to onMobDespawn... but now the mob won't pop unless done manually... what am i missing?
His helpers spawned by his shadows would be type scripted, he himself would not be since he's a timed pop. If initial pop is randomized (like HNM timers tend to be for example) we'd init his time in the zone lua and then re-random every time his corpse despawns. The clones aren't the same ID and shouldn't have the same group so that they can be different spawn type and diff loot pool than the main NM.
I honestly don't know if his initial spawn is randomized, I guess that would need retail verification at some point? Additionally, i couldn't find any information anywhere regarding his windows, so i used the value of 72 hrs already in the DB. If it's ok with you, I think I'll set him to pop on server init, then set with his corpse despawns.
everything tested working with dynamic lookup, anything need to be done regarding these debug messages? i believe these only print when there is no entry present in nm_spawn_points...

We have a new CI rule, you'll need to rename hundredfaced_hapool_ja => hundredfacedHapoolJa, or else CI will start to fail when this eventually merges
https://github.com/LandSandBoat/server/pull/2894