mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 06:21:28 +00:00
[Bug Fix] Cleanup NPC Mana Tap Logic (#4134)
* [Bug Fix] Cleanup NPC Mana Tap Logic Mana Tap rule logic was invalid - Cleaned up and simplified, either we care about npc mana or we dont. * Updated for bypass all rule * Change so melee targets get blocked even with requiremana rule off --------- Co-authored-by: Trust <fryguy503@gmail.com>
This commit is contained in:
parent
69c42510ca
commit
0c582cc4f9
@ -495,6 +495,7 @@ RULE_BOOL(Spells, EvacClearCharmPet, false, "Enable to have evac in zone clear c
|
||||
RULE_BOOL(Spells, ManaTapsRequireNPCMana, false, "Enabling will require target to have mana to tap. Default off as many npc's are caster class with 0 mana and need fixed.")
|
||||
RULE_INT(Spells, HarmTouchCritRatio, 200, "Harmtouch crit bonus, on top of BaseCritRatio")
|
||||
RULE_BOOL(Spells, UseClassicSpellFocus, false, "Enabling will tell the server to handle random focus damage as classic spell imports lack the limit values.")
|
||||
RULE_BOOL(Spells, ManaTapsOnAnyClass, false, "Enabling this will allow you to cast mana taps on any class, this will bypass ManaTapsRequireNPCMana rule.")
|
||||
RULE_CATEGORY_END()
|
||||
|
||||
RULE_CATEGORY(Combat)
|
||||
|
||||
@ -221,18 +221,12 @@ bool Mob::CastSpell(uint16 spell_id, uint16 target_id, CastingSlot slot,
|
||||
BuffFadeByEffect(SE_NegateIfCombat);
|
||||
}
|
||||
|
||||
// check to see if target is a caster mob before performing a mana tap
|
||||
if(GetTarget() && IsManaTapSpell(spell_id)) {
|
||||
if (
|
||||
GetTarget()->GetCasterClass() == 'N' &&
|
||||
(
|
||||
!RuleB(Spells, ManaTapsRequireNPCMana) ||
|
||||
(
|
||||
RuleB(Spells, ManaTapsRequireNPCMana) &&
|
||||
GetTarget()->GetMana() == 0
|
||||
)
|
||||
)
|
||||
) {
|
||||
// If melee, block if ManaTapsOnAnyClass rule is false
|
||||
// if caster, block if ManaTapsRequireNPCMana and no mana
|
||||
bool melee_block = !RuleB(Spells, ManaTapsOnAnyClass);
|
||||
bool caster_block = (GetTarget()->GetCasterClass() != 'N' && RuleB(Spells, ManaTapsRequireNPCMana) && GetTarget()->GetMana() == 0);
|
||||
if (melee_block || caster_block) {
|
||||
InterruptSpell(TARGET_NO_MANA, 0x121, spell_id);
|
||||
return false;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user