mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-15 04:32:28 +00:00
Fix Shield Specialist related SPAs
This commit is contained in:
parent
ab0f883191
commit
26985496d1
@ -502,7 +502,7 @@ typedef enum {
|
|||||||
#define SE_HeadShotLevel 346 // implemented[AA] - HeadShot max level to kill
|
#define SE_HeadShotLevel 346 // implemented[AA] - HeadShot max level to kill
|
||||||
#define SE_DoubleRangedAttack 347 // implemented - chance at an additional archery attack (consumes arrow)
|
#define SE_DoubleRangedAttack 347 // implemented - chance at an additional archery attack (consumes arrow)
|
||||||
#define SE_LimitManaMin 348 // implemented
|
#define SE_LimitManaMin 348 // implemented
|
||||||
#define SE_ShieldEquipHateMod 349 // implemented[AA] Increase melee hate when wearing a shield.
|
#define SE_ShieldEquipDmgMod 349 // implemented[AA] Increase melee base damage (indirectly increasing hate) when wearing a shield.
|
||||||
#define SE_ManaBurn 350 // implemented - Drains mana for damage/heal at a defined ratio up to a defined maximum amount of mana.
|
#define SE_ManaBurn 350 // implemented - Drains mana for damage/heal at a defined ratio up to a defined maximum amount of mana.
|
||||||
//#define SE_PersistentEffect 351 // *not implemented. creates a trap/totem that casts a spell (spell id + base1?) when anything comes near it. can probably make a beacon for this
|
//#define SE_PersistentEffect 351 // *not implemented. creates a trap/totem that casts a spell (spell id + base1?) when anything comes near it. can probably make a beacon for this
|
||||||
//#define SE_IncreaseTrapCount 352 // *not implemented - looks to be some type of invulnerability? Test ITC (8755)
|
//#define SE_IncreaseTrapCount 352 // *not implemented - looks to be some type of invulnerability? Test ITC (8755)
|
||||||
@ -519,7 +519,7 @@ typedef enum {
|
|||||||
#define SE_BandolierSlots 363 // *not implemented[AA] 'Battle Ready' expands the bandolier by one additional save slot per rank.
|
#define SE_BandolierSlots 363 // *not implemented[AA] 'Battle Ready' expands the bandolier by one additional save slot per rank.
|
||||||
#define SE_TripleAttackChance 364 // implemented
|
#define SE_TripleAttackChance 364 // implemented
|
||||||
#define SE_ProcOnSpellKillShot 365 // implemented - chance to trigger a spell on kill when the kill is caused by a specific spell with this effect in it (10470 Venin)
|
#define SE_ProcOnSpellKillShot 365 // implemented - chance to trigger a spell on kill when the kill is caused by a specific spell with this effect in it (10470 Venin)
|
||||||
#define SE_ShieldEquipDmgMod 366 // implemented[AA] Damage modifier to melee if shield equiped. (base1 = dmg mod , base2 = ?) ie Shield Specialist AA
|
#define SE_GroupShielding 366 // *not implemented[AA] This gives you /shieldgroup
|
||||||
#define SE_SetBodyType 367 // implemented - set body type of base1 so it can be affected by spells that are limited to that type (Plant, Animal, Undead, etc)
|
#define SE_SetBodyType 367 // implemented - set body type of base1 so it can be affected by spells that are limited to that type (Plant, Animal, Undead, etc)
|
||||||
//#define SE_FactionMod 368 // *not implemented - increases faction with base1 (faction id, live won't match up w/ ours) by base2
|
//#define SE_FactionMod 368 // *not implemented - increases faction with base1 (faction id, live won't match up w/ ours) by base2
|
||||||
#define SE_CorruptionCounter 369 // implemented
|
#define SE_CorruptionCounter 369 // implemented
|
||||||
|
|||||||
@ -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
|
//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
|
//otherwise we cannot and we set the damage to -5 later on
|
||||||
if(weapon_damage > 0){
|
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
|
//Berserker Berserk damage bonus
|
||||||
if(IsBerserk() && GetClass() == BERSERKER){
|
if(IsBerserk() && GetClass() == BERSERKER){
|
||||||
@ -2291,11 +2296,6 @@ void Mob::AddToHateList(Mob* other, uint32 hate /*= 0*/, int32 damage /*= 0*/, b
|
|||||||
// Spell Casting Subtlety etc
|
// Spell Casting Subtlety etc
|
||||||
int hatemod = 100 + other->spellbonuses.hatemod + other->itembonuses.hatemod + other->aabonuses.hatemod;
|
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)
|
if(hatemod < 1)
|
||||||
hatemod = 1;
|
hatemod = 1;
|
||||||
hate = ((hate * (hatemod))/100);
|
hate = ((hate * (hatemod))/100);
|
||||||
|
|||||||
@ -940,12 +940,8 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
|
|||||||
case SE_ShieldBlock:
|
case SE_ShieldBlock:
|
||||||
newbon->ShieldBlock += base1;
|
newbon->ShieldBlock += base1;
|
||||||
break;
|
break;
|
||||||
case SE_ShieldEquipHateMod:
|
|
||||||
newbon->ShieldEquipHateMod += base1;
|
|
||||||
break;
|
|
||||||
case SE_ShieldEquipDmgMod:
|
case SE_ShieldEquipDmgMod:
|
||||||
newbon->ShieldEquipDmgMod[0] += base1;
|
newbon->ShieldEquipDmgMod += base1;
|
||||||
newbon->ShieldEquipDmgMod[1] += base2;
|
|
||||||
break;
|
break;
|
||||||
case SE_SecondaryDmgInc:
|
case SE_SecondaryDmgInc:
|
||||||
newbon->SecondaryDmgInc = true;
|
newbon->SecondaryDmgInc = true;
|
||||||
@ -2655,13 +2651,8 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
|
|||||||
new_bonus->ShieldBlock += effect_value;
|
new_bonus->ShieldBlock += effect_value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SE_ShieldEquipHateMod:
|
|
||||||
new_bonus->ShieldEquipHateMod += effect_value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SE_ShieldEquipDmgMod:
|
case SE_ShieldEquipDmgMod:
|
||||||
new_bonus->ShieldEquipDmgMod[0] += effect_value;
|
new_bonus->ShieldEquipDmgMod += effect_value;
|
||||||
new_bonus->ShieldEquipDmgMod[1] += base2;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SE_BlockBehind:
|
case SE_BlockBehind:
|
||||||
@ -4555,19 +4546,10 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
|
|||||||
itembonuses.DoubleRangedAttack = effect_value;
|
itembonuses.DoubleRangedAttack = effect_value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SE_ShieldEquipHateMod:
|
|
||||||
spellbonuses.ShieldEquipHateMod = effect_value;
|
|
||||||
aabonuses.ShieldEquipHateMod = effect_value;
|
|
||||||
itembonuses.ShieldEquipHateMod = effect_value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SE_ShieldEquipDmgMod:
|
case SE_ShieldEquipDmgMod:
|
||||||
spellbonuses.ShieldEquipDmgMod[0] = effect_value;
|
spellbonuses.ShieldEquipDmgMod = effect_value;
|
||||||
spellbonuses.ShieldEquipDmgMod[1] = effect_value;
|
aabonuses.ShieldEquipDmgMod = effect_value;
|
||||||
aabonuses.ShieldEquipDmgMod[0] = effect_value;
|
itembonuses.ShieldEquipDmgMod = effect_value;
|
||||||
aabonuses.ShieldEquipDmgMod[1] = effect_value;
|
|
||||||
itembonuses.ShieldEquipDmgMod[0] = effect_value;
|
|
||||||
itembonuses.ShieldEquipDmgMod[1] = effect_value;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SE_TriggerMeleeThreshold:
|
case SE_TriggerMeleeThreshold:
|
||||||
|
|||||||
@ -457,8 +457,7 @@ struct StatBonuses {
|
|||||||
int32 ItemATKCap; // Raise item attack cap
|
int32 ItemATKCap; // Raise item attack cap
|
||||||
int32 FinishingBlow[2]; // Chance to do a finishing blow for specified damage amount.
|
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= ???)
|
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; // Increases weapon's base damage by base1 % when shield is equipped (indirectly increasing hate)
|
||||||
int32 ShieldEquipDmgMod[2]; // Damage mod when shield equiped. 0 = damage modifier 1 = Unknown
|
|
||||||
bool TriggerOnValueAmount; // Triggers off various different conditions, bool to check if client has effect.
|
bool TriggerOnValueAmount; // Triggers off various different conditions, bool to check if client has effect.
|
||||||
int8 StunBashChance; // chance to stun with bash.
|
int8 StunBashChance; // chance to stun with bash.
|
||||||
int8 IncreaseChanceMemwipe; // increases chance to memory wipe
|
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] +
|
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];
|
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)
|
if(dmg_mod < -100)
|
||||||
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_FcHealAmtIncoming:
|
||||||
case SE_LimitManaMax:
|
case SE_LimitManaMax:
|
||||||
case SE_DoubleRangedAttack:
|
case SE_DoubleRangedAttack:
|
||||||
case SE_ShieldEquipHateMod:
|
|
||||||
case SE_ShieldEquipDmgMod:
|
case SE_ShieldEquipDmgMod:
|
||||||
|
case SE_GroupShielding:
|
||||||
case SE_TriggerOnReqTarget:
|
case SE_TriggerOnReqTarget:
|
||||||
case SE_LimitRace:
|
case SE_LimitRace:
|
||||||
case SE_FcLimitUse:
|
case SE_FcLimitUse:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user