diff --git a/scenes/act1.md b/scenes/act1.md index fcd7b05..462c3dd 100644 --- a/scenes/act1.md +++ b/scenes/act1.md @@ -2,13 +2,15 @@ `SceneSetup.act1();` -n: THIS IS A HUMAN +(...300) -`publish("scene", ["add_beebee"])` +n: AND THIS IS YOU, THAT HUMAN'S ANXIETY -n: THIS IS YOU, THE HUMAN'S ANXIETY +`hong({mouth:"0_neutral", eyes:"0_annoyed"})` -h: Oh good, it's you. I was hoping to *not* eat in peace today. +h: Oh good, I was hoping to *not* eat in peace today. + +`hong({eyes:"0_neutral"})` n: YOUR JOB IS TO PROTECT YOUR HUMAN FROM *DANGER* @@ -24,29 +26,38 @@ n: QUICK, WARN THEM! # act1a_alone +`bb({mouth:"small", eyes:"narrow"})` + b: Don't you know loneliness is associated with premature death as much as smoking 15 cigarettes a day?- `Game.OVERRIDE_TEXT_SPEED = 2;` +`bb({mouth:"normal", eyes:"normal_right"})` + b: (Holt-Lunstad et al, 2010, PLoS Medicine) -h: Thanks for citing your sources but-- +`hong({eyes:"0_annoyed"})` + +h: Um, thanks for citing your sources but-- `Game.OVERRIDE_TEXT_SPEED = 2;` -`bb("fear", "normal", "fear")` +`bb({body:"fear", mouth:"normal", eyes:"fear"})` b: Which means if you don't hang out with someone *right now* you're gonna- -`bb("panic")` +`bb({body:"panic"})` b: DIEEEEEEEEEEEEEEEEEEE -`HP.attackHong("20p")` +``` +bb({body:"normal", mouth:"normal", eyes:"normal"}); +hong({mouth:"0_shock", eyes:"0_shock"}); +attack("20p", "alone"); +publish("hp_show"); +``` -(...1000) - -`bb("normal", "normal", "normal")` +(...2500) `_.fifteencigs = true` @@ -56,23 +67,40 @@ n: YOU USED *FEAR OF BEING UNLOVED* # act1a_study +`hong({eyes:"0_annoyed"})` + h: I'd rather not get crumbs on my textbo-- -`Game.OVERRIDE_TEXT_SPEED = 2.0;` +``` +bb({mouth:"normal", eyes:"fear"}); +Game.OVERRIDE_TEXT_SPEED = 2.0; +``` b: If you don't study you'll be expelled from college and you'll waste your parents' money and then they'll say +`bb({mouth:"small", eyes:"narrow"})` + b: “you have brought dishonor to our family, now we'll all have to commit seppuku” -`Game.OVERRIDE_TEXT_SPEED = 2.0;` +``` +bb({body:"fear", mouth:"normal", eyes:"fear"}); +Game.OVERRIDE_TEXT_SPEED = 2.0; +``` b: and then you'll- +`bb({body:"panic"})` + b: DIEEEEEEEEEEEEEEEEEEE -`HP.attackHong("20p")` +``` +bb({body:"normal", mouth:"normal", eyes:"normal"}); +hong({mouth:"0_shock", eyes:"0_shock"}); +attack("20p", "alone"); +publish("hp_show"); +``` -(...1000) +(...2500) `_.seppuku = true` @@ -82,17 +110,29 @@ n: YOU USED *FEAR OF BEING A BAD PERSON* # act1a_bread +`hong({eyes:"0_annoyed"})` + h: Have those studies been replicat-- -`Game.OVERRIDE_TEXT_SPEED = 2;` +``` +bb({body:"fear", mouth:"normal", eyes:"fear"}); +Game.OVERRIDE_TEXT_SPEED = 2.0; +``` b: Processed wheat will spike your blood sugar and ruin your organs so they'll have to amputate all your limbs and then you'll- +`bb({body:"panic"})` + b: DIEEEEEEEEEEEEEEEEEEE -`HP.attackHong("20p")` +``` +bb({body:"normal", mouth:"normal", eyes:"normal"}); +hong({mouth:"0_shock", eyes:"0_shock"}); +attack("20p", "alone"); +publish("hp_show"); +``` -(...1000) +(...2500) `_.whitebread = true` @@ -104,17 +144,25 @@ n: YOU USED *FEAR OF BEING HARMED* n: IT'S SUPER EFFECTIVE +`bb({mouth:"smile", eyes:"smile"});` + b: I am best protector! n: BUT YOU'RE NOT DONE SAVING YOUR HUMAN YET -n: GET YOUR HUMAN'S "WILLPOWER BAR" TO ZERO +n: GET YOUR HUMAN'S ENERGY BAR TO ZERO n: YOUR MOVES ARE: FEAR OF *BEING HARMED,* *BEING UNLOVED,* AND *BEING A BAD PERSON* n: (PRO TIP: TRY PLAYING THE CHOICES THAT MOST HIT YOUR DEEPEST, DARKEST FEARS!) -h: ...you know what maybe it's time to check my phone. +h: ... + +`hong({body:"putaway"})` + +h: you know what maybe it's time to check my phone. + +`hong({body:"phone1", mouth:"neutral", eyes:"neutral"})` n: PROTECT YOUR HUMAN @@ -122,26 +170,36 @@ n: FROM THE WORLD. FROM OTHER PEOPLE. FROM THEMSELF. n: GOOD LUCK -(#act1c) - -# act1c - (...500) `Game.clearText()` (...500) +(#act1c) + +# act1c + n: ROUND ONE: *FIGHT!* +`bb({body:"normal", mouth:"normal", eyes:"normal"});` + h: Huh. Facebook feed says there's a party happening this weekend. +`bb({eyes:"uncertain"});` + b: Doesn't that weirdo throw a party *every* weekend? +`bb({eyes:"uncertain_right"});` + b: Must be some kind of underlying neurosis there. +`hong({eyes:"surprise"});` + h: Also, I got an invite? +`bb({eyes:"narrow", mouth:"normal"});` + b: Well then! [Say yes, or you'll die from loneliness](#act1c_loner) @@ -156,15 +214,24 @@ b: Well then! b: Fifteen cigarettes a day, human. Fifteen. {{/if}} +{{if !_.fifteencigs}} +`Game.OVERRIDE_TEXT_SPEED = 1.5;` +{{/if}} + {{if !_.fifteencigs}} b: And then no one will show up at your funeral then they'll just dump your ashes into the ocean and you become whale poop. {{/if}} {{if !_.fifteencigs}} `_.whalepoop = true` {{/if}} -`HP.attackHong("10p")` +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "alone"); +``` -(...1000) +(...2500) + +`bb({eyes:"normal"});` {{if !_.fifteencigs}} b: So yeah you should go to that party. @@ -178,6 +245,8 @@ b: Just bring a textbook to study while you're there. b: Just as long as they don't serve WHITE BREAD {{/if}} +`hong({mouth:"anger", eyes:"anger"});` + h: GOD. If it'll make you shut up, fine. h: I'll say yes. @@ -192,10 +261,16 @@ b: Whale poop, human. Whale poop. # act1c_drugs +`bb({mouth:"small", eyes:"fear"});` + {{if _.whitebread}} b: or even worse... WHITE BREAD {{/if}} +{{if _.whitebread}} +`Game.OVERRIDE_TEXT_SPEED = 1.5;` +{{/if}} + {{if _.whitebread}} b: You'll overdose on so much meth and white bread they won't be able to fit your fat corpse into the cremation furnace. {{/if}} @@ -204,14 +279,19 @@ b: You'll overdose on so much meth and white bread they won't be able to fit you b: You'll overdose on so many drugs the undertaker will wonder how your body was *already* embalmed. {{/if}} -`HP.attackHong("10p")` +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "harm"); +``` -(...1000) +(...2500) {{if _.seppuku}} b: Besides, can't party, you need to study so your parents don't commit seppuku. {{/if}} +`hong({mouth:"anger", eyes:"anger"});` + h: GOD. If it'll make you shut up, fine. h: I'll say no. @@ -222,6 +302,10 @@ h: I'll say no. # act1c_sad +`bb({eyes:"uncertain_right", mouth:"normal"});` + +`Game.OVERRIDE_TEXT_SPEED = 1.5;` + {{if _.fifteencigs}} b: All you ever do is cry in a corner and worry about how loneliness is as deadly as 15 cigarettes a day. {{/if}} @@ -234,11 +318,33 @@ b: All you ever do at parties is worry about how you should be studying instead. b: All you ever do is just panic about the unhealthy food options and think about how every tiny bit is going to kill you. {{/if}} -h: GEE I WONDER WHY +``` +bb({mouth:"normal", eyes:"normal"}); +hong({mouth:"neutral", eyes:"lookaway"}); +``` -`HP.attackHong("10p")` +h: gee i wonder why -(...1000) +`hong({eyes:"neutral"});` + +`Game.OVERRIDE_TEXT_SPEED = 1.5;` + +b: So if you go you'll make them feel bad, but if you reject their invite you'll also make them feel bad! + +`bb({body:"fear", eyes:"fear"});` + +`Game.OVERRIDE_TEXT_SPEED = 2.0;` + +b: ALL YOU DO IS MAKE PEOPLE FEEL BAD, SO YOU SHOULD FEEL BAD + +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "bad"); +``` + +(...2500) + +`hong({mouth:"anger", eyes:"anger"});` h: Ugh. If it'll make you shut up, fine. @@ -250,10 +356,19 @@ h: I'll ignore the invite. # act1d +``` +bb({body:"normal", mouth:"normal", eyes:"normal"}); +hong({mouth:"neutral", eyes:"annoyed"}); +``` + h: Anyway. Facebook's too much. I need something calmer, less anxiety-producing. +`hong({eyes:"neutral"});` + h: What's new on Twitter? +`bb({eyes:"look"});` + [Oh no, look at that horrible news story!](#act1d_news) [Oh no, is that a subtweet of *you?*](#act1d_subtweet) @@ -263,73 +378,145 @@ h: What's new on Twitter? # act1d_news -b: God... it feels like the world's burning, isn't it? +`bb({eyes:"pained1"});` -b: It feels like it's all ending, that everything and everyone we know will die slowly and painfully and there's nothing we can do about it, not even to comfort each other. +b: God, it feels like the world's burning, isn't it? -`Game.OVERRIDE_TEXT_SPEED = 0.5;` +``` +bb({eyes:"pained2"}); +hong({mouth:"sad", eyes:"sad"}); +``` + +b: It feels like it's all ending, like everything's dying and we're doomed and there's nothing anyone can do about it. + +``` +Game.OVERRIDE_TEXT_SPEED = 0.5; +bb({mouth:"shut"}); +``` b: ... -b: Let's retweet it! +`bb({mouth:"smile", eyes:"smile"});` -`HP.attackHong("20p")` +b: Let's retweet that story! -(...1000) +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "harm"); +``` + +(...2500) `_.badnews=true` +``` +hong({mouth:"anger", eyes:"anger"}); +bb({body:"normal", mouth:"normal", eyes:"uncertain"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` + +h: Okay I'll retweet it just please be quiet! + +`hong({mouth:"neutral", eyes:"annoyed"});` + +h: Screw it, let's look at Snapchat. + (#act1e) + # act1d_subtweet +`hong({eyes:"annoyed"});` + h: ...probably not? +`bb({eyes:"narrow", mouth:"small"});` + b: but what if they're all talking behind your back h: They're n-- +`bb({body:"fear", eyes:"fear", mouth:"normal"});` + b: IN FRONT OF YOUR BACK +`hong({eyes:"sad", mouth:"sad"});` + h: I d-- +`bb({eyes:"narrow", mouth:"small"});` + b: but *what if* h: S-- +`bb({eyes:"narrow_eyebrow"});` + b: *what if* -`Game.OVERRIDE_TEXT_SPEED = 0.5;` +``` +Game.OVERRIDE_TEXT_SPEED = 0.5; +hong({mouth:"shut"}); +``` h: ... (...1000) -`HP.attackHong("20p")` +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "alone"); +``` -(...1000) +(...2500) `_.subtweet=true` +``` +hong({mouth:"anger", eyes:"annoyed"}); +bb({body:"normal", mouth:"normal", eyes:"uncertain"}); +``` + +h: o-KAY, gonna try Snapchat. + (#act1e) # act1d_milk +`hong({mouth:"smile", eyes:"neutral"});` + h: Heh ya that's cute I'll retweet th-- -b: CATS CAN'T DIGEST MILK AND YOU'RE A TERRIBLE PERSON FOR GETTING OFF ON ANIMAL ABUSE +``` +hong({mouth:"shock", eyes:"shock"}); +bb({body:"scream_anger"}); +Game.OVERRIDE_TEXT_SPEED = 2.0; +``` -`HP.attackHong("20p")` +b: CATS CAN'T DIGEST MILK AND YOU'RE A TERRIBLE PERSON FOR ENJOYING ANIMAL ABUSE + +``` +bb({body:"normal", mouth:"normal", eyes:"narrow"}); +attack("10p", "bad"); +``` + +(...2500) -(...1000) `_.catmilk=true` +``` +hong({mouth:"anger", eyes:"annoyed"}); +bb({body:"normal", mouth:"normal", eyes:"uncertain"}); +``` + +h: o-KAY, gonna try Snapchat. + (#act1e) # act1e -h: o-KAY, gonna try Snapchat. +`hong({mouth:"neutral", eyes:"neutral"});` h: Huh, photos from yesterday night. So *that's* what those weekly parties are like. @@ -341,26 +528,40 @@ h: Huh, photos from yesterday night. So *that's* what those weekly parties are l # act1e_said_yes +`hong({mouth:"sad", eyes:"annoyed"});` + h: Oof, looks way too crowded for my anxiety. -b: That's me! - h: Maybe I shouldn't have said yes to the invite? +``` +hong({mouth:"neutral", eyes:"neutral"}); +bb({mouth:"normal", eyes:"normal"}); +``` + [Change your answer? You unreliable jerk!](#act1e_yes_dontchange) [Change your answer! It's too crowded!](#act1e_yes_changetono) {{if _.subtweet}} -[yeah they were definitely subtweeting you](#act1e_ignore_subtweet) +[yeah they were totally subtweeting you](#act1e_ignore_subtweet) {{/if}} -{{if !_.subtweet}} -[OH CRAP YOU LEFT THE STOVE ON](#act1e_ignore_stove) +{{if _.badnews}} +[wait you retweeted that story without fact-checking](#act1e_ignore_factcheck) +{{/if}} + +{{if (!_.subtweet && !_.badnews)}} +[You know, you've got really bad posture?](#act1e_ignore_posture) {{/if}} # act1e_yes_dontchange +``` +bb({eyes:"anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` + b: They were counting on you to come and now you're betraying their trust? Do you wanna die alone?! {{if _.fifteencigs}} @@ -371,11 +572,17 @@ b: FIFTEEN. CIGARETTES. b: WHALE. POOP. {{/if}} -`HP.attackHong("10p")` +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "alone"); +``` -(...1000) +(...2500) -`Game.OVERRIDE_TEXT_SPEED = 1.5;` +``` +hong({mouth:"anger", eyes:"anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` h: Shut up shut up I'll keep it as yes! @@ -383,25 +590,49 @@ h: Shut up shut up I'll keep it as yes! # act1e_yes_changetono -`Game.OVERRIDE_TEXT_SPEED = 1.5;` +``` +bb({eyes:"fear"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` b: Don't you know about human stampedes? -b: In 2003 a nightclub in Rhode Island had a fire and the ensuing panic caused people to jam the exits and so 100 people were crushed or burned to death- +``` +bb({body:"fear", mouth:"small", eyes:"narrow"}); +hong({eyes:"sad", mouth:"sad"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` -`Game.OVERRIDE_TEXT_SPEED = 2.0;` +b: In 2003 a Rhode Island nightclub had a fire and the panic made people jam the exits so 100 people were crushed or burned to death- + +``` +bb({body:"normal", mouth:"normal", eyes:"fear"}); +hong({mouth:"shock"}); +Game.OVERRIDE_TEXT_SPEED = 2.0; +``` b: DO YOU WANT THAT TO HAPPEN TO YOU- -`Game.OVERRIDE_TEXT_SPEED = 2.5;` +``` +bb({body:"scream"}); +Game.OVERRIDE_TEXT_SPEED = 2.5; +``` -b: SAY NO SAY NO SAY NO SAY NO SAY N- +b: SAY NO SAY NO SAY NO SAY NO SAY NO SAY NO SAY NO SAY NO SAY N- -`HP.attackHong("10p")` -(...1000) +``` +bb({body:"normal", eyes:"fear", mouth:"normal"}); +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "harm"); +``` -`Game.OVERRIDE_TEXT_SPEED = 1.5;` +(...2500) + +``` +hong({eyes:"anger", mouth:"anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` h: Shut up shut up I'll change my answer to no! God! @@ -409,31 +640,49 @@ h: Shut up shut up I'll change my answer to no! God! # act1e_said_no +`hong({mouth:"sad", eyes:"sad"});` + h: Hm... that looks really fun. h: Maybe I shouldn't have said no to the invite? +`bb({mouth:"normal", eyes:"normal"});` + [Change your answer? You unreliable jerk!](#act1e_no_dontchange) [Change your answer! Don't die alone!](#act1e_no_changetoyes) {{if _.subtweet}} -[yeah they were definitely subtweeting you](#act1e_ignore_subtweet) +[yeah they were totally subtweeting you](#act1e_ignore_subtweet) {{/if}} -{{if !_.subtweet}} -[OH CRAP YOU LEFT THE STOVE ON](#act1e_ignore_stove) +{{if _.badnews}} +[wait you retweeted that story without fact-checking](#act1e_ignore_factcheck) +{{/if}} + +{{if (!_.subtweet && !_.badnews)}} +[You know, you've got really bad posture?](#act1e_ignore_posture) {{/if}} # act1e_no_dontchange -b: Everybody was counting on you! ...To leave them alone and let them have a nice party without you, you horrible disgusting {{if _.whitebread}}white-bread-munching{{/if}} cree-- +`bb({eyes:"anger"})` -`HP.attackHong("10p")` +b: Everybody was counting on you! ...to leave them alone and let them have a nice party without you, you horrible disgusting {{if _.whitebread}}white-bread-munching{{/if}} cree-- -(...1000) -`Game.OVERRIDE_TEXT_SPEED = 1.5;` +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "bad"); +``` + +(...2500) + +``` +bb({body:"normal", eyes:"uncertain", mouth:"normal"}); +hong({mouth:"anger", eyes:"anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` h: Shut up shut up I'll keep it as no! @@ -441,19 +690,29 @@ h: Shut up shut up I'll keep it as no! # act1e_no_changetoyes -`Game.OVERRIDE_TEXT_SPEED = 1.5;` +``` +bb({body:"fear", eyes:"fear", mouth:"normal"}); +Game.OVERRIDE_TEXT_SPEED = 2.0; +``` -b: Chronic loneliness can increase your cortisol levels to unhealthy levels thus increasing your risk for stroke and cardiovascular disease as well as greatly impairing your immune system making you vulnerable to-- +b: Chronic loneliness can increase your cortisol and increase your risk of cardiovascular disease and stroke! -`HP.attackHong("10p")` +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "harm"); +``` -(...1000) +(...2500) {{if _.fifteencigs}} b: FIFTEEN. CIGARETTES. {{/if}} -`Game.OVERRIDE_TEXT_SPEED = 1.5;` +``` +bb({body:"normal", eyes:"normal", mouth:"normal"}); +hong({mouth:"anger", eyes:"anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` h: Shut up shut up I'll change my answer to yes! God! @@ -461,66 +720,158 @@ h: Shut up shut up I'll change my answer to yes! God! # act1e_ignore_subtweet -h: SHUT. UP. +``` +bb({eyes:"fear", mouth:"small"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` -`_.missed_act1e=true` +b: All your problematic tweets have come back to roost! + +``` +bb({body:"fear", eyes:"fear", mouth:"normal"}); +Game.OVERRIDE_TEXT_SPEED = 1.7; +``` + +b: Just say *one* thing out of line and all your so-called friends will drag you through the street and laugh at your shredded corpse! + +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "alone"); +``` + +(...2500) + +``` +bb({body:"normal", eyes:"normal", mouth:"normal"}); +hong({mouth:"anger", eyes:"anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` + +h: Why are you like this?! (#act1f) -# act1e_ignore_stove +# act1e_ignore_factcheck -h: OH F-- +``` +bb({eyes:"anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` -`Game.OVERRIDE_TEXT_SPEED = 0.5;` +b: You're spreading disinformation! -h: ... +``` +bb({body:"scream_anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` -h: My dorm doesn't have a stove. +b: People like you are the reason fascism will arise from the rubble of democracy! -b: Oh. Right. +``` +bb({body:"normal", eyes:"anger"}); +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "bad"); +``` -`miss` +(...2500) -`_.missed_act1e=true` +``` +hong({mouth:"anger", eyes:"anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` + +h: Why are you like this?! + +(#act1f) + +# act1e_ignore_posture + +``` +bb({eyes:"fear"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` + +b: Do you want to have a pretzel for a spine?! + +``` +bb({body:"fear"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` + +b: Do you want your freak skeleton to end up in the Warren Anatomical Museum?! + +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "harm"); +``` + +(...2500) + +``` +bb({body:"normal", eyes:"normal", mouth:"normal"}); +hong({mouth:"anger", eyes:"anger"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` + +h: Why are you like this?! (#act1f) # act1e_said_ignore +`hong({mouth:"sad", eyes:"sad"});` + h: Hm... that looks really fun. h: Maybe I shouldn't have ignored the invite? +`bb({mouth:"normal", eyes:"normal"});` + [Keep ignoring, you're still a party pooper](#act1e_ignore_continue) -[Actually, say yes](#act1e_ignore_changetoyes) +[Actually, say yes.](#act1e_ignore_changetoyes) -[Actually, say no](#act1e_ignore_changetono) +[Actually, say no.](#act1e_ignore_changetono) # act1e_ignore_continue +`hong({eyes:"annoyed"});` + h: It's kinda rude to keep ignoring them though, no? +`bb({eyes:"normal_right"});` + b: Well other people always ignore *you* so -`HP.attackHong("10p")` +``` +hong({mouth:"shock", eyes:"shock"}); +attack("10p", "alone"); +``` -(...1000) +(...2500) -b: Let's just call it even +`bb({eyes:"normal"});` + +b: so let's just call it even. (#act1f) # act1e_ignore_changetoyes +`hong({eyes:"surprise", mouth:"smile"});` + h: You're... letting me have fun? b: Well, I mean, loneliness *can* kill you. +`hong({eyes:"neutral", mouth:"neutral"});` + (#act1e_no_changetoyes) # act1e_ignore_changetono +`bb({eyes:"narrow"});` + b: It's too crowded. Crowds are dangerous. (#act1e_yes_changetono) @@ -528,15 +879,36 @@ b: It's too crowded. Crowds are dangerous. # act1f +``` +hong({mouth:"neutral", eyes:"neutral"}); +bb({body:"normal", mouth:"normal", eyes:"normal"}); +``` + h: Whatever. New Tinder notification. -h: Oh I got a match! They're cute! +`hong({eyes:"surprise", mouth:"smile"})` + +h: Oh I got a match! They look cute! + +`bb({eyes:"normal_right"})` b: Is that so, human whom I should clarify is 18+? +``` +bb({eyes:"normal"}); +hong({eyes:"sad", mouth:"anger"}) +``` + h: Please, please don't ruin this for m-- -b: DANGER DANGER DANGER DANGER +``` +bb({body:"panic"}); +Game.OVERRIDE_TEXT_SPEED = 2.0; +``` + +b: DANGER DANGER DANGER DANGER DANGER DANGER + +`bb({body:"fear", eyes:"fear", mouth:"normal"})` [You're being *used* by other people.](#act1f_used_by_others) @@ -546,19 +918,31 @@ b: DANGER DANGER DANGER DANGER # act1f_used_by_others -b: Random hookups may be able to fill the hole down there... +`bb({body:"point_crotch", eyes:"normal", mouth:"normal"})` -b: but they can never fill the hole... +b: Random hookups may be able to fill the hole down there -b: in *here*. (points to heart) +b: but they can never fill the hole -(...500) +`bb({body:"point_heart", eyes:"pretty", mouth:"small"})` -b: point is you're gonna die alone +b: in *here*. -`HP.attackHong(_.missed_act1e ? "40p" : "30p")` +(...3000) -(...1000) +``` +bb({body:"normal", mouth:"normal", eyes:"normal"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` + +b: Point is you're gonna die alone + +``` +hong({mouth:"shock", eyes:"shock"}); +attack("30p", "alone"); +``` + +(...2500) `_.hookuphole=true` @@ -566,27 +950,45 @@ b: point is you're gonna die alone # act1f_using_others +`bb({eyes:"narrow", mouth:"small"})` + b: You think other people's genitals are Pokémon for you to collect? -`Game.OVERRIDE_TEXT_SPEED = 2;` +`bb({body:"sing", eyes:"pretty", mouth:"normal"})` -b: 🎵 [pokemon theme song] +b: ♫ [pokemon theme song] -b: 🎵 I wanna be the slutti-est +b: ♫ I wanna be the slutti-est -b: 🎵 Like no one ever was +`bb({eyes:"narrow", mouth:"small"})` -b: 🎵 Thighs n' ass, voluptuous breast +b: ♫ Like no one ever was -b: 🎵 with sweaty dick and balls! +`bb({eyes:"pretty"})` -b: 🎵 PERVY-MON, GOTTA C- +b: ♫ Thighs n' ass, voluptuous breast -b: point is you're a manipulative creep +`bb({eyes:"fear", mouth:"normal"})` -`HP.attackHong(_.missed_act1e ? "40p" : "30p")` +b: ♫ with sweaty dick and balls! -(...1000) +`bb({eyes:"smile", mouth:"smile"})` + +b: ♫ PERVY-MON, GOTTA CA-- + +``` +bb({body:"normal", mouth:"normal", eyes:"normal"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` + +b: Point is you're a manipulative creep + +``` +hong({mouth:"shock", eyes:"shock"}); +attack("30p", "bad"); +``` + +(...2500) `_.pokemon=true` @@ -594,12 +996,14 @@ b: point is you're a manipulative creep # act1f_killer +`Game.OVERRIDE_TEXT_SPEED = 1.5;` + {{if _.whitebread}} -b: They'll trap you in a well and then force-feed you white bread to fatten you up so they can wear your stretched-out skin like a swimsuit! +b: They'll trap you in a well and force-feed you white bread to fatten you up so they can wear your skin like a swimsuit! {{/if}} {{if _.seppuku}} -b: They'll bludgeon you with a textbook then slice your abdomen open and say "see this is what you get for not studying, SEPUKKU'D" +b: They'll bludgeon you with a textbook then slice your abdomen open and say "this is what you get for not studying, SEPUKKU'D" {{/if}} {{if !_.whitebread && !_.seppuku}} @@ -607,12 +1011,15 @@ b: They'll tear your flesh to gory confetti, turn your entrails into streamers, {{/if}} {{if !_.whitebread && !_.seppuku}} -b: how's THAT for a party invite +b: How's THAT for a party invite?! {{/if}} -`HP.attackHong(_.missed_act1e ? "40p" : "30p")` +``` +hong({mouth:"shock", eyes:"shock"}); +attack("30p", "harm"); +``` -(...1000) +(...2500) `_.serialkiller=true` @@ -620,7 +1027,11 @@ b: how's THAT for a party invite # act1g -`Game.OVERRIDE_TEXT_SPEED = 0.25;` +``` +bb({body:"normal", mouth:"normal", eyes:"look"}); +hong({body:"2_tired"}); +Game.OVERRIDE_TEXT_SPEED = 0.25; +``` h: ... @@ -628,6 +1039,8 @@ h: ... h: i'm so sick of this game. +(...700) + `Game.OVERRIDE_TEXT_SPEED = 1.5;` h: @@ -645,24 +1058,51 @@ h: i just want to live my life. h: i just want to be free from all this... pain. +`bb({eyes:"look_sad"});` + +b: Hey... Human... + `Game.OVERRIDE_TEXT_SPEED = 0.5;` -b: ... +b: It'll be okay. -(...500) +(...300) -b: Good thing you've got *me* to protect you from pain! +`bb({body:"point_heart", eyes:"look_sad_smile", mouth:"smile"});` + +b: As long as you've got me to protect you, you'll never be in danger. + +`bb({body:"normal", eyes:"look_sad", mouth:"smile"});` + +b: I promise. + +(...600) + +``` +bb({body:"normal", eyes:"normal", mouth:"normal"}); +hong({body:"phone1", eyes:"neutral", mouth:"neutral"}); +``` h: Last one. Instagram. What you got? +`hong({eyes:"sad"});` + h: It's... more party pictures. +`hong({mouth:"sad"});` + h: Everyone looks so happy. +`hong({mouth:"anger"});` + h: Everyone looks *fine*. +`bb({eyes:"normal_right"});` + b: Speaking of which, about this weekend's party invite. Here's my FINAL decision: +`bb({eyes:"normal"});` + [You should go.](#act1g_go) `Game.OVERRIDE_CHOICE_LINE=true` [You should not go.](#act1g_dont) `Game.OVERRIDE_CHOICE_LINE=true` @@ -683,14 +1123,29 @@ b: Speaking of which, about this weekend's party invite. Here's my FINAL decisio b: You sh-- -h: *FUCK.* YOU. +``` +bb({eyes:"wat", mouth:"small"}); +hong({body:"2_fuck"}); +``` + +h: *FUCK.* + +`hong({body:"2_you"});` + +h: YOU. + +(...500) b: w (...1500) +`bb({eyes:"wat_2"});` + b: wha? +`hong({body:"phone1", eyes:"anger", mouth:"anger"});` + h: I'm going to say YES to that party {{if _.act1g=="go"}} @@ -701,66 +1156,107 @@ h: NOT because you want me to, but because *I* want to. h: Precisely BECAUSE you don't want me to. {{/if}} +`hong({body:"putaway"});` + h: You're NOT in control of me. +`hong({body:"0_sammich", eyes:"0_annoyed", mouth:"0_neutral"});` + h: Now excuse me while I eat this delicious sandwich in goddamn peace. -`Game.OVERRIDE_TEXT_SPEED = 0.5;` +`hong({body:"2_sammich_eat"})` + +(...600) + +`hong({body:"2_sammich_eaten", eyes:"0_lookaway", mouth:"0_chew1"})` + +(...600) + +``` +bb({body:"normal", eyes:"uncertain", mouth:"shut"}); +Game.OVERRIDE_TEXT_SPEED = 0.5; +``` b: ... -`Game.OVERRIDE_TEXT_SPEED = 1;` +``` +bb({eyes:"uncertain_right"}); +Game.OVERRIDE_TEXT_SPEED = 1; +``` b: ... -`Game.OVERRIDE_TEXT_SPEED = 4;` +``` +bb({eyes:"narrow"}); +Game.OVERRIDE_TEXT_SPEED = 4; +``` b: .................. (...500) -["Death"](#act1h_death) +`bb({mouth:"normal"});` -["Loneliness"](#act1h_loneliness) +["Alone."](#act1h_loneliness) -["Worthless"](#act1h_worthless) +["Death."](#act1h_death) + +["Bad person."](#act1h_worthless) # act1h_death -`HP.attackHong("100p")` +``` +hong({body:"3_defeated1"}); +attack("30p", "harm"); +``` -(...1000) +(...2500) (#act1i) # act1h_loneliness -`HP.attackHong("100p")` +``` +hong({body:"3_defeated1"}); +attack("30p", "alone"); +``` -(...1000) +(...2500) (#act1i) # act1h_worthless -`HP.attackHong("100p")` +``` +hong({body:"3_defeated1"}); +attack("30p", "bad"); +``` -(...1000) +(...2500) (#act1i) # act1i +``` +hong({body:"3_defeated1"}); +bb({mouth:"smile_lock", eyes:"smile"}); +``` + n: CONGRATULATIONS n: YOU HAVE SUCCESSFULLY PROTECTED YOUR HUMAN n: LOOK HOW GRATEFUL THEY ARE -n: NOW THAT THEY HAVE ZERO WILLPOWER, YOU CAN CONTROL THEIR ACTIONS. +n: NOW THAT THEIR ENERGY IS ZERO, YOU CAN DIRECTLY CONTROL THEIR ACTIONS. + +`bb({mouth:"smile", eyes:"normal"});` n: PICK YOUR ENDING MOVE +`bb({mouth:"normal", eyes:"narrow"});` + n: *FINISH THEM* [< FIGHT: Destroy your phone! >](#act1i_phone) `Game.OVERRIDE_CHOICE_LINE=true` @@ -769,40 +1265,54 @@ n: *FINISH THEM* # act1i_phone -b: Your phone's giving you a panic attack! +`bb({eyes:"anger", mouth:"normal"})` -`Game.OVERRIDE_TEXT_SPEED = 1.5;` +b: Your phone was giving you a panic attack! + +``` +bb({body:"fear", eyes:"fear"}); +hong({body:"3_defeated2"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` b: Punish it! Destroy your phone! Kill it! -`Game.OVERRIDE_TEXT_SPEED = 2.5;` +``` +Game.OVERRIDE_TEXT_SPEED = 2.5; +bb({body:"flail"}); +hong({body:"3_defeated3"}); +_.act1_ending = "fight"; +``` -b: KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL I-- - -h: (THROWS PHONE ONTO CONCRETE) +b: KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL IT KILL I-- (#act1j) # act1i_cry +`bb({eyes:"fear"})` + b: The whole world is filled with danger! -`Game.OVERRIDE_TEXT_SPEED = 1.5;` +``` +bb({body:"fear"}); +hong({body:"3_defeated2"}); +Game.OVERRIDE_TEXT_SPEED = 1.5; +``` b: Do like the armadillo! Curl up into a ball for self-defense! -`Game.OVERRIDE_TEXT_SPEED = 2.5;` +``` +Game.OVERRIDE_TEXT_SPEED = 2.5; +bb({body:"flail"}); +hong({body:"3_defeated3"}); +_.act1_ending = "flight"; +``` -b: CURL UP AND CRY CURL UP AND CRY CURL UP AND CRY CURL UP AND CRY CURL UP AND CRY CURL UP AND CRY CURL UP AND CR-- - -h: (CURLS UP AND CRIES) +b: CURL UP AND CRY CURL UP AND CRY CURL UP AND CRY CURL UP AND CRY CURL UP AND CRY CURL UP AND CR-- (#act1j) # act1j -(...1000) - -n: YOU WIN - -n: END OF *ACT I* \ No newline at end of file +`SceneSetup.act1_outro()` \ No newline at end of file diff --git a/scripts/act1/Act1_Beebee.js b/scripts/act1/Act1_Beebee.js index 13ddf0b..e9e78e2 100644 --- a/scripts/act1/Act1_Beebee.js +++ b/scripts/act1/Act1_Beebee.js @@ -27,7 +27,7 @@ function Act1_Beebee(){ "body_fear", "body_point_crotch", "body_point_heart", - "body_point_sing", + "body_sing", "mouth_normal", "mouth_normal_talk", @@ -43,6 +43,7 @@ function Act1_Beebee(){ "eyes_fear", "eyes_pretty", "eyes_wat", + "eyes_wat_2", "body_panic*", "body_panic_2*", @@ -56,7 +57,17 @@ function Act1_Beebee(){ "body_flail3*", "body_flail4*", - // TODO: SMILE! "That's me!" + "mouth_smile", + "mouth_smile_talk", + "mouth_smile_lock", + "eyes_smile", + "eyes_look", + "eyes_look_sad", + "eyes_look_sad_smile", + "eyes_pained1", + "eyes_pained2", + "mouth_shut", + "eyes_anger" ], x: 270-7.5, @@ -65,6 +76,14 @@ function Act1_Beebee(){ // ANIM LOOPS var animLoops = [ + { target:"body", ifOnFrame:"panic*", wait:0.07, thenGoToFrame:"panic_2*" }, + { target:"body", ifOnFrame:"panic_2*", wait:0.07, thenGoToFrame:"panic*" }, + + { target:"body", ifOnFrame:"scream_anger*", wait:0.1, thenGoToFrame:"scream_anger_2*" }, + { target:"body", ifOnFrame:"scream_anger_2*", wait:0.1, thenGoToFrame:"scream_anger*" }, + { target:"body", ifOnFrame:"scream*", wait:0.1, thenGoToFrame:"scream_2*" }, + { target:"body", ifOnFrame:"scream_2*", wait:0.1, thenGoToFrame:"scream*" }, + { target:"body", ifOnFrame:"flail*", wait:0.05, thenGoToFrame:"flail2*" }, { target:"body", ifOnFrame:"flail2*", wait:0.05, thenGoToFrame:"flail3*" }, { target:"body", ifOnFrame:"flail3*", wait:0.05, thenGoToFrame:"flail4*" }, @@ -77,8 +96,8 @@ function Act1_Beebee(){ // Go To Frames! self.gotoFrames({ body: "normal", - mouth: "small", - eyes: "wat", + mouth: "normal", + eyes: "normal", }); var _subscriptions = []; _subscriptions.push( subscribe("bb", self.gotoFrames) ); @@ -99,139 +118,6 @@ function Act1_Beebee(){ _oldDraw.apply(self, arguments); }; - - /* - self.body = new Sprite(spriteConfig); - self.head = new Sprite(spriteConfig); - self.eyes = new Sprite(spriteConfig); - - self.gotoFrames = function(bodyName, headName, eyesName){ - - // Body - bodyName = "body_"+bodyName; - self.body.gotoFrameByName(bodyName); - - // Head - headName = headName ? "head_"+headName : "blank"; - self.head.gotoFrameByName(headName); // TODO: DON'T RESET MOUTH - - // Eyes - eyesName = eyesName ? "eyes_"+eyesName : "blank"; - self.eyes.gotoFrameByName(eyesName); - - }; - - self.gotoFrames("normal", "normal", "normal"); - - subscribe("bb", function(bodyName, headName, eyesName){ - self.gotoFrames(bodyName, headName, eyesName); - }); - - // First frame - // self.sprite.gotoFrameByName("normal"); - - // Draw - var ticker = 0; - self.draw = function(ctx){ - - self.body.update(); - self.head.update(); - self.eyes.update(); - - self.body.draw(ctx); - self.head.draw(ctx); - self.eyes.draw(ctx); - - // TALKING - if(self.body.currentFrameName=="body_normal" || self.body.currentFrameName=="body_fear"){ - if(Game.WHO_IS_SPEAKING=="b"){ - - if(ticker<=0){ - if(self.head.currentFrameName=="head_normal") self.head.gotoFrameByName("head_normal_2"); - else if(self.head.currentFrameName=="head_normal_2") self.head.gotoFrameByName("head_normal"); - ticker = 10; - } - - ticker -= (Game.TEXT_SPEED/40) * Game.CURRENT_SPEAKING_SPEED; - - }else{ - if(self.head.currentFrameName=="head_normal_2") self.head.gotoFrameByName("head_normal"); - ticker = 0; - } - if(self.head.currentFrameName=="head_normal_2"){ - self.eyes.x = 270+1; - self.eyes.y = 390-2; - }else{ - self.eyes.x = 270; - self.eyes.y = 390; - } - } - - // PANICKING - if(self.body.currentFrameName=="body_panic" || self.body.currentFrameName=="body_panic_2"){ - - if(ticker<=0){ - if(self.body.currentFrameName=="body_panic") self.body.gotoFrameByName("body_panic_2"); - else if(self.body.currentFrameName=="body_panic_2") self.body.gotoFrameByName("body_panic"); - ticker = 4; - } - - ticker -= 1; - - } - - // SHIVERING - self.body.breatheSpeed = 0.8; - self.body.breatheAmp = 0.01; - self.head.breatheSpeed = 0.8; - self.head.breatheAmp = 0.01; - self.eyes.breatheSpeed = 0.8; - self.eyes.breatheAmp = 0.01; - - /* - // Normal: Breathe fast! - if(fname.substr(0,6) == "normal"){ - self.sprite.breatheSpeed = 0.8; - self.sprite.breatheAmp = 0.01; - } - - // Scream: Loop between scream 1/2! - if(fname.substr(0,6) == "scream"){ - self.sprite.breatheSpeed = 0; - self.sprite.breatheAmp = 0; - if(ticker<=0){ - ticker=5; - if(fname=="scream") self.sprite.gotoFrameByName("scream_2"); - if(fname=="scream_2") self.sprite.gotoFrameByName("scream"); - }else{ - ticker--; - } - } - - // Draw me! - self.sprite.draw(ctx); - - }; - - // When going to frames... - subscribe("beebee", function(fname){ - - /*self.sprite.gotoFrameByName(fname); - - // Bounce transition - if(fname=="normal_speak"){ - self.sprite.bounce = 1.1; - } - if(fname=="scream"){ - self.sprite.bounce = 1.6; - } - - }); - - // Kill - self.kill = function(){ - };*/ - ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// diff --git a/scripts/act1/Act1_Hong.js b/scripts/act1/Act1_Hong.js index ec87281..3ed83f8 100644 --- a/scripts/act1/Act1_Hong.js +++ b/scripts/act1/Act1_Hong.js @@ -26,7 +26,8 @@ function Act1_Hong(){ "body_0_sammich_no_outline", "body_0_sammich", "eyes_0_neutral", - "eyes_0_concerned", + "eyes_0_lookaway", + "eyes_0_annoyed", "eyes_0_shock", "mouth_0_neutral", "mouth_0_chew1", @@ -44,6 +45,7 @@ function Act1_Hong(){ "eyes_lookaway", "eyes_anger", "eyes_surprise", + "mouth_shut", "mouth_neutral", "mouth_neutral_talk", "mouth_smile", @@ -72,8 +74,10 @@ function Act1_Hong(){ // ANIM LOOPS var animLoops = [ - { target:"body", ifOnFrame:"phone1", wait:0.5, thenGoToFrame:"phone2" }, - { target:"body", ifOnFrame:"phone2", wait:0.5, thenGoToFrame:"phone1" } + { target:"body", ifOnFrame:"phone1", wait:1, thenGoToFrame:"phone2" }, + { target:"body", ifOnFrame:"phone2", wait:1, thenGoToFrame:"phone1" }, + { target:"mouth", ifOnFrame:"0_chew1", wait:0.7, thenGoToFrame:"0_chew2" }, + { target:"mouth", ifOnFrame:"0_chew2", wait:0.7, thenGoToFrame:"0_chew1" } ]; // Inherit from Character! @@ -81,107 +85,16 @@ function Act1_Hong(){ // Go To Frames! self.gotoFrames({ - body: "phone1", - mouth: "neutral", - eyes: "neutral", + body: "0_sammich", + mouth: "0_chew1", + eyes: "0_neutral", }); var _subscriptions = []; _subscriptions.push( subscribe("hong", self.gotoFrames) ); _subscriptions.push( subscribe("attack_hong", self.showAttackedIcon) ); // Draw - self.bounceHookes = 0.2; // stiff - self.bounceDamp = 0.8; // stiff - - /* - - // Draw - var ticker = 0; - self.draw = function(ctx){ - - self.sprite.update(); - - // Draw body FIRST - ticker++; - //var bod_frame = (Math.floor(ticker/30)%2 == 0) ? "body_phone1" : "body_phone2"; // phone flickering - self.sprite.gotoFrameByName("0_body_sammich"); - self.sprite.draw(ctx); - - // Draw mouth next - self.sprite.gotoFrameByName("0_mouth_neutral"); - self.sprite.draw(ctx); - - // Draw eyes finally - self.sprite.gotoFrameByName("0_eyes_neutral"); - self.sprite.draw(ctx); - - // Draw attacked icon - if(attackedIconShown){ - - var icon = self.fears[attackedIconShown]; - icon.draw(ctx); - - attackedTimer += 1/60; - if(attackedTimer>1.5){ // 1s - icon.y -= 1; - icon.alpha -= 1/15; - if(icon.alpha<0){ - attackedIconShown = null; - } - } - - } - - }; - - // Show attacked icon! - var attackedIconShown = null; - var attackedTimer = 0; - self.showAttackedIcon = function(type){ - attackedIconShown = type; - var icon = self.fears[attackedIconShown]; - icon.x = 82; - icon.y = 230; - icon.alpha = 1; - attackedTimer = 0; - }; - - // When going to frames... - subscribe("hong", function(fname, options){ - - // If attacked, vibrate - if(fname=="attacked"){ - - //self.sprite.gotoFrameByName("shock"); - //self.sprite.bounce = 1/1.5; - self.sprite.shakeAmp = 5; - self.sprite.shakeSpeed = 10; - self.sprite.shakeTimer = 0.5; - - _mouth_frame = "mouth_shock"; - _eyes_frame = "eyes_shock"; - - // Show an attack icon of type=options! - self.showAttackedIcon(options); - - }else{ - - // Otherwise, go to that frame - self.sprite.gotoFrameByName(fname); - self.sprite.bounce = 1.05; - if(fname=="shock"){ - self.sprite.bounce = 1/1.5; - } - - } - - }); - - // Kill - self.kill = function(){ - }; - - */ + self.characterSpeakerID = "h"; ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// diff --git a/scripts/game/Character.js b/scripts/game/Character.js index 08b179a..b145d2c 100644 --- a/scripts/game/Character.js +++ b/scripts/game/Character.js @@ -51,6 +51,7 @@ function Character(spriteConfig, animLoops){ self.gotoFrames = function(args, bounce){ // Bounce? + if(bounce===undefined) bounce=0.03; // a LITTLE bit, by default if(bounce!==undefined){ self.bounce += bounce; } @@ -152,7 +153,7 @@ function Character(spriteConfig, animLoops){ icon.draw(ctx); attackedTimer += 1/60; - if(attackedTimer>1.5){ // 1s + if(attackedTimer>1.75){ icon.y -= 1; icon.alpha -= 1/15; if(icon.alpha<0){ @@ -210,7 +211,7 @@ function Character(spriteConfig, animLoops){ attackedIconShown = type; var icon = self.fears[attackedIconShown]; icon.x = 82; - icon.y = 230; + icon.y = 250; icon.alpha = 1; attackedTimer = 0; }; diff --git a/scripts/game/Game.js b/scripts/game/Game.js index 005b0ba..d386cd0 100644 --- a/scripts/game/Game.js +++ b/scripts/game/Game.js @@ -224,23 +224,24 @@ Game.immediatePromise = function(){ }; // Move the text DOM to latest -Game.updateText = function(){ +Game.updateText = function(instant){ var wordsHeight = 80 + Game.wordsDOM.getBoundingClientRect().height; var currentY = parseFloat(Game.wordsDOM.style.top) || 80; var gotoY = (wordsHeight<250) ? 0 : wordsHeight-250; gotoY = 80 - gotoY; - var nextY = currentY*0.9 + gotoY*0.1; + var nextY = instant ? gotoY : currentY*0.9 + gotoY*0.1; Game.wordsDOM.style.top = nextY+"px"; }; // CLEAR TEXT Game.clearText = function(){ - Game.wordsDOM.innerHTML = ""; // TODO HACK make prettier + Game.wordsDOM.innerHTML = ""; + Game.updateText(true); }; window.clearText = Game.clearText; // Execute text! Just add it to text DOM. -Game.TEXT_SPEED = 70; +Game.TEXT_SPEED = 60; // 70; Game.OVERRIDE_TEXT_SPEED = 1; Game.WHO_IS_SPEAKING = null; // "h", "b", "n" etc... Game.CURRENT_SPEAKING_SPEED = 1; @@ -328,8 +329,18 @@ Game.executeText = function(line){ // Bigger interval if(i!=dialogue.length-1){ // NOT last - if(chr=="." || chr=="?" || chr=="!"){ - interval += SPEED*10; + if(chr=="."){ + if(dialogue[i+1]=="\""){ // UNLESS next one's a punctuation! + interval += 0; + }else{ + interval += SPEED*10; + } + }else if(chr=="?" || chr=="!"){ // gap unless next one's ALSO punctuation. + if(dialogue[i+1]==" "){ // next one's a space? gap! + interval += SPEED*10; + }else{ // if not, no! + interval += SPEED; + } }else if(chr==","){ interval += SPEED*5; }else{ @@ -414,7 +425,7 @@ Game.executeText = function(line){ Game.OVERRIDE_TEXT_SPEED = 1; // Return promise - var nextLineDelay = SPEED*7; + var nextLineDelay = Game.TEXT_SPEED*7; // don't override this if(dialogue.slice(-1)=="-") nextLineDelay=0; // sudden interrupt! Game.setTimeout(function(){ Game.WHO_IS_SPEAKING = null; // DONE WITH IT. @@ -437,6 +448,17 @@ Game.executeChoice = function(line){ preChoiceCodeIfAny = line.match(/\`(.*)\`/)[0]; // 0, with backticks } + // Choice text, add italics where *word word words* + var originalChoiceText = choiceText; + var italicsRegex = /\*([^\*]*)\*/g; + var results; + while(results=italicsRegex.exec(choiceText)){ + // Modify choiceText in place, it's fine. + var startOfMatch = results.index; + var endOfMatch = results.index + results[0].length; + choiceText = choiceText.slice(0,startOfMatch) + "" + results[1] + "" + choiceText.slice(endOfMatch); + } + var div = document.createElement("div"); div.innerHTML = choiceText; div.onclick = function(){ @@ -446,7 +468,7 @@ Game.executeChoice = function(line){ // Override line... ONCE if(!Game.OVERRIDE_CHOICE_LINE){ - Game.addToQueue("b: "+choiceText); + Game.addToQueue("b: "+originalChoiceText); } Game.OVERRIDE_CHOICE_LINE = false; @@ -462,6 +484,22 @@ Game.executeChoice = function(line){ div.style.top = "0px"; },0); + // If it's too big, shrink font size + setTimeout(function(){ + var choiceHeight = div.getBoundingClientRect().height; + if(choiceHeight>40) div.style.fontSize = "18px"; + // And if still too much??? + setTimeout(function(){ + var choiceHeight = div.getBoundingClientRect().height; + if(choiceHeight>40) div.style.fontSize = "16px"; + // And if still too much??? + setTimeout(function(){ + var choiceHeight = div.getBoundingClientRect().height; + if(choiceHeight>40) div.style.fontSize = "14px"; + },0); + },0); + },0); + // Wait a bit before adding new line return new RSVP.Promise(function(resolve){ Game.setTimeout(resolve, 100); diff --git a/scripts/game/HP.js b/scripts/game/HP.js index b4df78e..e3d036b 100644 --- a/scripts/game/HP.js +++ b/scripts/game/HP.js @@ -59,6 +59,9 @@ function HitPoints(){ // Who's been attacked? subscribe("attack", function(target, damage, type){ + + Game.clearText(); // BYE + if(target=="hong"){ self.doDamage(damage, "hong"); self.leftShake = 30; @@ -67,6 +70,7 @@ function HitPoints(){ self.doDamage(damage, "beebee"); self.rightShake = 30; } + }); // Draw diff --git a/scripts/main.js b/scripts/main.js index 157921c..3103738 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -1,15 +1,25 @@ // Load assets Loader.addScenes([ "scenes/intro.md", - "scenes/test.md", - "scenes/test-outro.md" + "scenes/act1.md", + //"scenes/test.md", + //"scenes/test-outro.md" ]); Loader.load().then(function(){ Game.init(); Game.start(); - // Outro + // Set up... SceneSetup.act1(); - Game.goto("act1i"); + publish("hp_show"); + hong({body:"phone1", mouth:"neutral", eyes:"neutral"}); + //_.whitebread = true; + _.partyinvite="ignore"; + _.fifteencigs = true; + //_.subtweet=true; + _.seppuku = true; + + // GO! + Game.goto("act1g"); }); \ No newline at end of file diff --git a/sprites/act1/act1_beebee.png b/sprites/act1/act1_beebee.png index a5b6e4c..877ec22 100644 Binary files a/sprites/act1/act1_beebee.png and b/sprites/act1/act1_beebee.png differ diff --git a/sprites/act1/act1_hong.png b/sprites/act1/act1_hong.png index e7623bd..79abd90 100644 Binary files a/sprites/act1/act1_hong.png and b/sprites/act1/act1_hong.png differ diff --git a/sprites/act1/act1_hong_old.png b/sprites/act1/act1_hong_old.png deleted file mode 100644 index d2020ba..0000000 Binary files a/sprites/act1/act1_hong_old.png and /dev/null differ