From 0a5d935ca45e099e072ebd33aeef7d3c260a0942 Mon Sep 17 00:00:00 2001 From: meta53 Date: Thu, 2 Nov 2023 09:13:22 -0400 Subject: [PATCH] Small Updates --- bot_bst.mac | 2 +- bot_enc.mac | 2 +- bot_mag.mac | 2 +- bot_melee.mac | 15 +- bot_nec.mac | 2 +- bot_shd.mac | 2 +- bot_shm.mac | 2 +- ldon_guild.mac | 43 ++-- xiris_class_ini/BOT_BER_Ophesia.ini | 2 +- xiris_class_ini/BOT_ENC_Erisa.ini | 11 +- xiris_class_ini/BOT_WAR_Xiris.ini | 3 +- xiris_common/xiris_casting.inc | 6 +- xiris_common/xiris_charm.inc | 59 +++--- xiris_common/xiris_common.inc | 11 +- xiris_common/xiris_debuffing.inc | 1 + xiris_common/xiris_events.inc | 2 +- .../xiris_events_raid_oow_anguish.inc | 186 +++++++++++++----- xiris_common/xiris_pets.inc | 34 ++-- xiris_common/xiris_spell_routines.inc | 9 +- 19 files changed, 252 insertions(+), 142 deletions(-) diff --git a/bot_bst.mac b/bot_bst.mac index 5e5c30f..d60300e 100644 --- a/bot_bst.mac +++ b/bot_bst.mac @@ -106,7 +106,7 @@ Sub Main(string _tank1Name, string _tank2Name, string _tank3Name, int _healPoint /if (${${DEBUFF_Total}}) /call chkDebuffsOnSingleTarget ${int_targetID} |-- class specific - /if (${Me.Pet.ID}) /call chkPetAttack + /if (${Pet.ID}) /call chkPetAttack |-- melee library /if (!${mq2meleeEnabled}) /call chkCA_${Me.Class.ShortName} diff --git a/bot_enc.mac b/bot_enc.mac index ada81f4..0662a3d 100644 --- a/bot_enc.mac +++ b/bot_enc.mac @@ -111,7 +111,7 @@ Sub Main(string _tank1Name, string _tank2Name, string _tank3Name, int _healPoint /if (${${DEBUFF_Total}}) /call chkDebuffsOnSingleTarget ${int_targetID} |-- class specific - /if (${Me.Pet.ID}) /call chkPetAttack + /if (${Pet.ID}) /call chkPetAttack /if (${int_cmbtBuffTotal} && !${bln_hasCharmedPet}) /call cmbtBuffGRP |-- dps library (caster) diff --git a/bot_mag.mac b/bot_mag.mac index 299e428..be84420 100644 --- a/bot_mag.mac +++ b/bot_mag.mac @@ -93,7 +93,7 @@ Sub Main(string _tank1Name, string _tank2Name, string _tank3Name, int _healPoint /if (${${DEBUFF_Total}}) /call chkDebuffsOnSingleTarget ${int_targetID} |-- class specific - /if (${Me.Pet.ID}) /call chkPetAttack + /if (${Pet.ID}) /call chkPetAttack /if (${bln_cmbtBuffUse} && ${int_cmbtBuffTotal}) /call cmbtBuffMT |-- dps library (AE caster) diff --git a/bot_melee.mac b/bot_melee.mac index f4c45de..20b6bcd 100644 --- a/bot_melee.mac +++ b/bot_melee.mac @@ -48,11 +48,18 @@ REQUIRED INCLUDES #TURBO 120 +#EVENT FIRE_WARCRY "#1# tells the group#*#'FireWarCry #2#'" +#EVENT FIRE_WARCRY "#1# tells you#*#'FireWarCry #2#'" +#EVENT FIRE_WARCRY "#1# tells the raid#*#FireWarCry #2#'" +#EVENT FIRE_WARCRY "[ #1# #*#]#*#FireWarCry #2#" + Sub InitEvents_Class |/call RegisterClassEvents Events_AllMelee 0 + /if (${Me.Class.ShortName.Equal[BER]}) /call RegisterClassEvents Events_Class_BER 1 /return -Sub Events_AllMelee +Sub Events_Class_BER + /doevents FIRE_WARCRY /return Sub Main(string _tank1Name, string _tank2Name, string _tank3Name, int _healPoint, string _assistArgs) @@ -141,9 +148,13 @@ Sub chkUtils |-- Standard Methods /call chkSit /varset timer_check_utilities 20s - /return +Sub EVENT_FIRE_WARCRY(_line, _chatSender, _eventParams) + /shout I am Firing Warcry on ${Spawn[id ${_eventParams}].Name} (${_eventParams}); + /call TrueTarget ${_eventParams} + /if (${Me.CombatAbilityReady[Ancient: Cry of Chaos]}) /doability "Ancient: Cry of Chaos" +/return |** ---------------------------- diff --git a/bot_nec.mac b/bot_nec.mac index e919b8d..3672c49 100644 --- a/bot_nec.mac +++ b/bot_nec.mac @@ -96,7 +96,7 @@ Sub Main(string _tank1Name, string _tank2Name, string _tank3Name, int _healPoint /if (${${DEBUFF_Total}}) /call chkDebuffsOnSingleTarget ${int_targetID} |-- class specific - /if (${Me.Pet.ID}) /call chkPetAttack + /if (${Pet.ID}) /call chkPetAttack /if (${bln_lifetapUse} && (${Me.PctHPs} <= ${int_lifetapHP})) /call chkLifetap /call chkFeignDeath diff --git a/bot_shd.mac b/bot_shd.mac index 4c8652f..a4aeacc 100644 --- a/bot_shd.mac +++ b/bot_shd.mac @@ -87,7 +87,7 @@ Sub Main(string _tank1Name, string _tank2Name, string _tank3Name, int _healPoint /call RunAllEvents |-- class specific - /if (${Me.Pet.ID}) /call chkPetAttack + /if (${Pet.ID}) /call chkPetAttack /if (${bln_lifetapUse} && (${Me.PctHPs} <= ${int_lifetapHP})) /call chkLifetap /if (!${bln_tanking}) /call chkFeignDeath diff --git a/bot_shm.mac b/bot_shm.mac index 2925577..e334455 100644 --- a/bot_shm.mac +++ b/bot_shm.mac @@ -109,7 +109,7 @@ Sub Main(string _tank1Name, string _tank2Name, string _tank3Name, int _healPoint /if (${${DEBUFF_Total}}) /call chkDebuffsOnSingleTarget ${int_targetID} |-- class specific - /if (${Me.Pet.ID}) /call chkPetAttack + /if (${Pet.ID}) /call chkPetAttack /if (${int_cmbtBuffTotal}) /call cmbtBuffGRP |-- dps library (priest) diff --git a/ldon_guild.mac b/ldon_guild.mac index e1a460e..b858a63 100644 --- a/ldon_guild.mac +++ b/ldon_guild.mac @@ -805,35 +805,42 @@ Sub getTarget Sub chkTargetValid /echo chkTargetValid ${Target.Name} /if (${Target.Type.NotEqual[NPC]}) /return + + |--check to see if its a corpse + /if (${Target.Name.Find['s_corpse]}) { + /echo \arINVALID \awTarget is a corpse! + /call setTGTAlert + /return + } |--check if there is a path to the target /if (!${Navigation.PathExists[target]}) { - /echo INVALID No Path to Target + /echo \arINVALID \awNo Path to Target /call setTGTAlert /return } |--check my target is the apropriate level /if ((${Target.ID}) && (${Target.Level} < ${int_minTLevel})) { - /echo target too low of a level + /echo \arINVALID \awTarget too low of a level /call setTGTAlert /return } /if (${Target.Underwater}) { - /echo target is underwater + /echo \arINVALID \awTarget is underwater /call setTGTAlert /return } |--check my target is the above the apropriate z-radius floor /if ((${Target.ID}) && ${Int[${Target.Z}]}<${int_minZHeight}) { - /echo target below z floor + /echo \arINVALID \awTarget below z floor /call setTGTAlert /return } |--check my target is the above the apropriate z-radius ceiling /if ((${Target.ID}) &&${Int[${Target.Z}]}>${int_maxZHeight}) { - /echo target below z ceiling + /echo \arINVALID \awTarget below z ceiling /call setTGTAlert /return } @@ -865,15 +872,16 @@ Sub pullTarget :pullLoop - /if (!${bln_validTGT}) /goto :return - /if (!${Target.ID}) /goto :return - /if (${Target.Type.NotEqual[NPC]}) /goto :return + /if (!${bln_validTGT}) /goto :return + /if (!${Target.ID}) /goto :return + /if (${Target.Type.NotEqual[NPC]}) /goto :return + /if (${Target.Name.Find['s_corpse]}) /goto :return | Start the pull by running to the target :RunningToTarget /if (${Navigation.PathExists[target]}) { /if (!${Navigation.Active}) /navigate target - /delay 10 + /delay 15 } else { /call clearNavStuck /goto :RunningToTarget @@ -915,6 +923,7 @@ Sub pullTarget /call AggroTarget /varcalc attempt ${attempt} + 1 /echo \aoAggro Attempt return ${Macro.Return} + /if (${Macro.Return.Equal[FAILED]}) /goto :AggroCheck /if (${Me.TargetOfTarget.Name.Equal[${Me.Name}]}) /goto :ReturnWithPull /if (${Macro.Return.Equal[NOLOS]}) /goto :RunningToTarget /if (${Macro.Return.Equal[CAST_FIZZLE]}) /goto :AggroCheck @@ -986,11 +995,10 @@ Sub AggroTarget } else { /if (${Me.PctMana} > 10) { /call chkSpellMemorized "${spell_pull}" TRUE ${spell_pullGem} - /echo ${Me.SpellReady[${spell_pull}]} Cast "${spell_pull}" ${spell_pullGem} 2s + /echo \awReady?\ag${Me.SpellReady[${spell_pull}]} \awCasting \ag"${spell_pull}" \ap${spell_pullGem} \aw2s /call MQ2Cast "${spell_pull}" ${spell_pullGem} 2s /doevents NoLOS - /if (${bln_noLOS}) /varset ret NOLOS /if (${Macro.Return.Equal[CAST_SUCCESS]}) /varset ret SUCCESS /if (${Macro.Return.Equal[CAST_CANNOTSEE]}) /varset ret NOLOS @@ -1056,9 +1064,8 @@ Sub killTarget } :killMob + /echo \aoIssuing Kill Command |--issue kill command - - /docommand /${announceChannel} KillMob ${Target.ID} "${Target.Name}" ${Time.Time24} /call ResetCastTimers /face fast @@ -1079,9 +1086,9 @@ Sub killTarget |--while in combat do these things :combatLoop /call chkCombatState - /if (${int_targetID} != ${Target.ID}) /return - /if (${Target.Type.NotEqual[NPC]}) /return - /if (${Target.Distance} > ${int_campRadius}) /goto :distanceWaitLoop + /if (${int_targetID} != ${Target.ID}) /goto :return + /if (${Target.Type.NotEqual[NPC]}) /goto :return + /if (${Target.Distance} > ${int_campRadius}) /goto :distanceWaitLoop /if (!${bln_TGTDead}) { /if ((${Me.TargetOfTarget.ID} != ${Me.ID}) && !${Target.Fleeing}) { @@ -1101,8 +1108,8 @@ Sub killTarget } else { /echo \agTarget is dead, return } - - + :return + /hidecorpse npc /return Sub chkLDONCompletion diff --git a/xiris_class_ini/BOT_BER_Ophesia.ini b/xiris_class_ini/BOT_BER_Ophesia.ini index 129d39a..d2087eb 100644 --- a/xiris_class_ini/BOT_BER_Ophesia.ini +++ b/xiris_class_ini/BOT_BER_Ophesia.ini @@ -77,7 +77,7 @@ br= **| [BURN] ;_Burn|_Type|_Use|_AfterIndex|_MGB - BURN_Total=4 + BURN_Total=8 BURN_Group=1 BURN_1="Ancient: Cry of Chaos"|combat|TRUE|0|FALSE diff --git a/xiris_class_ini/BOT_ENC_Erisa.ini b/xiris_class_ini/BOT_ENC_Erisa.ini index 7f5849b..0028dc9 100644 --- a/xiris_class_ini/BOT_ENC_Erisa.ini +++ b/xiris_class_ini/BOT_ENC_Erisa.ini @@ -170,9 +170,10 @@ br= **| DEBUFF_3="Synapsis Spasm"|TRUE|5|1|TRUE|100|10|Disease|FALSE|0 DEBUFF_3_Type=CRIPPLE + [INVENTORY] -leftfinger=Ring of Disdain -rightfinger=Ring of the Serpent -face=Mask of Forbidden Rites -leftear=Earring of Dark Conflict -rightear=Loop of Entropic Hues + leftfinger=Ring of Disdain + rightfinger=Ring of the Serpent + face=Mask of Forbidden Rites + leftear=Earring of Dark Conflict + rightear=Loop of Entropic Hues diff --git a/xiris_class_ini/BOT_WAR_Xiris.ini b/xiris_class_ini/BOT_WAR_Xiris.ini index 5a99786..3811ca8 100644 --- a/xiris_class_ini/BOT_WAR_Xiris.ini +++ b/xiris_class_ini/BOT_WAR_Xiris.ini @@ -25,10 +25,11 @@ piercing=Soulskive|mainhand,Hardened Bone Spike|offhand [Downflags] - downflagCount=3 + downflagCount=4 downflag1=Form of Defense III|47286 item downflag2=Frost Guard|69130 item downflag3=Taelosian Guard|69131 item + downflag4=Pestilence Shock|20898 item [Holyflags] holyflagCount=0 diff --git a/xiris_common/xiris_casting.inc b/xiris_common/xiris_casting.inc index 8129fcb..83ae294 100644 --- a/xiris_common/xiris_casting.inc +++ b/xiris_common/xiris_casting.inc @@ -106,7 +106,7 @@ Sub chkNuke /if ((${Me.Casting.ID} && ${Me.Class.ShortName.NotEqual[BRD]}) || ${Me.Moving} || ${Me.Invis} || ${ExcludeList.Find[${Spawn[${Target.CleanName}]}]}) /return |-- press pet attack for funsies - /if (${Me.Pet.ID} && ${bln_petUse} && !${Me.Pet.Combat}) /call chkPetAttack + /if (${Pet.ID} && ${bln_petUse} && !${Me.Pet.Combat}) /call chkPetAttack |-- named check :named_check @@ -210,7 +210,7 @@ Sub chkQNuke /if ((${Me.Casting.ID} && ${Me.Class.ShortName.NotEqual[BRD]}) || ${Me.Moving} || ${Me.Invis} || ${ExcludeList.Find[${Spawn[${Target.CleanName}]}]}) /return |-- press pet attack for funsies - /if (${Me.Pet.ID} && ${bln_petUse} && !${Me.Pet.Combat}) /call chkPetAttack + /if (${Pet.ID} && ${bln_petUse} && !${Me.Pet.Combat}) /call chkPetAttack |-- named check :named_check @@ -456,7 +456,7 @@ Sub chkDOT /if ((${Me.Casting.ID} && ${Me.Class.ShortName.NotEqual[BRD]}) || ${Me.Moving} || ${Me.Invis} || ${ExcludeList.Find[${Spawn[${Target.CleanName}]}]}) /return |-- press pet attack for funsies - /if (${Me.Pet.ID} && ${bln_petUse} && !${Me.Pet.Combat}) /call chkPetAttack + /if (${Pet.ID} && ${bln_petUse} && !${Me.Pet.Combat}) /call chkPetAttack |-- named check :named_check diff --git a/xiris_common/xiris_charm.inc b/xiris_common/xiris_charm.inc index f498cf3..6453901 100644 --- a/xiris_common/xiris_charm.inc +++ b/xiris_common/xiris_charm.inc @@ -14,18 +14,18 @@ REVISION HISTORY -#EVENT CharmON "#*#CharmON#*#" -#EVENT CharmOFF "#*#CharmOFF#*#" +#EVENT CharmON "#*#CharmON#*#" +#EVENT CharmOFF "#*#CharmOFF#*#" -#EVENT CharmNPCByID "#1# tells the group#*#'CharmNPCByID #2#'" -#EVENT CharmNPCByID "#1# tells you#*#'CharmNPCByID #2#'" -#EVENT CharmNPCByID "#1# tells the raid#*#CharmNPCByID #2#'" -#EVENT CharmNPCByID "[ #1# #*#]#*#CharmNPCByID #2#" +#EVENT CharmNPCByID "#1# tells the group#*#'CharmNPCByID #2#'" +#EVENT CharmNPCByID "#1# tells you#*#'CharmNPCByID #2#'" +#EVENT CharmNPCByID "#1# tells the raid#*#CharmNPCByID #2#'" +#EVENT CharmNPCByID "[ #1# #*#]#*#CharmNPCByID #2#" -#EVENT CharmNPCByName "#1# tells the group#*#'CharmNPCByName #2#'" -#EVENT CharmNPCByName "#1# tells you#*#'CharmNPCByName #2#'" -#EVENT CharmNPCByName "#1# tells the raid#*#CharmNPCByName #2#'" -#EVENT CharmNPCByName "[ #1# #*#]#*#CharmNPCByName #2#" +#EVENT CharmNPCByName "#1# tells the group#*#'CharmNPCByName #2#'" +#EVENT CharmNPCByName "#1# tells you#*#'CharmNPCByName #2#'" +#EVENT CharmNPCByName "#1# tells the raid#*#CharmNPCByName #2#'" +#EVENT CharmNPCByName "[ #1# #*#]#*#CharmNPCByName #2#" Sub InitEvents_Charm /if (${Me.Class.ShortName.NotEqual[BRD]} && ${Me.Class.ShortName.NotEqual[ENC]} && ${Me.Class.ShortName.NotEqual[NEC]}) /return @@ -64,9 +64,9 @@ Sub EVENT_CharmNPCByName(_line, _chatSender,_eventParams) Sub CharmNPC(int _targetID, bool _forced, bool _attack, int _attackID) - /echo \aoCharmNPC\aw(\ag${_targetID}\aw ${bln_activeCharming}) + /echo \aoCharmNPC\aw(\ag${_targetID}\aw) Forced? \ag${_forced} \awAttack? \ag${_attack} \awTarget? \ag${_attackID}) /if (!${bln_activeCharming} && !${_forced}) /return - /if (${Me.Pet.ID}) /return + /if (${Pet.ID}) /return /varset bln_hasCharmedPet FALSE | /declare CHARM_Template string outer _Spell|_Gem|_MaxTries|_KeepAlive|_Resist|_RecastTimer @@ -74,22 +74,21 @@ Sub CharmNPC(int _targetID, bool _forced, bool _attack, int _attackID) :charmTarget /declare i int local 2 /for i 1 to ${CHARM_Total} - /if (${Me.Pet.ID}) /return + /if (${Pet.ID}) /return /call TrueTarget ${_targetID} | Trigger Check based on type (Calls chkCharmTrigger) - /call chkCharmTrigger ${CHARM_${i}_Type} - /echo \ayChkCharmTrigger: \ao${CHARM_${i}_Type} \ar${Macro.Return} "${CHARM_${i}_Spell}" - /if (!${Macro.Return}) { - /if (${i} < ${CHARM_Total}) { - /echo \aoGoing to next charm since first failed! - /goto :nextCharm - } else { - /echo \aoChkCharmTrigger FAILED - /goto :return - } - - } + | /call chkCharmTrigger ${CHARM_${i}_Type} + | /echo \ayChkCharmTrigger: \ao${CHARM_${i}_Type} \ar${Macro.Return} "${CHARM_${i}_Spell}" + | /if (!${Macro.Return}) { + | /if (${i} < ${CHARM_Total}) { + | /echo \aoGoing to next charm since first failed! + | /goto :nextCharm + | } else { + | /echo \aoChkCharmTrigger FAILED + | /goto :return + | } + | } | Checks passed, check if the spell is memorized. Skip if not :charmSpellMemorized @@ -110,7 +109,7 @@ Sub CharmNPC(int _targetID, bool _forced, bool _attack, int _attackID) /call MQ2Medley SONG "${CHARM_${i}_Spell}" ${_targetID} TRUE /goto :return } else { - /call CastCharm "${CHARM_${i}_Spell}" ${CHARM_${db}_Gem} ${CHARM_${i}_MaxTries} ${Target.ID} ${_forced} + /call CastCharm "${CHARM_${i}_Spell}" ${CHARM_${i}_Gem} ${CHARM_${i}_MaxTries} ${Target.ID} ${_forced} /goto :return } /call RunRaidEvents @@ -120,7 +119,7 @@ Sub CharmNPC(int _targetID, bool _forced, bool _attack, int _attackID) /next i :return - /if (${Me.Pet.ID} ) { + /if (${Pet.ID} ) { /varset bln_hasCharmedPet TRUE /if (${_attack}) { /echo \awEngaging Target(\ag${_attackID}\aw) with Charmed Pet \ag${Me.Pet.Name}! @@ -217,11 +216,11 @@ Sub CreateCharmLineup Sub chkCharmTrigger(string _key) /if (${Me.Class.ShortName.Equal[ENC]}) { | Charm 1 "Ancient: Voice of Muram" - /if (${_key.Equal[ANCIENT]} && (!${Me.Pet.ID} || ${Target.Charmed.Duration.TotalSeconds} < 6) && ${Me.SpellReady[${CHARM_1_Spell}]}) /return TRUE + /if (${_key.Equal[ANCIENT]} && (!${Pet.ID} || ${Target.Charmed.Duration.TotalSeconds} < 6) && ${Me.SpellReady[${CHARM_1_Spell}]}) /return TRUE | Charm 2 "True Name" - /if (${_key.Equal[NORMAL]} && (!${Me.Pet.ID} || ${Target.Buff[${CHARM_1_SPELL}].Duration.TotalSeconds} < 5) && ${Me.SpellReady[${CHARM_1_Spell}]}) /return TRUE + /if (${_key.Equal[NORMAL]} && (!${Pet.ID} || ${Target.Buff[${CHARM_1_SPELL}].Duration.TotalSeconds} < 5) && ${Me.SpellReady[${CHARM_1_Spell}]}) /return TRUE } else /if (${Me.Class.ShortName.Equal[BRD]}) { - /if (${_key.Equal[NORMAL]} && (!${Me.Pet.ID} || ${Target.Charmed.Duration.TotalSeconds} < 6) && ${Me.SpellReady[${CHARM_1_Spell}]}) /return TRUE + /if (${_key.Equal[NORMAL]} && (!${Pet.ID} || ${Target.Charmed.Duration.TotalSeconds} < 6) && ${Me.SpellReady[${CHARM_1_Spell}]}) /return TRUE } /return FALSE diff --git a/xiris_common/xiris_common.inc b/xiris_common/xiris_common.inc index 653be09..89c7714 100644 --- a/xiris_common/xiris_common.inc +++ b/xiris_common/xiris_common.inc @@ -120,6 +120,7 @@ ______________________________________________ #EVENT ImDead "#*#Returning to Bind Location#*#" #EVENT RemoveRingset "#1#RemoveRingset#*#" #EVENT LoadRingset "#1#LoadRingset#*#" +#EVENT LoadFaceSlot "#1#LoadFaceSlot#*#" #EVENT LoadWeaponset "#1#LoadWeaponset #2#" #EVENT SaveJewelry "#1#SaveJewelry#*#" #EVENT SaveRingset "#1#SaveRingset#*#" @@ -441,7 +442,7 @@ Sub EngageTarget(int _targetID) /if (${str_classArchetype.Equal[MELEE_END]} || ${str_classArchetype.Equal[MELEE_MANA]} || ${str_classArchetype.Equal[TANK]}) /call EngageTargetMelee | Sicc Pet - /if ((${Select[${Me.Class.ShortName},MAG,BST,NEC,ENC,SHM]}) && ${Me.Pet.ID}) /call chkPetAttack + /if ((${Select[${Me.Class.ShortName},MAG,BST,NEC,ENC,SHM]}) && ${Pet.ID}) /call chkPetAttack | Priests don't need to do anything else | Stand Up @@ -513,7 +514,7 @@ Sub chkTargetStatus /if (${Me.Class.ShortName.Equal[SHM]} && ${Me.Class.ShortName.Equal[CLR]} && ${Me.Class.ShortName.Equal[DRU]}) /goto :chkTargetTarget | I am engaged, check we are targetting correct NPC (not if we are tanking becausse that is annoying) - /if ((${Target.ID} != ${int_targetID}) && (${Spawn[id ${int_targetID}].PctHPs} >= 0 && !${Spawn[id ${int_targetID}].Name.Find[s_corpse]}) && !${bln_tanking}) { + /if ((${Target.ID} != ${int_targetID}) && (${Spawn[id ${int_targetID}].PctHPs} >= 0 && !${Spawn[id ${int_targetID}].Name.Find[s_corpse]}) && !${bln_tanking} && !${bln_activeCharming}) { | I am not targetting the correct NPC /echo \aoCurrent Target \arNOT \ao${Spawn[id ${int_targetID}].Name}(${int_targetID})\aw, re-targetting /call TrueTarget ${int_targetID} @@ -617,7 +618,7 @@ Sub Disengage /squelch /attack off /stick off } - /if (${str_classArchetype.Equal[CASTER]} && ${Me.Pet.ID}) /pet back off + /if (${str_classArchetype.Equal[CASTER]} && ${Pet.ID}) /pet back off /return @@ -976,7 +977,7 @@ Sub Event_RageOn(string line) /if (!${mq2meleeEnabled} && !${Stick.Behind} && (${line.Find[${Spawn[${int_targetID}].DisplayName}]} || ${line.Find[${Target.DisplayName}]}) && (${str_classArchetype.Equal[MELEE_END]} || ${str_classArchetype.Equal[MELEE_MANA]} || ${str_classArchetype.Equal[TANK]})) { /attack off } - /if (((${line.Find[${Spawn[${int_targetID}].DisplayName}]} || ${line.Find[${Target.DisplayName}]}) && ${Me.Pet.ID}) && !${Me.PetBuff[Master's Aura Effect]}) { + /if (((${line.Find[${Spawn[${int_targetID}].DisplayName}]} || ${line.Find[${Target.DisplayName}]}) && ${Pet.ID}) && !${Me.PetBuff[Master's Aura Effect]}) { /echo Enrage detected! Backing pet off. /pet back off /varset bln_enraged TRUE @@ -989,7 +990,7 @@ Sub Event_RageOff(string line) /echo \awRageOff :tryKill \ag Attacking /attack on } - /if ((${line.Find[${Spawn[${int_targetID}].DisplayName}]} || ${line.Find[${Target.DisplayName}]}) && ${Me.Pet.ID}) { + /if ((${line.Find[${Spawn[${int_targetID}].DisplayName}]} || ${line.Find[${Target.DisplayName}]}) && ${Pet.ID}) { /pet attack /varset bln_enraged FALSE } diff --git a/xiris_common/xiris_debuffing.inc b/xiris_common/xiris_debuffing.inc index 35f5c2b..b69c90b 100644 --- a/xiris_common/xiris_debuffing.inc +++ b/xiris_common/xiris_debuffing.inc @@ -232,6 +232,7 @@ Sub CastDebuff(string _debuff, string _gem, int _maxTries, int _targetID, bool /declare tgtName string local ${Target.CleanName} :AttemptDebuff + /call RunRaidEvents /call RunRaidEvents |/echo \aoAttempting Debuff: \aw${_debuff} on \ao${Spawn[id ${_targetID}].Name} |/call chkTargetStatus diff --git a/xiris_common/xiris_events.inc b/xiris_common/xiris_events.inc index 50e976b..c476a26 100644 --- a/xiris_common/xiris_events.inc +++ b/xiris_common/xiris_events.inc @@ -56,7 +56,7 @@ Sub xbot_initialize_events /if (${Zone.ShortName.Equal[chambersd]}) /call InitEvents_OOW_MPG_Specialization /if (${Zone.ShortName.Equal[chamberse]}) /call InitEvents_OOW_MPG_Adaptation /if (${Zone.ShortName.Equal[chambersf]}) /call InitEvents_OOW_MPG_Corruption - /if (${Zone.ShortName.Equal[thundercrest]} || ${Zone.ShortName.Equal[anguish]}) /call InitEvents_OOW_Anguish + /if (${Zone.ShortName.Equal[guildhall]} || ${Zone.ShortName.Equal[anguish]}) /call InitEvents_OOW_Anguish |-- Epic 1.5 Fights /if (${Zone.ShortName.Equal[gfaydark]}) /call InitEvents_Epic diff --git a/xiris_common/xiris_events_raid_oow_anguish.inc b/xiris_common/xiris_events_raid_oow_anguish.inc index 9c53c94..acef2ee 100644 --- a/xiris_common/xiris_events_raid_oow_anguish.inc +++ b/xiris_common/xiris_events_raid_oow_anguish.inc @@ -24,7 +24,6 @@ ______________________________________________ | Jelvan #Event JelvanSetup "#*#JelvanSetup#*#" #EVENT JelvanStart "#*#Hail, Jelvan#*#" -#EVENT JelvanPhase2 "#*#JP2#*#" | Warden Hanvar #EVENT HanvarSetup "#*#HanvarSetup#*#" @@ -35,50 +34,64 @@ ______________________________________________ | Arch Magus Vangl #EVENT AMVStart "#*#AMVStart#*#" #EVENT MarkOfDeath "#*#You have been marked for death#*#" +#EVENT MoDForcedCheck "#*#CheckGroupMarkOfDeath#*#" #EVENT AMVKill "#1# tells the raid#*#'AMVKill #2#'" #EVENT AMVRetreat "#1# tells the raid#*#'AMVRetreat #2#'" | OMM +#EVENT OMMStart "#*#OMMStart#*#" #EVENT GazeYou "#*#gaze of deadly power focusing on you#*#" #EVENT GazeBurst "#*#Mata Muram fixes his gaze#*#" #EVENT GazeDone "#*#Mata Muram's spell has been reflected#*#" - +#EVENT OMMWarCry "#*#OMMWarCry#*#" Sub InitEvents_OOW_Anguish /echo \ag Initializing Anguish - /if (!${Defined[bln_jelvanEngaged]}) /declare bln_jelvanEngaged bool outer FALSE - /if (!${Defined[bln_hanvarEngaged]}) /declare bln_hanvarEngaged bool outer FALSE - /if (!${Defined[bln_amvEngaged]}) /declare bln_amvEngaged bool outer FALSE - /if (!${Defined[bln_OMMEngaged]}) /declare bln_OMMEngaged bool outer FALSE - /if (!${Defined[ommCleric_X]}) /declare ommCleric_X int outer 504 - /if (!${Defined[ommCleric_Y]}) /declare ommCleric_Y int outer 4772 - - /declare eventTarget string outer NULL - - /call RegisterBackgroundEvents Events_OOW_Anguish 15 + /declare bln_jelvanEngaged bool outer FALSE + /declare bln_hanvarEngaged bool outer FALSE + /declare bln_amvEngaged bool outer FALSE + /declare bln_OMMEngaged bool outer FALSE + /declare ommCleric_X int outer 504 + /declare ommCleric_Y int outer 4772 + /declare eventTarget string outer NULL + /declare timer_omm_charm timer outer 2s + + /declare arr_bersekerList[10] string outer NULL + /varset arr_bersekerList[1] Ophidia + /varset arr_bersekerList[2] Ophelia + /varset arr_bersekerList[3] Ophemia + /varset arr_bersekerList[4] Ophenia + /varset arr_bersekerList[5] Opheoia + /varset arr_bersekerList[6] Ophexia + /varset arr_bersekerList[7] Opheyia + /varset arr_bersekerList[8] Ophezia + /varset arr_bersekerList[9] Ophesia + /varset arr_bersekerList[10] Opheria + + /call RegisterBackgroundEvents Events_OOW_Anguish 15 + /call RegisterRapidEvents Events_OOW_Mark 1 /return Sub Events_OOW_Anguish - /if ((${Me.Class.ShortName.Equal[WAR]} || ${Me.Class.ShortName.Equal[SHD]}) && ${bln_engaged}) /call chkDivineIntervention + /call chkOMMEvents + /if (${Zone.ShortName.NotEqual[anguish]}) /return + /if (${Select[${Me.Class.ShortName},WAR,SHD,PAL]} && ${bln_engaged}) /call chkDivineIntervention | Ture Events - |/if (${Bool[${SpawnCount[npc Ture]}]} && ${Spawn[npc Ture].Distance3D} < 400) { - /doevents TureRampOn - /doevents TureRampOff - |} + /doevents TureRampOn + /doevents TureRampOff | Jelvan Events /if (${Bool[${SpawnCount[npc Jelvan]}]} && ${Spawn[npc Jelvan].Distance3D} < 400) { /if (!${bln_jelvanEngaged}) { /doevents JelvanStart } else { - /doevents JelvanPhase2 - /if (${str_classArchetype.Equal[PRIEST]} || ${Me.Class.ShortName.Equal[PAL]}) /call chkJelvanCures - /if (${Me.Class.ShortName.Equal[SHM]} || ${str_classArchetype.Equal[CASTER]}) /call chkJelvanResists - /if (${Me.Class.ShortName.Equal[SHM]} || ${Me.Class.ShortName.Equal[ENC]}) /call chkJelvanSlows + /if (${str_classArchetype.Equal[PRIEST]} || ${Me.Class.ShortName.Equal[PAL]}) /call chkJelvanCures + /if (${Me.Class.ShortName.Equal[SHM]} || ${str_classArchetype.Equal[CASTER]}) /call chkJelvanResists + /if (${Me.Class.ShortName.Equal[SHM]} || ${Me.Class.ShortName.Equal[ENC]}) /call chkJelvanSlows } } @@ -94,12 +107,22 @@ Sub Events_OOW_Anguish } | OMM Events - /if ((${Bool[${SpawnCount[npc Overlord]}]} && ${Spawn[npc Overlord].Distance3D} < 300) || ${Zone.ShortName.Equal[arena]}) { + /if ((${Bool[${SpawnCount[npc Overlord]}]} && ${Spawn[npc Overlord].Distance3D} < 400) || ${Zone.ShortName.Equal[arena]}) { /call chkOMMEvents } /return +Sub Events_OOW_Mark + /if (${Zone.ShortName.NotEqual[anguish]}) /return + /doevents GazeYou + /doevents MarkOfDeath + /if (${Select[${Me.Class.ShortName},SHM,CLR,DRU]}) { + /doevents CheckGroupMarkOfDeath + /call chkGroupMarkedForDeath + } +/return + |---------------------------- | Ture |---------------------------- @@ -444,7 +467,7 @@ Sub chkAMVEvents } /return -Sub Event_AMVStart +Sub Event_AMVStart eventTarget /varset bln_amvEngaged TRUE /varset eventTarget Vangl /doevents flush AMVStart @@ -496,7 +519,6 @@ Sub Event_GazeYou /dgt FireTL /shout Calling for TL! } else { - :gazeCastWait /call Disengage /if (${Navigation.Active}) /nav stop @@ -524,10 +546,10 @@ Sub Event_GazeYou /delay 20 /call LoadFaceSlot /doevents flush GazeYou - /if (!${SpawnCount[npc frenzied]}) { - /call TrueTarget ${Spawn[npc Overlord].ID} - /call EngageTarget ${Spawn[npc Overlord].ID} - } + | /if (!${SpawnCount[npc frenzied]}) { + | /call TrueTarget ${Spawn[npc Overlord].ID} + | /call EngageTarget ${Spawn[npc Overlord].ID} + | } } /return @@ -547,24 +569,28 @@ Sub chkOMMEvents /doevents GazeDone | TODO: Have Bards keep a charm memmed for OMM? /if (${str_classArchetype.Equal[PRIEST]} || ${str_classArchetype.Equal[CASTER]}) { - /call chkOMMPositioning + |/call chkOMMPositioning } /if (${Me.Class.ShortName.Equal[ENC]}) { + /doevents OMMWarCry /call chkOMMCharm /call chkDivineIntervention + /return } else /if (${Me.Class.ShortName.Equal[CLR]} && !${bln_chChainMember}) { /call chkGroupMarkedForDeath + /return } else /if (${Me.Class.ShortName.Equal[SHM]}) { /call chkGroupMarkedForDeath + /return } else /if (${Me.Class.ShortName.Equal[PAL]}) { /call chkOMMAdds /call chkSelfMarkedForDeath + /return } else /if (${Me.Class.ShortName.Equal[WAR]}) { /call chkOMMAdds + /return } - |} else /if (${Me.Class.ShortName.Equal[MAG]} || ${Me.Class.ShortName.Equal[WIZ]}) { - /call chkOMMFrenzied - |} + /if (${Select[${str_classArchetype},MELEE_MANA,MELEE_END]}) /call chkOMMFrenzied /return Sub chkOMMPositioning @@ -576,21 +602,23 @@ Sub chkOMMPositioning Sub chkOMMCharm - /echo \aochkOMMCharm \awPet? \ag${Me.Pet.ID} - /if (!${Me.Pet.ID}) { + /if (${timer_omm_charm}) /return + /if (!${Pet.ID}) { + /echo \aochkOMMCharm \awPet? \agID:${Pet.ID} \awCoerced? \ag${SpawnCount[npc Coerced]} /if (${bln_hasCharmedPet}) /shout LOST CONTROL OF PET! + /varset bln_hasCharmedPet FALSE /if (${FindItem[=Mindreaver's Vest of Coercion].ID} && ${FindItem[=Mindreaver's Vest of Coercion].TimerReady}==0) { /call MQ2Cast "Mindreaver's Vest of Coercion" item 2s } - /varset bln_hasCharmedPet FALSE + /if (${SpawnCount[npc Coerced]}) { | Eurydice (Charm 1) /if (${Me.Name.Equal[Eurydice]}) { + /echo \aoCoerced_Lieutenant_000 \awCharm Attempt :Charm_1 /if (!${timer_charmAnnounce}) /echo \agCoerced_Lieutenant_000 Charm Attempt \ayDist:\ar${Spawn[npc Coerced_Lieutenant_000].Distance3D} \ayLOS:${Spawn[npc Coerced_Lieutenant000].LineOfSight} /if (${Spawn[npc Coerced_Lieutenant_000].Distance3D} < 200 && ${Spawn[npc Coerced_Lieutenant_000].LineOfSight}) { /call TrueTarget ${Spawn[npc Coerced_Lieutenant_000].ID} - /if (${Target.Charmed.ID}) /goto :Charm_2 /if (!${timer_charmAnnounce}) { /shout Attempting Charm! ${Target.Name} (${Target.ID}) d:${Target.Distance3D} /echo \ar CHARMING ${Target.Name} (${Target.ID}) d:${Target.Distance3D} @@ -602,8 +630,9 @@ Sub chkOMMCharm } | Erisa (Charm 2) /if (${Me.Name.Equal[Erisa]}) { + /echo \aoCoerced_Lieutenant000 \awCharm Attempt :Charm_2 - /if (!${timer_charmAnnounce}) /echo \agCoerced_Lieutenant000 Charm Attempt \ayDist:\ar${Spawn[npc Coerced_Lieutenant_000].Distance3D} \ayLOS:${Spawn[npc Coerced_Lieutenant000].LineOfSight} + /if (!${timer_charmAnnounce}) /echo \agCoerced_Lieutenant000 Charm Attempt \ayDist:\ar${Spawn[npc Coerced_Lieutenant000].Distance3D} \ayLOS:${Spawn[npc Coerced_Lieutenant000].LineOfSight} /if (${Spawn[npc Coerced_Lieutenant000].Distance3D} < 200 && ${Spawn[npc Coerced_Lieutenant000].LineOfSight}) { /call TrueTarget ${Spawn[npc Coerced_Lieutenant000].ID} /if (${Target.Charmed.ID}) /goto :Charm_1 @@ -620,20 +649,21 @@ Sub chkOMMCharm } else { :petattack_check /if (!${bln_hasCharmedPet}) /varset bln_hasCharmedPet TRUE - /if (${Me.Pet.ID} && ${Me.Pet.Target.ID} != ${Spawn[npc Overlord].ID}) { + /if (${Pet.ID} && (${Pet.Target.ID} != ${Spawn[npc Overlord].ID})) { /echo \agSiccing pet! /call TrueTarget ${Spawn[npc Overlord].ID} /pet attack /if (!${Me.Pet.Buff[Speed of Salik]}) { /echo \agBuffing Pet! - /target id ${Me.Pet.ID} + /target id ${Pet.ID} /call chkSpellMemorized "Speed of Salik" TRUE gem8 /call MQ2Cast "Speed of Salik" } } } :return -/echo \agReturning out of chkOMMCharm +|/echo \agReturning out of chkOMMCharm +/varset timer_omm_charm 2s /return | Adds need to be AE DDd @@ -660,7 +690,7 @@ Sub chkOMMFrenzied /if ((${Me.Class.ShortName.Equal[WIZ]} || ${Me.Class.ShortName.Equal[MAG]})) { /varset AENUKE_Active FALSE } - /if (${bln_engaged}) /call EngageTarget ${Spawn[npc Overlord].ID} + |/if (${bln_engaged}) /call EngageTarget ${Spawn[npc Overlord].ID} } /return @@ -674,6 +704,7 @@ Sub chkOMMAdds /call TrueTarget ${NearestSpawn[${i}, npc Coerced].ID} /if (${Me.TargetOfTarget.Class.ShortName.Equal[WAR]} || ${Me.TargetOfTarget.Class.ShortName.Equal[PAL]} || ${Me.TargetOfTarget.Class.ShortName.Equal[SHD]}) /goto :nextTarget /if (!${Target.Charmed.ID}) /call aggroByID ${Target.ID} + /nav wp ommCleric /squelch /target clear :nextTarget | coerced test @@ -697,6 +728,49 @@ Sub chkOMMAdds /next i /return +Sub EVENT_OMMWarCry + /doevents flush OMMWarCry + /if (${Me.Class.ShortName.NotEqual[ENC]}) /return + /if (!${Pet.ID}) /return + /if (${Pet.Buff[Ancient: Cry of Chaos]}) /return + /shout Calling OMM War Cry on my Pet! + /call RequestBerserkerWarCry ${Pet.ID} +/return + + +Sub RequestBerserkerWarCry(int _targetID) + /echo \ag WARCRY CALLED! \ao${_targetID} \aw ${Time.Time24} + /declare bStatus string local FALSE + /declare berTest string local NULL + /declare berName string local NULL + + /declare i int local 1 + /declare foundCount int local 0 + /declare sz int local 0 + /declare t int local ${arr_bersekerList.Size} + /if (${Me.CleanName.Equal[Erisa]}) { + /varset sz 1 + /varcalc t ${t}-1 + } + /for i 1 to ${t} + /if (${Me.CleanName.Equal[Erisa]}) /varcalc i ${i}+${sz} + /varset berTest ${arr_bersekerList[${i}]} + /if (!${SpawnCount[pc ${berTest}]}) /goto :next_berserker + /dquery ${berTest} -q "Me.CombatAbilityReady[Ancient: Cry of Chaos]" + /delay 20 ${DanNet.Query.Received} + /varset bStatus ${DanNet.Q} + /echo \aw ${berTest} Cry? ${If[${bStatus},\ag${bStatus},\ar${bStatus}]} + /if (${bStatus.Equal[TRUE]}) { + /varcalc foundCount ${foundCount}+1 + /varset berName ${berTest} + } + /if (${foundCount}) /goto :CastCry + /next i + + :CastCry + /echo \aoAsking \ag${berName}\aw to cast \agAncient: Cry of Chaos\aw on ${_targetID} + /dt ${berName} FireWarCry ${_targetID} +/return |---------------------------- @@ -707,7 +781,7 @@ Sub EVENT_MarkOfDeath /echo \aoMarked for Death! /doevents flush MarkOfDeath /if (${bln_tanking}) /return - /if (!${bln_amvEngaged} && ${eventTarget.Equal[Vangl]}) /varset bln_amvEngaged TRUE + /if (!${bln_amvEngaged} && ${eventTarget.Equal[Vangl]}) /varset bln_amvEngaged TRUE /if (!${bln_OMMEngaged} && ${eventTarget.Equal[Overlord]}) /varset bln_OMMEngaged TRUE /call chkMarkedForDeathCureDist @@ -722,7 +796,7 @@ Sub EVENT_AMVRetreat Sub chkGroupMarkedForDeath - /if (${Me.Class.ShortName.Equal[CLR]} && (${bln_chChainMember} || ${bln_focusHealMT})) /return + /if (${Me.Class.ShortName.Equal[CLR]} && (${bln_chChainMember})) /return /declare i int local 0 /declare haveMark int local 0 @@ -747,6 +821,12 @@ Sub chkGroupMarkedForDeath /echo \ar${Group.Member[${gm}]} \awreply:${Bool[${DanNet.Q}]} /echo \ar MARK OF DEATH FOUND: \ao${Group.Member[${gm}]} \ayDist:\ao${Group.Member[${gm}].Distance3D} /call getCureCounters ${Group.Member[${gm}]} disease + + | MT && ENC is more important than anyone else, fire single target cure! + /if (${Group.Member[${gm}].CleanName.Equal[${str_MTName}]} || ${Group.Member[${gm}].Class.ShortName.Equal[ENC]} ) { + /call handleCureRequest ${Group.Member[${gm}].Name} ${Group.Member[${gm}].ID} disease ${gcount[${i}]} TRUE + /goto :CheckGroup + } /varset foundMark TRUE /varcalc haveMark ${haveMark}+1 /varset gcount[${i}] ${Int[${Macro.Return}]} @@ -827,12 +907,10 @@ Sub chkGroupMarkedForDeath } else /if (${Group.Member[${gm}].ID} == ${int_MTID}) { /echo \ar MARK OF DEATH FOUND on TANK \aoDist:\ay${Group.Member[${gm}].Distance} \aoRange:\ay${Spell[${str_cure_disease}].MyRange} /if (${Group.Member[${gm}].Distance} > ${Spell[${str_cure_disease}].MyRange}) { - /ar FUCK ${Group.Member[${gm}]} is out of cure Range! ${Group.Member[${gm}].Distance} > ${Spell[${str_cure_disease}].MyRange} - /warp wp ommCleric2 + /echo /ar FUCK ${Group.Member[${gm}]} is out of cure Range! ${Group.Member[${gm}].Distance} > ${Spell[${str_cure_disease}].MyRange} } /call getCureCounters ${Group.Member[${gm}].Name} disease /call handleCureRequest ${Group.Member[${gm}].Name} ${Group.Member[${gm}].ID} disease ${gcount[${i}]} TRUE - /warp wp ommCleric } else { /call handleCureRequest ${Group.Member[${gm}].Name} ${Group.Member[${gm}].ID} disease ${gcount[${i}]} TRUE } @@ -841,6 +919,7 @@ Sub chkGroupMarkedForDeath :CommandAttack /varset secondCheck FALSE + /if (${eventTarget.Equal[Overlord]}) /return /if (${Spawn[npc ${eventTarget}].PctHPs} <= 98) { /for i 1 to 5 /if ((${Group.Member[${i}].ID} != ${int_MTID}) && (${Group.Member[${i}].Name.NotEqual[${str_MTName}]}) && ${Select[${Group.Member[${i}].Class.ShortName},${MeleeClasses}]}) { @@ -857,6 +936,10 @@ Sub chkGroupMarkedForDeath :Return /return +Sub EVENT_CheckGroupMarkOfDeath + /doevents flush CheckGroupMarkOfDeath + /call chkGroupMarkedForDeath +/return Sub chkSelfMarkedForDeath /if (${Me.Buff[Mark of Death].ID}) /call handleCureRequest ${Me.Name} ${Me.ID} disease 14 TRUE @@ -881,9 +964,10 @@ Sub chkMarkedForDeathCureDist /goto :markLoop } - /if (!${Target.Name.Find[${eventTarget}]}) { - /call TrueTarget ${Spawn[npc ${eventTarget}].ID} - } - /call EngageTarget ${Spawn[npc ${eventTarget}].ID} - :return + + | /if (!${Target.Name.Find[${eventTarget}]}) { + | /call TrueTarget ${Spawn[npc ${eventTarget}].ID} + | } + | /call EngageTarget ${Spawn[npc ${eventTarget}].ID} + | :return /return \ No newline at end of file diff --git a/xiris_common/xiris_pets.inc b/xiris_common/xiris_pets.inc index 16e88d7..4835d3d 100644 --- a/xiris_common/xiris_pets.inc +++ b/xiris_common/xiris_pets.inc @@ -27,16 +27,16 @@ Sub chkPet |--Destroy your familiar if it is up. Hate them /if (${bln_engaged} && !${bln_hanvarEngaged}) /return - /if (${Me.Pet.ID} && ${Me.Pet.Name.Find[familiar]}) /pet get lost + /if (${Pet.ID} && ${Me.Pet.Name.Find[familiar]}) /pet get lost /if (${Me.Invis} || ${Me.Moving} || ${timer_petBuffRecheck}) /return - /declare hadPetOnInitialize bool local ${Bool[${Me.Pet.ID}]} + /declare hadPetOnInitialize bool local ${Bool[${Pet.ID}]} |--Spawn your pet /call chkPetSpawn /call RunRaidEvents |--Buff your pet - /if (${Me.Class.ShortName.NotEqual[SHM]} && ${Bool[${Me.Pet.ID}]}) /call chkPetBuffs + /if (${Me.Class.ShortName.NotEqual[SHM]} && ${Bool[${Pet.ID}]}) /call chkPetBuffs |--Weaponize your pet if its a new spawn /if (${Me.Class.ShortName.Equal[MAG]} && !${hadPetOnInitialize}) /call chkPetWeaps @@ -48,7 +48,7 @@ Sub chkPet Sub chkPetBuffs /if (${bln_engaged}) /return - /if (${bln_petUseBuffs} && ${Me.Pet.ID} && !${timer_petBuffRecheck} && ${Me.Pet.Distance} < 100) { + /if (${bln_petUseBuffs} && ${Pet.ID} && !${timer_petBuffRecheck} && ${Me.Pet.Distance} < 100) { /declare i int local /for i 1 to ${int_petBuffTotal} /if (!${Me.PetBuff[${petBuff_${i}}]}) { @@ -58,7 +58,7 @@ Sub chkPetBuffs /next i /memspellset ${str_spellset} } - /if (${Target.ID}==${Me.Pet.ID}) /squelch /target clear + /if (${Target.ID}==${Pet.ID}) /squelch /target clear /if (!${timer_petBuffRecheck}) /varset timer_petBuffRecheck 30s @@ -76,18 +76,18 @@ Sub chkPetSpawn |--Destroy your familiar if it is up. Hates them precious /if (${bln_engaged}) /return - /if (${Me.Pet.ID} && ${Me.Pet.Name.Find[familiar]}) /pet get lost + /if (${Pet.ID} && ${Me.Pet.Name.Find[familiar]}) /pet get lost /if (${Me.Invis} || ${Me.Moving} || ${timer_petBuffRecheck}) /return |--Spawn your pet - /if (!${Me.Pet.ID} && ${bln_petUse}) { + /if (!${Pet.ID} && ${bln_petUse}) { /if ((${str_petReagent.Equal[NULL]}) || (${str_petReagent.NotEqual[NULL]} && ${FindItemCount[${str_petReagent}]} > 1)) { /if (!${Me.Standing}) /stand on /echo spawning pet ${str_petSpell} ${str_petGem} /if (${Me.AltAbility[Suspend Minion]}) /alt activate 176 /delay 5s !${Me.Casting.ID} - /delay 3s ${Me.Pet.ID} - /if (!${Me.Pet.ID}) { + /delay 3s ${Pet.ID} + /if (!${Pet.ID}) { /call chkSpellMemorized "${str_petSpell}" TRUE ${str_petGem} /call MQ2Cast "${str_petSpell}" ${str_petGem} 5s :castWait @@ -96,7 +96,7 @@ Sub chkPetSpawn } /delay 5s - /if (${Me.Pet.ID} && ${Me.AltAbility[Pet Discipline]}) /pet hold on + /if (${Pet.ID} && ${Me.AltAbility[Pet Discipline]}) /pet hold on /varset bln_petShrunk FALSE /delay 8s } else { @@ -105,12 +105,12 @@ Sub chkPetSpawn } } - /if (${Target.ID}==${Me.Pet.ID}) /squelch /target clear + /if (${Target.ID}==${Pet.ID}) /squelch /target clear /return Sub chkPetWeaps - /if (${bln_engaged} || !${Me.Pet.ID} || ${bln_petWeaponized}) /goto :return + /if (${bln_engaged} || !${Pet.ID} || ${bln_petWeaponized}) /goto :return |-- load 'petWeap' spell set /delay 3s @@ -118,11 +118,11 @@ Sub chkPetWeaps /delay 5s |-- Belt - /call SummonItemForPet "Summoned: ${str_petBelt}" "Summon ${str_petBelt}" ${Me.Pet.ID} + /call SummonItemForPet "Summoned: ${str_petBelt}" "Summon ${str_petBelt}" ${Pet.ID} |-- Weapon 1 - /call SummonItemForPet "Summoned: ${str_petWeap1}" "Summon ${str_petWeap1}" ${Me.Pet.ID} + /call SummonItemForPet "Summoned: ${str_petWeap1}" "Summon ${str_petWeap1}" ${Pet.ID} |-- Weapon 2 - /call SummonItemForPet "Summoned: ${str_petWeap2}" "Summon ${str_petWeap2}" ${Me.Pet.ID} + /call SummonItemForPet "Summoned: ${str_petWeap2}" "Summon ${str_petWeap2}" ${Pet.ID} /memspellset ${str_spellset} /autoinv @@ -199,7 +199,7 @@ Sub SummonItemForPet(string _itemName, string _spellName, int _petID) Sub ShrinkPet - /if (!${Me.Pet.ID}) /return + /if (!${Pet.ID}) /return /if (${bln_petShrunk}) /return /if (${str_petShrinker.Equal[NULL]}) /return /declare sc int local 1 @@ -233,7 +233,7 @@ Sub chkPetHeal Sub chkPetAttack /if (!${bln_engaged} || !${Target.PctHPs} ) /return - /if (${Me.Pet.ID} && !${Me.Pet.Combat} && ${Target.ID}==${int_targetID} && ${Target.PctHPs}<${int_petAttackHP} && ${Target.Distance}<=100) /squelch /pet attack + /if (${Pet.ID} && !${Me.Pet.Combat} && ${Target.ID}==${int_targetID} && ${Target.PctHPs}<${int_petAttackHP} && ${Target.Distance}<=100) /squelch /pet attack /return diff --git a/xiris_common/xiris_spell_routines.inc b/xiris_common/xiris_spell_routines.inc index a550cdc..350b0c7 100644 --- a/xiris_common/xiris_spell_routines.inc +++ b/xiris_common/xiris_spell_routines.inc @@ -134,6 +134,7 @@ Sub Events_SpellRoutines /doevents NotReady /doevents NoHold /doevents NoCharm + /call RunRapidEvents /return @@ -286,7 +287,7 @@ Sub MQ2Cast(string spellName,string spellType,timer giveUpTimer,string mySub,str /if (${Cast.Result.Equal[CAST_NOTREADY]}) /goto :CastEnd /if (${Cast.Result.Equal[CAST_NOCHARM]}) /goto :CastEnd /if ( !${interruptFlag} && ${mySub.Length} ) /call ${mySub} - + /call Events_SpellRoutines /goto :cast_spell_pending } else /if ( ${Cast.Result.Equal[CAST_RESIST]} ) { /if ( ( ${FindItem[${spellName}].ID} && ${giveUpTimer} && !${FindItem[${spellName}].Timer} ) || ( ${Spell[${spellName}].ID} && ${giveUpTimer} > ${Spell[${spellName}].RecoveryTime} ) ) /goto :cast_spell @@ -359,4 +360,8 @@ Sub Event_Recover Sub Event_NoCharm /if (${Defined[castReturn]}) /varset castReturn CAST_NOCHARM -/return \ No newline at end of file +/return + +Sub Event_Stunned + /if (${Defined[castReturn]}) /varset castReturn CAST_STUNNED +/return \ No newline at end of file