mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-09 22:20:24 +00:00
Implemented: SPA 521 EndAbsorbPctDmg
Implemented SE_Endurance_Absorb_Pct_Damage 521 Absorb Damage using Endurance: base1 % (base2 End per 1 HP) Note: Both base1 and base2 need to be divided by 100 for actually value
This commit is contained in:
+1
-1
@@ -861,7 +861,7 @@ typedef enum {
|
||||
//#define SE_Attack_Accuracy_Max_Percent 518 //
|
||||
//#define SE_Luck_Amount 519 //
|
||||
//#define SE_Luck_Percent 520 //
|
||||
//#define SE_Endurance_Absorb_Pct_Damage 521 //
|
||||
#define SE_Endurance_Absorb_Pct_Damage 521 //
|
||||
#define SE_Instant_Mana_Pct 522 //
|
||||
#define SE_Instant_Endurance_Pct 523 //
|
||||
#define SE_Duration_HP_Pct 524 //
|
||||
|
||||
+15
-2
@@ -3323,8 +3323,8 @@ int32 Mob::ReduceAllDamage(int32 damage)
|
||||
if (damage <= 0)
|
||||
return damage;
|
||||
|
||||
if (spellbonuses.ManaAbsorbPercentDamage[0]) {
|
||||
int32 mana_reduced = damage * spellbonuses.ManaAbsorbPercentDamage[0] / 100;
|
||||
if (spellbonuses.ManaAbsorbPercentDamage) {
|
||||
int32 mana_reduced = damage * spellbonuses.ManaAbsorbPercentDamage / 100;
|
||||
if (GetMana() >= mana_reduced) {
|
||||
damage -= mana_reduced;
|
||||
SetMana(GetMana() - mana_reduced);
|
||||
@@ -3332,6 +3332,19 @@ int32 Mob::ReduceAllDamage(int32 damage)
|
||||
}
|
||||
}
|
||||
|
||||
if (spellbonuses.EnduranceAbsorbPercentDamage[0]) {
|
||||
int32 damage_reduced = damage * spellbonuses.EnduranceAbsorbPercentDamage[0] / 10000;
|
||||
int32 endurance_drain = damage_reduced * spellbonuses.EnduranceAbsorbPercentDamage[1] / 10000;
|
||||
if (endurance_drain < 1)
|
||||
endurance_drain = 1;
|
||||
|
||||
if (IsClient() && CastToClient()->GetEndurance() >= endurance_drain) {
|
||||
damage -= damage_reduced;
|
||||
CastToClient()->SetEndurance(CastToClient()->GetEndurance() - endurance_drain);
|
||||
TryTriggerOnValueAmount(false, false, true);
|
||||
}
|
||||
}
|
||||
|
||||
CheckNumHitsRemaining(NumHit::IncomingDamage);
|
||||
|
||||
return(damage);
|
||||
|
||||
+17
-5
@@ -2692,9 +2692,17 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
|
||||
|
||||
case SE_ManaAbsorbPercentDamage:
|
||||
{
|
||||
if (new_bonus->ManaAbsorbPercentDamage[0] < effect_value){
|
||||
new_bonus->ManaAbsorbPercentDamage[0] = effect_value;
|
||||
new_bonus->ManaAbsorbPercentDamage[1] = buffslot;
|
||||
if (new_bonus->ManaAbsorbPercentDamage < effect_value){
|
||||
new_bonus->ManaAbsorbPercentDamage = effect_value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_Endurance_Absorb_Pct_Damage:
|
||||
{
|
||||
if (new_bonus->EnduranceAbsorbPercentDamage[0] < effect_value) {
|
||||
new_bonus->EnduranceAbsorbPercentDamage[0] = effect_value;
|
||||
new_bonus->EnduranceAbsorbPercentDamage[1] = base2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -4356,8 +4364,12 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
|
||||
break;
|
||||
|
||||
case SE_ManaAbsorbPercentDamage:
|
||||
spellbonuses.ManaAbsorbPercentDamage[0] = effect_value;
|
||||
spellbonuses.ManaAbsorbPercentDamage[1] = -1;
|
||||
spellbonuses.ManaAbsorbPercentDamage = effect_value;
|
||||
break;
|
||||
|
||||
case SE_Endurance_Absorb_Pct_Damage:
|
||||
spellbonuses.EnduranceAbsorbPercentDamage[0] = effect_value;
|
||||
spellbonuses.EnduranceAbsorbPercentDamage[1] = effect_value;
|
||||
break;
|
||||
|
||||
case SE_ShieldBlock:
|
||||
|
||||
+2
-1
@@ -494,7 +494,8 @@ struct StatBonuses {
|
||||
uint32 MitigateDotRune[4]; // 0 = Mitigation value 1 = Buff Slot 2 = Max mitigation per tick 3 = Rune Amt
|
||||
bool TriggerMeleeThreshold; // Has Melee Threshhold
|
||||
bool TriggerSpellThreshold; // Has Spell Threshhold
|
||||
uint32 ManaAbsorbPercentDamage[2]; // 0 = Mitigation value 1 = Buff Slot
|
||||
uint32 ManaAbsorbPercentDamage; // 0 = Mitigation value
|
||||
int32 EnduranceAbsorbPercentDamage[2]; // 0 = Mitigation value 1 = Percent Endurance drain per HP lost
|
||||
int32 ShieldBlock; // Chance to Shield Block
|
||||
int32 BlockBehind; // Chance to Block Behind (with our without shield)
|
||||
bool CriticalRegenDecay; // increase critical regen chance, decays based on spell level cast
|
||||
|
||||
@@ -1162,7 +1162,7 @@ uint32 Lua_StatBonuses::GetMitigateDotRune(int idx) const {
|
||||
|
||||
uint32 Lua_StatBonuses::GetManaAbsorbPercentDamage(int idx) const {
|
||||
Lua_Safe_Call_Int();
|
||||
return self->ManaAbsorbPercentDamage[idx];
|
||||
return self->ManaAbsorbPercentDamage;
|
||||
}
|
||||
|
||||
int32 Lua_StatBonuses::GetImprovedTaunt(int idx) const {
|
||||
|
||||
Reference in New Issue
Block a user