mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 18:52:22 +00:00
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:
+10
-9
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user