mirror of
https://github.com/EQEmu/Server.git
synced 2026-09-02 08:26:36 +00:00
Fix Shield Specialist related SPAs
This commit is contained in:
+5
-5
@@ -1072,6 +1072,11 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b
|
||||
//if weapon damage > 0 then we know we can hit the target with this weapon
|
||||
//otherwise we cannot and we set the damage to -5 later on
|
||||
if(weapon_damage > 0){
|
||||
auto shield_inc = spellbonuses.ShieldEquipDmgMod + itembonuses.ShieldEquipDmgMod + aabonuses.ShieldEquipDmgMod;
|
||||
if (shield_inc > 0 && HasShieldEquiped() && Hand == EQEmu::inventory::slotPrimary) {
|
||||
weapon_damage = weapon_damage * (100 + shield_inc) / 100;
|
||||
hate = hate * (100 + shield_inc) / 100;
|
||||
}
|
||||
|
||||
//Berserker Berserk damage bonus
|
||||
if(IsBerserk() && GetClass() == BERSERKER){
|
||||
@@ -2291,11 +2296,6 @@ void Mob::AddToHateList(Mob* other, uint32 hate /*= 0*/, int32 damage /*= 0*/, b
|
||||
// Spell Casting Subtlety etc
|
||||
int hatemod = 100 + other->spellbonuses.hatemod + other->itembonuses.hatemod + other->aabonuses.hatemod;
|
||||
|
||||
int32 shieldhatemod = other->spellbonuses.ShieldEquipHateMod + other->itembonuses.ShieldEquipHateMod + other->aabonuses.ShieldEquipHateMod;
|
||||
|
||||
if (shieldhatemod && other->HasShieldEquiped())
|
||||
hatemod += shieldhatemod;
|
||||
|
||||
if(hatemod < 1)
|
||||
hatemod = 1;
|
||||
hate = ((hate * (hatemod))/100);
|
||||
|
||||
+5
-23
@@ -940,12 +940,8 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
|
||||
case SE_ShieldBlock:
|
||||
newbon->ShieldBlock += base1;
|
||||
break;
|
||||
case SE_ShieldEquipHateMod:
|
||||
newbon->ShieldEquipHateMod += base1;
|
||||
break;
|
||||
case SE_ShieldEquipDmgMod:
|
||||
newbon->ShieldEquipDmgMod[0] += base1;
|
||||
newbon->ShieldEquipDmgMod[1] += base2;
|
||||
newbon->ShieldEquipDmgMod += base1;
|
||||
break;
|
||||
case SE_SecondaryDmgInc:
|
||||
newbon->SecondaryDmgInc = true;
|
||||
@@ -2655,13 +2651,8 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
|
||||
new_bonus->ShieldBlock += effect_value;
|
||||
break;
|
||||
|
||||
case SE_ShieldEquipHateMod:
|
||||
new_bonus->ShieldEquipHateMod += effect_value;
|
||||
break;
|
||||
|
||||
case SE_ShieldEquipDmgMod:
|
||||
new_bonus->ShieldEquipDmgMod[0] += effect_value;
|
||||
new_bonus->ShieldEquipDmgMod[1] += base2;
|
||||
new_bonus->ShieldEquipDmgMod += effect_value;
|
||||
break;
|
||||
|
||||
case SE_BlockBehind:
|
||||
@@ -4555,19 +4546,10 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
|
||||
itembonuses.DoubleRangedAttack = effect_value;
|
||||
break;
|
||||
|
||||
case SE_ShieldEquipHateMod:
|
||||
spellbonuses.ShieldEquipHateMod = effect_value;
|
||||
aabonuses.ShieldEquipHateMod = effect_value;
|
||||
itembonuses.ShieldEquipHateMod = effect_value;
|
||||
break;
|
||||
|
||||
case SE_ShieldEquipDmgMod:
|
||||
spellbonuses.ShieldEquipDmgMod[0] = effect_value;
|
||||
spellbonuses.ShieldEquipDmgMod[1] = effect_value;
|
||||
aabonuses.ShieldEquipDmgMod[0] = effect_value;
|
||||
aabonuses.ShieldEquipDmgMod[1] = effect_value;
|
||||
itembonuses.ShieldEquipDmgMod[0] = effect_value;
|
||||
itembonuses.ShieldEquipDmgMod[1] = effect_value;
|
||||
spellbonuses.ShieldEquipDmgMod = effect_value;
|
||||
aabonuses.ShieldEquipDmgMod = effect_value;
|
||||
itembonuses.ShieldEquipDmgMod = effect_value;
|
||||
break;
|
||||
|
||||
case SE_TriggerMeleeThreshold:
|
||||
|
||||
+1
-2
@@ -457,8 +457,7 @@ struct StatBonuses {
|
||||
int32 ItemATKCap; // Raise item attack cap
|
||||
int32 FinishingBlow[2]; // Chance to do a finishing blow for specified damage amount.
|
||||
uint32 FinishingBlowLvl[2]; // Sets max level an NPC can be affected by FB. (base1 = lv, base2= ???)
|
||||
int32 ShieldEquipHateMod; // Hate mod when shield equiped.
|
||||
int32 ShieldEquipDmgMod[2]; // Damage mod when shield equiped. 0 = damage modifier 1 = Unknown
|
||||
int32 ShieldEquipDmgMod; // Increases weapon's base damage by base1 % when shield is equipped (indirectly increasing hate)
|
||||
bool TriggerOnValueAmount; // Triggers off various different conditions, bool to check if client has effect.
|
||||
int8 StunBashChance; // chance to stun with bash.
|
||||
int8 IncreaseChanceMemwipe; // increases chance to memory wipe
|
||||
|
||||
@@ -4668,9 +4668,6 @@ int16 Mob::GetMeleeDamageMod_SE(uint16 skill)
|
||||
dmg_mod += itembonuses.DamageModifier2[EQEmu::skills::HIGHEST_SKILL + 1] + spellbonuses.DamageModifier2[EQEmu::skills::HIGHEST_SKILL + 1] + aabonuses.DamageModifier2[EQEmu::skills::HIGHEST_SKILL + 1] +
|
||||
itembonuses.DamageModifier2[skill] + spellbonuses.DamageModifier2[skill] + aabonuses.DamageModifier2[skill];
|
||||
|
||||
if (HasShieldEquiped() && !IsOffHandAtk())
|
||||
dmg_mod += itembonuses.ShieldEquipDmgMod[0] + spellbonuses.ShieldEquipDmgMod[0] + aabonuses.ShieldEquipDmgMod[0];
|
||||
|
||||
if(dmg_mod < -100)
|
||||
dmg_mod = -100;
|
||||
|
||||
|
||||
@@ -2982,8 +2982,8 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
|
||||
case SE_FcHealAmtIncoming:
|
||||
case SE_LimitManaMax:
|
||||
case SE_DoubleRangedAttack:
|
||||
case SE_ShieldEquipHateMod:
|
||||
case SE_ShieldEquipDmgMod:
|
||||
case SE_GroupShielding:
|
||||
case SE_TriggerOnReqTarget:
|
||||
case SE_LimitRace:
|
||||
case SE_FcLimitUse:
|
||||
|
||||
Reference in New Issue
Block a user