diff --git a/source/WorldServer/Quests.cpp b/source/WorldServer/Quests.cpp index 83e0565..e6274ce 100644 --- a/source/WorldServer/Quests.cpp +++ b/source/WorldServer/Quests.cpp @@ -320,6 +320,7 @@ Quest::Quest(int32 in_id){ m_status = 0; status_to_earn_min = 0; status_to_earn_max = 0; + hide_reward = false; } Quest::Quest(Quest* old_quest){ @@ -399,6 +400,7 @@ Quest::Quest(Quest* old_quest){ can_delete_quest = old_quest->CanDeleteQuest(); status_to_earn_min = old_quest->GetStatusToEarnMin(); status_to_earn_max = old_quest->GetStatusToEarnMax(); + hide_reward = old_quest->GetHideReward(); } Quest::~Quest(){ @@ -906,20 +908,25 @@ EQ2Packet* Quest::OfferQuest(int16 version, Player* player){ else packet->setDataByName("unknown", 5); packet->setDataByName("level", level); - if(reward_coins > 0){ - packet->setDataByName("min_coin", reward_coins); - if (reward_coins_max) - packet->setDataByName("max_coin", reward_coins_max); + if(!GetHideReward()) { + if(reward_coins > 0){ + packet->setDataByName("min_coin", reward_coins); + if (reward_coins_max) + packet->setDataByName("max_coin", reward_coins_max); + } + packet->setDataByName("status_points", GetStatusEarned() > 0 ? GetStatusEarned() : reward_status); } - packet->setDataByName("status_points", GetStatusEarned() > 0 ? GetStatusEarned() : reward_status); if(reward_comment.length() > 0) packet->setDataByName("text", reward_comment.c_str()); - if(reward_items.size() > 0){ - player->GetClient()->PopulateQuestRewardItems(&reward_items, packet); - } - if(selectable_reward_items.size() > 0){ - player->GetClient()->PopulateQuestRewardItems(&selectable_reward_items, packet, std::string("num_select_rewards"), - std::string("select_reward_id"), std::string("select_item")); + + if(!GetHideReward()) { + if(reward_items.size() > 0){ + player->GetClient()->PopulateQuestRewardItems(&reward_items, packet); + } + if(selectable_reward_items.size() > 0){ + player->GetClient()->PopulateQuestRewardItems(&selectable_reward_items, packet, std::string("num_select_rewards"), + std::string("select_reward_id"), std::string("select_item")); + } } map* reward_factions = GetRewardFactions(); if (reward_factions && reward_factions->size() > 0) { diff --git a/source/WorldServer/Quests.h b/source/WorldServer/Quests.h index 7adc044..c4dc899 100644 --- a/source/WorldServer/Quests.h +++ b/source/WorldServer/Quests.h @@ -331,6 +331,7 @@ public: void SetQuestShareableFlag(int32 flag) { quest_shareable_flag = flag; } void SetCanDeleteQuest(bool newval) { can_delete_quest = newval; } + void SetHideReward(bool newval) { hide_reward = newval; } void SetStatusToEarnMin(int32 value_) { status_to_earn_min = value_; } @@ -341,6 +342,7 @@ public: int32 GetQuestShareableFlag() { return quest_shareable_flag; } bool CanDeleteQuest() { return can_delete_quest; } + bool GetHideReward() { return hide_reward; } bool CanShareQuestCriteria(Client* quest_sharer, bool display_client_msg = true); Mutex MQuestSteps; @@ -428,6 +430,7 @@ protected: bool can_delete_quest; int32 status_to_earn_min; int32 status_to_earn_max; + bool hide_reward; }; class MasterQuestList{ diff --git a/source/WorldServer/WorldDatabase.cpp b/source/WorldServer/WorldDatabase.cpp index a058ec3..1762eea 100644 --- a/source/WorldServer/WorldDatabase.cpp +++ b/source/WorldServer/WorldDatabase.cpp @@ -5349,7 +5349,7 @@ void WorldDatabase::FixBugReport(){ int32 WorldDatabase::LoadQuests(){ Query query; MYSQL_ROW row; - std::string querystr = std::string("SELECT `quest_id`, `name`, `type`, `zone`, `level`, `enc_level`, `description`, `lua_script`, `completed_text`, `spawn_id`, `shareable_flag`, `deleteable`, `status_to_earn_min`, `status_to_earn_max` FROM `quests`"); + std::string querystr = std::string("SELECT `quest_id`, `name`, `type`, `zone`, `level`, `enc_level`, `description`, `lua_script`, `completed_text`, `spawn_id`, `shareable_flag`, `deleteable`, `status_to_earn_min`, `status_to_earn_max`, `hide_reward` FROM `quests`"); MYSQL_RES* result = query.RunQuery2(Q_SELECT, querystr.c_str()); Quest* quest = 0; char* name = 0; @@ -5399,6 +5399,7 @@ int32 WorldDatabase::LoadQuests(){ quest->SetCanDeleteQuest(atoul(row[11])); quest->SetStatusToEarnMin(atoul(row[12])); quest->SetStatusToEarnMax(atoul(row[13])); + quest->SetHideReward(atoul(row[14])); total++; master_quest_list.AddQuest(id, quest); }