HELL YEAH ACT 3 is DONEEEEEEE

This commit is contained in:
Nicky Case 2019-07-30 16:17:36 -04:00
parent f41cef3252
commit 9a706a1bb7
11 changed files with 441 additions and 128 deletions

5
TODO
View File

@ -30,13 +30,18 @@ ACT II
ACT III ACT III
- BB special attack anim - BB special attack anim
- sfx for endings - sfx for endings
- bb: "surface tension"
- hunter, hand on heart "hurts people like us" - hunter, hand on heart "hurts people like us"
- hunter, angry lookaway "otherwise, you're gonna let it win" - hunter, angry lookaway "otherwise, you're gonna let it win"
- hong, angry AFTER "not gonna let it win" - hong, angry AFTER "not gonna let it win"
- o_o for hunter instead
- shaking ambulance
- ALL NEW SFX
======================= =======================
ACT IV ACT IV
- (say auto-saved)
- hong char + anims - hong char + anims
- bb char + anims - bb char + anims
- more al/shire - more al/shire

View File

@ -260,7 +260,7 @@
<script src="scripts/game/Loader.js"></script> <script src="scripts/game/Loader.js"></script>
<script src="scripts/game/Game.js"></script> <script src="scripts/game/Game.js"></script>
<script src="scripts/game/Sprite.js"></script> <script src="scripts/game/Sprite.js"></script>
<script src="scripts/game/HP.js?v=2"></script> <script src="scripts/game/HP.js"></script>
<script src="scripts/game/BG_Anxiety.js"></script> <script src="scripts/game/BG_Anxiety.js"></script>
<script src="scripts/game/Character.js"></script> <script src="scripts/game/Character.js"></script>
<script src="scripts/game/Sounds.js"></script> <script src="scripts/game/Sounds.js"></script>

View File

@ -7,8 +7,6 @@ Game.WORDS_HEIGHT_BOTTOM = 205;
r: Cheers! r: Cheers!
(#act3_skip)
``` ```
publish("act3",["roofhunter",1]); publish("act3",["roofhunter",1]);
publish("act3",["roofhong",1]); publish("act3",["roofhong",1]);
@ -196,8 +194,6 @@ publish("act3",["dd",2]);
h2: No. You're wrong. h2: No. You're wrong.
# act3_skip
``` ```
publish("act3",["roofhunter",13]); publish("act3",["roofhunter",13]);
publish("act3",["roofhong",15]); publish("act3",["roofhong",15]);
@ -227,6 +223,7 @@ r: Fuck yeah! I believe in you, babe! Kill it! <3
Game.clearText(); Game.clearText();
publish("act3-out"); publish("act3-out");
Game.WORDS_HEIGHT_BOTTOM = -1; /* reset */ Game.WORDS_HEIGHT_BOTTOM = -1; /* reset */
_.act3_bb_body = 1;
``` ```
(...1500) (...1500)
@ -243,11 +240,18 @@ b: NO NO NO NO NO NO NO NO NO NO NO NO NO NO
n: CHOOSE WISELY. PROTECT YOUR HUMAN n: CHOOSE WISELY. PROTECT YOUR HUMAN
`bb({ eyes:"oh_crap", mouth:"normal_talk", MOUTH_LOCK:true });`
b: AAAAAAAAAAAAAAAAAA b: AAAAAAAAAAAAAAAAAA
`bb({ mouth:"normal" });`
n: GOOD LUCK n: GOOD LUCK
`Game.clearText();` ```
Game.clearText();
bb({ eyes:"start" });
```
[Human, you could actually DIE here!](#act3a_harm) `Game.OVERRIDE_CHOICE_LINE=true` [Human, you could actually DIE here!](#act3a_harm) `Game.OVERRIDE_CHOICE_LINE=true`
@ -257,18 +261,24 @@ n: GOOD LUCK
# act3a_harm # act3a_harm
`bb({ MOUTH_LOCK:true, mouth:"normal_talk" });`
b: H-- b: H--
(#act3a_after) (#act3a_after)
# act3a_alone # act3a_alone
`bb({ MOUTH_LOCK:true, mouth:"normal_talk" });`
b: T-- b: T--
(#act3a_after) (#act3a_after)
# act3a_bad # act3a_bad
`bb({ MOUTH_LOCK:true, mouth:"normal_talk" });`
b: T-- b: T--
(#act3a_after) (#act3a_after)
@ -279,19 +289,24 @@ b: T--
hong({body:"drink"}); hong({body:"drink"});
bb({body:"attacked"}); bb({body:"attacked"});
attackBB("32p"); attackBB("32p");
_.act3_bb_body++;
``` ```
(...2000) (...2000)
``` ```
hong({body:"angry"}); hong({ body:"normal" });
bb({body:"scared"}); bb({ body:"normal_"+_.act3_bb_body, mouth:"normal", eyes:"normal" });
``` ```
h: You know, I might've believed you... if you hadn't tried that a zillion times before. h: You know, I might've believed you... if you hadn't tried that a zillion times before.
h: You're the wolf who cried wolf. h: You're the wolf who cried wolf.
```
bb({ eyes:"sad" });
```
`Game.OVERRIDE_CHOICE_SPEAKER = "fear_harm"` `Game.OVERRIDE_CHOICE_SPEAKER = "fear_harm"`
[](#act3_fork) `_.SPECIAL_ATTACK="harm"; Game.OVERRIDE_CHOICE_LINE=true` [](#act3_fork) `_.SPECIAL_ATTACK="harm"; Game.OVERRIDE_CHOICE_LINE=true`
@ -311,40 +326,51 @@ h: You're the wolf who cried wolf.
hong({body:"drink"}); hong({body:"drink"});
bb({body:"attacked"}); bb({body:"attacked"});
attackBB("32p"); attackBB("32p");
_.act3_bb_body++;
``` ```
(...2000) (...2000)
``` ```
hong({body:"angry"}); hong({ body:"normal" });
bb({body:"scared"}); bb({ body:"normal_"+_.act3_bb_body, mouth:"normal", eyes:"normal" });
``` ```
h: You already tried that too. h: You already tried that too.
b: human, please... b: human, please...
`hong({ eyes:"look_right" });`
h: Oh I'm *sorry* Big Pharma doesn't approve of my self-medication. h: Oh I'm *sorry* Big Pharma doesn't approve of my self-medication.
h: Look asshole, we *all* have a way of shutting you the fuck up. h: Look asshole, we *all* have a way of shutting you the fuck up.
`hong({ body:"look_up", eyes:"look_up" });`
h: Some people throw themselves into work. h: Some people throw themselves into work.
`hong({ body:"look_down", eyes:"look_down" });`
h: Some people throw themselves into sex, drugs, and refreshing their Facebook feed. h: Some people throw themselves into sex, drugs, and refreshing their Facebook feed.
`hong({ body:"normal", eyes:"look_right" });`
h: Some people throw themselves into other people. h: Some people throw themselves into other people.
`hong({ eyes:"angry" });`
h: I'm going to throw myself into that swimming pool. h: I'm going to throw myself into that swimming pool.
[You're drunk and it's SIX FLOORS DOWN](#act3_bad_1_harm) [You're drunk and it's SIX FLOORS DOWN](#act3_bad_1_harm)
[Dang it, this is the thanks I get?!](#act3_bad_1_insult) [Dang it, this is the thanks I get?!](#act3_bad_1_insult) `bb({eyes:"angry"});`
[Okay, I admit it. I messed up.](#act3_good_1) `bb({body:"sad"})` [Okay, I admit it. I messed up.](#act3_good_1) `bb({mouth:"sorry", eyes:"sorry_down"});`
# act3_bad_1_harm # act3_bad_1_harm
b: Even if you somehow land *in* the water, you'll still smash into the bottom of the pool and break your bones! b: Even if you land in the water, the surface tension will crack your ribs and give you a concussion *at the least!*
h: Eh. h: Eh.
@ -352,23 +378,28 @@ h: Eh.
hong({body:"drink"}); hong({body:"drink"});
bb({body:"attacked"}); bb({body:"attacked"});
attackBB("32p"); attackBB("32p");
_.act3_bb_body++;
``` ```
(...2000) (...2000)
``` ```
hong({body:"angry"}); hong({ body:"normal", mouth:"angry", eyes:"angry" });
bb({body:"scared"}); bb({ body:"normal_"+_.act3_bb_body, mouth:"normal", eyes:"normal" });
``` ```
h: I think I saw a Russian guy do this on YouTube once. h: I saw a Russian guy do this on YouTube once.
(#act3_bad_2) (#act3_bad_2)
# act3_bad_1_insult # act3_bad_1_insult
`hong({ eyes:"look_right" });`
h: I- Excuse me, the *thanks?* h: I- Excuse me, the *thanks?*
`bb({ eyes:"angry" });`
b: This is exactly why I *exist!* Because humans can't be trusted to protect themselves! b: This is exactly why I *exist!* Because humans can't be trusted to protect themselves!
b: I've been trying to protect your stupid butt all my life and now you're just going t-- b: I've been trying to protect your stupid butt all my life and now you're just going t--
@ -377,34 +408,50 @@ b: I've been trying to protect your stupid butt all my life and now you're just
hong({body:"drink"}); hong({body:"drink"});
bb({body:"attacked"}); bb({body:"attacked"});
attackBB("32p"); attackBB("32p");
_.act3_bb_body++;
``` ```
(...2000) (...2000)
``` ```
hong({body:"angry"}); hong({ body:"normal", mouth:"angry", eyes:"angry" });
bb({body:"scared"}); bb({ body:"normal_"+_.act3_bb_body, mouth:"normal", eyes:"normal" });
``` ```
(#act3_bad_2) (#act3_bad_2)
# act3_good_1 # act3_good_1
`hong({ body:"laugh_1" })``
h: heh. h: heh.
`hong({ body:"laugh_2" })``
h: hahahaha h: hahahaha
`hong({ body:"laugh_3" })``
h: HAHAHAHAHAHA h: HAHAHAHAHAHA
```
bb({ eyes:"sorry"});
hong({ body:"yell_1", mouth:"yell", eyes:"blank" });
```
h: Oh WOW is that the biggest *fucking* understatement of the century! h: Oh WOW is that the biggest *fucking* understatement of the century!
`hong({ body:"yell_2" });`
h: Yeah, you rotting pile of blood-coated shit! You messed the fuck up! h: Yeah, you rotting pile of blood-coated shit! You messed the fuck up!
`hong({ body:"normal", mouth:"angry", eyes:"angry" });`
h: Any other remarks, Captain Obvious? h: Any other remarks, Captain Obvious?
[But revenge on me isn't the answer!](#act3_good_1_fail_revenge) `bb({body:"scared"})` [But revenge on me isn't the answer!](#act3_good_1_fail_revenge) `bb({ body:"normal_"+_.act3_bb_body, mouth:"normal", eyes:"normal" });`
[But this time I'm *actually* right!](#act3_good_1_fail_harm) `bb({body:"scared"})` [But this time I'm *actually* right!](#act3_good_1_fail_harm) `bb({ body:"normal_"+_.act3_bb_body, mouth:"normal", eyes:"normal" });`
[I've hurt you.](#act3_good_2a) [I've hurt you.](#act3_good_2a)
@ -417,13 +464,14 @@ b: You need to have a healthier relationship with your emotions, rather than dro
hong({body:"drink"}); hong({body:"drink"});
bb({body:"attacked"}); bb({body:"attacked"});
attackBB("32p"); attackBB("32p");
_.act3_bb_body++;
``` ```
(...2000) (...2000)
``` ```
hong({body:"angry"}); hong({ body:"normal", mouth:"angry", eyes:"angry" });
bb({body:"scared"}); bb({ body:"normal_"+_.act3_bb_body, mouth:"normal", eyes:"normal" });
``` ```
(#act3_bad_2) (#act3_bad_2)
@ -438,13 +486,14 @@ b: So please, put the bottle down and let's--
hong({body:"drink"}); hong({body:"drink"});
bb({body:"attacked"}); bb({body:"attacked"});
attackBB("32p"); attackBB("32p");
_.act3_bb_body++;
``` ```
(...2000) (...2000)
``` ```
hong({body:"angry"}); hong({ body:"normal", mouth:"angry", eyes:"angry" });
bb({body:"scared"}); bb({ body:"normal_"+_.act3_bb_body, mouth:"normal", eyes:"normal" });
``` ```
(#act3_bad_2) (#act3_bad_2)
@ -454,27 +503,40 @@ bb({body:"scared"});
# act3_bad_2 # act3_bad_2
`bb({ eyes:"sad" });`
b: please... don't... b: please... don't...
h: Your energy bar's looking awfully low there, wolf. h: Your energy bar's looking awfully low there, wolf.
h: If I were you, I'd choose your next words very carefully. h: If I were you, I'd choose your next words very carefully.
[Fine. I'm done protecting you.](#act3_bad_2_jump) `bb({ eyes:"normal" });`
[Fine. I'm done protecting you.](#act3_bad_2_jump) `bb({ mouth:"ignore", eyes:"ignore" });`
[I was right all along.](#act3_bad_2_right) [I was right all along.](#act3_bad_2_right)
[I'm sorry.](#act3_good_2b) `bb({body:"sad"})` [I'm sorry.](#act3_good_2b) `bb({mouth:"sorry", eyes:"sorry_down"});`
# act3_bad_2_jump # act3_bad_2_jump
b: So, go ahead and jump. See what I care. b: So, go ahead and jump. See what I care.
`hong({ eyes:"look_right", mouth:"normal", MOUTH_LOCK:true });`
h: ... h: ...
```
hong({ eyes:"less_angry", mouth:"normal" });
bb({ eyes:"ignore_oh_crap" });
```
h: Okay then. Bottoms up. h: Okay then. Bottoms up.
`bb({ mouth:"normal", eyes:"oh_crap" });`
b: WAIT NO THAT WAS REVERSE PSYCHOLOGY YOU WERE SUPPOSED TO DO THE *OPPOSITE* OF WHAT I SA-- b: WAIT NO THAT WAS REVERSE PSYCHOLOGY YOU WERE SUPPOSED TO DO THE *OPPOSITE* OF WHAT I SA--
(#act3_bad_3) (#act3_bad_3)
@ -483,20 +545,28 @@ b: WAIT NO THAT WAS REVERSE PSYCHOLOGY YOU WERE SUPPOSED TO DO THE *OPPOSITE* OF
# act3_bad_2_right # act3_bad_2_right
`bb({ eyes:"angry" });`
b: You *are* putting yourself in danger. Your so-called friends *are* using you. And *you* are using your so-called friends. b: You *are* putting yourself in danger. Your so-called friends *are* using you. And *you* are using your so-called friends.
`bb({ eyes:"sad" });`
b: So please, human... why don't you believe me?! b: So please, human... why don't you believe me?!
h: Because you don't believe in *me*. h: Because you never believed in *me*.
(#act3_bad_3) (#act3_bad_3)
# act3_bad_2_terrible # act3_bad_2_terrible
b: Other guard-wolves have humans who actually take time to patiently train them, to learn to work together, `bb({ eyes:"angry" });`
b: Rather than hate the guard-wolves for trying to protect them! So why couldn't you jus-- b: Other guard-wolves have humans who actually take time to patiently train them, to *learn* to work together,
b: Rather than hate the guard-wolves for trying to protect them! So why can't you jus--
`bb({ eyes:"normal" });`
h: Wrong fucking answer. h: Wrong fucking answer.
@ -510,28 +580,37 @@ h: Wrong fucking answer.
music(null); music(null);
hong({body:"drink"}); hong({body:"drink"});
bb({body:"attacked"}); bb({body:"attacked"});
publish("bb_STOP_VIBRATING");
attackBB("100p"); attackBB("100p");
``` ```
(...2000) (...2000)
``` ```
hong({body:"angry"}); hong({ body:"normal", mouth:"normal", eyes:"normal" });
bb({body:"dead"}); bb({ body:"dead" });
``` ```
(...999) (...999)
h: *"The only thing to fear is fear itself."* h: *"The only thing to fear is fear itself."*
`hong({ body:"look_up", mouth:"happy", eyes:"blank" });`
h: *"Don't worry, be happy!"* h: *"Don't worry, be happy!"*
`hong({ body:"normal", mouth:"normal", eyes:"normal" });`
h: All the wise folk of our time agree: negative emotions are *bad!* h: All the wise folk of our time agree: negative emotions are *bad!*
`hong({ eyes:"less_angry" });`
h: Duh! That's why they're called *negative!* h: Duh! That's why they're called *negative!*
b: human... please... b: human... please...
`hong({ eyes:"normal" });`
h: A while back, I said: “I just want to be free from all this pain.” h: A while back, I said: “I just want to be free from all this pain.”
h: I got my wish. I no longer feel pain, or fear, or anxiety... h: I got my wish. I no longer feel pain, or fear, or anxiety...
@ -546,12 +625,23 @@ h: I don't feel anything at all.
# act3_good_2a # act3_good_2a
`bb({mouth:"sorry", eyes:"sorry_down"});`
b: I was so obsessed with making sure nothing else hurt you, that I didn't realize *I* was creating the hurt. b: I was so obsessed with making sure nothing else hurt you, that I didn't realize *I* was creating the hurt.
```
bb({ eyes:"sorry"});
hong({ body:"yell_2", mouth:"yell", eyes:"blank" });
```
h: NO. SHIT. h: NO. SHIT.
`hong({ body:"yell_1" });`
h: GODDAMN. It really took you this long to finally figure it out?! h: GODDAMN. It really took you this long to finally figure it out?!
`hong({ body:"cry", mouth:"cry", eyes:"blank" });`
h: You could've saved us so much trouble, you big fluffy dumbass. Why didn't you realize this sooner?... h: You could've saved us so much trouble, you big fluffy dumbass. Why didn't you realize this sooner?...
`_.apologized_for_hurt = true;` `_.apologized_for_hurt = true;`
@ -562,8 +652,12 @@ h: You could've saved us so much trouble, you big fluffy dumbass. Why didn't you
# act3_good_2b # act3_good_2b
`hong({ body:"normal", mouth:"angry", eyes:"look_right" });`
h: ...you're *sorry.* h: ...you're *sorry.*
`hong({ eyes:"angry", MOUTH_LOCK:true });`
h: ... h: ...
h: Sorry for *what*? h: Sorry for *what*?
@ -573,6 +667,8 @@ h: Sorry for *what*?
# act3_good_2q # act3_good_2q
`bb({mouth:"sorry", eyes:"sorry"});`
{{if _.apologized_for_hurt}} {{if _.apologized_for_hurt}}
(#act3_good_2q_already_apologized) (#act3_good_2q_already_apologized)
{{/if}} {{/if}}
@ -584,6 +680,8 @@ h: Sorry for *what*?
# act3_good_2q_already_apologized # act3_good_2q_already_apologized
`hong({ body:"normal", mouth:"angry", eyes:"less_angry" });`
[I'm sorry I wasn't a good protector.](#act3_good_3_protector) [I'm sorry I wasn't a good protector.](#act3_good_3_protector)
[I'm sorry I didn't respect you.](#act3_good_3_respect) [I'm sorry I didn't respect you.](#act3_good_3_respect)
@ -593,7 +691,9 @@ h: Sorry for *what*?
# act3_good_2q_not_already_apologized # act3_good_2q_not_already_apologized
[I'm sorry I have a terrible human!](#act3_bad_2_terrible) `bb({body:"scared"})` `hong({ body:"normal", mouth:"angry", eyes:"angry" }, 0);`
[I'm sorry I have a terrible human!](#act3_bad_2_terrible) `bb({mouth:"normal", eyes:"normal"})`
[I'm sorry I didn't respect you.](#act3_good_3_respect) [I'm sorry I didn't respect you.](#act3_good_3_respect)
@ -603,12 +703,20 @@ h: Sorry for *what*?
# act3_good_3_protector # act3_good_3_protector
`bb({eyes:"sorry_down"});`
b: It's my duty to warn you against *real* danger, but I kept barking at cars and the mailman. b: It's my duty to warn you against *real* danger, but I kept barking at cars and the mailman.
`bb({eyes:"sorry_up"});`
b: Barking at shadows. Barking so much. b: Barking at shadows. Barking so much.
`bb({eyes:"sorry"});`
b: It only makes sense that you'd want to muzzle me. b: It only makes sense that you'd want to muzzle me.
`bb({eyes:"sorry_down"});`
b: I'm sorry. b: I'm sorry.
(#act3_good_4) (#act3_good_4)
@ -617,9 +725,15 @@ b: I'm sorry.
# act3_good_3_respect # act3_good_3_respect
`bb({eyes:"sorry_down"});`
b: I was supposed to be *your* loyal guard-dog, but I acted as if you were supposed to obey *me*. b: I was supposed to be *your* loyal guard-dog, but I acted as if you were supposed to obey *me*.
b: There's a difference between protector and prison warden, and I crossed the line. `bb({eyes:"sorry_up"});`
b: There's a difference between a protector and a prison warden, and I crossed the line.
`bb({eyes:"sorry_down"});`
b: I'm sorry. b: I'm sorry.
@ -629,10 +743,16 @@ b: I'm sorry.
# act3_good_3_hurt # act3_good_3_hurt
`bb({eyes:"sorry_down"});`
b: I was so obsessed with trying to protect you from being hurt, I never stopped to realize *I* was hurting you. b: I was so obsessed with trying to protect you from being hurt, I never stopped to realize *I* was hurting you.
`bb({eyes:"sorry_up"});`
b: I was a bad dog. b: I was a bad dog.
`bb({eyes:"sorry_down"});`
b: I'm sorry. b: I'm sorry.
(#act3_good_4) (#act3_good_4)
@ -641,13 +761,14 @@ b: I'm sorry.
# act3_good_4 # act3_good_4
``` ```
music(null,{fade:5}); music(null,{fade:3});
hong({ eyes:"less_angry", MOUTH_LOCK:true },0);
``` ```
h: ... h: ...
``` ```
hong({body:"stop"}); hong({ body:"stop", mouth:"stop", eyes:"blank" });
``` ```
h: Yeah, well, this was a dumb idea anyway. h: Yeah, well, this was a dumb idea anyway.
@ -656,6 +777,11 @@ h: I only did this to fuck you up, and, well, I fucked you up.
h: Let's just call this round a tie, okay? h: Let's just call this round a tie, okay?
```
bb({ mouth:"sorry", eyes:"sorry" });
bb({ MOUTH_LOCK:true });
```
b: ... b: ...
b: Okay. b: Okay.
@ -702,11 +828,23 @@ Game.FORCE_CANT_SKIP = true;
``` ```
publish("start-walkaway-anim"); publish("start-walkaway-anim");
Game.WORDS_HEIGHT_BOTTOM = 205;
``` ```
(...2001) (...3501)
`publish('hong-next')` ```
publish('hong-next');
publish("act3",["roofhunter",7]);
```
(...667)
```
publish("act3",["dd",4]);
publish("act3",["roofhunter",26]);
publish('hong-next');
```
(...667) (...667)
@ -714,20 +852,20 @@ publish("start-walkaway-anim");
(...667) (...667)
`publish('hong-next')` ```
publish('hong-next');
(...667) publish("act3",["roofhunter",27]);
```
`publish('hong-next')`
`Game.FORCE_CANT_SKIP = false;` `Game.FORCE_CANT_SKIP = false;`
r: Oh *come on*. After all that, you're just walking away? r: Oh *come on*. After all that, you're just *giving up* the fight?
r: What's the matter, kid? Are you *scared?* r: What's the matter, kid? Are you *scared?*
``` ```
publish('hong-next'); publish('hong-next');
publish("act3",["roofhunter",26]);
``` ```
h2: Yes. h2: Yes.
@ -761,7 +899,11 @@ Game.FORCE_CANT_SKIP = true;
(...1333) (...1333)
`publish('hong-next')` ```
publish('hong-next');
publish("act3",["dd",5]);
publish("act3",["roofhunter",31]);
```
(...667) (...667)
@ -781,15 +923,21 @@ Game.FORCE_CANT_SKIP = true;
publish('hong-next'); publish('hong-next');
Game.FORCE_CANT_SKIP = false; Game.FORCE_CANT_SKIP = false;
sfx("lock_door"); sfx("lock_door");
publish("act3",["roofhunter",32]);
``` ```
(...2001) (...2001)
```
publish("act3",["roofhunter",33]);
```
r: Did they just lock the door? r: Did they just lock the door?
``` ```
Game.clearAll(); Game.clearAll();
_.INJURED = false; _.INJURED = false;
Game.WORDS_HEIGHT_BOTTOM = -1;
``` ```
(...2000) (...2000)
@ -801,7 +949,10 @@ _.INJURED = false;
# act3_jump # act3_jump
`publish("start-jump-anim");` ```
publish("start-jump-anim");
Game.FORCE_TEXT_Y = 300;
```
(...2001) (...2001)
@ -809,15 +960,49 @@ _.INJURED = false;
(...833) (...833)
`publish('hong-next')` ```
publish('hong-next');
publish("act3",["dd",4]);
publish("act3",["roofhunter",28]);
```
(...125)
(...501) `publish("act3",["roofhunter",29]);`
`publish('hong-next')` (...125)
(...501) `publish("act3",["roofhunter",28]);`
`publish('hong-next')` (...125)
`publish("act3",["roofhunter",29]);`
(...125)
```
publish('hong-next');
publish("act3",["roofhunter",28]);
```
(...125)
`publish("act3",["roofhunter",29]);`
(...125)
`publish("act3",["roofhunter",28]);`
(...125)
`publish("act3",["roofhunter",29]);`
(...125)
```
publish('hong-next');
publish("act3",["dd",5]);
publish("act3",["roofhunter",34]);
```
(...1167) (...1167)
@ -829,12 +1014,12 @@ _.INJURED = false;
b: no... b: no...
`publish('hong-next')`
(...501) (...501)
`Game.clearText();` `Game.clearText();`
`publish('hong-next')`
(...1333) (...1333)
`publish('hong-next')` `publish('hong-next')`
@ -857,11 +1042,11 @@ b: no no no
(...501) (...501)
`publish('hong-next')` ```
publish('hong-next');
(...167) publish("act3",["dd",4]);
publish("act3",["roofhunter",30]);
`publish('hong-next')` ```
(...167) (...167)
@ -871,7 +1056,16 @@ b: no no no
``` ```
publish('hong-next'); publish('hong-next');
publish("hunter-roof", ["front_shock"]); publish("act3",["dd",2]);
publish("act3",["roofhunter",15]);
```
(...167)
```
publish('hong-next');
publish("act3",["dd",3]);
publish("act3",["roofhunter",16]);
``` ```
(...833) (...833)
@ -884,13 +1078,19 @@ publish("hunter-roof", ["front_shock"]);
(...167) (...167)
`publish('hong-next')` ```
publish('hong-next');
Game.FORCE_TEXT_Y = 325;
Game.OVERRIDE_FONT_SIZE = 50;
```
b: NO! b: NO!
(...400) (...400)
``` ```
Game.WORDS_HEIGHT_BOTTOM = -1;
Game.FORCE_TEXT_Y = -1;
Game.clearText(); Game.clearText();
publish("act4-injury-show"); publish("act4-injury-show");
``` ```

View File

@ -4,7 +4,7 @@
# intro-play-button # intro-play-button
`Game.HACK_MAKE_THE_LINE_BIG=true;` `Game.OVERRIDE_FONT_SIZE=30;`
[<div class="mini-icon" pic="play1"></div> PLAY! <div class="mini-icon" pic="play2"></div>](#intro-start) `publish("intro-to-game-1"); Game.OVERRIDE_CHOICE_LINE=true;` [<div class="mini-icon" pic="play1"></div> PLAY! <div class="mini-icon" pic="play2"></div>](#intro-start) `publish("intro-to-game-1"); Game.OVERRIDE_CHOICE_LINE=true;`

View File

@ -194,19 +194,32 @@ function BG_Rooftop(){
PARALLAXING = null; PARALLAXING = null;
// Stage 1 transition end // Stage 1 transition end
/*if(STAGE==1){ if(STAGE==1){
ALPHAS[1] = 0; // HIDE Hunter ALPHAS.forEach(function(val, index){
ALPHAS[3] = 0; // HIDE Old Hong if(index<9) ALPHAS[index]=0;
ALPHAS[4] = 1; // SHOW new hong });
ALPHAS[5] = 1; // SHOW Beebee }
}*/ if(STAGE==2){
ALPHAS[11] = 0; // HIDE battle Hong
ALPHAS[12] = 0; // HIDE battle Beebee
// Transition BB in
if(_.a3_ending=="walkaway"){
setTimeout(function(){
self.roofhong.nextFrame();
},800);
}
}
} }
} }
// BYE CLOUDS // BYE CLOUDS
OFFSETS[2] -= 3/60; if(ALPHAS[9]!=1){ // unless anxiety BG
OFFSETS[2] -= 3/60;
}
// SUPER HACKY - ANIMATE THE DIZZIES // SUPER HACKY - ANIMATE THE DIZZIES
ticker += 1/60; ticker += 1/60;
@ -230,7 +243,7 @@ function BG_Rooftop(){
} }
} }
// ANIMATE HONG // ANIMATE TRANSITION
if(self.transition.currentFrame>0){ if(self.transition.currentFrame>0){
self.transition._hack_timer = (self.transition._hack_timer===undefined) ? 0 : self.transition._hack_timer; self.transition._hack_timer = (self.transition._hack_timer===undefined) ? 0 : self.transition._hack_timer;
self.transition._hack_timer += 1/60; self.transition._hack_timer += 1/60;
@ -238,7 +251,8 @@ function BG_Rooftop(){
self.transition._hack_timer = 0; self.transition._hack_timer = 0;
if(self.transition.currentFrame<7){ if(self.transition.currentFrame<7){
self.transition.nextFrame(); self.transition.nextFrame();
}else{ }else if(!self.transition._HACK_DONE_FOREVER){
self.transition._HACK_DONE_FOREVER = true;
publish("act3-alpha", ["transition", 0]); publish("act3-alpha", ["transition", 0]);
publish("act3-alpha", ["hong", 1]); publish("act3-alpha", ["hong", 1]);
publish("act3-alpha", ["beebee", 1]); publish("act3-alpha", ["beebee", 1]);
@ -246,6 +260,17 @@ function BG_Rooftop(){
} }
} }
// ANIMATE HONG
var h = self.roofhong;
if(h.currentFrame>=36 && h.currentFrame<43){
h._hack_timer = (h._hack_timer===undefined) ? 0 : h._hack_timer;
h._hack_timer += 1/60;
if(h._hack_timer>1/15){ // 15fps
h._hack_timer = 0;
h.nextFrame();
}
}
// Anxiety BG // Anxiety BG
if(ALPHAS[9]>0){ if(ALPHAS[9]>0){
self.anxiety.update(ALPHAS[9]); self.anxiety.update(ALPHAS[9]);
@ -308,13 +333,19 @@ function BG_Rooftop(){
}), }),
subscribe("act3-in", function(){ subscribe("act3-in", function(){
// SHOW ACTION, HIDE CHARS // WEIRD PARALLAXIN' TIME
/* self.hong.ALLOW_PARALLAX = true;
ALPHAS[1] = 1; // SHOW Hunter self.beebee.ALLOW_PARALLAX = true;
ALPHAS[3] = 1; // SHOW Roof Hong PARALLAXES[11] = 1.0; // battle hong
ALPHAS[4] = 0; // HIDE battle Hong PARALLAXES[12] = 1.27; // battle bb
ALPHAS[5] = 0; // HIDE battle Beebee OFFSETS[11] = MAGIC_NUMBER*PARALLAXES[11]; // battle hong
*/ OFFSETS[12] = MAGIC_NUMBER*PARALLAXES[12]; // battle bb
// SHOW EVERYTHING BELOW ANXIETY BG
ALPHAS.forEach(function(val, index){
if(index<9) ALPHAS[index]=1;
});
ALPHAS[6] = ALPHAS[7] = 0; // Except dizzy
// WHOOSH // WHOOSH
STAGE = 2; STAGE = 2;
@ -323,24 +354,20 @@ function BG_Rooftop(){
}), }),
// HUNTER FRAME // JUMP OFF / WALK AWAY
subscribe("hunter-roof", function(frameName){
self.hunterSprite.gotoFrameByName(frameName);
}),
// JUMP OFF
subscribe("start-jump-anim", function(){ subscribe("start-jump-anim", function(){
self.hongSprite.gotoFrame(4); self.dd.gotoFrame(2);
self.hunterSprite.gotoFrameByName("front_badass"); self.roofhunter.gotoFrame(15);
self.roofhong.gotoFrame(16);
}),
subscribe("start-walkaway-anim", function(){
self.dd.gotoFrame(2);
self.roofhunter.gotoFrame(5);
self.roofhong.gotoFrame(35);
}), }),
subscribe("hong-next", function(){ subscribe("hong-next", function(){
self.hongSprite.nextFrame(); //self.hongSprite.nextFrame();
}), self.roofhong.nextFrame();
// WALK AWAY
subscribe("start-walkaway-anim", function(){
self.hongSprite.gotoFrame(23);
self.hunterSprite.gotoFrameByName("side_neutral");
}), }),
// INJURY // INJURY

View File

@ -10,8 +10,8 @@ function Act3_Beebee(){
var spriteConfig = { var spriteConfig = {
image: Library.images.act3_bb, image: Library.images.act3_bb,
grid:{ grid:{
width: 4, width: 8,
height: 2 height: 3
}, },
frame:{ frame:{
width: 720, width: 720,
@ -19,15 +19,37 @@ function Act3_Beebee(){
}, },
anchor:{ anchor:{
x: 270, x: 270,
y: 222 y: 223
}, },
frameNames:[ frameNames:[
"body_scared*",
"body_sad*", "body_normal_1",
"body_normal_2",
"body_normal_3",
"body_normal_4",
"mouth_sorry",
"mouth_sorry_talk",
"eyes_sorry_down",
"eyes_sorry",
"eyes_sorry_up",
"mouth_normal",
"mouth_normal_talk",
"eyes_oh_crap",
"eyes_start",
"eyes_normal",
"eyes_angry",
"eyes_sad",
"mouth_ignore",
"mouth_ignore_talk",
"eyes_ignore",
"eyes_ignore_oh_crap",
"body_attacked*", "body_attacked*",
"body_dead*", "body_dead*",
"eyes_blank", //"eyes_blank", // BLANK
"mouth_blank", //"mouth_blank", // BLANK
], ],
x: 270, x: 270,
y: 258+222-60 y: 258+222-60
@ -41,13 +63,19 @@ function Act3_Beebee(){
// Go To Frames! // Go To Frames!
self.gotoFrames({ self.gotoFrames({
body: "scared", body: "normal_1",
mouth: "blank", mouth: "normal",
eyes: "blank", eyes: "start",
}); });
var _subscriptions = []; var _subscriptions = [];
_subscriptions.push( subscribe("bb", self.gotoFrames) ); _subscriptions.push( subscribe("bb", self.gotoFrames) );
_subscriptions.push( subscribe("attack_bb", self.showAttackedIcon) ); _subscriptions.push( subscribe("attack_bb", self.showAttackedIcon) );
_subscriptions.push( subscribe("DONE_SPEAKING", self.whenDoneSpeaking) );
_subscriptions.push(
subscribe("bb_STOP_VIBRATING", function(){
self.isVibrating = false;
})
);
// Draw! Same as earlier except a lot of vibration // Draw! Same as earlier except a lot of vibration
var ticker = 0; var ticker = 0;
@ -55,11 +83,16 @@ function Act3_Beebee(){
self.characterSpeakerID = "b"; self.characterSpeakerID = "b";
self.bounceHookes = 0.25; // loose self.bounceHookes = 0.25; // loose
self.bounceDamp = 0.9; // loose self.bounceDamp = 0.9; // loose
self.isVibrating = true;
self.draw = function(ctx){ self.draw = function(ctx){
// Vibration! // Vibration!
ticker += 1/60; ticker += 1/60;
self.characterSquash = 1 + Math.sin(ticker*Math.TAU*7)*0.01; // seven vibes per second if(self.isVibrating){
self.characterSquash = 1 + Math.sin(ticker*Math.TAU*7)*0.01; // seven vibes per second
}else{
self.characterSquash = 1;
}
// Old Draw // Old Draw
_oldDraw.apply(self, arguments); _oldDraw.apply(self, arguments);

View File

@ -10,8 +10,8 @@ function Act3_Hong(){
var spriteConfig = { var spriteConfig = {
image: Library.images.act3_hong, image: Library.images.act3_hong,
grid:{ grid:{
width: 4, width: 8,
height: 1 height: 4
}, },
frame:{ frame:{
width: 720, width: 720,
@ -19,15 +19,44 @@ function Act3_Hong(){
}, },
anchor:{ anchor:{
x: 59, x: 59,
y: 180 y: 181
}, },
frameNames:[ frameNames:[
"body_angry*",
"body_normal",
"body_cry",
"mouth_cry",
"mouth_cry_talk",
"body_look_up",
"body_look_down",
"mouth_happy",
"eyes_normal",
"eyes_look_right",
"eyes_angry",
"eyes_less_angry",
"eyes_look_up",
"eyes_look_down",
"mouth_angry",
"mouth_angry_talk",
"mouth_normal",
"mouth_normal_talk",
"body_drink*", "body_drink*",
"body_stop*", "body_stop",
"body_foobar*", "mouth_stop",
"mouth_blank", "mouth_stop_talk",
"eyes_blank", "body_laugh_1*",
"body_laugh_2*",
"body_laugh_3*",
"body_yell_1",
"body_yell_2",
"mouth_yell",
"mouth_yell_talk",
"mouth_blank", // BLANK
"eyes_blank", // BLANK
], ],
x: 59, x: 59,
y: 258+180 y: 258+180
@ -41,12 +70,13 @@ function Act3_Hong(){
// Go To Frames! // Go To Frames!
self.gotoFrames({ self.gotoFrames({
body: "angry", body: "normal",
mouth: "blank", mouth: "angry",
eyes: "blank", eyes: "angry",
}); },0);
var _subscriptions = []; var _subscriptions = [];
_subscriptions.push( subscribe("hong", self.gotoFrames) ); _subscriptions.push( subscribe("hong", self.gotoFrames) );
_subscriptions.push( subscribe("DONE_SPEAKING", self.whenDoneSpeaking) );
//_subscriptions.push( subscribe("attack_hong", self.showAttackedIcon) ); //_subscriptions.push( subscribe("attack_hong", self.showAttackedIcon) );
// Draw // Draw

View File

@ -59,6 +59,10 @@ function Character(spriteConfig, animLoops){
self.bounceHookes = 0.2; self.bounceHookes = 0.2;
self.bounceDamp = 0.8; self.bounceDamp = 0.8;
self.characterFrames = {}; self.characterFrames = {};
self.MOUTH_LOCK = false;
self.whenDoneSpeaking = function(){
self.MOUTH_LOCK = false;
};
self.gotoFrames = function(args, bounce){ self.gotoFrames = function(args, bounce){
// Bounce? // Bounce?
@ -98,6 +102,11 @@ function Character(spriteConfig, animLoops){
l.mouth.gotoFrameByName( "mouth_"+c.mouth ); l.mouth.gotoFrameByName( "mouth_"+c.mouth );
l.eyes.gotoFrameByName( "eyes_"+c.eyes ); l.eyes.gotoFrameByName( "eyes_"+c.eyes );
// MOUTH LOCK?
if(args.MOUTH_LOCK){
self.MOUTH_LOCK = l.mouth.currentFrameName;
}
}; };
// Draw // Draw
@ -144,17 +153,21 @@ function Character(spriteConfig, animLoops){
if(l.body.currentFrameName.indexOf("*")<0){ if(l.body.currentFrameName.indexOf("*")<0){
// Mouth // Mouth
if(Game.WHO_IS_SPEAKING==self.characterSpeakerID){ if(self.MOUTH_LOCK){
// If I'm talking, switch to a talking mouth! l.mouth.gotoFrameByName(self.MOUTH_LOCK);
var mouthTalkFrame = "mouth_"+c.mouth+"_talk";
if( l.mouth.doesFrameNameExist(mouthTalkFrame) ){
l.mouth.gotoFrameByName(mouthTalkFrame);
}
}else{ }else{
// If I'm not talking & my mouth is in the talk position, switch it back! if(Game.WHO_IS_SPEAKING==self.characterSpeakerID){
var isMyMouthTalking = (l.mouth.currentFrameName.indexOf("_talk")>=0); // If I'm talking, switch to a talking mouth!
if(isMyMouthTalking){ var mouthTalkFrame = "mouth_"+c.mouth+"_talk";
l.mouth.gotoFrameByName( "mouth_"+c.mouth ); if( l.mouth.doesFrameNameExist(mouthTalkFrame) ){
l.mouth.gotoFrameByName(mouthTalkFrame);
}
}else{
// If I'm not talking & my mouth is in the talk position, switch it back!
var isMyMouthTalking = (l.mouth.currentFrameName.indexOf("_talk")>=0);
if(isMyMouthTalking){
l.mouth.gotoFrameByName( "mouth_"+c.mouth );
}
} }
} }
l.mouth.draw(ctx); l.mouth.draw(ctx);

View File

@ -339,6 +339,9 @@ Game.executeText = function(line){
Game.wordsDOM.appendChild(div); Game.wordsDOM.appendChild(div);
Game.WHO_IS_SPEAKING = speaker; // WHO'S SPEAKING?! Game.WHO_IS_SPEAKING = speaker; // WHO'S SPEAKING?!
Game.CURRENT_SPEAKING_SPEED = Game.OVERRIDE_TEXT_SPEED; Game.CURRENT_SPEAKING_SPEED = Game.OVERRIDE_TEXT_SPEED;
if(Game.OVERRIDE_FONT_SIZE){
div.style.fontSize = Game.OVERRIDE_FONT_SIZE+"px";
}
switch(speaker){ switch(speaker){
case "b": case "b":
div.className = "beebee-bubble"; div.className = "beebee-bubble";
@ -595,6 +598,7 @@ Game.executeText = function(line){
// Return overrides to default // Return overrides to default
Game.OVERRIDE_TEXT_SPEED = 1; Game.OVERRIDE_TEXT_SPEED = 1;
Game.OVERRIDE_FONT_SIZE = false;
Game.FORCE_TEXT_DURATION = -1; Game.FORCE_TEXT_DURATION = -1;
Game.FORCE_NO_VOICE = false; Game.FORCE_NO_VOICE = false;
@ -610,6 +614,7 @@ Game.executeText = function(line){
// No one's speaking anymore. // No one's speaking anymore.
Game.setTimeout(function(){ Game.setTimeout(function(){
Game.WHO_IS_SPEAKING = null; Game.WHO_IS_SPEAKING = null;
publish("DONE_SPEAKING");
}, interval); }, interval);
// Show the clicky UI // Show the clicky UI
@ -641,7 +646,7 @@ Loader.addSounds([
// Execute choice! Add it to choice DOM. // Execute choice! Add it to choice DOM.
Game.OVERRIDE_CHOICE_LINE = false; Game.OVERRIDE_CHOICE_LINE = false;
Game.OVERRIDE_CHOICE_SPEAKER = null; Game.OVERRIDE_CHOICE_SPEAKER = null;
Game.HACK_MAKE_THE_LINE_BIG = false; Game.OVERRIDE_FONT_SIZE = false;
Game.executeChoice = function(line){ Game.executeChoice = function(line){
var choiceText = line.match(/\[([^\]]*)\]/)[1].trim(); var choiceText = line.match(/\[([^\]]*)\]/)[1].trim();
@ -705,8 +710,8 @@ Game.executeChoice = function(line){
},10); },10);
// Or... FORCE // Or... FORCE
if(Game.HACK_MAKE_THE_LINE_BIG){ if(Game.OVERRIDE_FONT_SIZE){
div.style.fontSize = "30px"; div.style.fontSize = Game.OVERRIDE_FONT_SIZE+"px";
}else{ }else{
// If it's too big, shrink font size // If it's too big, shrink font size
@ -731,7 +736,7 @@ Game.executeChoice = function(line){
},1); },1);
} }
Game.HACK_MAKE_THE_LINE_BIG = false; Game.OVERRIDE_FONT_SIZE = false;
// Wait a bit before adding new line // Wait a bit before adding new line
return new RSVP.Promise(function(resolve){ return new RSVP.Promise(function(resolve){

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 KiB

After

Width:  |  Height:  |  Size: 448 KiB