public void NextDialog(Connection client) { Quest q = Program.Server.GetQuest(client.CurrentQuestID); byte step = client.Character.GetQuestStep(client.CurrentQuestID); byte line = client.CurrentQuestLine; // Next line line++; QuestStep qs = q.GetStep(step); if (line < qs.LineCount) { QuestLine ql = qs.GetLine(line); client.SetCurrentQuest(_id, q.QuestID, line); bool lastLine = (line >= (qs.LineCount - 1)); ql.SendToClient(client, !lastLine); if (lastLine) { client.QuestDialogFinished(_id); } } else { client.SetCurrentQuest(_id, q.QuestID, 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)); * } */ }