Bots- added out of combat bard songs & #bot bardoutofcombat on|off command to turn them on/off.

This commit is contained in:
badcaptain 2013-10-12 00:47:15 -04:00
parent 8ac4845930
commit 809925dc3e
5 changed files with 58 additions and 1 deletions

View File

@ -2,6 +2,7 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50)
-------------------------------------------------------
== 10/11/2013 ==
Bad_Captain: Fixed merc crash issue by updating special_abilities & vwMercNpcTypes (Sorvani).
Bad_Captain: Bots- added out of combat bard songs & #bot bardoutofcombat on|off command to turn them on/off.
JJ: (demonstar55) Allow use of Go Home button when Tutorial still selected in RoF.
== 10/10/2013 ==

View File

@ -0,0 +1,18 @@
UPDATE `npc_spells_entries` SET `type` = 1024 WHERE `npc_spells_id` = 711 and `type` = 8;
REPLACE INTO `npc_spells_entries` (`npc_spells_id`, `spellid`, `type`, `minlevel`, `maxlevel`, `priority`) VALUES
(711, 717, 8, 5, 24, 1),
(711, 4395, 8, 25, 255, 2),
(711, 2605, 8, 49, 255, 1),
(711, 735, 8, 24, 64, 3),
(711, 2602, 8, 15, 64, 3),
(711, 1765, 8, 59, 255, 3),
(711, 2603, 8, 30, 64, 3);
-- 717 - "Selo's Accelerando"
-- 4395 - "Selo's Rhythm of Speed" (indoor usable)
-- 2605 - "Selo's Accelerating Chorus"
-- 735 - "Lyssa's Veracious Concord"
-- 2602 - "Song of Sustenance"
-- 1765 - "Solon's Charismatic Concord"
-- 2603 - "Amplification"

View File

@ -66,6 +66,7 @@ Bot::Bot(NPCType npcTypeData, Client* botOwner) : NPC(&npcTypeData, 0, 0, 0, 0,
SetHealRotationNextHealTime(0);
SetHealRotationTimer(0);
SetNumHealRotationMembers(0);
SetBardUseOutOfCombatSongs(GetClass() == BARD);
CalcChanceToCast();
rest_timer.Disable();
@ -11691,6 +11692,7 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
// c->Message(0, "#bot illusion <bot/client name or target> - Enchanter Bot cast an illusion buff spell on you or your target.");
c->Message(0, "#bot pull [<bot name>] [target] - Bot Pulling Target NPC's");
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.");
return;
}
@ -15980,6 +15982,39 @@ void Bot::ProcessBotCommands(Client *c, const Seperator *sep) {
}
}
}
if(!strcasecmp(sep->arg[1], "bardoutofcombat")) {
bool useOutOfCombatSongs = false;
if(sep->arg[2] && sep->arg[3]){
if(!strcasecmp(sep->arg[2], "on"))
useOutOfCombatSongs = true;
else if (!strcasecmp(sep->arg[2], "off"))
useOutOfCombatSongs = false;
else {
c->Message(0, "Usage #bot bardoutofcombat [on|off]");
return;
}
Mob *target = c->GetTarget();
if(target->IsBot() && (c == target->GetOwner()->CastToClient())) {
Bot* bardBot = target->CastToBot();
if(bardBot) {
bardBot->SetBardUseOutOfCombatSongs(useOutOfCombatSongs);
c->Message(0, "Bard use of out of combat songs updated.");
}
}
else {
c->Message(0, "Your target must be a bot that you own.");
}
}
else {
c->Message(0, "Usage #bot bardoutofcombat [on|off]");
}
return;
}
}
// franck: EQoffline

View File

@ -464,6 +464,7 @@ public:
uint8 GetNumHealRotationMembers () { return _numHealRotationMembers; }
uint32 GetHealRotationNextHealTime() { return _healRotationNextHeal; }
uint32 GetHealRotationTimer () { return _healRotationTimer; }
bool GetBardUseOutOfCombatSongs() { return _bardUseOutOfCombatSongs;}
inline virtual int16 GetAC() const { return AC; }
inline virtual int16 GetSTR() const { return STR; }
inline virtual int16 GetSTA() const { return STA; }
@ -548,6 +549,7 @@ public:
void SetHealRotationNextHealTime( uint32 nextHealTime ) { _healRotationNextHeal = nextHealTime; }
void SetHealRotationTimer( uint32 timer ) { _healRotationTimer = timer; }
void SetNumHealRotationMembers( uint8 numMembers ) { _numHealRotationMembers = numMembers; }
void SetBardUseOutOfCombatSongs(bool useOutOfCombatSongs) { _bardUseOutOfCombatSongs = useOutOfCombatSongs;}
// Class Destructors
virtual ~Bot();
@ -621,6 +623,7 @@ private:
uint8 _numHealRotationMembers;
std::map<uint32, BotAA> botAAs;
InspectMessage_Struct _botInspectMessage;
bool _bardUseOutOfCombatSongs;
// Private "base stats" Members
int16 _baseMR;

View File

@ -1025,7 +1025,7 @@ bool Bot::AI_IdleCastCheck() {
// bard bots
if(!AICastSpell(this, 100, SpellType_Cure)) {
if(!AICastSpell(this, 100, SpellType_Heal)) {
if(!RuleB(Bots, BotBardUseOutOfCombatSongs) || !AICastSpell(this, 100, SpellType_Buff)) { // skips if rule is false
if((!RuleB(Bots, BotBardUseOutOfCombatSongs) || !GetBardUseOutOfCombatSongs()) || !AICastSpell(this, 100, SpellType_Buff)) { // skips if rule is false
if(!AICastSpell(this, 100, SpellType_InCombatBuff)) { // this tries to keep some combat buffs on the group until engaged code can pick up the buffing
//
}