1
0
Fork 0
mirror of https://gitlab.com/Oreolek/duel.git synced 2024-05-04 01:59:44 +03:00

Фикс домофона и дуэльных условий

This commit is contained in:
Alexander Yakovlev 2017-04-07 22:40:35 +07:00
parent 91cda2e8c9
commit c5aff74d7b
5 changed files with 51 additions and 89 deletions

View file

@ -21,12 +21,10 @@ room {
return 'первый робот' return 'первый робот'
end, end,
act = function(s) act = function(s)
if not isduel then return [[
return [[Низкий хромированный фермер, древняя четырёхногая модель. Низкий хромированный фермер, древняя четырёхногая модель.
Он медленно неуклюже передвигал передние ноги, когда переходил к следующей грядке.]] Он медленно неуклюже передвигал передние ноги, когда переходил к следующей грядке.
else ]]
return s.talk()
end
end, end,
talk = function() talk = function()
walk('robofarmer-dlg') walk('robofarmer-dlg')
@ -42,15 +40,11 @@ room {
return 'второй робот' return 'второй робот'
end, end,
act = function(s) act = function(s)
if not isduel then return [[
return [[ Он был похож по строению на робота-дворецкого, но у него не хватало верхней части лица,
Он был похож по строению на робота-дворецкого, но у него не хватало верхней части лица, а вместо левой ноги стоял импровизированный протез из строительного нанопластика.
а вместо левой ноги стоял импровизированный протез из строительного нанопластика. Его глаза были очень маленькими для широкого лица; скорее всего, их вставили из какой-нибудь детской куклы.
Его глаза были очень маленькими для широкого лица; скорее всего, их вставили из какой-нибудь детской куклы. ]]
]]
else
return s.talk()
end
end, end,
talk = function() talk = function()
walk('robobutler-dlg') walk('robobutler-dlg')
@ -203,7 +197,7 @@ dlg {
function() function()
return "У "..plural('меня', 'нас')..' есть механизм для него.' return "У "..plural('меня', 'нас')..' есть механизм для него.'
end, end,
function() function()
return [[-- У ]]..plural('меня', 'нас')..[[ есть механизм для него.^ return [[-- У ]]..plural('меня', 'нас')..[[ есть механизм для него.^
-- Предъявите механизм для того, чтобы я произвёл оценку полезности. -- Предъявите механизм для того, чтобы я произвёл оценку полезности.
]] ]]

View file

@ -35,11 +35,7 @@ room {
end end
end, end,
act = function(s) act = function(s)
if not isduel then return 'Старушка мирно посапывала, раскачиваясь в гамаке.'
return 'Старушка мирно посапывала, раскачиваясь в гамаке.'
else
return s.talk()
end
end, end,
talk = function() return walk('cho_dlg'); end, talk = function() return walk('cho_dlg'); end,
} }
@ -189,7 +185,7 @@ dlg {
-- Ну, ремонт идёт за счёт пожизненной гарантии. Но есть одна просьба… хотя нет, забудьте.^^ -- Ну, ремонт идёт за счёт пожизненной гарантии. Но есть одна просьба… хотя нет, забудьте.^^
Она пожала плечами:^^ Она пожала плечами:^^
-- Как скажете. -- Как скажете.
]], ]],
next = '#разговор' next = '#разговор'
@ -432,7 +428,7 @@ dlg {
И тут начались выстрелы. И тут начались выстрелы.
После войны вы моментально реагировали на громкий хлопок и металлический «бзынь» в сантиметре от руки. После войны вы моментально реагировали на громкий хлопок и металлический «бзынь» в сантиметре от руки.
Вы спрятались в кабине, но вам не было видно, что происходит на входе в сарай.^^ Вы спрятались в кабине, но вам не было видно, что происходит на входе в сарай.^^
-- Я говорила вам не чинить этот комбайн!^^ -- Я говорила вам не чинить этот комбайн!^^
Хотя вам и не надо было смотреть, только лишь считать выстрелы. Хотя вам и не надо было смотреть, только лишь считать выстрелы.

View file

@ -20,13 +20,12 @@ room {
nam = 'call'; nam = 'call';
disp = 'домофон'; disp = 'домофон';
act = function(s) act = function(s)
if not isduel then return 'Домофон был включён, хозяин — дома. Достаточно было только поговорить с ним.'
return 'Домофон был включён, хозяин — дома. Достаточно было только поговорить с ним.'
else
return s.talk()
end
end; end;
talk = function() talk = function()
if _('pavels-call').obj:empty() then
return 'Вам нечего сказать.'
end
return walk('pavels-call') return walk('pavels-call')
end; end;
take = function() take = function()
@ -47,7 +46,7 @@ room {
return false return false
end, end,
act = function() act = function()
char.saw_suit = true char.saw_suit = true
local out = [[ local out = [[
Боевой механизированный костюм высотой 2,7 метров, марка РГ-22. Боевой механизированный костюм высотой 2,7 метров, марка РГ-22.
Рассчитан на одного пилота. Рассчитан на одного пилота.
@ -81,13 +80,7 @@ dlg {
nam = 'pavels-call', nam = 'pavels-call',
disp = 'Разговор с домофоном', disp = 'Разговор с домофоном',
decor = [[Камера домофона смотрела на вас бесстрастным блеском.]], decor = [[Камера домофона смотрела на вас бесстрастным блеском.]],
enter = function(self) enter = [[-- Кто там? — спросил неприветливый мужской низкий голос.]],
if empty(self) then
return 'Вам нечего сказать.'
else
return [[-- Кто там? — спросил неприветливый мужской низкий голос.]]
end
end,
obj = { obj = {
{ {
{ {
@ -100,7 +93,7 @@ dlg {
Домофон отключился. Видимо, нет. Домофон отключился. Видимо, нет.
]] ]]
end end
}; };
{ {
'#yours', '#yours',
@ -475,7 +468,7 @@ dlg {
{ {
'#detail', '#detail',
{ {
cond = function() cond = function()
return (char.saw_suit == true) return (char.saw_suit == true)
end, end,
[[ [[
@ -508,7 +501,7 @@ dlg {
{ {
'#general', '#general',
{ {
cond = function() cond = function()
return (char.saw_suit == true and char.asked_suit ~= true) return (char.saw_suit == true and char.asked_suit ~= true)
end, end,
'У вас во дворе стоит РГ-22 с тремя независимыми программаторами этого типа. Вы на нём за хлебом ходите?', 'У вас во дворе стоит РГ-22 с тремя независимыми программаторами этого типа. Вы на нём за хлебом ходите?',

View file

@ -4,27 +4,8 @@
require "fmt" require "fmt"
require "noinv" require "noinv"
declare "isdebug" (false) declare "isdebug" (false)
declare "isduel" (false)
if not isduel then require "proxymenu"
require "proxymenu"
else
std.menu_player = std.class ({
__menu_player_type = true;
new = function(self, v)
if type(v) ~= 'table' then
std.err ("Wrong argument to std.menu_player: "..std.tostr(v), 2)
end
if not v.room then
v.room = 'main'
end
v.invent = std.list {}
return std.player(v)
end;
inventory = function(s)
return s.invent
end;
}, std.player)
end
if isdebug then if isdebug then
require "dbg" require "dbg"
@ -76,7 +57,7 @@ room {
decor = [[ decor = [[
Вы стояли на окраине Жестианы. Вы стояли на окраине Жестианы.
Прямая автодорога шла на север. Прямая автодорога шла на север.
Здесь от неё на запад отходил небольшой заезд из булыжника. Здесь от неё на запад отходил небольшой заезд из булыжника.
]] ]]
} }

View file

@ -59,55 +59,53 @@ init = function ()
end end
}, me()) }, me())
char.act = nil char.act = nil
if not isduel then place( proxy_menu {
place( proxy_menu { disp = function()
disp = function() if stead.table.maxn(here().obj) > 0 then
if stead.table.maxn(here().obj) > 0 then return 'ОСМОТРЕТЬ';
return 'ОСМОТРЕТЬ'; end
end return false
return false end;
end; acts = { inv = 'act' };
acts = { inv = 'act' }; sources = { scene = true, inv = false }; -- осмотр инвентаря вынесен отдельно
sources = { scene = true, inv = false }; -- осмотр инвентаря вынесен отдельно }, me())
}, me())
--[[ --[[
place( proxy_menu { place( proxy_menu {
disp = 'ВЗЯТЬ'; disp = 'ВЗЯТЬ';
acts = { inv = 'take' }; acts = { inv = 'take' };
sources = { scene = true, inv = false }; sources = { scene = true, inv = false };
}, me()) }, me())
place( proxy_menu { place( proxy_menu {
disp = 'ВЫБРОСИТЬ'; disp = 'ВЫБРОСИТЬ';
acts = { inv = 'drop' }; acts = { inv = 'drop' };
sources = { scene = false, inv = true }; sources = { scene = false, inv = true };
}, me()) }, me())
place( proxy_menu { place( proxy_menu {
disp = 'ОТКРЫТЬ'; disp = 'ОТКРЫТЬ';
acts = { inv = 'open' }; acts = { inv = 'open' };
sources = { scene = false, inv = true }; sources = { scene = false, inv = true };
}, me()) }, me())
place( proxy_menu { place( proxy_menu {
disp = 'ЗАКРЫТЬ'; disp = 'ЗАКРЫТЬ';
acts = { inv = 'close' }; acts = { inv = 'close' };
sources = { scene = false, inv = true }; sources = { scene = false, inv = true };
}, me()) }, me())
]] ]]
place( proxy_menu { place( proxy_menu {
disp = function() disp = function()
if stead.table.maxn( here().obj ) > 0 then if stead.table.maxn( here().obj ) > 0 then
return 'ГОВОРИТЬ С'; return 'ГОВОРИТЬ С';
end end
return false return false
end; end;
acts = { inv = 'talk' }; acts = { inv = 'talk' };
sources = { scene = true, inv = false }; sources = { scene = true, inv = false };
}, me()) }, me())
end
end end
game.after_take = function(s, w) game.after_take = function(s, w)
take(w) take(w)
end end
game.after_drop = function(s, w) game.after_drop = function(s, w)
drop(w) drop(w)
end end
@ -218,7 +216,7 @@ changeop = function(name, delta)
rawset(char, name, fairadd(rawget(char, name), delta)) rawset(char, name, fairadd(rawget(char, name), delta))
end end
fairadd = function(value, add) fairadd = function(value, add)
return math.floor(value + (100-value)*(add/100)) return math.floor(value + (100-value)*(add/100))
end end
listinv = function() listinv = function()
local out = '' local out = ''