act 4 done more or less

This commit is contained in:
Nicky Case 2019-06-19 10:49:05 -04:00
parent 53db94969d
commit 788373a15a
13 changed files with 332 additions and 62 deletions

6
TODO Normal file
View File

@ -0,0 +1,6 @@
TODO
- bug: mouseover dialogue option, multiple sounds over div's and i's
- extra sound when line ends with *italics*
- can't click outside to advance
- favicon one-line eye

View File

@ -2,7 +2,10 @@
``` ```
SceneSetup.act4(); SceneSetup.act4();
_.INJURED = false; _.INJURED = true;
_.TOP_FEAR = "alone";
_.a2_end = "fight";
_.FIRST_FEAR = "bad";
//Game.FORCE_CANT_SKIP = true; //Game.FORCE_CANT_SKIP = true;
``` ```
@ -22,8 +25,6 @@ _.INJURED = false;
`Game.FORCE_CANT_SKIP = false;` `Game.FORCE_CANT_SKIP = false;`
(#act4b_2)
h: *sigh* h: *sigh*
h: So what the hell was the moral of this story? h: So what the hell was the moral of this story?
@ -194,7 +195,7 @@ b: More thoughts, human?
b: Well, I have claws, but I'm just a metaphor. b: Well, I have claws, but I'm just a metaphor.
h: We could pick up self-defense? Improve our general health? Learn to assert our boundaries? h: We could pick up self-defense? Improve our general health? Learn to better assert our boundaries?
b: Maybe, but... b: Maybe, but...
@ -212,9 +213,11 @@ h: We're beginning right now.
b: Eh? b: Eh?
h: I mean, we're practicing good communication right now. And if that works, we can detect danger better with fewer false positives... and *does* help protect us from harm! h: I mean, we're practicing good communication right now. Which will help us detect danger better, with fewer false positives,
h: This *is* self-defense training. h: And that *will* help protect us from harm!
h: Therefore: tis *is* self-defense training.
b: Huh. I was expecting more of this: b: Huh. I was expecting more of this:
@ -265,16 +268,14 @@ h: Over several days, the trainer raises the volume bit by bit, until the dog ha
h: It's called exposure therapy! h: It's called exposure therapy!
h: If it works for *literal* dogs, it should work for you, right? h: Since you're a dog, it should work for you too, right? All mammals have the same fight-or-flight response.
h: All mammals have the same fight-or-flight response.
[I'm a wolf, not a dog.](#act4_harm_exposure_dog)
[What if we desensitize ourselves *too* much?](#act4_harm_exposure_overboard) [What if we desensitize ourselves *too* much?](#act4_harm_exposure_overboard)
[What if we expose ourselves to *real* danger?](#act4_harm_exposure_hurt) [What if we expose ourselves to *real* danger?](#act4_harm_exposure_hurt)
[I'm a wolf, not a dog.](#act4_harm_exposure_dog)
# act4_harm_exposure_dog # act4_harm_exposure_dog
h: And I'll show you kindness and patience 'til you're domesticated into a cute lil' puppy. h: And I'll show you kindness and patience 'til you're domesticated into a cute lil' puppy.
@ -295,11 +296,11 @@ b: Soon we'll give ourselves treats while watching snuff murder porn!
h: I... think there's a line between that and the thunder. h: I... think there's a line between that and the thunder.
b: But *where*, human?! *Where?* b: But exactly *where*, human? *Where?!*
h: I don't know. But *you* can help me! h: I don't know. But *you* can help me!
h: Working and negotiating with you, we'll find and draw that line. h: Working and negotiating with you, we'll draw that line.
b: Okay. But I've got no opposable thumbs, so you have to do the drawing. b: Okay. But I've got no opposable thumbs, so you have to do the drawing.
@ -693,7 +694,7 @@ h: But not necessarily giving up a commitment to change.
b: Then therapists should say *acknowledge*, not *accept*. b: Then therapists should say *acknowledge*, not *accept*.
h: Yeah come to think of it, "accept" is really unhelpful. h: Yeah come to think of it, "accept" is kinda confusing.
b: Well, I *acknowledge* that. b: Well, I *acknowledge* that.
@ -768,11 +769,11 @@ h: Anyway, anything else on your heavy heart?
{{if _.a4_talked_about_alone!=true}} {{if _.a4_talked_about_alone!=true}}
[I'm scared we'll be alone.](#act4_alone) [I'm scared we'll be alone.](#act4_alone)
{{/if} {{/if}}
{{if _.a4_talked_about_bad!=true}} {{if _.a4_talked_about_bad!=true}}
[I'm scared we're bad people.](#act4_bad) [I'm scared we're bad people.](#act4_bad)
{{/if} {{/if}}
[Nah, I'm good for now.](#act4c_prelude) [Nah, I'm good for now.](#act4c_prelude)
@ -808,112 +809,268 @@ b: Building a better relationship with your emotions isn't as simple as clicking
b: Can we *really* get along, human? b: Can we *really* get along, human?
b: Can we *really* act as a team? b: Can we *really* work as a team?
h: Well, h: Well,
a: E-excuse me... a: E-excuse me...
(...1000) ```
Game.clearText();
publish("smash",[3]);
publish("act4-in-2");
publish("outside-hong", ["look-back"]);
publish("al-shire", ["ask"]);
```
(...1600)
(#act4d)
# act4d # act4d
a: Would you mind if I sat with you for lunch? a: W-wo-would you mind if I sat with you for lunch?
// s: Only psychos sit alone for lunch! Get away from them or they'll hurt you! {{if _.TOP_FEAR=="harm"}}
s: They were sitting alone for lunch? They must be a psycho loner serial killer!
{{/if}}
// s: Ack, do you know how pathetic we sound? How desperate, how *needy*? {{if _.TOP_FEAR=="alone"}}
s: Ack, do you know how pathetic we sound? How desperate, how *needy*?
{{/if}}
// s: They were enjoying peace and quiet, then we interrupted them! We're such a burden! {{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... a: I- I mean- it's, it's okay if you not, I just...
[Wait, didn't I see you at the party?]() [Wait, didn't I see you at the party?](#act4d_recognition)
[Yeah, of course! Come here.]() [Yeah, of course! Come here.](#act4d_yes)
[Ah, sorry, I need some alone time right now.]() [Sorry, I need alone time right now.](#act4d_no)
# act4d_recognition # act4d_recognition
h2: Yeah you saw me have a panic attack and // become an armadillo // commit phone-murder! h2: Yeah it was the first party, where I had that panic attack and {{if _.a2_end=="fight"}}punched the host.{{/if}}{{if _.a2_end=="flight"}}ran out crying.{{/if}}
h3: Ah! Sorry, didn't mean to put you on the spot! h3: Ah, sorry, didn't mean to put you on the spot!
h2: Just remembering a friendly face, is all. h2: Just remembering a friendly face, is all.
// s: WAIT THAT *IS* THE PHONE-MURDERER / THE CRYING ARMADILLO! I KNEW IT! THEY'RE A DANGEROUS PSYCHO! `publish("al-shire", ["panic"]);`
// s: SEE HOW MUCH YOU SUCK AT MAKING FRIENDS?! THE FIRST IMPRESSION YOU MADE IS "WITNESSED MY TRAUMA". YOU SUCK! {{if _.TOP_FEAR=="harm"}}
s: AHHHHH I KNEW IT! THEY'RE A DANGEROUS CRAZY PSYCHO!
{{/if}}
// s: AAAHHH YOU MADE SOMEONE REMEMBER A TRAUMATIC EVENT. YOUR MERE PRESENCE HURTS OTHERS. {{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 # act4d_yes
h3: Ah! I don't mean to cause you discomfort! h3: Ah, I don't mean to make you feel awkward!
h2: Just saying, you can sit here if you want to. h2: Just saying, you can sit here if you want to.
// s: THEY'RE BEING TOO FRIENDLY. LIKE TED BUNDY, THE SERIAL KILLER! `publish("al-shire", ["panic"]);`
// s: THEY'RE JUST ACTING NICE. NO ONE *REALLY* WANTS TO BE YOUR FRIEND. {{if _.TOP_FEAR=="harm"}}
s: THEY'RE BEING *TOO* FRIENDLY! LIKE TED BUNDY, THE SERIAL KILLER!
{{/if}}
// s: GAH, YOU ALWAYS MAKE OTHERS FEEL UNCOMFORTABLE! GET OUT! {{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 # act4d_no
h3: Ah! I didn't mean to come off as rude! h3: Ah, I didn't mean to come off as rude!
h2: It's just that, well, I (almost) jumped off a roof and (almost) killed myself. {{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 and killed myself.
{{/if}}
h2: Please don't take it as a personal rejection, I just need quiet time to process some emotions. h2: Please don't take it as a personal rejection, I just need quiet time to process some emotions.
// s: HOLY CRAP I KNEW IT, THEY *ARE* A DANGEROUS PSYCHO! `publish("al-shire", ["panic"]);`
// s: YOU'VE BEEN PERSONALLY REJECTED! YOU'LL NEVER BE LOVED! {{if _.TOP_FEAR=="harm"}}
s: HOLY COW I KNEW IT, THEY *ARE* A DANGEROUS PSYCHO!
{{/if}}
// s: YOU INTERRUPTED SOMEONE'S EMOTIONAL PROCESSING! NOW THEY'LL BE TRAUMATIZED FOREVER AND IT'S ALL YOUR FAULT! {{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 # act4e
s: RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN s: RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN RUN
a: (dashes) ```
Game.clearText();
publish("al-shire", ["run"]);
```
(...2001)
```
publish("act4-out-3");
```
(...1001)
h: Huh. Wonder what *that* was about. h: Huh. Wonder what *that* was about.
h: Anyway, you were saying? h: Anyway, you were saying?
b: Uh, I forget? Something about a team? b: Uh, I forget? Something about work and teams?
h: (shrug) h: (shrug)
// problem with "make peace with" b: They say you should "make peace" with your emotions, as if your emotions are some kind of *war criminals*.
b: Point is, you're trying to teach this old dog new tricks. b: But I want us to make *more* than mere peace! I want us to be *allies!*
b: It *will* take a while. Maybe *years.* And occasionally, I'll slip into my old habits. b: I want to be a good guard-dog. I want to protect you.
b: But I suck at it, so I need you to train me.
b: Teaching an old dog new tricks *will* take a while. Maybe *years.*
b: And sometimes, I'll relapse a bit, 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'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 crap on your bed once in a while! b: I'm sorry! I'm a battered shelter dog! Battered dogs poop on your bed once in a while!
b: But if you're patient with me... and just stay and sit with me... b: But if you're patient with me... and just stay and sit with me...
b: Maybe... maybe you can domesticate this wolf. b: Maybe you can domesticate this wolf.
(...3000) `Game.clearText();`
[Good dog.]() (...1000)
[Good human.]() [Good dog.](#act4f-pat-bb)
[Good human.](#act4f-pat-hong)
# act4f-pat-hong
```
Game.clearText();
Game.FORCE_CANT_SKIP = true;
```
`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"])`
(...2001)
`publish("end-pat", ["pat-hong-3"])`
(...1001)
(#act4f)
# act4f-pat-bb
```
Game.clearText();
Game.FORCE_CANT_SKIP = true;
```
`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"])`
(...2001)
`publish("end-pat", ["pat-bb-3"])`
(...1001)
(#act4f)
# act4f # act4f
// b: AAAAA YOU'RE STILL BEING ALONE FIFTEEN CIGARETTES AAAAA
``` ```
Game.FORCE_CANT_SKIP = false;
publish("end-pat", ["freak-out"])
```
{{if _.FIRST_FEAR=="harm"}}
b: AAAAA YOU'RE STILL BEING ALONE FIFTEEN CIGARETTES AAAAA
{{/if}}
{{if _.FIRST_FEAR=="alone"}}
b: AAAAA YOU'RE STILL NOT BEING PRODUCTIVE AAAAA b: AAAAA YOU'RE STILL NOT BEING PRODUCTIVE AAAAA
{{/if}}
{{if _.FIRST_FEAR=="bad"}}
b: AAAAA YOU'RE EATING MORE WHITE BREAD AAAAA b: AAAAA YOU'RE EATING MORE WHITE BREAD AAAAA
``` {{/if}}

View File

@ -37,9 +37,15 @@ function BG_Act4(){
image: Library.images.al_shire, image: Library.images.al_shire,
grid:{ width:4, height:1 }, grid:{ width:4, height:1 },
frame:{ width:360, height:360 }, frame:{ width:360, height:360 },
y: 192 y: 192,
frameNames:[
"ask",
"panic",
"run",
"blank"
]
}); });
self.alShireSprite.gotoFrame(3); // blank self.alShireSprite.gotoFrameByName("blank"); // blank
self.outsideHongSprite = new Sprite({ self.outsideHongSprite = new Sprite({
image: Library.images.outside_hong, image: Library.images.outside_hong,
grid:{ width:4, height:3 }, grid:{ width:4, height:3 },
@ -76,12 +82,26 @@ function BG_Act4(){
frame:{ width:720, height:400 }, frame:{ width:720, height:400 },
y: 256 y: 256
}); });
self.talk1Sprite.gotoFrame( _.INJURED ? 0 : 1 );
self.talk2Sprite = new Sprite({ self.talk2Sprite = new Sprite({
image: Library.images.a4_talk_2, image: Library.images.a4_talk_2,
grid:{ width:4, height:2 }, grid:{ width:4, height:2 },
frame:{ width:720, height:400 }, frame:{ width:720, height:400 },
y: 256 y: 256,
frameNames:[
"talk",
"pat-bb-1",
"pat-bb-2",
"pat-bb-3",
"pat-hong-1",
"pat-hong-2",
"pat-hong-3",
"freak-out"
]
}); });
// LAYERS // LAYERS
@ -215,6 +235,8 @@ function BG_Act4(){
var _subscriptions = []; var _subscriptions = [];
_subscriptions.push( _subscriptions.push(
subscribe("act4-out-1", function(){ subscribe("act4-out-1", function(){
self.talk1Sprite.gotoFrame( _.INJURED ? 0 : 1 );
// WHOOSH // WHOOSH
STAGE = 1; STAGE = 1;
@ -261,6 +283,15 @@ function BG_Act4(){
self.talk1Sprite.alpha = 1; self.talk1Sprite.alpha = 1;
self.smashSprite.gotoFrame(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);
}) })
); );

View File

@ -312,9 +312,15 @@ Game.executeText = function(line){
case "h": case "h":
div.className = "hong-bubble"; div.className = "hong-bubble";
break; break;
case "h2": case "h2": case "h3":
div.className = "hong2-bubble"; div.className = "hong2-bubble";
break; break;
case "a":
div.className = "al-bubble";
break;
case "s":
div.className = "shire-bubble";
break;
case "r": case "r":
div.className = "hunter-bubble"; div.className = "hunter-bubble";
break; break;
@ -350,8 +356,8 @@ Game.executeText = function(line){
SPEED = Math.round(Game.FORCE_TEXT_DURATION/dialogue.length); SPEED = Math.round(Game.FORCE_TEXT_DURATION/dialogue.length);
} }
// IF IT'S BEEBEE, HONG, or NARRATOR 3, or HUNTER // IF IT'S BEEBEE, HONG, or NARRATOR 3, or HUNTER, or AL or SHIRE
if(speaker=="b" || speaker=="h" || speaker=="h2" || speaker=="n3" || speaker=="r"){ if(speaker=="b" || speaker=="h" || speaker=="h2" || speaker=="h3" || speaker=="n3" || speaker=="r" || speaker=="a" || speaker=="s"){
// Put in the text, each character a DIFFERENT SPAN... // Put in the text, each character a DIFFERENT SPAN...
var span, chr; var span, chr;
@ -396,7 +402,7 @@ Game.executeText = function(line){
if(speaker=="h" || speaker=="h2"){ if(speaker=="h" || speaker=="h2"){
voice("hong", {volume:0.3}); voice("hong", {volume:0.3});
} }
if(speaker=="b"){ if(speaker=="b" || speaker=="h3"){
voice("beebee", {volume:0.5}); voice("beebee", {volume:0.5});
} }
if(speaker=="n3"){ if(speaker=="n3"){
@ -405,6 +411,12 @@ Game.executeText = function(line){
if(speaker=="r"){ if(speaker=="r"){
voice("hunter", {volume:0.17}); voice("hunter", {volume:0.17});
} }
if(speaker=="a"){
voice("al", {volume:0.3});
}
if(speaker=="s"){
voice("shire", {volume:0.4});
}
} }
} }

View File

@ -4,7 +4,9 @@ Loader.addSounds([
{ id:"voice_narrator", src:"sounds/voices/narrator.mp3" }, { id:"voice_narrator", src:"sounds/voices/narrator.mp3" },
{ id:"voice_narrator_emphasis", src:"sounds/voices/narrator_emphasis.mp3" }, { id:"voice_narrator_emphasis", src:"sounds/voices/narrator_emphasis.mp3" },
{ id:"voice_typewriter", src:"sounds/voices/typewriter.mp3" }, { id:"voice_typewriter", src:"sounds/voices/typewriter.mp3" },
{ id:"voice_hunter", src:"sounds/voices/hunter.mp3" } { id:"voice_hunter", src:"sounds/voices/hunter.mp3" },
{ id:"voice_al", src:"sounds/voices/al.mp3" },
{ id:"voice_shire", src:"sounds/voices/shire.mp3" }
]); ]);
window.sfx = function(sound, options){ window.sfx = function(sound, options){

BIN
sounds/voices/al.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
sounds/voices/shire.mp3 Normal file

Binary file not shown.

BIN
sprites/intermission/bb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
sprites/intermission/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

View File

@ -803,6 +803,68 @@ DIALOGUEZ
margin-left: -15px; margin-left: -15px;
} }
.al-bubble {
position: relative;
background: #ccc;
color: #666;
font-weight: normal;
border-radius: .4em;
padding: 15px;
margin: 5px 30px;
opacity: 0;
left: -15px;
transition: all 0.3s ease-in-out;
display: inline-block;
float: left;
}
.al-bubble:after {
content: '';
position: absolute;
left: 1px;
top: 50%;
width: 0;
height: 0;
border: 15px solid transparent;
border-right-color: #ccc;
border-left: 0;
margin-top: -15px;
margin-left: -15px;
}
.shire-bubble {
position: relative;
background: #666;
color: #ccc;
font-weight: normal;
border-radius: .4em;
padding: 15px;
margin: 5px 30px;
opacity: 0;
left: -15px;
transition: all 0.3s ease-in-out;
display: inline-block;
float: left;
}
.shire-bubble:after {
content: '';
position: absolute;
left: 1px;
top: 50%;
width: 0;
height: 0;
border: 15px solid transparent;
border-right-color: #666;
border-left: 0;
margin-top: -15px;
margin-left: -15px;
}
#game_choices{ #game_choices{
width: 100%; width: 100%;