mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 03:08:26 +00:00
Fixes for numhits system
Implementation of new spell table fields Update and further implemention of CastRestriction
This commit is contained in:
+13
-5
@@ -1361,6 +1361,11 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce
|
||||
mlog(AA__MESSAGE, "Project Illusion overwrote target caster: %s spell id: %d was ON", GetName(), spell_id);
|
||||
targetType = ST_GroupClientAndPet;
|
||||
}
|
||||
|
||||
if (spell_target && !spell_target->PassCastRestriction(true, spells[spell_id].CastRestriction)){
|
||||
Message_StringID(13,SPELL_NEED_TAR);
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (targetType)
|
||||
{
|
||||
@@ -3355,7 +3360,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r
|
||||
}
|
||||
}
|
||||
// Reflect
|
||||
if(TryReflectSpell(spell_id) && spelltar && !reflect && IsDetrimentalSpell(spell_id) && this != spelltar) {
|
||||
if(spelltar && spelltar->TryReflectSpell(spell_id) && !reflect && IsDetrimentalSpell(spell_id) && this != spelltar) {
|
||||
int reflect_chance = 0;
|
||||
switch(RuleI(Spells, ReflectType))
|
||||
{
|
||||
@@ -3402,9 +3407,6 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r
|
||||
}
|
||||
}
|
||||
|
||||
if (spelltar && IsDetrimentalSpell(spell_id))
|
||||
spelltar->CheckNumHitsRemaining(3);
|
||||
|
||||
// resist check - every spell can be resisted, beneficial or not
|
||||
// add: ok this isn't true, eqlive's spell data is fucked up, buffs are
|
||||
// not all unresistable, so changing this to only check certain spells
|
||||
@@ -3438,6 +3440,8 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r
|
||||
}
|
||||
}
|
||||
|
||||
spelltar->CheckNumHitsRemaining(3);
|
||||
|
||||
safe_delete(action_packet);
|
||||
return false;
|
||||
}
|
||||
@@ -3575,7 +3579,7 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r
|
||||
safe_delete(action_packet);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// cause the effects to the target
|
||||
if(!spelltar->SpellEffect(this, spell_id, spell_effectiveness))
|
||||
{
|
||||
@@ -3588,6 +3592,10 @@ bool Mob::SpellOnTarget(uint16 spell_id, Mob* spelltar, bool reflect, bool use_r
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (spelltar && IsDetrimentalSpell(spell_id))
|
||||
spelltar->CheckNumHitsRemaining(3); //Incoming spells
|
||||
|
||||
// send the action packet again now that the spell is successful
|
||||
// NOTE: this is what causes the buff icon to appear on the client, if
|
||||
// this is a buff - but it sortof relies on the first packet.
|
||||
|
||||
Reference in New Issue
Block a user