Hello Everyone! Here is my latest creation. It is a fork of my Guild Buff Bot but only for the Druid class. She will buff and respond to commands for ports. My druid is only level 75 at the moment so I did not get to test this extensively like my other scripts.
Features:
- Buffs level appropriate buffs when Hailed.
- Announces via say all available ports when it hears "ports".
- Setup to use languages for FV.
- Echos who it is helping to EQBC with debug is on.
- Druid: Ports to all available druid Zephyrs.
Features:
- Buffs level appropriate buffs when Hailed.
- Announces via say all available ports when it hears "ports".
- Setup to use languages for FV.
- Echos who it is helping to EQBC with debug is on.
- Druid: Ports to all available druid Zephyrs.
Rich (BB code):
|------------------------------------------------------------|
| PortBot.mac
|
| Last Modified by: TheDroidUrLookingFor
|
| Version: 1.2.2
|
|------------------------------------------------------------|
#turbo
|------------------------------------------------------------|
| Includes
|------------------------------------------------------------|
#include spell_routines.inc
|#include Spell_Routines.inc
|#include MQ2Cast_Spell_Routines.inc
|------------------------------------------------------------|
| Defines
|------------------------------------------------------------|
|#define CHATMETHOD "/if (${ShowDebug}) /i say"
#define CHATMETHOD "/if (${ShowDebug}) /bc"
#define CHATMETHOD1 "/echo"
#define CHATMETHOD2 "/t"
|------------------------------------------------------------|
| Events
|------------------------------------------------------------|
#Event Hail "#1# says, 'Hail, |${Me.Name}|'"
#Event Hail "#1# says, in #*#, 'Hail, |${Me.Name}|'"
#Event Ports "#1# says, 'ports'"
#Event Ports "#1# says, in #*#, 'ports'"
#Event BlightfireMoors "#1# says, in #*#, 'moors'"
#Event BlightfireMoors "#1# says, 'moors'"
#Event Nexus "#1# says, in #*#, 'nexus'"
#Event Nexus "#1# says, 'nexus'"
#Event Toxxulia "#1# says, in #*#, 'tox'"
#Event Toxxulia "#1# says, 'tox'"
#Event ButcherBlock "#1# says, in #*#, 'butcher'"
#Event ButcherBlock "#1# says, 'butcher'"
#Event Iceclad "#1# says, in #*#, 'iceclad'"
#Event Iceclad "#1# says, 'iceclad'"
#Event Karana "#1# says, in #*#, 'karana'"
#Event Karana "#1# says, 'karana'"
#Event Commonlands "#1# says, in #*#, 'cl'"
#Event Commonlands "#1# says, 'cl'"
#Event SurefallGlade "#1# says, in #*#, 'sfg'"
#Event SurefallGlade "#1# says, 'sfg'"
#Event StoneBrunt "#1# says, in #*#, 'stoneBrunt'"
#Event StoneBrunt "#1# says, 'stoneBrunt'"
#Event Grimling "#1# says, in #*#, 'grimling'"
#Event Grimling "#1# says, 'grimling'"
#Event Feerrott "#1# says, in #*#, 'feerrott'"
#Event Feerrott "#1# says, 'feerrott'"
#Event Steamfont "#1# says, in #*#, 'steamfont'"
#Event Steamfont "#1# says, 'steamfont'"
#Event Combines "#1# says, in #*#, 'combines'"
#Event Combines "#1# says, 'combines'"
#Event Ro "#1# says, in #*#, 'ro'"
#Event Ro "#1# says, 'ro'"
#Event Twilight "#1# says, in #*#, 'twilight'"
#Event Twilight "#1# says, 'twilight'"
#Event GreatDivide "#1# says, in #*#, 'gd'"
#Event GreatDivide "#1# says, 'gd'"
#Event WakeningLands "#1# says, in #*#, 'wl'"
#Event WakeningLands "#1# says, 'wl'"
#Event CobaltScar "#1# says, in #*#, 'cs'"
#Event CobaltScar "#1# says, 'cs'"
#Event Misty "#1# says, in #*#, 'misty'"
#Event Misty "#1# says, 'misty'"
#Event PoKnowledge "#1# says, in #*#, 'pok'"
#Event PoKnowledge "#1# says, 'pok'"
#Event LavaStorm "#1# says, in #*#, 'lavastorm'"
#Event LavaStorm "#1# says, 'lavastorm'"
#Event UnderShore "#1# says, in #*#, 'undershore'"
#Event UnderShore "#1# says, 'undershore'"
#Event Arcstone "#1# says, in #*#, 'arcstone'"
#Event Arcstone "#1# says, 'arcstone'"
#Event Natimbi "#1# says, in #*#, 'natimbi'"
#Event Natimbi "#1# says, 'natimbi'"
#Event Dawnshroud "#1# says, in #*#, 'dawnshroud'"
#Event Dawnshroud "#1# says, 'dawnshroud'"
#Event Barindu "#1# says, in #*#, 'barindu'"
#Event Barindu "#1# says, 'barindu'"
#Event Bloodfields "#1# says, in #*#, 'bloodfields'"
#Event Bloodfields "#1# says, 'bloodfields'"
#Event TheSteppes "#1# says, in #*#, 'steppes'"
#Event TheSteppes "#1# says, 'steppes'"
#Event BuriedSea "#1# says, in #*#, 'buriedsea'"
#Event BuriedSea "#1# says, 'buriedsea'"
#Event Slaughter "#1# says, in #*#, 'slaughter'"
#Event Slaughter "#1# says, 'slaughter'"
#Event Direwind "#1# says, in #*#, 'direwind'"
#Event Direwind "#1# says, 'direwind'"
#Event LopingPlains "#1# says, in #*#, 'loping'"
#Event LopingPlains "#1# says, 'loping'"
#Event PoTime "#1# says, in #*#, 'time'"
#Event PoTime "#1# says, 'time'"
#Event BrellsRest "#1# says, in #*#, 'brells'"
#Event BrellsRest "#1# says, 'brells'"
#Event Grounds "#1# says, in #*#, 'grounds'"
#Event Grounds "#1# says, 'grounds'"
#Event BeastsDomain "#1# says, in #*#, 'beasts'"
#Event BeastsDomain "#1# says, 'beasts'"
#Event PillarsOfAlra "#1# says, in #*#, 'pillars'"
#Event PillarsOfAlra "#1# says, 'pillars'"
#Event ShardsLanding "#1# says, in #*#, 'shards'"
#Event ShardsLanding "#1# says, 'shards'"
#Event WestKarana "#1# says, in #*#, 'wkarana'"
#Event WestKarana "#1# says, 'wkarana'"
#Event Lceanium "#1# says, in #*#, 'lceanium'"
#Event Lceanium "#1# says, 'lceanium'"
#Event TempestTemple "#1# says, in #*#, 'tempest'"
#Event TempestTemple "#1# says, 'tempest'"
|------------------------------------------------------------|
| Main Rountine
|------------------------------------------------------------|
Sub Main
|-----------EQBC----------------------------------------=----|
/Declare UseEQBC bool outer TRUE
/Declare EQBCServerAddr string outer "192.168.1.251"
/Declare EQBCPort string outer "2112"
/Declare EQBCPassword string outer ""
|-----------Items--------------------------------------------|
/declare HorseItem string outer "Jungle Raptor Saddle"
/declare UseHorse bool outer TRUE
/declare ShowDebug bool outer TRUE
/declare TargetName string outer
/declare MaxRequests int outer 20
|------------------------------------------------------------|
/if (!${Defined[AFKMessage]}) /declare AFKMessage string outer AFK
/if (!${Defined[MedMessage]}) /declare MedMessage string outer ...Meditating... Low on mana.
/afk ${AFKMessage}
/tgb on
/popup ALL VARIABLES LOADED: Check Mq2 Window for Errors.
/if (${UseEQBC}) /bccmd connect ${EQBCServerAddr} ${EQBCPort} ${EQBCPassword}
CHATMETHOD1 [NBB]+ Initialized ++[NBB]
CHATMETHOD [NBB]+ Initialized ++[NBB]
CHATMETHOD1 [NBB]++ NEWBIE BUFF BOT STARTED ++[NBB]
CHATMETHOD [NBB]++ NEWBIE BUFF BOT STARTED ++[NBB]
:MainLoop
/if (${MacroQuest.GameState.Equal[CHARSELECT]}) /end
/if (!${Me.AFK}) /call AFK
/if (${Me.PctMana} < 40) /call Med
/if (${Window[TradeWnd].Open}) /call Money
/if (!${Me.Mount.ID} && ${UseHorse} && ${Zone.Type}==1 && ${FindItem[${HorseItem}].Name.NotEqual["NULL"]}) /call cast "${FindItem[${HorseItem}]}" item
/if (${Me.Standing} && !${Me.Mount.ID}) /sit
/doevents
/if (${MacroQuest.GameState.Equal[CHARSELECT]}) /end
/delay 5
/goto :MainLoop
/return
|------------------------------------------------------------|
| End Main Rountine
|------------------------------------------------------------|
|------------------------------------------------------------|
| Target Buff Rountine
|------------------------------------------------------------|
Sub BuffTarget(string WhoToBuff)
/varset TargetName ${WhoToBuff}
/if (${Me.Sitting}) /stand up
/if (${Window[TradeWnd].Open}) /call Money
/delay 2
/target id ${Spawn[PC ${TargetName}].ID}
/delay 1s ${Target.ID}
CHATMETHOD1 Buffing started on ${Target.CleanName}!
CHATMETHOD Buffing started on ${Target.CleanName}!
/if (${Window[TradeWnd].Open}) /call Money
/if (${Spawn[pc ${TargetName}].Pet.ID}) {
/target ${Spawn[PC ${TargetName}].Pet}
/delay 1s ${Target.ID}
/face
/call Buff
CHATMETHOD1 Serviced: ${Target.CleanName}
CHATMETHOD Serviced: ${Target.CleanName}
}
/if (${Spawn[PC ${TargetName}].MercID}) {
/target id ${Spawn[PC ${TargetName}].MercID}
/delay 1s ${Target.ID}
/face
/call Buff
CHATMETHOD1 Serviced: ${Target.CleanName}
CHATMETHOD Serviced: ${Target.CleanName}
}
/target id ${Spawn[PC ${TargetName}].ID}
/delay 1s ${Target.ID}
/face
/call Buff
CHATMETHOD1 Serviced: ${Target.CleanName}
CHATMETHOD Serviced: ${Target.CleanName}
/return
|------------------------------------------------------------|
| End Target Buff Rountine
|------------------------------------------------------------|
|------------------------------------------------------------|
| Other Rountines
|------------------------------------------------------------|
Sub AFK
/afk ${AFKMessage}
/return
Sub Med
/afk ${MedMessage}
/if (!${Me.Sitting} && !${Me.Mount.ID}) /sit on
/delay 5m ${Me.PctMana} > 60
/afk ${AFKMessage}
/return
Sub Money
/delay 3s ${Window[TradeWnd].Open}
/delay 3s ${Window[TradeWnd].HisTradeReady}
/if (${Window[TradeWnd].HisTradeReady}) {
CHATMETHOD1 Received a donation from ${Target.CleanName}.
CHATMETHOD Received a donation from ${Target.CleanName}.
/notify TradeWnd TRDW_Trade_Button leftmouseup
}
/delay 1s
/return
Sub Buff
|------------------------------------------------------------|
| Druid
|------------------------------------------------------------|
/if (${Me.Class.Name.Equal[Druid]} && ${Spawn[ID ${Target.ID}].Level} <= 46) /call cast "Shield of Thorns" gem7 15s
/if (${Me.Class.Name.Equal[Druid]} && ${Spawn[ID ${Target.ID}].Level} >= 47 && ${Spawn[ID ${Target.ID}].Level} <= 60) /call cast "Shield of Bracken" gem8 15s
/if (${Me.Class.Name.Equal[Druid]} && ${Spawn[ID ${Target.ID}].Level} >= 61) /call cast "${Spell[Daggerspur Bulwark].RankName}" gem11 15s
/if (${Me.Class.Name.Equal[Druid]} && ${Spawn[ID ${Target.ID}].Level} <= 46) /call cast "Skin like Nature" gem1 15s
/if (${Me.Class.Name.Equal[Druid]} && ${Spawn[ID ${Target.ID}].Level} >= 47 && ${Spawn[ID ${Target.ID}].Level} <= 60) /call cast "Protection of the Nine" gem2 15s
/if (${Me.Class.Name.Equal[Druid]} && ${Spawn[ID ${Target.ID}].Level} >= 61) /call cast "${Spell[Shieldstone Skin].RankName}" gem6 15s
/if (${Me.Class.Name.Equal[Druid]} && ${Spawn[ID ${Target.ID}].Level} <= 46) /call cast "Spirit of Wolf" gem7 15s
/if (${Me.Class.Name.Equal[Druid]} && ${Spawn[ID ${Target.ID}].Level} >= 47) /call cast "Spirit of Eagle" gem8 15s
|------------------------------------------------------------|
| Druid
|------------------------------------------------------------|
/return
Sub Port(string PortTarget, string PortToCast)
/if (${BuffGuildOnly} && !${Spawn[PC ${WhoToBuff}].Guild.Equal[${Me.Guild}]}) /return
/if (!${Me.Class.Name.Equal[Druid]}) /return
/varset TargetName ${PortTarget}
/if (${Me.Sitting}) /stand up
/if (${Window[TradeWnd].Open}) /call Money
/delay 2
/target id ${Spawn[PC ${TargetName}].ID}
/delay 1s ${Target.ID}
CHATMETHOD1 Porting: ${Target.CleanName} -- ${PortToCast} --
CHATMETHOD Porting: ${Target.CleanName} -- ${PortToCast} --
/call cast "${PortToCast}" gem10
/delay 1s !${Me.Casting.ID}
/return
|------------------------------------------------------------|
| End Other Rountines
|------------------------------------------------------------|
|------------------------------------------------------------|
| Events
|------------------------------------------------------------|
Sub Event_Hail(Line,Sender)
/call BuffTarget "${Sender}"
/return
Sub Event_Ports(Line,Sender)
/if (!${Me.Class.Name.Equal[Druid]}) /return
/say Available Zephyrs: moors, nexus, tox, butcher, iceclad, karana, cl, sfg, stoneBrunt, grimling, feerrott, steamfont, combines, ro, twilight, gd, wl, cs, misty, pok, lavastorm, undershore, arcstone, natimbi, dawnshroud, barindu, bloodfields, steppes, buriedsea, slaughter, direwind, loping, time, brells, grounds, beasts, pillars, shards, wkarana, lceanium, and tempest
/return
Sub Event_BlightfireMoors(Line,Sender)
/call Port "${Sender}" "Zephyr: Blightfire Moors"
/return
Sub Event_Nexus(Line,Sender)
/call Port "${Sender}" "Zephyr: Nexus"
/return
Sub Event_Toxxulia(Line,Sender)
/call Port "${Sender}" "Zephyr: Toxxulia"
/return
Sub Event_ButcherBlock(Line,Sender)
/call Port "${Sender}" "Zephyr: Butcherblock"
/return
Sub Event_Iceclad(Line,Sender)
/call Port "${Sender}" "Zephyr: Iceclad"
/return
Sub Event_Karana(Line,Sender)
/call Port "${Sender}" "Zephyr: Karana"
/return
Sub Event_Commonlands(Line,Sender)
/call Port "${Sender}" "Zephyr: Commonlands"
/return
Sub Event_SurefallGlade(Line,Sender)
/call Port "${Sender}" "Zephyr: Surefall Glade"
/return
Sub Event_StoneBrunt(Line,Sender)
/call Port "${Sender}" "Zephyr: Stonebrunt"
/return
Sub Event_Grimling(Line,Sender)
/call Port "${Sender}" "Zephyr: Grimling"
/return
Sub Event_Feerrott(Line,Sender)
/call Port "${Sender}" "Zephyr: Feerrott"
/return
Sub Event_Steamfont(Line,Sender)
/call Port "${Sender}" "Zephyr: Steamfont"
/return
Sub Event_Combines(Line,Sender)
/call Port "${Sender}" "Zephyr: Combines"
/return
Sub Event_Ro(Line,Sender)
/call Port "${Sender}" "Zephyr: Ro"
/return
Sub Event_Twilight(Line,Sender)
/call Port "${Sender}" "Zephyr: Twilight"
/return
Sub Event_GreatDivide(Line,Sender)
/call Port "${Sender}" "Zephyr: Great Divide"
/return
Sub Event_WakeningLands(Line,Sender)
/call Port "${Sender}" "Zephyr: Wakening Lands"
/return
Sub Event_CobaltScar(Line,Sender)
/call Port "${Sender}" "Zephyr: Cobalt Scar"
/return
Sub Event_Misty(Line,Sender)
/call Port "${Sender}" "Zephyr: Misty"
/return
Sub Event_PoKnowledge(Line,Sender)
/call Port "${Sender}" "Zephyr: Knowledge"
/return
Sub Event_LavaStorm(Line,Sender)
/call Port "${Sender}" "Zephyr: Lavastorm"
/return
Sub Event_UnderShore(Line,Sender)
/call Port "${Sender}" "Zephyr: Undershore"
/return
Sub Event_Arcstone(Line,Sender)
/call Port "${Sender}" "Zephyr: Arcstone"
/return
Sub Event_Natimbi(Line,Sender)
/call Port "${Sender}" "Zephyr: Natimbi"
/return
Sub Event_Dawnshroud(Line,Sender)
/call Port "${Sender}" "Zephyr: Dawnshroud"
/return
Sub Event_Barindu(Line,Sender)
/call Port "${Sender}" "Zephyr: Barindu"
/return
Sub Event_Bloodfields(Line,Sender)
/call Port "${Sender}" "Zephyr: Bloodfields"
/return
Sub Event_TheSteppes(Line,Sender)
/call Port "${Sender}" "Zephyr: The Steppes"
/return
Sub Event_BuriedSea(Line,Sender)
/call Port "${Sender}" "Zephyr: Buried Sea"
/return
Sub Event_Slaughter(Line,Sender)
/call Port "${Sender}" "Zephyr: Slaughter"
/return
Sub Event_Direwind(Line,Sender)
/call Port "${Sender}" "Zephyr: Direwind"
/return
Sub Event_LopingPlains(Line,Sender)
/call Port "${Sender}" "Zephyr: Loping Plains"
/return
Sub Event_PoTime(Line,Sender)
/call Port "${Sender}" "Zephyr: Plane of Time"
/return
Sub Event_BrellsRest(Line,Sender)
/call Port "${Sender}" "Zephyr: Brell's Rest"
/return
Sub Event_Grounds(Line,Sender)
/call Port "${Sender}" "Zephyr: the Grounds"
/return
Sub Event_BeastsDomain(Line,Sender)
/call Port "${Sender}" "Zephyr: Beasts' Domain"
/return
Sub Event_PillarsOfAlra(Line,Sender)
/call Port "${Sender}" "Zephyr: Pillars of Alra"
/return
Sub Event_ShardsLanding(Line,Sender)
/call Port "${Sender}" "Zephyr: Shard's Landing"
/return
Sub Event_WestKarana(Line,Sender)
/call Port "${Sender}" "Zephyr: West Karana"
/return
Sub Event_Lceanium(Line,Sender)
/call Port "${Sender}" "Zephyr: Lceanium"
/return
Sub Event_TempestTemple(Line,Sender)
/call Port "${Sender}" "Zephyr: Tempest Temple"
/return
|------------------------------------------------------------|
| End Events
|------------------------------------------------------------|