diff --git a/game/begin.coffee b/game/begin.coffee index ae3ef6d..f6e28fb 100644 --- a/game/begin.coffee +++ b/game/begin.coffee @@ -27,6 +27,13 @@ salet.init = () -> return salet.progress.sequence.length - salet.character.beat salet.character.newBeat = () -> salet.character.beat = salet.progress.sequence.length + salet.character.beat = 0 + state.setTag("weather", "warm") + audio = document.getElementById("bgsound") + if audio? + audio.currentTime = 0 + audio.volume = 1.0 + audio.play() $(document).ready(() -> window.addEventListener('popstate', (event) -> diff --git a/game/language/ru.coffee b/game/language/ru.coffee index fc432c4..6d2585a 100644 --- a/game/language/ru.coffee +++ b/game/language/ru.coffee @@ -17,18 +17,38 @@ module.exports = До Иркутска оставалось ещё двадцать четыре остановки и день пути. Поезд тихо тронулся. """ + window: "За {{окном}} проносятся столбы." dsc: (Improv, state) -> """ ##### В купе поезда Это маленькое купе на четырёх человек. - - На верхней полке напротив вас сидит [#{if salet.character.knows_alexey then "Лёша" else "небритый парень в тёмном спортивном костюме"}](alexey). #{Improv.gen("alexey", state)} - - На нижней полке рядом с вами отдыхает [#{if salet.character.knows_margo then "Марго" else "красивая дама с ручным хорьком и циничным взглядом"}](margo). #{Improv.gen("margo", state)} - - За [окном](./_writer_window) проносятся столбы. """ + alexey: (Improv, state) -> + """ + На верхней полке напротив вас сидит {{#{if salet.character.knows_alexey then "Лёша" else "небритый парень в тёмном спортивном костюме"}.}} + #{Improv.gen("alexey", state)} + """ + margo: (Improv, state) -> + """ + На нижней полке рядом с вами отдыхает {{#{if salet.character.knows_margo then "Марго" else "красивая дама с ручным хорьком и циничным взглядом"}.}} + #{Improv.gen("margo", state)} + """ + owindow: "Вы замечаете, что окно {{неплотно закрыто.}}" + dsc_ferret: """ + ##### В купе поезда + + Это маленькое купе на четырёх человек. + Сейчас здесь именно четыре человека, хотя на ваш счёт этого сразу и не скажешь. + + """ + window_end: "Вы уже не обращаете внимания на лютую метель за {{окном.}}" + owindow_end: "Но вы замечаете, что окно так никто и не {{закрыл до конца.}}" + window_open_no: "Вам не душно. Зачем открывать окно?" + window_open: """ + С резким усилием вы открываете окно. + В купе начинается небольшой снегопад. + """ meet_alexey: """ -- Добрый вечер. @@ -180,3 +200,15 @@ module.exports = book_act_twice: "Книга только упала со столика, а вы и так устали." reset_book: "Алексей замечает книгу на полу и нагибается, чтобы её поднять." reset_book_ends: "Алексей поднимается и кладёт книгу на место." + reset_window: """ + Маргарита замечает открытое окно и тянется, чтобы его закрыть. + """ + reset_window_ends: """ + Маргарита закрывает окно, спускается и занимает своё прежнее место. + """ + blood_dsc: "Вы замечаете на полу {{красное пятно.}}" + blood_act: "Кровь. Вы не очень удивлены." + ferret_dsc: "{{Ручной хорёк}} Маргариты внимательно смотрит на вас." + ferret_act: "Хорёк не реагирует." # подсказка 1 + ferret_one_margo: "Хорёк не реагирует." # подсказка 2 + ferret_one_alexey: "Хорёк не реагирует." # подсказка 3 diff --git a/game/story.coffee b/game/story.coffee index df95d79..af413ec 100644 --- a/game/story.coffee +++ b/game/story.coffee @@ -4,14 +4,11 @@ room "start", clear: false before: (from) -> if (!from) - salet.character.beat = 0 - state.setTag("weather", "warm") - audio = document.getElementById("bgsound") - audio.currentTime = 0 - audio.volume = 1.0 - audio.play() return "intro".l() - dsc: () -> "dsc".l(Improv, state) + dsc: () -> + if salet.character.ferret == true + return "dsc_ferret".l() + return "dsc".l(Improv, state) afterChoices: () -> if ( salet.character.lastBeat() > 3 and @@ -22,30 +19,73 @@ room "start", salet.character.killed = true salet.character.newBeat() salet.goTo("killed") + if (salet.character.book == true and salet.character.lastBeat() == 2) salet.view.write "**"+"reset_book".l()+"**" + + if (salet.character.window == true and salet.character.lastBeat() == 2) + salet.view.write "**"+"reset_window".l()+"**" + + if (salet.character.window == true 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) salet.character.book = false salet.character.newBeat() salet.view.write "**"+"reset_book_ends".l()+"**" - writers: - window: () -> - # re-enter the room, reroll the description - salet.view.clearContent() - salet.here().entering("start") - return ""+procgen("window")+"" canExit: (to) -> if salet.character.killed and (to == "margo" or to == "alexey") salet.view.clearContent() salet.view.append(""+"#{to}_reaction".l()+"") return false units:[ + unit "window", + order: 5 + dsc: () -> + if salet.character.ferret == true + 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", + order: 6 + dsc: () -> + if salet.character.ferret == true + return "owindow_end".l() + return "owindow".l() + act: () -> + salet.view.clearContent() + salet.here().entering("start") + if salet.character.killed + salet.character.window = true + salet.character.newBeat() + return ""+"window_open".l()+"" + else + return ""+"window_open_no".l()+"" + unit "alexey", + order: 3 + dsc: () -> + "alexey".l(Improv, state) + act: () -> + salet.goTo("alexey") + unit "margo", + order: 4 + dsc: () -> + "margo".l(Improv, state) + act: () -> + salet.goTo("margo") unit "debug", dsc: "
{{Пропустить всё до загадок}}
" act: () -> state.setTag("weather", "cold") salet.here().take(book) salet.here().take(blood) + salet.here().take(ferret) salet.character.newBeat() salet.character["knows_alexey"] = true salet.character["knows_margo"] = true @@ -57,11 +97,12 @@ room "start", ] book = cunit "book", + order: 7 dsc: () -> if salet.character.book - return "book_floor".l() + return "\n\n"+"book_floor".l() else - return "book".l() + return "\n\n"+"book".l() enact: () -> if salet.character.book return "book_act_twice".l() @@ -71,8 +112,22 @@ book = cunit "book", return "book_act".l() blood = cunit "blood", - dsc: "Вы замечаете на полу {{красное пятно.}}" - enact: "Кровь. Вы не очень удивлены." + order: 8 + dsc: "blood_dsc".l() + enact: "blood_act".l() + +ferret = cunit "ferret", + dsc: "ferret_dsc".l() + order: 4 + enact: () -> + if salet.character.window == true and salet.character.book == true + # хорьку никто не мешает + else if salet.character.window == true + return "ferret_one_margo".l() + else if salet.character.book == true + return "ferret_one_alexey".l() + else + return "ferret_act".l() ## ACTUALLY DIALOGUES @@ -153,6 +208,7 @@ room "killed5", state.setTag("weather", "cold") salet.rooms["start"].take(book) salet.rooms["start"].take(blood) + salet.rooms["start"].take(ferret) optionText: "killed5_option".l() dsc: "killed5".l() tags: ["killed"] diff --git a/html/ru.html b/html/ru.html index 28359b1..fbc6417 100644 --- a/html/ru.html +++ b/html/ru.html @@ -29,7 +29,7 @@

Исходный код игры

-

Аудио: felix blume — On a train in Ukraine, going to Chernobyl, лицензия CC-BY

+
@@ -40,7 +40,7 @@ - +