diff --git a/game/begin.coffee b/game/begin.coffee index f6e28fb..91575dd 100644 --- a/game/begin.coffee +++ b/game/begin.coffee @@ -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 ''+@enact.fcall(this)+'' return unit(name, spec) state = new ImprovModel diff --git a/game/language/ru.coffee b/game/language/ru.coffee index 6d2585a..ea14fef 100644 --- a/game/language/ru.coffee +++ b/game/language/ru.coffee @@ -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: """ + — Ага, вот ты где! + + Проводник идёт к хорьку, но вместо этого подскальзывается на луже из вашей крови. + Он падает, и ударяется головой об угол полки. Если он выживет, это будет ещё долго болеть. + + Месть совершена. Вы чувствуете, что можете выйти из поезда. + + ### КОНЕЦ + """ diff --git a/game/story.coffee b/game/story.coffee index af413ec..119a552 100644 --- a/game/story.coffee +++ b/game/story.coffee @@ -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(""+"#{to}_reaction".l()+"") 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 ""+procgen("window")+"" - 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 ""+"window_open".l()+"" + return "window_open".l() else - return ""+"window_open_no".l()+"" - 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: "