File diff fda22c203ad5 → 77aa01170934
first_city_inner_rim.lua
Show inline comments
 
-- TODO (приват) добавить описание шлюза
 
-- TODO (приват) картинка с дисплея терминала
 
-- TODO (приват) вменяемое описание цели данного паззла, тексты на навьярском или реалистичное объяснение их понятности персонажу
 
first_city_airlock_control = room {
 
	nam = "first_city_airlock";
 
	disp = "Комната управления шлюзом центрального зала";
 
	dsc = function (s)
 
		return "Вы находитесь в небольшой комнате. Перед вами расположен дисплей, на котором расположены три вертикальные полосы разной длины. " .. tostring(s.tanks[1]) .. "/" .. tostring(s.tanks[2]) .. "/" .. tostring(s.tanks[3]);
 
	end;
 
	tanks = {10, 0, 0};
 
	tanks_capacity = {10, 7, 3};
 
	selected_source = nil;
 
	selected_target = nil;
 
	detect = function(s)	
 
		if (tanks[2] == 5) then
 
			return true;
 
		else
 
			return false;
 
		end;
 
	end;
 
	obj = {
 
		"first_city_transfer",
 
		"first_city_select_s",
 
		"first_city_select_p",
 
		"first_city_select_a"
 
	};
 
};
 
 
first_city_transfer = obj {
 
	nam = "first_city_transfer";
 
	dsc = "{Выполнить} ^";
 
	act = function(s)
 
		if (first_city_airlock_control.selected_source and first_city_airlock_control.selected_target) then
 
			local tmp = math.min(first_city_airlock_control.tanks[first_city_airlock_control.selected_source], first_city_airlock_control.tanks_capacity[first_city_airlock_control.selected_target] - first_city_airlock_control.tanks[first_city_airlock_control.selected_target]);
 
			first_city_airlock_control.tanks[first_city_airlock_control.selected_source] = first_city_airlock_control.tanks[first_city_airlock_control.selected_source] - tmp;
 
			first_city_airlock_control.tanks[first_city_airlock_control.selected_target] = first_city_airlock_control.tanks[first_city_airlock_control.selected_target] + tmp;
 
			first_city_airlock_control.selected_source = nil;
 
			first_city_airlock_control.selected_target = nil;
 
			return "Выполнено";
 
		else
 
			return "Невозможно выполнить";
 
		end;
 
	end;
 
};
 
 
first_city_select_s = obj {
 
	nam = "first_city_select_s";
 
	dsc = "{Выбрать первый баллон} ^";
 
	act = function(s)
 
		if (not first_city_airlock_control.selected_source) then
 
			first_city_airlock_control.selected_source = 1;
 
		else
 
			first_city_airlock_control.selected_target = 1;
 
		end;
 
		
 
		return "";
 
	end;
 
};
 
 
first_city_select_p = obj {
 
	nam = "first_city_select_p";
 
	dsc = "{Выбрать второй баллон} ^";
 
	act = function(s)
 
		if (not first_city_airlock_control.selected_source) then
 
			first_city_airlock_control.selected_source = 2;
 
		else
 
			first_city_airlock_control.selected_target = 2;
 
		end;
 
		
 
		return "";
 
	end;
 
};
 
 
first_city_select_a = obj {
 
	nam = "first_city_select_a";
 
	dsc = "{Выбрать третий баллон} ^";
 
	act = function(s)
 
		if (not first_city_airlock_control.selected_source) then
 
			first_city_airlock_control.selected_source = 3;
 
		else
 
			first_city_airlock_control.selected_target = 3;
 
		end;
 
		
 
		return "";
 
	end;
 
};
 
 
first_city_inner_south = room {
 
	nam = "first_city_inner_south";
 
	disp = "Лсэрианотр, внутреннее кольцо, юг";
 
@@ -47,6 +134,11 @@ first_city_inner_north = room {
 
	east = "first_city_inner_east";
 
	west = "first_city_inner_west";
 
	navigatable = true;
 
	entered = function(s)
 
		if (first_city_airlock_control.detect(first_city_airlock_control)) then
 
			path("first_city_to_center"):enable();
 
		end;
 
	end;
 
	dsc = [[
 
		Вы находитесь в северной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
 
	]];
 
@@ -54,8 +146,8 @@ first_city_inner_north = room {
 
		Вы находитесь в северной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
 
	]];
 
	way = {
 
		vroom("Центр города", "first_city_central_room_entrance");
 
		vroom("Левиафан", "leviathan_airlock");
 
		kh_vroom("Центр города", "first_city_central_room_entrance", "first_city_to_center"):disable();
 
		kh_vroom("Левиафан", "leviathan_airlock");
 
	};
 
};
 
 
@@ -63,8 +155,7 @@ first_city_central_room_entrance = room 
 
	nam = "first_city_central_room_entrance";
 
	disp = "Лсэрианотр, Вход в центральный зал";
 
	dsc = [[
 
		Вы находитесь у входа в центральный зал Лсэрианотра. Входная дверь закрывается и вода быстро откачивается из помещения. Вы снимаете скафандр и готовитесь к встрече с Уильямом.
 
		Отсюда пути назад уже нет.
 
		Вы находитесь у входа в центральный зал Лсэрианотра. Входная дверь закрывается и вода быстро откачивается из помещения. Вы снимаете скафандр и готовитесь к встрече с Уильямом. Отсюда пути назад уже нет.
 
	]];
 
	obj = {
 
		vway("Центральный зал", "{Вперед}", "final_scene_before_battle");