Core/Quests: Un-deprecate QUEST_SPECIAL_FLAGS_EXPLORATION_OR_EVENT
Port From (https://github.com/TrinityCore/TrinityCore/commit/3ad389efee4a24e2f94c9eb39aeddf83d320eaf0)
This commit is contained in:
@@ -92,7 +92,7 @@ namespace Framework.Database
|
||||
PrepareStatement(CharStatements.SEL_CHARACTER_AURAS, "SELECT casterGuid, itemGuid, spell, effectMask, recalculateMask, difficulty, stackCount, maxDuration, remainTime, remainCharges, castItemId, castItemLevel FROM character_aura WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.SEL_CHARACTER_AURA_EFFECTS, "SELECT casterGuid, itemGuid, spell, effectMask, effectIndex, amount, baseAmount FROM character_aura_effect WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.SEL_CHARACTER_SPELL, "SELECT spell, active, disabled FROM character_spell WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.SEL_CHARACTER_QUESTSTATUS, "SELECT quest, status, timer FROM character_queststatus WHERE guid = ? AND status <> 0");
|
||||
PrepareStatement(CharStatements.SEL_CHARACTER_QUESTSTATUS, "SELECT quest, status, explored, timer FROM character_queststatus WHERE guid = ? AND status <> 0");
|
||||
PrepareStatement(CharStatements.SEL_CHARACTER_QUESTSTATUS_OBJECTIVES, "SELECT quest, objective, data FROM character_queststatus_objectives WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.SEL_CHARACTER_QUESTSTATUS_OBJECTIVES_CRITERIA, "SELECT questObjectiveId FROM character_queststatus_objectives_criteria WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.SEL_CHARACTER_QUESTSTATUS_OBJECTIVES_CRITERIA_PROGRESS, "SELECT criteriaId, counter, date FROM character_queststatus_objectives_criteria_progress WHERE guid = ?");
|
||||
@@ -645,7 +645,7 @@ namespace Framework.Database
|
||||
PrepareStatement(CharStatements.DEL_CHAR_INVENTORY_BY_ITEM, "DELETE FROM character_inventory WHERE item = ?");
|
||||
PrepareStatement(CharStatements.DEL_CHAR_INVENTORY_BY_BAG_SLOT, "DELETE FROM character_inventory WHERE bag = ? AND slot = ? AND guid = ?");
|
||||
PrepareStatement(CharStatements.UPD_MAIL, "UPDATE mail SET has_items = ?, expire_time = ?, deliver_time = ?, money = ?, cod = ?, checked = ? WHERE id = ?");
|
||||
PrepareStatement(CharStatements.REP_CHAR_QUESTSTATUS, "REPLACE INTO character_queststatus (guid, quest, status, timer) VALUES (?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.REP_CHAR_QUESTSTATUS, "REPLACE INTO character_queststatus (guid, quest, status, explored, timer) VALUES (?, ?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_CHAR_QUESTSTATUS_BY_QUEST, "DELETE FROM character_queststatus WHERE guid = ? AND quest = ?");
|
||||
PrepareStatement(CharStatements.REP_CHAR_QUESTSTATUS_OBJECTIVES, "REPLACE INTO character_queststatus_objectives (guid, quest, objective, data) VALUES (?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_CHAR_QUESTSTATUS_OBJECTIVES_BY_QUEST, "DELETE FROM character_queststatus_objectives WHERE guid = ? AND quest = ?");
|
||||
|
||||
@@ -692,7 +692,9 @@ namespace Game.Entities
|
||||
GetName(), GetGUID().ToString(), quest_id, qstatus);
|
||||
}
|
||||
|
||||
long quest_time = result.Read<long>(2);
|
||||
questStatusData.Explored = (result.Read<byte>(2) > 0);
|
||||
|
||||
long quest_time = result.Read<long>(3);
|
||||
|
||||
if (quest.LimitTime != 0 && !GetQuestRewardStatus(quest_id))
|
||||
{
|
||||
@@ -1948,7 +1950,8 @@ namespace Game.Entities
|
||||
stmt.AddValue(0, GetGUID().GetCounter());
|
||||
stmt.AddValue(1, save.Key);
|
||||
stmt.AddValue(2, (byte)data.Status);
|
||||
stmt.AddValue(3, data.Timer / Time.InMilliseconds + GameTime.GetGameTime());
|
||||
stmt.AddValue(3, data.Explored);
|
||||
stmt.AddValue(4, data.Timer / Time.InMilliseconds + GameTime.GetGameTime());
|
||||
trans.Append(stmt);
|
||||
|
||||
// Save objectives
|
||||
|
||||
@@ -494,6 +494,9 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
|
||||
if (qInfo.HasSpecialFlag(QuestSpecialFlags.ExplorationOrEvent) && !q_status.Explored)
|
||||
return false;
|
||||
|
||||
if (qInfo.LimitTime != 0 && q_status.Timer == 0)
|
||||
return false;
|
||||
|
||||
@@ -741,7 +744,9 @@ namespace Game.Entities
|
||||
QuestStatus oldStatus = questStatusData.Status;
|
||||
|
||||
// check for repeatable quests status reset
|
||||
questStatusData.Slot = log_slot;
|
||||
questStatusData.Status = QuestStatus.Incomplete;
|
||||
questStatusData.Explored = false;
|
||||
|
||||
GiveQuestSourceItem(quest);
|
||||
AdjustQuestObjectiveProgress(quest);
|
||||
@@ -800,7 +805,6 @@ namespace Game.Entities
|
||||
caster.CastSpell(this, spellInfo.Id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetCastDifficulty(spellInfo.Difficulty));
|
||||
}
|
||||
|
||||
questStatusData.Slot = log_slot;
|
||||
SetQuestSlot(log_slot, quest_id, qtime);
|
||||
|
||||
m_QuestStatusSave[quest_id] = QuestSaveType.Default;
|
||||
@@ -2127,25 +2131,17 @@ namespace Game.Entities
|
||||
{
|
||||
if (questId != 0)
|
||||
{
|
||||
ushort log_slot = FindQuestSlot(questId);
|
||||
if (log_slot < SharedConst.MaxQuestLogSize)
|
||||
QuestStatusData status = m_QuestStatus.LookupByKey(questId);
|
||||
if (status != null)
|
||||
{
|
||||
Log.outError(LogFilter.Player, "Deprecated function AreaExploredOrEventHappens called for quest {0}", questId);
|
||||
/* @todo
|
||||
This function was previously used for area triggers but now those are a part of quest objective system
|
||||
Currently this function is used to complete quests with no objectives (needs verifying) so probably rename it?
|
||||
|
||||
QuestStatusData& q_status = m_QuestStatus[questId];
|
||||
|
||||
if (!q_status.Explored)
|
||||
// Dont complete failed quest
|
||||
if (!status.Explored && status.Status != QuestStatus.Failed)
|
||||
{
|
||||
q_status.Explored = true;
|
||||
m_QuestStatusSave[questId] = QUEST_DEFAULT_SAVE_TYPE;
|
||||
|
||||
// if we cannot complete quest send exploration succeded (to mark exploration on client)
|
||||
if (!CanCompleteQuest(questId))
|
||||
SendQuestComplete(questId)
|
||||
}*/
|
||||
status.Explored = true;
|
||||
m_QuestStatusSave[questId] = QuestSaveType.Default;
|
||||
|
||||
SendQuestComplete(questId);
|
||||
}
|
||||
}
|
||||
if (CanCompleteQuest(questId))
|
||||
CompleteQuest(questId);
|
||||
@@ -2618,12 +2614,12 @@ namespace Game.Entities
|
||||
return false;
|
||||
}
|
||||
|
||||
public void SendQuestComplete(Quest quest)
|
||||
public void SendQuestComplete(uint questId)
|
||||
{
|
||||
if (quest != null)
|
||||
if (questId != 0)
|
||||
{
|
||||
QuestUpdateComplete data = new();
|
||||
data.QuestID = quest.Id;
|
||||
data.QuestID = questId;
|
||||
SendPacket(data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -731,6 +731,7 @@ namespace Game
|
||||
public ushort Slot = SharedConst.MaxQuestLogSize;
|
||||
public QuestStatus Status;
|
||||
public uint Timer;
|
||||
public bool Explored;
|
||||
}
|
||||
|
||||
public class QuestGreeting
|
||||
|
||||
@@ -1250,6 +1250,7 @@ CREATE TABLE `character_queststatus` (
|
||||
`guid` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`quest` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`status` tinyint(3) unsigned NOT NULL DEFAULT '0',
|
||||
`explored` tinyint(3) unsigned NOT NULL DEFAULT '0',
|
||||
`timer` bigint(20) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`guid`,`quest`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System';
|
||||
@@ -3852,7 +3853,8 @@ INSERT INTO `updates` VALUES
|
||||
('2020_11_16_00_characters.sql','33D5C7539E239132923D01F4B6EAD5F3EF3EEB69','RELEASED','2020-11-16 19:16:31',0),
|
||||
('2020_12_13_00_characters.sql','6AC743240033DED2C402ECB894A59D79EF607920','RELEASED','2020-12-13 18:36:58',0),
|
||||
('2021_03_27_00_characters_aura_stored_location.sql','BF772ABC2DF186AF0A5DC56D5E824A2F4813BA69','RELEASED','2021-03-27 15:53:04',0),
|
||||
('2021_04_05_00_characters.sql','33D656995E0F3578FFE1A658ED1692CA5310AB30','RELEASED','2021-04-05 23:44:54',0);
|
||||
('2021_04_05_00_characters.sql','33D656995E0F3578FFE1A658ED1692CA5310AB30','RELEASED','2021-04-05 23:44:54',0),
|
||||
('2021_05_10_00_characters.sql','0A406242BC18BDA5A65CDE3E2AFEE760D79F819F','RELEASED','2021-05-10 23:30:34',0);
|
||||
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
ALTER TABLE `character_queststatus` ADD `explored` tinyint(3) unsigned NOT NULL DEFAULT '0' AFTER `status`;
|
||||
Reference in New Issue
Block a user