From 706c2fe199b9f59829c2d39feed0a2136c602e13 Mon Sep 17 00:00:00 2001 From: WinterSolstice8 <60417494+wintersolstice8@users.noreply.github.com> Date: Wed, 27 May 2026 19:09:41 -0600 Subject: [PATCH] [lua] [sql] Implement Voirloup --- scripts/enum/mob_skill.lua | 2 ++ scripts/zones/Jugner_Forest_[S]/IDs.lua | 1 + .../Jugner_Forest_[S]/mobs/Decrepit_Gnole.lua | 3 ++ .../zones/Jugner_Forest_[S]/mobs/Voirloup.lua | 33 +++++++++++++++++++ sql/mob_pools.sql | 2 +- sql/mob_spawn_points.sql | 2 +- 6 files changed, 41 insertions(+), 2 deletions(-) diff --git a/scripts/enum/mob_skill.lua b/scripts/enum/mob_skill.lua index 089c352677d..6175e05fee3 100644 --- a/scripts/enum/mob_skill.lua +++ b/scripts/enum/mob_skill.lua @@ -1109,6 +1109,8 @@ xi.mobSkill = GRIM_GLOWER = 2156, + NOX_BLAST = 2175, + PEDAL_PIROUETTE = 2210, HELL_SCISSORS = 2221, diff --git a/scripts/zones/Jugner_Forest_[S]/IDs.lua b/scripts/zones/Jugner_Forest_[S]/IDs.lua index d10afc95216..9b94181ac7c 100644 --- a/scripts/zones/Jugner_Forest_[S]/IDs.lua +++ b/scripts/zones/Jugner_Forest_[S]/IDs.lua @@ -49,6 +49,7 @@ zones[xi.zone.JUGNER_FOREST_S] = FINGERFILCHER_DRADZAD = GetFirstID('Fingerfilcher_Dradzad'), COBRACLAW_BUCHZVOTCH = GetFirstID('Cobraclaw_Buchzvotch'), VULKODLAC = GetFirstID('Vulkodlac'), + VOIRLOUP = GetFirstID('Voirloup'), VOIDWALKER = { diff --git a/scripts/zones/Jugner_Forest_[S]/mobs/Decrepit_Gnole.lua b/scripts/zones/Jugner_Forest_[S]/mobs/Decrepit_Gnole.lua index c1685dfcefb..cb734054250 100644 --- a/scripts/zones/Jugner_Forest_[S]/mobs/Decrepit_Gnole.lua +++ b/scripts/zones/Jugner_Forest_[S]/mobs/Decrepit_Gnole.lua @@ -4,10 +4,13 @@ ----------------------------------- mixins = { require('scripts/mixins/families/gnole') } ----------------------------------- +local ID = zones[xi.zone.JUGNER_FOREST_S] +----------------------------------- ---@type TMobEntity local entity = {} entity.onMobDeath = function(mob, player, optParams) + xi.mob.phOnDespawn(mob, ID.mob.VOIRLOUP, 10, 60 * 60 * 2) -- 2 hours, guessed end return entity diff --git a/scripts/zones/Jugner_Forest_[S]/mobs/Voirloup.lua b/scripts/zones/Jugner_Forest_[S]/mobs/Voirloup.lua index cff8367fc91..67fbfc6b7a4 100644 --- a/scripts/zones/Jugner_Forest_[S]/mobs/Voirloup.lua +++ b/scripts/zones/Jugner_Forest_[S]/mobs/Voirloup.lua @@ -2,11 +2,44 @@ -- Area: Jugner Forest [S] -- NM: Voirloup ----------------------------------- +local ID = zones[xi.zone.JUGNER_FOREST_S] +----------------------------------- ---@type TMobEntity local entity = {} +entity.phList = +{ + [ID.mob.VOIRLOUP - 1] = ID.mob.VOIRLOUP +} + +-- TODO: has enstun, but rate is extremely low on testing characters so cannot give a great rate. +entity.onMobInitialize = function(mob) + mob:addImmunity(xi.immunity.DARK_SLEEP) + mob:addImmunity(xi.immunity.LIGHT_SLEEP) + mob:addImmunity(xi.immunity.PETRIFY) + mob:addImmunity(xi.immunity.BIND) + mob:addImmunity(xi.immunity.STUN) + mob:addImmunity(xi.immunity.GRAVITY) + mob:addImmunity(xi.immunity.TERROR) + mob:addImmunity(xi.immunity.PLAGUE) +end + +-- TODO: check regain, store tp, MAB (nox blast?), MDB, PDT/MDT/DT +-- Doesn't seem to have a base damage multiplier? +entity.onMobSpawn = function(mob) + -- Ballparked, before AGI/DEX. + -- This needs double checking, but they were pretty high. + mob:setMod(xi.mod.ACC, 590) + mob:setMod(xi.mod.EVA, 590) + mob:setMod(xi.mod.KICK_ATTACK_RATE, 5) -- 5% KA +end + entity.onMobDeath = function(mob, player, optParams) xi.hunts.checkHunt(mob, player, 486) end +entity.onMobMobskillChoose = function(mob, target, skillId) + return xi.mobSkill.NOX_BLAST +end + return entity diff --git a/sql/mob_pools.sql b/sql/mob_pools.sql index b4cd0379448..cc0528248b6 100644 --- a/sql/mob_pools.sql +++ b/sql/mob_pools.sql @@ -6806,7 +6806,7 @@ INSERT INTO `mob_pools` VALUES (6756,'Predatory_Colibri','Predatory_Colibri',179 INSERT INTO `mob_pools` VALUES (6757,'Vidmapire','Vidmapire',421,0x0000350700000000000000000000000000000000,4,4,7,220,100,0,1,1,0,2,6150,0,0,133,0,0,2,0,0,284,284,2,20); INSERT INTO `mob_pools` VALUES (6758,'Shedu','Shedu',67,0x00000D0700000000000000000000000000000000,6,1,7,320,125,0,1,1,0,2,6150,32,0,133,5,0,0,0,0,168,168,2,34); INSERT INTO `mob_pools` VALUES (6759,'One-eyed_Gwajboj_S','One-eyed_Gwajboj',139,0x00001B0800000000000000000000000000000000,7,7,3,240,100,0,1,0,1,2,0,32,0,157,0,0,4,0,0,334,334,2,17); -INSERT INTO `mob_pools` VALUES (6760,'Voirloup','Voirloup',96,0x0000F10700000000000000000000000000000000,2,2,1,480,100,0,1,0,1,2,0,0,0,131,5,0,0,0,0,132,132,1,17); +INSERT INTO `mob_pools` VALUES (6760,'Voirloup','Voirloup',96,0x0000F10700000000000000000000000000000000,2,2,1,360,100,0,1,0,1,2,0,0,0,131,5,0,0,0,0,132,132,1,17); INSERT INTO `mob_pools` VALUES (6761,'Steelbiter_Gudrud_S','Steelbiter_Gudrud',139,0x0000180400000000000000000000000000000000,14,14,8,240,100,0,1,0,1,2,0,32,1950,157,0,0,0,0,0,713,189,2,17); INSERT INTO `mob_pools` VALUES (6762,'Gloop_fished','Gloop',18,0x0000240100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,4,0,0,231,131,0,0,0,0,0,229,229,NULL,NULL); INSERT INTO `mob_pools` VALUES (6763,'Oil_Spill_fished','Oil_Spill',18,0x0000240100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,4,0,0,288,1155,0,0,0,0,0,229,229,NULL,NULL); diff --git a/sql/mob_spawn_points.sql b/sql/mob_spawn_points.sql index 3b2e4e999ef..ee9aeb72318 100644 --- a/sql/mob_spawn_points.sql +++ b/sql/mob_spawn_points.sql @@ -23280,7 +23280,7 @@ INSERT INTO `mob_spawn_points` VALUES (17113171,0,'Thunder_Elemental','Thunder E INSERT INTO `mob_spawn_points` VALUES (17113172,0,'Decrepit_Gnole','Decrepit Gnole',15,73,75,-279.910,-0.246,23.214,117); INSERT INTO `mob_spawn_points` VALUES (17113173,0,'Decrepit_Gnole','Decrepit Gnole',15,73,75,-253.022,0.305,-38.102,101); INSERT INTO `mob_spawn_points` VALUES (17113174,0,'Decrepit_Gnole','Decrepit Gnole',15,73,75,-204.612,-0.313,-119.120,173); -INSERT INTO `mob_spawn_points` VALUES (17113175,0,'Voirloup','Voirloup',20,88,88,-197.795,-0.346,-119.842,224); +INSERT INTO `mob_spawn_points` VALUES (17113175,0,'Voirloup','Voirloup',20,89,89,-197.795,-0.346,-119.842,224); INSERT INTO `mob_spawn_points` VALUES (17113176,0,'Decrepit_Gnole','Decrepit Gnole',15,73,75,-327.970,-1.758,85.189,83); INSERT INTO `mob_spawn_points` VALUES (17113177,0,'Decrepit_Gnole','Decrepit Gnole',15,73,75,-354.501,-1.278,28.178,218); INSERT INTO `mob_spawn_points` VALUES (17113178,0,'Decrepit_Gnole','Decrepit Gnole',15,73,75,-324.974,-0.410,-7.310,57);