Changeset - 5c21237a618f
[Not reviewed]
default
0 3 0
Silverwing - 8 years ago 2017-01-21 10:33:40

savegame fixes
3 files changed with 45 insertions and 30 deletions:
0 comments (0 inline, 0 general)
items.lua
Show inline comments
 
@@ -52,14 +52,16 @@ item_spear = obj {
 
            return "Я не буду этого делать!";
 
        end;
 
    end;
 
};
 
 
item_colt = obj {
 
    var {
 
        bullets = 6;
 
    };
 
	nam = "colt";
 
	bullets = 6;
 
	disp = function(s)
 
		return "Кольт (" .. tostring(s.bullets) .. " зарядов)";
 
	end;
 
	dsc = [[Ваш револьвер. Надежное оружие в хорошем состоянии. Оно еще не раз спасет вашу жизнь. У вас также есть небольшой запас патронов к нему. ]];
 
	use = function(s, o)
 
        if (here().underwater) then
 
@@ -102,14 +104,16 @@ item_colt = obj {
 
            end;
 
		end;
 
	end;
 
};
 
 
item_harpoon = obj {
 
    var {
 
        charge = 1;
 
    };
 
    nam = "item_harpoon";
 
    charge = 1;
 
    disp = function(s)
 
        if (s.charge == 0) then
 
            return "Гарпунное ружье (разряжено)";
 
        else
 
            return "Гарпунное ружье (заряжено)";
 
        end;
main.lua
Show inline comments
 
@@ -78,24 +78,28 @@ global {
 
    dt_buttons = {};
 
};
 
 
 
 
player_drake = player {
 
    var {
 
        hp = 10;
 
        has_light = false;
 
        party = {--[["learr", "radcliffe", "phaetlarr", "wright"]]};
 
        companion = nil;
 
        money = 200;
 
    };
 
	nam = "player";
 
	disp = "Дэвид Дрейк";
 
    disp2 = "Дрейка";
 
    disp3 = "Дрейку";
 
	where = 'port';
 
	hp = 10;
 
	
 
	obj = {'item_umbrella', 'item_charts', 'item_note_1', 'item_money', 
 
	};
 
	-- party array. Should be empty on start
 
	party = {--[["learr", "radcliffe", "phaetlarr", "wright"]]};
 
	companion = nil;
 
	money = 200;
 
	
 
	pay = function(s, c)
 
		if (s.money >= c) then
 
			s.money = s.money - c;
 
			return true;
 
		else
 
			return false;
warehouse32.lua
Show inline comments
 
@@ -2,15 +2,17 @@
 
Игрок может попасть сюда только после диалога с Майклом.
 
Эта локация имеет владельца, которому не понравится, что здесь шляются посторонние.
 
Здесь игрок найдет карту.
 
]]
 
 
warehouse_32_guard = npc {
 
    var {
 
        dlg = 'warehouse_32_guard_dlg';
 
    };
 
	nam = "warehouse_32_guard";
 
	dsc = "Рядом со входом, опершись на стену, стоит {охранник}. Он не обращает на вас никакого внимания. ";
 
	dlg = 'warehouse_32_guard_dlg';
 
	phrases = {
 
		'Мне больше не о чем с ним говорить. ';
 
		'Он меня не пропустит. ';
 
	};
 
};
 
 
@@ -168,25 +170,27 @@ w32_backdoor = room {
 
		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;
 
	key_inplace = true;
 
	book_inplace = true;
 
	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("Стоит вернуть все как было. ");
 
@@ -220,12 +224,16 @@ w32_journal = obj {
 
		
 
		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 [[
 
				В центре комнаты расположен большой письменный стол. {Ящик} стола выдвинут.
 
@@ -233,14 +241,12 @@ w32_mgr_table = obj {
 
		else
 
			return [[
 
				В центре комнаты расположен большой письменный стол. В столе имеется {ящик}.
 
			]];
 
		end;
 
	end;
 
	open = false;
 
	locked = true;
 
	act = function(s)
 
		if (not s.locked) then 
 
			if (s.open) then
 
				s.open = false;
 
				w32_journal:disable();
 
				return [[
 
@@ -418,31 +424,33 @@ function getDirName(dir)
 
	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;
 
	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 - должен пройти прямо
 
	};
 
	checkGuardSight = function(s)
 
		--Проверить область зрения каждого стражника, если игрок находится в области зрения - FAIL
 
		for i = 1, #s.guards do
 
			if (s.guards[i].pos == s.pos) then
 
				--detected
 
				walk("game_over_caught");
 
@@ -550,17 +558,12 @@ warehouse_32 = room {
 
					pr("К югозападу от вас вы слышите шаги охранника. ");
 
				end;
 
			end;
 
		end;
 
	end;
 
	makeTurn = function(s)
 
		--print("turn");
 
		--print(s.guards[1].pos, s.guards[1].dir);
 
		--print(s.guards[2].pos, s.guards[2].dir);
 
		--print(s.guards[3].pos, s.guards[3].dir);
 
		--print(s.guards[4].pos, s.guards[4].dir);
 
		-- 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();
 
@@ -675,24 +678,32 @@ warehouse_32 = room {
 
	obj = {
 
		'warehouse_32_shelves'
 
	};
 
};
 
 
warehouse_32_shelves = obj {
 
    var {
 
        current = "E1";
 
    };
 
	nam = "warehouse_32_shelves";
 
	current = "E1";
 
	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
 
@@ -702,16 +713,12 @@ w32_shelf_input = input_number {
 
				put(s.items[i].n, pl);
 
			end;
 
		end;
 
		back();
 
	end;
 
	label = "Укажите номер позиции:";
 
	items = {
 
		{ n = "item_electrodes"; };
 
		{ n = "item_pump_details"; };
 
	};
 
};
 
 
function warehouse32_init()
 
	print("init w32");
 
	for i = 1, #w32_shelf_input.items do
 
		local ok = false;
0 comments (0 inline, 0 general)