|
|
|
|
@ -8731,52 +8731,53 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
c->Message(0, "#bot create [name] [class (id)] [race (id)] [model (male/female)] - create a permanent bot. See #bot help create.");
|
|
|
|
|
c->Message(0, "#bot help create - show all the race/class id. (make it easier to create bots)");
|
|
|
|
|
c->Message(0, "#bot delete - completely destroy forever the targeted bot and all its items.");
|
|
|
|
|
c->Message(0, "#bot list [all/class(1-16)] - list your bots all or by class. Classes: 1(WAR), 2(CLR), 3(PAL), 4(RNG), 5(SHD), 6(DRU), 7(MNK), 8(BRD), 9(ROG), 10(SHM), 11(NEC), 12(WIZ), 13(MAG), 14(ENC), 15(BST), 16(BER)");
|
|
|
|
|
c->Message(0, "#bot list [all/class(1-16)] - list all of your bots or list by class. Classes: 1(WAR), 2(CLR), 3(PAL), 4(RNG), 5(SHD), 6(DRU), 7(MNK), 8(BRD), 9(ROG), 10(SHM), 11(NEC), 12(WIZ), 13(MAG), 14(ENC), 15(BST), 16(BER)");
|
|
|
|
|
c->Message(0, "#bot spawn [bot name] - spawn a bot from it's name (use list to see all the bots). ");
|
|
|
|
|
c->Message(0, "#bot inventory list - show the inventory (and the slots IDs) of the targeted bot.");
|
|
|
|
|
c->Message(0, "#bot inventory remove [slotid] - remove the item at the given slot in the inventory of the targeted bot.");
|
|
|
|
|
c->Message(0, "#bot update - you must type that command once you gain a level.");
|
|
|
|
|
c->Message(0, "#bot summon - It will summon your targeted bot to you.");
|
|
|
|
|
c->Message(0, "#bot ai mez - If you're grouped with an Enchanter, he will mez your target.");
|
|
|
|
|
c->Message(0, "#bot ai mez - If you're grouped with an Enchanter, he will mesmerize your target.");
|
|
|
|
|
c->Message(0, "#bot picklock - You must have a targeted Rogue bot in your group and be right on the door.");
|
|
|
|
|
c->Message(0, "#bot cure [poison|disease|curse|blindness] Cleric has most options");
|
|
|
|
|
c->Message(0, "#bot bindme - You must have a Cleric in your group to get Bind Affinity cast on you.");
|
|
|
|
|
c->Message(0, "#bot track - look at mobs in the zone (ranger has options)");
|
|
|
|
|
c->Message(0, "#bot track - look at mobs in the zone (Ranger has options)");
|
|
|
|
|
c->Message(0, "#bot target calm - attempts to pacify your target mob.");
|
|
|
|
|
c->Message(0, "#bot evac - transports your pc group to safe location in the current zone. bots are lost");
|
|
|
|
|
c->Message(0, "#bot resurrectme - Your bot Cleric will rez you.");
|
|
|
|
|
c->Message(0, "#bot corpse summon - Necromancers summon corpse.");
|
|
|
|
|
c->Message(0, "#bot evac - transports your group to safe location in the current zone (bots are lost)");
|
|
|
|
|
c->Message(0, "#bot resurrect - Your Cleric bot will resurrect your targeted player corpse.");
|
|
|
|
|
c->Message(0, "#bot corpse summon - Necromancers summon your targeted player's corpses.");
|
|
|
|
|
c->Message(0, "#bot lore - cast Identify on the item on your mouse pointer.");
|
|
|
|
|
c->Message(0, "#bot sow - Bot sow on you (Druid has options)");
|
|
|
|
|
c->Message(0, "#bot speed - Bots will cast Spirit of Wolf on you (Druid has options)");
|
|
|
|
|
c->Message(0, "#bot invis - Bot invisiblity (must have proper class in group)");
|
|
|
|
|
c->Message(0, "#bot levitate - Bot levitation (must have proper class in group)");
|
|
|
|
|
c->Message(0, "#bot resist - Bot resist buffs (must have proper class in group)");
|
|
|
|
|
c->Message(0, "#bot runeme - Enchanter Bot cast Rune spell on you");
|
|
|
|
|
c->Message(0, "#bot runeme - Enchanter bot casts Rune spell on you");
|
|
|
|
|
c->Message(0, "#bot shrink - Shaman or Beastlord will shrink target");
|
|
|
|
|
c->Message(0, "#bot endureb - Bot enduring breath (must have proper class in group)");
|
|
|
|
|
c->Message(0, "#bot charm - (must have proper class in group)");
|
|
|
|
|
c->Message(0, "#bot dire charm - (must have proper class in group)");
|
|
|
|
|
c->Message(0, "#bot pet remove - (remove pet before charm)");
|
|
|
|
|
c->Message(0, "#bot gate - you need a Druid or Wizard in your group)");
|
|
|
|
|
c->Message(0, "#bot gate - Druid or Wizard bot will cast gate.");
|
|
|
|
|
c->Message(0, "#bot archery - Toggle Archery Skilled bots between using a Bow or using Melee weapons.");
|
|
|
|
|
c->Message(0, "#bot magepet [earth|water|air|fire|monster] - Select the pet type you want your Mage bot to use.");
|
|
|
|
|
c->Message(0, "#bot setpet [earth|water|air|fire|monster] - Select the pet type you want your Magician bot to use.");
|
|
|
|
|
c->Message(0, "#bot giveitem - Gives your targeted bot the item you have on your cursor.");
|
|
|
|
|
c->Message(0, "#bot augmentitem - Allows you to augment items for other classes. You must have the Augmentation Sealer window filled.");
|
|
|
|
|
c->Message(0, "#bot augmentitem - Allows you to augment items for other classes. (You MUST have the Augmentation Sealer window filled)");
|
|
|
|
|
c->Message(0, "#bot camp - Tells your bot to camp out of the game.");
|
|
|
|
|
c->Message(0, "#bot group help - Displays the commands available to manage any BOTs in your group.");
|
|
|
|
|
c->Message(0, "#bot botgroup help - Displays the commands available to manage BOT ONLY groups.");
|
|
|
|
|
c->Message(0, "#bot group help - Displays the commands available to manage any bots in your group.");
|
|
|
|
|
c->Message(0, "#bot botgroup help - Displays the commands available to manage bot ONLY groups.");
|
|
|
|
|
c->Message(0, "#bot mana [<bot name or target> | all] - Displays a mana report for all your spawned bots.");
|
|
|
|
|
c->Message(0, "#bot setfollowdistance ### - sets target bots follow distance to ### (ie 30 or 250).");
|
|
|
|
|
c->Message(0, "#bot [hair|haircolor|beard|beardcolor|face|eyes|heritage|tattoo|details <value>] - Change your BOTs appearance.");
|
|
|
|
|
c->Message(0, "#bot [hair|haircolor|beard|beardcolor|face|eyes|heritage|tattoo|details <value>] - Change your bot's appearance.");
|
|
|
|
|
c->Message(0, "#bot armorcolor <slot> <red> <green> <blue> - #bot help armorcolor for info");
|
|
|
|
|
c->Message(0, "#bot taunt [on|off] - Turns taunt on/off for targeted bot");
|
|
|
|
|
c->Message(0, "#bot taunt [on|off] - Determines whether or not your targeted bot will taunt.");
|
|
|
|
|
c->Message(0, "#bot stance [name] [stance (id)|list] - Sets/lists stance for named bot (Passive = 0, Balanced = 1, Efficient = 2, Reactive = 3, Aggressive = 4, Burn = 5, BurnAE = 6)");
|
|
|
|
|
c->Message(0, "#bot groupmessages [on|off] [bot name|all] - Turns group messages on/off for named bot/all bots.");
|
|
|
|
|
c->Message(0, "#bot defensive [bot name] - Causes warrior or knight bot to use defensive discipline / buff.");
|
|
|
|
|
c->Message(0, "#bot defensive [bot name] - Causes Warrior, Shadow Knight, or Paladin bot to use their defensive discipline or buff.");
|
|
|
|
|
c->Message(0, "#bot healrotation help - Displays the commands available to manage BOT heal rotations.");
|
|
|
|
|
c->Message(0, "#bot pull [<bot name>] [target] - Bot Pulling Target NPC's");
|
|
|
|
|
c->Message(0, "#bot pull [<bot name>] [target] - Bot Pulling Target NPCs");
|
|
|
|
|
c->Message(0, "#bot setinspectmessage - Copies your inspect message to a targeted bot that you own");
|
|
|
|
|
c->Message(0, "#bot bardoutofcombat [on|off] - Determines wheter bard bots use out of combat songs.");
|
|
|
|
|
c->Message(0, "#bot bardoutofcombat [on|off] - Determines whether Bard bots use out of combat songs.");
|
|
|
|
|
c->Message(0, "#bot showhelm [on|off] - Determines whether or not your targeted bot's helmet will show. (Requires a respawn to take effect)");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -9083,6 +9084,13 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!strcasecmp(sep->arg[1], "spawn") ) {
|
|
|
|
|
if (RuleB(Bots, BotCharacterLevelEnabled)) {
|
|
|
|
|
if (c->GetLevel() < RuleI(Bots, BotCharacterLevel)) {
|
|
|
|
|
c->Message(0, "You are only level %d, you must be level %d to spawn a bot!", c->GetLevel(), RuleI(Bots, BotCharacterLevel));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint32 botId = GetBotIDByBotName(std::string(sep->arg[2]));
|
|
|
|
|
|
|
|
|
|
if(GetBotOwnerCharacterID(botId, &TempErrorMessage) != c->CharacterID()) {
|
|
|
|
|
@ -9588,7 +9596,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
Tracker->CastToBot()->BotGroupSay(Tracker->CastToBot(), "Tracking mobs nearby", c->GetName());
|
|
|
|
|
entity_list.ShowSpawnWindow(c, RangeD, false);
|
|
|
|
|
} else
|
|
|
|
|
Tracker->CastToBot()->BotGroupSay(Tracker->CastToBot(), "You want to [track all], [track near], or [track rare]?", c->GetName());
|
|
|
|
|
Tracker->CastToBot()->BotGroupSay(Tracker->CastToBot(), "Do you want to %s, %s, or %s?", Tracker->CastToBot()->CreateSayLink(c, "#bot track all", "track all").c_str(), Tracker->CastToBot()->CreateSayLink(c, "#bot track near", "track near").c_str(), Tracker->CastToBot()->CreateSayLink(c, "#bot track rare", "track rare").c_str());
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
case BARD:
|
|
|
|
|
@ -9658,7 +9666,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "poison") && (c->GetLevel() <= 1)) {
|
|
|
|
|
Curer->CastToBot()->BotGroupSay(Curer->CastToBot(), "I don't have the needed level yet", sep->arg[2]);
|
|
|
|
|
} else
|
|
|
|
|
Curer->CastToBot()->BotGroupSay(Curer->CastToBot(), "Do you want [cure poison], [cure disease], [cure curse], or [cure blindness]?", c->GetName());
|
|
|
|
|
Curer->CastToBot()->BotGroupSay(Curer->CastToBot(), "Do you want to cure %s, %s, %s, or %s?", Curer->CastToBot()->CreateSayLink(c, "#bot cure poison", "poison").c_str(), Curer->CastToBot()->CreateSayLink(c, "#bot cure disease", "disease").c_str(), Curer->CastToBot()->CreateSayLink(c, "#bot cure curse", "curse").c_str(), Curer->CastToBot()->CreateSayLink(c, "#bot cure blindness", "blindness").c_str());
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
case SHAMAN:
|
|
|
|
|
@ -9678,7 +9686,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "poison") && (c->GetLevel() <= 2)) {
|
|
|
|
|
Curer->CastToBot()->BotGroupSay(Curer->CastToBot(), "I don't have the needed level yet", sep->arg[2]);
|
|
|
|
|
} else
|
|
|
|
|
Curer->CastToBot()->BotGroupSay(Curer->CastToBot(), "Do you want [cure poison], [cure disease], or [cure blindness]?", c->GetName());
|
|
|
|
|
Curer->CastToBot()->BotGroupSay(Curer->CastToBot(), "Do you want to cure %s, %s, or %s?", Curer->CastToBot()->CreateSayLink(c, "#bot cure poison", "poison").c_str(), Curer->CastToBot()->CreateSayLink(c, "#bot cure disease", "disease").c_str(), Curer->CastToBot()->CreateSayLink(c, "#bot cure blindness", "blindness").c_str());
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
case DRUID:
|
|
|
|
|
@ -9696,7 +9704,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "poison") && (c->GetLevel() <= 5)) {
|
|
|
|
|
Curer->CastToBot()->BotGroupSay(Curer->CastToBot(), "I don't have the needed level yet", sep->arg[2]) ;
|
|
|
|
|
} else
|
|
|
|
|
Curer->CastToBot()->BotGroupSay(Curer->CastToBot(), "Do you want [cure poison], or [cure disease]?", c->GetName());
|
|
|
|
|
Curer->CastToBot()->BotGroupSay(Curer->CastToBot(), "Do you want to cure %s or %s?", Curer->CastToBot()->CreateSayLink(c, "#bot cure poison", "poison").c_str(), Curer->CastToBot()->CreateSayLink(c, "#bot cure disease", "disease").c_str());
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
c->Message(15, "You must have a Cleric, Shaman, or Druid in your group.");
|
|
|
|
|
@ -9780,9 +9788,9 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Resurrect
|
|
|
|
|
if(!strcasecmp(sep->arg[1], "resurrectme")) {
|
|
|
|
|
if(!strcasecmp(sep->arg[1], "resurrect")) {
|
|
|
|
|
Mob *target = c->GetTarget();
|
|
|
|
|
if(target == nullptr || !target->IsCorpse()) {
|
|
|
|
|
if(target == nullptr || !target->IsPlayerCorpse()) {
|
|
|
|
|
c->Message(15, "You must select a corpse!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
@ -9808,7 +9816,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!strcasecmp(sep->arg[1], "magepet")) {
|
|
|
|
|
if(!strcasecmp(sep->arg[1], "setpet")) {
|
|
|
|
|
if(c->GetTarget() && c->GetTarget()->IsBot() && (c->GetTarget()->GetClass() == MAGICIAN)) {
|
|
|
|
|
if(c->GetTarget()->CastToBot()->GetBotOwnerCharacterID() == c->CharacterID()) {
|
|
|
|
|
int botlevel = c->GetTarget()->GetLevel();
|
|
|
|
|
@ -10144,7 +10152,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Sow
|
|
|
|
|
if ((!strcasecmp(sep->arg[1], "sow")) && (c->IsGrouped())) {
|
|
|
|
|
if ((!strcasecmp(sep->arg[1], "speed")) && (c->IsGrouped())) {
|
|
|
|
|
Mob *Sower;
|
|
|
|
|
uint32 SowerClass = 0;
|
|
|
|
|
Group *g = c->GetGroup();
|
|
|
|
|
@ -10182,37 +10190,37 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
switch(SowerClass) {
|
|
|
|
|
case DRUID:
|
|
|
|
|
if ((!strcasecmp(sep->arg[2], "regular")) && (zone->CanCastOutdoor()) && (c->GetLevel() >= 10)) {
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Casting sow...");
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Casting Spirit of Wolf.");
|
|
|
|
|
Sower->CastSpell(278, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((!strcasecmp(sep->arg[2], "regular")) && (zone->CanCastOutdoor()) && (c->GetLevel() <= 10))
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I'm not level 10 yet.");
|
|
|
|
|
else if ((!strcasecmp(sep->arg[2], "wolf")) && zone->CanCastOutdoor() && (c->GetLevel() >= 20)) {
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Casting group wolf...");
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Casting group Spirit of Wolf.");
|
|
|
|
|
Sower->CastSpell(428, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((!strcasecmp(sep->arg[2], "wolf")) && (c->GetLevel() <= 20))
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I'm not level 20 yet.");
|
|
|
|
|
else if ((!strcasecmp(sep->arg[2], "feral")) && (c->GetLevel() >= 50)) {
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Casting Feral Pack...");
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Casting Feral Pack.");
|
|
|
|
|
Sower->CastSpell(4058, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((!strcasecmp(sep->arg[2], "feral")) && (c->GetLevel() <= 50))
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I'm not level 50 yet.");
|
|
|
|
|
else if ((!strcasecmp(sep->arg[2], "shrew")) && (c->GetLevel() >= 35)) {
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Casting Pack Shrew...");
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Casting Pack Shrew.");
|
|
|
|
|
Sower->CastSpell(4055, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((!strcasecmp(sep->arg[2], "wolf")) && (c->GetLevel() <= 35))
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I'm not level 35 yet.");
|
|
|
|
|
else if ((!zone->CanCastOutdoor()) && (!strcasecmp(sep->arg[2], "regular")) || (!zone->CanCastOutdoor()) && (!strcasecmp(sep->arg[2], "wolf")))
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I can't cast this spell indoors, try [sow shrew] if you're 35 or higher, or [sow feral] if you're 50 or higher.");
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I can't cast this spell indoors, try %s if you're 35 or higher, or %s if you're 50 or higher.", Sower->CastToBot()->CreateSayLink(c, "#bot speed shrew", "Pack Shrew").c_str(), Sower->CastToBot()->CreateSayLink(c, "#bot speed feral", "Feral Pack").c_str());
|
|
|
|
|
else if (!zone->CanCastOutdoor())
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I can't cast this spell indoors, try [sow shrew] if you're 35 or higher, or [sow feral] if you're 50 or higher.");
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I can't cast this spell indoors, try 5s if you're 35 or higher, or %s if you're 50 or higher.", Sower->CastToBot()->CreateSayLink(c, "#bot speed shrew", "Pack Shrew").c_str(), Sower->CastToBot()->CreateSayLink(c, "#bot speed feral", "Feral Pack").c_str());
|
|
|
|
|
else if (zone->CanCastOutdoor())
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Do you want [sow regular] or [sow wolf]?");
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "Do you want %s or %s?", Sower->CastToBot()->CreateSayLink(c, "#bot speed regular", "Spirit of Wolf").c_str(), Sower->CastToBot()->CreateSayLink(c, "#bot speed wolf", "Group Spirit of Wolf").c_str());
|
|
|
|
|
else if (!zone->CanCastOutdoor())
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I can't cast this spell indoors, try [sow shrew] if you're 35 or higher, or [sow feral] if you're 50 or higher.");
|
|
|
|
|
Sower->CastToBot()->BotGroupSay(Sower->CastToBot(), "I can't cast this spell indoors, try %s if you're 35 or higher, or %s if you're 50 or higher.", Sower->CastToBot()->CreateSayLink(c, "#bot speed shrew", "Pack Shrew").c_str(), Sower->CastToBot()->CreateSayLink(c, "#bot speed feral", "Feral").c_str());
|
|
|
|
|
break;
|
|
|
|
|
case SHAMAN:
|
|
|
|
|
if ((zone->CanCastOutdoor()) && (c->GetLevel() >= 9)) {
|
|
|
|
|
@ -10258,7 +10266,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
Group *g = c->GetGroup();
|
|
|
|
|
Mob *target = c->GetTarget();
|
|
|
|
|
if(target == nullptr || (!target->IsClient() && (c->GetTarget()->CastToBot()->GetBotOwner() != c)))
|
|
|
|
|
c->Message(15, "You must select a player or bot you own");
|
|
|
|
|
c->Message(15, "You must select a player or bot you own!");
|
|
|
|
|
|
|
|
|
|
else if(g) {
|
|
|
|
|
for(int i = 0; i < MAX_GROUP_MEMBERS; i++){
|
|
|
|
|
@ -10305,6 +10313,25 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
|
|
|
|
|
// Gate
|
|
|
|
|
if ((!strcasecmp(sep->arg[1], "gate")) && (c->IsGrouped())) {
|
|
|
|
|
const char* druidgate[25][4] = { { "#bot gate karana", "karana", "North Karana", "550" }, { "#bot gate commons", "commons", "West Commonlands", "551" },
|
|
|
|
|
{ "#bot gate tox", "tox", "Toxxulia Forest", "552" }, { "#bot gate butcher", "butcher", "Butcherblock Mountains", "553" }, { "#bot gate lava", "lava", "Lavastorm Mountains", "554" },
|
|
|
|
|
{ "#bot gate ro", "ro", "South Ro", "555" }, { "#bot gate feerott", "feerrott", "Feerrott", "556" }, { "#bot gate steamfont", "steamfont", "Steamfont Mountains", "557" },
|
|
|
|
|
{ "#bot gate misty", "misty", "Misty Thicket", "558" }, { "#bot gate wakening", "wakening", "Wakening Lands", "1398" }, { "#bot gate iceclad", "iceclad", "Ieclad Ocean", "1434" },
|
|
|
|
|
{ "#bot gate divide", "divide", "The Great Divide", "1438" }, { "#bot gate cobalt", "cobalt", "Cobalt Scar", "1440" }, { "#bot gate combines", "combines", "The Combines", "1517" },
|
|
|
|
|
{ "#bot gate surefall", "surefall", "Surefall Glade", "2020" }, { "#bot gate grimling", "grimling", "Grimling Forest", "2419" }, { "#bot gate twilight", "twilight", "The Twilight Sea", "2424" },
|
|
|
|
|
{ "#bot gate dawnshroud", "dawnshroud", "Dawnshroud Peak", "2429" }, { "#bot gate nexus", "nexus", "The Nexus", "2432" }, { "#bot gate pok", "pok", "Plane of Knowledge", "3184" },
|
|
|
|
|
{ "#bot gate stonebrunt", "stonebrunt", "Stonebrunt Mountains", "3792" }, { "#bot gate bloodfields", "bloodfields", "Bloodfields", "6184" },
|
|
|
|
|
{ "#bot gate emerald", "emerald", "The Emerald Jungle", "1737" }, { "#bot gate skyfire", "skyfire", "Skyfire Mountains", "1736" }, { "#bot gate slaughter", "slaughter", "Wall of Slaughter", "6179" } };
|
|
|
|
|
const char* wizardgate[24][4] = { { "#bot gate commons", "commons", "West Commonlands", "566" }, { "#bot gate fay", "fay", "Greater Faydark", "563" },
|
|
|
|
|
{ "#bot gate ro", "ro", "South Ro", "567" }, { "#bot gate tox", "tox", "Toxxulia Forest", "561" }, { "#bot gate nk", "nk", "North Karana", "562" },
|
|
|
|
|
{ "#bot gate nek", "nek", "Nektulos Forest", "564" }, { "#bot gate wakening", "wakening", "Wakening Lands", "1399" }, { "#bot gate iceclad", "iceclad", "Iceclad Ocean", "1418" },
|
|
|
|
|
{ "#bot gate divide", "divide", "The Great Divide", "1423" }, { "#bot gate cobalt", "cobalt", "Cobaltscar", "1425" }, { "#bot gate dreadlands", "dreadlands", "Dreadlands", "1516" },
|
|
|
|
|
{ "#bot gate wk", "wk", "West Karana", "568" }, { "#bot gate twilight", "twilight", "Twilight Sea", "2425" }, { "#bot gate dawnshroud", "dawnshroud", "Dawnshroud Peak", "2430" },
|
|
|
|
|
{ "#bot gate nexus", "nexus", "Nexus", "2944" }, { "#bot gate pok", "pok", "Plane of Knowledge", "3180" }, { "#bot gate wos", "wos", "Wall of Slaughter", "6178" },
|
|
|
|
|
{ "#bot gate grimling", "grimling", "Grimling Forest", "2420" }, { "#bot gate emerald", "emerald", "Emerald Jungle", "1739" }, { "#bot gate hateplane", "hateplane", "Plane of Hate", "666" },
|
|
|
|
|
{ "#bot gate airplane", "airplane", "Plane of Sky", "674" }, { "#bot gate skyfire", "skyfire", "Skyfire Mountains", "1738" },
|
|
|
|
|
{ "#bot gate bloodfields", "bloodfields", "Bloodfields", "6183" }, { "#bot gate stonebrunt", "stonebrunt", "Stonebrunt Mountains", "3793" } };
|
|
|
|
|
bool valid = false;
|
|
|
|
|
Mob *Gater;
|
|
|
|
|
uint32 GaterClass = 0;
|
|
|
|
|
Group *g = c->GetGroup();
|
|
|
|
|
@ -10328,212 +10355,36 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
switch(GaterClass) {
|
|
|
|
|
case DRUID:
|
|
|
|
|
if ((!strcasecmp(sep->arg[2], "karana")) && (c->GetLevel() >= 25) ) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Karana.");
|
|
|
|
|
Gater->CastSpell(550, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "commons")) && (c->GetLevel() >= 27)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Commons.");
|
|
|
|
|
Gater->CastSpell(551, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "tox")) && (c->GetLevel() >= 25)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Toxxulia.");
|
|
|
|
|
Gater->CastSpell(552, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "butcher")) && (c->GetLevel() >= 25)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Butcherblock.");
|
|
|
|
|
Gater->CastSpell(553, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "lava")) && (c->GetLevel() >= 30)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Lavastorm.");
|
|
|
|
|
Gater->CastSpell(554, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "ro")) && (c->GetLevel() >= 32)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Ro.");
|
|
|
|
|
Gater->CastSpell(555, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "feerrott")) && (c->GetLevel() >= 32)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Feerrott.");
|
|
|
|
|
Gater->CastSpell(556, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "steamfont")) && (c->GetLevel() >= 31)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Steamfont.");
|
|
|
|
|
Gater->CastSpell(557, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "misty")) && (c->GetLevel() >= 36)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Misty.");
|
|
|
|
|
Gater->CastSpell(558, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "wakening")) && (c->GetLevel() >= 40)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Wakening Lands.");
|
|
|
|
|
Gater->CastSpell(1398, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "iceclad")) && (c->GetLevel() >= 32)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Iceclad Ocean.");
|
|
|
|
|
Gater->CastSpell(1434, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "divide")) && (c->GetLevel() >= 36)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of The Great Divide.");
|
|
|
|
|
Gater->CastSpell(1438, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "cobalt")) && (c->GetLevel() >= 42)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Cobalt Scar.");
|
|
|
|
|
Gater->CastSpell(1440, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "combines")) && (c->GetLevel() >= 33)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of The Combines.");
|
|
|
|
|
Gater->CastSpell(1517, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "surefall")) && (c->GetLevel() >= 26)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Surefall Glade.");
|
|
|
|
|
Gater->CastSpell(2020, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "grimling")) && (c->GetLevel() >= 29)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Grimling Forest.");
|
|
|
|
|
Gater->CastSpell(2419, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "twilight")) && (c->GetLevel() >= 33)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Twilight.");
|
|
|
|
|
Gater->CastSpell(2424, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "dawnshroud")) && (c->GetLevel() >= 37)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Dawnshroud.");
|
|
|
|
|
Gater->CastSpell(2429, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "nexus")) && (c->GetLevel() >= 26)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of The Nexus.");
|
|
|
|
|
Gater->CastSpell(2432, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "pok")) && (c->GetLevel() >= 38)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Knowledge.");
|
|
|
|
|
Gater->CastSpell(3184, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "stonebrunt")) && (c->GetLevel() >= 28)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Stonebrunt Mountains.");
|
|
|
|
|
Gater->CastSpell(3792, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "bloodfields")) && (c->GetLevel() >= 55)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Bloodfields.");
|
|
|
|
|
Gater->CastSpell(6184, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "emerald")) && (c->GetLevel() >= 39)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Wind of the South.");
|
|
|
|
|
Gater->CastSpell(1737, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "skyfire")) && (c->GetLevel() >= 44)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Wind of the North.");
|
|
|
|
|
Gater->CastSpell(1736, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "slaughter")) && (c->GetLevel() >= 64)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Circle of Slaughter.");
|
|
|
|
|
Gater->CastSpell(6179, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "karana")
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "tox")
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "butcher") && (c->GetLevel() <= 25))
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "commons") && (c->GetLevel() <= 27)
|
|
|
|
|
|| (!strcasecmp(sep->arg[2], "ro")
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "feerrott") && (c->GetLevel() <= 32))
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "steamfont") && (c->GetLevel() <= 31)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "misty") && (c->GetLevel() <= 36)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "lava") && (c->GetLevel() <= 30)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "wakening") && (c->GetLevel() <= 40)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "iceclad") && (c->GetLevel() <= 32)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "divide") && (c->GetLevel() <= 38)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "cobalt") && (c->GetLevel() <= 42)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "combines") && (c->GetLevel() <= 33)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "surefall") && (c->GetLevel() <= 26)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "grimling") && (c->GetLevel() <= 29)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "twilight") && (c->GetLevel() <= 33)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "dawnshroud") && (c->GetLevel() <= 37)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "nexus") && (c->GetLevel() <= 26)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "pok") && (c->GetLevel() <= 38)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "stonebrunt") && (c->GetLevel() <= 28)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "bloodfields") && (c->GetLevel() <= 55)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "emerald") && (c->GetLevel() <= 38)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "skyfire") && (c->GetLevel() <= 43)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "wos") && (c->GetLevel() <= 64)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "I don't have the needed level yet.");
|
|
|
|
|
} else
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "With the proper level I can [gate] to [karana], [commons], [tox], [butcher], [lava], [ro], [feerrott], [steamfont], [misty], [wakening], [iceclad], [divide], [cobalt], [combines], [surefall], [grimling], [twilight], [dawnshroud], [nexus], [pok], [stonebrunt], [bloodfields], [emerald], [skyfire] or [wos].");
|
|
|
|
|
case DRUID: {
|
|
|
|
|
for (int i = 0; i < 25; i++) {
|
|
|
|
|
if (!strcasecmp(sep->arg[2], druidgate[i][1])) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Gating to %s!", druidgate[i][2]);
|
|
|
|
|
Gater->CastSpell(atoi(druidgate[i][3]), c->GetID(), 1, -1, -1);
|
|
|
|
|
valid = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!valid) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "With the proper level I can gate you to all of the following zones:");
|
|
|
|
|
for (int i = 0; i < 25; i++)
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "%s", Gater->CastToBot()->CreateSayLink(c, druidgate[i][0], druidgate[i][2]).c_str());
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case WIZARD:
|
|
|
|
|
if ((!strcasecmp(sep->arg[2], "commons")) && (c->GetLevel() >= 35) ) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Common Portal.");
|
|
|
|
|
Gater->CastSpell(566, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "fay")) && (c->GetLevel() >= 27)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Fay Portal.");
|
|
|
|
|
Gater->CastSpell(563, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "ro")) && (c->GetLevel() >= 37)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Ro Portal.");
|
|
|
|
|
Gater->CastSpell(567, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "tox")) && (c->GetLevel() >= 25)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Toxxulia Portal.");
|
|
|
|
|
Gater->CastSpell(561, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "nk")) && (c->GetLevel() >= 27)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting North Karana Portal.");
|
|
|
|
|
Gater->CastSpell(562, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "nek")) && (c->GetLevel() >= 32)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Nektulos Portal.");
|
|
|
|
|
Gater->CastSpell(564, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "wakening")) && (c->GetLevel() >= 43)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Wakening Lands Portal.");
|
|
|
|
|
Gater->CastSpell(1399, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "iceclad")) && (c->GetLevel() >= 33)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Iceclad Ocean Portal.");
|
|
|
|
|
Gater->CastSpell(1418, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "divide")) && (c->GetLevel() >= 36)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Great Divide Portal.");
|
|
|
|
|
Gater->CastSpell(1423, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "cobalt")) && (c->GetLevel() >= 43)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Cobalt Scar Portal.");
|
|
|
|
|
Gater->CastSpell(1425, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "combines")) && (c->GetLevel() >= 34)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Combines Portal.");
|
|
|
|
|
Gater->CastSpell(1516, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "wk")) && (c->GetLevel() >= 27)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting West Karana Portal.");
|
|
|
|
|
Gater->CastSpell(568, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "twilight")) && (c->GetLevel() >= 27)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Twilight Portal.");
|
|
|
|
|
Gater->CastSpell(2425, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "dawnshroud")) && (c->GetLevel() >= 27)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Dawnshroud Portal.");
|
|
|
|
|
Gater->CastSpell(2430, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "nexus")) && (c->GetLevel() >= 29)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Nexus Portal.");
|
|
|
|
|
Gater->CastSpell(2944, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "pok")) && (c->GetLevel() >= 27)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Plane of Knowledge Portal.");
|
|
|
|
|
Gater->CastSpell(3180, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "wos")) && (c->GetLevel() >= 27)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Wall of Slaughter Portal.");
|
|
|
|
|
Gater->CastSpell(6178, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "grimling")) && (c->GetLevel() >= 29)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Fay Portal.");
|
|
|
|
|
Gater->CastSpell(2420, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "emerald")) && (c->GetLevel() >= 37)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Porting to Emerald Jungle.");
|
|
|
|
|
Gater->CastSpell(1739, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "hateplane")) && (c->GetLevel() >= 39)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Porting to Hate Plane.");
|
|
|
|
|
Gater->CastSpell(666, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "airplane")) && (c->GetLevel() >= 39)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Porting to Airplane.");
|
|
|
|
|
Gater->CastSpell(674, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "skyfire")) && (c->GetLevel() >= 36)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Porting to Skyfire.");
|
|
|
|
|
Gater->CastSpell(1738, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "bloodfields")) && (c->GetLevel() >= 55)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Bloodfields Portal.");
|
|
|
|
|
Gater->CastSpell(6183, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "stonebrunt")) && (c->GetLevel() >= 27)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Casting Stonebrunt Portal.");
|
|
|
|
|
Gater->CastSpell(3793, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!strcasecmp(sep->arg[2], "commons") && (c->GetLevel() <= 35))
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "fay") && (c->GetLevel() <= 27)
|
|
|
|
|
|| (!strcasecmp(sep->arg[2], "ro") && (c->GetLevel() <= 37))
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "tox") && (c->GetLevel() <= 25)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "nk") && (c->GetLevel() <= 25)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "nek") && (c->GetLevel() <= 32)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "wakening") && (c->GetLevel() <= 43)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "iceclad") && (c->GetLevel() <= 33)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "divide") && (c->GetLevel() <= 36)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "cobalt") && (c->GetLevel() <= 43)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "combines") && (c->GetLevel() <= 34)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "wk") && (c->GetLevel() <= 37)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "twilight") && (c->GetLevel() <= 33)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "dawnshroud") && (c->GetLevel() <= 39)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "nexus") && (c->GetLevel() <= 29)
|
|
|
|
|
|| (!strcasecmp(sep->arg[2], "pok")
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "hateplane")
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "airplane") && (c->GetLevel() <= 38))
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "grimling") && (c->GetLevel() <= 29)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "bloodfields") && (c->GetLevel() <= 55)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "stonebrunt") && (c->GetLevel() <= 27)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "emerald") && (c->GetLevel() <= 36)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "skyfire") && (c->GetLevel() <= 36)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "wos") && (c->GetLevel() <= 64)) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "I don't have the needed level yet.");
|
|
|
|
|
} else
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "With the proper level I can [gate] to [commons], [fay], [ro], [tox], [nk], [wakening], [iceclad], [divide], [cobalt], [combines], [wk], [grimling], [twilight], [dawnshroud], [nexus], [pok], [stonebrunt], [bloodfields], [emerald], [skyfire], [hateplane], [airplane] or [wos].", c->GetName());
|
|
|
|
|
}
|
|
|
|
|
case WIZARD: {
|
|
|
|
|
for (int i = 0; i < 24; i++) {
|
|
|
|
|
if (!strcasecmp(sep->arg[2], wizardgate[i][1])) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "Gating to %s!", wizardgate[i][2]);
|
|
|
|
|
Gater->CastSpell(atoi(wizardgate[i][3]), c->GetID(), 1, -1, -1);
|
|
|
|
|
valid = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!valid) {
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "With the proper level I can gate you to all of the following zones:");
|
|
|
|
|
for (int i = 0; i < 24; i++)
|
|
|
|
|
Gater->CastToBot()->BotGroupSay(Gater->CastToBot(), "%s", Gater->CastToBot()->CreateSayLink(c, wizardgate[i][0], wizardgate[i][2]).c_str());
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
c->Message(15, "You must have a Druid or Wizard in your group.");
|
|
|
|
|
break;
|
|
|
|
|
@ -10680,25 +10531,25 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
if ((c->GetLevel() <= 14) && (!strcasecmp(sep->arg[2], "undead")))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I'm not level 14 yet.");
|
|
|
|
|
else if ((!c->IsInvisible(c)) && (!c->invisible_undead) && (c->GetLevel() >= 14) && (!strcasecmp(sep->arg[2], "undead"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting invis undead.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting Invisibility vs. Undead.");
|
|
|
|
|
Inviser->CastSpell(235, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->GetLevel() <= 4) && (!strcasecmp(sep->arg[2], "live")))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I'm not level 4 yet.");
|
|
|
|
|
else if ((!c->IsInvisible(c))&& (!c->invisible_undead) && (c->GetLevel() >= 4) && (!strcasecmp(sep->arg[2], "live"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting invisibilty.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting Invisibilty.");
|
|
|
|
|
Inviser->CastSpell(42, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->GetLevel() <= 6) && (!strcasecmp(sep->arg[2], "see")))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I'm not level 6 yet.");
|
|
|
|
|
else if ((c->GetLevel() >= 6) && (!strcasecmp(sep->arg[2], "see"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting see invisible.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting See Invisibility.");
|
|
|
|
|
Inviser->CastSpell(80, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->IsInvisible(c)) || (c->invisible_undead))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I can't cast this if you're already invis-buffed.");
|
|
|
|
|
else
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Do you want [invis undead], [invis live] or [invis see]?");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Do you want %s, %s, or %s?", Inviser->CastToBot()->CreateSayLink(c, "#bot invis live", "Invisibility").c_str(), Inviser->CastToBot()->CreateSayLink(c, "#bot invis undead", "Invisibility vs. Undead").c_str(), Inviser->CastToBot()->CreateSayLink(c, "#bot invis see", "See Invisibility").c_str());
|
|
|
|
|
break;
|
|
|
|
|
case MAGICIAN:
|
|
|
|
|
if (!strcasecmp(sep->arg[2], "undead"))
|
|
|
|
|
@ -10706,47 +10557,47 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
else if ((c->GetLevel() <= 8) && (!strcasecmp(sep->arg[2], "live")))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I'm not level 8 yet.");
|
|
|
|
|
else if ((!c->IsInvisible(c))&& (!c->invisible_undead) && (c->GetLevel() >= 8) && (!strcasecmp(sep->arg[2], "live"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting invisibilty.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting Invisibilty.");
|
|
|
|
|
Inviser->CastSpell(42, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->GetLevel() <= 16) && (!strcasecmp(sep->arg[2], "see")))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I'm not level 16 yet.");
|
|
|
|
|
else if ((c->GetLevel() >= 16) && (!strcasecmp(sep->arg[2], "see"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting see invisible.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting See Invisibility.");
|
|
|
|
|
Inviser->CastSpell(80, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->IsInvisible(c)) || (c->invisible_undead))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I can't cast this if you're already invis-buffed.");
|
|
|
|
|
else
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Do you want [invis live] or [invis see]?");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Do you want %s or %s?", Inviser->CastToBot()->CreateSayLink(c, "#bot invis live", "Invisibility").c_str(), Inviser->CastToBot()->CreateSayLink(c, "#bot invis see", "see Invisibility").c_str());
|
|
|
|
|
break;
|
|
|
|
|
case WIZARD:
|
|
|
|
|
if ((c->GetLevel() <= 39) && (!strcasecmp(sep->arg[2], "undead")))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I'm not level 39 yet.");
|
|
|
|
|
else if ((!c->IsInvisible(c))&& (!c->invisible_undead) && (c->GetLevel() >= 39) && (!strcasecmp(sep->arg[2], "undead"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting invis undead.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting Invisibility vs. Undead.");
|
|
|
|
|
Inviser->CastSpell(235, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->GetLevel() <= 16) && (!strcasecmp(sep->arg[2], "live")))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I'm not level 16 yet.");
|
|
|
|
|
else if ((!c->IsInvisible(c))&& (!c->invisible_undead) && (c->GetLevel() >= 16) && (!strcasecmp(sep->arg[2], "live"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting invisibilty.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting Invisibilty.");
|
|
|
|
|
Inviser->CastSpell(42, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->GetLevel() <= 4) && (!strcasecmp(sep->arg[2], "see")))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I'm not level 6 yet.");
|
|
|
|
|
else if ((c->GetLevel() >= 4) && (!strcasecmp(sep->arg[2], "see"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting see invisible.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting See Invisibility.");
|
|
|
|
|
Inviser->CastSpell(80, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->IsInvisible(c)) || (c->invisible_undead))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I can't cast this if you're already invis-buffed.");
|
|
|
|
|
else
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Do you want [invis undead], [invis live] or [invis see]?");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Do you want %s, %s, or %s?", Inviser->CastToBot()->CreateSayLink(c, "#bot invis undead", "Invisibility vs. Undead").c_str(), Inviser->CastToBot()->CreateSayLink(c, "#bot invis live", "Invisibility").c_str(), Inviser->CastToBot()->CreateSayLink(c, "#bot invis see", "See Invisibility").c_str());
|
|
|
|
|
break;
|
|
|
|
|
case NECROMANCER:
|
|
|
|
|
if ((!c->IsInvisible(c))&& (!c->invisible_undead) && (!strcasecmp(sep->arg[2], "undead"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting invis undead.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting Invisibility vs. Undead.");
|
|
|
|
|
Inviser->CastSpell(235, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if (!strcasecmp(sep->arg[2], "see"))
|
|
|
|
|
@ -10756,7 +10607,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
else if ((c->IsInvisible(c))|| (c->invisible_undead))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I can't cast this if you're already invis-buffed.");
|
|
|
|
|
else
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I only have [invis undead]");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I only have %s.", Inviser->CastToBot()->CreateSayLink(c, "#bot invis undead", "Invisibility vs. Undead").c_str());
|
|
|
|
|
break;
|
|
|
|
|
case DRUID:
|
|
|
|
|
if (!strcasecmp(sep->arg[2], "undead"))
|
|
|
|
|
@ -10767,7 +10618,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting Superior Camouflage.");
|
|
|
|
|
Inviser->CastSpell(34, c->GetID(), 1, -1, -1);
|
|
|
|
|
} else if ((!c->IsInvisible(c))&& (!c->invisible_undead) && (c->GetLevel() >= 4) && (!strcasecmp(sep->arg[2], "live")) && (zone->CanCastOutdoor())) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting Camouflage...");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting Camouflage.");
|
|
|
|
|
Inviser->CastSpell(247, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->GetLevel() >= 4) && (!strcasecmp(sep->arg[2], "live")) && (!zone->CanCastOutdoor()))
|
|
|
|
|
@ -10775,13 +10626,13 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
else if ((c->GetLevel() <= 13) && (!strcasecmp(sep->arg[2], "see")))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I'm not level 13 yet.");
|
|
|
|
|
else if ((c->GetLevel() >= 13) && (!strcasecmp(sep->arg[2], "see"))) {
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting see invisible.");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Casting See Invisibility.");
|
|
|
|
|
Inviser->CastSpell(80, c->GetID(), 1, -1, -1);
|
|
|
|
|
}
|
|
|
|
|
else if ((c->IsInvisible(c)) || (c->invisible_undead))
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "I can't cast this if you're already invis-buffed.");
|
|
|
|
|
else
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Do you want [invis live] or [invis see]?");
|
|
|
|
|
Inviser->CastToBot()->BotGroupSay(Inviser->CastToBot(), "Do you want %s or %s?", Inviser->CastToBot()->CreateSayLink(c, "#bot invis live", "Invisibility").c_str(), Inviser->CastToBot()->CreateSayLink(c, "#bot invis see", "See Invisibility").c_str());
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
c->Message(15, "You must have a Enchanter, Magician, Wizard, Druid, or Necromancer in your group.");
|
|
|
|
|
@ -10908,19 +10759,19 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
switch(ResisterClass) {
|
|
|
|
|
case CLERIC:
|
|
|
|
|
if(!strcasecmp(sep->arg[2], "poison") && (c->GetLevel() >= 6)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting poison protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Poison protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(1, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "disease") && (c->GetLevel() >= 11)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting disease protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Disease protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(2, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "fire") && (c->GetLevel() >= 8)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting fire protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Fire protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(3, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "cold") && (c->GetLevel() >= 13)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting cold protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Cold protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(4, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "magic") && (c->GetLevel() >= 16)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting magic protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Magic protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(5, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "magic") && (c->GetLevel() <= 16)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "cold") && (c->GetLevel() <= 13)
|
|
|
|
|
@ -10929,24 +10780,24 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "poison") && (c->GetLevel() <= 6)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "I don't have the required level yet.");
|
|
|
|
|
} else
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Do you want [resist poison], [resist disease], [resist fire], [resist cold], or [resist magic]?");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Do you want %s, %s, %s, %s, or %s?", Resister->CastToBot()->CreateSayLink(c, "#bot resist poison", "Resist Poison").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot resist disease", "Resist Disease").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot invis fire", "Resist Fire").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot invis cold", "Resist Cold").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot invis magic", "Resist Magic").c_str());
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
case SHAMAN:
|
|
|
|
|
if(!strcasecmp(sep->arg[2], "poison") && (c->GetLevel() >= 20)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting poison protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Poison protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(12, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "disease") && (c->GetLevel() >= 8)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting disease protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Disease protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(13, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "fire") && (c->GetLevel() >= 5)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting fire protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Fire protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(14, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "cold") && (c->GetLevel() >= 1)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting cold protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Cold protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(15, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "magic") && (c->GetLevel() >= 19)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting magic protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Magic protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(16, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "magic") && (c->GetLevel() <= 19)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "cold") && (c->GetLevel() <= 1)
|
|
|
|
|
@ -10955,24 +10806,24 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "poison") && (c->GetLevel() <= 20)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "I don't have the needed level yet.");
|
|
|
|
|
} else
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Do you want [resist poison], [resist disease], [resist fire], [resist cold], or [resist magic]?");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Do you want %s, %s, %s, %s, or %s?", Resister->CastToBot()->CreateSayLink(c, "#bot resist poison", "Resist Poison").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot resist disease", "Resist Disease").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot invis fire", "Resist Fire").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot invis cold", "Resist Cold").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot invis magic", "Resist Magic").c_str());
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
case DRUID:
|
|
|
|
|
if (!strcasecmp(sep->arg[2], "poison") && (c->GetLevel() >= 19)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting poison protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Poison protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(7, Resister->GetLevel());
|
|
|
|
|
} else if (!strcasecmp(sep->arg[2], "disease") && (c->GetLevel() >= 19)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting disease protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Disease protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(8, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "fire")) { // Fire level 1
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting fire protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Fire protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(9, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "cold") && (c->GetLevel() >= 13)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting cold protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Cold protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(10, Resister->GetLevel());
|
|
|
|
|
} else if(!strcasecmp(sep->arg[2], "magic") && (c->GetLevel() >= 16)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting magic protection.");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Casting Magic protection.");
|
|
|
|
|
Resister->CastToBot()->Bot_Command_Resist(11, Resister->GetLevel());
|
|
|
|
|
} else if (!strcasecmp(sep->arg[2], "magic") && (c->GetLevel() <= 16)
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "cold") && (c->GetLevel() <= 9)
|
|
|
|
|
@ -10980,7 +10831,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
|| !strcasecmp(sep->arg[2], "poison") && (c->GetLevel() <= 19)) {
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "I don't have the required level yet.") ;
|
|
|
|
|
} else
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Do you want [resist poison], [resist disease], [resist fire], [resist cold], or [resist magic]?");
|
|
|
|
|
Resister->CastToBot()->BotGroupSay(Resister->CastToBot(), "Do you want %s, %s, %s, %s, or %s?", Resister->CastToBot()->CreateSayLink(c, "#bot resist poison", "Resist Poison").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot resist disease", "Resist Disease").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot invis fire", "Resist Fire").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot invis cold", "Resist Cold").c_str(), Resister->CastToBot()->CreateSayLink(c, "#bot invis magic", "Resist Magic").c_str());
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
c->Message(15, "You must have a Cleric, Shaman, or Druid in your group.");
|
|
|
|
|
@ -11053,7 +10904,8 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
botGroupLeader->BotGroupSay(botGroupLeader, "I am prepared to lead.");
|
|
|
|
|
else
|
|
|
|
|
botGroupLeader->BotGroupSay(botGroupLeader, "I cannot lead.");
|
|
|
|
|
} else
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
c->Message(13, "You must target a spawned bot first.");
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
@ -11108,16 +10960,19 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
if(Bot::AddBotToGroup(botGroupMember, g)) {
|
|
|
|
|
database.SetGroupID(botGroupMember->GetName(), g->GetID(), botGroupMember->GetBotID());
|
|
|
|
|
botGroupMember->BotGroupSay(botGroupMember, "I have joined %s\'s group.", botGroupLeader->GetName());
|
|
|
|
|
} else
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
botGroupMember->BotGroupSay(botGroupMember, "I can not join %s\'s group.", botGroupLeader->GetName());
|
|
|
|
|
} else {
|
|
|
|
|
Group* tempGroup = botGroupMember->GetGroup();
|
|
|
|
|
if(tempGroup)
|
|
|
|
|
botGroupMember->BotGroupSay(botGroupMember, "I can not join %s\'s group. I am already a member in %s\'s group.", botGroupLeader->GetName(), tempGroup->GetLeaderName());
|
|
|
|
|
}
|
|
|
|
|
} else
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
c->Message(13, "You must target a spawned bot first.");
|
|
|
|
|
} else
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
botGroupLeader->BotGroupSay(botGroupMember, "I have no more openings in my group, %s.", c->GetName());
|
|
|
|
|
} else {
|
|
|
|
|
Group* tempGroup = botGroupLeader->GetGroup();
|
|
|
|
|
@ -11148,9 +11003,11 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
|
|
|
|
|
botGroupMember->BotGroupSay(botGroupMember, "I am no longer in a group.");
|
|
|
|
|
else
|
|
|
|
|
botGroupMember->BotGroupSay(botGroupMember, "I can not leave %s\'s group.", g->GetLeaderName());
|
|
|
|
|
} else
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
botGroupMember->BotGroupSay(botGroupMember, "I am not in a group.");
|
|
|
|
|
} else
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
c->Message(13, "You must target a spawned bot first.");
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
@ -13350,4 +13207,45 @@ void Bot::BotHealRotationsClear(Client* c) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::string Bot::CreateSayLink(Client* c, const char* message, const char* name) {
|
|
|
|
|
int sayid = 0;
|
|
|
|
|
int sz = strlen(message);
|
|
|
|
|
char *escaped_string = new char[sz * 2];
|
|
|
|
|
database.DoEscapeString(escaped_string, message, sz);
|
|
|
|
|
std::string query = StringFormat("SELECT `id` FROM `saylink` WHERE `phrase` = '%s'", escaped_string);
|
|
|
|
|
auto results = database.QueryDatabase(query);
|
|
|
|
|
if (results.Success()) {
|
|
|
|
|
if (results.RowCount() >= 1) {
|
|
|
|
|
for (auto row = results.begin();row != results.end(); ++row)
|
|
|
|
|
sayid = atoi(row[0]);
|
|
|
|
|
} else {
|
|
|
|
|
std::string insert_query = StringFormat("INSERT INTO `saylink` (`phrase`) VALUES ('%s')", escaped_string);
|
|
|
|
|
results = database.QueryDatabase(insert_query);
|
|
|
|
|
if (!results.Success()) {
|
|
|
|
|
Log.Out(Logs::General, Logs::Error, "Error in saylink phrase queries", results.ErrorMessage().c_str());
|
|
|
|
|
} else {
|
|
|
|
|
results = database.QueryDatabase(query);
|
|
|
|
|
if (results.Success()) {
|
|
|
|
|
if (results.RowCount() >= 1)
|
|
|
|
|
for(auto row = results.begin(); row != results.end(); ++row)
|
|
|
|
|
sayid = atoi(row[0]);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
Log.Out(Logs::General, Logs::Error, "Error in saylink phrase queries", results.ErrorMessage().c_str());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
safe_delete_array(escaped_string);
|
|
|
|
|
|
|
|
|
|
sayid += 500000;
|
|
|
|
|
|
|
|
|
|
Client::TextLink linker;
|
|
|
|
|
linker.SetLinkType(linker.linkItemData);
|
|
|
|
|
linker.SetProxyItemID(sayid);
|
|
|
|
|
linker.SetProxyText(name);
|
|
|
|
|
|
|
|
|
|
auto say_link = linker.GenerateLink();
|
|
|
|
|
return say_link;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|