Files @ abf3f2548582
Branch filter:

Location: games/Awakening/first_city_inner_rim.lua

Silverwing
396
-- 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 = "Лсэрианотр, внутреннее кольцо, юг";
	gate = "first_city_middle_south";
	east = "first_city_inner_east";
	west = "first_city_inner_west";
	navigatable = true;
	dsc = [[
		Вы находитесь в южной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
	]];
	view = [[
		Вы находитесь в южной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
	]];
};

first_city_inner_east = room {
	nam = "first_city_inner_east";
	disp = "Лсэрианотр, внутреннее кольцо, восток";
	south = "first_city_inner_south";
	north = "first_city_inner_north";
	navigatable = true;
	dsc = [[
		Вы находитесь в восточной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
	]];
	view = [[
		Вы находитесь в восточной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
	]];
};

first_city_inner_west = room {
	nam = "first_city_inner_west";
	disp = "Лсэрианотр, внутреннее кольцо, запад";
	south = "first_city_inner_south";
	north = "first_city_inner_north";
	navigatable = true;
	dsc = [[
		Вы находитесь в западной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
	]];
	view = [[
		Вы находитесь в западной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
	]];
};

first_city_inner_north = room {
	nam = "first_city_inner_north";
	disp = "Лсэрианотр, внутреннее кольцо, север";
	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 = [[
		Вы находитесь в северной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
	]];
	view = [[
		Вы находитесь в северной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. 
	]];
	way = {
		kh_vroom("Центр города", "first_city_central_room_entrance", "first_city_to_center"):disable();
		kh_vroom("Левиафан", "leviathan_airlock");
	};
};

first_city_central_room_entrance = room {
	nam = "first_city_central_room_entrance";
	disp = "Лсэрианотр, Вход в центральный зал";
	dsc = [[
		Вы находитесь у входа в центральный зал Лсэрианотра. Входная дверь закрывается и вода быстро откачивается из помещения. Вы снимаете скафандр и готовитесь к встрече с Уильямом. Отсюда пути назад уже нет.
	]];
	obj = {
		vway("Центральный зал", "{Вперед}", "final_scene_before_battle");
	};
};