Changeset - c47efa94913b
[Not reviewed]
default
0 6 0
Silverwing - 8 years ago 2016-07-01 14:17:20

various improvements and fixes
6 files changed with 299 insertions and 67 deletions:
0 comments (0 inline, 0 general)
atlantis.lua
Show inline comments
 
@@ -13,6 +13,7 @@ global {
 
	atl_iyh_shockfish_dead = false;
 
	atl_iyh_shockfish_left = false;
 
	atl_iyh_shockfish_away = 0;
 
	atl_iyh_entrance_destroyed = false;
 
	
 
	atl_lfc_state = 0;
 
	atl_lfc_panic = 0;
atlantis_iyhehevjiarr.lua
Show inline comments
 
@@ -46,10 +46,19 @@ char_aikerjarr_lev = obj {
 
		end;
 
	end;
 
	act = function(s)
 
		if (stead.nameof(where(s)) == s.home) then
 
			walkin(wright_home_dlg);
 
		if (not where(pl).leviathan) then
 
			return [[
 
				Вы не можете говорить с ним сейчас.
 
			]];
 
		end;
 
		if (atl_iyh_shockfish_dead) then
 
			return [[
 
				Аикерьярр молчит.
 
			]];
 
		else
 
			walkin(wright_dlg);
 
			return [[
 
				"Вы что-нужно-делайте. Я наблюдаю". 
 
			]];
 
		end;
 
	end;
 
};
 
@@ -78,9 +87,10 @@ iyh_far_from_entrance = dlg {
 
	no_exit = [[
 
		Нет смысла покидать Левиафан здесь. 
 
	]];
 
	nam = "Левиафан, рубка";
 
	nam = "Штурвал Левиафана";
 
	hideinv = true;
 
	entered = function(s)
 
		atl_iyh_state = 7;
 
		if (not s.visited) then
 
			return [[
 
				Вы прибываете на место.
 
@@ -113,14 +123,17 @@ iyh_far_from_entrance = dlg {
 
			Вы решаете подождать до наступления ночи и это правдывает себя. Как только последние лучи солнца перестают пробиваться сквозь толщу воды, скат выбирается из своего логова и отправляется на охоту.
 
		]], code [[ 
 
			lifeon(iyh_far_from_entrance);
 
			atl_iyh_shockfish_away = 50;
 
			atl_iyh_shockfish_away = 30;
 
		]]};
 
		{tag="light_temple", always=true, "[Осветить вход в храм]", [[
 
			Мощный луч света падает на вход в храм. Вы видите внутри какое-то движение и изнутри выплывает огромный скат. 
 
		]], code [[ iyh_fight.distance = 1000; walk('iyh_fight'); ]]};
 
		{tag="light_wall_r", "[Осветить скалы справа от храма]", [[ 
 
			Мощный луч света освещает скалы по правую сторону от храма. Он плавно скользит по поверхности скалы, пока вы не натыкаетесь на то, что отсюда кажется вам каким-то ущельем. Возможно следует изучить его?
 
		]], code [[ pon('ravine'); ]]};
 
		]], code [[ 
 
			iyh_near_temple:pon('ravine');
 
			pon('ravine'); 
 
		]]};
 
		{tag="light_wall_l", "[Осветить скалы слева от храма]", [[
 
			Мощный луч света освещает скалы по левую сторону от храма. Он плавно скользит по поверхности скалы, однако так и не натыкается ни на что интересное. 
 
		]]};
 
@@ -128,17 +141,28 @@ iyh_far_from_entrance = dlg {
 
			Вы поворачиваете штурвал и включаете двигатели Левиафана. Через несколько минут вы оказываетесь у входа в ущелье.
 
		]], code [[ walk('iyh_ravine_entry'); ]]};
 
		{tag="away", always=true, "[Отойти от штурвала]", code = [[
 
			back();
 
			walk('leviathan_wheelhouse');
 
		]]};
 
		{tag="return", always=true, "[Покинуть храм]", code = [[
 
			walk('leviathan_dlg');
 
		]]};
 
	};
 
	life = function(s)
 
		if (atl_iyh_shockfish_away == 0) then
 
			-- TODO если игрок в храме - ему хана
 
		elseif (atl_iyh_shockfish_away < 5) then
 
			pr "Приближается рассвет. Скат скоро вернется. ";
 
		if (not atl_iyh_shockfish_left) then
 
			atl_iyh_shockfish_away = atl_iyh_shockfish_away - 1;
 
			if (atl_iyh_shockfish_away == 0) then
 
				-- TODO если игрок в храме - ему хана
 
				if (where(pl) == iyh_temple_main_hall_entry or where(pl) == iyh_temple_main_hall_middle or where(pl) == iyh_temple_main_hall_end or where(pl) == iyh_near_temple_foot) then
 
					walk("game_over_shockfish");
 
				elseif (where(pl).leviathan == true and (where(submarine_leviathan) == "iyh_near_temple_foot")) then
 
					pr [[
 
						Скат возвращается и, заметив Левиафан, тут же нападает на субмарину. Вы поднимаетесь на мостик, чтобы принять управление. 
 
					]];
 
					walk("iyh_fight");
 
				end;
 
			elseif (atl_iyh_shockfish_away < 5) then
 
				pr "Приближается рассвет. Скат скоро вернется. ";
 
			end;
 
		end;
 
	end;
 
};
 
@@ -150,16 +174,17 @@ iyh_fight = room {
 
		shockfish_health = 100;
 
		timing = 0;
 
	};
 
	nam = "Левиафан, рубка";
 
	nam = "Штурвал Левиафана";
 
	entered = function(s)
 
		s.temple_distance = distance;
 
		s.temple_distance = s.distance;
 
		s.shockfish_health = 100;
 
	end;
 
	hideinv = true;
 
	forcedsc = true;
 
	leviathan = true;
 
	dsc = function(s)
 
		pr("Вы находитесь от ската на расстоянии около "..tostring(s.distance).." метров");
 
		pr("Храм находится примерно на расстоянии " .. tostring(s.temple_distance) .. " метров");
 
		pr("Вы находитесь от ската на расстоянии около "..tostring(s.distance).." метров. ");
 
		pr("Храм находится примерно на расстоянии " .. tostring(s.temple_distance) .. " метров. ");
 
		pr("На приборной панели вы видите, что ");
 
		iyh_fight_torpedo:enable();
 
		iyh_fight_recharge:disable();
 
@@ -185,7 +210,7 @@ iyh_fight = room {
 
	end;
 
	maketurn = function(s)
 
		if (s.distance > 1000) then
 
			if (s.shockfish_health < 20) then
 
			if (s.shockfish_health < 20 or atl_iyh_entrance_destroyed) then
 
				pr "Скат уплывает и вы остаетесь одни. ";
 
				atl_iyh_shockfish_left = true;
 
				walk("iyh_far_from_entrance");
 
@@ -194,16 +219,16 @@ iyh_fight = room {
 
				walk("iyh_far_from_entrance");
 
			end;
 
		end;
 
		if (s.shockfish_health < 20) then
 
		if (s.shockfish_health < 20 or (atl_iyh_entrance_destroyed and s.shockfish_health < 70)) then
 
			if (s.distance < 0) then
 
				s.distance = s.distance - 75;
 
			else
 
				s.distance = s.distance + 75;
 
			end;
 
			pr "";
 
			pr "Скат пытается сбежать от вас. ";
 
		else
 
			if (s.distance <= 75) then
 
				if (s.distance > 0) then
 
			if (math.abs(s.distance) <= 75) then
 
				if (math.abs(s.distance) > 0) then
 
					s.distance = 0;
 
					pr "Скат приближается к вам. ";
 
				end;
 
@@ -217,16 +242,16 @@ iyh_fight = room {
 
					elseif (submarine_leviathan.electric_integrity > 0) then
 
						pr "Свет моргает, проводка искрит. ";
 
						if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
							pr "По телефону вы слышите встревоженный голос Райта: \"Мы так долго не протянем\".";
 
							pr "По телефону вы слышите встревоженный голос Райта: \"Мы так долго не протянем\". ";
 
						elseif (ArrayUtils.indexOf(pl.party, 'radcliffe') ~= 0) then
 
							pr "По телефону вы слышите встревоженный голос Рэдклиффа: \"Мы так долго не протянем\".";
 
							pr "По телефону вы слышите встревоженный голос Рэдклиффа: \"Мы так долго не протянем\". ";
 
						end;
 
					else
 
						walk('game_over_powerless');
 
					end;
 
				else
 
					s.timing = s.timing - 1;
 
					pr "Скат пытается пробить обшивку Левиафана хвостовым шипом";
 
					pr "Скат пытается пробить обшивку Левиафана хвостовым шипом. ";
 
					submarine_leviathan.hull_integrity = submarine_leviathan.hull_integrity - 5;
 
					if (submarine_leviathan.hull_integrity > 50) then
 
						pr ", но не наосит ощитимого ущерба. ";
 
@@ -238,6 +263,11 @@ iyh_fight = room {
 
				end;
 
			else
 
				pr "Скат приближается к вам. ";
 
				if (s.distance < 0) then
 
				s.distance = s.distance + 75;
 
			else
 
				s.distance = s.distance - 75;
 
			end;
 
			end;
 
		end;
 
	end;
 
@@ -254,13 +284,38 @@ iyh_fight = room {
 
	};
 
};
 
 
iyh_fight_torpedo_temple = obj {
 
	nam = "iyh_fight_torpedo_temple";
 
	dsc = "{Выстрелить торпедой в храм}^";
 
	act = function(s)
 
		if (math.abs(iyh_fight.temple_distance) < 50) then
 
			return [[
 
				Цель слишком близко. 
 
			]];
 
		elseif (math.abs(iyh_fight.temple_distance) > 200) then
 
			return [[
 
				Цель слишком далеко. 
 
			]];
 
		else
 
			atl_iyh_entrance_destroyed = true;
 
			return [[
 
				Торпеда попадает в аккурат над храмом и вход оказывается завален тяжелыми глыбами. 
 
			]];
 
		end;
 
	end;
 
};
 
 
iyh_fight_torpedo = obj {
 
	nam = "iyh_fight_torpedo";
 
	dsc = "{Выстрелить торпедой}^";
 
	dsc = "{Выстрелить торпедой в ската}^";
 
	act = function(s)
 
		if (math.abs(iyh_fight.distance) > 200) then
 
		if (math.abs(iyh_fight.distance) < 50) then
 
			return [[
 
				Цель слишком далеко
 
				Цель слишком близко. 
 
			]];
 
		elseif (math.abs(iyh_fight.distance) > 200) then
 
			return [[
 
				Цель слишком далеко. 
 
			]];
 
		else
 
			if (iyh_fight.shockfish_health > 70) then
 
@@ -277,8 +332,25 @@ iyh_fight_torpedo = obj {
 
				atl_iyh_shockfish_dead = true;
 
				pr "Вы стреляете торпедой в ската. Торпеда взрывается достигнув цели и разрывает ската. Вода краснеет от крови, а вы теперь можете безопасно приблизиться к храму. ";
 
				
 
				if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
					pr [[
 
						Леарр в ярости поднимается в рубку и кричит на вас: "Что ты делаешь ненавистный-a'rr?!"
 
					]];
 
				elseif (ArrayUtils.indexOf(pl.party, 'aikerjarr') ~= 0) then
 
					pr [[
 
						Аикерьярр отворачивается от иллюминатора и со злобой смотрит на вас: "Ты за-это-ответишь he'rr". 
 
					]];
 
				end;
 
				
 
				if (math.abs(iyh_fight.temple_distance) < 100) then
 
					walk("iyh_near_temple");
 
				else
 
					walk("iyh_far_from_entrance");
 
				end;
 
				
 
				return;
 
			end;
 
			return iyh_fight.maketurn();
 
			return iyh_fight:maketurn();
 
		end;
 
	end;
 
};
 
@@ -298,7 +370,7 @@ iyh_fight_sonic = obj {
 
			else
 
				pr "Вы стреляете в ската из звуковой пушки. Это не наносит ему серьезного ущерба. ";
 
			end;
 
			return iyh_fight.maketurn();
 
			return iyh_fight:maketurn();
 
		end;
 
	end;
 
};
 
@@ -312,8 +384,8 @@ iyh_fight_recharge = obj {
 
			pr "Вы отдаете по телефону приказ перезарядить торпедные аппараты. ";
 
		else
 
			pr "Вы спускаетесь вниз, чтобы перезарядить торпедные аппараты. ";
 
			iyh_fight.maketurn();
 
			iyh_fight.maketurn();
 
			iyh_fight:maketurn();
 
			iyh_fight:maketurn();
 
			pr "Вы возвращаетесь в рубку, чтобы продолжить бой. "
 
		end;
 
	end;
 
@@ -323,21 +395,21 @@ iyh_advance_full = obj {
 
	nam = "iyh_advance_full";
 
	dsc = "{Полный вперед}^";
 
	act = function(s)
 
		pr "Вы включаете двигатели на полную мощность";
 
		pr "Вы включаете двигатели на полную мощность. ";
 
		if (iyh_fight.distance >= 0) then
 
			iyh_fight.distance = iyh_fight.distance - 100;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance - 100;
 
			if (iyh_fight.distance < 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		else
 
			iyh_fight.distance = iyh_fight.distance + 100;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance + 100;
 
			if (iyh_fight.distance >= 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		end;
 
		iyh_fight.maketurn();
 
		iyh_fight:maketurn();
 
	end;
 
};
 
 
@@ -345,21 +417,21 @@ iyh_advance_half = obj {
 
	nam = "iyh_advance_half";
 
	dsc = "{1/2 вперед}^";
 
	act = function(s)
 
		pr "Вы включаете двигатели на половину мощности";
 
		pr "Вы включаете двигатели на половину мощности. ";
 
		if (iyh_fight.distance >= 0) then
 
			iyh_fight.distance = iyh_fight.distance - 50;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance - 50;
 
			if (iyh_fight.distance < 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		else
 
			iyh_fight.distance = iyh_fight.distance + 50;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance + 50;
 
			if (iyh_fight.distance >= 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		end;
 
		iyh_fight.maketurn();
 
		iyh_fight:maketurn();
 
	end;
 
};
 
 
@@ -367,21 +439,21 @@ iyh_advance_quarter = obj {
 
	nam = "iyh_advance_quarter";
 
	dsc = "{1/4 вперед}^";
 
	act = function(s)
 
		pr "Вы включаете двигатели на четверть мощности";
 
		pr "Вы включаете двигатели на четверть мощности. ";
 
		if (iyh_fight.distance >= 0) then
 
			iyh_fight.distance = iyh_fight.distance - 25;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance - 25;
 
			if (iyh_fight.distance < 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		else
 
			iyh_fight.distance = iyh_fight.distance + 25;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance + 25;
 
			if (iyh_fight.distance >= 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		end;
 
		iyh_fight.maketurn();
 
		iyh_fight:maketurn();
 
	end;
 
};
 
 
@@ -389,21 +461,21 @@ iyh_retreat_full = obj {
 
	nam = "iyh_retreat_full";
 
	dsc = "{Полный назад}^";
 
	act = function(s)
 
		pr "Вы включаете двигатели на полную мощность";
 
		pr "Вы включаете двигатели на полную мощность. ";
 
		if (iyh_fight.distance >= 0) then
 
			iyh_fight.distance = iyh_fight.distance + 100;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance + 100;
 
			if (iyh_fight.distance < 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		else
 
			iyh_fight.distance = iyh_fight.distance - 100;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance - 100;
 
			if (iyh_fight.distance >= 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		end;
 
		iyh_fight.maketurn();
 
		iyh_fight:maketurn();
 
	end;
 
};
 
 
@@ -411,21 +483,21 @@ iyh_retreat_half = obj {
 
	nam = "iyh_retreat_half";
 
	dsc = "{1/2 назад}^";
 
	act = function(s)
 
		pr "Вы включаете двигатели на половину мощности";
 
		pr "Вы включаете двигатели на половину мощности. ";
 
		if (iyh_fight.distance >= 0) then
 
			iyh_fight.distance = iyh_fight.distance + 50;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance + 50;
 
			if (iyh_fight.distance < 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		else
 
			iyh_fight.distance = iyh_fight.distance - 50;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance - 50;
 
			if (iyh_fight.distance >= 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		end;
 
		iyh_fight.maketurn();
 
		iyh_fight:maketurn();
 
	end;
 
};
 
 
@@ -433,26 +505,26 @@ iyh_retreat_quarter = obj {
 
	nam = "iyh_retreat_quarter";
 
	dsc = "{1/4 назад}^";
 
	act = function(s)
 
		pr "Вы включаете двигатели на четверть мощности";
 
		pr "Вы включаете двигатели на четверть мощности. ";
 
		if (iyh_fight.distance >= 0) then
 
			iyh_fight.distance = iyh_fight.distance + 25;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance + 25;
 
			if (iyh_fight.distance < 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		else
 
			iyh_fight.distance = iyh_fight.distance - 25;
 
			iyh_fight.temple_distance = iyh_fight.temple_distance - 25;
 
			if (iyh_fight.distance >= 0) then
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину."
 
				pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
			end;
 
		end;
 
		iyh_fight.maketurn();
 
		iyh_fight:maketurn();
 
	end;
 
};
 
 
iyh_ravine_entry = room {
 
	nam = "Левиафан, рубка";
 
	nam = "Штурвал Левиафана";
 
	no_exit = [[
 
		Нет смысла покидать Левиафан здесь. 
 
	]];
 
@@ -532,7 +604,7 @@ iyh_labyrinth = room {
 
	no_exit = [[
 
		Нет смысла покидать Левиафан здесь. 
 
	]];
 
	nam = "Лабиринт";
 
	nam = "Штурвал Левиафана";
 
	dsc = function(s)
 
		pr [[
 
			Вы находитесь у дна глубокого ущелья.
 
@@ -563,6 +635,10 @@ iyh_labyrinth = room {
 
	update = function(s)
 
	end;
 
	obj = {
 
		"iyh_lab_forward",
 
		"iyh_lab_left",
 
		"iyh_lab_right",
 
		"iyh_lab_turn"
 
	};
 
};
 
 
@@ -674,6 +750,25 @@ iyh_rear_entrance_foot = room {
 
		kh_vway("Внутрь", "iyh_temple_rear_corridor_entry");
 
	};
 
	entered = function(s)
 
		if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0 and not char_learr.accompany) then
 
			pr [[
 
				Леарр входит в шлюз вслед за вами: "Я вместе-с-тобой-пойду".
 
			]];
 
			
 
			char_learr:accompany(true);
 
			char_radcliffe:accompany(false);
 
			char_wright:accompany(false);
 
			char_anna:accompany(false);
 
		elseif (ArrayUtils.indexOf(pl.party, 'aikerjarr') ~= 0 and not char_aikerjarr_lev.accompany) then
 
			pr [[
 
				Аикерьярр входит в шлюз вслед за вами: "Я вместе-с-тобой-пойду".
 
			]];
 
			char_aikerjarr_lev:accompany(true);
 
			char_radcliffe:accompany(false);
 
			char_wright:accompany(false);
 
			char_anna:accompany(false);
 
		end;
 
		
 
		way("В Левиафан"):disable();
 
		if (where(submarine_leviathan) == here()) then
 
			way("В Левиафан"):enable();
 
@@ -803,6 +898,11 @@ iyh_temple_main_hall_end = room {
 
	dsc = [[
 
		Главный зал древнего навьярского святилища. В стенах слева и справа вырезаны небольшие углубления, на которых некогда покоились ценные реликвии. Сейчас большинство из них пусты. Потолок находится на высоте нескольких десятков метров, но ни лестниц, ни уступов нет. Вы находитесь в дальнем конце зала. 
 
	]];
 
	enter = function(s)
 
		if (atl_iyh_shockfish_away == 0 and atl_iyh_shockfish_away and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
			walk("game_over_shockfish_2");
 
		end;
 
	end;
 
	entered = function(s)
 
		if (iyh_back_door.open) then
 
			path("В заднюю зверь"):enable();
 
@@ -826,7 +926,7 @@ iyh_back_door = obj {
 
			]];
 
		else
 
			return [[
 
				В конце зала находится закрытая {дверь}.
 
				В конце зала находится массивная {дверь}, закрытая на засов.
 
			]];
 
		end;
 
	end;
 
@@ -870,6 +970,11 @@ iyh_temple_main_hall_middle = room {
 
	obj = {
 
		"iyh_pedestal"
 
	};
 
	enter = function(s)
 
		if (atl_iyh_shockfish_away == 0 and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
			walk("game_over_shockfish_2");
 
		end;
 
	end;
 
	way = {
 
		kh_vway("К выходу", "iyh_temple_main_hall_entry");
 
		kh_vway("В конец зала", "iyh_temple_main_hall_end");
 
@@ -883,6 +988,16 @@ iyh_temple_main_hall_entry = room {
 
	dsc = [[
 
		Главный зал древнего навьярского святилища. В стенах слева и справа вырезаны небольшие углубления, на которых некогда покоились ценные реликвии. Сейчас большинство из них пусты. Потолок находится на высоте нескольких десятков метров, но ни лестниц, ни уступов нет. Вы находитесь у входа в зал. 
 
	]];
 
	enter = function(s)
 
		if (atl_iyh_shockfish_away == 0 and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
			walk("game_over_shockfish_2");
 
		end;
 
	end;
 
	entered = function(s)
 
		if (atl_iyh_entrance_destroyed) then
 
			path("Выйти"):disable();
 
		end;
 
	end;
 
	way = {
 
		kh_vway("Выйти", "iyh_near_temple_foot");
 
		kh_vway("Пройти дальше", "iyh_temple_main_hall_middle");
 
@@ -1015,4 +1130,46 @@ iyh_pedestal = obj {
 
			]];
 
		end;
 
	end;
 
};
 
 
iyh_near_temple = dlg {
 
	nam = "Штурвал Левиафана";
 
	dsc = [[
 
		Через иллюминаторы вы видите прямо перед собой массивные каменные двери, вытесанные в скале, возвышающейся далеко над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы.
 
	]];
 
	enter = function(s)
 
		if (atl_iyh_shockfish_away == 0 and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
			pr [[
 
				Как только вы приближаетесь, скат выплывает из свого жилища, чтобы прогнать посмевших приблизиться к нему.
 
			]];
 
			iyh_fight.temple_distance = 50;
 
			iyh_fight.distance = 50;
 
			walk(iyh_fight);
 
		end;
 
	end;
 
	entered = function(s)
 
		move(submarine_leviathan, iyh_near_temple_foot);
 
	end;
 
	phr = {
 
		{tag="ravine", false, always=true, "[Ко входу в ущелье]", [[
 
			Вы поворачиваете штурвал и включаете двигатели Левиафана. Через несколько минут вы оказываетесь у входа в ущелье.
 
		]], code [[ walk('iyh_ravine_entry'); ]]};
 
		{tag="away", always=true, "[Отойти от штурвала]", code = [[
 
			walk('leviathan_wheelhouse');
 
		]]};
 
		{tag="back", always=true, "[Вернуться к исходной позиции]", code = [[
 
			walk('iyh_far_from_entrance');
 
		]]};
 
	};
 
};
 
 
iyh_near_temple_foot = dlg {
 
	nam = "Вход в храм";
 
	dsc = [[
 
		Прямо перед собой вы видите массивные каменные двери, вытесанные в скале, возвышающейся далеко над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы.
 
	]];
 
	way = {
 
		kh_vway("В Левиафан", "leviathan_airlock");
 
		
 
	};
 
};
 
\ No newline at end of file
game_over.lua
Show inline comments
 
@@ -25,6 +25,24 @@ game_over_powerless = room {
 
	]];
 
};
 
 
game_over_shockfish = room {
 
	nam = "game_over_shockfish";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[
 
		Когда скат возвращается и обнаруживает вас, он мгновенно убивает вас, сперва проткнув хвостовым шипом и после чего выпустив мощный электрический разряд. 
 
	]];
 
};
 
 
game_over_shockfish_2 = room {
 
	nam = "game_over_shockfish";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[
 
		Вы возвращаетесь в главный зал храма и не замечаете, как сзади вас скат плавно опускается и протыкает вас своим шипом. Мощный электрически разряд довершает дело и ваше тело падает на пол древнего святилища. 
 
	]];
 
};
 
 
game_over_sunk = room {
 
	nam = "game_over_sunk";
 
	disp = "Игра окончена";
leviathan.lua
Show inline comments
 
@@ -88,6 +88,7 @@ leviathan_captains_cabin = darkroom {
 
leviathan_cabin_1 = darkroom {
 
	nam = "leviathan_cabin_1";
 
	disp = "Левиафан, каюта №1";
 
	leviathan = true;
 
	dsc = [[
 
		Вы находитесь в одной из кают Левиафана
 
	]];
 
@@ -99,6 +100,7 @@ leviathan_cabin_1 = darkroom {
 
leviathan_cabin_2 = darkroom {
 
	nam = "leviathan_cabin_2";
 
	disp = "Левиафан, каюта №2";
 
	leviathan = true;
 
	dsc = [[
 
		Вы находитесь в одной из кают Левиафана
 
	]];
 
@@ -110,6 +112,7 @@ leviathan_cabin_2 = darkroom {
 
leviathan_cabin_3 = darkroom {
 
	nam = "leviathan_cabin_3";
 
	disp = "Левиафан, каюта №3";
 
	leviathan = true;
 
	dsc = [[
 
		Вы находитесь в одной из кают Левиафана
 
	]];
 
@@ -121,6 +124,7 @@ leviathan_cabin_3 = darkroom {
 
leviathan_cabin_4 = darkroom {
 
	nam = "leviathan_cabin_4";
 
	disp = "Левиафан, каюта №4";
 
	leviathan = true;
 
	dsc = [[
 
		Вы находитесь в одной из кают Левиафана
 
	]];
 
@@ -132,6 +136,7 @@ leviathan_cabin_4 = darkroom {
 
leviathan_cabin_5 = darkroom {
 
	nam = "leviathan_cabin_5";
 
	disp = "Левиафан, каюта №5";
 
	leviathan = true;
 
	dsc = [[
 
		Вы находитесь в одной из кают Левиафана
 
	]];
 
@@ -365,6 +370,7 @@ leviathan_breaker = obj {
 
leviathan_lower_deck = darkroom {
 
	nam = "leviathan_lower_deck";
 
	disp = "Левиафан, нижняя палуба";
 
	leviathan = true;
 
	dsc_lit = [[
 
		Вы находитесь на нижней палубе Левиафана. Здесь нет иллюминаторов. Повсюду раскиданы обломки металла, неизвестно откуда взявшиеся. В передней части помещения вы видите несколько отверстий для зарядки торпедных аппаратов.
 
	]];
 
@@ -386,6 +392,7 @@ leviathan_lower_deck = darkroom {
 
leviathan_life_support = darkroom {
 
	nam = "leviathan_life_support";
 
	disp = "Левиафан, система жизнеобеспечения";
 
	leviathan = true;
 
	--TODO прочитать, разобраться как подобный отсек мог бы выглядеть и описать его как подобает
 
	dsc_lit = [[
 
		Вы находитесь в отсеке систем жизнеобеспечения "Левиафана". Это важнейший отсек корабля, в котором расположено все необходимое для обеспечения команды воздухом для дыхания в течение нескольких месяцев.
 
@@ -432,6 +439,7 @@ leviathan_airregen = obj {
 
leviathan_wheelhouse = darkroom {
 
	nam = "leviathan_wheelhouse";
 
	disp = "Левиафан, Рубка";
 
	leviathan = true;
 
	dsc_lit = function(s)
 
		local view = "";
 
		if (type(where(submarine_leviathan).view) == "function") then
main.lua
Show inline comments
 
@@ -147,6 +147,13 @@ function init()
 
	---debug
 
	-- atl_lfc_state = 1;
 
	-- char_svetlova_dlg.state = 2;
 
	
 
	lifeon(char_learr);
 
	lifeon(char_wright);
 
	lifeon(char_radcliffe);
 
	lifeon(char_anna);
 
	--lifeon(char_aikerjarr_lev);
 
	pl.party = {'learr', 'wright', 'radcliffe', 'anna'};
 
	atlantis_found = true;
 
	move(submarine_leviathan, "iyh_far_from_entrance_foot");
 
	pl.where = leviathan_wheelhouse;
 
@@ -172,7 +179,7 @@ function init()
 
	leviathan_engines.has_light = true;
 
	leviathan_lower_deck.has_light = true;
 
	leviathan_life_support.has_light = true;
 
	
 
	atl_iyh_state = 7;
 
	-- pl.where = warehouse_32;
 
	-- pl.where = w32_mgr;
 
	-- put(item_toolbox, pl);
party.lua
Show inline comments
 
-- TODO больше отвлеченных диалогов, дабы было о чем поговорить с сопартийцами. Не стоит делать их деревянными безжизненными манекенами
 
char_learr = obj {
 
	var {
 
		follow = true;
 
		follow = false;
 
	};
 
	nam = "learr";
 
	disp = "Леарр";
 
@@ -46,7 +46,7 @@ char_learr = obj {
 
 
char_phaetlarr = obj {
 
	var {
 
		follow = true;
 
		follow = false;
 
	};
 
	nam = "phaetlarr";
 
	disp = "Фаэтларр";
 
@@ -91,7 +91,7 @@ char_phaetlarr = obj {
 
 
char_radcliffe = obj {
 
	var {
 
		follow = true;
 
		follow = false;
 
	};
 
	nam = "radcliffe";
 
	disp = "Уолтер Рэдклифф";
 
@@ -136,7 +136,7 @@ char_radcliffe = obj {
 
 
char_wright = obj {
 
	var {
 
		follow = true;
 
		follow = false;
 
	};
 
	nam = "wright";
 
	disp = "Джек Райт";
 
@@ -185,7 +185,7 @@ char_wright = obj {
 
 
char_anna = obj {
 
	var {
 
		follow = true;
 
		follow = false;
 
	};
 
	nam = "anna";
 
	disp = "Анна Рэдклифф";
 
@@ -232,7 +232,14 @@ learr_home_dlg = dlg {
 
	nam = "learr_dlg";
 
	disp = "Леарр";
 
	hideinv = true;
 
	leviathan = true;
 
	entered = function(s)
 
		if (atl_iyh_state == 7) then
 
			pon("on_iyh");
 
		else
 
			poff("on_iyh");
 
		end;
 
	
 
		if (char_learr.follow) then
 
			pon('stay');
 
			poff('join');
 
@@ -246,7 +253,10 @@ learr_home_dlg = dlg {
 
		]];
 
	end;
 
	phr = {
 
		{ tag = "join", always = "true", "Я хочу, чтобы ты пошла со мной в следующий раз", "Хорошо", 
 
		{ tag = "on_iyh", always = true, "Что ты можешь рассказать мне о храме?", [[
 
			"Каждый-храм два-входа-имеет. Большой-главный-вход далеко-виден. Тайный-задний-вход незаметен-но-всегда-есть. Мы давно-потеряли дорогу-к-этому-святилищу и задний-вход-не-помним. Если мы задний-вход-найдем, то обманим затмевающего-свет и в-храм-проникнем".
 
		]]};
 
		{ tag = "join", always = true, "Я хочу, чтобы ты пошла со мной в следующий раз", "Хорошо", 
 
			function()
 
				char_learr:accompany(true);
 
				char_phaetlarr:accompany(false);
 
@@ -276,6 +286,7 @@ phaetlarr_home_dlg = dlg {
 
	nam = "phaetlarr_dlg";
 
	disp = "Фаэтларр";
 
	hideinv = true;
 
	leviathan = true;
 
	entered = function(s)
 
		if (char_phaetlarr.follow) then
 
			pon('stay');
 
@@ -320,7 +331,14 @@ radcliffe_home_dlg = dlg {
 
	nam = "radcliffe_dlg";
 
	disp = "Уолтер Рэдклифф";
 
	hideinv = true;
 
	leviathan = true;
 
	entered = function (s)
 
		if (atl_iyh_state == 7) then
 
			pon("on_iyh");
 
		else
 
			poff("on_iyh");
 
		end;
 
	
 
		if (char_learr.follow) then
 
			pon('stay');
 
			poff('join');
 
@@ -334,7 +352,10 @@ radcliffe_home_dlg = dlg {
 
		]];
 
	end;
 
	phr = {
 
		{ tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо",
 
		{tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[
 
			"Возможно, мы сможем разрушить вход в храм. Однако я не знаю, как навьяры на это отреагируют. "
 
		]]};
 
		{tag="join", always=true, "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо",
 
			function()
 
				if (submarine_leviathan.suits > 1) then
 
					char_learr:accompany(false);
 
@@ -351,14 +372,14 @@ radcliffe_home_dlg = dlg {
 
				end;
 
			end;  
 
		};
 
		{ tag = "stay", always = "true", "Оставайся на Левиафане", "Хорошо", 
 
		{tag="stay", always="true", "Оставайся на Левиафане", "Хорошо", 
 
			function()
 
				char_radcliffe.accompany(char_radcliffe, false);
 
				pon('join');
 
				poff('stay');
 
			end;
 
		};
 
		{ tag = "exit", always = "true", "Это все", "Хорошо", 
 
		{tag="exit", always="true", "Это все", "Хорошо", 
 
			function() 
 
				back();
 
			end;
 
@@ -370,7 +391,14 @@ wright_home_dlg = dlg {
 
	nam = "wright_dlg";
 
	disp = "Джек Райт";
 
	hideinv = true;
 
	leviathan = true;
 
	entered = function(s)
 
		if (atl_iyh_state == 7) then
 
			pon("on_iyh");
 
		else
 
			poff("on_iyh");
 
		end;
 
	
 
		if (char_learr.follow) then
 
			pon('stay');
 
			poff('join');
 
@@ -383,6 +411,9 @@ wright_home_dlg = dlg {
 
		]];
 
	end;
 
	phr = {
 
		{tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[
 
			"Возможно получится выманить ската, если направить прожектор на вход храма. Другое дело, что при этом он, скорее всего, атакует Левиафан. "
 
		]]};
 
		{ tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", 
 
			function()
 
				if (submarine_leviathan.suits > 1) then
 
@@ -419,7 +450,14 @@ anna_home_dlg = dlg {
 
	nam = "anna_home_dlg";
 
	disp = "Анна Рэдклифф";
 
	hideinv = true;
 
	leviathan = true;
 
	entered = function(s)
 
		if (atl_iyh_state == 7) then
 
			pon("on_iyh");
 
		else
 
			poff("on_iyh");
 
		end;
 
	
 
		if (char_anna.follow) then
 
			pon('stay');
 
			poff('join');
 
@@ -432,6 +470,9 @@ anna_home_dlg = dlg {
 
		]];
 
	end;
 
	phr = {
 
		{tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[
 
			"Ночью скат скорее всего покинет свое логово в поисках пищи. Мы можем воспользоваться его отсутствием".
 
		]]};
 
		{ tag = "join", always = "true", "Я хочу, чтобы ты пошла со мной в следующий раз", 
 
			function()
 
				if (submarine_leviathan.suits > 1) then
0 comments (0 inline, 0 general)