[Spells] Implemented SPA 489 SE_Worn_Endurance_Regen_Cap (#1493)

Implemented

SE_Worn_Endurance_Regen_Cap		489
modify worn item regen cap
base: amt, limit: none, max: none

Also added support to allow item mana regen cap to check item and spell bonuses.
This commit is contained in:
KayenEQ 2021-08-10 19:39:12 -04:00 committed by GitHub
parent 416fadd554
commit 2c01fe59ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 22 additions and 4 deletions

View File

@ -852,7 +852,7 @@ typedef enum {
#define SE_Ff_Same_Caster 486 // implemented, @Ff, Caster of spell on target with a focus effect that is checked by incoming spells, base1: 0=Must be different caster 1=Must be same caster #define SE_Ff_Same_Caster 486 // implemented, @Ff, Caster of spell on target with a focus effect that is checked by incoming spells, base1: 0=Must be different caster 1=Must be same caster
//#define SE_Extend_Tradeskill_Cap 487 // //#define SE_Extend_Tradeskill_Cap 487 //
//#define SE_Defender_Melee_Force_Pct_PC 488 // //#define SE_Defender_Melee_Force_Pct_PC 488 //
//#define SE_Worn_Endurance_Regen_Cap 489 // #define SE_Worn_Endurance_Regen_Cap 489 // implemented, modify worn regen cap, base: amt, limit: none, max: none
#define SE_Ff_ReuseTimeMin 490 // implemented, @Ff, Minimum recast time of a spell that can be focused, base: recast time #define SE_Ff_ReuseTimeMin 490 // implemented, @Ff, Minimum recast time of a spell that can be focused, base: recast time
#define SE_Ff_ReuseTimeMax 491 // implemented, @Ff, Max recast time of a spell that can be focused, base: recast time #define SE_Ff_ReuseTimeMax 491 // implemented, @Ff, Max recast time of a spell that can be focused, base: recast time
#define SE_Ff_Endurance_Min 492 // implemented, @Ff, Minimum endurance cost of a spell that can be focused, base: endurance cost #define SE_Ff_Endurance_Min 492 // implemented, @Ff, Minimum endurance cost of a spell that can be focused, base: endurance cost

View File

@ -1628,6 +1628,9 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
break; break;
} }
case SE_Worn_Endurance_Regen_Cap:
newbon->ItemEnduranceRegenCap += base1;
break;
// to do // to do
case SE_PetDiscipline: case SE_PetDiscipline:
@ -3541,6 +3544,14 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
new_bonus->Pet_Add_Atk += effect_value; new_bonus->Pet_Add_Atk += effect_value;
break; break;
case SE_Worn_Endurance_Regen_Cap:
new_bonus->ItemEnduranceRegenCap += effect_value;
break;
case SE_ItemManaRegenCapIncrease:
new_bonus->ItemManaRegenCap += effect_value;
break;
case SE_Weapon_Stance: { case SE_Weapon_Stance: {
if (IsValidSpell(effect_value)) { //base1 is the spell_id of buff if (IsValidSpell(effect_value)) { //base1 is the spell_id of buff
if (base2 <= WEAPON_STANCE_TYPE_MAX) { //0=2H, 1=Shield, 2=DW if (base2 <= WEAPON_STANCE_TYPE_MAX) { //0=2H, 1=Shield, 2=DW
@ -4925,6 +4936,12 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
itembonuses.ItemHPRegenCap = effect_value; itembonuses.ItemHPRegenCap = effect_value;
break; break;
case SE_Worn_Endurance_Regen_Cap:
spellbonuses.ItemEnduranceRegenCap = effect_value;
aabonuses.ItemEnduranceRegenCap = effect_value;
itembonuses.ItemEnduranceRegenCap = effect_value;
break;
case SE_OffhandRiposteFail: case SE_OffhandRiposteFail:
spellbonuses.OffhandRiposteFail = effect_value; spellbonuses.OffhandRiposteFail = effect_value;
aabonuses.OffhandRiposteFail = effect_value; aabonuses.OffhandRiposteFail = effect_value;

View File

@ -781,7 +781,7 @@ int32 Client::CalcManaRegen(bool bCombat)
int32 Client::CalcManaRegenCap() int32 Client::CalcManaRegenCap()
{ {
int32 cap = RuleI(Character, ItemManaRegenCap) + aabonuses.ItemManaRegenCap; int32 cap = RuleI(Character, ItemManaRegenCap) + aabonuses.ItemManaRegenCap + itembonuses.ItemManaRegenCap + spellbonuses.ItemManaRegenCap;
return (cap * RuleI(Character, ManaRegenMultiplier) / 100); return (cap * RuleI(Character, ManaRegenMultiplier) / 100);
} }
@ -1751,7 +1751,7 @@ int32 Client::CalcEnduranceRegen(bool bCombat)
int32 Client::CalcEnduranceRegenCap() int32 Client::CalcEnduranceRegenCap()
{ {
int cap = RuleI(Character, ItemEnduranceRegenCap); int cap = RuleI(Character, ItemEnduranceRegenCap) + aabonuses.ItemEnduranceRegenCap + itembonuses.ItemEnduranceRegenCap + spellbonuses.ItemEnduranceRegenCap;
return (cap * RuleI(Character, EnduranceRegenMultiplier) / 100); return (cap * RuleI(Character, EnduranceRegenMultiplier) / 100);
} }

View File

@ -549,6 +549,7 @@ struct StatBonuses {
int32 DS_Mitigation_Percentage; // base = percent amt of DS mitigation. Negative value to reduce int32 DS_Mitigation_Percentage; // base = percent amt of DS mitigation. Negative value to reduce
int32 Pet_Crit_Melee_Damage_Pct_Owner; // base = percent mod for pet critcal damage from owner int32 Pet_Crit_Melee_Damage_Pct_Owner; // base = percent mod for pet critcal damage from owner
int32 Pet_Add_Atk; // base = Pet ATK bonus from owner int32 Pet_Add_Atk; // base = Pet ATK bonus from owner
int32 ItemEnduranceRegenCap; // modify endurance regen cap
int32 WeaponStance[WEAPON_STANCE_TYPE_MAX +1];// base = trigger spell id, base2 = 0 is 2h, 1 is shield, 2 is dual wield, [0]spid 2h, [1]spid shield, [2]spid DW int32 WeaponStance[WEAPON_STANCE_TYPE_MAX +1];// base = trigger spell id, base2 = 0 is 2h, 1 is shield, 2 is dual wield, [0]spid 2h, [1]spid shield, [2]spid DW
// AAs // AAs

View File

@ -3238,8 +3238,8 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
case SE_AddExtraAttackPct_1h_Primary: case SE_AddExtraAttackPct_1h_Primary:
case SE_AddExtraAttackPct_1h_Secondary: case SE_AddExtraAttackPct_1h_Secondary:
case SE_Skill_Base_Damage_Mod: case SE_Skill_Base_Damage_Mod:
case SE_Worn_Endurance_Regen_Cap:
case SE_Buy_AA_Rank: case SE_Buy_AA_Rank:
{ {
break; break;
} }