Core/Misc: Reduce number of player spec hardcoded checks

This commit is contained in:
Shauren
2023-08-06 21:40:10 +02:00
parent e71b2f62c1
commit 054723241e
9 changed files with 41 additions and 107 deletions

View File

@@ -419,50 +419,18 @@ struct npc_twisted_visage : public ScriptedAI
void AttackStart(Unit* who) override
{
switch (_playerClass)
{
case CLASS_SHAMAN:
switch (_playerSpec)
{
case TALENT_SPEC_SHAMAN_ELEMENTAL:
case TALENT_SPEC_SHAMAN_RESTORATION:
ScriptedAI::AttackStartCaster(who, 25.0f);
break;
default:
break;
}
break;
case CLASS_DRUID:
switch (_playerSpec)
{
case TALENT_SPEC_DRUID_BALANCE:
case TALENT_SPEC_DRUID_RESTORATION:
ScriptedAI::AttackStartCaster(who, 25.0f);
break;
default:
break;
}
break;
case CLASS_PRIEST:
case CLASS_HUNTER:
case CLASS_MAGE:
case CLASS_WARLOCK:
ScriptedAI::AttackStartCaster(who, 25.0f);
break;
case CLASS_ROGUE:
ScriptedAI::AttackStart(who);
break;
default:
ScriptedAI::AttackStart(who);
break;
}
ChrSpecializationEntry const* chrSpecialization = sChrSpecializationStore.LookupEntry(_playerSpec);
if (chrSpecialization && chrSpecialization->GetFlags().HasFlag(ChrSpecializationFlag::Ranged))
ScriptedAI::AttackStartCaster(who, 25.0f);
else
ScriptedAI::AttackStart(who);
}
void SetData(uint32 type, uint32 data) override
{
if (type == DATA_TWISTED_VISAGE_PLAYER_CLASS)
{
if (data > CLASS_NONE && data <= CLASS_DRUID)
if (data > CLASS_NONE && data < MAX_CLASSES)
_playerClass = data;
}
else if (type == DATA_TWISTED_VISAGE_PLAYER_SPEC && _playerClass != CLASS_NONE)

View File

@@ -1099,13 +1099,13 @@ class spell_sindragosa_unchained_magic : public SpellScript
continue;
ChrSpecializationEntry const* specialization = sChrSpecializationStore.LookupEntry(player->GetPrimarySpecialization());
if (specialization->Role == 1)
if (specialization->GetRole() == ChrSpecializationRole::Healer)
{
healers.push_back(target);
continue;
}
if (specialization->Flags & CHR_SPECIALIZATION_FLAG_CASTER)
if (specialization->GetFlags().HasFlag(ChrSpecializationFlag::Caster))
casters.push_back(target);
}

View File

@@ -804,7 +804,7 @@ class spell_dru_innervate : public SpellScript
return SPELL_FAILED_BAD_TARGETS;
ChrSpecializationEntry const* spec = sChrSpecializationStore.LookupEntry(target->GetPrimarySpecialization());
if (!spec || spec->Role != 1)
if (!spec || spec->GetRole() != ChrSpecializationRole::Healer)
return SPELL_FAILED_BAD_TARGETS;
return SPELL_CAST_OK;