Features:
Immune to AE Food/Water/Mod Rods
Keeps his self mana regen buffs up and auto Harvests as needed.
Sits after any casting.
Level checks for all ports. (If you ran the macro on a lower level wizard and asked him for a port to a high level zone it would get stuck in an infinite loop)
States when he's hungry, thirsty or running low on fragments.
Accepts trades (food, water, fragments)
Added in <guild2> to show those who wanted extra guilds to have access how simple it is.
Coming Soon:
Help option.
Friendlier and more verbose bot.
Mana check.
This is my first macro and it's fairly simple, but someone out there hopefully will find it useful =).
The purpose of the macro is to setup a wizard bot as a magus that only responds to members of the guild you specify. I have mine setup outside of the Time dial where most guildmates are bound. He basically responds to any punt request they throw at him. TL to GD plz. punt Natimbi. bind. etc. etc. all work fine.
This bot keeps Staff of the Four click and Familiar up at all times and will cast Harvest if it's up and he's under 90% mana. I decided against using a mount due to the food usage, and instead just automatically sits after any cast.
Code: Select all
#include spell_routines.inc
#chat tell
#define <guild> "Insert Guildname Here"
#define <guild2> "Insert Guildname Here"
Sub Main
:loop
/doevents Chat
/delay 2s
/if (${Me.SpellReady[Harvest]} && ${Me.PctMana}<92) {
/call Cast "Harvest" gem8
/delay 2s
/sit
}
/if (!${Me.Buff[Barrier of Force].ID}) {
/call Cast "Staff of the Four" item
/delay 2s
/sit
}
/if (!${Me.Buff[Familiar].ID}) {
/call Cast "Familiar" gem6
/delay 2s
/pet get lost
/sit
}
/if (${Window[Tradewnd].Open}) {
/notify Tradewnd TRDW_Trade_Button leftmouseup
/msg ${Target} Thanks!
}
/goto :loop
Sub Event_Chat(ChatType,Sender,ChatText)
/target pc ${Sender}
/if (${Cursor.ID}) /autoinv
/if (${Target.Guild.Equal[<guild>]} || ${Target.Guild.Equal[<guild2>]}) {
/if (${FindItemCount[Small Portal Fragments]}<20) {
/reply I'm getting low on Portal Fragments. Please let someone know, or get me some
from a Magus.
/delay 2s
}
/if (${Me.Thirst}<1000) {
/reply I'm very thirsty. Could you please give me some water before you leave?
/delay 2s
}
/if (${Me.Hunger}<1000) {
/reply I'm starving. Could you please give me some food before you leave?
/delay2s
}
/if (${FindItemCount[Small Portal Fragments]}>0) {
/if (${ChatText.Find[Dread]} || ${ChatText.Find[DL]}) {
/if (${Me.Level}>=39) {
/reply You are being ported to the Dreadlands.
/call Cast "Translocate: Combine" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Fay]}) {
/if (${Me.Level}>=39) {
/reply You are being ported to Greater Faydark.
/call Cast "Translocate: Fay" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Grim]}) {
/if (${Me.Level}>=39) {
/reply You are being ported to Grimling Forest.
/call Cast "Translocate: Grimling" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Nex]}) {
/if (${Me.Level}>=39) {
/reply You are being ported to the Nexus.
/call Cast "Translocate: Nexus" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[North]}) {
/if (${Me.Level}>=39) {
/reply You are being ported to North Karana.
/call Cast "Translocate: North" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Stonebrunt]}) {
/if (${Me.Level}>=39) {
/reply You are being ported to Stonebrunt Mountains.
/call Cast "Translocate: Stonebrunt" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Tox]}) {
/if (${Me.Level}>=39) {
/reply You are being ported to Toxxulia Forest.
/call Cast "Translocate: Tox" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Cazic]}) {
/if (${Me.Level}>=44) {
/reply You are being ported to Cazic Thule.
/call Cast "Translocate: Cazic" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Common]} || ${ChatText.Find[WC]}) {
/if (${Me.Level}>=44) {
/reply You are being ported to West Commonlands.
/call Cast "Translocate: Common" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Nek]}) {
/if (${Me.Level}>=44) {
/reply You are being ported to Nektulos Forest.
/call Cast "Translocate: Nek" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Ro]}) {
/if (${Me.Level}>=44) {
/reply You are being ported to North Ro.
/call Cast "Translocate: Ro" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Twilight]} || ${ChatText.Find[Sea]}) {
/if (${Me.Level}>=44) {
/reply You are being ported to Twilight Sea.
/call Cast "Translocate: Twilight" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[West Karana]}) {
/if (${Me.Level}>=44) {
/reply You are being ported to West Karana.
/call Cast "Translocate: West" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Scar]} || ${ChatText.Find[Cobalt]}) {
/if (${Me.Level}>=49) {
/reply You are being ported to Cobalt Scar.
/call Cast "Translocate: Cobalt Scar" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Dawnshroud]} || ${ChatText.Find[DSP]}) {
/if (${Me.Level}>=49) {
/reply You are being ported to Dawnshroud Peaks.
/call Cast "Translocate: Dawnshroud" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Divide]} || ${ChatText.Find[GD]}) {
/if (${Me.Level}>=49) {
/reply You are being ported to the Great Divide.
/call Cast "Translocate: Great Divide" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Iceclad]} || ${ChatText.Find[IC]}) {
/if (${Me.Level}>=49) {
/reply You are being ported to Iceclad Ocean.
/call Cast "Translocate: Iceclad" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Knowledge]} || ${ChatText.Find[POK]}) {
/if (${Me.Level}>=49) {
/reply You are being ported to the Plane of Knowledge. God you're fucking lazy.
/call Cast "Translocate: Knowledge" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Wakening]}) {
/if (${Me.Level}>=49) {
/reply You are being ported to the Wakening Lands.
/call Cast "Translocate: Wakening Lands" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Bind]}) {
/if (${Me.Level}>=50) {
/reply You are being ported to your Bind Point.
/call Cast "Translocate" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Group Bind]}) {
/if (${Me.Level}>=52) {
/reply You are being ported to your Bind Point.
/call Cast "Translocate: Group" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Natimbi]}) {
/if (${Me.Level}>=57) {
/reply You are being ported to Natimbi.
/call Cast "Translocate: Natimbi" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Blood]}) {
/if (${Me.Level}>=58) {
/reply You are being ported to the Bloodfields.
/call Cast "Translocate: Bloodfields" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[Barindu]}) {
/if (${Me.Level}>=60) {
/reply You are being ported to Barindu.
/call Cast "Translocate: Barindu" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
/if (${ChatText.Find[wos]} || ${ChatText.Find[wall]} || ${ChatText.Find[slaughter]}) {
/if (${Me.Level}>=67) {
/reply You are being ported to the Wall of Slaughter.
/call Cast "Translocate: Slaughter" gem7
} else {
/reply I'm sorry I'm not high enough level to cast that spell.
}
}
} else {
/reply I'm all out of fragments. You'll have to get me some more before I can port you.
}
/sit
}
/return

