Changeset - 1e36831e2495
[Not reviewed]
default
0 4 0
silverwing - 7 years ago 2017-09-09 11:51:24

Some extra money
3 files changed with 38 insertions and 8 deletions:
0 comments (0 inline, 0 general)
dock2.lua
Show inline comments
 
@@ -21,108 +21,110 @@ dock_2 = room {
 
dock_gate = obj {
 
	nam = "dock_gate";
 
	disp = "Ворота";
 
	dsc = function(s)
 
		if (s.open) then 
 
			return [[Ржавые {ворота} слегка приоткрыты. ]];
 
		else
 
			return [[Проржавевшие ворота дока заперты на тяжелый навесной {замок}. ]];
 
		end;
 
	end;
 
	act = function (s)
 
		if (s.open) then
 
			return [[Вы при всем желании не сможете сдвинуть ворота с места. ]];
 
		else
 
			return [[Замок давно пришел в негодность. Даже если бы у вас был ключ, вы вряд ли смогли бы открыть его. ]];
 
		end;
 
	end;
 
	used = function(s,o)
 
		if (s.open) then
 
			return false;
 
		end;
 
		if (o == item_toolbox) then
 
			s.open = true;
 
			path("В док"):enable();
 
			return [[Пользуясь ломиком, найденным в ящике, вы снимаете замок с ворот. С жутким скрипом вам удается приоткрыть их. Теперь вы можете войти внутрь. ]];
 
		else
 
			return false;
 
		end;
 
	end;
 
	
 
};
 
 
dock_inside = room {
 
	nam = "dock_inside";
 
	disp = "Док";
 
    dsc = [[На территории дока повсюду раскиданы обломки дерева, железа, какие-то мешки. Ржавые ворота в заборе застыли в приоткрытом состоянии. Вдалеке, у причала, стоит старый грузовой кран. До вас доносятся завывания ветра и скрип ржавого металла. ]];
 
	--dsc = [[Вы находитесь на территории дока, принадлежавшего компании "Вестхейвен Трансоушен", о чем свидетельствует оставшаяся позади табличка. Вдалеке, у причала стоит старый грузовой кран. Вы не слышите ничего, кроме завываний ветра и скрипа ржавого металла. ]];
 
	way = {
 
		vroom("На улицу", "dock_2");
 
		vroom("К причалу", "dock_mooring");
 
	};
 
	obj = {
 
		"dock_boxes"
 
	};
 
};
 
 
dock_boxes = obj {
 
    var {
 
        searched = false;
 
        searched = 0;
 
    };
 
	nam = "dock_boxes";
 
	disp = "Ящики";
 
	dsc = [[Ровными рядами вокруг расположены старые грузовые {контейнеры}. Краска на большинстве из них повреждена настолько, что не осталось никаких опознавательных знаков об их происхождении и содержимом. ]];
 
	act = function(s)
 
		if (not s.searched) then
 
			s.searched = true;
 
		if s.searched == 0 then
 
			s.searched = 1;
 
			put(item_pump_broken, pl);
 
			return [[
 
				В одном из ящиков вы находите неисправный ручной насос. 
 
			]];
 
			return [[В одном из ящиков вы находите неисправный ручной насос. ]];
 
        elseif s.searched == 1 then
 
            s.searched = 2;
 
            pl.money = pl.money + 5;
 
            return [[В одном из ящиков кто-то оставил монету в пять шиллингов. ]];
 
		end;
 
	end;
 
};
 
 
leviathan_entry = room {
 
	nam = "leviathan_entry";
 
	disp = "В люк";
 
	enter = function(s)
 
		if (dock_leviathan.pump_state == 1) then
 
			walk('leviathan_airlock');
 
		else
 
			return "Отсек заполнен водой. Вы не можете туда спуститься. ", false;
 
		end;
 
	end;
 
};
 
 
dock_mooring = room {
 
	nam = "dock_inside";
 
	disp = "Причал";
 
	dsc = [[У причала пусто, не считая нескольких кучек мусора - старых гнилых деревяшек, каких-то ржавых металлических трубок, мешков с неизвестным содержимым. Вы не слышите ничего, кроме шума мутной воды, завываний ветра и скрипа ржавого металла. ]];
 
	view = [[Левиафан находится в доке. ]];
 
	way = {
 
		vroom("К воротам", "dock_inside");
 
		vroom("К пульту управления краном", "dock_crane_control");
 
		leviathan_entry:disable();
 
	};
 
	obj = {
 
		"dock_leviathan",
 
		"dock_crane"
 
	};
 
};
 
 
dock_leviathan = obj {
 
    var {
 
        submerged = true;
 
        pump_state = 0; -- 0 в отсеке вода; 1 - в отсеке нет воды
 
        open = false;
 
    };
 
	nam = "dock_leviathan";
 
	disp = "Левиафан";
 
	dsc = function(s)
 
		if (s.submerged) then
 
			return "Под поверхностью воды виден какой-то большой металлический {объект}. ";
 
		else
 
			if (s.open) then
 
				return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен открытый {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 - Левиафан". ]];
 
			else
 
				return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен наглухо задраенный {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 - Левиафан". ]];
london.lua
Show inline comments
 
@@ -313,97 +313,97 @@ hotel_corridor_2 = room {
 
        met_starlight = false;
 
    };
 
	nam = "hotel_corridor_2";
 
	disp = "Гостиница, второй этаж";
 
	dsc = [[Широкий коридор без окон, освещенный газовыми лампами, укрепленными на стенах. По обе стороны от вас расположены двери, ведущие в комнаты постояльцев. ]];
 
	way = {
 
		vroom("В холл", "hotel_hall");
 
		vroom("В комнату №7", "hotel_room_7");
 
	};
 
	enter = function(s)
 
		if (s.room_visited and not s.met_starlight) then
 
			s.met_starlight = true;
 
			walkin('starlight_first_dlg');
 
		end;
 
	end;
 
    entered = function(s)
 
        if (rnd(10) > 9) then
 
            hotel_maid.state = rnd(#hotel_maid.actions - 1);
 
            put(hotel_maid, here());
 
        else
 
            remove(hotel_maid, here());
 
        end;
 
    end;
 
	left = function(s)
 
		if (s.room_visited) then
 
			remove("char_starlight_corridor", where("char_starlight_corridor"));
 
			lifeoff("char_starlight_corridor");
 
		end;
 
	end;
 
};
 
 
hotel_room_2 = room {
 
	nam = "hotel_room_2";
 
	disp = "Гостиница, Комната №2";
 
    dsc = [[Небольшая чистая комната. На столике у окна стоит зажженная лампа, рядом брошена стопка газет. На кровати в углу валяется шляпа хозяина. Окно распахнуто, впуская внутрь прохладный и влажный воздух. ]];   
 
	obj = {
 
		"char_starlight"
 
	};
 
	way = {
 
		vroom("В коридор", "hotel_corridor_1");
 
	};
 
};
 
 
hotel_room_7 = room {
 
	nam = "hotel_room_7";
 
	disp = "Гостиница, Комната №7";
 
	dsc = [[Небольшая чистая комната. Деревянный столик в углу прикрыт белой скатертью. В углу стоит аккуратно сделанный стул. У окна расположена застеленная чистым бельем кровать. На скрипучем деревянном полу лежит старый коврик. ]];
 
	obj = {
 
		'item_lamp', 'room_7_window'
 
		'item_lamp', 'room_7_window', 'money_hotel'
 
	};
 
	way = {
 
		vroom("В коридор", "hotel_corridor_2");
 
	};
 
	entered = function(s)
 
		hotel_corridor_2.room_visited = true;
 
	end;
 
};
 
 
room_7_window = obj {
 
	nam = "room_7_window";
 
	state = 0;
 
	dsc = function(s)
 
		if (s.state == 0) then
 
			return "{Окно} закрыто плотными ставнями. ";
 
		elseif (s.state == 1) then
 
			return "Через {окно} вы можете разглядеть мостовую, немногочисленных прохожих, прочные кирпичные дома на другой стороне улицы и тяжелые тучи, нависающие над городом. ";
 
		else
 
			return "Сквозь открытое {окно} до вас доносится шум большого, живущего своей жизнью города. Прохладный ветерок задувает в комнату. ";
 
		end;
 
	end;
 
	act = function(s)
 
		if (s.state == 0) then
 
			s.state = 1;
 
			return [[Вы открываете ставни. ]];
 
		elseif (s.state == 1) then
 
			s.state = 2;
 
			return [[Вы открываете окно. ]];
 
		elseif (s.state == 2) then
 
			s.state = 0;
 
			return [[Вы закрываете окно и захлопываете ставни. ]];
 
		end;
 
	end;
 
};
 
 
hotel_concierge = obj {
 
    var {
 
        paid = false;
 
    };
 
	nam = "hotel_concierge";
 
	disp = "Консьерж";
 
	dsc = [[За стойкой скучает пожилой {консьерж}. Поношенный костюм, выглаженный и начищенный, хорошо сидит на его худощавом теле. Аккуратно подстриженная седая борода украшает его морщинистое лицо. Руки его неподвижно лежат на стойке, а глаза наблюдают за входящими и выходящими посетителями. ]];
 
	act = function(s)
 
		if (hotel_concierge.paid) then
 
			pn("Я уже снял номер. ");
 
		else
 
			walkin(hotel_concierge_dlg);
 
		end;
 
@@ -572,49 +572,76 @@ starlight_dlg = dlg {
 
]]
 
london_bank_street = room {
 
    nam = "london_bank_street";
 
    disp = "Улица";
 
    dsc = [[На улице перед банком людно -- прохожие спешат по своим делам, то и дело натыкаясь друг на друга и разбегаясь в разные стороны. Среди этой суеты возвышается, словно игнорируя ее, здание, высокое и широкое, с резными колоннами, мраморными ступенями, ведущими к широким и тяжелым дверям из красного дерева и позолоченной табличкой над входом, гласящей, что перед лицезреющими это ни что иное, как банк. ]];
 
    way = {
 
        kh_vroom("В банк", "london_bank");
 
    };
 
    entered = function(s)
 
        move(char_coachman, here());
 
    end;
 
};
 
 
london_bank = room {
 
    nam = "london_bank";
 
    disp = "Банк";
 
    dsc = [[Внутри банка прохладно и светло. ]];
 
    obj = {
 
        "bank_clerks";
 
        "bank_guard";
 
    };
 
};
 
 
bank_clerks = npc {
 
    nam = "bank_clerks";
 
    dsc = [[Людей внутри почти нет, не считая нескольких скучающих за мраморной стойкой {клерков} ]];
 
    dlg = "bank_clerks_dlg";
 
};
 
 
bank_clerks_dlg = dlg {
 
    nam = "bank_clerks_dlg";
 
    disp = "Клерк";
 
    entered = [[Вы подходите к одному из клерков. Молодой человек в аккуратном пиджаке и галстуке уставляет свой взор на вас и спрашивает: "Чем я могу помочь?"]];
 
    phr = {
 
        {"[Передать сберкнижку]Я хотел бы снять деньги со своего счета. ", [[Вы протягиваете клерку сберкнижку. Он просматривает ее и отвечает: "Конечно. Минутку". Он уходит из зала и через несколько минут возвращается с мешочком монет. ]], code [[ pl.money = pl.money + 150; ]]};
 
        {always=true; "Я вернусь позже. ", [[Клерк возвращается к своим делам. ]], code [[ back(); ]]}
 
    };
 
};
 
 
bank_guard = npc {
 
    nam = "bank_guard";
 
    dsc = "и одинокого {охранника}, застывшего у входа.";
 
    phrases = {
 
        [[Охранник вежливо приветствует вас: "Добро пожаловать, господин". ]];
 
        [[Охранник пожимает плечами: "Я ничем не могу вам помочь". ]];
 
        [[Охранник зевает. ]];
 
        [[Охранник задумчиво чешет подбородок. ]];
 
    };
 
};
 
 
money_dock = obj {
 
    nam = "money_dock";
 
    dsc = "Среди куч мусора вы видите что-то {блестящее}. ";
 
    act = function(s)
 
        remove(money_dock, here());
 
        return "Пять шиллингов!";
 
    end;
 
};
 
 
money_wh32 = obj {
 
    nam = "money_wh32";
 
    dsc = "На столе лежат несколько {монет}. ";
 
    act = function(s)
 
        remove(money_wh32, here());
 
        return "Пять шиллингов!";
 
    end;
 
};
 
 
money_hotel = obj {
 
    nam = "money_hotel";
 
    dsc = "Под кроватью вы замечаете {что-то блестящее}. ";
 
    act = function(s)
 
        remove(money_hotel, here());
 
        return "Пять шиллингов!";
 
    end;
 
};
 
\ No newline at end of file
warehouse32.lua
Show inline comments
 
@@ -136,97 +136,98 @@ w32_backdoor = room {
 
		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");
 
	};
 
};
 
 
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'
 
		'w32_mgr_bookcase',
 
        'money_w32'
 
	};
 
};
 
 
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 [[
0 comments (0 inline, 0 general)