Можно разговаривать с NPC! (ура)
А ещё я исправил баг с эффектами.
This commit is contained in:
parent
80f30194d7
commit
e572061fb2
|
@ -102,6 +102,7 @@ gulp.task('serve', ['build'], () ->
|
|||
gulp.watch(['./sass/*.scss'], ['sass'])
|
||||
gulp.watch(['./img/*.png', './img/*.jpeg', './img/*.jpg'], ['img'])
|
||||
gulp.watch(['./game/*.coffee'], ['coffee']);
|
||||
gulp.watch(['./game/procgen/*/*.cson'], ['concatCoffee']);
|
||||
|
||||
gulp.watch(['./build/css/main.css'], sassListener)
|
||||
gulp.watch(
|
||||
|
|
|
@ -22,6 +22,10 @@ $.getJSON('game/procgen/'+i18n.lang+'.json', (data) ->
|
|||
$.holdReady( false )
|
||||
)
|
||||
|
||||
salet.init = () ->
|
||||
salet.character.lastBeat = () ->
|
||||
return salet.progress.sequence.length - salet.character.beat
|
||||
|
||||
$(document).ready(() ->
|
||||
window.addEventListener('popstate', (event) ->
|
||||
salet.goBack()
|
||||
|
@ -65,3 +69,27 @@ actlink = (content, ref) ->
|
|||
class ImprovModel
|
||||
constructor: () ->
|
||||
@tags = []
|
||||
getTag: (tagName) ->
|
||||
for tag in @tags
|
||||
if tag[0] == tagName
|
||||
return tag[1]
|
||||
return undefined
|
||||
hasTag: (tagName) ->
|
||||
for tag in @tags
|
||||
if tag[0] == tagName
|
||||
return true
|
||||
return false
|
||||
setTag: (tagName, value) ->
|
||||
for tag, index in @tags
|
||||
if tag[0] == tagName
|
||||
@tags[index][1] = value
|
||||
return true
|
||||
@tags.push([tagName, value])
|
||||
return true
|
||||
setTagIfNotPresent: (tagName, value) ->
|
||||
if @getTag(tagName) == undefined
|
||||
@tags.push([tagName, value])
|
||||
|
||||
state = new ImprovModel
|
||||
procgen = (tag) ->
|
||||
return Improv.gen(tag, state)
|
||||
|
|
|
@ -3,26 +3,74 @@ module.exports =
|
|||
erase_message: "Это навсегда удалит вашего персонажа и немедленно вернёт вас на старт игры. Вы уверены?"
|
||||
back: "Обратно"
|
||||
intro: """
|
||||
-- Только что звонили из клуба. <..>
|
||||
# Не забыть назвать игру
|
||||
|
||||
Наконец-то. Наконец-то эти однообразные концерты закончились, и ваша группа
|
||||
поехала на гастроли. По Сибири. Играть очень народный фолк.
|
||||
|
||||
Именно проклиная всё, что было с вами по ту сторону Урала, вы едете по трассе
|
||||
прямо на восток, пока не приедете в Самое Холодное Место.
|
||||
А оттуда уже можно будет город за городом прыгать домой.
|
||||
"""
|
||||
dsc: (Improv) -> """
|
||||
### В машине
|
||||
dsc: (Improv, state) -> """
|
||||
##### В машине
|
||||
|
||||
Рядом с вами сидит [Лёша](alexey) и #{Improv.gen("alexey")}
|
||||
На переднем сидении [Марго](margo) #{Improv.gen("margo")}
|
||||
Вы сидите на заднем сидении, за спиной водителя. [Катя](katie) #{Improv.gen("katie")}
|
||||
Рядом с вами сидит [Лёша](alexey). #{Improv.gen("alexey", state)}
|
||||
Передним пассажиром едет [Марго](margo). #{Improv.gen("margo", state)}
|
||||
Вы сидите на заднем сидении, за спиной водителя [Кати](katie). #{Improv.gen("katie", state)}
|
||||
|
||||
Вы положили в карман дверцы [мобильный телефон.](phone)
|
||||
За [окном машины](./_writer_window) проносится трасса.
|
||||
|
||||
#{Improv.gen("you")}
|
||||
#{Improv.gen("you", state)}
|
||||
"""
|
||||
story_call: """
|
||||
У Лёши звонит телефон.
|
||||
"""
|
||||
alexey_dsc: (Improv, state) -> """
|
||||
Лучший клавишник России по мнению Маргариты (что не мешает ему сидеть на перкуссии),
|
||||
золотой самородок Нижнего Новгорода и просто -- ОН.
|
||||
|
||||
#{Improv.gen("alexey", state)}
|
||||
"""
|
||||
margo_dsc: (Improv, state) -> """
|
||||
#{Improv.gen("margo", state)}
|
||||
"""
|
||||
katie_dsc: (Improv, state) -> """
|
||||
#{Improv.gen("katie", state)}
|
||||
"""
|
||||
katie_bye: """
|
||||
-- Ладно, не буду отвлекать.
|
||||
|
||||
Катя многозначительно молчит в ответ.
|
||||
"""
|
||||
margo_bye: """
|
||||
-- Ну ладно, у меня тут в окне важные дела.
|
||||
|
||||
-- Всё интересное мы уже проехали.
|
||||
|
||||
-- А я не хочу ничего пропустить!
|
||||
"""
|
||||
alexey_bye: """
|
||||
Я замолкаю. Разговор быстро затухает, как будто мы и не говорили вовсе.
|
||||
"""
|
||||
alexey_mood: "Как настроение, Лёш?"
|
||||
alexey_mood_answ: "Паршивое. Но это нормально, оно всегда паршивое."
|
||||
alexey_speed: "Как думаешь, скоро приедем?"
|
||||
alexey_speed_answ: """
|
||||
-- Как думаешь, скоро приедем?
|
||||
|
||||
-- Приедем, как приедем. В прошлом городе приехали вовремя, а зрителей не было.
|
||||
А до этого опоздали, и был полный зал. Хочешь, порепетируем?
|
||||
|
||||
-- Не надо.
|
||||
"""
|
||||
phone_dsc: "Вы открываете список контактов. Кому бы позвонить…"
|
||||
director_prompt: "Директор музыкального клуба"
|
||||
director_dsc: """
|
||||
— Алло? Анна Борисовна?
|
||||
"""
|
||||
bye: "Попрощаться"
|
||||
bye: "Закончить разговор"
|
||||
cyalater: """
|
||||
— Спасибо. Созвонимся.
|
||||
"""
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
phrases: [
|
||||
"обнимает гитару."
|
||||
"насвистывает свою партию в песне про солнце."
|
||||
"задумчиво смотрит в одну точку."
|
||||
"Он обнимает футляр с гитарой Марго."
|
||||
"Он насвистывает свою партию в песне про солнце."
|
||||
"Он задумчиво смотрит в одну точку."
|
||||
"Он выудил откуда-то томик Стивена Кинга и взахлёб читает."
|
||||
"Он развалился, уткнув ноги в спинку переднего сиденья."
|
||||
]
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
phrases: [
|
||||
"выжимает из машины всё, что дозволено правилами."
|
||||
"Она выжимает из машины всё, что дозволено правилами."
|
||||
]
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
phrases: [
|
||||
"напевает про себя весёлый мотивчик."
|
||||
"Она напевает про себя весёлый мотивчик."
|
||||
]
|
||||
|
|
|
@ -8,6 +8,7 @@ groups: [
|
|||
['weather', 'warm']
|
||||
]
|
||||
phrases: [
|
||||
'В машине душно, а за окном солнышко.'
|
||||
]
|
||||
,
|
||||
tags: [
|
||||
|
|
|
@ -1,3 +1,15 @@
|
|||
phrases: [
|
||||
"Вы сжимаете родную флейту. Только бы не опоздать."
|
||||
groups: [
|
||||
tags: [
|
||||
['mood', 'calm'] # спокойное настроение
|
||||
]
|
||||
phrases: [
|
||||
"Вам хорошо и спокойно."
|
||||
]
|
||||
,
|
||||
tags: [
|
||||
['mood', 'shaky'] # нервное состояние
|
||||
]
|
||||
phrases: [
|
||||
"Вы сжимаете родную флейту. Только бы не опоздать."
|
||||
]
|
||||
]
|
||||
|
|
|
@ -1,30 +1,69 @@
|
|||
## REAL ROOM
|
||||
|
||||
room "start",
|
||||
clear: false
|
||||
before: (from) ->
|
||||
if (!from)
|
||||
salet.character.beat = 0
|
||||
state.setTag("weather", "warm")
|
||||
state.setTag("mood", "calm")
|
||||
return "intro".l()
|
||||
dsc: () -> "dsc".l(Improv)
|
||||
dsc: () -> "dsc".l(Improv, state)
|
||||
beforeChoices: () ->
|
||||
if salet.character.lastBeat() > 3 and salet.character.heard_call == false
|
||||
salet.character.heard_call = true
|
||||
salet.character.beat = salet.progress.sequence.length
|
||||
salet.view.write "<b>#{"story_call".l()}</b>"
|
||||
writers:
|
||||
window: () ->
|
||||
# re-enter the room, reroll the description
|
||||
salet.view.clearContent()
|
||||
salet.here().entering("start")
|
||||
return "<em>"+Improv.gen("window")+"</em>"
|
||||
return "<em>"+procgen("window")+"</em>"
|
||||
|
||||
room "phone",
|
||||
choices: "#call",
|
||||
dsc: "phone_dsc".l()
|
||||
## ACTUALLY DIALOGUES
|
||||
|
||||
dlg = (name) ->
|
||||
return room(name, {
|
||||
choices: "##{name}",
|
||||
dsc: () ->
|
||||
"#{name}_dsc".l(Improv, state)
|
||||
})
|
||||
|
||||
dlg_bye = (name) ->
|
||||
return room("#{name}_bye", {
|
||||
clear: false
|
||||
tags: [name]
|
||||
optionText: "bye".l()
|
||||
dsc: "#{name}_bye".l()
|
||||
after: () ->
|
||||
return salet.goTo("start")
|
||||
})
|
||||
|
||||
dlg("alexey")
|
||||
dlg("margo")
|
||||
dlg("katie")
|
||||
dlg("phone")
|
||||
|
||||
dialogue "alexey_mood".l(), "alexey", "alexey", "alexey_mood_answ".l()
|
||||
dialogue "alexey_speed".l(), "alexey", "alexey", "alexey_speed_answ".l()
|
||||
|
||||
dlg_bye("alexey")
|
||||
dlg_bye("margo")
|
||||
dlg_bye("katie")
|
||||
|
||||
room "director",
|
||||
tags: ["call"],
|
||||
tags: ["phone"],
|
||||
choices: "#director"
|
||||
optionText: "director_prompt".l()
|
||||
dsc: "director_dsc".l()
|
||||
|
||||
dialogue "bye".l(), "director", "call", "cyalater".l()
|
||||
# особый диалог прощания, потому что у него особый текст на возврате
|
||||
dialogue "bye".l(), "director", "phone", "cyalater".l()
|
||||
|
||||
# Virtual room to go around limitations
|
||||
room "vstart",
|
||||
tags: ["call"]
|
||||
tags: ["phone"]
|
||||
optionText: (from) ->
|
||||
switch from
|
||||
when "phone" then "end_phone".l()
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
<div class="fixed container">
|
||||
<div id="tools_wrapper" class="row">
|
||||
<div class="buttons">
|
||||
<button id="night" class="btn btn-outline-primary">Night mode</button>
|
||||
<button id="erase" class="btn btn-outline-danger">Restart</button>
|
||||
<button id="night" class="btn btn-outline-primary">Night mode</button>
|
||||
</div>
|
||||
</div> <!-- End of div.tools_wrapper -->
|
||||
</div>
|
||||
|
|
14
html/ru.html
14
html/ru.html
|
@ -12,22 +12,12 @@
|
|||
<div class="fixed container">
|
||||
<div id="tools_wrapper" class="row">
|
||||
<div class="buttons">
|
||||
<button id="night" class="btn btn-outline-primary">Night mode</button>
|
||||
<button id="erase" class="btn btn-outline-danger">Restart</button>
|
||||
<button id="erase" class="btn btn-outline-danger">Заново</button>
|
||||
<button id="night" class="btn btn-outline-primary">Ночной режим</button>
|
||||
</div>
|
||||
</div> <!-- End of div.tools_wrapper -->
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div id="title" class="title">
|
||||
<div class="label">
|
||||
<h1>Не забыть назвать игру</h1>
|
||||
<noscript>
|
||||
<p class="noscript_message">This game requires Javascript.</p>
|
||||
</noscript>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content_wrapper" class="row">
|
||||
<div id="content" class="content">
|
||||
<noscript>You need to turn on Javascript to play this game.</noscript>
|
||||
|
|
|
@ -72,9 +72,7 @@ body {
|
|||
#tools_wrapper {
|
||||
background: $body-bg;
|
||||
.buttons {
|
||||
@include make-col(6);
|
||||
@include make-col-offset(6);
|
||||
text-align: right;
|
||||
text-align: left;
|
||||
}
|
||||
button {
|
||||
display: inline-block;
|
||||
|
@ -82,6 +80,7 @@ body {
|
|||
}
|
||||
#content_wrapper {
|
||||
background: $text_background;
|
||||
padding-top: 2em;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.content {
|
||||
|
|
Loading…
Reference in New Issue