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

Some extra money
4 files changed with 39 insertions and 9 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 [[
wright.lua
Show inline comments
 
@@ -14,97 +14,97 @@ door_wright = obj {
 
		if (s.locked) then
 
			return [[Обшарпанная деревянная {дверь}, ведущая в дом, заперта изнутри. ]];
 
		else
 
			return [[Обшарпанная деревянная {дверь}, ведущая в дом, незаперта. ]];
 
		end;
 
	end;
 
};
 
 
char_wright_home = obj {
 
    var {
 
        known = false;
 
        documents = false;
 
        known_leviathan = false;
 
    };
 
	nam = "char_wright_home";
 
	disp = "Джек Райт";
 
	dsc = function(s)
 
		if (s.documents) then
 
			return [[За столом сидит {Джек Райт} и с интересом рассматривает схемы, которые вы ему отдали. ]];
 
		else
 
            if (s.known) then
 
                return [[За столом сидит {Джек Райт}, неспешно просматривая какие-то бумаги. ]];
 
            else
 
			    return [[За столом сидит {молодой человек}, неспешно просматривающий какие-то бумаги. ]];
 
            end;         
 
		end;
 
	end;
 
	act = function(s)
 
		walkin(wright_dlg);
 
	end;
 
};
 
 
wright_dlg = dlg {
 
    var {
 
        state = 1;
 
    };
 
	nam = "wright_dlg";
 
	disp = "Джек Райт";
 
	entered = function(s)
 
        if (submarine_leviathan.power_on and submarine_leviathan.airpump and submarine_leviathan.battery and submarine_leviathan.air_level < 432000) then
 
            submarine_leviathan.air_level = 432000;
 
            lifeoff(s);
 
        end;   
 
		if (atlantis_found and submarine_leviathan.air_level > 400000 and submarine_leviathan.circuit_breaks == 0 and submarine_leviathan.power_on) then
 
			psub('leviathan_restored');
 
			return [[Джек Райт отвлекается от газеты: "Добрый день". ]];
 
		elseif (s.state == 1) then
 
			--First meeting
 
            char_wright_home.known = true;         
 
            char_wright_home.known = true;
 
			psub('first_visit');
 
			return [[Перед вами молодой человек, одетый в недорогой, но опрятный костюм. Его бледное лицо украшает короткая темная борода и пышные усы. Темные волосы коротко острижены. Серые глаза с интересом разглядывают вас. Он протягивает вам руку и представляется: "Добрый день. Мое имя -- Джек Райт. Майкл -- мой отец, но он пропал несколько лет назад". ]];
 
		elseif (s.state == 2) then
 
			--Documents not given
 
			psub('ask_documents');
 
			return [[Джек отвлекается от газеты: "Добрый день. Вы обещали принести какие-то документы". ]];
 
		elseif (s.state == 3) then
 
			--Documents given
 
			if (not leviathan_discovered) then
 
				psub('checking_documents');
 
				return [[Джек отвлекается от документов: "Добрый день. Если вы по поводу документов, то я еще ничего не нашел". ]];
 
			else
 
				s.state = 5;
 
				warehouse32_found = true;
 
				psub('warehouse_discovered');
 
                pl.money = pl.money + 100;
 
				return [[Джек отвлекается от документов: "Добрый день. У меня хорошие новости. Я нашел склад 32", - он достает карту города и показывает вам место. Потом он достает из стола мешочек денег и протягивает вам со словами: "Надеюсь, это поможет тебе в поисках". ]];
 
			end;
 
		elseif (s.state == 4) then
 
			--Documents taken back
 
			psub('ask_documents2');
 
			return [[Джек отвлекается от газеты: "Добрый день. Я хотел бы еще раз вглянуть на эти бумаги". ]];
 
		elseif (s.state == 5) then
 
			psub('warehouse_discovered2');
 
            poff("phr_warehouse_visited");
 
            poff("phr_leviathan");
 
            if (warehouse32_visited) then
 
                pon("phr_warehouse_visited");
 
            end;
 
            if (not char_wright_home.known_leviathan) then
 
                pon("phr_leviathan");
 
            end;
 
			return [[Джек отвлекается от газеты: "Добрый день". ]];
 
		elseif (s.state == 7) then
 
			psub('warehouse_discovered3');
 
			return [[Джек отвлекается от газеты: "Добрый день". ]];
 
		end;
 
	end;
 
	phr = {
 
		{tag='first_visit'};
 
		{"Мое имя -- Дэвид Дрейк. Мне удалось найти кое-какие документы в одном из тайников отца. Этот адрес был среди них. Вы что-то знаете о судьбе моего отца? ", [[Джек вздыхает: "Это бесполезно. Я изучил практически все, до чего сумел дотянуться - газеты, судебные дела. И ничего - никаких зацепок. Компания обанкротилась, руководители пропали". ]], code [[wright_dlg.state = 2; psub('ask_documents'); ]]};
 
		{tag='ask_documents'};
 
		{always = true, "[Отдать документы]Посмотрите это. Не думаю, что вы это видели. ", [[Джек нехотя забирает бумаги из ваших рук и бегло их осматривает. Пожимая плечами, он комментирует: "Ничего интересного, просто планы старых зданий. Док 2? Отец там часто бывал, впрочем не думаю, что после 10 лет там что-то осталось. Если хотите - можете оставить документы, я попробую разузнать побольше". ]], code [[ 
 
			dock_found = true;
 
			wright_dlg.state = 3; 
 
			remove(item_charts, pl); 
 
			psub("checking_documents");
 
		]]};
0 comments (0 inline, 0 general)