It assumes the druid has 9 spell slots.
Druid will heal Group MA and hiself. Will nuke or dot , Keep regen ds and hp buffs on grp and self. Will port to all ports if asked.
Has a built in help
o well here goes.. try it tell me what u think even if it sucks
Code: Select all
|SirCheese
|Druid Bot 1.1 - Nov 10 2004 -
|----[ ]----
|Usage: Target the MA
| /Mac Druid (% to assist) (Number of Dots or Nukes)
|----[ ]----
|Description: Set Your Spells, Look over Variable Changes. Decide if you want Nukes, Dots, Type of Heals, When to heal Etc.
| Druid will do up to 2 Dots and continously refresh as they ware off. Will Nuke whatever amout desired.
| Will Heal the entire group.
| Druid Will keep grp buffs always on grp once they are on.
| Druid will always keep himself or herself Self Buffed
| Druid Will Sit to med Automaticly. When Mob is near it will stand or when its mana is good.
| For Chat activated Commands /tell *Druid* Druid Help
| For Chat Activated Druid Ports /tell *Druid* Druid Port Help
|
|----[ ]----
| Add This: ( ) Auto Spells, ( ) Announce when Below 10 Mana,
|----[ ]----
| Things To Fix: ( ) Stop Nuking When Lom,
|----[ ]----
| Things I would like to add: ( ) Snare, ( ) Auto Group Cure When Neg Effect, ( ) Loot Mobs, ( ) Wait 4 Rez, ( ) Auto Trade
|-----------------------------------------------------------------------------------------------------------------------------
|----------
| Includes
|----------
#include spell_routines.inc
|----------
| Chats
|----------
#chat group
#chat chat
#chat tell
|----------
| Events
|----------
#Event MagicDotOff "#*#Swarming Death spell has worn off#*#"
#Event FireDotOff "#*#Vengeance of Tunare spell has worn off#*#"
#Event Invited "#*#To join the group, click on the 'FOLLOW' option, or 'DISBAND' to cancel#*#"
|----------
| Main Sub
|----------
Sub Main
|-----------------------------------------------------------------------------------------------------------------------------
| --- Make Your Changes Here ---
|-----------------------------------------------------------------------------------------------------------------------------
|---------------
| Declare Spells
|---------------
|-- Fast Heal --
/declare SpellFastHeal string outer Nature's Infusion
/declare SpellFastHealRange int outer 200
|-- Complete Heal --
/declare SpellCompHeal string outer Karana's Renewal
/declare SpellCompHealRange int outer 100
|-- Cold DD --
/declare SpellColdDD string outer Winter's Frost
/declare SpellColdDDRange int outer 200
|-- Fire DD --
/declare SpellFireDD string outer Sylvan Fire
/declare SpellFireDDRange int outer 200
|-- Fire DOT --
/declare SpellFireDOT string outer Vengeance of Tunare
/declare SpellFireDOTange int outer 200
|-- Magic DOT --
/declare SpellMagicDOT string outer Orb of Clinging Death
/declare SpellMagicDOTRange int outer 250
|-- Snare Spell --
/declare SpellSnare string outer Ensnare
/declare SpellSnareRange int outer 2000
|-- Group HP Buff --
/declare SpellGroupHPBuff string outer Blessing of the Nine
/declare SpellGroupHPBuffRange int outer 100
|-- Single HP Buff --
/declare SpellSingleHPBuff string outer Steeloak Skin
/declare SpellSingleHPBuffRange int outer 100
|-- Self Mana Regen --
/declare SpellSelfManaRegen string outer Mask of the Forest
|-- Single HP Regen Buff --
/declare SpellSingleHPRegenBuff string outer Replenishment
/declare SpellSingleHPRegenBuffRange int outer 100
|-- Group HP Regen Buff --
/declare SpellGroupHPRegenBuff string outer Blessing of Oak
/declare SpellGroupHPRegenBuffRange int outer 60
|-- Single DS Buff --
/declare SpellSingleDSBuff string outer Shield of Bracken
/declare SpellSingleDSBuffRange int outer 100
|-- Group DS Buff --
/declare SpellGroupDSBuff string outer Circle of Nettles
/declare SpellGroupDSBuffRange int outer 100
|-- Single Outdoors Run Buff --
/declare SpellSingleORunBuff string outer Spirit of Eagle
/declare SpellSingleORunBuffRange int outer 100
|-- Group Outdoors Run Buff --
/declare SpellGroupORunBuff string outer Flight of Eagles
/declare SpellGroupORunBuffRange int outer 100
|-- Mount Item --
/declare Mount string outer White Ornate Chain Bridle
|-----------------------
| Variables Changeable
|-----------------------
|--- Use CH or Fast Heal (1= Complete Heal) (0= Fast Heal) (Adjust TankHeal Appropriatly) ---
/declare TankHealType int outer 0
|--- What Percent to heal the MA ---
/declare TankHeal int outer 57
|--- Use Dots or Nukes (1= Dots) (0= DD) ---
/declare DOTSorDD int outer 0
|--- Use Fire od Cold Nukes? (1= Fire) (0= Cold) ---
/declare NukeType int outer 1
|--- What Percent to heal Casters ---
/declare HealCasterAT int outer 70
|--- What Percet to heal Mele Class ---
/declare MeleeHeals int outer 60
|--- What Percent to heal the Myself ---
/declare SelfHeal int outer 70
|--- At what % Mana to stop Nuking / Doting ---
/declare StopNukeMana int outer 30
|--- Auto Sit or Not (1=Sit) (0=No) ---
/declare autosit int outer 1
|-----------------------
| Declare Chat Channels
|-----------------------
/declare mychannel string outer mychannel:password
|-----------------------------------------------------------------------------------------------------------------------------
| --- Do Not Edit Past this Line ---
|-----------------------------------------------------------------------------------------------------------------------------
|------------------------
| Set Character to Start
|------------------------
/tgb on
/assist off
/join ${mychannel}
|---------------------------------------
| Events Not Looped but done on start
|---------------------------------------
/call DefaultSpells
|------------------------
| Variable Sets
|------------------------
/declare MainAssist string outer ${Target}
/declare AssistAt int outer ${Param0}
/declare NukeAmount int outer ${Param1}
/declare TimesNuked outer
/varset TimesNuked 0
/declare GotTarget outer
/varset GotTarget 0
/declare CurrentMobID int local
/declare UseThisNuke outer
/declare ADot outer
/varset ADot 0
/declare BDot outer
/varset BDot 0
/declare Snared outer
/varset Snared 0
/declare distancetosit int outer 40
/declare following int outer 0
/declare follname string outer NULL
/if (${NukeType}==1) {
/varset UseThisNuke ${SpellFireDD}
}
/if (${NukeType}==0) {
/varset UseThisNuke ${SpellColdDD}
}
/if (${DOTSorDD}==1) {
/if (${NukeAmount}>2) {
/varset NukeAmount 2
}
}
|------------------------
| Announce Start
|------------------------
/if (${DOTSorDD}==0 && ${TankHealType}==0) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellFastHeal} at ${TankHeal}%. Casting ${UseThisNuke} ${NukeAmount} times at ${AssistAt}%.
}
/if (${DOTSorDD}==0 && ${TankHealType}==1) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellCompHeal} at ${TankHeal}%. Casting ${UseThisNuke} ${NukeAmount} times at ${AssistAt}%.
}
/if (${DOTSorDD}==1 && ${NukeAmount}==1 && ${TankHealType}==0) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellFastHeal} at ${TankHeal}%. Casting ${SpellMagicDOT} at ${AssistAt}%.
}
/if (${DOTSorDD}==1 && ${NukeAmount}==1 && ${TankHealType}==1) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellCompHeal} at ${TankHeal}%. Casting ${SpellMagicDOT} at ${AssistAt}%.
}
/if (${DOTSorDD}==1 && ${NukeAmount}==2 && ${TankHealType}==0) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellFastHeal} at ${TankHeal}%. Casting ${SpellMagicDOT} and ${SpellFireDOT} at ${AssistAt}%.
}
/if (${DOTSorDD}==1 && ${NukeAmount}==2 && ${TankHealType}==1) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellCompHeal} at ${TankHeal}%. Casting ${SpellMagicDOT} and ${SpellFireDOT} at ${AssistAt}%.
}
|-----------------------------------------------------------------------------------------------------------------------------
| Main Loop
|-----------------------------------------------------------------------------------------------------------------------------
:MainLoop
/delay 1s
/doevents
/call KeepHeal
/call GetTarget
/call CheckBuffs
|------------------
| Auto Sit
|------------------
/if ((${autosit}==1)&&(${Me.PctMana}<=90)&&(!${Me.Casting.ID})) {
/if ((${Bool[${Me.Standing}]})&&(${NearestSpawn[NPC].Distance}>=${Math.Calc[${NearestSpawn[NPC].MaxRange}+${distancetosit}]})&&(${Me.PctHPs}>90)) /sit
/if ((${Bool[${Me.Sitting}]})&&(!${Window[SpellBookWnd].Open})&&(${NearestSpawn[NPC].Distance}<=${Math.Calc[${NearestSpawn[NPC].MaxRange}+${Math.Calc[${distancetosit}/3]}]})) /stand
}
/if ((${autosit}==1)&&(${Me.PctMana}>90)) {
/if ((${Bool[${Me.Sitting}]})&&(!${Window[SpellBookWnd].Open})) /stand
}
|------------------
| Wait To Attack
|------------------
/if (${Target.PctHPs}<=${AssistAt} && ${Target.Type.Equal["NPC"]} && ${Target.Distance}<175 && !${Me.Moving} && !${Me.Casting.ID} && !${String[${Target}].Find["NULL"]}>0) {
/if (${GotTarget}==0) {
/doevents
/delay 5
/varset CurrentMobID ${Target.ID}
/popup Target Aquired >> ${Target.CleanName} <<
/echo Target Aquired >> ${Target.CleanName} <<
/varset GotTarget 1
/goto :StartCombat
}
} else {
/goto :MainLoop
|------------------
| Start Combat
|------------------
:StartCombat
/doevents
/call KeepHeal
/goto :WaitDead
|---------------------
| Wait for mod to die
|---------------------
:waitDead
/doevents
/if (${Spawn[${CurrentMobID}].Type.Equal[NPC]}) {
/call KeepHeal
/if (${DOTSorDD}==0) {
/call NukeCycle
}
/if (${DOTSorDD}==1) {
/call DoDamageOT
}
/goto :WaitDead
} Else {
/doevents
/echo Mob has Died, We Win EQ!
/varset GotTarget 0
/varset TimesNuked 0
/varset ADot 0
/varset BDot 0
/varset Snared 0
/goto :MainLoop
}
/goto :MainLoop
/return
|-----------------------------------------------------------------------------------------------------------------------------
| --- END MAIN LOOP ---
|-----------------------------------------------------------------------------------------------------------------------------
|------------------
| Heal MA
|------------------
Sub KeepHeal
/call HealGroup
/call HealMyself
/return
|------------------
| Heal Group
|------------------
Sub HealGroup
/declare i int local 1
/for i 1 to ${Group}
/if (${Group[${i}].Name.Equal[${MainAssist}]} && ${Group[${i}].PctHPs}<=${TankHeal}) {
/target pc ${Group[${i}]}
/if (${TankHealType}==0) {
/if (${Me.CurrentMana}<${Spell[${SpellFastHeal}].Mana}) {
/echo Not Enuf Mana to Heal ${Group[${i}]}
} else /if (${Target.Distance}<=100) {
/gsay ${SpellFastHeal} on >> %T <<
/call cast "${SpellFastHeal}" gem2 4s
}
}
/if (${TankHealType}==1) {
/if (${Me.CurrentMana}<${Spell[${SpellCompHeal}].Mana}) {
/echo Not Enuf Mana to Heal ${Group[${i}]}
} else /if (${Target.Distance}<=100) {
/gsay ${SpellCompHeal} on >> %T <<
/call cast "${SpellCompHeal}" gem2 4s
}
}
}
/if (${Group[${i}].Class.Name.Equal[Cleric]} || ${Group[${i}].Class.Name.Equal[Druid]} || ${Group[${i}].Class.Name.Equal[Wizard]} || ${Group[${i}].Class.Name.Equal[Magician]} || ${Group[${i}].Class.Name.Equal[Necromancer]} || ${Group[${i}].Class.Name.Equal[Shaman]} || ${Group[${i}].Class.Name.Equal[Enchanter]}) /if (${Group[${i}].PctHPs}<=${HealCasterAT}) {
/target pc ${Group[${i}]}
/if (${Me.CurrentMana}<${Spell[${SpellFastHeal}].Mana}) {
/echo Not Enuf Mana to Heal ${Group[${i}]}
} else /if (${Target.Distance}<=100) {
/gsay ${SpellFastHeal} on >> %T <<
/call cast "${SpellFastHeal}"
}
}
/if (${Group[${i}].Class.Name.Equal[Warrior]} || ${Group[${i}].Class.Name.Equal[Monk]} || ${Group[${i}].Class.Name.Equal[Rouge]} || ${Group[${i}].Class.Name.Equal[Ranger]} || ${Group[${i}].Class.Name.Equal[Beast]} || ${Group[${i}].Class.Name.Equal[Shadow Knight]} || ${Group[${i}].Class.Name.Equal[Paladin]}) /if (${Group[${i}].PctHPs}<=${MeleeHeals} && ${Group[${i}].Name.NotEqual[${MainAssist}]}) {
/target pc ${Group[${i}]}
/if (${Me.CurrentMana}<${Spell[${SpellCompHeal}].Mana}) {
/echo Not Enuf Mana to Heal ${Group[${i}]}
} else /if (${Target.Distance}<=100) {
/gsay ${SpellCompHeal} on >> %T <<
/call cast "${SpellCompHeal}"
}
}
/next i
/return
|------------------
| Heal Myself
|------------------
Sub HealMyself
/if (${Me.PctHPs}>${SelfHeal}) /return
/if (${Me.PctHPs}<=${SelfHeal}) {
/target Myself
/gsay ${SpellFastHeal} on >> %T <<
/call cast "${SpellFastHeal}" gem2
}
/return
|------------------
| Get A Target
|------------------
Sub GetTarget
:Target
/if (${Me.Casting.ID}) /return
/if (${Me.Moving}) /return
/if (${Spawn[${MainAssist}].ID}) {
/assist ${MainAssist}
} else {
/echo ${MainAssist} Is not in the Zone!
/delay 20s
}
/delay 1
/return
|------------------
| Nuke Cycle
|------------------
Sub NukeCycle
:NukeCycleLoop
|/if (${Me.PctMana}<=90) {
/if (${TimesNuked}<${NukeAmount}) {
/call KeepHeal
/assist ${MainAssist}
/delay 1
/call cast "${UseThisNuke}"
/varcalc TimesNuked ${TimesNuked} + 1
/delay 1s
/call KeepHeal
/delay 1s
/call KeepHeal
/delay 1s
/call KeepHeal
/delay 1s
/call KeepHeal
/delay 1s
/call KeepHeal
/goto :NukeCycleLoop
}
|}
/return
|--------------------
| Do Dots
|--------------------
Sub DoDamageOT
/call KeepHeal
/if (${NukeAmount}==1) {
/call OneDot
}
/if (${NukeAmount}==2) {
/call TwoDot
}
/return
|--------------------
| One Dot
|--------------------
Sub OneDot
/if (${ADot}==0) {
:DOT1Loop
/call KeepHeal
/assist ${MainAssist}
/if (${SpellMagicDOT}==Swarming Death) {
/if (${FindItem[Orb of Clinging Death].ID}) /call Cast "Orb of Clinging Death" item
/if (!${FindItem[Orb of Clinging Death].ID}) /call Cast "${SpellMagicDOT}"
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DOT1Loop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/gsay >> %t << Resisted ${SpellMagicDOT} Trying Again!
/delay 1s
/goto :DOT1Loop
}
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/varset ADot 1
}
} Else {
/call Cast "${SpellMagicDOT}"
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DOT1Loop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/gsay >> %t << Resisted ${SpellMagicDOT} Trying Again!
/delay 1s
/goto :DOT1Loop
}
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/varset ADot 1
}
}
/return
|--------------------
| Two Dots
|--------------------
Sub TwoDot
/if (${ADot}==0) {
:DOT2aLoop
/call KeepHeal
/assist ${MainAssist}
/call cast "${SpellMagicDOT}" item
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DOT2aLoop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/gsay >> %t << Resisted ${SpellMagicDOT} Trying Again!
/delay 4s
/goto :DOT2aLoop
}
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/varset ADot 1
}
}
/delay 7s
/if (${BDot}==0) {
:DOT2bLoop
/call KeepHeal
/assist ${MainAssist}
/call cast "${SpellFireDOT}"
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DOT2bLoop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/gsay >> %t << Resisted ${SpellFireDOT} Trying Again!
/delay 4s
/goto :DOT2bLoop
}
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/varset BDot 1
}
}
/return
|------------------
| Check Buffs
|------------------
Sub CheckBuffs
|-- Self Regen buff on at All Times --
/if (!${Me.Buff[${SpellSelfManaRegen}].ID}) {
/if ( !${Me.Gem["${SpellSelfManaRegen}"]} ) {
/memspell 9 "${SpellSelfManaRegen}"
/delay 22
}
/delay 10
/call cast "${SpellSelfManaRegen}"
}
|-- DS on at all times --
/if (!${Me.Buff[Circle of Fireskin].ID} && !${Me.Buff[Fireskin].ID} && !${Me.Buff[${SpellSingleDSBuff}].ID} && !${Me.Buff[${SpellGroupDSBuff}].ID}) {
/if ( !${Me.Gem["${SpellGroupDSBuff}"]} ) {
/memspell 9 "${SpellGroupDSBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellGroupDSBuff}"
}
|-- Keep a HP Buff On --
/if (!${Me.Buff[Hand of Conviction].ID} && !${Me.Buff[Conviction].ID} && !${Me.Buff[Hand of Virtue].ID} && !${Me.Buff[Virtue].ID} && !${Me.Buff[${SpellGroupHPBuff}].ID} && !${Me.Buff[${SpellSingleHPBuff}].ID}) {
/if ( !${Me.Gem["${SpellSingleHPBuff}"]} ) {
/memspell 9 "${SpellSingleHPBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellSingleHPBuff}"
}
|-- Keep a Regen on --
/if (!${Me.Buff[Talisman of Perseverance].ID} && !${Me.Buff[Spirit of Perseverance].ID} && !${Me.Buff[${SpellSingleHPRegenBuff}].ID} && !${Me.Buff[${SpellGroupHPRegenBuff}].ID}) {
/if ( !${Me.Gem["${SpellGroupHPRegenBuff}}"]} ) {
/memspell 9 "${SpellGroupHPRegenBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellGroupHPRegenBuff}"
}
|-- Refresh Mask --
/if (${Me.Buff[${SpellSelfManaRegen}].ID}) {
/if (${Me.Buff[${SpellSelfManaRegen}].Duration}<20) {
/if ( !${Me.Gem["${SpellSelfManaRegen}"]} ) {
/memspell 9 "${SpellSelfManaRegen}"
/delay 22
}
/delay 10
/call cast "${SpellSelfManaRegen}"
}
}
|-- Refresh Group 9 --
/if (${Me.Buff[${SpellGroupHPBuff}].ID}) {
/if (${Me.Buff[${SpellGroupHPBuff}].Duration}<20) {
/if ( !${Me.Gem["${SpellGroupHPBuff}"]} ) {
/memspell 9 "${SpellGroupHPBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellGroupHPBuff}"
}
}
|-- Refresh Single HP Buff --
/if (${Me.Buff[${SpellSingleHPBuff}].ID}) {
/if (${Me.Buff[${SpellSingleHPBuff}].Duration}<20) {
/if ( !${Me.Gem["${SpellSingleHPBuff}"]}) {
/memspell 9 "${SpellSingleHPBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellSingleHPBuff}"
}
}
|-- Refresh Single Regen --
/if (${Me.Buff[${SpellSingleHPRegenBuff}].ID}) {
/if (${Me.Buff[${SpellSingleHPRegenBuff}].Duration}<20) {
/if ( !${Me.Gem["${SpellSingleHPRegenBuff}}"]}) {
/memspell 9 "${SpellSingleHPRegenBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellSingleHPRegenBuff}"
}
}
|-- Refresh Group Regen --
/if (${Me.Buff[${SpellGroupHPRegenBuff}].ID}) {
/if (${Me.Buff[${SpellGroupHPRegenBuff}].Duration}<20) {
/if ( !${Me.Gem["${SpellGroupHPRegenBuff}"]}) {
/memspell 9 "${SpellGroupHPRegenBuff}"
/delay 28
}
/delay 22
/target myself
/call cast "${SpellGroupHPRegenBuff}"
}
}
|-- Refresh Single DS --
/if (${Me.Buff[${SpellSingleDSBuff}].ID}) {
/if (${Me.Buff[${SpellSingleDSBuff}].Duration}<20) {
/if ( !${Me.Gem["${SpellSingleDSBuff}) {
/memspell 9 "${SpellSingleDSBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellSingleDSBuff}"
}
}
|-- Refresh Group DS --
/if (${Me.Buff[${SpellGroupDSBuff}].ID}) {
/if (${Me.Buff[${SpellGroupDSBuff}].Duration}<20) {
/if ( !${Me.Gem["${SpellGroupDSBuff}"]}) {
/memspell 9 "${SpellGroupDSBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellGroupDSBuff}"
}
}
|-- Refres SOE --
/if (${Me.Buff[${SpellSingleORunBuff}].ID}) {
/if (${Me.Buff[${SpellSingleORunBuff}].Duration}<20) {
/if ( !${Me.Gem["${SpellSingleORunBuff}"]}) {
/memspell 9 "${SpellSingleORunBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellSingleORunBuff}"
}
}
|-- Refres FOE --
/if (${Me.Buff[${SpellGroupORunBuff}].ID}) {
/if (${Me.Buff[${SpellGroupORunBuff}].Duration}<20) {
/if ( !${Me.Gem["${SpellGroupORunBuff}"]}) {
/memspell 9 "${SpellGroupORunBuff}"
/delay 28
}
/target myself
/delay 22
/call cast "${SpellGroupORunBuff}"
}
}
/return
|------------------
| Dots Wore off
|------------------
Sub Event_MagicDotOff
/varset ADot 0
/return
Sub Event_FireDotOff
/varset BDot 0
/return
|------------------
| Invited To Group
|------------------
Sub Event_Invited
/invite
/return
|------------------
| Check Events
|------------------
Sub CheckEvents
/delay 1
/doevents Chat
/doevents flush
/return
|------------------
| Find Exact PC
|------------------
Sub FindExactPC(string name)
/declare nameid int local
/declare counter int local 1
:FindNext
/if (!${NearestSpawn[${counter}, pc ${name}].ID}) /return NOT_FOUND
/varset nameid ${NearestSpawn[${counter}, pc ${name}].ID}
/if (${Spawn[${nameid}].CleanName.Equal[${name}]}) {
/target id ${nameid}
/delay 1s ${Target.ID}==${nameid}
/if (${Target.ID}==${nameid}) /return TARGET_SUCCESS
}
/varcalc counter ${counter}+1
/if (${NearestSpawn[${counter}, pc ${name}].ID}) /goto :FindNext
/return NOT_FOUND
|------------------
| Default Spells
|------------------
Sub DefaultSpells
/echo Memming spells. Hang on.
|-- Fire DD --
/if (${DOTSorDD}==0 && ${NukeType}==1) {
/if ( !${Me.Gem["${SpellCompHeal}"]} ) {
/memspell 1 "${SpellCompHeal}"
/delay 23
}
/if ( !${Me.Gem["${SpellFastHeal}"]} ) {
/memspell 2 "${SpellFastHeal}"
/delay 26
}
/if ( !${Me.Gem["${SpellSnare}"]} ) {
/memspell 3 "${SpellSnare}"
/delay 20
}
/if ( !${Me.Gem["${SpellFireDD}"]} ) {
/memspell 4 "${SpellFireDD}"
/delay 20
}
/if ( !${Me.Gem["${SpellSingleHPBuff}"]} ) {
/memspell 5 "${SpellSingleHPBuff}"
/delay 20
}
/if ( !${Me.Gem["${SpellGroupDSBuff}"]} ) {
/memspell 6 "${SpellGroupDSBuff}"
/delay 20
}
/if ( !${Me.Gem["${SpellGroupHPRegenBuff}"]} ) {
/memspell 7 "${SpellGroupHPRegenBuff}"
/delay 20
}
/if ( !${Me.Gem["${SpellGroupORunBuff}"]} ) {
/memspell 8 "${SpellGroupORunBuff}"
/delay 20
}
/memspell 9 "${SpellSelfManaRegen}"
/delay 20
/echo Spells are memmed for Fire Nukes!
/stand
}
|-- Cold DD --
/if (${DOTSorDD}==0 && ${NukeType}==0) {
/if ( !${Me.Gem["${SpellCompHeal}"]} ) {
/memspell 1 "${SpellCompHeal}"
/delay 23
}
/if ( !${Me.Gem["${SpellFastHeal}"]} ) {
/memspell 2 "${SpellFastHeal}"
/delay 26
}
/if ( !${Me.Gem["${SpellSnare}"]} ) {
/memspell 3 "${SpellSnare}"
/delay 20
}
/if ( !${Me.Gem["${SpellColdDD}"]} ) {
/memspell 4 "${SpellFireDD}"
/delay 20
}
/if ( !${Me.Gem["${SpellSingleHPBuff}"]} ) {
/memspell 5 "${SpellSingleHPBuff}"
/delay 20
}
/if ( !${Me.Gem["${SpellGroupDSBuff}"]} ) {
/memspell 6 "${SpellGroupDSBuff}"
/delay 20
}
/if ( !${Me.Gem["${SpellGroupHPRegenBuff}"]} ) {
/memspell 7 "${SpellGroupHPRegenBuff}"
/delay 20
}
/if ( !${Me.Gem["${SpellGroupORunBuff}"]} ) {
/memspell 8 "${SpellGroupORunBuff}"
/delay 20
}
/memspell 9 "${SpellSelfManaRegen}"
/delay 20
/echo Spells are memmed for Cold Nukes!
/stand
}
|-- DOT'S --
/if (${DOTSorDD}==1 && ${NukeType}==0) {
/if ( !${Me.Gem["${SpellCompHeal}"]} ) {
/memspell 1 "${SpellCompHeal}"
/delay 23
}
/if ( !${Me.Gem["${SpellFastHeal}"]} ) {
/memspell 2 "${SpellFastHeal}"
/delay 26
}
/if ( !${Me.Gem["${SpellSnare}"]} ) {
/memspell 3 "${SpellSnare}"
/delay 20
}
/if ( !${Me.Gem["${SpellFireDOT}"]} ) {
/memspell 4 "${SpellFireDOT}"
/delay 20
}
/if ( !${Me.Gem["${SpellSingleHPBuff}"]} ) {
/memspell 5 "${SpellSingleHPBuff}"
/delay 20
}
/if ( !${Me.Gem["${SpellGroupDSBuff}"]} ) {
/memspell 6 "${SpellGroupDSBuff}"
/delay 20
}
/if ( !${Me.Gem["${SpellGroupHPRegenBuff}"]} ) {
/memspell 7 "${SpellGroupHPRegenBuff}"
/delay 20
}
/if ( !${Me.Gem["${SpellGroupORunBuff}"]} ) {
/memspell 8 "${SpellGroupORunBuff}"
/delay 20
}
/memspell 9 "${SpellSelfManaRegen}"
/delay 20
/echo Spells are memmed for Cold Nukes!
/stand
}
/return
|-----------------------------------------------------------------------------------------------------------------------------
| Chat Activated Events
|-----------------------------------------------------------------------------------------------------------------------------
Sub Event_Chat(string ChatType,string Sender,string ChatText,Sender,ChatText)
|----------------------
| Heal
|----------------------
/if ((${ChatText.Equal[Heal]})||(${ChatText.Equal[Heal Me]})||(${ChatText.Equal[Heal Plz]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellFastHealRange}) {
/target ${Sender}
/delay 1
/call cast "${SpellFastHeal}"
} else /tell ${Sender} Your Out of Range for ${SpellFastHeal}, Come Closer!
}
|-----------------------
|Natures Boon
|-----------------------
/if ((${ChatText.Equal[Natures Boon]})||(${ChatText.Equal[Druid Ward]})||(${ChatText.Equal[Druid Boon]})) {
/alt activate 257
}
|-----------------------
|Spirit of the Wood
|-----------------------
/if ((${ChatText.Equal[Wood]})||(${ChatText.Equal[SoTW]})) {
/alt activate 185
/g Dont look now you got Wood! ** Spirit of The Wood **
}
|-----------------------
|Radiant Cure
|-----------------------
/if ((${ChatText.Equal[Rad Cure]})||(${ChatText.Equal[Group Cure]})||(${ChatText.Equal[Grp Cure]})) {
/alt activate 153
}
|-----------------------
|MGB
|-----------------------
/if ((${ChatText.Equal[Druid MGB]})) {
/alt activate 35
/chat 1 The next GROUP spell will be MGB!
}
|-----------------------
| Mana Check
|-----------------------
/if ((${ChatText.Equal[Druid Mana]})||(${ChatText.Equal[Mana Check]})) {
/g Druid Mana = ${Me.PctMana}%
}
|-----------------------
|Exodus
|-----------------------
/if ((${ChatText.Equal[Exodus]})||(${ChatText.Equal[Evac]})||(${ChatText.Equal[Evac NOW]})) {
/doevents flush
/alt activate 43
}
|----------------------
| Group FOE
|----------------------
/if ((${ChatText.Equal[FOE]})||(${ChatText.Equal[FOE Plz]})||(${ChatText.Equal[FOE Please]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellGroupORunBuffRange}) {
/target ${Sender}
/delay 1
/g ${SpellGroupORunBuff} to >> %t's << Group!
/call cast "${SpellGroupORunBuff}"
} else /tell ${Sender} Your Out of Range for ${SpellGroupORunBuff}, Come Closer!
}
|----------------------
| Single SOE
|----------------------
/if ((${ChatText.Equal[SOE]})||(${ChatText.Equal[SOE Plz]})||(${ChatText.Equal[SOE Please]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellSingleORunBuffRange}) {
/target ${Sender}
/delay 1
/g ${SpellSingleORunBuff} to >> %t <<
/call cast "${SpellSingleORunBuff}" gem9
} else /tell ${Sender} Your Out of Range for ${SpellSingleORunBuff}, Come Closer!
}
|----------------------
| Group DS
|----------------------
/if ((${ChatText.Equal[Group DS]})||(${ChatText.Equal[Grp Druid DS]})||(${ChatText.Equal[Group Thorns]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellGroupDSBuffRange}) {
/target ${Sender}
/delay 1
/g ${SpellGroupDSBuffRange} to >> %t's << Group!
/call cast "${SpellGroupDSBuffRange}" gem9
} else /tell ${Sender} Your Out of Range for ${SpellGroupDSBuffRange}, Come Closer!
}
|----------------------
| Single DS
|----------------------
/if ((${ChatText.Equal[Druid DS]})||(${ChatText.Equal[Thorns]})||(${ChatText.Equal[Druid DS Plz]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellSingleDSBuffRange}) {
/target ${Sender}
/delay 1
/g ${SpellSingleDSBuff} to >> %t <<
/call cast "${SpellSingleDSBuff}" gem9
} else /tell ${Sender} Your Out of Range for ${SpellSingleDSBuff}, Come Closer!
}
|----------------------
| Group HP Regen Buff
|----------------------
/if ((${ChatText.Equal[Group Regen]})||(${ChatText.Equal[Grp Regen]})||(${ChatText.Equal[Grp Regen Plz]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellGroupHPRegenBuffRange}) {
/target ${Sender}
/delay 1
/g ${SpellGroupHPRegenBuff} to >> %t's << Group!
/call cast "${SpellGroupHPRegenBuff}" gem9
} else /tell ${Sender} Your Out of Range for ${SpellGroupHPRegenBuff}, Come Closer!
}
|----------------------
| Single HP Regen Buff
|----------------------
/if ((${ChatText.Equal[Regen]})||(${ChatText.Equal[Regen Plz]})||(${ChatText.Equal[Regen please]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellSingleHPRegenBuffRange}) {
/target ${Sender}
/delay 1
/g ${SpellSingleHPRegenBuff} to >> %t <<
/call cast "${SpellSingleHPRegenBuff}" gem9
} else /tell ${Sender} Your Out of Range for ${SpellSingleHPRegenBuff}, Come Closer!
}
|----------------------
| Group HP Buff
|----------------------
/if ((${ChatText.Equal[Group 9]})||(${ChatText.Equal[bot9]})||(${ChatText.Equal[G9]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellGroupHPBuffRange}) {
/target ${Sender}
/delay 1
/g ${SpellGroupHPBuff} to >> %t's << Group!
/call cast "${SpellGroupHPBuff}" gem9
} else /tell ${Sender} Your Out of Range for ${SpellGroupHPBuff}, Come Closer!
}
|----------------------
| Single HP Buff
|----------------------
/if ((${ChatText.Equal[p9]})||(${ChatText.Equal[p10]})||(${ChatText.Equal[Oak Skin]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if ( !${Me.Gem["${SpellSingleHPBuff}"]} ) {
/memspell 9 "${SpellSingleHPBuff}"
/delay 17
}
/if (${Target.Distance}<=${SpellSingleHPBuffRange}) {
/target ${Sender}
/delay 1
/g ${SpellSingleHPBuff} to >> %t <<
/call cast "${SpellSingleHPBuff}"
} else /tell ${Sender} Your Out of Range for ${SpellSingleHPBuff}, Come Closer!
}
|-----------------------
| Nuke on Command
|-----------------------
/if ((${ChatText.Equal[Druid Nuke]})||(${ChatText.Equal[All Nuke]})) {
/if (${Me.PctMana}<=30) {
/1 My Mana is at ${Me.PctMana}%, holding nukes for now.
} Else {
/assist ${Sender}
/delay 1s
/call cast "${UseThisNuke}"
}
}
|-----------------------
| Invis
|-----------------------
/if ((${ChatText.Equal[Druid Invis]})||(${ChatText.Equal[All Invis]})||(${ChatText.Equal[Invis Up]})) {
/chat 1 Castng Invis on myself!
/alt activate 80
}
|-----------------------
| Gate
|-----------------------
/if ((${ChatText.Equal[Druid Gate]})||(${ChatText.Equal[All Gate]})) {
/if ( !${Me.Gem["Gate"]} ) {
/memspell 9 "Gate"
/delay 17
}
/delay 112
/1 Druid is going to Gate Now!
/call Cast "Gate"
}
|-----------------------
| Camp
|-----------------------
/if ((${ChatText.Equal[Druid Camp]})||(${ChatText.Equal[All Camp]})) {
/dismount
/camp desktop
/endmacro
}
|-----------------------
| Mount
|-----------------------
/if ((${ChatText.Equal[Druid Mount]})||(${ChatText.Equal[All Mount]})) {
/if (!${Me.Mount.ID}) /call cast "${Mount}" item 4s
}
|-----------------------
| Dismount
|-----------------------
/if ((${ChatText.Equal[Druid DisMount]})||(${ChatText.Equal[All DisMount]})) {
/Dismount
}
|----------------------
| Buff Me
|----------------------
/if ((${ChatText.Equal[Buff Me]})||(${ChatText.Equal[Buffs]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellSingleHPBuffRange}) {
/if ( !${Me.Gem["${SpellSingleHPBuff}"]} ) {
/memspell 9 "${SpellGroupHPBuff}"
/delay 17
}
/call KeepHeal
/if ( !${Me.Gem["${SpellGroupHPRegenBuff}"]} ) {
/memspell 8 "${SpellGroupHPRegenBuff}"
/delay 17
}
/call KeepHeal
/if ( !${Me.Gem["${SpellGroupDSBuff}"]} ) {
/memspell 7 "${SpellGroupDSBuff}"
/delay 17
}
/call KeepHeal
/target ${Sender}
/delay 1
/g Buffing >> %t <<
/call cast "${SpellSingleHPBuff}"
/delay 6
/call KeepHeal
/target ${Sender}
/delay 1
/call cast "${SpellGroupHPRegenBuff}"
/delay 6
/call KeepHeal
/target ${Sender}
/delay 1
/call cast "${SpellGroupDSBuff}"
/delay 5
} else /tell ${Sender} Your Out of Range, Come Closer!
}
|----------------------
| Group Buff
|----------------------
/if ((${ChatText.Equal[Group Buffs]})||(${ChatText.Equal[Group Buff]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellSingleHPBuffRange}) {
/call KeepHeal
/if ( !${Me.Gem["${SpellGroupHPBuff}"]} ) {
/memspell 9 "${SpellGroupHPBuff}"
/delay 17
}
/call KeepHeal
/if ( !${Me.Gem["${SpellGroupHPRegenBuff}"]} ) {
/memspell 8 "${SpellGroupHPRegenBuff}"
/delay 17
}
/call KeepHeal
/if ( !${Me.Gem["${SpellGroupDSBuff}"]} ) {
/memspell 7 "${SpellGroupDSBuff}"
/delay 17
}
/call KeepHeal
/delay 190
/target ${Sender}
/delay 1
/g Buffing >> %t's << Group
/call cast "${SpellGroupHPBuff}"
/delay 6
/call KeepHeal
/target ${Sender}
/delay 1
/call cast "${SpellGroupHPRegenBuff}"
/delay 6
/call KeepHeal
/target ${Sender}
/delay 1
/call cast "${SpellGroupDSBuff}"
/delay 5
/call DefaultSpells
} else /tell ${Sender} Your Out of Range, Come Closer!
}
|-----------------------
| Follow Me
|-----------------------
/if ((${ChatText.Equal[Follow me]})||(${ChatText.Equal[Druid Follow Me]})||(${ChatText.Equal[Druid Follow]})) {
/delay 5
/if (!${Spawn[${Sender}].ID}) {
/1 ${Sender} is not in zone for me to follow!
/return
}
/varset follname ${Sender}
/varset following 1
:targetfoll
/target pc ${follname}
/delay 1s ${Target.Name.Equal[${follname}]}
/if (${Target.Name.Equal[${follname}]}) {
/goto :Loop
} else /goto :targetfoll
:Loop
/face fast
/if (${Target.Distance}>10) /keypress forward hold
/if (${Target.Distance}<9) /keypress back
/if (!${Target.ID}) /varset following 0
/call CheckEvents
/if ((${Target.Name.Equal[${follname}]})&&(${following}>0)) {
/goto :Loop
} else {
/keypress forward
/keypress back
}
}
|-----------------------
| Wait Here
|-----------------------
/if ((${ChatText.Equal[Wait Here]})||(${ChatText.Equal[Mage Wait]})||(${ChatText.Equal[Mage Wait Here]})||(${ChatText.Equal[Stay Here]})||(${ChatText.Equal[Mage Stay Here]})||(${ChatText.Equal[Mage Stay]})) {
/varset following 0
/keypress forward
/keypress back
/timed 50 /face pc ${follname}
}
|-----------------------
| Help
|-----------------------
/if (${ChatText.Equal[Druid Help]}) {
/chat 1 Druid Help: | Buff Me | Group Buff | Folloq Me (All Bots) | Druid Follow | All Mount (All Bots) | Druid Mount | All Dismount (All Bots) | Druid Dismount | All Camp (All Bots) | Druid Camp | All Gate (All Bots) | Druid Gate | All Invis (All Bots) | Druid Invis | All Nuke (All Bots) | Druid Nuke | P9 | Regen | Grp Regen | Thorns | Group Thorns | SOE | FOE | Evac | Mana Check (All Bots) | Druid Mana | Druid MGB | Grp Cure | Wood | Heal |
}
|-----------------------
| Port Help
|-----------------------
/if (${ChatText.Equal[Druid Port Help]}) {
/chat 1 Druid Teleport Help: | Port WOS | Port Bloodfields | Port Barindu | Port Natimbi | Port CS | Port WL | Port POK | Port DSP | Port EJ | Port Skyfire | Port GD | Port EK | Port SRO | Port Lava | Port TS | Port DL | Port IC | Port BB | Port Steam | Port Feerrott | Port SB | Port Nexus | Port Grimling | Port SFG | Port Tox | Port WC | Port NK |
}
|-----------------------
| WOS
|-----------------------
/if ((${ChatText.Equal[Port WOS]})) {
/if ( !${Me.Gem["Circle of Slaughter"]} ) {
/memspell 9 "Circle of Slaughter"
/delay 17
}
/delay 112
/call cast "Circle of Slaughter"
/g Walls of Slaughter INC [Loc 13,-943,130]
}
|-----------------------
| Circle of Bloodfields
|-----------------------
/if ((${ChatText.Equal[Port Bloodfield]})) {
/if ( !${Me.Gem["Circle of Bloodfields"]} ) {
/memspell 9 "Circle of Bloodfields"
/delay 17
}
/delay 112
/call cast "Circle of Bloodfields"
/g Bloodfields INC [Loc 524,-183,-565]
}
|-----------------------
| Circle of Barindu
|-----------------------
/if ((${ChatText.Equal[Port Barindu]})) {
/if ( !${Me.Gem["Circle of Barindu"]} ) {
/memspell 9 "Circle of Barindu"
/delay 17
}
/delay 112
/call cast "Circle of Barindu"
/g Barindu INC [Loc -515,209,-119]
}
|-----------------------
| Circle of Natimbi
|-----------------------
/if ((${ChatText.Equal[Port Natimbi]})) {
/if ( !${Me.Gem["Circle of Natimbi"]} ) {
/memspell 9 "Circle of Natimbi"
/delay 17
}
/delay 112
/call cast "Circle of Natimbi"
/g Walls of Slaughter INC [Loc -853,-1557,237]
}
|-----------------------
| Circle of Cobalt Scar
|-----------------------
/if ((${ChatText.Equal[Port CS]})) {
/if ( !${Me.Gem["Circle of Cobalt Scar"]} ) {
/memspell 9 "Circle of Cobalt Scar"
/delay 17
}
/delay 112
/call cast "Circle of Cobalt Scar"
/g Cobalt Scar INC [-1065,-1634,299 ]
}
|-----------------------
| Circle of Wakening Lands
|-----------------------
/if ((${ChatText.Equal[Port WL]})) {
/if ( !${Me.Gem["Circle of Wakening Lands"]} ) {
/memspell 9 "Circle of Wakening Lands"
/delay 17
}
/delay 112
/call cast "Circle of Wakening Lands"
/g Wakening Lands INC [Loc -3040,-3032,28]
}
|-----------------------
| Circle of Knowledge
|-----------------------
/if ((${ChatText.Equal[Port POK]})) {
/if ( !${Me.Gem["Circle of Knowledge"]} ) {
/memspell 9 "Circle of Knowledge"
/delay 17
}
/delay 112
/call cast "Circle of Knowledge"
/g Plane of Knowledge INC [Loc -368,1335,-125]
}
|-----------------------
| Circle of Dawnshroud
|-----------------------
/if ((${ChatText.Equal[Port DSP]})) {
/if ( !${Me.Gem["Circle of Dawnshroud"]} ) {
/memspell 9 "Circle of Dawnshroud"
/delay 17
}
/delay 112
/call cast "Circle of Dawnshroud"
/g Dawnshroud Peek INC [Loc 325,-996,121]
}
|-----------------------
| Wind of the South
|-----------------------
/if ((${ChatText.Equal[Port EJ]})) {
/if ( !${Me.Gem["Wind of the South"]} ) {
/memspell 9 "Wind of the South"
/delay 17
}
/delay 112
/call cast "Wind of the South"
/g Emerald Jungle INC [Loc -3100,3500,-340]
}
|-----------------------
| Wind of the North
|-----------------------
/if ((${ChatText.Equal[Port Skyfire]})) {
/if ( !${Me.Gem["Wind of the North"]} ) {
/memspell 9 "Wind of the North"
/delay 17
}
/delay 112
/call cast "Wind of the North"
/g Skyfire INC [Loc -3186,2732,-161]
}
|-----------------------
| Circle of Great Divide
|-----------------------
/if ((${ChatText.Equal[Port GD]})) {
/if ( !${Me.Gem["Circle of Great Divide"]} ) {
/memspell 9 "Circle of Great Divide"
/delay 17
}
/delay 112
/call cast "Circle of Great Divide"
/g Great Divine INC [Loc -3766,3651,-237]
}
|-----------------------
| Succor East
|-----------------------
/if ((${ChatText.Equal[Port EK]})) {
/if ( !${Me.Gem["Succor: East"]} ) {
/memspell 9 "Succor: East"
/delay 17
}
/delay 30
/call cast "Succor: East"
/g East Karana INC [Loc 1359,375,4]
}
|-----------------------
| Succor Ro
|-----------------------
/if ((${ChatText.Equal[Port SRO]})) {
/if ( !${Me.Gem["Succor: Ro"]} ) {
/memspell 9 "Succor: Ro"
/delay 17
}
/delay 30
/call cast "Succor: Ro"
/g Southern Ro INC [Loc -2034,317,-19]
}
|-----------------------
| Succor
|-----------------------
/if ((${ChatText.Equal[Succor]})) {
/if ( !${Me.Gem["Succor"]} ) {
/memspell 9 "Succor"
/delay 17
}
/delay 30
/call cast "Succor"
/g Zone Safe Spot INC!
}
|-----------------------
| Succor Lavastorm
|-----------------------
/if ((${ChatText.Equal[Port Lava]})) {
/if ( !${Me.Gem["Succor: Lavastorm"]} ) {
/memspell 9 "Succor: Lavastorm"
/delay 17
}
/delay 30
/call cast "Succor: Lavastorm"
/g Lavastorm INC [Loc 1014,1389,131]
}
|-----------------------
| Circle of Twilight
|-----------------------
/if ((${ChatText.Equal[Port TS]})) {
/if ( !${Me.Gem["Circle of Twilight"]} ) {
/memspell 9 "Circle of Twilight"
/delay 17
}
/delay 112
/call cast "Circle of Twilight"
/g Twilight Sea INC [Loc -656,-125,-22]
}
|-----------------------
| Circle of the Combines
|-----------------------
/if ((${ChatText.Equal[Port DL]})) {
/if ( !${Me.Gem["Circle of the Combines"]} ) {
/memspell 9 "Circle of the Combines"
/delay 17
}
/delay 112
/call cast "Circle of the Combines"
/g Dreadlands INC [Loc 2484,7717,1051]
}
|-----------------------
| Circle of Iceclad
|-----------------------
/if ((${ChatText.Equal[Port IC]})) {
/if ( !${Me.Gem["Circle of Iceclad"]} ) {
/memspell 9 "Circle of Iceclad"
/delay 17
}
/delay 112
/call cast "Circle of Iceclad"
/g Iceclad INC [Loc -630,4925,113]
}
|-----------------------
| Succor Butcher
|-----------------------
/if ((${ChatText.Equal[Port BB]})) {
/if ( !${Me.Gem["Succor Butcher"]} ) {
/memspell 9 "Succor Butcher"
/delay 17
}
/delay 30
/call cast "Succor Butcher"
/g Butcherblock INC [Loc -2135,1984,3]
}
|-----------------------
| Circle of Steamfont
|-----------------------
/if ((${ChatText.Equal[Port Steam]})) {
/if ( !${Me.Gem["Circle of Steamfont"]} ) {
/memspell 9 "Circle of Steamfont"
/delay 17
}
/delay 112
/call cast "Circle of Steamfont"
/g Steamfont INC [Loc -1779,1668,-104]
}
|-----------------------
| Circle of Feerrott
|-----------------------
/if ((${ChatText.Equal[Port Feerrott]})) {
/if ( !${Me.Gem["Circle of Feerrott"]} ) {
/memspell 9 "Circle of Feerrott"
/delay 17
}
/delay 112
/call cast "Circle of Feerrott"
/g Feerrott INC [Loc 367,-1885,16]
}
|-----------------------
| Circle of Stonebrunt
|-----------------------
/if ((${ChatText.Equal[Port SB]})) {
/if ( !${Me.Gem["Circle of Stonebrunt"]} ) {
/memspell 9 "Circle of Stonebrunt"
/delay 17
}
/delay 112
/call cast "Circle of Stonebrunt"
/g Stonebrunt INC [Loc -4531,673,0]
}
|-----------------------
| Circle of the Nexus
|-----------------------
/if ((${ChatText.Equal[Port Nexus]})) {
/if ( !${Me.Gem["Circle of the Nexus"]} ) {
/memspell 9 "Circle of the Nexus"
/delay 17
}
/delay 112
/call cast "Circle of the Nexus"
/g Nexus INC [Loc 0,0,-28]
}
|-----------------------
| Circle of Grimling
|-----------------------
/if ((${ChatText.Equal[Port Grimling]})) {
/if ( !${Me.Gem["Circle of Grimling"]} ) {
/memspell 9 "Circle of Grimling"
/delay 17
}
/delay 112
/call cast "Circle of Grimling"
/g Grimling Forest INC [Loc 690,-1170,13]
}
|-----------------------
| Circle of Surefall Glade
|-----------------------
/if ((${ChatText.Equal[Port SFG]})) {
/if ( !${Me.Gem["Circle of Surefall Glade"]} ) {
/memspell 9 "Circle of Surefall Glade"
/delay 17
}
/delay 112
/call cast "Circle of Surefall Glade"
/g Surefall Glade INC [Loc -209,-391,9]
}
|-----------------------
| Circle of Toxxulia
|-----------------------
/if ((${ChatText.Equal[Port Tox]})) {
/if ( !${Me.Gem["Circle of Toxxulia"]} ) {
/memspell 9 "Circle of Toxxulia"
/delay 17
}
/delay 112
/call cast "Circle of Toxxulia"
/g Toxxulia Forest INC [Loc ^^^^^]
}
|-----------------------
| Circle of Commons
|-----------------------
/if ((${ChatText.Equal[Port WC]})) {
/if ( !${Me.Gem["Circle of Commons"]} ) {
/memspell 9 "Circle of Commons"
/delay 17
}
/delay 112
/call cast "Circle of Commons"
/g West Commonlands INC [Loc 478,1427,-48]
}
|-----------------------
| Succor North
|-----------------------
/if ((${ChatText.Equal[Port NK]})) {
/if ( !${Me.Gem["Succor: North"]} ) {
/memspell 9 "Succor: North"
/delay 17
}
/delay 30
/call cast "Succor: North"
/g North Karana INC [Loc -2706,-1494,-4]
}
/return