Ejemplo n.º 1
0
func Place(int amount, proplist rectangle, proplist settings)
{
	var max_tries = 2 * amount;
	var loc_area = nil;
	if (rectangle) loc_area = Loc_InArea(rectangle);
	var f;
	
	while ((amount > 0) && (--max_tries > 0))
	{
		var spot = FindLocation(Loc_Material("Water"), Loc_Space(20), loc_area);
		if (!spot) continue;
		
		f = CreateObjectAbove(this, spot.x, spot.y, NO_OWNER);
		if (!f) continue;
		// Randomly add some large/slim fish
		if (Random(3))
		{
			// There are naturally smaller and larger fishes. Fishes above around 150 can be clipped, so stay below that.
			f->SetCon(RandomX(75, 140));
			// make sure the smaller ones don't grow larger any more
			f->StopGrowth(); 
			// Slim fish.
			if (f->GetCon() > 100 || !Random(3))
				f->SetYZScale(1000 - Random(300));  
		}
		
		if (f->Stuck())
		{
			f->RemoveObject();
			continue;
		}
		--amount;
	}
	return f; // return last created fish
}
Ejemplo n.º 2
0
void SpriteBatch::AddSprite(Sprite &sprite, int order)
{
	Drawable temp;
	temp.drawOrder = order;
	temp.sprite = &sprite;
	drawables.insert(FindLocation(order), temp);

}
Ejemplo n.º 3
0
Location* LocationManager::FindLocation(const char* typeName, const char* name)
{
    LocationType* found = loctypes.Get(typeName, NULL);
    if(found)
    {
        return FindLocation(found, name);
    }
    return NULL;
}
Ejemplo n.º 4
0
Location* LocationManager::CreateLocation(const char* locationTypeName, const char* locationName, const csVector3 &pos, iSector* sector, float radius, float rot_angle, const csString &flags)
{
    LocationType* locationType = FindLocation(locationTypeName);
    if(!locationType)
    {
        return NULL;
    }

    return CreateLocation(locationType, locationName, pos, sector, radius, rot_angle, flags);
}
Ejemplo n.º 5
0
bool LocationManager::RemoveLocationType(const csString &locationName)
{
    LocationType* locationType = FindLocation(locationName);
    if(locationType)
    {

        loctypes.Delete(locationType->GetName(),locationType);

        delete locationType;
        return true;
    }

    return false;
}
Ejemplo n.º 6
0
func Place(int amount, proplist area, proplist settings)
{
	var max_tries = 2 * amount;
	var loc_area = nil;
	if (area) loc_area = Loc_InArea(area);
	
	while ((amount > 0) && (--max_tries > 0))
	{
		var spot = FindLocation(Loc_Material("Water"), Loc_Wall(CNAT_Bottom), loc_area);
		if (!spot) continue;
		
		var f = CreateObjectAbove(this, spot.x, spot.y, NO_OWNER);
		--amount;
	}
	return true;
}
Ejemplo n.º 7
0
func Place(int amount, proplist area, proplist settings)
{
	var max_tries = 2 * amount;
	var loc_area = nil;
	if (area) loc_area = Loc_InArea(area);
	
	while ((amount > 0) && (--max_tries > 0))
	{
		var spot = FindLocation(Loc_Material("Water"), Loc_Wall(CNAT_Bottom | CNAT_Top | CNAT_Left | CNAT_Right), loc_area);
		if (!spot) continue;
		
		var plant = CreateObject(this, spot.x, spot.y, NO_OWNER);
		plant->SetClrModulation(HSL(Random(255), 255, 200));
		plant->AddFork(nil, true);

		--amount;
	}
	return true;
}
Ejemplo n.º 8
0
void ProcessDialogEvent()
{
	ref NPChar, PChar, d;
	PChar = GetMainCharacter();
	aref Link, Diag;
	string NPC_Meeting;
	
	DeleteAttribute(&Dialog,"Links");

	makeref(NPChar,CharacterRef);
	makearef(Link, Dialog.Links);
	makeref(d, Dialog);
	makearef(Diag, NPChar.Dialog);
	
	switch(Dialog.CurrentNode)
	{
		// -----------------------------------Диалог первый - первая встреча
		case "exit":
			Diag.CurrentNode = Diag.TempNode;
			NPChar.quest.meeting = NPC_Meeting;
			DialogExit();
		break;

		case "First time":
			Dialog.defAni = "dialog_stay1";
			Dialog.defCam = "1";
			Dialog.defSnd = "dialogs\0\017";
			Dialog.defLinkAni = "dialog_1";
			Dialog.defLinkCam = "1";
			Dialog.defLinkSnd = "dialogs\woman\024";
			Dialog.ani = "dialog_stay2";
			Dialog.cam = "1";
			Dialog.snd = "voice\VIDE\VIDE001";
			
			dialog.text = DLG_TEXT[0];
			link.l1 = DLG_TEXT[1];
			link.l1.go = "exit";

			if (CheckQuestAttribute("gambling_with_girl", "gambled"))
			{
				Dialog.snd = "voice\VIDE\VIDE002";
				dialog.text = DLG_TEXT[2];
				link.l1 = DLG_TEXT[3];
				link.l1.go = "she_becomes_prisoner";
				link.l2 =  DLG_TEXT[4];
				link.l2.go = "she_story";
				AddQuestRecord("gambled_girl", "4");
			}		
			if (CheckQuestAttribute("gambling_with_girl", "to_hovernor"))
			{
				Dialog.snd = "voice\VIDE\VIDE019";
				dialog.text = DLG_TEXT[5];
				link.l1 = DLG_TEXT[6];
				link.l1.go = "to_home";
			}
		break;

		case "to_home":
			Dialog.snd = "voice\VIDE\VIDE003";
			dialog.text = DLG_TEXT[7];
			if (GetNationRelation2MainCharacter(FRANCE) == RELATION_ENEMY)
			{
				link.l1 = DLG_TEXT[8];
				link.l1.go = "to_home_bad";
				AddQuestRecord("gambled_girl", "11");
			}
			else
			{
				link.l1 = DLG_TEXT[9];
				link.l1.go = "exit";
			}
			pchar.quest.gambling_with_girl = "to_hovernor_2";
			AddQuestRecord("gambled_girl", "10");
		break;

		case "to_home_bad":
			Dialog.snd = "voice\VIDE\VIDE004";
			dialog.text = DLG_TEXT[10];
			link.l1 = DLG_TEXT[11];
			link.l1.go = "to_home_bad_2";
			link.l2 = DLG_TEXT[12];
			link.l2.go = "exit";
		break;

		case "to_home_bad_2":
			Dialog.snd = "voice\VIDE\VIDE005";
			dialog.text = DLG_TEXT[13];
			link.l1 = DLG_TEXT[14];
			link.l1.go = "exit";
			pchar.quest.gambling_with_girl = "done";
			npchar.location = "none";
			ChangeCharacterReputation(pchar, 1);
			OfficersReaction("good");
			AddPartyExp(pchar, 2000);
			AddQuestRecord("gambled_girl", "12");
		break;

		case "she_story":
			Dialog.snd = "voice\VIDE\VIDE006";
			dialog.text = DLG_TEXT[15];
			link.l1 = DLG_TEXT[16];
			link.l1.go = "she_story_2";
		break;

		case "she_story_2":
			Dialog.snd = "voice\VIDE\VIDE007";
			dialog.text = DLG_TEXT[17] + GetCharacterFullName(npchar.id) + DLG_TEXT[18];
			link.l1 = DLG_TEXT[19];
			link.l1.go = "she_story_3";
		break;

		case "she_story_3":
			Dialog.snd = "voice\VIDE\VIDE008";
			dialog.text = DLG_TEXT[20];
			link.l1 = DLG_TEXT[21];
			link.l1.go = "she_story_4";
		break;

		case "she_story_4":
			Dialog.snd = "voice\VIDE\VIDE009";
			dialog.text = DLG_TEXT[22];
			link.l1 = DLG_TEXT[23];
			link.l1.go = "she_story_5";
		break;

		case "she_story_5":
			Dialog.snd = "voice\VIDE\VIDE010";
			dialog.text = DLG_TEXT[24];
			link.l1 = DLG_TEXT[25];
			link.l1.go = "she_story_6";
		break;

		case "she_story_6":
			Dialog.snd = "voice\VIDE\VIDE011";
			dialog.text = DLG_TEXT[26];
			link.l1 = DLG_TEXT[27];
			link.l1.go = "she_story_7";
			link.l2 = DLG_TEXT[28];
			link.l2.go = "she_story_bad";
			AddQuestRecord("gambled_girl", "6");
		break;

		case "she_story_7":
			Dialog.snd = "voice\VIDE\VIDE012";
			dialog.text = DLG_TEXT[29];
			link.l1 = DLG_TEXT[30];
			link.l1.go = "she_story_8";
		break;

		case "she_story_8":
			Dialog.snd = "voice\VIDE\VIDE013";
			dialog.text = DLG_TEXT[31];
			link.l1 = DLG_TEXT[32];
			link.l1.go = "she_story_9";
		break;

		case "she_story_9":
			Dialog.snd = "voice\VIDE\VIDE014";
			dialog.text = DLG_TEXT[33] + GetCharacterFullName(DLG_TEXT[34]) + DLG_TEXT[35];
			link.l1 = DLG_TEXT[36];
			link.l1.go = "exit";
			AddDialogExitQuest("gambled_girl_to_FdF");
			AddQuestRecord("gambled_girl", "7");
		break;

		case "she_story_bad":
			Diag.CurrentNode = Diag.TempNode;
			NPChar.quest.meeting = NPC_Meeting;
			AddDialogExitQuest("girl_exit_from_room");
			AddQuestRecord("gambled_girl", "8");
		break;

		case "speak_1":
			Dialog.snd = "voice\VIDE\VIDE015";
			dialog.text = DLG_TEXT[37];
			link.l1 = DLG_TEXT[38];
			link.l1.go = "exit";
			characters[GetCharacterIndex("Raymond Bouchez")].dialog.currentnode = "speak_1";
			AddDialogExitQuest("Raymond_speak");
		break;

		case "speak_2":
			Dialog.snd = "voice\VIDE\VIDE016";
			dialog.text = DLG_TEXT[39];
			link.l1 = DLG_TEXT[40];
			link.l1.go = "exit";
			characters[GetCharacterIndex("Raymond Bouchez")].dialog.currentnode = "speak_2";
			AddDialogExitQuest("Raymond_speak");
		break;

		case "speak_3":
			Dialog.snd = "voice\VIDE\VIDE017";
			dialog.text = DLG_TEXT[41];
			link.l1 = DLG_TEXT[42];
			link.l1.go = "exit";
			AddDialogExitQuest("gambled_girl_exit_from_FDF_tavern");
			Diag.TempNode = "first time";
			AddQuestRecord("gambled_girl", "9");
		break;

		case "she_becomes_prisoner":
			Dialog.snd = "voice\VIDE\VIDE018";
			dialog.text = DLG_TEXT[43] + GetCharacterFullName(npchar.id) + DLG_TEXT[44];
			link.l1 = DLG_TEXT[45];
			link.l1.go = "exit_prisoned";
			link.l2 = DLG_TEXT[46];
			link.l2.go = "she_story_3";
		break;

		case "exit_prisoned":
			Diag.CurrentNode = Diag.TempNode;
			NPChar.quest.meeting = NPC_Meeting;
			DialogExit();
			Locations[FindLocation(pchar.location)].reload.l1.disable = 0;
			AddPassenger(pchar, npchar, 1);
			OfficersReaction("bad");
			pchar.quest.gambling_with_girl = "prisoned";
			AddDialogExitQuest("girl_for_sale");
		break;
	}
}
Ejemplo n.º 9
0
void ProcessDialogEvent()
{
	ref NPChar;
	aref Link, NextDiag;

	DeleteAttribute(&Dialog,"Links");

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

	ref PChar;
	PChar = GetMainCharacter();

	
	switch(Dialog.CurrentNode)
	{
		// -----------------------------------Диалог первый - первая встреча
		case "First time":
			Dialog.defAni = "dialog_stay1";
			Dialog.defCam = "1";
			Dialog.defSnd = "dialogs\0\017";
			Dialog.defLinkAni = "dialog_1";
			Dialog.defLinkCam = "1";
			Dialog.defLinkSnd = "dialogs\woman\024";
			Dialog.ani = "dialog_stay2";
			Dialog.cam = "1";
			Dialog.snd = "voice\PADO\PADO001";
			
			dialog.text = DLG_TEXT[0];
			link.l1 = DLG_TEXT[1];
			link.l1.go = "quests";
			link.l2 = DLG_TEXT[2];
			link.l2.go = "donation";
			link.l99 = DLG_TEXT[3];
			link.l99.go = "exit";
			NextDiag.TempNode = "first time";
		break;

		case "quests":
			iTest = 0;
			Dialog.snd = "voice\PADO\PADO002";
			dialog.text = DLG_TEXT[4];
			if (pchar.quest.main_line == "danielle_speak_with_almost_dead_rheims_complete" && iTest < QUEST_COUNTER)
			{
				Link.l1 = DLG_TEXT[5];
				Link.l1.go = "blaze_to_library";
				iTest = iTest + 1;
			}
			if (pchar.quest.main_line == "compramat_done" && iTest < QUEST_COUNTER)
			{
				link.l1 = DLG_TEXT[6];
				link.l1.go = "compramat_done";
				ChangeCharacterReputation(pchar, -1);
			}
			if (pchar.quest.main_line == "compramat_bul_bul" && iTest < QUEST_COUNTER)
			{
				link.l1 = DLG_TEXT[7];
				link.l1.go = "compramat_bul_bul";
			}
			if (CheckQuestAttribute("ANIMISTS", "letter_to_domingues"))
			{
				link.l1 = DLG_TEXT[8];
				link.l1.go = "letter_good";
				TakeItemFromCharacter(pchar, LETTER_TO_DOMINGUES);
			}
			if (CheckQuestAttribute("ANIMISTS", "letter_to_domingues_opened"))
			{
				link.l1 = DLG_TEXT[9];
				link.l1.go = "letter_bad";
			}
			if (CheckQuestAttribute("ANIMISTS", "barkue_drown"))
			{
				link.l1 = DLG_TEXT[10];
				link.l1.go = "barkue_drown";
			}
			if (CheckQuestAttribute("ANIMISTS","to_barkue_complete"))
			{
				link.l1 = DLG_TEXT[11];
				link.l1.go = "to_barkue_complete";
				RemoveCharacterCompanion(pchar, characterFromID("Mergildo Hurtado"));
			}
			link.l99 = DLG_TEXT[12];
			link.l99.go = "exit";
		break;

		case "to_barkue_complete":
			Dialog.snd = "voice\PADO\PADO003";
			dialog.text = DLG_TEXT[13];
			link.l1 = DLG_TEXT[14];
			link.l1.go = "to_barkue_complete_2";
		break;

		case "to_barkue_complete_2":
			Dialog.snd = "voice\PADO\PADO004";
			dialog.text = DLG_TEXT[15];
			link.l1 = DLG_TEXT[16];
			link.l1.go = "to_barkue_complete_3";
		break;

		case "to_barkue_complete_3":
			Dialog.snd = "voice\PADO\PADO005";
			dialog.text = DLG_TEXT[17];
			link.l1 = DLG_TEXT[18];
			link.l1.go = "to_barkue_complete_4";
		break;

		case "to_barkue_complete_4":
			Dialog.snd = "voice\PADO\PADO006";
			dialog.text = DLG_TEXT[19];
			link.l1 = DLG_TEXT[20];
			link.l1.go = "to_bernard_2";
			AddMoneyToCharacter(pchar, 3500);
			AddPartyExp(pchar, 2500);
			AddQuestRecord("ANIMISTS", "19");
		break;

		case "barkue_drown":
			Dialog.snd = "voice\PADO\PADO007";
			dialog.text = DLG_TEXT[21];
			link.l1 = DLG_TEXT[22];
			link.l1.go = "barkue_drown_2";
		break;

		case "barkue_drown_2":
			Dialog.snd = "voice\PADO\PADO008";
			dialog.text = DLG_TEXT[23];
			link.l1 = DLG_TEXT[24];
			link.l1.go = "to_bernard";
			AddMoneyToCharacter(pchar, 2500);
			AddQuestRecord("ANIMISTS", "18");
		break;

		case "to_bernard":
			Dialog.snd = "voice\PADO\PADO009";
			dialog.text = DLG_TEXT[25];
			link.l1 = DLG_TEXT[26];
			link.l1.go = "to_bernard_2";
		break;

		case "to_bernard_2":
			Dialog.snd = "voice\PADO\PADO010";
			dialog.text = DLG_TEXT[27];
			link.l1 = DLG_TEXT[28];
			link.l1.go = "to_bernard_3";
		break;

		case "to_bernard_3":
			Dialog.snd = "voice\PADO\PADO011";
			dialog.text = DLG_TEXT[29];
			link.l1 = DLG_TEXT[30];
			link.l1.go = "exit";
			pchar.quest.ANIMISTS = "letter_to_father_bernard";
			AddDialogExitQuest("oops_ANIMISTS_want_letter_again");
			GiveItem2Character(pchar, LETTER_TO_BERNARD);
			AddQuestRecord("ANIMISTS", "20");
		break;

		case "letter_good":
			Dialog.snd = "voice\PADO\PADO012";
			dialog.text = DLG_TEXT[31];
			link.l1 = DLG_TEXT[32];
			link.l1.go = "letter_good_2";
		break;

		case "letter_bad":
			Dialog.snd = "voice\PADO\PADO013";
			dialog.text = DLG_TEXT[33];
			link.l1 = DLG_TEXT[34];
			link.l1.go = "letter_bad_exit";
			link.l2 = DLG_TEXT[35];
			link.l2.go = "letter_bad_2";
		break;

		case "letter_bad_2":
			Dialog.snd = "voice\PADO\PADO014";
			dialog.text = DLG_TEXT[36];
			link.l1 = DLG_TEXT[37];
			link.l1.go = "letter_bad_3";
		break;

		case "letter_bad_3":
			Dialog.snd = "voice\PADO\PADO015";
			dialog.text = DLG_TEXT[38];
			link.l1 = DLG_TEXT[39];
			link.l1.go = "prepare_for_bark";
			ChangeCharacterReputation(pchar, -5);
			AddMoneyToCharacter(pchar, 1000);
			AddPartyExp(pchar, 1500);
			AddQuestRecord("ANIMISTS", "12");
		break;

		case "letter_bad_exit":
			Dialog.snd = "voice\PADO\PADO016";
			dialog.text = DLG_TEXT[40];
			link.l1 = DLG_TEXT[41];
			link.l1.go = "letter_bad_exit_2";
			link.l2 = DLG_TEXT[42];
			link.l2.go = "letter_bad_2";
		break;

		case "letter_bad_exit_2":
			DialogExit();
			NextDiag.CurrentNode = NextDiag.TempNode;
			
			ChangeCharacterReputation(pchar, -15);
			AddQuestRecord("ANIMISTS", "13");
			CloseQuestheader("ANIMISTS");
		break;

		case "letter_good_2":
			Dialog.snd = "voice\PADO\PADO017";
			dialog.text = DLG_TEXT[43];
			link.l1 = DLG_TEXT[44] + GetcharacterFullname(DLG_TEXT[45]) + DLG_TEXT[46];
			link.l1.go = "letter_good_3";
		break;

		case "letter_good_3":
			Dialog.snd = "voice\PADO\PADO018";
			dialog.text = DLG_TEXT[47];
			link.l1 = DLG_TEXT[48];
			link.l1.go = "letter_good_4";
		break;

		case "letter_good_4":
			Dialog.snd = "voice\PADO\PADO019";
			dialog.text = DLG_TEXT[49] + GetcharacterFullname(DLG_TEXT[50]) + DLG_TEXT[51];
			link.l1 = DLG_TEXT[52];
			link.l1.go = "letter_good_5";
		break;

		case "letter_good_5":
			Dialog.snd = "voice\PADO\PADO020";
			dialog.text = DLG_TEXT[53];
			link.l1 = DLG_TEXT[54];
			link.l1.go = "prepare_for_bark";
			AddMoneyToCharacter(pchar, 2000);
			ChangeCharacterReputation(pchar, 1);
			AddPartyExp(pchar, 1700);
		break;

		case "prepare_for_bark":
			Dialog.snd = "voice\PADO\PADO021";
			dialog.text = DLG_TEXT[55];
			link.l1 = DLG_TEXT[56];
			link.l1.go = "prepare_for_bark_2";
		break;

		case "prepare_for_bark_2":
			Dialog.snd = "voice\PADO\PADO022";
			dialog.text = DLG_TEXT[57];
			link.l1 = DLG_TEXT[58];
			link.l1.go = "prepare_for_bark_3";
		break;

		case "prepare_for_bark_3":
			Dialog.snd = "voice\PADO\PADO023";
			dialog.text = DLG_TEXT[59] + GetCharacterFullName(DLG_TEXT[60]) + DLG_TEXT[61];
			link.l1 = DLG_TEXT[62];
			link.l1.go = "exit";
			pchar.quest.ANIMISTS = "to_barkue";
			AddDialogExitQuest("prepare_for_barkue");
		break;

		case "compramat_bul_bul":
			Dialog.snd = "voice\PADO\PADO024";
			dialog.text = DLG_TEXT[63];
			link.l1 = DLG_TEXT[64];
			link.l1.go = "compramat_bul_bul_2";
		break;

		case "compramat_bul_bul_2":
			Dialog.snd = "voice\PADO\PADO025";
			dialog.text = DLG_TEXT[65];
			link.l1 = DLG_TEXT[66];
			link.l1.go = "compramat_bul_bul_3";
		break;

		case "compramat_bul_bul_3":
			Dialog.snd = "voice\PADO\PADO026";
			dialog.text = DLG_TEXT[67];
			link.l1 = DLG_TEXT[68];
			link.l1.go = "compramat_bul_bul_4";
		break;

		case "compramat_bul_bul_4":
			Dialog.snd = "voice\PADO\PADO027";
			dialog.text = DLG_TEXT[69];
			link.l1 = DLG_TEXT[70];
			link.l1.go = "library";
		break;

		case "compramat_done":
			Dialog.snd = "voice\PADO\PADO028";
			dialog.text = DLG_TEXT[71];
			link.l1 = DLG_TEXT[72];
			link.l1.go = "compramat_done_2";
			link.l2 = DLG_TEXT[73];
			link.l2.go = "compramat_not_done";
		break;

		case "compramat_not_done":
			Dialog.snd = "voice\PADO\PADO029";
			dialog.text = DLG_TEXT[74];
			link.l1 = DLG_TEXT[75];
			link.l1.go = "compramat_not_done_2";
		break;

		case "compramat_not_done_2":
			Dialog.snd = "voice\PADO\PADO030";
			dialog.text = DLG_TEXT[76];
			link.l1 = DLG_TEXT[77];
			link.l1.go = "compramat_not_done_3";
		break;

		case "compramat_not_done_3":
			Dialog.snd = "voice\PADO\PADO031";
			dialog.text = DLG_TEXT[78];
			link.l1 = DLG_TEXT[79];
			link.l1.go = "compramat_not_done_4";
		break;

		case "compramat_not_done_4":
			Dialog.snd = "voice\PADO\PADO032";
			dialog.text = DLG_TEXT[80];
			link.l1 = DLG_TEXT[81];
			link.l1.go = "compramat_done_3";
			ChangeCharacterReputation(pchar, -3);
			AddMoneyToCharacter(pchar, 5000);
		break;

		case "compramat_done_2":
			Dialog.snd = "voice\PADO\PADO033";
			dialog.text = DLG_TEXT[82];
			link.l1 = DLG_TEXT[83];
			link.l1.go = "compramat_done_3";
		break;

		case "compramat_done_3":
			Dialog.snd = "voice\PADO\PADO034";
			dialog.text = DLG_TEXT[84];
			link.l1 = DLG_TEXT[85];
			link.l1.go = "library";
		break;

		case "library":
			DialogExit();
			NextDiag.CurrentNode = NextDiag.TempNode;
			AddDialogExitQuest("come_to_library");
		break;

		case "blaze_to_library":
			Dialog.snd = "voice\PADO\PADO035";
			Dialog.Text = DLG_TEXT[86];
			Link.l1 = DLG_TEXT[87];
			Link.l1.go = "blaze_to_library_2";
			Locations[FindLocation("Muelle_church")].reload.l1.go = "Muelle_town_04";
			Locations[FindLocation("Muelle_church")].reload.l1.emerge = "reload4";
		break;

		case "blaze_to_library_2":
			Dialog.snd = "voice\PADO\PADO036";
			dialog.text = DLG_TEXT[88];
			link.l1 = DLG_TEXT[89];
			link.l1.go = "blaze_to_library_3";
		break;

		case "blaze_to_library_3":
			Dialog.snd = "voice\PADO\PADO037";
			dialog.text = DLG_TEXT[90] + characters[GetCharacterIndex(DLG_TEXT[91])].name + " " + characters[GetCharacterIndex(DLG_TEXT[92])].lastname + DLG_TEXT[93];
			link.l1 = DLG_TEXT[94];
			link.l1.go = "blaze_to_library_4";
		break;

		case "blaze_to_library_4":
			Dialog.snd = "voice\PADO\PADO038";
			dialog.text = DLG_TEXT[95];
			link.l1 = DLG_TEXT[96];
			link.l1.go = "blaze_to_library_5";
		break;

		case "blaze_to_library_5":
			Dialog.snd = "voice\PADO\PADO039";
			dialog.text = DLG_TEXT[97];
			link.l1 = DLG_TEXT[98];
			link.l1.go = "blaze_to_library_6";
		break;

		case "blaze_to_library_6":
			Dialog.snd = "voice\PADO\PADO040";
			dialog.text = DLG_TEXT[99];
			link.l1 = DLG_TEXT[100];
			link.l1.go = "exit";
			AddDialogExitQuest("prepare_for_meet_ferro");
		break;
		
		case "donation":
			Dialog.snd = "voice\PADO\PADO041";
			dialog.Text = DLG_TEXT[101];
			Link.l1 = DLG_TEXT[102];
			Link.l1.go = "No donation";
			if(makeint(PChar.money)>=100)
			{	
				Link.l2 = DLG_TEXT[103];
				Link.l2.go = "donation paid_100";
			}
			if(makeint(PChar.money)>=1000)
			{
				Link.l3 = DLG_TEXT[104];
				Link.l3.go = "donation paid_1000";
			}
			if(makeint(PChar.money)>=5000)
			{	
				Link.l4 = DLG_TEXT[105];
				Link.l4.go = "donation paid_5000";
			}
		break;

		case "No donation":
			Dialog.snd = "voice\PADO\PADO042";
			dialog.Text = DLG_TEXT[106];
			Link.l1 = DLG_TEXT[107];
			Link.l1.go = "quests";
			Link.l2 = DLG_TEXT[108];
			Link.l2.go = "exit";
		break;

		case "donation paid_100":
			Dialog.snd = "voice\PADO\PADO043";
			AddMoneyToCharacter(pchar, -100);
			pchar.quest.donate = makeint(pchar.quest.donate) + 100;
			dialog.Text = DLG_TEXT[109];
			Link.l1 = DLG_TEXT[110];
			Link.l1.go = "quests";
			Link.l2 = DLG_TEXT[111];
			Link.l2.go = "exit";
			AddDialogExitQuest("donation");
		break;
		
		case "donation paid_1000":
			Dialog.snd = "voice\PADO\PADO043";
			AddMoneyToCharacter(pchar, -1000);
			pchar.quest.donate = makeint(pchar.quest.donate) + 1000;
			dialog.Text = DLG_TEXT[112];
			Link.l1 = DLG_TEXT[113];
			Link.l1.go = "quests";
			Link.l2 = DLG_TEXT[114];
			Link.l2.go = "exit";
			AddDialogExitQuest("donation");
		break;
		
		case "donation paid_5000":
			Dialog.snd = "voice\PADO\PADO043";
			AddMoneyToCharacter(pchar, -5000);
			pchar.quest.donate = makeint(pchar.quest.donate) + 5000;
			dialog.Text = DLG_TEXT[115];
			Link.l1 = DLG_TEXT[116];
			Link.l1.go = "quests";
			Link.l2 = DLG_TEXT[117];
			Link.l2.go = "exit";
			AddDialogExitQuest("donation");
		break;

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