Implemented SPA 484

Implemented

SE_Fc_Spell_Damage_Amt_IncomingPC	484 // focus effect that modifies incoming spell damage by flat amount. Consider it a debuff that adds damage to incoming spells. Positive value to add additional damage.
This commit is contained in:
KayenEQ
2021-07-14 22:44:48 -04:00
parent a08fa7f2bf
commit 581b21109e
4 changed files with 31 additions and 2 deletions
+2 -2
View File
@@ -825,8 +825,8 @@ typedef enum {
//#define SE_Ff_Value_Max 480 //
//#define SE_Fc_Cast_Spell_On_Land 481 //
//#define SE_Skill_Base_Damage_Mod 482 //
#define SE_Fc_Spell_Damage_Pct_IncomingPC 483 //
//#define SE_Fc_Spell_Damage_Amt_IncomingPC 484 //
#define SE_Fc_Spell_Damage_Pct_IncomingPC 483 // Implemented - modifies incoming spell damage by percent
#define SE_Fc_Spell_Damage_Amt_IncomingPC 484 // Implemented - modifies incoming spell damage by flat amount. Typically adds damage to incoming spells.
//#define SE_Ff_CasterClass 485 //
//#define SE_Ff_Same_Caster 486 //
//#define SE_Extend_Tradeskill_Cap 487 //
+2
View File
@@ -3755,6 +3755,8 @@ uint8 Mob::IsFocusEffect(uint16 spell_id,int effect_index, bool AA,uint32 aa_eff
return focusFcDamagePctCrit;
case SE_FcDamageAmtIncoming:
return focusFcDamageAmtIncoming;
case SE_Fc_Spell_Damage_Amt_IncomingPC:
return focusFcSpellDamageAmtIncomingPC;
case SE_FcHealAmtIncoming:
return focusFcHealAmtIncoming;
case SE_FcHealPctIncoming:
+1
View File
@@ -136,6 +136,7 @@ typedef enum { //focus types
focusBlockNextSpell,
focusFcHealPctIncoming,
focusFcDamageAmtIncoming,
focusFcSpellDamageAmtIncomingPC,
focusFcHealAmtIncoming,
focusFcBaseEffects,
focusIncreaseNumHits,
+26
View File
@@ -3061,6 +3061,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
case SE_SkillDamageTaken:
case SE_FcSpellVulnerability:
case SE_Fc_Spell_Damage_Pct_IncomingPC:
case SE_Fc_Spell_Damage_Amt_IncomingPC:
case SE_FcTwincast:
case SE_DelayDeath:
case SE_CastOnFadeEffect:
@@ -4814,6 +4815,11 @@ int16 Client::CalcAAFocus(focusType type, const AA::Rank &rank, uint16 spell_id)
value = base1;
break;
case SE_Fc_Spell_Damage_Amt_IncomingPC:
if (type == focusFcSpellDamageAmtIncomingPC)
value = base1;
break;
case SE_FcHealAmtIncoming:
if (type == focusFcHealAmtIncoming)
value = base1;
@@ -5343,6 +5349,11 @@ int16 Mob::CalcFocusEffect(focusType type, uint16 focus_id, uint16 spell_id, boo
value = focus_spell.base[i];
break;
case SE_Fc_Spell_Damage_Amt_IncomingPC:
if (type == focusFcSpellDamageAmtIncomingPC)
value = focus_spell.base[i];
break;
case SE_FcHealAmtIncoming:
if (type == focusFcHealAmtIncoming)
value = focus_spell.base[i];
@@ -6328,6 +6339,7 @@ bool Mob::DoHPToManaCovert(uint16 mana_cost)
int32 Mob::GetFcDamageAmtIncoming(Mob *caster, uint32 spell_id, bool use_skill, uint16 skill )
{
//Used to check focus derived from SE_FcDamageAmtIncoming which adds direct damage to Spells or Skill based attacks.
//Used to check focus derived from SE_Fc_Spell_Damage_Amt_IncomingPC which adds direct damage to Spells.
int32 dmg = 0;
bool limit_exists = false;
bool skill_found = false;
@@ -6376,6 +6388,20 @@ int32 Mob::GetFcDamageAmtIncoming(Mob *caster, uint32 spell_id, bool use_skill,
}
}
}
if (spellbonuses.FocusEffects[focusFcSpellDamageAmtIncomingPC]) {
int buff_count = GetMaxTotalSlots();
for (int i = 0; i < buff_count; i++) {
if ((IsValidSpell(buffs[i].spellid) && (IsEffectInSpell(buffs[i].spellid, SE_FcDamageAmtIncoming)))) {
int32 focus = caster->CalcFocusEffect(focusFcSpellDamageAmtIncomingPC, buffs[i].spellid, spell_id);
if (focus) {
dmg += focus;
CheckNumHitsRemaining(NumHit::MatchingSpells, i);
}
}
}
}
return dmg;
}