|------------------------------|
|---AUTO_WAR by Noobhaxor, ( @ )( @ ).
|-----Version: 1.0.3
|-----Update: 1-4-2018
#Event Buff "Your #1# spell has worn off of #*#."
#include auto_subs.inc
Sub Main
/doevents flush
/call AutoVersionCheck 6
/call VarSetup
/call ClassVarSetup
/call AliasSetup
/call SetupSpells
/if (${Cursor.ID}) /autoinventory
/rez spawn off
:mainloop
/if (${Me.Zoning}) /call Zoning
/if (${changetoini}==1) /call INIChanges
/if (${Cursor.ID}) /call BagModRods
/doevents
/call ClassMainLoop
/if (${Me.Hovering}) /call DeathSub
/if (${Spawn[${FollowToonName}].ID}&&!${MoveTo.Moving}) /call FollowToon
/if (!${Me.XTarget[1].ID}) /call AutoCampCheck
/goto :mainloop
/return
Sub ClassMainLoop
/if (!${Me.Combat}&&${Me.XTarget[1].ID}) /call FindTarget
/if ((${Target.ID}!=${autotargetid}||!${Target.ID}) &&${Me.XTarget[1].ID}) /call FindTarget
/if (${Target.ID}&&${Me.XTarget[1].ID}&&${Target.Distance}<60&&!${Me.Combat}) /squelch /attack on
/if (${Me.XTarget[1].ID}&&${Me.Combat}) /call EngageTarget
/if (${Me.XTarget[1].ID}) /call CheckAggro
/if (!${Me.Combat}&&!${Me.XTarget[1].ID}) /call DowntimeDiscs
/call SitCheck
/return
Sub ClassVarSetup
/declare meleemit string outer NULL
/declare missall string outer NULL
/declare absorball string outer NULL
/declare parryall string outer NULL
/declare shieldhit string outer NULL
/declare groupac string outer NULL
/declare groupdodge string outer NULL
/declare defenseac string outer NULL
/declare bmdisc string outer NULL
/declare aeroar string outer NULL
/declare aeselfbuff string outer NULL
/declare aehealhate string outer NULL
/declare aehitall string outer NULL
/declare taunt1 string outer NULL
/declare taunt2 string outer NULL
/declare endregen string outer NULL
/declare waraura string outer NULL
|-Set WAR Variables
/declare stayontarget int outer 0
/declare UseMelee int outer 1
|-Config Options
/call LoadIni General FollowToonName string "NULL"
/call LoadIni General UseFellowship int 0
/call LoadIni General InstantRelease int 0
/call LoadIni General ReturnToCamp int 0
/call LoadIni General AutoAssistAt int 100
/return
|----------------------------------------------------------------------------
| SUB: CheckAggro
|----------------------------------------------------------------------------
Sub CheckAggro
/declare i int local 1
/declare j int local 1
/declare badaggro int local 0
/declare badaggroid int local 0
/declare namecheckid int local 0
/declare lowhptarget int local 100
/declare lowhpid int local 0
|--XTarget Checks
/for i 1 to ${Me.XTarget}
|--XTarget Aggro Check
/if (${Me.XTarget[${i}].PctAggro}<100||${Me.XTarget[${i}].PctAggro}>100) {
/varcalc badaggro ${badaggro}+1
/varset badaggroid ${Me.XTarget[${i}].ID}
}
|--XTarget Low HP Check
/if (${Me.XTarget[${i}].PctHPs}<${lowhptarget}&&${Me.XTarget[${i}].Distance}<100) {
/varset lowhptarget ${Me.XTarget[${i}].PctHPs}
/varset lowhpid ${Me.XTarget[${i}].ID}
}
|--XTarget Named Check
/if (${Me.XTarget[${i}].Named} && ${Me.XTarget[${i}].Type.Equal[NPC]}&&${Me.XTarget[${i}].Distance}<100) /varset namecheckid ${Me.XTarget[${i}].ID}
/next i
/if (${badaggro}>0&&${stayontarget}!=1) {
/varset autotargetid ${badaggroid}
/if (${Target.ID}!=${autotargetid} && ${Spawn[id ${autotargetid} npc radius 100].ID}) /target id ${autotargetid}
/delay 5 ${Target.ID}==${autotargetid}
} else /if (${badaggro}==0 && ${Spawn[id ${namecheckid} npc radius 100].ID} && ${namecheckid}!=${Target.ID} && !${Target.Named} && ${namecheckid}==${lowhpid}) {
/varset autotargetid ${Spawn[id ${namecheckid} npc radius 100].ID}
/if (${Target.ID}!=${autotargetid} && ${Spawn[id ${namecheckid} npc radius 100].ID}) /target id ${autotargetid}
/delay 5 ${Target.ID}==${autotargetid}
} else /if (${Target.ID}!=${Me.GroupAssistTarget.ID} && ${Spawn[id ${Me.GroupAssistTarget.ID} npc radius 100].ID}) {
/varset autotargetid ${Me.GroupAssistTarget.ID}
/if (${Target.ID}!=${autotargetid} && ${Spawn[id ${autotargetid} npc radius 100].ID}) /target id ${autotargetid}
/delay 5 ${Target.ID}==${autotargetid}
} else {
/call FindTarget
}
|--Defensive setup
/if ((${SpawnCount[NPC radius 60 zradius 50]}>2||${Target.Named}) && ${Me.CombatAbilityReady[${meleemit}]} && (${Me.ActiveDisc.Name.Find[Defense]}||!${Me.ActiveDisc.ID})) {
/call DiscQueue "${meleemit}"
} else /if (${Me.PctHPs}<30 && ${Me.CombatAbilityReady[${absorball}]}) {
/call DiscNow "${absorball}"
} else /if ((${SpawnCount[NPC radius 60 zradius 50]}>2||${Target.Named}) && ${Me.CombatAbilityReady[${parryall}]} && (${Me.ActiveDisc.Name.Find[Defense]}||!${Me.ActiveDisc.ID})) {
/call DiscQueue "${parryall}"
} else /if ((${SpawnCount[NPC radius 60 zradius 50]}>3||${Target.Named}) && ${Me.CombatAbilityReady[${missall}]} && (${Me.ActiveDisc.Name.Find[Defense]}||!${Me.ActiveDisc.ID})) {
/call DiscQueue "${missall}"
} else /if ((${SpawnCount[NPC radius 60 zradius 50]}>2||${Target.Named}) && ${Me.CombatAbilityReady[${bmdisc}]} && ${Me.PctEndurance}>20) {
/docommand /disc 49000
/delay 8 !${Me.CombatAbilityReady[${bmdisc}]}
/echo Casting ${bmdisc}
} else /if ((${SpawnCount[NPC radius 60 zradius 50]}>2||${Target.Named}) && !${Me.Buff[Brace for Impact].ID} && ${Me.AltAbilityReady[Brace for Impact]}) {
/call AANow 1686
} else /if ((${SpawnCount[NPC radius 60 zradius 50]}>2||${Target.Named}) && !${Me.Buff[Brace for Impact].ID} && ${Me.AltAbilityReady[Warlord's Tenacity]}) {
/call AANow 300
} else /if ((${SpawnCount[NPC radius 60 zradius 50]}>1||${Target.Named}) && !${Me.Buff[Warlord's Tenacity].ID} && ${Me.AltAbilityReady[Imperator's Command]}) {
/call AANow 2011
} else /if ((${SpawnCount[NPC radius 60 zradius 50]}>1||${Target.Named}) && ${Me.CombatAbilityReady[${aehealhate}]} && !${Me.Buff[${aehealhate}].ID} && !${Me.Buff[${aeselfbuff}].ID} && ${Me.PctEndurance}>10) {
/call DiscNow "${aehealhate}"
} else /if ((${SpawnCount[NPC radius 60 zradius 50]}>1||${Target.Named}) && ${Me.CombatAbilityReady[${aeselfbuff}]} && !${Me.Buff[${aehealhate}].ID} && !${Me.Buff[${aeselfbuff}].ID} && ${Me.PctEndurance}>10) {
/call DiscNow "${aeselfbuff}"
} else /if (!${Me.ActiveDisc.ID} && ${Me.CombatAbilityReady[${defenseac}]} && ${SpawnCount[NPC radius 60 zradius 50]}>=1) {
/call DiscQueue "${defenseac}"
}
|--Aggro management
/if (${SpawnCount[NPC radius 60 zradius 50]}>1&&${badaggro}>0&&${Me.CombatAbilityReady[${aeroar}]}) {
/call DiscNow "${aeroar}"
} else /if (${SpawnCount[NPC radius 60 zradius 50]}>1&&${badaggro}>0&&${Me.CombatAbilityReady[${aehitall}]}) {
/call DiscNow "${aehitall}"
} else /if (${SpawnCount[NPC radius 60 zradius 50]}>1&&${badaggro}>0&&${Me.AltAbilityReady[Area Taunt]}) {
/call AANow 110
} else /if (${Me.AbilityReady[Taunt]}&&${badaggro}>0 && ${Target.Distance}<30) {
/call AbilityNow "Taunt"
} else /if (${Me.AltAbilityReady[Blast of Anger]} && ${Me.SecondaryPctAggro}>70 && ${Target.Distance}<80) {
/call AANow 3646
} else /if (${Me.CombatAbilityReady[${taunt1}]} && ${Me.SecondaryPctAggro}>70 && ${Me.Endurance}>500 && ${Target.Distance}<${Spell[${taunt1}].Range}) {
/call DiscNow "${taunt1}"
} else /if (${Me.CombatAbilityReady[${taunt2}]} && ${Me.SecondaryPctAggro}>70 && ${Me.Endurance}>500 && ${Target.Distance}<${Spell[${taunt2}].Range}) {
/call DiscNow "${taunt2}"
}
|--Reaction Discs
/if (${Me.CombatAbilityReady[${shieldhit}]} && ${Me.PctHPs}<70 && ${Me.Endurance}>500) {
/call DiscNow "${shieldhit}"
} else /if (${Me.AltAbilityReady[Battle Leap]} && !${Me.Song[Battle Leap].ID} && ${Target.Distance}<50) {
/call AANow 611
}
/return
|----------------------------------------------------------------------------
| SUB: DowntimeDiscs
|----------------------------------------------------------------------------
Sub DowntimeDiscs
|Out of Combat
/if (${Me.PctEndurance}>20&&${Group}&&${Me.CombatAbilityReady[${groupac}]}&&!${Me.Invis}&& !${Me.Sitting}&&!${Me.Combat}&&${Me.XTarget}==0&&!${Me.Song[Paragon].ID}) {
/call DiscNow "${groupac}"
} else /if (${Me.PctEndurance}>20&&${Group}&&${Me.CombatAbilityReady[${groupdodge}]}&&!${Me.Invis}&& !${Me.Sitting}&&!${Me.Combat}&&${Me.XTarget}==0&&!${Me.Song[Commanding Voice].ID}) {
/call DiscNow "${groupdodge}"
} else /if (${Me.PctEndurance}<21 && ${Me.Endurance}>313 && ${Me.CombatAbilityReady[${endregen}]} && !${Me.CombatState.Equal[combat]} && !${Me.Invis}) {
/call DiscQueue "${endregen}"
} else /if (!${Spell[${Me.Aura[1]}].ID} && !${Me.Moving} && !${Me.Invis} && ${Me.State.NotEqual[FEIGN]} && ${Me.CombatAbility[${Spell[${waraura}].RankName}]}&& ${Me.PctEndurance}>10) {
/call DiscNow "${waraura}"
}
/return
|----------------------------------------------------------------------------
| SUB: SetupSpells
|----------------------------------------------------------------------------
Sub SetupSpells
|--One off discs
/if (${Me.Level}>=106 && ${Me.CombatAbility[${Spell[Dissident Shield].RankName}]}) /varset bmdisc ${Spell[Dissident Shield].RankName}
/if (${Me.Level}>=59 && ${Me.CombatAbility[${Spell[Fortitude Discipline].RankName}]}) /varset missall ${Spell[Fortitude Discipline].RankName}
/if (${Me.Level}>=102 && ${Me.CombatAbility[${Spell[Pain Doesn't Hurt].RankName}]}) /varset absorball ${Spell[Pain Doesn't Hurt].RankName}
/if (${Me.Level}>=87 && ${Me.CombatAbility[${Spell[Flash of Anger].RankName}]}) /varset parryall ${Spell[Flash of Anger].RankName}
/if (${Me.Level}>=99 && ${Me.CombatAbility[${Spell[Wade in to Battle].RankName}]}) /varset aeselfbuff ${Spell[Wade in to Battle].RankName}
/if (${Me.Level}>=107 && ${Me.CombatAbility[${Spell[Concordant Expanse].RankName}]}) /varset aehealhate ${Spell[Concordant Expanse].RankName}
/if (${Me.Level}>=68 && ${Me.CombatAbility[${Spell[Commanding Voice].RankName}]}) /varset groupdodge ${Spell[Commanding Voice].RankName}
|---Melee Mitigation Disc
/if (${Me.Level}>=108 && ${Me.CombatAbility[${Spell[Culminating Stand Discipline].RankName}]}) {
/varset meleemit ${Spell[Culminating Stand Discipline].RankName}
} else /if (${Me.Level}>=98 && ${Me.CombatAbility[${Spell[Last Stand Discipline].RankName}]}) {
/varset meleemit ${Spell[Last Stand Discipline].RankName}
} else /if (${Me.Level}>=72 && ${Me.CombatAbility[${Spell[Final Stand Discipline].RankName}]}) {
/varset meleemit ${Spell[Final Stand Discipline].RankName}
} else /if (${Me.Level}>=65 && ${Me.CombatAbility[${Spell[Stonewall Discipline].RankName}]}) {
/varset meleemit ${Spell[Stonewall Discipline].RankName}
} else /if (${Me.Level}>=55 && ${Me.CombatAbility[${Spell[Defensive Discipline].RankName}]}) {
/varset meleemit ${Spell[Defensive Discipline].RankName}
}
|---Defense AC Disc
/if (${Me.Level}>=115 && ${Me.CombatAbility[${Spell[Courageous Defense].RankName}]}) {
/varset defenseac ${Spell[Courageous Defense].RankName}
} else /if (${Me.Level}>=110 && ${Me.CombatAbility[${Spell[Resolute Defense].RankName}]}) {
/varset defenseac ${Spell[Resolute Defense].RankName}
} else /if (${Me.Level}>=105 && ${Me.CombatAbility[${Spell[Stout Defense].RankName}]}) {
/varset defenseac ${Spell[Stout Defense].RankName}
} else /if (${Me.Level}>=100 && ${Me.CombatAbility[${Spell[Steadfast Defense].RankName}]}) {
/varset defenseac ${Spell[Steadfast Defense].RankName}
} else /if (${Me.Level}>=95 && ${Me.CombatAbility[${Spell[Stalwart Defense].RankName}]}) {
/varset defenseac ${Spell[Stalwart Defense].RankName}
} else /if (${Me.Level}>=90 && ${Me.CombatAbility[${Spell[Staunch Defense].RankName}]}) {
/varset defenseac ${Spell[Staunch Defense].RankName}
} else /if (${Me.Level}>=85 && ${Me.CombatAbility[${Spell[Bracing Defense].RankName}]}) {
/varset defenseac ${Spell[Bracing Defense].RankName}
}
|---Group AC Disc
/if (${Me.Level}>=115 && ${Me.CombatAbility[${Spell[Paragon Champion].RankName}]}) {
/varset groupac ${Spell[Paragon Champion].RankName}
} else /if (${Me.Level}>=110 && ${Me.CombatAbility[${Spell[Field Champion].RankName}]}) {
/varset groupac ${Spell[Field Champion].RankName}
} else /if (${Me.Level}>=105 && ${Me.CombatAbility[${Spell[Field Protector].RankName}]}) {
/varset groupac ${Spell[Field Protector].RankName}
} else /if (${Me.Level}>=100 && ${Me.CombatAbility[${Spell[Field Guardian].RankName}]}) {
/varset groupac ${Spell[Field Guardian].RankName}
} else /if (${Me.Level}>=95 && ${Me.CombatAbility[${Spell[Field Defender].RankName}]}) {
/varset groupac ${Spell[Field Defender].RankName}
} else /if (${Me.Level}>=90 && ${Me.CombatAbility[${Spell[Field Outfitter].RankName}]}) {
/varset groupac ${Spell[Field Outfitter].RankName}
} else /if (${Me.Level}>=85 && ${Me.CombatAbility[${Spell[Field Armorer].RankName}]}) {
/varset groupac ${Spell[Field Armorer].RankName}
}
|---Taunt1
/if (${Me.Level}>=101 && ${Me.CombatAbility[${Spell[Cyclone Roar].RankName}]}) {
/varset taunt1 ${Spell[Cyclone Roar].RankName}
} else /if (${Me.Level}>=96 && ${Me.CombatAbility[${Spell[Krondal's Roar].RankName}]}) {
/varset taunt1 ${Spell[Krondal's Roar].RankName}
} else /if (${Me.Level}>=91 && ${Me.CombatAbility[${Spell[Grendlaen Roar].RankName}]}) {
/varset taunt1 ${Spell[Grendlaen Roar].RankName}
} else /if (${Me.Level}>=86 && ${Me.CombatAbility[${Spell[Bazu Roar].RankName}]}) {
/varset taunt1 ${Spell[Bazu Roar].RankName}
} else /if (${Me.Level}>=81 && ${Me.CombatAbility[${Spell[Bazu Bluster].RankName}]}) {
/varset taunt1 ${Spell[Bazu Bluster].RankName}
} else /if (${Me.Level}>=65 && ${Me.CombatAbility[${Spell[Ancient Chaos Cry].RankName}]}) {
/varset taunt1 ${Spell[Ancient Chaos Cry].RankName}
} else /if (${Me.Level}>=65 && ${Me.CombatAbility[${Spell[Bellow of the Mastruq].RankName}]}) {
/varset taunt1 ${Spell[Bellow of the Mastruq].RankName}
} else /if (${Me.Level}>=63 && ${Me.CombatAbility[${Spell[Incite].RankName}]}) {
/varset taunt1 ${Spell[Incite].RankName}
} else /if (${Me.Level}>=56 && ${Me.CombatAbility[${Spell[Berate].RankName}]}) {
/varset taunt1 ${Spell[Berate].RankName}
} else /if (${Me.Level}>=52 && ${Me.CombatAbility[${Spell[Bellow].RankName}]}) {
/varset taunt1 ${Spell[Bellow].RankName}
} else /if (${Me.Level}>=20 && ${Me.CombatAbility[${Spell[Provoke].RankName}]}) {
/varset taunt1 ${Spell[Provoke].RankName}
}
|---AE Taunt
/if (${Me.Level}>=93 && ${Me.CombatAbility[${Spell[Roar of Challenge].RankName}]}) {
/varset aeroar ${Spell[Roar of Challenge].RankName}
} else /if (${Me.Level}>=88 && ${Me.CombatAbility[${Spell[Rallying Roar].RankName}]}) {
/varset aeroar ${Spell[Rallying Roar].RankName}
}
|---Taunt2
/if (${Me.Level}>=108 && ${Me.CombatAbility[${Spell[Burning Shout].RankName}]}) {
/varset taunt2 ${Spell[Burning Shout].RankName}
} else /if (${Me.Level}>=103 && ${Me.CombatAbility[${Spell[Tormenting Shout].RankName}]}) {
/varset taunt2 ${Spell[Tormenting Shout].RankName}
} else /if (${Me.Level}>=103 && ${Me.CombatAbility[${Spell[Tormenting Shout].RankName}]}) {
/varset taunt2 ${Spell[Tormenting Shout].RankName}
} else /if (${Me.Level}>=98 && ${Me.CombatAbility[${Spell[Harassing Shout].RankName}]}) {
/varset taunt2 ${Spell[Harassing Shout].RankName}
}
|---AE Hit all
/if (${Me.Level}>=114 && ${Me.CombatAbility[${Spell[Tempest Blades].RankName}]}) {
} else /if (${Me.Level}>=109 && ${Me.CombatAbility[${Spell[Dragonstrike Blades].RankName}]}) {
/varset aehitall ${Spell[Dragonstrike Blades].RankName}
} else /if (${Me.Level}>=104 && ${Me.CombatAbility[${Spell[Stormstrike Blades].RankName}]}) {
/varset aehitall ${Spell[Stormstrike Blades].RankName}
} else /if (${Me.Level}>=99 && ${Me.CombatAbility[${Spell[Stormwheel Blades].RankName}]}) {
/varset aehitall ${Spell[Stormwheel Blades].RankName}
} else /if (${Me.Level}>=94 && ${Me.CombatAbility[${Spell[Cyclonic Blades].RankName}]}) {
/varset aehitall ${Spell[Cyclonic Blades].RankName}
} else /if (${Me.Level}>=89 && ${Me.CombatAbility[${Spell[Wheeling Blades].RankName}]}) {
/varset aehitall ${Spell[Wheeling Blades].RankName}
} else /if (${Me.Level}>=84 && ${Me.CombatAbility[${Spell[Maelstrom Blade].RankName}]}) {
/varset aehitall ${Spell[Maelstrom Blade].RankName}
} else /if (${Me.Level}>=79 && ${Me.CombatAbility[${Spell[Whorl Blade].RankName}]}) {
/varset aehitall ${Spell[Whorl Blade].RankName}
} else /if (${Me.Level}>=74 && ${Me.CombatAbility[${Spell[Vortex Blade].RankName}]}) {
/varset aehitall ${Spell[Vortex Blade].RankName}
} else /if (${Me.Level}>=69 && ${Me.CombatAbility[${Spell[Cyclone Blade].RankName}]}) {
/varset aehitall ${Spell[Cyclone Blade].RankName}
} else /if (${Me.Level}>=61 && ${Me.CombatAbility[${Spell[Whirlwind Blade].RankName}]}) {
/varset aehitall ${Spell[Whirlwind Blade].RankName}
}
|--- Shield Hit and Block
/if (${Me.Level}>=110 && ${Me.CombatAbility[${Spell[Shield Sunder].RankName}]}) {
/varset shieldhit ${Spell[Shield Sunder].RankName}
} else /if (${Me.Level}>=104 && ${Me.CombatAbility[${Spell[Shield Break].RankName}]}) {
/varset shieldhit ${Spell[Shield Break].RankName}
} else /if (${Me.Level}>=83 && ${Me.CombatAbility[${Spell[Shield Topple].RankName}]}) {
/varset shieldhit ${Spell[Shield Topple].RankName}
}
|---Fast Endurance regen
/if (${Me.Level}>=111 && ${Me.CombatAbility[${Spell[Relax].RankName}]}) {
} else /if (${Me.Level}>=106 && ${Me.CombatAbility[${Spell[Hiatus].RankName}]}) {
/varset endregen ${Spell[Hiatus].RankName}
} else /if (${Me.Level}>=101 && ${Me.CombatAbility[${Spell[Breather].RankName}]}) {
/varset endregen ${Spell[Breather].RankName}
} else /if (${Me.Level}>=96 && ${Me.CombatAbility[${Spell[Rest].RankName}]}) {
/varset endregen ${Spell[Rest].RankName}
} else /if (${Me.Level}>=91 && ${Me.CombatAbility[${Spell[Reprieve].RankName}]}) {
/varset endregen ${Spell[Reprieve].RankName}
} else /if (${Me.Level}>=86 && ${Me.CombatAbility[${Spell[Respite].RankName}]}) {
/varset endregen ${Spell[Respite].RankName}
} else /if (${Me.Level}>=82 && ${Me.CombatAbility[${Spell[Fourth Wind].RankName}]}) {
/varset endregen ${Spell[Fourth Wind].RankName}
} else /if (${Me.Level}>=77 && ${Me.CombatAbility[${Spell[Third Wind].RankName}]}) {
/varset endregen ${Spell[Third Wind].RankName}
} else /if (${Me.Level}>=72 && ${Me.CombatAbility[${Spell[Second Wind].RankName}]}) {
/varset endregen ${Spell[Second Wind].RankName}
}
|---Aura usage
/if (${Me.Level}>=70 && ${Me.CombatAbility[${Spell[Champion's Aura].RankName}]}) {
/varset waraura ${Spell[Champion's Aura].RankName}
} else /if (${Me.Level}>=55 && ${Me.CombatAbility[${Spell[Myrmidon's Aura].RankName}]}) {
/varset waraura ${Spell[Myrmidon's Aura].RankName}
}
/return
|----------------------------------------------------------------------------
| SUB: INIChanges
|----------------------------------------------------------------------------
Sub INIChanges
/varset changetoini 0
/call SetIni General FollowToonName string "${FollowToonName}"
/call SetIni General UseFellowship int ${UseFellowship}
/call SetIni General InstantRelease int ${InstantRelease}
/call SetIni General ReturnToCamp int ${ReturnToCamp}
/return