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();
_.INJURED = false;
_.INJURED = true;
_.TOP_FEAR = "alone";
_.a2_end = "fight";
_.FIRST_FEAR = "bad";
//Game.FORCE_CANT_SKIP = true;
```
@ -22,8 +25,6 @@ _.INJURED = false;
`Game.FORCE_CANT_SKIP = false;`
(#act4b_2)
h: *sigh*
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.
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...
@ -212,9 +213,11 @@ h: We're beginning right now.
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:
@ -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: If it works for *literal* dogs, it should work for you, right?
h: All mammals have the same fight-or-flight response.
[I'm a wolf, not a dog.](#act4_harm_exposure_dog)
h: Since you're a dog, it should work for you too, right? All mammals have the same fight-or-flight response.
[What if we desensitize ourselves *too* much?](#act4_harm_exposure_overboard)
[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
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.
b: But *where*, human?! *Where?*
b: But exactly *where*, human? *Where?!*
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.
@ -693,7 +694,7 @@ h: But not necessarily giving up a commitment to change.
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.
@ -768,11 +769,11 @@ h: Anyway, anything else on your heavy heart?
{{if _.a4_talked_about_alone!=true}}
[I'm scared we'll be alone.](#act4_alone)
{{/if}
{{/if}}
{{if _.a4_talked_about_bad!=true}}
[I'm scared we're bad people.](#act4_bad)
{{/if}
{{/if}}
[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* act as a team?
b: Can we *really* work as a team?
h: Well,
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
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
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.
// 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
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.
// 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
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.
// 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
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: Anyway, you were saying?
b: Uh, I forget? Something about a team?
b: Uh, I forget? Something about work and teams?
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'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: 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
// 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
{{/if}}
{{if _.FIRST_FEAR=="bad"}}
b: AAAAA YOU'RE EATING MORE WHITE BREAD AAAAA
```
{{/if}}

View File

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

View File

@ -312,9 +312,15 @@ Game.executeText = function(line){
case "h":
div.className = "hong-bubble";
break;
case "h2":
case "h2": case "h3":
div.className = "hong2-bubble";
break;
case "a":
div.className = "al-bubble";
break;
case "s":
div.className = "shire-bubble";
break;
case "r":
div.className = "hunter-bubble";
break;
@ -350,8 +356,8 @@ Game.executeText = function(line){
SPEED = Math.round(Game.FORCE_TEXT_DURATION/dialogue.length);
}
// IF IT'S BEEBEE, HONG, or NARRATOR 3, or HUNTER
if(speaker=="b" || speaker=="h" || speaker=="h2" || speaker=="n3" || speaker=="r"){
// IF IT'S BEEBEE, HONG, or NARRATOR 3, or HUNTER, or AL or SHIRE
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...
var span, chr;
@ -396,7 +402,7 @@ Game.executeText = function(line){
if(speaker=="h" || speaker=="h2"){
voice("hong", {volume:0.3});
}
if(speaker=="b"){
if(speaker=="b" || speaker=="h3"){
voice("beebee", {volume:0.5});
}
if(speaker=="n3"){
@ -405,6 +411,12 @@ Game.executeText = function(line){
if(speaker=="r"){
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_emphasis", src:"sounds/voices/narrator_emphasis.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){

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;
}
.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{
width: 100%;