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();
|
condMeets = unit->IsInWater();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case CONDITION_DAILY_QUEST_DONE:
|
||||||
|
{
|
||||||
|
if (Player* player = object->ToPlayer())
|
||||||
|
{
|
||||||
|
condMeets = player->IsDailyQuestDone(ConditionValue1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case CONDITION_QUEST_OBJECTIVE_PROGRESS:
|
case CONDITION_QUEST_OBJECTIVE_PROGRESS:
|
||||||
{
|
{
|
||||||
if (Player* player = object->ToPlayer())
|
if (Player* player = object->ToPlayer())
|
||||||
@@ -553,6 +561,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition()
|
|||||||
case CONDITION_IN_WATER:
|
case CONDITION_IN_WATER:
|
||||||
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER;
|
||||||
break;
|
break;
|
||||||
|
case CONDITION_DAILY_QUEST_DONE:
|
||||||
|
mask |= GRID_MAP_TYPE_MASK_PLAYER;
|
||||||
|
break;
|
||||||
case CONDITION_QUEST_OBJECTIVE_PROGRESS:
|
case CONDITION_QUEST_OBJECTIVE_PROGRESS:
|
||||||
mask |= GRID_MAP_TYPE_MASK_PLAYER;
|
mask |= GRID_MAP_TYPE_MASK_PLAYER;
|
||||||
break;
|
break;
|
||||||
@@ -1619,7 +1630,6 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
|
|||||||
cond->SourceEntry, uint32(cond->ConditionType));
|
cond->SourceEntry, uint32(cond->ConditionType));
|
||||||
return false;
|
return false;
|
||||||
case CONDITION_STAND_STATE:
|
case CONDITION_STAND_STATE:
|
||||||
case CONDITION_DAILY_QUEST_DONE:
|
|
||||||
case CONDITION_CHARMED:
|
case CONDITION_CHARMED:
|
||||||
case CONDITION_PET_TYPE:
|
case CONDITION_PET_TYPE:
|
||||||
case CONDITION_TAXI:
|
case CONDITION_TAXI:
|
||||||
@@ -1756,6 +1766,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond)
|
|||||||
case CONDITION_QUESTTAKEN:
|
case CONDITION_QUESTTAKEN:
|
||||||
case CONDITION_QUEST_NONE:
|
case CONDITION_QUEST_NONE:
|
||||||
case CONDITION_QUEST_COMPLETE:
|
case CONDITION_QUEST_COMPLETE:
|
||||||
|
case CONDITION_DAILY_QUEST_DONE:
|
||||||
case CONDITION_QUEST_SATISFY_EXCLUSIVE:
|
case CONDITION_QUEST_SATISFY_EXCLUSIVE:
|
||||||
{
|
{
|
||||||
if (!sObjectMgr->GetQuestTemplate(cond->ConditionValue1))
|
if (!sObjectMgr->GetQuestTemplate(cond->ConditionValue1))
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ enum ConditionTypes
|
|||||||
CONDITION_IN_WATER = 40, // 0 0 0 true if unit in water
|
CONDITION_IN_WATER = 40, // 0 0 0 true if unit in water
|
||||||
CONDITION_TERRAIN_SWAP = 41, // don't use on 3.3.5a
|
CONDITION_TERRAIN_SWAP = 41, // don't use on 3.3.5a
|
||||||
CONDITION_STAND_STATE = 42, // TODO: NOT SUPPORTED YET
|
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_CHARMED = 44, // TODO: NOT SUPPORTED YET
|
||||||
CONDITION_PET_TYPE = 45, // TODO: NOT SUPPORTED YET
|
CONDITION_PET_TYPE = 45, // TODO: NOT SUPPORTED YET
|
||||||
CONDITION_TAXI = 46, // 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)
|
void Player::SetWeeklyQuestStatus(uint32 quest_id)
|
||||||
{
|
{
|
||||||
m_weeklyquests.insert(quest_id);
|
m_weeklyquests.insert(quest_id);
|
||||||
|
|||||||
@@ -1495,6 +1495,7 @@ public:
|
|||||||
QuestGiverStatus GetQuestDialogStatus(Object* questGiver);
|
QuestGiverStatus GetQuestDialogStatus(Object* questGiver);
|
||||||
|
|
||||||
void SetDailyQuestStatus(uint32 quest_id);
|
void SetDailyQuestStatus(uint32 quest_id);
|
||||||
|
bool IsDailyQuestDone(uint32 quest_id);
|
||||||
void SetWeeklyQuestStatus(uint32 quest_id);
|
void SetWeeklyQuestStatus(uint32 quest_id);
|
||||||
void SetMonthlyQuestStatus(uint32 quest_id);
|
void SetMonthlyQuestStatus(uint32 quest_id);
|
||||||
void SetSeasonalQuestStatus(uint32 quest_id);
|
void SetSeasonalQuestStatus(uint32 quest_id);
|
||||||
|
|||||||
Reference in New Issue
Block a user