From 93cfc9f6fdcc0ae62471f389fd5011d08fe69e33 Mon Sep 17 00:00:00 2001 From: Dotes Date: Wed, 31 Jul 2024 10:53:13 -0400 Subject: [PATCH] Trust: Fablinix (#6055) * Added Fablinix's weapon skills and ranged attack Added Fablinix's TP moves to mob_skill_lists.sql. Changed Fablinix's TP moves in mob_skills.sql to match standard gobbie Bomb Toss and Goblin Rush properties, and added skillchain properties. Added the logic to trust\fablinix.lua for his ranged attacks as well as holding his TP to close skillchains. * Fixed Fablinix's Subjob and Added Enwater Changed Fablinix's sub job to RDM based on https://www.bg-wiki.com/ffxi/Cipher:_Fablinix and gave him his enwater spell. * Added Fablinix's Cure Spells Added gambits for Fablinix's Cure spells. * Added Fablinix's MP Mod Added Fablinix's MP+250% mod. * Added Fablinix's Stun gambits Added all the gambits for Fablinix's Stun. There is however an issue in spell.cpp line 699 that is causing the cast to fail because the check is based on the trust's job, not the trust's level. I'll be addressing it in my next commit. * Fablinix's "Gobbie Die" Added a special case to the trust level check in spell.cpp to emulate Fablinix's second main job of BLM. * Added Fablinix's teamwork messages Added the teamwork messages so both Fablinix and the Moogle say the right thing when one of them is already in the party. --- scripts/actions/spells/trust/fablinix.lua | 20 +++++++++++++++++++- scripts/actions/spells/trust/moogle.lua | 4 +++- sql/mob_pool_mods.sql | 3 +++ sql/mob_pools.sql | 2 +- sql/mob_skill_lists.sql | 3 ++- sql/mob_skills.sql | 4 ++-- 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/scripts/actions/spells/trust/fablinix.lua b/scripts/actions/spells/trust/fablinix.lua index f09237da4dd..65092d675af 100644 --- a/scripts/actions/spells/trust/fablinix.lua +++ b/scripts/actions/spells/trust/fablinix.lua @@ -12,7 +12,25 @@ spellObject.onSpellCast = function(caster, target, spell) end spellObject.onMobSpawn = function(mob) - xi.trust.message(mob, xi.trust.messageOffset.SPAWN) + xi.trust.teamworkMessage(mob, { + [xi.magic.spell.MOOGLE] = xi.trust.messageOffset.TEAMWORK_1, + }) + + mob:addSimpleGambit(ai.t.TARGET, ai.c.READYING_WS, 0, ai.r.MA, ai.s.SPECIFIC, xi.magic.spell.STUN) + mob:addSimpleGambit(ai.t.TARGET, ai.c.READYING_MS, 0, ai.r.MA, ai.s.SPECIFIC, xi.magic.spell.STUN) + mob:addSimpleGambit(ai.t.TARGET, ai.c.READYING_JA, 0, ai.r.MA, ai.s.SPECIFIC, xi.magic.spell.STUN) + mob:addSimpleGambit(ai.t.TARGET, ai.c.CASTING_MA, 0, ai.r.MA, ai.s.SPECIFIC, xi.magic.spell.STUN) + + mob:addSimpleGambit(ai.t.TANK, ai.c.HPP_LT, 75, ai.r.MA, ai.s.HIGHEST, xi.magic.spellFamily.CURE) + mob:addSimpleGambit(ai.t.PARTY, ai.c.HPP_LT, 50, ai.r.MA, ai.s.HIGHEST, xi.magic.spellFamily.CURE) + mob:addSimpleGambit(ai.t.PARTY, ai.c.STATUS, xi.effect.SLEEP_I, ai.r.MA, ai.s.SPECIFIC, xi.magic.spell.CURE) + mob:addSimpleGambit(ai.t.PARTY, ai.c.STATUS, xi.effect.SLEEP_II, ai.r.MA, ai.s.SPECIFIC, xi.magic.spell.CURE) + + mob:addSimpleGambit(ai.t.SELF, ai.c.NOT_STATUS, xi.effect.ENWATER, ai.r.MA, ai.s.SPECIFIC, xi.magic.spell.ENWATER) + + mob:addSimpleGambit(ai.t.TARGET, ai.c.RANDOM, 50, ai.r.RATTACK, 0, 0, 30) -- TODO: Verify rate of ranged attacks + + mob:setTrustTPSkillSettings(ai.tp.CLOSER_UNTIL_TP, ai.s.HIGHEST, 1500) end spellObject.onMobDespawn = function(mob) diff --git a/scripts/actions/spells/trust/moogle.lua b/scripts/actions/spells/trust/moogle.lua index 7e721f7ef6f..9dc01724171 100644 --- a/scripts/actions/spells/trust/moogle.lua +++ b/scripts/actions/spells/trust/moogle.lua @@ -12,7 +12,9 @@ spellObject.onSpellCast = function(caster, target, spell) end spellObject.onMobSpawn = function(mob) - xi.trust.message(mob, xi.trust.messageOffset.SPAWN) + xi.trust.teamworkMessage(mob, { + [xi.magic.spell.FABLINIX] = xi.trust.messageOffset.TEAMWORK_1, + }) local mlvl = mob:getMainLvl() local tick_amount diff --git a/sql/mob_pool_mods.sql b/sql/mob_pool_mods.sql index 0ef2504684a..5e5fa9ba6d7 100644 --- a/sql/mob_pool_mods.sql +++ b/sql/mob_pool_mods.sql @@ -647,6 +647,9 @@ INSERT INTO `mob_pool_mods` VALUES (5915,6,100,0); -- MPP: 100 -- Trust: Lehko INSERT INTO `mob_pool_mods` VALUES (5922,6,150,0); -- MPP: 150 +-- Trust: Fablinix +INSERT INTO `mob_pool_mods` VALUES (5932,6,250,0); -- MPP: 250 + -- Trust: Ferreous Coffin INSERT INTO `mob_pool_mods` VALUES (5944,3,-10,0); -- HPP: -10 INSERT INTO `mob_pool_mods` VALUES (5944,6,35,0); -- MPP: 35 diff --git a/sql/mob_pools.sql b/sql/mob_pools.sql index f096edcce5c..28cf9e207ae 100644 --- a/sql/mob_pools.sql +++ b/sql/mob_pools.sql @@ -5988,7 +5988,7 @@ INSERT INTO `mob_pools` VALUES (5928,'luzaf','Luzaf',145,0x0000D80B0000000000000 INSERT INTO `mob_pools` VALUES (5929,'najelith','Najelith',149,0x0000D90B00000000000000000000000000000000,11,0,3,240,100,0,0,0,0,0,0,32,0,3,0,0,341,0,0,1044,149); INSERT INTO `mob_pools` VALUES (5930,'aldo','Aldo',149,0x0000DA0B00000000000000000000000000000000,6,0,1,240,100,0,0,0,0,0,0,32,0,3,0,0,342,0,0,1045,149); INSERT INTO `mob_pools` VALUES (5931,'moogle','Moogle',185,0x0000DB0B00000000000000000000000000000000,21,0,3,240,100,0,0,0,0,0,0,32,0,3,0,0,343,0,0,1046,185); -INSERT INTO `mob_pools` VALUES (5932,'fablinix','Fablinix',327,0x0000DC0B00000000000000000000000000000000,6,4,3,240,100,0,0,0,0,0,0,32,0,3,0,0,344,0,0,1047,327); +INSERT INTO `mob_pools` VALUES (5932,'fablinix','Fablinix',327,0x0000DC0B00000000000000000000000000000000,6,5,3,240,100,0,0,0,0,0,0,32,0,3,0,0,344,0,0,1047,327); INSERT INTO `mob_pools` VALUES (5933,'maat','Maat',149,0x0000DD0B00000000000000000000000000000000,2,0,3,240,100,0,0,0,0,0,0,32,0,3,0,0,345,0,0,1048,149); INSERT INTO `mob_pools` VALUES (5934,'d_shantotto','D.Shantotto',153,0x0000DE0B00000000000000000000000000000000,4,8,3,240,100,0,0,0,0,0,0,32,0,3,0,0,346,0,0,1049,153); INSERT INTO `mob_pools` VALUES (5935,'star_sibyl','StarSibyl',153,0x0000DF0B00000000000000000000000000000000,21,0,3,240,100,0,0,0,0,0,0,32,0,3,0,0,347,0,0,1050,153); diff --git a/sql/mob_skill_lists.sql b/sql/mob_skill_lists.sql index fbe2f00cff7..eef36fe7ec3 100644 --- a/sql/mob_skill_lists.sql +++ b/sql/mob_skill_lists.sql @@ -3500,7 +3500,8 @@ INSERT INTO `mob_skill_lists` VALUES ('TRUST_Nashmeira',1038,3243); -- Imperial -- INSERT INTO `mob_skill_lists` VALUES ('TRUST_Najelith',1044,0); -- INSERT INTO `mob_skill_lists` VALUES ('TRUST_Aldo',1045,0); -- INSERT INTO `mob_skill_lists` VALUES ('TRUST_Moogle',1046,0); --- INSERT INTO `mob_skill_lists` VALUES ('TRUST_Fablinix',1047,0); +INSERT INTO `mob_skill_lists` VALUES ('TRUST_Fablinix',1047,3261); -- Bomb Toss +INSERT INTO `mob_skill_lists` VALUES ('TRUST_Fablinix',1047,3262); -- Goblin Rush INSERT INTO `mob_skill_lists` VALUES ('TRUST_Maat',1048,3263); -- Bear Killer INSERT INTO `mob_skill_lists` VALUES ('TRUST_Maat',1048,3413); -- Combo (Maat) INSERT INTO `mob_skill_lists` VALUES ('TRUST_Maat',1048,3414); -- One Inch Punch (Maat) diff --git a/sql/mob_skills.sql b/sql/mob_skills.sql index f564182cdc1..023e9fd1d7b 100644 --- a/sql/mob_skills.sql +++ b/sql/mob_skills.sql @@ -3272,8 +3272,8 @@ INSERT INTO `mob_skills` VALUES (3257,1299,'shibaraku',1,7.0,2000,1500,4,0,0,1,1 INSERT INTO `mob_skills` VALUES (3258,363,'shiko_no_mitate',0,7.0,2000,1500,1,0,0,0,0,0,0); INSERT INTO `mob_skills` VALUES (3259,364,'happobarai',1,7.0,2000,1500,4,0,0,0,5,8,0); INSERT INTO `mob_skills` VALUES (3260,354,'rinpyotosha',1,7.0,2000,1500,1,0,0,0,0,0,0); -INSERT INTO `mob_skills` VALUES (3261,335,'bomb_toss',0,7.0,2000,1500,4,0,0,0,0,0,0); -INSERT INTO `mob_skills` VALUES (3262,334,'goblin_rush',0,7.0,2000,1500,4,0,0,0,0,0,0); +INSERT INTO `mob_skills` VALUES (3261,335,'bomb_toss',2,13.5,2000,1500,4,0,0,0,3,6,0); +INSERT INTO `mob_skills` VALUES (3262,334,'goblin_rush',0,6.0,2000,1500,4,0,0,1,11,8,0); INSERT INTO `mob_skills` VALUES (3263,1625,'bear_killer',4,7.0,2000,1500,4,0,0,0,0,0,0); -- TODO: Skillchain properties INSERT INTO `mob_skills` VALUES (3264,259,'salvation_scythe',0,7.0,2000,1500,4,0,0,0,0,0,0); -- INSERT INTO `mob_skills` VALUES (3265,3009,'elemental_sforzo',0,7.0,2000,0,1,2,0,0,0,0,0);