diff --git a/FFXIVClassic Map Server/Database.cs b/FFXIVClassic Map Server/Database.cs index 725073c8..95cf9e30 100644 --- a/FFXIVClassic Map Server/Database.cs +++ b/FFXIVClassic Map Server/Database.cs @@ -786,7 +786,8 @@ namespace FFXIVClassic_Map_Server slot, questId, questData, - questFlags + questFlags, + currentPhase FROM characters_quest_scenario WHERE characterId = @charId"; cmd = new MySqlCommand(query, conn); @@ -799,6 +800,7 @@ namespace FFXIVClassic_Map_Server player.playerWork.questScenario[index] = 0xA0F00000 | reader.GetUInt32(1); string questData = null; uint questFlags = 0; + uint currentPhase = 0; if (!reader.IsDBNull(2)) questData = reader.GetString(2); @@ -810,8 +812,11 @@ namespace FFXIVClassic_Map_Server else questFlags = 0; + if (!reader.IsDBNull(4)) + currentPhase = reader.GetUInt32(4); + string questName = Server.GetStaticActors(player.playerWork.questScenario[index]).actorName; - player.questScenario[index] = new Quest(player, player.playerWork.questScenario[index], questName, questData, questFlags); + player.questScenario[index] = new Quest(player, player.playerWork.questScenario[index], questName, questData, questFlags, currentPhase); } } diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index c70f0d3f..068b4dde 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -1091,7 +1091,7 @@ namespace FFXIVClassic_Map_Server.Actors return; playerWork.questScenario[freeSlot] = id; - questScenario[freeSlot] = new Quest(this, playerWork.questScenario[freeSlot], name, null, 0); + questScenario[freeSlot] = new Quest(this, playerWork.questScenario[freeSlot], name, null, 0, 0); Database.SaveQuest(this, questScenario[freeSlot]); SendQuestClientUpdate(freeSlot); @@ -1165,7 +1165,7 @@ namespace FFXIVClassic_Map_Server.Actors { Actor actor = Server.GetStaticActors((0xA0F00000 | newId)); playerWork.questScenario[i] = (0xA0F00000 | newId); - questScenario[i] = new Quest(this, playerWork.questScenario[i], actor.actorName, null, 0); + questScenario[i] = new Quest(this, playerWork.questScenario[i], actor.actorName, null, 0, 0); Database.SaveQuest(this, questScenario[i]); SendQuestClientUpdate(i); break; diff --git a/FFXIVClassic Map Server/actors/quest/Quest.cs b/FFXIVClassic Map Server/actors/quest/Quest.cs index f07e279c..1d0fa50c 100644 --- a/FFXIVClassic Map Server/actors/quest/Quest.cs +++ b/FFXIVClassic Map Server/actors/quest/Quest.cs @@ -9,7 +9,7 @@ namespace FFXIVClassic_Map_Server.Actors class Quest : Actor { private Player owner; - private int currentPhase = 0; + private uint currentPhase = 0; private uint questFlags = 0; private Dictionary questData = new Dictionary(); @@ -19,7 +19,7 @@ namespace FFXIVClassic_Map_Server.Actors actorName = name; } - public Quest(Player owner, uint actorID, string name, string questDataJson, uint questFlags) + public Quest(Player owner, uint actorID, string name, string questDataJson, uint questFlags, uint currentPhase) : base(actorID) { this.owner = owner; @@ -33,6 +33,8 @@ namespace FFXIVClassic_Map_Server.Actors if (questData == null) questData = new Dictionary(); + + this.currentPhase = currentPhase; } public void SetQuestData(string dataName, object data) @@ -94,12 +96,12 @@ namespace FFXIVClassic_Map_Server.Actors return (questFlags & (1 << bitIndex)) == (1 << bitIndex); } - public int GetPhase() + public uint GetPhase() { return currentPhase; } - public void NextPhase(int phaseNumber) + public void NextPhase(uint phaseNumber) { currentPhase = phaseNumber; owner.SendGameMessage(Server.GetWorldManager().GetActor(), 25116, 0x20, (object)GetQuestId());