From 3bda8251b917a06271a3d58852ddbbdb12d14ab5 Mon Sep 17 00:00:00 2001 From: Kinglykrab <89047260+Kinglykrab@users.noreply.github.com> Date: Fri, 29 Jul 2022 19:23:20 -0400 Subject: [PATCH] [Rules] Add Rule to allow Assassinate on non-Humanoid body types. (#2331) --- common/ruletypes.h | 1 + zone/special_attacks.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/common/ruletypes.h b/common/ruletypes.h index c40335eb3..4d90bd6f8 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -487,6 +487,7 @@ RULE_INT(Combat, FrontalStunImmunityClasses, 0, "Bitmask for Classes than have f RULE_BOOL(Combat, NPCsUseFrontalStunImmunityClasses, false, "Enable or disable NPCs using frontal stun immunity Classes from Combat:FrontalStunImmunityClasses, false by default.") RULE_INT(Combat, FrontalStunImmunityRaces, 512, "Bitmask for Races than have frontal stun immunity, Ogre (512) only by default.") RULE_BOOL(Combat, NPCsUseFrontalStunImmunityRaces, true, "Enable or disable NPCs using frontal stun immunity Races from Combat:FrontalStunImmunityRaces, true by default.") +RULE_BOOL(Combat, AssassinateOnlyHumanoids, true, "Enable or disable Assassinate only being allowed on Humanoids, true by default.") RULE_BOOL(Combat, HeadshotOnlyHumanoids, true, "Enable or disable Headshot only being allowed on Humanoids, true by default.") RULE_CATEGORY_END() diff --git a/zone/special_attacks.cpp b/zone/special_attacks.cpp index a4cee5846..e545ace88 100644 --- a/zone/special_attacks.cpp +++ b/zone/special_attacks.cpp @@ -2189,8 +2189,13 @@ int Mob::TryHeadShot(Mob *defender, EQ::skills::SkillType skillInUse) int Mob::TryAssassinate(Mob *defender, EQ::skills::SkillType skillInUse) { - if (defender && (defender->GetBodyType() == BT_Humanoid) && !defender->IsClient() && GetLevel() >= 60 && - (skillInUse == EQ::skills::SkillBackstab || skillInUse == EQ::skills::SkillThrowing)) { + if ( + defender && + !defender->IsClient() && + GetLevel() >= 60 && + (skillInUse == EQ::skills::SkillBackstab || skillInUse == EQ::skills::SkillThrowing) && + (defender->GetBodyType() == BT_Humanoid || !RuleB(Combat, AssassinateOnlyHumanoids)) + ) { int chance = GetDEX(); if (skillInUse == EQ::skills::SkillBackstab) { chance = 100 * chance / (chance + 3500);