commit 31dbdec22b6f1b1ca60d6332311dc3127695bb11 Author: Oreolek Date: Sun Sep 20 16:22:27 2015 +0700 Initial commit diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..4bea3be --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "instead-modules"] + path = instead-modules + url = git@bitbucket.org:oreolek/instead-modules.git diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..1912424 --- /dev/null +++ b/init.lua @@ -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 = _('Я не мазохист.'), +} diff --git a/instead-modules b/instead-modules new file mode 160000 index 0000000..dd734a1 --- /dev/null +++ b/instead-modules @@ -0,0 +1 @@ +Subproject commit dd734a1f8c735590d029839607f45a665102a7e6 diff --git a/main.lua b/main.lua new file mode 100644 index 0000000..5dd6214 --- /dev/null +++ b/main.lua @@ -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 = 'Я смотрю на банку с вареньем. Оно, конечно, вкусное, да у меня ложки нет. Не хочу есть пальцами.' +}