Long awaited PoJustice Macro redo by noobhaxor. This code is a variation of what you see in PoV macro, but improved for PoJustice.
pojtank.mac
waypoints.ini
Enjoy,
Noobhaxor
pojtank.mac
Rich (BB code):
|--------Noob haxors ULTIMATE Tank/Shammy combo macro
|--PoJ.mac version 2.0
|Added Waypoints
|Added Playercheck
|Added buff calls
#Event Expreset "#*#Expreset#*#"
#include Exp_Tracking.inc
#include spell_routines.inc
#turbo 10
Sub Main
/declare HealerName string outer NameofShammy
/declare myzone int outer ${Zone.ID}
|------------------------------------------------------------
|Declare Safe Players.
|------------------------------------------------------------
/alert add 2 pc ${HealerName}
/alert add 2 pc ${Me}
|------------------------------------------------------------
|Loot Array Information.
|------------------------------------------------------------
/declare RV_LootArray[2] string outer
/varset RV_LootArray[1] "Flowing"
/varset RV_LootArray[2] "Peridot"
/declare RV_MyTargetID int outer 0
/declare RV_MyTargetName string outer
/declare RV_MyTargetDead int outer 0
/declare RV_InvalidTargetID int outer 0
/declare RV_HasTarget int outer 0
/declare RV_LootSlot int outer 0
/declare RV_CheckLook int outer 0
/declare RV_Fighting int outer 0
/declare RV_TargetDead int outer 0
/declare wpsave int outer 0
/declare slowonce bool outer TRUE
/declare dotonce bool outer TRUE
/declare snareonce bool outer FALSE
/declare playernearby bool outer FALSE
/declare Spawnloc[6] string outer
/varset Spawnloc[1] "wp1"
/varset Spawnloc[2] "wp2"
/varset Spawnloc[3] "wp3"
/varset Spawnloc[4] "wp4"
/varset Spawnloc[5] "wp5"
/varset Spawnloc[6] "wp6"
| /varset Spawnloc[7] "wp7"
/call ExpPrep
:Start
/doevents
/call GMCheck
/call playercheck
/call GetTarget
:KillAdds
/if (${RV_HasTarget}) /call MoveToMob
/if (${RV_HasTarget}) /call CombatSub
/if (${RV_HasTarget}) /call MoveToMob
/if (${RV_HasTarget}) /call LootMob
/if (${Target.ID}) {
/echo Looks like something is attacking us, killing it...
/delay 1s
/varset RV_HasTarget 1
/varset RV_Fighting 1
/goto :KillAdds
}
/goto :Start
/return
|--------------------------------------------------------------------------------
|SUB: Aquire Target
|--------------------------------------------------------------------------------
Sub GetTarget
/keypress esc
/varset wpsave ${Math.Calc[${wpsave}+1]}
/if (${Spawn[${HealerName}].ID} && (${wpsave}>6)) /varset wpsave 0
/if (${Target.Type.NotEqual[NPC]} || !${Target.ID}) /warp wp ${Spawnloc[${wpsave}]}
/delay 20
/if (${NearestSpawn[NPC].Distance}>25) {
/return
} else {
/target ${NearestSpawn[NPC]}
/varset RV_HasTarget 1
/return
}
/return
|--------------------------------------------------------------------------------
|SUB: Moving
|--------------------------------------------------------------------------------
Sub MoveToMob
/if (${Int[${Target.Distance}]}>25) {
/delay 20
/warp target
}
/return
|--------------------------------------------------------------------------------
|SUB: Combat
|--------------------------------------------------------------------------------
Sub CombatSub
/varset RV_Fighting 1
/varset RV_TargetDead 0
/stick 13 moveback
:CombatLoop
/doevents
/delay 15
/attack on
/if (${Window[ConfirmationDialogBox].Open}) /notify ConfirmationDialogBox Yes_Button leftmouseup
/if (${Target.Distance}>16) /stick 13 moveback
/if (!${Target.Type.Equal["NPC"]}) /keypress esc
/if (${Target.ID}) /face fast
/if (${Target.ID}) /call SpecialIT
/if (!${Target.ID}) {
/call GMCheck
/attack off
/keypress forward
/keypress back
/varset RV_TargetDead 1
/varset RV_Fighting 0
/delay 30
/target radius 30 corpse
/varset snareonce TRUE
/varset slowonce TRUE
/varset dotonce TRUE
/if (!${Spawn[${HealerName}].ID}) {
/gate
/quit
/endmacro
}
/if ((${Me.PctHPs}>60)&&(${Me.Buff["Swift like the Wind"].Duration}<=30)) {
/tell ${HealerName} haste
:wait4haste
/if (${Me.Buff["Swift like the Wind"].Duration}>30) /goto :nextbuff1
/goto :wait4haste
}
:nextbuff1
/if (${Me.Buff["Focus of Soul"].Duration}<=100) {
/tell ${HealerName} focus
:wait4focus
/if (${Me.Buff["Focus of Soul"].Duration}>100) /return
/goto :wait4focus
}
/return
}
}
/goto :CombatLoop
/return
|--------------------------------------------------------------------------------
|SUB: Special Combat
|--------------------------------------------------------------------------------
Sub SpecialIt
|------Auto-Frenzy and Stun on low health
/if ((${Target.Distance}<17)&&(${Me.AbilityReady["Kick"]})) /doability "Kick"
/if ((${Target.Distance}<17)&&(${Me.AbilityReady["Taunt"]})) /doability "Taunt"
/if (${Me.PctHPs}<15) {
/warp wp safe
/mqlog LOW HP Succored
/delay 10
/quit
/endmacro
}
|------Slows and DoTs to decrease mobs DPS
/if ((${Me.PctHPs}>60)&&(${Target.PctHPs}<45)&&(${dotonce})) {
/tell ${HealerName} dot
/varset dotonce FALSE
}
/if ((${Me.PctHPs}>60)&&(${Target.PctHPs}<95)&&(${slowonce})) {
/tell ${HealerName} slow
/varset slowonce FALSE
}
|------Disciplines to increase DPS---------
| /if ((${Me.CombatAbilityReady["Reckless Discipline"]})&&(${Target.PctHPs}>95)) /disc Reckless Discipline
| /if ((${Me.CombatAbilityReady["Rage Volley"]})&&(${Me.Endurance}>3000)) /disc Rage Volley
| /if ((${Me.CombatAbilityReady["Blind Rage Discipline"]})&&(${Target.PctHPs}>94)) /disc Blind Rage Discipline
|------Snaremob
| /if ((${Target.PctHPs}>20)&&(${Target.PctHPs}<26)&&(${snareonce})) /call snaremob
/return
|--------------------------------------------------------------------------------
|SUB: Reset
|--------------------------------------------------------------------------------
Sub ResetSub
/call ExpTrack
/delay 30
/keypress esc
/keypress esc
/keypress esc
/keypress esc
/varset RV_HasTarget 0
/varset RV_TargetDead 0
/varset RV_Fighting 0
/return
|--------------------------------------------------------------------------------
|SUB: GM Check ----Player Checks
|--------------------------------------------------------------------------------
Sub GMCheck
/if (${Zone.ID}!=${myzone}) {
/quit
/endmacro
}
/if (${Spawn[gm].ID}) {
/mqlog GM ENTERED ZONE!!!
/keypress forward
/keypress back
/quit
/endmacro
/unload
}
/return
|--------------------------------------------------------------------------------
|SUB: Looting
|--------------------------------------------------------------------------------
Sub LootMob
/declare LootSlot int inner 0
/declare LootCheck int inner 0
/declare LootTotal int inner 0
/face fast
/keypress forward
/keypress back
/fastdrop on
/lootn never
/delay 1s
/loot
/delay 1s
/if (!${Corpse.Items}) {
/echo NO LOOT! Cheap Bastard!
/call ResetSub
/return
}
/varset LootTotal ${Corpse.Items}
/for LootSlot 1 to ${LootTotal}
/itemnotify loot${LootSlot} leftmouseup
/delay 1s
|---------Keep Good Stuff---------------------
/for LootCheck 1 to ${RV_LootArray.Size}
/if (${Cursor.Name.Find[${RV_LootArray[${LootCheck}]}]}) {
/echo Keeping a ${Cursor.Name}... WOOT!
/autoinventory
/delay 1s
}
/next LootCheck
|---------Destroy Bad Stuff-------------------
/if (${Cursor.ID}) {
/echo Destroying a ${Cursor.Name}...
/destroy
/delay 1s
}
/next LootSlot
/notify LootWnd DoneButton leftmouseup
/delay 1s
/call ResetSub
/return
|--------------------------------------------------------------------------------
|SUB: Playercheck
|--------------------------------------------------------------------------------
Sub playercheck
|-----------Player Check-------Anyone comes near you jet!
/if (${Spawn[pc noalert 2 radius 400].ID}) {
:playerhold
/if (!${Spawn[pc noalert 2 radius 500].ID}) /return
/if (${NearestSpawn[NPC].Distance}<20) {
/target ${NearestSpawn[NPC]}
/varset RV_HasTarget 1
/call CombatSub
/call LootMob
}
/goto :playerhold
/return
Sub Event_Expreset
/call ExpReset
/return
waypoints.ini
Rich (BB code):
[Pojustice]
wp1=-388.37 269.61 -27.81 271.69:
wp2=-400.53 441.88 -27.81 310.52:
wp4=-392.02 620.23 -27.81 304.79:
wp5=-556.88 268.17 -27.81 177.81:
wp6=-565.06 423.87 -27.81 225.20:
wp3=-383.88 558.84 -27.81 263.29:
safe=862.00 470.00 9.38 177.19:
Enjoy,
Noobhaxor


ty