
void ProcessDialogEvent()
{
	ref NPChar;
	aref Link, NextDiag;

	DeleteAttribute(&Dialog,"Links");

	makeref(NPChar,CharacterRef);
	makearef(Link, Dialog.Links);
	makearef(NextDiag, NPChar.Dialog);

	int iQuest;
	
	switch(Dialog.CurrentNode)
	{
		case "First time":
			dialog.text = "Przedstaw się, chcę wiedzieć z kim rozmawiam";
			link.l1 = "Jam jest˙ " + pchar.name + "...";
			if (sti(pchar.nation) != PIRATE)
			{
				link.l1.go = "Second time";
			}
			else
			{
				link.l1.go = "you_are_pirate";
			}
			
			NextDiag.TempNode = "Second time";
		break;
		
		case "Second time":
			if (sti(pchar.nation) != PIRATE)
			{
				dialog.text = "Czego chcesz?";
				link.l1 = "Chciałbym pomówić o pracy.";
				link.l1.go = "quests";
				link.l2 = "Już wychodzę.";
				link.l2.go = "exit";
			}
			else
			{
				dialog.text = "Prosiłem, żebyś się więcej nie pokazywał w moim gabinecie!";
				link.l1 = "Widzę, że pan również jest przeciwny piratom.";
				link.l1.go = "exit";
			}
			
			NextDiag.TempNode = "Second time";
		break;
		
		case "you_are_pirate":
			dialog.text = "Wynoś się, nie chcę mieć z tobą nic wspólnego.";
			link.l1 = "Jak pan sobie życzy.";
			link.l1.go = "exit";
		break;
		
		case "quests":
			dialog.text = "Czego chcesz?";
			if(!CheckForNationService(sti(npchar.nation)))
			{
				link.l1 = "Chciałbym wstąpić na służbę.";
				link.l1.go = "service";
			}
			else
			{
				link.l1 = "Interesują mnie informacje o pracy.";
				link.l1.go = "quests_completed";
			}
			link.l99 = "Niczego.";
			link.l99.go = "exit";
		break;
		
		case "quests_completed":
			dialog.text = "A co dokładnie chcesz wiedzieć?";
			link.l1 = "Czy nie ma pan dla mnie jakiegoś zadania?";
			link.l1.go = "ship_mission";
			
			///////////////////////////////////////////////////////////////
			/// ĎĐČĹĚ ĘÂĹŃŇŔ ÍŔ ÄÎŃŇŔÂĘÓ ĚĹÄČĘŔĚĹÍŇÎÂ
			///////////////////////////////////////////////////////////////
			if(CheckAttribute(npchar, "quest.disease"))
			{
				if(npchar.quest.disease == "inprogress" && GetSquadronGoods(pchar, GOOD_MEDICINE) >= 10)
				{
					link.l1 = "Chyba mam na pokładzie potrzebne medykamenty";
					link.l1.go = "disease_mission_completed";
				}
			}
			
			///////////////////////////////////////////////////////////////
			/// ĎĐČĹĚ ĘÂĹŃŇŔ ÍŔ ĎÎŐČŮĹÍČĹ ĎĐĹÄĚĹŇŔ
			///////////////////////////////////////////////////////////////
			if (CheckAttribute(npchar, "quest.stealitem") && CheckQuestAttribute("steal_item", "stealed"))
			{
				if (CheckCharacterItem(pchar, npchar.quest.stealitem.item))
				{
					link.l1 = "Zadanie wykonane.";				
					link.l1.go = "steal_item_completed";
				}
				else
				{
					link.l1 = "Nie zdołałem wykonać pańskiego polecenia.";
					link.l1.go = "steal_item_failed";
				}
			}
			
			///////////////////////////////////////////////////////////////
			/// ĎĐČĹĚ ĘÂĹŃŇŔ ÍŔ ÓÁČÉŃŇÂÎ
			///////////////////////////////////////////////////////////////
			if (CheckAttribute(npchar, "quest.killcharacter"))
			{
				if (CheckCharacterItem(pchar, npchar.quest.killcharacter.item))
				{
					link.l1 = "Zadanie wykonane.";
					if (npchar.quest.sinkship.condition == "completed" || sti(pchar.skill.luck) > rand(13))
					{
						link.l1.go = "kill_character_mission_complete";
					}
					else
					{
						link.l1.go = "kill_character_mission_failed";
					}					
				}
			}
			
			///////////////////////////////////////////////////////////////
			/// ĎĐČĹĚ ĘÂĹŃŇŔ ÍŔ ĎÎŇÎĎËĹÍČĹ ĘÎĐŔÁËß
			///////////////////////////////////////////////////////////////
			if (CheckAttribute(npchar, "quest.sinkship"))
			{
				if (npchar.quest.sinkship.condition == "completed")
				{
					link.l1 = "Zadanie wykonane.";
					link.l1.go = "sink_ship_mission_complete";
				}
			}
			
			///////////////////////////////////////////////////////////////
			/// ĎĐČĹĚ ĘÂĹŃŇŔ ÍŔ ÇŔŐÂŔŇ ÔÎĐŇŔ
			///////////////////////////////////////////////////////////////
			if (CheckAttribute(npchar, "quest.fort"))
			{
				if (sti(Islands[findisland(npchar.quest.fort)].nation) == sti(npchar.nation))
				{
					link.l1 = "Kolonia " + GlobalStringConvert(npchar.quest.fort) + " zdobyta. Nad jej dachami powiewają wasze flagi.";
					link.l1.go = "fort_mission_complete";
				}
			}
			
			///////////////////////////////////////////////////////////////
			/// ĎĐČĹĚ ĘÂĹŃŇŔ ÍŔ ÇŔŐÂŔŇ ĘÎĐŔÁËß
			///////////////////////////////////////////////////////////////
			if (CheckAttribute(npchar, "quest.captureship"))
			{
				if (npchar.quest.captureship.condition == "completed")
				{
					link.l1 = "Zadanie wykonane.";
					link.l1.go = "ship_mission_complete";
				}
				if (npchar.quest.captureship.condition == "failed")
				{
					link.l1 = "Nie zdołałem zdobyć tych papierów. Ścigany statek poszedł na dno...";
					link.l1.go = "ship_mission_not_complete";
				}
			}
			
			///////////////////////////////////////////////////////////////
			/// ĎĐČĹĚ ĘÂĹŃŇŔ ÍŔ ÇŔŮČŇÓ ĘÎËÎÍČČ
			///////////////////////////////////////////////////////////////
			if (CheckAttribute(npchar, "quest.defendcolony"))
			{
				if (sti(Islands[findisland(npchar.quest.defendcolony.colony)].nation) == sti(npchar.nation) && pchar.quest.defendcolony_progress == "completed")
				{
					dialog.text = "Rad jestem słysząc o twoim sukcesie.";
					link.l1 = "Dziękuję...";					
					link.l1.go = "exit";
					FortDefendMissionCompleted(sti(npchar.nation), npchar);					
				}
				if (sti(Islands[findisland(npchar.quest.defendcolony.colony)].nation) != sti(npchar.nation) && pchar.quest.defendcolony.progress == "completed")
				{
					dialog.text = "Nie wykonałeś zadania, przez co nasze panowanie nad wyspami zostało osłabione. Odejdź, muszę się zastanowić nad dalszymi krokami";
					link.l1 = "Wybacz, panie. Obiecuję, że więcej cię nie zawiodę.";
					link.l1.go = "exit";
					FortDefendMissionNotCompleted(sti(npchar.nation), npchar);
				}
			}
			link.l99 = "Szukam tylko informacji.";
			link.l99.go = "exit";
		break;
		
		case "service":
			if (CheckAttribute(pchar, GetNationNameByType(sti(npchar.nation)) + "_line_counter"))
			{
				dialog.text = "Jeśli pamięć mnie nie zawodzi, otrzymałeś nie tak dawno list polecający mojego rządu.\nNiestety, został on cofnięty, w momencie gdy zacząłeś pracować na dwie strony.";
				link.l1 = "Hmm... to źle, będę musiał odejść.";
				link.l1.go = "exit";
			}
			else
			{
				dialog.text = "Wspaniale! Potrzebujemy ludzi takich jak ty.";
				link.l1 = "Co mam podpisać, aby formalnościom stało się zadość?";
				link.l1.go = "service_2";
			}
		break;
		
		case "service_2":
			dialog.text = "Zastanów się, zanim podpiszesz. Jeśli zdecydujesz się na zmianę stron po podpisaniu listu polecającego, stracisz sympatię moją i mojego kraju, a to może się odbić na twoim zdrowiu.";
			link.l1 = "Przemyślałem to już. Podpisuję.";
			link.l1.go = "service_3";
			link.l2 = "Och. Słusznie prawisz, potrzebuję trochę czasu do namysłu, zanim to podpiszę.";
			link.l2.go = "exit";
		break;
		
		case "service_3":
			dialog.text = "Podoba mi się twoje podejście! Teraz musisz już tylko potwierdzić swoją lojalność czynami. Przyjdź do mnie, kiedy już uznasz, że ten list to coś wiecej niż tylko ozdoba kajuty, a znajdę robotę dla ciebie.";
			link.l1 = "Oczywiście.";
			link.l1.go = "exit";
			PlayerChangeNation(sti(npchar.nation));
		break;
		
		case "service_line_quests":
			if(CheckQuestAttribute("work", "0"))
			{
			}
			else
			{
				dialog.text = "Dałem ci zadanie, ale, o ile wiem, jeszcze go nie wykonałeś.";
				link.l1 = "Nie... ale pracuję nad tym.";
				link.l1.go = "exit";
			}
		break;
		
		case "generate_quest":
			if(CheckQuestAttribute("work", "0"))
			{
				dialog.text = "Tak, tak, daj mi się chwilę zastanowić, co tu nie będzie wymagało...";
				link.l1 = "...";
				iQuest = rand(3)+1;
				switch (iQuest)
				{
					case 1:
						link.l1.go = "ship_mission";
					break;
					
					case 2:
						link.l1.go = "ship_sink_mission";
					break;
					
					case 3:
						link.l1.go = "fort_mission";
					break;
					
					case 4:
						link.l1.go = "delivery_passenger";
					break;

				}
				if (CheckForDisease())
				{
					link.l1.go = "disease_mission";
				}
				if(CheckForDefendColony(npchar))
				{
					link.l1.go = "defend_colony_mission";
				}
			}
			else
			{
				dialog.text = "Dałem ci zadanie, ale, o ile wiem, jeszcze go nie wykonałeś.";
				link.l1 = "Nie... ale pracuję nad tym.";
				link.l1.go = "exit";
			}
		break;
		
		case "fort_mission":
			if(GenerateFortQuest(sti(npchar.nation), npchar))
			{
				dialog.text = "Udowodniłeś wierność Francji i otrzymasz za to stosowną nagrodę.";
				link.l1 = "Miło mi to słyszeć.";
				link.l1.go = "fort_mission_2";
			}
			else
			{
				dialog.text = "Jest problem... Chodzi o to zdobycie fortu.";
				link.l1 = "Słucham? Znowu?!";
				link.l1.go = "exit";
			}
		break;
		
		case "fort_mission_2":
			dialog.text = "Chciałbym, abyś zdobył dla nas kolonię " + GlobalStringConvert(npchar.quest.fort) + ", nasze sztandary muszą zawisnąć nad jej murami.";
			link.l1 = "To nie będzie proste, ale zadanie wykonam.";
			link.l1.go = "exit";
		break;
		
		case "fort_mission_complete":
			dialog.text = "Brawo! Jednak sprostałeś temu wyzwaniu. Pozwól, że w ten sposób wyrażę naszą wdzięczność.";
			link.l1 = "Dziekuję za uznanie.";
			link.l1.go = "exit";
			ShipCaptureFortCompleted(sti(npchar.nation), npchar);
		break;
		
		case "ship_mission":
			iQuest = rand(1);
			if(GenerateCaptureShipQuest(sti(npchar.nation), npchar, iQuest))
			{
				switch(iQuest)
				{
					case 0:
						dialog.text = "Rzecz w tym, że potrzebuję pewnych dokumentów, które znajdują się w posiadaniu " + npchar.quest.captureship + "\nMusisz mi przywieźć te papiery. Statek, ktory je przewozi, był widziany ostatnio w okolicach portu " + GlobalStringConvert(npchar.quest.captureship.island) + ".";
					break;
					
					case 1:
						dialog.text = "Dotarły do mnie wieści, że " + npchar.quest.captureship + " przewozi z " + XI_ConvertString("From " + GetNationNameByType(sti(npchar.quest.captureship.nation)))+ " do " + GlobalStringConvert(npchar.quest.captureship.island) + " Ważne dokumenty. Musisz przechwycić ten statek i zdobyć te dokumenty.";
					break;
				}
				
				link.l1 = "Zajmę się tym jak najszybciej.";
				link.l1.go = "exit";
				link.l2 = "Wybacz, ale nie mogę przyjąć tego zadania.";
				link.l2.go = "exit";
			}
			else
			{
				dialog.text = "Jest problem... Chodzi o to przejęcie statku.";
				link.l1 = "Co? Znowu?!";
				link.l1.go = "exit";
			}
		break;
		
		case "ship_mission_complete":
			dialog.text = "Brawo! Jednak sprostałeś temu wyzwaniu. Pozwól, że w ten sposób wyrażę naszą wdzięczność.";
			link.l1 = "Dziekuję za uznanie.";
			link.l1.go = "exit";
			ShipCaptureMissionCompleted(sti(npchar.nation), npchar);
		break;
		
		case "ship_mission_not_complete":
			dialog.text = "Zostaw mnie samego, nie chcę teraz z nikim rozmawiać.";
			link.l1 = "Jak sobie życzysz. Następnym razem już nie zawiodę";
			link.l1.go = "exit";
			ShipCaptureMissionFailed(npchar);
		break;
		
		case "defend_colony_mission":
			iQuest = rand(3);
			if (iQuest<3)
			{
				dialog.text = "Witaj, kapitanie! Doszły mnie słuchy, że " + XI_ConvertString(GetNationNameByType(sti(npchar.quest.defendcolony.nation))) + " napadli na francuską kolonię " + XI_ConvertString(npchar.quest.defendcolony.colony) + ". Nie mam w tej chwili żadnych okrętów wojennych pod moją komendą, dlatego ty musisz się tym zająć.";
				pchar.quest.defencolony.type = "single";
			}
			else
			{
				dialog.text = "Witaj! Akurat ustalamy plany ekspedycji wojennej. Doszły mnie słuchy, że "  + XI_ConvertString(GetNationNameByType(sti(npchar.quest.defendcolony.nation))) + " napadli na kolonię " + XI_ConvertString(npchar.quest.defendcolony.colony) + ", i będziesz musiał się tym zająć.";
				pchar.quest.defencolony.type = "multi";
			}
			link.l1 = "Wrócę jak tylko kolonia będzie wolna.";
			link.l1.go = "defend_colony_mission_accept";
			link.l2 = "To zadanie ponad moje siły.";
			link.l2.go = "defend_colony_mission_refuse";
		break;
		
		case "defend_colony_mission_accept":
			dialog.text = "Idź! I niech Bóg ma cię w swojej opiece!";
			link.l1 = "Dziękuję.";			
			link.l1.go = "exit";
			DefendColonyMissionAccept(npchar);
		break;
		
		case "defend_colony_mission_refuse":
			dialog.text = "Wielka szkoda.";
			link.l1 = "Ja również żałuję.";
			link.l1.go = "exit";
			DefendColonyMissionRefuse(npchar);
		break;
		
		case "ship_sink_mission":
			if (GenerateShipSinkQuest(sti(npchar.nation), npchar))
			{
				dialog.text = "Ostatnimi czasy, ku mojemu coraz większemu niezadowoleniu statek " + npchar.quest.sinkship + ", pływający pod banderą " + XI_ConvertString("From " + GetNationNameByType(sti(npchar.quest.sinkship.nation)))+ "zajmuje się grabieżami na naszych wodach. Jak się zapewne domyślasz, zlecam ci zadanie zatopienia tej jednostki, którą zapewne znajdziesz w okolicach " + GlobalStringConvert(npchar.quest.sinkship.island) + ".";
				link.l1 = "Tak zrobię.";
				link.l1.go = "exit";
			}
			else
			{
				dialog.text = "Jest problem... Chodzi o to zatopienie statku.";
				link.l1 = "Co? Znowu?!";
				link.l1.go = "exit";
			}
		break;
		
		case "sink_ship_mission_complete":
			dialog.text = "Brawo! Jednak sprostałeś temu wyzwaniu. Pozwól, że w ten sposób wyrażę naszą wdzięczność, oto nagroda.";
			link.l1 = "Dziękuję za uznanie.";
			link.l1.go = "exit";
			ShipSinkMissionCompleted(sti(npchar.nation), npchar);
		break;
		
		case "kill_enemy":
			if (!CheckAttribute(pchar, "quest.killcharacter"))
			{
				if (GenerateKillQuest(sti(npchar.nation), npchar, 1))
				{
					dialog.text = "Mam dla ciebie zadanie wielkiej wagi. Chciałbym, aby " + GetCharacterFullName(npchar.quest.killcharacter) + " zniknął na zawsze... Człowiek ten znajduje się na wyspie " + GlobalStringConvert(npchar.quest.killcharacter.island) + ", a moim życzeniem jest, by zginął. Na dowód wykonania zadania przyniesiesz mi jego pierścień.";
					link.l1 = "Tak się stanie.";
					link.l1.go = "exit";
				}
				else
				{
					dialog.text = "Jest problem... Chodzi o to zabójstwo.";
				link.l1 = "Co? Znowu?!";
					link.l1.go = "exit";
				}
			}
			else
			{
				dialog.text = "W chwili obecnej nie mam dla ciebie żadnych zadań.";
				link.l1 = "OK.";
				link.l1.go = "exit";
			}
		break;
		
		case "kill_character_mission_complete":
			dialog.text = "Widzę, ze sprostałeś temu wyzwaniu. Pozwól, że w ten sposób wyrażę naszą wdzięczność.";
			link.l1 = "Dziękuję.";
			link.l1.go = "exit";
			KillCharacterMissionCompleted(sti(npchar.nation), npchar);
		break;
		
		case "kill_character_mission_failed":
			dialog.text = "widzę u ciebie na palcu pierścień, a moi informatorzy mówią, że człowiek, którego miałeś zabić, nadal żyje. Jestem rozczarowany twoją postawą.";
			link.l1 = "To się więcej nie powtórzy.";
			link.l1.go = "exit";
			KillCharacterMissionFailed(npchar);
		break;
		
		case "steal_item":
			if (GenerateStealItem(sti(npchar.nation), npchar, 0))
			{
				dialog.text = "Chcę, abyś zdobył dokumenty znajdujące się w posiadaniu gubernatora kolonii " + XI_COnvertString(npchar.quest.stealitem.island) + ".";
				link.l1 = "Tak będzie.";
				link.l1.go = "exit";
			}
			else
			{
				dialog.text = "Jest problem... Chodzi o te papiery.";
				link.l1 = "A niech to.";
				link.l1.go = "exit";
			}
		break;
		
		case "steal_item_completed":
			Dialog.text = "Wspaniale, zaczynam cię coraz bardziej cenić. Oto nagroda.";
			link.l1 = "Dziękuję.";
			link.l1.go = "exit";
			StealItemMissionCompleted(sti(npchar.nation), npchar, 0);
		break;
		
		case "steal_item_failed":
			Dialog.text = "Wspaniale, zaczynam cię coraz bardziej cenić. Oto nagroda.";
			link.l1 = "Dziękuję.";
			link.l1.go = "exit";
			StealItemMissionFailed(npchar);
		break;
		
		case "disease_mission":
			dialog.text = "Wiesz już zapewne, że w naszych koloniach panuje zaraza...";
			link.l1 = "Nie da się ukryć, smród rozkładających się ciał jest wymowniejszy od najbardziej kwiecistych zdań.";
			link.l1.go = "disease_mission_2";
		break;
		
		case "disease_mission_2":
			dialog.text = "Zapasy medykamentów kończą się. Co powiesz na misję dostarczenia ładunku lekarstw?";
			link.l1 = "Z największą radością wykonam takie zadanie";
			link.l1.go = "disease_mission_accept";
			link.l2 = "Ani mi się śni. Lepiej zabieraj się stąd pókiś zdrów.";
			link.l2.go = "disease_mission_refused";
		break;
		
		case "disease_mission_accept":
			dialog.text = "Chwała Bogu! Tylko nie zapomnij o tym zadaniu.";
			if (GetSquadronGoods(pchar, GOOD_MEDICINE) >= 10)
			{
				link.l1 = "Chętnie się tego podejmę, tym bardziej że chyba mam na pokładzie potrzebne lekarstwa.";
				link.l1.go = "disease_mission_completed";
			}
			else
			{
				link.l1 = "Nie zapomnę. Pozwól, że udam się na statek, by wypełnić tę misję";
				link.l1.go = "exit";
				DiseaseMissionInProgress(npchar);
			}
		break;
		
		case "disease_mission_refused":
			dialog.text = "Nie mogę cię za to winić. Żegnaj.";
			link.l1.go = "Żegnaj.";
			link.l1.go = "exit";
		break;
		
		case "disease_mission_completed":
			if (CheckForDisease())
			{
				dialog.text = "Jesteś aniołem. Przyjmij tę oto sumkę jako dowód wdzięczności za ocalenie naszej kolonii.";
				link.l1 = "Dziękuję.";
				link.l1.go = "exit";
				DiseaseMissionCompleted(npchar, 0);
			}
			else
			{
				dialog.text = "Jak widzisz, sami zdołaliśmy pokonać chorobę.";
				link.l1 = "Nie da się ukryć.";
				link.l1.go = "exit";
				DiseaseMissionCompleted(npchar, 1);
			}
		break;
		
		case "delivery_passenger":
			if (GeneratePassengerQuest(npchar))
			{
				dialog.text = "Musisz zawieźć człowieka nazwiskiem " + npchar.quest.deliverypassenger.passenger + " do portu " + XI_ConvertString(npchar.quest.deliverypassenger.endcolony) + "\nTam otrzymasz za to zapłatę w wysokości " + npchar.quest.deliverypassenger.money  + " piastrów.";
				link.l1 = "Prosta robota, taką lubię.";
				link.l1.go = "delivery_passenger_accept";
				link.l2 = "Nie wykonam tego zadania.";
				link.l2.go = "delivery_passenger_refuse";
			}
			else
			{
				dialog.text = "Jest problem z przewiezieniem tego pasażera.";
				link.l1 = "Zdarza się, że tak powiem.";
				link.l1.go = "exit";
			}
		break;
		
		case "delivery_passenger_accept":
			dialog.text = "Uczynisz mi wielką przysługę, a wynagrodzenie odbierzesz na miejscu.";
			link.l1 = "Załatwione.";
			link.l1.go = "exit";
			AcceptPassengerQuest(npchar);
		break;
		
		case "delivery_passenger_refuse":
			dialog.text = "Wielka szkoda, będę musiał znaleźć kogoś innego.";
			link.l1 = "Do zobaczenia.";
			link.l1.go = "exit";
			RefusePassengerQuest(npchar);
		break;

		case "Exit":
			NextDiag.CurrentNode = NextDiag.TempNode;
			DialogExit();
		break;
	}
}

