public void UpdateFromQuestRewardDeterministic() { var rankingState = new RankingState1(); Address avatarAddress = new PrivateKey().ToAddress(); Address agentAddress = new PrivateKey().ToAddress(); var avatarState = new AvatarState( avatarAddress, agentAddress, 0, _tableSheets.GetAvatarSheets(), new GameConfigState(), rankingState.UpdateRankingMap(avatarAddress)); var itemIds = avatarState.questList.OfType <ItemTypeCollectQuest>().First().ItemIds; var map = new Dictionary <int, int>() { [400000] = 1, [302002] = 1, [302003] = 1, [302001] = 1, [306023] = 1, [302000] = 1, }; var serialized = (Dictionary)avatarState.questList.OfType <WorldQuest>().First().Serialize(); serialized = serialized.SetItem("reward", new Nekoyume.Model.Quest.QuestReward(map).Serialize()); var quest = new WorldQuest(serialized); avatarState.UpdateFromQuestReward(quest, _tableSheets.MaterialItemSheet); Assert.Equal( avatarState.questList.OfType <ItemTypeCollectQuest>().First().ItemIds, new List <int>() { 302000, 302001, 302002, 302003, 306023, } ); }
public static void HandleWorldQuestUpdate(Packet packet) { var count = packet.ReadInt32("Count"); for (int i = 0; i < count; i++) { packet.ReadTime("LastUpdate", i); var questID = packet.ReadUInt32 <QuestId>("QuestID", i); var timer = packet.ReadUInt32("Timer", i); var variableID = packet.ReadInt32("VariableID", i); var value = packet.ReadInt32("Value", i); WorldQuest worldQuest = new WorldQuest { id = (uint)questID, duration = (uint)timer, variable = (int)variableID, value = (int)value, }; Storage.WorldQuests.Add(worldQuest, packet.TimeSpan); } }