mirror of https://github.com/goraph/17rooms.git
1874 lines
76 KiB
Lua
1874 lines
76 KiB
Lua
room {
|
||
nam = "room16_mystical";
|
||
title = "Таинственная комната";
|
||
firsttime = 1;
|
||
state = 0;
|
||
dsc = function(s)
|
||
if s.state == 0 then
|
||
if s.firsttime == 1 then
|
||
p ("Комната выглядит таинственно: в углу стоит большой шкаф, в другом углу стоит пюпитр, в третьем углу находится небольшой постамент, а четвёртый угол вообще пустой! Из щели под потолком сочится тусклый свет, придающий комнате ещё больше таинственности.");
|
||
s.firsttime = 0;
|
||
else
|
||
p ("По углам стоят большой шкаф, пюпитр и постамент, а под потолком узкая щель, таинственный свет плавно ниспадает на паркет, постеленный на полу.");
|
||
end;
|
||
mp:content(_'room16_parquet')
|
||
if(_'room16_wardrobe':has "open") then mp:content(_'room16_wardrobe') end;
|
||
else
|
||
p ("Распахнутый шкаф стоит у стены напротив пюпитра. У ещё одной стены нервно прячется постамент, а у четвёртой стены стоишь ты.");
|
||
if(_'room16_wall'.state == 2) then p('В стене виднеется небольшая дыра.'); end;
|
||
if(_'room16_wall'.state == 3) then p('В стене просто огромная дыра!'); end;
|
||
mp:content(_'room16_parquet')
|
||
end;
|
||
end;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
if s.firsttime == 1 then
|
||
p ("Комната выглядит таинственно: в углу стоит большой шкаф, в другом углу стоит пюпитр, в третьем углу находится небольшой постамент, а четвёртый угол вообще пустой! Из щели под потолком сочится тусклый свет, придающий комнате ещё больше таинственности.");
|
||
s.firsttime = 0;
|
||
else
|
||
p ("По углам стоят большой шкаф, пюпитр и постамент, а под потолком узкая щель, таинственный свет плавно ниспадает на паркет, постеленный на полу.");
|
||
end;
|
||
mp:content(_'room16_parquet')
|
||
if(_'room16_wardrobe':has "open") then mp:content(_'room16_wardrobe') end;
|
||
else
|
||
p ("Распахнутый шкаф стоит у стены напротив пюпитра, на котором сидит тётушка Агата и точит когти. У ещё одной стены нервно прячется постамент, а у четвёртой стены стоишь ты.");
|
||
if(_'room16_wall'.state == 2) then p('В стене виднеется небольшая дыра.'); end;
|
||
if(_'room16_wall'.state == 3) then p('В стене просто огромная дыра!'); end;
|
||
end;
|
||
end;
|
||
e_to = 'room14_secondfloor';
|
||
before_Listen = function()
|
||
if(_'room16_wardrobe'.state >= 4) then
|
||
p "Тишина."
|
||
else
|
||
p "Что-то подозрительно поскрипывает в шкафу.";
|
||
end;
|
||
end;
|
||
before_Smell = function()
|
||
if(_'room16_wardrobe'.state >= 4) then
|
||
p "Пахнет вечностью."
|
||
else
|
||
p "Из шкафа идёт еле уловимый запах чего-то необычайного.";
|
||
end;
|
||
end;
|
||
before_Walk = function(s, w)
|
||
if (w^'@e_to' and s.state == 0) then
|
||
if(_'room16_wardrobe'.state == 1) then _'room16_wardrobe'.state = 0 end;
|
||
_'room16_wardrobe':attr '~open'
|
||
remove(_'room16_o',pl)
|
||
remove(_'room16_x',pl)
|
||
DaemonStop 'room16_AI'
|
||
return false;
|
||
elseif (s.state == 1 and (w^'@e_to' or w^'@out_to')) then
|
||
if (_'room16_wardrobe'.state >= 4) then
|
||
return false
|
||
end;
|
||
if w^'@out_to' and (_'room16_wall'.state == 3) then
|
||
_'room16_AI'.daemon_stage = 9
|
||
else
|
||
p('Выхода нет!')
|
||
end;
|
||
return true;
|
||
end;
|
||
return false;
|
||
end;
|
||
before_Exit = function(s)
|
||
if (s.state == 0) or (_'room16_wardrobe'.state >= 4) then
|
||
return false;
|
||
else
|
||
mp:xaction('Walk','@out_to')
|
||
end;
|
||
end;
|
||
after_Drop = function(s, w)
|
||
if(_'room16_wardrobe'.state < 4) then
|
||
move(w, 'room16_parquet')
|
||
else
|
||
move(w, 'room16_wardrobe')
|
||
end;
|
||
return false
|
||
end;
|
||
["before_PutOn,Insert"] = function(s, w, i)
|
||
if i == _'room16_witch' then
|
||
-- "положить в/на тетю что-то" вызывает "резать тетю чем-то"
|
||
mp:xaction('Cut', i, w)
|
||
else
|
||
return false
|
||
end
|
||
end;
|
||
obj = { 'room16_wardrobe','room16_parquet','room16_bookstand','room16_pedestal','room16_slit','room16_walls' };
|
||
-- obj = { 'statuetka','book','dagger','room16_wardrobe','room16_parquet','room16_bookstand','room16_pedestal','room16_slit' };
|
||
--obj = { 'room16_wardrobe','room16_parquet','room16_bookstand','room16_pedestal','room16_slit' };
|
||
}
|
||
|
||
obj {
|
||
-"статуэтка, стержень";
|
||
nam = "statuetka";
|
||
description = "Статуэтка в виде цилиндрического стержня, вокруг которого обвивается змея.";
|
||
score=false;
|
||
after_Take = function(s)
|
||
if not s.score then
|
||
mp.score=mp.score+1;
|
||
end;
|
||
_'statuetka'.score=true;
|
||
return false;
|
||
end;
|
||
}
|
||
obj {
|
||
-"таинственный кинжал, кинжал, рукоять";
|
||
nam = "dagger";
|
||
description = "Таинственный кинжал, на рукояти которого изображены глаза и язык змеи.";
|
||
}
|
||
obj {
|
||
-"толстая книга,книга, обложка";
|
||
nam = "book";
|
||
state = 0;
|
||
description = function(s)
|
||
if (_'room16_bookstand'.state == 0) then
|
||
p ("Толстая старая книга. Страницы как будто бы склеены: её невозможно открыть.")
|
||
end;
|
||
if (_'room16_bookstand'.state == 1) then
|
||
if(_'room16_bookstand'.stateA == 0) then
|
||
p ("Книга лежит на пюпитре. На её обложке изображена змея, обвивающая кинжал.")
|
||
end;
|
||
if(_'room16_bookstand'.stateA == 1) then
|
||
p ("Книга лежит на пюпитре. Она открыта. На развороте нарисован шкаф: одна половина на левой странице, одна половина на правой.")
|
||
s.state = 1;
|
||
end;
|
||
if(_'room16_bookstand'.stateA == 2) then
|
||
p ("Книга лежит на пюпитре. Она разрезана пополам между створок нарисованного шкафа.")
|
||
end;
|
||
end;
|
||
end;
|
||
before_Cut = function(s, w)
|
||
if w == _'dagger' then
|
||
if(_'room16_bookstand'.stateA == 1) then
|
||
if(_'book'.state == 1) then
|
||
p ("Ты вставляешь кинжал между створок нарисованного шкафа и режешь книгу пополам. Со стороны шкафа слышится треск.")
|
||
_'room16_bookstand'.stateA = 2;
|
||
mp.score=mp.score+1;
|
||
else
|
||
p ("Надо бы внимательно осмотреть книгу прежде, чем её испортить.")
|
||
end;
|
||
else
|
||
if(_'room16_bookstand'.stateA == 2) then
|
||
p ("Книга уже разрезана.")
|
||
else
|
||
p("Обложка книги слишком толстая: кинжал даже не может её поцарапать. Расковырять склеенные страницы книги тоже не удаётся.")
|
||
end;
|
||
end;
|
||
else
|
||
if w then
|
||
p ("Книга прочная, как дерево!")
|
||
else
|
||
p ("Не совсем понятно, чем.")
|
||
end;
|
||
end;
|
||
end;
|
||
score=false;
|
||
after_Take = function(s)
|
||
if not s.score then
|
||
mp.score=mp.score+1;
|
||
end;
|
||
_'book'.score=true;
|
||
return false;
|
||
end;
|
||
}
|
||
|
||
obj {
|
||
-"крестик, крест";
|
||
nam = "room16_x";
|
||
title = "Крестик";
|
||
before_Exam = function(s)
|
||
if(_'room16_a1'.state == 1 or _'room16_a2'.state == 1 or _'room16_a3'.state == 1 or _'room16_b1'.state == 1 or _'room16_b2'.state == 1 or _'room16_b3'.state == 1 or _'room16_c1'.state == 1 or _'room16_c2'.state == 1 or _'room16_c3'.state == 1) then
|
||
p 'Крестик как крестик.'
|
||
else
|
||
p 'Здесь нет крестиков.'
|
||
end;
|
||
end;
|
||
before_Insert = function(s, w)
|
||
if (w == _'room16_a1' or w == _'room16_a2' or w == _'room16_a3' or w == _'room16_b1' or w == _'room16_b2' or w == _'room16_b3' or w == _'room16_c1' or w == _'room16_c2' or w == _'room16_c3') then
|
||
if(_'room16_wardrobe'.state >= 4) then
|
||
if(_'room16_wardrobe'.turn == 0) then
|
||
return false;
|
||
else
|
||
p 'Сейчас не твой ход!'
|
||
end;
|
||
else
|
||
p('Ты играешь ноликами!')
|
||
end;
|
||
else
|
||
p("Что??")
|
||
end;
|
||
end;
|
||
before_Drop = function()
|
||
p ('Надо бросать пить, а не крестики бросать.')
|
||
end;
|
||
["before_Take,Remove,Enter"] = function()
|
||
p ('Что-что?')
|
||
end;
|
||
before_Cut = function(s, w)
|
||
mp:xaction('PutOn', s, w)
|
||
end;
|
||
before_PutOn = function(s, w)
|
||
if (w == _'room16_a1' or w == _'room16_a2' or w == _'room16_a3' or w == _'room16_b1' or w == _'room16_b2' or w == _'room16_b3' or w == _'room16_c1' or w == _'room16_c2' or w == _'room16_c3') then
|
||
if(_'room16_wardrobe'.state >= 4) then
|
||
if(_'room16_wardrobe'.turn == 0) then
|
||
return false;
|
||
else
|
||
p 'Сейчас не твой ход!'
|
||
end;
|
||
else
|
||
p('Ты играешь ноликами!')
|
||
end;
|
||
else
|
||
p("Что??")
|
||
end;
|
||
end;
|
||
}:attr 'concealed'
|
||
|
||
obj {
|
||
-"нолик, ноль";
|
||
nam = "room16_o";
|
||
title = "Нолик";
|
||
before_Exam = function(s)
|
||
if(_'room16_a1'.state == 2 or _'room16_a2'.state == 2 or _'room16_a3'.state == 2 or _'room16_b1'.state == 2 or _'room16_b2'.state == 2 or _'room16_b3'.state == 2 or _'room16_c1'.state == 2 or _'room16_c2'.state == 2 or _'room16_c3'.state == 2) then
|
||
p 'Нолик как нолик.'
|
||
else
|
||
p 'Здесь нет ноликов.'
|
||
end;
|
||
end;
|
||
before_Insert = function(s, w)
|
||
if (w == _'room16_a1' or w == _'room16_a2' or w == _'room16_a3' or w == _'room16_b1' or w == _'room16_b2' or w == _'room16_b3' or w == _'room16_c1' or w == _'room16_c2' or w == _'room16_c3') then
|
||
if(_'room16_wardrobe'.state < 4) then
|
||
return false;
|
||
else
|
||
p('Теперь ты играешь крестиками!')
|
||
end;
|
||
else
|
||
p("Что??")
|
||
end;
|
||
end;
|
||
before_Drop = function()
|
||
p ('Надо бросать пить, а не нолики бросать.')
|
||
end;
|
||
["before_Take,Remove,Enter"] = function()
|
||
p ('Что-что?')
|
||
end;
|
||
before_Cut = function(s, w)
|
||
mp:xaction('PutOn', s, w)
|
||
end;
|
||
before_PutOn = function(s, w)
|
||
if (w == _'room16_a1' or w == _'room16_a2' or w == _'room16_a3' or w == _'room16_b1' or w == _'room16_b2' or w == _'room16_b3' or w == _'room16_c1' or w == _'room16_c2' or w == _'room16_c3') then
|
||
if(_'room16_wardrobe'.state < 4) then
|
||
return false;
|
||
else
|
||
p('Теперь ты играешь крестиками!')
|
||
end;
|
||
else
|
||
p("Что??")
|
||
end;
|
||
end;
|
||
}:attr 'concealed'
|
||
|
||
obj {
|
||
-"паркет, пол";
|
||
nam = "room16_parquet";
|
||
title = "Паркет";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Паркет на полу выглядит мрачно и таинственно. Одна занятная деталь: на фоне остальной старой мебели он выглядит новым и даже глянцеватым.")
|
||
mp:content(s)
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
--"шкаф, дверцы";
|
||
nam = "room16_wardrobe";
|
||
word = function(s)
|
||
if(s.state == 1 or s.state == 3) then
|
||
return -"шкаф, дверцы, строки, столбцы, таблиц*"
|
||
else
|
||
return -"шкаф, дверцы"
|
||
end;
|
||
end;
|
||
title = "Шкаф";
|
||
state = 0;
|
||
turn = 0;
|
||
firsttime = 0;
|
||
firsto = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
if(_'room16_bookstand'.stateA == 2) then
|
||
p ("Большой и старый шкаф. Его дверцы неплотно закрыты.")
|
||
else
|
||
p ("Большой и старый шкаф. Его дверцы плотно закрыты.")
|
||
end;
|
||
end;
|
||
if s.state == 1 then
|
||
_'room16_AI':describe()
|
||
end;
|
||
if s.state == 2 then
|
||
p ("Большой и старый шкаф. Его дверцы неплотно закрыты.")
|
||
end;
|
||
if s.state == 3 then
|
||
p ("Большой и старый шкаф, в котором пряталась тётушка Агата. Его дверцы распахнуты.")
|
||
end;
|
||
if s.state >= 4 then
|
||
p 'Откуда-то в шкаф проникает свет. На стенке шкафа расчерчена таблица 3 на 3.'
|
||
_'room16_AI':describe()
|
||
end;
|
||
end;
|
||
before_Open = function(s)
|
||
if(_'room16_mystical'.state == 0) then
|
||
if(s.state == 1) then
|
||
p('Шкаф уже открыт.')
|
||
_'room16_AI':describe()
|
||
else
|
||
if(s.state == 2) then
|
||
walk 'room16_cutscene'
|
||
else
|
||
if(_'room16_bookstand'.stateA == 2) then
|
||
put(_'room16_o',pl)
|
||
put(_'room16_x',pl)
|
||
s.state = 1
|
||
s.turn = 0
|
||
s:attr 'open'
|
||
if(s.firsttime == 0) then
|
||
if(_'room16_AI'.game == 0) then
|
||
p ('Ты открываешь дверцы шкафа и видишь, что он пуст. На задней стенке шкафа расчерчена таинственная таблица 3 на 3, её строки подписаны буквами "А", "Б" и "В", а столбцы пронумерованы "1", "2" и "3". На центральном поле стоит крестик: кто-то выцарапал его прямо на стенке шкафа. "Похоже на игру," -- думаешь ты -- "Можно куда-нибудь поставить нолик."')
|
||
else
|
||
p ('Ты открываешь дверцы шкафа и видишь, что он пуст. Тем не менее, тебе кажется, что в нём кто-то есть, просто почему-то его (или её) пока не видно. Таинственно всё это. Кстати, на стенке шкафа всё ещё расчерчена таблица, и снова в ней только один крестик на поле Б2.')
|
||
end;
|
||
s.firsttime = 1
|
||
_'room16_b2'.state = 1
|
||
else
|
||
p ("Ты открываешь дверцы шкафа.")
|
||
_'room16_AI':describe()
|
||
end;
|
||
else
|
||
p ("На дверцах шкафа нет ручек, поэтому ты пытаешься просунуть пальцы в щель между дверок, но ничего не получается: дверцы наглухо закрыты.");
|
||
end;
|
||
end;
|
||
end;
|
||
else
|
||
if(s.state == 3) then
|
||
p('Шкаф уже открыт.')
|
||
_'room16_AI':describe()
|
||
else
|
||
p('Ты пытаешься открыть дверцы шкафа, но они как будто куда-то пропали! Похоже, ты в ловушке.')
|
||
end;
|
||
end;
|
||
end;
|
||
before_Close = function(s)
|
||
if(s.state ~= 3) then
|
||
if(_'room16_wardrobe'.turn == 1) then _'room16_AI':calculate() end;
|
||
s.state = 0
|
||
return false
|
||
else
|
||
p('Не стоит тратить на это время!')
|
||
end;
|
||
end;
|
||
after_Enter = function(s)
|
||
p('Как только ты прячешься в шкаф, его двери сами собой захлопываются.')
|
||
_'room16_AI'.daemon_stage = 10;
|
||
_'room16_wardrobe':attr '~open'
|
||
_'room16_wardrobe':attr '~openable'
|
||
_'room16_wardrobe':attr 'light'
|
||
_'room16_wardrobe'.state = 4
|
||
_'room16_AI'.state = 0
|
||
_'room16_AI'.win = 0
|
||
_'room16_wardrobe'.turn = 0
|
||
_'room16_a1'.state = 0
|
||
_'room16_a2'.state = 0
|
||
_'room16_a3'.state = 0
|
||
_'room16_b1'.state = 0
|
||
_'room16_b2'.state = 0
|
||
_'room16_b3'.state = 0
|
||
_'room16_c1'.state = 0
|
||
_'room16_c2'.state = 0
|
||
_'room16_c3'.state = 0
|
||
move(_'room16_a1',_'room16_wardrobe')
|
||
move(_'room16_a2',_'room16_wardrobe')
|
||
move(_'room16_a3',_'room16_wardrobe')
|
||
move(_'room16_b1',_'room16_wardrobe')
|
||
move(_'room16_b2',_'room16_wardrobe')
|
||
move(_'room16_b3',_'room16_wardrobe')
|
||
move(_'room16_c1',_'room16_wardrobe')
|
||
move(_'room16_c2',_'room16_wardrobe')
|
||
move(_'room16_c3',_'room16_wardrobe')
|
||
move(_'room16_x',pl)
|
||
move(_'room16_o',pl)
|
||
move(pl,'room16_wardrobe')
|
||
end;
|
||
inside_dsc = function(s)
|
||
p 'Ты в шкафу.'
|
||
_'room16_AI':describe()
|
||
end;
|
||
before_Exit = function(s)
|
||
p('Ты пытаешься открыть дверцы шкафа, но они как будто куда-то пропали! Похоже, ты в ловушке.')
|
||
end;
|
||
obj = { 'room16_a1','room16_a2','room16_a3','room16_b1','room16_b2','room16_b3','room16_c1','room16_c2','room16_c3' };
|
||
}:attr 'scenery, static, closed, openable, container'
|
||
|
||
obj {
|
||
-"постамент";
|
||
nam = "room16_pedestal";
|
||
title = "Постамент";
|
||
state = 0;
|
||
stateA = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Это загадочный постамент. Он выглядит совершенно бесполезным, но придаёт комнате таинственности.")
|
||
mp:content(s)
|
||
end;
|
||
if s.state == 1 then
|
||
if s.stateA == 0 then
|
||
p ("Ты замечаешь, что на постаменте появился паз цилиндрической формы, в глубине которого нарисована змея, обвивающая кинжал.")
|
||
s.stateA = 1
|
||
else
|
||
p ("Это загадочный постамент. В нём виден паз цилиндрической формы, в глубине которого нарисована змея, обвивающая кинжал.")
|
||
end;
|
||
mp:content(s)
|
||
end;
|
||
if s.state == 2 then
|
||
p ("Это загадочный постамент. В пазу намертво сидит статуэтка в виде змеи, обвивающей кинжал.")
|
||
mp:content(s)
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if s.state == 1 then
|
||
if w == _'statuetka' then
|
||
p ("Ты ставишь статуэтку в паз на постаменте, и она намертво входит внутрь. Слышится загадочный треск со стороны пюпитра.")
|
||
move(w, s)
|
||
s.state = 2
|
||
_'room16_bookstand'.stateA = 1
|
||
_'statuetka':attr 'scenery'
|
||
mp.score=mp.score+1;
|
||
else
|
||
p ("Ты кладешь ", w:noun'вн', " на постамент, но таинственная сила отталкивает ", w:noun'вн', " обратно.")
|
||
end;
|
||
else
|
||
p ("Таинственная сила отталкивает ", w:noun'вн', " обратно.")
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"пюпитр";
|
||
nam = "room16_bookstand";
|
||
title = "Пюпитр";
|
||
state = 0;
|
||
stateA = 0;
|
||
description = function(s)
|
||
if(_'room16_mystical'.state == 0) then
|
||
if s.state == 0 then
|
||
p ("Это пюпитр, он выглядит загадочно.")
|
||
mp:content(s)
|
||
end;
|
||
if s.state == 1 then
|
||
if s.stateA == 0 then
|
||
p ("Это пюпитр, нём лежит книга. На обложке книги изображена змея, обвивающая кинжал.")
|
||
end;
|
||
if s.stateA == 1 then
|
||
p ("Это пюпитр, на нём лежит книга. Ты замечаешь, что она сама собой открылась.")
|
||
end;
|
||
if s.stateA == 2 then
|
||
p ("Это пюпитр, на нём лежит разрезанная пополам книга.")
|
||
end;
|
||
mp:content(s)
|
||
end;
|
||
else
|
||
p('На пюпитре лежит книга, а ещё там сидит тётушка Агата и точит когти.')
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if(_'room16_mystical'.state == 0) then
|
||
if s.state == 0 then
|
||
if w == _'book' then
|
||
p ("Когда книга оказывается близко к поверхности пюпитра, неведомая сила вырывает её из твоих рук и присасывает к пюпитру. Кажется, книгу больше не получится взять. Пока ты обо всём этом думаешь, на обложке книги вырисовывается символ змеи, обвивающей кинжал. А ещё слышится какой-то скрип со стороны постамента.")
|
||
move(w, s)
|
||
s.state = 1
|
||
_'room16_pedestal'.state = 1
|
||
_'book':attr 'scenery'
|
||
mp.score=mp.score+1;
|
||
else
|
||
p ("Ты кладешь ", w:noun'вн', " на пюпитр, но таинственная сила отталкивает ", w:noun'вн', " обратно.")
|
||
end;
|
||
else
|
||
p ("На пюпитре уже лежит книга.")
|
||
end;
|
||
else
|
||
p('Не стоит приближаться к нему, пока там сидит тётушка!')
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"щель";
|
||
nam = "room16_slit";
|
||
title = "Щель";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Узкая щель под потолком, сквозь которую проникает тусклый таинственный свет.")
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static'
|
||
|
||
obj {
|
||
-"поле А1, А1, поле а1, а1";
|
||
nam = "room16_a1";
|
||
title = "Поле А1";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
if(_'room16_wardrobe'.state >= 4) then
|
||
p ("Поле А1 не заполнено. Сюда можно поставить крестик.")
|
||
else
|
||
p ("Поле А1 не заполнено. Сюда можно поставить нолик.")
|
||
end;
|
||
end;
|
||
if s.state == 1 then
|
||
p ("На поле А1 стоит крестик.")
|
||
end;
|
||
if s.state == 2 then
|
||
p ("На поле А1 стоит нолик.")
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if (w == _'room16_o') then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь нолик на поле А1.')
|
||
s.state = 2
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
_'room16_AI':continue()
|
||
else
|
||
p ('Чтобы поставить нолик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
p ('Ты уже поставила один нолик в этом ходу. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
if (w == _'room16_x' and _'room16_wardrobe'.state >= 4) then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь крестик на поле А1.')
|
||
s.state = 1
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
else
|
||
p ('Чтобы поставить крестик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
end;
|
||
else
|
||
p ('Что??')
|
||
end;
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"поле А2, А2, поле а2, а2";
|
||
nam = "room16_a2";
|
||
title = "Поле А2";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Поле А2 не заполнено. Сюда можно поставить нолик.")
|
||
end;
|
||
if s.state == 1 then
|
||
p ("На поле А2 стоит крестик.")
|
||
end;
|
||
if s.state == 2 then
|
||
p ("На поле А2 стоит нолик.")
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if (w == _'room16_o') then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь нолик на поле А2.')
|
||
s.state = 2
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
_'room16_AI':continue()
|
||
else
|
||
p ('Чтобы поставить нолик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
p ('Ты уже поставила один нолик в этом ходу. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
if (w == _'room16_x' and _'room16_wardrobe'.state >= 4) then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь крестик на поле А2.')
|
||
s.state = 1
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
else
|
||
p ('Чтобы поставить крестик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
end;
|
||
else
|
||
p ('Что??')
|
||
end;
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"поле А3, А3, поле а3, а3";
|
||
nam = "room16_a3";
|
||
title = "Поле А3";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Поле А3 не заполнено. Сюда можно поставить нолик.")
|
||
end;
|
||
if s.state == 1 then
|
||
p ("На поле А3 стоит крестик.")
|
||
end;
|
||
if s.state == 2 then
|
||
p ("На поле А3 стоит нолик.")
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if (w == _'room16_o') then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь нолик на поле А3.')
|
||
s.state = 2
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
_'room16_AI':continue()
|
||
else
|
||
p ('Чтобы поставить нолик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
p ('Ты уже поставила один нолик в этом ходу. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
if (w == _'room16_x' and _'room16_wardrobe'.state >= 4) then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь крестик на поле А3.')
|
||
s.state = 1
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
else
|
||
p ('Чтобы поставить крестик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
end;
|
||
else
|
||
p ('Что??')
|
||
end;
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"поле Б1, Б1, поле б1, б1";
|
||
nam = "room16_b1";
|
||
title = "Поле Б1";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Поле Б1 не заполнено. Сюда можно поставить нолик.")
|
||
end;
|
||
if s.state == 1 then
|
||
p ("На поле Б1 стоит крестик.")
|
||
end;
|
||
if s.state == 2 then
|
||
p ("На поле Б1 стоит нолик.")
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if (w == _'room16_o') then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь нолик на поле Б1.')
|
||
s.state = 2
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
_'room16_AI':continue()
|
||
else
|
||
p ('Чтобы поставить нолик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
p ('Ты уже поставила один нолик в этом ходу. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
if (w == _'room16_x' and _'room16_wardrobe'.state >= 4) then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь крестик на поле Б1.')
|
||
s.state = 1
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
else
|
||
p ('Чтобы поставить крестик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
end;
|
||
else
|
||
p ('Что??')
|
||
end;
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"поле Б2, Б2, поле б2, б2";
|
||
nam = "room16_b2";
|
||
title = "Поле Б2";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Поле Б2 не заполнено. Сюда можно поставить нолик.")
|
||
end;
|
||
if s.state == 1 then
|
||
p ("На поле Б2 стоит крестик.")
|
||
end;
|
||
if s.state == 2 then
|
||
p ("На поле Б2 стоит нолик.")
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if (w == _'room16_o') then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь нолик на поле Б2.')
|
||
s.state = 2
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
_'room16_AI':continue()
|
||
else
|
||
p ('Чтобы поставить нолик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
p ('Ты уже поставила один нолик в этом ходу. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
if (w == _'room16_x' and _'room16_wardrobe'.state >= 4) then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь крестик на поле Б2.')
|
||
s.state = 1
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
else
|
||
p ('Чтобы поставить крестик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
end;
|
||
else
|
||
p ('Что??')
|
||
end;
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"поле Б3, Б3, поле б3, б3";
|
||
nam = "room16_b3";
|
||
title = "Поле Б3";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Поле Б3 не заполнено. Сюда можно поставить нолик.")
|
||
end;
|
||
if s.state == 1 then
|
||
p ("На поле Б3 стоит крестик.")
|
||
end;
|
||
if s.state == 2 then
|
||
p ("На поле Б3 стоит нолик.")
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if (w == _'room16_o') then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь нолик на поле Б3.')
|
||
s.state = 2
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
_'room16_AI':continue()
|
||
else
|
||
p ('Чтобы поставить нолик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
p ('Ты уже поставила один нолик в этом ходу. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
if (w == _'room16_x' and _'room16_wardrobe'.state >= 4) then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь крестик на поле Б3.')
|
||
s.state = 1
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
else
|
||
p ('Чтобы поставить крестик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
end;
|
||
else
|
||
p ('Что??')
|
||
end;
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"поле В1, В1, поле в1, в1";
|
||
nam = "room16_c1";
|
||
title = "Поле В1";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Поле В1 не заполнено. Сюда можно поставить нолик.")
|
||
end;
|
||
if s.state == 1 then
|
||
p ("На поле В1 стоит крестик.")
|
||
end;
|
||
if s.state == 2 then
|
||
p ("На поле В1 стоит нолик.")
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if (w == _'room16_o') then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь нолик на поле В1.')
|
||
s.state = 2
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
_'room16_AI':continue()
|
||
else
|
||
p ('Чтобы поставить нолик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
p ('Ты уже поставила один нолик в этом ходу. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
if (w == _'room16_x' and _'room16_wardrobe'.state >= 4) then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь крестик на поле В1.')
|
||
s.state = 1
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
else
|
||
p ('Чтобы поставить крестик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
end;
|
||
else
|
||
p ('Что??')
|
||
end;
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"поле В2, В2, поле в2, в2";
|
||
nam = "room16_c2";
|
||
title = "Поле В2";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Поле В2 не заполнено. Сюда можно поставить нолик.")
|
||
end;
|
||
if s.state == 1 then
|
||
p ("На поле В2 стоит крестик.")
|
||
end;
|
||
if s.state == 2 then
|
||
p ("На поле В2 стоит нолик.")
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if (w == _'room16_o') then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь нолик на поле В2.')
|
||
s.state = 2
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
_'room16_AI':continue()
|
||
else
|
||
p ('Чтобы поставить нолик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
p ('Ты уже поставила один нолик в этом ходу. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
if (w == _'room16_x' and _'room16_wardrobe'.state >= 4) then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь крестик на поле В2.')
|
||
s.state = 1
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
else
|
||
p ('Чтобы поставить крестик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
end;
|
||
else
|
||
p ('Что??')
|
||
end;
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"поле В3, В3, поле в3, в3";
|
||
nam = "room16_c3";
|
||
title = "Поле В3";
|
||
state = 0;
|
||
description = function(s)
|
||
if s.state == 0 then
|
||
p ("Поле В3 не заполнено. Сюда можно поставить нолик.")
|
||
end;
|
||
if s.state == 1 then
|
||
p ("На поле В3 стоит крестик.")
|
||
end;
|
||
if s.state == 2 then
|
||
p ("На поле В3 стоит нолик.")
|
||
end;
|
||
end;
|
||
before_Receive = function(s, w)
|
||
if (w == _'room16_o') then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь нолик на поле В3.')
|
||
s.state = 2
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
_'room16_AI':continue()
|
||
else
|
||
p ('Чтобы поставить нолик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
p ('Ты уже поставила один нолик в этом ходу. Нельзя же играть не по правилам!')
|
||
end;
|
||
else
|
||
if (w == _'room16_x' and _'room16_wardrobe'.state >= 4) then
|
||
if (_'room16_wardrobe'.turn == 0) then
|
||
if (s.state == 0) then
|
||
if (pl:have(_'dagger')) then
|
||
p ('Остриём кинжала ты выцарапываешь крестик на поле В3.')
|
||
s.state = 1
|
||
_'room16_wardrobe'.turn = 1
|
||
_'room16_AI'.state = _'room16_AI'.state + 1
|
||
else
|
||
p ('Чтобы поставить крестик, нужен кинжал.')
|
||
end;
|
||
else
|
||
p ('Это поле уже заполнено. Нельзя же играть не по правилам!')
|
||
end;
|
||
end;
|
||
else
|
||
p ('Что??')
|
||
end;
|
||
end;
|
||
end;
|
||
}:attr 'scenery, static, supporter'
|
||
|
||
obj {
|
||
-"ИИ комнаты 16";
|
||
nam = "room16_AI";
|
||
title = "ИИ комнаты 16";
|
||
state = 0;
|
||
game = 0;
|
||
win = 0;
|
||
daemon_stage = 0;
|
||
describe = function()
|
||
if(_'room16_a1'.state == 1) then
|
||
p('На поле А1 стоит крестик.')
|
||
end;
|
||
if(_'room16_a1'.state == 2) then
|
||
p('На поле А1 стоит нолик.')
|
||
end;
|
||
if(_'room16_a2'.state == 1) then
|
||
p('На поле А2 стоит крестик.')
|
||
end;
|
||
if(_'room16_a2'.state == 2) then
|
||
p('На поле А2 стоит нолик.')
|
||
end;
|
||
if(_'room16_a3'.state == 1) then
|
||
p('На поле А3 стоит крестик.')
|
||
end;
|
||
if(_'room16_a3'.state == 2) then
|
||
p('На поле А3 стоит нолик.')
|
||
end;
|
||
if(_'room16_b1'.state == 1) then
|
||
p('На поле Б1 стоит крестик.')
|
||
end;
|
||
if(_'room16_b1'.state == 2) then
|
||
p('На поле Б1 стоит нолик.')
|
||
end;
|
||
if(_'room16_b2'.state == 1) then
|
||
p('На поле Б2 стоит крестик.')
|
||
end;
|
||
if(_'room16_b2'.state == 2) then
|
||
p('На поле Б2 стоит нолик.')
|
||
end;
|
||
if(_'room16_b3'.state == 1) then
|
||
p('На поле Б3 стоит крестик.')
|
||
end;
|
||
if(_'room16_b3'.state == 2) then
|
||
p('На поле Б3 стоит нолик.')
|
||
end;
|
||
if(_'room16_c1'.state == 1) then
|
||
p('На поле В1 стоит крестик.')
|
||
end;
|
||
if(_'room16_c1'.state == 2) then
|
||
p('На поле В1 стоит нолик.')
|
||
end;
|
||
if(_'room16_c2'.state == 1) then
|
||
p('На поле В2 стоит крестик.')
|
||
end;
|
||
if(_'room16_c2'.state == 2) then
|
||
p('На поле В2 стоит нолик.')
|
||
end;
|
||
if(_'room16_c3'.state == 1) then
|
||
p('На поле В3 стоит крестик.')
|
||
end;
|
||
if(_'room16_c3'.state == 2) then
|
||
p('На поле В3 стоит нолик.')
|
||
end;
|
||
if(_'room16_a1'.state == 1 and _'room16_a2'.state == 1 and _'room16_a3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a1'.state == 1 and _'room16_b1'.state == 1 and _'room16_c1'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a3'.state == 1 and _'room16_b3'.state == 1 and _'room16_c3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_c1'.state == 1 and _'room16_c2'.state == 1 and _'room16_c3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_b1'.state == 1 and _'room16_b2'.state == 1 and _'room16_b3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a2'.state == 1 and _'room16_b2'.state == 1 and _'room16_c2'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a1'.state == 1 and _'room16_b2'.state == 1 and _'room16_c3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a3'.state == 1 and _'room16_b2'.state == 1 and _'room16_c1'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a1'.state == 2 and _'room16_a2'.state == 2 and _'room16_a3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a1'.state == 2 and _'room16_b1'.state == 2 and _'room16_c1'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a3'.state == 2 and _'room16_b3'.state == 2 and _'room16_c3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_c1'.state == 2 and _'room16_c2'.state == 2 and _'room16_c3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_b1'.state == 2 and _'room16_b2'.state == 2 and _'room16_b3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a2'.state == 2 and _'room16_b2'.state == 2 and _'room16_c2'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a1'.state == 2 and _'room16_b2'.state == 2 and _'room16_c3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a3'.state == 2 and _'room16_b2'.state == 2 and _'room16_c1'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_wardrobe'.state < 4) then
|
||
if(_'room16_AI'.win == 1) then
|
||
p('Три крестика соединены линией: кажется, ты проиграла. Вдруг таинственная сила отбрасывает тебя от шкафа, а его дверцы захлопываются.')
|
||
_'room16_wardrobe'.state = 0;
|
||
_'room16_AI'.state = 0;
|
||
_'room16_wardrobe':attr '~open';
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 1;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
_'room16_AI'.win = 0;
|
||
end;
|
||
--if(_'room16_a1'.state ~= 0 and _'room16_a2'.state ~= 0 and _'room16_a3'.state ~= 0 and _'room16_b1'.state ~= 0 and _'room16_b2'.state ~= 0 and _'room16_b3'.state ~= 0 and _'room16_c1'.state ~= 0 and _'room16_c2'.state ~= 0 and _'room16_c3'.state ~= 0) then
|
||
if(_'room16_AI'.state == 4) then
|
||
p('Все поля исцарапаны, но никто не победил. Вдруг шкаф начинает трястись, и таинственная сила отбрасывает тебя в другой конец комнаты. Шкаф захлопывается.')
|
||
if(_'room16_AI'.game == 0) then _'room16_wardrobe'.firsttime = 0; end;
|
||
_'room16_AI'.game = 1;
|
||
_'room16_wardrobe'.state = 0;
|
||
_'room16_AI'.state = 0;
|
||
_'room16_wardrobe':attr '~open';
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 1;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
end;
|
||
else
|
||
if(_'room16_AI'.win == 1) then
|
||
p('Три крестика соединены линией: ты выиграла. Не совсем, правда, понятно, у кого. Стоит тебе об этом подумать, как все крестики и нолики исчезают, оставляя таблицу пустой.')
|
||
_'room16_AI'.state = 0;
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 0;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
_'room16_wardrobe'.turn = 0;
|
||
_'room16_AI'.win = 0;
|
||
end;
|
||
if(_'room16_AI'.win == 2) then
|
||
p('Три нолика соединены линией: кто бы ни был твоим воображаемым противником, ты проиграла. Стоит тебе об этом подумать, как все крестики и нолики исчезают, оставляя таблицу пустой.')
|
||
_'room16_AI'.state = 0;
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 0;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
_'room16_wardrobe'.turn = 0;
|
||
_'room16_AI'.win = 0;
|
||
end;
|
||
if(_'room16_a1'.state ~= 0 and _'room16_a2'.state ~= 0 and _'room16_a3'.state ~= 0 and _'room16_b1'.state ~= 0 and _'room16_b2'.state ~= 0 and _'room16_b3'.state ~= 0 and _'room16_c1'.state ~= 0 and _'room16_c2'.state ~= 0 and _'room16_c3'.state ~= 0) then
|
||
p('Все поля заполнены, но никто не победил. Кто бы ни был твоим воображаемым противником, у вас ничья. Стоит тебе об этом подумать, как все крестики и нолики исчезают, оставляя таблицу пустой.')
|
||
_'room16_AI'.state = 0;
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 0;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
_'room16_wardrobe'.turn = 0;
|
||
_'room16_AI'.win = 0;
|
||
end;
|
||
end;
|
||
end;
|
||
checkwin = function()
|
||
if(_'room16_a1'.state == 1 and _'room16_a2'.state == 1 and _'room16_a3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a1'.state == 1 and _'room16_b1'.state == 1 and _'room16_c1'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a3'.state == 1 and _'room16_b3'.state == 1 and _'room16_c3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_c1'.state == 1 and _'room16_c2'.state == 1 and _'room16_c3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_b1'.state == 1 and _'room16_b2'.state == 1 and _'room16_b3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a2'.state == 1 and _'room16_b2'.state == 1 and _'room16_c2'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a1'.state == 1 and _'room16_b2'.state == 1 and _'room16_c3'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a3'.state == 1 and _'room16_b2'.state == 1 and _'room16_c1'.state == 1) then _'room16_AI'.win = 1; end;
|
||
if(_'room16_a1'.state == 2 and _'room16_a2'.state == 2 and _'room16_a3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a1'.state == 2 and _'room16_b1'.state == 2 and _'room16_c1'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a3'.state == 2 and _'room16_b3'.state == 2 and _'room16_c3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_c1'.state == 2 and _'room16_c2'.state == 2 and _'room16_c3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_b1'.state == 2 and _'room16_b2'.state == 2 and _'room16_b3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a2'.state == 2 and _'room16_b2'.state == 2 and _'room16_c2'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a1'.state == 2 and _'room16_b2'.state == 2 and _'room16_c3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a3'.state == 2 and _'room16_b2'.state == 2 and _'room16_c1'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_wardrobe'.state < 4) then
|
||
if(_'room16_AI'.win == 1) then
|
||
p('Три крестика соединены линией: кажется, ты проиграла. Вдруг таинственная сила отбрасывает тебя от шкафа, а его дверцы захлопываются.')
|
||
_'room16_wardrobe'.state = 0;
|
||
_'room16_AI'.state = 0;
|
||
_'room16_wardrobe':attr '~open';
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 1;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
_'room16_AI'.win = 0;
|
||
end;
|
||
--if(_'room16_a1'.state ~= 0 and _'room16_a2'.state ~= 0 and _'room16_a3'.state ~= 0 and _'room16_b1'.state ~= 0 and _'room16_b2'.state ~= 0 and _'room16_b3'.state ~= 0 and _'room16_c1'.state ~= 0 and _'room16_c2'.state ~= 0 and _'room16_c3'.state ~= 0) then
|
||
if(_'room16_AI'.state == 4) then
|
||
p('Все поля исцарапаны, но никто не победил. Вдруг шкаф начинает трястись, и таинственная сила отбрасывает тебя в другой конец комнаты. Шкаф захлопывается.')
|
||
if(_'room16_AI'.game == 0) then _'room16_wardrobe'.firsttime = 0; end;
|
||
_'room16_AI'.game = 1;
|
||
_'room16_wardrobe'.state = 0;
|
||
_'room16_AI'.state = 0;
|
||
_'room16_wardrobe':attr '~open';
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 1;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
end;
|
||
else
|
||
if(_'room16_AI'.win == 1) then
|
||
p('Три крестика соединены линией: ты выиграла. Не совсем, правда, понятно, у кого. Стоит тебе об этом подумать, как все крестики и нолики исчезают, оставляя таблицу пустой.')
|
||
_'room16_AI'.state = 0;
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 0;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
_'room16_wardrobe'.turn = 0;
|
||
_'room16_AI'.win = 0;
|
||
end;
|
||
if(_'room16_AI'.win == 2) then
|
||
p('Три нолика соединены линией: кто бы ни был твоим воображаемым противником, ты проиграла. Стоит тебе об этом подумать, как все крестики и нолики исчезают, оставляя таблицу пустой.')
|
||
_'room16_AI'.state = 0;
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 0;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
_'room16_wardrobe'.turn = 0;
|
||
_'room16_AI'.win = 0;
|
||
end;
|
||
if(_'room16_a1'.state ~= 0 and _'room16_a2'.state ~= 0 and _'room16_a3'.state ~= 0 and _'room16_b1'.state ~= 0 and _'room16_b2'.state ~= 0 and _'room16_b3'.state ~= 0 and _'room16_c1'.state ~= 0 and _'room16_c2'.state ~= 0 and _'room16_c3'.state ~= 0) then
|
||
p('Все поля заполнены, но никто не победил. Кто бы ни был твоим воображаемым противником, у вас ничья. Стоит тебе об этом подумать, как все крестики и нолики исчезают, оставляя таблицу пустой.')
|
||
_'room16_AI'.state = 0;
|
||
_'room16_a1'.state = 0;
|
||
_'room16_a2'.state = 0;
|
||
_'room16_a3'.state = 0;
|
||
_'room16_b1'.state = 0;
|
||
_'room16_b2'.state = 0;
|
||
_'room16_b3'.state = 0;
|
||
_'room16_c1'.state = 0;
|
||
_'room16_c2'.state = 0;
|
||
_'room16_c3'.state = 0;
|
||
_'room16_wardrobe'.turn = 0;
|
||
_'room16_AI'.win = 0;
|
||
end;
|
||
end;
|
||
end;
|
||
continue = function()
|
||
if(_'room16_a1'.state == 2 and _'room16_a2'.state == 2 and _'room16_a3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a1'.state == 2 and _'room16_b1'.state == 2 and _'room16_c1'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_a3'.state == 2 and _'room16_b3'.state == 2 and _'room16_c3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_c1'.state == 2 and _'room16_c2'.state == 2 and _'room16_c3'.state == 2) then _'room16_AI'.win = 2; end;
|
||
if(_'room16_AI'.win == 2) then
|
||
p ('Ты победно соединяешь три нолика одной кривой линией (так уж получается, когда царапаешь кинжалами шкафы), и вдруг какая-то таинственная сила отталкивает тебя от шкафа с такой силой, что кинжал остаётся в шкафу. Дверцы шкафа захлопываются.')
|
||
move(_'dagger',_'room16_wardrobe')
|
||
_'room16_AI'.game = 2;
|
||
_'room16_wardrobe'.state = 2;
|
||
_'room16_AI'.state = 0;
|
||
_'room16_wardrobe':attr '~open';
|
||
remove(_'room16_o',pl)
|
||
remove(_'room16_x',pl)
|
||
remove(_'room16_a1',_'room16_wardrobe')
|
||
remove(_'room16_a2',_'room16_wardrobe')
|
||
remove(_'room16_a3',_'room16_wardrobe')
|
||
remove(_'room16_b1',_'room16_wardrobe')
|
||
remove(_'room16_b2',_'room16_wardrobe')
|
||
remove(_'room16_b3',_'room16_wardrobe')
|
||
remove(_'room16_c1',_'room16_wardrobe')
|
||
remove(_'room16_c2',_'room16_wardrobe')
|
||
remove(_'room16_c3',_'room16_wardrobe')
|
||
else
|
||
if(_'room16_wardrobe'.firsto == 1) then
|
||
p('Ты поняла принцип игры и скорее закрываешь шкаф.')
|
||
_'room16_wardrobe':before_Close(_'room16_wardrobe')
|
||
_'room16_wardrobe':attr '~open'
|
||
else
|
||
_'room16_wardrobe'.firsto = 1;
|
||
end;
|
||
end;
|
||
end;
|
||
calculate = function()
|
||
if(_'room16_AI'.state == 1) then
|
||
if(_'room16_a1'.state == 2) then _'room16_b3'.state = 1 end;
|
||
if(_'room16_a2'.state == 2) then _'room16_b3'.state = 1 end;
|
||
if(_'room16_a3'.state == 2) then _'room16_b1'.state = 1 end;
|
||
if(_'room16_b1'.state == 2) then _'room16_a2'.state = 1 end;
|
||
if(_'room16_b3'.state == 2) then _'room16_a2'.state = 1 end;
|
||
if(_'room16_c1'.state == 2) then _'room16_a2'.state = 1 end;
|
||
if(_'room16_c2'.state == 2) then _'room16_b3'.state = 1 end;
|
||
if(_'room16_c3'.state == 2) then _'room16_a2'.state = 1 end;
|
||
end;
|
||
if(_'room16_AI'.state == 2) then
|
||
if(_'room16_b3'.state == 1) then
|
||
if(_'room16_b1'.state == 2) then
|
||
if(_'room16_a1'.state == 2) then _'room16_c1'.state = 1 end;
|
||
if(_'room16_a2'.state == 2) then _'room16_a3'.state = 1 end;
|
||
if(_'room16_c2'.state == 2) then _'room16_a3'.state = 1 end;
|
||
else
|
||
_'room16_b1'.state = 1
|
||
end;
|
||
end;
|
||
if(_'room16_a2'.state == 1) then
|
||
if(_'room16_c2'.state == 2) then
|
||
if(_'room16_b1'.state == 2) then _'room16_a3'.state = 1 end;
|
||
if(_'room16_b3'.state == 2) then _'room16_a3'.state = 1 end;
|
||
if(_'room16_c1'.state == 2) then _'room16_c3'.state = 1 end;
|
||
if(_'room16_c3'.state == 2) then _'room16_c1'.state = 1 end;
|
||
else
|
||
_'room16_c2'.state = 1
|
||
end;
|
||
end;
|
||
if(_'room16_b1'.state == 1) then
|
||
if(_'room16_b3'.state == 2) then
|
||
_'room16_c3'.state = 1
|
||
else
|
||
_'room16_b3'.state = 1
|
||
end;
|
||
end;
|
||
end;
|
||
if(_'room16_AI'.state == 3) then
|
||
if(_'room16_a3'.state == 1) then
|
||
if(_'room16_a2'.state == 1) then
|
||
if(_'room16_a1'.state == 2) then
|
||
_'room16_c1'.state = 1
|
||
else
|
||
_'room16_a1'.state = 1
|
||
end;
|
||
end;
|
||
if(_'room16_b3'.state == 1) then
|
||
if(_'room16_c1'.state == 2) then
|
||
_'room16_c3'.state = 1
|
||
else
|
||
_'room16_c1'.state = 1
|
||
end;
|
||
end;
|
||
end;
|
||
if(_'room16_c3'.state == 1) then
|
||
if(_'room16_a1'.state == 2) then
|
||
if(_'room16_a2'.state == 1) then
|
||
if(_'room16_AI'.game == 0) then
|
||
_'room16_b1'.state = 1
|
||
else
|
||
_'room16_a3'.state = 1
|
||
end;
|
||
end;
|
||
if(_'room16_b1'.state == 1) then
|
||
if(_'room16_AI'.game == 0) then
|
||
_'room16_a2'.state = 1
|
||
else
|
||
_'room16_c1'.state = 1
|
||
end;
|
||
end;
|
||
else
|
||
_'room16_a1'.state = 1
|
||
end;
|
||
end;
|
||
if(_'room16_c1'.state == 1) then
|
||
if(_'room16_a3'.state == 2) then
|
||
if(_'room16_a2'.state == 1) then
|
||
if(_'room16_AI'.game == 0) then
|
||
_'room16_b3'.state = 1
|
||
else
|
||
_'room16_a1'.state = 1
|
||
end;
|
||
end;
|
||
if(_'room16_b3'.state == 1) then
|
||
if(_'room16_AI'.game == 0) then
|
||
_'room16_a2'.state = 1
|
||
else
|
||
_'room16_c3'.state = 1
|
||
end;
|
||
end;
|
||
else
|
||
_'room16_a3'.state = 1
|
||
end;
|
||
end;
|
||
end;
|
||
if(_'room16_AI'.state == 4) then
|
||
if(_'room16_a1'.state == 0) then _'room16_a1'.state = 1 end;
|
||
if(_'room16_a2'.state == 0) then _'room16_a2'.state = 1 end;
|
||
if(_'room16_a3'.state == 0) then _'room16_a3'.state = 1 end;
|
||
if(_'room16_b1'.state == 0) then _'room16_b1'.state = 1 end;
|
||
if(_'room16_b3'.state == 0) then _'room16_b3'.state = 1 end;
|
||
if(_'room16_c1'.state == 0) then _'room16_c1'.state = 1 end;
|
||
if(_'room16_c2'.state == 0) then _'room16_c2'.state = 1 end;
|
||
if(_'room16_c3'.state == 0) then _'room16_c3'.state = 1 end;
|
||
end;
|
||
end;
|
||
finish = function()
|
||
_'room16_mystical'.state = 1
|
||
_'room16_wardrobe'.state = 3
|
||
_'room16_wardrobe':attr 'open'
|
||
_'room16_wardrobe':attr 'enterable'
|
||
move(_'room16_witch',_'room16_mystical')
|
||
move(_'room16_wall',_'room16_mystical')
|
||
DaemonStart 'room16_AI'
|
||
end;
|
||
aiturn = function()
|
||
_'room16_AI':checkwin()
|
||
if(_'room16_wardrobe'.turn == 1) then
|
||
_'room16_wardrobe'.turn = 0
|
||
if(_'room16_b2'.state == 0) then
|
||
p 'Ты замечешь, что на поле Б2 появляется нацарапанный нолик.'
|
||
_'room16_b2'.state = 2;
|
||
else
|
||
if(_'room16_a3'.state == 0) then
|
||
p 'Ты замечешь, что на поле A3 появляется нацарапанный нолик.'
|
||
_'room16_a3'.state = 2;
|
||
else
|
||
if(_'room16_c3'.state == 0) then
|
||
p 'Ты замечешь, что на поле В3 появляется нацарапанный нолик.'
|
||
_'room16_c3'.state = 2;
|
||
else
|
||
if(_'room16_c1'.state == 0) then
|
||
p 'Ты замечешь, что на поле В2 появляется нацарапанный нолик.'
|
||
_'room16_c1'.state = 2;
|
||
else
|
||
if(_'room16_a1'.state == 0) then
|
||
p 'Ты замечешь, что на поле А1 появляется нацарапанный нолик.'
|
||
_'room16_a1'.state = 2;
|
||
else
|
||
if(_'room16_b3'.state == 0) then
|
||
p 'Ты замечешь, что на поле Б3 появляется нацарапанный нолик.'
|
||
_'room16_b3'.state = 2;
|
||
else
|
||
if(_'room16_c2'.state == 0) then
|
||
p 'Ты замечешь, что на поле В2 появляется нацарапанный нолик.'
|
||
_'room16_c2'.state = 2;
|
||
else
|
||
if(_'room16_b1'.state == 0) then
|
||
p 'Ты замечешь, что на поле Б1 появляется нацарапанный нолик.'
|
||
_'room16_b1'.state = 2;
|
||
else
|
||
if(_'room16_a2'.state == 0) then
|
||
p 'Ты замечешь, что на поле А2 появляется нацарапанный нолик.'
|
||
_'room16_a2'.state = 2;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
_'room16_AI':checkwin()
|
||
end;
|
||
daemon = function(s)
|
||
if(_'room16_AI'.daemon_stage == 0) then
|
||
p (' -- Я вот думаю, на лоскутки тебя порезать или на кусочки разорвать. А, прислужница госмашины?')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 1) then
|
||
p (' -- Сейчас, наточу когти, разберусь с тобой. Ты пока подумай, жизнь вспомни.')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 2) then
|
||
p (' -- Тут, конечно, нужны кусачки.')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 3) then
|
||
p (' -- Заусенец проклятый! Вот и ты, Настенька, как заусенец у меня в пальце сейчас: и жалко, и противно!')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 4) then
|
||
p (' -- Ну ладно, готово.')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 5) then
|
||
DaemonStop 'room16_AI';
|
||
walk 'room16_cutsceneB'
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 6) then
|
||
DaemonStop 'room16_AI';
|
||
walk 'room16_cutsceneC'
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 7) then
|
||
DaemonStop 'room16_AI';
|
||
walk 'room16_cutsceneD'
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 8) then
|
||
DaemonStop 'room16_AI';
|
||
walk 'room16_cutsceneE'
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 9) then
|
||
DaemonStop 'room16_AI';
|
||
walk 'room16_cutsceneF'
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 10) then
|
||
p (' -- Ха-ха-ха! Глупышка, ты попалась в ловушку! Теперь ты навеки будешь заточена в этом шкафу.')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 11) then
|
||
p (' -- Там даже не ловит мобильник, детка!')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 12) then
|
||
p (' -- Кстати, я заколдовала шкаф так, что в нём нельзя ни повеситься, ни зарезаться, вообще никак нельзя самоубиться! Ты даже со скуки умереть на сможешь!')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 13) then
|
||
p (' -- А что: считай, я подарила тебе бессмертие.')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 14) then
|
||
p (' -- Помолись там, что ли. А нет, забыла. Это тоже нельзя.')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 15) then
|
||
p (' -- Ладно-ладно. Мне пора принять ванну. Пока-пока, племяшка!')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 16) then
|
||
p ('Какое-то время ты слышишь звуки шагов, а потом они стихают. Похоже, ты здесь надолго.')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 17) then
|
||
p ('Кто-то мог бы сказать, что ты нашла концовку №4/4. Но ты, конечно, можешь с этим не согласиться и играть дальше.')
|
||
end;
|
||
if(_'room16_AI'.daemon_stage == 20) then
|
||
--DaemonStop 'room16_AI'
|
||
end;
|
||
if(_'room16_AI'.daemon_stage > 20) then
|
||
_'room16_AI':aiturn()
|
||
end;
|
||
_'room16_AI'.daemon_stage = _'room16_AI'.daemon_stage + 1
|
||
end;
|
||
}:attr 'scenery, static'
|
||
|
||
cutscene {
|
||
nam = 'room16_cutscene';
|
||
text = {
|
||
"Ты открываешь шкаф -- а там вместо крестиков-ноликов сидит какая-то старуха.";
|
||
"Она поднимает на тебя глаза и пытается эффектно сдуть немытую прядь волос себе на лоб.";
|
||
"Не выходит: прилипло.";
|
||
" -- Не думала, что вы прознаете про мои тайные симпатии к крестикам-ноликам, буржуи недобитые! -- бормочет старуха.";
|
||
"Она медленно поднимается на кривые ноги, как в фильмах ужасов.";
|
||
" -- Я понаставила замков, вырубила вайфай, утопила телефон, провела оккультные ритуалы, исчезла в шкафу -- а государственная машина всё равно меня выцарапала, подумать только.";
|
||
"Старуха со скрипом распрямляет засохшую спину, и ты узнаёшь в её физиономии лицо тетушки Агаты, только какое-то немытое.";
|
||
};
|
||
next_to = 'room16_dialogue'
|
||
}
|
||
|
||
dlg {
|
||
nam = 'room16_dialogue';
|
||
phr = {
|
||
[[-- Настюха, ты что ли? -- прозревает тётя Агата.]];
|
||
{
|
||
'Ну конечно!',
|
||
function() walk 'room16_dialogueA'; end;
|
||
},
|
||
{
|
||
'Что с тобой, тётушка?',
|
||
function() walk 'room16_dialogueB'; end;
|
||
},
|
||
};
|
||
}
|
||
|
||
dlg {
|
||
nam = 'room16_dialogueA';
|
||
phr = {
|
||
[[-- Значит, приставы завербовали и тебя. Но знаешь, что я тебе скажу?]],
|
||
{
|
||
'Какие ещё приставы?',
|
||
function() p [[-- Не перебивай старших! Да, я не платила за коммуналку уже десять лет, и да, я принимала ванну два раза в день, и да, я майнила биткоины, ну и что!]]; walk 'room16_cutsceneA'; end;
|
||
},
|
||
{
|
||
'Меня никто не вербовал!',
|
||
function() p [[-- Не перебивай старших! Да, я не платила за коммуналку уже десять лет, и да, я принимала ванну два раза в день, и да, я майнила биткоины, ну и что!]]; walk 'room16_cutsceneA'; end;
|
||
},
|
||
};
|
||
}
|
||
|
||
dlg {
|
||
nam = 'room16_dialogueB';
|
||
phr = {
|
||
[[-- Значит, приставы завербовали и тебя. Но знаешь, что я тебе скажу?]],
|
||
{
|
||
'Какие ещё приставы?',
|
||
function() p [[-- Не перебивай старших! Да, я не платила за коммуналку уже десять лет, и да, я принимала ванну два раза в день, и да, я майнила биткоины, ну и что!]]; walk 'room16_cutsceneA'; end;
|
||
},
|
||
{
|
||
'Меня никто не вербовал!',
|
||
function() p [[-- Не перебивай старших! Да, я не платила за коммуналку уже десять лет, и да, я принимала ванну два раза в день, и да, я майнила биткоины, ну и что!]]; walk 'room16_cutsceneA'; end;
|
||
},
|
||
{
|
||
'Тётушка Агата! Это Настя, ты что?',
|
||
function() p [[-- Не перебивай старших! Да, я не платила за коммуналку уже десять лет, и да, я принимала ванну два раза в день, и да, я майнила биткоины, ну и что!]]; walk 'room16_cutsceneA'; end;
|
||
},
|
||
};
|
||
}
|
||
|
||
cutscene {
|
||
nam = 'room16_cutsceneA';
|
||
text = {
|
||
"В глазах тётушки нет ничего, кроме слепой ярости по отношению к судебным приставам, и эта ярость направлена на тебя.";
|
||
" -- Никто не должен был найти меня, девчонка! -- она выковыривается из шкафа, растопырив длинные когти.";
|
||
" -- Абракадабра! Фу ты, пх'нглуи, мглв'нафх, алохомора, пламя Удуна, мать его! -- она кричит что-то невразумительное, и выход из комнаты исчезает.";
|
||
"Тётка выпрыгивает из шкафа и, как птица, приземляется на пюпитр.";
|
||
"Надо что-то делать. У тебя мало времени.";
|
||
};
|
||
next_to = function() _'room16_AI':finish(); mp.score=mp.score+1; walk 'room16_mystical'; end;
|
||
}
|
||
|
||
cutscene {
|
||
nam = 'room16_cutsceneB';
|
||
text = {
|
||
"Одним махом тётя Агата прыгает на тебя, сбивая с ног.";
|
||
"Она вонзает свои когти тебе в живот, а клыками впивается в шею.";
|
||
"Ты даже не успеваешь пожалеть о том, что приехала в дом к своей тёте.";
|
||
};
|
||
next_to = 'room16_happyend';
|
||
}
|
||
|
||
cutscene {
|
||
nam = 'room16_cutsceneC';
|
||
text = {
|
||
"Ты подбегаешь к тёте и пытаешься сбить её с пюпитра, но она оказывается ловчее, и одним махом прыгает на тебя, сбивая с ног.";
|
||
"Она вонзает свои когти тебе в живот, а клыками впивается в шею.";
|
||
"Ты даже не успеваешь пожалеть о том, что приехала в дом к своей тёте.";
|
||
};
|
||
next_to = 'room16_happyend';
|
||
}
|
||
|
||
cutscene {
|
||
nam = 'room16_cutsceneD';
|
||
text = {
|
||
"Как сумасшедшая, ты бежишь на тётю с твёрдым намерением её зарезать.";
|
||
"Увы, она не дура, и одним махом прыгает на тебя, сбивая с ног.";
|
||
"Она вонзает свои когти тебе в живот, а клыками впивается в шею.";
|
||
"Ты даже не успеваешь пожалеть о том, что приехала в дом к своей тёте.";
|
||
};
|
||
next_to = 'room16_happyend';
|
||
}
|
||
|
||
cutscene {
|
||
nam = 'room16_cutsceneE';
|
||
text = {
|
||
"Ты берёшь кинжал за лезвие, как это делают циркачи.";
|
||
"Тётя всё ковыряет свои когти и даже не замечает, как ты прицеливаешься.";
|
||
"Один бросок -- и кинжал по самую рукоять уходит куда-то в тёткины лохмотья, а она падает на паркетный пол замертво.";
|
||
" -- Какой-то нелепый конец, -- думаешь ты вслух.";
|
||
"Теперь придётся выбираться из комнаты, у которой нет двери.";
|
||
"Твой взгляд падает на щель под потолком.";
|
||
"Закатный луч падает на тебя в ответ.";
|
||
};
|
||
next_to = 'room16_badend';
|
||
}
|
||
|
||
cutscene {
|
||
nam = 'room16_cutsceneF';
|
||
text = {
|
||
"Ты выходишь из комнаты, войдя в четвёртую стену, которую сама же и разрушила.";
|
||
"Тётя Агата осталась в своём особняке, приходить в себя.";
|
||
"Может быть, она даже продаст пару биткоинов и заплатит за коммунальные услуги.";
|
||
"А может, она спрячется ещё лучше, расставит ловушки и будет дожидаться судебных приставов при оружии.";
|
||
"Тебе понравилась игра?";
|
||
"Нет, не надо отвечать мне. Напиши на форуме ifiction.ru или на дискорд-сервере ifrus.";
|
||
"Ну всё, пока.";
|
||
};
|
||
next_to = 'room16_theend';
|
||
}
|
||
|
||
obj {
|
||
-"тётушка,тётушка,тётка,тётя,Агата,тётушка Агата*";
|
||
nam = 'room16_witch';
|
||
dsc = 'Тётушка сидит на пюпитре и точит когти.';
|
||
description = 'Тётушка Агата одета в какие-то лохмотья. Она точит когти, скалит зубы, хлюпает носом, сверкает глазами и время от времени шевелит ушами.';
|
||
before_ThrownAt = function(s,w)
|
||
if(w == _'dagger') then
|
||
_'room16_AI'.daemon_stage = 8
|
||
else
|
||
p 'Ты серьёзно?'
|
||
end;
|
||
end;
|
||
before_Attack = function(s)
|
||
if(pl:have(_'dagger')) then
|
||
_'room16_AI'.daemon_stage = 7
|
||
else
|
||
_'room16_AI'.daemon_stage = 6
|
||
end;
|
||
end;
|
||
before_Push = function(s)
|
||
_'room16_AI'.daemon_stage = 6
|
||
end;
|
||
before_Cut = function(s,w)
|
||
if(w == _'dagger') then
|
||
_'room16_AI'.daemon_stage = 7
|
||
else
|
||
p 'Ты серьёзно?'
|
||
end;
|
||
end;
|
||
before_Tear = function(s)
|
||
if(pl:have(_'dagger')) then
|
||
_'room16_AI'.daemon_stage = 7
|
||
else
|
||
_'room16_AI'.daemon_stage = 6
|
||
end;
|
||
end;
|
||
before_Talk = function(s)
|
||
p('Разговаривать с тётей, когда она в таком состоянии, бессмысленно.')
|
||
end;
|
||
before_Tell = function(s)
|
||
p('Разговаривать с тётей, когда она в таком состоянии, бессмысленно.')
|
||
end;
|
||
before_Ask = function(s)
|
||
p('Разговаривать с тётей, когда она в таком состоянии, бессмысленно.')
|
||
end;
|
||
before_AskFor = function(s)
|
||
p('Разговаривать с тётей, когда она в таком состоянии, бессмысленно.')
|
||
end;
|
||
before_AskTo = function(s)
|
||
p('Разговаривать с тётей, когда она в таком состоянии, бессмысленно.')
|
||
end;
|
||
before_Answer = function(s)
|
||
p('Разговаривать с тётей, когда она в таком состоянии, бессмысленно.')
|
||
end;
|
||
["before_Take,Remove,Enter,PutOn,Insert"] = function(s,w)
|
||
p 'Ты серьёзно?'
|
||
end;
|
||
obj = {
|
||
obj {
|
||
-"глаза,глаз*";
|
||
description = [[Глаза цвета моря!]];
|
||
};
|
||
obj {
|
||
-"нос";
|
||
description = [[Прелестный носик!]];
|
||
};
|
||
obj {
|
||
-"когти,коготь*";
|
||
description = [[Когти тётушки длинные и кривые, потому что их не стригли уже много лет.]];
|
||
};
|
||
obj {
|
||
-"зубы,зуб*";
|
||
description = [[Зубов у тётушки много, но они все жёлтые. Потому что она их не чистила уже очень давно.]];
|
||
};
|
||
obj {
|
||
-"уши,ухо*";
|
||
description = [[Почему у неё такие большие уши?]];
|
||
};
|
||
obj {
|
||
-"лохмотья*";
|
||
description = [[Когда-то это было что-то приличное, но теперь...]];
|
||
};
|
||
}
|
||
}:attr 'animate'
|
||
|
||
obj {
|
||
-"стены";
|
||
nam = 'room16_walls';
|
||
state = 0;
|
||
description = function(s)
|
||
if _'room16_mystical'.state == 0 then
|
||
return 'Стены как стены.';
|
||
else
|
||
return 'Стены как стены. Нельзя сказать, что какая-то стена выделяется относительно остальных. Или можно?';
|
||
end
|
||
end;
|
||
}:attr 'static, scenery'
|
||
|
||
obj {
|
||
-"четвёртая стена";
|
||
nam = 'room16_wall';
|
||
state = 0;
|
||
description = 'Ты стоишь как раз рядом с ней.';
|
||
before_Attack = function(s)
|
||
if(pl:have(_'dagger')) then
|
||
if(s.state == 3) then
|
||
p 'Тебе незачем тратить время: просто входи в стену!'
|
||
end;
|
||
if(s.state == 2) then
|
||
p 'Ты расковыриваешь огромную дыру: четвёртая стена разрушена!'
|
||
s:attr 'enterable'
|
||
s:attr 'open'
|
||
mp.score=mp.score+1;
|
||
s.state = 3
|
||
end;
|
||
if(s.state == 1) then
|
||
p 'Ты продолжаешь рушить стену, и в ней уже образовалась дырка размером с твою голову. Ты могла бы попробовать сбежать, но всё, кроме головы, будет торчать на виду у тёти Агаты.'
|
||
mp.score=mp.score+1;
|
||
s.state = 2
|
||
end;
|
||
if(s.state == 0) then
|
||
p 'Ты нервно ковыряешь стену кинжалом, пока тётка точит когти и не смотрит на тебя. Постепенно, стена начинает рушиться.'
|
||
mp.score=mp.score+1;
|
||
s.state = 1
|
||
end;
|
||
else
|
||
p 'Рушить четвёртую стену голыми руками не получится.'
|
||
end;
|
||
end;
|
||
before_Enter = function(s)
|
||
if(s.state == 3) then
|
||
_'room16_AI'.daemon_stage = 9
|
||
else
|
||
p 'Сначала надо разрушить четвёртую стену!'
|
||
end;
|
||
end;
|
||
}:attr 'static, scenery'
|
||
|
||
room {
|
||
-"конец";
|
||
nam = 'room16_happyend';
|
||
title = "Конец";
|
||
dsc = 'Вот и сказочке конец. Ты же сохранила игру, Настенька? (Концовка №3/4)';
|
||
noparser = true;
|
||
}
|
||
|
||
room {
|
||
-"конец";
|
||
nam = 'room16_badend';
|
||
title = "Конец";
|
||
dsc = 'Вот и сказочке конец. Может, надо было обойтись без крови? Ты же сохранила игру, Настенька? (Концовка №2/4)';
|
||
noparser = true;
|
||
}
|
||
|
||
room {
|
||
-"конец";
|
||
nam = 'room16_theend';
|
||
title = "Конец";
|
||
dsc = 'Вот и сказочке конец, а кто слушал -- молодец! (Концовка №1/4)';
|
||
noparser = true;
|
||
}
|