Custom bot commands
I'm not sure if anyone would be interested in using any of these commands, but they've had pretty good reception on my server, Pelican's Solo Server. Basically, they just help improve caster bots by interrupting their current spell and forcing them to cast a spell type of your choosing. To use them, just copy and paste them into bot.cpp. I am almost certain that all of these could be optimized, but they seem to work pretty well in their current form.
Bot Heal - Forces a cleric, shaman, druid, paladin, ranger, or beastlord to heal you
Code:
// Heal
if ((!strcasecmp(sep->arg[1], "heal")) && (c->IsGrouped())) {
Mob *Healer;
int32 HealerClass = 0;
Group *g = c->GetGroup();
if(g) {
for(int i=0; i<MAX_GROUP_MEMBERS; i++){
if(g->members[i] && g->members[i]->IsBot()) {
switch(g->members[i]->GetClass()) {
case CLERIC:
Healer = g->members[i];
HealerClass = CLERIC;
break;
case DRUID:
if (HealerClass != CLERIC){
Healer = g->members[i];
HealerClass = DRUID;
}
break;
case SHAMAN:
if (HealerClass == 0){
Healer = g->members[i];
HealerClass = SHAMAN;
}
break;
case PALADIN:
if (HealerClass == 0){
Healer = g->members[i];
HealerClass = PALADIN;
}
break;
case RANGER:
if (HealerClass == 0){
Healer = g->members[i];
HealerClass = RANGER;
}
break;
case BEASTLORD:
if (HealerClass == 0){
Healer = g->members[i];
HealerClass = BEASTLORD;
}
break;
default:
break;
}
}
}
switch(HealerClass) {
case CLERIC:
Healer->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 4)) {
Healer->Say("Casting Minor Healing...");
Healer->CastSpell(200, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 4) && (c->GetLevel() <= 9)) {
Healer->Say("Casting Light Healing...");
Healer->CastSpell(17, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 10) && (c->GetLevel() <= 19)) {
Healer->Say("Casting Healing...");
Healer->CastSpell(12, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 20) && (c->GetLevel() <= 29)) {
Healer->Say("Casting Greater Healing...");
Healer->CastSpell(15, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 30) && (c->GetLevel() <= 38)) {
Healer->Say("Casting Superior Healing...");
Healer->CastSpell(9, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 39) && (c->GetLevel() <= 255)) {
Healer->Say("Casting Complete Healing...");
Healer->CastSpell(13, c->GetID(), 1, -1, -1);
}
break;
case DRUID:
Healer->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 8)) {
Healer->Say("Casting Minor Healing...");
Healer->CastSpell(200, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 9) && (c->GetLevel() <= 18)) {
Healer->Say("Casting Light Healing...");
Healer->CastSpell(17, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 19) && (c->GetLevel() <= 28)) {
Healer->Say("Casting Healing...");
Healer->CastSpell(12, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 29) && (c->GetLevel() <= 43)) {
Healer->Say("Casting Greater Healing...");
Healer->CastSpell(15, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 44) && (c->GetLevel() <= 50)) {
Healer->Say("Casting Healing Water...");
Healer->CastSpell(3834, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 51) && (c->GetLevel() <= 54)) {
Healer->Say("Casting Superior Healing...");
Healer->CastSpell(9, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 55) && (c->GetLevel() <= 59)) {
Healer->Say("Casting Chloroblast...");
Healer->CastSpell(1290, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 60) && (c->GetLevel() <= 62)) {
Healer->Say("Casting Nature's Touch...");
Healer->CastSpell(1291, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 63) && (c->GetLevel() <= 65)) {
Healer->Say("Casting Nature's Infusion...");
Healer->CastSpell(3443, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 66) && (c->GetLevel() <= 67)) {
Healer->Say("Casting Sylvan Infusion...");
Healer->CastSpell(4883, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 68) && (c->GetLevel() <= 69)) {
Healer->Say("Casting Chlorotrope...");
Healer->CastSpell(5355, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 70) && (c->GetLevel() <= 255)) {
Healer->Say("Casting Ancient: Chlorobon...");
Healer->CastSpell(6141, c->GetID(), 1, -1, -1);
}
break;
case SHAMAN:
Healer->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 8)) {
Healer->Say("Casting Minor Healing...");
Healer->CastSpell(200, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 9) && (c->GetLevel() <= 18)) {
Healer->Say("Casting Light Healing...");
Healer->CastSpell(17, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 19) && (c->GetLevel() <= 28)) {
Healer->Say("Casting Healing...");
Healer->CastSpell(12, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 29) && (c->GetLevel() <= 50)) {
Healer->Say("Casting Greater Healing...");
Healer->CastSpell(15, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 51) && (c->GetLevel() <= 54)) {
Healer->Say("Casting Superior Healing...");
Healer->CastSpell(9, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 55) && (c->GetLevel() <= 61)) {
Healer->Say("Casting Chloroblast...");
Healer->CastSpell(1290, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 62) && (c->GetLevel() <= 64)) {
Healer->Say("Casting Tnarg's Mending...");
Healer->CastSpell(3233, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 65) && (c->GetLevel() <= 67)) {
Healer->Say("Casting Daluda's Mending...");
Healer->CastSpell(4901, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 68) && (c->GetLevel() <= 69)) {
Healer->Say("Casting Yoppa's Mending...");
Healer->CastSpell(5395, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 70) && (c->GetLevel() <= 255)) {
Healer->Say("Casting Ancient: Wilslik's Mending...");
Healer->CastSpell(6142, c->GetID(), 1, -1, -1);
}
break;
case PALADIN:
Healer->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 5)) {
Healer->Say("Casting Salve...");
Healer->CastSpell(5011, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 6) && (c->GetLevel() <= 11)) {
Healer->Say("Casting Minor Healing...");
Healer->CastSpell(200, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 12) && (c->GetLevel() <= 26)) {
Healer->Say("Casting Light Healing...");
Healer->CastSpell(17, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 27) && (c->GetLevel() <= 35)) {
Healer->Say("Casting Healing...");
Healer->CastSpell(12, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 36) && (c->GetLevel() <= 56)) {
Healer->Say("Casting Greater Healing...");
Healer->CastSpell(15, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 57) && (c->GetLevel() <= 60)) {
Healer->Say("Casting Superior Healing...");
Healer->CastSpell(9, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 61) && (c->GetLevel() <= 70)) {
Healer->Say("Casting Touch of Nife...");
Healer->CastSpell(3429, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 71) && (c->GetLevel() <= 255)) {
Healer->Say("Casting Sacred Touch...");
Healer->CastSpell(8560, c->GetID(), 1, -1, -1);
}
break;
case RANGER:
Healer->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 7)) {
Healer->Say("Casting Salve...");
Healer->CastSpell(5011, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 8) && (c->GetLevel() <= 20)) {
Healer->Say("Casting Minor Healing...");
Healer->CastSpell(200, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 21) && (c->GetLevel() <= 37)) {
Healer->Say("Casting Light Healing...");
Healer->CastSpell(17, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 38) && (c->GetLevel() <= 56)) {
Healer->Say("Casting Healing...");
Healer->CastSpell(12, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 57) && (c->GetLevel() <= 61)) {
Healer->Say("Casting Greater Healing...");
Healer->CastSpell(15, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 62) && (c->GetLevel() <= 64)) {
Healer->Say("Casting Chloroblast...");
Healer->CastSpell(11290, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 65) && (c->GetLevel() <= 66)) {
Healer->Say("Casting Sylvan Light...");
Healer->CastSpell(4896, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 67) && (c->GetLevel() <= 255)) {
Healer->Say("Casting Sylvan Water...");
Healer->CastSpell(5304, c->GetID(), 1, -1, -1);
}
break;
case BEASTLORD:
Healer->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 5)) {
Healer->Say("Casting Salve...");
Healer->CastSpell(5011, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 6) && (c->GetLevel() <= 19)) {
Healer->Say("Casting Minor Healing...");
Healer->CastSpell(200, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 20) && (c->GetLevel() <= 35)) {
Healer->Say("Casting Light Healing...");
Healer->CastSpell(17, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 36) && (c->GetLevel() <= 56)) {
Healer->Say("Casting Healing...");
Healer->CastSpell(12, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 57) && (c->GetLevel() <= 61)) {
Healer->Say("Casting Greater Healing...");
Healer->CastSpell(15, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 62) && (c->GetLevel() <= 64)) {
Healer->Say("Casting Chloroblast...");
Healer->CastSpell(11290, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 65) && (c->GetLevel() <= 66)) {
Healer->Say("Casting Trushkar's Mending...");
Healer->CastSpell(4875, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 67) && (c->GetLevel() <= 255)) {
Healer->Say("Casting Muada's Mending...");
Healer->CastSpell(5528, c->GetID(), 1, -1, -1);
}
break;
default:
c->Message(15, "You must have a Cleric, Paladin, Druid, Shaman, Ranger, or Beastlord in your group.");
break;
}
}
}
Bot grphl - Forces cleric bot to heal your group
Code:
// grphl
if ((!strcasecmp(sep->arg[1], "grphl")) && (c->IsGrouped())) {
Mob *Grphler;
int32 GrphlerClass = 0;
Group *g = c->GetGroup();
if(g) {
for(int i=0; i<MAX_GROUP_MEMBERS; i++){
if(g->members[i] && g->members[i]->IsBot()) {
switch(g->members[i]->GetClass()) {
case CLERIC:
Grphler = g->members[i];
GrphlerClass = CLERIC;
break;
default:
break;
}
}
}
switch(GrphlerClass) {
case CLERIC:
Grphler->InterruptSpell();
if ((c->GetLevel() >= 30) && (c->GetLevel() <= 44)) {
Grphler->Say("Casting Word of Health...");
Grphler->CastSpell(135, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 45) && (c->GetLevel() <= 51)) {
Grphler->Say("Casting Word of Healing...");
Grphler->CastSpell(136, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 52) && (c->GetLevel() <= 56)) {
Grphler->Say("Casting Word of Vigor...");
Grphler->CastSpell(1520, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 57) && (c->GetLevel() <= 59)) {
Grphler->Say("Casting Word of Restoration...");
Grphler->CastSpell(1521, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 60) && (c->GetLevel() <= 63)) {
Grphler->Say("Casting Word of Redemption...");
Grphler->CastSpell(1523, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 64) && (c->GetLevel() <= 68)) {
Grphler->Say("Casting Word of Replenishment...");
Grphler->CastSpell(3471, c->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 69) && (c->GetLevel() <= 255)) {
Grphler->Say("Casting Word of Vivification...");
Grphler->CastSpell(5270, c->GetID(), 1, -1, -1);
}
break;
default:
c->Message(15, "You must have a Cleric in your group.");
break;
}
}
}
Bot nuke - forces wizard, magician, druid, or shaman to nuke your target
Code:
//Nuke
if(!strcasecmp(sep->arg[1], "nuke"))
{
Mob *target = c->GetTarget();
if(target == NULL || target->IsClient() || target->IsBot() || (target->IsPet() && target->GetOwner()->IsBot()))
{
c->Message(15, "You must select a monster");
return;
}
int32 DBtype = c->GetTarget()->GetBodyType();
Mob *Nuker;
int32 NukerClass = 0;
Group *g = c->GetGroup();
if(g) {
for(int i=0; i<MAX_GROUP_MEMBERS; i++){
if(g->members[i] && g->members[i]->IsBot()) {
switch(g->members[i]->GetClass()) {
case WIZARD:
Nuker = g->members[i];
NukerClass = WIZARD;
break;
case MAGICIAN:
if(NukerClass != WIZARD){
Nuker = g->members[i];
NukerClass = MAGICIAN;
}
break;
case DRUID:
if (NukerClass == 0){
Nuker = g->members[i];
NukerClass = DRUID;
}
break;
case SHAMAN:
if (NukerClass == 0){
Nuker = g->members[i];
NukerClass = SHAMAN;
}
break;
default:
break;
}
}
}
switch(NukerClass) {
case WIZARD:
Nuker->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 4)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(372, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 5) && (c->GetLevel() <= 9)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(477, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 10) && (c->GetLevel() <= 14)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(383, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 15) && (c->GetLevel() <= 16)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(657, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 17) && (c->GetLevel() <= 25)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(22, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 26) && (c->GetLevel() <= 42)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(465, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 43) && (c->GetLevel() <= 59)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(659, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 60) && (c->GetLevel() <= 62)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(1426, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 63) && (c->GetLevel() <= 64)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(3335, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 65) && (c->GetLevel() <= 69)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(4981, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 70) && (c->GetLevel() <= 255)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(8043, target->GetID(), 1, -1, -1);
}
break;
case MAGICIAN:
Nuker->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 4)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(93, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 5) && (c->GetLevel() <= 14)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(322, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 15) && (c->GetLevel() <= 17)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(334, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 18) && (c->GetLevel() <= 30)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(68, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 31) && (c->GetLevel() <= 32)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(120, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 33) && (c->GetLevel() <= 40)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(69, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 41) && (c->GetLevel() <= 46)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(114, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 47) && (c->GetLevel() <= 51)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(70, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 52) && (c->GetLevel() <= 56)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(1660, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 57) && (c->GetLevel() <= 62)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(1663, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 63) && (c->GetLevel() <= 65)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(3321, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 66) && (c->GetLevel() <= 255)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(5474, target->GetID(), 1, -1, -1);
}
break;
case DRUID:
Nuker->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 2)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(93, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 3) && (c->GetLevel() <= 7)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(92, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 8) && (c->GetLevel() <= 15)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(91, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 16) && (c->GetLevel() <= 27)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(419, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 28) && (c->GetLevel() <= 37)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(217, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 38) && (c->GetLevel() <= 42)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(57, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 43) && (c->GetLevel() <= 47)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(1740, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 48) && (c->GetLevel() <= 53)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(671, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 54) && (c->GetLevel() <= 58)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(1603, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 59) && (c->GetLevel() <= 64)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(1607, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 65) && (c->GetLevel() <= 68)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(4884, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 69) && (c->GetLevel() <= 255)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(5361, target->GetID(), 1, -1, -1);
}
break;
case SHAMAN:
Nuker->InterruptSpell();
if ((c->GetLevel() >= 1) && (c->GetLevel() <= 3)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(93, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 4) && (c->GetLevel() <= 13)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(275, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 14) && (c->GetLevel() <= 22)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(282, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 23) && (c->GetLevel() <= 32)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(508, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 33) && (c->GetLevel() <= 41)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(509, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 42) && (c->GetLevel() <= 46)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(1429, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 47) && (c->GetLevel() <= 53)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(3573, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 54) && (c->GetLevel() <= 255)) {
Nuker->Say("Nuking %s \n", target->GetCleanName(), sep->arg[2]);
Nuker->CastSpell(3574, target->GetID(), 1, -1, -1);
}
break;
default:
c->Message(15, "You must have a Wizard, Magician, Shaman, or Druid in your group.");
break;
}
}
}
Bot malo - Forces mage, shaman, or enchanter to cast resist debuff on target
Code:
//Malo
if(!strcasecmp(sep->arg[1], "malo"))
{
Mob *target = c->GetTarget();
if(target == NULL || target->IsClient() || target->IsBot() || (target->IsPet() && target->GetOwner()->IsBot()))
{
c->Message(15, "You must select a monster");
return;
}
int32 DBtype = c->GetTarget()->GetBodyType();
Mob *Debuffer;
int32 DebufferClass = 0;
Group *g = c->GetGroup();
if(g) {
for(int i=0; i<MAX_GROUP_MEMBERS; i++){
if(g->members[i] && g->members[i]->IsBot()) {
switch(g->members[i]->GetClass()) {
case SHAMAN:
Debuffer = g->members[i];
DebufferClass = SHAMAN;
break;
case MAGICIAN:
if(DebufferClass != SHAMAN){
Debuffer = g->members[i];
DebufferClass = MAGICIAN;
}
break;
case ENCHANTER:
if (DebufferClass == 0){
Debuffer = g->members[i];
DebufferClass = ENCHANTER;
}
break;
default:
break;
}
}
}
switch(DebufferClass) {
case SHAMAN:
Debuffer->InterruptSpell();
if ((c->GetLevel() >= 18) && (c->GetLevel() <= 31)) {
Debuffer->Say("Casting Malaise on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(110, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 32) && (c->GetLevel() <= 47)) {
Debuffer->Say("Casting Malaisement on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(111, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 48) && (c->GetLevel() <= 56)) {
Debuffer->Say("Casting Malosi on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(112, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 57) && (c->GetLevel() <= 59)) {
Debuffer->Say("Casting Malosini on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(1577, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 60) && (c->GetLevel() <= 62)) {
Debuffer->Say("Casting Malo on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(1578, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 63) && (c->GetLevel() <= 64)) {
Debuffer->Say("Casting Malosinia on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(3387, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 65) && (c->GetLevel() <= 71)) {
Debuffer->Say("Casting Malos on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(3395, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 72) && (c->GetLevel() <= 74)) {
Debuffer->Say("Casting Malosinise on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(8520, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 75) && (c->GetLevel() <= 76)) {
Debuffer->Say("Casting Malis on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(8541, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 77) && (c->GetLevel() <= 255)) {
Debuffer->Say("Casting Malosinatia on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(14659, target->GetID(), 1, -1, -1);
}
break;
case MAGICIAN:
Debuffer->InterruptSpell();
if ((c->GetLevel() >= 22) && (c->GetLevel() <= 43)) {
Debuffer->Say("Casting Malaise on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(110, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 44) && (c->GetLevel() <= 50)) {
Debuffer->Say("Casting Malaisement on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(111, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 51) && (c->GetLevel() <= 57)) {
Debuffer->Say("Casting Malosi %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(112, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 58) && (c->GetLevel() <= 59)) {
Debuffer->Say("Casting Malosini %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(1577, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 60) && (c->GetLevel() <= 62)) {
Debuffer->Say("Casting Mala on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(1772, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 63) && (c->GetLevel() <= 70)) {
Debuffer->Say("Casting Malosinia on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(3387, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 71) && (c->GetLevel() <= 75)) {
Debuffer->Say("Casting Malosinise on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(8520, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 76) && (c->GetLevel() <= 255)) {
Debuffer->Say("Casting Malosinatia on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(14659, target->GetID(), 1, -1, -1);
}
break;
case ENCHANTER:
Debuffer->InterruptSpell();
if ((c->GetLevel() >= 2) && (c->GetLevel() <= 17)) {
Debuffer->Say("asting Tashan on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(676, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 18) && (c->GetLevel() <= 40)) {
Debuffer->Say("Casting Tashani on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(677, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 41) && (c->GetLevel() <= 56)) {
Debuffer->Say("Casting Tashania on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(678, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 57) && (c->GetLevel() <= 60)) {
Debuffer->Say("Casting Tashanian on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(1702, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 61) && (c->GetLevel() <= 71)) {
Debuffer->Say("Casting Howl of Tashan on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(3342, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 72) && (c->GetLevel() <= 255)) {
Debuffer->Say("Casting Echo of Tashan on %s \n", target->GetCleanName(), sep->arg[2]);
Debuffer->CastSpell(8663, target->GetID(), 1, -1, -1);
}
default:
c->Message(15, "You must have a Shaman, Magician, or Enchanter in your group.");
break;
}
}
}
Bot slow - Forces shaman, beastlord, or enchanter bot to slow your target
Code:
//Slow
if(!strcasecmp(sep->arg[1], "slow"))
{
Mob *target = c->GetTarget();
if(target == NULL || target->IsClient() || target->IsBot() || (target->IsPet() && target->GetOwner()->IsBot()))
{
c->Message(15, "You must select a monster");
return;
}
int32 DBtype = c->GetTarget()->GetBodyType();
Mob *Slower;
int32 SlowerClass = 0;
Group *g = c->GetGroup();
if(g) {
for(int i=0; i<MAX_GROUP_MEMBERS; i++){
if(g->members[i] && g->members[i]->IsBot()) {
switch(g->members[i]->GetClass()) {
case SHAMAN:
Slower = g->members[i];
SlowerClass = SHAMAN;
break;
case ENCHANTER:
if(SlowerClass != SHAMAN){
Slower = g->members[i];
SlowerClass = ENCHANTER;
}
break;
case BEASTLORD:
if (SlowerClass == 0){
Slower = g->members[i];
SlowerClass = BEASTLORD;
}
break;
default:
break;
}
}
}
switch(SlowerClass) {
case SHAMAN:
Slower->InterruptSpell();
if ((c->GetLevel() >= 5) && (c->GetLevel() <= 12)) {
Slower->Say("Casting Drowsy on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(270, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 13) && (c->GetLevel() <= 26)) {
Slower->Say("Casting Walking Sleep on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(505, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 27) && (c->GetLevel() <= 37)) {
Slower->Say("Casting Tagar's Insects on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(506, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 38) && (c->GetLevel() <= 50)) {
Slower->Say("Casting Togor's Insects on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(507, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 51) && (c->GetLevel() <= 255)) {
Slower->Say("Casting Turgur's Insects on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(1588, target->GetID(), 1, -1, -1);
}
break;
case ENCHANTER:
Slower->InterruptSpell();
if ((c->GetLevel() >= 9) && (c->GetLevel() <= 22)) {
Slower->Say("Casting Languid Pace on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(302, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 23) && (c->GetLevel() <= 40)) {
Slower->Say("Casting Tepid Deeds on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(185, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 41) && (c->GetLevel() <= 56)) {
Slower->Say("Casting Shiftless Deeds on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(186, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 57) && (c->GetLevel() <= 255)) {
Slower->Say("Casting Forlorn Deeds on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(1712, target->GetID(), 1, -1, -1);
}
break;
case BEASTLORD:
Slower->InterruptSpell();
if ((c->GetLevel() >= 20) && (c->GetLevel() <= 49)) {
Slower->Say("Casting Drowsy on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(270, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 50) && (c->GetLevel() <= 59)) {
Slower->Say("Casting Sha's Lethargy on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(2634, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 60) && (c->GetLevel() <= 64)) {
Slower->Say("Casting Sha's Advantage on %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(2942, target->GetID(), 1, -1, -1);
}
else if ((c->GetLevel() >= 65) && (c->GetLevel() <= 255)) {
Slower->Say("Casting Sha's Revenge %s \n", target->GetCleanName(), sep->arg[2]);
Slower->CastSpell(3462, target->GetID(), 1, -1, -1);
}
break;
default:
c->Message(15, "You must have a Shaman, Enchanter, or Beastlord in your group.");
break;
}
}
}
As I said, I am sure these could be improved by someone with more C++ knowledge than me, but they at least work and can be easily adjusted to cast spells of your choosing.
|