diff --git a/game/begin.coffee b/game/begin.coffee
index dce9fe4..ae3ef6d 100644
--- a/game/begin.coffee
+++ b/game/begin.coffee
@@ -25,6 +25,8 @@ $.getJSON('game/procgen/'+i18n.lang+'.json', (data) ->
salet.init = () ->
salet.character.lastBeat = () ->
return salet.progress.sequence.length - salet.character.beat
+ salet.character.newBeat = () ->
+ salet.character.beat = salet.progress.sequence.length
$(document).ready(() ->
window.addEventListener('popstate', (event) ->
@@ -90,6 +92,12 @@ class ImprovModel
if @getTag(tagName) == undefined
@tags.push([tagName, value])
+cunit = (name, spec) ->
+ spec.act = () ->
+ salet.view.clearContent()
+ salet.here().entering("start")
+ return ''+@enact.fcall(this)+''
+ return unit(name, spec)
state = new ImprovModel
procgen = (tag) ->
return Improv.gen(tag, state)
diff --git a/game/language/ru.coffee b/game/language/ru.coffee
index 7a918d5..fc432c4 100644
--- a/game/language/ru.coffee
+++ b/game/language/ru.coffee
@@ -115,6 +115,9 @@ module.exports =
Вы видите то же купе, но сейчас дверь открыта, и внутри никого нет.
+ За окном осенний тёплый пейзаж сменился метелью.
+ Неужели вы уже в Сибири?
+
Куда все так внезапно ушли?
Верхние полки сложены, а на столе лежит книжка Стивена Кинга.
"""
@@ -171,3 +174,9 @@ module.exports =
У вас созревает план мести.
Но если вы не можете выйти, то как заставить кондуктора прийти сюда?
"""
+ book: "На столике лежит {{книга}} в мягком переплёте."
+ book_floor: "На полу лежит {{книга}} в мягком переплёте."
+ book_act: "Напрягшись, вы берёте книгу и роняете её со стола."
+ book_act_twice: "Книга только упала со столика, а вы и так устали."
+ reset_book: "Алексей замечает книгу на полу и нагибается, чтобы её поднять."
+ reset_book_ends: "Алексей поднимается и кладёт книгу на место."
diff --git a/game/story.coffee b/game/story.coffee
index d6825e2..189c7d0 100644
--- a/game/story.coffee
+++ b/game/story.coffee
@@ -20,8 +20,14 @@ room "start",
salet.character.knows_alexey
)
salet.character.killed = true
- salet.character.beat = salet.progress.sequence.length
+ 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.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
@@ -33,6 +39,40 @@ room "start",
salet.view.clearContent()
salet.view.append(""+"#{to}_reaction".l()+"")
return false
+ units:[
+ unit "debug",
+ dsc: "{{Пропустить интро}}"
+ act: () ->
+ state.setTag("weather", "cold")
+ salet.here().take(book)
+ salet.here().take(blood)
+ salet.character.newBeat()
+ salet.character["knows_alexey"] = true
+ salet.character["knows_margo"] = true
+ salet.here().drop("debug")
+ salet.character.killed = true
+ salet.view.clearContent()
+ salet.here().entering("start")
+ return "*Сделано.*"
+ ]
+
+book = cunit "book",
+ dsc: () ->
+ if salet.character.book
+ return "book_floor".l()
+ else
+ return "book".l()
+ enact: () ->
+ if salet.character.book
+ return "book_act_twice".l()
+ else
+ salet.character.book = true
+ salet.character.newBeat()
+ return "book_act".l()
+
+blood = cunit "blood",
+ dsc: "Вы замечаете на полу {{красное пятно.}}"
+ enact: "Кровь. Вы не очень удивлены."
## ACTUALLY DIALOGUES
@@ -111,6 +151,8 @@ room "killed5",
clear: false
enter: () ->
state.setTag("weather", "cold")
+ salet.rooms["start"].take(book)
+ salet.rooms["start"].take(blood)
optionText: "killed5_option".l()
dsc: "killed5".l()
tags: ["killed"]