mirror of
https://github.com/EQEmu/Server.git
synced 2026-01-02 22:03:52 +00:00
Implement July 24, 2002 pet resist changes
This commit is contained in:
parent
0356c0a891
commit
6686346473
@ -4552,13 +4552,23 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
|
||||
|
||||
int target_resist = GetResist(resist_type);
|
||||
|
||||
// JULY 24, 2002 changes
|
||||
int level = GetLevel();
|
||||
if (IsPetOwnerClient() && caster->IsNPC() && !caster->IsPetOwnerClient()) {
|
||||
auto owner = GetOwner();
|
||||
if (owner != nullptr) {
|
||||
target_resist = std::max(target_resist, owner->GetResist(resist_type));
|
||||
level = owner->GetLevel();
|
||||
}
|
||||
}
|
||||
|
||||
//Setup our base resist chance.
|
||||
int resist_chance = 0;
|
||||
int level_mod = 0;
|
||||
|
||||
//Adjust our resist chance based on level modifiers
|
||||
uint8 caster_level = level_override > 0 ? level_override : caster->GetLevel();
|
||||
int temp_level_diff = GetLevel() - caster_level;
|
||||
int temp_level_diff = level - caster_level;
|
||||
|
||||
//Physical Resists are calclated using their own formula derived from extensive parsing.
|
||||
if (resist_type == RESIST_PHYSICAL) {
|
||||
@ -4567,7 +4577,7 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
|
||||
|
||||
else {
|
||||
|
||||
if(IsNPC() && GetLevel() >= RuleI(Casting,ResistFalloff))
|
||||
if(IsNPC() && level >= RuleI(Casting,ResistFalloff))
|
||||
{
|
||||
int a = (RuleI(Casting,ResistFalloff)-1) - caster_level;
|
||||
if(a > 0)
|
||||
@ -4580,7 +4590,7 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
|
||||
}
|
||||
}
|
||||
|
||||
if(IsClient() && GetLevel() >= 21 && temp_level_diff > 15)
|
||||
if(IsClient() && level >= 21 && temp_level_diff > 15)
|
||||
{
|
||||
temp_level_diff = 15;
|
||||
}
|
||||
@ -4596,16 +4606,16 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
|
||||
level_mod = -level_mod;
|
||||
}
|
||||
|
||||
if(IsNPC() && (caster_level - GetLevel()) < -20)
|
||||
if(IsNPC() && (caster_level - level) < -20)
|
||||
{
|
||||
level_mod = 1000;
|
||||
}
|
||||
|
||||
//Even more level stuff this time dealing with damage spells
|
||||
if(IsNPC() && IsDamageSpell(spell_id) && GetLevel() >= 17)
|
||||
if(IsNPC() && IsDamageSpell(spell_id) && level >= 17)
|
||||
{
|
||||
int level_diff;
|
||||
if(GetLevel() >= RuleI(Casting,ResistFalloff))
|
||||
if(level >= RuleI(Casting,ResistFalloff))
|
||||
{
|
||||
level_diff = (RuleI(Casting,ResistFalloff)-1) - caster_level;
|
||||
if(level_diff < 0)
|
||||
@ -4615,7 +4625,7 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
|
||||
}
|
||||
else
|
||||
{
|
||||
level_diff = GetLevel() - caster_level;
|
||||
level_diff = level - caster_level;
|
||||
}
|
||||
level_mod += (2 * level_diff);
|
||||
}
|
||||
@ -4726,17 +4736,17 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
|
||||
|
||||
if(IsNPC())
|
||||
{
|
||||
if(GetLevel() > caster_level && GetLevel() >= 17 && caster_level <= 50)
|
||||
if(level > caster_level && level >= 17 && caster_level <= 50)
|
||||
{
|
||||
partial_modifier += 5;
|
||||
}
|
||||
|
||||
if(GetLevel() >= 30 && caster_level < 50)
|
||||
if(level >= 30 && caster_level < 50)
|
||||
{
|
||||
partial_modifier += (caster_level - 25);
|
||||
}
|
||||
|
||||
if(GetLevel() < 15)
|
||||
if(level < 15)
|
||||
{
|
||||
partial_modifier -= 5;
|
||||
}
|
||||
@ -4744,9 +4754,9 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
|
||||
|
||||
if(caster->IsNPC())
|
||||
{
|
||||
if((GetLevel() - caster_level) >= 20)
|
||||
if((level - caster_level) >= 20)
|
||||
{
|
||||
partial_modifier += (GetLevel() - caster_level) * 1.5;
|
||||
partial_modifier += (level - caster_level) * 1.5;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user