[Bots] Add Additional HeroicStr modifiers. (#2837)

This commit is contained in:
Aeadoin 2023-02-06 21:07:38 -05:00 committed by GitHub
parent 14addd4869
commit fb1467284c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 28 deletions

View File

@ -871,16 +871,16 @@ int Mob::ACSum(bool skip_caps)
int ac = 0; // this should be base AC whenever shrouds come around int ac = 0; // this should be base AC whenever shrouds come around
ac += itembonuses.AC; // items + food + tribute ac += itembonuses.AC; // items + food + tribute
int shield_ac = 0; int shield_ac = 0;
if (HasShieldEquiped() && IsClient()) { if (HasShieldEquiped() && (IsClient() || IsBot())) {
auto client = CastToClient(); auto inst = (IsClient()) ? GetInv().GetItem(EQ::invslot::slotSecondary) : CastToBot()->GetBotItem(EQ::invslot::slotSecondary);
auto inst = client->GetInv().GetItem(EQ::invslot::slotSecondary);
if (inst) { if (inst) {
if (inst->GetItemRecommendedLevel(true) <= GetLevel()) if (inst->GetItemRecommendedLevel(true) <= GetLevel()) {
shield_ac = inst->GetItemArmorClass(true); shield_ac = inst->GetItemArmorClass(true);
else } else {
shield_ac = client->CalcRecommendedLevelBonus(GetLevel(), inst->GetItemRecommendedLevel(true), inst->GetItemArmorClass(true)); shield_ac = CalcRecommendedLevelBonus(GetLevel(), inst->GetItemRecommendedLevel(true), inst->GetItemArmorClass(true));
}
} }
shield_ac += client->GetHeroicSTR() / 10; shield_ac += GetHeroicSTR() / 10;
} }
// EQ math // EQ math
ac = (ac * 4) / 3; ac = (ac * 4) / 3;
@ -5793,16 +5793,16 @@ void Mob::CommonOutgoingHitSuccess(Mob* defender, DamageHitInfo &hit, ExtraAttac
TryCriticalHit(defender, hit, opts); TryCriticalHit(defender, hit, opts);
hit.damage_done += hit.min_damage; hit.damage_done += hit.min_damage;
if (IsClient()) { if (IsClient() || IsBot()) {
int extra = 0; int extra = 0;
switch (hit.skill) { switch (hit.skill) {
case EQ::skills::SkillThrowing: case EQ::skills::SkillThrowing:
case EQ::skills::SkillArchery: case EQ::skills::SkillArchery:
extra = CastToClient()->GetHeroicDEX() / 10; extra = GetHeroicDEX() / 10;
break; break;
default: default:
extra = CastToClient()->GetHeroicSTR() / 10; extra = GetHeroicSTR() / 10;
break; break;
} }
hit.damage_done += extra; hit.damage_done += extra;
} }

View File

@ -128,7 +128,7 @@ void Client::CalcBonuses()
consume_food_timer.SetTimer(timer); consume_food_timer.SetTimer(timer);
} }
int Client::CalcRecommendedLevelBonus(uint8 level, uint8 reclevel, int basestat) int Mob::CalcRecommendedLevelBonus(uint8 level, uint8 reclevel, int basestat)
{ {
if( (reclevel > 0) && (level < reclevel) ) if( (reclevel > 0) && (level < reclevel) )
{ {

View File

@ -1683,7 +1683,6 @@ protected:
void CalcItemBonuses(StatBonuses* newbon); void CalcItemBonuses(StatBonuses* newbon);
void AddItemBonuses(const EQ::ItemInstance *inst, StatBonuses* newbon, bool isAug = false, bool isTribute = false, int rec_override = 0, bool ammo_slot_item = false); void AddItemBonuses(const EQ::ItemInstance *inst, StatBonuses* newbon, bool isAug = false, bool isTribute = false, int rec_override = 0, bool ammo_slot_item = false);
void AdditiveWornBonuses(const EQ::ItemInstance *inst, StatBonuses* newbon, bool isAug = false); void AdditiveWornBonuses(const EQ::ItemInstance *inst, StatBonuses* newbon, bool isAug = false);
int CalcRecommendedLevelBonus(uint8 level, uint8 reclevel, int basestat);
void CalcEdibleBonuses(StatBonuses* newbon); void CalcEdibleBonuses(StatBonuses* newbon);
void ProcessItemCaps(); void ProcessItemCaps();
void MakeBuffFadePacket(uint16 spell_id, int slot_id, bool send_message = true); void MakeBuffFadePacket(uint16 spell_id, int slot_id, bool send_message = true);

View File

@ -657,7 +657,7 @@ public:
inline int32 GetHeroicStrikethrough() const { return heroic_strikethrough; } inline int32 GetHeroicStrikethrough() const { return heroic_strikethrough; }
inline const bool GetKeepsSoldItems() const { return keeps_sold_items; } inline const bool GetKeepsSoldItems() const { return keeps_sold_items; }
inline void SetKeepsSoldItems(bool in_keeps_sold_items) { keeps_sold_items = in_keeps_sold_items; } inline void SetKeepsSoldItems(bool in_keeps_sold_items) { keeps_sold_items = in_keeps_sold_items; }
int CalcRecommendedLevelBonus(uint8 level, uint8 reclevel, int basestat);
void CopyHateList(Mob* to); void CopyHateList(Mob* to);
//Group //Group

View File

@ -1040,16 +1040,16 @@ int64 Mob::TuneACSum(bool skip_caps, int ac_override, int add_ac)
} }
int shield_ac = 0; int shield_ac = 0;
if (HasShieldEquiped() && IsClient()) { if (HasShieldEquiped() && (IsClient() || IsBot())) {
auto client = CastToClient(); auto inst = (IsClient()) ? GetInv().GetItem(EQ::invslot::slotSecondary) : CastToBot()->GetBotItem(EQ::invslot::slotSecondary);
auto inst = client->GetInv().GetItem(EQ::invslot::slotSecondary);
if (inst) { if (inst) {
if (inst->GetItemRecommendedLevel(true) <= GetLevel()) if (inst->GetItemRecommendedLevel(true) <= GetLevel()) {
shield_ac = inst->GetItemArmorClass(true); shield_ac = inst->GetItemArmorClass(true);
else } else {
shield_ac = client->CalcRecommendedLevelBonus(GetLevel(), inst->GetItemRecommendedLevel(true), inst->GetItemArmorClass(true)); shield_ac = CalcRecommendedLevelBonus(GetLevel(), inst->GetItemRecommendedLevel(true),inst->GetItemArmorClass(true));
}
} }
shield_ac += client->GetHeroicSTR() / 10; shield_ac += GetHeroicSTR() / 10;
} }
// EQ math // EQ math
ac = (ac * 4) / 3; ac = (ac * 4) / 3;
@ -1490,15 +1490,15 @@ void Mob::TuneCommonOutgoingHitSuccess(Mob* defender, DamageHitInfo &hit, ExtraA
hit.damage_done = min_mod; hit.damage_done = min_mod;
hit.damage_done += hit.min_damage; hit.damage_done += hit.min_damage;
if (IsClient()) { if (IsClient() || IsBot()) {
int extra = 0; int extra = 0;
switch (hit.skill) { switch (hit.skill) {
case EQ::skills::SkillThrowing: case EQ::skills::SkillThrowing:
case EQ::skills::SkillArchery: case EQ::skills::SkillArchery:
extra = CastToClient()->GetHeroicDEX() / 10; extra = GetHeroicDEX() / 10;
break; break;
default: default:
extra = CastToClient()->GetHeroicSTR() / 10; extra = GetHeroicSTR() / 10;
break; break;
} }
hit.damage_done += extra; hit.damage_done += extra;