Commit 0a75d71a authored by Alexander Yakovlev's avatar Alexander Yakovlev

Структура и объекты

parent b260faa4
......@@ -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) ->
......
......@@ -17,18 +17,38 @@ module.exports =
До Иркутска оставалось ещё двадцать четыре остановки и день пути.
Поезд тихо тронулся.
"""
window: "За {{окном}} проносятся столбы."
dsc: (Improv, state) ->
"""
##### В купе поезда
Это маленькое купе на четырёх человек.
"""
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: """
##### В купе поезда
На верхней полке напротив вас сидит [#{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) проносятся столбы.
"""
"""
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
......@@ -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 "<em>"+procgen("window")+"</em>"
canExit: (to) ->
if salet.character.killed and (to == "margo" or to == "alexey")
salet.view.clearContent()
salet.view.append("<em>"+"#{to}_reaction".l()+"</em>")
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 "<em>"+procgen("window")+"</em>"
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 "<em>"+"window_open".l()+"</em>"
else
return "<em>"+"window_open_no".l()+"</em>"
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: "<center>{{Пропустить всё до загадок}}</center>"
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"]
......
......@@ -29,7 +29,7 @@
<p>
<a href="https://git.oreolek.ru/oreolek/ludumdare37" target="_blank">Исходный код игры</a>
</p>
<p>Аудио: <a href="https://freesound.org/people/felix.blume/sounds/188796">felix blume — On a train in Ukraine, going to Chernobyl</a>, лицензия CC-BY</p>
<!-- <p>Аудио: <a href="https://freesound.org/people/felix.blume/sounds/188796">felix blume — On a train in Ukraine, going to Chernobyl</a>, лицензия CC-BY</p> -->
</div>
<div id="footright">
</div>
......@@ -40,7 +40,7 @@
<!-- CDN JS Libraries -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.5/marked.min.js" integrity="sha384-QXBtGc4014gU26HdCwzgy8TVO+FHSSE4+EvPPiSTpdE9w0KyJy1ocfiIbBl1HLq7" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js" crossorigin="anonymous"></script>
<audio id="bgsound" preload="auto" loop="loop"><source src="audio/bgr.mp3" type='audio/mpeg; codecs="mp3"'></audio>
<!-- <audio id="bgsound" preload="auto" loop="loop"><source src="audio/bgr.mp3" type='audio/mpeg; codecs="mp3"'></audio> -->
<script type="text/javascript" src="game/bundle.js"></script>
</body>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment