My cleric mac

A forum for you to dump all the macros you create, allowing users to use, modify, and comment on your work.

Moderator: MacroQuest Developers

Ogre_Luvr
a lesser mummy
a lesser mummy
Posts: 52
Joined: Thu Dec 18, 2003 10:11 pm
Location: DC

My cleric mac

Post by Ogre_Luvr » Sun Apr 25, 2004 5:27 pm

Works now I havent run into any buggs for a while if you find one let me know :)

Code: Select all

|************************************|
|* nClericGroup.mac 				*|
|* by Ogre_Luvr						*|
|* Usage: /mac clericgroup Soandso	*|
|* A work in progress             	*|
|************************************|


#include nSpellCast.inc 

Sub main
	/zapvars

	/declare mainHeal global
		/varset mainHeal "Remedy"
	/declare durationHeal global
		/varset durationHeal "Celestial Healing"
	/declare bigHeal global
		/varset bigHeal "Complete Healing"		
	/declare tankID global
		/if (${Spawn[@Param0].ID}) {
			/varset tankID ${Spawn[@Param0].ID}
		} else {
			/varset tankID 0		
		}
	:mainLoop
		/call checkHP
		/call checkBuffs
	/goto :mainLoop
/return

Sub checkHP
	/declare lowHP local
		/varset lowHP ${Me.ID}
	/declare i local
	/for i 1 to ${Group}
		/if (${Math.Calc[${Group[@i].PctHPs}<${Spawn[@lowHP].PctHPs}]} && ${Group[@i].ID} && ${Math.Calc[${Group[@i].Distance}<=200]}) {
			/varset lowHP ${Group[@i].ID}
		}
		/if (${String["Necromancer Magician Beastlord Shaman"].Find[${Group[@i].Class}]} && ${Group[@i].Pet.ID} && ${Math.Calc[${Group[@i].Pet.PctHPs}<${Spawn[@lowHP].PctHPs}]} && ${Math.Calc[${Group[@i].Pet.Distance}<=200]}) {
			/varset lowHP ${Group[@i].Pet.ID}
		}
	/next i

	/if (${Math.Calc[${Spawn[@lowHP].PctHPs}<70]}) {
		/call heal @lowHP
	}
/return

Sub heal(spawnID)
	/target id @spawnID
	/if (${Math.Calc[@spawnID!=@tankID]}) {
		/if (${Math.Calc[${Spawn[@spawnID].PctHPs}>0]} && ${Math.Calc[${Spawn[@spawnID].PctHPs}<45]} && ${Math.Calc[${Spawn[@spawnID].Distance}<=${Spell["@mainHeal"].Range}]} && ${Math.Calc[${Me.CurrentMana}>=${Spell["@mainHeal"].Mana}]}) {
			/call cast "@mainHeal"
		} else {
			|||	if the spawn in question is less than 70% health and in range of the duration heal spell
    			/if (${Math.Calc[${Spawn[@spawnID].PctHPs}<70]} && ${Math.Calc[${Spawn[@spawnID].Distance}<=${Spell["@durationHeal"].Range}]}) {
				/if (!${Defined[healTimer@spawnID]}) { 
				   /declare healTimer@spawnID timer 
				   /varset healTimer@spawnID 0 
				} 
				/if (${Math.Calc[@healTimer@spawnID<1]} && ${Math.Calc[${Me.CurrentMana}>=${Spell["@durationHeal"].Mana}]}) { 
				   /call cast "@durationHeal"
				   /varset healTimer@spawnID ${Math.Calc[${Spell["@durationHeal"].Duration}*.1]}m
				} 
	    		}
	    	}
	} else { 
	    	/if (${Math.Calc[${Spawn[@spawnID].PctHPs}>0]} && ${Math.Calc[${Spawn[@spawnID].PctHPs}<=45]} && ${Math.Calc[${Spawn[@spawnID].Distance}<=${Spell["@bigHeal"].Range}]} && ${Math.Calc[${Me.CurrentMana}>=${Spell[@bigHeal].Mana}]}) {
			/g inc @bigHeal to ${Spawn[@spawnID].CleanName}
			/call cast "@bigHeal"
	    	}
	}
/return

Sub checkBuffs
	/if (!${Math.Calc[${FindItemCount["Summoned: Black Bread"]}>10]}) {
		/call noFailMem 7 "Abundant Food"
		/call cast "Abundant Food"
		/autoinv

		/call noFailMem 8 "Abundant Drink"
		/call cast "Abundant Drink"
		/autoinv

	}

	/declare i local
	/declare buff local
/varset buff "Symbol of Marzin"
	/for i 1 to ${Group}
		/if (!${Defined[symbolTimer${Group[@i]}]}) { 
		   /declare symbolTimer${Group[@i]} timer 
		   /varset symbolTimer${Group[@i]} 0 
		} 
		/if (${String["Warrior Rogue Bard Ranger Shadow knight Paladin berserker monk"].Find[${Group[@i].Class}]} && ${Math.Calc[@symbolTimer${Group[@i]}<1]} && ${FindItemCount["Peridot"]} && ${Math.Calc[${Me.CurrentMana}>=${Spell[@buff].Mana}]}) {
			/target id ${Group[@i].ID}
		   	/call cast "@buff"
		   	/varset symbolTimer${Group[@i]} ${Math.Calc[${Spell["@buff"].Duration}*.1]}m
		}

		/if (${String["Necromancer Magician Beastlord Shaman"].Find[${Group[@i].Class}]} && ${FindItemCount["Peridot"]} && ${Math.Calc[${Me.CurrentMana}>=${Spell[@buff].Mana}]}) {
			/if (!${Defined[symbolTimer${Group[@i].Pet.ID}]}) { 
				/echo creating symbolTimer${Group[@i].Pet.ID} timer 
				/declare symbolTimer${Group[@i].Pet.ID} timer 
				/varset symbolTimer${Group[@i].Pet.ID} 0 
			}
			/if (${Math.Calc[@symbolTimer${Group[@i].Pet.ID}<1]}) { 
				/target id ${Group[@i].Pet.ID}
				/call cast "@buff"
				/varset symbolTimer${Group[@i].Pet.ID} ${Math.Calc[${Spell["@buff"].Duration}*.1]}m
			}
		}
	/next i
	

/varset buff "Fortitude"

	/if (!${Me.Buff[@buff].ID}) {
		/target myself
		/call cast "@buff"
	}
	/for i 1 to ${Group}
		/if (!${Defined[hpAcTimer${Group[@i]}]}) { 
		   /declare hpAcTimer${Group[@i]} timer 
		   /varset hpAcTimer${Group[@i]} 0 
		}
		/if (${Math.Calc[@hpAcTimer${Group[@i]}<1]} && ${Math.Calc[${Me.CurrentMana}>=${Spell[@buff].Mana}]}) {
			/target id ${Group[@i].ID}
		   	/call cast "@buff"
		   	/varset hpAcTimer${Group[@i]} ${Math.Calc[${Spell["@buff"].Duration}*.1]}m
		}

		/if (${String["Necromancer Magician Beastlord Shaman"].Find[${Group[@i].Class}]}) {
			/if (!${Defined[hpAcTimer${Group[@i].Pet.ID}]}) { 
				/declare hpAcTimer${Group[@i].Pet.ID} timer 
				/varset hpAcTimer${Group[@i].Pet.ID} 0 
			}
			/if (${Math.Calc[@hpAcTimer${Group[@i].Pet.ID}<1]} && ${Math.Calc[${Me.CurrentMana}>=${Spell[@buff].Mana}]}) { 
				/target id ${Group[@i].Pet.ID}
				/call cast "@buff"
				/varset hpAcTimer${Group[@i].Pet.ID} ${Math.Calc[${Spell["@buff"].Duration}*.1]}m 
			}
		}
	/next i

/varset buff "Shield of Words"
	/if (!${Me.Buff[@buff].ID}) {
		/target myself
		/call cast "@buff"
	}
	/for i 1 to ${Group}
		/if (!${Defined[AcTimer${Group[@i]}]}) { 
		   /declare AcTimer${Group[@i]} timer 
		   /varset AcTimer${Group[@i]} 0 
		}
		/if (${Math.Calc[@AcTimer${Group[@i]}<1]} && ${Math.Calc[${Me.CurrentMana}>=${Spell[@buff].Mana}]}) {
			/target id ${Group[@i].ID}
		   	/call cast "@buff"
		   	/varset AcTimer${Group[@i]} ${Math.Calc[${Spell["@buff"].Duration}*.1]}m
		}

		/if (${String["Necromancer Magician Beastlord Shaman"].Find[${Group[@i].Class}]}) {
			/if (!${Defined[AcTimer${Group[@i].Pet.ID}]}) { 
				/declare AcTimer${Group[@i].Pet.ID} timer 
				/varset AcTimer${Group[@i].Pet.ID} 0 
			}
			/if (${Math.Calc[@AcTimer${Group[@i].Pet.ID}<1]} && ${Math.Calc[${Me.CurrentMana}>=${Spell[@buff].Mana}]}) { 
				/target id ${Group[@i].Pet.ID}
				/call cast "@buff"
				/varset AcTimer${Group[@i].Pet.ID} ${Math.Calc[${Spell["@buff"].Duration}*.1]}m 
			}
		}
	/next i
	
	
		/varset buff "Blessing of Faith"
	/if (!${Me.Buff[@buff].ID} && ${Math.Calc[${Me.CurrentMana}>=${Spell[@buff].Mana}]}) {
		/target myself
		/call cast "@buff"
	}
		||| "Ranger Shadow Knight Wizard Paladin Cleric Druid Enchanter Necromancer Magician Beastlord Shaman"
	/for i 1 to ${Group}
		/if (${String["Ranger Shadow Knight Wizard Paladin Cleric Druid Enchanter Necromancer Magician Beastlord Shaman"].Find[${Group[@i].Class}]}) {
			/if (!${Defined[blessingTimer${Group[@i]}]}) { 
			   /declare blessingTimer${Group[@i]} timer 
			   /varset blessingTimer${Group[@i]} 0 
			}
			/if (${Math.Calc[@blessingTimer${Group[@i]}<1]} && ${Math.Calc[${Me.CurrentMana}>=${Spell[@buff].Mana}]}) {
				/target id ${Group[@i].ID}
				/call cast "@buff"
				/varset blessingTimer${Group[@i]} ${Math.Calc[${Spell["@buff"].Duration}*.1]}m
			}
		}
	/next i
/return