Kayen: Implemented additional functionality for SE_CurrentHP utilizing base2 values. (ie limit to body type)

Kayen: Implemented SE_MitigateMeleeDamageSP (Partial Melee Rune that only is lowered if melee hits are over X amount of damage)
Kayen: Implemented SE_SpellOnAmtDmgTaken (Effect is triggered when X amount of damage is taken)
Kayen: Fix for various spell triggers/procs to now properly use their resist modifier.
Kayen: Fix to mob->ModSkillDmgTaken(skill_num, value), setting value to -1 will now properly effect all skills.
This commit is contained in:
KayenEQ
2013-12-13 21:29:35 -05:00
parent cd2825288d
commit f6d5e8031f
10 changed files with 283 additions and 14 deletions
+10 -9
View File
@@ -3130,14 +3130,14 @@ void Mob::TriggerOnCast(uint32 focus_spell, uint32 spell_id, bool aa_trigger)
trigger_spell_id = CastToClient()->CalcAAFocus(focusTriggerOnCast, focus_spell, spell_id);
if(IsValidSpell(trigger_spell_id) && GetTarget())
SpellFinished(trigger_spell_id, GetTarget());
SpellFinished(trigger_spell_id, GetTarget(), 10, 0, -1, spells[trigger_spell_id].ResistDiff);
}
else{
trigger_spell_id = CalcFocusEffect(focusTriggerOnCast, focus_spell, spell_id);
if(IsValidSpell(trigger_spell_id) && GetTarget()){
SpellFinished(trigger_spell_id, GetTarget());
SpellFinished(trigger_spell_id, GetTarget(),10, 0, -1, spells[trigger_spell_id].ResistDiff);
CheckHitsRemaining(0, false,false, 0, focus_spell);
}
}
@@ -3229,7 +3229,7 @@ void Mob::TryTwincast(Mob *caster, Mob *target, uint32 spell_id)
if(MakeRandomInt(0, 100) <= focus)
{
Message(MT_Spells,"You twincast %s!",spells[spell_id].name);
SpellFinished(spell_id, target);
SpellFinished(spell_id, target, 10, 0, -1, spells[spell_id].ResistDiff);
}
}
}
@@ -3247,7 +3247,7 @@ void Mob::TryTwincast(Mob *caster, Mob *target, uint32 spell_id)
{
if(MakeRandomInt(0, 100) <= focus)
{
SpellFinished(spell_id, target);
SpellFinished(spell_id, target, 10, 0, -1, spells[spell_id].ResistDiff);
}
}
}
@@ -3365,7 +3365,8 @@ bool Mob::TryFadeEffect(int slot)
{
for(int i = 0; i < EFFECT_COUNT; i++)
{
if (spells[buffs[slot].spellid].effectid[i] == SE_CastOnWearoff || spells[buffs[slot].spellid].effectid[i] == SE_EffectOnFade)
if (spells[buffs[slot].spellid].effectid[i] == SE_CastOnWearoff || spells[buffs[slot].spellid].effectid[i] == SE_EffectOnFade
|| spells[buffs[slot].spellid].effectid[i] == SE_SpellOnAmtDmgTaken)
{
uint16 spell_id = spells[buffs[slot].spellid].base[i];
BuffFadeBySlot(slot);
@@ -3410,7 +3411,7 @@ void Mob::TrySympatheticProc(Mob *target, uint32 spell_id)
SpellFinished(focus_trigger, target);
else
SpellFinished(focus_trigger, this);
SpellFinished(focus_trigger, this, 10, 0, -1, spells[focus_trigger].ResistDiff);
}
// For detrimental spells, if the triggered spell is beneficial, then it will land on the caster
// if the triggered spell is also detrimental, then it will land on the target
@@ -3420,7 +3421,7 @@ void Mob::TrySympatheticProc(Mob *target, uint32 spell_id)
SpellFinished(focus_trigger, this);
else
SpellFinished(focus_trigger, target);
SpellFinished(focus_trigger, target, 10, 0, -1, spells[focus_trigger].ResistDiff);
}
CheckHitsRemaining(0, false,false, 0, focus_spell);
}
@@ -4419,7 +4420,7 @@ void Mob::ModSkillDmgTaken(SkillUseTypes skill_num, int value)
SkillDmgTaken_Mod[skill_num] = value;
else if (skill_num == 255)
else if (skill_num == 255 || skill_num == -1)
SkillDmgTaken_Mod[HIGHEST_SKILL+1] = value;
}
@@ -4428,7 +4429,7 @@ int16 Mob::GetModSkillDmgTaken(const SkillUseTypes skill_num)
if (skill_num <= HIGHEST_SKILL)
return SkillDmgTaken_Mod[skill_num];
else if (skill_num == 255)
else if (skill_num == 255 || skill_num == -1)
return SkillDmgTaken_Mod[HIGHEST_SKILL+1];
return 0;