aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/Commands')
-rw-r--r--src/server/scripts/Commands/cs_lookup.cpp6
-rw-r--r--src/server/scripts/Commands/cs_quest.cpp104
2 files changed, 52 insertions, 58 deletions
diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp
index d746b07af75..f92e62f2aa9 100644
--- a/src/server/scripts/Commands/cs_lookup.cpp
+++ b/src/server/scripts/Commands/cs_lookup.cpp
@@ -599,9 +599,9 @@ public:
uint8 ulocaleIndex = uint8(localeIndex);
if (QuestLocale const* questLocale = sObjectMgr->GetQuestLocale(qInfo->GetQuestId()))
{
- if (questLocale->Title.size() > ulocaleIndex && !questLocale->Title[ulocaleIndex].empty())
+ if (questLocale->LogTitle.size() > ulocaleIndex && !questLocale->LogTitle[ulocaleIndex].empty())
{
- std::string title = questLocale->Title[ulocaleIndex];
+ std::string title = questLocale->LogTitle[ulocaleIndex];
if (Utf8FitTo(title, wNamePart))
{
@@ -647,7 +647,7 @@ public:
}
}
- std::string title = qInfo->GetTitle();
+ std::string title = qInfo->GetLogTitle();
if (title.empty())
continue;
diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp
index 91ccd358f93..26806ce6785 100644
--- a/src/server/scripts/Commands/cs_quest.cpp
+++ b/src/server/scripts/Commands/cs_quest.cpp
@@ -180,67 +180,61 @@ public:
return false;
}
- // Add quest items for quests that require items
- for (uint8 x = 0; x < QUEST_ITEM_OBJECTIVES_COUNT; ++x)
+ for (uint32 i = 0; i < quest->Objectives.size(); ++i)
{
- uint32 id = quest->RequiredItemId[x];
- uint32 count = quest->RequiredItemCount[x];
- if (!id || !count)
- continue;
+ QuestObjective const& obj = quest->Objectives[i];
- uint32 curItemCount = player->GetItemCount(id, true);
-
- ItemPosCountVec dest;
- uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, id, count-curItemCount);
- if (msg == EQUIP_ERR_OK)
- {
- Item* item = player->StoreNewItem(dest, id, true);
- player->SendNewItem(item, count-curItemCount, true, false);
- }
- }
-
- // All creature/GO slain/cast (not required, but otherwise it will display "Creature slain 0/10")
- for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; ++i)
- {
- int32 creature = quest->RequiredNpcOrGo[i];
- uint32 creatureCount = quest->RequiredNpcOrGoCount[i];
-
- if (creature > 0)
+ switch (obj.Type)
{
- if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(creature))
- for (uint16 z = 0; z < creatureCount; ++z)
- player->KilledMonster(creatureInfo, ObjectGuid::Empty);
+ case QUEST_OBJECTIVE_ITEM:
+ {
+ uint32 curItemCount = player->GetItemCount(obj.ObjectID, true);
+ ItemPosCountVec dest;
+ uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, obj.ObjectID, obj.Amount - curItemCount);
+ if (msg == EQUIP_ERR_OK)
+ {
+ Item* item = player->StoreNewItem(dest, obj.ObjectID, true);
+ player->SendNewItem(item, obj.Amount - curItemCount, true, false);
+ }
+ break;
+ }
+ case QUEST_OBJECTIVE_MONSTER:
+ {
+ if (CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(obj.ObjectID))
+ for (uint16 z = 0; z < obj.Amount; ++z)
+ player->KilledMonster(creatureInfo, ObjectGuid::Empty);
+ break;
+ }
+ case QUEST_OBJECTIVE_GAMEOBJECT:
+ {
+ for (uint16 z = 0; z < obj.Amount; ++z)
+ player->KillCreditGO(obj.ObjectID);
+ break;
+ }
+ case QUEST_OBJECTIVE_MIN_REPUTATION:
+ {
+ uint32 curRep = player->GetReputationMgr().GetReputation(obj.ObjectID);
+ if (curRep < uint32(obj.Amount))
+ if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(obj.ObjectID))
+ player->GetReputationMgr().SetReputation(factionEntry, obj.Amount);
+ break;
+ }
+ case QUEST_OBJECTIVE_MAX_REPUTATION:
+ {
+ uint32 curRep = player->GetReputationMgr().GetReputation(obj.ObjectID);
+ if (curRep > uint32(obj.Amount))
+ if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(obj.ObjectID))
+ player->GetReputationMgr().SetReputation(factionEntry, obj.Amount);
+ break;
+ }
+ case QUEST_OBJECTIVE_MONEY:
+ {
+ player->ModifyMoney(obj.Amount);
+ break;
+ }
}
- else if (creature < 0)
- for (uint16 z = 0; z < creatureCount; ++z)
- player->KillCreditGO(creature);
}
- // If the quest requires reputation to complete
- if (uint32 repFaction = quest->GetRepObjectiveFaction())
- {
- uint32 repValue = quest->GetRepObjectiveValue();
- uint32 curRep = player->GetReputationMgr().GetReputation(repFaction);
- if (curRep < repValue)
- if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(repFaction))
- player->GetReputationMgr().SetReputation(factionEntry, repValue);
- }
-
- // If the quest requires a SECOND reputation to complete
- if (uint32 repFaction = quest->GetRepObjectiveFaction2())
- {
- uint32 repValue2 = quest->GetRepObjectiveValue2();
- uint32 curRep = player->GetReputationMgr().GetReputation(repFaction);
- if (curRep < repValue2)
- if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(repFaction))
- player->GetReputationMgr().SetReputation(factionEntry, repValue2);
- }
-
- // If the quest requires money
- int32 ReqOrRewMoney = quest->GetRewOrReqMoney();
- if (ReqOrRewMoney < 0)
- player->ModifyMoney(-ReqOrRewMoney);
-
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER)) // check if Quest Tracker is enabled
{
// prepare Quest Tracker datas