aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-12-07 09:22:43 +0100
committerSpp <spp@jorge.gr>2012-12-07 09:22:43 +0100
commitfb2e5c3c5840a77452a2418805eabd01147a4346 (patch)
treea4490008845509814826b09f17ada5b2d9c9b405 /src/server/game/Globals/ObjectMgr.cpp
parent4c78f667de319a9690493fddb690b57f940c862e (diff)
parent6ed36342a20d11657eda8473b59ee10cbe92a507 (diff)
Merge branch 'master' into 4.3.4
Conflicts: src/server/game/Conditions/ConditionMgr.cpp src/server/game/Conditions/ConditionMgr.h src/server/game/Entities/Player/Player.cpp src/server/game/Entities/Player/Player.h src/server/game/Entities/Unit/Unit.cpp src/server/game/Globals/ObjectMgr.cpp src/server/game/Handlers/ItemHandler.cpp src/server/game/Quests/QuestDef.cpp src/server/game/Quests/QuestDef.h src/server/game/Spells/Auras/SpellAuraEffects.cpp src/server/game/World/World.h src/server/scripts/Kalimdor/azshara.cpp src/server/scripts/Kalimdor/azuremyst_isle.cpp src/server/scripts/Kalimdor/darkshore.cpp src/server/scripts/Kalimdor/durotar.cpp src/server/scripts/Kalimdor/dustwallow_marsh.cpp src/server/scripts/Kalimdor/feralas.cpp src/server/scripts/Kalimdor/moonglade.cpp src/server/scripts/Kalimdor/silithus.cpp src/server/scripts/Kalimdor/stonetalon_mountains.cpp src/server/scripts/Kalimdor/tanaris.cpp src/server/scripts/Kalimdor/the_barrens.cpp src/server/scripts/Kalimdor/thousand_needles.cpp src/server/scripts/Spells/spell_generic.cpp
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp75
1 files changed, 44 insertions, 31 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 7ca6602eace..5cc304223e6 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -52,7 +52,6 @@
#include "World.h"
ScriptMapMap sQuestEndScripts;
-ScriptMapMap sQuestStartScripts;
ScriptMapMap sSpellScripts;
ScriptMapMap sGameObjectScripts;
ScriptMapMap sEventScripts;
@@ -64,7 +63,6 @@ std::string GetScriptsTableNameByType(ScriptsType type)
switch (type)
{
case SCRIPTS_QUEST_END: res = "quest_end_scripts"; break;
- case SCRIPTS_QUEST_START: res = "quest_start_scripts";break;
case SCRIPTS_SPELL: res = "spell_scripts"; break;
case SCRIPTS_GAMEOBJECT: res = "gameobject_scripts"; break;
case SCRIPTS_EVENT: res = "event_scripts"; break;
@@ -80,7 +78,6 @@ ScriptMapMap* GetScriptsMapByType(ScriptsType type)
switch (type)
{
case SCRIPTS_QUEST_END: res = &sQuestEndScripts; break;
- case SCRIPTS_QUEST_START: res = &sQuestStartScripts; break;
case SCRIPTS_SPELL: res = &sSpellScripts; break;
case SCRIPTS_GAMEOBJECT: res = &sGameObjectScripts; break;
case SCRIPTS_EVENT: res = &sEventScripts; break;
@@ -3470,8 +3467,8 @@ void ObjectMgr::LoadQuests()
"DetailsEmote1, DetailsEmote2, DetailsEmote3, DetailsEmote4, DetailsEmoteDelay1, DetailsEmoteDelay2, DetailsEmoteDelay3, DetailsEmoteDelay4, EmoteOnIncomplete, EmoteOnComplete, "
// 164 165 166 167 168 169 170 171
"OfferRewardEmote1, OfferRewardEmote2, OfferRewardEmote3, OfferRewardEmote4, OfferRewardEmoteDelay1, OfferRewardEmoteDelay2, OfferRewardEmoteDelay3, OfferRewardEmoteDelay4, "
- // 172 173 174
- "StartScript, CompleteScript, WDBVerified"
+ // 173 174
+ "CompleteScript, WDBVerified"
" FROM quest_template");
if (!result)
{
@@ -3538,6 +3535,15 @@ void ObjectMgr::LoadQuests()
}
}
+ if (qinfo->Flags & QUEST_SPECIAL_FLAGS_MONTHLY)
+ {
+ if (!(qinfo->Flags & QUEST_SPECIAL_FLAGS_REPEATABLE))
+ {
+ sLog->outError(LOG_FILTER_SQL, "Monthly quest %u not marked as repeatable in `SpecialFlags`, added.", qinfo->GetQuestId());
+ qinfo->Flags |= QUEST_SPECIAL_FLAGS_REPEATABLE;
+ }
+ }
+
if (qinfo->Flags & QUEST_FLAGS_AUTO_REWARDED)
{
// at auto-reward can be rewarded only RewardChoiceItemId[0]
@@ -4632,18 +4638,6 @@ void ObjectMgr::LoadQuestEndScripts()
}
}
-void ObjectMgr::LoadQuestStartScripts()
-{
- LoadScripts(SCRIPTS_QUEST_START);
-
- // check ids
- for (ScriptMapMap::const_iterator itr = sQuestStartScripts.begin(); itr != sQuestStartScripts.end(); ++itr)
- {
- if (!GetQuestTemplate(itr->first))
- sLog->outError(LOG_FILTER_SQL, "Table `quest_start_scripts` has not existing quest (Id: %u) as script id", itr->first);
- }
-}
-
void ObjectMgr::LoadSpellScripts()
{
LoadScripts(SCRIPTS_SPELL);
@@ -6607,13 +6601,11 @@ void ObjectMgr::LoadReputationRewardRate()
_repRewardRateStore.clear(); // for reload case
- uint32 count = 0; // 0 1 2 3
- QueryResult result = WorldDatabase.Query("SELECT faction, quest_rate, creature_rate, spell_rate FROM reputation_reward_rate");
-
+ uint32 count = 0; // 0 1 2 3 4 5 6
+ QueryResult result = WorldDatabase.Query("SELECT faction, quest_rate, quest_daily_rate, quest_weekly_rate, quest_monthly_rate, creature_rate, spell_rate FROM reputation_reward_rate");
if (!result)
{
sLog->outError(LOG_FILTER_SQL, ">> Loaded `reputation_reward_rate`, table is empty!");
-
return;
}
@@ -6621,13 +6613,16 @@ void ObjectMgr::LoadReputationRewardRate()
{
Field* fields = result->Fetch();
- uint32 factionId = fields[0].GetUInt32();
+ uint32 factionId = fields[0].GetUInt32();
RepRewardRate repRate;
- repRate.quest_rate = fields[1].GetFloat();
- repRate.creature_rate = fields[2].GetFloat();
- repRate.spell_rate = fields[3].GetFloat();
+ repRate.questRate = fields[1].GetFloat();
+ repRate.questDailyRate = fields[2].GetFloat();
+ repRate.questWeeklyRate = fields[3].GetFloat();
+ repRate.questMonthlyRate = fields[4].GetFloat();
+ repRate.creatureRate = fields[5].GetFloat();
+ repRate.spellRate = fields[6].GetFloat();
FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionId);
if (!factionEntry)
@@ -6636,21 +6631,39 @@ void ObjectMgr::LoadReputationRewardRate()
continue;
}
- if (repRate.quest_rate < 0.0f)
+ if (repRate.questRate < 0.0f)
+ {
+ sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_rate with invalid rate %f, skipping data for faction %u", repRate.questRate, factionId);
+ continue;
+ }
+
+ if (repRate.questDailyRate < 0.0f)
+ {
+ sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_daily_rate with invalid rate %f, skipping data for faction %u", repRate.questDailyRate, factionId);
+ continue;
+ }
+
+ if (repRate.questWeeklyRate < 0.0f)
+ {
+ sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_weekly_rate with invalid rate %f, skipping data for faction %u", repRate.questWeeklyRate, factionId);
+ continue;
+ }
+
+ if (repRate.questMonthlyRate < 0.0f)
{
- sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_rate with invalid rate %f, skipping data for faction %u", repRate.quest_rate, factionId);
+ sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has quest_monthly_rate with invalid rate %f, skipping data for faction %u", repRate.questMonthlyRate, factionId);
continue;
}
- if (repRate.creature_rate < 0.0f)
+ if (repRate.creatureRate < 0.0f)
{
- sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has creature_rate with invalid rate %f, skipping data for faction %u", repRate.creature_rate, factionId);
+ sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has creature_rate with invalid rate %f, skipping data for faction %u", repRate.creatureRate, factionId);
continue;
}
- if (repRate.spell_rate < 0.0f)
+ if (repRate.spellRate < 0.0f)
{
- sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has spell_rate with invalid rate %f, skipping data for faction %u", repRate.spell_rate, factionId);
+ sLog->outError(LOG_FILTER_SQL, "Table reputation_reward_rate has spell_rate with invalid rate %f, skipping data for faction %u", repRate.spellRate, factionId);
continue;
}