Example #1
0
        public void DoDialog(Connection client)
        {
            // Is the player working for me?
            Quest playerActiveQuest = client.Character.GetActiveQuestForNPC(_id);

            if (playerActiveQuest != null)
            {
                client.SetCurrentQuest(_id, playerActiveQuest.QuestID, 0);
                byte      step = client.Character.GetQuestStep(playerActiveQuest.QuestID);
                QuestLine ql   = playerActiveQuest.GetStep(step).GetLine(0);
                ql.SendToClient(client);
                client.SendPacket(new NPCDialogPacket(_gameID));
                return;
            }

            // Do I have something for the player?
            foreach (Quest q in _quests.Values)
            {
                if (!client.Character.HasActiveQuest(q.QuestID) && !client.Character.HasCompletedQuest(q.QuestID))
                {
                    if (q.PlayerMeetsRequirements(client.Character))
                    {
                        client.Character.ReceiveQuest(q);
                        client.SetCurrentQuest(_id, q.QuestID, 0);
                        QuestStep qs = q.GetStep(0);
                        qs.Activate(client);
                        QuestLine ql = qs.GetLine(0);
                        ql.SendToClient(client);
                        client.SendPacket(new NPCDialogPacket(_gameID));
                    }
                }
            }

            /*
             * // Am I selling something?
             * if (IsMerchant)
             * {
             *  // Show sell dialog
             * }
             *
             * // Just say hello
             * if (_defaultText != null)
             * {
             *  client.SendPacket(new NPCDialogPacket(_defaultText, _defaultIcon));
             * }
             */
        }
Example #2
0
        public void ReadActiveQuests(DBQuery query, Connection client)
        {
            _activeQuests = new Dictionary <uint, byte>();
            foreach (object[] row in query.Rows)
            {
                // 0: character_id	    int(10) unsigned
                // 1: quest_id          int(11) unsigned
                // 2: step              tinyint(3) unsigned
                uint quest = (uint)row[1];
                byte step  = (byte)row[2];
                _activeQuests[quest] = step;

                Quest     q  = Program.Server.GetQuest(quest);
                QuestStep qs = q.GetStep(step);
                qs.Activate(client);
            }
        }