| Hacked Monk DPS Bitch Boy[ex-puller] By Ccomp5950 V2.5
| 4-26-05 5:57pm
|
|
#Chat group
#event Zoned "#*#LOADING, PLEASE WAIT...#*#"
#Event Unduck "#*#You must be standing to attack!#*#"
#Event BitchBoyHit "#*#YOU for#*#points of damage.#*#
#Event SwitchTargets "#*#tells the group, 'Switch Targets#*#"
#Event SitBooBoo "#*#tells the group, 'Back off'"
#Event YourFDSkillSucks "#*#has fallen to the ground#*#"
Sub Main
|------------------------------------------------------------
| Mend at in %. IE if you want to mend when your down to 50% you would set this to 50.
|------------------------------------------------------------
/declare RV_MendPct int outer 75
|------------------------------------------------------------
| How far is the combat range?
|------------------------------------------------------------
/declare RV_Range int outer 10
|------------------------------------------------------------
| What % HP do you wish to assist at?
|------------------------------------------------------------
/declare RV_Assistat int outer 96
|------------------------------------------------------------
| Don't worry about the rest.
|------------------------------------------------------------
/echo --------------------------------------
/echo Monk Bitch Boy 2.5 Initializing
/echo -----{Real Monks Pull!~}-----
/echo --------------------------------------
/echo
/declare RV_Looper int outer 0
/declare RV_MyTargetID int outer 0
/declare RV_MyTargetName string outer
/declare RV_MyTargetDead int outer 0
/declare RV_RandomWait int outer 0
/declare RV_CheckLook int outer 0
/declare RV_Fighting int outer 0
/declare RV_TargetDead int outer 0
/declare RV_MyXLOC int outer 0
/declare RV_MyYLOC int outer 0
/declare AnchorX int outer ${Me.X}
/declare AnchorY int outer ${Me.Y}
/declare RV_resetheading int outer ${Me.Heading.DegreesCCW.Int}
/declare NotBitchBoy string outer ${Target.CleanName}
/declare NotBitchBoysID int outer ${Target.ID}
/declare SitBooBooID int outer
/declare RV_FastRange int outer
/declare RV_RangeMax int outer
/declare RV_RangeMin int outer
/declare RV_Subreset int outer 0
/declare RV_Rangedw int outer
/declare Exper float outer
/declare AAExp float outer
/declare Mobs_Killed int outer 0
/varset Exper ${Me.PctExp}
/varset AAExp ${Me.PctAAExp}
/varcalc RV_FastRange ${RV_Range}+3
/varcalc RV_RangeMax ${RV_Range}+1
/varcalc RV_RangeMin ${RV_Range}-1
/varcalc RV_Rangedw ${RV_Rangedw} - 10
/if (${Target.Type.NotEqual["PC"]}) /call WhatTheFuckBitch
:Start
/doevents
/call GMCheck
/doevents
/call GetTarget
/doevents
/call CombatSub
/doevents
/call MoveToMob
/call ResetSub
/goto :Start
/return
|--------------------------------------------------------------------------------
|SUB: Aquire Target
|--------------------------------------------------------------------------------
Sub GetTarget
:NotYetBitchBoy
/assist ${NotBitchBoy}
/delay 4
/if (!${Target.ID}) /goto :NotYetBitchBoy
/if ((${Target.ID}!=${NotBitchBoysID}) && (${Target.PctHPs}<${RV_Assistat}) && (${Target.Distance}<150)) /return
/goto :NotYetBitchBoy
/delay 3s
/return
|--------------------------------------------------------------------------------
|SUB: GM Check
|--------------------------------------------------------------------------------
Sub GMCheck
/doevents
/if (${Spawn[gm].ID}) {
/beep
/beep
/beep
/echo GM has entered the zone!
/echo FUCK HIM but ending the macro...
/keypress forward
/keypress back
/quit
/endmacro
}
/return
|--------------------------------------------------------------------------------
|SUB: Where's the group?.
|--------------------------------------------------------------------------------
Sub CheckAnchor
/if (${Math.Distance[${AnchorY},${AnchorX}]}>8) /call MoveToAnchor
/return
|--------------------------------------------------------------------------------
|SUB: Move back to group.
|--------------------------------------------------------------------------------
Sub MoveToAnchor
/declare iCount int local
/varset iCount 0
| /echo Moving to Anchor at Loc: ${AnchorY}, ${AnchorX}.
/varset RV_MyXLOC ${Int[${Me.X}]}
/varset RV_MyYLOC ${Int[${Me.Y}]}
/declare RV_DistanceTimer timer 15
:AnchorMoveLoop
/delay 1
/doevents
/face fast nolook loc ${AnchorY},${AnchorX}
/if (${Math.Distance[${AnchorY},${AnchorX}]}>12) {
/keypress forward hold
} else {
/keypress forward
/face fast away nolook loc ${AnchorY},${AnchorX}
/return
}
/if (${iCount}>2) {
/face fast nolook loc ${AnchorY},${AnchorX}
/varset iCount 0
}
/if (!${RV_DistanceTimer}) {
/if ((${RV_MyXLOC}==${Int[${Me.X}]})&&(${RV_MyYLOC}==${Int[${Me.Y}]})) /call HitObstacle
/varset RV_MyXLOC ${Int[${Me.X}]}
/varset RV_MyYLOC ${Int[${Me.Y}]}
/varset RV_DistanceTimer 15
}
}
/varcalc iCount ${iCount}+1
/goto :AnchorMoveLoop
/return
|--------------------------------------------------------------------------------
|SUB: Obstacle Avoidance
|--------------------------------------------------------------------------------
Sub HitObstacle
/gsay Uhm I'm stuck, I either can't get back to camp or I can't get to the Mob. Damn I suck.
/gsay Feigning Death, get me set back up when you can.
/doability "Feign Death"
/endmacro
/return
|--------------------------------------------------------------------------------
|SUB: Reset
|--------------------------------------------------------------------------------
Sub ResetSub
/call CheckAnchor
/varset RV_TargetDead 0
/varset RV_Fighting 0
/doevents
/attack off
/keypress ESC
/face fast heading ${RV_resetheading}
/return
|--------------------------------------------------------------------------------
|SUB: Moving
|--------------------------------------------------------------------------------
Sub MoveToMob
/varset RV_MyXLOC ${Int[${Me.X}]}
/varset RV_MyYLOC ${Int[${Me.Y}]}
/declare RV_DistanceTimer timer 15
/doevents
:MovementLoop
/doevents
/if ((${Target.Type.Equal["Corpse"]})&&(${Int[${Target.Distance}]}>20)) {
/keypress forward hold
/delay 1
/goto :Movementloop
}
/if ((${Target.Type.Equal["Corpse"]})&&(${Int[${Target.Distance}]}<20)) /return
/if (${Target.ID}) {
/face fast nolook
}
/if (${Int[${Target.Distance}]}>${RV_FastRange}) {
/keypress forward hold
}
/if (${Int[${Target.Distance}]}<${RV_FastRange}&&${Int[${Target.Distance}]}>${RV_RangeMax}) {
/keypress forward
}
/if (${Int[${Target.Distance}]}<${RV_RangeMin}) {
/keypress back
/delay 3
}
/if (!${RV_DistanceTimer}) {
/doevents
/if ((${RV_MyXLOC}==${Int[${Me.X}]})&&(${RV_MyYLOC}==${Int[${Me.Y}]})) /call HitObstacle
/varset RV_MyXLOC ${Int[${Me.X}]}
/varset RV_MyYLOC ${Int[${Me.Y}]}
/varset RV_DistanceTimer 15
/goto :Movementloop
}
/if (${Int[${Target.Distance}]}>${RV_FastRange}) /goto :MovementLoop
/return
|--------------------------------------------------------------------------
|SUB PULL: Should only be called when pulling, hopefully MovetoMob is called rest of time
|Will check Line of Sight and if needed use way points to get to mobs. If used way points
|it will call them again in reverse order to get back to the camp after agroing the mob.
|--------------------------------------------------------------------------
|Removed since your a bitch boy, you don't do this.
|--------------------------------------------------------------------------------
|SUB: Combat (This is where you macro should be while beating the mob up)
|--------------------------------------------------------------------------------
Sub CombatSub
/varset RV_Fighting 1
/varset RV_TargetDead 0
/if ((${Target.ID})&&(${Target.Type.Equal["NPC"]})) /attack on
:CombatLoop
/doevents
/attack on
/call MoveToMob
/call SpecialIT
}
:nocombat
/if ((!${Target.ID}) || (${Target.Type.Equal["Corpse"]})) {
/varcalc Mobs_Killed (${Mobs_Killed}+1)
/attack off
/keypress forward
/keypress back
/keypress esc
/varset AAExp ${Math.Calc[${Me.PctAAExp}-${AAExp}]}
/varset Exper ${Math.Calc[${Me.PctExp}-${Exper}]}
/echo EXP: ${Exper}:${Me.PctExp}% - AAXP: ${AAExp}:${Me.PctAAExp}% - ${Math.Calc[${Macro.RunTime}/60]} minutes
/popup EXP: ${Exper}:${Me.PctExp}% - AAXP: ${AAExp}:${Me.PctAAExp}% - ${Math.Calc[${Macro.RunTime}/60]} minutes
/echo Total Mobs killed so far: ${Mobs_Killed}
/varset Exper ${Me.PctExp}
/varset AAExp ${Me.PctAAExp}
/varset RV_TargetDead 1
/varset RV_Fighting 0
}
/if (!${RV_TargetDead}) {
/goto :CombatLoop
}
/return
|--------------------------------------------------------------------------------
|SUB: Special Combat
|--------------------------------------------------------------------------------
Sub SpecialIT
|---------------------------------------------------------------------------------
| Checks if Flying Kick is up, if it is it performs a flying kick special attack.
|---------------------------------------------------------------------------------
/if (${Me.AbilityReady["Flying Kick"]}) /doability "Flying Kick"
|---------------------------------------------------------------------------------
| Line belox clicks your epic. Does not check to see if any buffs that block
| it are there (if you wish to add this Rogue Helper has it, I duo so I don't need it)
|---------------------------------------------------------------------------------
/if (!${Me.Buff[Celestial Tranquility].ID} && ${FindItem["Celestial Fist"].InvSlot.Name.Equal["hands"]}) /cast item "Celestial Fists"
|--------------------------------------------------------------------------------
| Checks to see if your HP is below what you set the varidible up top to mend at and
| if the ability is read...then Mends if both conditions are true
|--------------------------------------------------------------------------------
/if ((${Me.PctHPs} < ${RV_MendPct}) && (${Me.AbilityReady["Mend"]})) {
/doability "Mend"
}
|--------------------------------------------------------------------------------
| Checks to see if HP is below 10...if so FD's and ends macro
|--------------------------------------------------------------------------------
/if ((${Me.PctHPs} < 10) && (${Me.AbilityReady["Feign Death"]})) {
/attack off
/doability "Feign Death"
/delay 30s
/Echo ${Target} Beat me to within moments of my life.
/gsay ${Target} Beat me to within moments of my life. God I am a Bitch
/endmacro
}
/return
|--------------------------------------------------------------------------------
|
|--------------------------------------------------------------------------------
Sub WhatTheFuckBitch
/echo Uhm target the person you want to assist before starting this macro.
/endmacro
/return
Sub Event_BitchBoyHit
:againbitch
/doevents flush
/doability "Feign Death"
/delay 2
/sit
/return
Sub Event_SwitchTargets
/assist ${NotBitchBoy}
/gsay ${Target.CleanName} is my new target.
/return
Sub Event_SitBooBoo
/varset SitBooBooID ${Target.ID}
/gsay Ok if you say so.
/call CheckAnchor
/doability "Feign Death"
/gsay Gonna sit here FD till you target something else or what ya got targeted dies.
:SitBooBooLoop
/assist ${NotBitchBoy}
/delay 3
/if (${Target.ID}==${SitBooBooID}) /goto :SitBooBooLoop
/sit
/return
Sub Event_YourFDSkillSucks
/delay 10s
/doability "Feign Death"
/echo My FD skill Sucks!~
/gsay My FD skill Sucks!~
/return
Sub Event_Unduck
/call CheckAnchor
/return
Sub Event_Zoned
/gsay I have zoned, camping in 30 seconds. Probably because I am a Bitch Boy and Failed FD a few times and died.
/echo Zoned, camping in 30 seconds.
/delay 30s
/camp desktop
/delay 45s
/return