• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Question - What do i do

Flipn

New member
Joined
Nov 16, 2015
RedCents
25¢
So iam new to macroquest.
Docommand-couldn't parse 'doleashtoon 1'
/varset failed, variable 'LootOn' not found
/varset failed, variable 'DoLoot' not found.
when i try run DH mac this happens how do i fix it?
:confused:
 
There's more than one DH mac on these forums...you'll need to be a little more specific than that.

Have you tried reading the post pertaining to the macro that you downloaded? Most likely the solution to your problem will be within that thread.
 
DoLoot and LootOn are sent to the clients after they load up KissAssist so it's an issue with the variables within KissAssist I think. Those variables might have been deleted and replaced with something else so the macro won't work until it's updated.
 
Rich (BB code):
[General]
KissAssistVer=8.4.2
Role=Assist
CampRadius=30
CampRadiusExceed=400
ReturnToCamp=1
ChaseAssist=0
ChaseDistance=25
MedOn=1
MedStart=40
MedCombat=0
LootOn=1
RezAcceptOn=1
AcceptInvitesOn=1
GroupWatchOn=0
EQBCOn=1
IRCOn=0
MiscGem=8
HoTTOn=0
CampfireOn=0
[Buffs]
BuffsOn=1
Buffs1=NULL
Buffs2=NULL
Buffs3=NULL
Buffs4=NULL
Buffs5=NULL
Buffs6=NULL
Buffs7=NULL
Buffs8=NULL
Buffs9=NULL
Buffs10=NULL
Buffs11=NULL
Buffs12=Fourth Wind|End|60
Buffs13=NULL
Buffs14=NULL
Buffs15=NULL
Buffs16=NULL
Buffs17=NULL
Buffs18=NULL
Buffs19=NULL
Buffs20=NULL
RebuffOn=1
ChecKBuffsTimer=20
[Melee]
AssistAt=98
MeleeOn=1
FaceMobOn=1
MeleeDistance=75
StickHow=snaproll
AutoFireOn=0
[AE]
AEOn=0
AERadius=50
AE1=NULL
AE2=NULL
AE3=NULL
AE4=NULL
AE5=NULL
[DPS]
DPSOn=1
DPSSkip=20
DPSInterval=2
DPS1=Frenzy|98
DPS2=Overpowering Frenzy|98
DPS3=Eradicator's Volley|98
DPS4=Vigorous Axe Throw|98
DPS5=Axe of Rallos|98
DPS6=NULL
DPS7=NULL
DPS8=NULL
DPS9=NULL
DPS10=NULL
DPS11=NULL
DPS12=NULL
DPS13=NULL
DPS14=NULL
DPS15=NULL
[Aggro]
AggroOn=0
Aggro1=NULL
Aggro2=NULL
Aggro3=NULL
[Heals]
Help=Format Spell|% to heal at i.e. Devout Light Rk. II|50
HealsOn=0
Heals1=NULL
Heals2=NULL
Heals3=NULL
Heals4=NULL
Heals5=NULL
XTarHeal=0
[Cures]
CuresOn=0
Cures1=NULL
Cures2=NULL
Cures3=NULL
Cures4=NULL
Cures5=NULL
[Burn]
BurnText=Decepticons Attack
BurnAllNamed=1
Burn1=Savage Spirit
Burn2=Reckless Abandon
Burn3=Fundament: Third Spire of Savagery
Burn4=NULL
Burn5=NULL
Burn6=NULL
Burn7=NULL
Burn8=NULL
Burn9=NULL
Burn10=NULL
Burn11=NULL
Burn12=NULL
Burn13=NULL
Burn14=NULL
Burn15=NULL
[Pull]
PullWith=Melee
MaxRadius=350
MaxZRange=50
PullWait=0
PullRoleToggle=0
ChainPull=0
ChainPullHP=90
ChainPullPause=30|2
[AFKTools]
AFKHelp=AFKGMAction=0 Off, 1 Pause Macro, 2 End Macro, 3 Unload MQ2, 4 Quit Game
AFKToolsOn=0
AFKGMAction=1
AFKPCRadius=150
CampOnDeath=0
ClickBacktoCamp=0
[Merc]
Help=To use: Turn off Auto Assist in Manage Mercenary Window
MercOn=0
MercAssistAt=92
[SpellSet]
LoadSpellSet=0
SpellSetName=KissAssist

- - - Updated - - -

whats missing??

- - - Updated - - -

Rich (BB code):
|ScoutingAhead All Tanks v2.0

#turbo 40
#include spell_routines.inc
#include wait4rez.inc

#event ToonReady "<#1> Ready"
#event UpdateEvent "#*#Your task '#1#' has been updated."
#event LootingEvent "#*# has looted a #1#.-#*#"

| Run /mac scoutingahead on your tank. Make sure you setup the INI right or it will not work.
| This macro is untested with mercs, but it should still work with them.
| There is a 75s delay at the start of every heroic for rebuffs defined in your ini.
| If you use campfire make sure you have 3 people in your FS in the group otherwise you will get spammed trying to create a campfire.
| This macro does not need autofollow
| Everyone should loot except MT if possible otherwise some items may not get picked up.

Sub Main
  /declare DummyVariable int 1
  /declare iii int inner
  /echo Scouting Ahead All Tanks v2.0
  /call GeneralDeclares

  /if (${Defined[Param0]}) /varset CampNum ${Param0}
  /call SetUp
  /if (${Zone.ShortName.Equal[deadhills_errand]}) /goto :mainloop
  /call GetInstance
 :SkipZoneIn
  /call ZoneIn
  /if (${UseCampfire})  /call createcampfire
  /moveto loc 1547 395
  /popup Scouting Ahead All Tanks v2.0
  /call SetupCamp
/if (${Me.XTarget}==0) /varset bufftimer2 75s
  /bcg //chase 1
  /bcg //doleashtoon 1
  /bcg //varset LootOn 1
  /bcg //varset DoLoot 1

:mainloop
/if (${bufftimer2}) /call Checkselfbuff
/if (${bufftimer2}) /goto :mainloop
/if (!${bufftimer2}) {
:killmob
  /for iii 1 to 5
  /if (${Me.CombatState.NotEqual[COMBAT]} && ${ReturnGribble}==1) /call ReturnToGribble

  /if  (${Group.Member[${iii}].Type.NotEqual[corpse]} && ${CampNum}==1) {
     /if (${Me.CombatState.NotEqual[COMBAT]}) {
       /call PullMobA 1 4 240 0 4
    }
  }
  /next iii
  /doevents
  /if (${Me.State.Equal[HOVER]}) {
    /varset CampNum 6
  }
  /delay 2
  /doevents
  /if (${Me.XTarget}==0) /goto :killmob
  /if (${Me.XTarget}>=1) {
/call dpsmode
 }
  /if (${Target.ID}) /face fast
 /delay 2	
 /goto :killmob
}
}
/return

Sub SetUp
/declare kk int inner
/declare i int inner
/declare k int inner
  /alert clear 1
  /alert add 1 Gribble
  /alert add 1 adventurer
  /for kk 1 to ${Group}
    /if (${Group.Member[${kk}].Type.Equal[PC]}) /varcalc ReadysRequired ${ReadysRequired}+1
  /next kk
|  /echo ${ReadysRequired}

  /varset i 1

|  Loads the Path file
  :iloop1
    /varset k 1
    /if (!${Bool[${Ini[${IniPathFile},"Path${i}","PointX${k}"]}]}) {
      /varcalc MaxPaths ${i}-1 
      /echo Number of paths ${MaxPaths}    
      /return
    }
    :kloop1
      /if (!${Bool[${Ini[${IniPathFile},"Path${i}","PointX${k}"]}]}) {
        /varset Path[${i},${k},1] 0
        /varset Path[${i},${k},2] 0
        /varcalc i ${i}+1
        /goto :iloop1
      } else {
    |    /echo ${i} ${k} ${Ini[${IniPathFile},"Path${i}","PointX${k}"]}
        /varset Path[${i},${k},1] ${Ini[${IniPathFile},"Path${i}","PointX${k}"]}
        /varset Path[${i},${k},2] ${Ini[${IniPathFile},"Path${i}","PointY${k}"]}
        /echo ${Path[${i},${k},1]}
        /varcalc k ${k}+1
        
      }
    
  /goto :kloop1

/return

Sub createcampfire
        /windowstate FellowshipWnd open
        /delay 5
        /nomodkey /notify FellowshipWnd FP_Subwindows tabselect 2
            /nomodkey /notify FellowshipWnd FP_DestroyCampsite leftmouseup
            /delay 5s ${Window[ConfirmationDialogBox].Open}
            /if (${Window[ConfirmationDialogBox].Open}) {
                /nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup
            }
        /delay 1s
        }
        /delay 1s
        /nomodkey /notify FellowshipWnd FP_RefreshList leftmouseup
        /delay 1s        
        /nomodkey /notify FellowshipWnd FP_CampsiteKitList listselect 1
        /delay 1s
        /nomodkey /notify FellowshipWnd FP_CreateCampsite leftmouseup
        /delay 5s
        /windowstate FellowshipWnd close
/return

Sub ReturnToGribble
  /delay 90s ${Me.CombatState.NotEqual[COMBAT]}
  /delay 180s !${Me.XTarget}||${Me.XTarget[1].PctHPs}>99 
  /delay 15s
  /beep
  /bcg //end
  /delay 2s
  /bcga //tar Gribble
  /delay 5s
  /delay 20s ${SpawnCount[PC]}==${SpawnCount[PC radius 40]}
  /keypress H
  /delay 10s
  /kickplayers task
  /delay 5s ${Window[ConfirmationDialogBox].Open}
  /nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup
  /bcga //taskquit
  /delay 10s
  /bcga //say back
  /delay 120s ${Zone.ShortName.Equal[deadhills]}
  /delay 30s
  /varset CampNum 1
  /varset ReturnGribble 0
  /mac disrupt
/return 

Sub GetInstance
  /bcga //plugin mq2navigation
  /delay 10s
  /bcga //tar Gribble
  /delay 1
  /bcga //navigate target
  /delay 10s
  /bcga //sit
  /delay 10
  /if (${Target.Distance}<50) {
    /say willing
    /delay 4s
    /notify TaskSelectWnd TSEL_TaskList listselect ${Window[TaskSelectWnd].Child[TSEL_TaskList].List[=Scouting Ahead]}
    /delay 4s
    /notify TaskSelectWnd TSEL_AcceptButton leftmouse 2
  } else {
   /bc Gribble is OOR
   /endm
  }
/return

Sub Wait4Ready(int MaxReady)
|  This is a routine I call which waits for every toon to say they are ready to proceed.  I normally use this for zoning and moving between camps (I've used the slacker /afol method tho in this macro)
 | /echo ${MaxReady} ${NumReady}
  /doevents flush
  :loop
   /doevents
   /delay 1
  /if (${NumReady}<${MaxReady}) /goto :loop
  /bc All toons are [+g+]Ready
  /varset NumReady 0
/return

Sub ZoneIn
/declare kk int inner
 :shortloop
  /tar Gribble
|----------
|
|
|  Insert your /bct commands to role buffs for the characters.  You can do it here (in deadhills) b4 you zone in.
|
|----------
  /delay 32s
  /say leave
  /delay 120s ${Zone.ShortName.Equal[deadhills_errand]}
  /if (!${Zone.ShortName.Equal[deadhills_errand]}) /goto :shortloop
  /keypress ESC
  /delay 10s
  /for kk 1 to ${Group}
      /delay ${Math.Rand[9]}s
      /bct ${Group.Member[${kk}].Name} //mac deadzone.mac
  /next kk
  /echo waiting for readys.
  /call Wait4Ready ${ReadysRequired}


| Load up some clickie buffs on toons.

  /delay 6
  /return
}

Sub SetupCamp
 /varset Macro1 ${${Group.Member[1].Class.ShortName}}
 /varset Macro2 ${${Group.Member[2].Class.ShortName}}
 /varset Macro3 ${${Group.Member[3].Class.ShortName}}
 /varset Macro4 ${${Group.Member[4].Class.ShortName}}
 /varset Macro5 ${${Group.Member[5].Class.ShortName}}
|----------------
|
|  This area is where you send out /bct's to your other toons to set up.  i.e The tank sets up ready to receive mobs, you healers set up.
|
|-----------------
  /delay 5s
  /bcg //target ${MainAssist}
  /delay 2s
  /bct ${Eales} //mac ${Macro1}
  /bct ${Smst} //mac ${Macro2}
  /bct ${Toon3} //mac ${Macro3}
  /bct ${Toon4} //mac ${Macro4}
  /bct ${Msae} //mac ${Macro5}
  /delay 5s
/return

Sub PullMobA(PullType, MaxMobs, PullRange, MezRange, NumberMobsToCheck)
|| PullType = 1 = Mindless Hatred  2 = Helix of the Undying, 4 = Ageless Enmity, 8 = Double Pull...  (bitwise operation)
/declare i int inner
/declare iiii int inner 0
/declare EndOfPath int inner 0
/declare CheckMob int inner 1
/declare PullList string inner
/declare tt int inner 0
  /varset EndOfPath 0
  /varset i 1
   :moveloop
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
     /bc [+Y+]Path : [+y+]${CampNum}[+Y+]  Point : [+y+]${i}  [+x+]
    /squelch /moveto loc ${Path[${CampNum},${i},1]} ${Path[${CampNum},${i},2]}
    /delay 3s
    /if (${SpawnCount[PC]}>${SpawnCount[PC radius 40]}) /call AnyoneLost
     :MoveLoop1
 /for iiii 1 to ${Group}
/if (${Group.Member[${iiii}].Class.ShortName.Equal[BRD]}) {
/varset bd 1
/varset bdname ${Group.Member[${iiii}].CleanName}
}
/if (${Group.Member[${iiii}].Class.ShortName.Equal[SHM]}) {
/varset sh 1
/varset shname ${Group.Member[${iiii}].CleanName}
}
/next iiii
|  This is here incase it tries to pull another mob when it already pulled one.
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
       /doevents

|  This is the grunt of the pulling routine
|  This bit is checking for targets while moving....
       /varset CheckMob ${SpawnCount[NPC radius ${PullRange} zradius ${zrange} los noalert 1]}
       /if (${CheckMob}>${NumberMobsToCheck}) /varset CheckMob ${NumberMobsToCheck}
       /if (${CheckMob}) {
         /for tt 1 to ${CheckMob} 
           /doevents  
           /if (${ReturnGribble}==1) {
              /varcalc i ${i}-1
              /goto :ReturnPath
           }
           /tar id ${NearestSpawn[${tt}, NPC los radius ${PullRange} zradius ${zrange} noalert 1].ID}
           /delay 1s ${Target.ID}==${NearestSpawn[${tt}, NPC los radius ${PullRange} zradius ${zrange} noalert 1].ID}||${Me.CombatState.Equal[COMBAT]}
           /if (${Target.Type.Equal[NPC]} && ${Target.LineOfSight}) {
             /if (${Target.LineOfSight} && ${Target.Distance}<230) {
		/face fast
		/delay 5
		/if (${Me.XTarget}) /goto :Movepause
/if (${Me.Class.ShortName.Equal[SHD]} && !${Me.SpellReady[${PullSpell1}]} && !${Me.SpellReady[${PullSpell2}]} && ${Me.SpellReady[${PullSpell3}]}) {
               /bc Casting ${PullSpell3} [+t+]${Target.Name}
	       /cast "${PullSpell3}"
}
/if (${Me.Class.ShortName.Equal[SHD]} && !${Me.SpellReady[${PullSpell1}]} && ${Me.SpellReady[${PullSpell2}]}) {
               /bc Casting ${PullSpell2} [+t+]${Target.Name}
	       /cast "${PullSpell2}"
}
/if (${Me.Class.ShortName.Equal[SHD]} && ${Me.SpellReady[${PullSpell1}]}) {
               /bc Casting ${PullSpell1} [+t+]${Target.Name}
	       /cast "${PullSpell1}"
}
/if (!${Me.Moving} && ${Me.Class.ShortName.Equal[PAL]} && !${Me.SpellReady[${PullSpell1}]} && !${Me.SpellReady[${PullSpell2}]} && ${Me.SpellReady[${PullSpell3}]}) {
               /bc Casting ${PullSpell3} [+t+]${Target.Name}
	       /cast "${PullSpell3}"
}
/if (!${Me.Moving} && ${Me.Class.ShortName.Equal[PAL]} && !${Me.SpellReady[${PullSpell1}]} && ${Me.SpellReady[${PullSpell2}]}) {
               /bc Casting ${PullSpell2} [+t+]${Target.Name}
	       /cast "${PullSpell2}"
}
/if (!${Me.Moving} && ${Me.Class.ShortName.Equal[PAL]} && ${Me.SpellReady[${PullSpell1}]}) {
               /bc Casting ${PullSpell1} [+t+]${Target.Name}
	       /cast "${PullSpell1}"
}
/if (${Me.Class.ShortName.Equal[WAR]} && !${Me.XTarget}) {
    	        /bc Shooting an arrow at [+t+]${Target.Name}
                /ranged
/delay 2s
}
/delay 2s
             }
             /delay 4
           } 
|  This is here incase it tries to pull another mob when it already pulled one.
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
           /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<150 && ${Target.LineOfSight}  && ${Me.XTarget}<2) {
            /delay 2s ${Me.CombatState.Equal[COMBAT]}
          }
          /next tt
          }
         }
     /delay 1
    
     /if (!${MoveTo.Stopped} && !${Me.XTarget}) /goto :MoveLoop1

| This is here so you use rest while pulling it helps a ton.
/if (!${Melee.DiscID} && ${Me.PctEndurance}<=18 && ${Me.CombatAbilityReady[${RespiteDisc}]}) /disc ${RespiteDisc}

|  This is here incase it tries to pull another mob when it already pulled one.
		/if (${Me.XTarget}) /goto :Movepause
|  This bit is checking for mobs to pull at the way point.
      /varset CheckMob ${SpawnCount[NPC radius ${PullRange} zradius ${zrange} los noalert 1]}
       /if (${CheckMob}>${NumberMobsToCheck}) /varset CheckMob ${NumberMobsToCheck}
       /if (${CheckMob}) {
         /for tt 1 to ${CheckMob} 
           /doevents
           /if (${ReturnGribble}==1) {
              /varcalc i ${i}-1
              /goto :ReturnPath
           }
           /tar id ${NearestSpawn[${tt}, NPC los radius ${PullRange} zradius ${zrange} noalert 1].ID}
           /delay 1s ${Target.ID}==${NearestSpawn[${tt}, NPC los radius ${PullRange} zradius ${zrange} noalert 1].ID}||${Me.CombatState.Equal[COMBAT]}
           /if (${Target.Type.Equal[NPC]} && ${Target.LineOfSight}) {
             /if (!${Me.Moving} && ${Target.LineOfSight} && ${Target.Distance}<230) {
		/face fast
		/delay 5
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
/if (${Me.Class.ShortName.Equal[SHD]} && !${Me.SpellReady[${PullSpell1}]} && !${Me.SpellReady[${PullSpell2}]} && ${Me.SpellReady[${PullSpell3}]}) {
               /bc Casting ${PullSpell3} [+t+]${Target.Name}
	       /cast "${PullSpell3}"
}
/if (${Me.Class.ShortName.Equal[SHD]} && !${Me.SpellReady[${PullSpell1}]} && ${Me.SpellReady[${PullSpell2}]}) {
               /bc Casting ${PullSpell2} [+t+]${Target.Name}
	       /cast "${PullSpell2}"
}
/if (${Me.Class.ShortName.Equal[SHD]} && ${Me.SpellReady[${PullSpell1}]}) {
               /bc Casting ${PullSpell1} [+t+]${Target.Name}
	       /cast "${PullSpell1}"
}
/if (${Me.Class.ShortName.Equal[PAL]} && !${Me.SpellReady[${PullSpell1}]} && !${Me.SpellReady[${PullSpell2}]} && ${Me.SpellReady[${PullSpell3}]}) {
               /bc Casting ${PullSpell3} [+t+]${Target.Name}
	       /cast "${PullSpell3}"
}
/if (${Me.Class.ShortName.Equal[PAL]} && !${Me.SpellReady[${PullSpell1}]} && ${Me.SpellReady[${PullSpell2}]}) {
               /bc Casting ${PullSpell2} [+t+]${Target.Name}
	       /cast "${PullSpell2}"
}
/if (${Me.Class.ShortName.Equal[PAL]} && ${Me.SpellReady[${PullSpell1}]}) {
               /bc Casting ${PullSpell1} [+t+]${Target.Name}
	       /cast "${PullSpell1}"
}
/if (${Me.Class.ShortName.Equal[WAR]} && !${Me.XTarget}) {
    	        /bc Shooting an arrow at [+t+]${Target.Name}
                /ranged
/delay 2s
}
/delay 2s
             }
             /delay 4
           }
           /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<150 && ${Target.LineOfSight}) {  
            /delay 2s ${Me.CombatState.Equal[COMBAT]}
          }
|  This is here incase it tries to pull another mob when it already pulled one.
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
          /next tt
          }
  /varcalc i ${i}+1
  /if (${Bool[${Path[${CampNum},${i},1]}]}) /goto :MoveLoop
  /delay 1s

| This makes sure you hail the npc at the end of path 1
  /bc End of Path Encounted - No Aggro ${i}
  /varset EndOfPath 1
  /if (${CampNum}==1) {
    /delay 1s
    /bcg //end
    /delay 2s
/if (${bd}) /bct ${bdname} //casting "Selo's Sonata"
/if (${sh}) /bct ${shname} //casting "Communion of the Cheetah"
    /bcga //hidecorpse all
    /delay 5
    /bcga //hidecorpse looted
    /bcg //stopcast
    /delay 5
    /bcg //target ${MainAssist}
    /delay 2s
    /bcg //stick 15
    /delay 1s
    /bcg //stopcast
    /bcg //twist off
    /delay 3s
    /keypress esc
  }
  /varcalc i ${i}-2
  :ReturnPath
   /if (${i}<1) { 
     /if (${EndOfPath}==1 && ${CampNum}==1) {   
       /call ReturnToGribble
     }
     /return
   }
   /bc [+Y+]Path : [+y+]${CampNum}[+Y+]  Point : [+y+]${i}  [+x+]
      /squelch /moveto loc ${Path[${CampNum},${i},1]} ${Path[${CampNum},${i},2]}
     :MoveLoop2
       /delay 1
       /doevents
      /varset PullList ${Me.XTarget[1].Name}${Me.XTarget[2].Name}${Me.XTarget[3].Name}
     /doevents
     /if (!${MoveTo.Stopped}) /goto :MoveLoop2
     /varcalc i ${i}-1
     /goto :ReturnPath
| This pauses moveto and calls dps mode and repeats the loop until nothing is on xtarget.
:Movepause
/moveto pause
:dps
/call dpsmode
/delay 1s
/if (${Me.XTarget}==0) {
/call DoIMed
/delay 4s
/goto :moveloop
}
/goto :dps
/return


Sub Event_ToonReady(Line1,ToonName)
  /varcalc NumReady ${NumReady}+1
/return


Sub Event_UpdateEvent(Line1, TaskName)
  /varcalc EventStep ${EventStep}+1
  /bc [+m+]${TaskName}[+w+] : finished STEP [+m+]${EventStep}
/return

Sub Event_LootingEvent(Line1, ItemName)
  /varset ItemName ${ItemName.Right[-57]}
  /varset ItemName ${ItemName.Left[-1]}
  /bc Item = ${ItemName}
  /if (${ItemName.Find[Excavation Tools]} || ${ItemName.Find[Dynamite]} || ${ItemName.Find[Xulous Spellbook]}) {
     /bc Click item found = ${ItemName}
     /delay 2s   
     /delay 6s ${Me.CombatState.Equal[COMBAT]}
     /bct ${LooterName} //useitem "${ItemName}"
     /delay 1s
     /bcga //useitem "${ItemName}"
     /varset OuterItem ${ItemName}
     /varset ReturnGribble 1
/delay 2s 
}
  /if (${ReturnGribble}==1 && ${Me.XTarget}==0) {
    /delay 2s
    /bcg //end
    /delay 2s
    /bcg //target ${MainAssist}
    /delay 2s
    /bcg //stick 15
    /delay 3s
    /keypress esc
  }
/return

Sub GetTarget
/declare asd int inner
/declare tempID int local ${Target.ID}
/if (${Me.Moving}) /return
/for asd 1 to 10
/if (!${validTarget} && ${Target.ID}==${Me.XTarget[${asd}].ID}) {
      /varset validTarget 1
      /varset CurrentTarget ${Target.ID}
/next asd    
} else {
/xtar 1
      /varset validTarget 1
      /varset CurrentTarget ${Target.ID}
}


/if (!${validTarget} && ${Me.XTarget}>=1) /xtar 1
/if (!${Target.ID} && ${Me.XTarget}>=1) /xtar 1
/if (${Target.Type.Equal["Corpse"]}) /target clear
/if (${Target.Name.Equal[${MainAssist}]}) /target clear
/return

Sub DpsMode
/doevents
/call GetTarget
/if (${Target.CleanName.Equal[Gribble Grobblenobber]}) {
/keypress esc
/call GetTarget
}
/varset TempStickSetting ${StickSetting}
/if (${validTarget} && ${Target.PctHPs}<=${AssistAt} && ${Target.Type.Equal[NPC]} && ${Target.Distance} < ${AssistDistance} && ${Target.ID}) /call KillTarget
/if (${Me.PctAggro}==0 && ${Me.XTarget}>=1 && ${Target.Distance}<=200 && ${Me.SpellReady[${HateSpell3}]} && ${Melee.AggroMode}) /call once ${HateSpell3}
/return

Sub KillTarget
/doevents
/face fast
/call Attack
/if (${SpawnCount[npc radius 75 zradius 100]}>=3) /call Defensive
/if (${Target.Named}) /call Defensive
/if (!${validTarget} || ${ExcludeList.Find[${Target.DisplayName}]}) /multiline ; /squelch /target clear; /attack off; /return
/if (${Target.Type.Equal["Corpse"]} || !${Target.ID}) /multiline ; /squelch /target clear; /varset validTarget 0; /attack off; /return
/return

Sub Attack
/if (${Me.Sitting}) /squelch /stand
/if (!${Me.Combat} && ${Target.Distance} <= 35) /attack on
/call CheckHealth
/if (${Me.Class.ShortName.Equal[WAR]}) /call Aggro_WAR
/if (${Me.Class.ShortName.Equal[SHD]}) /call Aggro_SK
/if (${Me.Class.ShortName.Equal[PAL]}) /call Aggro_PAL
/if (${SpawnCount[npc radius 75 zradius 100]}>=3) /call Defensive
/if (${Target.Named}) /call Defensive
/if (!${Stick.Active}) /stick ${StickSetting}
/return

Sub Nuke
/if (${Me.Class.ShortName.Equal[WAR]}) /return
/if (${Me.Dead}) /Return
/if (${Me.SpellReady[${NukeSpell1}]} && ${Target.ID} && !${Target.Type.Equal["corpse"]} && !${Target.Type.Equal[PC]} && ${Target.Distance} <=50) {
	/cast "${NukeSpell1}"
	/return
}
/if (${Me.SpellReady[${NukeSpell2}]} && ${Target.ID} && !${Target.Type.Equal["corpse"]} && !${Target.Type.Equal[PC]} && ${Target.Distance} <=50) {
	/cast "${NukeSpell2}"
	/return
}
/if (${Me.AltAbilityReady[Ragged Bite of Agony]} && !${Me.Moving} && !${Target.Type.Equal["corpse"]}) /casting "Ragged Bite of Agony"
/if (${Me.AltAbilityReady[Vicious Bite of Chaos]} && !${Me.Moving} && !${Target.Type.Equal["corpse"]}) /casting "Vicious Bite of Chaos"
/return

Sub CheckHealth
/declare ia int inner
/varset GroupHealth 0
/if (${Me.Class.ShortName.Equal[WAR]}) /return
/if (${Me.Dead}) /return
/if (${Me.Class.ShortName.Equal[SHD]}) {
/if (${Me.PctHPs}<=50 && ${Me.SpellReady[${DireImplication}]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /cast "${DireImplication}"
/if (${Me.PctHPs}<75 && ${Me.SpellReady[${LifeTapSpell1}]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /cast "${LifeTapSpell1}"
/if (${Me.PctHPs}<75 && ${Me.SpellReady[${LifeTapSpell2}]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /cast "${LifeTapSpell2}"
/if (${Me.PctHPs}<20 && ${Me.AltAbilityReady[leech touch]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /casting "Leech Touch"
/if (${Me.PctMana}<60 && ${Me.AltAbilityReady[Thought Leech]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /casting "Thought Leech"
}
/if (${Me.Class.ShortName.Equal[PAL]}) {
/if (${Me.PctMana}<80 && ${Me.AltAbilityReady[Marr's Gift]}) /casting "Marr's Gift"
/if (${Me.PctHPs}<75 && ${Me.PctMana}>25 && ${Me.SpellReady[${HateSpell1}]} && ${Target.ID}) /cast "${HateSpell1}"
/if (${Me.PctHPs}<70 && ${Me.PctMana}>25 && ${Me.SpellReady[${HealSpell1}]} && ${Target.ID}) /cast "${HealSpell1}"
/if (${Me.PctHPs}<50 && ${Me.PctMana}>25 && !${Me.SpellReady[${HealSpell1}]} && ${Me.SpellReady[${HealSpell2}]} && ${Target.ID}) /cast "${HealSpell2}"
/for ia 0 to ${Group.Members}
/if (${Group.Member[${ia}].PctHPs} < 65 && ${Me.SpellReady[${HealSpell3}]}) {
/target ${Group.Member[${ia}].PctHPs}
/delay 5
/cast "${HealSpell3}"
 }
/if (${Group.Member[${ia}].ID}) {
              /varcalc GroupHealth ${GroupHealth}+${Group.Member[${ia}].PctHPs}
         } else {
              /varcalc GroupHealth ${GroupHealth} + 100
         }
        /next ia
           /if (${Me.SpellReady[${HealSpell2}]} && ${Math.Calc[${GroupHealth}/${Group.GroupSize}+1]}<${GHealGroupHealth}) {
		/cast "${HealSpell2}"
 }
}
/return

Sub Aggro_SK
/declare MobID int local
/declare i int local
/declare mobcount int local
/declare Mobs int local
/if (${Me.Dead}) /return
/if (${SpawnCount[npc radius 75 zradius 100]}>=3) /call Defensive
/if (${Target.Named}) /call Defensive
/if (!${Me.Combat} && ${Target.Distance} <= 35) /attack on
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.AbilityReady[Taunt]}) /doability Taunt
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.AbilityReady[Bash]}) /doability Bash
/if (${Me.XTarget}<2 && ${Target.Distance}<75 && ${Target.PctHPs}<98 && ${Me.SpellReady[${HateSpell1}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /call once ${HateSpell1}
/if (${Me.XTarget}<2 && ${Me.SpellReady[${ChallengeSpell}]}) /call once ChallengeSpell
/if (${Me.XTarget}>=2 && ${Me.AltAbilityReady[Improved Explosion of spite]}) /casting  "Improved Explosion of spite"
/if (${Me.Combat} && ${Me.AltAbilityReady[Mindless Hatred]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /casting "Mindless Hatred"
/if (${Me.Combat} && ${Me.AltAbilityReady[Ageless Enmity]} && !${Me.AltAbilityReady[Mindless Hatred]}  && ${Melee.AggroMode} && ${Me.PctAggro}<100) /casting "Ageless Enmity"
/if (${Me.Combat} && ${Me.SpellReady[${HateSpell1}]} && !${Me.AltAbilityReady[Ageless Enmity]} && !${Me.AltAbilityReady[Mindless Hatred]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /cast "${HateSpell1}"
/if (${Me.Combat} && ${Me.SpellReady[${HateSpell2}]} && !${Me.SpellReady[${HateSpell1}]} && !${Me.AltAbilityReady[Ageless Enmity]} && !${Me.AltAbilityReady[Mindless Hatred]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /cast "${HateSpell2}"
/if (${Me.Combat} && ${Me.SpellReady[${HateSpell3}]} && !${Me.SpellReady[${HateSpell2}]} && !${Me.SpellReady[${HateSpell1}]} && !${Me.AltAbilityReady[Ageless Enmity]} && !${Me.AltAbilityReady[Mindless Hatred]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /cast "${HateSpell3}"

/if (${Me.XTarget}>=2 && ${Me.AltAbilityReady[Improved Explosion of spite]}) /casting  "Improved Explosion of spite"
/if (${Me.XTarget}>=3 && ${Me.AltAbilityReady[Improved Explosion of hatred]}) /casting "Improved Explosion of hatred"
/if (${Me.XTarget}>=3 && ${Me.SpellReady[${AeHateSpell1}]}) /cast "${AeHateSpell1}"
/if (${Me.XTarget}>=4 && ${Me.SpellReady[${AeHateSpell2}]}) /cast "${AeHateSpell2}"
/if (${Me.XTarget}>=6 && ${Me.SpellReady[${AeHateSpell3}]}) /cast "${AeHateSpell3}"
/call CheckHealth
/call Offensive
/call Nuke
/return

Sub Aggro_PAL
/declare MobID int local
/declare i int local
/declare mobcount int local
/declare Mobs int local
/if (${Me.Dead}) /return
/if (${SpawnCount[npc radius 75 zradius 100]}>=3) /call Defensive
/if (${Target.Named}) /call Defensive
/if (!${Me.Combat} && ${Target.Distance} <= 35) /attack on
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.AbilityReady[Taunt]}) /doability Taunt
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.AbilityReady[Bash]}) /doability Bash
/if (${Target.PctHPs}<98 && ${Me.AltAbilityReady[Divine Stun]} && ${Melee.AggroMode}) /casting "Divine Stun"
/if (${Target.PctHPs}<98 && ${Me.SpellReady[${StunSpell1}]} && ${Melee.AggroMode}) /cast "${StunSpell1}"
/if (${Me.XTarget}<2 && ${Me.SpellReady[${ChallengeSpell}]}) /call once ChallengeSpell
/if (${Me.Combat} && ${Me.SpellReady[${HateSpell1}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /cast "${HateSpell1}"
/if (${Me.XTarget}>=3 && ${Me.SpellReady[${HealSpell2}]} && !${Me.AltAbilityReady[Beacon of the Righteous]}) /call Once "${HealSpell2}"
/if (${Me.XTarget}>=3 && ${Me.AltAbilityReady[Beacon of the Righteous]}) /casting  "Beacon of the Righteous"
/call CheckHealth
/call Offensive
/call Nuke
/return

Sub Aggro_WAR
/declare MobID int local
/declare i int local
/declare mobcount int local
/declare Mobs int local
/if (${Me.Dead}) /return
/call Defensive
/if (!${Me.Combat} && ${Target.Distance} <= 35) /attack on
/if (${Me.Combat} && ${Target.PctHPs}<98 && !${Me.Buff[Sneering Grin].ID} && ${Me.AltAbilityReady[Sneering Grin]} && ${Melee.AggroMode}) /casting "Sneering Grin"
/if (${Me.Combat} && ${Me.CombatAbilityReady[${StormwheelBlades}]} && ${Melee.AggroMode} && ${Me.XTarget}>=2) /disc ${StormwheelBlades}
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.PctAggro} < 100 && ${Me.AbilityReady[Taunt]}) /doability Taunt
/if (${Me.Combat} && ${Target.PctHPs}<=99 && ${Me.PctEndurance}>1 && ${Me.CombatAbilityReady[${Ridicule}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /disc ${Ridicule}
/if (${Me.Combat} && ${Target.PctHPs}<=99 && ${Me.AltAbilityReady[Blast of Anger]} && !${Me.CombatAbilityReady[${KrondalRoar}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /casting "Blast of Anger"
/if (${Me.Combat} && ${Target.PctHPs}<=99 && !${Me.AltAbilityReady[Blast of Anger]} && ${Me.AltAbilityReady[Rage of the Forsaken]} && !${Me.CombatAbilityReady[${KrondalRoar}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /casting "Rage of the Forsaken"
/if (${Me.Combat} && ${Target.PctHPs}<=99 && ${Me.CombatAbilityReady[${HarassingShout}]} && !${Me.AltAbilityReady[Blast of Anger]} && ${Me.AltAbilityReady[Rage of the Forsaken]} && !${Me.CombatAbilityReady[Krondal's Roar]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /disc ${HarassingShout}
/if (${Me.Combat} && ${Target.PctHPs}<=99 && ${Me.CombatAbilityReady[${PhantomAggressor}]} && !${Me.CombatAbilityReady[${HarassingShout}]} && !${Me.AltAbilityReady[Blast of Anger]} && ${Me.AltAbilityReady[Rage of the Forsaken]} && !${Me.CombatAbilityReady[${KrondalRoar}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /disc ${PhantomAggressor}
/if (${Me.Combat} && ${Me.AltAbilityReady[Area Taunt]} && ${Melee.AggroMode} && ${Me.XTarget}>=4) /casting "Area Taunt"
/if (${Me.Combat} && !${Me.CombatAbilityReady[${StormwheelBlades}]} && ${Target.PctHPs}<=99 && ${Me.PctEndurance}>1 && ${Me.CombatAbilityReady[${RoarofChallenge}]} && ${Melee.AggroMode} && ${Me.XTarget}>=3) /disc ${RoarofChallenge}
/if (${Me.Combat} && ${Me.AltAbilityReady[Warlord's Tenacity]} && ${Target.PctHPs}<=99 && ${Melee.AggroMode} && ${Me.XTarget}>=4) /casting "Warlord's Tenacity"
/if (${Me.Combat} && ${Me.AltAbilityReady[Warlord's Tenacity]} && ${Target.PctHPs}<=99 && ${Melee.AggroMode} && ${Target.Named}) /casting "Warlord's Tenacity"

/if (${Me.Combat} && !${Me.Song[Imperator's Command].ID} && ${Me.AltAbilityReady[Imperator's Command]} && ${Target.PctHPs}<=99 && ${Melee.AggroMode} && ${Me.XTarget}>=3) /casting "Imperator's Command"
/if (${Me.Combat} && !${Me.Song[Imperator's Command].ID} && ${Me.AltAbilityReady[Imperator's Command]} && ${Target.PctHPs}<=99 && ${Melee.AggroMode} && ${Target.Named}) /casting "Imperator's Command"
/return

Sub Once(subname,int force)
/if (${Last${subname}}==${Target.ID}) /return
/varset CurrentSub ${subname}
/if (!${Defined[${subname}]}) /return
/if (${${subname}Conditions}||!${Defined[${subname}Conditions]}) {
	/if (${FindItem[${${subname}}].InvSlot} && !${FindItem[${${subname}}].Timer}) /call Cast "${${subname}}" item ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
	/if (${Me.AltAbilityReady[${${subname}}]}) /call Cast "${${subname}}" alt ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
	/if (${Me.SpellReady[${${subname}}]}||${Me.Book[${${subname}${loop}}]} && ${force} && !${Me.AltAbility[${${subname}${loop}}]}) /call Cast "${${subname}}" ${DefaultGem} ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
	/if (${Macro.Return.Equal[CAST_SUCCESS]}||${Macro.Return.Equal[CAST_NOTHOLD]}) /varset Last${CurrentSub} ${Target.ID}
	}
/return

Sub Defensive
/if (${Me.Class.ShortName.Equal[WAR]} && ${Me.Combat} && ${Me.CombatAbilityReady[Fortitude Discipline]} && ${Melee.AggroMode} && ${Me.XTarget}>=5) {
/stopdisc
/delay 4
/disc Fortitude Discipline
}
/if (${Me.Class.ShortName.Equal[SHD]} && ${Me.Combat} && ${Me.CombatAbilityReady[Deflection Discipline]} && ${Melee.AggroMode} && ${Me.XTarget}>=5) {
/stopdisc
/delay 4
/disc Deflection Discipline
}
/if (${Me.Class.ShortName.Equal[PAL]} && ${Me.Combat} && ${Me.CombatAbilityReady[Deflection Discipline]} && ${Melee.AggroMode} && ${Me.XTarget}>=5) {
/stopdisc
/delay 4
/disc Deflection Discipline
}
/if (${Me.Class.ShortName.Equal[WAR]} && ${Me.Combat} && !${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Target.PctHPs}<98 && !${Me.Buff[Brace for Impact].ID} && ${Me.AltAbilityReady[Brace for Impact]} && ${Melee.AggroMode} && ${Me.XTarget}>=3) /casting "Brace for Impact"
/if (${SpawnCount[npc radius 75 zradius 100]}>3 && !${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Me.XTarget}>=3) /disc ${Defensive1}
/if (!${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Target.Named}) /disc ${Defensive1}
/if (${SpawnCount[npc radius 75 zradius 100]}>3 && !${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Me.XTarget}>=3) /disc ${Defensive2}
/if (!${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Target.Named}) /disc ${Defensive2}
/if (${SpawnCount[npc radius 75 zradius 100]}>3 && !${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive3}]} && !${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Me.XTarget}>=3) /disc ${Defensive3}
/if (!${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive3}]} && !${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Target.Named}) /disc ${Defensive3}
/return

Sub Offensive
/if (${Me.Class.ShortName.Equal[WAR]}) /return
/if (${Me.Class.ShortName.Equal[PAL]}) /return
/if (${Me.AltAbilityReady[Harm Touch]} && ${Target.Named} && !${Target.Type.Equal["corpse"]}) /casting "Harm Touch"
/if (${Me.AltAbilityReady[Visage of Death]} && ${Target.Named} && !${Target.Type.Equal["corpse"]}) /casting "Visage of Death"
/if (${Me.CombatAbilityReady[${ScarletBlade}]} && ${Target.Named} && !${Target.Type.Equal["corpse"]}) /disc ${ScarletBlade}
/if (${Me.AltAbilityReady[Visage of Death]} && ${Me.XTarget}>=4 && !${Target.Type.Equal["corpse"]}) /casting "Visage of Death"
/if (${Me.CombatAbilityReady[${ScarletBlade}]} && ${Me.XTarget}>=4 && !${Target.Type.Equal["corpse"]}) /disc ${ScarletBlade}
/return

Sub GeneralDeclares
/if (${Me.Class.ShortName.Equal[SHD]}) /declare iniName string outer DH_SK_${Me.Name}.ini
/if (${Me.Class.ShortName.Equal[WAR]}) /declare iniName string outer DH_WAR_${Me.Name}.ini
/if (${Me.Class.ShortName.Equal[PAL]}) /declare iniName string outer DH_PAL_${Me.Name}.ini
  /declare IniPathFile string outer scouting.ini
  /declare Path[5,26,2] int outer
  /declare MaxPaths int outer
  /declare NumReady int outer 0
  /declare CampNum int outer 1
  /declare ReadysRequired int outer 0
  /declare ClickName string outer 0
  /declare OuterItem string outer
  /declare ReturnGribble int outer 0
  /declare zrange int outer 100
  /declare BugTimer timer outer 20000
  /declare BugF int outer 0
  /declare NumTargets int outer 0
  /declare CurrentTarget int outer 0
  /declare EventStep int outer 0
  /declare validTarget int outer 0
  /declare TempStickSetting int outer front
  /declare TempIgnoreTimer timer outer
  /declare TempAggroTimer timer outer
  /declare p int local
  /declare CurrentSub       string outer
  /declare LastChallengeSpell    string outer
  /declare LastHateSpell1    string outer
  /declare LastHealSpell2    string outer
  /declare bufftimer timer outer 0
  /declare bufftimer2 timer outer 0
  /declare MemSpellTimer  timer  outer 0
  /declare medding int outer 0
  /declare CantHit int outer
  /declare bdname string outer	
  /declare bd int outer 0
  /declare shname string outer	
  /declare sh int outer 0
  /declare CombatList string outer ${HateSpell1},${HateSpell2},${HateSpell3},${AeHateSpell1},${AeHateSpell2},${AeHateSpell3},${AeHateSpell4},${NukeSpell1},${NukeSpell2},${ChallengeSpell}|
  /declare AeList string outer ${AeHateSpell1},${AeHateSpell2},${AeHateSpell3},${AeHateSpell4}
 /declare Toon1 string outer ${Group.Member[1].Name}
 /declare Toon2 string outer ${Group.Member[2].Name}
 /declare Toon3 string outer ${Group.Member[3].Name}
 /declare Toon4 string outer ${Group.Member[4].Name}
 /declare LooterName string outer ${Group.Member[5].Name}
 /declare MainAssist string outer ${Me.Name}
 /declare GHealGroupHealth int outer 65
 /declare GroupHealth int outer 0
 /call DeclareIniVar BRD string Class kissassist
 /call DeclareIniVar BST string Class kissassist
 /call DeclareIniVar BER string Class kissassist
 /call DeclareIniVar CLR string Class kissassist
 /call DeclareIniVar DRU string Class kissassist
 /call DeclareIniVar ENC string Class kissassist
 /call DeclareIniVar MAG string Class kissassist
 /call DeclareIniVar MNK string Class kissassist
 /call DeclareIniVar NEC string Class kissassist
 /call DeclareIniVar PAL string Class kissassist
 /call DeclareIniVar RNG string Class kissassist
 /call DeclareIniVar ROG string Class kissassist
 /call DeclareIniVar SHD string Class kissassist
 /call DeclareIniVar SHM string Class kissassist
 /call DeclareIniVar WAR string Class kissassist
 /call DeclareIniVar WIZ string Class afnuke
 /call DeclareIniVar Aggro int Settings 0 /doaggro
 /call DeclareIniVar UseCampfire int Settings 0
/if (${Me.Class.ShortName.Equal[WAR]}) {
 /call DeclareIniVar SummonItem string Settings "Huntsman's Ethereal Quiver"
 /call DeclareIniVar Ammo string Settings "Ethereal Arrow"
 /call DeclareIniVar Defensive1 string Disc "Last Stand Discipline Rk. II"
 /call DeclareIniVar Defensive2 string Disc "No Time to Bleed"
 /call DeclareIniVar Defensive3 string Disc "Steadfast Defense"
 /call DeclareIniVar PullSpell1 string Disc "Krondal's Roar"
 /call DeclareIniVar PullSpell2 string Disc "Ridicule"
 /call DeclareIniVar PullSpell3 string Disc "Ridicule"
 /call DeclareIniVar HarassingShout string Aggro "Harassing Shout"
 /call DeclareIniVar PhantomAggressor string Aggro "Phantom Aggressor"
 /call DeclareIniVar StormwheelBlades string Aggro "Stormwheel Blades"
 /call DeclareIniVar Ridicule string Aggro "Ridicule"
 /call DeclareIniVar KrondalRoar string Aggro "Krondal's Roar"
 /call DeclareIniVar RoarofChallenge string Aggro "Roar of Challenge"
 /call DeclareIniVar BuffGem string Spells "12"
}
/if (${Me.Class.ShortName.Equal[PAL]}) {
 /call DeclareIniVar Defensive1 string Disc "Reverent Penitence"
 /call DeclareIniVar Defensive2 string Disc "Brightwing Mantle"
 /call DeclareIniVar Defensive3 string Disc "Holy Guardian Discipline"
 /call DeclareIniVar HateSpell1 string Spells "Valiant Deflection"
 /call DeclareIniVar PullSpell1 string Spells "Demand for Honor"
 /call DeclareIniVar PullSpell2 string Spells "Force of Reverence"
 /call DeclareIniVar PullSpell3 string Spells "Force of the Iceclad"
 /call DeclareIniVar StunSpell1 string Spells "Force of Reverence"
 /call DeclareIniVar StunSpell2 string Spells "Force of the Iceclad"
 /call DeclareIniVar StunSpell3 string Spells "Reverent Force"
 /call DeclareIniVar StunSpell4 string Spells "Lesson of Sorrow"
 /call DeclareIniVar ChallengeSpell string Spells "Demand for Honor"
 /call DeclareIniVar HealSpell1 string Spells "Sorrow"
 /call DeclareIniVar HealSpell2 string Spells "Aurora of Sunrise"
 /call DeclareIniVar HealSpell3 string Spells "Burst of Sunrise"
 /call DeclareIniVar GHealSpell1 string Spells "Wave of Sorrow"
 /call DeclareIniVar BuffGem string Spells "12"
}
 /call DeclareIniVar RespiteDisc string Spells "Rest"
 /call DeclareIniVar StickSetting string Settings 35 
 /call DeclareIniVar AssistDistance int Settings 100
 /call DeclareIniVar AssistAt int Settings 100 /assistat
 /call DeclareIniVar DoDot int Settings 0 /Dot
 /call DeclareIniVar NumOfDots string Settings 1
/if (${Me.Class.ShortName.Equal[SHD]}) {
 /call DeclareIniVar Defensive1 string Disc "Grelleth's Carapace Rk. II"
 /call DeclareIniVar Defensive2 string Disc "Bonebrood Mantle Rk. II"
 /call DeclareIniVar Defensive3 string Disc "Unholy Guardian Discipline"
 /call DeclareIniVar ScarletBlade string Disc "Scarlet Blade"
 /call DeclareIniVar PullSpell1 string Spells "Terror of Vergalid"
 /call DeclareIniVar PullSpell2 string Spells "Terror of Vergalid"
 /call DeclareIniVar PullSpell3 string Spells "Terror of Vergalid"
 /call DeclareIniVar HateSpell1 string Spells "Terror of Jelvalak"
 /call DeclareIniVar HateSpell2 string Spells "Terror of the Soulbleeder "
 /call DeclareIniVar HateSpell3 string Spells "Terror of Vergalid"
 /call DeclareIniVar AeHateSpell1 string Spells "Burst of Spite"
 /call DeclareIniVar AeHateSpell2 string Spells "Revile"
 /call DeclareIniVar AeHateSpell3 string Spells "Vilify"
 /call DeclareIniVar ChallengeSpell string Spells "Demand for Power Rk. II"
 /call DeclareIniVar NukeSpell1 string Spells "Malarian Spear"
 /call DeclareIniVar NukeSpell2 string Spells "Rotmarrow Spear"
 /call DeclareIniVar LifeTapSpell1 string Spells "Touch of Tharoff"
 /call DeclareIniVar LifeTapSpell2 string Spells "Touch of Kildrukaun"
 /call DeclareIniVar LifeTapSpell3 string Spells "Touch of Severan"
 /call DeclareIniVar DireImplication string Spells "Dire Implication"
 /for p 1 to ${NumOfDots}
	/call DeclareIniVar Dot${p} string Spells Changeme
 /next p
 /call DeclareIniVar BuffGem string Spells "12"
}
 /call DeclareIniVar NumSelfBuff string SelfBuffs 5
 /if (${NumSelfBuff}) {
	/for p 1 to ${NumSelfBuff}
	/call DeclareIniVar selfBuff${p} string SelfBuffs ChangeMe
	/if (${Me.Class.Name.Equal[cleric]} || ${Me.Class.Name.Equal[Shaman]}) {
		/call DeclareIniVar selfBuffToCheck${p} string SelfBuffs ${selfBuff${p}}
		} else  {
		/declare selfBuffToCheck${p}  string outer ${selfBuff${p}}
		}
	/call DeclareIniVar SelfType${p} string SelfBuffs ChangeMe
  /next p
 }
 /declare Macro1 string outer ${${Group.Member[1].Class.ShortName}}
 /declare Macro2 string outer ${${Group.Member[2].Class.ShortName}}
 /declare Macro3 string outer ${${Group.Member[3].Class.ShortName}}
 /declare Macro4 string outer ${${Group.Member[4].Class.ShortName}}
 /declare Macro5 string outer ${${Group.Member[5].Class.ShortName}}
/return

Sub DeclareIniVar(string name,string varType,string section,string value,string alias)
/if ( !${Defined[${name}]} ) /declare ${name} ${varType} outer
/varset ${name} ${Ini[${iniName},${section},${name.Left[1].Upper}${name.Right[-1]},"${value}"]}
/ini "${iniName}" "${section}" "${name.Left[1].Upper}${name.Right[-1]}" "${${name}}"
/if ( ${Defined[alias]} ) /squelch /alias ${alias} /echo set: ${name}
/if (${Me.Book[${Me.Book[${${name}} rk. iii]}].ID}) /varset ${name} ${Me.Book[${Me.Book[${${name}} rk. iii]}].Name} 
/if (${Me.Book[${Me.Book[${${name}} rk. ii]}].ID}) /varset ${name} ${Me.Book[${Me.Book[${${name}} rk. ii]}].Name}
/if (${Me.CombatAbility[${${name}} rk. iii]}) /varset ${name} ${${name}} rk. iii
/if (${Me.CombatAbility[${${name}} rk. ii]}) /varset ${name} ${${name}} rk. ii
/return



Sub CastItemClicky(string sItemClicky)
/if (!${FindItem[=${sItemClicky}].ID}) {
	/if (!${ItemTimer}) {
		/call CreateTImer ItemTimer
		/echo You don't seem to have ${sItemClicky} in your Inventory. Check inventory and Ini Spelling.
		/varset ItemTimer 60s
		}
	/return
	}
/declare OldItem string local
|/echo Need to cast ${sItemClicky} and its Worn ${FindItem[${sItemClicky}].EffectType.Equal[Click Worn]} and itemSlot ${FindItem["${sItemClicky}"].InvSlot}
/if (${FindItem[${sItemClicky}].EffectType.Equal[Click Worn]} && ${FindItem[${sItemClicky}].InvSlot} || !${Me.HaveExpansion[Veil of Alaris]}) {
	/varset OldItem ${Me.Inventory[${FindItem[${sItemClicky}].WornSlot[1].ID}].Name}
    /exchange "${sItemClicky}" ${FindItem[${sItemClicky}].WornSlot[1].ID}
	/Echo Using ${sItemClicky} Clicky
    /nomodkey /itemnotify ${FindItem["${sItemClicky}"].InvSlot} rightmouseup
    /delay ${Math.Calc[${FindItem[${sItemClicky}].CastTime}+1]}s
    /timed 10 /exchange "${OldItem}" ${FindItem[${OldItem}].WornSlot[1].ID}
    /delay 5s ${Me.Inventory[${FindItem[${OldItem}].WornSlot[1].ID}].Name.Equal[${OldItem}]}
  } else {
    /Echo Using ${sItemClicky} Clicky
    /if (!${me.Casting.ID}) /nomodkey /itemnotify ${FindItem["${sItemClicky}"].InvSlot} rightmouseup
    /delay ${Math.Calc[${FindItem[${sItemClicky}].CastTime}+1]}s
  }
/return

Sub CheckBuffies(string MySub)
/declare a int local
/for a 1 to ${NumSelfBuff}
    /if ( ${selfBuff${a}.NotEqual[NULL]} && ${SelfType${a}.Equal[item]} && ${FindItem[=${selfBuff${a}}].ID} && ${Me.Buff[${FindItem[=${selfBuff${a}}].Spell.Name}].Duration}<4 && !${FindItem[=${selfBuff${a}}].Timer}) {
       /if (!${Spell[${FindItem[=${selfBuff${a}}].Spell.Name}].Stacks[2]}) /goto :SkipBuff
		/call CastItemClicky "${selfBuff${a}}"
    } else /if ( ${Me.Book[${selfBuff${a}}]} && ${SelfType${a}.Find[gem]} && ${selfBuff${a}.NotEqual[NULL]} && ${Spell[${selfBuff${a}}].Mana} < ${Me.CurrentMana} && !${Me.Class.Name.Equal[bard]} ) {
      /if ( !${Me.Buff[${selfBuffToCheck${a}}].ID} || ${Me.Buff[${selfBuffToCheck${a}}].Duration} < 4 ) {
         /if (!${Spell[${selfBuff${a}}].Stacks[2]}) /goto :SkipBuff
		 /if (!${Me.Gem[${selfBuff${a}}]})  /call MemSpell "${selfBuff${a}}" ${SelfType${a}}     
		 /if (${Me.SpellReady[${selfBuff${a}}]}) {
			/if (${Spell[${selfBuff${a}}].TargetType.Find[Single]}) /target myself
			/if (${Bool[${MySub}]}) /call Cast "${selfBuff${a}}" "${SelfType${a}}" 0 ${MySub}
			/if (!${Bool[${MySub}]}) /call Cast "${selfBuff${a}}" "${SelfType${a}}" 0 
      /return
      }
    }
	}
    :SkipBuff
  /next a
/return

Sub Checkselfbuff
/if (${Me.Class.ShortName.Equal[SHD]} && ${Me.AltAbilityReady[Voice of Thule]}) {
/target ${MainAssist}
/delay 5
/alt act 7000
}
/call CheckBuffies
/varset bufftimer 10s
/return

Sub MemSpell(SpellName,SpellGem)
/varset bufftimer 0
/if (${MemSpellTimer} || !${Me.Book[${SpellName}]}) {
	/if (!${Me.Book[${SpellName}]} && !${SpellTimer}) {
	/call CreateTimer SpellTimer
	/Echo You don't have ${SpellName} in your Spell book. Check your ini for correct spelling.
	/varset SpellTimer 5s
	}
	/return
}
/if (${SpellGem.Length}==1)	/memspell ${SpellGem.Right[1]} "${SpellName}"
/if (${SpellGem.Length}==2)	/memspell ${SpellGem.Right[2]} "${SpellName}"
/if (${SpellGem.Length}==4)	/memspell ${SpellGem.Right[1]} "${SpellName}"
/if (${SpellGem.Length}==5)	/memspell ${SpellGem.Right[2]} "${SpellName}"
/delay 5s ${Me.Gem[${SpellName}]}
/varset  MemSpellTimer ${Math.Calc[${Spell[${SpellName}].RecastTime}+15]}S
/call Checkselfbuff
/return

Sub DoIMed
/if (${Me.PctEndurance}<=21) {
/sit
}
:keepmedding
/if (${Me.XTarget}<1 && ${Me.Sitting} && ${Me.PctEndurance}<=90) /goto :keepmedding
/return

|In case toons got stuck somewhere
Sub AnyoneLost
/bcg //multiline ; /target ${MainAssist} ;/navigate target
/delay 3s
/return

- - - Updated - - -

heres the tanks

- - - Updated - - -

Rich (BB code):
[General]
KissAssistVer=8.4.2
Role=Tank
CampRadius=25
CampRadiusExceed=150
ReturnToCamp=1
ChaseAssist=0
ChaseDistance=25
MedOn=1
MedStart=20
MedCombat=0
LootOn=0
RezAcceptOn=1
AcceptInvitesOn=1
EQBCOn=1
GroupWatchOn=1
IRCOn=0
MiscGem=8
HoTTOn=0
CampfireOn=0
[Melee]
AssistAt=100
MeleeOn=1
FaceMobOn=1
MeleeDistance=50
StickHow=front
AutoFireOn=0
[Buffs]
BuffsOn=1
Buffs1=Champion's Aura|Aura|Champion's Aura Effect
Buffs2=NULL
Buffs3=NULL
Buffs4=NULL
Buffs5=NULL
Buffs6=NULL
Buffs7=NULL
Buffs8=NULL
Buffs9=NULL
Buffs10=Familiar of the Jungle
Buffs11=NULL
Buffs12=NULL
Buffs13=NULL
Buffs14=NULL
Buffs15=NULL
Buffs16=NULL
Buffs17=NULL
Buffs18=NULL
Buffs19=NULL
Buffs20=NULL
RebuffOn=1
CheckBuffsTimer=20
[DPS]
DPSOn=1
DPSSkip=0
DPSInterval=2
DPS1=Jeer|99
DPS2=Bracing Defense|95
DPS3=Knuckle Crush|90
DPS4=Disarm|85
DPS5=Field Armorer|80
DPS6=Shield Topple|75
DPS7=Bazu Bluster|50
DPS8=Opportunistic Strike|19
DPS9=NULL
DPS10=NULL
DPS11=NULL
DPS12=NULL
DPS13=NULL
DPS14=NULL
DPS15=NULL
[Heals]
Help=Format Spell|% to heal at i.e. Devout Light Rk. II|50
HealsOn=1
Heals1=Furious Discipline|30|Me
Heals2=NULL
Heals3=NULL
Heals4=NULL
Heals5=NULL
Heals6=NULL
Heals7=NULL
Heals8=NULL
AutoRezOn=0
AutoRezWith=Your Rez Item/AA/Spell
XTarHeal=0
[Merc]
Help=To use: Turn off Auto Assist in Manage Mercenary Window
MercOn=1
MercAssistAt=96
[Pull]
PullWith=Bazu Roar
MaxRadius=375
MaxZRange=150
LoSFailOn=0
PullWait=5
PullRoleToggle=0
ChainPull=0
ChainPullHP=90
ChainPullPause=30|2
[AFKTools]
AFKToolsOn=1
AFKGMAction=/quit
AFKPCRadius=150
AFKHelp=AFKGMAction=0 Off, 1 Pause Macro, 2 End Macro, 3 Unload MQ2, 4 Quit Game
CampOnDeath=0
ClickBacktoCamp=0
[Burn]
BurnText=Decepticons Attack
Burn1=Heroic Ironhand Breastplate
Burn2=Fourth Wind
Burn3=Stonewall Discipline
Burn4=Armor of Timeworn Runes
Burn5=Brutal Onslaught Discipline
Burn6=Punch Through
BurnAllNamed=1
Burn7=NULL
Burn8=NULL
Burn9=NULL
Burn10=NULL
Burn11=NULL
Burn12=NULL
Burn13=NULL
Burn14=NULL
Burn15=NULL
[SpellSet]
LoadSpellSet=0
SpellSetName=KissAssist
[AE]
AEOn=0
AERadius=50
AE1=NULL
AE2=NULL
AE3=NULL
AE4=NULL
AE5=NULL
[Aggro]
AggroOn=0
Aggro1=NULL
Aggro2=NULL
Aggro3=NULL
[Cures]
CuresOn=0
Cures1=NULL
Cures2=NULL
Cures3=NULL
Cures4=NULL
Cures5=NULL
 
DoLoot and LootOn are sent to the clients after they load up KissAssist so it's an issue with the variables within KissAssist I think. Those variables might have been deleted and replaced with something else so the macro won't work until it's updated.

I already told you what's missing.
 
i uploaded new kissassist still say
DOCommand-couldn't parse '/doleashtoon 1'
 
the macro itself is making a call that is not defined, you either have to fix the macro yourself or ask others to look at the V3 one and fix it. Kiss is not broken, the V3 macro is...
 
Rich (BB code):
|ScoutingAhead All Tanks v2.0

#turbo 40
#include spell_routines.inc
#include wait4rez.inc

#event ToonReady "<#1> Ready"
#event UpdateEvent "#*#Your task '#1#' has been updated."
#event LootingEvent "#*# has looted a #1#.-#*#"

| Run /mac scoutingahead on your tank. Make sure you setup the INI right or it will not work.
| This macro is untested with mercs, but it should still work with them.
| There is a 75s delay at the start of every heroic for rebuffs defined in your ini.
| If you use campfire make sure you have 3 people in your FS in the group otherwise you will get spammed trying to create a campfire.
| This macro does not need autofollow
| Everyone should loot except MT if possible otherwise some items may not get picked up.

Sub Main
  /declare DummyVariable int 1
  /declare iii int inner
  /echo Scouting Ahead All Tanks v2.0
  /call GeneralDeclares

  /if (${Defined[Param0]}) /varset CampNum ${Param0}
  /call SetUp
  /if (${Zone.ShortName.Equal[deadhills_errand]}) /goto :mainloop
  /call GetInstance
 :SkipZoneIn
  /call ZoneIn
  /if (${UseCampfire})  /call createcampfire
  /moveto loc 1547 395
  /popup Scouting Ahead All Tanks v2.0
  /call SetupCamp
/if (${Me.XTarget}==0) /varset bufftimer2 75s
  /bcg //chase 1
  /bcg //doleashtoon 1
  /bcg //varset LootOn 1
  /bcg //varset DoLoot 1

:mainloop
/if (${bufftimer2}) /call Checkselfbuff
/if (${bufftimer2}) /goto :mainloop
/if (!${bufftimer2}) {
:killmob
  /for iii 1 to 5
  /if (${Me.CombatState.NotEqual[COMBAT]} && ${ReturnGribble}==1) /call ReturnToGribble

  /if  (${Group.Member[${iii}].Type.NotEqual[corpse]} && ${CampNum}==1) {
     /if (${Me.CombatState.NotEqual[COMBAT]}) {
       /call PullMobA 1 4 240 0 4
    }
  }
  /next iii
  /doevents
  /if (${Me.State.Equal[HOVER]}) {
    /varset CampNum 6
  }
  /delay 2
  /doevents
  /if (${Me.XTarget}==0) /goto :killmob
  /if (${Me.XTarget}>=1) {
/call dpsmode
 }
  /if (${Target.ID}) /face fast
 /delay 2	
 /goto :killmob
}
}
/return

Sub SetUp
/declare kk int inner
/declare i int inner
/declare k int inner
  /alert clear 1
  /alert add 1 Gribble
  /alert add 1 adventurer
  /for kk 1 to ${Group}
    /if (${Group.Member[${kk}].Type.Equal[PC]}) /varcalc ReadysRequired ${ReadysRequired}+1
  /next kk
|  /echo ${ReadysRequired}

  /varset i 1

|  Loads the Path file
  :iloop1
    /varset k 1
    /if (!${Bool[${Ini[${IniPathFile},"Path${i}","PointX${k}"]}]}) {
      /varcalc MaxPaths ${i}-1 
      /echo Number of paths ${MaxPaths}    
      /return
    }
    :kloop1
      /if (!${Bool[${Ini[${IniPathFile},"Path${i}","PointX${k}"]}]}) {
        /varset Path[${i},${k},1] 0
        /varset Path[${i},${k},2] 0
        /varcalc i ${i}+1
        /goto :iloop1
      } else {
    |    /echo ${i} ${k} ${Ini[${IniPathFile},"Path${i}","PointX${k}"]}
        /varset Path[${i},${k},1] ${Ini[${IniPathFile},"Path${i}","PointX${k}"]}
        /varset Path[${i},${k},2] ${Ini[${IniPathFile},"Path${i}","PointY${k}"]}
        /echo ${Path[${i},${k},1]}
        /varcalc k ${k}+1
        
      }
    
  /goto :kloop1

/return

Sub createcampfire
        /windowstate FellowshipWnd open
        /delay 5
        /nomodkey /notify FellowshipWnd FP_Subwindows tabselect 2
            /nomodkey /notify FellowshipWnd FP_DestroyCampsite leftmouseup
            /delay 5s ${Window[ConfirmationDialogBox].Open}
            /if (${Window[ConfirmationDialogBox].Open}) {
                /nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup
            }
        /delay 1s
        }
        /delay 1s
        /nomodkey /notify FellowshipWnd FP_RefreshList leftmouseup
        /delay 1s        
        /nomodkey /notify FellowshipWnd FP_CampsiteKitList listselect 1
        /delay 1s
        /nomodkey /notify FellowshipWnd FP_CreateCampsite leftmouseup
        /delay 5s
        /windowstate FellowshipWnd close
/return

Sub ReturnToGribble
  /delay 90s ${Me.CombatState.NotEqual[COMBAT]}
  /delay 180s !${Me.XTarget}||${Me.XTarget[1].PctHPs}>99 
  /delay 15s
  /beep
  /bcg //end
  /delay 2s
  /bcga //tar Gribble
  /delay 5s
  /delay 20s ${SpawnCount[PC]}==${SpawnCount[PC radius 40]}
  /keypress H
  /delay 10s
  /kickplayers task
  /delay 5s ${Window[ConfirmationDialogBox].Open}
  /nomodkey /notify ConfirmationDialogBox Yes_Button leftmouseup
  /bcga //taskquit
  /delay 10s
  /bcga //say back
  /delay 120s ${Zone.ShortName.Equal[deadhills]}
  /delay 30s
  /varset CampNum 1
  /varset ReturnGribble 0
  /mac disrupt
/return 

Sub GetInstance
  /bcga //plugin mq2navigation
  /delay 10s
  /bcga //tar Gribble
  /delay 1
  /bcga //navigate target
  /delay 10s
  /bcga //sit
  /delay 10
  /if (${Target.Distance}<50) {
    /say willing
    /delay 4s
    /notify TaskSelectWnd TSEL_TaskList listselect ${Window[TaskSelectWnd].Child[TSEL_TaskList].List[=Scouting Ahead]}
    /delay 4s
    /notify TaskSelectWnd TSEL_AcceptButton leftmouse 2
  } else {
   /bc Gribble is OOR
   /endm
  }
/return

Sub Wait4Ready(int MaxReady)
|  This is a routine I call which waits for every toon to say they are ready to proceed.  I normally use this for zoning and moving between camps (I've used the slacker /afol method tho in this macro)
 | /echo ${MaxReady} ${NumReady}
  /doevents flush
  :loop
   /doevents
   /delay 1
  /if (${NumReady}<${MaxReady}) /goto :loop
  /bc All toons are [+g+]Ready
  /varset NumReady 0
/return

Sub ZoneIn
/declare kk int inner
 :shortloop
  /tar Gribble
|----------
|
|
|  Insert your /bct commands to role buffs for the characters.  You can do it here (in deadhills) b4 you zone in.
|
|----------
  /delay 32s
  /say leave
  /delay 120s ${Zone.ShortName.Equal[deadhills_errand]}
  /if (!${Zone.ShortName.Equal[deadhills_errand]}) /goto :shortloop
  /keypress ESC
  /delay 10s
  /for kk 1 to ${Group}
      /delay ${Math.Rand[9]}s
      /bct ${Group.Member[${kk}].Name} //mac deadzone.mac
  /next kk
  /echo waiting for readys.
  /call Wait4Ready ${ReadysRequired}


| Load up some clickie buffs on toons.

  /delay 6
  /return
}

Sub SetupCamp
 /varset Macro1 ${${Group.Member[1].Class.ShortName}}
 /varset Macro2 ${${Group.Member[2].Class.ShortName}}
 /varset Macro3 ${${Group.Member[3].Class.ShortName}}
 /varset Macro4 ${${Group.Member[4].Class.ShortName}}
 /varset Macro5 ${${Group.Member[5].Class.ShortName}}
|----------------
|
|  This area is where you send out /bct's to your other toons to set up.  i.e The tank sets up ready to receive mobs, you healers set up.
|
|-----------------
  /delay 5s
  /bcg //target ${MainAssist}
  /delay 2s
  /bct ${Earldibbles} //mac ${Macro1}
  /bct ${Smokenfist} //mac ${Macro2}
  /bct ${Toon3} //mac ${Macro3}
  /bct ${Toon4} //mac ${Macro4}
  /bct ${Mossaxe} //mac ${Macro5}
  /delay 5s
/return

Sub PullMobA(PullType, MaxMobs, PullRange, MezRange, NumberMobsToCheck)
|| PullType = 1 = Mindless Hatred  2 = Helix of the Undying, 4 = Ageless Enmity, 8 = Double Pull...  (bitwise operation)
/declare i int inner
/declare iiii int inner 0
/declare EndOfPath int inner 0
/declare CheckMob int inner 1
/declare PullList string inner
/declare tt int inner 0
  /varset EndOfPath 0
  /varset i 1
   :moveloop
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
     /bc [+Y+]Path : [+y+]${CampNum}[+Y+]  Point : [+y+]${i}  [+x+]
    /squelch /moveto loc ${Path[${CampNum},${i},1]} ${Path[${CampNum},${i},2]}
    /delay 3s
    /if (${SpawnCount[PC]}>${SpawnCount[PC radius 40]}) /call AnyoneLost
     :MoveLoop1
 /for iiii 1 to ${Group}
/if (${Group.Member[${iiii}].Class.ShortName.Equal[BRD]}) {
/varset bd 1
/varset bdname ${Group.Member[${iiii}].CleanName}
}
/if (${Group.Member[${iiii}].Class.ShortName.Equal[SHM]}) {
/varset sh 1
/varset shname ${Group.Member[${iiii}].CleanName}
}
/next iiii
|  This is here incase it tries to pull another mob when it already pulled one.
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
       /doevents

|  This is the grunt of the pulling routine
|  This bit is checking for targets while moving....
       /varset CheckMob ${SpawnCount[NPC radius ${PullRange} zradius ${zrange} los noalert 1]}
       /if (${CheckMob}>${NumberMobsToCheck}) /varset CheckMob ${NumberMobsToCheck}
       /if (${CheckMob}) {
         /for tt 1 to ${CheckMob} 
           /doevents  
           /if (${ReturnGribble}==1) {
              /varcalc i ${i}-1
              /goto :ReturnPath
           }
           /tar id ${NearestSpawn[${tt}, NPC los radius ${PullRange} zradius ${zrange} noalert 1].ID}
           /delay 1s ${Target.ID}==${NearestSpawn[${tt}, NPC los radius ${PullRange} zradius ${zrange} noalert 1].ID}||${Me.CombatState.Equal[COMBAT]}
           /if (${Target.Type.Equal[NPC]} && ${Target.LineOfSight}) {
             /if (${Target.LineOfSight} && ${Target.Distance}<230) {
		/face fast
		/delay 5
		/if (${Me.XTarget}) /goto :Movepause
/if (${Me.Class.ShortName.Equal[SHD]} && !${Me.SpellReady[${PullSpell1}]} && !${Me.SpellReady[${PullSpell2}]} && ${Me.SpellReady[${PullSpell3}]}) {
               /bc Casting ${PullSpell3} [+t+]${Target.Name}
	       /cast "${PullSpell3}"
}
/if (${Me.Class.ShortName.Equal[SHD]} && !${Me.SpellReady[${PullSpell1}]} && ${Me.SpellReady[${PullSpell2}]}) {
               /bc Casting ${PullSpell2} [+t+]${Target.Name}
	       /cast "${PullSpell2}"
}
/if (${Me.Class.ShortName.Equal[SHD]} && ${Me.SpellReady[${PullSpell1}]}) {
               /bc Casting ${PullSpell1} [+t+]${Target.Name}
	       /cast "${PullSpell1}"
}
/if (!${Me.Moving} && ${Me.Class.ShortName.Equal[PAL]} && !${Me.SpellReady[${PullSpell1}]} && !${Me.SpellReady[${PullSpell2}]} && ${Me.SpellReady[${PullSpell3}]}) {
               /bc Casting ${PullSpell3} [+t+]${Target.Name}
	       /cast "${PullSpell3}"
}
/if (!${Me.Moving} && ${Me.Class.ShortName.Equal[PAL]} && !${Me.SpellReady[${PullSpell1}]} && ${Me.SpellReady[${PullSpell2}]}) {
               /bc Casting ${PullSpell2} [+t+]${Target.Name}
	       /cast "${PullSpell2}"
}
/if (!${Me.Moving} && ${Me.Class.ShortName.Equal[PAL]} && ${Me.SpellReady[${PullSpell1}]}) {
               /bc Casting ${PullSpell1} [+t+]${Target.Name}
	       /cast "${PullSpell1}"
}
/if (${Me.Class.ShortName.Equal[WAR]} && !${Me.XTarget}) {
    	        /bc Shooting an arrow at [+t+]${Target.Name}
                /ranged
/delay 2s
}
/delay 2s
             }
             /delay 4
           } 
|  This is here incase it tries to pull another mob when it already pulled one.
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
           /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<150 && ${Target.LineOfSight}  && ${Me.XTarget}<2) {
            /delay 2s ${Me.CombatState.Equal[COMBAT]}
          }
          /next tt
          }
         }
     /delay 1
    
     /if (!${MoveTo.Stopped} && !${Me.XTarget}) /goto :MoveLoop1

| This is here so you use rest while pulling it helps a ton.
/if (!${Melee.DiscID} && ${Me.PctEndurance}<=18 && ${Me.CombatAbilityReady[${RespiteDisc}]}) /disc ${RespiteDisc}

|  This is here incase it tries to pull another mob when it already pulled one.
		/if (${Me.XTarget}) /goto :Movepause
|  This bit is checking for mobs to pull at the way point.
      /varset CheckMob ${SpawnCount[NPC radius ${PullRange} zradius ${zrange} los noalert 1]}
       /if (${CheckMob}>${NumberMobsToCheck}) /varset CheckMob ${NumberMobsToCheck}
       /if (${CheckMob}) {
         /for tt 1 to ${CheckMob} 
           /doevents
           /if (${ReturnGribble}==1) {
              /varcalc i ${i}-1
              /goto :ReturnPath
           }
           /tar id ${NearestSpawn[${tt}, NPC los radius ${PullRange} zradius ${zrange} noalert 1].ID}
           /delay 1s ${Target.ID}==${NearestSpawn[${tt}, NPC los radius ${PullRange} zradius ${zrange} noalert 1].ID}||${Me.CombatState.Equal[COMBAT]}
           /if (${Target.Type.Equal[NPC]} && ${Target.LineOfSight}) {
             /if (!${Me.Moving} && ${Target.LineOfSight} && ${Target.Distance}<230) {
		/face fast
		/delay 5
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
/if (${Me.Class.ShortName.Equal[SHD]} && !${Me.SpellReady[${PullSpell1}]} && !${Me.SpellReady[${PullSpell2}]} && ${Me.SpellReady[${PullSpell3}]}) {
               /bc Casting ${PullSpell3} [+t+]${Target.Name}
	       /cast "${PullSpell3}"
}
/if (${Me.Class.ShortName.Equal[SHD]} && !${Me.SpellReady[${PullSpell1}]} && ${Me.SpellReady[${PullSpell2}]}) {
               /bc Casting ${PullSpell2} [+t+]${Target.Name}
	       /cast "${PullSpell2}"
}
/if (${Me.Class.ShortName.Equal[SHD]} && ${Me.SpellReady[${PullSpell1}]}) {
               /bc Casting ${PullSpell1} [+t+]${Target.Name}
	       /cast "${PullSpell1}"
}
/if (${Me.Class.ShortName.Equal[PAL]} && !${Me.SpellReady[${PullSpell1}]} && !${Me.SpellReady[${PullSpell2}]} && ${Me.SpellReady[${PullSpell3}]}) {
               /bc Casting ${PullSpell3} [+t+]${Target.Name}
	       /cast "${PullSpell3}"
}
/if (${Me.Class.ShortName.Equal[PAL]} && !${Me.SpellReady[${PullSpell1}]} && ${Me.SpellReady[${PullSpell2}]}) {
               /bc Casting ${PullSpell2} [+t+]${Target.Name}
	       /cast "${PullSpell2}"
}
/if (${Me.Class.ShortName.Equal[PAL]} && ${Me.SpellReady[${PullSpell1}]}) {
               /bc Casting ${PullSpell1} [+t+]${Target.Name}
	       /cast "${PullSpell1}"
}
/if (${Me.Class.ShortName.Equal[WAR]} && !${Me.XTarget}) {
    	        /bc Shooting an arrow at [+t+]${Target.Name}
                /ranged
/delay 2s
}
/delay 2s
             }
             /delay 4
           }
           /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<150 && ${Target.LineOfSight}) {  
            /delay 2s ${Me.CombatState.Equal[COMBAT]}
          }
|  This is here incase it tries to pull another mob when it already pulled one.
		/if (${Me.XTarget}) {
		/goto :Movepause
		}
          /next tt
          }
  /varcalc i ${i}+1
  /if (${Bool[${Path[${CampNum},${i},1]}]}) /goto :MoveLoop
  /delay 1s

| This makes sure you hail the npc at the end of path 1
  /bc End of Path Encounted - No Aggro ${i}
  /varset EndOfPath 1
  /if (${CampNum}==1) {
    /delay 1s
    /bcg //end
    /delay 2s
/if (${bd}) /bct ${bdname} //casting "Selo's Sonata"
/if (${sh}) /bct ${shname} //casting "Communion of the Cheetah"
    /bcga //hidecorpse all
    /delay 5
    /bcga //hidecorpse looted
    /bcg //stopcast
    /delay 5
    /bcg //target ${MainAssist}
    /delay 2s
    /bcg //stick 15
    /delay 1s
    /bcg //stopcast
    /bcg //twist off
    /delay 3s
    /keypress esc
  }
  /varcalc i ${i}-2
  :ReturnPath
   /if (${i}<1) { 
     /if (${EndOfPath}==1 && ${CampNum}==1) {   
       /call ReturnToGribble
     }
     /return
   }
   /bc [+Y+]Path : [+y+]${CampNum}[+Y+]  Point : [+y+]${i}  [+x+]
      /squelch /moveto loc ${Path[${CampNum},${i},1]} ${Path[${CampNum},${i},2]}
     :MoveLoop2
       /delay 1
       /doevents
      /varset PullList ${Me.XTarget[1].Name}${Me.XTarget[2].Name}${Me.XTarget[3].Name}
     /doevents
     /if (!${MoveTo.Stopped}) /goto :MoveLoop2
     /varcalc i ${i}-1
     /goto :ReturnPath
| This pauses moveto and calls dps mode and repeats the loop until nothing is on xtarget.
:Movepause
/moveto pause
:dps
/call dpsmode
/delay 1s
/if (${Me.XTarget}==0) {
/call DoIMed
/delay 4s
/goto :moveloop
}
/goto :dps
/return


Sub Event_ToonReady(Line1,ToonName)
  /varcalc NumReady ${NumReady}+1
/return


Sub Event_UpdateEvent(Line1, TaskName)
  /varcalc EventStep ${EventStep}+1
  /bc [+m+]${TaskName}[+w+] : finished STEP [+m+]${EventStep}
/return

Sub Event_LootingEvent(Line1, ItemName)
  /varset ItemName ${ItemName.Right[-57]}
  /varset ItemName ${ItemName.Left[-1]}
  /bc Item = ${ItemName}
  /if (${ItemName.Find[Excavation Tools]} || ${ItemName.Find[Dynamite]} || ${ItemName.Find[Xulous Spellbook]}) {
     /bc Click item found = ${ItemName}
     /delay 2s   
     /delay 6s ${Me.CombatState.Equal[COMBAT]}
     /bct ${LooterName} //useitem "${ItemName}"
     /delay 1s
     /bcga //useitem "${ItemName}"
     /varset OuterItem ${ItemName}
     /varset ReturnGribble 1
/delay 2s 
}
  /if (${ReturnGribble}==1 && ${Me.XTarget}==0) {
    /delay 2s
    /bcg //end
    /delay 2s
    /bcg //target ${MainAssist}
    /delay 2s
    /bcg //stick 15
    /delay 3s
    /keypress esc
  }
/return

Sub GetTarget
/declare asd int inner
/declare tempID int local ${Target.ID}
/if (${Me.Moving}) /return
/for asd 1 to 10
/if (!${validTarget} && ${Target.ID}==${Me.XTarget[${asd}].ID}) {
      /varset validTarget 1
      /varset CurrentTarget ${Target.ID}
/next asd    
} else {
/xtar 1
      /varset validTarget 1
      /varset CurrentTarget ${Target.ID}
}


/if (!${validTarget} && ${Me.XTarget}>=1) /xtar 1
/if (!${Target.ID} && ${Me.XTarget}>=1) /xtar 1
/if (${Target.Type.Equal["Corpse"]}) /target clear
/if (${Target.Name.Equal[${MainAssist}]}) /target clear
/return

Sub DpsMode
/doevents
/call GetTarget
/if (${Target.CleanName.Equal[Gribble Grobblenobber]}) {
/keypress esc
/call GetTarget
}
/varset TempStickSetting ${StickSetting}
/if (${validTarget} && ${Target.PctHPs}<=${AssistAt} && ${Target.Type.Equal[NPC]} && ${Target.Distance} < ${AssistDistance} && ${Target.ID}) /call KillTarget
/if (${Me.PctAggro}==0 && ${Me.XTarget}>=1 && ${Target.Distance}<=200 && ${Me.SpellReady[${HateSpell3}]} && ${Melee.AggroMode}) /call once ${HateSpell3}
/return

Sub KillTarget
/doevents
/face fast
/call Attack
/if (${SpawnCount[npc radius 75 zradius 100]}>=3) /call Defensive
/if (${Target.Named}) /call Defensive
/if (!${validTarget} || ${ExcludeList.Find[${Target.DisplayName}]}) /multiline ; /squelch /target clear; /attack off; /return
/if (${Target.Type.Equal["Corpse"]} || !${Target.ID}) /multiline ; /squelch /target clear; /varset validTarget 0; /attack off; /return
/return

Sub Attack
/if (${Me.Sitting}) /squelch /stand
/if (!${Me.Combat} && ${Target.Distance} <= 35) /attack on
/call CheckHealth
/if (${Me.Class.ShortName.Equal[WAR]}) /call Aggro_WAR
/if (${Me.Class.ShortName.Equal[SHD]}) /call Aggro_SK
/if (${Me.Class.ShortName.Equal[PAL]}) /call Aggro_PAL
/if (${SpawnCount[npc radius 75 zradius 100]}>=3) /call Defensive
/if (${Target.Named}) /call Defensive
/if (!${Stick.Active}) /stick ${StickSetting}
/return

Sub Nuke
/if (${Me.Class.ShortName.Equal[WAR]}) /return
/if (${Me.Dead}) /Return
/if (${Me.SpellReady[${NukeSpell1}]} && ${Target.ID} && !${Target.Type.Equal["corpse"]} && !${Target.Type.Equal[PC]} && ${Target.Distance} <=50) {
	/cast "${NukeSpell1}"
	/return
}
/if (${Me.SpellReady[${NukeSpell2}]} && ${Target.ID} && !${Target.Type.Equal["corpse"]} && !${Target.Type.Equal[PC]} && ${Target.Distance} <=50) {
	/cast "${NukeSpell2}"
	/return
}
/if (${Me.AltAbilityReady[Ragged Bite of Agony]} && !${Me.Moving} && !${Target.Type.Equal["corpse"]}) /casting "Ragged Bite of Agony"
/if (${Me.AltAbilityReady[Vicious Bite of Chaos]} && !${Me.Moving} && !${Target.Type.Equal["corpse"]}) /casting "Vicious Bite of Chaos"
/return

Sub CheckHealth
/declare ia int inner
/varset GroupHealth 0
/if (${Me.Class.ShortName.Equal[WAR]}) /return
/if (${Me.Dead}) /return
/if (${Me.Class.ShortName.Equal[SHD]}) {
/if (${Me.PctHPs}<=50 && ${Me.SpellReady[${DireImplication}]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /cast "${DireImplication}"
/if (${Me.PctHPs}<75 && ${Me.SpellReady[${LifeTapSpell1}]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /cast "${LifeTapSpell1}"
/if (${Me.PctHPs}<75 && ${Me.SpellReady[${LifeTapSpell2}]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /cast "${LifeTapSpell2}"
/if (${Me.PctHPs}<20 && ${Me.AltAbilityReady[leech touch]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /casting "Leech Touch"
/if (${Me.PctMana}<60 && ${Me.AltAbilityReady[Thought Leech]} && !${Target.Type.Equal["corpse"]} && ${Target.ID} && !${Target.Type.Equal[PC]}) /casting "Thought Leech"
}
/if (${Me.Class.ShortName.Equal[PAL]}) {
/if (${Me.PctMana}<80 && ${Me.AltAbilityReady[Marr's Gift]}) /casting "Marr's Gift"
/if (${Me.PctHPs}<75 && ${Me.PctMana}>25 && ${Me.SpellReady[${HateSpell1}]} && ${Target.ID}) /cast "${HateSpell1}"
/if (${Me.PctHPs}<70 && ${Me.PctMana}>25 && ${Me.SpellReady[${HealSpell1}]} && ${Target.ID}) /cast "${HealSpell1}"
/if (${Me.PctHPs}<50 && ${Me.PctMana}>25 && !${Me.SpellReady[${HealSpell1}]} && ${Me.SpellReady[${HealSpell2}]} && ${Target.ID}) /cast "${HealSpell2}"
/for ia 0 to ${Group.Members}
/if (${Group.Member[${ia}].PctHPs} < 65 && ${Me.SpellReady[${HealSpell3}]}) {
/target ${Group.Member[${ia}].PctHPs}
/delay 5
/cast "${HealSpell3}"
 }
/if (${Group.Member[${ia}].ID}) {
              /varcalc GroupHealth ${GroupHealth}+${Group.Member[${ia}].PctHPs}
         } else {
              /varcalc GroupHealth ${GroupHealth} + 100
         }
        /next ia
           /if (${Me.SpellReady[${HealSpell2}]} && ${Math.Calc[${GroupHealth}/${Group.GroupSize}+1]}<${GHealGroupHealth}) {
		/cast "${HealSpell2}"
 }
}
/return

Sub Aggro_SK
/declare MobID int local
/declare i int local
/declare mobcount int local
/declare Mobs int local
/if (${Me.Dead}) /return
/if (${SpawnCount[npc radius 75 zradius 100]}>=3) /call Defensive
/if (${Target.Named}) /call Defensive
/if (!${Me.Combat} && ${Target.Distance} <= 35) /attack on
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.AbilityReady[Taunt]}) /doability Taunt
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.AbilityReady[Bash]}) /doability Bash
/if (${Me.XTarget}<2 && ${Target.Distance}<75 && ${Target.PctHPs}<98 && ${Me.SpellReady[${HateSpell1}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /call once ${HateSpell1}
/if (${Me.XTarget}<2 && ${Me.SpellReady[${ChallengeSpell}]}) /call once ChallengeSpell
/if (${Me.XTarget}>=2 && ${Me.AltAbilityReady[Improved Explosion of spite]}) /casting  "Improved Explosion of spite"
/if (${Me.Combat} && ${Me.AltAbilityReady[Mindless Hatred]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /casting "Mindless Hatred"
/if (${Me.Combat} && ${Me.AltAbilityReady[Ageless Enmity]} && !${Me.AltAbilityReady[Mindless Hatred]}  && ${Melee.AggroMode} && ${Me.PctAggro}<100) /casting "Ageless Enmity"
/if (${Me.Combat} && ${Me.SpellReady[${HateSpell1}]} && !${Me.AltAbilityReady[Ageless Enmity]} && !${Me.AltAbilityReady[Mindless Hatred]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /cast "${HateSpell1}"
/if (${Me.Combat} && ${Me.SpellReady[${HateSpell2}]} && !${Me.SpellReady[${HateSpell1}]} && !${Me.AltAbilityReady[Ageless Enmity]} && !${Me.AltAbilityReady[Mindless Hatred]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /cast "${HateSpell2}"
/if (${Me.Combat} && ${Me.SpellReady[${HateSpell3}]} && !${Me.SpellReady[${HateSpell2}]} && !${Me.SpellReady[${HateSpell1}]} && !${Me.AltAbilityReady[Ageless Enmity]} && !${Me.AltAbilityReady[Mindless Hatred]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /cast "${HateSpell3}"

/if (${Me.XTarget}>=2 && ${Me.AltAbilityReady[Improved Explosion of spite]}) /casting  "Improved Explosion of spite"
/if (${Me.XTarget}>=3 && ${Me.AltAbilityReady[Improved Explosion of hatred]}) /casting "Improved Explosion of hatred"
/if (${Me.XTarget}>=3 && ${Me.SpellReady[${AeHateSpell1}]}) /cast "${AeHateSpell1}"
/if (${Me.XTarget}>=4 && ${Me.SpellReady[${AeHateSpell2}]}) /cast "${AeHateSpell2}"
/if (${Me.XTarget}>=6 && ${Me.SpellReady[${AeHateSpell3}]}) /cast "${AeHateSpell3}"
/call CheckHealth
/call Offensive
/call Nuke
/return

Sub Aggro_PAL
/declare MobID int local
/declare i int local
/declare mobcount int local
/declare Mobs int local
/if (${Me.Dead}) /return
/if (${SpawnCount[npc radius 75 zradius 100]}>=3) /call Defensive
/if (${Target.Named}) /call Defensive
/if (!${Me.Combat} && ${Target.Distance} <= 35) /attack on
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.AbilityReady[Taunt]}) /doability Taunt
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.AbilityReady[Bash]}) /doability Bash
/if (${Target.PctHPs}<98 && ${Me.AltAbilityReady[Divine Stun]} && ${Melee.AggroMode}) /casting "Divine Stun"
/if (${Target.PctHPs}<98 && ${Me.SpellReady[${StunSpell1}]} && ${Melee.AggroMode}) /cast "${StunSpell1}"
/if (${Me.XTarget}<2 && ${Me.SpellReady[${ChallengeSpell}]}) /call once ChallengeSpell
/if (${Me.Combat} && ${Me.SpellReady[${HateSpell1}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /cast "${HateSpell1}"
/if (${Me.XTarget}>=3 && ${Me.SpellReady[${HealSpell2}]} && !${Me.AltAbilityReady[Beacon of the Righteous]}) /call Once "${HealSpell2}"
/if (${Me.XTarget}>=3 && ${Me.AltAbilityReady[Beacon of the Righteous]}) /casting  "Beacon of the Righteous"
/call CheckHealth
/call Offensive
/call Nuke
/return

Sub Aggro_WAR
/declare MobID int local
/declare i int local
/declare mobcount int local
/declare Mobs int local
/if (${Me.Dead}) /return
/call Defensive
/if (!${Me.Combat} && ${Target.Distance} <= 35) /attack on
/if (${Me.Combat} && ${Target.PctHPs}<98 && !${Me.Buff[Sneering Grin].ID} && ${Me.AltAbilityReady[Sneering Grin]} && ${Melee.AggroMode}) /casting "Sneering Grin"
/if (${Me.Combat} && ${Me.CombatAbilityReady[${StormwheelBlades}]} && ${Melee.AggroMode} && ${Me.XTarget}>=2) /disc ${StormwheelBlades}
/if (${Target.Distance}<35 && ${Me.Casting.Name.Equal[NULL]} && ${Me.PctAggro} < 100 && ${Me.AbilityReady[Taunt]}) /doability Taunt
/if (${Me.Combat} && ${Target.PctHPs}<=99 && ${Me.PctEndurance}>1 && ${Me.CombatAbilityReady[${Ridicule}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /disc ${Ridicule}
/if (${Me.Combat} && ${Target.PctHPs}<=99 && ${Me.AltAbilityReady[Blast of Anger]} && !${Me.CombatAbilityReady[${KrondalRoar}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /casting "Blast of Anger"
/if (${Me.Combat} && ${Target.PctHPs}<=99 && !${Me.AltAbilityReady[Blast of Anger]} && ${Me.AltAbilityReady[Rage of the Forsaken]} && !${Me.CombatAbilityReady[${KrondalRoar}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /casting "Rage of the Forsaken"
/if (${Me.Combat} && ${Target.PctHPs}<=99 && ${Me.CombatAbilityReady[${HarassingShout}]} && !${Me.AltAbilityReady[Blast of Anger]} && ${Me.AltAbilityReady[Rage of the Forsaken]} && !${Me.CombatAbilityReady[Krondal's Roar]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /disc ${HarassingShout}
/if (${Me.Combat} && ${Target.PctHPs}<=99 && ${Me.CombatAbilityReady[${PhantomAggressor}]} && !${Me.CombatAbilityReady[${HarassingShout}]} && !${Me.AltAbilityReady[Blast of Anger]} && ${Me.AltAbilityReady[Rage of the Forsaken]} && !${Me.CombatAbilityReady[${KrondalRoar}]} && ${Melee.AggroMode} && ${Me.PctAggro}<100) /disc ${PhantomAggressor}
/if (${Me.Combat} && ${Me.AltAbilityReady[Area Taunt]} && ${Melee.AggroMode} && ${Me.XTarget}>=4) /casting "Area Taunt"
/if (${Me.Combat} && !${Me.CombatAbilityReady[${StormwheelBlades}]} && ${Target.PctHPs}<=99 && ${Me.PctEndurance}>1 && ${Me.CombatAbilityReady[${RoarofChallenge}]} && ${Melee.AggroMode} && ${Me.XTarget}>=3) /disc ${RoarofChallenge}
/if (${Me.Combat} && ${Me.AltAbilityReady[Warlord's Tenacity]} && ${Target.PctHPs}<=99 && ${Melee.AggroMode} && ${Me.XTarget}>=4) /casting "Warlord's Tenacity"
/if (${Me.Combat} && ${Me.AltAbilityReady[Warlord's Tenacity]} && ${Target.PctHPs}<=99 && ${Melee.AggroMode} && ${Target.Named}) /casting "Warlord's Tenacity"

/if (${Me.Combat} && !${Me.Song[Imperator's Command].ID} && ${Me.AltAbilityReady[Imperator's Command]} && ${Target.PctHPs}<=99 && ${Melee.AggroMode} && ${Me.XTarget}>=3) /casting "Imperator's Command"
/if (${Me.Combat} && !${Me.Song[Imperator's Command].ID} && ${Me.AltAbilityReady[Imperator's Command]} && ${Target.PctHPs}<=99 && ${Melee.AggroMode} && ${Target.Named}) /casting "Imperator's Command"
/return

Sub Once(subname,int force)
/if (${Last${subname}}==${Target.ID}) /return
/varset CurrentSub ${subname}
/if (!${Defined[${subname}]}) /return
/if (${${subname}Conditions}||!${Defined[${subname}Conditions]}) {
	/if (${FindItem[${${subname}}].InvSlot} && !${FindItem[${${subname}}].Timer}) /call Cast "${${subname}}" item ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
	/if (${Me.AltAbilityReady[${${subname}}]}) /call Cast "${${subname}}" alt ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
	/if (${Me.SpellReady[${${subname}}]}||${Me.Book[${${subname}${loop}}]} && ${force} && !${Me.AltAbility[${${subname}${loop}}]}) /call Cast "${${subname}}" ${DefaultGem} ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
	/if (${Macro.Return.Equal[CAST_SUCCESS]}||${Macro.Return.Equal[CAST_NOTHOLD]}) /varset Last${CurrentSub} ${Target.ID}
	}
/return

Sub Defensive
/if (${Me.Class.ShortName.Equal[WAR]} && ${Me.Combat} && ${Me.CombatAbilityReady[Fortitude Discipline]} && ${Melee.AggroMode} && ${Me.XTarget}>=5) {
/stopdisc
/delay 4
/disc Fortitude Discipline
}
/if (${Me.Class.ShortName.Equal[SHD]} && ${Me.Combat} && ${Me.CombatAbilityReady[Deflection Discipline]} && ${Melee.AggroMode} && ${Me.XTarget}>=5) {
/stopdisc
/delay 4
/disc Deflection Discipline
}
/if (${Me.Class.ShortName.Equal[PAL]} && ${Me.Combat} && ${Me.CombatAbilityReady[Deflection Discipline]} && ${Melee.AggroMode} && ${Me.XTarget}>=5) {
/stopdisc
/delay 4
/disc Deflection Discipline
}
/if (${Me.Class.ShortName.Equal[WAR]} && ${Me.Combat} && !${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Target.PctHPs}<98 && !${Me.Buff[Brace for Impact].ID} && ${Me.AltAbilityReady[Brace for Impact]} && ${Melee.AggroMode} && ${Me.XTarget}>=3) /casting "Brace for Impact"
/if (${SpawnCount[npc radius 75 zradius 100]}>3 && !${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Me.XTarget}>=3) /disc ${Defensive1}
/if (!${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Target.Named}) /disc ${Defensive1}
/if (${SpawnCount[npc radius 75 zradius 100]}>3 && !${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Me.XTarget}>=3) /disc ${Defensive2}
/if (!${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Target.Named}) /disc ${Defensive2}
/if (${SpawnCount[npc radius 75 zradius 100]}>3 && !${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive3}]} && !${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Me.XTarget}>=3) /disc ${Defensive3}
/if (!${Melee.DiscID} && ${Me.CombatAbilityReady[${Defensive3}]} && !${Me.CombatAbilityReady[${Defensive2}]} && !${Me.CombatAbilityReady[${Defensive1}]} && ${Me.Combat} && ${Target.Named}) /disc ${Defensive3}
/return

Sub Offensive
/if (${Me.Class.ShortName.Equal[WAR]}) /return
/if (${Me.Class.ShortName.Equal[PAL]}) /return
/if (${Me.AltAbilityReady[Harm Touch]} && ${Target.Named} && !${Target.Type.Equal["corpse"]}) /casting "Harm Touch"
/if (${Me.AltAbilityReady[Visage of Death]} && ${Target.Named} && !${Target.Type.Equal["corpse"]}) /casting "Visage of Death"
/if (${Me.CombatAbilityReady[${ScarletBlade}]} && ${Target.Named} && !${Target.Type.Equal["corpse"]}) /disc ${ScarletBlade}
/if (${Me.AltAbilityReady[Visage of Death]} && ${Me.XTarget}>=4 && !${Target.Type.Equal["corpse"]}) /casting "Visage of Death"
/if (${Me.CombatAbilityReady[${ScarletBlade}]} && ${Me.XTarget}>=4 && !${Target.Type.Equal["corpse"]}) /disc ${ScarletBlade}
/return

Sub GeneralDeclares
/if (${Me.Class.ShortName.Equal[SHD]}) /declare iniName string outer DH_SK_${Me.Name}.ini
/if (${Me.Class.ShortName.Equal[WAR]}) /declare iniName string outer DH_WAR_${Me.Name}.ini
/if (${Me.Class.ShortName.Equal[PAL]}) /declare iniName string outer DH_PAL_${Me.Name}.ini
  /declare IniPathFile string outer scouting.ini
  /declare Path[5,26,2] int outer
  /declare MaxPaths int outer
  /declare NumReady int outer 0
  /declare CampNum int outer 1
  /declare ReadysRequired int outer 0
  /declare ClickName string outer 0
  /declare OuterItem string outer
  /declare ReturnGribble int outer 0
  /declare zrange int outer 100
  /declare BugTimer timer outer 20000
  /declare BugF int outer 0
  /declare NumTargets int outer 0
  /declare CurrentTarget int outer 0
  /declare EventStep int outer 0
  /declare validTarget int outer 0
  /declare TempStickSetting int outer front
  /declare TempIgnoreTimer timer outer
  /declare TempAggroTimer timer outer
  /declare p int local
  /declare CurrentSub       string outer
  /declare LastChallengeSpell    string outer
  /declare LastHateSpell1    string outer
  /declare LastHealSpell2    string outer
  /declare bufftimer timer outer 0
  /declare bufftimer2 timer outer 0
  /declare MemSpellTimer  timer  outer 0
  /declare medding int outer 0
  /declare CantHit int outer
  /declare bdname string outer	
  /declare bd int outer 0
  /declare shname string outer	
  /declare sh int outer 0
  /declare CombatList string outer ${HateSpell1},${HateSpell2},${HateSpell3},${AeHateSpell1},${AeHateSpell2},${AeHateSpell3},${AeHateSpell4},${NukeSpell1},${NukeSpell2},${ChallengeSpell}|
  /declare AeList string outer ${AeHateSpell1},${AeHateSpell2},${AeHateSpell3},${AeHateSpell4}
 /declare Toon1 string outer ${Group.Member[1].Name}
 /declare Toon2 string outer ${Group.Member[2].Name}
 /declare Toon3 string outer ${Group.Member[3].Name}
 /declare Toon4 string outer ${Group.Member[4].Name}
 /declare LooterName string outer ${Group.Member[5].Name}
 /declare MainAssist string outer ${Me.Name}
 /declare GHealGroupHealth int outer 65
 /declare GroupHealth int outer 0
 /call DeclareIniVar BRD string Class kissassist
 /call DeclareIniVar BST string Class kissassist
 /call DeclareIniVar BER string Class kissassist
 /call DeclareIniVar CLR string Class kissassist
 /call DeclareIniVar DRU string Class kissassist
 /call DeclareIniVar ENC string Class kissassist
 /call DeclareIniVar MAG string Class kissassist
 /call DeclareIniVar MNK string Class kissassist
 /call DeclareIniVar NEC string Class kissassist
 /call DeclareIniVar PAL string Class kissassist
 /call DeclareIniVar RNG string Class kissassist
 /call DeclareIniVar ROG string Class kissassist
 /call DeclareIniVar SHD string Class kissassist
 /call DeclareIniVar SHM string Class kissassist
 /call DeclareIniVar WAR string Class kissassist
 /call DeclareIniVar WIZ string Class afnuke
 /call DeclareIniVar Aggro int Settings 0 /doaggro
 /call DeclareIniVar UseCampfire int Settings 0
/if (${Me.Class.ShortName.Equal[WAR]}) {
 /call DeclareIniVar SummonItem string Settings "Huntsman's Ethereal Quiver"
 /call DeclareIniVar Ammo string Settings "Ethereal Arrow"
 /call DeclareIniVar Defensive1 string Disc "Last Stand Discipline Rk. II"
 /call DeclareIniVar Defensive2 string Disc "No Time to Bleed"
 /call DeclareIniVar Defensive3 string Disc "Steadfast Defense"
 /call DeclareIniVar PullSpell1 string Disc "Krondal's Roar"
 /call DeclareIniVar PullSpell2 string Disc "Ridicule"
 /call DeclareIniVar PullSpell3 string Disc "Ridicule"
 /call DeclareIniVar HarassingShout string Aggro "Harassing Shout"
 /call DeclareIniVar PhantomAggressor string Aggro "Phantom Aggressor"
 /call DeclareIniVar StormwheelBlades string Aggro "Stormwheel Blades"
 /call DeclareIniVar Ridicule string Aggro "Ridicule"
 /call DeclareIniVar KrondalRoar string Aggro "Krondal's Roar"
 /call DeclareIniVar RoarofChallenge string Aggro "Roar of Challenge"
 /call DeclareIniVar BuffGem string Spells "12"
}
/if (${Me.Class.ShortName.Equal[PAL]}) {
 /call DeclareIniVar Defensive1 string Disc "Reverent Penitence"
 /call DeclareIniVar Defensive2 string Disc "Brightwing Mantle"
 /call DeclareIniVar Defensive3 string Disc "Holy Guardian Discipline"
 /call DeclareIniVar HateSpell1 string Spells "Valiant Deflection"
 /call DeclareIniVar PullSpell1 string Spells "Demand for Honor"
 /call DeclareIniVar PullSpell2 string Spells "Force of Reverence"
 /call DeclareIniVar PullSpell3 string Spells "Force of the Iceclad"
 /call DeclareIniVar StunSpell1 string Spells "Force of Reverence"
 /call DeclareIniVar StunSpell2 string Spells "Force of the Iceclad"
 /call DeclareIniVar StunSpell3 string Spells "Reverent Force"
 /call DeclareIniVar StunSpell4 string Spells "Lesson of Sorrow"
 /call DeclareIniVar ChallengeSpell string Spells "Demand for Honor"
 /call DeclareIniVar HealSpell1 string Spells "Sorrow"
 /call DeclareIniVar HealSpell2 string Spells "Aurora of Sunrise"
 /call DeclareIniVar HealSpell3 string Spells "Burst of Sunrise"
 /call DeclareIniVar GHealSpell1 string Spells "Wave of Sorrow"
 /call DeclareIniVar BuffGem string Spells "12"
}
 /call DeclareIniVar RespiteDisc string Spells "Rest"
 /call DeclareIniVar StickSetting string Settings 35 
 /call DeclareIniVar AssistDistance int Settings 100
 /call DeclareIniVar AssistAt int Settings 100 /assistat
 /call DeclareIniVar DoDot int Settings 0 /Dot
 /call DeclareIniVar NumOfDots string Settings 1
/if (${Me.Class.ShortName.Equal[SHD]}) {
 /call DeclareIniVar Defensive1 string Disc "Grelleth's Carapace Rk. II"
 /call DeclareIniVar Defensive2 string Disc "Bonebrood Mantle Rk. II"
 /call DeclareIniVar Defensive3 string Disc "Unholy Guardian Discipline"
 /call DeclareIniVar ScarletBlade string Disc "Scarlet Blade"
 /call DeclareIniVar PullSpell1 string Spells "Terror of Vergalid"
 /call DeclareIniVar PullSpell2 string Spells "Terror of Vergalid"
 /call DeclareIniVar PullSpell3 string Spells "Terror of Vergalid"
 /call DeclareIniVar HateSpell1 string Spells "Terror of Jelvalak"
 /call DeclareIniVar HateSpell2 string Spells "Terror of the Soulbleeder "
 /call DeclareIniVar HateSpell3 string Spells "Terror of Vergalid"
 /call DeclareIniVar AeHateSpell1 string Spells "Burst of Spite"
 /call DeclareIniVar AeHateSpell2 string Spells "Revile"
 /call DeclareIniVar AeHateSpell3 string Spells "Vilify"
 /call DeclareIniVar ChallengeSpell string Spells "Demand for Power Rk. II"
 /call DeclareIniVar NukeSpell1 string Spells "Malarian Spear"
 /call DeclareIniVar NukeSpell2 string Spells "Rotmarrow Spear"
 /call DeclareIniVar LifeTapSpell1 string Spells "Touch of Tharoff"
 /call DeclareIniVar LifeTapSpell2 string Spells "Touch of Kildrukaun"
 /call DeclareIniVar LifeTapSpell3 string Spells "Touch of Severan"
 /call DeclareIniVar DireImplication string Spells "Dire Implication"
 /for p 1 to ${NumOfDots}
	/call DeclareIniVar Dot${p} string Spells Changeme
 /next p
 /call DeclareIniVar BuffGem string Spells "12"
}
 /call DeclareIniVar NumSelfBuff string SelfBuffs 5
 /if (${NumSelfBuff}) {
	/for p 1 to ${NumSelfBuff}
	/call DeclareIniVar selfBuff${p} string SelfBuffs ChangeMe
	/if (${Me.Class.Name.Equal[cleric]} || ${Me.Class.Name.Equal[Shaman]}) {
		/call DeclareIniVar selfBuffToCheck${p} string SelfBuffs ${selfBuff${p}}
		} else  {
		/declare selfBuffToCheck${p}  string outer ${selfBuff${p}}
		}
	/call DeclareIniVar SelfType${p} string SelfBuffs ChangeMe
  /next p
 }
 /declare Macro1 string outer ${${Group.Member[1].Class.ShortName}}
 /declare Macro2 string outer ${${Group.Member[2].Class.ShortName}}
 /declare Macro3 string outer ${${Group.Member[3].Class.ShortName}}
 /declare Macro4 string outer ${${Group.Member[4].Class.ShortName}}
 /declare Macro5 string outer ${${Group.Member[5].Class.ShortName}}
/return

Sub DeclareIniVar(string name,string varType,string section,string value,string alias)
/if ( !${Defined[${name}]} ) /declare ${name} ${varType} outer
/varset ${name} ${Ini[${iniName},${section},${name.Left[1].Upper}${name.Right[-1]},"${value}"]}
/ini "${iniName}" "${section}" "${name.Left[1].Upper}${name.Right[-1]}" "${${name}}"
/if ( ${Defined[alias]} ) /squelch /alias ${alias} /echo set: ${name}
/if (${Me.Book[${Me.Book[${${name}} rk. iii]}].ID}) /varset ${name} ${Me.Book[${Me.Book[${${name}} rk. iii]}].Name} 
/if (${Me.Book[${Me.Book[${${name}} rk. ii]}].ID}) /varset ${name} ${Me.Book[${Me.Book[${${name}} rk. ii]}].Name}
/if (${Me.CombatAbility[${${name}} rk. iii]}) /varset ${name} ${${name}} rk. iii
/if (${Me.CombatAbility[${${name}} rk. ii]}) /varset ${name} ${${name}} rk. ii
/return



Sub CastItemClicky(string sItemClicky)
/if (!${FindItem[=${sItemClicky}].ID}) {
	/if (!${ItemTimer}) {
		/call CreateTImer ItemTimer
		/echo You don't seem to have ${sItemClicky} in your Inventory. Check inventory and Ini Spelling.
		/varset ItemTimer 60s
		}
	/return
	}
/declare OldItem string local
|/echo Need to cast ${sItemClicky} and its Worn ${FindItem[${sItemClicky}].EffectType.Equal[Click Worn]} and itemSlot ${FindItem["${sItemClicky}"].InvSlot}
/if (${FindItem[${sItemClicky}].EffectType.Equal[Click Worn]} && ${FindItem[${sItemClicky}].InvSlot} || !${Me.HaveExpansion[Veil of Alaris]}) {
	/varset OldItem ${Me.Inventory[${FindItem[${sItemClicky}].WornSlot[1].ID}].Name}
    /exchange "${sItemClicky}" ${FindItem[${sItemClicky}].WornSlot[1].ID}
	/Echo Using ${sItemClicky} Clicky
    /nomodkey /itemnotify ${FindItem["${sItemClicky}"].InvSlot} rightmouseup
    /delay ${Math.Calc[${FindItem[${sItemClicky}].CastTime}+1]}s
    /timed 10 /exchange "${OldItem}" ${FindItem[${OldItem}].WornSlot[1].ID}
    /delay 5s ${Me.Inventory[${FindItem[${OldItem}].WornSlot[1].ID}].Name.Equal[${OldItem}]}
  } else {
    /Echo Using ${sItemClicky} Clicky
    /if (!${me.Casting.ID}) /nomodkey /itemnotify ${FindItem["${sItemClicky}"].InvSlot} rightmouseup
    /delay ${Math.Calc[${FindItem[${sItemClicky}].CastTime}+1]}s
  }
/return

Sub CheckBuffies(string MySub)
/declare a int local
/for a 1 to ${NumSelfBuff}
    /if ( ${selfBuff${a}.NotEqual[NULL]} && ${SelfType${a}.Equal[item]} && ${FindItem[=${selfBuff${a}}].ID} && ${Me.Buff[${FindItem[=${selfBuff${a}}].Spell.Name}].Duration}<4 && !${FindItem[=${selfBuff${a}}].Timer}) {
       /if (!${Spell[${FindItem[=${selfBuff${a}}].Spell.Name}].Stacks[2]}) /goto :SkipBuff
		/call CastItemClicky "${selfBuff${a}}"
    } else /if ( ${Me.Book[${selfBuff${a}}]} && ${SelfType${a}.Find[gem]} && ${selfBuff${a}.NotEqual[NULL]} && ${Spell[${selfBuff${a}}].Mana} < ${Me.CurrentMana} && !${Me.Class.Name.Equal[bard]} ) {
      /if ( !${Me.Buff[${selfBuffToCheck${a}}].ID} || ${Me.Buff[${selfBuffToCheck${a}}].Duration} < 4 ) {
         /if (!${Spell[${selfBuff${a}}].Stacks[2]}) /goto :SkipBuff
		 /if (!${Me.Gem[${selfBuff${a}}]})  /call MemSpell "${selfBuff${a}}" ${SelfType${a}}     
		 /if (${Me.SpellReady[${selfBuff${a}}]}) {
			/if (${Spell[${selfBuff${a}}].TargetType.Find[Single]}) /target myself
			/if (${Bool[${MySub}]}) /call Cast "${selfBuff${a}}" "${SelfType${a}}" 0 ${MySub}
			/if (!${Bool[${MySub}]}) /call Cast "${selfBuff${a}}" "${SelfType${a}}" 0 
      /return
      }
    }
	}
    :SkipBuff
  /next a
/return

Sub Checkselfbuff
/if (${Me.Class.ShortName.Equal[SHD]} && ${Me.AltAbilityReady[Voice of Thule]}) {
/target ${MainAssist}
/delay 5
/alt act 7000
}
/call CheckBuffies
/varset bufftimer 10s
/return

Sub MemSpell(SpellName,SpellGem)
/varset bufftimer 0
/if (${MemSpellTimer} || !${Me.Book[${SpellName}]}) {
	/if (!${Me.Book[${SpellName}]} && !${SpellTimer}) {
	/call CreateTimer SpellTimer
	/Echo You don't have ${SpellName} in your Spell book. Check your ini for correct spelling.
	/varset SpellTimer 5s
	}
	/return
}
/if (${SpellGem.Length}==1)	/memspell ${SpellGem.Right[1]} "${SpellName}"
/if (${SpellGem.Length}==2)	/memspell ${SpellGem.Right[2]} "${SpellName}"
/if (${SpellGem.Length}==4)	/memspell ${SpellGem.Right[1]} "${SpellName}"
/if (${SpellGem.Length}==5)	/memspell ${SpellGem.Right[2]} "${SpellName}"
/delay 5s ${Me.Gem[${SpellName}]}
/varset  MemSpellTimer ${Math.Calc[${Spell[${SpellName}].RecastTime}+15]}S
/call Checkselfbuff
/return

Sub DoIMed
/if (${Me.PctEndurance}<=21) {
/sit
}
:keepmedding
/if (${Me.XTarget}<1 && ${Me.Sitting} && ${Me.PctEndurance}<=90) /goto :keepmedding
/return

|In case toons got stuck somewhere
Sub AnyoneLost
/bcg //multiline ; /target ${MainAssist} ;/navigate target
/delay 3s
/return

- - - Updated - - -

could you tell me Raz?
 
Not a Kiss command
Rich (BB code):
/doleashtoon 1
Kiss command is
Rich (BB code):
/chaseon
try this to looting turn on
Rich (BB code):
/looton 1
try this to turn looting off
Rich (BB code):
/looton 0
 
Question - What do i do

Users who are viewing this thread

Back
Top
Cart