Changeset - 247684c68495
[Not reviewed]
default
0 1 0
Silverwing - 7 years ago 2017-09-17 10:10:17

Warehouse32: text updates
1 file changed with 2 insertions and 6 deletions:
0 comments (0 inline, 0 general)
warehouse32.lua
Show inline comments
 
--[[
 
Игрок может попасть сюда только после диалога с Майклом.
 
Эта локация имеет владельца, которому не понравится, что здесь шляются посторонние.
 
Здесь игрок найдет карту.
 
]]
 
 
warehouse_32_guard = npc {
 
    var {
 
        dlg = 'warehouse_32_guard_dlg';
 
    };
 
	nam = "warehouse_32_guard";
 
	dsc = "Рядом со входом, опершись на стену, стоит {охранник}. Он не обращает на вас никакого внимания. ";
 
	phrases = {
 
		'Мне больше не о чем с ним говорить. ';
 
		'Он меня не пропустит. ';
 
	};
 
};
 
 
warehouse_32_guard_dlg = dlg {
 
	nam = "warehouse_32_guard_dlg";
 
    disp = "Охранник";
 
	entered = function(s)
 
		warehouse_32_guard.dlg = nil;
 
		warehouse32_visited = true;
 
		return [[Вы подходите к охраннику, но он не обращает на вас никакого внимания. ]];
 
	end;
 
	phr = {
 
		{"Могу я пройти внутрь?", [[Охранник медленно поворачивает голову в вашу сторону и отрывисто произносит: "Нет". ]]};
 
		{"Мне нужно поговорить с управляющим. ", [[Охранник медленно поворачивает голову в вашу сторону и отрывисто произносит: "Управляющий велел никого не пускать". ]]};
 
		{"У меня есть дело к управляющему. ", [[Охранник медленно поворачивает голову в вашу сторону и отрывисто произносит: "Значит у вас есть пропуск. Покажите мне его". ]]};
 
	};
 
};
 
 
warehouse_32_entry = room {
 
	nam = "warehouse_32_entry";
 
	disp = "Вход на склад 32";
 
	dsc = [[Склад 32 расположен в одном из промышленных районов Лондона. Вокруг дымят многочисленные фабрики, делая воздух практически непригодным для дыхания. Склад представляет собой большое здание, огороженное высоким забором. ]];
 
	entered = function(s)
 
		move(char_coachman, here());
 
	end;
 
	way = {
 
		vroom("В переулок", "warehouse_32_alley");
 
	};
 
	obj = {
 
		'warehouse_32_guard'
 
	};
 
};
 
 
warehouse_32_alley = room {
 
	nam = "warehouse_32_alley";
 
	disp = "Переулок у склада 32";
 
	dsc = [[Темный переулок, между забором склада 32 и соседним строением завален мусором. ]];
 
	way = {
 
		vroom("К главному входу", "warehouse_32_entry");
 
		vroom("Пройти дальше", "warehouse_32_behind");
 
	};
 
};
 
 
warehouse_32_behind = room {
 
	nam = "warehouse_32_behind";
 
	disp = "За складом 32";
 
	dsc = [[Узкий темный проулок за складом 32 завален мусором. От главного здания вас отделяет высокий забор из металлической решетки. За забором, почти напротив вас, вы видите заднюю дверь склада. ]];
 
	way = {
 
		vroom("Назад", "warehouse_32_alley");
 
	};
 
};
 
 
warehouse_32_guard_night = npc {
 
	nam = "warehouse_32_guard";
 
	dsc = "Рядом со входом, опершись на стену, дремлет {охранник}. ";
 
	phrases = {
 
		'Сейчас мне точно не стоит будить его. ';
 
	};
 
};
 
 
warehouse_32_night = room {
 
	nam = "warehouse_32_night";
 
	disp = "Вход на склад 32";
 
	dsc = [[Склад 32 расположен в одном из промышленных районов Лондона. Склад представляет собой большое здание, огороженное высоким забором. Сейчас темная ночь и район совершенно вымер. Лишь одинокий фонарь, висящий над входом склада, слабо освещает улицу. ]];
 
	obj = {
 
		'warehouse_32_guard_night',
 
		'char_wright_travel'
 
	};
 
	way = {
 
		vroom("В переулок", "warehouse_32_alley_night");
 
	};
 
};
 
 
warehouse_32_alley_night = darkroom {
 
	nam = "warehouse_32_alley_night";
 
	disp = "Переулок у склада 32";
 
	dsc_halflit = [[Темный переулок, между забором склада 32 и соседним строением завален мусором. Лампа освещает небольшую часть проулка, заваленного мусором. ]];
 
	dsc_dark = [[Темный переулок, между забором склада 32 и соседним строением завален мусором. Здесь совсем темно и вы ничего не видите. ]];
 
	way = {
 
		kh_vroom("К главному входу", "warehouse_32_night", 2);
 
		kh_vroom("За склад", "warehouse_32_behind_night", 1);
 
	};
 
};
 
 
warehouse_32_behind_night = room {
 
	nam = "warehouse_32_behind_night";
 
	disp = "За складом 32";
 
	dsc = [[Узкий темный проулок за складом 32 завален мусором. От главного здания вас отделяет высокий забор из металлической решетки. За забором, почти напротив вас, вы видите приоткрытую заднюю дверь склада. Над ней расположен фонарь, свет от которого едва достигает вас. ]];
 
	way = {
 
		vroom("В переулок", "warehouse_32_alley_night");
 
		vroom("Через забор", "w32_backdoor");
 
	};
 
};
 
 
char_wright_travel = npc {
 
	nam = "char_wright_travel";
 
	disp = "Джек Райт";
 
	dsc = [[На другой стороне улицы стоит небольшая крытая {повозка}, запряженная двумя лошадьми. ]];
 
	dlg = "wright_travel_dlg";
 
};
 
 
wright_travel_dlg = dlg {
 
	nam = "wright_travel_dlg";
 
	disp = "Джек Райт";
 
	entered = [[Джек приоткрывает дверь повозки и спрашивает вас: "Все готово? Уезжаем?" ]];
 
	phr = {
 
		{1, always=true, "Да, поехали. ", [[ Вы забираетесь в повозке и Джек, подстегивая лошадей, говорит: "Вперед". ]], code [[
 
			walk('wright_house_cabinet');
 
		]]};
 
		{2, always=true, "Нет еще. ", [[ Джек кивает: "Жду". ]], code [[
 
			back();
 
		]]};
 
	};
 
};
 
 
w32_tablet = cutscene("w32_tablet", "Склад 32, задняя дверь", "Табличка со схемой склада висит рядом с дверью. ", "w32_backdoor", null, "images/wh32_plan.png");
 
 
w32_tablet_obj = obj {
 
    nam = "w32_tablet_obj";
 
    dsc = "Рядом с дверью висит {табличка}. ";
 
    act = function(s)
 
        walk(w32_tablet);
 
    end;
 
};
 
 
w32_backdoor = room {
 
	nam = "w32_backdoor";
 
	disp = "Склад 32, задняя дверь";
 
    dsc = [[Над прочной деревянной дверью висит фонарь, дающий слабый свет. Площадка вокруг пуста, за исключением небольшой кучки обломков у забора. ]];
 
	entered = function(s)
 
		warehouse_32.pos = "01";
 
	end;
 
	way = {
 
		kh_vroom("Войти", function(s)
 
			if (pl.has_light) then
 
				pn("Мне стоит погасить лампу, прежде чем заходить внутрь. ");
 
				return false;
 
			else
 
				return "warehouse_32";
 
			end;
 
		end);
 
		kh_vroom("Через забор", "warehouse_32_behind_night");
 
	};
 
    obj = {
 
        "w32_tablet_obj";
 
    };   
 
};
 
 
w32_mgr = darkroom {
 
    var {
 
        key_inplace = true;
 
        book_inplace = true;
 
    };
 
	nam = "w32_mgr";
 
	disp = "Склад 32, кабинет управляющего";
 
	dsc_dark = [[Вы находитесь в кабинете управляющего. В темноте вы можете лишь смутно различить очертания предметов. ]];
 
	dsc_halflit = [[Вы находитесь в кабинете управляющего. ]];
 
	entered = function(s)
 
		warehouse_32.pos = "54";
 
	end;
 
	way = {
 
		kh_vroom("Выйти", function(s)
 
			print(w32_mgr.key_inplace);
 
			print(w32_mgr.book_inplace);
 
			if (not w32_mgr.key_inplace or not w32_mgr.book_inplace) then
 
				pr("Стоит вернуть все как было. ");
 
				return false;
 
			elseif (pl.has_light) then
 
				pr("Если я не погашу лампу, меня заметят. ");
 
				return false;
 
			else
 
				return "warehouse_32";
 
			end;
 
		end, 2);
 
	};
 
	obj = {
 
		'w32_mgr_table',
 
		'w32_mgr_bookcase',
 
        'money_wh32'
 
	};
 
};
 
 
w32_journal = obj {
 
	nam = 'w32_journal';
 
	dsc = [[В ящике стола лежит {учетная книга}, в которую занесено все содержимое склада. ]];
 
	act = function(s)
 
		local list = [[Среди сотен записей вы натыкаетесь на несколько, отмеченных как "Westhaven":]];
 
		for i = 1, #w32_shelf_input.items do
 
			list = list .. "^".. stead.ref(w32_shelf_input.items[i].n).disp .. " " .. w32_shelf_input.items[i].shelf .. "-" .. w32_shelf_input.items[i].position;
 
		end;
 
		
 
		return list;
 
	end;
 
};
 
 
w32_mgr_table = obj {
 
    var {
 
        open = false;
 
        locked = true;
 
    };
 
	seen_level = 1;
 
	nam = 'w32_mgr_table';
 
	dsc = function(s)
 
		if (s.open) then
 
			return [[В центре комнаты расположен большой письменный стол. {Ящик} стола выдвинут. ]];
 
		else
 
			return [[В центре комнаты расположен большой письменный стол. В столе имеется {ящик}. ]];
 
		end;
 
	end;
 
	act = function(s)
 
		if (not s.locked) then 
 
			if (s.open) then
 
				s.open = false;
 
				w32_journal:disable();
 
				return [[Вы задвигаете ящик. ]];
 
			else
 
				s.open = true;
 
				w32_journal:enable();
 
				return [[Вы выдвигаете ящик. ]];
 
			end;
 
		else 
 
			return [[Ящик заперт. Вам придется найти ключ. ]];
 
		end;
 
	end;
 
	used = function(s, o)
 
		if (o == item_w32_key) then
 
			if (s.locked) then
 
				w32_mgr.book_inplace = false;
 
				s.locked = false;
 
				return "Вы отпираете ящик. ";
 
			else
 
				w32_journal:disable();
 
				w32_mgr.book_inplace = true;
 
				s.open = false;
 
				s.locked = true;
 
				return "Вы запираете ящик. ";
 
			end;
 
		end;
 
	end;
 
	obj = {
 
		w32_journal:disable();
 
	};
 
};
 
 
w32_mgr_bookcase = obj {
 
    var {
 
        state = 0;
 
    };
 
	seen_level = 1;
 
	nam = 'w32_mgr_bookcase';
 
	dsc = [[Одну из стен практически целиком занимает {шкаф}, заполненный книгами и записями. ]];
 
	act = function(s)
 
		item_w32_key:enable();
 
        if (s.state == 0) then
 
		    return "Вы замечаете спрятанный за книгами ключ. ";
 
        else
 
            return "Записи, журналы и прочие малоинтересные вам книги. ";
 
        end;      
 
	end;
 
	used = function(s, o)
 
		if (o == item_w32_key) then
 
			w32_mgr.key_inplace = true;
 
			remove(item_w32_key, pl);
 
			put(item_w32_key, s);
 
			return "Вы возвращает ключик на место. ";
 
		end;
 
	end;
 
	obj = {
 
		item_w32_key:disable();
 
	};
 
};
 
 
warehouse_32_definitions = {
 
	---line E
 
	["01"] = { name="у задней двери", dsc=[[К югу от вас расположена задняя дверь склада. ]], e1 = "11", ex3 = "w32_backdoor"};
 
	["02"] = { name="тупик", dsc=[[Вы в тупике. К югу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e1 = "12", corner = true};
 
	["03"] = { name="тупик", dsc=[[Вы в тупике. К югу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e1 = "13", corner = true};
 
	["04"] = { name="тупик", dsc=[[Вы в тупике. К югу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e1 = "14", corner = true};
 
	---line DE
 
	["10"] = { name="тупик", dsc=[[Вы в тупике. К западу от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e2 = "11", corner = true};
 
	["11"] = { name="секция D1", dsc=[[
 
		
 
	]], e1 = "21", e2="12", e3="01", e4="10", sector = "D1"};
 
	["12"] = { name="секция D2", dsc=[[
 
		
 
	]], e1 = "22", e2="13", e3="02", e4="11", sector = "D2"};
 
	["13"] = { name="секция D3", dsc=[[
 
		
 
	]], e1 = "23", e2="14", e3="03", e4="12", sector = "D3"};
 
	["14"] = { name="секция D4", dsc=[[
 
		
 
	]], e1 = "24", e2="15", e3="04", e4="13", sector = "D4"};
 
	["15"] = { name="тупик", dsc=[[Вы в тупике. К востоку от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e4 = "14", corner = true};
 
	---line CD
 
	["20"] = { name="тупик", dsc=[[Вы в тупике. К западу от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e2 = "21", corner = true};
 
	["21"] = { name="секция C1", dsc=[[
 
		
 
	]], e1 = "31", e2="22", e3="11", e4="20", sector = "C1"};
 
	["22"] = { name="секция C2", dsc=[[
 
		
 
	]], e1 = "32", e2="23", e3="12", e4="21", sector = "C2"};
 
	["23"] = { name="секция C3", dsc=[[
 
		
 
	]], e1 = "33", e2="24", e3="13", e4="22", sector = "C3"};
 
	["24"] = { name="секция C4", dsc=[[
 
		
 
	]], e1 = "34", e2="25", e3="14", e4="23", sector = "C4"};
 
	["25"] = { name="тупик", dsc=[[Вы в тупике. К востоку от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e4 = "24", corner = true};
 
	---line BC
 
	["30"] = { name="тупик", dsc=[[Вы в тупике. К западу от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e2 = "31", corner = true};
 
	["31"] = { name="секция B1", dsc=[[
 
		
 
	]], e1 = "41", e2="32", e3="21", e4="30", sector = "B1"};
 
	["32"] = { name="секция B2", dsc=[[
 
		
 
	]], e1 = "42", e2="33", e3="22", e4="31", sector = "B2"};
 
	["33"] = { name="секция B3", dsc=[[
 
		
 
	]], e1 = "43", e2="34", e3="23", e4="32", sector = "B3"};
 
	["34"] = { name="секция B4", dsc=[[
 
		
 
	]], e1 = "44", e2="35", e3="24", e4="33", sector = "B4"};
 
	["35"] = { name="тупик", dsc=[[Вы в тупике. К востоку от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e4 = "34", corner = true};
 
	---line AB
 
	["40"] = { name="тупик", dsc=[[Вы в тупике. К западу от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e2 = "41", corner = true};
 
	["41"] = { name="секция A1", dsc=[[
 
		
 
	]], e1 = "51", e2="42", e3="31", e4="40", sector = "A1"};
 
	["42"] = { name="секция A2", dsc=[[
 
		
 
	]], e1 = "52", e2="43", e3="32", e4="41", sector = "A2"};
 
	["43"] = { name="секция A3", dsc=[[
 
		
 
	]], e1 = "53", e2="44", e3="33", e4="42", sector = "A3"};
 
	["44"] = { name="секция A4", dsc=[[
 
		
 
	]], e1 = "54", e2="45", e3="34", e4="43", sector = "A4"};
 
	["45"] = { name="тупик", dsc=[[Вы в тупике. К востоку от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e4 = "34", corner = true};
 
	---line A
 
	["51"] = { name="тупик", dsc=[[Вы в тупике. К северу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e3 = "41", corner = true};
 
	["52"] = { name="у входа", dsc=[[
 
		К северу от вас расположен главный вход склада, но он заперт. 
 
	]], e3 = "42"};
 
	["52"] = { name="у входа", dsc=[[К северу от вас расположен главный вход склада, но он заперт. ]], e3 = "42"};
 
	["53"] = { name="тупик", dsc=[[Вы в тупике. К северу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e3 = "43", corner = true};
 
	["54"] = { name="у входа в кабинет управляющего", dsc=[[
 
		К северу от вас расположена дверь, ведущая, судя по табличке на ней, в кабинет управляющего. 
 
	]], e3 = "44", ex1="w32_mgr"};
 
	["54"] = { name="у входа в кабинет управляющего", dsc=[[К северу от вас расположена дверь, ведущая в кабинет управляющего. ]], e3 = "44", ex1="w32_mgr"};
 
};
 
 
function getDirName(dir)
 
	if (dir == 1) then
 
		return "север";
 
	elseif (dir == 2) then
 
		return "восток";
 
	elseif (dir == 3) then
 
		return "юг";
 
	elseif (dir == 4) then
 
		return "запад";
 
	end;
 
end;
 
 
warehouse_32 = room {
 
    var{
 
        pos = "01";
 
        hidden = false;
 
        guards = {
 
            { pos = "21", dir=1, s = 1 }; --s=1 - должен повернуть направо, s=2 - должен пройти прямо
 
            { pos = "31", dir=4, s = 1 }; --s=1 - должен повернуть направо, s=2 - должен пройти прямо
 
            { pos = "24", dir=2, s = 1 }; --s=1 - должен повернуть направо, s=2 - должен пройти прямо
 
            { pos = "34", dir=3, s = 1 }; --s=1 - должен повернуть направо, s=2 - должен пройти прямо
 
        };
 
    };
 
	nam = "warehouse_32";
 
	nolamp = true;
 
	disp = function(s)
 
		return "Склад 32, " .. s.definitions[s.pos].name;
 
	end;
 
	dsc = function(s)
 
		--return s.definitions[s.pos].dsc .. "^ Вы смотрите на " .. getDirName(s.dir);
 
		
 
		return 'Вы стоите где-то между стеллажами склада 32. В помещении темно, за исключением фонарей охранников. ' .. s.definitions[s.pos].dsc;
 
	end;
 
	definitions = warehouse_32_definitions;
 
	checkGuardSight = function(s)
 
		--Проверить область зрения каждого стражника, если игрок находится в области зрения - FAIL
 
		for i = 1, #s.guards do
 
			if (s.guards[i].pos == s.pos) then
 
				--detected
 
				walk("game_over_caught");
 
				return false;
 
			end;
 
			if (s.guards[i].dir == 1) then
 
				if (not s.hidden and s.definitions[s.guards[i].pos].e1 and s.pos == s.definitions[s.guards[i].pos].e1) then
 
					--detected
 
					walk("game_over_caught");
 
					return false;
 
				end;
 
			elseif (s.guards[i].dir == 2) then
 
				if (not s.hidden and s.definitions[s.guards[i].pos].e2 and s.pos == s.definitions[s.guards[i].pos].e2) then
 
					--detected
 
					walk("game_over_caught");
 
					return false;
 
				end;
 
			elseif (s.guards[i].dir == 3) then
 
				if (not s.hidden and s.definitions[s.guards[i].pos].e3 and s.pos == s.definitions[s.guards[i].pos].e3) then
 
					--detected
 
					walk("game_over_caught");
 
					return false;
 
				end;
 
			elseif (s.guards[i].dir == 4) then
 
				if (not s.hidden and s.definitions[s.guards[i].pos].e4 and s.pos == s.definitions[s.guards[i].pos].e4) then
 
					--detected
 
					walk("game_over_caught");
 
					return false;
 
				end;
 
			end;
 
		end;
 
		return true;
 
	end;
 
	guardTurn = function(s)
 
		local pl_y = math.floor(tonumber(s.pos) / 10);
 
		local pl_x = tonumber(s.pos) % 10;
 
		--print("player:", pl_x, pl_y);
 
		--Каждый стражник делает ход, игрок получает сообщения, о том, слышит ли он шаги, откуда и как они движутся
 
		for i = 1, #s.guards do
 
			--TODO play with this random number to assume good gameplay: predictable enough, yet somewhat random
 
			if (rnd(10) < 9) then
 
				if (s.guards[i].s == 1) then
 
					s.guards[i].s = 2;
 
					s.guards[i].dir = s.guards[i].dir + 1;
 
					if (s.guards[i].dir > 4) then
 
						s.guards[i].dir = 1;
 
					end;
 
				elseif (s.guards[i].s == 2) then
 
					s.guards[i].s = 1;
 
					if (s.guards[i].dir == 1) then
 
						if (s.definitions[s.guards[i].pos].e1) then
 
							 s.guards[i].pos = s.definitions[s.guards[i].pos].e1;
 
						end;
 
					elseif (s.guards[i].dir == 2) then
 
						if (s.definitions[s.guards[i].pos].e2) then
 
							s.guards[i].pos = s.definitions[s.guards[i].pos].e2;
 
						end;
 
					elseif (s.guards[i].dir == 3) then
 
						if (s.definitions[s.guards[i].pos].e3) then
 
							s.guards[i].pos = s.definitions[s.guards[i].pos].e3;
 
						end;
 
					elseif (s.guards[i].dir == 4) then
 
						if (s.definitions[s.guards[i].pos].e4) then
 
							s.guards[i].pos = s.definitions[s.guards[i].pos].e4;
 
						end;
 
					end;
 
				end;
 
			end;
 
			
 
			local g_y = math.floor(tonumber(s.guards[i].pos) / 10);
 
			local g_x = tonumber(s.guards[i].pos) % 10;
 
			--print("guard:", g_x, g_y)
 
			--Видимость при разнице не более двух. В прямой видимости - видно, иначе - слышно
 
			--TODO может стоит сделать, чтобы шаги были слышны только при движении стражнека?
 
			if (g_x == pl_x) then
 
				--North-south line
 
				if (g_y - pl_y == 2) then
 
					pr("На севере вы видите охранника. Он смотрит на " .. getDirName(s.guards[i].dir) .. ". ");
 
				elseif (g_y - pl_y == 1) then
 
					pr("На севере, совсем рядом, вы видите охранника. Он смотрит на " .. getDirName(s.guards[i].dir) .. ". ");
 
				elseif (pl_y - g_y == 1) then
 
					pr("На юге, совсем рядом, вы видите охранника. Он смотрит на " .. getDirName(s.guards[i].dir) .. ". ");
 
				elseif (pl_y - g_y == 2) then
 
					pr("На юге вы видите охранника. Он смотрит на " .. getDirName(s.guards[i].dir) .. ". ");
 
				end;
 
			elseif (g_y == pl_y) then
 
				--east-west line
 
				if (g_x - pl_x == 2) then
 
					pr("На востоке вы видите охранника. Он смотрит на " .. getDirName(s.guards[i].dir) .. ". ");
 
				elseif (g_x - pl_x == 1) then
 
					pr("На востоке, совсем рядом, вы видите охранника. Он смотрит на " .. getDirName(s.guards[i].dir) .. ". ");
 
				elseif (pl_x - g_x == 1) then
 
					pr("На западе, совсем рядом, вы видите охранника. Он смотрит на " .. getDirName(s.guards[i].dir) .. ". ");
 
				elseif (pl_x - g_x == 2) then
 
					pr("На западе вы видите охранника. Он смотрит на " .. getDirName(s.guards[i].dir) .. ". ");
 
				end;
 
			else
 
				if (g_x - pl_x == 1 and g_y - pl_y == 1) then
 
					pr("К северовостоку от вас вы слышите шаги охранника. ");
 
				elseif (g_x - pl_x == 1 and pl_y - g_y == 1) then
 
					pr("К юговостоку от вас вы слышите шаги охранника. ");
 
				elseif (pl_x - g_x == 1 and g_y - pl_y == 1) then
 
					pr("К северозападу от вас вы слышите шаги охранника. ");
 
				elseif (pl_x - g_x == 1 and pl_y - g_y == 1) then
 
					pr("К югозападу от вас вы слышите шаги охранника. ");
 
				end;
 
			end;
 
		end;
 
	end;
 
	makeTurn = function(s)
 
		-- TODO debug
 
		if (s:checkGuardSight()) then
 
			s:guardTurn();
 
			if (s:checkGuardSight()) then				
 
				if (warehouse_32_definitions[warehouse_32.pos].e1 or warehouse_32_definitions[warehouse_32.pos].ex1) then
 
					path("На север"):enable();
 
				else
 
					path("На север"):disable();
 
				end;
 
				
 
				if (warehouse_32_definitions[warehouse_32.pos].e2 or warehouse_32_definitions[warehouse_32.pos].ex2) then
 
					path("На восток"):enable();
 
				else
 
					path("На восток"):disable();
 
				end;
 
			
 
				if (warehouse_32_definitions[warehouse_32.pos].e3 or warehouse_32_definitions[warehouse_32.pos].ex3) then
 
					path("На юг"):enable();
 
				else
 
					path("На юг"):disable();
 
				end;
 
			
 
				if (warehouse_32_definitions[warehouse_32.pos].e4 or warehouse_32_definitions[warehouse_32.pos].ex4) then
 
					path("На запад"):enable();
 
				else
 
					path("На запад"):disable();
 
				end;
 
				
 
				if (warehouse_32_definitions[warehouse_32.pos].corner) then
 
					path("Спрятаться"):enable();
 
				else
 
					path("Спрятаться"):disable();
 
				end;
 
				
 
				if (warehouse_32.hidden) then
 
					path("Спрятаться"):disable();
 
					path("Выбраться из укрытия"):enable();
 
					path("На запад"):disable();
 
					path("На восток"):disable();
 
					path("На север"):disable();
 
					path("На юг"):disable();
 
				else
 
					path("Выбраться из укрытия"):disable();
 
				end;
 
				
 
				if (warehouse_32_definitions[warehouse_32.pos].sector) then
 
					warehouse_32_shelves.current = warehouse_32_definitions[warehouse_32.pos].sector;
 
					warehouse_32_shelves:enable();
 
				else
 
					warehouse_32_shelves:disable();
 
				end;
 
			end;
 
		end;
 
	end;
 
	enter = function(s)
 
		s:makeTurn();
 
	end;
 
	way = {
 
		kh_vroom("На север", function(s)
 
			if (warehouse_32_definitions[warehouse_32.pos].ex1) then
 
				return warehouse_32_definitions[warehouse_32.pos].ex1;
 
			else
 
				warehouse_32.pos = warehouse_32_definitions[warehouse_32.pos].e1;
 
			end;
 
			
 
			return "warehouse_32";
 
		end);
 
		
 
		kh_vroom("На юг", function(s)
 
			if (warehouse_32_definitions[warehouse_32.pos].ex3) then
 
				return warehouse_32_definitions[warehouse_32.pos].ex3;
 
			else
 
				warehouse_32.pos = warehouse_32_definitions[warehouse_32.pos].e3;
 
			end;
 
			
 
			return "warehouse_32";
 
		end);
 
		
 
		kh_vroom("На запад", function(s)
 
			if (warehouse_32_definitions[warehouse_32.pos].ex4) then
 
				return warehouse_32_definitions[warehouse_32.pos].ex4;
 
			else
 
				warehouse_32.pos = warehouse_32_definitions[warehouse_32.pos].e4;
 
			end;
 
			
 
			return "warehouse_32";
 
		end);
 
		
 
		kh_vroom("На восток", function(s)
 
			if (warehouse_32_definitions[warehouse_32.pos].ex2) then
 
				return warehouse_32_definitions[warehouse_32.pos].ex2;
 
			else
 
				warehouse_32.pos = warehouse_32_definitions[warehouse_32.pos].e2;
 
			end;
 
			
 
			return "warehouse_32";
 
		end);
 
		
 
		kh_vroom("Ждать", function(s)
 
			return "warehouse_32";
 
		end);
 
		
 
		kh_vroom("Спрятаться", function(s)
 
			warehouse_32.hidden = true;
 
			
 
			return "warehouse_32";
 
		end);
 
		
 
		kh_vroom("Выбраться из укрытия", function(s)
 
			warehouse_32.hidden = false;
 
			
 
			return "warehouse_32";
 
		end);
 
	};
 
	obj = {
 
		'warehouse_32_shelves'
 
	};
 
};
 
 
warehouse_32_shelves = obj {
 
    var {
 
        current = "E1";
 
    };
 
	nam = "warehouse_32_shelves";
 
	dsc = function (s)
 
		return "Стеллажи, расположенные в этой секции отмечены табличкой {" .. s.current .. "}";
 
	end;
 
	act = function(s)
 
		w32_shelf_input.sector = s.current;
 
		walkin("w32_shelf_input");
 
	end;
 
};
 
 
w32_shelf_input = input_number {
 
    var {
 
        items = {
 
            { n = "item_electrodes"; };
 
            { n = "item_pump_details"; };
 
        };
 
    };
 
	nam = "w32_shelf_input";
 
	disp = function(s) 
 
		return "Стеллаж с отметкой " .. s.sector;
 
	end;
 
	check = function(s, input)
 
		for i = 1, #s.items do
 
			if (s.items[i].shelf == s.sector and w32_shelf_input.items[i].position == input and not w32_shelf_input.items[i].taken) then
 
				w32_shelf_input.items[i].taken = true;
 
				pn(stead.ref(s.items[i].n).disp);
 
				put(s.items[i].n, pl);
 
			end;
 
		end;
 
		back();
 
	end;
 
	label = "Укажите номер позиции:";
 
};
 
 
function warehouse32_init()
 
	print("init w32");
 
	for i = 1, #w32_shelf_input.items do
 
		local ok = false;
 
		while not ok do
 
			local index1 = rnd(4);
 
			local index2 = rnd(4);
 
			local shelf_name;
 
			if (index1 == 1) then
 
				shelf_name = 'A';
 
			elseif (index1 == 2) then
 
				shelf_name = 'B';
 
			elseif (index1 == 3) then
 
				shelf_name = 'C';
 
			elseif (index1 == 4) then
 
				shelf_name = 'D';
 
			end;
 
			shelf_name = shelf_name .. tostring(index2);
 
			w32_shelf_input.items[i].shelf = shelf_name;
 
			w32_shelf_input.items[i].position = tostring(rnd(100));
 
			ok = true;
 
			for j = 1, i - 1 do
 
				if (w32_shelf_input.items[i].shelf == w32_shelf_input.items[j].shelf and 
 
					w32_shelf_input.items[i].position == w32_shelf_input.items[j].position) then
 
					ok = false;
 
				end;
 
			end;
 
		end;
 
	end;
 
end;
0 comments (0 inline, 0 general)