ludumdare37/game/story.coffee

293 lines
7.2 KiB
CoffeeScript
Raw Normal View History

## REAL ROOM
room "start",
clear: false
before: (from) ->
if (!from)
return "intro".l()
2016-12-11 20:45:45 +02:00
dsc: () ->
if salet.character.ferret
2016-12-11 20:45:45 +02:00
return "dsc_ferret".l()
return "dsc".l()
afterChoices: () ->
if (
salet.character.lastBeat() > 3 and
salet.character.killed != true and
salet.character.knows_margo and
salet.character.knows_alexey
)
salet.character.killed = true
2016-12-11 17:12:06 +02:00
salet.character.newBeat()
salet.goTo("killed")
2016-12-11 20:45:45 +02:00
if (salet.character.book and salet.character.lastBeat() == 2)
2016-12-11 17:12:06 +02:00
salet.view.write "**"+"reset_book".l()+"**"
2016-12-11 20:45:45 +02:00
if (salet.character.window and salet.character.lastBeat() == 2)
2016-12-11 20:45:45 +02:00
salet.view.write "**"+"reset_window".l()+"**"
if (salet.character.window and salet.character.lastBeat() > 3)
2016-12-11 20:45:45 +02:00
salet.character.window = false
salet.character.newBeat()
salet.view.write "**"+"reset_window_ends".l()+"**"
if (salet.character.book and salet.character.lastBeat() > 3)
2016-12-11 17:12:06 +02:00
salet.character.book = false
salet.character.newBeat()
salet.view.write "**"+"reset_book_ends".l()+"**"
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
2016-12-11 17:12:06 +02:00
units:[
cunit "window",
2016-12-11 20:45:45 +02:00
order: 5
dsc: () ->
if salet.character.ferret
2016-12-11 20:45:45 +02:00
return "\n\n"+"window_end".l()
return "\n\n"+"window".l()
enact: () ->
return procgen("window")
cunit "owindow",
2016-12-11 20:45:45 +02:00
order: 6
dsc: () ->
if salet.character.ferret
2016-12-11 20:45:45 +02:00
return "owindow_end".l()
return "owindow".l()
enact: () ->
2016-12-11 20:45:45 +02:00
if salet.character.killed
salet.character.window = true
salet.character.newBeat()
return "window_open".l()
2016-12-11 20:45:45 +02:00
else
return "window_open_no".l()
cunit "alexey",
2016-12-11 20:45:45 +02:00
order: 3
dsc: () ->
if salet.character.alexey
return "alexey_final_dsc".l()
if salet.character.ferret
return "alexey_end".l()
2017-11-10 15:00:22 +02:00
return "alexey".l(ImprovEngine, state)
enact: () ->
2016-12-11 20:45:45 +02:00
salet.goTo("alexey")
cunit "margo",
2016-12-11 20:45:45 +02:00
order: 4
dsc: () ->
if salet.character.margo
return "margo_final_dsc".l()
if salet.character.ferret
return "margo_end".l()
2017-11-10 15:00:22 +02:00
"margo".l(ImprovEngine, state)
enact: () ->
2016-12-11 20:45:45 +02:00
salet.goTo("margo")
2016-12-12 08:47:10 +02:00
]
###
cunit "debug",
2016-12-12 08:47:10 +02:00
dsc: "<center>{{Skip until the puzzles}}</center>"
order: 666
enact: () ->
2016-12-11 17:12:06 +02:00
state.setTag("weather", "cold")
salet.here().take(book)
salet.here().take(blood)
2016-12-11 20:45:45 +02:00
salet.here().take(ferret)
2016-12-11 17:12:06 +02:00
salet.character.newBeat()
salet.character["knows_alexey"] = true
salet.character["knows_margo"] = true
salet.here().drop("debug")
salet.character.killed = true
2016-12-12 08:47:10 +02:00
return "Done."
###
2016-12-11 17:12:06 +02:00
book = cunit "book",
2016-12-11 20:45:45 +02:00
order: 7
2016-12-11 17:12:06 +02:00
dsc: () ->
if salet.character.book
2016-12-11 20:45:45 +02:00
return "\n\n"+"book_floor".l()
2016-12-11 17:12:06 +02:00
else
2016-12-11 20:45:45 +02:00
return "\n\n"+"book".l()
2016-12-11 17:12:06 +02:00
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",
2016-12-11 20:45:45 +02:00
order: 8
dsc: "blood_dsc".l()
enact: "blood_act".l()
ferret = cunit "ferret",
dsc: () ->
if salet.character.ferret
return "ferret_dsc_end".l()
return "ferret_dsc".l()
2016-12-11 20:45:45 +02:00
order: 4
enact: () ->
if salet.character.ferret
return salet.goTo("ferret")
if salet.character.window and salet.character.book
2016-12-11 20:45:45 +02:00
# хорьку никто не мешает
salet.character.book = false
salet.character.window = false
salet.character.ferret = true
salet.here().take(conductor)
salet.here().take(table)
salet.view.clearContent()
salet.here().entering("start")
return "ferret_run".l()
else if salet.character.window
2016-12-11 20:45:45 +02:00
return "ferret_one_margo".l()
else if salet.character.book
2016-12-11 20:45:45 +02:00
return "ferret_one_alexey".l()
else
return "ferret_act".l()
conductor = cunit "conductor",
dsc: "conductor".l()
order: 2
enact: "conductor_examine".l()
table = cunit "table",
dsc: "table".l()
order: 7
enact: () ->
if salet.character.book and !salet.character.alexey
salet.character.alexey = true
return "alexey_final".l()
else
return "table_act".l()
## ACTUALLY DIALOGUES
dlg = (name) ->
return room(name, {
before: () ->
if salet.character["knows_#{name}"] != true
salet.character["knows_#{name}"] = true
return "meet_#{name}".l()
choices: "##{name}",
dsc: () ->
2017-11-10 15:00:22 +02:00
"#{name}_dsc".l(ImprovEngine, 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")
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")
room "killed",
clear: false
choices: "#killed"
dsc: "story_call".l()
room "killed2",
clear: false
optionText: "killed2_option".l()
dsc: "killed2".l()
tags: ["killed"]
choices: "#killed"
canView: () ->
true if !salet.isVisited("killed2")
room "killed3",
clear: false
optionText: "killed3_option".l()
dsc: "killed3".l()
tags: ["killed"]
2016-12-11 14:52:58 +02:00
choices: "#killed"
canView: () ->
true if salet.isVisited("killed2") and !salet.isVisited("killed3")
room "killed4_a",
clear: false
optionText: "killed4_option_a".l()
dsc: "killed4_a".l()
tags: ["killed"]
2016-12-11 14:52:58 +02:00
choices: "#killed"
canView: () ->
true if salet.isVisited("killed3") and !salet.isVisited("killed4_b")
room "killed4_b",
clear: false
optionText: "killed4_option_b".l()
dsc: "killed4_b".l()
tags: ["killed"]
2016-12-11 14:52:58 +02:00
choices: "#killed"
canView: () ->
true if salet.isVisited("killed3") and !salet.isVisited("killed4_a")
2016-12-11 14:52:58 +02:00
room "killed5",
clear: false
enter: () ->
state.setTag("weather", "cold")
2016-12-11 17:12:06 +02:00
salet.rooms["start"].take(book)
salet.rooms["start"].take(blood)
2016-12-11 20:45:45 +02:00
salet.rooms["start"].take(ferret)
2016-12-11 14:52:58 +02:00
optionText: "killed5_option".l()
dsc: "killed5".l()
tags: ["killed"]
canView: () ->
true if salet.isVisited("killed4_a") or salet.isVisited("killed4_b")
after: () ->
return salet.goTo("start")
room "ferret",
clear: true
dsc: "ferret_whereto".l()
choices: "#ferret"
room "ferret_close",
clear: false
optionText: "ferret_close".l()
dsc: () ->
if salet.character.window and !salet.character.margo
salet.character.margo = true
return "margo_final".l()
return "ferret_close_dsc".l()
after: () ->
salet.goTo("start")
tags: ["ferret"]
room "ferret_blood",
clear: false
optionText: "ferret_blood".l()
dsc: () ->
if salet.character.alexey and salet.character.margo
salet.goTo("final")
return ""
return "ferret_blood_dsc".l()
tags: ["ferret"]
after: () ->
unless salet.character.alexey and salet.character.margo
salet.goTo("start")
room "ferret_far",
clear: false
optionText: "ferret_far".l()
dsc: "ferret_far_dsc".l()
tags: ["ferret"]
after: () ->
salet.goTo("start")
room "final",
clear: true
dsc: "final".l()