Help with SirCheese druidmacro for pet

Need help with a macro you are writing? Ask here!

Moderator: MacroQuest Developers

captainhollywooddave
orc pawn
orc pawn
Posts: 10
Joined: Sun Nov 21, 2004 7:24 am

Help with SirCheese druidmacro for pet

Post by captainhollywooddave » Sun Nov 21, 2004 7:31 am

I want to heal my necromancers pet and I have messed with this all night and had to resort to just typing in the name of the pet so my druid can target him and heal wheni send a tell.

I want to know if anyone can tell me what i could change so anyone in the group could send hte druid a tell to heal pet, and he would target that pet and heal it. here is my modified macro cut down a bit.

#turbo

|SirCheese
|Druid Bot 1.1 - Nov 10 2004 -
|----[ ]----
|Usage: Target the MA
| /Mac Druid (% to assist) (Number of Dots or Nukes)
|----[ ]----
|Description: Set Your Spells, Look over Variable Changes. Decide if you want Nukes, Dots, Type of Heals, When to heal Etc.
| Druid will do up to 2 Dots and continously refresh as they ware off. Will Nuke whatever amout desired.
| Will Heal the entire group.
| Druid Will keep grp buffs always on grp once they are on.
| Druid will always keep himself or herself Self Buffed
| Druid Will Sit to med Automaticly. When Mob is near it will stand or when its mana is good.
| For Chat activated Commands /tell *Druid* Druid Help
| For Chat Activated Druid Ports /tell *Druid* Druid Port Help
|
|----[ ]----
| Add This: ( ) Auto Spells, ( ) Announce when Below 10 Mana,
|----[ ]----
| Things To Fix: ( ) Stop Nuking When Lom,
|----[ ]----
| Things I would like to add: ( ) Snare, ( ) Auto Group Cure When Neg Effect, ( ) Loot Mobs, ( ) Wait 4 Rez, ( ) Auto Trade
|-----------------------------------------------------------------------------------------------------------------------------

|----------
| Includes
|----------
#include spell_routines.inc

|----------
| Chats
|----------
#chat group
#chat chat
#chat tell

|----------
| Events
|----------
#Event MagicDotOff "#*#Swarming Death spell has worn off#*#"
#Event FireDotOff "#*#Vengeance of Tunare spell has worn off#*#"
#Event Invited "#*#To join the group, click on the 'FOLLOW' option, or 'DISBAND' to cancel#*#"

|----------
| Main Sub
|----------
Sub Main

|-----------------------------------------------------------------------------------------------------------------------------
| --- Make Your Changes Here ---
|-----------------------------------------------------------------------------------------------------------------------------

|-----------------------
| Variables Changeable
|-----------------------


|------------------------
| Set Character to Start
|------------------------
/tgb on
/assist off
/join ${mychannel}

|---------------------------------------
| Events Not Looped but done on start
|---------------------------------------
/call DefaultSpells

|------------------------
| Variable Sets
|------------------------
/declare MainAssist string outer ${Target}
/declare AssistAt int outer ${Param0}
/declare NukeAmount int outer ${Param1}
/declare TimesNuked outer
/varset TimesNuked 0
/declare GotTarget outer
/varset GotTarget 0
/declare CurrentMobID int local
/declare UseThisNuke outer
/declare ADot outer
/varset ADot 0
/declare BDot outer
/varset BDot 0
/declare Snared outer
/varset Snared 0
/declare distancetosit int outer 40
/declare following int outer 0
/declare follname string outer NULL
/declare PetName string outer Konantik
/if (${NukeType}==1) {
/varset UseThisNuke ${SpellFireDD}
}

/if (${NukeType}==0) {
/varset UseThisNuke ${SpellColdDD}
}

/if (${DOTSorDD}==1) {
/if (${NukeAmount}>2) {
/varset NukeAmount 2
}
}

|------------------------
| Announce Start
|------------------------
/if (${DOTSorDD}==0 && ${TankHealType}==0) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellFastHeal} at ${TankHeal}%. Casting ${UseThisNuke} ${NukeAmount} times at ${AssistAt}%.
}
/if (${DOTSorDD}==0 && ${TankHealType}==1) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellCompHeal} at ${TankHeal}%. Casting ${UseThisNuke} ${NukeAmount} times at ${AssistAt}%.
}
/if (${DOTSorDD}==1 && ${NukeAmount}==1 && ${TankHealType}==0) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellFastHeal} at ${TankHeal}%. Casting ${SpellMagicDOT} at ${AssistAt}%.
}
/if (${DOTSorDD}==1 && ${NukeAmount}==1 && ${TankHealType}==1) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellCompHeal} at ${TankHeal}%. Casting ${SpellMagicDOT} at ${AssistAt}%.
}
/if (${DOTSorDD}==1 && ${NukeAmount}==2 && ${TankHealType}==0) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellFastHeal} at ${TankHeal}%. Casting ${SpellMagicDOT} and ${SpellFireDOT} at ${AssistAt}%.
}
/if (${DOTSorDD}==1 && ${NukeAmount}==2 && ${TankHealType}==1) {
/echo Druid Bot Started! Healing ${MainAssist} with ${SpellCompHeal} at ${TankHeal}%. Casting ${SpellMagicDOT} and ${SpellFireDOT} at ${AssistAt}%.
}

|-----------------------------------------------------------------------------------------------------------------------------
| Main Loop
|-----------------------------------------------------------------------------------------------------------------------------
:MainLoop
/delay 1s
/doevents
/call KeepHeal
/call GetTarget
/call CheckBuffs

|------------------
| Auto Sit
|------------------
/if ((${autosit}==1)&&(${Me.PctMana}<=90)&&(!${Me.Casting.ID})) {
/if ((${Bool[${Me.Standing}]})&&(${NearestSpawn[NPC].Distance}>=${Math.Calc[${NearestSpawn[NPC].MaxRange}+${distancetosit}]})&&(${Me.PctHPs}>90)) /sit
/if ((${Bool[${Me.Sitting}]})&&(!${Window[SpellBookWnd].Open})&&(${NearestSpawn[NPC].Distance}<=${Math.Calc[${NearestSpawn[NPC].MaxRange}+${Math.Calc[${distancetosit}/3]}]})) /stand
}
/if ((${autosit}==1)&&(${Me.PctMana}>90)) {
/if ((${Bool[${Me.Sitting}]})&&(!${Window[SpellBookWnd].Open})) /stand
}

|------------------
| Wait To Attack
|------------------
/if (${Target.PctHPs}<=${AssistAt} && ${Target.Type.Equal["NPC"]} && ${Target.Distance}<175 && !${Me.Moving} && !${Me.Casting.ID} && !${String[${Target}].Find["NULL"]}>0) {
/if (${GotTarget}==0) {
/doevents
/delay 5
/varset CurrentMobID ${Target.ID}
/popup Target Aquired >> ${Target.CleanName} <<
/echo Target Aquired >> ${Target.CleanName} <<
/varset GotTarget 1
/goto :StartCombat
}

} else {
/goto :MainLoop

|------------------
| Start Combat
|------------------
:StartCombat
/doevents
/call KeepHeal
/goto :WaitDead

|---------------------
| Wait for mod to die
|---------------------
:waitDead
/doevents
/if (${Spawn[${CurrentMobID}].Type.Equal[NPC]}) {
/call KeepHeal

/if (${DOTSorDD}==0) {
/call NukeCycle
}

/if (${DOTSorDD}==1) {
/call DoDamageOT
}
/goto :WaitDead

} Else {
/doevents
/echo Mob has Died, We Win EQ!
/varset GotTarget 0
/varset TimesNuked 0
/varset ADot 0
/varset BDot 0
/varset Snared 0
/goto :MainLoop
}

/goto :MainLoop
/return
|-----------------------------------------------------------------------------------------------------------------------------
| --- END MAIN LOOP ---
|-----------------------------------------------------------------------------------------------------------------------------

|------------------
| Heal MA
|------------------
Sub KeepHeal
/call HealGroup
/call HealMyself
/return

|------------------
| Heal Group
|------------------
Sub HealGroup
/declare i int local 1
/for i 1 to ${Group}

/if (${Group[${i}].Name.Equal[${MainAssist}]} && ${Group[${i}].PctHPs}<=${TankHeal}) {
/target pc ${Group[${i}]}
/if (${TankHealType}==0) {
/if (${Me.CurrentMana}<${Spell[${SpellFastHeal}].Mana}) {
/echo Not Enuf Mana to Heal ${Group[${i}]}
} else /if (${Target.Distance}<=100) {
/gsay ${SpellFastHeal} on >> %T <<
/call cast "${SpellFastHeal}" gem2 4s
}
}
/if (${TankHealType}==1) {
/if (${Me.CurrentMana}<${Spell[${SpellCompHeal}].Mana}) {
/echo Not Enuf Mana to Heal ${Group[${i}]}
} else /if (${Target.Distance}<=100) {
/gsay ${SpellCompHeal} on >> %T <<
/call cast "${SpellCompHeal}" gem2 4s
}
}
}

/if (${Group[${i}].Class.Name.Equal[Cleric]} || ${Group[${i}].Class.Name.Equal[Druid]} || ${Group[${i}].Class.Name.Equal[Wizard]} || ${Group[${i}].Class.Name.Equal[Magician]} || ${Group[${i}].Class.Name.Equal[Necromancer]} || ${Group[${i}].Class.Name.Equal[Shaman]} || ${Group[${i}].Class.Name.Equal[Enchanter]}) /if (${Group[${i}].PctHPs}<=${HealCasterAT}) {
/target pc ${Group[${i}]}
/if (${Me.CurrentMana}<${Spell[${SpellFastHeal}].Mana}) {
/echo Not Enuf Mana to Heal ${Group[${i}]}
} else /if (${Target.Distance}<=100) {
/gsay ${SpellFastHeal} on >> %T <<
/call cast "${SpellFastHeal}"
}
}

/if (${Group[${i}].Class.Name.Equal[Warrior]} || ${Group[${i}].Class.Name.Equal[Monk]} || ${Group[${i}].Class.Name.Equal[Rouge]} || ${Group[${i}].Class.Name.Equal[Ranger]} || ${Group[${i}].Class.Name.Equal[Beast]} || ${Group[${i}].Class.Name.Equal[Shadow Knight]} || ${Group[${i}].Class.Name.Equal[Paladin]}) /if (${Group[${i}].PctHPs}<=${MeleeHeals} && ${Group[${i}].Name.NotEqual[${MainAssist}]}) {
/target pc ${Group[${i}]}
/if (${Me.CurrentMana}<${Spell[${SpellCompHeal}].Mana}) {
/echo Not Enuf Mana to Heal ${Group[${i}]}
} else /if (${Target.Distance}<=100) {
/gsay ${SpellCompHeal} on >> %T <<
/call cast "${SpellCompHeal}"
}
}

/next i
/return

|------------------
| Heal Myself
|------------------
Sub HealMyself
/if (${Me.PctHPs}>${SelfHeal}) /return
/if (${Me.PctHPs}<=${SelfHeal}) {
/target Myself
/gsay ${SpellFastHeal} on >> %T <<
/call cast "${SpellFastHeal}" gem2
}
/return

|------------------
| Get A Target
|------------------
Sub GetTarget
:Target
/if (${Me.Casting.ID}) /return
/if (${Me.Moving}) /return
/if (${Spawn[${MainAssist}].ID}) {
/assist ${MainAssist}
} else {
/echo ${MainAssist} Is not in the Zone!
/delay 20s
}
/delay 1
/return

|------------------
| Nuke Cycle
|------------------
Sub NukeCycle
:NukeCycleLoop
|/if (${Me.PctMana}<=90) {
/if (${TimesNuked}<${NukeAmount}) {
/call KeepHeal
/assist ${MainAssist}
/delay 1
/call cast "${UseThisNuke}"
/varcalc TimesNuked ${TimesNuked} + 1
/delay 1s
/call KeepHeal
/delay 1s
/call KeepHeal
/delay 1s
/call KeepHeal
/delay 1s
/call KeepHeal
/delay 1s
/call KeepHeal
/goto :NukeCycleLoop
}
|}
/return

|--------------------
| Do Dots
|--------------------
Sub DoDamageOT
/call KeepHeal
/if (${NukeAmount}==1) {
/call OneDot
}
/if (${NukeAmount}==2) {
/call TwoDot
}
/return

|--------------------
| One Dot
|--------------------
Sub OneDot
/if (${ADot}==0) {
:DOT1Loop
/call KeepHeal
/assist ${MainAssist}
/if (${SpellMagicDOT}==Swarming Death) {
/if (${FindItem[Orb of Clinging Death].ID}) /call Cast "Orb of Clinging Death" item
/if (!${FindItem[Orb of Clinging Death].ID}) /call Cast "${SpellMagicDOT}"
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DOT1Loop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/gsay >> %t << Resisted ${SpellMagicDOT} Trying Again!
/delay 1s
/goto :DOT1Loop
}
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/varset ADot 1
}

} Else {
/call Cast "${SpellMagicDOT}"
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DOT1Loop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/gsay >> %t << Resisted ${SpellMagicDOT} Trying Again!
/delay 1s
/goto :DOT1Loop
}
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/varset ADot 1
}
}
/return

|--------------------
| Two Dots
|--------------------
Sub TwoDot
/if (${ADot}==0) {
:DOT2aLoop
/call KeepHeal
/assist ${MainAssist}
/call cast "${SpellMagicDOT}" item
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DOT2aLoop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/gsay >> %t << Resisted ${SpellMagicDOT} Trying Again!
/delay 4s
/goto :DOT2aLoop
}

/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/varset ADot 1
}

}
/delay 7s

/if (${BDot}==0) {
:DOT2bLoop
/call KeepHeal
/assist ${MainAssist}
/call cast "${SpellFireDOT}"
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DOT2bLoop
/if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/gsay >> %t << Resisted ${SpellFireDOT} Trying Again!
/delay 4s
/goto :DOT2bLoop
}

/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/varset BDot 1
}

}

/return



|-----------------------------------------------------------------------------------------------------------------------------
| Chat Activated Events
|-----------------------------------------------------------------------------------------------------------------------------
Sub Event_Chat(string ChatType,string Sender,string ChatText,Sender,ChatText)

|----------------------
| Heal
|----------------------
/if ((${ChatText.Equal[Heal]})||(${ChatText.Equal[Heal Me]})||(${ChatText.Equal[Heal Plz]})) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellFastHealRange}) {
/target ${Sender}
/delay 1
/call cast "${SpellFastHeal}"
} else /tell ${Sender} Your Out of Range for ${SpellFastHeal}, Come Closer!
}
/if ((${ChatText.Equal[Heal pet]})||) {
/if (${String[${Macro.Return}].NotEqual[TARGET_SUCCESS]}) /return
/if (${Target.Distance}<=${SpellFastHealRange}) {
/target ${PetName}

/delay 1
/call cast "${SpellFastHeal}"
} else /tell ${Sender} Your Out of Range for ${SpellFastHeal}, Come Closer!
}









What i did was just make a variable and put in the pets name (Konantik) here,and when i wanted to heal that pet i would use the variable.

thanks

User avatar
Cr4zyb4rd
Plugins Czar
Posts: 1449
Joined: Tue Jul 20, 2004 11:46 am

Post by Cr4zyb4rd » Sun Nov 21, 2004 8:25 am

I want to use code brackets.

xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 5:52 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 5:53 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 5:54 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 5:55 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 5:56 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 5:57 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 5:58 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 6:00 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 6:01 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 6:02 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 6:03 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 6:40 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Help with SirCheese druidmacro for pet

Post by xyilla » Sun Mar 02, 2025 6:41 am