Base Implementation of Era Dynamis#31
Conversation
18e2cd4 to
cbc294c
Compare
4edb0a5 to
66fbd3f
Compare
068c550 to
223b9db
Compare
d4886e5 to
2b7f2b6
Compare
Adds Dynamis Windurst Changes how aggro spawns work - forces the statues to spawn regardless of 1 shotting a statue
| elseif mobType == 'Normal' then | ||
| m:addOverride(mobPath .. '.onMobSpawn', function(mob) | ||
| xi.dynamis.onMobSpawn(mob, mobType) | ||
| end) | ||
|
|
||
| m:addOverride(mobPath .. '.onMobRoam', function(mob) | ||
| xi.dynamis.onMobRoam(mob) | ||
| end) | ||
|
|
||
| m:addOverride(mobPath .. '.onMobDeath', function(mob, player, optParams) | ||
| xi.dynamis.onMobDeath(mob, player, optParams) | ||
| end) | ||
|
|
||
| m:addOverride(mobPath .. '.onMobDespawn', function(mob, player, optParams) | ||
| end) | ||
| elseif mobType == 'Nightmare' then | ||
| m:addOverride(mobPath .. '.onMobSpawn', function(mob) | ||
| xi.dynamis.onMobSpawn(mob, mobType) | ||
| end) | ||
|
|
||
| m:addOverride(mobPath .. '.onMobEngage', function(mob, target) | ||
| xi.dynamis.mobOnEngage(mob, target) | ||
| end) | ||
|
|
||
| m:addOverride(mobPath .. '.onMobRoam', function(mob) | ||
| xi.dynamis.onMobRoam(mob) | ||
| end) | ||
|
|
||
| m:addOverride(mobPath .. '.onMobDeath', function(mob, player, optParams) | ||
| xi.dynamis.onMobDeath(mob, player, optParams) | ||
| end) | ||
|
|
||
| m:addOverride(mobPath .. '.onMobDespawn', function(mob, player, optParams) | ||
| end) | ||
| end |
There was a problem hiding this comment.
Can probably combine these two and add a check in engage for normal mobs to skip
1dfd923 to
d2c9d15
Compare
| { | ||
| ['Dynamis-San_dOria'] = | ||
| { | ||
| { 'Overlords_Tombstone', 'Boss' }, |
There was a problem hiding this comment.
any reason for using 'Boss' or 'Normal' instead of an enum?
There was a problem hiding this comment.
No particular reason, it was just the first way I thought of to separate different overrides. I can change it to an enum and condense the code below this as suggested.
Side note: I will need a way to override certain monsters when I get to the balance portion because some mobs mechanics are different from retail vs era. Most likely will just need a separate override for that, it's only a handful of NMs.
|
|
||
| -- Special case for SJ zones (7-9) | ||
| -- Dynamis - Buburimu (8), Dynamis - Qufim (9) | ||
| if zoneID == xi.zone.DYNAMIS_BUBURIMU or zoneID == xi.zone.DYNAMIS_QUFIM then |
There was a problem hiding this comment.
There is no SJ NPC for Valkurm. It is handled on death of the 3 fly NMs
|
|
||
| m:addOverride(mobPath .. '.onMobDespawn', function(mob, player, optParams) | ||
| end) | ||
| elseif mobType == 'Nightmare' then |
There was a problem hiding this comment.
there's a lot of code repetition here, maybe you could have a single table such as:
{
[xi.dynamisType.STATUE] =
{
onMobEngage = xi.dynamis.onStatueEngage,
}
[...]
}
Then your code can just iterate on the list.
- Fixes unlimited TE multi lockout - Fixes an issue where the original registrant can bypass the entire lockout - Fixes infinite while loop is a mob for some reason couldnt spawn - Moves tav qm logic so it applies after the NPC is invis - increases capacity var correctly - Fixes issue where using the glass would constantly set the server var - Fixes rounding error of vanadiel days causing too fast of a lockout time - Fixes force spawn mobs to not spawn
I affirm:
What does this pull request do?
This PR is the base implementation of Era Dynamis entry code, complete spawn mechanics and NPC interactions.
THIS DOES NOT INCLUDE ANY BALANCING
This PR includes all of the following zones.