diff options
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
| -rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 796080a020f..e154df64f7a 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -2230,9 +2230,10 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) const } case CONDITION_RACE: { - if (uint32(cond->ConditionValue1 & ~RACEMASK_ALL_PLAYABLE)) // uint32 works thanks to weird index remapping in racemask + Trinity::RaceMask<uint64> invalidRaceMask = Trinity::RaceMask<uint64>{ cond->ConditionValue1 } & ~RACEMASK_ALL_PLAYABLE; + if (!invalidRaceMask.IsEmpty()) // uint32 works thanks to weird index remapping in racemask { - TC_LOG_ERROR("sql.sql", "%s has non existing racemask (" UI64FMTD "), skipped.", cond->ToString(true).c_str(), cond->ConditionValue1 & ~RACEMASK_ALL_PLAYABLE); + TC_LOG_ERROR("sql.sql", "%s has non existing racemask (" UI64FMTD "), skipped.", cond->ToString(true).c_str(), invalidRaceMask.RawValue); return false; } break; @@ -2821,7 +2822,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio } } - if (condition->RaceMask && !condition->RaceMask.HasRace(player->GetRace())) + if (!condition->RaceMask.IsEmpty() && !condition->RaceMask.HasRace(player->GetRace())) return false; if (condition->ClassMask && !(player->GetClassMask() & condition->ClassMask)) |
