[8976] Implement CONDITION_RACE_CLASS

Condition has independent value1 (race mask) and value2 (class mask) fields and can be used with one or both.

Signed-off-by: NoFantasy <nofantasy@nf.no>
This commit is contained in:
NoFantasy 2009-12-12 17:51:15 +01:00
parent d897f55970
commit 4f5ed57fc2
3 changed files with 30 additions and 4 deletions

View file

@ -7253,6 +7253,10 @@ bool PlayerCondition::Meets(Player const * player) const
}
return false;
}
case CONDITION_RACE_CLASS:
if ((!value1 || (player->getRaceMask() & value1)) && (!value2 || (player->getClassMask() & value2)))
return true;
return false;
default:
return false;
}
@ -7406,6 +7410,27 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
}
break;
}
case CONDITION_RACE_CLASS:
{
if (!value1 && !value2)
{
sLog.outErrorDb("Race_class condition has both values like 0, skipped");
return false;
}
if (value1 && !(value1 & RACEMASK_ALL_PLAYABLE))
{
sLog.outErrorDb("Race_class condition has invalid player class %u, skipped", value1);
return false;
}
if (value2 && !(value2 & CLASSMASK_ALL_PLAYABLE))
{
sLog.outErrorDb("Race_class condition has invalid race mask %u, skipped", value2);
return false;
}
break;
}
case CONDITION_NONE:
break;
}