From 466b390b83fda24810b2a39dc2f67dccf79fd960 Mon Sep 17 00:00:00 2001 From: Kipling Date: Tue, 14 Apr 2026 22:05:09 -0700 Subject: [PATCH] Riverne A NM Audits --- .../zones/Riverne-Site_A01/mobs/Aiatar.lua | 6 +- .../Riverne-Site_A01/mobs/Heliodromos.lua | 87 ++++++++++++------- .../Riverne-Site_A01/mobs/Hippogryph.lua | 56 ++++++------ sql/mob_groups.sql | 4 +- sql/mob_pools.sql | 2 +- sql/mob_spawn_points.sql | 2 +- 6 files changed, 93 insertions(+), 64 deletions(-) diff --git a/scripts/zones/Riverne-Site_A01/mobs/Aiatar.lua b/scripts/zones/Riverne-Site_A01/mobs/Aiatar.lua index 68b8a368afb..b6967229335 100644 --- a/scripts/zones/Riverne-Site_A01/mobs/Aiatar.lua +++ b/scripts/zones/Riverne-Site_A01/mobs/Aiatar.lua @@ -17,7 +17,11 @@ entity.phList = } entity.onMobInitialize = function(mob) - mob:addMobMod(xi.mobMod.ALWAYS_AGGRO, 1) + mob:setMobMod(xi.mobMod.ALWAYS_AGGRO, 1) +end + +entity.onMobSpawn = function(mob) + mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 150) end entity.onMobDeath = function(mob, player, optParams) diff --git a/scripts/zones/Riverne-Site_A01/mobs/Heliodromos.lua b/scripts/zones/Riverne-Site_A01/mobs/Heliodromos.lua index cb21820a339..86291a5315b 100644 --- a/scripts/zones/Riverne-Site_A01/mobs/Heliodromos.lua +++ b/scripts/zones/Riverne-Site_A01/mobs/Heliodromos.lua @@ -12,32 +12,47 @@ entity.onMobInitialize = function(mob) end entity.onMobSpawn = function(mob) + mob:setMod(xi.mod.TRIPLE_ATTACK, 15) mob:setMobMod(xi.mobMod.SUPERLINK, ID.mob.HELIODROMOS_OFFSET) - SetServerVariable('Heliodromos_Despawn', 0) + + local zone = mob:getZone() + if zone then + zone:setLocalVar('Heliodromos_Despawn', 0) + end end entity.onMobRoam = function(mob) - local heliodromosDespawn = GetServerVariable('Heliodromos_Despawn') + local zone = mob:getZone() + if not zone then + return + end + + local heliodromosDespawn = zone:getLocalVar('Heliodromos_Despawn') + if heliodromosDespawn == 0 then + return + end + + if heliodromosDespawn > GetSystemTime() then + return + end -- 10 minutes have passed since first heliodromos dies. despawn any remaining heliodromos. - if heliodromosDespawn > 0 and heliodromosDespawn <= GetSystemTime() then - SetServerVariable('Heliodromos_Despawn', 0) - - -- despawn heliodromos - for i = ID.mob.HELIODROMOS_OFFSET, ID.mob.HELIODROMOS_OFFSET + 2 do - if GetMobByID(i):isSpawned() then - DespawnMob(i) - end + zone:setLocalVar('Heliodromos_Despawn', 0) + + -- Despawn heliodromos. + for i = ID.mob.HELIODROMOS_OFFSET, ID.mob.HELIODROMOS_OFFSET + 2 do + if GetMobByID(i):isSpawned() then + DespawnMob(i) end + end - -- allow placeholders to respawn - for i = ID.mob.HELIODROMOS_OFFSET - 3, ID.mob.HELIODROMOS_OFFSET - 1 do - local ph = GetMobByID(i) + -- Allow placeholders to respawn. + for i = ID.mob.HELIODROMOS_OFFSET - 3, ID.mob.HELIODROMOS_OFFSET - 1 do + local ph = GetMobByID(i) - if ph then - DisallowRespawn(i, false) - ph:setRespawnTime(GetMobRespawnTime(ph:getID())) - end + if ph then + DisallowRespawn(i, false) + ph:setRespawnTime(GetMobRespawnTime(i)) end end end @@ -47,32 +62,40 @@ entity.onAdditionalEffect = function(mob, target, damage) end entity.onMobDeath = function(mob, player, optParams) - -- one of the heliodromos was killed. set a 10 minute despawn timer before the others despawn - if optParams.isKiller and GetServerVariable('Heliodromos_Despawn') == 0 then - SetServerVariable('Heliodromos_Despawn', GetSystemTime() + 600) + -- One of the heliodromos was killed. set a 10 minute despawn timer before the others despawn + if optParams.isKiller or optParams.noKiller then + local zone = mob:getZone() + if not zone then + return + end + + if zone:getLocalVar('Heliodromos_Despawn') == 0 then + zone:setLocalVar('Heliodromos_Despawn', GetSystemTime() + 210) + end end end entity.onMobDespawn = function(mob) - local allHeliodromosDead = true - for i = ID.mob.HELIODROMOS_OFFSET, ID.mob.HELIODROMOS_OFFSET + 2 do if GetMobByID(i):isAlive() then - allHeliodromosDead = false + return end end - if allHeliodromosDead then - SetServerVariable('Heliodromos_ToD', GetSystemTime() + math.random(43200, 54000)) -- 12 to 15 hours + local zone = mob:getZone() + if not zone then + return + end + + zone:setLocalVar('Heliodromos_ToD', GetSystemTime() + math.random(43200, 54000)) -- 12 to 15 hours - -- allow placeholders to respawn - for i = ID.mob.HELIODROMOS_OFFSET - 3, ID.mob.HELIODROMOS_OFFSET - 1 do - local ph = GetMobByID(i) + -- Allow placeholders to respawn + for i = ID.mob.HELIODROMOS_OFFSET - 3, ID.mob.HELIODROMOS_OFFSET - 1 do + local ph = GetMobByID(i) - if ph then - DisallowRespawn(i, false) - ph:setRespawnTime(GetMobRespawnTime(ph:getID())) - end + if ph then + DisallowRespawn(i, false) + ph:setRespawnTime(GetMobRespawnTime(ph:getID())) end end end diff --git a/scripts/zones/Riverne-Site_A01/mobs/Hippogryph.lua b/scripts/zones/Riverne-Site_A01/mobs/Hippogryph.lua index 15bcffc1aec..557657c90da 100644 --- a/scripts/zones/Riverne-Site_A01/mobs/Hippogryph.lua +++ b/scripts/zones/Riverne-Site_A01/mobs/Hippogryph.lua @@ -11,7 +11,10 @@ local entity = {} local function disturbMob(mob) local offset = mob:getID() - ID.mob.HELIODROMOS_OFFSET - 3 if offset >= 0 and offset <= 2 then - SetServerVariable('Heliodromos_ToD', GetSystemTime() + math.random(43200, 54000)) -- 12 to 15 hours + local zone = mob:getZone() + if zone then + zone:setLocalVar('Heliodromos_ToD', GetSystemTime() + math.random(43200, 54000)) -- 12 to 15 hours + end end end @@ -23,39 +26,38 @@ entity.onMobSpawn = function(mob) disturbMob(mob) end -entity.onMobEngage = function(mob, target) - disturbMob(mob) -end +entity.onMobRoam = function(mob) + local zone = mob:getZone() + if not zone then + return + end -entity.onMobFight = function(mob, target) - disturbMob(mob) -end + if GetSystemTime() < zone:getLocalVar('Heliodromos_ToD') then + return + end -entity.onMobRoam = function(mob) - -- no PH has been disturbed for 12-15 hours - if GetSystemTime() > GetServerVariable('Heliodromos_ToD') then - local noHeliodromosSpawned = true - for i = ID.mob.HELIODROMOS_OFFSET, ID.mob.HELIODROMOS_OFFSET + 2 do - if GetMobByID(i):isSpawned() then - noHeliodromosSpawned = false - end + for i = ID.mob.HELIODROMOS_OFFSET, ID.mob.HELIODROMOS_OFFSET + 2 do + if GetMobByID(i):isSpawned() then + return end + end - if noHeliodromosSpawned then - -- despawn placeholders - for i = ID.mob.HELIODROMOS_OFFSET - 3, ID.mob.HELIODROMOS_OFFSET - 1 do - DisallowRespawn(i, true) - DespawnMob(i) - end - - -- spawn heliodromos - for i = ID.mob.HELIODROMOS_OFFSET, ID.mob.HELIODROMOS_OFFSET + 2 do - SpawnMob(i) - end - end + -- Despawn placeholders + for i = ID.mob.HELIODROMOS_OFFSET - 3, ID.mob.HELIODROMOS_OFFSET - 1 do + DisallowRespawn(i, true) + DespawnMob(i) + end + + -- Spawn heliodromos + for i = ID.mob.HELIODROMOS_OFFSET, ID.mob.HELIODROMOS_OFFSET + 2 do + SpawnMob(i) end end +entity.onMobEngage = function(mob, target) + disturbMob(mob) +end + entity.onAdditionalEffect = function(mob, target, damage) return xi.mob.onAddEffect(mob, target, damage, xi.mob.ae.WEIGHT, { power = 50 }) end diff --git a/sql/mob_groups.sql b/sql/mob_groups.sql index ef0353e4898..74e2c4615c6 100644 --- a/sql/mob_groups.sql +++ b/sql/mob_groups.sql @@ -1187,7 +1187,7 @@ INSERT INTO `mob_groups` VALUES (27,70,29,'Airi',0,128,0,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (1,6962,30,'Hawkertrap',300,0,852,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (2,3370,30,'Riverne_Vulture',300,0,2100,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (3,1960,30,'Hippogryph',720,0,1319,0,0,0,NULL); -INSERT INTO `mob_groups` VALUES (4,1918,30,'Heliodromos',0,128,1291,0,0,0,NULL); +INSERT INTO `mob_groups` VALUES (4,1918,30,'Heliodromos',0,128,1291,3300,0,0,NULL); INSERT INTO `mob_groups` VALUES (5,71,30,'Air_Elemental',300,4,38,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (6,1340,30,'Firedrake',300,0,830,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (7,3912,30,'Thunder_Elemental',300,4,2410,0,0,0,NULL); @@ -1195,7 +1195,7 @@ INSERT INTO `mob_groups` VALUES (8,1901,30,'Hawker',300,0,571,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (9,747,30,'Cloud_Hippogryph',300,0,488,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (10,277,30,'Atomic_Cluster',300,0,188,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (11,1355,30,'Flamedrake',300,0,841,0,0,0,NULL); -INSERT INTO `mob_groups` VALUES (12,641,30,'Carmine_Dobsonfly',86400,0,418,1200,0,0,NULL); +INSERT INTO `mob_groups` VALUES (12,641,30,'Carmine_Dobsonfly',86400,0,418,1300,0,0,NULL); INSERT INTO `mob_groups` VALUES (13,4532,30,'Darner',300,0,141,0,0,0,'ABYSSEA'); INSERT INTO `mob_groups` VALUES (14,68,30,'Aiatar',0,32,35,5200,0,0,NULL); INSERT INTO `mob_groups` VALUES (15,4309,30,'Water_Elemental',0,128,2629,3200,0,0,NULL); diff --git a/sql/mob_pools.sql b/sql/mob_pools.sql index b24d60b6938..e9d4104fc3b 100644 --- a/sql/mob_pools.sql +++ b/sql/mob_pools.sql @@ -1973,7 +1973,7 @@ INSERT INTO `mob_pools` VALUES (1914,'Hee_Mida_the_Meticulous','Hee_Mida_the_Met INSERT INTO `mob_pools` VALUES (1915,'Heike_Crab','Heike_Crab',77,0x0000640100000000000000000000000000000000,7,7,4,240,100,0,1,0,0,34,0,0,51,1155,8,0,0,0,0,77,77,1,13); INSERT INTO `mob_pools` VALUES (1916,'Heithrun','Heithrun',167,0x0000550100000000000000000000000000000000,1,1,7,280,100,0,0,1,1,2,0,0,0,3,0,0,0,0,0,0,167,1,24); INSERT INTO `mob_pools` VALUES (1917,'Heliodor_Quadav','Heliodor_Quadav',202,0x00009A0200000000000000000000000000000000,4,4,5,265,100,0,1,0,1,0,0,0,518,1155,0,0,2,0,0,202,202,1,15); -INSERT INTO `mob_pools` VALUES (1918,'Heliodromos','Heliodromos',140,0x0000550500000000000000000000000000000000,6,6,2,240,100,0,1,1,1,2,0,0,290,1157,0,0,0,0,0,141,141,2,13); +INSERT INTO `mob_pools` VALUES (1918,'Heliodromos','Heliodromos',140,0x0000550500000000000000000000000000000000,6,6,2,210,100,0,1,1,1,2,0,0,290,1157,0,0,0,0,0,141,141,2,13); INSERT INTO `mob_pools` VALUES (1919,'Helldiver','Helldiver',55,0x0000BD0100000000000000000000000000000000,1,1,5,240,100,0,0,0,1,2,0,0,0,133,0,0,0,0,0,55,55,2,22); INSERT INTO `mob_pools` VALUES (1920,'Hellion','Hellion',86,0x0000400100000000000000000000000000000000,1,1,5,240,100,0,1,0,0,2,0,0,0,133,0,0,0,0,0,86,86,2,34); INSERT INTO `mob_pools` VALUES (1921,'Hellish_Weapon','Hellish_Weapon',110,0x0000C30100000000000000000000000000000000,5,5,3,240,100,0,1,0,0,0,0,0,231,643,8,0,42,0,0,110,110,1,20); diff --git a/sql/mob_spawn_points.sql b/sql/mob_spawn_points.sql index 546651b3a0b..3cba7f6b1eb 100644 --- a/sql/mob_spawn_points.sql +++ b/sql/mob_spawn_points.sql @@ -6171,7 +6171,7 @@ INSERT INTO `mob_spawn_points` VALUES (16900302,0,'Flamedrake','Flamedrake',11,4 INSERT INTO `mob_spawn_points` VALUES (16900303,0,'Flamedrake','Flamedrake',11,47,49,-63.744,0.202,707.078,52); INSERT INTO `mob_spawn_points` VALUES (16900304,0,'Flamedrake','Flamedrake',11,47,49,-95.015,-1.222,738.260,142); INSERT INTO `mob_spawn_points` VALUES (16900305,0,'Flamedrake','Flamedrake',11,47,49,-88.954,-0.232,726.668,57); -INSERT INTO `mob_spawn_points` VALUES (16900306,0,'Aiatar','Aiatar',14,48,51,-81.967,0.246,751.067,180); +INSERT INTO `mob_spawn_points` VALUES (16900306,0,'Aiatar','Aiatar',14,51,52,-81.967,0.246,751.067,180); INSERT INTO `mob_spawn_points` VALUES (16900307,0,'Thunder_Elemental','Thunder Elemental',7,44,44,-74.122,-0.218,724.150,230); INSERT INTO `mob_spawn_points` VALUES (16900308,0,'Atomic_Cluster','Atomic Cluster',10,45,48,-66.701,-0.143,677.762,0); INSERT INTO `mob_spawn_points` VALUES (16900309,0,'Atomic_Cluster','Atomic Cluster',10,45,48,-61.948,0.385,723.499,255);