mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-05 17:42:24 +00:00
Fix Immune Melee Nonmagical logic (#1606)
This commit is contained in:
parent
203ba2d340
commit
5235dcee95
@ -990,32 +990,31 @@ int Mob::GetWeaponDamage(Mob *against, const EQ::ItemData *weapon_item) {
|
|||||||
|
|
||||||
//check to see if our weapons or fists are magical.
|
//check to see if our weapons or fists are magical.
|
||||||
if (against->GetSpecialAbility(IMMUNE_MELEE_NONMAGICAL)) {
|
if (against->GetSpecialAbility(IMMUNE_MELEE_NONMAGICAL)) {
|
||||||
if (weapon_item) {
|
if (GetSpecialAbility(SPECATK_MAGICAL)) {
|
||||||
|
dmg = 1;
|
||||||
|
}
|
||||||
|
//On live this occurs for pets and charmed pet >= level 10
|
||||||
|
else if (GetOwner() && GetLevel() >= RuleI(Combat, PetAttackMagicLevel)) {
|
||||||
|
//pets wouldn't actually use this but...
|
||||||
|
//it gives us an idea if we can hit due to the dual nature of this function
|
||||||
|
dmg = 1;
|
||||||
|
}
|
||||||
|
else if (weapon_item) {
|
||||||
if (weapon_item->Magic) {
|
if (weapon_item->Magic) {
|
||||||
dmg = weapon_item->Damage;
|
dmg = weapon_item->Damage;
|
||||||
|
|
||||||
//this is more for non weapon items, ex: boots for kick
|
//this is more for non weapon items, ex: boots for kick
|
||||||
//they don't have a dmg but we should be able to hit magical
|
//they don't have a dmg but we should be able to hit magical
|
||||||
dmg = dmg <= 0 ? 1 : dmg;
|
dmg = dmg <= 0 ? 1 : dmg;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ((GetClass() == MONK || GetClass() == BEASTLORD) && GetLevel() >= 30) {
|
||||||
|
dmg = GetHandToHandDamage();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ((GetClass() == MONK || GetClass() == BEASTLORD) && GetLevel() >= 30) {
|
return 0;
|
||||||
dmg = GetHandToHandDamage();
|
|
||||||
}
|
|
||||||
else if (GetOwner() && GetLevel() >= RuleI(Combat, PetAttackMagicLevel)) {
|
|
||||||
//pets wouldn't actually use this but...
|
|
||||||
//it gives us an idea if we can hit due to the dual nature of this function
|
|
||||||
dmg = 1;
|
|
||||||
}
|
|
||||||
else if (GetSpecialAbility(SPECATK_MAGICAL))
|
|
||||||
{
|
|
||||||
dmg = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@ -156,6 +156,9 @@ void Mob::DoSpecialAttackDamage(Mob *who, EQ::skills::SkillType skill, int32 bas
|
|||||||
if (my_hit.base_damage == 0)
|
if (my_hit.base_damage == 0)
|
||||||
my_hit.base_damage = GetBaseSkillDamage(my_hit.skill);
|
my_hit.base_damage = GetBaseSkillDamage(my_hit.skill);
|
||||||
|
|
||||||
|
if (base_damage = DMG_INVULNERABLE)
|
||||||
|
my_hit.damage_done = DMG_INVULNERABLE;
|
||||||
|
|
||||||
if (who->GetInvul() || who->GetSpecialAbility(IMMUNE_MELEE))
|
if (who->GetInvul() || who->GetSpecialAbility(IMMUNE_MELEE))
|
||||||
my_hit.damage_done = DMG_INVULNERABLE;
|
my_hit.damage_done = DMG_INVULNERABLE;
|
||||||
|
|
||||||
@ -1649,8 +1652,9 @@ void NPC::DoClassAttacks(Mob *target) {
|
|||||||
DoAnim(animKick, 0, false);
|
DoAnim(animKick, 0, false);
|
||||||
int32 dmg = GetBaseSkillDamage(EQ::skills::SkillKick);
|
int32 dmg = GetBaseSkillDamage(EQ::skills::SkillKick);
|
||||||
|
|
||||||
if (GetWeaponDamage(target, (const EQ::ItemData*)nullptr) <= 0)
|
if (GetWeaponDamage(target, (const EQ::ItemData*)nullptr) <= 0) {
|
||||||
dmg = DMG_INVULNERABLE;
|
dmg = DMG_INVULNERABLE;
|
||||||
|
}
|
||||||
|
|
||||||
reuse = (KickReuseTime + 3) * 1000;
|
reuse = (KickReuseTime + 3) * 1000;
|
||||||
DoSpecialAttackDamage(target, EQ::skills::SkillKick, dmg, GetMinDamage(), -1, reuse);
|
DoSpecialAttackDamage(target, EQ::skills::SkillKick, dmg, GetMinDamage(), -1, reuse);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user