mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-26 15:16:24 +00:00
feat(Core/Conditions): CONDITION_STAND_STATE (#10287)
* cherry-pick commit (TrinityCore/TrinityCore@ea53f79)
This commit is contained in:
committed by
GitHub
parent
93a8d4fb63
commit
7b352b7658
@@ -500,6 +500,26 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo)
|
||||
condMeets = unit->HasAuraType(AuraType(ConditionValue1));
|
||||
break;
|
||||
}
|
||||
case CONDITION_STAND_STATE:
|
||||
{
|
||||
if (Unit* unit = object->ToUnit())
|
||||
{
|
||||
if (ConditionValue1 == 0)
|
||||
{
|
||||
condMeets = (unit->getStandState() == ConditionValue2);
|
||||
}
|
||||
else if (ConditionValue2 == 0)
|
||||
{
|
||||
condMeets = unit->IsStandState();
|
||||
}
|
||||
else if (ConditionValue2 == 1)
|
||||
{
|
||||
condMeets = unit->IsSitState();
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case CONDITION_DIFFICULTY_ID:
|
||||
{
|
||||
condMeets = object->GetMap()->GetDifficulty() == ConditionValue1;
|
||||
@@ -721,6 +741,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition()
|
||||
case CONDITION_HAS_AURA_TYPE:
|
||||
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
||||
break;
|
||||
case CONDITION_STAND_STATE:
|
||||
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
||||
break;
|
||||
case CONDITION_DIFFICULTY_ID:
|
||||
mask |= GRID_MAP_TYPE_MASK_ALL;
|
||||
break;
|
||||
@@ -1799,9 +1822,6 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
|
||||
case CONDITION_TERRAIN_SWAP:
|
||||
LOG_ERROR("sql.sql", "SourceEntry {} in `condition` table has a ConditionType that is not supported on 3.3.5a ({}), ignoring.", cond->SourceEntry, uint32(cond->ConditionType));
|
||||
return false;
|
||||
case CONDITION_STAND_STATE:
|
||||
LOG_ERROR("sql.sql", "SourceEntry {} in `condition` table has a ConditionType that is not yet supported on AzerothCore ({}), ignoring.", cond->SourceEntry, uint32(cond->ConditionType));
|
||||
return false;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -2383,6 +2403,28 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CONDITION_STAND_STATE:
|
||||
{
|
||||
bool valid = false;
|
||||
switch (cond->ConditionValue1)
|
||||
{
|
||||
case 0:
|
||||
valid = cond->ConditionValue2 <= UNIT_STAND_STATE_SUBMERGED;
|
||||
break;
|
||||
case 1:
|
||||
valid = cond->ConditionValue2 <= 1;
|
||||
break;
|
||||
default:
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
if (!valid)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "CONDITION_STAND_STATE has non-existing stand state ({},{}), skipped.", cond->ConditionValue1, cond->ConditionValue2);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CONDITION_DIFFICULTY_ID:
|
||||
if (cond->ConditionValue1 >= MAX_DIFFICULTY)
|
||||
{
|
||||
|
||||
@@ -74,7 +74,7 @@ enum ConditionTypes
|
||||
CONDITION_REALM_ACHIEVEMENT = 39, // achievement_id 0 0 true if realm achievement is complete
|
||||
CONDITION_IN_WATER = 40, // 0 0 0 true if unit in water
|
||||
CONDITION_TERRAIN_SWAP = 41, // don't use on 3.3.5a
|
||||
CONDITION_STAND_STATE = 42, // TODO: NOT SUPPORTED YET
|
||||
CONDITION_STAND_STATE = 42, // stateType state 0 true if unit matches specified sitstate (0,x: has exactly state x; 1,0: any standing state; 1,1: any sitting state;)
|
||||
CONDITION_DAILY_QUEST_DONE = 43, // quest id 0 0 true if daily quest has been completed for the day
|
||||
CONDITION_CHARMED = 44, // 0 0 0 true if unit is currently charmed
|
||||
CONDITION_PET_TYPE = 45, // mask 0 0 true if player has a pet of given type(s)
|
||||
|
||||
Reference in New Issue
Block a user