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)); } */ }