mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[10042] Implement CONDITION_QUESTAVAILABLE.
Also do come constatification of quest status check functions and fix one unsafe use std::map operator[]. Never never use std::map operator [] for _read_ access. Good chance corrupt related structure state ;) Not in found case but in general.
This commit is contained in:
parent
5ea6815ea1
commit
5eabf12111
6 changed files with 193 additions and 179 deletions
|
|
@ -7455,6 +7455,13 @@ bool PlayerCondition::Meets(Player const * player) const
|
||||||
return data->CheckConditionCriteriaMeet(player, value1, value2);
|
return data->CheckConditionCriteriaMeet(player, value1, value2);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
case CONDITION_QUESTAVAILABLE:
|
||||||
|
{
|
||||||
|
if (Quest const* quest = sObjectMgr.GetQuestTemplate(value1))
|
||||||
|
return player->CanTakeQuest(quest, false);
|
||||||
|
else
|
||||||
|
false;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -7563,6 +7570,7 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
|
||||||
}
|
}
|
||||||
case CONDITION_QUESTREWARDED:
|
case CONDITION_QUESTREWARDED:
|
||||||
case CONDITION_QUESTTAKEN:
|
case CONDITION_QUESTTAKEN:
|
||||||
|
case CONDITION_QUESTAVAILABLE:
|
||||||
{
|
{
|
||||||
Quest const *Quest = sObjectMgr.GetQuestTemplate(value1);
|
Quest const *Quest = sObjectMgr.GetQuestTemplate(value1);
|
||||||
if (!Quest)
|
if (!Quest)
|
||||||
|
|
|
||||||
|
|
@ -317,9 +317,10 @@ enum ConditionType
|
||||||
CONDITION_NOITEM = 16, // item_id count
|
CONDITION_NOITEM = 16, // item_id count
|
||||||
CONDITION_SPELL = 17, // spell_id 0, 1 (0: has spell, 1: hasn't spell)
|
CONDITION_SPELL = 17, // spell_id 0, 1 (0: has spell, 1: hasn't spell)
|
||||||
CONDITION_INSTANCE_SCRIPT = 18, // map_id instance_condition_id (instance script specific enum)
|
CONDITION_INSTANCE_SCRIPT = 18, // map_id instance_condition_id (instance script specific enum)
|
||||||
|
CONDITION_QUESTAVAILABLE = 19, // quest_id 0 for case when loot/gossip possible only if player can start quest
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_CONDITION 19 // maximum value in ConditionType enum
|
#define MAX_CONDITION 20 // maximum value in ConditionType enum
|
||||||
|
|
||||||
struct PlayerCondition
|
struct PlayerCondition
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -11922,7 +11922,7 @@ void Player::RemoveItemFromBuyBackSlot( uint32 slot, bool del )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::SendEquipError( uint8 msg, Item* pItem, Item *pItem2, uint32 itemid /*= 0*/ )
|
void Player::SendEquipError( uint8 msg, Item* pItem, Item *pItem2, uint32 itemid /*= 0*/ ) const
|
||||||
{
|
{
|
||||||
DEBUG_LOG( "WORLD: Sent SMSG_INVENTORY_CHANGE_FAILURE (%u)", msg);
|
DEBUG_LOG( "WORLD: Sent SMSG_INVENTORY_CHANGE_FAILURE (%u)", msg);
|
||||||
WorldPacket data(SMSG_INVENTORY_CHANGE_FAILURE, 1+8+8+1);
|
WorldPacket data(SMSG_INVENTORY_CHANGE_FAILURE, 1+8+8+1);
|
||||||
|
|
@ -13125,7 +13125,7 @@ Quest const * Player::GetNextQuest( uint64 guid, Quest const *pQuest )
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::CanSeeStartQuest( Quest const *pQuest )
|
bool Player::CanSeeStartQuest( Quest const *pQuest ) const
|
||||||
{
|
{
|
||||||
if (SatisfyQuestRace( pQuest, false ) && SatisfyQuestSkillOrClass( pQuest, false ) &&
|
if (SatisfyQuestRace( pQuest, false ) && SatisfyQuestSkillOrClass( pQuest, false ) &&
|
||||||
SatisfyQuestExclusiveGroup( pQuest, false ) && SatisfyQuestReputation( pQuest, false ) &&
|
SatisfyQuestExclusiveGroup( pQuest, false ) && SatisfyQuestReputation( pQuest, false ) &&
|
||||||
|
|
@ -13138,7 +13138,7 @@ bool Player::CanSeeStartQuest( Quest const *pQuest )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::CanTakeQuest( Quest const *pQuest, bool msg )
|
bool Player::CanTakeQuest( Quest const *pQuest, bool msg ) const
|
||||||
{
|
{
|
||||||
return SatisfyQuestStatus( pQuest, msg ) && SatisfyQuestExclusiveGroup( pQuest, msg )
|
return SatisfyQuestStatus( pQuest, msg ) && SatisfyQuestExclusiveGroup( pQuest, msg )
|
||||||
&& SatisfyQuestRace( pQuest, msg ) && SatisfyQuestLevel( pQuest, msg )
|
&& SatisfyQuestRace( pQuest, msg ) && SatisfyQuestLevel( pQuest, msg )
|
||||||
|
|
@ -13148,7 +13148,7 @@ bool Player::CanTakeQuest( Quest const *pQuest, bool msg )
|
||||||
&& SatisfyQuestDay( pQuest, msg ) && SatisfyQuestWeek( pQuest, msg );
|
&& SatisfyQuestDay( pQuest, msg ) && SatisfyQuestWeek( pQuest, msg );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::CanAddQuest( Quest const *pQuest, bool msg )
|
bool Player::CanAddQuest( Quest const *pQuest, bool msg ) const
|
||||||
{
|
{
|
||||||
if (!SatisfyQuestLog( msg ))
|
if (!SatisfyQuestLog( msg ))
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -13172,12 +13172,17 @@ bool Player::CanAddQuest( Quest const *pQuest, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::CanCompleteQuest( uint32 quest_id )
|
bool Player::CanCompleteQuest( uint32 quest_id ) const
|
||||||
{
|
{
|
||||||
if( quest_id )
|
if (!quest_id)
|
||||||
{
|
return false;
|
||||||
QuestStatusData& q_status = mQuestStatus[quest_id];
|
|
||||||
if( q_status.m_status == QUEST_STATUS_COMPLETE )
|
QuestStatusMap::const_iterator q_itr = mQuestStatus.find(quest_id);
|
||||||
|
|
||||||
|
// some quests can be auto taken and auto completed in one step
|
||||||
|
QuestStatus status = q_itr != mQuestStatus.end() ? q_itr->second.m_status : QUEST_STATUS_NONE;
|
||||||
|
|
||||||
|
if (status == QUEST_STATUS_COMPLETE)
|
||||||
return false; // not allow re-complete quest
|
return false; // not allow re-complete quest
|
||||||
|
|
||||||
Quest const* qInfo = sObjectMgr.GetQuestTemplate(quest_id);
|
Quest const* qInfo = sObjectMgr.GetQuestTemplate(quest_id);
|
||||||
|
|
@ -13189,8 +13194,11 @@ bool Player::CanCompleteQuest( uint32 quest_id )
|
||||||
if (qInfo->IsAutoComplete() && CanTakeQuest(qInfo, false))
|
if (qInfo->IsAutoComplete() && CanTakeQuest(qInfo, false))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( q_status.m_status == QUEST_STATUS_INCOMPLETE )
|
if (status != QUEST_STATUS_INCOMPLETE)
|
||||||
{
|
return false;
|
||||||
|
|
||||||
|
// incomplete quest have status data
|
||||||
|
QuestStatusData const& q_status = q_itr->second;
|
||||||
|
|
||||||
if (qInfo->HasFlag( QUEST_MANGOS_FLAGS_DELIVER ))
|
if (qInfo->HasFlag( QUEST_MANGOS_FLAGS_DELIVER ))
|
||||||
{
|
{
|
||||||
|
|
@ -13231,11 +13239,8 @@ bool Player::CanCompleteQuest( uint32 quest_id )
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Player::CanCompleteRepeatableQuest( Quest const *pQuest )
|
bool Player::CanCompleteRepeatableQuest( Quest const *pQuest ) const
|
||||||
{
|
{
|
||||||
// Solve problem that player don't have the quest and try complete it.
|
// Solve problem that player don't have the quest and try complete it.
|
||||||
// if repeatable she must be able to complete event if player don't have it.
|
// if repeatable she must be able to complete event if player don't have it.
|
||||||
|
|
@ -13254,7 +13259,7 @@ bool Player::CanCompleteRepeatableQuest( Quest const *pQuest )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::CanRewardQuest( Quest const *pQuest, bool msg )
|
bool Player::CanRewardQuest( Quest const *pQuest, bool msg ) const
|
||||||
{
|
{
|
||||||
// not auto complete quest and not completed quest (only cheating case, then ignore without message)
|
// not auto complete quest and not completed quest (only cheating case, then ignore without message)
|
||||||
if (!pQuest->IsAutoComplete() && GetQuestStatus(pQuest->GetQuestId()) != QUEST_STATUS_COMPLETE)
|
if (!pQuest->IsAutoComplete() && GetQuestStatus(pQuest->GetQuestId()) != QUEST_STATUS_COMPLETE)
|
||||||
|
|
@ -13290,7 +13295,7 @@ bool Player::CanRewardQuest( Quest const *pQuest, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::CanRewardQuest( Quest const *pQuest, uint32 reward, bool msg )
|
bool Player::CanRewardQuest( Quest const *pQuest, uint32 reward, bool msg ) const
|
||||||
{
|
{
|
||||||
// prevent receive reward with quest items in bank or for not completed quest
|
// prevent receive reward with quest items in bank or for not completed quest
|
||||||
if (!CanRewardQuest(pQuest,msg))
|
if (!CanRewardQuest(pQuest,msg))
|
||||||
|
|
@ -13633,7 +13638,7 @@ void Player::FailQuest(uint32 questId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestSkillOrClass( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestSkillOrClass( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
int32 zoneOrSort = qInfo->GetZoneOrSort();
|
int32 zoneOrSort = qInfo->GetZoneOrSort();
|
||||||
int32 skillOrClass = qInfo->GetSkillOrClass();
|
int32 skillOrClass = qInfo->GetSkillOrClass();
|
||||||
|
|
@ -13679,7 +13684,7 @@ bool Player::SatisfyQuestSkillOrClass( Quest const* qInfo, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestLevel( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestLevel( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
if (getLevel() < qInfo->GetMinLevel())
|
if (getLevel() < qInfo->GetMinLevel())
|
||||||
{
|
{
|
||||||
|
|
@ -13690,7 +13695,7 @@ bool Player::SatisfyQuestLevel( Quest const* qInfo, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestLog( bool msg )
|
bool Player::SatisfyQuestLog( bool msg ) const
|
||||||
{
|
{
|
||||||
// exist free slot
|
// exist free slot
|
||||||
if (FindQuestSlot(0) < MAX_QUEST_LOG_SIZE)
|
if (FindQuestSlot(0) < MAX_QUEST_LOG_SIZE)
|
||||||
|
|
@ -13705,7 +13710,7 @@ bool Player::SatisfyQuestLog( bool msg )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestPreviousQuest( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestPreviousQuest( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
// No previous quest (might be first quest in a series)
|
// No previous quest (might be first quest in a series)
|
||||||
if (qInfo->prevQuests.empty())
|
if (qInfo->prevQuests.empty())
|
||||||
|
|
@ -13802,7 +13807,7 @@ bool Player::SatisfyQuestPreviousQuest( Quest const* qInfo, bool msg )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestRace( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestRace( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
uint32 reqraces = qInfo->GetRequiredRaces();
|
uint32 reqraces = qInfo->GetRequiredRaces();
|
||||||
if (reqraces == 0)
|
if (reqraces == 0)
|
||||||
|
|
@ -13816,7 +13821,7 @@ bool Player::SatisfyQuestRace( Quest const* qInfo, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestReputation( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestReputation( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
uint32 fIdMin = qInfo->GetRequiredMinRepFaction(); //Min required rep
|
uint32 fIdMin = qInfo->GetRequiredMinRepFaction(); //Min required rep
|
||||||
if (fIdMin && GetReputationMgr().GetReputation(fIdMin) < qInfo->GetRequiredMinRepValue())
|
if (fIdMin && GetReputationMgr().GetReputation(fIdMin) < qInfo->GetRequiredMinRepValue())
|
||||||
|
|
@ -13837,7 +13842,7 @@ bool Player::SatisfyQuestReputation( Quest const* qInfo, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestStatus( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestStatus( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
QuestStatusMap::const_iterator itr = mQuestStatus.find( qInfo->GetQuestId() );
|
QuestStatusMap::const_iterator itr = mQuestStatus.find( qInfo->GetQuestId() );
|
||||||
if (itr != mQuestStatus.end() && itr->second.m_status != QUEST_STATUS_NONE)
|
if (itr != mQuestStatus.end() && itr->second.m_status != QUEST_STATUS_NONE)
|
||||||
|
|
@ -13849,7 +13854,7 @@ bool Player::SatisfyQuestStatus( Quest const* qInfo, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestTimed(Quest const* qInfo, bool msg)
|
bool Player::SatisfyQuestTimed(Quest const* qInfo, bool msg) const
|
||||||
{
|
{
|
||||||
if (!m_timedquests.empty() && qInfo->HasFlag(QUEST_MANGOS_FLAGS_TIMED))
|
if (!m_timedquests.empty() && qInfo->HasFlag(QUEST_MANGOS_FLAGS_TIMED))
|
||||||
{
|
{
|
||||||
|
|
@ -13861,7 +13866,7 @@ bool Player::SatisfyQuestTimed(Quest const* qInfo, bool msg)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestExclusiveGroup( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestExclusiveGroup( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
// non positive exclusive group, if > 0 then can be start if any other quest in exclusive group already started/completed
|
// non positive exclusive group, if > 0 then can be start if any other quest in exclusive group already started/completed
|
||||||
if (qInfo->GetExclusiveGroup() <= 0)
|
if (qInfo->GetExclusiveGroup() <= 0)
|
||||||
|
|
@ -13889,7 +13894,7 @@ bool Player::SatisfyQuestExclusiveGroup( Quest const* qInfo, bool msg )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QuestStatusMap::iterator i_exstatus = mQuestStatus.find( exclude_Id );
|
QuestStatusMap::const_iterator i_exstatus = mQuestStatus.find( exclude_Id );
|
||||||
|
|
||||||
// alternative quest already started or completed
|
// alternative quest already started or completed
|
||||||
if (i_exstatus != mQuestStatus.end()
|
if (i_exstatus != mQuestStatus.end()
|
||||||
|
|
@ -13903,7 +13908,7 @@ bool Player::SatisfyQuestExclusiveGroup( Quest const* qInfo, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestNextChain( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestNextChain( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
if (!qInfo->GetNextQuestInChain())
|
if (!qInfo->GetNextQuestInChain())
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -13924,7 +13929,7 @@ bool Player::SatisfyQuestNextChain( Quest const* qInfo, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestPrevChain( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestPrevChain( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
// No previous quest in chain
|
// No previous quest in chain
|
||||||
if (qInfo->prevChainQuests.empty())
|
if (qInfo->prevChainQuests.empty())
|
||||||
|
|
@ -13958,7 +13963,7 @@ bool Player::SatisfyQuestPrevChain( Quest const* qInfo, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestDay( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestDay( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
if (!qInfo->IsDaily())
|
if (!qInfo->IsDaily())
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -13984,7 +13989,7 @@ bool Player::SatisfyQuestDay( Quest const* qInfo, bool msg )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SatisfyQuestWeek( Quest const* qInfo, bool msg )
|
bool Player::SatisfyQuestWeek( Quest const* qInfo, bool msg ) const
|
||||||
{
|
{
|
||||||
if (!qInfo->IsWeekly() || m_weeklyquests.empty())
|
if (!qInfo->IsWeekly() || m_weeklyquests.empty())
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -14636,7 +14641,7 @@ void Player::SendQuestTimerFailed( uint32 quest_id )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::SendCanTakeQuestResponse( uint32 msg )
|
void Player::SendCanTakeQuestResponse( uint32 msg ) const
|
||||||
{
|
{
|
||||||
WorldPacket data( SMSG_QUESTGIVER_QUEST_INVALID, 4 );
|
WorldPacket data( SMSG_QUESTGIVER_QUEST_INVALID, 4 );
|
||||||
data << uint32(msg);
|
data << uint32(msg);
|
||||||
|
|
|
||||||
|
|
@ -1259,7 +1259,7 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
Item* GetItemFromBuyBackSlot( uint32 slot );
|
Item* GetItemFromBuyBackSlot( uint32 slot );
|
||||||
void RemoveItemFromBuyBackSlot( uint32 slot, bool del );
|
void RemoveItemFromBuyBackSlot( uint32 slot, bool del );
|
||||||
uint32 GetMaxKeyringSize() const { return KEYRING_SLOT_END-KEYRING_SLOT_START; }
|
uint32 GetMaxKeyringSize() const { return KEYRING_SLOT_END-KEYRING_SLOT_START; }
|
||||||
void SendEquipError( uint8 msg, Item* pItem, Item *pItem2 = NULL, uint32 itemid = 0 );
|
void SendEquipError( uint8 msg, Item* pItem, Item *pItem2 = NULL, uint32 itemid = 0 ) const;
|
||||||
void SendBuyError( uint8 msg, Creature* pCreature, uint32 item, uint32 param );
|
void SendBuyError( uint8 msg, Creature* pCreature, uint32 item, uint32 param );
|
||||||
void SendSellError( uint8 msg, Creature* pCreature, uint64 guid, uint32 param );
|
void SendSellError( uint8 msg, Creature* pCreature, uint64 guid, uint32 param );
|
||||||
void AddWeaponProficiency(uint32 newflag) { m_WeaponProficiency |= newflag; }
|
void AddWeaponProficiency(uint32 newflag) { m_WeaponProficiency |= newflag; }
|
||||||
|
|
@ -1326,32 +1326,32 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
void SendPreparedQuest( uint64 guid );
|
void SendPreparedQuest( uint64 guid );
|
||||||
bool IsActiveQuest( uint32 quest_id ) const;
|
bool IsActiveQuest( uint32 quest_id ) const;
|
||||||
Quest const *GetNextQuest( uint64 guid, Quest const *pQuest );
|
Quest const *GetNextQuest( uint64 guid, Quest const *pQuest );
|
||||||
bool CanSeeStartQuest( Quest const *pQuest );
|
bool CanSeeStartQuest( Quest const *pQuest ) const;
|
||||||
bool CanTakeQuest( Quest const *pQuest, bool msg );
|
bool CanTakeQuest( Quest const *pQuest, bool msg ) const;
|
||||||
bool CanAddQuest( Quest const *pQuest, bool msg );
|
bool CanAddQuest( Quest const *pQuest, bool msg ) const;
|
||||||
bool CanCompleteQuest( uint32 quest_id );
|
bool CanCompleteQuest( uint32 quest_id ) const;
|
||||||
bool CanCompleteRepeatableQuest(Quest const *pQuest);
|
bool CanCompleteRepeatableQuest(Quest const *pQuest) const;
|
||||||
bool CanRewardQuest( Quest const *pQuest, bool msg );
|
bool CanRewardQuest( Quest const *pQuest, bool msg ) const;
|
||||||
bool CanRewardQuest( Quest const *pQuest, uint32 reward, bool msg );
|
bool CanRewardQuest( Quest const *pQuest, uint32 reward, bool msg ) const;
|
||||||
void AddQuest( Quest const *pQuest, Object *questGiver );
|
void AddQuest( Quest const *pQuest, Object *questGiver );
|
||||||
void CompleteQuest( uint32 quest_id );
|
void CompleteQuest( uint32 quest_id );
|
||||||
void IncompleteQuest( uint32 quest_id );
|
void IncompleteQuest( uint32 quest_id );
|
||||||
void RewardQuest( Quest const *pQuest, uint32 reward, Object* questGiver, bool announce = true );
|
void RewardQuest( Quest const *pQuest, uint32 reward, Object* questGiver, bool announce = true );
|
||||||
|
|
||||||
void FailQuest( uint32 quest_id );
|
void FailQuest( uint32 quest_id );
|
||||||
bool SatisfyQuestSkillOrClass( Quest const* qInfo, bool msg );
|
bool SatisfyQuestSkillOrClass( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestLevel( Quest const* qInfo, bool msg );
|
bool SatisfyQuestLevel( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestLog( bool msg );
|
bool SatisfyQuestLog( bool msg ) const;
|
||||||
bool SatisfyQuestPreviousQuest( Quest const* qInfo, bool msg );
|
bool SatisfyQuestPreviousQuest( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestRace( Quest const* qInfo, bool msg );
|
bool SatisfyQuestRace( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestReputation( Quest const* qInfo, bool msg );
|
bool SatisfyQuestReputation( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestStatus( Quest const* qInfo, bool msg );
|
bool SatisfyQuestStatus( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestTimed( Quest const* qInfo, bool msg );
|
bool SatisfyQuestTimed( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestExclusiveGroup( Quest const* qInfo, bool msg );
|
bool SatisfyQuestExclusiveGroup( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestNextChain( Quest const* qInfo, bool msg );
|
bool SatisfyQuestNextChain( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestPrevChain( Quest const* qInfo, bool msg );
|
bool SatisfyQuestPrevChain( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestDay( Quest const* qInfo, bool msg );
|
bool SatisfyQuestDay( Quest const* qInfo, bool msg ) const;
|
||||||
bool SatisfyQuestWeek( Quest const* qInfo, bool msg );
|
bool SatisfyQuestWeek( Quest const* qInfo, bool msg ) const;
|
||||||
bool GiveQuestSourceItem( Quest const *pQuest );
|
bool GiveQuestSourceItem( Quest const *pQuest );
|
||||||
bool TakeQuestSourceItem( uint32 quest_id, bool msg );
|
bool TakeQuestSourceItem( uint32 quest_id, bool msg );
|
||||||
bool GetQuestRewardStatus( uint32 quest_id ) const;
|
bool GetQuestRewardStatus( uint32 quest_id ) const;
|
||||||
|
|
@ -1417,7 +1417,7 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
void SendQuestReward( Quest const *pQuest, uint32 XP, Object* questGiver );
|
void SendQuestReward( Quest const *pQuest, uint32 XP, Object* questGiver );
|
||||||
void SendQuestFailed( uint32 quest_id );
|
void SendQuestFailed( uint32 quest_id );
|
||||||
void SendQuestTimerFailed( uint32 quest_id );
|
void SendQuestTimerFailed( uint32 quest_id );
|
||||||
void SendCanTakeQuestResponse( uint32 msg );
|
void SendCanTakeQuestResponse( uint32 msg ) const;
|
||||||
void SendQuestConfirmAccept(Quest const* pQuest, Player* pReceiver);
|
void SendQuestConfirmAccept(Quest const* pQuest, Player* pReceiver);
|
||||||
void SendPushToPartyResponse( Player *pPlayer, uint32 msg );
|
void SendPushToPartyResponse( Player *pPlayer, uint32 msg );
|
||||||
void SendQuestUpdateAddItem( Quest const* pQuest, uint32 item_idx, uint32 count );
|
void SendQuestUpdateAddItem( Quest const* pQuest, uint32 item_idx, uint32 count );
|
||||||
|
|
@ -1474,7 +1474,7 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
void setRegenTimer(uint32 time) {m_regenTimer = time;}
|
void setRegenTimer(uint32 time) {m_regenTimer = time;}
|
||||||
void setWeaponChangeTimer(uint32 time) {m_weaponChangeTimer = time;}
|
void setWeaponChangeTimer(uint32 time) {m_weaponChangeTimer = time;}
|
||||||
|
|
||||||
uint32 GetMoney() { return GetUInt32Value (PLAYER_FIELD_COINAGE); }
|
uint32 GetMoney() const { return GetUInt32Value (PLAYER_FIELD_COINAGE); }
|
||||||
void ModifyMoney( int32 d )
|
void ModifyMoney( int32 d )
|
||||||
{
|
{
|
||||||
if(d < 0)
|
if(d < 0)
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ enum QuestStatus
|
||||||
QUEST_STATUS_COMPLETE = 1,
|
QUEST_STATUS_COMPLETE = 1,
|
||||||
QUEST_STATUS_UNAVAILABLE = 2,
|
QUEST_STATUS_UNAVAILABLE = 2,
|
||||||
QUEST_STATUS_INCOMPLETE = 3,
|
QUEST_STATUS_INCOMPLETE = 3,
|
||||||
QUEST_STATUS_AVAILABLE = 4,
|
QUEST_STATUS_AVAILABLE = 4, // unused in fact
|
||||||
QUEST_STATUS_FAILED = 5,
|
QUEST_STATUS_FAILED = 5,
|
||||||
MAX_QUEST_STATUS
|
MAX_QUEST_STATUS
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "10041"
|
#define REVISION_NR "10042"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue