первая сцена
This commit is contained in:
parent
5c5187e012
commit
68e6cbdf4c
|
@ -1,54 +1,147 @@
|
||||||
-- Здесь мы настраиваем парсер.
|
-- Здесь мы настраиваем парсер.
|
||||||
|
|
||||||
|
mp.msg.SCENE = "{#Me} {#plural/находишься,находитесь} {#if_has/#here,supporter,на,в} {#here/пр,2}.";
|
||||||
|
|
||||||
|
function split(s, sep)
|
||||||
|
if sep == nil then
|
||||||
|
sep = ","
|
||||||
|
end
|
||||||
|
local t={}
|
||||||
|
for str in string.gmatch(s, "([^"..sep.."]+)") do
|
||||||
|
table.insert(t, str)
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
local function istable(t) return type(t) == 'table' end
|
||||||
|
|
||||||
|
-- "Ты/вы" в разных падежах: им, род, дат, вин, твор, пред.
|
||||||
|
function mp.shortcut.you(case)
|
||||||
|
if case == nil then
|
||||||
|
case = 'им'
|
||||||
|
end
|
||||||
|
if case == 'им' then
|
||||||
|
if pl.plural then
|
||||||
|
return 'вы'
|
||||||
|
end
|
||||||
|
return 'ты'
|
||||||
|
end
|
||||||
|
if case == 'род' then
|
||||||
|
if pl.plural then
|
||||||
|
return 'вас'
|
||||||
|
end
|
||||||
|
return 'тебя'
|
||||||
|
end
|
||||||
|
if case == 'дат' then
|
||||||
|
if pl.plural then
|
||||||
|
return 'вам'
|
||||||
|
end
|
||||||
|
return 'тебе'
|
||||||
|
end
|
||||||
|
if case == 'вин' then
|
||||||
|
if pl.plural then
|
||||||
|
return 'вас'
|
||||||
|
end
|
||||||
|
return 'тебя'
|
||||||
|
end
|
||||||
|
if case == 'твор' then
|
||||||
|
if pl.plural then
|
||||||
|
return 'вами'
|
||||||
|
end
|
||||||
|
return 'тобой'
|
||||||
|
end
|
||||||
|
if case == 'пред' then
|
||||||
|
if pl.plural then
|
||||||
|
return 'вас'
|
||||||
|
end
|
||||||
|
return 'тебе'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function mp.shortcut.plural(options)
|
||||||
|
if not istable(options) then
|
||||||
|
options = split(options)
|
||||||
|
end
|
||||||
|
|
||||||
|
if pl.plural then
|
||||||
|
return options[2]
|
||||||
|
end
|
||||||
|
return options[1]
|
||||||
|
end
|
||||||
|
|
||||||
|
-- {#g/singlefem,singlemasc,singleother,plural}
|
||||||
|
function mp.shortcut.g(options)
|
||||||
|
if not istable(options) then
|
||||||
|
options = split(options)
|
||||||
|
end
|
||||||
|
if #options == 2 then
|
||||||
|
return mp.shortcut.plural(options)
|
||||||
|
end
|
||||||
|
|
||||||
|
if pl.plural then
|
||||||
|
return options[4]
|
||||||
|
end
|
||||||
|
if pl.pronouns == 'fem' then
|
||||||
|
return options[1]
|
||||||
|
end
|
||||||
|
if pl.pronouns == 'masc' then
|
||||||
|
return options[2]
|
||||||
|
end
|
||||||
|
if pl.pronouns == 'other' then
|
||||||
|
return options[3]
|
||||||
|
end
|
||||||
|
return options[1]
|
||||||
|
end
|
||||||
|
|
||||||
game:dict {
|
game:dict {
|
||||||
["Димидий/мр,C,но,ед"] = {
|
["Димидий/мр,C,но,ед"] = {
|
||||||
"Димидий/им",
|
"Димидий/им",
|
||||||
"Димидий/вн",
|
"Димидий/вн",
|
||||||
"Димидия/рд",
|
"Димидия/рд",
|
||||||
"Димидию/дт",
|
"Димидию/дт",
|
||||||
"Димидием/тв",
|
"Димидием/тв",
|
||||||
"Димидии/пр",
|
"Димидии/пр",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function game:before_Any(ev, w)
|
function game:before_Any(ev, w)
|
||||||
if ev == "Ask" or ev == "Say" or ev == "Tell" or ev == "AskFor" or ev == "AskTo" then
|
if ev == "Ask" or ev == "Say" or ev == "Tell" or ev == "AskFor" or ev == "AskTo" then
|
||||||
p [[Попробуйте просто поговорить.]];
|
p [[Попробуйте просто поговорить.]];
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
function mp:pre_input(str)
|
function mp:pre_input(str)
|
||||||
local a = std.split(str)
|
local a = std.split(str)
|
||||||
if #a <= 1 or #a > 3 then
|
if #a <= 1 or #a > 3 then
|
||||||
return str
|
return str
|
||||||
end
|
end
|
||||||
if a[1] == 'в' or a[1] == 'на' or a[1] == 'во' or
|
if a[1] == 'в' or a[1] == 'на' or a[1] == 'во' or
|
||||||
a[1] == "к" or a[1] == 'ко' then
|
a[1] == "к" or a[1] == 'ко' then
|
||||||
return "идти "..str
|
return "идти "..str
|
||||||
end
|
end
|
||||||
return str
|
return str
|
||||||
end
|
end
|
||||||
|
|
||||||
Distance = Class {
|
Distance = Class {
|
||||||
before_Default = function(s, ev)
|
before_Default = function(s, ev)
|
||||||
if ev == "Exam" or ev == "Look" or ev == "Search" then
|
if ev == "Exam" or ev == "Look" or ev == "Search" then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
p ("Но ", s:noun(), " очень далеко.");
|
p ("Но ", s:noun(), " очень далеко.");
|
||||||
end;
|
end;
|
||||||
}:attr 'scenery'
|
}:attr 'scenery'
|
||||||
|
|
||||||
Furniture = Class {
|
Furniture = Class {
|
||||||
['before_Push,Pull,Transfer,Take'] = [[Пусть лучше
|
['before_Push,Pull,Transfer,Take'] = [[Пусть лучше
|
||||||
{#if_hint/#first,plural,стоят,стоит} там, где
|
{#if_hint/#first,plural,стоят,стоит} там, где
|
||||||
{#if_hint/#first,plural,стоят,стоит}.]];
|
{#if_hint/#first,plural,стоят,стоит}.]];
|
||||||
}:attr 'static'
|
}:attr 'static'
|
||||||
|
|
||||||
Prop = Class {
|
Prop = Class {
|
||||||
before_Default = function(s, ev)
|
before_Default = function(s, ev)
|
||||||
p ("Тебе нет дела до ", s:noun 'рд', ".")
|
p ("Тебе нет дела до ", s:noun 'рд', ".")
|
||||||
end;
|
end;
|
||||||
}:attr 'scenery'
|
}:attr 'scenery'
|
||||||
|
|
||||||
|
|
15
main3.lua
15
main3.lua
|
@ -3,6 +3,7 @@
|
||||||
--$Author:Александр Яковлев$
|
--$Author:Александр Яковлев$
|
||||||
|
|
||||||
require "fmt"
|
require "fmt"
|
||||||
|
require 'dbg'
|
||||||
if instead.tiny then
|
if instead.tiny then
|
||||||
function iface:tab()
|
function iface:tab()
|
||||||
return ' '
|
return ' '
|
||||||
|
@ -23,12 +24,13 @@ function set_pic(f)
|
||||||
if instead.tiny then
|
if instead.tiny then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if theme.get('scr.gfx.bg') ~= f then
|
--if theme.get('scr.gfx.bg') ~= f then
|
||||||
theme.gfx.bg('bgr/'..f)
|
theme.gfx.bg('bgr/'..f)
|
||||||
end
|
--end
|
||||||
end
|
end
|
||||||
|
|
||||||
game.dsc = ''
|
game.dsc = ''
|
||||||
|
player.description = "Здесь нет зеркал. Но хотя бы ноги выглядят прекрасно.";
|
||||||
set_pic('wall.jpg')
|
set_pic('wall.jpg')
|
||||||
pl.plural = false
|
pl.plural = false
|
||||||
pl.pronouns = 'fem'
|
pl.pronouns = 'fem'
|
||||||
|
@ -38,6 +40,11 @@ dofile('rooms/pantry.lua')
|
||||||
|
|
||||||
dlg {
|
dlg {
|
||||||
nam = 'main';
|
nam = 'main';
|
||||||
|
-- DEBUG STARTS
|
||||||
|
enter = function()
|
||||||
|
walk('pantry')
|
||||||
|
end;
|
||||||
|
-- DEBUG ENDS
|
||||||
title = 'Выберите свои местоимения';
|
title = 'Выберите свои местоимения';
|
||||||
phr = {
|
phr = {
|
||||||
{
|
{
|
||||||
|
@ -46,7 +53,6 @@ dlg {
|
||||||
pl.plural = false;
|
pl.plural = false;
|
||||||
pl.pronouns = 'fem';
|
pl.pronouns = 'fem';
|
||||||
std.player.word = 'ты/жр,2л'
|
std.player.word = 'ты/жр,2л'
|
||||||
mp.msg.SCENE = "{#Me} {#word/находишься,#me,нст} {#if_has/#here,supporter,на,в} {#here/пр,2}.";
|
|
||||||
walk('pantry')
|
walk('pantry')
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
@ -56,7 +62,6 @@ dlg {
|
||||||
pl.plural = false;
|
pl.plural = false;
|
||||||
pl.pronouns = 'masc';
|
pl.pronouns = 'masc';
|
||||||
std.player.word = 'ты/мр,2л'
|
std.player.word = 'ты/мр,2л'
|
||||||
mp.msg.SCENE = "{#Me} {#word/находишься,#me,нст} {#if_has/#here,supporter,на,в} {#here/пр,2}.";
|
|
||||||
walk('pantry')
|
walk('pantry')
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
@ -66,7 +71,6 @@ dlg {
|
||||||
pl.plural = false
|
pl.plural = false
|
||||||
pl.pronouns = 'other'
|
pl.pronouns = 'other'
|
||||||
std.player.word = 'вы/cр,2л'
|
std.player.word = 'вы/cр,2л'
|
||||||
mp.msg.SCENE = "{#Me} {#word/находитесь,#me,нст} {#if_has/#here,supporter,на,в} {#here/пр,2}.";
|
|
||||||
walk('pantry')
|
walk('pantry')
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
@ -76,7 +80,6 @@ dlg {
|
||||||
pl.plural = true;
|
pl.plural = true;
|
||||||
pl.pronouns = 'other';
|
pl.pronouns = 'other';
|
||||||
std.player.word = 'вы/cр,мн,2л'
|
std.player.word = 'вы/cр,мн,2л'
|
||||||
mp.msg.SCENE = "{#Me} {#word/находитесь,#me,нст} {#if_has/#here,supporter,на,в} {#here/пр,2}.";
|
|
||||||
walk('pantry')
|
walk('pantry')
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,8 +1,15 @@
|
||||||
room {
|
room {
|
||||||
nam = 'pantry';
|
nam = 'pantry';
|
||||||
enter = function(self, from)
|
dsc = function()
|
||||||
if from^'main' then
|
if visits() < 2 then
|
||||||
pn "Привет"
|
-- if not visited() then
|
||||||
|
pn "{#You} {#g/летишь,летите} из Йоханнесбурга (Земля) в Петербург (планета Проксима Центавра b). Всего четыре часа полёта в эконом-классе. Как раз, чтобы дочитать увлекательную книгу о приключениях капитана Киркунова.^";
|
||||||
|
p "Но, не {#g/успела,успел,успело,успели} {#you} закончить и первой главы, как откуда-то спереди донёсся душераздирающий крик. {#You} {#g/увидела,увидел,увидело,увидели}, как впереди по проходу медленно шагает на чёрных щупальцах какая-то иссине-чёрная ";
|
||||||
|
p(fmt.b("инопланетная"));
|
||||||
|
p "клякса.";
|
||||||
|
pn "{#You} {#g/бросилась,бросился,бросилось,бросились} бежать к корме судна и {#word/нырнула,нырнул,нырнуло,нырнули} в первую же комнату, чтобы найти хотя бы кого-то из экипажа.^";
|
||||||
|
p "^^Вдруг дверь за {#you/твор} закрылась и выставила защитные щиты.";
|
||||||
|
pn "{#You} {#plural/заперт,заперты}.^^";
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue