dialogue = require('../../lib/dialogue.coffee') phrase = require('../../lib/phrase.coffee') #oneOf = require('../../lib/oneOf.coffee') require('salet') ImprovEngine = require('improv') Improv = {} i18n.push("ru", require('../../game/language/ru.coffee')) i18n.push("en", require('../../game/language/en.coffee')) salet.game_id = "0ee0825d-0c71-4a08-bfe5-730e575df26d" salet.game_version = "1.0" $.getJSON('game/procgen/'+i18n.lang+'.json', (data) -> Improv = new ImprovEngine(data, { filters: [ ImprovEngine.filters.mismatchFilter() ] reincorporate: false }) $.holdReady( false ) ) salet.init = () -> salet.character.lastBeat = () -> 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) -> salet.goBack() ) $("#night").on("click", () -> if (window.night) styles = { "-webkit-filter": "" "filter": "" "background-color": "" } $("body").css(styles) $("#night").removeClass("active") window.night = false else styles = { "-webkit-filter": "invert(1)hue-rotate(180deg)" "filter": "invert(1)hue-rotate(180deg)" "background-color": "#000" } $("body").css(styles) $("#night").addClass("active") window.night = true ) salet.beginGame() ) ### Element helpers. There is no real need to build monsters like a().id("hello") because you won't use them as is. It does not make sense in context, the author has Markdown and all utilities to *forget* about the markup. ### way_to = (content, ref) -> return "#{content}" textlink = (content, ref) -> return "#{content}" actlink = (content, ref) -> return "#{content}" 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]) cunit = (name, spec) -> spec.act = () -> # re-enter the room, reroll the description salet.view.clearContent() r = salet.here() r.entering(r.name) return ''+@enact.fcall(this)+'' return unit(name, spec) state = new ImprovModel procgen = (tag) -> return Improv.gen(tag, state)