:puPPeT-maSTeR: !! old post pls delete or unsticky !!

Post your completed (working) macros here. Only for macros using MQ2Data syntax!

Moderator: MacroQuest Developers

z-roice
a lesser mummy
a lesser mummy
Posts: 62
Joined: Sun Aug 08, 2004 5:25 am

:puPPeT-maSTeR: !! old post pls delete or unsticky !!

Post by z-roice » Wed Sep 01, 2004 10:30 pm

Code: Select all

	|>  <>+=-                                                    -=+<>  <|
	| <>  <>+=-                                                -=+<>  <> |
	|>  <>  <>+=- :puPPeT-maSTeR: (v. 1.25) by Z-Ro Ice (tm) -=+<>  <>  <|
	| <>  <>+=-                                                -=+<>  <> |
	|>  <>+=-                  -- For Rogues --                  -=+<>  <|
I was inspired by Jerle's Rogue Helper when I wrote this so credits go to him too! Some Subs may look similar cuz of that.

Actual Version: 1.25

MQ2MoveUtils recommended for accessing all functions of :puPPeT-maSTeR: ! (look below for customoizing MQ2MoveUtils to work better with :puPPeT-MaSTeR:

IMPORTANT Note: You NEED to have either normal or abbreviated hit modes for "others hit you" and "others miss you" for correct aggro detection and handling .. honestly I have only tried abbreviated on my own but if you use "normal" mode then you have to comment out the abbreviated GotHit and GotMissed Events and outcomment the normal ones!

Documentation with all Funtions is worked on.. quick overview:

- AutoStick to mob (includes TankMode for times when you are tank)
- AutoSkillUsage depending on your role(stab, evade, disarm, intimidate, begging)
- Acustic Notice when you receive tells or your name is mentioned somewhere in chat
- Automatic Combat including Enrage/Infuriate/Unwilled Aggro Handling
- Automatic Nimble and Escape usage
- Visual Enhancement (popups with important Events as Aggro, Enrage, etc)
- AutoHeal, Cure, Shrink routines for those who got the items
- Automatic Random Illusion casting including max shrink afterwards
- Auto Sneak/Hide whenever possible
- Item clicking using /slash commands (also multiple casts)
- Auto Consent guild/raid/group on death
- and alot more (everything can be deactivated if you dont want or need it)

--- more to be added soon ---

AutoFollow (without getting stuck hopefully), safe AutoAssist (not breakin mezzes etc pp) and some kind of weaponswitch im thinkin of... maybe a buff watcher ..


Feel free to edit the code on your own as long as you share it with us =)

=========================================

for maximum usabilty you should edit MQ2MoveUtils a bit:

Code: Select all

            if( fabs(angularDistance(psTarget->Heading,pChSpawn->Heading)) > 85.0 ) {
 
-- 85 instead of 45 causes moveutils to react a bit more reasonable--

and

Code: Select all

         if( mPause && strncmp(Name,"UNSTICK_STRAFE_RGT",12) && strncmp(Name,"UNSTICK_STRAFE_LFT",19) ) {
            stickPaused = true;	
			prevMoveBehind = moveBehind || prevMoveBehind;
-- the last line was added so you stick behind your target again after manual movement


=========================================

LOOK A FEW POSTS BELOW FOR THE CURRENT SOURCE !!!
Last edited by z-roice on Wed Sep 08, 2004 3:23 pm, edited 19 times in total.

z-roice
a lesser mummy
a lesser mummy
Posts: 62
Joined: Sun Aug 08, 2004 5:25 am

Post by z-roice » Wed Sep 01, 2004 10:36 pm

look a few posts below for code

ADD this at end of PuppetMaster.mac - (was too lazy to switch posts around sorry)

Code: Select all

| -----------------
| -- Sub IniLoad --
| -----------------
Sub IniLoad
	/if (${Ini[PuppetMaster.ini,Settings,AutoStick].NotEqual[NULL]}) {

		/varset autoStick ${Ini[PuppetMaster.ini,Settings,AutoStick]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoStick" "${autoStick}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,LooseStick].NotEqual[NULL]}) {
		/varset looseStick ${Ini[PuppetMaster.ini,Settings,LooseStick]}
	} else {
		/ini "PuppetMaster" "Settings" "LooseStick" "${looseStick}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,MoveBack].NotEqual[NULL]}) {
		/varset moveBack ${Ini[PuppetMaster.ini,Settings,MoveBack]}
	} else {
		/ini "PuppetMaster" "Settings" "MoveBack" "${moveBack}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,Closeness].NotEqual[NULL]}) {
		/varset closeness ${Ini[PuppetMaster.ini,Settings,Closeness]}
	} else {
		/ini "PuppetMaster" "Settings" "Closeness" "${closeness}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoEvade].NotEqual[NULL]}) {
		/varset autoEvade ${Ini[PuppetMaster.ini,Settings,AutoEvade]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoEvade" "${autoEvade}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,EvadeAggro].NotEqual[NULL]}) {
		/varset evadeAggro ${Ini[PuppetMaster.ini,Settings,EvadeAggro]}
	} else {
		/ini "PuppetMaster" "Settings" "EvadeAggro" "${evadeAggro}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoBackstab].NotEqual[NULL]}) {
		/varset autoBackstab ${Ini[PuppetMaster.ini,Settings,AutoBackstab]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoBackstab" "${autoBackstab}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoDisarm].NotEqual[NULL]}) {
		/varset autoDisarm ${Ini[PuppetMaster.ini,Settings,AutoDisarm]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoDisarm" "${autoDisarm}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoIntimidate].NotEqual[NULL]}) {
		/varset autoIntimidate ${Ini[PuppetMaster.ini,Settings,AutoIntimidate]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoIntimidate" "${autoIntimidate}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoPickpocket].NotEqual[NULL]}) {
		/varset autoPickpocket ${Ini[PuppetMaster.ini,Settings,AutoPickpocket]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoPickpocket" "${autoPickpocket}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoBeg].NotEqual[NULL]}) {
		/varset autoBeg ${Ini[PuppetMaster.ini,Settings,AutoBeg]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoBeg" "${autoBeg}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoSneakHide].NotEqual[NULL]}) {
		/varset autoSneakHide ${Ini[PuppetMaster.ini,Settings,AutoSneakHide]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoSneakHide" "${autoSneakHide}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,DropSneak].NotEqual[NULL]}) {
		/varset dropSneak ${Ini[PuppetMaster.ini,Settings,DropSneak]}
	} else {
		/ini "PuppetMaster" "Settings" "DropSneak" "${dropSneak}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,CallDI].NotEqual[NULL]}) {
		/varset callDI ${Ini[PuppetMaster.ini,Settings,CallDI]}
	} else {
		/ini "PuppetMaster" "Settings" "CallDI" "${callDI}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoJoinGroup].NotEqual[NULL]}) {
		/varset autoJoinGroup ${Ini[PuppetMaster.ini,Settings,AutoJoinGroup]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoJoinGroup" "${autoJoinGroup}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoGreet].NotEqual[NULL]}) {
		/varset autoGreet ${Ini[PuppetMaster.ini,Settings,AutoGreet]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoGreet" "${autoGreet}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoLoot].NotEqual[NULL]}) {
		/varset autoLoot ${Ini[PuppetMaster.ini,Settings,AutoLoot]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoLoot" "${autoLoot}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,MinLootValue].NotEqual[NULL]}) {
		/varset minLootValue ${Ini[PuppetMaster.ini,Settings,MinLootValue]}
	} else {
		/ini "PuppetMaster.ini" "Settings" "MinLootValue" "${minLootValue}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,LootDistance].NotEqual[NULL]}) {
		/varset lootDistance ${Ini[PuppetMaster.ini,Settings,LootDistance]}
	} else {
		/ini "PuppetMaster" "Settings" "LootDistance" "${lootDistance}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,LdonCollect].NotEqual[NULL]}) {
		/varset ldonCollect ${Ini[PuppetMaster.ini,Settings,LdonCollect]}
	} else {
		/ini "PuppetMaster" "Settings" "LdonCollect" "${ldonCollect}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,LdonCollectItem].NotEqual[NULL]}) {
		/varset ldonCollectItem ${Ini[PuppetMaster.ini,Settings,LdonCollectItem]}
	} else {
		/ini "PuppetMaster" "Settings" "LdonCollectItem" "${ldonCollectItem}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoIllusion].NotEqual[NULL]}) {
		/varset autoIllusion ${Ini[PuppetMaster.ini,Settings,AutoIllusion]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoIllusion" "${autoIllusion}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoEscape].NotEqual[NULL]}) {
		/varset autoEscape ${Ini[PuppetMaster.ini,Settings,AutoEscape]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoEscape" "${autoEscape}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,EscapeHealth].NotEqual[NULL]}) {
		/varset escapeHealth ${Ini[PuppetMaster.ini,Settings,EscapeHealth]}
	} else {
		/ini "PuppetMaster" "Settings" "EscapeHealth" "${escapeHealth}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoNimble].NotEqual[NULL]}) {
		/varset autoNimble ${Ini[PuppetMaster.ini,Settings,AutoNimble]}
	} else {
		/ini "PuppetMaster" "Settings" "AutoNimble" "${autoNimble}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,NimbleHealth].NotEqual[NULL]}) {
		/varset nimbleHealth ${Ini[PuppetMaster.ini,Settings,NimbleHealth]}
	} else {
		/ini "PuppetMaster" "Settings" "NimbleHealth" "${nimbleHealth}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,DynamicNimble].NotEqual[NULL]}) {
		/varset dynamicNimble ${Ini[PuppetMaster.ini,Settings,DynamicNimble]}
	} else {
		/ini "PuppetMaster" "Settings" "DynamicNimble" "${dynamicNimble}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,TankMode].NotEqual[NULL]}) {
		/varset tankMode ${Ini[PuppetMaster.ini,Settings,TankMode]}
	} else {
		/ini "PuppetMaster" "Settings" "TankMode" "${tankMode}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,StrikeSkill].NotEqual[NULL]}) {
		/varset strikeSkill ${Ini[PuppetMaster.ini,Settings,StrikeSkill]}
	} else {
		/ini "PuppetMaster" "Settings" "StrikeSkill" "${strikeSkill}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,MinEndurance].NotEqual[NULL]}) {
		/varset minEndurance ${Ini[PuppetMaster.ini,Settings,MinEndurance]}
	} else {
		/ini "PuppetMaster" "Settings" "MinEndurance" "${minEndurance}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,MainAssist].NotEqual[NULL]}) {
		/varset mainAssist ${Ini[PuppetMaster.ini,Settings,MainAssist]}
	} else {
		/ini "PuppetMaster" "Settings" "MainAssist" "${mainAssist}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AutoAssistChange].NotEqual[NULL]}) {
		/varset autoAssistChange ${Ini[PuppetMaster.ini,Settings,AutoAssistChange]}
	} else {
		/ini "PuppetMaster.ini" "Settings" "AutoAssistChange" "${autoAssistChange}"
	}
	/if (${Ini[PuppetMaster.ini,Settings,AssistMessage].NotEqual[NULL]}) {
		/varset assistMessage ${Ini[PuppetMaster.ini,Settings,AssistMessage]}
	} else {
		/ini "PuppetMaster" "Settings" "AssistMessage" "${assistMessage}"
	}
/return

Last edited by z-roice on Sun Sep 05, 2004 5:24 pm, edited 3 times in total.

PhoenixZorn
Macro Czar
Posts: 127
Joined: Fri Dec 12, 2003 2:20 pm
Contact:

Post by PhoenixZorn » Thu Sep 02, 2004 1:18 am

OMFG... if I had to read every line of that macro, I'd go blind!! It's beautifully done. Not sure on your commenting though, it may read a crapload of those lines as macro code. Take out the line breaks and I'll be adding this to the zip release because this is how all macros should look...

Great structure, well commented. A+++ for effort.

Can you tell I am an e-bay seller?

User avatar
TheUnholy
a hill giant
a hill giant
Posts: 269
Joined: Wed Mar 03, 2004 11:59 pm

Post by TheUnholy » Thu Sep 02, 2004 1:52 am

can we remove the double spacing though? Eyes hhuuurrrttttt.....

z-roice
a lesser mummy
a lesser mummy
Posts: 62
Joined: Sun Aug 08, 2004 5:25 am

Post by z-roice » Thu Sep 02, 2004 9:47 am

PuppetMasterHelp.txt (v 1.21)

Code: Select all

| -- PuppetMasterHelp.txt
| -- Version: 1.21
| -- Date: 9/2/2004

			|>  <>+=-                                                    -=+<>  <|
			| <>  <>+=-                                                -=+<>  <> |
			|>  <>  <>+=- :puPPeT-maSTeR: (v. 1.21) by Z-Ro Ice (tm) -=+<>  <>  <|
			| <>  <>+=-                                                -=+<>  <> |
			|>  <>+=-                  -- For Rogues --                  -=+<>  <|

| ----------------------------------
| -- :puPPeT-maSTeR: Command Help --
| ----------------------------------
	
	-- /mainassist [<main assist>]

		<main assist>:

			Sets the current main assist.

		no argument:

			Displays the current main assist.



	-- /assistmsg [on/off/<assist message>]

		on:

			Activates reacting on assist messages from main assist.

		off:

			Disables reacting on assist messages from main assist.

		<assist message>:

			Sets the current assist message to be reacted on to <assist message>.

		no argument:

			Toggles reacting on assist messages from main assist.



	-- /tankmode [on/off]

		on:
			Disables moving behind mob on "Auto Stick".
			Disables "Auto Evade".
			Disables "Evade Aggro".
			Enables "Auto Disarm".
			Enables "Auto Intimidate".
			Enables "Auto Beg".

		off:

			Enables moving behind Mob on "Auto Stick".
			Enables "Auto Evade".
			Enables "Evade Aggro".
			Disables "Auto Disarm".
			Disables "Auto Intimidate".
			Disables "Auto Beg".

		no argument:

			Toggles moving behind mob on "Auto Stick".



	-- /strikeskill [<strike skill>]

		<strike skill>:

			Sets the current strike skill to <strike skill>.

		no argument:

			Displays the current strike skill setting.



	-- /minend [<minimal endurance %>]

		[<minimal endurance %>]:

			Sets the minimum endurance to use the strike skill.

		no argument:

			Displays the current minimum endurance setting.



	-- /autostick [on/off]

		on:

			Activates automatic sticking to mob (requires MQ2MoveUtils plugin).

		off:

			Deactivates automatic sticking.

		no argument:

			Toggles automatic sticking.



	-- /loosestick [on/off]

		on:

			Activates the "loose" function on sticking.

		off:

			Disables using the "loose" function.

		no argument:

			Toggles if "loose" function should be used on sticking.

	-- /moveback [on/off]

		on:

			Activates the "moveback" function on sticking. (Useful for AE Rampage)

		off:

			Deactivates the "moveback" function.

		no argument:

			Toggles if "moveback" function should be used on sticking.



	-- /closeness [<% of max melee range>]

		<% of max melee range>:

			Sets the % of melee range it should be sticked in.

		no argument:

			Displays the current closeness setting.



	-- /autoevade [on/off]

		on:

			Activates automatically evading from your target in combat.

		off:

			Deactivates automatically evading from your target in combat.

		no argument:

			Toggles the auto evade setting.



	-- /evadeaggro [on/off]

		on:

			Activates automatically turning off attack for a moment if aggro is detected.

		off:

			Deactivates turning off attack because of aggro.

		no argument:

			Toggles the evade aggro setting.



	-- /autobs [on/off]

		on:

			Activates automatically backstabbing in combat.

		off:

			Disables automatically backstabbing.

		no argument:

			Toggles the auto backstab setting.



	-- /autodisarm [on/off]

		on:

			Activates automatically disarming in combat.

		off:

			Disables automatically disarming.

		no argument:

			Toggles the auto disarm setting.



	-- /autofear[on/off]

		on:

			Activates automatically intimidating in combat.

		off:

			Disables automatically intimidating.

		no argument:

			Toggles the auto intimidate setting.



	-- /autopp [on/off]

		on:

			Activates automatically pickpocketing in combat

		off:

			Disables automatically pickpocketing

		no argument:

			Toggles the auto pickpocket setting.



	-- /autobeg [on/off]

		on:

			Activates automatically begging in combat

		off:

			Disables automatically begging

		no argument:

			Toggles the auto backstab setting.



	-- /autohide [on/off]

		on:

			Activates automatically sneaking and hiding whenever possible.

		off:

			Disables automatically sneaking and hiding.

		no argument:

			Toggles the auto sneak and hide setting.



	-- /dropsneak [on/off]

		on:

			Activates dropping sneak in combat for faster strafing.

		off:

			Disables automatically dropping sneak

		no argument:

			Toggles the drop sneak setting.



	-- /calldi [on/off]

		on:

			Activates automatically calling for DI in guildchat when DI is used on someone.

		off:

			Disables automatically DI calling.

		no argument:

			Toggles the call DI setting.



	-- /autojoin [on/off]

		on:

			Activates automatically joining group after you got an invite

		off:

			Disables automatically joining groups

		no argument:

			Toggles the auto join setting.



	-- /autogreet [on/off]

		on:

			Activates automatically greeting when you join a group or someone else joins.

		off:

			Disables automatically greeting.

		no argument:

			Toggles the auto greet setting.



	-- /autoloot [on/off]

		on:

			Activates automatically looting after you killed something (and gained exp from it).

		off:

			Disables automatically looting.

		no argument:

			Toggles the auto loot setting.



	-- /ldoncollect [on/off/<no-drop item to collect>]

		on:

			Activates looting no-drop items with the name stored during auto loots

		off:

			Disables looting the no-drop items.

		<no-drop item to collect>:

			Sets the no-drop item to collect.

		no argument:

			Toggles the ldon collect setting.



	-- /autoillusion [on/off]

		on:

			Activates automatic random illusion casting on zone or if it is about to fade.

		off:

			Deactivates automatic illusion casting.

		no argument:

			Toggles automatic illusion casting.



	-- /autoescape [on/off/<% health to use it>]

		on:

			Activates automatically escaping if your health is lower than "allowed".

		off:

			Disables automatically escaping.

		<% health to use it>:

			Sets the health % to use escape on.

		no argument:

			Toggles the auto escape setting.



	-- /autonimble [on/off/<% health to use it>]

		on:

			Activates automatically using nimble.

		off:

			Disables automatically using nimble.

		<% health to use it>:

			Sets the health % to use nimble on.

		no argument:

			Toggles the auto nimble setting.



	-- /dynimble [on/off]

		on:

			Activates dynamically reacting to damage taken and decide whether to go nimble.

		off:

			Disables dynamic nimble.

		no argument:

			Toggles dynamic nimble setting.



	-- /pause [on/off]

		on:

			Activated pause mode. All automatic functions will be deactivated in that mode.

		off:

			Disables pause mode.

		no argument:

			Toggles pause mode setting.



	-- /semiafk [on/off]


		on:

			Activates beeping whenever you receive a tell or someone mentions your name.

		off:

			Disables beeping.

		no argument:

			Toggles semi afk setting.



	-- /iclick <short item name> [<cast count>]


		<short item name>:

			Equips the linked item and performs a right click on it.

		<short item name> <cast count>:

			Performs multiple right clicks.



	-- /iset <short item name> "<full item name>" [mustequip] [<slash command>]

		<short item name>:

			Short name to use the item with with /iclick <short item name>.

		"<full item name>":

			Full item name.

		mustequip:

			Specifies that the item has to be equipped to click.

		<slash command>

			Adds a slash command to use the item with.

		Example:

			/iset DainBlessing "Ring of Dain Frostreaver IV" mustequip dain

			(will add /dain command to use it easy)



	-- /autoheal [<target health %>]

		<target health %>:

			Automatically uses the Mrylokar's Breastplate to heal up to <target health %> health.

		no argument:

			Automatically uses the Mrylokar's Breastplate to heal full.



	-- /autocure

		no argument:

			Automatically uses the Shield of the Immaculate to cure diseases.

	-- /autoshrink

		no argument:

			Automatically uses the item with the shortname "Shrink" to max shrink your Target if possible
			or shrinks yourself if an npc was targeted.



	-- /lootmycorpse

		no argument:

			Automatically loots your own corpse.



	-- /drag <corpse1> [<corpse2>] ..

		<corpse1> <corpse2> ..:

			Automatically drags the corpses.



	-- /illusion

		no argument:

			Casts a random illusion. To work you have to add your illusions in the form:

			Example:
			/iset Illusion_DarkElf "Mask of Deception" darkelf

			(shortnames to use: Illusion_DarkElf, Illusion_Dwarf, Illusion_EarthElemental
			Illusion_Erudite, Illusion_Gnome, Illusion_Halfling, Illusion_HalfElf,
			Illusion_HighElf, Illusion_Human, Illusion_Iksar, Illusion_Ogre,
			Illusion_Skeleton, Illusion_VahShir, Illusion_WoodElf)

			Note:

				Froglok left out to prevent accidently using the one charge.



	-- /kill

		no argument:

			Engages auto combat on your target or tries to use your best Strike Skill when
			Pause mode is on.



	-- /doassist

		no argument:

			Assists the main assist and engages combat when not paused.



	-- /status

		no argumnt:

			Displays the status on all settings.



	-- /help

		no argument:

			Displays a short syntax help for all commands.

Last edited by z-roice on Sat Sep 04, 2004 1:29 pm, edited 7 times in total.

z-roice
a lesser mummy
a lesser mummy
Posts: 62
Joined: Sun Aug 08, 2004 5:25 am

Post by z-roice » Thu Sep 02, 2004 9:49 am

PuppetMaster.mac (v 1.25)

Code: Select all

| -- PuppetMaster.mac
| -- Version: 1.25
| -- Date: 9/5/2004

			|>  <>+=-                                                    -=+<>  <|
			| <>  <>+=-                                                -=+<>  <> |
			|>  <>  <>+=- :puPPeT-maSTeR: (v. 1.25) by Z-Ro Ice (tm) -=+<>  <>  <|
			| <>  <>+=-                                                -=+<>  <> |
			|>  <>+=-                  -- For Rogues --                  -=+<>  <|

| ------------
| -- Events --
| ------------
#Chat say
#Chat tell

#Event ChatTrigger				"#*##1# tells the #2#,  '#3#'"
#Event ChatTrigger				"#*##1# tells the #2#, '#3#'"
#Event ChatChannelTrigger		"#*##1# tells #2#:#3#, '#4#'"

#Event EngageCombat				"[MQ2] Time to kick ass!!"
#Event AssistMessage			"#*#|${mainAssist}|#*#|${assistMessage}|#*#"
#Event Assist					"[MQ2] Assist#1#"
#Event RaidMainAssist			"#*##1# has been delegated Raid Main Assist."

#Event AttackOn					"Auto attack is on."
#Event AttackOff				"Auto attack is off."

|#Event GotHit					"#*##1#YOU for #2# points of damage."
#Event GotHit					"#*##1#for #2#"
|#Event GotMissed				"#*##1#tries to #*# you, but#*#"
#Event GotMissed				"#*##1#missed"

#Event ControlLoose				"You lose control of yourself!"
#Event ControlRegain			"You have control of yourself again."

#Event Death					"You died."
#Event Death					"You have been slain by #*#!"

#Event Exp						"You gain experience!!"
#Event Exp						"You gain party experience!!"
#Event Exp						"You gained raid experience!"

#Event Zoned					"You have entered #1#."

#Event HideSuccess				"You have hidden yourself from view."
#Event InvisCloak				"You hide yourself from view."
#Event Appearing    			"You feel yourself starting to appear." 
#Event HideStop					"You stop hiding."
#Event HideBreak				"You have moved and are no longer hidden!!"
#Event HideBreak				"You are no longer hidden."
#Event EvadeSuccess				"You have momentarily ducked away from the main combat."
#Event EvadeFail				"Your attempts at ducking clear of combat fail."

#Event Escape					"You escape from combat, hiding yourself from view."

#Event StrikeDiscSuccess		"You take careful aim at your opponent."
#Event StrikeDiscFail			"You can not use this ability because you have not been hidden for long enough."

#Event NimbleDisc				"You bounce about nimbly."
#Event NimbleDisc_Fade			"You movements return to normal."
#Event CounterattackDisc		"Your weapons move with uncanny grace."
#Event CounterattackDisc_Fade	"Your weapons lose their uncanny grace."
#Event DuelistDisc				"Your muscles quiver with power."
#Event DuelistDisc_Fade			"Your fury fades."
#Event KinestheticsDisc			"Your arms feel alive with mystic energy."
#Event KinestheticsDisc_Fade	"The mystic energy fades."
#Event TwistedChanceDisc		"Your attacks flow perfectly together."
#Event TwistedChanceDisc_Fade	"Your attacks return to normal."
#Event DeadeyeDisc				"You feel unstoppable."
#Event DeadeyeDisc_Fade			"Your confidence fades."
#Event DeadlyPrecisionDisc		"Your attacks take on deadly precision."
#Event DeadlyPrecisionDisc_Fade	"Your attacks return to their normal precision."
#Event BlindingSpeedDisc		"Your hands speed up."
#Event BlindingSpeedDisc_Fade	"Your attacks slow down."
#Event HealingWillDisc			"You will your wounds to close."
#Event HealingWillDisc_Fade		"Your will flatters."
#Event FearlessDisc				"Your will drives fear from your mind."
#Event FearlessDisc_Fade		"The specter of fear returns to your mind."
#Event Resistant_Disc			"You channel your will into magical resistance."
#Event Resistant_DiscFade		"Your resistance fades."

#Event DiscNotUp				"You can use the ability #1# again in #2# minute(s) #3# seconds."

#Event Enraged					"#*##1#has become ENRAGED." 
#Event NoLongerEnraged			"#*##1#is no longer enraged." 
#Event Infuriated				"#*##1#is infuriated!"
#Event NoLongerInfuriated		"#*##1#is no longer infuriated."

#Event Flurry					"#*##1#executes a FLURRY of attacks on |${Me.Name}|!"

#Event MobCast					"#*##1#begins to cast a spell."

#Event MobGateCast				"#*##1#begins to cast the gate spell."
#Event MobGate					"#*##1#Gates."

#Event SpellWorn				"Your #1# spell has worn off."

#Event ImmuneSlow 				"Your target is immune to changes in its attack speed."
#Event ImmuneRoot 				"Your target is immune to changes in its run speed." 

#Event BeenSummoned				"You have been summoned!"

#Event MezzBreak				"#*##1#has been awaked by #2#."

#Event DivineIntervention		"#*##1# has been rescued by divine intervention!"
#Event GroupInvite				"To join the group, click on the 'FOLLOW' option, or 'DISBAND' to cancel."
#Event GroupJoinSelf			"You have joined the group."
#Event GroupJoinOther			"#*##1# has joined the group."
#Event IllusionFade				"You feel as if you are about to look like yourself again."

#Event SetMainAssist			"[MQ2] SetMainAssist#1#"
#Event SetAutoAssistChange		"[MQ2] SetAutoAssistChange#1#"
#Event SetAssistMessage			"[MQ2] SetAssistMessage#1#"
#Event SetTankMode				"[MQ2] SetTankMode#1#"
#Event SetIncomingChannel		"[MQ2] SetIncomingChannel#1#"

#Event SetStrikeSkill			"[MQ2] SetStrikeSkill#1#"
#Event SetMinEndurance			"[MQ2] SetMinEndurance#1#"

#Event SetAutoStick				"[MQ2] SetAutoStick#1#"
#Event SetLooseStick			"[MQ2] SetLooseStick#1#"
#Event SetMoveBack				"[MQ2] SetMoveBack#1#"
#Event SetCloseness				"[MQ2] SetCloseness#1#"
#Event SetAutoEvade				"[MQ2] SetAutoEvade#1#"
#Event SetEvadeAggro			"[MQ2] SetEvadeAggro#1#"
#Event SetAutoBackstab			"[MQ2] SetAutoBackstab#1#"
#Event SetAutoDisarm			"[MQ2] SetAutoDisarm#1#"
#Event SetAutoIntimidate		"[MQ2] SetAutoIntimidate#1#"
#Event SetAutoPickpocket		"[MQ2] SetAutoPickpocket#1#"
#Event SetAutoBeg				"[MQ2] SetAutoBeg#1#"
#Event SetAutoSneakHide			"[MQ2] SetAutoSneakHide#1#"
#Event SetDropSneak				"[MQ2] SetDropSneak#1#"
#Event SetCallDI				"[MQ2] SetCallDI#1#"
#Event SetAutoJoinGroup			"[MQ2] SetAutoJoinGroup#1#"
#Event SetAutoGreet				"[MQ2] SetAutoGreet#1#"

#Event SetAutoIllusion			"[MQ2] SetAutoIllusion#1#"

#Event SetAutoLoot				"[MQ2] SetAutoLoot#1#"
#Event SetMinLootValue			"[MQ2] SetMinLootValue#1#"
#Event SetLdonCollect			"[MQ2] SetLdonCollect#1#"

#Event SetAutoEscape			"[MQ2] SetAutoEscape#1"

#Event SetAutoNimble			"[MQ2] SetAutoNimble#1#"
#Event SetDynamicNimble			"[MQ2] SetDynamicNimble#1#"

#Event ClickItem				"[MQ2] ClickItem#1#"
#Event SetClickItem				"[MQ2] SetClickItem#1#"

#Event AutoHeal					"[MQ2] AutoHeal#1#"
#Event AutoCure					"[MQ2] AutoCure"
#Event AutoShrink				"[MQ2] AutoShrink"
#Event GroupShrink				"[MQ2] GroupShrink"

#Event LootMyCorpse				"[MQ2] LootMyCorpse#1#"
#Event AutoLoot					"[MQ2] AutoLoot#1#"

#Event AutoDrag					"[MQ2] AutoDrag#1#"

#Event RandomIllusion			"[MQ2] RandomIllusion"
#Event SummonHorse				"[MQ2] SummonHorse"

#Event Incoming					"[MQ2] Incoming"

#Event SetPause					"[MQ2] SetPause#1#"
#Event SetSemiAfk				"[MQ2] SetSemiAfk#1#"

#Event ReloadIni				"[MQ2] ReloadIni"
#Event StatusReport				"[MQ2] StatusReport"
#Event DisplayHelp				"[MQ2] DisplayHelp"

| --------------
| -- Sub Main --
| --------------
Sub Main
	|-- Global Variables--

	/declare lastEvent				string	outer	None

	/declare strikeTimer 			timer	outer	0
	/declare strikeReady 			bool	outer	FALSE

	/declare isPaused				bool	outer	FALSE

	/declare autoStick				bool	outer	TRUE
	/declare looseStick				bool	outer	FALSE
	/declare closeness				int		outer	70
	/declare moveBack				bool	outer	FALSE
	/declare autoEvade				bool	outer	TRUE
	/declare evadeAggro				bool	outer	TRUE
	/declare autoBackstab			bool	outer	TRUE
	/declare autoDisarm				bool	outer	FALSE
	/declare autoIntimidate			bool	outer	FALSE
	/declare autoPickpocket			bool	outer	FALSE
	/declare autoBeg				bool	outer	FALSE
	/declare autoSneakHide			bool	outer	TRUE
	/declare dropSneak				bool	outer	TRUE

	/declare tankMode				bool	outer	FALSE

	/declare strikeSkill			string	outer	Assassins
	/declare minEndurance			int		outer	30
	/declare mainAssist				string	outer	+Undefined+
	/declare autoAssistChange		bool	outer	TRUE
	/declare assistMessage			string	outer	+Undefined+
	/declare assistOnMessage		bool	outer	FALSE
	/declare semiAfk				bool	outer	TRUE
	/declare callDI					bool	outer	TRUE
	/declare autoJoinGroup			bool	outer	TRUE
	/declare autoGreet				bool	outer	FALSE

	/declare autoLoot				bool	outer	FALSE
	/declare lootDistance			int		outer	50
	/declare minLootValue			int		outer	0
	/declare ldonCollectItem		string	outer	+Undefined+
	/declare ldonCollect			bool	outer	FALSE

	/declare autoIllusion			bool	outer	TRUE

	/declare autoEscape				bool	outer	TRUE
	/declare escapeHealth			int		outer	10

	/declare autoNimble				bool	outer	TRUE
	/declare nimbleHealth			int		outer	30
	/declare dynamicNimble			bool	outer	TRUE

	/declare behindTarget			bool	outer	FALSE
	/declare inRange				bool	outer	FALSE
	/declare evadeFails				int		outer	0
	/declare hitsTaken				int		outer	0
	/declare maxHit					int		outer	0
	/declare multiDamage			int		outer	0
	/declare oldTargetID			int		outer	0
	/declare oldTargetName			string	outer	+Undefined+
	/declare underControl			bool	outer	TRUE
	/declare nimbleActive			bool	outer	FALSE
	/declare nimbleTimer			timer	outer	0

	/declare isEnraged				bool	outer	FALSE
	/declare isInfuriated			bool	outer	FALSE
	/declare evadingEnrage			bool	outer	FALSE
	/declare aggroDetected			bool	outer	FALSE
	/declare evadingAggro			bool 	outer	FALSE
	/declare aggroTimer				timer	outer	0
	/declare aggroTestTimer			timer	outer	0
	/declare reHideTimer			timer	outer	0
	/declare diedBeforeZone			bool	outer	FALSE
	/declare currentZone			string	outer	${Zone.Name}

	/declare illusions[14]			string	outer
	/declare illusionCount			int		outer	0

	/declare incomingMessages[10]	string	outer	
	/declare incomingCount			int		outer	0
	/declare incomingChannel		string	outer	g

	|-- Short Commands

	/squelch /alias /mainassist /echo SetMainAssist
	/squelch /alias /assistchange /echo SetAutoAssistChange
	/squelch /alias /assistmsg /echo SetAssistMessage
	/squelch /alias /tankmode /echo SetTankMode

	/squelch /alias /strikeskill /echo SetStrikeSkill
	/squelch /alias /minend /echo SetMinEndurance

	/squelch /alias /autostick /echo SetAutoStick
	/squelch /alias /loosestick /echo SetLooseStick
	/squelch /alias /moveback /echo SetMoveBack
	/squelch /alias /closeness /echo SetCloseness
	/squelch /alias /autoevade /echo SetAutoEvade
	/squelch /alias /evadeaggro /echo SetEvadeAggro
	/squelch /alias /autobs /echo SetAutoBackstab
	/squelch /alias /autodisarm /echo SetAutoDisarm
	/squelch /alias /autofear /echo SetAutoIntimidate
	/squelch /alias /autopp /echo SetAutoPickpocket
	/squelch /alias /autobeg /echo SetAutoBeg
	/squelch /alias /autohide /echo SetAutoSneakHide
	/squelch /alias /dropsneak /echo SetDropSneak

	/squelch /alias /calldi /echo SetCallDI
	/squelch /alias /autojoin /echo SetAutoJoinGroup
	/squelch /alias /autogreet /echo SetAutoGreet

	/squelch /alias /autoloot /echo SetAutoLoot
	/squelch /alias /minvalue /echo SetMinLootValue
	/squelch /alias /ldoncollect /echo SetLdonCollect

	/squelch /alias /autoescape /echo SetAutoEscape

	/squelch /alias /autonimble /echo SetAutoNimble
	/squelch /alias /dynimble /echo SetDynamicNimble

	/squelch /alias /pause /echo SetPause
	/squelch /alias /semiafk /echo SetSemiAfk

	/squelch /alias /iclick /echo ClickItem
	/squelch /alias /iset /echo SetClickItem

	/squelch /alias /autoheal /echo AutoHeal
	/squelch /alias /autocure /echo AutoCure
	/squelch /alias /autoshrink /echo AutoShrink
	/squelch /alias /groupshrink /echo GroupShrink

	/squelch /alias /lootmycorpse /echo LootMyCorpse
	/squelch /alias /lootcorpse /echo AutoLoot

	/squelch /alias /drag /echo AutoDrag

	/squelch /alias /illusion /echo RandomIllusion
	/squelch /alias /horse /echo SummonHorse

	/squelch /alias /inc /echo Incoming
	/squelch /alias /channel /echo SetIncomingChannel

	/squelch /alias /kill /echo Time to kick ass!!
	/squelch /alias /doassist /echo Assist

	/squelch /alias /reload /echo ReloadIni
	/squelch /alias /status /echo StatusReport
	/squelch /alias /help /echo DisplayHelp

	|-- INI-Load

	/call IniLoad
	/call IllusionCheck
	/call IncomingMessageLoad

	|-- Discipline Short Commands

	/squelch /alias /nimble /disc nimble
	/squelch /alias /counter /disc counterattack
	/squelch /alias /duelist /disc duelist
	/squelch /alias /kine /disc kinesthetics
	/squelch /alias /twisted /disc twisted chance
	/squelch /alias /deadeye /disc deadeye
	/squelch /alias /deadly /disc deadly precision
	/squelch /alias /blinding /disc blinding speed
	/squelch /alias /healing /disc healing will
	/squelch /alias /fearless /disc fearless
	/squelch /alias /resistant /disc resistant


	/squelch /alias /assassins /disc assassins strike
	/squelch /alias /kyv /disc kyv strike
	/squelch /alias /chaos /disc chaos strike

	/squelch /alias /strike /disc ${strikeSkill}

	|-- Info Display

	/echo · ··-~^vV - :puPPeT-maSTeR: (v. 1.25) by Z-Ro Ice (tm) - Loaded
	/echo StatusReport

	/popup :puPPeT-maSTeR: loaded

	|-- Forever Loop

	:ForeverLoop

	/doevents

	/if (${isPaused} || !${underControl}) {
		/delay 2
		/goto :ForeverLoop
	}
	/if (${aggroTestTimer.OriginalValue} && !${aggroTestTimer.Value}) {
		/if (${hitsTaken} >= 1) {
			/varcalc hitsTaken ${hitsTaken}-1
			/varset aggroTestTimer 2s
		} else {
			/varset hitsTaken 0
			/varset aggroTestTimer 0
		}
	}
	/if (${Me.State.Equal[STUN]} || ${Me.Casting.ID} || ${Me.State.Equal[BIND]}) {
		/delay 2
		/goto :ForeverLoop
	}
	/if (${Me.State.Equal[FEIGNED]}) {
		/stand
	}
	/if (${Me.PctHPs} <= ${escapeHealth}) {
		/if (${autoEscape} && ${Me.AltAbilityReady["Escape"]}) {
			:makeSureAttackOff

			/attack off
			/delay 1
			/if (${Me.Combat}) {
				/goto :makeSureAttackOff
			}		
			/alt activate 102
			/delay 5
			/goto :ForeverLoop
		}
	}
	/if (${Target.ID} && (${Target.ID} != ${Me.ID}))  {
		/if ((${Target.ID} != ${oldTargetID}) && ${Target.Type.Equal[NPC]}) {
			/varset oldTargetID ${Target.ID}
			/if (${Target.CleanName.Left[1].Equal[#]}) {
				/varset oldTargetName ${Target.CleanName.Right[-1]}
			} else {
				/varset oldTargetName ${Target.CleanName}
			}
			/varset isEnraged FALSE
			/varset isInfuriated FALSE
			/varset evadingEnrage FALSE
			/varset evadingAggro FALSE
			/varset aggroDetected FALSE

			/varset evadeFails 0
			/varset hitsTaken 0
			/varset maxHit 0
			/varset multiDamage 0
			/varset aggroTimer 0
			/varset aggroTestTimer 0
		} 
		/if (${Me.Combat}) {
			/varset strikeReady FALSE
			/if (${Me.Sneaking} && ${dropSneak}) {
				/doability "Sneak"
			}
			/if (${Stick.Status.Equal[OFF]}) {
				/if (${autoStick}) {
					/call DoStick
				}
			}
			/if (${isEnraged}) {
				/call Check_Behind
				/if (!${behindTarget}) {
					/varset evadingEnrage TRUE
					/attack off

					/echo · ··-~^vV - Enrage Risk! Attack turned off
					/popup Enrage Risk! Attack off

					/delay 2
					/goto :ForeverLoop
				}
			}
			/if (${aggroDetected}) {
				/if (!${aggroTimer.Value}) {
					/varset evadingAggro FALSE
					/varset aggroDetected FALSE
					/if (${autoStick}) /call DoStick
				}
			}
			/if (${autoBackstab}) /call AutoBackstab
			/if (${autoEvade}) /call AutoEvade
			/if (${autoDisarm}) /call AutoDisarm
			/if (${autoIntimidate}) /call AutoIntimidate
			/if (${autoPickpocket}) /call AutoPickpocket
			/if (${autoBeg}) /call AutoBeg
		} else {
			/if (${strikeReady}) {
				/if (${Stick.Status.Equal[OFF]}) {
					/if (${autoStick}) /call DoStick

				}
				/call AutoStrike
				/if (${Macro.Return} || !${strikeTimer.Value} || !${Me.Invis}) {
					/varset strikeReady FALSE
					/attack on

					/delay 2
					/goto :ForeverLoop
				} else {
					/delay 2
					/goto :ForeverLoop
				}
			}
			/if (${evadingEnrage}) {
				/if (${autoEvade}) /call AutoEvade
				/call Check_Behind
				/if (${behindTarget} || !${isEnraged}) {
					/varset evadingEnrage FALSE
					/if (!${evadingAggro}) /attack on

					/echo · ··-~^vV - Enrage Risk over!
					/popup Enrage Risk over!

					/goto :ForeverLoop
				}
			} else /if (${evadingAggro}) {
				/if (${autoEvade}) /call AutoEvade
				/if (!${aggroTimer.Value}) {
					/if (${autoStick}) /call DoStick

					/varset evadingAggro FALSE
					/varset aggroDetected FALSE
					/if (!${evadingEnrage}) /attack on

					/echo · ··-~^vV - Aggro seems to be over!
					/popup Aggro seems over!

					/goto :ForeverLoop
				}
			} else {
				/if (!${Stick.Status.Equal[OFF]}) /squelch /stick off
				/if (${autoSneakHide}) /call AutoSneakHide
			}
		}
	} else {
		/if (!${Stick.Status.Equal[OFF]}) /squelch /stick off
		/if (${Me.Combat}) {
			/varset strikeReady FALSE
			/attack off
		}
		/if (${autoSneakHide}) /call AutoSneakHide
		/if (${strikeReady} && !${strikeTimer.Value}) {
			/varset strikeReady FALSE
		}
	}
	/goto :ForeverLoop
/return

| ----------------
| -- Event Chat --
| ----------------
Sub Event_Chat(string ChatType, string Sender, string ChatText) 
	/varset lastEvent Event_Chat

	/if (${semiAfk}) {
		/if (${ChatType.Equal[tell]}) {
			/beep
		} else /if (${ChatText.Find[${Me.Name}]}) {
			/beep
		}
	}
/return

| -----------------------
| -- Event ChatTrigger --
| -----------------------
Sub Event_ChatTrigger(string Line, string Sender, string ChatType, string ChatText) 
	/varset lastEvent Event_Chat

	/if (${semiAfk}) {
		/if (${ChatText.Find[${Me.Name}]}) {
			/beep
		}
	}
/return

| ------------------------------
| -- Event ChatChannelTrigger --
| ------------------------------
Sub Event_ChatChannelTrigger(string Line, string Sender, string ChatChannel, int ChannelNumber, string ChatText)
	/varset lastEvent Event_Chat

	/if (${semiAfk}) {
		/if (${ChatText.Find[${Me.Name}]}) {
			/beep
		}
	}
/return

| ------------------------
| -- Event EngageCombat --
| ------------------------
Sub Event_EngageCombat
	/varset lastEvent Event_EngageCombat

	/if (!${isPaused}) {
		/if (${autoStick}) /call DoStick
		/if (${Me.Invis} && (${Me.PctEndurance} >= ${minEndurance}) && !${strikeTimer.Value}) {
			/disc ${strikeSkill}
		} else {
			/varset strikeReady FALSE
			/attack on
		}		
	} else {
		/disc ${strikeSkill}
	}
/return


| -------------------------
| -- Event AssistMessage --
| -------------------------
Sub Event_AssistMessage
	/varset lastEvent Event_AssistMessage

	/if (${assistOnMessage} && !${isPaused}) {
		/assist ${mainAssist}
		/delay 5
		/echo Time to kick ass!!
	}
/return

| ------------------
| -- Event Assist --
| ------------------
Sub Event_Assist(string Line, string assistTarget)
	/varset lastEvent Event_Assist

	/varset assistTarget ${assistTarget.Right[-1]}
	/if (${assistTarget.Length}) {
		/assist ${assistTarget}
	} else {
		/assist ${mainAssist}
	}
	/if (!${isPaused}) {
		/delay 5
		/echo Time to kick ass!!
	}
/return

| --------------------------
| -- Event RaidMainAssist --
| --------------------------
Sub Event_RaidMainAssist(string Line, string newMainAssist)
	/varset lastEvent Event_RaidMainAssist
	/if (${autoAssistChange}) {
		/varset mainAssist ${newMainAssist}
		/echo · ··-~^vV - New Main Assist: ${mainAssist}
		/popup MA Change: ${mainAssist}
	}
/return

| ---------------
| -- Event Exp --
| ---------------
Sub Event_Exp
	/varset lastEvent Event_Exp

	/if (!${Target.ID}) {
		/varset isEnraged FALSE
		/varset isInfuriated FALSE
		/varset evadingEnrage FALSE
		/varset evadingAggro FALSE
		/varset aggroDetected FALSE

		/varset evadeFails 0
		/varset hitsTaken 0
		/varset hitsTaken 0
		/varset maxHit 0
		/varset aggroTimer 0
		/varset aggroTestTimer 0
	}
	/if (${autoLoot} && !${isPaused}) /echo AutoLoot
/return

| -----------------
| -- Event Death --
| -----------------
Sub Event_Death
	/varset lastEvent Event_Death

	/varset diedBeforeZone TRUE
/return

| -----------------
| -- Event Zoned --
| -----------------
Sub Event_Zoned(string Line, string newZone)
	/varset lastEvent Event_Zoned

	/echo · ··-~^vV - Entered Zone: ${newZone}

	/varset isEnraged FALSE
	/varset isInfuriated FALSE
	/varset evadingEnrage FALSE
	/varset evadingAggro FALSE
	/varset aggroDetected FALSE

	/varset evadeFails 0
	/varset hitsTaken 0
	/varset maxHit 0
	/varset multiDamage 0
	/varset aggroTimer 0
	/varset aggroTestTimer 0
	/varset reHideTimer 0

	/varset nimbleActive FALSE
	/varset currentZone ${Zone.Name}

	/varset assistOnMessage FALSE
	/if (${diedBeforeZone}) {
		/consent guild
		/timed 25 /consent raid
		/times 50 /consent group
		/varset diedBeforeZone FALSE
	} else 	/if (${autoIllusion} && !${isPaused}) {
		/if (${NearestSpawn[npc radius 50].ID}) {
			/echo · ··-~^vV - Possible Enemies nearby! Aborting Auto Illusion casting.
			/popup Possible Enemies nearby - Illusion hold
		} else {
			/delay 2s
			/illusion
		}
	}
/return

| --------------------
| -- Event AttackOn --
| --------------------
Sub Event_AttackOn
	/varset lastEvent Event_AttackOn

	/if (${autoStick} && !${isPaused}) /call DoStick
/return

| ---------------------
| -- Event AttackOff --
| ---------------------
Sub Event_AttackOff
	/varset lastEvent Event_AttackOff
/return

| ------------------
| -- Event GotHit --
| ------------------
Sub Event_GotHit(string Line, string arguments, int damageTaken)
	/varset lastEvent Event_GotHit

	/if (!${isPaused}) {
		/if (${arguments.Arg[1].Equal[You]}) /return
		/if (${arguments.Arg[1].Equal[${Me.Name}]}) /return
		/if (${arguments.Arg[1].Equal[Pierce]}) /return
		/if (${arguments.Arg[1].Equal[Backstab]}) /return
		/if (${arguments.Arg[1].Equal[Slash]}) /return
		/if (${arguments.Arg[1].Equal[Crush]}) /return
		/if (${arguments.Arg[1].Equal[Kick]}) /return

		/declare attackerName string local
		/declare damageType string local
		/declare i int local 2

		:nextArgument

		/if (${arguments.Arg[${i}].Length}) {
			/varcalc i ${i}+1
			/goto :nextArgument
		}
		/varcalc i ${i}-1

		/varset damageType ${arguments.Arg[${i}]}

		/if (${damageType.Equal[non-melee]}) /return
		/if (!${damageType.Equal[hits]} && !${damageType.Equal[kicks]} && !${damageType.Equal[bashes]} && !${damageType.Equal[slashes]} && !${damageType.Equal[crushes]} && !${damageType.Equal[pierces]} && !${damageType.Equal[bites]} && !${damageType.Equal[claws]} && !${damageType.Equal[backstabs]}) /return

		/varcalc i ${damageType.Length}+2

		/varset attackerName ${arguments.Left[-${i}]}

		/if (${attackerName.Equal[${oldTargetName}]}) {
			/if (${damageTaken} > ${maxHit}) {
				/varset maxHit ${damageTaken}
			}

			/if (${hitsTaken} < 6) /varcalc hitsTaken ${hitsTaken}+1

			/varset aggroTestTimer 2s

			/if ((${hitsTaken} >= 4) || ((${evadeFails} >= 2) && (${hitsTaken} >= 2))) {
				/if (${Me.Combat} && ${evadeAggro} && !${nimbleActive}) {
					/varset evadingAggro TRUE
					/varset aggroDetected TRUE
					/attack off

					/if (${autoStick}) /call DoStick
					/if (!${aggroTimer.Value}) {
						/echo · ··-~^vV - Aggro detected, turned attack off!
						/popup Aggro detected - Attack off!
					}
					/varset aggroTimer 3s
				} else {
					/varset aggroDetected TRUE

					/if (${autoStick}) /call DoStick
					/if (!${aggroTimer.Value} && !${tankMode}) {
						/echo · ··-~^vV - Aggro detected!
						/popup Aggro detected!
					}
					/varset aggroTimer 3s
				}
				/if  (${autoNimble}) {
					/if (${dynamicNimble}) {
						/varcalc multiDamage ${maxHit}*4
						/if (${Me.CurrentHPs} <= ${multiDamage}) {
							/if (!${nimbleTimer.Value}) {
								/disc nimble
								/delay 2
								/doevents
								/return
							}
						}
					}
					/if (${Me.PctHPs} <= ${nimbleHealth}) {
						/if (!${nimbleTimer.Value}) {
							/disc nimble
							/delay 2
							/doevents
							/return
						}
					}
				}
			}
		} else {
			/echo · ··-~^vV - Aggro detected on ${attackerName}
			/popup AGGRO on ${attackerName}

			/if (${autoNimble}) {
				/if (${dynamicNimble}) {
					/varcalc multiDamage ${maxHit}*6

					/if (${Me.CurrentHPs} <= ${multiDamage}) {
						/if (!${nimbleTimer.Value}) {
							/disc nimble
							/delay 2
							/doevents
							/return
						}
					}
				}
				/if (${Me.PctHPs} <= ${nimbleHealth}) {
					/if (!${nimbleTimer.Value}) {
						/disc nimble
						/delay 2
						/doevents
					}
				}
			}
		}
	}
/return

| ---------------------
| -- Event GotMissed --
| ---------------------
Sub Event_GotMissed(string Line, string attackerName)
	/varset lastEvent Event_GotMissed

	/if (!${isPaused}) {
		/varset attackerName ${attackerName.Left[-1]}

		/if (${attackerName.Equal[${oldTargetName}]}) {
			/if (${hitsTaken} < 6) /varcalc hitsTaken ${hitsTaken}+1
			/varset aggroTestTimer 2s
			/if ((${hitsTaken} >= 4) || ((${evadeFails} >= 2) && (${hitsTaken} >= 2))) {
				/if (${Me.Combat} && ${evadeAggro} && !${nimbleActive}) {
					/varset evadingAggro TRUE
					/varset aggroDetected TRUE
					/attack off

					/if (${autoStick}) /call DoStick
					/if (!${aggroTimer.Value}) {
						/echo · ··-~^vV - Aggro detected, turned attack off!
						/popup Aggro detected - Attack off!
					}
					/varset aggroTimer 3s
				} else {
					/varset aggroDetected TRUE

					/if (${autoStick}) /call DoStick
					/if (!${aggroTimer.Value} && !${tankMode}) {
						/echo · ··-~^vV - Aggro detected!
						/popup Aggro detected!
					}
					/varset aggroTimer 3s
				}
				/if  (${autoNimble}) {
					/if (${dynamicNimble}) {
						/varcalc multiDamage ${maxHit}*4

						/if (${Me.CurrentHPs} <= ${multiDamage}) {
							/if (!${nimbleTimer.Value}) {
								/disc nimble
								/delay 2
								/doevents
								/return
							}
						}
					}
					/if (${Me.PctHPs} <= ${nimbleHealth}) {
						/if (!${nimbleTimer.Value}) {
							/disc nimble
							/delay 2
							/doevents
							/return
						}
					}
				}
			}
			/if (${autoNimble}) {
				/if (${Me.PctHPs} <= ${nimbleHealth}) {
					/if (!${nimbleTimer.Value}) {
						/disc nimble
						/delay 2
						/doevents
					}
				}
			}
		} else {
			/echo · ··-~^vV - Aggro detected on ${attackerName}
			/popup AGGRO on ${attackerName}

			/if (${autoNimble}) {
				/if (${Me.PctHPs} <= ${nimbleHealth}) {
					/if (!${nimbleTimer.Value}) {
						/disc nimble
						/delay 2
						/doevents
					}
				}
			}
		}
	}
/return

| ------------------------
| -- Event ControlLoose --
| ------------------------
Sub Event_ControlLoose
	/varset lastEvent Event_ControlLoose

	/varset underControl FALSE
	/echo · ··-~^vV - You lost control over yourself!
	/popup You lost control!
/return


| -------------------------
| -- Event ControlRegain --
| -------------------------
Sub Event_ControlRegain
	/varset lastEvent Event_ControlRegain

	/varset underControl TRUE
	/echo · ··-~^vV - You gained your control back!
	/popup You gained your control back!
/return

| -----------------------
| -- Event HideSuccess --
| -----------------------
Sub Event_HideSucces
	/varset lastEvent Event_HideSuccess

	/varset reHideTimer 0
/return

| ----------------------
| -- Event InvisCloak --
| ----------------------
Sub Event_InvisCloak
	/varset lastEvent Event_InvisCloak

	/varset reHideTimer 0
/return

| ---------------------
| -- Event Appearing --
| ---------------------
Sub Event_Appearing
	/varset lastEvent Event_Appearing

	/echo · ··-~^vV - You start to appear!
	/popup You start to APPEAR!
/return

| --------------------
| -- Event HideStop --
| --------------------
Sub Event_HideStop
	/varset lastEvent Event_HideStop

	/varset reHideTimer 2s
	/varset strikeReady FALSE
/return

| ---------------------
| -- Event HideBreak --
|----------------------
Sub Event_HideBreak
	/varset lastEvent Event_HideBreak

	/varset reHideTimer 0
	/varset strikeReady FALSE
/return

| ------------------------
| -- Event EvadeSuccess --
| ------------------------
Sub Event_EvadeSuccess
	/varset lastEvent Event_EvadeSuccess

	/varset evadeFails 0
/return

| ---------------------
| -- Event EvadeFail --
| ---------------------
Sub Event_EvadeFail
	/varset lastEvent Event_EvadeSuccess

	/varcalc evadeFails ${evadeFails}+1
/return

| ------------------
| -- Event Escape --
| ------------------
Sub Event_Escape
	/varset lastEvent Event_Escape

	/echo · ··-~^vV - You have escaped!
	/popup You have escaped!

	/varset evadingEnrage FALSE
	/varset evadingAggro FALSE
	/varset strikeReady FALSE
/return

| -----------------------------
| -- Event StrikeDiscSuccess --
| -----------------------------
Sub Event_StrikeDiscSuccess
	/varset lastEvent Event_StrikeDiscSuccess

	/varset strikeTimer 30s
	/if (!${isPaused}) {
		/varset strikeReady TRUE
	}
	/echo · ··-~^vV - Strike Ready!
	/popup Strike Ready!
/return

| --------------------------
| -- Event StrikeDiscFail --
| --------------------------
Sub Event_StrikeDiscFail
	/varset lastEvent Event_StrikeDiscFail

	/varset strikeReady FALSE
	/if (!${isPaused}) {
		/attack on
	}
/return

| ----------------------
| -- Event NimbleDisc --
| ----------------------
Sub Event_NimbleDisc
	/varset lastEvent Event_NimbleDisc

	/varset nimbleTimer 22m
	/varset nimbleActive TRUE

	/echo · ··-~^vV - Nimble Discipline active!
	/popup Nimble is active!
/return

| ---------------------------
| -- Event NimbleDisc_Fade --
| ---------------------------
Sub Event_NimbleDisc_Fade
	/varset lastEvent Event_NimbleDisc_Fade

	/varset nimbleActive FALSE

	/echo · ··-~^vV - Nimble Discipline no longer active!
	/popup Nimble is OVER!
/return

| -----------------------------
| -- Event CounterattackDisc --
| -----------------------------
Sub Event_CounterattackDisc
	/varset lastEvent Event_CounterattackDisc

	/varset nimbleTimer 22m
	/varset nimbleActive TRUE

	/echo · ··-~^vV - Counterattack Discipline active!
	/popup Counterattack is active!
/return

| ----------------------------------
| -- Event CounterattackDisc_Fade --
| ----------------------------------
Sub Event_CounterattackDisc_Fade
	/varset lastEvent Event_CounterattackDisc_Fade

	/varset nimbleActive FALSE

	/echo · ··-~^vV - Counterattack Discipline no longer active!
	/popup Counterattack is OVER!
/return

| -----------------------
| -- Event DuelistDisc --
| -----------------------
Sub Event_DuelistDisc
	/varset lastEvent Event_DuelistDisc

	/echo · ··-~^vV - Duelist Discipline active!
	/popup Duelist is active!
/return

| ---------------------------
| -- Event DuelistDisc_Fade --
| ---------------------------
Sub Event_DuelistDisc_Fade
	/varset lastEvent Event_DuelistDisc_Fade

	/echo · ··-~^vV - Duelist Discipline no longer active!
	/popup Duelist is OVER!
/return

| ----------------------------
| -- Event KinestheticsDisc --
| ----------------------------
Sub Event_KinestheticsDisc
	/varset lastEvent Event_KinestheticsDisc

	/echo · ··-~^vV - Kinesthetics Discipline active!
	/popup Kinesthetics is active!
/return

| ---------------------------------
| -- Event KinestheticsDisc_Fade --
| ---------------------------------
Sub Event_KinestheticsDisc_Fade
	/varset lastEvent Event_KinestheticsDisc_Fade

	/echo · ··-~^vV - Kinesthetics Discipline no longer active!
	/popup Kinesthetics is OVER!
/return

| -----------------------------
| -- Event TwistedChanceDisc --
| -----------------------------
Sub Event_TwistedChanceDisc
	/varset lastEvent Event_TwistedChanceDisc

	/echo · ··-~^vV - Twisted Chance Discipline active!
	/popup Twisted Chance is active!
/return

| ----------------------------------
| -- Event TwistedChanceDisc_Fade --
| ----------------------------------
Sub Event_TwistedChanceDisc_Fade
	/varset lastEvent Event_TwistedChanceDisc_Fade

	/echo · ··-~^vV - Twisted Chance Discipline no longer active!
	/popup Twisted Chance is OVER!
/return

| -----------------------
| -- Event DeadeyeDisc --
| -----------------------
Sub Event_DeadeyeDisc
	/varset lastEvent Event_DeadeyeDisc

	/echo · ··-~^vV - Deadeye Discipline active!
	/popup Deadeye is active!
/return

| ----------------------------
| -- Event DeadeyeDisc_Fade --
| ----------------------------

Sub Event_DeadeyeDisc_Fade
	/varset lastEvent Event_DeadeyeDisc_Fade

	/echo · ··-~^vV - Deadeye Discipline no longer active!
	/popup Deadeye is OVER!
/return

| -------------------------------
| -- Event DeadlyPrecisionDisc --
| -------------------------------
Sub Event_DeadlyPrecisionDisc
	/varset lastEvent Event_DeadlyPrecisionDisc

	/echo · ··-~^vV - Deadly Precision Discipline active!
	/popup Deadly Precision is active!
/return

| ------------------------------------
| -- Event DeadlyPrecisionDisc_Fade --
| ------------------------------------
Sub Event_DeadlyPrecisionDisc_Fade
	/varset lastEvent Event_DeadlyPrecisionDisc_Fade

	/echo · ··-~^vV - Deadly Precision Discipline no longer active!
	/popup Deadly Precision is OVER!
/return

| -----------------------------
| -- Event BlindingSpeedDisc --
| -----------------------------
Sub Event_BlindingSpeedDisc
	/varset lastEvent Event_BlindingSpeedDisc

	/echo · ··-~^vV - Blinding Speed Discipline active!
	/popup Blinding Speed is active!
/return

| ----------------------------------
| -- Event BlindingSpeedDisc_Fade --
| ----------------------------------
Sub Event_BlindingSpeedDisc_Fade
	/varset lastEvent Event_BlindingSpeedDisc_Fade

	/echo · ··-~^vV - Blinding Speed Discipline no longer active!
	/popup Blinding Speed is OVER!
/return

| ---------------------------
| -- Event HealingWillDisc --
|----------------------------
Sub Event_HealingWillDisc
	/varset lastEvent Event_HealingWillDisc

	/echo · ··-~^vV - Healing Will Discipline active!
	/popup Healing Will is active!
/return

| --------------------------------
| -- Event HealingWillDisc_Fade --
| --------------------------------
Sub Event_HealingWillDisc_Fade
	/varset lastEvent Event_HealingWillDisc_Fade

	/echo · ··-~^vV - Healing Will Discipline no longer active!
	/popup Healing Will is OVER!
/return

| -----------------------------
| -- Event BlindingSpeedDisc --
| -----------------------------
Sub Event_FearlessDisc
	/varset lastEvent Event_FearlessDisc

	/echo · ··-~^vV - Fearless Discipline active!
	/popup Fearless is active!
/return

| ----------------------------------
| -- Event FearlessDisc_Fade --
| ----------------------------------
Sub Event_FearlessDisc_Fade
	/varset lastEvent Event_FearlessDisc_Fade

	/echo · ··-~^vV - Fearless Discipline no longer active!
	/popup Fearless is OVER!
/return

| -----------------------------
| -- Event ResistantDisc --
| -----------------------------
Sub Event_ResistantDisc
	/varset lastEvent Event_ResistantDisc

	/echo · ··-~^vV - Resistant Discipline active!
	/popup Resistant is active!
/return

| ------------------------------
| -- Event ResistantDisc_Fade --
| ------------------------------
Sub Event_BlindingSpeedDisc_Fade
	/varset lastEvent Event_ResistantDisc_Fade

	/echo · ··-~^vV - Resistant Discipline no longer active!
	/popup Resistant is OVER!
/return

| ---------------------
| -- Event DiscNotUp --
| ---------------------
Sub Event_DiscNotUp(string Line, string discipline, int reUseMinutes, int reUseSeconds)
	/varset lastEvent Event_DiscNotUp

	/if (${discipline.Equal[Nimble Discipline]}) {
		/varcalc nimbleTimer ((${reUseMinutes} * 600) + (${reUseSeconds} * 10))
	} else /if (${discipline.Equal[${strikeSkill} Strike]}) {
		/varset strikeTimer ${reUseSeconds}s
	}
/return

| -------------------
| -- Event Enraged --
| -------------------
Sub Event_Enraged(string Line, string enrageTarget)
	/varset lastEvent Event_Enraged
	
	/varset enrageTarget ${enrageTarget.Left[-1]}
	/if (${enrageTarget.Equal[${oldTargetName}]}) {
		/varset isEnraged TRUE

		/echo · ··-~^vV - Enrage detected!
		/popup ENRAGE detected!
	} else {
		/echo · ··-~^vV - Enrage detected: ${enrageTarget}!
		/popup ENRAGE detected: ${enrageTarget}!
	}
/return

| ---------------------------
| -- Event NoLongerEnraged --
| ---------------------------
Sub Event_NoLongerEnraged(string Line, string enrageTarget)
	/varset lastEvent Event_NoLongerEnraged

	/varset enrageTarget ${enrageTarget.Left[-1]}
	/if (${enrageTarget.Equal[${oldTargetName}]}) {
		/varset isEnraged FALSE

		/echo · ··-~^vV - Enrage done!
		/popup Enrage over!
	} else {
		/echo · ··-~^vV - Enrage done: ${enrageTarget}
		/popup Enrage over: ${enrageTarget}
	}
/return

| ----------------------
| -- Event Infuriated --
| ----------------------
Sub Event_Infuriated(string Line, string infuriateTarget)
	/varset lastEvent Event_Infuriated

	/varset infuriateTarget ${infuriateTarget.Left[-1]}
	/if (${infuriateTarget.Equal[${oldTargetName}]}) {
		/varset isInfuriated TRUE
		
		/echo · ··-~^vV - Infuriate detected!
		/popup INFURIATE detected!
		/if (${autoStick}) /call DoStick
	} else {
		/echo · ··-~^vV - Infuriate detected: ${infuriateTarget}
		/popup INFURIATE detected: ${infuriateTarget}
	}	
/return

| ------------------------------
| -- Event NoLongerInfuriated --
| ------------------------------
Sub Event_NoLongerInfuriated(string Line, string infuriateTarget)
	/varset lastEvent Event_NoLongerInfuriated

	/varset infuriateTarget ${infuriateTarget.Left[-1]}
	/if (${infuriateTarget.Equal[${oldTargetName}]}) {
		/varset isInfuriated FALSE

		/echo · ··-~^vV - Infuriate done!
		/popup Infuriate over!
		/if (${autoStick}) /call DoStick
	} else {
		/echo · ··-~^vV - Infuriate done: ${infuriateTarget}
		/popup Infuriate over: ${infuriateTarget}
	}
/return

| ------------------
| -- Event Flurry --
| ------------------
Sub Event_Flurry(string Line, string flurryTarget)
	/varset lastEvent Event_Flurry

	/varset flurryTarget ${flurryMob.Left[-1]}
	/if (${flurryTarget.Equal[${oldTargetName}]}) {
		/if (${Me.Combat} && ${evadeAggro} && !${nimbleActive}) {
			/varset evadingAggro TRUE
			/attack off

			/if (${autoStick}) /call DoStick
			/echo · ··-~^vV - Got FLURRIED on, turned attack off!
			/popup Got FLURRIED - Attack off!
			/varset aggroTimer 3s
		} else {
			/varset evadingAggro TRUE

			/if (${autoStick}) /call DoStick
			/echo · ··-~^vV - Got FLURRIED on!
			/popup Got FLURRIED!
			/varset aggroTimer 3s
		}	
	} else {
		/echo · ··-~^vV - Got FLURRIED on: ${flurryTarget}
		/popup Got FLURRIED: ${flurryTarget}		
	}	
/return

| -------------------
| -- Event MobCast --
| -------------------
Sub Event_MobCast(string Line, string castTarget)
	/varset lastEvent Event_MobCast

	/varset castTarget ${castTarget.Left[-1]}
	/if (${NearestSpawn[npc "${castTarget}"].Casting.Name.Equal[Complete Heal]}) {
		/echo · ··-~^vV - ${castTarget} tries to Complete Heal!
		/popup $${castTarget} tries to Complete Heal!
	}
/return

| -----------------------
| -- Event MobGateCast --
| -----------------------
Sub Event_MobGateCast(string Line, string gateTarget)
	/varset lastEvent Event_MobGateCast

	/varset gateTarget ${gateTarget.Left[-1]}

	/echo · ··-~^vV - ${gateTarget} tries to gate!
	/popup ${gateTarget} tries to gate!
/return

| -------------------
| -- Event MobGate --
| -------------------
Sub Event_MobGate(string Line, string gateTarget)
	/varset lastEvent Event_MobGateCast

	/varset gateTarget ${gateTarget.Left[-1]}
	/if (${gateTarget.Equal[${oldTargetName}]}) {
		/if (${Me.Combat}) {
			/attack off
		}
		
		/if (!${Stick.Status.Equal[OFF]}) /squelch /stick off
		/varset evadingEnrage FALSE
		/varset evadingAggro FALSE
		/varset strikeReady FALSE
	}
	/echo · ··-~^vV - ${gateTarget} has gated!
	/popup ${gateTarget} has gated!
/return

| ----------------------
| -- Event ImmuneSlow --
| ----------------------
Sub Event_ImmuneSlow
	/varset lastEvent Event_ImmuneSlow

/return

| ----------------------
| -- Event ImmuneRoot --
| ----------------------
Sub Event_ImmuneRoot
	/varset lastEvent Event_ImmuneRoot

/return

| -------------------
| -- Event MobGate --
| -------------------
Sub Event_MobGate(string Line, string gateTarget)
	/varset lastEvent Event_MobGateCast

	/varset gateTarget ${gateTarget.Left[-1]}
	/if (${gateTarget.Equal[${oldTargetName}]}) {
		/if (${Me.Combat}) {
			/attack off
		}
		
		/if (!${Stick.Status.Equal[OFF]}) /squelch /stick off
		/varset evadingEnrage FALSE
		/varset evadingAggro FALSE
		/varset strikeReady FALSE
	}
	/echo · ··-~^vV - ${gateTarget} has gated!
	/popup ${gateTarget} has gated!
/return

| ------------------------
| -- Event BeenSummoned --
| ------------------------
Sub Event_BeenSummoned
	/varset lastEvent Event_BeenSummoned

	/if (${Target.ID} && (${Target.Distance} > 50)) {
		/if (${Me.Combat}) {
			/attack off
		}
		/if (!${Stick.Status.Equal[OFF]}) /squelch /stick off
		/varset evadingEnrage FALSE
		/varset evadingAggro FALSE
		/varset strikeReady FALSE
	}
	/echo · ··-~^vV - You have been Summoned!
	/popup You have been Summoned!
/return

| ---------------------
| -- Event MezzBreak --
| ---------------------
Sub Event_MezzBreak(string Line, string mezzBreakTarget, string mezzBreaker)
	/varset lastEvent Event_MezzBreak

	/varset mezzBreakTarget ${mezzBreakTarget.Left[-1]}
/return

| ------------------------------
| -- Event DivineIntervention --
| ------------------------------
Sub Event_DivineIntervention(string Line, string DITarget)
	/varset lastEvent Event_DivineIntervention

	/declare i int local 0
	
	/varcalc i ${Math.Rand[2]}
	/varset DITarget ${DITarget.Lower}
	/if (${callDI} && (${Raid.Members} > 0) && ${currentZone.Equal[${Zone.Name}]}) {
		/delay 2s
		/guildsay di ${If[${i},${DITarget},${DITarget.Left[4]}]}
	}
	/echo DI used up on: ${DITarget}
	/popup DI used on: ${DITarget}
/return

| -----------------------
| -- Event GroupInvite --
| -----------------------
Sub Event_GroupInvite
	/varset lastEvent Event_GroupInvite

	/if (${autoJoinGroup} && !${isPaused}) {
		/delay 2s
		/invite
	}
/return

| -------------------------
| -- Event GroupJoinSelf --
| -------------------------
Sub Event_GroupJoinSelf
	/varset lastEvent Event_GroupJoinSelf

	/if (${autoGreet} && !${isPaused}) {
		/declare i int local 0

		/varset i ${Math.Rand[5]}
		/delay 3s
		/if (${i} == 0) {
			/groupsay hey
		} else /if (${i} == 1) {
			/groupsay hi
		} else /if (${i} == 2) {
			/groupsay sup
		} else /if (${i} == 3) {
			/groupsay heya
		} else /if (${i} == 4) {
			/groupsay ello
		}
	}
/return

| --------------------------
| -- Event GroupJoinOther --
| --------------------------
Sub Event_GroupJoinOther(string Line, string newGroupmember)
	/varset lastEvent Event_GroupJoinOther

	/if (${autoGreet} && !${isPaused}) {
		/varset newGroupmember ${newGroupmember.Lower}

		/declare i int local 0
		/declare j int local 0

		/varset i ${Math.Rand[5]}
		/varset j ${Math.Rand[2]}
		/delay 3s
		/if (${i} == 0) {
			/groupsay hey ${If[${j},${newGroupmember},]}
		} else /if (${i} == 1) {
			/groupsay hi ${If[${j},${newGroupmember},]}
		} else /if (${i} == 2) {
			/groupsay sup ${If[${j},${newGroupmember},]}
		} else /if (${i} == 3) {
			/groupsay heya ${If[${j},${newGroupmember},]}
		} else /if (${i} == 4) {
			/groupsay ello ${If[${j},${newGroupmember},]}
		}
	}
/return

| ------------------------
| -- Event IllusionFade --
| ------------------------
Sub Event_IllusionFade
	/varset lastEvent Event_IllusionFade

	/if (${autoIllusion}) {
		/if (${Me.Invis}) {
			/popup Illusion about to fade!
		} else {
			/illusion
		}
	}
/return

| -------------------------
| -- Event SetMainAssist --
| -------------------------
Sub Event_SetMainAssist(string Line, string newMainAssist)
	/varset lastEvent Event_SetMainAssist

	/varset newMainAssist ${newMainAssist.Right[-1]}
	/if (${newMainAssist.Length}) {
		/varset mainAssist ${newMainAssist}
		/ini "PuppetMaster.ini" "Settings" "MainAssist" "${mainAssist}"
	}
	/echo · ··-~^vV - MainAssist: ${mainAssist}
/return

| -------------------------------
| -- Event SetAutoAssistChange --
| -------------------------------
Sub Event_SetAutoAssistChange(string Line, string newAutoAssistChange)
	/varset lastEvent Event_SetAutoAssistChange

	/varset newAutoAssistChange ${newAutoAssistChange.Right[-1]}
	/if (${newAutoAssistChange.Length}) {
		/if (${newAutoAssistChange.Equal[ON]}) {
			/varset autoAssistChange TRUE
		} else /if (${newAutoAssistChange.Equal[OFF]}) {
			/varset autoAssistChange FALSE
		}
	} else {
		/if (${autoAssistChange}) {
			/varset autoAssistChange FALSE
		} else {
			/varset autoAssistChange TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoAssistChange" "${autoAssistChange}"
	/echo · ··-~^vV - Auto Assist Change: ${If[${autoAssistChange},ON,OFF]}
/return

| ----------------------------
| -- Event SetAssistMessage --
| ----------------------------
Sub Event_SetAssistMessage(string Line, string newAssistMessage)
	/varset lastEvent Event_SetAssistMessage

	/varset newAssistMessage ${newAssistMessage.Right[-1]}
	/if (${newAssistMessage.Length}) {
		/if (${newAssistMessage.Equal[ON]}) {
			/varset assistOnMessage TRUE
		} else /if (${newAssistMessage.Equal[OFF]}) {
			/varset assistOnMessage FALSE
		} else {
			/varset assistMessage ${newAssistMessage}
			/ini "PuppetMaster.ini" "Settings" "AssistMessage" "${assistMessage}"
		}
	}
	/echo · ··-~^vV - MainAssist: ${mainAssist}
	/echo · ··-~^vV - Assist Message: ${assistMessage}
	/echo · ··-~^vV - Assist on Message: ${If[${assistOnMessage},ON,OFF]}
/return

| -----------------------
| -- Event SetTankMode --
| -----------------------
Sub Event_SetTankMode(string Line, string newTankMode)
	/varset lastEvent Event_SetTankMode

	/varset newTankMode ${newTankMode.Right[-1]}
	/if (${newTankMode.Length}) {
		/if (${newTankMode.Equal[ON]}) {
			/varset tankMode TRUE

			/varset autoEvade FALSE
			/varset evadeAggro FALSE
			/varset autoDisarm TRUE
			/varset autoIntimidate TRUE
			/varset autoBeg TRUE

			/ini "PuppetMaster.ini" "Settings" "AutoEvade" "${autoEvade}"
			/ini "PuppetMaster.ini" "Settings" "EvadeAggro" "${evadeAggro}"
			/ini "PuppetMaster.ini" "Settings" "AutoDisarm" "${autoDisarm}"
			/ini "PuppetMaster.ini" "Settings" "AutoIntimidate" "${autoIntimidate}"
			/ini "PuppetMaster.ini" "Settings" "AutoBeg" "${autoBeg}"
		} else /if (${newTankMode.Equal[OFF]}) {
			/varset tankMode FALSE

			/varset evadeAggro TRUE
			/varset autoEvade TRUE
			/varset autoDisarm FALSE
			/varset autoIntimidate FALSE
			/varset autoBeg FALSE

			/ini "PuppetMaster.ini" "Settings" "AutoEvade" "${autoEvade}"
			/ini "PuppetMaster.ini" "Settings" "EvadeAggro" "${evadeAggro}"
			/ini "PuppetMaster.ini" "Settings" "AutoDisarm" "${autoDisarm}"
			/ini "PuppetMaster.ini" "Settings" "AutoIntimidate" "${autoIntimidate}"
			/ini "PuppetMaster.ini" "Settings" "AutoBeg" "${autoBeg}"
		}
	} else {
		/if (${tankMode}) { 
			/varset tankMode FALSE
		} else {
			/varset tankMode TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "TankMode" "${tankMode}"
	/echo · ··-~^vV - TankMode: ${If[${tankMode},ON,OFF]}
/return

| ------------------------------
| -- Event SetIncomingChannel --
| ------------------------------
Sub Event_SetIncomingChannel(string Line, string newIncomingChannel)
	/varset lastEvent Event_SetIncomingChannel

	/varset newIncomingChannel ${newIncomingChannel.Right[-1]}
	/if (${newIncomingChannel.Length}) {
		/varset incomingChannel ${newIncomingChannel}
	}
	/echo · ··-~^vV - Incoming Message Channel: ${incomingChannel}
/return

| --------------------------
| -- Event SetStrikeSkill --
| --------------------------
Sub Event_SetStrikeSkill(string Line, string newStrikeSkill)
	/varset lastEvent Event_SetStrikeSkill

	/varset newStrikeSkill ${newStrikeSkill.Right[-1]}
	/if (${newStrikeSkill.Length}) {
		/varset strikeSkill ${strikeSkill}
		/ini "PuppetMaster.ini" "Settings" "StrikeSkill" "${strikeSkill}"
	}
	/echo · ··-~^vV - Strike Skill: ${strikeSkill}
/return

| ---------------------------
| -- Event SetMinEndurance --
| ---------------------------
Sub Event_SetMinEndurance(string Line, string newMinEndurance)
	/varset lastEvent Event_SetMinEndurance

	/varset newMinEndurance ${newMinEndurance.Right[-1]}
	/if (${newMinEndurance.Length}) {
		/varset minEndurance ${newMinEndurance}
		/ini "PuppetMaster.ini" "Settings" "MinEndurance" "${minEndurance}"
	}
	/echo · ··-~^vV - Min-Endurance: ${minEndurance}%
/return

| ------------------------
| -- Event SetAutoStick --
| ------------------------
Sub Event_SetAutoStick(string Line, string newAutoStick)
	/varset lastEvent Event_SetAutoStick

	/varset newAutoStick ${newAutoStick.Right[-1]}
	/if (${newAutoStick.Length}) {
		/if (${newAutoStick.Equal[ON]}) {
			/varset autoStick TRUE
		} else /if (${newAutoStick.Equal[OFF]}) {
			/varset autoStick FALSE
		} 
	} else {
		/if (${autoStick}) { 
			/varset autoStick FALSE
		} else {
			/varset autoStick TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoStick" "${autoStick}"
	/echo · ··-~^vV - AutoStick: ${If[${autoStick},ON,OFF]}
/return

| -------------------------
| -- Event SetLooseStick --
| -------------------------
Sub Event_SetLooseStick(string Line, string newLooseStick)
	/varset lastEvent Event_SetLooseStick

	/varset newLooseStick ${newLooseStick.Right[-1]}
	/if (${newLooseStick.Length}) {
		/if (${newLooseStick.Equal[ON]}) {
			/varset looseStick TRUE
		} else /if (${newLooseStick.Equal[OFF]}) {
			/varset looseStick FALSE
		}
	} else {
		/if (${looseStick}) { 
			/varset looseStick FALSE
		} else {
			/varset looseStick TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "LooseStick" "${looseStick}"
	/echo · ··-~^vV - Loose Stick: ${If[${looseStick},ON,OFF]}
/return

| -----------------------
| -- Event SetMoveBack --
| -----------------------
Sub Event_SetMoveBack(string Line, string newMoveBack)
	/varset lastEvent Event_SetMoveBack

	/varset newMoveBack ${newMoveBack.Right[-1]}
	/if (${newMoveBack.Length}) {
		/if (${newMoveBack.Equal[ON]}) {
			/varset moveBack TRUE
		} else /if (${newMoveBack.Equal[OFF]}) {
			/varset moveBack FALSE
		} 
	} else {
		/if (${moveBack}) { 
			/varset moveBack FALSE
		} else {
			/varset moveBack TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "MoveBack" "${moveBack}"
	/echo · ··-~^vV - Move Back on Stick: ${If[${moveBack},ON,OFF]}
/return

| ------------------------
| -- Event SetCloseness --
| ------------------------
Sub Event_SetCloseness(string Line, string newCloseness)
	/varset lastEvent Event_SetCloseness

	/varset newCloseness ${newCloseness.Right[-1]}
	/if (${newCloseness.Length}) {
		/varset closeness ${newCloseness}
		/ini "PuppetMaster.ini" "Settings" "Closeness" "${closeness}"
	}
	/echo · ··-~^vV - Closeness: ${closeness}%
/return

| ------------------------
| -- Event SetAutoEvade --
| ------------------------
Sub Event_SetAutoEvade(string Line, string newAutoEvade)
	/varset lastEvent Event_SetAutoEvade

	/varset newAutoEvade ${newAutoEvade.Right[-1]}
	/if (${newAutoEvade.Length}) {
		/if (${newAutoEvade.Equal[ON]}) {
			/varset autoEvade TRUE
		} else /if (${newAutoEvade.Equal[OFF]}) {
			/varset autoEvade FALSE
		} 
	} else {
		/if (${autoEvade}) { 
			/varset autoEvade FALSE
		} else {
			/varset autoEvade TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoEvade" "${autoEvade}"
	/echo · ··-~^vV - AutoEvade: ${If[${autoEvade},ON,OFF]}
/return

| -------------------------
| -- Event SetEvadeAggro --
| -------------------------
Sub Event_SetEvadeAggro(string Line, string newEvadeAggro)
	/varset lastEvent Event_SetEvadeAggro

	/varset newEvadeAggro ${newEvadeAggro.Right[-1]}
	/if (${newEvadeAggro.Length}) {
		/if (${newEvadeAggro.Equal[ON]}) {
			/varset evadeAggro TRUE
		} else /if (${newEvadeAggro.Equal[OFF]}) {
			/varset evadeAggro FALSE
		} 
	} else {
		/if (${evadeAggro}) { 
			/varset evadeAggro FALSE
		} else {
			/varset evadeAggro TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "EvadeAggro" "${evadeAggro}"
	/echo · ··-~^vV - Evade Aggro: ${If[${evadeAggro},ON,OFF]}
/return
Last edited by z-roice on Sun Sep 05, 2004 5:11 pm, edited 13 times in total.

z-roice
a lesser mummy
a lesser mummy
Posts: 62
Joined: Sun Aug 08, 2004 5:25 am

Post by z-roice » Thu Sep 02, 2004 9:51 am

Code: Select all

| ---------------------------
| -- Event SetAutoBackstab --
| ---------------------------
Sub Event_SetAutoBackstab(string Line, string newAutoBackstab)
	/varset lastEvent Event_SetAutoBackstab

	/varset newAutoBackstab ${newAutoBackstab.Right[-1]}
	/if (${newAutoBackstab.Length}) {
		/if (${newAutoBackstab.Equal[ON]}) {
			/varset autoBackstab TRUE
		} else /if (${newAutoBackstab.Equal[OFF]}) {
			/varset autoBackstab FALSE
		} 
	} else {
		/if (${autoBackstab}) { 
			/varset autoBackstab FALSE
		} else {
			/varset autoBackstab TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoBackstab" "${autoBackstab}"
	/echo · ··-~^vV - AutoBackstab: ${If[${autoBackstab},ON,OFF]}
/return

| -------------------------
| -- Event SetAutoDisarm --
| -------------------------
Sub Event_SetAutoDisarm(string Line, string newAutoDisarm)
	/varset lastEvent Event_SetAutoDisarm

	/varset newAutoDisarm ${newAutoDisarm.Right[-1]}
	/if (${newAutoDisarm.Length}) {
		/if (${newAutoDisarm.Equal[ON]}) {
			/varset autoDisarm TRUE
		} else /if (${newAutoBackstab.Equal[OFF]}) {
			/varset autoDisarm FALSE
		} 
	} else {
		/if (${autoDisarm}) { 
			/varset autoDisarm FALSE
		} else {
			/varset autoDisarm TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoDisarm" "${autoDisarm}"
	/echo · ··-~^vV - AutoDisarm: ${If[${autoDisarm},ON,OFF]}
/return

| -----------------------------
| -- Event SetAutoIntimidate --
| -----------------------------
Sub Event_SetAutoIntimidate(string Line, string newAutoIntimidate)
	/varset lastEvent Event_SetAutoIntimidate
	
	/varset newAutoIntimidate ${newAutoIntimidate.Right[-1]}
	/if (${newAutoIntimidate.Length}) {
		/if (${newAutoIntimidate.Equal[ON]}) {
			/varset autoIntimidate TRUE
		} else /if (${newAutoIntimidate.Equal[OFF]}) {
			/varset autoIntimidate FALSE
		}
	} else {
		/if (${autoIntimidate}) {
			/varset autoIntimidate FALSE
		} else {
			/varset autoIntimidate TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoIntimidate" "${autoIntimidate}"
	/echo · ··-~^vV - AutoIntimidate: ${If[${autoIntimidate},ON,OFF]}
/return

| -----------------------------
| -- Event SetAutoPickpocket --
| -----------------------------
Sub Event_SetAutoPickpocket(string Line, string newAutoPickpocket)
	/varset lastEvent Event_SetAutoPickpocket

	/varset newAutoPickpocket ${newAutoPickpocket.Right[-1]}
	/if (${newAutoPickpocket.Length}) {
		/if (${newAutoPickpocket.Equal[ON]}) {
			/varset autoPickpocket TRUE
		} else /if (${newAutoPickpocket.Equal[OFF]}) {
			/varset autoPickpocket FALSE
		}
	} else {
		/if (${autoPickpocket}) {
			/varset autoPickpocket FALSE
		} else {
			/varset autoPickpocket TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoPickpocket" "${autoPickpocket}"
	/echo · ··-~^vV - AutoPickpocket: ${If[${autoPickpocket},ON,OFF]}
/return

| ----------------------
| -- Event SetAutoBeg --
| ----------------------
Sub Event_SetAutoBeg(string Line, string newAutoBeg)
	/varset lastEvent Event_SetAutoBeg

	/varset newAutoBeg ${newAutoBeg.Right[-1]}
	/if (${newAutoBeg.Length}) {
		/if (${newAutoBeg.Equal[ON]}) {
			/varset autoBeg TRUE
		} else /if (${newAutoBeg.Equal[OFF]}) {
			/varset autoBeg FALSE
		}
	} else {
		/if (${autoBeg}) {
			/varset autoBeg FALSE
		} else {
			/varset autoBeg TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoBeg" "${autoBeg}"
	/echo · ··-~^vV - AutoBeg: ${If[${autoBeg},ON,OFF]}
/return

| ----------------------------
| -- Event SetAutoSneakHide --
| ----------------------------
Sub Event_SetAutoSneakHide(string Line, string newAutoSneakHide)
	/varset lastEvent Event_SetAutoSneakHide

	/varset newAutoSneakHide ${newAutoSneakHide.Right[-1]}
	/if (${newAutoSneakHide.Length}) {
		/if (${newAutoSneakHide.Equal[ON]}) {
			/varset autoSneakHide TRUE
		} else /if (${newAutoSneakHide.Equal[OFF]}) {
			/varset autoSneakHide FALSE
		}
	} else {
		/if (${autoSneakHide}) {
			/varset autoSneakHide FALSE
		} else {
			/varset autoSneakHide TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoSneakHide" "${autoSneakHide}"
	/echo · ··-~^vV - AutoSneakHide: ${If[${autoSneakHide},ON,OFF]}
/return

| ------------------------
| -- Event SetDropSneak --
| ------------------------
Sub Event_SetDropSneak(string Line, string newDropSneak)
	/varset lastEvent Event_SetDropSneak

	/varset newDropSneak ${newDropSneak.Right[-1]}
	/if (${newDropSneak.Length}) {
		/if (${newDropSneak.Equal[ON]}) {
			/varset dropSneak TRUE
		} else /if (${newDropSneak.Equal[OFF]}) {
			/varset dropSneak FALSE
		}
	} else {
		/if (${dropSneak}) {
			/varset dropSneak FALSE
		} else {
			/varset dropSneak TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "DropSneak" "${dropSneak}"
	/echo · ··-~^vV - Drop Sneak in Combat: ${If[${dropSneak},ON,OFF]}
/return

| ---------------------
| -- Event SetCallDI --
| ---------------------
Sub Event_SetCallDI(string Line, string newCallDI)
	/varset lastEvent Event_SetCallDI

	/varset newCallDI ${newCallDI.Right[-1]}
	/if (${newCallDI.Length}) {
		/if (${newCallDI.Equal[ON]}) {
			/varset callDI TRUE
		} else /if (${newCallDI.Equal[OFF]}) {
			/varset callDI FALSE
		}
	} else {
		/if (${callDI}) {
			/varset callDI FALSE
		} else {
			/varset callDI TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "CallDI" "${callDI}"
	/echo · ··-~^vV - Call DI: ${If[${callDI},ON,OFF]}
/return

| -----------------------------
| -- Event SetAutoJoinGroup --
| -----------------------------
Sub Event_SetAutoJoinGroup(string Line, string newAutoJoinGroup)
	/varset lastEvent Event_SetAutoJoinGroup

	/varset newAutoJoinGroup ${newAutoJoinGroup.Right[-1]}
	/if (${newAutoJoinGroup.Length}) {
		/if (${newAutoJoinGroup.Equal[ON]}) {
			/varset autoJoinGroup TRUE
		} else /if (${newAutoJoinGroup.Equal[OFF]}) {
			/varset autoJoinGroup FALSE
		}
	} else {
		/if (${autoJoinGroup}) {
			/varset autoJoinGroup FALSE
		} else {
			/varset autoJoinGroup TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoJoinGroup" "${autoJoinGroup}"
	/echo · ··-~^vV - Auto Join Group: ${If[${autoJoinGroup},ON,OFF]}
/return

| ------------------------
| -- Event SetAutoGreet --
| ------------------------
Sub Event_SetAutoGreet(string Line, string newAutoGreet)
	/varset lastEvent Event_SetAutoGreet
	
	/varset newAutoGreet ${newAutoGreet.Right[-1]}
	/if (${newAutoGreet.Length}) {
		/if (${newAutoGreet.Equal[ON]}) {
			/varset autoGreet TRUE
		} else /if (${newAutoGreet.Equal[OFF]}) {
			/varset autoGreet FALSE
		}
	} else {
		/if (${autoGreet}) {
			/varset autoGreet FALSE
		} else {
			/varset autoGreet TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoGreet" "${autoGreet}"
	/echo · ··-~^vV - Auto Greet: ${If[${autoGreet},ON,OFF]}
/return

| ---------------------------
| -- Event SetAutoIllusion --
| ---------------------------
Sub Event_SetAutoIllusion(string Line, string newAutoIllusion)
	/varset lastEvent Event_SetAutoIllusion

	/varset newAutoIllusion ${newAutoIllusion.Right[-1]}
	/if (${newAutoIllusion.Length}) {
		/if (${newAutoIllusion.Equal[ON]}) {
			/varset autoIllusion TRUE
		} else /if (${newAutoIllusion.Equal[OFF]}) {
			/varset autoIllusion FALSE
		}
	} else {
		/if (${autoIllusion}) {
			/varset autoIllusion FALSE
		} else {
			/varset autoIllusion TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoIllusion" "${autoIllusion}"
	/echo · ··-~^vV - Auto Illusion: ${If[${autoIllusion},ON,OFF]}
/return

| -----------------------
| -- Event SetAutoLoot --
| -----------------------
Sub Event_SetAutoLoot(string Line, string newAutoLoot)
	/varset lastEvent Event_SetAutoLoot

	/varset newAutoLoot ${newAutoLoot.Right[-1]}
	/if (${newAutoLoot.Length}) {
		/if (${newAutoLoot.Equal[ON]}) {
			/varset autoLoot TRUE
		} else /if (${newAutoLoot.Equal[OFF]}) {
			/varset autoLoot FALSE
		} else {
			/varset lootDistance ${newAutoLoot}
		}
	} else {
		/if (${autoLoot}) {
			/varset autoLoot FALSE
		} else {
			/varset autoLoot TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoLoot" "${autoLoot}"
	/ini "PuppetMaster.ini" "Settings" "LootDistance" "${lootDistance}"
	/echo · ··-~^vV - Auto Loot: ${If[${autoLoot},ON,OFF]}
	/echo · ··-~^vV - Loot Distance: ${lootDistance}
/return

| ---------------------------
| -- Event SetMinLootValue --
| ---------------------------
Sub Event_SetAutoLoot(string Line, string newMinLootValue)
	/varset lastEvent Event_SetMinLootValue

	/varset newMinLootValue ${newMinLootValue.Right[-1]}
	/if (${newMinLootValue.Length}) {
		/varcalc minLootValue ${newMinLootValue}*1000
	}

	/ini "PuppetMaster.ini" "Settings" "MinLootValue" "${minLootValue}"
	/echo · ··-~^vV - Minimum Loot Value: ${Math.Calc[${minLootValue}/1000]}pp
/return

| --------------------------
| -- Event SetLdonCollect --
| --------------------------
Sub Event_SetLdonCollect(string Line, string newLdonCollect)
	/varset lastEvent Event_SetLdonCollect

	/varset newLdonCollect ${newLdonCollect.Right[-1]}
	/if (${newLdonCollect.Length}) {
		/if (${newLdonCollect.Equal[ON]}) {
			/varset ldonCollect TRUE
		} else /if (${newLdonCollect.Equal[OFF]}) {
			/varset ldonCollect FALSE
		} else {
			/varset ldonCollectItem ${newLdonCollect}
		}
	} else {
		/if (${ldonCollect}) {
			/varset ldonCollect FALSE
		} else {
			/varset ldonCollect TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "LdonCollect" "${ldonCollect}"
	/ini "PuppetMaster.ini" "Settings" "LdonCollectItem" "${ldonCollectItem}"
	/echo · ··-~^vV - LDON Collect: ${If[${ldonCollect},ON,OFF]}
	/echo · ··-~^vV - LDON Collect Item: ${ldonCollectItem}
/return

| -------------------------
| -- Event SetAutoEscape --
| -------------------------
Sub Event_SetAutoEscape(string Line, string newAutoEscape)
	/varset lastEvent Event_SetAutoEscape

	/varset newAutoEscape ${newAutoEscape.Right[-1]}
	/if (${newAutoEscape.Length}) {
		/if (${newAutoEscape.Equal[ON]}) {
			/varset autoEscape TRUE
		} else /if (${newEvadeAggro.Equal[OFF]}) {
			/varset autoEscape FALSE
		} else {
			/varset escapeHealth ${newAutoEscape}
		}
	} else {
		/if (${${autoEscape}) {
			/varset autoEscape FALSE
		} else {
			/varset autoEscape TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoEscape" "${autoEscape}"
	/ini "PuppetMaster.ini" "Settings" "EscapeHealth" "${escapeHealth}"
	/echo · ··-~^vV - Auto Escape: ${If[${autoEscape},ON,OFF]}
	/echo · ··-~^vV - Escape Health: ${escapeHealth}%
/return

| -------------------------
| -- Event SetAutoNimble --
| -------------------------
Sub Event_SetAutoNimble(string Line, string newAutoNimble)
	/varset lastEvent Event_SetAutoNimble

	/varset newAutoNimble ${newAutoNimble.Right[-1]}
	/if (${newAutoNimble.Length}) {
		/if (${newAutoNimble.Equal[ON]}) {
			/varset autoNimble TRUE
		} else /if (${newAutoNimble.Equal[OFF]}) {
			/varset autoNimble FALSE
		} else {
			/varset nimbleHealth ${arguments.Arg[1]}
		}
	} else {
		/if (${autoNimble}) {
			/varset autoNimble FALSE
		} else {
			/varset autoNimble TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "AutoNimble" "${autoNimble}"
	/ini "PuppetMaster.ini" "Settings" "NimbleHealth" "${nimbleHealth}"
	/echo · ··-~^vV - AutoNimble: ${If[${autoNimble},ON,OFF]}
	/echo · ··-~^vV - Nimble Health: ${nimbleHealth}%
	/echo · ··-~^vV - Dynamic Nimble Control: ${If[${dynamicNimble},ON,OFF]}
/return

| ----------------------------
| -- Event SetDynamicNimble --
| ----------------------------
Sub Event_SetDynamicNimble(string Line, string newDynamicNimble)
	/varset lastEvent Event_SetAutoNimble

	/varset newDynamicNimble ${newDynamicNimble.Right[-1]}
	/if (${newDynamicNimble.Length}) {
		/if (${newDynamicNimble.Equal[ON]}) {
			/varset dynamicNimble TRUE
		} else /if (${newDynamicNimble.Equal[OFF]}) {
			/varset dynamicNimble FALSE
		}
	} else {
		/if (${dynamicNimble}) {
			/varset dynamicNimble FALSE
		} else {
			/varset dynamicNimble TRUE
		}
	}
	/ini "PuppetMaster.ini" "Settings" "DynamicNimble" "${dynamicNimble}"
	/echo · ··-~^vV - AutoNimble: ${If[${autoNimble},ON,OFF]}
	/echo · ··-~^vV - Nimble Health: ${nimbleHealth}%
	/echo · ··-~^vV - Dynamic Nimble Control: ${If[${dynamicNimble},ON,OFF]}
/return

| ---------------------
| -- Event ClickItem --
| ---------------------
Sub Event_ClickItem(string Line, string arguments)
	/varset lastEvent Event_ClickItem

	/varset arguments ${arguments.Right[-1]}
	/if (${arguments.Length}) {
		/declare fullName string local ${Ini[PuppetMaster.ini,ClickItems,${arguments.Arg[1]}_FullName]}
		/if (${fullName.Equal[NULL]}) {
			/echo · ··-~^vV - [${arguments.Arg[1]}] not in INI file!
			/return
		}
		/declare castCount int local 1
		/if (${arguments.Arg[2].Length}) {
			/varset castCount ${arguments.Arg[2]}
		}
		/declare mustEquip string local ${Ini[PuppetMaster.ini,ClickItems,${arguments.Arg[1]}_MustEquip]}
		/if (${FindItem[${fullName}].InvSlot.Pack}) {
			/declare wasOpen bool local TRUE

			:openPack
			/if (!${Window[${FindItem[${fullName}].InvSlot.Pack.Name}].Open}) {
				/varset wasOpen FALSE
				/itemnotify ${FindItem[${fullName}].InvSlot.Pack.Name} rightmouseup
				/delay 2
				/goto :openPack
			}
			/declare cameFrom ${FindItem[${fullName}].InvSlot}
			
			:grabItem
			/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
			/delay 2
			/if (!${Cursor.ID}) {
				/goto :grabItem
			}
			/declare clickItemID ${Cursor.ID}

			/if (${mustEquip}) {
				/declare wornAt ${Cursor.WornSlot[1]}
			} else {
				/declare wornAt	pack1
			}

			:swapIn
			/itemnotify ${InvSlot[${wornAt}]} leftmouseup
			/delay 2
			/if (${Cursor.ID} == ${clickItemID}) {
				/goto :swapIn
			}
			/declare swappedOutItemID ${Cursor.ID}

			:clickIt
			/if (${Me.Ducking}) {
				/goto :swapOut
			}
			/if (${Me.Casting.ID}) {
				/delay 2
				/goto :clickIt
			}
			/if (${castCount} >= 1) {
				/varcalc castCount ${castCount}-1
				/echo · ··-~^vV - Clicking: ${fullName}

				/itemnotify ${InvSlot[${wornAt}]} rightmouseup
				/goto :clickIt
			}

			:swapOut
			/itemnotify ${InvSlot[${wornAt}]} leftmouseup
			/delay 2
			/if (${Cursor.ID} == ${swappedOutItemID}) {
				/goto :swapOut
			}

			:putBack
			/if (${Cursor.ID} == ${clickItemID}) {
				/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
				/delay 2
				/goto :putBack
			}

			:SummonedCheck
			/if (${Cursor.ID}) {
				/autoinv
				/delay 2
				/goto :SummonedCheck
			}

			:closePack
			/if (${Window[${InvSlot[${cameFrom}].Pack.Name}].Open} && !${wasOpen}) {
				/itemnotify ${InvSlot[${cameFrom}].Pack.Name} rightmouseup
				/delay 2
				/goto :closePack
			}
		} else /if (${FindItem[${fullName}].InvSlot}) {
			/declare wornAt ${FindItem[${fullName}].InvSlot}

			:clickIt2
			/if (${Me.Ducking}) {
				/goto :stopCast2
			}
			/if (${Me.Casting.ID}) {
				/delay 2
				/goto :clickIt2
			}
			/if (${castCount} >= 1) {
				/varcalc castCount ${castCount}-1
				/echo · ··-~^vV - Clicking: ${fullName}
				/itemnotify ${InvSlot[${wornAt}]} rightmouseup
				/goto :clickIt2
			}

			:stopCast2
			:SummonedCheck2

			/if (${Cursor.ID}) {
				/autoinv
				/delay 2
				/goto :SummonedCheck2
			}
		}
	} else {
		/echo · ··-~^vV - Usage: /iclick <Short_Name> [<Count>]
	}
/return

| ------------------------
| -- Event SetClickItem --
| ------------------------
Sub Event_SetClickItem(string Line, string arguments)
	/varset lastEvent Event_SetClickItem

	/varset arguments ${arguments.Right[-1]}
	/if (${arguments.Arg[2].Length}) {
		/ini "PuppetMaster.ini" "ClickItems" "${arguments.Arg[1]}_FullName" "${arguments.Arg[2]}"
		/if (${arguments.Arg[3].Equal[MustEquip]}) {
			/ini "PuppetMaster.ini" "ClickItems" "${arguments.Arg[1]}_MustEquip" "TRUE"
			/if (${arguments.Arg[4].Length}) {
				/alias /${arguments.Arg[4]} /echo ClickItem ${arguments.Arg[1]}
			}
		} else {
			/ini "PuppetMaster.ini" "ClickItems" "${arguments.Arg[1]}_MustEquip" "FALSE"
			/if (${arguments.Arg[3].Length}) {
				/alias /${arguments.Arg[3]} /echo ClickItem ${arguments.Arg[1]}
			}
		}
		/echo · ··-~^vV - Click-Item added.
	} else {
		/echo · ··-~^vV - Usage: /setclickitem <Short_Name> "<Full_Name>" [MustEquip] [<Slash_Command>]
	}
/return

| --------------------
| -- Event AutoHeal --
| --------------------
Sub Event_AutoHeal(string Line, string newTargetHealth)
	/varset lastEvent Event_AutoHeal

	/varset newTargetHealth ${newTargetHealth.Right[-1]}
	/declare targetHealth int local 100

	/if (${newTargetHealth.Length}) {
		/varset targetHealth ${newTargetHealth}
	}
	/declare fullName string local "Mrylokar's Breastplate"

	/if (${FindItem[${fullName}].InvSlot.Pack}) {
		/declare wasOpen bool local TRUE

		:openPack
		/if (!${Window[${FindItem[${fullName}].InvSlot.Pack.Name}].Open}) {
			/varset wasOpen FALSE
			/itemnotify ${FindItem[${fullName}].InvSlot.Pack.Name} rightmouseup
			/delay 2
			/goto :openPack
		}
		/declare cameFrom ${FindItem[${fullName}].InvSlot}

		:grabItem
		/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
		/delay 2
		/if (!${Cursor.ID}) {
			/goto :grabItem
		}
		/declare clickItemID ${Cursor.ID}
		/declare wornAt ${Cursor.WornSlot[1]}

		:swapIn
		/itemnotify ${InvSlot[${wornAt}]} leftmouseup
		/delay 2
		/if (${Cursor.ID} == ${clickItemID}) {
			/goto :swapIn
		}
		/declare swappedOutItemID ${Cursor.ID}

		:clickIt
		/if (${Me.Ducking}) {
			/goto :swapOut
		}
		/if (${Me.Casting.ID}) {
			/delay 2
			/goto :clickIt
		}

		/if (${Me.PctHPs} < ${targetHealth}) {
			/echo · ··-~^vV - Healing self.
			/itemnotify ${InvSlot[${wornAt}]} rightmouseup
			/goto :clickIt
		}

		:swapOut
		/itemnotify ${InvSlot[${wornAt}]} leftmouseup
		/delay 2
		/if (${Cursor.ID} == ${swappedOutItemID}) {
			/goto :swapOut
		}

		:putBack
		/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
		/delay 2
		/if (${Cursor.ID} == ${clickItemID}) {
			/goto :putBack
		}

		:closePack
		/if (${Window[${InvSlot[${cameFrom}].Pack.Name}].Open} && !${wasOpen}) {
			/itemnotify ${InvSlot[${cameFrom}].Pack.Name} rightmouseup
			/delay 2
			/goto :closePack
		}
	} else /if (${FindItem[${fullName}].InvSlot}) {
		/declare wornAt ${FindItem[${fullName}].InvSlot}

		:clickIt2
		/if (${Me.Ducking}) {
			/goto :stopCast
		}
		/if (${Me.Casting.ID}) {
			/delay 2
			/goto :clickIt2
		}
		/if (${Me.PctHPs}<${targetHealth}) {
			/echo · ··-~^vV - Healing self.
			/itemnotify ${InvSlot[${wornAt}]} rightmouseup
			/goto :clickIt2
		}
		:stopCast
	}
/return

| --------------------
| -- Event AutoCure --
| --------------------
Sub Event_AutoCure
	/varset lastEvent Event_AutoCure

	/declare fullName string local "Shield of the Immaculate"
	/declare beforeCureTargetID int local ${Target.ID}
	/declare i int local 0

	/for i 1 to 15
		/if (${Me.Buff[${i}].Spell.ResistType.Equal[Disease]}) {
			/goto :diseased
		}
	/next i
	
	/echo · ··-~^vV - Not diseased at the moment. Aborting.
	/return

	:diseased
	/if (${FindItem[${fullName}].InvSlot.Pack}) {
		/declare wasOpen bool local TRUE
	
		:openPack
		/if (!${Window[${FindItem[${fullName}].InvSlot.Pack.Name}].Open}) {
			/varset wasOpen FALSE
			/itemnotify ${FindItem[${fullName}].InvSlot.Pack.Name} rightmouseup
			/delay 2
			/goto :openPack
		}
		/declare cameFrom ${FindItem[${fullName}].InvSlot}

		:grabItem
		/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
		/delay 2
		/if (!${Cursor.ID}) {
			/goto :grabItem
		}
		/declare clickItemID ${Cursor.ID}
		/declare wornAt pack1

		:swapIn
		/itemnotify ${InvSlot[${wornAt}]} leftmouseup
		/delay 2
		/if (${Cursor.ID} == ${clickItemID}) {
			/goto :swapIn
		}
		/declare swappedOutItemID ${Cursor.ID}

		:clickIt
		/if (${Me.Ducking}) {
			/goto :swapOut
		}
		/if (${Me.Casting.ID}) {
			/delay 2
			/goto :clickIt
		}
		/for i 1 to 15
			/if (${Me.Buff[${i}].Spell.ResistType.Equal[Disease]}) {
				/target myself
				/echo · ··-~^vV - Trying to Cure: ${Me.Buff[${i}].Spell.Name}
				/itemnotify ${InvSlot[${wornAt}]} rightmouseup
				/goto :clickIt
			}
		/next i
		/echo · ··-~^vV - All Diseases Cured!

		:swapOut
		/itemnotify ${InvSlot[${wornAt}]} leftmouseup
		/delay 2
		/if (${Cursor.ID} == ${swappedOutItemID}) {
			/goto :swapOut
		}

		:putBack
		/if (${Cursor.ID} == ${clickItemID}) {
			/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
			/delay 2
			/goto :putBack
		}

		:closePack
		/if (${Window[${InvSlot[${cameFrom}].Pack.Name}].Open} && !${wasOpen}) {
			/itemnotify ${InvSlot[${cameFrom}].Pack.Name} rightmouseup
			/delay 2
			/goto :closePack
		}
	} else /if (${FindItem[${fullName}].InvSlot}) {
		/declare wornAt pack1

		:clickIt2
		/if (${Me.Ducking}) {
			/goto :stopCast
		}
		/if (${Me.Casting.ID}) {
			/delay 2
			/goto :clickIt2
		}
		/declare i int local 0

		/for i 1 to 15
			/if (${Me.Buff[i].Spell.ResistType.Equal[Disease]} && ${Me.Buff[i].Spell.SpellType.Equal[Detrimental]}) {
				/target myself
				/echo · ··-~^vV - Trying to Cure: ${Me.Buff[i].Spell.Name}
				/itemnotify ${InvSlot[${wornAt}]} rightmouseup
				/goto :clickIt2
			}
		/next i
		/echo · ··-~^vV - All Diseases Cured!

		:stopCast
	}
	/target id ${beforeCureTargetID}
/return

| ----------------------
| -- Event AutoShrink --
| ----------------------
Sub Event_AutoShrink
	/varset lastEvent Event_AutoShrink

	/declare beforeShrinkTargetID int ${Target.ID}
	/if (${Target.ID} == ${Me.ID}) {
		/if (${Me.Height} <= 3.00) {
			/echo · ··-~^vV - You dont need to be shrinked!
			/return
		}
	} else /if (${Me.Grouped} && ${Target.Type.Equal[PC]}) {
		/declare groupMember int 0

		/for groupMember 1 to ${Group}
			/if (${Group[${groupMember}].ID} == ${Target.ID}) /goto :canShrink
		/next groupMember

		/echo · ··-~^vV - Cannot shrink target! Aborting.
		/return

		:canShrink
		/if (${Target.Height} <= 3.00) {
			/echo · ··-~^vV - ${Target.CleanName} doesnt need to be shrinked!
			/return
		}
	} else {
		/if (${Me.Height} <= 3.00) {
			/echo · ··-~^vV - You dont need to be shrinked!
			/return
		}
		/target myself
	}
	/declare fullName string local ${Ini[PuppetMaster.ini,ClickItems,Shrink_FullName]}

	/if (${fullName.Equal[NULL]}) {
		/echo · ··-~^vV - [Shrink] not in INI file!
		/return
	}
	/declare mustEquip string local ${Ini[PuppetMaster.ini,ClickItems,Shrink_MustEquip]}

	/if (${FindItem[${fullName}].InvSlot.Pack}) {
		/declare wasOpen bool local TRUE

		:openPack
		/if (!${Window[${FindItem[${fullName}].InvSlot.Pack.Name}].Open}) {
			/varset wasOpen FALSE
			/itemnotify ${FindItem[${fullName}].InvSlot.Pack.Name} rightmouseup
			/delay 2
			/goto :openPack
		}
		/declare cameFrom ${FindItem[${fullName}].InvSlot}

		:grabItem
		/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
		/delay 2
		/if (!${Cursor.ID}) {
			/goto :grabItem
		}
		/declare clickItemID ${Cursor.ID}

		/if (${mustEquip}) {
			/declare wornAt ${Cursor.WornSlot[1]}
		} else {
			/declare wornAt	pack1
		}

		:swapIn
		/itemnotify ${InvSlot[${wornAt}]} leftmouseup
		/delay 2
		/if (${Cursor.ID} == ${clickItemID}) {
			/goto :swapIn
		}
		/declare swappedOutItemID ${Cursor.ID}

		:clickIt
		/if (${Me.Ducking}) {
			/goto :swapOut
		}
		/if (${Me.Casting.ID}) {
			/delay 2
			/goto :clickIt
		}
		/if (${Target.Height} > 3.00) {
			/echo · ··-~^vV - Shrinking: ${Target.CleanName}
			/itemnotify ${InvSlot[${wornAt}]} rightmouseup
			/goto :clickIt
		}

		:swapOut
		/itemnotify ${InvSlot[${wornAt}]} leftmouseup
		/delay 2
		/if (${Cursor.ID} == ${swappedOutItemID}) {
			/goto :swapOut
		}

		:putBack
		/if (${Cursor.ID} == ${clickItemID}) {
			/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
			/delay 2
			/goto :putBack
		}

		:closePack
		/if (${Window[${InvSlot[${cameFrom}].Pack.Name}].Open} && !${wasOpen}) {
			/itemnotify ${InvSlot[${cameFrom}].Pack.Name} rightmouseup
			/delay 2
			/goto :closePack
		}
	} else /if (${FindItem[${fullName}].InvSlot}) {
		/declare wornAt ${FindItem[${fullName}].InvSlot}

		:clickIt2
		/if (${Me.Ducking}) {
			/goto :stopCast2
		}
		/if (${Me.Casting.ID}) {
			/delay 2
			/goto :clickIt2
		}
		/if (${castCount} >= 1) {
			/varcalc castCount ${castCount}-1
			/echo · ··-~^vV - Clicking: ${fullName}
			/itemnotify ${InvSlot[${wornAt}]} rightmouseup
			/goto :clickIt2
		}
		:stopCast2
	}
	/target id ${beforeShrinkTargetID}
/return

| -----------------------
| -- Event GroupShrink --
| -----------------------
Sub Event_GroupShrink
	/varset lastEvent Event_GroupShrink
	
	/declare i int local 0
	/for i 1 to ${Group}
		/target pc ${Group[${i}]}
		/autoshrink
		/delay 2
	/next i
/return

| ------------------------
| -- Event LootMyCorpse --
| ------------------------
Sub Event_LootMyCorpse(string Line, string leaveSlot)
	/varset lastEvent Event_LootMyCorpse

	/varset leaveSlot ${leaveSlot.Right[-1]}
	/declare lootTotal int local 0
	/declare lootSlot int local 0
	/target mycorpse

	/if (!${Target.Type.Equal[CORPSE]}) {
		/echo · ··-~^vV - Can't target my corpse.
		/return
	}
	/corpse
	/delay 1s
	/loot
	/delay 1s
	/if (!${Me.State.Equal[BIND]}) {
		/echo · ··-~^vV - Erro in getting onto corpse! Aborting.
		/return
	}

	:lootLag
	/varset lootTotal ${Corpse.Items}	
	/delay 2
	/if (${lootTotal}!=${Corpse.Items}) {
		/goto :lootLag
	}
	/declare i int local 0

	/for lootSlot 1 to ${lootTotal}
		/if (${leaveSlot.Length}) {
			/for i 1 to ${Corpse.Item[${lootSlot}].WornSlots}
				/if (${Corpse.Item[${lootSlot}].WornSlot[${i}]} == ${InvSlot[${leaveSlot}].ID}]}) {
					/next lootSlot
				}
			/next i
		}

		:lootItem
		/itemnotify loot${lootSlot} rightmouseup
		/delay 2
		/if (${Corpse.Item[${lootSlot}].ID}) {
			 /goto :lootItem
		}
		/delay 5
	/next lootSlot

	/delay 5
	/echo · ··-~^vV - Done looting my corpse.
	/notify LootWnd DoneButton leftmouseup
/return

| --------------------
| -- Event AutoLoot --
| --------------------
Sub Event_AutoLoot(string Line, string nodropItemToLoot)
	/varset lastEvent Event_AutoLoot

	/varset nodropItemToLoot ${nodropItemToLoot.Right[-1]}
	/if (!${nodropItemToLoot.Length}) {
		/if (${ldonCollect}) {
			/varset nodropItemToLoot ${ldonCollectItem}
		}
	}
	/declare lootTotal int local -1
	/declare lootSlot int local 0

	/if (!${Target.Type.Equal[CORPSE]}) {
		/target npc corpse radius ${lootDistance}
		/delay 2
	}
	/if (!${Target.Type.Equal[CORPSE]}) {
		/echo · ··-~^vV - Cannot find corpse. Aborting!
		/return
	}
	/face ${If[${Me.Swimming},,nolook]} fast
	/keypress forward hold
	/delay 5s (${Target.Distance} < 5)
	/keypress forward
	/loot
	/delay 1s
	/if (!${Me.State.Equal[BIND]}) {
		/echo · ··-~^vV - Error getting to corpse! Aborting.
		/return
	}
	/echo · ··-~^vV - Looting ${Target.CleanName}

	:lootLag
	 /varset lootTotal ${Corpse.Items}
	/delay 5
	/if (${lootTotal} != ${Corpse.Items}) {
		/goto :lootLag
		 }
	/if (!${lootTotal}) {
		/echo · ··-~^vV - Empty corpse!
		/goto :doneLooting
	}
	/for lootSlot 1 to ${lootTotal}
		/if (!${Me.FreeInventory}) {
			/echo · ··-~^vV - INVENTORY FULL !
			/varset autoLoot FALSE
			/ini "PuppetMaster.ini" "Settings" "AutoLoot" "FALSE"
			/echo · ··-~^vV - Auto-Loot: OFF
			/goto :doneLooting
		}
		/if (${Corpse.Item[${lootSlot}].ID}) {
			/if (!${Corpse.Item[${lootSlot}].NoDrop}) {
				:lootItem
				/itemnotify loot${lootSlot} rightmouseup
				/delay 2
				/if (${Corpse.Item[${lootSlot}].ID}) {
					/goto :lootItem
				}
			} else /if (${nodropItemToLoot.Length} && ${Corpse.Item[${lootSlot}].Name.Equal[${nodropItemToLoot}]}) {
				/echo · ··-~^vV - Looting NODROP Item: ${Corpse.Item[${lootSlot}].Name}
				
				:lootNodropItem
				/itemnotify loot${lootSlot} rightmouseup
				/delay 2
				/if (!${Window[ConfirmationDialogBox.Open]}) /goto :lootNodropItem

				:nodropConfirm
				/notify ConfirmationDialogBox Yes_Button leftmouseup
				/delay 2
				/if (${Window[ConfirmationDialogBox.Open]}) /goto :nodropConfirm
				/if (${Corpse.Item[${LootSlot}].ID}) {
					/goto :lootNodropItem
				}
			} else {
				/echo · ··-~^vV - Skipping Item: ${Corpse.Item[${LootSlot}].Name}
			}
		}
		/delay 2
	/next lootSlot
	/echo · ··-~^vV - Done looting ${Target.CleanName}

	:doneLooting
	/delay 5
	/notify LootWnd DoneButton leftmouseup
/return

| --------------------
| -- Event AutoDrag --
| --------------------
Sub Event_AutoDrag(string Line, string corpseNames)
	/varset lastEvent Event_AutoDrag

	/varset corpseNames ${corpseNames.Right[-1]}
	/declare i int local 1
	/declare corpseCount int local 0

	:countCorpses
	/if (${corpseNames.Arg[${i}].Length}) {
		/varcalc i ${i}+1
		/goto :countCorpses
	}
	/varcalc i ${i}-1
	/if (${i} == 0) {
		/echo · ··-~^vV - No corpse names supplied!
		/return
	} else {
		/echo · ··-~^vV - Target self (F1) to stop dragging!
	}

	:dragLoop
	/for corpseCount 1 to ${i}
		/if (${Target.ID} == ${Me.ID}) {
			/echo · ··-~^vV - Body dragging ceased.
			/return
		}
		/target "${corpseNames.Arg[${corpseCount}]}'s corpse"
		/corpse
		/delay 5
	/next corpseCount
	/goto :dragLoop
/return

| --------------------------
| -- Event RandomIllusion --
| --------------------------
Sub Event_RandomIllusion
	/varset lastEvent Event_RandomIllusion

	/if (${illusionCount} > 0) {
		/declare i int local 0

		/for i 1 to 15
			/if (${Me.Buff[${i}].Spell.Name.Find[Illusion:]}) {
				/varcalc i ${i}-1
				/notify BuffWindow Buff${i} leftmouseup
				/delay 1
				/goto :illusionDropped
			}
		/next i

		:illusionDropped
		/varcalc i ${Math.Rand[${illusionCount}]}+1
		/iclick Illusion_${illusions[${i}]}
		/autoshrink
	}
/return

| -----------------------
| -- Event SummonHorse --
| -----------------------
Sub Event_SummonHorse
	/varset lastEvent Event_SummonHorse

	/declare fullName string local ${Ini[PuppetMaster.ini,ClickItems,Horse_FullName]}

	/if (${fullName.Equal[NULL]}) {
		/echo · ··-~^vV - [Horse] not in INI file!
		/return
	}
	/declare i int local 0

	/for i 1 to 15
		/if (${Me.Buff[${i}].Spell.Name.Equal[Summon Horse]}) {
			/varcalc i ${i}-1
			/notify BuffWindow Buff${i} leftmouseup
			/delay 1
			/goto :horseDropped
		}
	/next i

	:horseDropped
	/if (${FindItem[${fullName}].InvSlot.Pack}) {
		/declare wasOpen bool local TRUE
		:openPack
		/if (!${Window[${FindItem[${fullName}].InvSlot.Pack.Name}].Open}) {
			/varset wasOpen FALSE
			/itemnotify ${FindItem[${fullName}].InvSlot.Pack.Name} rightmouseup
			/delay 2
			/goto :openPack
		}
		/declare cameFrom ${FindItem[${fullName}].InvSlot}

		:grabItem
		/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
		/delay 2
		/if (!${Cursor.ID}) {
			/goto :grabItem
		}
		/declare clickItemID ${Cursor.ID}
		/declare wornAt pack1

		:swapIn
		/itemnotify ${InvSlot[${wornAt}]} leftmouseup
		/delay 2
		/if (${Cursor.ID} == ${clickItemID}) {
			/goto :swapIn
		}
		/declare swappedOutItemID ${Cursor.ID}
		/echo · ··-~^vV - Summoning Horse
		/itemnotify ${InvSlot[${wornAt}]} rightmouseup

		:clickIt
		/if (${Me.Ducking}) {
			/goto :swapOut
		}
		/if (${Me.Casting.ID}) {
			/delay 2
			/goto :clickIt
		}

		:swapOut
		/itemnotify ${InvSlot[${wornAt}]} leftmouseup
		/delay 2
		/if (${Cursor.ID} == ${swappedOutItemID}) {
			/goto :swapOut
		}

		:putBack
		/if (${Cursor.ID} == ${clickItemID}) {
			/itemnotify ${InvSlot[${cameFrom}]} leftmouseup
			/delay 2
			/goto :putBack
		}
		:closePack
		/if (${Window[${InvSlot[${cameFrom}].Pack.Name}].Open} && !${wasOpen}) {
			/itemnotify ${InvSlot[${cameFrom}].Pack.Name} rightmouseup
			/delay 2
			/goto :closePack
		}
	} else /if (${FindItem[${fullName}].InvSlot}) {
		/declare wornAt ${FindItem[${fullName}].InvSlot}

		/echo · ··-~^vV - Summoning Horse
		/itemnotify ${InvSlot[${wornAt}]} rightmouseup
		/if (${autoSneakHide}) {
			/delay 5
	
			:notSneaking
			/if (${Me.AbilityReady["Sneak"]}) /notify ActionsWindow AAP_FifthAbilityButton leftmouseup
			/delay 2
			/if (${Me.Sneaking}) {
				/delay 2
				/goto :notSneaking
			}
			/if (${Me.AbilityReady["Hide"]}) /notify ActionsWindow AAP_SixthAbilityButton leftmouseup
		}

		:clickIt2
		/if (${Me.Ducking}) {
			/goto :stopCast
		}
		/if (${Me.Casting.ID}) {
			/delay 2
			/goto :clickIt2
		}
		:stopCast
	}
/return

| --------------------
| -- Event Incoming --
| --------------------
Sub Event_Incoming
	/varset lastEvent Event_Incoming

	/if (${incomingCount} > 0) {
		/declare i int local
		/varcalc i ${Math.Rand[${incomingCount}]}+1

		/docommand /${incomingChannel} ${incomingMessages[${i}]}
	}
/return

| --------------------
| -- Event SetPause --
| --------------------
Sub Event_SetPause(string Line, string newPause)
	/varset lastEvent Event_SetPause

	/varset newPause ${newPause.Right[-1]}
	/if (${newPause.Length}) {
		/if (${newPause.Equal[ON]}) {
			/varset isPaused TRUE
			/if (!${Stick.Status.Equal[OFF]}) /squelch /stick off
		} else /if (${newPause.Equal[OFF]}) {
			/varset isPaused FALSE
		}
	} else {
		/if (${isPaused}) {
			/varset isPaused FALSE
		} else {
			/varset isPaused TRUE
			/if (!${Stick.Status.Equal[OFF]}) /squelch /stick off
		}
	}
	/echo · ··-~^vV - Status: ${If[${isPaused},PAUSED,RUNNING]}
	/popup ${If[${isPaused},PAUSED,RESUMED]}
/return

| ----------------------
| -- Event SetSemiAfk --
| ----------------------
Sub Event_SetSemiAfk(string Line, string newSemiAfk)
	/varset lastEvent Event_SetSemiAfk

	/varset newSemiAfk ${newSemiAfk.Right[-1]}
	/if (${newSemiAfk.Length}) {
		/if (${newSemiAfk.Equal[ON]}) {
			/varset semiAfk TRUE
		} else /if (${newSemiAfk.Equal[OFF]}) {
			/varset semiAfk FALSE
		}
	} else {
		/if (${semiAfk}) {
			/varset semiAfk FALSE
		} else {
			/varset semiAfk TRUE
		}
	}
	/echo · ··-~^vV - Semi-Afk: ${If[${semiAfk},ON,OFF]}
/return

| ---------------------
| -- Event ReloadIni --
| ---------------------
Sub Event_ReloadIni
	/varset lastEvent Event_ReloadIni

	/call IniLoad
	/call IllusionCheck
	/call IncomingMessageLoad
	/echo · ··-~^vV - Ini reloaded
/return

| ------------------------
| -- Event StatusReport --
| ------------------------
Sub Event_StatusReport
	/varset lastEvent Event_DisplayHelp

	/echo -=-=[ Current Settings ]=-=-

	/echo · ··-~^vV - MainAssist: ${mainAssist}
	/echo · ··-~^vV - Assist Message: ${assistMessage}
	/echo · ··-~^vV - Assist on Message: ${If[${assistOnMessage},ON,OFF]}
	/echo · ··-~^vV - TankMode: ${If[${tankMode},ON,OFF]}
	/echo · ··-~^vV - Strike Skill: ${strikeSkill}
	/echo · ··-~^vV - Min-Endurance: ${minEndurance}%
	/echo · ··-~^vV - AutoStick: ${If[${autoStick},ON,OFF]}
	/echo · ··-~^vV - Loose Stick: ${If[${looseStick},ON,OFF]}
	/echo · ··-~^vV - Move Back on Stick: ${If[${moveBack},ON,OFF]}
	/echo · ··-~^vV - Closeness: ${closeness}%
	/echo · ··-~^vV - AutoEvade: ${If[${autoEvade},ON,OFF]}
	/echo · ··-~^vV - Evade Aggro: ${If[${evadeAggro},ON,OFF]}
	/echo · ··-~^vV - AutoBackstab: ${If[${autoBackstab},ON,OFF]}
	/echo · ··-~^vV - AutoDisarm: ${If[${autoDisarm},ON,OFF]}
	/echo · ··-~^vV - AutoIntimidate: ${If[${autoIntimidate},ON,OFF]}
	/echo · ··-~^vV - AutoPickpocket: ${If[${autoPickpocket},ON,OFF]}
	/echo · ··-~^vV - AutoBeg: ${If[${autoBeg},ON,OFF]}
	/echo · ··-~^vV - AutoSneakHide: ${If[${autoSneakHide},ON,OFF]}
	/echo · ··-~^vV - Drop Sneak in Combat: ${If[${dropSneak},ON,OFF]}
	/echo · ··-~^vV - Call DI: ${If[${callDI},ON,OFF]}
	/echo · ··-~^vV - Auto Join Group: ${If[${autoJoinGroup},ON,OFF]}
	/echo · ··-~^vV - Auto Greet: ${If[${autoGreet},ON,OFF]}
	/echo · ··-~^vV - Auto Illusion: ${If[${autoIllusion},ON,OFF]}
	/echo · ··-~^vV - Auto Loot: ${If[${autoLoot},ON,OFF]}
	/echo · ··-~^vV - Loot Distance: ${lootDistance}
	/echo · ··-~^vV - LDON Collect: ${If[${ldonCollect},ON,OFF]}
	/echo · ··-~^vV - LDON Collect Item: ${ldonCollectItem}
	/echo · ··-~^vV - Auto Escape: ${If[${autoEscape},ON,OFF]}
	/echo · ··-~^vV - Escape Health: ${escapeHealth}%
	/echo · ··-~^vV - AutoNimble: ${If[${autoNimble},ON,OFF]}
	/echo · ··-~^vV - Nimble Health: ${nimbleHealth}%
	/echo · ··-~^vV - Dynamic Nimble Control: ${If[${dynamicNimble},ON,OFF]}
/return

| -----------------------
| -- Event DisplayHelp --
| -----------------------
Sub Event_DisplayHelp
	/varset lastEvent Event_DisplayHelp

	/echo -=-=[ Help ]=-=-

	/echo · ··-~^vV - /mainassist [<main assist>]
	/echo · ··-~^vV - /assistmsg [on/off/<assist message>]
	/echo · ··-~^vV - /tankmode [on/off]
	/echo · ··-~^vV - /strikeskill [<strike skill>]
	/echo · ··-~^vV - /minend [<minimal endurance %>]
	/echo · ··-~^vV - /autostick [on/off]
	/echo · ··-~^vV - /loosestick [on/off]
	/echo · ··-~^vV - /moveback [on/off]
	/echo · ··-~^vV - /closeness [<% of max melee range>]
	/echo · ··-~^vV - /autoevade [on/off]
	/echo · ··-~^vV - /evadeaggro [on/off]
	/echo · ··-~^vV - /autobs [on/off]
	/echo · ··-~^vV - /autodisarm [on/off]
	/echo · ··-~^vV - /autofear[on/off]
	/echo · ··-~^vV - /autopp [on/off]
	/echo · ··-~^vV - /autobeg [on/off]
	/echo · ··-~^vV - /autohide [on/off]
	/echo · ··-~^vV - /dropsneak [on/off]
	/echo · ··-~^vV - /calldi [on/off]
	/echo · ··-~^vV - /autojoin [on/off]
	/echo · ··-~^vV - /autogreet [on/off]
	/echo · ··-~^vV - /autoloot [on/off]
	/echo · ··-~^vV - /ldoncollect [on/off/<no-drop item to collect>]
	/echo · ··-~^vV - /autoescape [on/off/<% health to use it>]
	/echo · ··-~^vV - /autonimble [on/off/<% health to use it> [<% health to use it on hit>]]
	/echo · ··-~^vV - /dynimble [on/off]
	/echo · ··-~^vV - /pause [on/off]
	/echo · ··-~^vV - /semiafk [on/off]
	/echo · ··-~^vV - /iclick <short item name> [<cast count>]
	/echo · ··-~^vV - /iset <short item name> "<full item name>" [mustequip] [<slash command>]
	/echo · ··-~^vV - /autoheal [<target health %>]
	/echo · ··-~^vV - /autocure
	/echo · ··-~^vV - /lootmycorpse
	/echo · ··-~^vV - /drag <corpse1> [<corpse2>] ..
	/echo · ··-~^vV - /kill
	/echo · ··-~^vV - /doassist
	/echo · ··-~^vV - /status
	/echo · ··-~^vV - /help
/return

| ----------------------
| -- Sub Check_Behind --
| ----------------------
Sub Check_Behind
	/declare mobDirection int local 0
	/declare viewDirection int local 0
	/declare i int local 0
	/declare j int local 0

	/varset behindTarget FALSE

	/if (!${Target.ID}) /return
	/for i -2 to 2
		/varcalc mobDirection (${Target.Heading.Clock}+${i}+24)%12
		/if (${mobDirection} == ${Me.Heading.Clock}) {
			/for j -2 to 2
				/varcalc viewDirection (${Target.HeadingTo.Clock}+${j}+24)%12
				/if (${viewDirection} == ${Me.Heading.Clock}) {
					/varset behindTarget TRUE
					/return
				}
			/next j
			/return
		}
	/next i
/return

| ---------------------
| -- Sub Check_Range --
| ---------------------
Sub Check_Range
	/varset inRange ${If[(${Target.Distance} < ${Target.MaxRangeTo}),TRUE,FALSE]}
/return

| -----------------
| -- Sub DoStick --
| -----------------
Sub DoStick
	/if (${isInfuriated}) {
		/squelch /stick ${Target.MaxRangeTo} 200% ${If[(${tankMode} || ${evadingAggro}),,behind]} mpause moveback ${If[${Me.Swimming},uw,]} ${If[${looseStick},loose,]}
	} else {
		/squelch /stick ${Target.MaxRangeTo} ${closeness}% ${If[(${tankMode} || ${evadingAggro}),,behind]} mpause ${If[${moveBack},moveback,]} ${If[${Me.Swimming},uw,]} ${If[${looseStick},loose,]}
	}
/return

| --------------------
| -- Sub AutoStrike --
| --------------------
Sub AutoStrike
	/if (!${InvSlot[mainhand].Item.Type.Equal[Piercing]}) {
		/return TRUE
	}
	/if (${Me.AbilityReady["Backstab"]}) {
		/call Check_Behind
		/call Check_Range
		/if (${behindTarget} && ${inRange}) {
			/echo · ··-~^vV - Executing Strike on: ${Target.CleanName}
			/doability "Backstab"
			/return TRUE
		}
	}
/return FALSE

| ----------------------
| -- Sub AutoBackstab --
| ----------------------
Sub AutoBackstab
	/if (${Me.AbilityReady["Backstab"]} && ${InvSlot[mainhand].Item.Type.Equal[Piercing]}) {
		/call Check_Range
		/if (${inRange}) {
			/echo · ··-~^vV - Backstabbing: ${Target.CleanName}
			/doability "Backstab"
			/return TRUE
		}
	}
/return FALSE

| --------------------
| -- Sub AutoDisarm --
| --------------------
Sub AutoDisarm
	/if (${Me.AbilityReady["Disarm"]}) {
		/call Check_Range
		/if (${inRange}) {
			/echo · ··-~^vV - Trying to disarm: ${Target.CleanName}
			/doability "Disarm"
			/return TRUE
		}
	}
/return FALSE

| ------------------------
| -- Sub AutoIntimidate --
| ------------------------
Sub AutoIntimidate
	/if (${Me.AbilityReady["Intimidation"]}) {
		/call Check_Range
		/if (${inRange}) {
			/echo · ··-~^vV - Trying to intimidate: ${Target.CleanName}
			/doability "Intimidation"
			/return TRUE
		}
	}
/return FALSE

| ------------------------
| -- Sub AutoPickpocket --
| ------------------------
Sub AutoPickpocket
	/if (${Me.AbilityReady["Pick Pockets"]}) {
		/if (${Target.Distance} <= 15) {
			/echo · ··-~^vV - Trying to Pick Pockets of: ${Target.CleanName}
			/doability "Pick Pockets"
			/return TRUE
		}
	}
/return FALSE

| -----------------
| -- Sub AutoBeg --
| -----------------
Sub AutoBeg
	/if (${Me.AbilityReady["Begging"]}) {
		/call Check_Range
		/if (${inRange}) {
			/echo · ··-~^vV - Begging from: ${Target.CleanName}
			/doability "Begging"
			/return TRUE
		}
	}
/return FALSE

| -------------------
| -- Sub AutoEvade --
| -------------------

Sub AutoEvade
	/if (${Me.AbilityReady["Hide"]}) {
		/echo · ··-~^vV - Trying to evade from: ${Target.CleanName}
		/attack off
		/delay 1
		/doability "Hide"
		/attack on
		/return TRUE
	}
/return FALSE

| -----------------------
| -- Sub AutoSneakHide --
| -----------------------
Sub AutoSneakHide
	/if (!${Me.Mount.ID} && !${reHideTimer.Value}) {
		/if (${Me.AbilityReady["Sneak"]}) {
			/doability "Sneak"
			/delay 2
		}
		/if (${Me.AbilityReady["Hide"]} && ${Me.Sneaking} && !${Me.AbilityReady["Sneak"]} && !${Me.Buff[Shroud of Stealth].Duration}) /doability "Hide"
	}
/return

| -----------------------------
| -- Sub IncomingMessageLoad --
| -----------------------------
Sub IncomingMessageLoad
	/varset incomingCount 0
	/declare i int local 0

	/for i 1 to 10
		/if (${Ini[PuppetMaster.ini,IncomingMessages,Message_${i}].NotEqual[NULL]} && ${Ini[PuppetMaster.ini,IncomingMessages,Message_1].Length}) {
			/varcalc incomingCount ${incomingCount}+1
			/varset incomingMessages[${incomingCount}] ${Ini[PuppetMaster.ini,IncomingMessages,Message_${i}]}
		} else {
			/ini "PuppetMaster.ini" "IncomingMessages" "Message_${i}" ""
		}

	/next i
/return

| -----------------------
| -- Sub IllusionCheck --
| -----------------------
Sub IllusionCheck
	/varset illusionCount 0

	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_DarkElf_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] DarkElf
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_EarthElemental_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] EarthElemental
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_Erudite_FullName].NotEqual[NULL]}) { 
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] Erudite
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_FireElemetal_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] FireElemetal
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_Gnome_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] Gnome
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_HalfElf_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] HalfElf
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_Halfling_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1


		/varset illusions[${illusionCount}] Halfling
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_HighElf_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] HighElf
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_Human_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] Human
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_Iksar_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] Iksar
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_Ogre_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] Ogre
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_Skeleton_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] Skeleton
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_VahShir_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] VahShir
	}
	/if (${Ini[PuppetMaster.ini,ClickItems,Illusion_WoodElf_FullName].NotEqual[NULL]}) {
		/varcalc illusionCount ${illusionCount}+1
		/varset illusions[${illusionCount}] WoodElf
	}
/return
NOTE: Concat the IniLoad Sub in the 2nd post after this!
Last edited by z-roice on Sun Sep 05, 2004 5:28 pm, edited 6 times in total.

PhoenixZorn
Macro Czar
Posts: 127
Joined: Fri Dec 12, 2003 2:20 pm
Contact:

Post by PhoenixZorn » Thu Sep 02, 2004 10:44 pm

Z-roice, you really gotta remove the line spaces in your code. Short and sweet is the key here. I thought my comment about going blind would have been hint enough... but please, remove any unnecessary line breaks in your macro... here's an example...

Code: Select all

/if (${Ini[PuppetMaster.ini,Settings,AutoBackstab].NotEqual[NULL]}) {

      /varset autoBackstab ${Ini[PuppetMaster.ini,Settings,AutoBackstab]}

   } else {

      /ini "PuppetMaster" "Settings" "AutoBackstab" "${autoBackstab}"

   }

Should be....

Code: Select all


/if (${Ini[PuppetMaster.ini,Settings,AutoBackstab].NotEqual[NULL]}) {
      /varset autoBackstab ${Ini[PuppetMaster.ini,Settings,AutoBackstab]}
   } else {
      /ini "PuppetMaster" "Settings" "AutoBackstab" "${autoBackstab}"
   } 

Do it quick like so I can officially include this beautifully effective macro in the zip.

Fushae Orinoco
decaying skeleton
decaying skeleton
Posts: 5
Joined: Fri Sep 03, 2004 11:45 pm

Post by Fushae Orinoco » Fri Sep 03, 2004 11:45 pm

elaborate on Activates automatic sticking to mob (requires MQ2MoveUtils). please cause i'm not understanding that

PhoenixZorn
Macro Czar
Posts: 127
Joined: Fri Dec 12, 2003 2:20 pm
Contact:

Post by PhoenixZorn » Fri Sep 03, 2004 11:53 pm

RTFM is all the elaboration you get... or maybe... yeah... one more hint.... try the other forums... the Plugin forum perhaps.

z-roice
a lesser mummy
a lesser mummy
Posts: 62
Joined: Sun Aug 08, 2004 5:25 am

Post by z-roice » Sat Sep 04, 2004 8:47 pm

There you go - found a compromise between none and too much breaks which I also can live with I think =)...

peace

Z-Ro

Jerle69
a hill giant
a hill giant
Posts: 263
Joined: Wed Apr 28, 2004 3:26 pm

Post by Jerle69 » Sun Sep 05, 2004 3:45 pm

Heh, the structure and functionality of this macro looks so remarkably familiar in so very many ways.
--Jerle

z-roice
a lesser mummy
a lesser mummy
Posts: 62
Joined: Sun Aug 08, 2004 5:25 am

Post by z-roice » Sun Sep 05, 2004 5:06 pm

yea jerle in last edit i accidently deleted that i was inspired by your RH when i wrote this thing so it looks quite same for the main functions but i debugged some of the things that didnt work right for me and added some stuff that i use alot.. will add you again =)

I used RH a bit before I wrote this but some stuff was bugged and the code was too hard to edit in my eyes. So I wrote my own lil version and constantly expanded it. When it turned out to work better than I had thought I decided to release it for others to enjoy.

peace

Z-Ro

Knight
orc pawn
orc pawn
Posts: 27
Joined: Thu Jun 17, 2004 1:45 am

Post by Knight » Sun Sep 05, 2004 6:42 pm

I took a look at this, and autogreet when someone joins a group sends it into a foreverloop and ends the macro. If you do /autoloot (documentation says it autoloots and the settings are on/off) it gives you a listing of minimum value. If you type /autoloot off, there is a forever loop and the macro crashes.

I didn't really look at the code, was just playing around with it.

Jerle69
a hill giant
a hill giant
Posts: 263
Joined: Wed Apr 28, 2004 3:26 pm

Post by Jerle69 » Mon Sep 06, 2004 1:44 am

z-roice:

Sorry you experienced bugs with RH... I didn't know there were any showstoppers in the macro (none that I've seen or others have mentioned at least)... Also good that it helped you write something that works better for you =).

Good luck!
--Jerle