diff --git a/TODO b/TODO index 08763b9..0b7aedd 100644 --- a/TODO +++ b/TODO @@ -3,4 +3,6 @@ TODO - bug: mouseover dialogue option, multiple sounds over div's and i's - extra sound when line ends with *italics* - can't click outside to advance -- favicon one-line eye \ No newline at end of file +- favicon one-line eye +- hadouken not shoryken +- Open Sans, for consistency??? \ No newline at end of file diff --git a/index.html b/index.html index c904391..8fb7bda 100644 --- a/index.html +++ b/index.html @@ -292,4 +292,8 @@ + + + + \ No newline at end of file diff --git a/scenes/act2_test.md b/scenes/act2_test.md deleted file mode 100644 index 2677497..0000000 --- a/scenes/act2_test.md +++ /dev/null @@ -1,558 +0,0 @@ -// TODO: CUT TO 2000 words (SANS CODE) - -# act2 - -`SceneSetup.act2();` - -n: party words party words party words - -n: // callback: retweet news story, or subtweet, or Tinder serial killer (or: fallback - anxiety in general) - -`publish("act2-out-1");` - -b: Yelling - -`publish("act2-in-2");` - -r: Badness - -`publish("act2-out-3");` - -b: Oh no - -`publish("act2-flash");` - -h: What the heck - -`publish("act2-in-4");` - -r: Oh ya - -`publish("act2-out-5");` - -b: Oh no - -# oh_no - -[Oh god they all hate you!](#act2a_social) - -[Ogling the host, you pervert?](#act2a_perv) - -[So let's talk about *the meaning of life*.](#act2a_meaning) - -# act2a_social - -b: They're secretly gossiping about you! - -`publish("act2-in-2");` - -b: They're talking behind your back IN FRONT OF YOUR BACK - -b: We're just bringing this party down by being around here. Human, we have to leave *now* before-- - -(#act2b) - -# act2a_perv - -b: // pokemon? - -b: They're more attractive than you, which means if you so much as *look* at them, - -b: then YOU'RE A CREEP - -b: A creepy, crappy, pervert terrible terrible creepazoid bad bad bad cree-- - -(#act2b) - -# act2a_meaning - -b: What can we possibly do that matters in the grand scheme of things? - -b: Even if we somehow change the course of humanity, all of humanity will die one day. - -b: Humanity dies, the sun dies, the entire universe dies, what the hell are we supposed to-- - -(#act2b) - -# act2b - -b: ... - -b: Hey, can... can you hear me? - -b: ... - -b: GASP - -[I must warn you *louder!*](#act2b_louder) - -[I must warn you about a *different* moral/social danger!](#act2b_different) - -[Human, you're ignoring danger! That's dangerous!](#act2b_ignore) - -# act2b_louder - -b: // decide... - -# act2b_louder_social - -b: EMOTIONS ARE CONTAGIOUS! SO IF YOU DON'T LEAVE YOU'LL INFECT EVERYONE WITH YOUR MENTAL ILLNESS! - -b: You'll create a deadly outbreak of SAD LUMP SYNDROME - -b: We need to get out of here and quarantine ourselves forever in a small room with Netflix and food delivery! - -(#act2c) - -# act2b_louder_perv - -b: DON'T BE A CREEP. IT'S AGAINST THE LAW! - -b: Creep Law, Section 74.5: (1) Any Person who checks out (a) that sweet ass (b) those ripped arms (2) shall be hereby referred to as - -b: "A BIG DISGUSTING TRASH PERVERT" - -(#act2c) - -# act2b_louder_meaning - -b: BUT YOU KNOW WHAT'S WORSE THAN HAVING NO IMPACT? HAVING *ALL* THE IMPACT. - -b: Alfred Nobel wanted world peace, and for cultures to understand each other. So he decided to make travel easier. So he needed a way to cheaply create train tunnels. So he invented a new material called "dynamite"... - -b: ...which was used in World War I to KILL MILLIONS OF PEOPLE - -b: IT'S THE BUTTERFLY EFFECT, HUMAN! HOW MANY PEOPLE ARE YOU ACCIDENTALLY KILLING RIGHT NOW - -(#act2c) - -# act2b_different_social - -b: Actually, you know what's worse than no-one liking you? _Everyone_ liking you. - -b: That is, if you become like one of _these_ shallow party animals. A shallow life with shallow friends who only know the shallow you! - -b: Human, we need to get away from these dopamine zombies before they turn us into one of them! - -(#act2c) - -# act2b_different_moral - -b: People are dying in famines and genocides *right now* and you're just partying! - -b: A wise person once said, "the only thing necessary for the triumph of evil is for good folks to do nothing." - -b: YOU'RE DOING NOTHING. - -b: BY PARTYING, YOU'RE HELPING *HITLER*. - -(#act2c) - -# act2b_ignore - -b: You think you're safe just because you took the batteries out of the carbon monoxide detector? - -b: You won't smell the monoxide coming! You'll just get sleepy and then you'll-- - -b: DIEEEEEEEEEEEEEEEEEEEEEE - -(#actbc) - -# act2c - -b: ... - -b: Oh thank goodness human, I think you can hear me again! - -[I'll go (even) *LOUDER!*](#act2c_louder) - -[I'll warn you about *(yet) another* moral/social danger!](#act2c_another) - -[Wait, did you check that punch before drinking it?](#act2c_punch) - -#act2c_louder - -// 6 possibilities - -# act2c_louder_netflix - -b: Actually, is Netflix and food delivery quarantined enough?! We'd still infect the delivery person! - -b: We need to move out to the middle of the Canadian Yukon territories, and have our food delivered to us by drone! - -b: And then they'd have to sterilize the drone after each use to rid it of your SAD LUMP GERMS - -# act2c_louder_law - -b: The BIG DISGUSTING TRASH PERVERT shall be sentenced to no less than five (5) years in one of those medieval public-humiliation things where people throw rotten fruit at them - -b: unless they're actually _into_ that sort of thing - -b: in which case that further proves them being a BIG DISGUSTING TRASH PERVERT - -# act2c_louder_butterfly - -b: BUTTERFLY EFFECT! Did you drive to this party in your fossil-fuel car? - -b: BAM, ONE KID DROWNED IN FLORIDA. - -b: Remember that time you said that mean thing to that stranger? - -b: BAM, THEY'RE PROBABLY SUICIDED BY NOW - -(#act2d) - - -# act2c_louder_zombies - -b: These popularity-zombies will stumble towards you mumbling, - -b: LIIIIIKES. LIIIIIIIIIIKES. - -b: And they'll bite you and turn you into a brainless bro and/or thoughtless thot! - -(#act2d) - -# act2c_louder_hitler - -b: THE NAZIS ARE GOOSE-STEPPING BACK ON THE STREETS RIGHT NOW - -b: And they're saying: - -b: *Good thing those 'good folks' slacked off with crap like 'relaxing' and 'self-care'!* - -b: *Now our plans can go fourth, reich on schedule!* - -(#act2d) - -# act2c_louder_ignore - -b: Come to think about it, do we know if this building _has_ a monoxide detector?! - -b: What if we're all being poisoned *RIGHT NOW?* - -b: WE WOULDN'T EVEN KNOW. ONE MOMENT WE'RE HERE, NEXT MOMENT WE STOP EXISTING FOREVER AND EVER AND EV-- - -(#act2d) - -# act2c_different_social - -b: What if we're just _fundamentally incapable_ of ever being loved, or loving another? - -b: What if something irreversibly broke inside of us a long time ago? Or what if that something never existed in us in the first place? - -b: Oh god we're broken! We're so broken so broken so brok-- - -(#act2d) - -# act2c_different_moral - -b: What if we're just _fundamentally rotten?_ Other people have a strong inner drive to do goodness, but we only do "good" out of guilt or shame, if at all. - -b: What if it's in our nature to hurt others? What if we can't be anything _other_ than a burden to those close to us? - -b: Oh god we're broken! We're so broken so broken so brok-- - -(#act2d) - -# act2c_punch - -b: Like, I'm not being irrational here. People _do_ actually drug in punch bowls. That is an actual danger. - -b: Human, is your head hurting? Do your limbs feel limp? I think we're dying. We need to call an ambulance RIGHT NOW. - -b: HUMAN, WE'RE DYING. WE'RE DYING WE'RE DYING WE'RE DYI-- - -(#act2d) - -# act2d - -h: FUCK! - -h: FUCKING FUCK-FUKKITY _FUUUUUCK_ - -b: Oh thank goodness, human! I'm so glad you can finally hear me again! - -b: Why did you try ignoring me? - -h: Holy whoring hell, you stupid sack of shit. - -h: You know that Native American story? "There are two wolves inside you, one is hope, one is despair. Which wolf wins? The one you feed." - -h: I was trying to fucking _starve_ you, you sadistic asshole. - -h: Fuck it, I'll do positive affirmations instead. - -h: *I am loved. I am good. I am smart. I am beautiful. I am special.* - -[You know "affirmations" were disproven, right?](#act2d_disproven) - -[Golly, human, you're becoming a narcissist!](#act2d_narcissist) - -[ohmygod you can't just credit every "wise" story to Native Americans](#act2d_racist) - -# act2d_disproven - -b: In fact, they actually _backfire_ for people with low self-esteem! - -b: It was a well-designed study – randomized controlled trial, experimenter was blinded as to who was in which group. Here's what they found. If you already had low self-esteem, being asked to repeat affirmations makes you feel *worse* than if you'd said nothing at all! - -b: Wood et al, 2009. Look it up on Google Scholar, human, - -b: THEN STOP SPREADING UNSCIENTIFIC FAKE NEWS - -(#act2e) - -# act2d_narcissist - -b: You _need_ to humbly see your own flaws in order to grow as a person! - -b: You can't spray air freshener over a moldy room! Covering up your flaws with these narcissistic statements will make you worse in the long-run. - -b: Thankfully, I, as your loyal guard-wolf, can alert you to your flaws. And right now, it's- - -b: EVERYTHING. EVERYTHING IS WRONG - -(#act2e) - -# act2d_racist - -b: Native Americans are, like, _actual people_, not a bunch of "noble savages" you can namedrop to make your fortune-cookie advice sound more _exotic_. - -b: You're reducing individual persons & complex cultures to a Hallmark card! That's "benevolent racism", human! - -b: STOP BEING RACIST YOU SQUINTY-EYED JERK - -(#act2e) - -# act2e - -h: FUCKDAMMIT. - -h: You know what? You're _irrational._ - -h: Everyone already knows emotions are irrational! Especially fear! - -h: Why should I listen to a moron shitstain like you?! - -b: ... - -[...Jeez human. That's really hurtful to say.]() - -[Human, I'm in your brain. We're equally rational.]() - -[Wait, what happened to "your feelings are valid"?]() - -# act2e_hurtful - -b: I'm _part_ of you, you know. When you say that, you're hurting _yourself._ - -b: Why are you hitting yourself, human? STOP HITTING YOURSELF. - -(#act2f) - -# act2e_rational - -b: Which means if _I'm_ irrational, then _you're_ irrational! - -b: And if we're both so dumb and stupid, we'll never figure out how to be happy! Oh god we're so lost! So lost so lost so los-- - -(#act2f) - -# act2e_valid - -b: So "they" say that emotions are irrational, that emotions are not to be trusted. - -b: But "they" _also_ say that feelings are valid, that you should always accept your emotions. - -b: Maybe "they" are just full of crap! "They" have fed hurtful lies to you your whole life! - -(#act2f) - -# act2f - -h: ... - -h: I hate this. God, it hurts so much, I hate this. - -h: I can't appease you. I can't ignore you. I can't fight you. - -h: No matter what I do, I can't seem to get rid of yo-- - -b: Well maybe you're NOT _SUPPOSED_ TO GET RID ME. - -b: Jeez, how do you think _I_ feel, human?! - -b: I'm trying my best to be your guard-dog, but you keep seeing me as some Big Bad Wolf! - -b: So I try even _harder_ to alert you to danger. More danger! Louder danger! But no matter how hard I try, you _still_ think of me as your enemy! - -b: Sure, I raise false alarms sometimes. Maybe even most of the time! - -b: But I'm _trying_, human. - -b: ...I'm trying. - -// TODO: MORE EXPLICIT LESSON. "BE PATIENT WITH ME". - -b: ...Would it hurt for you to just sit with me for a while, instead of running away by distracting yourself wi-- - -r: Hey. - -r: It seems like you're caught up in an argument with yourself. - -h2: (nods) - -r: You're not alone, kid. Anxiety is super common. - -r: Heck, just yesterday, I heard someone on campus had a nervous breakdown and smashed their phone / curled up into a ball and cried! - -h2: ...huh imagine that. - -r: That's why I host all these parties. I want to help people be happy. - -h2: ...but my anxiety... - -r: Don't worry, buddy. There's actually a very simple trick to get the negative voices in your head to be quiet forever. - -(...2000) - -r: (gives bottle) - -r: Heads up, it's a lot stronger than... anything, really. - -r: Enjoy! - -(...2000) - -[Oh god.](#act2g) - -[Please don't do this.](#act2g) - -[We don't know what's in that drink.](#act2g) - -# act2g - -// interrupt - -h: Mmm, what an exquisite palette! - -h: A rich flavor of "shut your mind up", with an aftertaste of "don't feel anything ever again". - -b: This is bad. Human, this is really, really bad. - -[This is literally how addiction starts.]() - -[They could've put something bad in that drink.]() - -[I *knew* the host had some terrible neurosis.]() - - -# act2h - -h: Not just delicious, but also cheaper than therapy! - -b: GOD HUMAN STOP - -h: Hehehe! - -h: And what are _you_ gonna do about it, asshole? - -b: I'm so sorry, human. - -b: I'm going to have to use my SPECIAL ATTACK - -[]() - -[]() - -[]() - -# act2h_attack - -h: What's this crap? - -h: You're gonna yap more stupid words at me again to try t-- - -# act2i - -h: WHAT THE HELL WAS THAT - -b: I'm sorry. It was the only way. - -h: I COULD *SEE* IT. I COULD *FEEL* IT. // the blood, the guilt, the humiliation - -b: I'm sorry, human. - -n: [FINISH THEM] - -[{FIGHT: Punch that jerk host.}]() - -[{FLIGHT: Let's get out of here.}]() - -# act2j_fight - -// all the minor callbacks - -b: They were taking advantage of you, a scared vulnerable human. - -b: Punch that asshole. Knock their fucking lights out. - -b: PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THE-- - - -# act2j_flight - -// all the minor callbacks - -b: God, I knew it. The host and all these partygoers are full of neuroses. They dull their pain with distraction. - -b: And they're trying to trick you into doing the same thing! They're corrupting you! We need to get out! - -b: GET OUT GET OUT GET OUT GET OUT GET OUT GET OUT GET OUT GET OUT GET OUT GET OUT GET OUT GET OUT GET OU-- - -# act2k_fight - -h: (punch) - -r: Y-you... - -r: ...are *kinky*. - -r: I like that. You're invited to my party next weekend. - -h: ok thank you bye - -r: I wanna see you let out that *vicious* side of you more, kid! - -(...1000) - -# act2k_flight - -h: ok sorry i have to go - -r: Ah, the voice was too strong, huh? - -r: Come to my party next weekend. I promise I'll mix something even stronger for you. - -h: ok thank you bye - -r: I wanna see you finally let loose, kid! - -(...1000) - -# act2k_end - -b: Human! Are you okay?! - -b: God, that was *close.* We really could've-- - -h: (slam) - -h: I'm going to the party next weekend. - -h: The next time we fight, I'm not just going to *defeat* you... - -h: ...I'm going to fucking *kill* you. - -(...5000) \ No newline at end of file diff --git a/scenes/act3_test.md b/scenes/act3_test.md deleted file mode 100644 index a0fe660..0000000 --- a/scenes/act3_test.md +++ /dev/null @@ -1,218 +0,0 @@ -# act3 - -`SceneSetup.act3();` - -h: meow - -r: blah blah blah blah blah blah blah blah blah blah blah blah - -``` -Game.clearText(); -publish("act3-out"); -music('battle_dark', {volume:0.7, fade:1}); -``` - -(...1500) - -``` -publish("hp_show"); -``` - -n: FINAL ROUND: *FIGHT!* - -h: Yelling - -b: Yelling - -``` -Game.clearText(); -publish("act3-in"); -publish("hp_hide"); -Game.FORCE_CANT_SKIP = true; -music(null,{fade:1}); -``` - -(#act3_walkaway) - -# act3_walkaway - -`publish("start-walkaway-anim");` - -(...2001) - -`publish('hong-next')` - -(...667) - -`publish('hong-next')` - -(...667) - -`publish('hong-next')` - -(...667) - -`publish('hong-next')` - -`Game.FORCE_CANT_SKIP = false;` - -r: What's the matter, kid? - -r: Ya *scared?* - -``` -publish('hong-next'); -publish('hunter-bored'); -``` - -h2: Yes. - -h2: I'm scared. - -`publish('hong-next')` - -h2: And that's okay! - -`publish('hong-next')` - -h2: It's okay to be scared. - -`publish('hong-next')` - -(...500) - -``` -Game.clearText(); -Game.FORCE_CANT_SKIP = true; -``` - -(...1167) - -`publish('hong-next')` - -(...833) - -`publish('hong-next')` - -(...1333) - -`publish('hong-next')` - -(...667) - -`publish('hong-next')` - -(...667) - -`publish('hong-next')` - -(...1333) - -`publish('hong-next')` - -(...501) - -`publish('hong-next')` - -`Game.FORCE_CANT_SKIP = false;` - -(...1001) - -r: Did they just lock the door? - -r: ... - -r: shit. - - - - - -# act3_jump - -`publish("start-jump-anim");` - -(...2001) - -`publish('hong-next')` - -(...833) - -`publish('hong-next')` - -(...501) - -`publish('hong-next')` - -(...501) - -`publish('hong-next')` - -(...1167) - -`publish('hong-next')` - -(...1001) - -`publish('hong-next')` - -b: no... - -`publish('hong-next')` - -(...501) - -`Game.clearText();` - -(...1333) - -`publish('hong-next')` - -(...1333) - -`publish('hong-next')` - -b: no no no - -(...501) - -`Game.clearText();` - -`publish('hong-next')` - -(...2001) - -`publish('hong-next')` - -(...501) - -`publish('hong-next')` - -(...167) - -`publish('hong-next')` - -(...167) - -`publish('hong-next')` - -(...167) - -``` -publish('hong-next'); -publish("hunter-shock"); -``` - -(...833) - -`publish('hong-next')` - -(...167) - -`publish('hong-next')` - -(...167) - -`publish('hong-next')` - -b: NO! \ No newline at end of file diff --git a/scenes/act4.md b/scenes/act4.md index ccc00a8..9335a32 100644 --- a/scenes/act4.md +++ b/scenes/act4.md @@ -111,7 +111,10 @@ h: Maybe we don't have to fight. (...2001) -`publish("smash",[1]);` +``` +publish("smash",[1]); +sfx("grass_step1"); +``` (...2001) @@ -131,6 +134,8 @@ b: I'm a battered shelter dog. b: We've been through rough stuff, possibly trauma, so that's why sometimes I over-react and go-- +`sfx("yaps");` + b: YAP YAP YAP YAP YAP b: But I don't *want* to be a cowardly dog! I want to protect you! I want to be a good dog! @@ -538,13 +543,11 @@ b: Maybe the barista just wants to make some dang coffee, not be an *experiment* h: Well, if it turns out we *are* being a burden... -h: ...that's good to know, too! +h: That's good to know, too! -h: We can then learn how to pro-actively ask people what they're comfortable with, knowing and respecting others' boundaries... +h: We can then learn how to pro-actively ask people what they're comfortable with, to know and respect others' boundaries. -b: ...all that "inter-personal skills" crap we keep seeing in counselor brochures. - -h: Yup. +h: Y'know, all that "inter-personal skills" crap we see in counselor brochures. (#act4_something_else) @@ -756,7 +759,7 @@ h: Anyway, anything else you wanna chat about? {{/if}} {{if _.a4_fears_discussed==2}} -h: Anyway, anything else on your heavy heart? +h: So, anything else on your heavy heart? {{/if}} {{if _.a4_fears_discussed==3}} @@ -843,7 +846,7 @@ s: Ack, do you know how pathetic we sound? How desperate, how *needy*? s: They were enjoying peace and quiet, then we interrupted them! We're such a burden! {{/if}} -a: I- I mean- it's, it's okay if you not, I just... +a: I- I mean- it's, it's okay if not, I just... [Wait, didn't I see you at the party?](#act4d_recognition) @@ -970,7 +973,7 @@ b: I'm sorry! I'm a battered shelter dog! Battered dogs poop on your bed once in b: But if you're patient with me... and just stay and sit with me... -b: Maybe you can domesticate this wolf. +b: Maybe you can tame this wolf. `Game.clearText();` @@ -1073,4 +1076,6 @@ b: AAAAA YOU'RE STILL NOT BEING PRODUCTIVE AAAAA b: AAAAA YOU'RE EATING MORE WHITE BREAD AAAAA {{/if}} +`sfx("yaps");` +b: YAP YAP YAP YAP YAP diff --git a/scenes/act4_test.md b/scenes/act4_test.md deleted file mode 100644 index 3311e08..0000000 --- a/scenes/act4_test.md +++ /dev/null @@ -1,30 +0,0 @@ -# act4 - -`SceneSetup.act4();` - -b: dadasasas - -`publish("act4-out-1");` - -b: asdassadsa - -`publish("act4-in-2");` - -h: asdassadsa - -`publish("act4-out-3");` - -r: asdassadsa - -[Good dog.](#act4f) - -[Good human.](#act4f) - - -# act4f - -b: AAAAA YOU'RE STILL BEING ALONE FIFTEEN CIGARETTES AAAAA - -b: AAAAA YOU'RE STILL NOT BEING PRODUCTIVE AAAAA - -b: AAAAA YOU'RE EATING MORE WHITE BREAD AAAAA \ No newline at end of file diff --git a/scenes/intermission.md b/scenes/intermission.md new file mode 100644 index 0000000..d0f1866 --- /dev/null +++ b/scenes/intermission.md @@ -0,0 +1,67 @@ +# intermission-1 + +``` +SceneSetup.intermission(1); +Game.FORCE_CANT_SKIP = true; +``` + +(...6000) + +``` +publish("show_stats"); +``` + +n2: FEARS YOU USED: + +i: #harm# *BEING HARMED:* {{_.attack_harm}} + +i: #alone# *BEING UNLOVED:* {{_.attack_alone}} + +i: #bad# *BEING A BAD PERSON:* {{_.attack_bad}} + +``` +publish("set_how_many_prompts", [1]); +Game.FORCE_CANT_SKIP = false; +Game.CLICK_TO_ADVANCE = true; +``` + +n5: (game auto-saved! it's ok to quit & continue later) + +``` +Game.clearAll(); +sfx("yelp", {volume:0.5}); +``` + +(...2000) + +(#act2) + + +# intermission-2 + +``` +SceneSetup.intermission(2); +Game.FORCE_CANT_SKIP = true; +``` + +(...6000) + +``` +publish("show_stats"); +``` + +n2: FEARS YOU USED: + +i: #harm# *BEING HARMED:* {{_.attack_harm}} + +i: #alone# *BEING UNLOVED:* {{_.attack_alone}} + +``` +publish("set_how_many_prompts", [1]); +Game.FORCE_CANT_SKIP = false; +Game.CLICK_TO_ADVANCE = true; +``` + +i: #bad# *BEING A BAD PERSON:* {{_.attack_bad}} + +(#act3) \ No newline at end of file diff --git a/scripts/act4/Act4_BG.js b/scripts/act4/Act4_BG.js index 0318cdf..85e1cc5 100644 --- a/scripts/act4/Act4_BG.js +++ b/scripts/act4/Act4_BG.js @@ -12,8 +12,8 @@ Loader.addImages([ ]); Loader.addSounds([ - /*{ id:"squeak", src:"sounds/sfx/squeak.mp3" }, - { id:"record_scratch", src:"sounds/sfx/record_scratch.mp3" }, + { id:"yaps", src:"sounds/sfx/yaps.mp3" }, + /*{ id:"record_scratch", src:"sounds/sfx/record_scratch.mp3" }, { id:"shoryuken", src:"sounds/sfx/shoryuken.mp3" }*/ ]); @@ -273,6 +273,7 @@ function BG_Act4(){ if(stage==0){ Game.clearText(); HP.show(); + sfx("ui_show_choice", {volume:0.4}); } if(stage==1){ HP.hide(true); diff --git a/scripts/game/Game.js b/scripts/game/Game.js index 834fddb..ba4d572 100644 --- a/scripts/game/Game.js +++ b/scripts/game/Game.js @@ -279,6 +279,10 @@ Game.clearText = function(){ Game.wordsDOM.innerHTML = ""; Game.updateText(true); }; +Game.clearAll = function(){ + Game.clearText(); + Game.resetScene(); +}; window.clearText = Game.clearText; // Execute text! Just add it to text DOM. @@ -290,6 +294,7 @@ Game.FORCE_TEXT_DURATION = -1; Game.WHO_IS_SPEAKING = null; // "h", "b", "n" etc... Game.CURRENT_SPEAKING_SPEED = 1; Game.FORCE_NO_VOICE = false; +Game.NO_NARRATOR_SOUNDS = false; Game.executeText = function(line){ return new RSVP.Promise(function(resolve){ @@ -333,9 +338,15 @@ Game.executeText = function(line){ case "n3": // narrator 3 div.className = "narrator-bubble-3"; break; - case "n4": // narrator 3 + case "n4": // narrator 4 div.className = "narrator-bubble-4"; break; + case "n5": // narrator 5 + div.className = "narrator-bubble-5"; + break; + case "i": // Intermission + div.className = "narrator-bubble-i"; + break; } requestAnimationFrame(function(){ requestAnimationFrame(function(){ @@ -448,7 +459,7 @@ Game.executeText = function(line){ }else{ - // IF NARRATOR 1 or 2 or 4 + // IF NARRATOR // *Emphasize multiple words* => *Emphasize* *multiple* *words* var regex = /\*([^\*]*)\*/g; @@ -512,7 +523,9 @@ Game.executeText = function(line){ // SOUND var chr = word.slice(-1); var isEmphasis = (chr=="*"); - voice(isEmphasis ? "narrator_emphasis" : "narrator"); + if(!Game.NO_NARRATOR_SOUNDS){ + voice(isEmphasis ? "narrator_emphasis" : "narrator"); + } }, interval); })(i, interval, word); @@ -539,7 +552,9 @@ Game.executeText = function(line){ var icon = Library.images["fear_"+iconName]; div.children[i].appendChild(icon); icon.style.display = "block"; - icon.style.margin = "0 auto"; + if(speaker!="i"){ + icon.style.margin = "0 auto"; + } icon.style.width = "80px"; icon.style.height = "80px"; @@ -850,7 +865,7 @@ Game.parseLine = function(line){ //////////////////////////////////////////////////////////////////////////////////////////////// Game.canvas.width = 360 * 2; -Game.canvas.height = 450 * 2; +Game.canvas.height = 600 * 2; //450 * 2; Game.canvas.style.width = Game.canvas.width/2 + "px"; Game.canvas.style.height = Game.canvas.height/2 + "px"; Game.context = Game.canvas.getContext("2d"); diff --git a/scripts/game/Options.js b/scripts/game/Options.js index c60511d..b154ec1 100644 --- a/scripts/game/Options.js +++ b/scripts/game/Options.js @@ -58,6 +58,9 @@ Loader.addSounds([ var cta_text1 = $("#cta_text1"); var cta_text2 = $("#cta_text2"); click_to_advance.style.display = "none"; + subscribe("set_how_many_prompts", function(n){ + HOW_MANY_PROMPTS = n; + }); subscribe("show_click_to_advance", function(){ cta_text1.style.display = (HOW_MANY_PROMPTS>0) ? "inline" : "none"; @@ -76,6 +79,9 @@ Loader.addSounds([ currentBlinkingInterval = null; }); + subscribe("update_text_speed", function(){ + updateText(); + }); var currentBlinkingInterval; var blinkCTA = function(){ currentBlinkingInterval = setInterval(function(){ diff --git a/scripts/game/Sprite.js b/scripts/game/Sprite.js index 555477d..ae89bd9 100644 --- a/scripts/game/Sprite.js +++ b/scripts/game/Sprite.js @@ -99,6 +99,9 @@ function Sprite(config){ var scaleY = self.scale / self.squash; ctx.scale(scaleX, scaleY); + // Rotation + ctx.rotate(self.rotation); + // Alpha ctx.globalAlpha = self.alpha; diff --git a/scripts/intermission/Intermission_BG.js b/scripts/intermission/Intermission_BG.js new file mode 100644 index 0000000..b6d45fb --- /dev/null +++ b/scripts/intermission/Intermission_BG.js @@ -0,0 +1,60 @@ +Loader.addImages([ + { id:"intermission_bg", src:"sprites/intermission/bg.png" }, + { id:"intermission_bb", src:"sprites/intermission/bb.png" }, + { id:"youwin", src:"sprites/intermission/youwin.png" } +]); + +function BG_Intermission(STAGE){ + + var self = this; + + // ATTACKS + _.attack_harm = 1; + _.attack_alone = 2; + _.attack_bad = 4; + + // Sprites! + self.bgSprite = new Sprite({ + image: Library.images.intermission_bg, + grid:{ width:1, height:1 }, + frame:{ width:3000, height:3000 }, + anchor:{ x:1500/2, y:1500/2 }, + x:180, y:600 + }); + self.youwinSprite = new Sprite({ + image: Library.images.youwin, + grid:{ width:1, height:2 }, + frame:{ width:720, height:600 } + }); + self.youwinSprite.gotoFrame( STAGE==1 ? 0 : 1 ); + self.bbSprite = new Sprite({ + image: Library.images.intermission_bb, + grid:{ width:1, height:2 }, + frame:{ width:720, height:500 }, + y: 410 + }); + self.bbSprite.gotoFrame( STAGE==1 ? 0 : 1 ); + + self.update = function(){ + self.bgSprite.rotation += Math.TAU/2500; + }; + + self.draw = function(ctx){ + ctx.save(); + self.bgSprite.draw(ctx); + self.youwinSprite.draw(ctx); + self.bbSprite.draw(ctx); + ctx.restore(); + }; + + var _subscriptions = []; + _subscriptions.push( + subscribe("show_stats", function(){ + self.youwinSprite.visible = false; + }) + ); + self.kill = function(){ + _subscriptions.forEach(unsubscribe); + }; + +} \ No newline at end of file diff --git a/scripts/intermission/Intermission_SceneSetup.js b/scripts/intermission/Intermission_SceneSetup.js new file mode 100644 index 0000000..b82c9f9 --- /dev/null +++ b/scripts/intermission/Intermission_SceneSetup.js @@ -0,0 +1,38 @@ +Loader.addSounds([ + { id:"intermission", src:"sounds/sfx/intermission.mp3" } +]); + +SceneSetup.intermission = function(STAGE){ + + Game.resetScene(); + + // RESET HP + HP.reset(); + + // Music + sfx('intermission', {volume:0.9}); + + // Background + var bg = new BG_Intermission(STAGE); + Game.scene.children.push(bg); + + // HACK + Game.TEXT_SPEED = 0; + Game.FORCE_TEXT_Y = 10; + Game.FORCE_CANT_SKIP = true; + Game.NO_NARRATOR_SOUNDS = true; + $("#click_to_advance").style.color = "#000"; + + // KILL + Game.scene.kill = function(){ + + Game.clearText(); + + publish("update_text_speed"); + Game.FORCE_TEXT_Y = -1; + Game.FORCE_CANT_SKIP = false; + Game.NO_NARRATOR_SOUNDS = false; + $("#click_to_advance").style.color = ""; + }; + +}; \ No newline at end of file diff --git a/scripts/main.js b/scripts/main.js index bec3895..c343ef8 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -4,8 +4,10 @@ Loader.addScenes([ //"scenes/act1.md", //"scenes/act1_end.md", //"scenes/PROMO.md" - //"scenes/act2.md", - "scenes/act4.md", + "scenes/act2.md", + //"scenes/act3.md", + //"scenes/act4.md", + "scenes/intermission.md", ]); Loader.load(function(progress){ @@ -28,6 +30,6 @@ subscribe("START_GAME", function(){ $("#loading").style.display = "none"; Game.start(); - Game.goto("act4"); + Game.goto("intermission-1"); }); \ No newline at end of file diff --git a/sounds/sfx/intermission.mp3 b/sounds/sfx/intermission.mp3 new file mode 100644 index 0000000..3ab26af Binary files /dev/null and b/sounds/sfx/intermission.mp3 differ diff --git a/sounds/sfx/yaps.mp3 b/sounds/sfx/yaps.mp3 new file mode 100644 index 0000000..d13c9cf Binary files /dev/null and b/sounds/sfx/yaps.mp3 differ diff --git a/sprites/intermission/bg.png b/sprites/intermission/bg.png index c43b669..0d86349 100644 Binary files a/sprites/intermission/bg.png and b/sprites/intermission/bg.png differ diff --git a/sprites/intermission/youwin.png b/sprites/intermission/youwin.png new file mode 100644 index 0000000..8d7f4cb Binary files /dev/null and b/sprites/intermission/youwin.png differ diff --git a/styles/game.css b/styles/game.css index 63a9bd4..2903693 100644 --- a/styles/game.css +++ b/styles/game.css @@ -29,7 +29,7 @@ div{ /*, #game_words, #game_choices, #paused, #options, #loading, #gear, #about, width: 360px; height: 600px; - background: #2E2E2E; + background: #111; font-size: 20px; font-family: Helvetica, Arial, sans-serif; @@ -611,7 +611,7 @@ DIALOGUEZ background-position: -600% 0px; } -.narrator-bubble, .narrator-bubble-2, .narrator-bubble-4{ +.narrator-bubble, .narrator-bubble-2, .narrator-bubble-4, .narrator-bubble-i, .narrator-bubble-5{ position: relative; color: #FFFFFF; text-align: center; @@ -650,7 +650,7 @@ DIALOGUEZ height: calc(100% + 4px); } -.narrator-bubble i, .narrator-bubble-2 i, .narrator-bubble-4 i{ +.narrator-bubble i, .narrator-bubble-2 i, .narrator-bubble-4 i, .narrator-bubble-i i{ font-style: normal; color: #ff4040; } @@ -681,6 +681,30 @@ DIALOGUEZ transition: all 0.3s ease-in-out;*/ } +.narrator-bubble-i { + overflow: hidden; + text-align: left; + color: #000; + margin-bottom: 0; + margin-top: 0; + padding-top: 15px; + height: 65px; +} +.narrator-bubble-i img{ + float:left; + margin: 0 20px; + position: relative; + top: -13px; +} +.narrator-bubble-5{ + color: #000; + font-weight: bold; + font-size: 18px; + line-height: 20px; + width: 270px; + margin: 0 auto; + padding: 10px 0 7px 0; +} .hong-bubble { position: relative; @@ -874,7 +898,7 @@ DIALOGUEZ position: absolute; bottom:0; - background: #2E2E2E; + /*background: #2E2E2E;*/ text-align: center; color: #fff; font-weight: lighter;