From ab2cec16fb4fa63dd56a81302e605b422e85de90 Mon Sep 17 00:00:00 2001 From: ThrisStraizo <45871917+ThrisStraizo@users.noreply.github.com> Date: Tue, 28 Apr 2026 18:17:04 -0700 Subject: [PATCH] Puppetmaster LB Fight This PR Implements the Puppetmaster LB fight mechanics to the best of my understanding. --- scripts/actions/mobskills/earth_maneuver.lua | 15 ++ scripts/actions/mobskills/fire_maneuver.lua | 15 ++ scripts/actions/mobskills/ice_maneuver.lua | 15 ++ scripts/actions/mobskills/slapstick.lua | 33 +++ .../actions/mobskills/thunder_maneuver.lua | 15 ++ scripts/actions/mobskills/water_maneuver.lua | 15 ++ scripts/actions/mobskills/wind_maneuver.lua | 15 ++ scripts/enum/mob_skill.lua | 21 +- .../mobs/Bullheaded_Grosvez.lua | 2 +- .../zones/Navukgo_Execution_Chamber/IDs.lua | 9 + .../mobs/Shamarhaan.lua | 196 ++++++++++++++++++ .../mobs/Valkeng.lua | 50 +++++ sql/mob_groups.sql | 4 +- sql/mob_pools.sql | 4 +- sql/mob_skills.sql | 20 +- 15 files changed, 412 insertions(+), 17 deletions(-) create mode 100644 scripts/actions/mobskills/earth_maneuver.lua create mode 100644 scripts/actions/mobskills/fire_maneuver.lua create mode 100644 scripts/actions/mobskills/ice_maneuver.lua create mode 100644 scripts/actions/mobskills/slapstick.lua create mode 100644 scripts/actions/mobskills/thunder_maneuver.lua create mode 100644 scripts/actions/mobskills/water_maneuver.lua create mode 100644 scripts/actions/mobskills/wind_maneuver.lua create mode 100644 scripts/zones/Navukgo_Execution_Chamber/mobs/Shamarhaan.lua create mode 100644 scripts/zones/Navukgo_Execution_Chamber/mobs/Valkeng.lua diff --git a/scripts/actions/mobskills/earth_maneuver.lua b/scripts/actions/mobskills/earth_maneuver.lua new file mode 100644 index 00000000000..8a7299f47ec --- /dev/null +++ b/scripts/actions/mobskills/earth_maneuver.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Earth Maneuver +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + skill:setMsg(xi.msg.basic.USES) +end + +return mobskillObject diff --git a/scripts/actions/mobskills/fire_maneuver.lua b/scripts/actions/mobskills/fire_maneuver.lua new file mode 100644 index 00000000000..1c89cc69040 --- /dev/null +++ b/scripts/actions/mobskills/fire_maneuver.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Fire Maneuver +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + skill:setMsg(xi.msg.basic.USES) +end + +return mobskillObject diff --git a/scripts/actions/mobskills/ice_maneuver.lua b/scripts/actions/mobskills/ice_maneuver.lua new file mode 100644 index 00000000000..ec0337e2a65 --- /dev/null +++ b/scripts/actions/mobskills/ice_maneuver.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Ice Maneuver +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + skill:setMsg(xi.msg.basic.USES) +end + +return mobskillObject diff --git a/scripts/actions/mobskills/slapstick.lua b/scripts/actions/mobskills/slapstick.lua new file mode 100644 index 00000000000..7b2c19f898f --- /dev/null +++ b/scripts/actions/mobskills/slapstick.lua @@ -0,0 +1,33 @@ +----------------------------------- +-- Slapstick +-- Family: Automaton +-- Description: Delivers a threefold attack. Accuracy varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 3 + params.fTP = { 3.0, 3.0, 3.0 } + params.accuracyModifier = { 0, 30, 60 } + params.attackType = xi.attackType.PHYSICAL + params.damageType = xi.damageType.SLASHING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_3 + + local info = xi.mobskills.mobPhysicalMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/thunder_maneuver.lua b/scripts/actions/mobskills/thunder_maneuver.lua new file mode 100644 index 00000000000..48505352c57 --- /dev/null +++ b/scripts/actions/mobskills/thunder_maneuver.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Thunder Maneuver +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + skill:setMsg(xi.msg.basic.USES) +end + +return mobskillObject diff --git a/scripts/actions/mobskills/water_maneuver.lua b/scripts/actions/mobskills/water_maneuver.lua new file mode 100644 index 00000000000..42c55764ca8 --- /dev/null +++ b/scripts/actions/mobskills/water_maneuver.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Water Maneuver +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + skill:setMsg(xi.msg.basic.USES) +end + +return mobskillObject diff --git a/scripts/actions/mobskills/wind_maneuver.lua b/scripts/actions/mobskills/wind_maneuver.lua new file mode 100644 index 00000000000..a5c7cba22f0 --- /dev/null +++ b/scripts/actions/mobskills/wind_maneuver.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Wind Maneuver +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + skill:setMsg(xi.msg.basic.USES) +end + +return mobskillObject diff --git a/scripts/enum/mob_skill.lua b/scripts/enum/mob_skill.lua index 2909707e632..bfdf0623dda 100644 --- a/scripts/enum/mob_skill.lua +++ b/scripts/enum/mob_skill.lua @@ -3,6 +3,15 @@ xi = xi or {} ---@enum xi.mobSkill xi.mobSkill = { + COMBO_1 = 1, + SHOULDER_TACKLE_1 = 2, + ONE_INCH_PUNCH_1 = 3, + BACKHAND_BLOW_1 = 4, + RAGING_FISTS_1 = 5, + SPINNING_ATTACK_1 = 6, + HOWLING_FIST_1 = 7, + DRAGON_KICK_1 = 8, + SHADOWSTITCH = 18, DANCING_EDGE = 23, @@ -295,7 +304,7 @@ xi.mobSkill = HYPOTHERMAL_COMBUSTION_2 = 602, -- Snoll Tzar COUNTERSTANCE_1 = 603, -- Geush Urvan - SHOULDER_TACKLE_1 = 606, + SHOULDER_TACKLE_2 = 606, SLAM_DUNK_1 = 607, NETHER_BLAST_1 = 610, @@ -874,6 +883,8 @@ xi.mobSkill = WARP_OUT_GESSHO = 1938, WARP_IN_GESSHO = 1939, + SLAPSTICK = 1943, + RANGED_ATTACK_15 = 1949, WATER_BOMB = 1959, @@ -886,6 +897,12 @@ xi.mobSkill = BOREAS_MANTLE = 1980, -- Unique entry. + FIRE_MANEUVER = 1992, + ICE_MANEUVER = 1993, + WIND_MANEUVER = 1994, + EARTH_MANEUVER = 1995, + THUNDER_MANEUVER = 1996, + WATER_MANEUVER = 1997, HANE_FUBUKI = 1998, HIDEN_SOKYAKU = 1999, SHIKO_NO_MITATE = 2000, @@ -895,7 +912,7 @@ xi.mobSkill = REWARD = 2005, AZURE_LORE_RAUBAHN = 2006, WILD_CARD_QULTADA = 2007, - -- OVERDRIVE = 2008, + OVERDRIVE_SHAMARHAAN = 2008, FIRE_SHOT = 2009, ICE_SHOT = 2010, WIND_SHOT = 2011, diff --git a/scripts/zones/Carpenters_Landing/mobs/Bullheaded_Grosvez.lua b/scripts/zones/Carpenters_Landing/mobs/Bullheaded_Grosvez.lua index 03350feb5b5..822254d52bd 100644 --- a/scripts/zones/Carpenters_Landing/mobs/Bullheaded_Grosvez.lua +++ b/scripts/zones/Carpenters_Landing/mobs/Bullheaded_Grosvez.lua @@ -52,7 +52,7 @@ entity.onMobMobskillChoose = function(mob, target, skillId) local skillList = { xi.mobSkill.SLAM_DUNK_1, - xi.mobSkill.SHOULDER_TACKLE_1 + xi.mobSkill.SHOULDER_TACKLE_2 } return skillList[math.random(1, #skillList)] diff --git a/scripts/zones/Navukgo_Execution_Chamber/IDs.lua b/scripts/zones/Navukgo_Execution_Chamber/IDs.lua index d115c39286c..52ef3c4aa6b 100644 --- a/scripts/zones/Navukgo_Execution_Chamber/IDs.lua +++ b/scripts/zones/Navukgo_Execution_Chamber/IDs.lua @@ -29,6 +29,15 @@ zones[xi.zone.NAVUKGO_EXECUTION_CHAMBER] = THE_PARTY_WILL_BE_REMOVED = 7585, -- If all party members' HP are still zero after # minute[/s], the party will be removed from the battlefield. IMPERIAL_ORDER_BREAKS = 7593, -- The breaks! ENTERING_THE_BATTLEFIELD_FOR = 7606, -- Entering the battlefield for [Tough Nut to Crack/Happy Caster/Omens/Achieving True Power/Shield of Diplomacy/An Imperial Heist]! + SHAMARHAAN_LET_US_BEGIN = 7636, -- Let us begin. + SHAMARHAAN_AUTOMATON_POWER = 7637, -- Do not underestimate my automaton's power! + SHAMARHAAN_NOT_READY = 7638, -- Unfortunately, it looks like you are still not ready yet... + SHAMARHAAN_MAGNIFICENT = 7639, -- Magnificent work... + SHAMARHAAN_GOT_TRICKS = 7640, -- I've got a few tricks up my own sleeve! + SHAMARHAAN_LETS_TRY = 7641, -- Hmm... Let's try this one... + SHAMARHAAN_FULL_STEAM = 7642, -- Full steam ahead! + SHAMARHAAN_ENOUGH = 7643, -- Enough. I have no desire to watch this foolishness all day. + SHAMARHAAN_UNDERESTIMATED = 7644, -- It looks like I underestimated you! YOUR_LEVEL_LIMIT_IS_NOW_75 = 7646, -- Your level limit is now 75. KARABABA_ENOUGH = 7651, -- That's quite enough... KARABABA_ROUGH = 7652, -- Time for me to start playing rough! diff --git a/scripts/zones/Navukgo_Execution_Chamber/mobs/Shamarhaan.lua b/scripts/zones/Navukgo_Execution_Chamber/mobs/Shamarhaan.lua new file mode 100644 index 00000000000..1e9563c879a --- /dev/null +++ b/scripts/zones/Navukgo_Execution_Chamber/mobs/Shamarhaan.lua @@ -0,0 +1,196 @@ +----------------------------------- +-- Area: Navukgo Execution Chamber +-- Mob: Shamarhaan +----------------------------------- +local ID = zones[xi.zone.NAVUKGO_EXECUTION_CHAMBER] +----------------------------------- +---@type TMobEntity +local entity = {} + +local function tauntPlayer(player, mob) + if player:getLevelCap() >= 75 then + mob:messageText(mob, ID.text.SHAMARHAAN_AUTOMATON_POWER) + else + mob:messageText(mob, ID.text.SHAMARHAAN_LET_US_BEGIN) + end + + mob:setLocalVar('initialTaunt', 1) + mob:setLocalVar('talkTime', GetSystemTime() + 300) +end + +entity.onMobInitialize = function(mob) + mob:addListener('TAKE_DAMAGE', 'SHAMARHAAN_TAKE_DAMAGE', function(mobArg, damage, attacker, attackType, damageType) + if damage >= 350 then + mob:messageText(mob, ID.text.SHAMARHAAN_UNDERESTIMATED) + end + end) +end + +entity.onMobSpawn = function(mob) + mob:setUnkillable(true) + + -- Reset mob. + xi.combat.behavior.enableAllActions(mob) + mob:setLocalVar('[2hour]HPP', math.random(60, 90)) + mob:setLocalVar('[2hour]Used', 0) + mob:setLocalVar('initialTaunt', 0) + mob:setLocalVar('talkTime', 0) + mob:setLocalVar('alreadyTalked', 0) + mob:setLocalVar('maneuverUseTime', 0) + mob:setLocalVar('maneuverNextTimer', math.random(45, 60)) +end + +entity.onMobRoam = function(mob) + if mob:getLocalVar('initialTaunt') == 1 then + return + end + + local battlefield = mob:getBattlefield() + if not battlefield then + return + end + + local players = battlefield:getPlayers() + if not players[1] then + return + end + + if players[1]:checkDistance(mob) >= 15 then + return + end + + tauntPlayer(players[1], mob) +end + +entity.onMobEngage = function(mob, target) + if mob:getLocalVar('initialTaunt') == 1 then + return + end + + tauntPlayer(target, mob) +end + +entity.onMobFight = function(mob, target) + -- Early return: No battlefield. + local battlefield = mob:getBattlefield() + if not battlefield then + return + end + + -- Early return: No player. + local players = battlefield:getPlayers() + if not players[1] then + return + end + + -- Early return: Battle is over. + if battlefield:getStatus() == xi.battlefield.status.WON then + return + end + + -- Win condition. + local mobHPP = mob:getHPP() + if + mobHPP < 20 and + players[1]:isAlive() + then + xi.combat.behavior.disableAllActions(mob) + mob:showText(mob, ID.text.SHAMARHAAN_MAGNIFICENT) + players[1]:disengage() + battlefield:win() + return + end + + -- Early return: Mob is busy. + if xi.combat.behavior.isEntityBusy(mob) then + return + end + + local mobID = mob:getID() + -- 2 hour if Valkeng is below 50% HP + if + mob:getLocalVar('[2hour]Used') == 0 and + GetMobByID(mobID + 1):isAlive() and + GetMobByID(mobID + 1):getHPP() < 50 + then + mob:setLocalVar('[2hour]Used', 1) + mob:useMobAbility(xi.mobSkill.OVERDRIVE_SHAMARHAAN) + return + end + + -- 2 Hour. + if + mob:getLocalVar('[2hour]Used') == 0 and + mobHPP < mob:getLocalVar('[2hour]HPP') + then + mob:setLocalVar('[2hour]Used', 1) + mob:useMobAbility(xi.mobSkill.OVERDRIVE_SHAMARHAAN) + return + end + + -- Midfight rage. + local currentTime = GetSystemTime() + if + mob:getLocalVar('alreadyTalked') == 0 and + currentTime >= mob:getLocalVar('talkTime') + then + mob:setLocalVar('alreadyTalked', 1) + mob:showText(mob, ID.text.SHAMARHAAN_ENOUGH) + mob:setTP(3000) + return + end + + -- Handle Maneuvers. + local timer = mob:getLocalVar('maneuverNextTimer') + if currentTime > mob:getLocalVar('maneuverUseTime') + timer then + mob:useMobAbility(math.random(xi.mobSkill.FIRE_MANEUVER, xi.mobSkill.WATER_MANEUVER)) + mob:setLocalVar('maneuverUseTime', currentTime) + mob:setLocalVar('maneuverNextTimer', math.random(45, 60)) + return + end +end + +entity.onMobMobskillChoose = function(mob, target, skillId) + local tpTable = + { + xi.mobSkill.COMBO_1, + xi.mobSkill.SHOULDER_TACKLE_1, + xi.mobSkill.ONE_INCH_PUNCH_1, + xi.mobSkill.BACKHAND_BLOW_1, + xi.mobSkill.RAGING_FISTS_1, + xi.mobSkill.SPINNING_ATTACK_1, + xi.mobSkill.HOWLING_FIST_1, + } + + return tpTable[math.random(1, #tpTable)] +end + +entity.onMobWeaponSkill = function(mob, target, skill, action) + local skillTable = + { + [xi.mobSkill.OVERDRIVE_SHAMARHAAN] = ID.text.SHAMARHAAN_FULL_STEAM, + [xi.mobSkill.EARTH_MANEUVER ] = ID.text.SHAMARHAAN_LETS_TRY, + [xi.mobSkill.WATER_MANEUVER ] = ID.text.SHAMARHAAN_LETS_TRY, + [xi.mobSkill.WIND_MANEUVER ] = ID.text.SHAMARHAAN_LETS_TRY, + [xi.mobSkill.FIRE_MANEUVER ] = ID.text.SHAMARHAAN_LETS_TRY, + [xi.mobSkill.ICE_MANEUVER ] = ID.text.SHAMARHAAN_LETS_TRY, + [xi.mobSkill.THUNDER_MANEUVER ] = ID.text.SHAMARHAAN_LETS_TRY, + } + + local messageId = skillTable[skill:getID()] + if messageId then + action:setCategory(xi.action.category.JOBABILITY_FINISH) + mob:messageText(mob, messageId) + return + end + + if mob:isEngaged() then + mob:showText(mob, ID.text.SHAMARHAAN_GOT_TRICKS) + end +end + +entity.onMobDisengage = function(mob) + mob:showText(mob, ID.text.SHAMARHAAN_NOT_READY) +end + +return entity diff --git a/scripts/zones/Navukgo_Execution_Chamber/mobs/Valkeng.lua b/scripts/zones/Navukgo_Execution_Chamber/mobs/Valkeng.lua new file mode 100644 index 00000000000..b341025ebeb --- /dev/null +++ b/scripts/zones/Navukgo_Execution_Chamber/mobs/Valkeng.lua @@ -0,0 +1,50 @@ +----------------------------------- +-- Area: Navukgo Execution Chamber +-- Mob: Valkeng +----------------------------------- +---@type TMobEntity +local entity = {} + +entity.onMobInitialize = function(mob) + mob:setMobMod(xi.mobMod.MAGIC_COOL, 23) +end + +entity.onMobSpawn = function(mob) + mob:setMagicCastingEnabled(false) + mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 075) + mob:setMobMod(xi.mobMod.MAGIC_DELAY, 0) + mob:setMod(xi.mod.DEF, 140) +end + +entity.onMobEngage = function(mob, target) + mob:setMagicCastingEnabled(true) -- Doesn't buff before the fight starts +end + +entity.onMobMobskillChoose = function(mob, target, skillId) + return xi.mobSkill.SLAPSTICK +end + +-- These are all the spells caped below 75, however testing suggest that he only chooses 4-6 of these spells depending on the fight. More testing is needed to understand the behavior. +-- Stonega II has been observed at level 75. +entity.onMobSpellChoose = function(mob, target, spellId) + local spellList = + { + xi.magic.spell.BIO, + xi.magic.spell.BLIND, + xi.magic.spell.DIA, + xi.magic.spell.DRAIN, + xi.magic.spell.DROWN, + xi.magic.spell.FLASH, + xi.magic.spell.HASTE, + xi.magic.spell.PARALYZE, + xi.magic.spell.REGEN, + xi.magic.spell.SILENCE, + xi.magic.spell.SLOW, + xi.magic.spell.STUN, + xi.magic.spell.WATER_III, + } + + return spellList[math.random(1, #spellList)] +end + +return entity diff --git a/sql/mob_groups.sql b/sql/mob_groups.sql index afd7780cfd4..fb7c3f2111b 100644 --- a/sql/mob_groups.sql +++ b/sql/mob_groups.sql @@ -3411,8 +3411,8 @@ INSERT INTO `mob_groups` VALUES (1,4307,64,'Watch_Wamoura',0,128,0,7200,0,0,NULL INSERT INTO `mob_groups` VALUES (2,4058,64,'Two-faced_Flan',0,128,0,13500,0,0,NULL); INSERT INTO `mob_groups` VALUES (3,3219,64,'Pudding_Master',0,128,0,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (4,2063,64,'Immortal_Flan',0,128,0,4200,4200,0,NULL); -INSERT INTO `mob_groups` VALUES (5,3582,64,'Shamarhaan',0,128,0,0,0,0,NULL); -INSERT INTO `mob_groups` VALUES (6,4123,64,'Valkeng',0,128,0,0,0,0,NULL); +INSERT INTO `mob_groups` VALUES (5,3582,64,'Shamarhaan',0,128,0,1900,0,0,NULL); +INSERT INTO `mob_groups` VALUES (6,4123,64,'Valkeng',0,128,0,1300,1300,0,NULL); INSERT INTO `mob_groups` VALUES (7,2221,64,'Khimaira_13',0,128,0,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (8,2189,64,'Karababa',0,128,0,1000,1000,1,NULL); -- ally diff --git a/sql/mob_pools.sql b/sql/mob_pools.sql index 227ed8c734f..3abe635252e 100644 --- a/sql/mob_pools.sql +++ b/sql/mob_pools.sql @@ -3638,7 +3638,7 @@ INSERT INTO `mob_pools` VALUES (3578,'Shadow_Lizard','Shadow_Lizard',174,0x00004 INSERT INTO `mob_pools` VALUES (3579,'Shadow_Lord_1','Shadow_Lord',224,0x0000150300000000000000000000000000000000,8,4,4,210,100,0,1,0,0,18,0,0,1516,131,0,0,1,0,0,0,0,1,35); INSERT INTO `mob_pools` VALUES (3580,'Shadow_of_Rage','Shadow_of_Rage',480,0x0000040300000000000000000000000000000000,8,8,4,240,100,0,1,1,1,18,0,0,2221,135,0,0,0,0,0,480,480,3,41); INSERT INTO `mob_pools` VALUES (3581,'Shailham','Shailham',149,0x05006207536861696C68616D0100000000000000,1,1,0,0,100,0,0,0,0,0,0,0,1,155,0,0,0,0,0,149,149,1,17); -INSERT INTO `mob_pools` VALUES (3582,'Shamarhaan','Shamarhaan',145,0x0500730500000000000000000000000000000000,18,18,1,240,100,0,0,0,0,16,0,0,1,155,0,0,0,0,0,145,145,1,17); +INSERT INTO `mob_pools` VALUES (3582,'Shamarhaan','Shamarhaan',145,0x0500730500000000000000000000000000000000,18,18,1,340,100,0,0,0,0,16,0,0,1,155,0,0,0,0,0,146,145,1,17); INSERT INTO `mob_pools` VALUES (3583,'Shamblix_Rottenheart','Shamblix_Rottenheart',373,0x00003F0400000000000000000000000000000000,8,8,3,240,100,0,1,0,1,2,0,32,0,159,0,0,5,0,0,373,373,3,20); INSERT INTO `mob_pools` VALUES (3584,'Shantotto','Shantotto',153,0x0500470400000000000000000000000000000000,4,4,11,240,100,0,0,0,0,16,0,0,0,3,0,0,2,0,0,153,153,1,10); INSERT INTO `mob_pools` VALUES (3585,'Sharabha','Sharabha',179,0x0000930100000000000000000000000000000000,1,4,6,240,100,0,0,0,1,2,0,0,7,159,0,0,267,0,0,948,179,3,44); @@ -4179,7 +4179,7 @@ INSERT INTO `mob_pools` VALUES (4119,'Vaicoliaux_B_DAurphe','Vaicoliaux_B_DAurph INSERT INTO `mob_pools` VALUES (4120,'Vajra_Quadav','Vajra_Quadav',202,0x00009F0200000000000000000000000000000000,3,3,3,265,100,0,1,0,1,0,0,0,237,1155,0,0,20,0,0,202,202,1,15); INSERT INTO `mob_pools` VALUES (4121,'Valaineral_R_Davilles','Valaineral_R_Davilles',145,0x01001A0300000000000000000000000000000000,7,1,3,240,100,0,0,0,0,0,0,32,0,155,0,0,4,0,0,145,145,1,12); INSERT INTO `mob_pools` VALUES (4122,'Vale_Crab','Vale_Crab',77,0x0000640100000000000000000000000000000000,7,7,4,240,100,0,1,0,0,0,0,0,0,0,0,0,0,0,0,77,77,NULL,NULL); -INSERT INTO `mob_pools` VALUES (4123,'Valkeng','Valkeng',28,0x0600B90700000000000000000000000000000000,1,1,5,320,100,0,1,1,1,18,0,0,0,3,0,0,0,0,0,28,28,1,8); +INSERT INTO `mob_pools` VALUES (4123,'Valkeng','Valkeng',28,0x0600B90700000000000000000000000000000000,5,5,5,240,100,0,1,1,1,18,0,0,0,3,0,0,1,0,0,363,28,1,8); INSERT INTO `mob_pools` VALUES (4124,'Valkurm_Emperor','Valkurm_Emperor',113,0x0000C00100000000000000000000000000000000,1,1,8,240,100,0,1,0,1,2,0,0,0,133,0,0,0,0,0,113,113,2,17); INSERT INTO `mob_pools` VALUES (4125,'Valley_Manticore','Valley_Manticore',179,0x0000920100000000000000000000000000000000,1,1,7,360,100,0,1,0,1,0,0,0,152,129,8,0,0,0,0,179,179,0,27); INSERT INTO `mob_pools` VALUES (4126,'Valor','Valor',218,0x0000600100000000000000000000000000000000,2,2,1,480,100,0,1,0,0,2,0,32,27,159,0,0,0,0,0,218,218,3,25); diff --git a/sql/mob_skills.sql b/sql/mob_skills.sql index 6adc31bec01..68f9eaa1e98 100644 --- a/sql/mob_skills.sql +++ b/sql/mob_skills.sql @@ -1971,7 +1971,7 @@ INSERT INTO `mob_skills` VALUES (1939,1302,'warp_in_gessho',0,0.0,7.0,500,0,1,0, INSERT INTO `mob_skills` VALUES (1940,1304,'chimera_ripper',0,0.0,7.0,2000,1,4,0,0,0,6,7,0); INSERT INTO `mob_skills` VALUES (1941,1305,'string_clipper',0,0.0,7.0,2000,1,4,0,0,0,4,0,0); INSERT INTO `mob_skills` VALUES (1942,1303,'arcuballista',0,0.0,15.0,2000,1,4,0,0,0,3,1,0); -INSERT INTO `mob_skills` VALUES (1943,1306,'slapstick',0,0.0,7.0,2000,1,4,0,0,0,5,8,0); +INSERT INTO `mob_skills` VALUES (1943,1306,'slapstick',0,0.0,7.0,3116,1,4,0,0,0,5,8,0); INSERT INTO `mob_skills` VALUES (1944,1307,'shield_bash',0,0.0,7.0,2000,0,4,4,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (1945,1219,'provoke',0,0.0,7.0,2000,0,4,4,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (1946,435,'shock_absorber',0,0.0,7.0,2000,0,16,4,0,0,0,0,0); @@ -2020,12 +2020,12 @@ INSERT INTO `mob_skills` VALUES (1980,1197,'boreas_mantle',0,0.0,7.0,2000,1500,1 -- INSERT INTO `mob_skills` VALUES (1989,1733,'hunters_roll',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); -- INSERT INTO `mob_skills` VALUES (1990,1734,'ninja_roll',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); -- INSERT INTO `mob_skills` VALUES (1991,1735,'double-up',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); --- INSERT INTO `mob_skills` VALUES (1992,1736,'fire_maneuver',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); --- INSERT INTO `mob_skills` VALUES (1993,1737,'ice_maneuver',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); --- INSERT INTO `mob_skills` VALUES (1994,1738,'wind_maneuver',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); --- INSERT INTO `mob_skills` VALUES (1995,1739,'earth_maneuver',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); --- INSERT INTO `mob_skills` VALUES (1996,1740,'thunder_maneuver',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); --- INSERT INTO `mob_skills` VALUES (1997,1741,'water_maneuver',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (1992,94,'fire_maneuver',0,0.0,7.0,2000,0,1,4,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (1993,94,'ice_maneuver',0,0.0,7.0,2000,0,1,4,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (1994,94,'wind_maneuver',0,0.0,7.0,2000,0,1,4,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (1995,94,'earth_maneuver',0,0.0,7.0,2000,0,1,4,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (1996,94,'thunder_maneuver',0,0.0,7.0,2000,0,1,4,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (1997,94,'water_maneuver',0,0.0,7.0,2000,0,1,4,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (1998,361,'hane_fubuki',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (1999,362,'hiden_sokyaku',0,0.0,7.0,2000,0,4,0,0,1,0,0,0); INSERT INTO `mob_skills` VALUES (2000,363,'shiko_no_mitate',0,0.0,7.0,2000,1500,1,0,0,0,0,0,0); @@ -2034,9 +2034,9 @@ INSERT INTO `mob_skills` VALUES (2002,354,'rinpyotosha',1,0.0,7.0,2000,1500,1,0, INSERT INTO `mob_skills` VALUES (2003,1181,'grating_tantara',1,0.0,10.0,2000,1500,4,0,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (2004,1182,'stifling_tantara',1,0.0,10.0,2000,1500,4,0,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (2005,1157,'reward',0,0.0,30.0,100,0,4,0,0,0,0,0,0); -INSERT INTO `mob_skills` VALUES (2006,142,'azure_lore',0,0.0,7.0,2000,0,1,2,0,0,0,0,0); -INSERT INTO `mob_skills` VALUES (2007,135,'wild_card',0,0.0,7.0,2000,0,1,0,0,0,0,0,0); --- INSERT INTO `mob_skills` VALUES (2008,1752,'overdrive',0,0.0,7.0,2000,1500,4,0,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (2006,142,'azure_lore',0,0.0,7.0,2000,0,1,4,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (2007,135,'wild_card',0,0.0,7.0,2000,0,1,4,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (2008,143,'overdrive',0,0.0,7.0,2000,0,1,4,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (2009,125,'fire_shot',0,0.0,22.0,2000,0,4,4,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (2010,126,'ice_shot',0,0.0,22.0,2000,0,4,4,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (2011,127,'wind_shot',0,0.0,22.0,2000,0,4,4,0,0,0,0,0);