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

	DeleteAttribute(&Dialog,"Links");

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

	string sAgreeLink, sDeclineLink;

	int iSuccesDelivery;
	
	switch(Dialog.CurrentNode)
	{
		case "First time":
			if(CheckAttribute(npchar, "quest.questflag"))
			{
				dialog.text = SelectDeliveryTradeDialogQuestion(npchar);
				if(sti(npchar.quest.questflag) == 2)//ńäŕňü ęâĺńň
				{
					link.l1 = "Tak, oczywiście.";
					link.l1.go = "delivery_trade_succesfull";
				}
				if(sti(npchar.quest.questflag) == 3)//âńďîěíčňü ęâĺńň
				{
					if(Quests[sti(npchar.currentquest)].l.target_npc == npchar.id)
					{
						if(sti(Quests[sti(npchar.currentquest)].l.freespace) > 0 && sti(Quests[sti(npchar.currentquest)].l.isdelayed) == 1)
						{
							link.l1 = "Niestety, nie mam wolnego miejsca w ładowniach na ten towar.";
							link.l1.go = "delivery_trade_decline";
						}
						else
						{
							link.l1 = "Widzisz, część ładunku uległa uszkodzeniu podczas transportu... Obawiam się, że nie mogę ci go teraz zwrócić.";
							link.l1.go = "delivery_trade_decline";
						}
					}
					else
					{
						dialog.text = SelectHovernorQuestReminderText(npchar);
						link.l1 = "Nie wykonałeś jeszcze zadania, ale pokaż, co tam masz za towary.";
						link.l1.go = "store";
						link.l2 = "Dziękuję za przypomnienie. Już się tym zajmuję.";
						link.l2.go = "exit";
					}
				}
				if(sti(npchar.quest.questflag) != 2 && sti(npchar.quest.questflag) != 3)
				{
					dialog.text = "Witam w progach mojego niegodnego składu. Chcesz obejrzeć moje towary?";
					link.l1 = "Jasne, pokaż co tam masz.";
					link.l1.go = "trade";
					if(sti(npchar.quest.questflag) == 1)
					{
						link.l2 = "Może innym razem. Teraz porozmawiajmy o interesach.";
						link.l2.go = "quests";
					}
					link.l3 = "Nie mam na to czasu.";
					link.l3.go = "exit";
				}
			}
			else
			{
				dialog.text = "Witam w progach mojego niegodnego składu. Chcesz obejrzeć moje towary?";
				link.l1 = "Jasne, pokaż co tam masz.";
				link.l1.go = "trade";
				if(CheckAttribute(npchar, "quest.questflag"))
				{
					if(sti(npchar.quest.questflag) == 1)
					{				
						link.l2 = "Może innym razem. Teraz porozmawiajmy o interesach.";
						link.l2.go = "quests";
					}
				}
				link.l3 = "Nie mam na to czasu.";
				link.l3.go = "exit";
			}
			
			NextDiag.TempNode = "First time";
		break;
		
		case "trade":
			dialog.text = "Posiadam szeroki asortyment oryginalnych towarów, oraz kilka drobiazgów, które mogą cię zainteresować osobiście, kapitanie.";
			link.l1 = "Pokaż mi co masz, kupcze.";
			link.l1.go = "store";
			link.l2 = "Wiesz, przypomniałem sobie właśnie, że mam na głowie ważniejsze rzeczy niż oglądanie twoich towarów.";
			link.l2.go = "exit";
		break;
		
		case "store":
			NextDiag.CurrentNode = NextDiag.TempNode;
			DialogExit();
			switch (pchar.location)
			{
				case "Bridgetown_store":
					LaunchStore(Bridgetown_STORE);
				break;
				
				case "SanJuan_store":
					LaunchStore(SanJuan_STORE);
				break;

				case "IslaMona_store":
					LaunchStore(ISLAMONA_STORE);
				break;
				
				case "SantiagoVega_store":
					LaunchStore(SantiagoVega_STORE);
				break;
				
				case "Curacao_store":
					LaunchStore(Curacao_STORE);
				break;
				
				case "Tortuga_STORE":
					LaunchStore(Tortuga_STORE);
				break;
				
				case "StMartin_STORE":
					LaunchStore(StMartin_STORE);
				break;
				
				case "StKitts_STORE":
					LaunchStore(StKitts_STORE);
				break;
				
				case "Nevis_STORE":
					LaunchStore(Nevis_STORE);
				break;
				
				case "StEustatius_STORE":
					LaunchStore(StEustatius_STORE);
				break;
				
				case "Antigua_STORE":
					LaunchStore(Antigua_STORE);
				break;
				
				case "Montserrat_STORE":
					LaunchStore(Montserrat_STORE);
				break;
				
				case "Guadeloupe_STORE":
					LaunchStore(Guadeloupe_STORE);
				break;
				
				case "Martinique_STORE":
					LaunchStore(Martinique_STORE);
				break;
				
				case "LaVega_STORE":
					LaunchStore(LaVega_STORE);
				break;
				
				case "SantoDomingo_STORE":
					LaunchStore(SantoDomingo_STORE);
				break;

				case "PetitGoave_STORE":
					LaunchStore(PetitGoave_STORE);
				break;
			}
		break;

		case "delivery_trade_succesfull":
			if(sti(Quests[sti(npchar.currentquest)].l.isdelayed) == 1)
			{
				dialog.text = "Wydam polecenie natychmiastowego załadunku towaru na twój statek.";
				link.l1 = "Znakomicie! Nie mogę się doczekać, kiedy podniesiemy żagle.";
				link.l1.go = "exit";
				PrepareAcceptDeliveryQuest(npchar);
			}
			else
			{
				if(sti(Quests[sti(npchar.currentquest)].l.contribution) > 0)
				{
					dialog.text = "Hmm... Niech policzę... Spóźniłeś się " + FindRussianDaysString(sti(Quests[sti(npchar.currentquest)].l.contribution)) + ", dlatego za zwłokę potrącę ci z wynagrodzenia, zgodnie z naszą umową."; 
					link.l1 = "Chyba nie mam innego wyboru. Płać i zabieraj swoje towary.";
					link.l1.go = "exit";
					CompleteDeliveryTradeQuest(npchar);
				}
				else
				{
					dialog.text = "Dobrze, zatem zaczynamy rozładunek, skoro nie zgłaszasz obiekcji.";
					link.l1 = "Jasne, zaczynajcie.";
					link.l1.go = "exit";
					CompleteDeliveryTradeQuest(npchar);
				}
			}			
		break;

		case "delivery_trade_decline":
			dialog.text = "A niech to...";
			link.l1 = "W rzeczy samej. No to może pokażesz mi w końcu te towary?";
			link.l1.go = "trade";
            link.l2 = "Tak, porozmawiamy o tym później.";
			link.l2.go = "exit";
		break;
		
		case "quests":
			dialog.text = "Słucham, kapitanie.";
			link.l1 = "Znajdzie się jakaś robota dla mnie i mojego statku?";
			link.l1.go = "generate_quests";
	
			iSuccesDelivery = CheckForDeliverySuccess(npchar, "");
			if(iSuccesDelivery == 2)
			{
				if(npchar.id == Quests[sti(npchar.currentquest)].l.target_npc)
				{
					if(sti(Quests[sti(npchar.currentquest)].l.isdelayed) == 0)
					{
						if(CheckAttribute(npchar, "quest.punishment"))
						{
							if(sti(npchar.quest.punishment) > 0)
							{
								link.l2 = "Dostarczyłem ładunek, na który czekasz.";
								link.l2.go = "delivery_trade_success_punishment";
							}
							else
							{
								link.l2 = "Dostarczyłem ładunek, na który czekasz.";
								link.l2.go = "delivery_trade_success";
							}
						}
						else
						{
							link.l2 = "Dostarczyłem ładunek, na który czekasz.";
							link.l2.go = "delivery_trade_success";
						}
					}
					else
					{
						link.l3 = "Zostałem poproszony o zabranie ładunku od ciebie...";
						link.l3.go = "delay_delivery_cargo_load";
					}
				}
			}
		break;			

		case "delay_delivery_cargo_load":
            dialog.text = "Tak, tak, oczywiście! Czekałem na ciebie. Już nakazałem moim ludziom rozpocząć załadunek.";
			link.l1 = "Dobrze! Postawimy żagle jak tylko skończą.";
			link.l1.go = "exit";
			PrepareAcceptDeliveryQuest(npchar);
		break;
		
		case "generate_quests":
			dialog.text = SelectHovernorQuestText(npchar, &sAgreeLink, &sDeclineLink);
			link.l1 = "To dobra oferta. Wchodzę w to.";
			link.l1.go = sAgreeLink;
			link.l2 = "Obawiam się, że nie jestem zainteresowany.";
			link.l2.go = "exit";
		break;

		case "delivery_trade_accept":
			dialog.text = "Zatem dogadane, kapitanie? Mam jednak jeden mały warunek - musisz dostarczyć ten ładunek w " + FindRussianDaysString(sti(Quests[sti(npchar.CurrentQuest)].l.time)) + ". Jesli ci się nie uda, odliczę 5% od twojego wynagrodzenia za każdy dzień spóźnienia.";
			link.l1 = "Tak, tak. Rozumiem, że to pilne.";
			link.l1.go = "exit";
			AcceptDeliveryTradeQuest(npchar);
		break;

		case "delivery_trade_success":
			dialog.text = "Dobrze! Już się zaczynałem martwić. Oto twoja zapłata, kapitanie.";
			link.l1 = "Dziękuję. Mogę teraz spojrzeć na twoją ofertę?";
			link.l1.go = "trade";
			link.l2 = "Dziękuję. Mam nadzieję, że to nie jest nasze ostatnie spotkanie.";
			link.l2.go = "exit";
			CompleteDeliveryTradeQuest(npchar);
		break;

		case "delivery_trade_success_punishment":
			dialog.text = "Hmm... To dobra wiadomość, ale jesteś spóźniony o " + FindRussianDaysString(sti(npchar.quest.punishment)) + "! Z tego powodu muszę ci obciąć wynagrodzenie, gdyż poniosłem z tego tytułu znaczne straty.";
			link.l1 = "Brzmi rozsądnie. Mogę zobaczyć twoje towary?";
			link.l1.go = "trade";
			link.l2 = "Rozumiem. Zakończmy ten interes, bo mi się spieszy.";
			link.l2.go = "exit";
			CompleteDeliveryTradeQuest(npchar);
		break;

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