mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-22 16:28:28 +00:00
Implemented SPA 515,516,518,496
Implemented SE_AC_Avoidance_Max_Percent 515 SE_AC_Mitigation_Max_Percent 516 SE_Attack_Accuracy_Max_Percent 518 Above are stackable defense and offensive mods SE_Critical_Melee_Damage_Mod_Max 496 - This is a non stackable melee critical modifier
This commit is contained in:
@@ -1102,6 +1102,19 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_Critical_Melee_Damage_Mod_Max:
|
||||
{
|
||||
// Bad data or unsupported new skill
|
||||
if (base2 > EQ::skills::HIGHEST_SKILL)
|
||||
break;
|
||||
int skill = base2 == ALL_SKILLS ? EQ::skills::HIGHEST_SKILL + 1 : base2;
|
||||
if (base1 < 0 && newbon->CritDmgModNoStack[skill] > base1)
|
||||
newbon->CritDmgModNoStack[skill] = base1;
|
||||
else if (base1 > 0 && newbon->CritDmgModNoStack[skill] < base1)
|
||||
newbon->CritDmgModNoStack[skill] = base1;
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_CriticalSpellChance: {
|
||||
newbon->CriticalSpellChance += base1;
|
||||
|
||||
@@ -1491,6 +1504,14 @@ void Mob::ApplyAABonuses(const AA::Rank &rank, StatBonuses *newbon)
|
||||
newbon->Attack_Accuracy_Max_Percent += base1;
|
||||
break;
|
||||
|
||||
case SE_AC_Mitigation_Max_Percent:
|
||||
newbon->AC_Mitigation_Max_Percent += base1;
|
||||
break;
|
||||
|
||||
case SE_AC_Avoidance_Max_Percent:
|
||||
newbon->AC_Avoidance_Max_Percent += base1;
|
||||
break;
|
||||
|
||||
// to do
|
||||
case SE_PetDiscipline:
|
||||
break;
|
||||
@@ -2489,6 +2510,20 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_Critical_Melee_Damage_Mod_Max:
|
||||
{
|
||||
// Bad data or unsupported new skill
|
||||
if (base2 > EQ::skills::HIGHEST_SKILL)
|
||||
break;
|
||||
int skill = base2 == ALL_SKILLS ? EQ::skills::HIGHEST_SKILL + 1 : base2;
|
||||
if (effect_value < 0 && new_bonus->CritDmgModNoStack[skill] > effect_value)
|
||||
new_bonus->CritDmgModNoStack[skill] = effect_value;
|
||||
else if (effect_value > 0 && new_bonus->CritDmgModNoStack[skill] < effect_value) {
|
||||
new_bonus->CritDmgModNoStack[skill] = effect_value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_ReduceSkillTimer:
|
||||
{
|
||||
if(new_bonus->SkillReuseTime[base2] < effect_value)
|
||||
@@ -3266,6 +3301,17 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses *ne
|
||||
case SE_Attack_Accuracy_Max_Percent:
|
||||
new_bonus->Attack_Accuracy_Max_Percent += effect_value;
|
||||
break;
|
||||
|
||||
|
||||
case SE_AC_Mitigation_Max_Percent:
|
||||
new_bonus->AC_Mitigation_Max_Percent += effect_value;
|
||||
break;
|
||||
|
||||
case SE_AC_Avoidance_Max_Percent:
|
||||
new_bonus->AC_Avoidance_Max_Percent += effect_value;
|
||||
break;
|
||||
|
||||
|
||||
|
||||
//Special custom cases for loading effects on to NPC from 'npc_spels_effects' table
|
||||
if (IsAISpellEffect) {
|
||||
@@ -4274,6 +4320,17 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_Critical_Melee_Damage_Mod_Max:
|
||||
{
|
||||
for (int e = 0; e < EQ::skills::HIGHEST_SKILL + 1; e++)
|
||||
{
|
||||
spellbonuses.CritDmgModNoStack[e] = effect_value;
|
||||
aabonuses.CritDmgModNoStack[e] = effect_value;
|
||||
itembonuses.CritDmgModNoStack[e] = effect_value;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SE_SkillDamageAmount:
|
||||
{
|
||||
for (int e = 0; e < EQ::skills::HIGHEST_SKILL + 1; e++)
|
||||
@@ -4790,6 +4847,25 @@ void Mob::NegateSpellsBonuses(uint16 spell_id)
|
||||
aabonuses.IllusionPersistence = false;
|
||||
break;
|
||||
|
||||
case SE_Attack_Accuracy_Max_Percent:
|
||||
spellbonuses.Attack_Accuracy_Max_Percent = effect_value;
|
||||
itembonuses.Attack_Accuracy_Max_Percent = effect_value;
|
||||
aabonuses.Attack_Accuracy_Max_Percent = effect_value;
|
||||
break;
|
||||
|
||||
|
||||
case SE_AC_Mitigation_Max_Percent:
|
||||
spellbonuses.AC_Mitigation_Max_Percent = effect_value;
|
||||
itembonuses.AC_Mitigation_Max_Percent = effect_value;
|
||||
aabonuses.AC_Mitigation_Max_Percent = effect_value;
|
||||
break;
|
||||
|
||||
case SE_AC_Avoidance_Max_Percent:
|
||||
spellbonuses.AC_Avoidance_Max_Percent = effect_value;
|
||||
itembonuses.AC_Avoidance_Max_Percent = effect_value;
|
||||
aabonuses.AC_Avoidance_Max_Percent = effect_value;
|
||||
break;
|
||||
|
||||
case SE_SkillProcSuccess:{
|
||||
for(int e = 0; e < MAX_SKILL_PROCS; e++)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user