Конец! Дописано. Надо только название придумать.

This commit is contained in:
Alexander Yakovlev 2016-12-12 03:55:56 +07:00
parent 0a75d71a58
commit 43ec0302b7
3 changed files with 200 additions and 41 deletions

View File

@ -101,8 +101,10 @@ class ImprovModel
cunit = (name, spec) ->
spec.act = () ->
# re-enter the room, reroll the description
salet.view.clearContent()
salet.here().entering("start")
r = salet.here()
r.entering(r.name)
return '<em>'+@enact.fcall(this)+'</em>'
return unit(name, spec)
state = new ImprovModel

View File

@ -18,8 +18,7 @@ module.exports =
Поезд тихо тронулся.
"""
window: "За {{окном}} проносятся столбы."
dsc: (Improv, state) ->
"""
dsc: """
##### В купе поезда
Это маленькое купе на четырёх человек.
@ -29,18 +28,24 @@ module.exports =
На верхней полке напротив вас сидит {{#{if salet.character.knows_alexey then "Лёша" else "небритый парень в тёмном спортивном костюме"}.}}
#{Improv.gen("alexey", state)}
"""
alexey_end: """
Парень в спортивном костюме обыскивает нижние полки.
"""
margo: (Improv, state) ->
"""
На нижней полке рядом с вами отдыхает {{#{if salet.character.knows_margo then "Марго" else "красивая дама с ручным хорьком и циничным взглядом"}.}}
#{Improv.gen("margo", state)}
"""
margo_end: """
Девушка ищет хорька в своём багаже.
Сумка, пакеты, несколько чемоданов она застряла надолго.
"""
owindow: "Вы замечаете, что окно {{неплотно закрыто.}}"
dsc_ferret: """
##### В купе поезда
Это маленькое купе на четырёх человек.
Сейчас здесь именно четыре человека, хотя на ваш счёт этого сразу и не скажешь.
"""
window_end: "Вы уже не обращаете внимания на лютую метель за {{окном.}}"
owindow_end: "Но вы замечаете, что окно так никто и не {{закрыл до конца.}}"
@ -209,6 +214,86 @@ module.exports =
blood_dsc: "Вы замечаете на полу {{красное пятно.}}"
blood_act: "Кровь. Вы не очень удивлены."
ferret_dsc: "{{Ручной хорёк}} Маргариты внимательно смотрит на вас."
ferret_act: "Хорёк не реагирует." # подсказка 1
ferret_one_margo: "Хорёк не реагирует." # подсказка 2
ferret_one_alexey: "Хорёк не реагирует." # подсказка 3
ferret_dsc_end: "{{Ручной хорёк}} Юля смотрит на вас из тёмного угла."
ferret_act: """
Маргарита не выпускает хорька из рук, но маленькому прохвосту не терпится
побегать.
"""
ferret_one_margo: """
Хорёк пускается в бег, но внимательная хозяйка не даёт ему убежать.
"""
ferret_one_alexey: """
Хорёк пускается в бег, но ваш сосед замечает его и быстро ловит.
"""
ferret_run: """
Когда оба человека отвлекаются, хорёк пулей летит прочь с полки.
Он прячется в дальнем углу, где вам хорошо его видно.
Когда Маргарита обнаруживает пропажу, она поднимает крик.
Караул! Юля! Юля! Она же может быть где угодно в вагоне!
Видимо, хорёк был девочкой.
Хозяйка уходит, а через некоторое время возвращается вместе с проводником
вагона.
Я точно говорю, она не могла далеко убежать.
Давайте поищем сначала в вашем купе.
Как раз тут вам и нужен проводник.
Как же теперь его нейтрализовать?
"""
conductor: """
{{Проводник}} осматривает пол.
Он не двигается с места, поэтому не может заметить хорька.
"""
table: """
{{Раскладной столик}} собран, чтобы открыть пол.
"""
table_act: """
Вы опускаете столик.
Вы не в силах поставить его на защёлку, поэтому он тут же складывается обратно.
"""
alexey_final: """
Вы опускаете столик прямо на голову Алексею.
Он тихо охает и складывается на полу.
"""
alexey_final_dsc: "На полу под столиком лежит бесчувственный спортсмен."
margo_final: """
Проводник прыгает, чтобы поймать хорька, но случайно задевает
девушку, которая пытается дотянуться до защёлки окна.
Девушка падает и ударяется головой о стену. Она лежит без сознания.
"""
margo_final_dsc: """
На полке лежит бессознательная любительница редких животных.
"""
ferret_whereto: "Вы можете выманить хорька, но куда?"
ferret_close: "Приманить к столу"
ferret_close_dsc: """
Хорёк делает два прыжка к столу, но тут же разворачивается и прячется обратно.
"""
ferret_far: "Приманить на середину купе"
ferret_far_dsc: """
Хорёк прыгает на середину купе, делает круг и возвращается в тёмный угол,
так никем и не замеченный.
"""
ferret_blood: "Приманить к луже крови"
ferret_blood_dsc: """
Хорёк не хочет бежать так далеко там слишком много людей.
"""
conductor_examine: """
Злобный кондуктор, который убил вас, но ещё не знает, что вы стали призраком
и теперь навечно будете обитать в таинственном четырёхместном купе поезда Москва-Владивосток.
И если ваш план удастся, то он останется здесь с вами.
"""
final: """
Ага, вот ты где!
Проводник идёт к хорьку, но вместо этого подскальзывается на луже из вашей крови.
Он падает, и ударяется головой об угол полки. Если он выживет, это будет ещё долго болеть.
Месть совершена. Вы чувствуете, что можете выйти из поезда.
### КОНЕЦ
"""

View File

@ -6,9 +6,9 @@ room "start",
if (!from)
return "intro".l()
dsc: () ->
if salet.character.ferret == true
if salet.character.ferret
return "dsc_ferret".l()
return "dsc".l(Improv, state)
return "dsc".l()
afterChoices: () ->
if (
salet.character.lastBeat() > 3 and
@ -20,18 +20,18 @@ room "start",
salet.character.newBeat()
salet.goTo("killed")
if (salet.character.book == true and salet.character.lastBeat() == 2)
if (salet.character.book and salet.character.lastBeat() == 2)
salet.view.write "**"+"reset_book".l()+"**"
if (salet.character.window == true and salet.character.lastBeat() == 2)
if (salet.character.window and salet.character.lastBeat() == 2)
salet.view.write "**"+"reset_window".l()+"**"
if (salet.character.window == true and salet.character.lastBeat() > 3)
if (salet.character.window and salet.character.lastBeat() > 3)
salet.character.window = false
salet.character.newBeat()
salet.view.write "**"+"reset_window_ends".l()+"**"
if (salet.character.book == true and salet.character.lastBeat() > 3)
if (salet.character.book and salet.character.lastBeat() > 3)
salet.character.book = false
salet.character.newBeat()
salet.view.write "**"+"reset_book_ends".l()+"**"
@ -41,47 +41,51 @@ room "start",
salet.view.append("<em>"+"#{to}_reaction".l()+"</em>")
return false
units:[
unit "window",
cunit "window",
order: 5
dsc: () ->
if salet.character.ferret == true
if salet.character.ferret
return "\n\n"+"window_end".l()
return "\n\n"+"window".l()
act: () ->
# re-enter the room, reroll the description
salet.view.clearContent()
salet.here().entering("start")
return "<em>"+procgen("window")+"</em>"
unit "owindow",
enact: () ->
return procgen("window")
cunit "owindow",
order: 6
dsc: () ->
if salet.character.ferret == true
if salet.character.ferret
return "owindow_end".l()
return "owindow".l()
act: () ->
salet.view.clearContent()
salet.here().entering("start")
enact: () ->
if salet.character.killed
salet.character.window = true
salet.character.newBeat()
return "<em>"+"window_open".l()+"</em>"
return "window_open".l()
else
return "<em>"+"window_open_no".l()+"</em>"
unit "alexey",
return "window_open_no".l()
cunit "alexey",
order: 3
dsc: () ->
"alexey".l(Improv, state)
act: () ->
if salet.character.alexey
return "alexey_final_dsc".l()
if salet.character.ferret
return "alexey_end".l()
return "alexey".l(Improv, state)
enact: () ->
salet.goTo("alexey")
unit "margo",
cunit "margo",
order: 4
dsc: () ->
if salet.character.margo
return "margo_final_dsc".l()
if salet.character.ferret
return "margo_end".l()
"margo".l(Improv, state)
act: () ->
enact: () ->
salet.goTo("margo")
unit "debug",
cunit "debug",
dsc: "<center>{{Пропустить всё до загадок}}</center>"
act: () ->
order: 666
enact: () ->
state.setTag("weather", "cold")
salet.here().take(book)
salet.here().take(blood)
@ -91,9 +95,7 @@ room "start",
salet.character["knows_margo"] = true
salet.here().drop("debug")
salet.character.killed = true
salet.view.clearContent()
salet.here().entering("start")
return "*Сделано.*"
return "Сделано."
]
book = cunit "book",
@ -117,18 +119,46 @@ blood = cunit "blood",
enact: "blood_act".l()
ferret = cunit "ferret",
dsc: "ferret_dsc".l()
dsc: () ->
if salet.character.ferret
return "ferret_dsc_end".l()
return "ferret_dsc".l()
order: 4
enact: () ->
if salet.character.window == true and salet.character.book == true
if salet.character.ferret
return salet.goTo("ferret")
if salet.character.window and salet.character.book
# хорьку никто не мешает
else if salet.character.window == true
salet.character.book = false
salet.character.window = false
salet.character.ferret = true
salet.here().take(conductor)
salet.here().take(table)
salet.view.clearContent()
salet.here().entering("start")
return "ferret_run".l()
else if salet.character.window
return "ferret_one_margo".l()
else if salet.character.book == true
else if salet.character.book
return "ferret_one_alexey".l()
else
return "ferret_act".l()
conductor = cunit "conductor",
dsc: "conductor".l()
order: 2
enact: "conductor_examine".l()
table = cunit "table",
dsc: "table".l()
order: 7
enact: () ->
if salet.character.book and !salet.character.alexey
salet.character.alexey = true
return "alexey_final".l()
else
return "table_act".l()
## ACTUALLY DIALOGUES
dlg = (name) ->
@ -216,3 +246,45 @@ room "killed5",
true if salet.isVisited("killed4_a") or salet.isVisited("killed4_b")
after: () ->
return salet.goTo("start")
room "ferret",
clear: true
dsc: "ferret_whereto".l()
choices: "#ferret"
room "ferret_close",
clear: false
optionText: "ferret_close".l()
dsc: () ->
if salet.character.window and !salet.character.margo
salet.character.margo = true
return "margo_final".l()
return "ferret_close_dsc".l()
after: () ->
salet.goTo("start")
tags: ["ferret"]
room "ferret_blood",
clear: false
optionText: "ferret_blood".l()
dsc: () ->
if salet.character.alexey and salet.character.margo
salet.goTo("final")
return ""
return "ferret_blood_dsc".l()
tags: ["ferret"]
after: () ->
unless salet.character.alexey and salet.character.margo
salet.goTo("start")
room "ferret_far",
clear: false
optionText: "ferret_far".l()
dsc: "ferret_far_dsc".l()
tags: ["ferret"]
after: () ->
salet.goTo("start")
room "final",
clear: true
dsc: "final".l()