mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-24 14:16:31 +00:00
fix(Core/Conditions): Implement CONDITION_DAILY_QUEST_DONE (#3050)
This commit is contained in:
@@ -361,6 +361,14 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo)
|
||||
condMeets = unit->IsInWater();
|
||||
break;
|
||||
}
|
||||
case CONDITION_DAILY_QUEST_DONE:
|
||||
{
|
||||
if (Player* player = object->ToPlayer())
|
||||
{
|
||||
condMeets = player->IsDailyQuestDone(ConditionValue1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CONDITION_QUEST_OBJECTIVE_PROGRESS:
|
||||
{
|
||||
if (Player* player = object->ToPlayer())
|
||||
@@ -553,6 +561,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition()
|
||||
case CONDITION_IN_WATER:
|
||||
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
||||
break;
|
||||
case CONDITION_DAILY_QUEST_DONE:
|
||||
mask |= GRID_MAP_TYPE_MASK_PLAYER;
|
||||
break;
|
||||
case CONDITION_QUEST_OBJECTIVE_PROGRESS:
|
||||
mask |= GRID_MAP_TYPE_MASK_PLAYER;
|
||||
break;
|
||||
@@ -1619,7 +1630,6 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
|
||||
cond->SourceEntry, uint32(cond->ConditionType));
|
||||
return false;
|
||||
case CONDITION_STAND_STATE:
|
||||
case CONDITION_DAILY_QUEST_DONE:
|
||||
case CONDITION_CHARMED:
|
||||
case CONDITION_PET_TYPE:
|
||||
case CONDITION_TAXI:
|
||||
@@ -1756,6 +1766,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
|
||||
case CONDITION_QUESTTAKEN:
|
||||
case CONDITION_QUEST_NONE:
|
||||
case CONDITION_QUEST_COMPLETE:
|
||||
case CONDITION_DAILY_QUEST_DONE:
|
||||
case CONDITION_QUEST_SATISFY_EXCLUSIVE:
|
||||
{
|
||||
if (!sObjectMgr->GetQuestTemplate(cond->ConditionValue1))
|
||||
|
||||
@@ -64,7 +64,7 @@ enum ConditionTypes
|
||||
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_DAILY_QUEST_DONE = 43, // TODO: NOT SUPPORTED YET
|
||||
CONDITION_DAILY_QUEST_DONE = 43, // quest id 0 0 true if daily quest has been completed for the day
|
||||
CONDITION_CHARMED = 44, // TODO: NOT SUPPORTED YET
|
||||
CONDITION_PET_TYPE = 45, // TODO: NOT SUPPORTED YET
|
||||
CONDITION_TAXI = 46, // TODO: NOT SUPPORTED YET
|
||||
|
||||
@@ -23624,6 +23624,22 @@ void Player::SetDailyQuestStatus(uint32 quest_id)
|
||||
}
|
||||
}
|
||||
|
||||
bool Player::IsDailyQuestDone(uint32 quest_id)
|
||||
{
|
||||
if (sObjectMgr->GetQuestTemplate(quest_id))
|
||||
{
|
||||
for (uint32 quest_daily_idx = 0; quest_daily_idx < PLAYER_MAX_DAILY_QUESTS; ++quest_daily_idx)
|
||||
{
|
||||
if (GetUInt32Value(PLAYER_FIELD_DAILY_QUESTS_1 + quest_daily_idx) == quest_id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void Player::SetWeeklyQuestStatus(uint32 quest_id)
|
||||
{
|
||||
m_weeklyquests.insert(quest_id);
|
||||
|
||||
@@ -1495,6 +1495,7 @@ public:
|
||||
QuestGiverStatus GetQuestDialogStatus(Object* questGiver);
|
||||
|
||||
void SetDailyQuestStatus(uint32 quest_id);
|
||||
bool IsDailyQuestDone(uint32 quest_id);
|
||||
void SetWeeklyQuestStatus(uint32 quest_id);
|
||||
void SetMonthlyQuestStatus(uint32 quest_id);
|
||||
void SetSeasonalQuestStatus(uint32 quest_id);
|
||||
|
||||
Reference in New Issue
Block a user