intro anim DONE for act 3

This commit is contained in:
Nicky Case 2019-07-30 11:25:37 -04:00
parent ddfc63902f
commit f41cef3252
6 changed files with 230 additions and 34 deletions

18
TODO
View File

@ -11,7 +11,8 @@ INTRO
ACT I ACT I
- more beebee art: animated point, less aggro, more sweet & defensive - more beebee art: animated point, less aggro, more sweet & defensive
- re-animate cry so that lake tears falls in right place - re-animate cry so that lake tears falls in right place
- continuous shot, no glitch-stop (low prior)
=======================
ACT II ACT II
- code: LOCKABLE MOUTHS - code: LOCKABLE MOUTHS
@ -27,16 +28,13 @@ ACT II
- sound: judge gravel - sound: judge gravel
ACT III ACT III
- callback for act ii ending - BB special attack anim
- better roof bg
- better minor chars
- more hunter intro anim
- more hong intro anims
- hong char + anims
- bb char + anims
- hospital scenes
- sfx for endings - sfx for endings
! more sympathetic Hunter - hunter, hand on heart "hurts people like us"
- hunter, angry lookaway "otherwise, you're gonna let it win"
- hong, angry AFTER "not gonna let it win"
=======================
ACT IV ACT IV
- hong char + anims - hong char + anims

View File

@ -1,76 +1,206 @@
# act3 # act3
`SceneSetup.act3();` ```
SceneSetup.act3();
Game.WORDS_HEIGHT_BOTTOM = 205;
```
r: Cheers! r: Cheers!
(#act3_skip)
```
publish("act3",["roofhunter",1]);
publish("act3",["roofhong",1]);
```
(...1001)
```
publish("act3-alpha", ["dizzyhunter",1]);
publish("act3-alpha", ["dizzyhong",1]);
publish("act3",["roofhunter",3]);
publish("act3",["roofhong",3]);
```
h2: *Ah* that hits the spot. h2: *Ah* that hits the spot.
```
publish("act3",["roofhunter",2]);
publish("act3",["roofhong",2]);
```
r: You know, kid... r: You know, kid...
```
publish("act3",["roofhunter",3]);
publish("act3",["roofhong",6]);
```
h2: Specifically, the spots hit are my left and right amygdala. h2: Specifically, the spots hit are my left and right amygdala.
```
publish("act3",["roofhunter",8]);
publish("act3",["roofhong",5]);
```
r: You remind me of myself when I was younger. Back when I was tormented by the animal in my head. r: You remind me of myself when I was younger. Back when I was tormented by the animal in my head.
```
publish("act3",["roofhunter",2]);
publish("act3",["roofhong",2]);
```
r: Hey, quick question: truth or da-- r: Hey, quick question: truth or da--
```
publish("act3",["roofhunter",3]);
publish("act3",["roofhong",7]);
publish("act3-alpha", ["dizzyhong",0]);
```
h2: DARE! h2: DARE!
```
publish("act3-alpha", ["dizzyhong",1]);
publish("act3",["roofhunter",10]);
publish("act3",["roofhong",2]);
```
r: Haha! Good. r: Haha! Good.
```
publish("act3",["roofhunter",21]);
publish("act3",["roofhong",4]);
```
r: Ok. You see that baby-blue swimming pool down there? r: Ok. You see that baby-blue swimming pool down there?
``` ```
publish('hong-next'); publish("act3-alpha", ["dizzyhong",0]);
publish("hunter-roof", ["front_badass"]); publish("act3",["roofhunter",11]);
publish("act3",["roofhong",9]);
``` ```
h2: Yeah? Six floors down?
h2: Yeah? Ten floors down? ```
publish("act3",["roofhunter",10]);
publish("act3",["roofhong",8]);
```
r: Jump in. r: Jump in.
`publish('hong-next')` ```
publish("act3",["roofhunter",11]);
publish("act3",["roofhong",10]);
```
h2: ... h2: ...
```
publish("act3",["roofhong",11]);
```
h2: Wait, what? h2: Wait, what?
```
publish("act3",["roofhong",10]);
publish("act3",["roofhunter",2]);
```
r: The animal's started whining, hasn't it? r: The animal's started whining, hasn't it?
```
publish("act3",["roofhunter",23]);
```
r: *Oh nooooo it's dangerous, don't do iiiiit.* r: *Oh nooooo it's dangerous, don't do iiiiit.*
r: But that's exactly why we must do thrilling, death-defying stunts! Party hard! Carpe diem! Snort coke off a hooker's ass, #YOLO! ```
publish("act3",["roofhunter",22]);
```
r: But that's exactly why we need death-defying thrills! Party hard! Carpe diem! Snort coke off a hooker's ass, #YOLO!
```
publish("act3",["roofhunter",10]);
```
r: Let's show that animal we don't give two *dicks* about its bitching! Jump in. r: Let's show that animal we don't give two *dicks* about its bitching! Jump in.
```
publish("act3",["roofhunter",11]);
publish("act3",["roofhong",13]);
```
h2: Uh, but sometimes, um... fear has a point... h2: Uh, but sometimes, um... fear has a point...
``` ```
publish("act3",["roofhunter",5]);
publish("act3",["roofhong",12]);
music(null, {fade:2}); music(null, {fade:2});
publish("hunter-roof", ["front_pissed"]);
``` ```
r: ... r: ...
```
publish("act3-alpha", ["dizzyhunter",0]);
publish("act3",["roofhunter",6]);
publish("act3",["dd",1]);
```
r: I'm sorry, did you fall for that McMindfulness fad that claims feeling bad is *good?* r: I'm sorry, did you fall for that McMindfulness fad that claims feeling bad is *good?*
```
publish("act3",["roofhunter",17]);
```
r: Pleasure is the opposite of pain. There-fucking-fore, you can use pleasure to fight pain! r: Pleasure is the opposite of pain. There-fucking-fore, you can use pleasure to fight pain!
```
publish("act3",["roofhunter",18]);
```
r: How do those Silicon Valley pseudo-Buddhists not see this shit?! r: How do those Silicon Valley pseudo-Buddhists not see this shit?!
```
publish("act3",["roofhunter",6]);
```
r: Kid, I know that *you* know that animal *hurts* people like us. It *tortures* people like us. r: Kid, I know that *you* know that animal *hurts* people like us. It *tortures* people like us.
```
publish("act3",["roofhunter",19]);
```
r: It's not our friend. It's a rabid beast, which either needs to be *tranquilized*, r: It's not our friend. It's a rabid beast, which either needs to be *tranquilized*,
```
publish("act3",["roofhunter",20]);
```
r: Or have a *bullet put in its fucking skull*. r: Or have a *bullet put in its fucking skull*.
```
publish("act3",["roofhunter",27]);
```
r: Otherwise, you're going to let it win. r: Otherwise, you're going to let it win.
```
publish("act3",["roofhunter",31]);
publish("act3",["roofhong",14]);
publish("act3",["dd",2]);
```
h2: No. You're wrong. h2: No. You're wrong.
# act3_skip
``` ```
publish('hong-next'); publish("act3",["roofhunter",13]);
publish("act3",["roofhong",15]);
music('battle_dark', {volume:1.0}, function(){ music('battle_dark', {volume:1.0}, function(){
music('battle_dark_loop'); music('battle_dark_loop');
}); });
@ -78,7 +208,12 @@ music('battle_dark', {volume:1.0}, function(){
h2: I'm not going to let it win. h2: I'm not going to let it win.
`publish("hunter-roof", ["front_badass"]);` ```
publish("act3",["roofhunter",25]);
publish("act3-alpha", ["roofhong",0]);
publish("act3-alpha", ["transition",1]);
publish("act3",["dd",6]);
```
r: Fuck yeah! I believe in you, babe! Kill it! <3 r: Fuck yeah! I believe in you, babe! Kill it! <3
@ -91,6 +226,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 */
``` ```
(...1500) (...1500)
@ -200,7 +336,7 @@ h: Some people throw themselves into other people.
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 TEN 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)

View File

@ -5,6 +5,7 @@ Loader.addImages([
{ id:"rooftop_dd", src:"sprites/act3/dd.png" }, { id:"rooftop_dd", src:"sprites/act3/dd.png" },
{ id:"dizzy", src:"sprites/act3/dizzy.png" }, { id:"dizzy", src:"sprites/act3/dizzy.png" },
{ id:"hospital", src:"sprites/act3/hospital.png" }, { id:"hospital", src:"sprites/act3/hospital.png" },
{ id:"transition", src:"sprites/act3/transition.png" },
]); ]);
Loader.addSounds([ Loader.addSounds([
@ -48,6 +49,12 @@ function BG_Rooftop(){
frame:{ width:240, height:120 }, frame:{ width:240, height:120 },
y: 300 y: 300
}); });
self.transition = new Sprite({
image: Library.images.transition,
grid:{ width:8, height:1 },
frame:{ width:720, height:400 },
y: 258
});
var DizzySpriteConfig = { var DizzySpriteConfig = {
image: Library.images.dizzy, image: Library.images.dizzy,
grid:{ width:4, height:2 }, grid:{ width:4, height:2 },
@ -91,6 +98,7 @@ function BG_Rooftop(){
self.roofhong, self.roofhong,
self.anxiety, self.anxiety,
self.transition,
self.hong, self.hong,
self.beebee, self.beebee,
@ -109,6 +117,7 @@ function BG_Rooftop(){
1.0, // roofhong 1.0, // roofhong
0.0, // anxiety 0.0, // anxiety
1.0, // transition
0.0, // hong 0.0, // hong
0.0, // beebee 0.0, // beebee
@ -117,7 +126,7 @@ function BG_Rooftop(){
0, // bg 0, // bg
0, // skyline 0, // skyline
0, // clouds 80, // clouds
0, // roof 0, // roof
0, // roofhunter 0, // roofhunter
@ -127,6 +136,7 @@ function BG_Rooftop(){
0, // roofhong 0, // roofhong
0, // anxiety 0, // anxiety
191, // transition
0, // hong 0, // hong
0, // beebee 0, // beebee
@ -140,11 +150,12 @@ function BG_Rooftop(){
1, // roofhunter 1, // roofhunter
1, // dd 1, // dd
1, // dizzyhunter 0, // dizzyhunter
1, // dizzyhong 0, // dizzyhong
1, // roofhong 1, // roofhong
0, // anxiety 0, // anxiety
0, // transition
0, // hong 0, // hong
0, // beebee 0, // beebee
@ -154,6 +165,7 @@ function BG_Rooftop(){
var parallax = 0; var parallax = 0;
var parallaxTicker = 0; var parallaxTicker = 0;
var PARALLAXING = null; var PARALLAXING = null;
var MAGIC_NUMBER = 191;
var ticker = 0; var ticker = 0;
self.update = function(){ self.update = function(){
@ -172,10 +184,10 @@ function BG_Rooftop(){
// 0 to -180 in one second, smoothed // 0 to -180 in one second, smoothed
var t = Math.cos(parallaxTicker*Math.TAU/2); // 1 to -1 var t = Math.cos(parallaxTicker*Math.TAU/2); // 1 to -1
t = (1-t)/2; // 0 to 1 t = (1-t)/2; // 0 to 1
parallax = -t*190; parallax = -t*MAGIC_NUMBER;
// Anxiety Alpha // Anxiety Alpha
//ALPHAS[2] = t; ALPHAS[9] = t;
// DONE // DONE
if(t==1 || t==0){ if(t==1 || t==0){
@ -193,6 +205,9 @@ function BG_Rooftop(){
} }
// BYE CLOUDS
OFFSETS[2] -= 3/60;
// SUPER HACKY - ANIMATE THE DIZZIES // SUPER HACKY - ANIMATE THE DIZZIES
ticker += 1/60; ticker += 1/60;
var fps = 4; var fps = 4;
@ -201,15 +216,40 @@ function BG_Rooftop(){
var frame = Math.round(ticker*fps) % 4 + 4; // fps times a second var frame = Math.round(ticker*fps) % 4 + 4; // fps times a second
self.dizzyhong.gotoFrame(frame); self.dizzyhong.gotoFrame(frame);
// Anxiety BG // ANIMATE HUNTER
/*if(ALPHAS[2]>0){ if(self.roofhunter.currentFrame==23 || self.roofhunter.currentFrame==24){
self.anxiety.update(ALPHAS[2]); self.roofhunter._hack_timer = (self.roofhunter._hack_timer===undefined) ? 0 : self.roofhunter._hack_timer;
if(ALPHAS[2]==1){ // if fully visible... self.roofhunter._hack_timer += 1/60;
ALPHAS[0] = 0; // hide everything under if(self.roofhunter._hack_timer>1/24){ // 24 times a second
}else{ if(self.roofhunter.currentFrame==23){
ALPHAS[0] = 1; // show everything under self.roofhunter.gotoFrame(24);
}else{
self.roofhunter.gotoFrame(23);
}
self.roofhunter._hack_timer = 0;
} }
}*/ }
// ANIMATE HONG
if(self.transition.currentFrame>0){
self.transition._hack_timer = (self.transition._hack_timer===undefined) ? 0 : self.transition._hack_timer;
self.transition._hack_timer += 1/60;
if(self.transition._hack_timer>1/15){ // 15fps
self.transition._hack_timer = 0;
if(self.transition.currentFrame<7){
self.transition.nextFrame();
}else{
publish("act3-alpha", ["transition", 0]);
publish("act3-alpha", ["hong", 1]);
publish("act3-alpha", ["beebee", 1]);
}
}
}
// Anxiety BG
if(ALPHAS[9]>0){
self.anxiety.update(ALPHAS[9]);
}
}; };
@ -241,10 +281,30 @@ function BG_Rooftop(){
var STAGE = 0; var STAGE = 0;
var _subscriptions = []; var _subscriptions = [];
_subscriptions.push( _subscriptions.push(
subscribe("act3", function(thing, frame){
if(typeof frame=="string"){
if(frame=="next"){
self[thing].nextFrame();
}else{
self[thing].gotoFrameByName(frame);
}
}else{
self[thing].gotoFrame(frame);
}
}),
subscribe("act3-alpha", function(thing, alpha){
var index = self.layers.indexOf(self[thing]);
ALPHAS[index] = alpha;
}),
subscribe("act3-out", function(){ subscribe("act3-out", function(){
STAGE = 1; STAGE = 1;
PARALLAXING = "out"; PARALLAXING = "out";
sfx("whoosh"); // WHOOSH sfx("whoosh"); // WHOOSH
setTimeout(function(){
self.transition.gotoFrame(1);
},400);
}), }),
subscribe("act3-in", function(){ subscribe("act3-in", function(){

View File

@ -277,11 +277,13 @@ Game.immediatePromise = function(){
// Move the text DOM to latest // Move the text DOM to latest
Game.FORCE_TEXT_Y = -1; Game.FORCE_TEXT_Y = -1;
Game.WORDS_HEIGHT_BOTTOM = 250;
Game.updateText = function(instant){ Game.updateText = function(instant){
if(Game.WORDS_HEIGHT_BOTTOM<0) Game.WORDS_HEIGHT_BOTTOM=250; // back to default
if(Game.FORCE_TEXT_Y<0){ if(Game.FORCE_TEXT_Y<0){
var wordsHeight = 80 + Game.wordsDOM.getBoundingClientRect().height; var wordsHeight = 80 + Game.wordsDOM.getBoundingClientRect().height;
var currentY = parseFloat(Game.wordsDOM.style.top) || 80; var currentY = parseFloat(Game.wordsDOM.style.top) || 80;
var gotoY = (wordsHeight<250) ? 0 : wordsHeight-250; var gotoY = (wordsHeight<Game.WORDS_HEIGHT_BOTTOM) ? 0 : wordsHeight-Game.WORDS_HEIGHT_BOTTOM;
gotoY = 80 - gotoY; gotoY = 80 - gotoY;
var nextY = instant ? gotoY : currentY*0.9 + gotoY*0.1; var nextY = instant ? gotoY : currentY*0.9 + gotoY*0.1;
Game.wordsDOM.style.top = (Math.round(nextY*10)/10)+"px"; Game.wordsDOM.style.top = (Math.round(nextY*10)/10)+"px";

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

BIN
sprites/act3/transition.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB