DB/PlayerCondition

From wowdev
Jump to: navigation, search

≥ Cata

6.0.1.18179

struct PlayerConditionRec {
  uint32_t m_ID;
  uint32_t m_flags;
  uint32_t m_minLevel;
  uint32_t m_maxLevel;
  uint32_t m_raceMask;
  uint32_t m_classMask;
  uint32_t m_gender;
  uint32_t m_nativeGender;
  uint32_t m_skillID[4];
  uint32_t m_minSkill[4];
  uint32_t m_maxSkill[4];
  uint32_t m_skillLogic;
  uint32_t m_languageID;
  uint32_t m_minLanguage;
  uint32_t m_maxLanguage;
  uint32_t m_minFactionID[3];
  uint32_t m_maxFactionID;
  uint32_t m_minReputation[3];
  uint32_t m_maxReputation;
  uint32_t m_reputationLogic;
  uint32_t m_minPVPRank;
  uint32_t m_maxPVPRank;
  uint32_t m_pvpMedal;
  uint32_t m_prevQuestLogic;
  uint32_t m_prevQuestID[4];
  uint32_t m_currQuestLogic;
  uint32_t m_currQuestID[4];
  uint32_t m_currentCompletedQuestLogic;
  uint32_t m_currentCompletedQuestID[4];
  uint32_t m_spellLogic;
  uint32_t m_spellID[4];
  uint32_t m_itemLogic;
  uint32_t m_itemID[4];
  uint32_t m_itemCount[4];
  uint32_t m_itemFlags;
  uint32_t m_explored[2];
  uint32_t m_time[2];
  uint32_t m_auraSpellLogic;
  uint32_t m_auraSpellID[4];
  uint32_t m_worldStateExpressionID;
  uint32_t m_weatherID;
  uint32_t m_partyStatus;
  uint32_t m_lifetimeMaxPVPRank;
  uint32_t m_achievementLogic;
  uint32_t m_achievement[4];
  uint32_t m_lfgLogic;
  uint32_t m_lfgStatus[4];
  uint32_t m_lfgCompare[4];
  uint32_t m_lfgValue[4];
  uint32_t m_areaLogic;
  uint32_t m_areaID[4];
  uint32_t m_currencyLogic;
  uint32_t m_currencyID[4];
  uint32_t m_currencyCount[4];
  uint32_t m_questKillID;
  uint32_t m_questKillLogic;
  uint32_t m_questKillMonster[4];
  uint32_t m_minExpansionLevel;
  uint32_t m_maxExpansionLevel;
  uint32_t m_minExpansionTier;
  uint32_t m_maxExpansionTier;
  uint32_t m_minGuildLevel;
  uint32_t m_maxGuildLevel;
  uint32_t m_phaseUseFlags;
  uint32_t m_phaseID;
  uint32_t m_phaseGroupID;
  uint32_t m_minAvgItemLevel;
  uint32_t m_maxAvgItemLevel;
  uint32_t m_minAvgEquippedItemLevel;
  uint32_t m_maxAvgEquippedItemLevel;
  uint32_t m_chrSpecializationIndex;
  uint32_t m_chrSpecializationRole;
  stringref m_failure_description_lang;
  uint32_t m_powerType;
  uint32_t m_powerTypeComp;
  uint32_t m_powerTypeValue;
};

Logic fields

The logic fields dictate the formula used to validate a specific value of the condition. They are split into two parts:

  • The low 16 bits is a uint2_t array documenting the logical operators (1 = AND, 2 = OR). They are applied in order. Naturally, if there is only one value this may be zero filled.
  • The high 16 bits is an optional mask determining what indices of the associated array are required. If this is unused then the operators are applied sequentially to the array values.

e.g. a PrevQuestLogic value of 720917 (0000000000001011 0000000000010101) would evaluate to PrevQuestID[0] && PrevQuestID[1] && PrevQuestID[3] whereby the operator array comprises of three 1s (AND) and the mask omitting the 3rd element.

Flags

Value Description
0x2 validated account wide
0x4 use CGUnit_C::GetMaxPower instead of m_powerTypeValue CGPlayer_C::MatchesCondition

m_powerTypeComp

Value
1 equal
2 not equal
3 greater than
4 greater than or equal
5 less than
6 less than or equal