From a46443b95e04239b544da38e8457fbf089176951 Mon Sep 17 00:00:00 2001 From: nytmyr <53322305+nytmyr@users.noreply.github.com> Date: Mon, 11 Dec 2023 13:31:33 -0600 Subject: [PATCH] [Bots] Add rule to toggle DT hitting owner (#3757) **Bots, CazicTouchBotsOwner** is a rule that will toggle whether or not DT will hit the targeted bot or the owner. Similar to how **Spells, CazicTouchTargetsPetOwner** functions except for bots. --- common/ruletypes.h | 1 + zone/spells.cpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/common/ruletypes.h b/common/ruletypes.h index b36a3f7419..f0bd0c63b7 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -651,6 +651,7 @@ RULE_INT(Bots, OldResurrectionSicknessSpell, 757, "757 is Default Old Resurrecti RULE_INT(Bots, ResurrectionSicknessSpell, 756, "756 is Default Resurrection Sickness Spell") RULE_BOOL(Bots, AllowPickpocketCommand, true, "Allows the use of the bot command 'pickpocket'") RULE_BOOL(Bots, BotHealOnLevel, false, "Setting whether a bot should heal completely when leveling. Default FALSE.") +RULE_BOOL(Bots, CazicTouchBotsOwner, true, "Default True. Cazic Touch/DT will hit bot owner rather than bot.") RULE_CATEGORY_END() RULE_CATEGORY(Chat) diff --git a/zone/spells.cpp b/zone/spells.cpp index 91451a6858..ac958e4955 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -2301,14 +2301,21 @@ bool Mob::SpellFinished(uint16 spell_id, Mob *spell_target, CastingSlot slot, in return false; //Death Touch targets the pet owner instead of the pet when said pet is tanking. - if ((RuleB(Spells, CazicTouchTargetsPetOwner) && spell_target && spell_target->HasOwner()) && (spell_id == SPELL_CAZIC_TOUCH || spell_id == SPELL_TOUCH_OF_VINITRAS)) { - Mob* owner = spell_target->GetOwner(); + if ((RuleB(Spells, CazicTouchTargetsPetOwner) && spell_target && spell_target->HasOwner()) && !spell_target->IsBot() && (spell_id == SPELL_CAZIC_TOUCH || spell_id == SPELL_TOUCH_OF_VINITRAS)) { + Mob* owner = spell_target->GetOwner(); if (owner) { spell_target = owner; } } + if ((RuleB(Bots, CazicTouchBotsOwner) && spell_target && spell_target->IsBot()) && spell_id == (SPELL_CAZIC_TOUCH || spell_id == SPELL_TOUCH_OF_VINITRAS)) { + auto bot_owner = spell_target->GetOwner(); + if (bot_owner) { + spell_target = bot_owner; + } + } + //Guard Assist Code if (RuleB(Character, PVPEnableGuardFactionAssist) && spell_target && IsDetrimentalSpell(spell_id) && spell_target != this) { if (IsClient() && spell_target->IsClient()|| (HasOwner() && GetOwner()->IsClient() && spell_target->IsClient())) {