HELL YEAH ACT 4 SPRITES PRETTY MUCH INTEGRATED
|
@ -267,6 +267,7 @@
|
|||
<script src="scripts/game/Options.js"></script>
|
||||
<script src="scripts/game/About.js"></script>
|
||||
|
||||
<!-- INTRO -->
|
||||
<script src="scripts/intro/Intro_SceneSetup.js"></script>
|
||||
<script src="scripts/intro/Intro_BG.js"></script>
|
||||
|
||||
|
@ -291,6 +292,8 @@
|
|||
<!-- ACT IV -->
|
||||
<script src="scripts/act4/Act4_SceneSetup.js"></script>
|
||||
<script src="scripts/act4/Act4_BG.js"></script>
|
||||
<script src="scripts/act4/Act4_Hong.js"></script>
|
||||
<script src="scripts/act4/Act4_Beebee.js"></script>
|
||||
|
||||
<!-- CREDITS -->
|
||||
<script src="scripts/credits/Credits_SceneSetup.js"></script>
|
||||
|
|
|
@ -1,256 +0,0 @@
|
|||
# act2
|
||||
|
||||
`SceneSetup.act2();`
|
||||
|
||||
a: hack
|
||||
|
||||
(#act2-preamble-end)
|
||||
|
||||
|
||||
# act2-preamble-end
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
publish("act2-out-1");
|
||||
music(null, {fade:1});
|
||||
```
|
||||
|
||||
(...3000)
|
||||
|
||||
```
|
||||
music('battle', {volume:0.5});
|
||||
publish("hp_show");
|
||||
```
|
||||
|
||||
n: ROUND TWO: *FIGHT!*
|
||||
|
||||
```
|
||||
bb({
|
||||
body: "cry_6",
|
||||
mouth: "right",
|
||||
eyes: "cry_r_3"
|
||||
});
|
||||
hong({
|
||||
body:"defeated"
|
||||
});
|
||||
```
|
||||
|
||||
b: I just... all I want is for you to be patient with me.
|
||||
|
||||
```
|
||||
bb({
|
||||
eyes: "cry_r_4"
|
||||
});
|
||||
hong({
|
||||
body:"listen"
|
||||
});
|
||||
```
|
||||
|
||||
r: Hey.
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
publish("act2-in-2");
|
||||
publish("hp_hide");
|
||||
music('party1', {volume:0.4, fade:2});
|
||||
```
|
||||
|
||||
(...1300)
|
||||
|
||||
r: Looks like you're caught in a fight with yourself, kid.
|
||||
|
||||
```
|
||||
publish("act2", ["party_hunter",12]);
|
||||
publish("act2", ["party_hong",24]);
|
||||
```
|
||||
|
||||
r: Bottoms up, motherfucker.
|
||||
|
||||
```
|
||||
hong({
|
||||
body:"hold",
|
||||
eyes:"blank"
|
||||
});
|
||||
bb({
|
||||
body:"normal",
|
||||
mouth:"small",
|
||||
eyes:"wat"
|
||||
});
|
||||
Game.clearText();
|
||||
publish("act2-out-3");
|
||||
publish("hp_show");
|
||||
```
|
||||
|
||||
(...3500)
|
||||
|
||||
b: I'm so sorry, human.
|
||||
|
||||
b: I'm going to have to use my SPECIAL ATTACK
|
||||
|
||||
```
|
||||
music('battle', {volume:0.5});
|
||||
bb({body:"special_a"});
|
||||
```
|
||||
|
||||
`Game.OVERRIDE_CHOICE_SPEAKER = "fear_harm"`
|
||||
|
||||
[](#act2h_attack) `_.SPECIAL_ATTACK="harm"; Game.OVERRIDE_CHOICE_LINE=true`
|
||||
|
||||
`Game.OVERRIDE_CHOICE_SPEAKER = "fear_alone"`
|
||||
|
||||
[](#act2h_attack) `_.SPECIAL_ATTACK="alone"; Game.OVERRIDE_CHOICE_LINE=true`
|
||||
|
||||
`Game.OVERRIDE_CHOICE_SPEAKER = "fear_bad"`
|
||||
|
||||
[](#act2h_attack) `_.SPECIAL_ATTACK="bad"; Game.OVERRIDE_CHOICE_LINE=true`
|
||||
|
||||
# act2h_attack
|
||||
|
||||
```
|
||||
bb({body:"special_b_1"});
|
||||
```
|
||||
|
||||
h: What's this crap?
|
||||
|
||||
h: You're gonna yap more stupid words at me again to try t--
|
||||
|
||||
```
|
||||
bb({body:"special_c"});
|
||||
sfx("hadouken");
|
||||
```
|
||||
|
||||
(...901)
|
||||
|
||||
(#act2i)
|
||||
|
||||
# act2i
|
||||
|
||||
```
|
||||
publish("show_special_attack");
|
||||
Game.FORCE_CANT_SKIP = true;
|
||||
music(null);
|
||||
stopAllSounds();
|
||||
```
|
||||
|
||||
(...5000)
|
||||
|
||||
```
|
||||
hong({
|
||||
body:"final",
|
||||
mouth:"final"
|
||||
});
|
||||
bb({
|
||||
body:"normal",
|
||||
mouth:"normal",
|
||||
eyes:"sad_2"
|
||||
});
|
||||
attack("100p", _.SPECIAL_ATTACK);
|
||||
Game.FORCE_CANT_SKIP = false;
|
||||
setTimeout(function(){
|
||||
publish("remove_special_attack");
|
||||
},30);
|
||||
```
|
||||
|
||||
(...2500)
|
||||
|
||||
h: WHAT THE HELL WAS THAT
|
||||
|
||||
b: PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THEM PUNCH THE--
|
||||
|
||||
`_.a2_ending = "fight";`
|
||||
|
||||
(#act2k)
|
||||
|
||||
# act2k
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
publish("act2-in-4");
|
||||
publish("hp_hide");
|
||||
music('party1', {volume:0.6, fade:1.5});
|
||||
```
|
||||
|
||||
(...2200)
|
||||
|
||||
r: You alright, kid?
|
||||
|
||||
```
|
||||
publish("act2", ["party_hunter",19]);
|
||||
publish("act2", ["party_hong",36]);
|
||||
```
|
||||
|
||||
r: I like that. Come to my party next weekend, cutie.
|
||||
|
||||
(#act2k_end)
|
||||
|
||||
|
||||
|
||||
# act2k_end
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
publish("act2-out-5");
|
||||
music("hum", {fade:2, volume:0.6});
|
||||
```
|
||||
|
||||
(...2500)
|
||||
|
||||
```
|
||||
sfx("whoosh");
|
||||
publish("act2", ["act2_end",2]);
|
||||
```
|
||||
|
||||
(...800)
|
||||
|
||||
b: Human! Are you okay?!
|
||||
|
||||
b: Gosh, that was *close.* We really could've--
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
publish("act2-outro", ["end3"]);
|
||||
music(null);
|
||||
sfx("squeak");
|
||||
```
|
||||
|
||||
(...1500)
|
||||
|
||||
```
|
||||
publish("act2-outro", ["end4"]);
|
||||
sfx("hit");
|
||||
```
|
||||
|
||||
(...1000)
|
||||
|
||||
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.
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
publish("act2-outro", ["end5"]);
|
||||
sfx("grass_step1");
|
||||
````
|
||||
|
||||
(...901)
|
||||
|
||||
```
|
||||
sfx("grass_step2", {volume:0.8});
|
||||
publish("act2-outro", ["end6"]);
|
||||
```
|
||||
|
||||
(...901)
|
||||
|
||||
`sfx("grass_step1", {volume:0.5});`
|
||||
|
||||
(...901)
|
||||
|
||||
`sfx("grass_step2", {volume:0.25});`
|
||||
|
||||
(...3000)
|
||||
|
||||
`_.INTERMISSION_STAGE = 2;`
|
||||
|
||||
(#intermission)
|
137
scenes/act4.md
|
@ -2,21 +2,142 @@
|
|||
|
||||
```
|
||||
SceneSetup.act4();
|
||||
Game.FORCE_CANT_SKIP = true;
|
||||
```
|
||||
|
||||
(...5001)
|
||||
(...1001)
|
||||
|
||||
`publish("outside-hong", ["walk"])`
|
||||
```
|
||||
/* (...5001) */
|
||||
var hong_frame = _.INJURED ? 9 : 0;
|
||||
publish("act4", ["hong_walks_in",hong_frame]);
|
||||
```
|
||||
|
||||
(...2001)
|
||||
(...666)
|
||||
|
||||
`publish("outside-hong", ["eat"])`
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...2001)
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...1667)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...1333)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...167)
|
||||
|
||||
`publish("act4_hong_sits");`
|
||||
|
||||
(...66)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...133)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...1333)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...1001)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 9]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 10]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 9]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 10]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 9]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 10]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...1466)
|
||||
|
||||
`publish("act4-out-1");`
|
||||
|
||||
(...2001)
|
||||
(...201)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`Game.FORCE_CANT_SKIP = false;`
|
||||
|
||||
|
@ -24,7 +145,7 @@ h: *sigh*
|
|||
|
||||
h: So what the hell was the moral of this story?
|
||||
|
||||
h: What did we even *learn*? I *was* being stupid, my "friends" *were* using me, and we almost fucking *died*.
|
||||
h: What did we even *learn*? I *was* being stupid, my "friends" *were* using me, and we almost goddamn *died*.
|
||||
|
||||
{{if _.INJURED}}
|
||||
[Yeah, not to mention the hospital bill.](#act4a_bill)
|
||||
|
@ -994,6 +1115,8 @@ b: I want to be the alarm for your emotional needs – your needs for safety, be
|
|||
|
||||
b: But... I suck at my job, so I need you to train me.
|
||||
|
||||
b: Help me help you.
|
||||
|
||||
b: Teaching an old dog new tricks *will* take a while. Maybe *years.*
|
||||
|
||||
b: And sometimes I'll relapse, I'll slip into my old habits.
|
||||
|
|
|
@ -0,0 +1,514 @@
|
|||
# act4
|
||||
|
||||
```
|
||||
SceneSetup.act4();
|
||||
Game.FORCE_CANT_SKIP = true;
|
||||
```
|
||||
|
||||
(...1001)
|
||||
|
||||
```
|
||||
/* (...5001) */
|
||||
var hong_frame = _.INJURED ? 9 : 0;
|
||||
publish("act4", ["hong_walks_in",hong_frame]);
|
||||
```
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...1667)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...666)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...1333)
|
||||
|
||||
`publish("act4", ["hong_walks_in", "next"]);`
|
||||
|
||||
(...167)
|
||||
|
||||
`publish("act4_hong_sits");`
|
||||
|
||||
(...66)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...133)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...1333)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...1001)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 9]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 10]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 9]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 10]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 9]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", 10]);`
|
||||
|
||||
(...333)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...1466)
|
||||
|
||||
`publish("act4-out-1");`
|
||||
|
||||
(...201)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
`publish("act4", ["hong_transition", "next"]);`
|
||||
|
||||
(...99)
|
||||
|
||||
```
|
||||
publish("act4-show-chars");
|
||||
Game.FORCE_CANT_SKIP = false;
|
||||
```
|
||||
|
||||
h: *sigh*
|
||||
|
||||
h: Maybe we don't have to fight.
|
||||
|
||||
```
|
||||
Game.FORCE_CANT_SKIP = true;
|
||||
Game.clearText();
|
||||
```
|
||||
|
||||
(...301)
|
||||
|
||||
`publish("smash",[0]);`
|
||||
|
||||
(...2001)
|
||||
|
||||
```
|
||||
publish("smash",[1]);
|
||||
sfx("grass_step1");
|
||||
```
|
||||
|
||||
(...2601)
|
||||
|
||||
`publish("smash",[2]);`
|
||||
|
||||
(...501)
|
||||
|
||||
`Game.FORCE_CANT_SKIP = false;`
|
||||
|
||||
(#act4b_2)
|
||||
|
||||
# act4b_2
|
||||
|
||||
`music('dontfight',{fade:5, volume:0.6})`
|
||||
|
||||
b: I'm not a Big Bad Wolf. But I'm not a guard-wolf either.
|
||||
|
||||
b: I'm a battered shelter dog.
|
||||
|
||||
(#act4c)
|
||||
|
||||
|
||||
|
||||
# act4c
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
music(null,{fade:3});
|
||||
```
|
||||
|
||||
b: *Can* we really get along?
|
||||
|
||||
b: *Can* we work together, as a team?
|
||||
|
||||
h: Well,
|
||||
|
||||
a: E-excuse me...
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
publish("act4-in-2");
|
||||
music('campus', {volume:0.5, fade:1});
|
||||
```
|
||||
|
||||
(...2101)
|
||||
|
||||
(#act4d)
|
||||
|
||||
# act4d
|
||||
|
||||
`Game.WORDS_HEIGHT_BOTTOM = 221;`
|
||||
|
||||
a: W-wo-would you mind if I sat with you for lunch?
|
||||
|
||||
{{if _.TOP_FEAR=="harm"}}
|
||||
s: They were sitting alone for lunch? They must be a psycho loner serial killer!
|
||||
{{/if}}
|
||||
|
||||
{{if _.TOP_FEAR=="alone"}}
|
||||
s: Ack, do you know how pathetic we sound? How desperate, how *needy*?
|
||||
{{/if}}
|
||||
|
||||
{{if _.TOP_FEAR=="bad"}}
|
||||
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 not, I just...
|
||||
|
||||
`Game.OVERRIDE_CHOICE_SPEAKER = "h2"`
|
||||
|
||||
[Wait, didn't I see you at the party?](#act4d_recognition)
|
||||
|
||||
[Yeah, of course! Come here.](#act4d_yes)
|
||||
|
||||
[Sorry, I need alone time right now.](#act4d_no)
|
||||
|
||||
# act4d_recognition
|
||||
|
||||
h2: Yeah you were on the couch! At the first party I went to,
|
||||
|
||||
{{if _.a2_ending=="fight"}}
|
||||
h2: The one where I had that panic attack and punched the host.
|
||||
{{/if}}
|
||||
|
||||
{{if _.a2_ending=="flight"}}
|
||||
h2: The one where I had that panic attack and ran out crying.
|
||||
{{/if}}
|
||||
|
||||
b: Hang on human, we might be making them uncomfortable.
|
||||
|
||||
h2: Ah, I don't mean to put you on the spot!
|
||||
|
||||
h2: Just remembering a friendly face, is all.
|
||||
|
||||
`publish("al-shire", ["panic"]);`
|
||||
|
||||
{{if _.TOP_FEAR=="harm"}}
|
||||
s: AHHHHH I KNEW IT! THEY'RE A DANGEROUS CRAZY PSYCHO!
|
||||
{{/if}}
|
||||
|
||||
{{if _.TOP_FEAR=="alone"}}
|
||||
s: SEE HOW MUCH WE SUCK AT MAKING FRIENDS?! THE FIRST IMPRESSION WE MADE IS "WITNESSED MY TRAUMA". WE SUCK!
|
||||
{{/if}}
|
||||
|
||||
{{if _.TOP_FEAR=="bad"}}
|
||||
s: AAAHHH WE MADE SOMEONE REMEMBER A TRAUMATIC EVENT. OUR MERE PRESENCE HURTS OTHERS.
|
||||
{{/if}}
|
||||
|
||||
(#act4e)
|
||||
|
||||
# act4d_yes
|
||||
|
||||
b: Hang on human, they seem uncomfortable.
|
||||
|
||||
h2: Ah, no pressure of course!
|
||||
|
||||
h2: Just saying, you can sit here if you want to.
|
||||
|
||||
`publish("al-shire", ["panic"]);`
|
||||
|
||||
{{if _.TOP_FEAR=="harm"}}
|
||||
s: THEY'RE BEING *TOO* FRIENDLY! LIKE TED BUNDY, THE SERIAL KILLER!
|
||||
{{/if}}
|
||||
|
||||
{{if _.TOP_FEAR=="alone"}}
|
||||
s: THEY'RE JUST ACTING NICE. NO ONE *REALLY* WANTS TO BE OUR FRIEND.
|
||||
{{/if}}
|
||||
|
||||
{{if _.TOP_FEAR=="bad"}}
|
||||
s: GAH, WE ALWAYS MAKE OTHERS FEEL UNCOMFORTABLE! WE'RE TERRIBLE!
|
||||
{{/if}}
|
||||
|
||||
(#act4e)
|
||||
|
||||
# act4d_no
|
||||
|
||||
b: Hang on human, we might be making them uncomfortable.
|
||||
|
||||
h2: Ah, I didn't mean to come off as rude!
|
||||
|
||||
{{if _.INJURED}}
|
||||
h2: It's just that, well, I jumped off a roof and almost killed myself.
|
||||
{{/if}}
|
||||
|
||||
{{if !_.INJURED}}
|
||||
h2: It's just that, well, I almost jumped off a roof.
|
||||
{{/if}}
|
||||
|
||||
h2: Please don't take it as a personal rejection, I just need quiet time to process some emotions.
|
||||
|
||||
`publish("al-shire", ["panic"]);`
|
||||
|
||||
{{if _.TOP_FEAR=="harm"}}
|
||||
s: HOLY COW I KNEW IT, THEY *ARE* A DANGEROUS PSYCHO!
|
||||
{{/if}}
|
||||
|
||||
{{if _.TOP_FEAR=="alone"}}
|
||||
s: WE'VE BEEN PERSONALLY REJECTED! WE'LL NEVER BE LOVED!
|
||||
{{/if}}
|
||||
|
||||
{{if _.TOP_FEAR=="bad"}}
|
||||
s: WE INTERRUPTED SOMEONE'S EMOTIONAL PROCESSING! NOW THEY'LL BE TRAUMATIZED FOREVER AND IT'S ALL OUR FAULT!
|
||||
{{/if}}
|
||||
|
||||
(#act4e)
|
||||
|
||||
# act4e
|
||||
|
||||
```
|
||||
Game.WORDS_HEIGHT_BOTTOM = 195;
|
||||
publish("act4", ["alshire", 6]);
|
||||
```
|
||||
|
||||
s: RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
publish("act4", ["alshire", 10]);
|
||||
```
|
||||
|
||||
(...1001)
|
||||
|
||||
`publish("act4", ["alshire", 11]);`
|
||||
|
||||
(...1001)
|
||||
|
||||
```
|
||||
publish("act4-out-3");
|
||||
Game.WORDS_HEIGHT_BOTTOM = -1; /* reset */
|
||||
```
|
||||
|
||||
(...1201)
|
||||
|
||||
`publish("act4-jumpcut-hong");`
|
||||
|
||||
h: Huh. That was weird. I wonder what was going on in their head.
|
||||
|
||||
h: Anyway, you were saying?
|
||||
|
||||
b: Uh, I forget? Something about teams and work?
|
||||
|
||||
h: ¯\_(ツ)_/¯
|
||||
|
||||
b: They say you should "make peace" with your emotions, as if your emotions are some kind of *war criminals*.
|
||||
|
||||
b: But I want us to make *more* than mere peace! I want us to be *allies!*
|
||||
|
||||
b: I want to be a good guard-dog. Just like how hunger & thirst are alarms for your physical needs,
|
||||
|
||||
b: I want to be the alarm for your emotional needs – your needs for safety, belonging, goodness.
|
||||
|
||||
b: But... I suck at my job, so I need you to train me.
|
||||
|
||||
b: Help me help you.
|
||||
|
||||
b: Teaching an old dog new tricks *will* take a while. Maybe *years.*
|
||||
|
||||
b: And sometimes I'll relapse, I'll slip into my old habits.
|
||||
|
||||
b: I'll bark at shadows. I'll scare you with words. I might even show you some intrusive images of... things.
|
||||
|
||||
b: I'm sorry! I'm a battered shelter dog! Battered dogs poop on your bed sometimes!
|
||||
|
||||
b: But if you're patient with me... and just stay and sit with me...
|
||||
|
||||
b: Maybe you can tame this wolf.
|
||||
|
||||
`Game.clearText();`
|
||||
|
||||
(...1000)
|
||||
|
||||
`Game.OVERRIDE_CHOICE_SPEAKER = "h"`
|
||||
|
||||
[Good dog.](#act4f-pat-bb) `Game.OVERRIDE_CHOICE_SPEAKER = "h"`
|
||||
|
||||
`Game.OVERRIDE_CHOICE_SPEAKER = "b"`
|
||||
|
||||
[Good human.](#act4f-pat-hong) `Game.OVERRIDE_CHOICE_SPEAKER = "b"`
|
||||
|
||||
# act4f-pat-hong
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
Game.FORCE_CANT_SKIP = true;
|
||||
music(null,{fade:0.5});
|
||||
sfx("youbothwin");
|
||||
```
|
||||
|
||||
`publish("end-pat", ["pat-hong-1"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-hong-2"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-hong-1"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-hong-2"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-hong-1"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-hong-2"])`
|
||||
|
||||
(...6501)
|
||||
|
||||
`publish("end-pat", ["pat-hong-3"])`
|
||||
|
||||
(...1001)
|
||||
|
||||
(#act4f)
|
||||
|
||||
# act4f-pat-bb
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
Game.FORCE_CANT_SKIP = true;
|
||||
music(null,{fade:0.5});
|
||||
sfx("youbothwin");
|
||||
```
|
||||
|
||||
`publish("end-pat", ["pat-bb-1"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-bb-2"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-bb-1"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-bb-2"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-bb-1"])`
|
||||
|
||||
(...501)
|
||||
|
||||
`publish("end-pat", ["pat-bb-2"])`
|
||||
|
||||
(...6501)
|
||||
|
||||
`publish("end-pat", ["pat-bb-3"])`
|
||||
|
||||
(...1001)
|
||||
|
||||
(#act4f)
|
||||
|
||||
# act4f
|
||||
|
||||
```
|
||||
Game.FORCE_CANT_SKIP = false;
|
||||
publish("end-pat", ["freak-out"])
|
||||
```
|
||||
|
||||
{{if _.fifteencigs}}
|
||||
b: AAAAA YOU'RE STILL EATING ALONE FIFTEEN CIGARETTES AAAAA
|
||||
{{/if}}
|
||||
|
||||
{{if _.parasite}}
|
||||
b: AAAAA YOU'RE STILL NOT PRODUCTIVE WHILE EATING WE'RE PARASITES AAAAA
|
||||
{{/if}}
|
||||
|
||||
{{if _.whitebread}}
|
||||
b: AAAAA YOU'RE EATING MORE WHITE BREAD AAAAA
|
||||
{{/if}}
|
||||
|
||||
```
|
||||
publish("act4", ["bb_closer", 18]);
|
||||
sfx("yaps", {volume:0.6});
|
||||
Game.FORCE_CANT_SKIP = true;
|
||||
```
|
||||
|
||||
b: YAP YAP YAP YAP YAP
|
||||
|
||||
`music('credits', {NO_LOOP:true, volume:0.45});`
|
||||
|
||||
(...1884)
|
||||
|
||||
(#credits)
|
|
@ -1,9 +1,5 @@
|
|||
# credits
|
||||
|
||||
`music('credits', {NO_LOOP:true, volume:0.45});`
|
||||
|
||||
(...1884)
|
||||
|
||||
`SceneSetup.credits()`
|
||||
|
||||
n: *CREDITS ROLL* (and mental health resource links)
|
|
@ -1,181 +0,0 @@
|
|||
r: Looks like you're caught in a fight with yourself, kid.
|
||||
|
||||
h2: (nods)
|
||||
|
||||
r: You're not alone, friend. Anxiety's super common.
|
||||
|
||||
{{if _.act1_ending=="fight"}}
|
||||
r: Heck, just yesterday, I heard someone on campus had a nervous breakdown and smashed their phone!
|
||||
{{/if}}
|
||||
|
||||
{{if _.act1_ending=="flight"}}
|
||||
r: Heck, just yesterday, I heard someone curled up into an armadillo ball and cried in public!
|
||||
{{/if}}
|
||||
|
||||
h2: huh imagine that.
|
||||
|
||||
r: Listen: I know what it's like to have that animal in your head.
|
||||
|
||||
r: All of us here do. That's why we're here! I throw these parties every weekend so we can forget our worries, forget that animal.
|
||||
|
||||
h2: but my anxiety...
|
||||
|
||||
r: Don't worry, kid. I used to be like you. But then I discovered a little trick to make that beast shut up forever...
|
||||
|
||||
```
|
||||
Game.clearText();
|
||||
music(null, {fade:1});
|
||||
```
|
||||
|
||||
(...2000)
|
||||
|
||||
```
|
||||
publish("act2-party-action", ["twist3"]);
|
||||
sfx("rustle");
|
||||
```
|
||||
|
||||
(...2500)
|
||||
|
||||
`publish("act2-party-action", ["twist4"]);`
|
||||
|
||||
(...1000)
|
||||
|
||||
r: My own specialty blend. It's a mix of... well, everything.
|
||||
|
||||
r: Bottoms up, motherfucker.
|
||||
|
||||
|
||||
# act2k
|
||||
|
||||
r: You alright, kid?
|
||||
|
||||
{{if _.a2_ending=="fight"}}
|
||||
(#act2k_fight)
|
||||
{{/if}}
|
||||
|
||||
{{if _.a2_ending=="flight"}}
|
||||
(#act2k_flight)
|
||||
{{/if}}
|
||||
|
||||
# act2k_fight
|
||||
|
||||
r: Y-you...
|
||||
|
||||
r: are *kinky*.
|
||||
|
||||
r: I like that. Come to my party next weekend, cutie.
|
||||
|
||||
h2: ok bye ciao adios
|
||||
|
||||
r: The animal might have won today, but come back, and I'll mix something even stronger for you!
|
||||
|
||||
h2: sayōnara au revoir auf wiedersehen zài jiàn
|
||||
|
||||
r: You and me, kid, we'll show that beast who's boss!
|
||||
|
||||
(#act2k_end)
|
||||
|
||||
# act2k_flight
|
||||
|
||||
h2: ok sorry i have to run
|
||||
|
||||
r: Damn it. The animal won today, huh?
|
||||
|
||||
h2: no no, just, uh, gotta run a marathon. gotta go fast.
|
||||
|
||||
r: Come to my party next weekend, cutie. I'll mix something even stronger for you.
|
||||
|
||||
`publish("act2-party-action", ["end_run"]);`
|
||||
|
||||
h2: ok thanks gonna run run run run run
|
||||
|
||||
r: You and me, kid, we'll show that beast who's boss!
|
||||
|
||||
(#act2k_end)
|
||||
|
||||
|
||||
# act3
|
||||
|
||||
`SceneSetup.act3();`
|
||||
|
||||
h2: *Ah* that hits the spot.
|
||||
|
||||
r: You know, kid...
|
||||
|
||||
h2: Specifically, the spots hit are my left and right amygdala.
|
||||
|
||||
r: You remind me of myself when I was younger. Back when I was tormented by the animal in my head.
|
||||
|
||||
r: I'm proud to help you get rid of it. It's almost like a... *parental*... sort of pride.
|
||||
|
||||
`Game.clearText();`
|
||||
|
||||
r: Hey, quick question: truth or da--
|
||||
|
||||
h2: DARE!
|
||||
|
||||
r: Haha! Good.
|
||||
|
||||
r: Ok. You see that swimming pool down there?
|
||||
|
||||
h2: Yeah? Ten floors down?
|
||||
|
||||
r: Jump in.
|
||||
|
||||
h2: ...
|
||||
|
||||
h2: Wait, what?
|
||||
|
||||
r: The animal's started whining, hasn't it?
|
||||
|
||||
r: *Oh nooooo it's dangerous, don't do iiiiit.*
|
||||
|
||||
r: But that's exactly why we need to do thrilling, death-defying stunts! Party hard! Carpe diem! Snort coke off a hooker's butt, hashtag #YOLO!
|
||||
|
||||
r: Show that animal we don't give two *dicks* about its bitching! Jump.
|
||||
|
||||
h2: Uh, but sometimes, um... fear has a point...
|
||||
|
||||
r: ...
|
||||
|
||||
r: ...
|
||||
|
||||
r: I'm sorry, did you fall for that "mindfulness" fad bullshit that claims feeling bad is *good?*
|
||||
|
||||
r: Pleasure is the opposite of pain. There-fucking-fore, you can use pleasure to fight pain! How goddamn stupid are those California-Buddhists to not see that?!
|
||||
|
||||
r: Kid, I know that *you* know that animal *hurts* people like us. It *tortures* people like us.
|
||||
|
||||
r: It's not your fucking friend. It's a savage beast that needs to be tranquilized,
|
||||
|
||||
r: Or taken to the shed to be *shot in the back of the skull.*
|
||||
|
||||
r: Otherwise, you're going to let it win.
|
||||
|
||||
h2: ...you're wrong.
|
||||
|
||||
h2: I'm not going to let it win.
|
||||
|
||||
r: Fuck yeah! I believe in you, babe! Kill it! <3
|
||||
|
||||
(#act3a)
|
||||
|
||||
|
||||
# act3_walkaway
|
||||
|
||||
r: Aw *come on*. After everything it put you through, you're just walking away?!
|
||||
|
||||
r: What's the matter, kid? You *scared?*
|
||||
|
||||
h2: Yes.
|
||||
|
||||
h2: I'm scared.
|
||||
|
||||
h2: And that's okay!
|
||||
|
||||
h2: It's okay to be scared.
|
||||
|
||||
r: Did they just lock the door?
|
||||
|
||||
|
||||
(#act4)
|
|
@ -1,13 +1,17 @@
|
|||
Loader.addImages([
|
||||
|
||||
{ id:"placeholder_act4_bg", src:"sprites/act4/placeholder_act4_bg.png" },
|
||||
|
||||
{ id:"act4_callback", src:"sprites/act4/callback.png" },
|
||||
{ id:"al_shire", src:"sprites/act4/al_shire.png" },
|
||||
{ id:"outside_hong", src:"sprites/act4/hong_outside.png" },
|
||||
{ id:"a4_hong_walks_in", src:"sprites/act4/hong_walks_in.png" },
|
||||
{ id:"a4_hong_transition", src:"sprites/act4/hong_transition.png" },
|
||||
|
||||
{ id:"a4_talk_1", src:"sprites/act4/talk_1.png" },
|
||||
{ id:"a4_talk_2", src:"sprites/act4/talk_2.png" },
|
||||
{ id:"a4_talk_smash", src:"sprites/act4/talk_smash.png" },
|
||||
{ id:"break_hp", src:"sprites/act4/break_hp.png" },
|
||||
|
||||
{ id:"al_shire", src:"sprites/act4/al_shire.png" },
|
||||
{ id:"hong_to_alshire", src:"sprites/act4/hong_to_alshire.png" },
|
||||
{ id:"bb_to_alshire", src:"sprites/act4/bb_to_alshire.png" },
|
||||
|
||||
{ id:"hong_closer", src:"sprites/act4/hong_closer.png" },
|
||||
{ id:"bb_closer", src:"sprites/act4/bb_closer.png" }
|
||||
|
||||
]);
|
||||
|
||||
|
@ -20,157 +24,385 @@ function BG_Act4(){
|
|||
|
||||
var self = this;
|
||||
|
||||
// Sprites!
|
||||
self.bgSprite = new Sprite({
|
||||
image: Library.images.placeholder_act4_bg,
|
||||
grid:{ width:1, height:1 },
|
||||
frame:{ width:720, height:1200 },
|
||||
// BACKGROUND SPRITES
|
||||
var BGSpriteConfig = {
|
||||
image: Library.images.intro_bg,
|
||||
grid:{ width:2, height:3 },
|
||||
frame:{ width:1200, height:1200 },
|
||||
anchor:{ x:0, y:0 },
|
||||
frameNames:[ "sky", "clouds", "buildings", "grass", "stump" ],
|
||||
x:0, y:0
|
||||
};
|
||||
self.sky = new Sprite(BGSpriteConfig);
|
||||
self.sky.gotoFrameByName("sky");
|
||||
self.clouds = new Sprite(BGSpriteConfig);
|
||||
self.clouds.gotoFrameByName("clouds");
|
||||
self.buildings = new Sprite(BGSpriteConfig);
|
||||
self.buildings.gotoFrameByName("buildings");
|
||||
self.grass = new Sprite(BGSpriteConfig);
|
||||
self.grass.gotoFrameByName("grass");
|
||||
self.stump = new Sprite(BGSpriteConfig);
|
||||
self.stump.gotoFrameByName("stump");
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// EXTERNAL WORLD SPRITES ///////////////////
|
||||
/////////////////////////////////////////////
|
||||
|
||||
// Hong in
|
||||
self.hong_walks_in = new Sprite({
|
||||
image: Library.images.a4_hong_walks_in,
|
||||
grid:{ width:8, height:3 },
|
||||
frame:{ width:720, height:500 },
|
||||
anchor:{ x:0, y:0 },
|
||||
x:0, y:200
|
||||
});
|
||||
self.callbackSprite = new Sprite({
|
||||
self.hong_walks_in.gotoFrame(19); // blank
|
||||
|
||||
// Callback
|
||||
self.callback = new Sprite({
|
||||
image: Library.images.act4_callback,
|
||||
grid:{ width:2, height:1 },
|
||||
frame:{ width:400, height:200 },
|
||||
y: 347,
|
||||
frameNames:[
|
||||
"phone",
|
||||
"puddle"
|
||||
]
|
||||
y: 347
|
||||
});
|
||||
self.callbackSprite.gotoFrameByName( _.act1_ending=="fight" ? "phone" : "puddle" );
|
||||
self.callback.gotoFrame( _.act1_ending=="fight" ? 0 : 1 );
|
||||
|
||||
self.alShireSprite = new Sprite({
|
||||
var hongSitsSprite = {
|
||||
image: Library.images.a4_hong_transition,
|
||||
grid:{ width:8, height:3 },
|
||||
frame:{ width:720, height:500 },
|
||||
anchor:{ x:0, y:0 },
|
||||
x:0, y:200
|
||||
};
|
||||
|
||||
// The crutches
|
||||
self.crutches = new Sprite(hongSitsSprite);
|
||||
self.crutches.gotoFrame(2);
|
||||
self.crutches.visible = false;
|
||||
|
||||
// The legs
|
||||
self.legs = new Sprite(hongSitsSprite);
|
||||
self.legs.gotoFrame( _.INJURED ? 1 : 0);
|
||||
self.legs.visible = false;
|
||||
|
||||
// Hong transition
|
||||
self.hong_transition = new Sprite(hongSitsSprite);
|
||||
self.hong_transition.gotoFrame(3);
|
||||
self.hong_transition.visible = false;
|
||||
|
||||
// Hong transition Cone
|
||||
self.hong_transition_cone = new Sprite(hongSitsSprite);
|
||||
self.hong_transition_cone.gotoFrame(6);
|
||||
self.hong_transition_cone.visible = false;
|
||||
|
||||
// Alshire
|
||||
self.alshire = new Sprite({
|
||||
image: Library.images.al_shire,
|
||||
grid:{ width:4, height:1 },
|
||||
grid:{ width:8, height:3 },
|
||||
frame:{ width:360, height:360 },
|
||||
y: 192,
|
||||
frameNames:[
|
||||
"ask",
|
||||
"panic",
|
||||
"run",
|
||||
"blank"
|
||||
]
|
||||
y: 190
|
||||
});
|
||||
self.alShireSprite.gotoFrameByName("blank"); // blank
|
||||
self.outsideHongSprite = new Sprite({
|
||||
image: Library.images.outside_hong,
|
||||
grid:{ width:4, height:3 },
|
||||
frame:{ width:720, height:720 },
|
||||
y: 90,
|
||||
frameNames:[
|
||||
"blank",
|
||||
self.alshire.visible = false;
|
||||
|
||||
"walk",
|
||||
"walk-injured",
|
||||
"eat",
|
||||
"eat-injured",
|
||||
"talk",
|
||||
"talk-injured",
|
||||
"look-back",
|
||||
"look-back-injured",
|
||||
]
|
||||
// Hong alshire
|
||||
self.hong_to_alshire = new Sprite({
|
||||
image: Library.images.hong_to_alshire,
|
||||
grid:{ width:8, height:2 },
|
||||
frame:{ width:300, height:300 },
|
||||
/*x:210,*/ y:258
|
||||
});
|
||||
self.hong_to_alshire.visible = false;
|
||||
|
||||
// BB alshire
|
||||
var bb_to_alshire_sprite = {
|
||||
image: Library.images.bb_to_alshire,
|
||||
grid:{ width:4, height:1 },
|
||||
frame:{ width:200, height:300 },
|
||||
/*x:261,*/ y:281
|
||||
};
|
||||
self.bb_to_alshire = new Sprite(bb_to_alshire_sprite);
|
||||
self.bb_to_alshire.visible = false;
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// INTERNAL WORLD SPRITES ///////////////////
|
||||
/////////////////////////////////////////////
|
||||
|
||||
// Anxiety BG... WHITE MODE
|
||||
self.anxiety = new BG_Anxiety(true);
|
||||
|
||||
// Talking Sprites
|
||||
self.smashSprite = new Sprite({
|
||||
image: Library.images.a4_talk_smash,
|
||||
grid:{ width:3, height:1 },
|
||||
frame:{ width:720, height:600 },
|
||||
// Hong
|
||||
self.hong = new Act4_Hong();
|
||||
|
||||
// BB
|
||||
self.beebee = new Act4_Beebee();
|
||||
|
||||
// Smash Sprite
|
||||
var break_hp_sprite = {
|
||||
image: Library.images.break_hp,
|
||||
grid:{ width:8, height:2 },
|
||||
frame:{ width:720, height:1000 },
|
||||
};
|
||||
self.break_hp = new Sprite(break_hp_sprite);
|
||||
self.break_hp.y = -70;
|
||||
self.break_hp.visible = false;
|
||||
self.break_hp_cone = new Sprite(break_hp_sprite);
|
||||
self.break_hp_cone.visible = false;
|
||||
|
||||
// Hong Closer
|
||||
self.hong_closer = new Sprite({
|
||||
image: Library.images.hong_closer,
|
||||
grid:{ width:8, height:1 },
|
||||
frame:{ width:300, height:300 },
|
||||
y: 270
|
||||
});
|
||||
self.hong_closer.visible = false;
|
||||
|
||||
// BB Closer
|
||||
var bb_closer_sprite = {
|
||||
image: Library.images.bb_closer,
|
||||
grid:{ width:8, height:4 },
|
||||
frame:{ width:500, height:500 },
|
||||
y: 200
|
||||
});
|
||||
self.smashSprite.gotoFrame(2); // blank
|
||||
self.talk1Sprite = new Sprite({
|
||||
image: Library.images.a4_talk_1,
|
||||
grid:{ width:3, height:1 },
|
||||
frame:{ width:720, height:400 },
|
||||
y: 256
|
||||
});
|
||||
self.talk2Sprite = new Sprite({
|
||||
image: Library.images.a4_talk_2,
|
||||
grid:{ width:4, height:2 },
|
||||
frame:{ width:720, height:400 },
|
||||
y: 256,
|
||||
frameNames:[
|
||||
|
||||
"talk",
|
||||
|
||||
"pat-bb-1",
|
||||
"pat-bb-2",
|
||||
"pat-bb-3",
|
||||
|
||||
"pat-hong-1",
|
||||
"pat-hong-2",
|
||||
"pat-hong-3",
|
||||
|
||||
"freak-out"
|
||||
|
||||
]
|
||||
});
|
||||
};
|
||||
self.bb_closer = new Sprite(bb_closer_sprite);
|
||||
self.bb_closer.visible = false;
|
||||
self.bb_closer_cone = new Sprite(bb_closer_sprite);
|
||||
self.bb_closer_cone.visible = false;
|
||||
self.bb_closer_cone.gotoFrame(28);
|
||||
self.bb_closer_coneb = new Sprite(bb_closer_sprite);
|
||||
self.bb_closer_coneb.visible = false;
|
||||
self.bb_closer_coneb.gotoFrame(29);
|
||||
|
||||
// LAYERS
|
||||
self.layers = [
|
||||
|
||||
self.bgSprite,
|
||||
self.callbackSprite,
|
||||
self.alShireSprite,
|
||||
self.outsideHongSprite,
|
||||
self.sky,
|
||||
self.clouds,
|
||||
self.buildings,
|
||||
self.grass,
|
||||
|
||||
self.alshire,
|
||||
|
||||
self.hong_walks_in,
|
||||
self.callback,
|
||||
|
||||
self.stump,
|
||||
|
||||
self.crutches,
|
||||
self.anxiety,
|
||||
self.legs,
|
||||
self.hong_transition,
|
||||
self.hong_transition_cone,
|
||||
|
||||
self.smashSprite,
|
||||
self.talk1Sprite,
|
||||
self.talk2Sprite
|
||||
self.break_hp,
|
||||
self.break_hp_cone,
|
||||
|
||||
self.hong,
|
||||
self.beebee,
|
||||
|
||||
self.hong_to_alshire,
|
||||
self.bb_to_alshire,
|
||||
|
||||
self.hong_closer,
|
||||
self.bb_closer_coneb,
|
||||
self.bb_closer,
|
||||
self.bb_closer_cone,
|
||||
|
||||
];
|
||||
var PARALLAXES = [
|
||||
|
||||
0.5, // placeholder bg
|
||||
0.8, // callback
|
||||
0.6, // Al Shire
|
||||
1.0, // outside Hong
|
||||
0, // sky
|
||||
0.1, // clouds
|
||||
0.25, // buildings
|
||||
0.48, // grass
|
||||
|
||||
0.0, // anxiety bg
|
||||
0.8, // alshire
|
||||
|
||||
1.0, // smash sprite
|
||||
1.0, // talk 1 sprite
|
||||
1.0, // talk 2 sprite
|
||||
1.0, // hong_walks_in
|
||||
1.0, // callback
|
||||
|
||||
1.0, // stump
|
||||
|
||||
1.0, // crutches
|
||||
0.0, // anxiety
|
||||
1.0, // legs
|
||||
1.0, // hong_transition
|
||||
1.0, // hong_transition_cone
|
||||
|
||||
0, // break_hp
|
||||
0, // break_hp_cone
|
||||
|
||||
1.0, // hong
|
||||
1.0, // beebee
|
||||
|
||||
1.0, // hong_to_alshire
|
||||
1.0, // bb_to_alshire
|
||||
|
||||
1.0, // hong_closer,
|
||||
1.0, // bb_closer_coneb
|
||||
1.0, // bb_closer,
|
||||
1.0, // bb_closer_cone,
|
||||
|
||||
];
|
||||
var ALPHAS = [
|
||||
|
||||
1.0, // placeholder bg
|
||||
1.0, // callback
|
||||
1.0, // callback
|
||||
1.0, // outside Hong
|
||||
1.0, // sky
|
||||
1.0, // clouds
|
||||
1.0, // buildings
|
||||
1.0, // grass
|
||||
|
||||
0.0, // anxiety bg
|
||||
1.0, // alshire
|
||||
|
||||
1.0, // smash sprite
|
||||
0.0, // talk 1 sprite
|
||||
0.0, // talk 2 sprite
|
||||
1.0, // hong_walks_in
|
||||
1.0, // callback
|
||||
|
||||
1.0, // stump
|
||||
|
||||
1.0, // crutches
|
||||
0.0, // anxiety
|
||||
1.0, // legs
|
||||
1.0, // hong_transition
|
||||
1.0, // hong_transition_cone
|
||||
|
||||
1.0, // break_hp
|
||||
1.0, // break_hp_cone
|
||||
|
||||
0.0, // hong
|
||||
0.0, // beebee
|
||||
|
||||
1.0, // hong_to_alshire
|
||||
1.0, // bb_to_alshire
|
||||
|
||||
1.0, // hong_closer,
|
||||
1.0, // bb_closer_coneb
|
||||
1.0, // bb_closer,
|
||||
1.0, // bb_closer_cone,
|
||||
|
||||
];
|
||||
var MAGIC_NUMBER_2 = 163;
|
||||
var OFFSETS = [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
|
||||
0,
|
||||
0, // sky
|
||||
0, // clouds
|
||||
0, // buildings
|
||||
0, // grass
|
||||
|
||||
0, // alshire
|
||||
|
||||
0, // hong_walks_in
|
||||
0, // callback
|
||||
|
||||
0, // stump
|
||||
|
||||
207, // crutches
|
||||
0, // anxiety
|
||||
207, // legs
|
||||
207, // hong_transition
|
||||
207, // hong_transition_cone
|
||||
|
||||
0, // break_hp
|
||||
0, // break_hp_cone
|
||||
|
||||
0, // hong
|
||||
0, // beebee
|
||||
|
||||
210, // hong_to_alshire
|
||||
261+100, // bb_to_alshire
|
||||
|
||||
50 + MAGIC_NUMBER_2, // hong_closer,
|
||||
96 + MAGIC_NUMBER_2, // bb_closer_coneb
|
||||
96 + MAGIC_NUMBER_2, // bb_closer,
|
||||
96 + MAGIC_NUMBER_2, // bb_closer_cone,
|
||||
|
||||
];
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// ANIMATIONS... ///////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// animation: { ticker:0, target:"sprite_name", frames:[{when:0, wait:0.1, then:4}, ...] }
|
||||
self.animations = [];
|
||||
self.createAnimation = function(spriteName, frames){
|
||||
self.animations.push({
|
||||
ticker: 0,
|
||||
target: spriteName,
|
||||
frames: frames
|
||||
});
|
||||
};
|
||||
var _animSequence = function(from, to, duration, loop){
|
||||
var frames = [];
|
||||
for(var frame=from; frame<=to; frame++){
|
||||
|
||||
if(loop){
|
||||
// LOOP
|
||||
var next = (frame==to) ? from : frame+1;
|
||||
frames.push({ when:frame, wait:duration, then:next });
|
||||
}else{
|
||||
// NOT LOOP: FINAL FRAME IS "TO"
|
||||
var next = frame+1;
|
||||
if(next<=to){
|
||||
frames.push({ when:frame, wait:duration, then:next });
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return frames;
|
||||
};
|
||||
self.executeAnimation = function(anim){
|
||||
|
||||
// Frame...
|
||||
var sprite = self[anim.target];
|
||||
var frame = anim.frames.find(function(frame){
|
||||
return frame.when == sprite.currentFrame;
|
||||
});
|
||||
if(frame){
|
||||
|
||||
var frameToGoTo = frame.when;
|
||||
|
||||
// Next?
|
||||
anim.ticker += 1/60;
|
||||
if(anim.ticker >= frame.wait){
|
||||
anim.ticker = 0;
|
||||
frameToGoTo = frame.then;
|
||||
}
|
||||
|
||||
// Change sprite
|
||||
sprite.gotoFrame(frameToGoTo);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// SMASH THAT
|
||||
self.createAnimation("break_hp", _animSequence( 1,4, 1/12, true) );
|
||||
|
||||
// ALSHIRE
|
||||
self.createAnimation("alshire", _animSequence( 6,9, 1/12, true) );
|
||||
self.createAnimation("alshire", _animSequence( 11,22, 1/30, false) );
|
||||
|
||||
// BB
|
||||
self.createAnimation("bb_closer", _animSequence( 18,21, 1/24, true) );
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
-210,
|
||||
-210,
|
||||
-210
|
||||
]
|
||||
|
||||
var parallax = 0;
|
||||
var parallaxTicker = 0;
|
||||
var PARALLAXING = null;
|
||||
var ALPHA_INDEX = 4;
|
||||
var ANXIETY_INDEX = 9;
|
||||
var ticker = 0;
|
||||
var MAGIC_NUMBER = (210 + 8);
|
||||
|
||||
self.update = function(){
|
||||
|
||||
// TICKER
|
||||
ticker += 1/60;
|
||||
|
||||
// CLOUD OFFSET
|
||||
OFFSETS[1] = 80 - ticker*3;
|
||||
|
||||
// START PARALLAXING IN / OUT
|
||||
if(PARALLAXING!=null){
|
||||
|
||||
|
@ -186,21 +418,23 @@ function BG_Act4(){
|
|||
// 0 to -180 in one second, smoothed
|
||||
var t = Math.cos(parallaxTicker*Math.TAU/2); // 1 to -1
|
||||
t = (1-t)/2; // 0 to 1
|
||||
parallax = -t*210;
|
||||
parallax = -t*MAGIC_NUMBER;
|
||||
|
||||
// Anxiety Alpha
|
||||
ALPHAS[ALPHA_INDEX] = t;
|
||||
ALPHAS[ANXIETY_INDEX] = t;
|
||||
|
||||
// DONE
|
||||
if(t==1 || t==0){
|
||||
PARALLAXING = null;
|
||||
|
||||
if(STAGE==1){
|
||||
ALPHAS[6] = 1; // Talk 1
|
||||
}
|
||||
|
||||
if(STAGE==3){
|
||||
ALPHAS[7] = 1; // Talk 2
|
||||
// Seeing Al-Shire
|
||||
if(STAGE==2){
|
||||
self.break_hp.visible = false;
|
||||
self.bb_to_alshire.visible = true;
|
||||
if(_.INJURED){
|
||||
self.bb_to_alshire.gotoFrame(2); // CONE!
|
||||
}
|
||||
ALPHAS[16] = 0; // BB
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -208,27 +442,69 @@ function BG_Act4(){
|
|||
}
|
||||
|
||||
// Anxiety BG
|
||||
if(ALPHAS[ALPHA_INDEX]>0){
|
||||
self.anxiety.update(ALPHAS[ALPHA_INDEX]);
|
||||
if(ALPHAS[ALPHA_INDEX]==1){ // if fully visible...
|
||||
ALPHAS[0] = ALPHAS[1] = ALPHAS[2] = ALPHAS[3] = 0; // hide everything under
|
||||
}else{
|
||||
ALPHAS[0] = ALPHAS[1] = ALPHAS[2] = ALPHAS[3] = 1; // hide everything under
|
||||
}
|
||||
if(ALPHAS[ANXIETY_INDEX]>0){
|
||||
self.anxiety.update(ALPHAS[ANXIETY_INDEX]);
|
||||
}
|
||||
|
||||
// BREAK_HP'S ALPHA
|
||||
if(self.break_hp.visible){
|
||||
self.break_hp.alpha = ALPHAS[ANXIETY_INDEX];
|
||||
}
|
||||
|
||||
// ALL ANIMS
|
||||
self.animations.forEach(self.executeAnimation);
|
||||
|
||||
};
|
||||
|
||||
self.draw = function(ctx){
|
||||
|
||||
// SUPER HACK FOR CONES
|
||||
|
||||
// INTRO
|
||||
if(_.INJURED && self.hong_transition.visible && self.hong_transition.currentFrame>=16){
|
||||
self.hong_transition_cone.visible = true;
|
||||
self.hong_transition_cone.gotoFrame(self.hong_transition.currentFrame+5);
|
||||
}else{
|
||||
self.hong_transition_cone.visible = false;
|
||||
}
|
||||
|
||||
// SMASHING
|
||||
if(self.break_hp.visible){
|
||||
self.break_hp.y = self.break_hp.y*0.8 + 0*0.2; // move in
|
||||
}
|
||||
if(_.INJURED && self.break_hp_cone.visible){
|
||||
self.break_hp_cone.gotoFrame( self.break_hp.currentFrame+5 );
|
||||
}
|
||||
self.break_hp_cone.y = self.break_hp.y;
|
||||
|
||||
// ENDINGS YAP YAP YAP
|
||||
if(self.bb_closer.currentFrame>=18 && self.bb_closer.currentFrame<=21){
|
||||
self.bb_closer_coneb.gotoFrame(31); // blank
|
||||
self.bb_closer_cone.gotoFrame(self.bb_closer.currentFrame + 4); // CONE
|
||||
}
|
||||
|
||||
// BB EASES IN
|
||||
if(self.bb_to_alshire.visible){
|
||||
OFFSETS[18] = OFFSETS[18]*0.9 + 261*0.1;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
|
||||
ctx.save();
|
||||
|
||||
for(var i=0; i<self.layers.length; i++){
|
||||
|
||||
var layer = self.layers[i];
|
||||
layer.x = PARALLAXES[i] * parallax - OFFSETS[i];
|
||||
layer.x = PARALLAXES[i] * parallax + OFFSETS[i];
|
||||
|
||||
// DON'T DRAW ANYTHING UNDER ANXIETY_INDEX WHEN'S IT'S 1
|
||||
var DONT_DRAW_BENEATH = (ALPHAS[ANXIETY_INDEX]==1);
|
||||
if(ALPHAS[i]>0){
|
||||
ctx.globalAlpha = ALPHAS[i];
|
||||
layer.draw(ctx);
|
||||
if( !(i<ANXIETY_INDEX && DONT_DRAW_BENEATH) ){
|
||||
ctx.globalAlpha = ALPHAS[i];
|
||||
layer.draw(ctx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -239,23 +515,94 @@ function BG_Act4(){
|
|||
var STAGE = 0;
|
||||
var _subscriptions = [];
|
||||
_subscriptions.push(
|
||||
|
||||
subscribe("act4", function(thing, frame){
|
||||
if(typeof frame=="string"){
|
||||
if(frame=="next"){
|
||||
self[thing].nextFrame();
|
||||
}else{
|
||||
self[thing].gotoFrameByName(frame);
|
||||
}
|
||||
}else{
|
||||
self[thing].gotoFrame(frame);
|
||||
}
|
||||
}),
|
||||
subscribe("act4_hong_sits", function(){
|
||||
|
||||
if(_.INJURED){
|
||||
self.crutches.visible = true;
|
||||
//self.hong_transition_cone.visible = true;
|
||||
}
|
||||
self.legs.visible = true;
|
||||
self.hong_walks_in.visible = false;
|
||||
self.hong_transition.visible = true;
|
||||
|
||||
}),
|
||||
|
||||
subscribe("act4-out-1", function(){
|
||||
|
||||
self.talk1Sprite.gotoFrame( _.INJURED ? 0 : 1 );
|
||||
|
||||
// WHOOSH
|
||||
STAGE = 1;
|
||||
PARALLAXING = "out";
|
||||
sfx("whoosh");
|
||||
|
||||
sfx("whoosh"); // WHOOSH
|
||||
|
||||
// IT'S WHITE IN HERE
|
||||
window.BLACK_CTA = true;
|
||||
|
||||
}),
|
||||
subscribe("act4-show-chars", function(){
|
||||
self.hong_transition.visible = false;
|
||||
ALPHAS[15] = 1; // Hong
|
||||
ALPHAS[16] = 1; // Beebee
|
||||
}),
|
||||
|
||||
|
||||
subscribe("smash", function(stage){
|
||||
if(stage==0){
|
||||
|
||||
self.break_hp.visible = true;
|
||||
|
||||
sfx("ui_show_choice", {volume:0.4});
|
||||
|
||||
hong({ body:"normal", eyes:"look_up", mouth:"blank" });
|
||||
bb({ eyes:"normal_u" });
|
||||
|
||||
}
|
||||
if(stage==1){
|
||||
|
||||
ALPHAS[15] = 0; // Hong
|
||||
ALPHAS[16] = 0; // Beebee
|
||||
|
||||
self.break_hp.gotoFrame(1);
|
||||
if(_.INJURED){
|
||||
self.break_hp_cone.visible = true;
|
||||
self.break_hp_cone.gotoFrame(1+5);
|
||||
}
|
||||
|
||||
}
|
||||
if(stage==2){
|
||||
|
||||
ALPHAS[15] = 1; // Hong
|
||||
ALPHAS[16] = 1; // Beebee
|
||||
|
||||
self.break_hp.gotoFrame(5);
|
||||
self.break_hp_cone.visible = false;
|
||||
|
||||
}
|
||||
}),
|
||||
|
||||
subscribe("act4-in-2", function(){
|
||||
|
||||
// SHOW ACTION, HIDE CHARS
|
||||
ALPHAS[6] = 0; // Bye Talk 1
|
||||
// Hide JUST HONG, parallax BB.
|
||||
ALPHAS[15] = 0; // Hong
|
||||
self.beebee.ALLOW_PARALLAX = true;
|
||||
PARALLAXES[16] = 1.0; // battle bb
|
||||
OFFSETS[16] = MAGIC_NUMBER*PARALLAXES[16]; // battle bb
|
||||
PARALLAXES[13] = 1.0; // break_hp
|
||||
OFFSETS[13] = MAGIC_NUMBER*PARALLAXES[13]; // break_hp
|
||||
|
||||
// Show Alshire sprites
|
||||
self.alshire.visible = true;
|
||||
self.hong_to_alshire.visible = true;
|
||||
|
||||
// WHOOSH
|
||||
STAGE = 2;
|
||||
|
@ -266,6 +613,7 @@ function BG_Act4(){
|
|||
window.BLACK_CTA = false;
|
||||
|
||||
}),
|
||||
|
||||
subscribe("act4-out-3", function(){
|
||||
|
||||
// WHOOSH
|
||||
|
@ -273,41 +621,39 @@ function BG_Act4(){
|
|||
PARALLAXING = "out";
|
||||
sfx("whoosh");
|
||||
|
||||
// PARALLAX
|
||||
MAGIC_NUMBER = MAGIC_NUMBER_2;
|
||||
|
||||
// JUMP CUT TO THE FINAL BB
|
||||
self.bb_to_alshire.visible = false;
|
||||
self.bb_closer.visible = true;
|
||||
if(_.INJURED){
|
||||
self.bb_closer_coneb.visible = true;
|
||||
self.bb_closer_cone.visible = true;
|
||||
}
|
||||
|
||||
// IT'S WHITE IN HERE
|
||||
window.BLACK_CTA = true;
|
||||
|
||||
}),
|
||||
subscribe("act4-jumpcut-hong", function(){
|
||||
self.hong_to_alshire.visible = false;
|
||||
self.hong_closer.visible = true;
|
||||
})
|
||||
|
||||
/*
|
||||
subscribe("outside-hong", function(frame){
|
||||
if(_.INJURED) frame += "-injured";
|
||||
if(self.outsideHongSprite.doesFrameNameExist(frame)){
|
||||
self.outsideHongSprite.gotoFrameByName(frame);
|
||||
}
|
||||
}),
|
||||
subscribe("smash", function(stage){
|
||||
if(stage==0){
|
||||
Game.clearText();
|
||||
HP.show();
|
||||
sfx("ui_show_choice", {volume:0.4});
|
||||
}
|
||||
if(stage==1){
|
||||
HP.hide(true);
|
||||
self.talk1Sprite.alpha = 0;
|
||||
self.smashSprite.gotoFrame(0);
|
||||
}
|
||||
if(stage==2){
|
||||
self.talk1Sprite.alpha = 1;
|
||||
self.smashSprite.gotoFrame(1);
|
||||
}
|
||||
if(stage==3){
|
||||
self.smashSprite.gotoFrame(2);
|
||||
}
|
||||
}),
|
||||
subscribe("al-shire", function(frame){
|
||||
self.alShireSprite.gotoFrameByName(frame);
|
||||
}),
|
||||
subscribe("end-pat", function(frame){
|
||||
self.talk2Sprite.gotoFrameByName(frame);
|
||||
})
|
||||
})*/
|
||||
);
|
||||
|
||||
self.kill = function(){
|
||||
|
|
|
@ -0,0 +1,135 @@
|
|||
Loader.addImages([
|
||||
{ id:"act4_bb", src:"sprites/act4/bb_convo.png" }
|
||||
]);
|
||||
|
||||
function Act4_Beebee(){
|
||||
|
||||
var self = this;
|
||||
|
||||
// SPRITE CONFIG!
|
||||
var spriteConfig = {
|
||||
image: Library.images.act4_bb,
|
||||
grid:{
|
||||
width: 8,
|
||||
height: 8
|
||||
},
|
||||
frame:{
|
||||
width: 500,
|
||||
height: 500
|
||||
},
|
||||
anchor:{
|
||||
x: 171,
|
||||
y: 242
|
||||
},
|
||||
frameNames:[
|
||||
|
||||
"body_normal",
|
||||
"body_normal_chest",
|
||||
"body_normal_two_up",
|
||||
"body_normal_one_up",
|
||||
"body_normal_paw",
|
||||
"cone_normal",
|
||||
"coneb_normal",
|
||||
"mouth_normal",
|
||||
|
||||
"mouth_normal_talk",
|
||||
"mouth_narrow",
|
||||
"mouth_narrow_talk",
|
||||
"mouth_smile",
|
||||
"mouth_smile_talk",
|
||||
"mouth_scream",
|
||||
"mouth_scream_talk",
|
||||
"cone_scream",
|
||||
|
||||
"coneb_scream",
|
||||
"eyes_normal",
|
||||
"eyes_normal_r",
|
||||
"eyes_normal_u",
|
||||
"eyes_normal_d",
|
||||
"eyes_look_down",
|
||||
"eyes_scream",
|
||||
"eyes_scream_sad",
|
||||
|
||||
"eyes_super_sad",
|
||||
"eyes_closed",
|
||||
"eyes_closed_annoyed",
|
||||
"eyes_sexy",
|
||||
"eyes_smile",
|
||||
"eyes_smile_r",
|
||||
"eyes_smile_u",
|
||||
"eyes_smile_d",
|
||||
|
||||
"eyes_angry",
|
||||
"eyes_angry_r",
|
||||
"eyes_angry_u",
|
||||
"eyes_angry_d",
|
||||
"eyes_surprise",
|
||||
"eyes_surprise_r",
|
||||
"eyes_surprise_u",
|
||||
"eyes_surprise_d",
|
||||
|
||||
"eyes_annoyed",
|
||||
"eyes_annoyed_r",
|
||||
"eyes_annoyed_u",
|
||||
"eyes_annoyed_d",
|
||||
"eyes_sad",
|
||||
"eyes_sad_r",
|
||||
"eyes_sad_u",
|
||||
"eyes_sad_d",
|
||||
|
||||
"eyes_suspect",
|
||||
"eyes_suspect_r",
|
||||
"body_karate_1*",
|
||||
"body_karate_2*",
|
||||
"cone_karate",
|
||||
"coneb_karate",
|
||||
"body_yap_1*",
|
||||
"body_yap_2*",
|
||||
|
||||
"body_yap_3*",
|
||||
"body_yap_4*",
|
||||
"cone_yap_1",
|
||||
"cone_yap_2",
|
||||
"cone_yap_3",
|
||||
"cone_yap_4",
|
||||
"eyes_blank", // BLANK
|
||||
"mouth_blank", // BLANK
|
||||
|
||||
],
|
||||
x: 110+171,
|
||||
y: 200+242,
|
||||
OVERRIDE_LAYER_NAMES: ["coneb", "body", "mouth", "eyes", "cone"]
|
||||
};
|
||||
|
||||
// ANIM LOOPS
|
||||
var animLoops = [];
|
||||
|
||||
// Inherit from Character!
|
||||
Character.apply(self, [spriteConfig, animLoops]);
|
||||
|
||||
// Go To Frames!
|
||||
self.gotoFrames({
|
||||
body: "normal",
|
||||
mouth: "normal",
|
||||
eyes: "normal",
|
||||
});
|
||||
var _subscriptions = [];
|
||||
_subscriptions.push( subscribe("bb", self.gotoFrames) );
|
||||
_subscriptions.push( subscribe("DONE_SPEAKING", self.whenDoneSpeaking) );
|
||||
|
||||
// Draw!
|
||||
var ticker = 0;
|
||||
self.characterSpeakerID = "b";
|
||||
// self.bounceHookes = 0.25;
|
||||
// self.bounceDamp = 0.9;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Kill!
|
||||
self.kill = function(){
|
||||
_subscriptions.forEach(unsubscribe);
|
||||
};
|
||||
|
||||
}
|
|
@ -0,0 +1,99 @@
|
|||
Loader.addImages([
|
||||
{ id:"act4_hong", src:"sprites/act4/hong_convo.png" }
|
||||
]);
|
||||
|
||||
function Act4_Hong(){
|
||||
|
||||
var self = this;
|
||||
|
||||
// SPRITE CONFIG!
|
||||
var spriteConfig = {
|
||||
image: Library.images.act4_hong,
|
||||
grid:{
|
||||
width: 8,
|
||||
height: 5
|
||||
},
|
||||
frame:{
|
||||
width: 400,
|
||||
height: 400
|
||||
},
|
||||
anchor:{
|
||||
x: 55,
|
||||
y: 135
|
||||
},
|
||||
frameNames:[
|
||||
|
||||
"body_sit*",
|
||||
"body_sigh_1*",
|
||||
"body_sigh_2*",
|
||||
"body_hold",
|
||||
"body_normal",
|
||||
"body_one_up",
|
||||
"body_point",
|
||||
"body_shrug",
|
||||
|
||||
"body_chin",
|
||||
"body_hands_1",
|
||||
"body_hands_2",
|
||||
"eyes_normal",
|
||||
"eyes_normal_l",
|
||||
"eyes_surprise",
|
||||
"eyes_surprise_l",
|
||||
"eyes_annoyed",
|
||||
|
||||
"eyes_annoyed_l",
|
||||
"eyes_angry",
|
||||
"eyes_angry_l",
|
||||
"eyes_suspect",
|
||||
"eyes_suspect_l",
|
||||
"eyes_sad",
|
||||
"eyes_sad_l",
|
||||
"eyes_look_up",
|
||||
|
||||
"mouth_normal",
|
||||
"mouth_normal_talk",
|
||||
"mouth_happy",
|
||||
"mouth_happy_talk",
|
||||
"mouth_sad",
|
||||
"mouth_sad_talk",
|
||||
"mouth_narrow",
|
||||
"mouth_narrow_talk",
|
||||
|
||||
"mouth_blank", // BLANK
|
||||
"eyes_blank", // BLANK
|
||||
|
||||
],
|
||||
x: 0+55,
|
||||
y: 258+135
|
||||
};
|
||||
|
||||
// ANIM LOOPS
|
||||
var animLoops = [];
|
||||
|
||||
// Inherit from Character!
|
||||
Character.apply(self, [spriteConfig, animLoops]);
|
||||
|
||||
// Go To Frames!
|
||||
self.gotoFrames({
|
||||
body: "sit",
|
||||
mouth: "blank",
|
||||
eyes: "blank",
|
||||
},0);
|
||||
var _subscriptions = [];
|
||||
_subscriptions.push( subscribe("hong", self.gotoFrames) );
|
||||
_subscriptions.push( subscribe("DONE_SPEAKING", self.whenDoneSpeaking) );
|
||||
//_subscriptions.push( subscribe("attack_hong", self.showAttackedIcon) );
|
||||
|
||||
// Draw
|
||||
self.characterSpeakerID = "h";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Kill!
|
||||
self.kill = function(){
|
||||
_subscriptions.forEach(unsubscribe);
|
||||
};
|
||||
|
||||
}
|
|
@ -26,8 +26,10 @@ function Character(spriteConfig, animLoops){
|
|||
self.animLoops = animLoops || [];
|
||||
|
||||
// Sprite!
|
||||
var THERE_IS_A_CONE = !!spriteConfig.OVERRIDE_LAYER_NAMES;
|
||||
var LAYER_NAMES = spriteConfig.OVERRIDE_LAYER_NAMES || ["body","mouth","eyes"];
|
||||
self.layers = {};
|
||||
["body","mouth","eyes"].forEach(function(layerName){
|
||||
LAYER_NAMES.forEach(function(layerName){
|
||||
self.layers[layerName] = new Sprite(spriteConfig);
|
||||
});
|
||||
|
||||
|
@ -102,6 +104,12 @@ function Character(spriteConfig, animLoops){
|
|||
l.mouth.gotoFrameByName( "mouth_"+c.mouth );
|
||||
l.eyes.gotoFrameByName( "eyes_"+c.eyes );
|
||||
|
||||
// LOCK IN THE CONE TO BODY + MOUTH, IF ANY
|
||||
if(THERE_IS_A_CONE){
|
||||
l.cone.gotoFrameByName( "cone_normal" );
|
||||
l.coneb.gotoFrameByName( "coneb_normal" );
|
||||
}
|
||||
|
||||
// MOUTH LOCK?
|
||||
if(args.MOUTH_LOCK){
|
||||
self.MOUTH_LOCK = l.mouth.currentFrameName;
|
||||
|
@ -142,10 +150,18 @@ function Character(spriteConfig, animLoops){
|
|||
self.bounceVel *= self.bounceDamp;
|
||||
var totalSquash = self.characterSquash * self.bounce;
|
||||
l.body.squash = l.mouth.squash = l.eyes.squash = totalSquash;
|
||||
if(THERE_IS_A_CONE){
|
||||
l.cone.squash = l.coneb.squash = totalSquash;
|
||||
}
|
||||
|
||||
// Anim Loop rules!
|
||||
self.runAnimLoopRules();
|
||||
|
||||
// SUPER HACK
|
||||
if(THERE_IS_A_CONE){
|
||||
l.coneb.draw(ctx);
|
||||
}
|
||||
|
||||
// Body
|
||||
l.body.draw(ctx);
|
||||
|
||||
|
@ -177,6 +193,11 @@ function Character(spriteConfig, animLoops){
|
|||
|
||||
}
|
||||
|
||||
// SUPER HACK
|
||||
if(THERE_IS_A_CONE){
|
||||
l.cone.draw(ctx);
|
||||
}
|
||||
|
||||
// Draw attacked icon
|
||||
if(IVE_BEEN_ATTACKED){
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ function BG_Intro(){
|
|||
0, // clouds
|
||||
0,
|
||||
0,
|
||||
20,
|
||||
20, // stump
|
||||
0,
|
||||
20
|
||||
]
|
||||
|
|
|
@ -4,10 +4,9 @@ Loader.addScenes([
|
|||
"scenes/intro.md",
|
||||
"scenes/act1.md",
|
||||
"scenes/intermission.md",
|
||||
//"scenes/act2_test.md",
|
||||
"scenes/act2.md",
|
||||
"scenes/act3.md",
|
||||
"scenes/act4.md",
|
||||
"scenes/act4_test.md",
|
||||
"scenes/credits.md"
|
||||
|
||||
]);
|
||||
|
@ -42,8 +41,12 @@ subscribe("START_GAME", function(){
|
|||
//Game.goto("act2");
|
||||
|
||||
// Act 3
|
||||
_ = {"CHAPTER":2,"attack_harm_ch1":3,"attack_alone_ch1":2,"attack_bad_ch1":1,"whitebread":true,"partyinvite":"ignore","subtweet":true,"serialkiller":true,"act1g":"dont","badnews":true,"factcheck":false,"act1_ending":"flight","INTERMISSION_STAGE":2,"attack_harm_ch2":2,"attack_alone_ch2":1,"attack_bad_ch2":3,"a2_first_danger":"social","a2_attack_1":"alone","a2_first_choice":"ignore","a2_second_danger":"ignore","a2_attack_2":"harm","a2_attack_3":"harm","SPECIAL_ATTACK":"bad","a2_ending":"fight"};
|
||||
Game.goto("act3");
|
||||
//_ = {"CHAPTER":2,"attack_harm_ch1":3,"attack_alone_ch1":2,"attack_bad_ch1":1,"whitebread":true,"partyinvite":"ignore","subtweet":true,"serialkiller":true,"act1g":"dont","badnews":true,"factcheck":false,"act1_ending":"flight","INTERMISSION_STAGE":2,"attack_harm_ch2":2,"attack_alone_ch2":1,"attack_bad_ch2":3,"a2_first_danger":"social","a2_attack_1":"alone","a2_first_choice":"ignore","a2_second_danger":"ignore","a2_attack_2":"harm","a2_attack_3":"harm","SPECIAL_ATTACK":"bad","a2_ending":"fight"};
|
||||
//Game.goto("act3");
|
||||
|
||||
// Act 4
|
||||
_ = {"CHAPTER":3,"attack_harm_ch1":3,"attack_alone_ch1":2,"attack_bad_ch1":1,"whitebread":true,"partyinvite":"ignore","subtweet":true,"serialkiller":true,"act1g":"dont","badnews":true,"factcheck":false,"act1_ending":"fight","INTERMISSION_STAGE":2,"attack_harm_ch2":2,"attack_alone_ch2":1,"attack_bad_ch2":3,"a2_first_danger":"social","a2_attack_1":"alone","a2_first_choice":"ignore","a2_second_danger":"ignore","a2_attack_2":"harm","a2_attack_3":"harm","SPECIAL_ATTACK":"alone","a2_ending":"fight","act3_bb_body":4,"a3_ending":"walkaway","INJURED":true};
|
||||
Game.goto("act4");
|
||||
|
||||
//Game.goto("intro");
|
||||
|
||||
|
|
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 182 KiB |
Before Width: | Height: | Size: 219 KiB |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 176 KiB |