mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-15 21:12:25 +00:00
Fix for bot classes having skills they shouldn't. Please report any abnormalities.
Tweaked bot command 'itemuse' to exclude invalid dual-wield reporting
This commit is contained in:
parent
efd710855e
commit
1196abfda8
@ -8863,6 +8863,10 @@ void Bot::CalcBotStats(bool showtext) {
|
|||||||
if(GetBotOwner()->GetLevel() != GetLevel())
|
if(GetBotOwner()->GetLevel() != GetLevel())
|
||||||
SetLevel(GetBotOwner()->GetLevel());
|
SetLevel(GetBotOwner()->GetLevel());
|
||||||
|
|
||||||
|
for (int sindex = 0; sindex <= EQEmu::skills::HIGHEST_SKILL; ++sindex) {
|
||||||
|
skills[sindex] = database.GetSkillCap(GetClass(), (EQEmu::skills::SkillType)sindex, GetLevel());
|
||||||
|
}
|
||||||
|
|
||||||
LoadAAs();
|
LoadAAs();
|
||||||
GenerateSpecialAttacks();
|
GenerateSpecialAttacks();
|
||||||
|
|
||||||
|
|||||||
@ -3644,43 +3644,35 @@ void bot_command_item_use(Client* c, const Seperator* sep)
|
|||||||
|
|
||||||
for (auto slot_iter : equipable_slot_list) {
|
for (auto slot_iter : equipable_slot_list) {
|
||||||
|
|
||||||
auto equipped_item = bot_iter->GetBotInv()[slot_iter];
|
// needs more failure criteria - this should cover the bulk for now
|
||||||
if (empty_only) {
|
if (slot_iter == EQEmu::invslot::slotSecondary && item_data->Damage && !bot_iter->CanThisClassDualWield()) {
|
||||||
if (!equipped_item) {
|
continue;
|
||||||
|
|
||||||
c->Message(
|
|
||||||
Chat::Say,
|
|
||||||
"[%s] says, 'I can use that for my %s!",
|
|
||||||
text_link.c_str(),
|
|
||||||
EQEmu::invslot::GetInvPossessionsSlotName(slot_iter)
|
|
||||||
);
|
|
||||||
bot_iter->DoAnim(29);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
if (equipped_item) {
|
|
||||||
|
|
||||||
linker.SetItemInst(equipped_item);
|
auto equipped_item = bot_iter->GetBotInv()[slot_iter];
|
||||||
|
|
||||||
c->Message(
|
|
||||||
Chat::Say,
|
|
||||||
"[%s] says, 'I can use that for my %s! (replaces: [%s])",
|
|
||||||
text_link.c_str(),
|
|
||||||
EQEmu::invslot::GetInvPossessionsSlotName(slot_iter),
|
|
||||||
linker.GenerateLink().c_str()
|
|
||||||
);
|
|
||||||
bot_iter->DoAnim(29);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
|
|
||||||
c->Message(
|
if (equipped_item && !empty_only) {
|
||||||
Chat::Say,
|
|
||||||
"[%s] says, 'I can use that for my %s!",
|
linker.SetItemInst(equipped_item);
|
||||||
text_link.c_str(),
|
|
||||||
EQEmu::invslot::GetInvPossessionsSlotName(slot_iter)
|
c->Message(
|
||||||
);
|
Chat::Say,
|
||||||
bot_iter->DoAnim(29);
|
"[%s] says, 'I can use that for my %s! (replaces: [%s])'",
|
||||||
}
|
text_link.c_str(),
|
||||||
|
EQEmu::invslot::GetInvPossessionsSlotName(slot_iter),
|
||||||
|
linker.GenerateLink().c_str()
|
||||||
|
);
|
||||||
|
bot_iter->DoAnim(29);
|
||||||
|
}
|
||||||
|
else if (!equipped_item) {
|
||||||
|
|
||||||
|
c->Message(
|
||||||
|
Chat::Say,
|
||||||
|
"[%s] says, 'I can use that for my %s!'",
|
||||||
|
text_link.c_str(),
|
||||||
|
EQEmu::invslot::GetInvPossessionsSlotName(slot_iter)
|
||||||
|
);
|
||||||
|
bot_iter->DoAnim(29);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
24
zone/npc.cpp
24
zone/npc.cpp
@ -307,16 +307,18 @@ NPC::NPC(const NPCType *npc_type_data, Spawn2 *in_respawn, const glm::vec4 &posi
|
|||||||
// some overrides -- really we need to be able to set skills for mobs in the DB
|
// some overrides -- really we need to be able to set skills for mobs in the DB
|
||||||
// There are some known low level SHM/BST pets that do not follow this, which supports
|
// There are some known low level SHM/BST pets that do not follow this, which supports
|
||||||
// the theory of needing to be able to set skills for each mob separately
|
// the theory of needing to be able to set skills for each mob separately
|
||||||
if (moblevel > 50) {
|
if (!IsBot()) {
|
||||||
skills[EQEmu::skills::SkillDoubleAttack] = 250;
|
if (moblevel > 50) {
|
||||||
skills[EQEmu::skills::SkillDualWield] = 250;
|
skills[EQEmu::skills::SkillDoubleAttack] = 250;
|
||||||
}
|
skills[EQEmu::skills::SkillDualWield] = 250;
|
||||||
else if (moblevel > 3) {
|
}
|
||||||
skills[EQEmu::skills::SkillDoubleAttack] = moblevel * 5;
|
else if (moblevel > 3) {
|
||||||
skills[EQEmu::skills::SkillDualWield] = skills[EQEmu::skills::SkillDoubleAttack];
|
skills[EQEmu::skills::SkillDoubleAttack] = moblevel * 5;
|
||||||
}
|
skills[EQEmu::skills::SkillDualWield] = skills[EQEmu::skills::SkillDoubleAttack];
|
||||||
else {
|
}
|
||||||
skills[EQEmu::skills::SkillDoubleAttack] = moblevel * 5;
|
else {
|
||||||
|
skills[EQEmu::skills::SkillDoubleAttack] = moblevel * 5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ldon_trapped = false;
|
ldon_trapped = false;
|
||||||
@ -2983,4 +2985,4 @@ void NPC::SetSimpleRoamBox(float box_size, float move_distance, int move_delay)
|
|||||||
GetY() - box_size,
|
GetY() - box_size,
|
||||||
move_delay
|
move_delay
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user