예제 #1
0
        internal static void Start(string name)
        {
            if (Started.ContainsKey(name))
            {
                return;
            }

            Started.Add(name, dict[name]);
            if (dict[name].SHIZTaxPercent != null)
            {
            }
        }
예제 #2
0
        public void Load()
        {
            foreach (Datum datum in new Datums("quests_started").Populate("CharacterID = {0}", Parent.ID))
            {
                if (!Started.ContainsKey((ushort)datum["QuestID"]))
                {
                    Started.Add((ushort)datum["QuestID"], new Dictionary<int, short>());
                }

                if (datum["MobID"] != null && datum["Killed"] != null)
                {
                    Started[(ushort)datum["QuestID"]].Add((int)datum["MobID"], ((short)datum["Killed"]));
                }
            }
        }
예제 #3
0
        public void Start(Quest quest, int npcID)
        {
            Started.Add(quest.MapleID, new Dictionary<int, short>());

            foreach (KeyValuePair<int, short> requiredKills in quest.PostRequiredKills)
            {
                Started[quest.MapleID].Add(requiredKills.Key, 0);
            }

            Parent.Stats.Experience += quest.ExperienceReward[0];
            Parent.Stats.Fame += (short)quest.FameReward[0];
            Parent.Stats.Meso += quest.MesoReward[0] * WvsGame.MesoRate;

            // TODO: Skill and pet rewards.

            foreach (KeyValuePair<int, short> item in quest.PreItemRewards)
            {
                if (item.Value > 0)
                {
                    Parent.Items.AddItemToInventory(new Item(item.Key, item.Value)); // TODO: Quest items rewards are displayed in chat.
                }
                else if (item.Value < 0)
                {
                    Parent.Items.RemoveItemFromInventoryByID(item.Key, Math.Abs(item.Value));
                }
            }

            Update(quest.MapleID, QuestConstants.QuestStatus.InProgress);

            using (Packet oPacket = new Packet(ServerOperationCode.QuestResult))
            {
                oPacket
                    .WriteByte((byte)QuestConstants.QuestResult.Complete)
                    .WriteUShort(quest.MapleID)
                    .WriteInt(npcID)
                    .WriteInt();

                Parent.Client.Send(oPacket);
            }
        }
예제 #4
0
        public void Start(QuestReference quest, int npcId, GameClient client)
        {
            Started.Add(quest.MapleId, new Dictionary <int, short>());

            foreach (var requiredKills in quest.PostRequiredKills)
            {
                Started[quest.MapleId].Add(requiredKills.Key, 0);
            }

            Parent.PrimaryStats.Experience += quest.ExperienceReward[0];
            Parent.PrimaryStats.Fame       += (short)quest.FameReward[0];
            Parent.PrimaryStats.Meso       += quest.MesoReward[0] * client.Server.World.MesoRate;

            // TODO: Skill and pet rewards.

            foreach (var item in quest.PreItemRewards)
            {
                if (item.Value > 0)
                {
                    Parent.Items.Add(new Item(item.Key,
                                              item.Value)); // TODO: Quest items rewards are displayed in chat.
                }
                else if (item.Value < 0)
                {
                    Parent.Items.Remove(item.Key, Math.Abs(item.Value));
                }
            }

            Update(quest.MapleId, QuestStatus.InProgress);

//            using (var pw = new PacketWriter(ServerOperationCode.QuestResult))
//            {
//                pw.WriteByte((byte)QuestResult.Complete);
//                pw.Writeint(quest.MapleId);
//                pw.WriteInt(npcId);
//                pw.WriteInt(0);
//
//                Parent.Send(pw);
//            }
        }