Initial commit

This commit is contained in:
Alexander Yakovlev 2015-09-20 16:22:27 +07:00
commit 31dbdec22b
4 changed files with 182 additions and 0 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "instead-modules"]
path = instead-modules
url = git@bitbucket.org:oreolek/instead-modules.git

111
init.lua Normal file
View file

@ -0,0 +1,111 @@
require 'para'
require 'dash'
require 'quotes'
require 'instead-modules/translate'
require 'instead-modules/emphasis'
require 'instead-modules/rndstr'
require 'proxymenu'
require "kbd"
require "hideinv"
game.forcedsc = true;
-- grabbing the Escape key
function init()
hook_keys('escape');
end
pl._time = nil;
game.kbd = function(s, down, key)
p [[А тут мы поймали Escape и переходим на выбор уровня. Но пока что выбора уровня нет.
И сейвов не будет, будет prefs. А рестарт игры по кнопке в инвентаре.
Кстати, почему dsc у сцены не вызывается сразу?]];
end
-- get rid of idiotic combinations in the verb menu
stead.proxy_fill_objs = function(s, w, act, use_mode, used_act, useit_act)
local ii,i,o
local rc = false
for i,o,ii in opairs(w) do
o = stead.ref(o);
if isObject(o) and not isDisabled(o) and o ~= s and not isPhrase(o) and o[act] ~= false
and not o.proxy_type and not isStatus(o) then
s.obj:add(stead.obj_proxy(o, act, use_mode, used_act, useit_act));
if not isRoom(o) then
stead.proxy_fill_objs(s, o.obj, act, use_mode, used_act, useit_act);
end
rc = true
end
end
return rc
end
-- inventory object with no double click
pocketobj = function(object)
local v = { };
v.action_type = true;
v.nam = object.nam;
v.tak = object.tak;
v.dsc = object.dsc;
v.gen = function() end;
v.inv = object.inv;
return menu(v);
end
restart_call = pocketobj {
nam = txtb(_('Заново')),
inv = function()
stead.restart()
end,
}
place(restart_call, me());
clock = stat {
nam = 'часы',
disp = function()
if pl._time ~= nil then
p(pl._time);
pn(_('секунд'));
end
end,
}
place(clock, me());
-- меню глаголов
game.talk = _('Я не уверен, что расслышал ответ.');
game.examine = _('Не могу выразиться точнее.');
game.pickup = _('Я трачу несколько минут на поиск удобного способа взять это с собой. Не выходит.');
game.hit = _('Вряд ли выдержит даже одного удара.');
game.smell = _('Нет запаха.');
game.lick = _('Нет вкуса.');
game.touch = _('Нет реакции.');
game.push = _('Не двигается.');
game.pull = _('Не поддаётся.');
talk = obj_menu(_('ГОВОРИТЬ'), 'talk', true, true)
examine = obj_menu(_('ОСМОТРЕТЬ'), 'act', true, true)
pickup = obj_menu(_('ВЗЯТЬ'), 'pickup', true);
hit = obj_menu(_('УДАРИТЬ'), 'hit', true);
smell = obj_menu(_('ОБНЮХАТЬ'), 'smell', true);
lick = obj_menu(_('ЛИЗНУТЬ'), 'lick', true);
touch = obj_menu(_('ТРОНУТЬ'), 'touch', true);
push = obj_menu(_('ТОЛКНУТЬ'), 'push', true);
pull = obj_menu(_('ТЯНУТЬ'), 'pull', true);
place(examine, me())
place(smell, me())
place(lick, me())
place(touch, me())
place(pickup, me())
place(talk, me())
place(hit, me())
place(push, me())
place(pull, me())
self = obj {
nam = _('себя'),
dsc = '',
act = _('Прекрасен и здоров.'),
take = _('Уже сделано.'),
hit = _('Я не мазохист.'),
}

1
instead-modules Submodule

@ -0,0 +1 @@
Subproject commit dd734a1f8c735590d029839607f45a665102a7e6

67
main.lua Normal file
View file

@ -0,0 +1,67 @@
-- $Name: 20 секунд$
-- $Name(en): 20 seconds$
instead_version "1.8.0"
require 'init'
main = room{
nam = 'Выбор уровня',
dsc = function()
walk('room1');
end,
exit = function()
pl._time = 20;
lifeon('room1');
return _([[У вас 20 секунд на то, чтобы спасти Землю.]]);
end
};
gameover = room {
nam = _('Игра окончена'),
hideinv = true,
enter = function()
pl._time = nil
end,
dsc = _('Вы проиграли.')
}
room1 = room {
nam = _('Пляж на речке Грязная'),
dsc = _([[Светит жаркое солнце. Вы находитесь на солнечном пляже.]]),
obj = {
'sand','alien', 'self'
},
life = function()
stead.rndseed(os.time(os.date("*t")))
pl._time = pl._time - 1;
end
}
alien = obj {
nam = 'инопланетянин',
dsc = _('В кустах притаился {инопланетянин.}'),
act = _('Серый гуманоид с двумя парами глаз и длинным хоботом вместо рта.'),
talk = rndstr({
_('Он издаёт серию чпоков.'),
_('Гуманоид не замечает вас.'),
_('Инопланетянин мяукает.'),
_('Инопланетянин молчит.'),
_('Вы не знаете, что ему сказать.'),
}),
hit = function()
gameover.dsc = _('Инопланетянин уничтожает вас взглядом.');
lifeoff('room1');
walk('gameover');
end,
}
sand = obj {
nam = 'песок',
dsc = [[Вокруг вас чистейший {песок.}]],
act = 'Жёлтый песок образцового пляжа. По качеству стоит всего на три четверти ниже песков пустыни Сахары.',
talk = false,
hit = false,
pull = false,
push = false,
pickup = 'Я смотрю на банку с вареньем. Оно, конечно, вкусное, да у меня ложки нет. Не хочу есть пальцами.'
}