From 43e73d7b5d250d2f6e8002bcbc6064ffde5128a4 Mon Sep 17 00:00:00 2001 From: ThrisStraizo <45871917+ThrisStraizo@users.noreply.github.com> Date: Sun, 8 Feb 2026 15:06:57 -0800 Subject: [PATCH] SMN AF2 and AF3 Audit This PR audits the mobs of the SMN AF2 and AF3 fights for LVL/HP/immunities and behavior. --- .../zones/Cloister_of_Frost/mobs/Dryad.lua | 14 ++++++ .../mobs/Lightning_Gremlin.lua | 28 ++++++++++++ .../mobs/Thunder_Gremlin.lua | 32 ++++++++++++++ sql/mob_groups.sql | 4 +- sql/mob_spawn_points.sql | 44 +++++++++---------- 5 files changed, 98 insertions(+), 24 deletions(-) create mode 100644 scripts/zones/Cloister_of_Frost/mobs/Dryad.lua create mode 100644 scripts/zones/Cloister_of_Storms/mobs/Lightning_Gremlin.lua create mode 100644 scripts/zones/Cloister_of_Storms/mobs/Thunder_Gremlin.lua diff --git a/scripts/zones/Cloister_of_Frost/mobs/Dryad.lua b/scripts/zones/Cloister_of_Frost/mobs/Dryad.lua new file mode 100644 index 00000000000..3fd5b6929ea --- /dev/null +++ b/scripts/zones/Cloister_of_Frost/mobs/Dryad.lua @@ -0,0 +1,14 @@ +----------------------------------- +-- Area: Cloister of Frost +-- Mob: Dryad +-- Involved in Quest: Class Reunion +----------------------------------- +---@type TMobEntity +local entity = {} + +entity.onMobInitialize = function(mob) + mob:setMobMod(xi.mobMod.ALWAYS_AGGRO, 1) + mob:setMobMod(xi.mobMod.SOUND_RANGE, 15) +end + +return entity diff --git a/scripts/zones/Cloister_of_Storms/mobs/Lightning_Gremlin.lua b/scripts/zones/Cloister_of_Storms/mobs/Lightning_Gremlin.lua new file mode 100644 index 00000000000..0846fda8785 --- /dev/null +++ b/scripts/zones/Cloister_of_Storms/mobs/Lightning_Gremlin.lua @@ -0,0 +1,28 @@ +----------------------------------- +-- Area: Cloister of Storms +-- Mob: Lightning Gremlin +-- Involved in Quest: Carbuncle Debacle +----------------------------------- +---@type TMobEntity +local entity = {} + +entity.onMobInitialize = function(mob) + mob:setMobMod(xi.mobMod.ALWAYS_AGGRO, 1) + mob:setMobMod(xi.mobMod.SOUND_RANGE, 15) + mob:setMobMod(xi.mobMod.ADD_EFFECT, 1) + mob:addImmunity(xi.immunity.LIGHT_SLEEP) + mob:addImmunity(xi.immunity.DARK_SLEEP) + mob:addImmunity(xi.immunity.SILENCE) +end + +entity.onMobSpawn = function(mob) + mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 250) + mob:setMod(xi.mod.BIND_RES_RANK, 4) + mob:setMod(xi.mod.PARALYZE_RES_RANK, 4) +end + +entity.onAdditionalEffect = function(mob, target, damage) + return xi.mob.onAddEffect(mob, target, damage, xi.mob.ae.TP_DRAIN, { chance = 255, power = math.random(25, 250) }) +end + +return entity diff --git a/scripts/zones/Cloister_of_Storms/mobs/Thunder_Gremlin.lua b/scripts/zones/Cloister_of_Storms/mobs/Thunder_Gremlin.lua new file mode 100644 index 00000000000..f0e4f26d649 --- /dev/null +++ b/scripts/zones/Cloister_of_Storms/mobs/Thunder_Gremlin.lua @@ -0,0 +1,32 @@ +----------------------------------- +-- Area: Cloister of Storms +-- Mob: Thunder Gremlin +-- Involved in Quest: Carbuncle Debacle +----------------------------------- +---@type TMobEntity +local entity = {} + +entity.onMobInitialize = function(mob) + mob:setMobMod(xi.mobMod.ALWAYS_AGGRO, 1) + mob:setMobMod(xi.mobMod.SOUND_RANGE, 15) + mob:setMobMod(xi.mobMod.ADD_EFFECT, 1) + mob:addImmunity(xi.immunity.LIGHT_SLEEP) + mob:addImmunity(xi.immunity.DARK_SLEEP) + mob:addImmunity(xi.immunity.SILENCE) +end + +entity.onMobSpawn = function(mob) + mob:setMagicCastingEnabled(false) +end + +entity.onMobEngage = function(mob) + mob:setMagicCastingEnabled(true) -- Thunder Gremlin does not self buff before engaging + mob:setMod(xi.mod.BIND_RES_RANK, 4) + mob:setMod(xi.mod.PARALYZE_RES_RANK, 4) +end + +entity.onAdditionalEffect = function(mob, target, damage) + return xi.mob.onAddEffect(mob, target, damage, xi.mob.ae.MP_DRAIN, { chance = 255, power = math.random(25, 38) }) +end + +return entity diff --git a/sql/mob_groups.sql b/sql/mob_groups.sql index f5053606961..47c45c66088 100644 --- a/sql/mob_groups.sql +++ b/sql/mob_groups.sql @@ -13561,8 +13561,8 @@ INSERT INTO `mob_groups` VALUES (7,4647,201,'Garuda_Prime_HTBF',0,128,0,0,0,0,NU -- ------------------------------------------------------------ INSERT INTO `mob_groups` VALUES (1,4643,202,'Ramuh_Prime_TBL',0,128,0,8000,0,0,NULL); -INSERT INTO `mob_groups` VALUES (2,2410,202,'Lightning_Gremlin',0,128,0,6300,0,0,NULL); -INSERT INTO `mob_groups` VALUES (3,3914,202,'Thunder_Gremlin',0,128,0,2525,0,0,NULL); +INSERT INTO `mob_groups` VALUES (2,2410,202,'Lightning_Gremlin',0,128,0,7000,0,0,NULL); +INSERT INTO `mob_groups` VALUES (3,3914,202,'Thunder_Gremlin',0,128,0,3400,3400,0,NULL); INSERT INTO `mob_groups` VALUES (4,7050,202,'Ramuh_Prime_TSTBL',0,128,0,700,0,0,NULL); INSERT INTO `mob_groups` VALUES (5,3317,202,'Ramuh_Prime_WTB',0,128,0,25000,0,0,NULL); -- use the temenos elemental mob pool as those are MOBTYPE_BATTLEFIELD diff --git a/sql/mob_spawn_points.sql b/sql/mob_spawn_points.sql index 9ee1c2815a7..7ce23415e30 100644 --- a/sql/mob_spawn_points.sql +++ b/sql/mob_spawn_points.sql @@ -69230,11 +69230,11 @@ INSERT INTO `mob_spawn_points` VALUES (17604610,0,'Ramuh_Prime_TBL','Ramuh Prime INSERT INTO `mob_spawn_points` VALUES (17604611,0,'Ramuh_Prime_TBL','Ramuh Prime',1,60,60,-377.066,-79.002,513.045,105); -- Carbuncle Debacle -INSERT INTO `mob_spawn_points` VALUES (17604612,0,'Lightning_Gremlin','Lightning Gremlin',2,65,65,503.000,41.000,-367.000,105); -INSERT INTO `mob_spawn_points` VALUES (17604613,0,'Thunder_Gremlin','Thunder Gremlin',3,62,62,502.000,41.000,-366.000,100); -INSERT INTO `mob_spawn_points` VALUES (17604614,0,'Lightning_Gremlin','Lightning Gremlin',2,65,65,23.048,-19.001,33.005,105); +INSERT INTO `mob_spawn_points` VALUES (17604612,0,'Lightning_Gremlin','Lightning Gremlin',2,62,62,501.000,41.805,-369.000,105); +INSERT INTO `mob_spawn_points` VALUES (17604613,0,'Thunder_Gremlin','Thunder Gremlin',3,62,62,502.725,41.725,-371.575,100); +INSERT INTO `mob_spawn_points` VALUES (17604614,0,'Lightning_Gremlin','Lightning Gremlin',2,62,62,23.048,-19.001,33.005,105); INSERT INTO `mob_spawn_points` VALUES (17604615,0,'Thunder_Gremlin','Thunder Gremlin',3,62,62,22.048,-19.001,34.005,100); -INSERT INTO `mob_spawn_points` VALUES (17604616,0,'Lightning_Gremlin','Lightning Gremlin',2,65,65,-377.066,-79.002,513.045,105); +INSERT INTO `mob_spawn_points` VALUES (17604616,0,'Lightning_Gremlin','Lightning Gremlin',2,62,62,-377.066,-79.002,513.045,105); INSERT INTO `mob_spawn_points` VALUES (17604617,0,'Thunder_Gremlin','Thunder Gremlin',3,62,62,-378.066,-79.002,514.045,100); -- Trial-size Trial by Lightning @@ -69291,24 +69291,24 @@ INSERT INTO `mob_spawn_points` VALUES (17608706,0,'Shiva_Prime_TBI','Shiva Prime INSERT INTO `mob_spawn_points` VALUES (17608707,0,'Shiva_Prime_TBI','Shiva Prime',1,60,60,-377.091,-78.999,512.996,105); -- Class Reunion -INSERT INTO `mob_spawn_points` VALUES (17608708,0,'Dryad','Dryad',2,50,50,503.000,41.000,-367.000,105); -INSERT INTO `mob_spawn_points` VALUES (17608709,0,'Dryad','Dryad',2,50,50,504.000,41.000,-367.000,105); -INSERT INTO `mob_spawn_points` VALUES (17608710,0,'Dryad','Dryad',2,50,50,503.000,41.000,-366.000,105); -INSERT INTO `mob_spawn_points` VALUES (17608711,0,'Dryad','Dryad',2,50,50,504.000,41.000,-366.000,105); -INSERT INTO `mob_spawn_points` VALUES (17608712,0,'Dryad','Dryad',2,50,50,502.000,41.000,-368.000,105); -INSERT INTO `mob_spawn_points` VALUES (17608713,0,'Dryad','Dryad',2,50,50,503.000,41.000,-368.000,105); -INSERT INTO `mob_spawn_points` VALUES (17608714,0,'Dryad','Dryad',2,50,50,23.070,-18.991,32.860,105); -INSERT INTO `mob_spawn_points` VALUES (17608715,0,'Dryad','Dryad',2,50,50,24.070,-18.991,32.860,105); -INSERT INTO `mob_spawn_points` VALUES (17608716,0,'Dryad','Dryad',2,50,50,23.070,-18.991,33.860,105); -INSERT INTO `mob_spawn_points` VALUES (17608717,0,'Dryad','Dryad',2,50,50,24.070,-18.991,33.860,105); -INSERT INTO `mob_spawn_points` VALUES (17608718,0,'Dryad','Dryad',2,50,50,22.070,-18.991,31.860,105); -INSERT INTO `mob_spawn_points` VALUES (17608719,0,'Dryad','Dryad',2,50,50,23.070,-18.991,31.860,105); -INSERT INTO `mob_spawn_points` VALUES (17608720,0,'Dryad','Dryad',2,50,50,-377.091,-78.999,512.996,105); -INSERT INTO `mob_spawn_points` VALUES (17608721,0,'Dryad','Dryad',2,50,50,-376.091,-78.999,512.996,105); -INSERT INTO `mob_spawn_points` VALUES (17608722,0,'Dryad','Dryad',2,50,50,-377.091,-78.999,513.996,105); -INSERT INTO `mob_spawn_points` VALUES (17608723,0,'Dryad','Dryad',2,50,50,-376.091,-78.999,513.996,105); -INSERT INTO `mob_spawn_points` VALUES (17608724,0,'Dryad','Dryad',2,50,50,-378.091,-78.999,511.996,105); -INSERT INTO `mob_spawn_points` VALUES (17608725,0,'Dryad','Dryad',2,50,50,-377.091,-78.999,511.996,105); +INSERT INTO `mob_spawn_points` VALUES (17608708,0,'Dryad','Dryad',2,48,48,503.000,41.000,-367.000,105); +INSERT INTO `mob_spawn_points` VALUES (17608709,0,'Dryad','Dryad',2,48,48,504.000,41.000,-367.000,105); +INSERT INTO `mob_spawn_points` VALUES (17608710,0,'Dryad','Dryad',2,48,48,503.000,41.000,-366.000,105); +INSERT INTO `mob_spawn_points` VALUES (17608711,0,'Dryad','Dryad',2,48,48,504.000,41.000,-366.000,105); +INSERT INTO `mob_spawn_points` VALUES (17608712,0,'Dryad','Dryad',2,48,48,502.000,41.000,-368.000,105); +INSERT INTO `mob_spawn_points` VALUES (17608713,0,'Dryad','Dryad',2,48,48,503.000,41.000,-368.000,105); +INSERT INTO `mob_spawn_points` VALUES (17608714,0,'Dryad','Dryad',2,48,48,23.070,-18.991,32.860,105); +INSERT INTO `mob_spawn_points` VALUES (17608715,0,'Dryad','Dryad',2,48,48,24.070,-18.991,32.860,105); +INSERT INTO `mob_spawn_points` VALUES (17608716,0,'Dryad','Dryad',2,48,48,23.070,-18.991,33.860,105); +INSERT INTO `mob_spawn_points` VALUES (17608717,0,'Dryad','Dryad',2,48,48,24.070,-18.991,33.860,105); +INSERT INTO `mob_spawn_points` VALUES (17608718,0,'Dryad','Dryad',2,48,48,22.070,-18.991,31.860,105); +INSERT INTO `mob_spawn_points` VALUES (17608719,0,'Dryad','Dryad',2,48,48,23.070,-18.991,31.860,105); +INSERT INTO `mob_spawn_points` VALUES (17608720,0,'Dryad','Dryad',2,48,48,-377.091,-78.999,512.996,105); +INSERT INTO `mob_spawn_points` VALUES (17608721,0,'Dryad','Dryad',2,48,48,-376.091,-78.999,512.996,105); +INSERT INTO `mob_spawn_points` VALUES (17608722,0,'Dryad','Dryad',2,48,48,-377.091,-78.999,513.996,105); +INSERT INTO `mob_spawn_points` VALUES (17608723,0,'Dryad','Dryad',2,48,48,-376.091,-78.999,513.996,105); +INSERT INTO `mob_spawn_points` VALUES (17608724,0,'Dryad','Dryad',2,48,48,-378.091,-78.999,511.996,105); +INSERT INTO `mob_spawn_points` VALUES (17608725,0,'Dryad','Dryad',2,48,48,-377.091,-78.999,511.996,105); -- Trial-size Trial by Ice INSERT INTO `mob_spawn_points` VALUES (17608726,0,'Shiva_Prime_TSTBI','Shiva Prime',3,20,20,503.000,41.000,-367.000,105);