feat(Core/Conditions): Add GoState condition for near gameobject. (#17524)

* feat(Core/Conditions): Add GoState check for near gameobject.

* log_error

* Update ConditionMgr.h
This commit is contained in:
avarishd
2023-10-21 01:41:26 +03:00
committed by GitHub
parent 332ff49c13
commit 359985dd4c
2 changed files with 19 additions and 5 deletions

View File

@@ -289,8 +289,22 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo)
}
case CONDITION_NEAR_GAMEOBJECT:
{
condMeets = static_cast<bool>(GetClosestGameObjectWithEntry(object, ConditionValue1, static_cast<float>(ConditionValue2)));
break;
if (!ConditionValue3)
{
condMeets = static_cast<bool>(GetClosestGameObjectWithEntry(object, ConditionValue1, static_cast<float>(ConditionValue2)));
break;
}
else
{
if (GameObject* go = GetClosestGameObjectWithEntry(object, ConditionValue1, static_cast<float>(ConditionValue2)))
{
if ((go->GetGoState() == GO_STATE_READY && ConditionValue3 == 1) || (go->GetGoState() != GO_STATE_READY && ConditionValue3 == 2))
condMeets = true;
else
condMeets = false;
}
break;
}
}
case CONDITION_OBJECT_ENTRY_GUID:
{
@@ -2124,8 +2138,8 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
LOG_ERROR("sql.sql", "NearGameObject condition has non existing gameobject template entry ({}), skipped", cond->ConditionValue1);
return false;
}
if (cond->ConditionValue3)
LOG_ERROR("sql.sql", "NearGameObject condition has useless data in value3 ({})!", cond->ConditionValue3);
if (cond->ConditionValue3 > 2)
LOG_ERROR("sql.sql", "NearGameObject condition for gameobject ID ({}) has data over 2 for value3 ({})!", cond->ConditionValue1, cond->ConditionValue3);
break;
}
case CONDITION_OBJECT_ENTRY_GUID: