├── Persian-CoverImage.png
├── README.md
├── css
├── Cairo-Regular.ttf
└── game.css
├── index.html
├── js
├── core
│ ├── Game.js
│ ├── Scene.js
│ └── SceneManager.js
├── game
│ ├── AnimationProp.js
│ ├── Blood.js
│ ├── Camera.js
│ ├── DeadBody.js
│ ├── Director.js
│ ├── Gore.js
│ ├── Peep.js
│ ├── ScreenShake.js
│ ├── ScreenZoomOut.js
│ ├── TV.js
│ └── World.js
├── lib
│ ├── helpers.js
│ ├── howler.js
│ ├── pixi.min.js
│ ├── stats.min.js
│ └── tweenjs-0.6.2.min.js
├── misc
│ ├── Candlelight.js
│ ├── Cricket.js
│ ├── Cursor.js
│ └── LoversWatching.js
├── peeps
│ ├── AngryPeep.js
│ ├── CrazyPeep.js
│ ├── EvilHatPeep.js
│ ├── HappyWeirdoPeep.js
│ ├── HatPeep.js
│ ├── HelpingAnim.js
│ ├── LoverPeep.js
│ ├── MurderPeep.js
│ ├── NervousPeep.js
│ ├── NormalPeep.js
│ ├── PanicPeep.js
│ ├── ProtestAnim.js
│ └── SnobbyPeep.js
├── scenes
│ ├── Act_I.js
│ ├── Act_II.js
│ ├── Act_III.js
│ ├── Scene_Credits.js
│ ├── Scene_EndPrototype.js
│ ├── Scene_Game.js
│ ├── Scene_Meta.js
│ ├── Scene_Post_Credits.js
│ ├── Scene_Post_Post_Credits.js
│ ├── Scene_Preloader.js
│ └── Scene_Quote.js
└── textStrings.js
├── sounds
├── bg_creepy.m4a
├── bg_creepy.mp3
├── bg_creepy.opus
├── bg_nighttime.m4a
├── bg_nighttime.mp3
├── bg_nighttime.opus
├── bg_panic.m4a
├── bg_panic.mp3
├── bg_panic.opus
├── bg_park.m4a
├── bg_park.mp3
├── bg_park.opus
├── breaking_news.m4a
├── breaking_news.mp3
├── breaking_news.opus
├── cam_snap.m4a
├── cam_snap.mp3
├── cam_snap.opus
├── crickets.m4a
├── crickets.mp3
├── crickets.opus
├── gun_cock.m4a
├── gun_cock.mp3
├── gun_cock.opus
├── gunshot.m4a
├── gunshot.mp3
├── gunshot.opus
├── impact.m4a
├── impact.mp3
├── impact.opus
├── peep_gasp.m4a
├── peep_gasp.mp3
├── peep_gasp.opus
├── peep_hmph.m4a
├── peep_hmph.mp3
├── peep_hmph.opus
├── peep_hngh.m4a
├── peep_hngh.mp3
├── peep_hngh.opus
├── peep_huh.m4a
├── peep_huh.mp3
├── peep_huh.opus
├── scream.m4a
├── scream.mp3
├── scream.opus
├── shotgun.m4a
├── shotgun.mp3
├── shotgun.opus
├── shout.m4a
├── shout.mp3
├── shout.opus
├── squeak.m4a
├── squeak.mp3
└── squeak.opus
└── sprites
├── Thumbs.db
├── bg.png
├── bg_dark.png
├── bg_preload.png
├── bg_preload_2.png
├── bg_shade.png
├── cam
├── cam-flash.png
├── cam-instructions.png
└── cam.png
├── chyron.png
├── chyron2.png
├── chyron3.png
├── credits
├── credits0001.png
├── credits0002.png
├── credits0003.png
├── credits0004.png
├── credits0005.png
├── credits0006.png
├── credits0007.png
└── credits0008.png
├── laptop.png
├── misc
├── Thumbs.db
├── candlelight.json
├── candlelight.png
├── cricket.json
├── cricket.png
├── cursor.json
├── cursor.png
├── lovers_watching.json
├── lovers_watching.png
├── preload_play.json
└── preload_play.png
├── peeps
├── Thumbs.db
├── blood.json
├── blood.png
├── blood_test.json
├── blood_test.png
├── body.json
├── body.png
├── body_red.json
├── body_red.png
├── face.json
├── face.png
├── face_angry.json
├── face_angry.png
├── face_murder.json
├── face_murder.png
├── face_nervous.json
├── face_nervous.png
├── face_snobby.json
├── face_snobby.png
├── face_snobby_hmph.json
├── face_snobby_hmph.png
├── gore.json
├── gore.png
├── gore_bodies.json
├── gore_bodies.png
├── gun.json
├── gun.png
├── hangry.json
├── hangry.png
├── happy_weirdo.json
├── happy_weirdo.png
├── hat.json
├── hat.png
├── hatguy.json
├── hatguy.png
├── helping.json
├── helping.png
├── lovehat.json
├── lovehat.png
├── lover_panic.json
├── lover_panic.png
├── lover_shirt.json
├── lover_shirt.png
├── peace.json
├── peace.png
├── weapon_axe.json
├── weapon_axe.png
├── weapon_bat.json
├── weapon_bat.png
├── weapon_gun.json
├── weapon_gun.png
├── weapon_shotgun.json
└── weapon_shotgun.png
├── postcredits
├── end_button.json
├── end_button.png
├── facebook.png
├── logo.png
├── logo_.png
└── twitter.png
├── quote
├── end_prototype.png
├── quote0001.png
├── quote0002.png
├── quote0003.png
└── quote0004.png
├── snow.png
└── tv.png
/Persian-CoverImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/Persian-CoverImage.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DEAR ASPIRING TRANSLATORS, PLEASE CHECK THE MAIN PAGE DESCRIPTION FIRST TO SEE IF YOUR TRANSLATION ALREADY EXISTS: https://ncase.itch.io/wbwwb (also check the Issues to see if your translation is already being worked on - collaborate with them if they're stuck!)
2 |
3 | *a game about news cycles, vicious cycles, infinite cycles*
4 |
5 | **[PLAY](https://ncase.itch.io/wbwwb)**
6 |
7 | ---
8 |
9 | ### Made with open culture, for open culture!
10 |
11 | I'm releasing all my code and art to the public domain, under the [Creative Commons Zero](http://creativecommons.org/publicdomain/zero/1.0/) un-license. Which means if you wanna remix this to make your own way-too-meta game, or use it in a presentation or classroom or whatever, you already have my permission!
12 |
13 | However, not *all* the code/art is mine. Credit's due where credit's due, so...
14 |
15 | **CODE:**
16 | - [PIXI.js](https://github.com/pixijs/pixi.js), for rendering the graphics (MIT License)
17 | - [Howler.js](https://github.com/goldfire/howler.js), for playing the sounds (MIT License)
18 |
19 | **SOUNDS:**
20 | - [squeak!](https://www.freesound.org/people/ermfilm/sounds/130011/) (CC BY)
21 | - [park ambience](https://www.freesound.org/people/Mafon2/sounds/274175/) (CC Zero)
22 | - [camera shutter](https://www.freesound.org/people/uEffects/sounds/207865/) (CC Zero)
23 | - [single cricket](https://www.freesound.org/people/cs272/sounds/77034/) (CC-BY)
24 | - [multiple crickets](https://www.freesound.org/people/alienistcog/sounds/124583/) (CC Zero)
25 | - [news jingle](https://www.freesound.org/people/Tuben/sounds/272044/) (CC Zero)
26 | - [scream #1](https://www.freesound.org/people/GreatNate98/sounds/353086/) (CC Zero)
27 | - [scream #2](https://www.freesound.org/people/mariallinas/sounds/222649/) (CC Zero)
28 | - [gunshot](https://www.freesound.org/people/mitchelk/sounds/136766/) (CC Zero)
29 | - [gun cocked](https://www.freesound.org/people/martian/sounds/182229/) (CC Zero)
30 | - [shotgun](https://www.freesound.org/people/lensflare8642/sounds/145209/) (CC Zero)
31 | - [bloody impact](https://www.freesound.org/people/Hybrid_V/sounds/319590/) (CC BY)
32 | - [creepy warp sound](https://www.freesound.org/people/Andromadax24/sounds/184476/) (CC BY)
33 | - [crowd screaming](https://www.freesound.org/people/MultiMax2121/sounds/156860/) (CC Zero)
34 |
35 | **ART:**
36 | - For the ending, I modified [this photo of a laptop](https://unsplash.com/photos/XyNi3rUEReE). (CC Zero)
37 |
--------------------------------------------------------------------------------
/css/Cairo-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/css/Cairo-Regular.ttf
--------------------------------------------------------------------------------
/css/game.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Cairo';
3 | font-style: normal;
4 | font-weight: 400;
5 | src: url('Cairo-Regular.ttf') format('truetype');
6 | }
7 |
8 | html, body{
9 | width: 100%;
10 | height: 100%;
11 | }
12 | body{
13 | font-family: 'Cairo';
14 | margin: 0;
15 | background: #222;
16 | position:relative;
17 | }
18 | #stage{
19 | background: #000;
20 | width:960px; height:540px;
21 | position:absolute;
22 | margin:auto;
23 | top:0; left:0; right:0; bottom:0;
24 | cursor: none;
25 | }
26 | .overlay{
27 |
28 | display: none;
29 |
30 | text-align: center;
31 | color: #fff;
32 | letter-spacing: 1px;
33 |
34 | width:500px; height:170px;
35 |
36 | position:absolute;
37 | margin:auto;
38 | top:0; left:0; right:0; bottom:0;
39 |
40 | }
41 | .overlay > div:nth-child(1){
42 | font-size: 100px;
43 | line-height: 100px;
44 | }
45 | .overlay > div:nth-child(2){
46 | font-size: 20px;
47 | }
48 | #modal_shade{
49 | display: none;
50 | background: rgba(0,0,0,0.8);
51 | width:960px; height:540px;
52 | position:absolute;
53 | margin:auto;
54 | top:0; left:0; right:0; bottom:0;
55 | cursor: pointer;
56 | }
57 | #paused{
58 | cursor: pointer;
59 | }
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
ای بابا!
10 |
11 | your browser doesn't support webgl.
12 | try a different browser or computer?
13 |
14 | مرورگر شما مرخص است! از یه مرورگر و یا کامپیوتر دیگه استفاده کنید!
15 |
16 |
17 |
18 |
paused
19 |
20 | click anywhere to resume
21 | برای بازگشت رو یه جا رو کلیک کن!
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
105 |
--------------------------------------------------------------------------------
/js/core/Game.js:
--------------------------------------------------------------------------------
1 | /**************************************
2 |
3 | GAME CLASS SINGLETON:
4 | Handles the DOM, load, init, update & render loops
5 |
6 | **************************************/
7 |
8 | (function(exports){
9 |
10 | // Singleton
11 | var Game = {};
12 | exports.Game = Game;
13 |
14 | // PROPERTIES
15 | Game.width = 960;
16 | Game.height = 540;
17 | Game.stats = true;
18 |
19 | // INIT
20 | Game.init = function(HACK){
21 |
22 | // Set up PIXI
23 | Game.renderer = new PIXI.WebGLRenderer(Game.width, Game.height);
24 | document.querySelector("#stage").appendChild(Game.renderer.view);
25 | Game.stage = new PIXI.Container();
26 | Game.stage.interactive = true;
27 |
28 | // Mr Doob Stats
29 | if(Game.stats){
30 | Game.stats = new Stats();
31 | Game.stats.showPanel(0); // 0: fps, 1: ms, 2: mb, 3+: custom
32 | document.body.appendChild(Game.stats.dom);
33 | }
34 |
35 | // Scene Manager
36 | Game.scene = null;
37 | Game.sceneManager = new SceneManager();
38 |
39 | if(HACK){
40 | // NOT preloader - jump direct to a scene
41 | Game.loadAssets(function(){ // well, also get preloader assets...
42 | Game.loadAssets(function(){
43 | Game.sceneManager.gotoScene(HACK);
44 | setInterval(Game.update,1000/60);
45 | Game.animate();
46 | }, function(){}, false);
47 | }, function(){}, true);
48 | }else{
49 | // Preloader
50 | Game.loadAssets(function(){
51 | Game.sceneManager.gotoScene("Preloader");
52 | setInterval(Game.update,1000/60);
53 | Game.animate();
54 | }, function(){}, true);
55 | }
56 |
57 | };
58 |
59 | // UPDATE & ANIMATE
60 |
61 | Game.paused = false;
62 |
63 | Game.update = function(){
64 | if(Game.paused) return;
65 | Tween.tick();
66 | Game.sceneManager.update();
67 | };
68 |
69 | Game.animate = function(){
70 | if(Game.stats) Game.stats.begin();
71 | if(!Game.paused){
72 | Game.renderer.render(Game.stage);
73 | }
74 | if(Game.stats) Game.stats.end();
75 | requestAnimationFrame(Game.animate);
76 | };
77 |
78 | // GAME PAUSED?
79 | // ON BLUR & PAUSE
80 |
81 | var modal_shade = document.getElementById("modal_shade");
82 | var paused = document.getElementById("paused");
83 | window.onblur = function(){
84 | if(Game.scene && Game.scene.UNPAUSEABLE) return;
85 | modal_shade.style.display = "block";
86 | paused.style.display = "block";
87 | Game.paused = true;
88 | Howler.mute(true);
89 | }
90 | modal_shade.onclick = paused.onclick = function(){
91 | modal_shade.style.display = "none";
92 | paused.style.display = "none";
93 | Game.paused = false;
94 | Howler.mute(false);
95 | };
96 |
97 | // LOADING, and ADDING TO MANIFEST.
98 | // TO DO: Progress, too
99 |
100 | Game.manifest = {};
101 | Game.manifest2 = {}; // FOR PRELOADER
102 | Game.sounds = {};
103 |
104 | Game.loadAssets = function(completeCallback, progressCallback, PRELOADER){
105 |
106 | var manifest = PRELOADER ? Game.manifest2 : Game.manifest;
107 |
108 | // ABSOLUTE NUMBER OF ASSETS!
109 | var _totalAssetsLoaded = 0;
110 | var _totalAssetsToLoad = 0;
111 | for(var key in manifest){
112 | var src = manifest[key];
113 | if(src.slice(-5)==".json"){
114 | // Is Sprite. Actually TWO assets.
115 | _totalAssetsToLoad += 2;
116 | }else{
117 | _totalAssetsToLoad += 1;
118 | }
119 | }
120 | var _onAssetLoad = function(){
121 | _totalAssetsLoaded++;
122 | progressCallback(_totalAssetsLoaded/_totalAssetsToLoad); // PROGRESS.
123 | };
124 |
125 | // META: Groups To Load – just images & sounds
126 | var _groupsToLoad = PRELOADER ? 1 : 2;
127 | var _onGroupLoaded = function(){
128 | _groupsToLoad--;
129 | if(_groupsToLoad==0) completeCallback(); // DONE.
130 | };
131 |
132 | // Howler
133 | var _soundsToLoad = 0;
134 | var _onSoundLoad = function(){
135 | _soundsToLoad--;
136 | _onAssetLoad();
137 | if(_soundsToLoad==0) _onGroupLoaded();
138 | };
139 |
140 | // PIXI
141 | var loader = PIXI.loader;
142 | var resources = PIXI.loader.resources;
143 |
144 | for(var key in manifest){
145 |
146 | var src = manifest[key];
147 |
148 | // Is MP3. Leave it to Howler.
149 | if(src.slice(-4)==".mp3"){
150 | var sound = new Howl({ src:[
151 | src.slice(0, src.length-4)+".opus",
152 | src.slice(0, src.length-4)+".m4a",
153 | src
154 | ] });
155 | _soundsToLoad++;
156 | sound.once('load', _onSoundLoad);
157 | Game.sounds[key] = sound;
158 | continue;
159 | }
160 |
161 | // Otherwise, is an image. Leave it to PIXI.
162 | loader.add(key, src);
163 |
164 | }
165 |
166 | // PIXI
167 | loader.on('progress',_onAssetLoad);
168 | loader.once('complete', _onGroupLoaded);
169 | loader.load();
170 |
171 | };
172 |
173 | // Add To Manifest
174 | Game.addToManifest = function(keyValues, PRELOADER){
175 | var manifest = PRELOADER ? Game.manifest2 : Game.manifest;
176 | for(var key in keyValues){
177 | manifest[key] = keyValues[key];
178 | }
179 | };
180 |
181 | })(window);
182 |
--------------------------------------------------------------------------------
/js/core/Scene.js:
--------------------------------------------------------------------------------
1 | /************************************
2 |
3 | SCENE BASE CLASS
4 |
5 | *************************************/
6 |
7 | function Scene(){
8 |
9 | var self = this;
10 |
11 | // TO IMPLEMENT
12 | self.update = function(){};
13 |
14 | // TO IMPLEMENT
15 | self.kill = function(){};
16 |
17 | }
--------------------------------------------------------------------------------
/js/core/SceneManager.js:
--------------------------------------------------------------------------------
1 | /************************************
2 |
3 | SCENE MANAGER
4 | Basically just swaps out scenes.
5 |
6 | *************************************/
7 |
8 | function SceneManager(){
9 |
10 | var self = this;
11 |
12 | self.gotoScene = function(sceneName){
13 |
14 | // Old scene
15 | Game.stage.removeChildren();
16 | var oldScene = Game.scene;
17 | if(oldScene) oldScene.kill();
18 |
19 | // New scene
20 | var Scene_Class = window["Scene_"+sceneName];
21 | var newScene = new Scene_Class();
22 | Game.scene = newScene;
23 |
24 | };
25 |
26 | self.update = function(){
27 | if(Game.scene){
28 | Game.scene.update();
29 | }
30 | };
31 |
32 | }
--------------------------------------------------------------------------------
/js/game/AnimationProp.js:
--------------------------------------------------------------------------------
1 | /********
2 |
3 | Just plays an animation.
4 |
5 | *********/
6 |
7 | function AnimationProp(scene){
8 |
9 | var self = this;
10 | self._CLASS_ = "AnimationProp";
11 |
12 | // Properties
13 | self.scene = scene;
14 |
15 | // Not known yet!
16 | self.mc = null;
17 | self.x = -1;
18 | self.y = -1;
19 | self.width = -1;
20 | self.height = -1;
21 |
22 | // Graphics
23 | var g = new PIXI.Container();
24 | self.graphics = g;
25 |
26 | // DO IT.
27 | self.DRAWING_SCALE = 0.65;
28 | self.init = function(x, y, resourceName){
29 |
30 | // Make it!
31 | var mc = MakeMovieClip(resourceName);
32 | mc.scale.x = mc.scale.y = self.DRAWING_SCALE;
33 | g.addChild(mc);
34 |
35 | // Position & Dimensions
36 | self.x = x;
37 | self.y = y;
38 | self.width = mc.width;
39 | self.height = mc.height;
40 |
41 | // MOVIECLIP
42 | self.mc = mc;
43 |
44 | // Update!
45 | self.update();
46 |
47 | };
48 |
49 | // Update
50 | // TO IMPLEMENT: YOUR OWN ANIMATION CODDE
51 | self.update = function(){
52 | g.x = self.x;
53 | g.y = self.y;
54 | self.updateAnimation();
55 | };
56 | self.updateAnimation = function(){};
57 |
58 | /////////////
59 | // THE END //
60 | /////////////
61 |
62 | // KILL ME
63 | self.kill = function(){
64 | var world = self.scene.world;
65 | world.props.splice(world.props.indexOf(self),1);
66 | world.layers.props.removeChild(self.graphics);
67 | };
68 |
69 | }
--------------------------------------------------------------------------------
/js/game/Blood.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | blood: "sprites/peeps/blood.json"
3 | });
4 |
5 | /**************************************
6 |
7 | Just expand to proper size. Then stop.
8 |
9 | **************************************/
10 |
11 | function Blood(scene){
12 |
13 | var self = this;
14 | self._CLASS_ = "Blood";
15 |
16 | // Graphics: Layers to this peep.
17 | self.DRAWING_SCALE = 0.65;
18 | var g = new PIXI.Container();
19 | self.graphics = g;
20 | self.mc = MakeMovieClip("blood");
21 | self.mc.anchor.x = 0.5;
22 | self.mc.anchor.y = 0.5;
23 | self.mc.gotoAndStop(Math.floor(Math.random()*3));
24 | self.mc.scale.x = self.mc.scale.y = 0;
25 | g.addChild(self.mc);
26 |
27 | // What scale to go to?
28 | self.x = 0;
29 | self.y = 0;
30 | self.scale = 0;
31 | self.gotoScale = 0;
32 | self.init = function(options){
33 | self.x = options.x;
34 | self.y = options.y;
35 | self.gotoScale = options.scale;
36 | };
37 |
38 | // Update!
39 | self.update = function(){
40 |
41 | // DONE
42 | if(self.DONE) return;
43 | if(Math.abs(self.scale-self.gotoScale)<0.01) self.DONE=true;
44 |
45 | // Scaling...
46 | self.scale = (self.scale*0.8) + (self.gotoScale*0.2);
47 |
48 | // Convert to Graphics!
49 | g.x = self.x;
50 | g.y = self.y;
51 | self.mc.scale.x = self.mc.scale.y = self.scale;
52 |
53 | };
54 |
55 | // KILL HALF THE *STILL* PARTICLES WHENEVER TV CUTS OUT.
56 | // KILL ME
57 | self.kill = function(){
58 | var world = self.scene.world;
59 | world.bg.splice(world.bg.indexOf(self),1);
60 | world.layers.bg.removeChild(self.graphics);
61 | };
62 |
63 |
64 | }
--------------------------------------------------------------------------------
/js/game/Camera.js:
--------------------------------------------------------------------------------
1 | /**************************************
2 |
3 | CAMERA:
4 | The graphics & controls for this sucka
5 |
6 | **************************************/
7 |
8 | Game.addToManifest({
9 |
10 | cam_frame: "sprites/cam/cam.png",
11 | cam_flash: "sprites/cam/cam-flash.png",
12 | cam_instructions: "sprites/cam/cam-instructions.png",
13 |
14 | cam_snap: "sounds/cam_snap.mp3"
15 |
16 | });
17 |
18 | Camera.WIDTH = Game.width/4;
19 | Camera.HEIGHT = Game.height/4;
20 |
21 | function Camera(scene, options){
22 |
23 | var self = this;
24 | options = options || {};
25 |
26 | // Properties
27 | self.scene = scene;
28 | self.x = Game.width/2;
29 | self.y = Game.height/2;
30 | self.width = Camera.WIDTH;
31 | self.height = Camera.HEIGHT;
32 |
33 |
34 |
35 | ////////////////////////////////
36 | ///// GRAPHICS /////////////////
37 | ////////////////////////////////
38 |
39 | // MAIN CONTAINER
40 | self.graphics = new PIXI.Container();
41 | scene.graphics.addChild(self.graphics);
42 |
43 | // PHOTO
44 | self.photo = new PIXI.Container();
45 | self.graphics.addChild(self.photo);
46 | self.photoTexture = null;
47 |
48 | // FLASH, FRAME, INSTRUCTIONS
49 | var resources = PIXI.loader.resources;
50 |
51 | self.flash = new PIXI.Sprite(resources.cam_flash.texture);
52 | self.flash.scale.x = self.flash.scale.y = 0.5;
53 | self.flash.anchor.x = self.flash.anchor.y = 0.5;
54 | self.flash.alpha = 0;
55 | self.graphics.addChild(self.flash);
56 |
57 | self.frame = new PIXI.Sprite(resources.cam_frame.texture);
58 | self.frame.scale.x = self.frame.scale.y = 0.5;
59 | self.frame.anchor.x = self.frame.anchor.y = 0.5;
60 | self.graphics.addChild(self.frame);
61 |
62 | if(!options.noIntro){
63 | self.instructions = new PIXI.Sprite(resources.cam_instructions.texture);
64 | self.instructions.scale.x = self.instructions.scale.y = 0.5;
65 | self.instructions.anchor.x = 0.5;
66 | self.instructions.anchor.y = 0;
67 | self.instructions.y = 67.5;
68 | self.graphics.addChild(self.instructions);
69 | self.instructions.alpha = 0;
70 | Tween_get(self.instructions)
71 | .wait(_s(BEAT))
72 | .to({alpha:1}, _s(BEAT*0.5));
73 | }
74 |
75 |
76 | ////////////////////////////////
77 | ///// CONTROLS /////////////////
78 | ////////////////////////////////
79 |
80 | // Controls!
81 | self.frozen = false;
82 | Game.stage.mousemove = Game.stage.touchstart = Game.stage.touchmove = function(mouseData){
83 | var pos = mouseData.data.global;
84 | self.x = pos.x;
85 | self.y = pos.y;
86 | };
87 | Game.stage.mousedown = Game.stage.touchend = function(mouseData){
88 |
89 | // ONLY ONCE. FREEZE.
90 | if(self.frozen) return;
91 | if(!options.streaming){
92 | self.frozen = true;
93 | }
94 |
95 | // Take Texture
96 | self.takePhoto();
97 |
98 | // Tell the director
99 | if(!options.streaming){
100 | scene.director.takePhoto(self);
101 | }
102 |
103 | // SOUND!
104 | if(self.noSounds) return;
105 | Game.sounds.cam_snap.play();
106 |
107 | };
108 | Game.stage.mouseup = function(mouseData){}; // nothing at all
109 |
110 |
111 |
112 | /////////////////////////////////////
113 | ///// PHOTO - TAKE, HIDE, RESET /////
114 | /////////////////////////////////////
115 |
116 | // Take Photo!
117 | self.takePhoto = function(){
118 |
119 | if(!options.streaming){
120 |
121 | // Just update that...
122 | self.updatePosition();
123 |
124 | // Save the texture
125 | self.photoTexture = self.getTexture();
126 |
127 | // Make it part of my graphics
128 | var photo = new PIXI.Sprite(self.photoTexture);
129 | photo.anchor.x = photo.anchor.y = 0.5;
130 | self.photo.removeChildren();
131 | self.photo.addChild(photo);
132 |
133 | }
134 |
135 | // Flash!
136 | self.flash.alpha = 1;
137 | Tween_get(self.flash).to({alpha:0}, _s(0.25));
138 |
139 | // Fade out instructions...
140 | if(!options.noIntro){
141 | var instr = self.instructions;
142 | if(instr.alpha>0){
143 | Tween_get(instr).to({alpha:0}, _s(BEAT*0.25));
144 | }
145 | }
146 |
147 | // Callback?
148 | if(options.onTakePhoto){
149 | options.onTakePhoto();
150 | }
151 |
152 | };
153 |
154 | // Get texture!
155 | var renderTexturePoolIndex = 0;
156 | var renderTexturePool = [
157 | new PIXI.RenderTexture(Game.renderer, self.width, self.height),
158 | new PIXI.RenderTexture(Game.renderer, self.width, self.height)
159 | ];
160 | self.getTexture = function(){
161 |
162 | // TAKE THE TEXTURE!
163 | var sw = self.width;
164 | var sh = self.height;
165 | var sx = self.x-sw/2;
166 | var sy = self.y-sh/2;
167 |
168 | var matrix = new PIXI.Matrix();
169 | matrix.translate(-scene.graphics.x, -scene.graphics.y);
170 | matrix.scale(1/scene.graphics.scale.x, 1/scene.graphics.scale.y);
171 | matrix.translate(-sx,-sy);
172 |
173 | var renderTexture = renderTexturePool[renderTexturePoolIndex];
174 | renderTexture.render(scene.world.graphics, matrix); // TO DO: higher rez
175 | renderTexturePoolIndex = (renderTexturePoolIndex+1)%renderTexturePool.length;
176 |
177 | // Return texture!
178 | return renderTexture;
179 |
180 | };
181 |
182 | // Hide Camera
183 | self.hide = function(){
184 | self.graphics.visible = false;
185 | self.photo.removeChildren();
186 | };
187 |
188 | // Reset Camera
189 | self.reset = function(){
190 | var g = self.graphics;
191 | g.scale.x = g.scale.y = 1;
192 | g.visible = true;
193 | self.frozen = false;
194 | self.updatePosition();
195 | };
196 |
197 |
198 |
199 |
200 | //////////////////////////
201 | ///// UPDATE /////////////
202 | //////////////////////////
203 |
204 | // Update
205 | self.updatePosition = function(){
206 |
207 | // Constraints
208 | if(self.xGame.width-self.width/2) self.x=Game.width-self.width/2;
210 | if(self.yGame.height-self.height/2) self.y=Game.height-self.height/2;
212 |
213 | // Container moves!
214 | self.graphics.x = self.x;
215 | self.graphics.y = self.y;
216 |
217 | };
218 | self.update = function(){
219 | if(!self.frozen) self.updatePosition();
220 | };
221 |
222 | // And that's all she wrote.
223 | self.update();
224 |
225 |
226 |
227 |
228 | //////////////////////////
229 | ///// MISC CRAP //////////
230 | //////////////////////////
231 |
232 | self.isOverTV = function(smaller){
233 | var x = self.x;
234 | var y = self.y;
235 | var cx = Game.width/2;
236 | var cy = Game.height/2;
237 | var w = smaller ? 140 : self.width;
238 | var h = smaller ? 90 : self.height;
239 | var l = cx - w/2;
240 | var r = cx + w/2;
241 | var t = cy - h/2;
242 | var b = cy + h/2;
243 | return (l=0){
77 | self.z=0;
78 | self.vx *= 0.8;
79 | self.vr *= 0.8;
80 | if(Math.abs(self.vz)>1){
81 |
82 | // BLOOD FOR THE BLOOD GOD
83 | var blood = new Blood(scene);
84 | blood.init({
85 | x: self.x,
86 | y: self.y,
87 | scale: 0.5 + Math.abs(self.vz)*0.1
88 | });
89 | scene.world.addBG(blood);
90 |
91 | // Bounce
92 | self.vz *= -0.3;
93 |
94 | }else{
95 | self.vz = 0;
96 | }
97 | }
98 |
99 | // Rotation: HOW MUCH OFF THE GROUND?
100 | // 0 -> 0, -50 -> TAU/4
101 | self.rotation = (Math.abs(self.z)/50)*(Math.TAU/4);
102 | if(self.rotation>Math.TAU*0.2){
103 | self.rotation = Math.TAU*0.2;
104 | }
105 |
106 | // Convert to Graphics!
107 | g.x = self.x;
108 | g.y = self.y + self.z;
109 | self.mc.rotation = self.rotation;
110 | g.scale.x = (self.flip>0) ? 1 : -1;
111 |
112 | };
113 |
114 | // KILL ME
115 | self.kill = function(){
116 | var world = self.scene.world;
117 | world.props.splice(world.props.indexOf(self),1);
118 | world.layers.props.removeChild(self.graphics);
119 | };
120 |
121 |
122 | }
--------------------------------------------------------------------------------
/js/game/Gore.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | gore: "sprites/peeps/gore.json"
3 | });
4 |
5 | /**************************************
6 |
7 | Gore:
8 | Just a prop that bounces around.
9 |
10 | **************************************/
11 |
12 | function Gore(scene){
13 |
14 | var self = this;
15 | self._CLASS_ = "Gore";
16 |
17 | // Graphics: Layers to this peep.
18 | self.DRAWING_SCALE = 0.65;
19 | var g = new PIXI.Container();
20 | self.graphics = g;
21 | self.mc = MakeMovieClip("gore");
22 | self.mc.gotoAndStop(Math.floor(Math.random()*3));
23 | self.mc.anchor.x = 0.5;
24 | self.mc.anchor.y = 0.5;
25 | self.mc.scale.x = self.mc.scale.y = self.DRAWING_SCALE;
26 | g.addChild(self.mc);
27 |
28 | // Init – set DIRECTION and VELOCITY and X,Y,Z
29 | // and GRAVITY and SPIN and BOUNCE and OFFSET and FRAME
30 | self.direction = 0;
31 | self.velocity = 0;
32 | self.vx = 0;
33 | self.vz = 0;
34 | self.x = 0;
35 | self.y = 0;
36 | self.z = 0;
37 | self.rotation = 0;
38 | self.gravity = 0.5;
39 | self.init = function(options){
40 |
41 | // All them dang options
42 | if(options.direction!==undefined) self.direction=options.direction;
43 | if(options.velocity!==undefined) self.velocity=options.velocity;
44 | if(options.x!==undefined) self.x=options.x;
45 | if(options.y!==undefined) self.y=options.y;
46 | if(options.z!==undefined) self.z=options.z;
47 | if(options.gravity!==undefined) self.gravity=options.gravity;
48 |
49 | // And then convert to vx & vz.
50 | self.vx = Math.cos(self.direction)*self.velocity;
51 | self.vz = Math.sin(self.direction)*self.velocity;
52 | self.vy = Math.random()-0.5; // just coz
53 | self.vr = (Math.random()*2-1)*0.5; // just coz
54 |
55 | };
56 |
57 | // Update!
58 | self.update = function(){
59 |
60 | // FALLING
61 | self.x += self.vx;
62 | self.y += self.vy;
63 | self.z += self.vz;
64 | self.rotation += self.vr;
65 | self.vz += self.gravity;
66 |
67 | // Bounce or no?
68 | if(self.z>=0){
69 | self.z=0;
70 | self.vx *= 0.8;
71 | self.vy *= 0.8;
72 | self.vr *= 0.8;
73 | if(Math.abs(self.vz)>1){
74 |
75 | // BLOOD FOR THE BLOOD GOD
76 | var blood = new Blood(scene);
77 | blood.init({
78 | x: self.x,
79 | y: self.y,
80 | scale: Math.abs(self.vz)*0.02
81 | });
82 | scene.world.addBG(blood);
83 |
84 | // Bounce
85 | self.vz *= -0.2;
86 |
87 | }else{
88 | self.vz = 0;
89 | }
90 | }
91 |
92 | // Convert to Graphics!
93 | g.x = self.x;
94 | g.y = self.y + self.z;
95 | g.rotation = self.rotation;
96 |
97 | };
98 |
99 | // KILL ME
100 | self.kill = function(){
101 | var world = self.scene.world;
102 | world.props.splice(world.props.indexOf(self),1);
103 | world.layers.props.removeChild(self.graphics);
104 | };
105 |
106 |
107 | }
--------------------------------------------------------------------------------
/js/game/ScreenShake.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | snow: "sprites/snow.png"
3 | });
4 |
5 | /*************
6 |
7 | Provides a screen-shaking feature!
8 |
9 | **************/
10 |
11 | function ScreenShake(scene){
12 |
13 | var self = this;
14 | self.scene = scene;
15 |
16 | self.snow = null;
17 | self.intensity = 0;
18 | self.shake = function(intensity){
19 |
20 | self.intensity = intensity;
21 |
22 | // Make snowscreen for the first time
23 | if(!self.snow){
24 | self.snow = MakeSprite("snow");
25 | self.snow.x = Game.width/2;
26 | self.snow.y = Game.height/2;
27 | self.snow.anchor.x = self.snow.anchor.y = 0.5;
28 | scene.graphics.addChild(self.snow);
29 | }else{
30 | self.snow.alpha = self.baseAlpha+0.35;
31 | }
32 |
33 | }
34 |
35 | self.baseAlpha = 0.15;
36 | self.update = function(){
37 |
38 | // Fuzz that snowscreen
39 | if(self.snow){
40 | self.snow.alpha = self.snow.alpha*0.95 + self.baseAlpha*0.05;
41 | self.snow.scale.x = 1 + Math.random()*0.2;
42 | self.snow.scale.y = 1 + Math.random()*0.2;
43 | if(Math.random()<0.5) self.snow.scale.x*=-1;
44 | if(Math.random()<0.5) self.snow.scale.y*=-1;
45 | }
46 |
47 | // Shaking intensity!
48 | if(self.intensity<=0.5){
49 | scene.offX = 0;
50 | scene.offY = 0;
51 | self.intensity = 0;
52 | }else{
53 | scene.offX = scene.scale*(Math.random()*2-1)*self.intensity;
54 | scene.offY = scene.scale*(Math.random()*2-1)*self.intensity;
55 | self.intensity*=0.95;
56 | }
57 |
58 | // Fix it...
59 | if(self.snow){
60 | self.snow.x = Game.width/2 - scene.offX;
61 | self.snow.y = Game.height/2 - scene.offY;
62 | }
63 |
64 | };
65 |
66 |
67 | }
--------------------------------------------------------------------------------
/js/game/ScreenZoomOut.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | laptop: "sprites/laptop.png"
3 | });
4 |
5 | /*************
6 |
7 | Provides a screen zooming-out feature!
8 |
9 | **************/
10 |
11 | function ScreenZoomOut(scene){
12 |
13 | var self = this;
14 | self.scene = scene;
15 |
16 | self.started = false;
17 | self.laptop = null;
18 | self.scale = 1;
19 |
20 | var offsetX = 816;
21 | var offsetY = 459;
22 |
23 | self.init = function(){
24 |
25 | if(self.started) return;
26 | self.started = true;
27 |
28 | // Put it on!
29 | self.laptop = MakeSprite("laptop");
30 | self.laptop.x = -offsetX;
31 | self.laptop.y = -offsetY;
32 | scene.graphics.addChild(self.laptop);
33 |
34 | self.update();
35 |
36 | };
37 |
38 | self.fixLaptop = function(){
39 | if(!self.started) return;
40 | self.laptop.x = -offsetX - scene.offX/scene.scale;
41 | self.laptop.y = -offsetY - scene.offY/scene.scale;
42 | };
43 |
44 | self.onComplete = null;
45 | self.completed = false;
46 | self.fullTimer = _s(40);
47 | self.timer = self.fullTimer;
48 | self.update = function(){
49 |
50 | if(self.completed) return;
51 | if(!self.started) return;
52 |
53 | //self.scale *= 0.99;
54 | self.scale *= 0.9996;
55 | scene.scale = self.scale;
56 | scene.x = (Game.width-(Game.width*self.scale))/2;
57 | scene.y = (Game.height-(Game.height*self.scale))/2;
58 |
59 | // IF LESS THAN 0.4, END. (HACK)
60 | self.timer--;
61 | if(self.timer<=0){
62 | self.completed = true;
63 | self.onComplete();
64 | }
65 |
66 | };
67 |
68 | }
--------------------------------------------------------------------------------
/js/game/TV.js:
--------------------------------------------------------------------------------
1 | /**************************************
2 |
3 | TV:
4 | Is a prop you can add a photo to.
5 |
6 | **************************************/
7 |
8 | Game.addToManifest({
9 | tv: "sprites/tv.png",
10 | chyron: "sprites/chyron.png",
11 | chyron2: "sprites/chyron2.png",
12 | chyron3: "sprites/chyron3.png"
13 | });
14 |
15 | function TV(scene){
16 |
17 | var self = this;
18 | self._CLASS_ = "TV";
19 |
20 | // Properties
21 | self.scene = scene;
22 | self.x = Game.width/2;
23 | self.y = Game.height/2 + 80;
24 | self.width = 150;
25 | self.height = 180;
26 |
27 | // Graphics
28 | var resources = PIXI.loader.resources;
29 | var g = new PIXI.Container();
30 | var bg = new PIXI.Sprite(resources.tv.texture);
31 | bg.anchor.x = 0.5;
32 | bg.anchor.y = 1.0;
33 | bg.scale.x = bg.scale.y = 0.5;
34 | g.addChild(bg);
35 | self.graphics = g;
36 |
37 | // Offset
38 | self.offset = {
39 | x: 0,
40 | y: -113.5,
41 | scale: 8
42 | };
43 |
44 | // Photo container
45 | var photoContainer = new PIXI.Container();
46 | var conversion = 0.5; // from 1/4 to 1/8
47 | photoContainer.x = self.offset.x - Camera.WIDTH*0.5*conversion;
48 | photoContainer.y = self.offset.y - Camera.HEIGHT*0.5*conversion;
49 | photoContainer.scale.x = photoContainer.scale.y = conversion;
50 | g.addChild(photoContainer);
51 |
52 | // Update
53 | self.update = function(){
54 | self.updateGraphics();
55 | };
56 | self.updateGraphics = function(){
57 | g.x = self.x;
58 | g.y = self.y;
59 | };
60 |
61 | // PHOTO
62 | var photo;
63 | self.placePhoto = function(options){
64 |
65 | // OPTIONS
66 | var photoTexture = options.photo;
67 | var text = options.text || "";
68 |
69 | // Clear screen
70 | photoContainer.removeChildren();
71 |
72 | // Add photo now
73 | photo = new PIXI.Sprite(photoTexture);
74 | photoContainer.addChild(photo);
75 |
76 | // Chryon container
77 | var chyron = new PIXI.Container();
78 | chyron.alpha = 0;
79 | chyron.x = +15;
80 | Tween_get(chyron).to({alpha:1}, _s(0.5), Ease.quadInOut);
81 | Tween_get(chyron).to({x:0}, _s(0.8), Ease.quadInOut);
82 | photoContainer.addChild(chyron);
83 |
84 | // Chyron BG
85 | var resourceName;
86 | if(options.nothing) resourceName="chyron3";
87 | else if(options.fail) resourceName="chyron2";
88 | else resourceName="chyron";
89 | var bg = new MakeSprite(resourceName);
90 | bg.scale.x = bg.scale.y = 1/8;
91 | chyron.addChild(bg);
92 |
93 | // Chyron Text
94 | if(!options.nothing){
95 | var fontsize=50; //, max=14;
96 | //if(text.length>max){ // more than [max] chars...
97 | // fontsize = Math.floor(max*fontsize/text.length);
98 | //}
99 | var text = new PIXI.Text(text + "\n", {font:"bold "+fontsize+"px Cairo", align:"right", fill:"#FFF"}); // \n hack. needed when the text field cuts some of the string font's bottom
100 | text.scale.x = text.scale.y = 0.2;
101 | text.anchor.x = 0;
102 | text.anchor.y = 0.5;
103 | text.x = 30;
104 | text.y = 120;
105 | chyron.addChild(text);
106 | }
107 |
108 | }
109 |
110 | // Update!
111 | self.update();
112 |
113 | }
--------------------------------------------------------------------------------
/js/game/World.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | bg: "sprites/bg.png",
3 | bg_dark: "sprites/bg_dark.png"
4 | });
5 |
6 | /**************************************
7 |
8 | WORLD:
9 | Layers for the background, the people, objects, particles, etc
10 |
11 | **************************************/
12 |
13 | function World(scene, options){
14 |
15 | var self = this;
16 | options = options || {};
17 |
18 | // Properties
19 | self.scene = scene;
20 |
21 | // PIXI GRAPHICS
22 | var g = new PIXI.Container();
23 | self.graphics = g;
24 | g.x = g.pivot.x = Game.width/2;
25 | g.y = g.pivot.y = Game.height/2;
26 | scene.graphics.addChild(self.graphics);
27 | self.layers = {};
28 |
29 | // LAYER: BG
30 | self.layers.bg = new PIXI.Container();
31 | g.addChild(self.layers.bg);
32 | var bg = MakeSprite(options.bg ? options.bg : "bg");
33 | bg.position.x = -100;
34 | bg.position.y = -100;
35 | self.layers.bg.addChild(bg);
36 | self.bg = [];
37 | self.addBG = function(bg){
38 | self.bg.push(bg);
39 | self.layers.bg.addChild(bg.graphics);
40 | };
41 |
42 | // LAYER: PROPS
43 | self.layers.props = new PIXI.Container();
44 | g.addChild(self.layers.props);
45 | self.props = [];
46 | self.addProp = function(prop){
47 | prop.graphics._REFERENCE_ = prop; // HACK. REFERENCE.
48 | self.props.push(prop);
49 | self.layers.props.addChild(prop.graphics);
50 | };
51 |
52 | // SUB-LAYER: PEEPS
53 | self.peeps = [];
54 | self.addPeep = function(peep){
55 | self.peeps.push(peep);
56 | self.addProp(peep);
57 | };
58 | self.clearPeeps = function(){
59 | while(self.peeps.length>0){
60 | self.peeps[0].kill();
61 | }
62 | };
63 | self.addBalancedPeeps = function(howMany){
64 |
65 | // Count circles & squares...
66 | var circleCount = 0;
67 | var squareCount = 0;
68 | for(var i=0;ie+1E3&&(r.update(1E3*a/(c-e),100),e=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){g=this.end()},domElement:c,setMode:k}};
4 | Stats.Panel=function(h,k,l){var c=Infinity,g=0,e=Math.round,a=e(window.devicePixelRatio||1),r=80*a,f=48*a,t=3*a,u=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=f;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,f);b.fillStyle=k;b.fillText(h,t,u);b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(f,
5 | v){c=Math.min(c,f);g=Math.max(g,f);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=k;b.fillText(e(f)+" "+h+" ("+e(c)+"-"+e(g)+")",t,u);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,e((1-f/v)*p))}}};"object"===typeof module&&(module.exports=Stats);
6 |
--------------------------------------------------------------------------------
/js/misc/Candlelight.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 |
3 | candlelight: "sprites/misc/candlelight.json"
4 |
5 | });
6 |
7 | function Candlelight(position){
8 |
9 | var self = this;
10 | var mc = MakeMovieClip("candlelight");
11 | self.graphics = mc;
12 |
13 | mc.anchor.x = 0.5;
14 | mc.anchor.y = 0.5;
15 | mc.x = position[0]-100; // HACK, LOL W/E
16 | mc.y = position[1]-100; // HACK, LOL W/E
17 |
18 | self.update = function(){
19 | if(Math.random()<0.2){
20 | var frame = Math.floor(Math.random()*mc.totalFrames);
21 | mc.gotoAndStop(frame);
22 | }
23 | };
24 |
25 | }
--------------------------------------------------------------------------------
/js/misc/Cricket.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | cricket: "sprites/misc/cricket.json"
3 | });
4 | function Cricket(scene){
5 |
6 | var self = this;
7 | self.scene = scene;
8 |
9 | self._CLASS_ = "Cricket";
10 |
11 | var mc = MakeMovieClip("cricket");
12 | self.graphics = mc;
13 | self.mc = mc;
14 | var DRAWING_SCALE = 0.25;
15 | mc.scale.x = mc.scale.y = DRAWING_SCALE;
16 |
17 | self.width = 137*DRAWING_SCALE;
18 | self.height = 137*DRAWING_SCALE;
19 |
20 | var MODE = 0;
21 | var MODE_CHIRP = 0;
22 | var MODE_HOP = 1;
23 |
24 | self.flip = 1;
25 | self.period = 10;
26 | self.breathe = Math.floor(Math.random()*self.period);
27 | self.hop = 0;
28 |
29 | self.x = self.y = self.z = 0;
30 |
31 | self.update = function(){
32 |
33 | if(MODE==MODE_CHIRP){
34 | self.breathe++;
35 | if(self.breathe>self.period+10) self.breathe=0;
36 | if(self.breathe>self.period){
37 | var scale;
38 | if(self.breathe%4==0) scale=1.1;
39 | if(self.breathe%4==1) scale=1.0;
40 | if(self.breathe%4==2) scale=0.9;
41 | if(self.breathe%4==3) scale=1.0;
42 | mc.scale.x = DRAWING_SCALE*(scale);
43 | mc.scale.y = DRAWING_SCALE*(1/scale);
44 | }else{
45 | mc.scale.x = mc.scale.y = DRAWING_SCALE;
46 | }
47 | }
48 | if(self.hopAwayTimeout>0){
49 | self.hopAwayTimeout--;
50 | if(self.hopAwayTimeout==0) MODE=MODE_HOP;
51 | }
52 | if(MODE==MODE_HOP){
53 | var tv = scene.tv;
54 | self.flip = 1;
55 | self.x += 3.5;
56 | self.hop += 0.1570795;
57 | self.z = -Math.abs(Math.sin(self.hop))*100;
58 | self.y = tv.y;
59 | }
60 | if(self.x>Game.width+50){
61 | self.kill();
62 | }
63 |
64 | mc.scale.x = self.flip*Math.abs(mc.scale.x);
65 | mc.x = self.x;
66 | mc.y = self.y+self.z;
67 |
68 | };
69 |
70 | //////////////
71 | // WATCH TV //
72 | //////////////
73 |
74 | self.hopAwayTimeout = -1;
75 | self.watchTV = function(){
76 |
77 | // 1) Stop & look
78 | var tv = scene.tv;
79 | self.x = tv.x + 100;
80 | self.y = tv.y;
81 | self.flip = -1;
82 | var WAIT = Director.ZOOM_OUT_1_TIME + Director.SEE_VIEWERS_TIME + 2.3;
83 |
84 | // 2) And go on.
85 | self.hopAwayTimeout = _s(WAIT);
86 |
87 | };
88 |
89 | /////////////
90 | // THE END //
91 | /////////////
92 |
93 | // KILL ME
94 | self.kill = function(){
95 | var world = self.scene.world;
96 | world.props.splice(world.props.indexOf(self),1);
97 | world.layers.props.removeChild(self.graphics);
98 | };
99 |
100 | }
--------------------------------------------------------------------------------
/js/misc/Cursor.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | cursor: "sprites/misc/cursor.json"
3 | }, true);
4 |
5 | function Cursor(scene){
6 |
7 | var self = this;
8 | var mc = MakeMovieClip("cursor");
9 | mc.anchor.x = mc.anchor.y = 0;
10 | self.graphics = mc;
11 | mc.x = -100;
12 | mc.y = -100;
13 |
14 | self.click = false;
15 | Game.stage.mousemove = function(mouseData){
16 | var pos = mouseData.data.global;
17 | mc.x = pos.x+1;
18 | mc.y = pos.y+1;
19 | };
20 | Game.stage.mousedown = function(mouseData){
21 | self.click = true;
22 | };
23 | Game.stage.mouseup = function(mouseData){
24 | self.click = false;
25 | };
26 |
27 | var doubles = 0;
28 | self.update = function(isHover){
29 |
30 | doubles = (doubles+1)%2; // animate on doubles!
31 | if(doubles!=0) return;
32 |
33 | if(self.click){
34 | mc.gotoAndStop(4);
35 | }else{
36 | if(isHover){
37 | if(mc.currentFrame<3) mc.gotoAndStop(mc.currentFrame+1);
38 | }else{
39 | if(mc.currentFrame>0) mc.gotoAndStop(mc.currentFrame-1);
40 | }
41 | }
42 |
43 | };
44 |
45 | }
--------------------------------------------------------------------------------
/js/misc/LoversWatching.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | lovers_watching: "sprites/misc/lovers_watching.json"
3 | });
4 | function LoversWatching(type){
5 |
6 | var self = this;
7 | var mc = MakeMovieClip("lovers_watching");
8 | self.graphics = mc;
9 |
10 | self.breathe = 0;
11 | self.breatheSpeed = 0;
12 | if(type=="circle"){
13 | mc.x = 520;
14 | mc.y = 380;
15 | self.breatheSpeed = 0.025;
16 | mc.gotoAndStop(0);
17 | }else{
18 | mc.x = 550;
19 | mc.y = 375;
20 | self.breatheSpeed = 0.020;
21 | mc.gotoAndStop(1);
22 | }
23 |
24 | self.update = function(){
25 | var scale = 1 + Math.sin(self.breathe)*0.02;
26 | mc.scale.x = scale;
27 | mc.scale.y = 1/scale;
28 | self.breathe += self.breatheSpeed;
29 | };
30 |
31 | }
--------------------------------------------------------------------------------
/js/peeps/CrazyPeep.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 |
3 | hangry: "sprites/peeps/hangry.json",
4 |
5 | scream: "sounds/scream.mp3"
6 |
7 | });
8 |
9 | /****
10 |
11 | FRAMES:
12 | 00-09: walk loop
13 | 10-20: shout (14-19 as 2ndary loop)
14 |
15 | ****/
16 |
17 | function CrazyPeep(scene){
18 |
19 | var self = this;
20 | Peep.apply(self, [scene]);
21 | self._CLASS_ = "CrazyPeep";
22 |
23 | // MAD SPRITE
24 | var g = self.graphics;
25 | self.bodyMC = self.addMovieClip("hangry");
26 | self.bodyMC.anchor.x = 0.33; // not quite
27 |
28 | // STARTING POS & DIRECTION
29 | self.x = 1200;
30 | self.y = 330;
31 | self.direction = Math.PI;
32 | self.loop = false;
33 |
34 | // GRACE PERIODS FOR YELLIN'
35 | self.metaGracePeriod = _s(BEAT*3.5);
36 | self.wanderGracePeriod = _s(2);
37 | self.gracePeriod = _s(4.5);
38 |
39 | // WANDERING
40 | self.wander = 0;
41 | self.changeWander = function(){
42 | self.wander = Math.random()*0.1-0.05;
43 | };
44 | self.callbacks.update = function(){
45 |
46 | // NOPE
47 | if(self.metaGracePeriod>0){
48 | self.metaGracePeriod--;
49 | if(self.metaGracePeriod==0){
50 | self.callbacks.startWalking();
51 | }
52 | return; // NO MORE.
53 | }
54 |
55 | // Grace Period
56 | if(self.gracePeriod>0){
57 | self.gracePeriod--;
58 | }
59 | if(self.wanderGracePeriod>0){
60 | self.wanderGracePeriod--;
61 | }
62 |
63 | // Animate on doubles
64 | doubles = (doubles+1)%2;
65 |
66 | // Wander around
67 | if(self.wanderGracePeriod<=0){
68 | self.direction += self.wander;
69 | if(Math.random()<0.05) self.changeWander();
70 | }
71 |
72 | // STAY WITHIN GAME FRAME
73 | if(self.wanderGracePeriod<=0){
74 | self.stayWithinRect({
75 | l:100, r:860, t:100, b:480
76 | },0.15);
77 | }
78 |
79 | // BUMP the walking peeps I'm close to.
80 | if(self.gracePeriod<=0){
81 | var closeTo = self.touchingPeeps(50, function(peep){
82 | return peep.isWalking;
83 | });
84 | if(closeTo.length>0 && self.isWalking){
85 |
86 | // STOP & SHOUT
87 | self.isWalking = false;
88 | self.bodyMC.gotoAndStop(10);
89 | loopScreaming = 2;
90 | self.direction += Math.PI;
91 |
92 | // AHHHHH
93 | Game.sounds.scream.play();
94 |
95 | // Grace Period
96 | self.gracePeriod = _s(1);
97 |
98 | // SHOCK 'EM
99 | closeTo.forEach(function(other){
100 | if(!other.isWalking) return;
101 | other.vel.x = self.flip*10;
102 | other.flip = -1*self.flip;
103 | other.beShocked();
104 | });
105 |
106 | }
107 | }
108 |
109 | };
110 | self.callbacks.startWalking = function(){
111 | self.speed = 2;
112 | };
113 | self.speed = 0;
114 |
115 | // Animate on doubles
116 | var doubles = 0;
117 | var loopScreaming = -1;
118 |
119 | // WEIRD WALK
120 | self.walkAnim = function(){
121 |
122 | // Hop & flip
123 | self.hop += self.speed/50;
124 | if(self.hop>1) self.hop--;
125 | self.flip = (self.vel.x<0) ? -1 : 1;
126 |
127 | // Hop up & down
128 | var t = self.hop*Math.PI;
129 | g.pivot.y = Math.abs(Math.sin(t))*20;
130 |
131 | // FRAMES: MANUALLY
132 | if(doubles==0){
133 | var nextFrame = self.bodyMC.currentFrame+1;
134 | if(nextFrame>9) nextFrame=0;
135 | self.bodyMC.gotoAndStop(nextFrame);
136 | }
137 |
138 | };
139 |
140 | // SHOUT STANDING
141 | self.standAnim = function(){
142 |
143 | g.rotation = 0;
144 | g.pivot.y = 0;
145 |
146 | // FRAMES: MANUALLY
147 | if(doubles==0){
148 | var nextFrame = self.bodyMC.currentFrame+1;
149 | if(loopScreaming>0){
150 | if(nextFrame>19){
151 | nextFrame=16;
152 | loopScreaming--;
153 | }
154 | }else{
155 | if(nextFrame>20){
156 | nextFrame=0;
157 | self.isWalking = true;
158 | loopScreaming--;
159 | }
160 | }
161 | self.bodyMC.gotoAndStop(nextFrame);
162 | }
163 |
164 | };
165 |
166 | // IS SCREAMING?
167 | self.isScreaming = function(){
168 | return(loopScreaming>=0);
169 | };
170 |
171 | }
--------------------------------------------------------------------------------
/js/peeps/EvilHatPeep.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | gun: "sprites/peeps/gun.json",
3 |
4 | gun_cock: "sounds/gun_cock.mp3"
5 | });
6 |
7 | /****
8 |
9 | Same. Except....
10 | A GUN.
11 |
12 | Gun MC:
13 | 00-17: pulling it out.
14 |
15 | ****/
16 |
17 | function EvilHatPeep(scene){
18 |
19 | var self = this;
20 | Peep.apply(self, [scene]);
21 | self._CLASS_ = "EvilHatPeep";
22 |
23 | // Add the body & GUN sprites
24 | self.gunMC = self.addMovieClip("gun");
25 | self.gunMC.gotoAndStop(0);
26 | self.bodyMC = self.addMovieClip("hatguy");
27 | self.bodyMC.gotoAndStop(0);
28 |
29 | // Position.
30 | self.loop = false;
31 | self.x = -300;
32 | //self.x = 300; // HAAAACK
33 | self.y = 470;
34 | self.direction = 0;
35 |
36 | // WHO TO KILL
37 | self.victim = null; // plz tell this peep.
38 | self.freezeEveryone = null; // plz tell this peep.
39 | self.bang = null; // plz tell this peep.
40 |
41 | // Goes through the spot...
42 | var doubles = 0;
43 | var MODE = 0;
44 | MODE_WALK = 0;
45 | MODE_GUN = 1;
46 | self.goThroughSpots = true;
47 | self.callbacks.update = function(){
48 |
49 | if(self.x>420 && !self.isMurdering){
50 | self.itsMurderTime();
51 | }
52 |
53 | // Animate on triples.
54 | doubles = (doubles+1)%3;
55 | var gun = self.gunMC;
56 | var frame = gun.currentFrame;
57 | if(doubles==0){
58 | switch(MODE){
59 | case MODE_GUN:
60 | if(frame<17) gun.gotoAndStop(frame+1);
61 | break;
62 | }
63 | }
64 |
65 | // SPEED ONLY WHEN SEEN
66 | if(MODE==MODE_WALK){
67 | self.speed = scene.director.isWatchingTV ? 0 : 1.25;
68 | }
69 |
70 | };
71 |
72 | // WEIRD WALK
73 | self.walkAnim = function(){
74 |
75 | // Hop & flip
76 | self.hop += self.speed/40;
77 | if(self.hop>1) self.hop--;
78 | self.flip = (self.vel.x<0) ? -1 : 1;
79 |
80 | // Hop up & down
81 | var t = self.hop*Math.TAU;
82 | var g = self.graphics;
83 | g.rotation = Math.sin(t)*0.2;
84 | g.pivot.y = Math.abs(Math.sin(t))*7;
85 |
86 | };
87 | // WOBBLE IN PLACE
88 | /*self.standAnim = function(){
89 |
90 | // Hop & flip
91 | self.hop += self.speed/200;
92 | if(self.hop>1) self.hop--;
93 |
94 | // Hop up & down
95 | var t = self.hop*Math.TAU;
96 | var g = self.graphics;
97 | g.rotation = Math.sin(t)*0.035;
98 | g.pivot.y = 0;
99 |
100 | };*/
101 |
102 | // IT'S MURDER TIME
103 | self.isMurdering = false;
104 | self.hasGunOut = false;
105 | self.pauseAnimsWhenNotWatching = true;
106 | self.itsMurderTime = function(){
107 |
108 | // STOP.
109 | self.isMurdering = true;
110 | self.stopWalking();
111 | self.bounce = 1.2;
112 |
113 | // Half Beat.
114 | // Happy Smiles at you.
115 | self.setTimeout(function(){
116 | self.victim.smile();
117 | },_s(0.5));
118 |
119 | // +1.5 beats.
120 | // Pull out gun. Happy frowns.
121 | // AND EVERYONE FREEZES.
122 | self.setTimeout(function(){
123 | self.hasGunOut = true;
124 | Game.sounds.bg_park.stop(); // STAHP.
125 | Game.sounds.gun_cock.play(); // SOUND
126 | MODE = MODE_GUN;
127 | },_s(0.5+1.5));
128 | self.setTimeout(function(){
129 | self.freezeEveryone();
130 | self.victim.frown();
131 | },_s(0.5+1.5+0.5));
132 |
133 | // +4 beats.
134 | // BANG.
135 | self.setTimeout(function(){
136 | Game.sounds.gunshot.play();
137 | self.bang();
138 | },_s(0.5+1.5+4.0));
139 |
140 | }
141 |
142 | }
--------------------------------------------------------------------------------
/js/peeps/HappyWeirdoPeep.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | happy_weirdo: "sprites/peeps/happy_weirdo.json"
3 | });
4 |
5 | /****
6 |
7 | FRAMES:
8 | 00-00: happy still
9 | 01-02: blink to greet murderer
10 | 03-05: shock.
11 |
12 | ****/
13 |
14 | function HappyWeirdoPeep(scene){
15 |
16 | var self = this;
17 | Peep.apply(self, [scene]);
18 | self._CLASS_ = "HappyWeirdoPeep";
19 |
20 | // position
21 | self.x = 115;
22 | self.y = 170;
23 |
24 | // MAD SPRITE
25 | var g = self.graphics;
26 | self.bodyMC = self.addMovieClip("happy_weirdo");
27 | self.bodyMC.anchor.x = 0.35; // not quite
28 |
29 | // MODE o' ANIMATION
30 | var MODE = -1;
31 | MODE_SMILE = 1;
32 | MODE_FROWN = 2;
33 | self.smile = function(){
34 | MODE = MODE_SMILE;
35 | };
36 | self.frown = function(){
37 | MODE = MODE_FROWN;
38 | };
39 | var doubles = 0;
40 |
41 | // WANDERING
42 | self.wander = 0;
43 | self.changeWander = function(){
44 | self.wander = Math.random()*0.1-0.05;
45 | };
46 | self.callbacks.update = function(){
47 |
48 | // Wander around
49 | self.direction += self.wander;
50 | if(Math.random()<0.05) self.changeWander();
51 |
52 | // STAY WITHIN GAME FRAME
53 | self.stayWithinRect({
54 | l:100, r:860, t:100, b:480
55 | },0.15);
56 |
57 | // Animation! on quadtriples.
58 | doubles = (doubles+1)%4;
59 | var body = self.bodyMC;
60 | var frame = body.currentFrame;
61 | if(doubles==0){
62 | switch(MODE){
63 | case MODE_SMILE:
64 | if(frame<2) body.gotoAndStop(frame+1);
65 | break;
66 | case MODE_FROWN:
67 | if(frame<5) body.gotoAndStop(frame+1);
68 | break;
69 | }
70 | }
71 |
72 | };
73 | self.callbacks.startWalking = function(){
74 | self.speed = 2;
75 | };
76 | self.callbacks.startWalking();
77 |
78 | // WEIRD WALK
79 | self.hop = 0;
80 | self._lastHop = 0.99;
81 | self.direction = 1;
82 | self.walkAnim = function(){
83 |
84 | // Hop & flip
85 | self.hop += self.speed/50;
86 | if(self.hop>1) self.hop--;
87 | self.flip = (self.vel.x<0) ? -1 : 1;
88 |
89 | // Hop up & down
90 | var t = self.hop*Math.PI;
91 | g.pivot.y = Math.abs(Math.sin(t))*20;
92 | g.rotation = 0;
93 |
94 | // Squash at the bottom of your cycle
95 | if(self._lastHop>0.9 && self.hop<=0.1) self.bounce=1.2;
96 |
97 | };
98 |
99 | // WOBBLE IN PLACE
100 | self.standAnim = function(){
101 |
102 | // Hop & flip
103 | self.hop += self.speed/150;
104 | if(self.hop>1) self.hop--;
105 | self.flip = (self.vel.x<0) ? -1 : 1;
106 |
107 | // Wobble!
108 | if(MODE!=MODE_FROWN){
109 | var t = self.hop*Math.TAU;
110 | g.rotation = Math.sin(t)*0.1;
111 | g.pivot.y = 0;
112 | }
113 |
114 | };
115 |
116 | // Prepare to get murdered
117 | self.prepareForMurder = function(){
118 |
119 | // Wobble in place
120 | self.stopWalking();
121 | self.x = 540;
122 | self.y = 470;
123 | self.vel.x = -1;
124 | self.vel.y = 0;
125 | self.flip = -1;
126 |
127 | // AVOID SPOT. BAD STUFF GON' HAPPEN.
128 | var spot = {
129 | x: 480,
130 | y: 430,
131 | radius: 150
132 | };
133 | scene.avoidSpots.push(spot);
134 |
135 | };
136 |
137 | // GET MURDERED
138 |
139 | }
--------------------------------------------------------------------------------
/js/peeps/HatPeep.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | hatguy: "sprites/peeps/hatguy.json"
3 | });
4 |
5 | /****
6 |
7 | JUST WADDLE BACK & FORTH
8 |
9 | ****/
10 |
11 | function HatPeep(scene){
12 |
13 | var self = this;
14 | Peep.apply(self, [scene]);
15 | self._CLASS_ = "HatPeep";
16 |
17 | // Add the body & face sprites
18 | self.bodyMC = self.addMovieClip("hatguy");
19 | self.bodyMC.gotoAndStop(0);
20 |
21 | self.callbacks.update = function(){
22 |
23 | // stay within game frame
24 | self.stayWithinRect({
25 | l:100, r:860, t:100, b:480
26 | },0.05);
27 |
28 | };
29 |
30 | // WEIRD WALK
31 | self.walkAnim = function(){
32 |
33 | // Hop & flip
34 | self.hop += self.speed/40;
35 | if(self.hop>1) self.hop--;
36 | self.flip = (self.vel.x<0) ? -1 : 1;
37 |
38 | // Hop up & down
39 | var t = self.hop*Math.TAU;
40 | var g = self.graphics;
41 | g.rotation = Math.sin(t)*0.2;
42 | g.pivot.y = Math.abs(Math.sin(t))*7;
43 |
44 | };
45 |
46 | }
--------------------------------------------------------------------------------
/js/peeps/HelpingAnim.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | helping: "sprites/peeps/helping.json"
3 | });
4 |
5 | /****
6 |
7 | HELPING!!
8 | 000-110: helping
9 | (12: SCREAM!)
10 | (70: helped!)
11 | (and then 1 second pause...)
12 | 111: no-lover frame
13 |
14 | ****/
15 |
16 | function HelpingAnim(scene){
17 |
18 | var self = this;
19 | AnimationProp.apply(self, [scene]);
20 | self._CLASS_ = "HelpingAnim";
21 |
22 | // INIT
23 | self.init(180, 170, "helping");
24 |
25 | // AVOID SPOT
26 | var spot = {
27 | x: self.x,
28 | y: self.y-40,
29 | radius: 170
30 | };
31 | scene.avoidSpots.push(spot);
32 | scene.noYellingYet = true;
33 |
34 | // Helped?
35 | self.hasHelped = false;
36 |
37 | // ANIMATION CODE
38 | var MODE = 0;
39 | MODE_HELPING = 0;
40 | self.triples = 0;
41 | var gracePeriod = _s(Director.ZOOM_OUT_2_TIME*0.8);
42 | var frame2 = 0;
43 | self.updateAnimation = function(){
44 |
45 | // ONLY PAST GRACE...
46 | if(scene.director.isWatchingTV){
47 | gracePeriod = _s(Director.ZOOM_OUT_2_TIME*0.9);
48 | }
49 | if(gracePeriod>0){
50 | gracePeriod--;
51 | return;
52 | }
53 |
54 | // ANIMATE on TRIPLES
55 | // AND ONLY WHEN NOT WATCHING TV.
56 | self.triples = (self.triples+1)%3;
57 | if(self.triples==0 && !scene.director.isWatchingTV){
58 |
59 | var mc = self.mc;
60 | var totalFrames = mc.totalFrames;
61 | var frame = mc.currentFrame;
62 |
63 | switch(MODE){
64 | case MODE_HELPING:
65 | if(frame<110){
66 | frame = frame+1;
67 | mc.gotoAndStop(frame);
68 | if(frame==12) Game.sounds.scream.play();
69 | if(frame==70){
70 | self.hasHelped=true;
71 | Game.sounds.squeak.play();// SQUEAK
72 | }
73 | }else{
74 | frame2++;
75 | if(frame2>20){
76 | mc.gotoAndStop(111);
77 | self.byeLovers();
78 | }
79 | if(frame2>170){
80 | self.byeSelf();
81 | }
82 | }
83 | break;
84 | }
85 |
86 | }
87 |
88 | };
89 |
90 | // REPLACE WITH WEIRDO & LOVERS
91 | self.loversGone = false;
92 | self.byeLovers = function(){
93 |
94 | // ONCE
95 | if(self.loversGone) return;
96 | self.loversGone = true;
97 |
98 | // Put in lovers #2, they just run off screen.
99 | var lover1 = new LoverPeep(self.scene);
100 | lover1.x = 188;
101 | lover1.y = 165;
102 | lover1.setType("circle");
103 | lover1.startWalking();
104 | lover1.hatMC.visible = false;
105 | lover1.faceMC.gotoAndStop(6);
106 | lover1.bounceVel = 0.22;
107 | lover1.loop = false;
108 |
109 | var lover2 = new LoverPeep(self.scene);
110 | lover2.follow(lover1);
111 | lover2.x = 235;
112 | lover2.y = 165;
113 | lover2.setType("square");
114 | lover2.startWalking();
115 | lover2.faceMC.gotoAndStop(6);
116 | lover2.bounceVel = 0.22;
117 | lover2.loop = false;
118 |
119 | self.scene.world.addPeep(lover1);
120 | self.scene.world.addPeep(lover2);
121 |
122 | // Remove spot
123 | scene.avoidSpots.splice(scene.avoidSpots.indexOf(spot),1);
124 | scene.noYellingYet = false;
125 |
126 | };
127 | self.byeSelf = function(){
128 |
129 | // Put in the Happy Weirdo!
130 | var happyWeirdo = new HappyWeirdoPeep(self.scene);
131 | self.scene.world.addPeep(happyWeirdo);
132 |
133 | // KILL!
134 | self.kill();
135 |
136 | };
137 |
138 | }
--------------------------------------------------------------------------------
/js/peeps/LoverPeep.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | lovehat: "sprites/peeps/lovehat.json",
3 | lover_shirt: "sprites/peeps/lover_shirt.json"
4 | });
5 |
6 | /****
7 |
8 | FRAMES for "face":
9 | 08: LUV
10 | 09: Embarrassed looking up
11 | 10: Embarrassed blink
12 | 11: Embarrassed look fwd
13 |
14 | ****/
15 |
16 | function LoverPeep(scene){
17 |
18 | var self = this;
19 | NormalPeep.apply(self, [scene]);
20 | self._CLASS_ = "LoverPeep";
21 |
22 | // Add the body & face sprites
23 | self.hatMC = self.addMovieClip("lovehat");
24 | self.shirtMC = self.addMovieClip("lover_shirt");
25 | self.faceMC.gotoAndStop(8);
26 |
27 | // Set Type: ALSO CHANGE SHIRT
28 | var _oldSetType = self.setType;
29 | self.setType = function(type){
30 | _oldSetType(type);
31 | self.shirtMC.gotoAndStop((type=="circle") ? 0 : 1);
32 | };
33 |
34 | // STARTING POS
35 | self.x = 1000;
36 | self.y = 580;
37 |
38 | // Follow?
39 | self.follows = null;
40 | self.follow = function(follow){
41 | self.follows = follow;
42 | self.x = self.follows.x;
43 | self.y = self.follows.y;
44 | };
45 | self.callbacks.update = function(){
46 | if(self.follows){
47 |
48 | var f = self.follows;
49 | var tx = f.x - Math.cos(f.direction)*20;
50 | var ty = f.y - Math.sin(f.direction)*20;
51 |
52 | // LOOP THEM BOUNDS
53 | var margin = 50;
54 | var dx = tx-self.x;
55 | while(dx>300){
56 | tx -= Game.width+margin*2;
57 | dx = tx-self.x;
58 | }
59 | while(dx<-300){
60 | tx += Game.width+margin*2;
61 | dx = tx-self.x;
62 | }
63 | var dy = ty-self.y;
64 | while(dy>300){
65 | ty -= Game.height+margin*2;
66 | dy = ty-self.y;
67 | }
68 | while(dy<-300){
69 | ty += Game.height+margin*2;
70 | dy = ty-self.y;
71 | }
72 |
73 | var direction = Math.atan2(dy,dx);
74 | self.direction = direction;
75 | }else{
76 |
77 | // stay within game frame
78 | /*self.stayWithinRect({
79 | l:100, r:860, t:100, b:480
80 | },0.05);*/
81 |
82 | }
83 |
84 | if(self.follows && self.isEmbarrassed && self.x>1100){
85 | self.follows.kill();
86 | self.kill();
87 | }
88 |
89 | if(self.follows && self.x<-500){
90 | self.follows.kill();
91 | self.kill();
92 | }
93 |
94 | };
95 | self.callbacks.startWalking = function(){
96 | self.direction = 3.3; // a bit upwards from a full-left
97 | self.speed = 1.3;
98 | };
99 | var _pastWalkAnim = self.walkAnim;
100 | self.walkAnim = function(){
101 | if(self.follows) self.hop+=self.speed/120;
102 | _pastWalkAnim();
103 | };
104 | self.callbacks.startWalking();
105 |
106 | // STAHP. *THEN walk.*
107 | self.stopWalking();
108 | self.setTimeout(function(){
109 | self.startWalking();
110 | },_s(BEAT*4));
111 |
112 | // MAKE EMBARRASSED
113 | self.isEmbarrassed = false;
114 | self.makeEmbarrassed = function(){
115 |
116 | self.clearAnims(); // just in case...
117 |
118 | // 1) Stop & look
119 | var tv = scene.tv;
120 | self.x = tv.x;
121 | self.y = tv.y-5-Math.random(); // tiny offset to avoid glitchy depth-sort
122 | if(self.type=="square"){
123 | self.x += 80;
124 | }else{
125 | self.x += 120;
126 | }
127 | self.stopWalking(true);
128 | self.faceMC.gotoAndStop(9);
129 | self.flip = (tv.x>self.x) ? 1 : -1;
130 | var WAIT = 3.7*BEAT;
131 | self.isWatching = true;
132 |
133 | // 2) Blink...
134 | self.setTimeout(function(){
135 |
136 | self.isWatching = false;
137 | self.faceMC.gotoAndStop(10);
138 | self.bounce = 1.2;
139 |
140 | },_s(WAIT));
141 |
142 | // 3) And go on.
143 | self.setTimeout(function(){
144 |
145 | self.isEmbarrassed = true;
146 | self.faceMC.gotoAndStop(11);
147 |
148 | // GET ON OUT
149 | self.startWalking();
150 | self.loop = false;
151 | self.direction = 0;
152 | self.speed = 3;
153 |
154 | },_s(WAIT+0.06));
155 |
156 | };
157 |
158 | }
--------------------------------------------------------------------------------
/js/peeps/NervousPeep.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 |
3 | face_nervous: "sprites/peeps/face_nervous.json",
4 |
5 | peep_gasp: "sounds/peep_gasp.mp3",
6 | peep_hngh: "sounds/peep_hngh.mp3"
7 |
8 | });
9 |
10 | /****
11 |
12 | FRAMES:
13 | 00-03: nervous at screen
14 | 00-06: look away from screen (frame 06 is resting)
15 | 08-10: look backwards
16 | 12-16: look forward (then loop to 06)
17 | 17-22: shocked
18 | 23-25: run away
19 | 26-29: return to normal (frame 06 is resting)
20 |
21 | ****/
22 |
23 | function NervousPeep(scene){
24 |
25 | var self = this;
26 | Peep.apply(self, [scene]);
27 | self._CLASS_ = "NervousPeep";
28 |
29 | // Add the body & face sprites
30 | self.bodyMC = self.addMovieClip("body");
31 | self.faceMC = self.addMovieClip("face_nervous");
32 | self.faceMC.gotoAndStop(0);
33 |
34 | // Animate on doubles
35 | var MODE = -1;
36 | var MODE_STARE = 0;
37 | var MODE_BLINK = 1;
38 | var MODE_SHOCKED = 2;
39 | var MODE_RUNAWAY = 3;
40 | var MODE_CALMDOWN = 4;
41 |
42 | // HACK
43 | self.HACK_JUMPSTART = function(){
44 | MODE = MODE_BLINK;
45 | };
46 |
47 | var doubles = 0;
48 | self.isShocked = false;
49 | self.callbacks.update = function(){
50 |
51 | // Animate on doubles! ...or... TRIPLES?
52 | doubles = (doubles+1)%3;
53 |
54 | // stay within game frame
55 | self.stayWithinRect({
56 | l:150, r:810, t:150, b:450
57 | },0.05);
58 |
59 | // FRAMES: MANUALLY
60 | var face = self.faceMC;
61 | var frame = face.currentFrame;
62 | if(doubles==0){
63 | switch(MODE){
64 | case MODE_STARE:
65 | if(frame<3) face.gotoAndStop(frame+1);
66 | break;
67 | case MODE_BLINK:
68 | if(frame<6) face.gotoAndStop(frame+1);
69 |
70 | // Look shifty...
71 | if(frame==6){
72 | if(Math.random()<0.05) face.gotoAndStop(frame+1);
73 | }else if(frame<10){
74 | face.gotoAndStop(frame+1);
75 | }else if(frame==10){
76 | if(Math.random()<0.05) face.gotoAndStop(frame+1);
77 | }else if(frame<16){
78 | face.gotoAndStop(frame+1);
79 | }else if(frame==16){
80 | face.gotoAndStop(6);
81 | }
82 |
83 | break;
84 | case MODE_SHOCKED:
85 | if(frame<22) face.gotoAndStop(frame+1);
86 | break;
87 | case MODE_RUNAWAY:
88 | if(frame<25) face.gotoAndStop(frame+1);
89 | break;
90 | case MODE_CALMDOWN:
91 | if(frame<29){
92 | face.gotoAndStop(frame+1);
93 | }else{
94 | face.gotoAndStop(6);
95 | MODE = MODE_BLINK;
96 | self.isShocked = false;
97 | }
98 | break;
99 | }
100 | }
101 |
102 | ///////////////////////////
103 | ///////////////////////////
104 | ///////////////////////////
105 |
106 | // Shocked by a square!
107 | if(!self.isShocked){
108 | var closeTo = self.touchingPeeps(90, function(peep){
109 | return(peep.isWalking && peep.type=="square");
110 | });
111 | if(closeTo.length>0 && self.isWalking){
112 |
113 | // BE SHOCKED
114 | MODE = MODE_SHOCKED;
115 | self.isWalking = false;
116 | face.gotoAndStop(17);
117 | self.isShocked = true;
118 |
119 | // Sound!
120 | Game.sounds.peep_gasp.play();
121 |
122 | // Bounce back
123 | self.flip = (closeTo[0].x>self.x) ? 1 : -1;
124 | self.bounce = 1.5;
125 | self.vel.x = -self.flip*5;
126 |
127 | // They get confused!
128 | closeTo.forEach(function(other){
129 | if(!other.isWalking) return;
130 | other.beConfused(self);
131 | });
132 |
133 | // Run away!
134 | self.setTimeout(function(){
135 |
136 | // Sound!
137 | Game.sounds.peep_hngh.volume(0.6);
138 | Game.sounds.peep_hngh.play();
139 |
140 | // RUN!
141 | MODE = MODE_RUNAWAY;
142 | self.flip *= -1;
143 | self.bounce = 1.5;
144 | self.startWalking();
145 | self.speed = 3.5;
146 | if(self.flip>0){
147 | self.direction = Math.TAU*0/4;
148 | }else{
149 | self.direction = Math.TAU*2/4;
150 | }
151 |
152 | // Calm down...
153 | self.setTimeout(function(){
154 | MODE = MODE_CALMDOWN;
155 | self.callbacks.startWalking();
156 | },_s(3));
157 |
158 |
159 | },_s(1));
160 |
161 | }
162 | }
163 |
164 | };
165 |
166 | // Speed...
167 | self.callbacks.startWalking = function(){
168 | self.speed = 0.8;
169 | };
170 |
171 | // AT FIRST...
172 | self.watchTV = function(){
173 |
174 | self.clearAnims(); // just in case...
175 |
176 | // 0) Stop & look
177 | var tv = scene.tv;
178 | self.stopWalking(true);
179 | self.flip = (tv.x>self.x) ? 1 : -1;
180 | var OFFSET = 0; // (Math.abs(self.x-tv.x)-60)/100;
181 | var WAIT = Director.ZOOM_OUT_1_TIME + Director.SEE_VIEWERS_TIME;
182 |
183 | // 1) Become nervous
184 | self.setTimeout(function(){
185 | self.bounce = 1.6;
186 | MODE = MODE_STARE;
187 |
188 | // SQUEAK
189 | Game.sounds.squeak.play();
190 |
191 | },_s(OFFSET+BEAT*2));
192 |
193 | // 2) Blink...
194 | self.setTimeout(function(){
195 | self.bounce = 1.3;
196 | MODE = MODE_BLINK;
197 | },_s(OFFSET+WAIT));
198 |
199 | // 3) And go on.
200 | self.setTimeout(function(){
201 | // self.bounce = 1.2;
202 | self.startWalking();
203 | },_s(OFFSET+WAIT+1));
204 |
205 | };
206 |
207 | // IS SCARED?
208 | self.isScared = function(){
209 | return self.isShocked;
210 | };
211 |
212 | }
--------------------------------------------------------------------------------
/js/peeps/PanicPeep.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | lover_panic: "sprites/peeps/lover_panic.json"
3 | });
4 |
5 | /****
6 |
7 | I guess they're just NormalPeeps with screaming face & running REAL fast
8 |
9 | ****/
10 |
11 | function PanicPeep(scene){
12 |
13 | var self = this;
14 | NormalPeep.apply(self, [scene]);
15 | self._CLASS_ = "PanicPeep";
16 |
17 | // Add the body & face sprites
18 | self.faceMC.gotoAndStop(12);
19 |
20 | self.callbacks.startWalking = function(){
21 | self.speed = 3+Math.random()*2;
22 | };
23 | self.startWalking();
24 |
25 | // Is Lover?
26 | self.setLover = function(type){
27 |
28 | if(type=="circle"){
29 | self.x = 635;
30 | self.y = 200;
31 | self.direction = Math.TAU*-0.12;
32 | }else{
33 | self.x = 665;
34 | self.y = 200;
35 | self.direction = Math.TAU*-0.10;
36 | }
37 |
38 | self.loverMC = self.addMovieClip("lover_panic");
39 | self.loverMC.gotoAndStop( (type=="circle") ? 0 : 1 );
40 | self.loop = false;
41 | self.isLover = true;
42 |
43 | };
44 | self.callbacks.update = function(){
45 | if(self.isLover){
46 | if(self.y<-500){
47 | self.kill();
48 | }
49 | }
50 | };
51 |
52 | // Can be overridden
53 | self.walkAnim = function(){
54 |
55 | var g = self.graphics;
56 |
57 | // Hop & Flip
58 | self.hop += self.speed/60;
59 | if(self.hop>1) self.hop--;
60 | self.flip = (self.vel.x<0) ? -1 : 1;
61 |
62 | // Sway back & forth
63 | var t = self.hop*Math.PI*2;
64 | g.rotation = Math.sin(t)*0.3;
65 | g.pivot.y = Math.abs(Math.sin(t))*15;
66 |
67 | // Squash at the bottom of your cycle
68 | if(self._lastHop<0.5 && self.hop>=0.5) self.bounce = 1.2;
69 | if(self._lastHop>0.9 && self.hop<=0.1) self.bounce = 1.2;
70 |
71 | };
72 |
73 | // GET KILLED BY
74 | self.getKilledBy = function(killer){
75 |
76 | var CORPSE_FRAME, CORPSE_VELOCITY, GORE_AMOUNT;
77 | switch(killer.weaponType){
78 | case "gun":
79 | CORPSE_FRAME = 0;
80 | CORPSE_VELOCITY = 2;
81 | GORE_AMOUNT = 5;
82 | break;
83 | case "bat":
84 | CORPSE_FRAME = 1;
85 | CORPSE_VELOCITY = 5;
86 | GORE_AMOUNT = 15;
87 | break;
88 | case "shotgun":
89 | CORPSE_FRAME = 2;
90 | CORPSE_VELOCITY = 10;
91 | GORE_AMOUNT = 30;
92 | break;
93 | case "axe":
94 | CORPSE_FRAME = 3;
95 | CORPSE_VELOCITY = 5;
96 | GORE_AMOUNT = 15;
97 | break;
98 | }
99 |
100 | // SCREEN SHAKE
101 | scene.shaker.shake(30);
102 |
103 | // MY CORPSE
104 | var flip = (killer.x0){
153 | p.CAUGHT_A_CRICKET = true;
154 | if(caught.crickets.length==1){
155 | d.chyron = textStrings["cricky"];
156 | }else{
157 | d.chyron = textStrings["tooManyCrickets"];
158 | }
159 | }else if(caught.peeps.length>0){
160 | if(caught.peeps.length==1){
161 | d.chyron = textStrings["normalPeep"];
162 | }else{
163 | d.chyron = textStrings["normalPeeps"];
164 | }
165 | }else{
166 | p.ITS_NOTHING = true;
167 | d.chyron = textStrings["wowNothing"];
168 | }
169 | }
170 | return true;
171 | }
172 |
173 | ///////////////////////////////////////
174 | ///////////////////////////////////////
175 | ///// DECLARATIVE CUTTING MODULES /////
176 | ///////////////////////////////////////
177 | ///////////////////////////////////////
178 |
179 | function _cutLovers(d){
180 | var p = d.photoData;
181 | if(p.caughtLovers){
182 | // Crickets
183 | d.audience_cutToTV();
184 | // MAKE LOVERS EMBARRASSED
185 | d.scene.world.peeps.filter(function(peep){
186 | return peep._CLASS_=="LoverPeep";
187 | }).forEach(function(lover){
188 | lover.makeEmbarrassed();
189 | });
190 | return true;
191 | }else{
192 | return false;
193 | }
194 | }
195 | function _cutHats(d){
196 | var p = d.photoData;
197 | if(p.caughtHat){
198 | // Only get the hat-wearers, make 'em take off the hat.
199 | d.audience_cutToTV(
200 | function(peep){ peep.takeOffHat(); },
201 | function(peep){ return peep.wearingHat; }
202 | );
203 | return true;
204 | }else{
205 | // And if not, have them decrease by 1 each time anyway.
206 | var hatPeeps = d.scene.world.peeps.slice(0).filter(function(peep){
207 | return peep.wearingHat;
208 | });
209 | if(hatPeeps.length>0){
210 | var randomIndex = Math.floor(Math.random()*hatPeeps.length);
211 | hatPeeps[randomIndex].takeOffHat(true);
212 | }
213 | return false;
214 | }
215 | }
216 | function _cutPeeps(d){
217 | d.audience_cutToTV();
218 | return true;
219 | }
220 |
--------------------------------------------------------------------------------
/js/scenes/Scene_Credits.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 |
3 | credits0001: "sprites/credits/credits0001.png", // nicky case
4 | credits0002: "sprites/credits/credits0002.png", // playtesters
5 | credits0003: "sprites/credits/credits0003.png", // patreon
6 | credits0004: "sprites/credits/credits0004.png", // patreon
7 | credits0005: "sprites/credits/credits0005.png", // patreon
8 | credits0006: "sprites/credits/credits0006.png", // patreon
9 | credits0007: "sprites/credits/credits0007.png", // and thank...
10 | credits0008: "sprites/credits/credits0008.png", // ...YOU!
11 |
12 | });
13 |
14 | function Scene_Credits(){
15 |
16 | var self = this;
17 | Scene.call(self);
18 |
19 | // Layers, yo.
20 | var cont = new PIXI.Container();
21 | Game.stage.addChild(cont);
22 | var c = {};
23 | for(var i=1; i<=8; i++){
24 | c[i] = new PIXI.Container();
25 | c[i].addChild(MakeSprite("credits000"+i));
26 | c[i].alpha = 0;
27 | cont.addChild(c[i]);
28 | }
29 |
30 | // add text
31 | var createdByText = new PIXI.Text(textStrings["createdBy"] + "\n", {font: "46px Cairo", fill:"#FFFFFF", align: "left"});
32 | createdByText.anchor.x = 0.0;
33 | createdByText.anchor.y = 0.5;
34 | createdByText.x = Game.width / 2 - 240;
35 | createdByText.y = Game.height / 2 - 41;
36 | c[1].addChild(createdByText);
37 |
38 | var authorText = new PIXI.Text(textStrings["NickyCase"], {font: "86px Cairo", fill:"#FFFFFF", align: "left"});
39 | authorText.anchor.x = 0.0;
40 | authorText.anchor.y = 0.5;
41 | authorText.x = Game.width / 2 - 240;
42 | authorText.y = Game.height / 2 + 29;
43 | c[1].addChild(authorText);
44 |
45 | var playtestersText = new PIXI.Text(textStrings["manyThanks"] + "\n", {font: "44px Cairo", fill:"#FFFFFF", align: "right"});
46 | playtestersText.anchor.x = 1.0;
47 | playtestersText.anchor.y = 0.5;
48 | playtestersText.x = Game.width / 2 + 262;
49 | playtestersText.y = Game.height / 2 - 140;
50 | c[2].addChild(playtestersText);
51 |
52 | // @TODO: Yes, I feel physical pain hacking this in the way I did in the following lines,
53 | // but I don't know PIXI enough to do this properly... /sl
54 | // Alex: Nicky, hold my beer. I can top this hack.
55 |
56 | var supportersText1 = new PIXI.Text(textStrings["patreonSupporters"] + "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nasdfasdfasdfsadfasdfasdfasdfasdf", {font: "40px Cairo", fill:"#FFFFFF", align: "left"});
57 | supportersText1.anchor.x = 0.0;
58 | supportersText1.x = 145;
59 | supportersText1.y = 80;
60 | c[3].addChild(supportersText1);
61 |
62 | var supportersText2 = new PIXI.Text(textStrings["patreonSupporters"] + "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nasdfasdfasdfsadfasdfasdfasdfasdf", {font: "40px Cairo", fill:"#FFFFFF", align: "left"});
63 | supportersText2.anchor.x = 0.0;
64 | supportersText2.x = 145;
65 | supportersText2.y = 80;
66 | c[4].addChild(supportersText2);
67 |
68 | var supportersText3 = new PIXI.Text(textStrings["patreonSupporters"] + "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nasdfasdfasdfsadfasdfasdfasdfasdf", {font: "40px Cairo", fill:"#FFFFFF", align: "left"});
69 | supportersText3.anchor.x = 0.0;
70 | supportersText3.x = 145;
71 | supportersText3.y = 80;
72 | c[5].addChild(supportersText3);
73 |
74 | var supportersText4 = new PIXI.Text(textStrings["patreonSupporters"] + "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nasdfasdfasdfsadfasdfasdfasdfasdf", {font: "40px Cairo", fill:"#FFFFFF", align: "left"});
75 | supportersText4.anchor.x = 0.0;
76 | supportersText4.x = 145;
77 | supportersText4.y = 80;
78 | c[6].addChild(supportersText4);
79 |
80 | // thankYouText comes before finallyText so finallyText can be aligned based on thankYouText. /sl
81 | var thankYouText = new PIXI.Text(textStrings["thankYouForPlaying"] + "\n ", {font: "55px Cairo", fill:"#FFFFFF", align: "center"});
82 | thankYouText.anchor.x = 0.5;
83 | thankYouText.anchor.y = 0.5;
84 | thankYouText.x = Game.width / 2 + 10;
85 | thankYouText.y = Game.height / 2 + 25;
86 | c[8].addChild(thankYouText);
87 |
88 | var finallyText = new PIXI.Text(textStrings["lastButNotLeast"] + "\n", {font: "37px Cairo", fill:"#FFFFFF", align: "left"});
89 | finallyText.anchor.x = 0.0;
90 | finallyText.anchor.y = 0.5;
91 | finallyText.x = thankYouText.getBounds().x + thankYouText.width - finallyText.width;
92 | finallyText.y = Game.height / 2 - 45;
93 | c[7].addChild(finallyText);
94 |
95 | // TWEEN ANIM
96 | Tween_get(c[1]).wait(_s(BEAT*4)) // 0. Wait 4 beats before credits...
97 | .to({alpha:1}, _s(BEAT), Ease.quadInOut) // 1. CREATED BY!
98 | .wait(_s(BEAT*3))
99 | .to({alpha:0}, _s(BEAT), Ease.quadInOut)
100 | .call(function(){
101 |
102 | // 2. PLAYTESTERS
103 | Tween_get(c[2])
104 | .to({alpha:1}, _s(BEAT), Ease.quadInOut)
105 | .wait(_s(BEAT*3))
106 | .to({alpha:0}, _s(BEAT), Ease.quadInOut)
107 | .call(function(){
108 |
109 | // 3. PATREONS: CUT BETWEEN THEM THEN FADE OUT
110 | Tween_get(c[3])
111 | .to({alpha:1}, _s(BEAT), Ease.quadInOut)
112 | .wait(_s(BEAT*2))
113 | .call(function(){
114 |
115 | // CUT!
116 | c[3].alpha = 0;
117 | c[4].alpha = 1;
118 |
119 | Tween_get(c[4])
120 | .wait(_s(BEAT*2))
121 | .call(function(){
122 |
123 | // CUT!
124 | c[4].alpha = 0;
125 | c[5].alpha = 1;
126 |
127 | Tween_get(c[5])
128 | .wait(_s(BEAT*2))
129 | .call(function(){
130 |
131 | // CUT!
132 | c[5].alpha = 0;
133 | c[6].alpha = 1;
134 |
135 | Tween_get(c[6])
136 | .wait(_s(BEAT*2))
137 | .to({alpha:0}, _s(BEAT), Ease.quadInOut) // fade...
138 | .call(function(){
139 |
140 | // 4. And finally... thank YOU!
141 | Tween_get(c[7])
142 | .to({alpha:1}, _s(BEAT), Ease.quadInOut)
143 | .wait(_s(BEAT))
144 | .call(function(){
145 | Tween_get(c[8])
146 | .to({alpha:1}, _s(BEAT), Ease.quadInOut)
147 | .wait(_s(BEAT*3))
148 | .call(function(){
149 |
150 | // 5. Fade everything out, and NIGHTTIME SOUNDS
151 | Tween_get(cont)
152 | .wait(_s(BEAT))
153 | .to({alpha:0}, _s(BEAT), Ease.quadInOut)
154 | .call(function(){
155 | Game.sceneManager.gotoScene("Post_Credits");
156 | });
157 |
158 | // Background Ambience
159 | var ambience = Game.sounds.bg_nighttime;
160 | ambience.loop(true);
161 | ambience.volume(0);
162 | ambience.play();
163 | ambience.fade(0, 1, 2000);
164 |
165 | });
166 | });
167 |
168 | });
169 | });
170 | });
171 | });
172 |
173 | });
174 |
175 | });
176 |
177 | }
178 |
--------------------------------------------------------------------------------
/js/scenes/Scene_EndPrototype.js:
--------------------------------------------------------------------------------
1 | /*Game.addToManifest({
2 | end_prototype: "sprites/quote/end_prototype.png",
3 | gunshot: "sounds/gunshot.mp3"
4 | });
5 |
6 | function Scene_EndPrototype(){
7 |
8 | var self = this;
9 | Scene.call(self);
10 |
11 | // Layers, yo.
12 | var q1 = MakeSprite("blackout");
13 | var q2 = MakeSprite("end_prototype");
14 |
15 | // BANG
16 | Game.sounds.gunshot.play();
17 |
18 | // Add 'em in.
19 | q2.alpha = 0;
20 | Game.stage.addChild(q1);
21 | Game.stage.addChild(q2);
22 |
23 | // TWEEN ANIM
24 | Tween_get(q2)
25 | .wait(_s(BEAT*3.5))
26 | .to({alpha:1}, _s(BEAT), Ease.quadInOut);
27 |
28 | }*/
--------------------------------------------------------------------------------
/js/scenes/Scene_Game.js:
--------------------------------------------------------------------------------
1 | /************************************
2 |
3 | THE GAME SCENE. THE BIG 'UN.
4 |
5 | ACT I - Teaching controls, showing main feedback loop
6 | ACT II - Crazed Square, Nervous Circle, Snobby Square...
7 | ACT III - Angry escalation! And lovers protest!
8 | ACT IV - MURDER AND VIOLENCE AND AHHHHHH. #BeScaredBeAngry
9 |
10 | (different scene...)
11 | ACT V - Post-credits peace
12 |
13 | *************************************/
14 |
15 | function Scene_Game(){
16 |
17 | var self = this;
18 | Scene.call(self);
19 |
20 | ////////////
21 | // SET UP //
22 | ////////////
23 |
24 | // Graphics!
25 | var g = new PIXI.Container();
26 | self.graphics = g;
27 | Game.stage.addChild(g);
28 |
29 | // Set Up Everything
30 | self.world = new World(self);
31 | self.camera = new Camera(self);
32 | self.director = new Director(self);
33 | self.tv = new TV(self);
34 | self.world.addProp(self.tv);
35 |
36 | // Special effects!
37 | self.scale = 1;
38 | self.x = self.y = self.offX = self.offY = 0;
39 | self.shaker = new ScreenShake(self);
40 | self.zoomer = new ScreenZoomOut(self);
41 |
42 | // Avoid these spots.
43 | self.avoidSpots = [];
44 |
45 | // UPDATE
46 | self.update = function(){
47 |
48 | self.world.update();
49 | self.camera.update();
50 | self.director.update();
51 |
52 | // This order is important
53 | self.zoomer.update();
54 | self.shaker.update();
55 | g.scale.x = g.scale.y = self.scale;
56 | g.x = self.x + self.offX;
57 | g.y = self.y + self.offY;
58 | self.zoomer.fixLaptop(); // hack.
59 |
60 | // TOTALLY A HACK
61 | var ratio = self.zoomer.timer/self.zoomer.fullTimer;
62 | ratio = (1-ratio)/1;
63 | self.shaker.baseAlpha = 0.15 + ratio*0.45;
64 |
65 | };
66 |
67 | // TO IMPLEMENT
68 | self.kill = function(){};
69 |
70 | // Going to a Stage
71 | self.go = function(sceneFunc){
72 | sceneFunc(self);
73 | self.update();
74 | };
75 |
76 | /////////////
77 | // FADE IN //
78 | /////////////
79 |
80 | var blackout = MakeSprite("blackout");
81 | Game.stage.addChild(blackout);
82 | Tween_get(blackout).to({alpha:0}, _s(BEAT), Ease.quadInOut).call(function(){
83 | Game.stage.removeChild(blackout);
84 | });
85 |
86 | ////////////
87 | // STAGES //
88 | ////////////
89 |
90 | Stage_Start(self);
91 | Stage_Hat(self);
92 | //Stage_Lovers(self);
93 | //Stage_Screamer(self, true);
94 | //Stage_Nervous(self, true);
95 | //Stage_Snobby(self, true);
96 | //Stage_Angry_Escalation(self, true);
97 | //Stage_Evil(self, true);
98 |
99 | }
--------------------------------------------------------------------------------
/js/scenes/Scene_Meta.js:
--------------------------------------------------------------------------------
1 | /**********************
2 |
3 | A SCENE PURELY FOR PROMOTIONAL REASONS
4 |
5 | **********************/
6 |
7 | function Scene_Meta(){
8 |
9 | var self = this;
10 | Scene.call(self);
11 |
12 | self.UNPAUSEABLE = true; // HACK.
13 |
14 | ////////////
15 | // SET UP //
16 | ////////////
17 |
18 | // Graphics!
19 | var g = new PIXI.Container();
20 | self.graphics = g;
21 | Game.stage.addChild(g);
22 |
23 | // Set Up Everything
24 | self.world = new World(self);
25 | self.tv = new TV(self);
26 | self.tv.y += 32;
27 | self.world.addProp(self.tv);
28 |
29 | // RECURSIVE SCREEN
30 | var renderTexturePoolIndex = 0;
31 | var renderTexturePool = [
32 | new PIXI.RenderTexture(Game.renderer, Game.width, Game.height),
33 | new PIXI.RenderTexture(Game.renderer, Game.width, Game.height)
34 | ];
35 | self.stream = new PIXI.Sprite();
36 | self.stream.x = Game.width/2;
37 | self.stream.y = Game.height/2;
38 | self.stream.scale.x = self.stream.scale.y = 0.125;
39 | self.stream.anchor.x = self.stream.anchor.y = 0.5;
40 | g.addChild(self.stream);
41 |
42 | // CHYRON
43 |
44 | // Chryon container
45 | /*
46 | var chyron = new PIXI.Container();
47 | chyron.alpha = 1;
48 | g.addChild(chyron);
49 |
50 | // Chyron BG
51 | var resourceName = "chyron";
52 | var bg = new MakeSprite(resourceName);
53 | bg.scale.x = bg.scale.y = 1/2;
54 | chyron.addChild(bg);
55 |
56 | // Chyron Text
57 | var text = "WE BECOME WHAT WE BEHOLD";
58 | var fontsize=100, max=14;
59 | if(text.length>max){ // more than [max] chars...
60 | fontsize = Math.floor(max*fontsize/text.length);
61 | }
62 | var text = new PIXI.Text(text, {font:"bold "+fontsize+"px Poppins", fill:"#FFF"});
63 | text.scale.x = text.scale.y = 0.2;
64 | text.anchor.x = 0;
65 | text.anchor.y = 0.5;
66 | text.x = 45;
67 | text.y = 115;
68 | chyron.addChild(text);*/
69 |
70 | self.scale = 1;
71 |
72 | // UPDATE
73 | self.update = function(){
74 |
75 | self.world.update();
76 |
77 | // RECURSIVE SCREEN
78 |
79 | var matrix = new PIXI.Matrix();
80 | matrix.translate(-self.graphics.x, -self.graphics.y);
81 | matrix.scale(1/self.graphics.scale.x, 1/self.graphics.scale.y);
82 | //matrix.translate(-sx,-sy);
83 |
84 | var renderTexture = renderTexturePool[renderTexturePoolIndex];
85 | renderTexture.render(self.graphics, matrix);
86 | renderTexturePoolIndex = (renderTexturePoolIndex+1)%renderTexturePool.length;
87 | self.stream.texture = renderTexture;
88 |
89 | // ZOOM OUT
90 | self.scale *= 0.993;
91 | if(self.scale<1){
92 | self.scale=8;
93 | }
94 | g.scale.x = g.scale.y = self.scale;
95 | g.x = (Game.width-(Game.width*self.scale))/2;
96 | g.y = (Game.height-(Game.height*self.scale))/2;
97 |
98 | };
99 |
100 | // TO IMPLEMENT
101 | self.kill = function(){};
102 |
103 | self.world.clearPeeps();
104 | self.world.addBalancedPeeps(30);
105 | var peeps = self.world.peeps;
106 | for(var i=0;i<10;i++){
107 | var randomPeep = peeps[Math.floor(Math.random()*peeps.length)];
108 | randomPeep.wearingHat = true;
109 | randomPeep.hatMC.gotoAndStop(15);
110 | }
111 |
112 | }
--------------------------------------------------------------------------------
/js/scenes/Scene_Post_Credits.js:
--------------------------------------------------------------------------------
1 | Game.addToManifest({
2 | bg_shade: "sprites/bg_shade.png",
3 | bg_nighttime: "sounds/bg_nighttime.mp3"
4 | });
5 |
6 | /************************************
7 |
8 | THE GAME SCENE. THE BIG 'UN.
9 |
10 | ACT I - Teaching controls, showing main feedback loop
11 | ACT II - Crazy, Nervous, Snobby, Angry escalation...
12 | ACT III - Protest! (what gameplay here???)
13 | ACT IV - MURDER AND VIOLENCE AND AHHHHHH. #BeScaredBeAngry
14 |
15 | (different scene...)
16 | ACT V - Post-credits peace
17 |
18 | *************************************/
19 |
20 | function Scene_Post_Credits(){
21 |
22 | var self = this;
23 | Scene.call(self);
24 |
25 | // HACK: Background Ambience
26 | /*var ambience = Game.sounds.bg_nighttime;
27 | ambience.loop(true);
28 | ambience.play();*/
29 |
30 | ////////////
31 | // SET UP //
32 | ////////////
33 |
34 | // Graphics!
35 | var g = new PIXI.Container();
36 | self.graphics = g;
37 | Game.stage.addChild(g);
38 |
39 | // Set Up Everything
40 | self.world = new World(self,{
41 | bg: "bg_dark"
42 | });
43 | self.world.layers.bg.addChild(MakeSprite("bg_shade"));
44 | self.camera = new Camera(self,{
45 | noIntro: true,
46 | streaming: true,
47 | onTakePhoto: function(){
48 | //if(self.camera.isOverTV()){
49 | Game.sounds.bg_nighttime.stop();
50 | Game.sceneManager.gotoScene("Post_Post_Credits");
51 | //}
52 | }
53 | });
54 | self.camera.x = Game.width;
55 | self.camera.y = Game.height;
56 |
57 | // Put a SPRITE RIGHT IN THE BG
58 | self.stream = new PIXI.Sprite();
59 | self.stream.width = Game.width/8;
60 | self.stream.height = Game.height/8;
61 | self.stream.x = Game.width/2 - self.stream.width/2 - 2; // hack
62 | self.stream.y = Game.height/2 - self.stream.height/2 + 2; // hack
63 | self.world.layers.bg.addChild(self.stream);
64 |
65 | // UPDATE
66 | self.update = function(){
67 |
68 | self.world.update();
69 | self.camera.update();
70 |
71 | // THE STREAM
72 | self.stream.texture = self.camera.getTexture();
73 |
74 | };
75 |
76 | //////////////////////
77 | // EVEN MORE SET UP //
78 | //////////////////////
79 |
80 | // Candlelights
81 | var candlePositions =[
82 | [468.6,276.6],
83 | [535.7,281.6],
84 | [679.7,279.1],
85 | [612,281.6],
86 | [490.1,314.1],
87 | [421.8,309],
88 | [363.1,301.1],
89 | [786.9,304.4],
90 | [726.1,310.5],
91 | [656.9,309.5],
92 | [869.8,350.3],
93 | [820,373.5],
94 | [768.2,382.8],
95 | [698.4,389],
96 | [464.6,386.1],
97 | [396.3,382.3],
98 | [339.6,370.1],
99 | [294.3,350.3]
100 | ];
101 | for(var i=0;imax){ // more than [max] chars...
36 | fontsize = Math.floor(max*fontsize/quoteString.length);
37 | }
38 |
39 | var q2QuoteText = new PIXI.Text(textStrings["WSOTATOTSU"] + "\n", {font:fontsize+"px Cairo", fill:"#FFFFFF", align:"center"});
40 | q2QuoteText.anchor.x = 0.5;
41 | q2QuoteText.anchor.y = 0.5;
42 | q2QuoteText.x = Game.width / 2 + 6;
43 | q2QuoteText.y = Game.height / 2 + 20;
44 | q2.addChild(q2QuoteText);
45 |
46 | var q3Sprite = MakeSprite("quote0003");
47 | q3.addChild(q3Sprite);
48 |
49 | var q3Name = new PIXI.Text(textStrings["MarshallMcLuhan"], {font:"33px Cairo", fill:"#FFFFFF", align:"center"});
50 | q3Name.anchor.x = 0.5;
51 | q3Name.anchor.y = 0.5;
52 | q3Name.x = Game.width / 2 + 4;
53 | q3Name.y = Game.height / 2 + 76;
54 | q3.addChild(q3Name);
55 |
56 | var q4Sprite = MakeSprite("quote0004");
57 | q4.addChild(q4Sprite);
58 |
59 | var q4Text = new PIXI.Text(textStrings["misatrributed"] + "\n", {font:"33px Cairo", fill:"#FFFFFF", align:"center"});
60 | q4Text.anchor.x = 0.5;
61 | q4Text.anchor.y = 0.5;
62 | q4Text.x = Game.width / 2 + 4;
63 | q4Text.y = Game.height / 2 + 135;
64 | q4.addChild(q4Text);
65 |
66 | // Add 'em in.
67 | q2.alpha = q3.alpha = q4.alpha = 0;
68 | Game.stage.addChild(q1);
69 | var text = new PIXI.Container();
70 | Game.stage.addChild(text);
71 | text.addChild(q2);
72 | text.addChild(q3);
73 | text.addChild(q4);
74 |
75 | // TWEEN ANIM
76 | Tween_get(q2)
77 | .wait(_s(BEAT*1.5))
78 | .to({alpha:1}, _s(BEAT), Ease.quadInOut).call(function(){
79 | Tween_get(q3)
80 | .wait(_s(4.0*BEAT))
81 | .to({alpha:1}, _s(BEAT), Ease.quadInOut).call(function(){
82 | Tween_get(q4)
83 | .wait(_s(BEAT))
84 | .to({alpha:1}, _s(BEAT), Ease.quadInOut)
85 | .call(function(){
86 |
87 | // Background Ambience
88 | var ambience = Game.sounds.bg_park;
89 | ambience.loop(true);
90 | ambience.volume(0);
91 | ambience.play();
92 | ambience.fade(0, 1, 2000);
93 |
94 | })
95 | .wait(_s(BEAT*1.5))
96 | .call(function(){
97 |
98 | Tween_get(text).to({alpha:0}, _s(BEAT), Ease.quadInOut).call(function(){
99 | Game.sceneManager.gotoScene("Game");
100 | });
101 |
102 | });
103 | });
104 | });
105 |
106 | }
107 |
--------------------------------------------------------------------------------
/sounds/bg_creepy.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_creepy.m4a
--------------------------------------------------------------------------------
/sounds/bg_creepy.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_creepy.mp3
--------------------------------------------------------------------------------
/sounds/bg_creepy.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_creepy.opus
--------------------------------------------------------------------------------
/sounds/bg_nighttime.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_nighttime.m4a
--------------------------------------------------------------------------------
/sounds/bg_nighttime.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_nighttime.mp3
--------------------------------------------------------------------------------
/sounds/bg_nighttime.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_nighttime.opus
--------------------------------------------------------------------------------
/sounds/bg_panic.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_panic.m4a
--------------------------------------------------------------------------------
/sounds/bg_panic.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_panic.mp3
--------------------------------------------------------------------------------
/sounds/bg_panic.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_panic.opus
--------------------------------------------------------------------------------
/sounds/bg_park.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_park.m4a
--------------------------------------------------------------------------------
/sounds/bg_park.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_park.mp3
--------------------------------------------------------------------------------
/sounds/bg_park.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/bg_park.opus
--------------------------------------------------------------------------------
/sounds/breaking_news.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/breaking_news.m4a
--------------------------------------------------------------------------------
/sounds/breaking_news.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/breaking_news.mp3
--------------------------------------------------------------------------------
/sounds/breaking_news.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/breaking_news.opus
--------------------------------------------------------------------------------
/sounds/cam_snap.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/cam_snap.m4a
--------------------------------------------------------------------------------
/sounds/cam_snap.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/cam_snap.mp3
--------------------------------------------------------------------------------
/sounds/cam_snap.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/cam_snap.opus
--------------------------------------------------------------------------------
/sounds/crickets.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/crickets.m4a
--------------------------------------------------------------------------------
/sounds/crickets.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/crickets.mp3
--------------------------------------------------------------------------------
/sounds/crickets.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/crickets.opus
--------------------------------------------------------------------------------
/sounds/gun_cock.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/gun_cock.m4a
--------------------------------------------------------------------------------
/sounds/gun_cock.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/gun_cock.mp3
--------------------------------------------------------------------------------
/sounds/gun_cock.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/gun_cock.opus
--------------------------------------------------------------------------------
/sounds/gunshot.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/gunshot.m4a
--------------------------------------------------------------------------------
/sounds/gunshot.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/gunshot.mp3
--------------------------------------------------------------------------------
/sounds/gunshot.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/gunshot.opus
--------------------------------------------------------------------------------
/sounds/impact.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/impact.m4a
--------------------------------------------------------------------------------
/sounds/impact.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/impact.mp3
--------------------------------------------------------------------------------
/sounds/impact.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/impact.opus
--------------------------------------------------------------------------------
/sounds/peep_gasp.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_gasp.m4a
--------------------------------------------------------------------------------
/sounds/peep_gasp.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_gasp.mp3
--------------------------------------------------------------------------------
/sounds/peep_gasp.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_gasp.opus
--------------------------------------------------------------------------------
/sounds/peep_hmph.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_hmph.m4a
--------------------------------------------------------------------------------
/sounds/peep_hmph.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_hmph.mp3
--------------------------------------------------------------------------------
/sounds/peep_hmph.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_hmph.opus
--------------------------------------------------------------------------------
/sounds/peep_hngh.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_hngh.m4a
--------------------------------------------------------------------------------
/sounds/peep_hngh.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_hngh.mp3
--------------------------------------------------------------------------------
/sounds/peep_hngh.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_hngh.opus
--------------------------------------------------------------------------------
/sounds/peep_huh.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_huh.m4a
--------------------------------------------------------------------------------
/sounds/peep_huh.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_huh.mp3
--------------------------------------------------------------------------------
/sounds/peep_huh.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/peep_huh.opus
--------------------------------------------------------------------------------
/sounds/scream.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/scream.m4a
--------------------------------------------------------------------------------
/sounds/scream.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/scream.mp3
--------------------------------------------------------------------------------
/sounds/scream.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/scream.opus
--------------------------------------------------------------------------------
/sounds/shotgun.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/shotgun.m4a
--------------------------------------------------------------------------------
/sounds/shotgun.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/shotgun.mp3
--------------------------------------------------------------------------------
/sounds/shotgun.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/shotgun.opus
--------------------------------------------------------------------------------
/sounds/shout.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/shout.m4a
--------------------------------------------------------------------------------
/sounds/shout.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/shout.mp3
--------------------------------------------------------------------------------
/sounds/shout.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/shout.opus
--------------------------------------------------------------------------------
/sounds/squeak.m4a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/squeak.m4a
--------------------------------------------------------------------------------
/sounds/squeak.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/squeak.mp3
--------------------------------------------------------------------------------
/sounds/squeak.opus:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sounds/squeak.opus
--------------------------------------------------------------------------------
/sprites/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/Thumbs.db
--------------------------------------------------------------------------------
/sprites/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/bg.png
--------------------------------------------------------------------------------
/sprites/bg_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/bg_dark.png
--------------------------------------------------------------------------------
/sprites/bg_preload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/bg_preload.png
--------------------------------------------------------------------------------
/sprites/bg_preload_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/bg_preload_2.png
--------------------------------------------------------------------------------
/sprites/bg_shade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/bg_shade.png
--------------------------------------------------------------------------------
/sprites/cam/cam-flash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/cam/cam-flash.png
--------------------------------------------------------------------------------
/sprites/cam/cam-instructions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/cam/cam-instructions.png
--------------------------------------------------------------------------------
/sprites/cam/cam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/cam/cam.png
--------------------------------------------------------------------------------
/sprites/chyron.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/chyron.png
--------------------------------------------------------------------------------
/sprites/chyron2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/chyron2.png
--------------------------------------------------------------------------------
/sprites/chyron3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/chyron3.png
--------------------------------------------------------------------------------
/sprites/credits/credits0001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/credits/credits0001.png
--------------------------------------------------------------------------------
/sprites/credits/credits0002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/credits/credits0002.png
--------------------------------------------------------------------------------
/sprites/credits/credits0003.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/credits/credits0003.png
--------------------------------------------------------------------------------
/sprites/credits/credits0004.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/credits/credits0004.png
--------------------------------------------------------------------------------
/sprites/credits/credits0005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/credits/credits0005.png
--------------------------------------------------------------------------------
/sprites/credits/credits0006.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/credits/credits0006.png
--------------------------------------------------------------------------------
/sprites/credits/credits0007.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/credits/credits0007.png
--------------------------------------------------------------------------------
/sprites/credits/credits0008.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/credits/credits0008.png
--------------------------------------------------------------------------------
/sprites/laptop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/laptop.png
--------------------------------------------------------------------------------
/sprites/misc/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/misc/Thumbs.db
--------------------------------------------------------------------------------
/sprites/misc/candlelight.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "candlelight0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":20,"h":20},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":20,"h":20},
9 | "sourceSize": {"w":20,"h":20}
10 | },
11 | "candlelight0001":
12 | {
13 | "frame": {"x":20,"y":0,"w":20,"h":20},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":20,"h":20},
17 | "sourceSize": {"w":20,"h":20}
18 | },
19 | "candlelight0002":
20 | {
21 | "frame": {"x":40,"y":0,"w":20,"h":20},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":20,"h":20},
25 | "sourceSize": {"w":20,"h":20}
26 | },
27 | "candlelight0003":
28 | {
29 | "frame": {"x":0,"y":20,"w":20,"h":20},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":20,"h":20},
33 | "sourceSize": {"w":20,"h":20}
34 | },
35 | "candlelight0004":
36 | {
37 | "frame": {"x":20,"y":20,"w":20,"h":20},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":20,"h":20},
41 | "sourceSize": {"w":20,"h":20}
42 | }},
43 | "meta": {
44 | "app": "Adobe Animate",
45 | "version": "15.2.0.66",
46 | "image": "candlelight.png",
47 | "format": "RGBA8888",
48 | "size": {"w":64,"h":64},
49 | "scale": "1"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/sprites/misc/candlelight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/misc/candlelight.png
--------------------------------------------------------------------------------
/sprites/misc/cricket.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "cricket0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":137,"h":137},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":137,"h":137},
9 | "sourceSize": {"w":137,"h":137}
10 | },
11 | "cricket0001":
12 | {
13 | "frame": {"x":0,"y":137,"w":137,"h":137},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":137,"h":137},
17 | "sourceSize": {"w":137,"h":137}
18 | }},
19 | "meta": {
20 | "app": "Adobe Animate",
21 | "version": "15.2.0.66",
22 | "image": "cricket.png",
23 | "format": "RGBA8888",
24 | "size": {"w":256,"h":512},
25 | "scale": "1"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sprites/misc/cricket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/misc/cricket.png
--------------------------------------------------------------------------------
/sprites/misc/cursor.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "cursor0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":100,"h":100},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":100,"h":100},
9 | "sourceSize": {"w":100,"h":100}
10 | },
11 | "cursor0001":
12 | {
13 | "frame": {"x":0,"y":100,"w":100,"h":100},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":100,"h":100},
17 | "sourceSize": {"w":100,"h":100}
18 | },
19 | "cursor0002":
20 | {
21 | "frame": {"x":0,"y":200,"w":100,"h":100},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":100,"h":100},
25 | "sourceSize": {"w":100,"h":100}
26 | },
27 | "cursor0003":
28 | {
29 | "frame": {"x":0,"y":300,"w":100,"h":100},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":100,"h":100},
33 | "sourceSize": {"w":100,"h":100}
34 | },
35 | "cursor0004":
36 | {
37 | "frame": {"x":0,"y":400,"w":100,"h":100},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":100,"h":100},
41 | "sourceSize": {"w":100,"h":100}
42 | }},
43 | "meta": {
44 | "app": "Adobe Animate",
45 | "version": "15.2.0.66",
46 | "image": "cursor.png",
47 | "format": "RGBA8888",
48 | "size": {"w":128,"h":512},
49 | "scale": "1"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/sprites/misc/cursor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/misc/cursor.png
--------------------------------------------------------------------------------
/sprites/misc/lovers_watching.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "lovers_watching0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":100,"h":120},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":100,"h":120},
9 | "sourceSize": {"w":100,"h":120}
10 | },
11 | "lovers_watching0001":
12 | {
13 | "frame": {"x":0,"y":120,"w":100,"h":120},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":100,"h":120},
17 | "sourceSize": {"w":100,"h":120}
18 | }},
19 | "meta": {
20 | "app": "Adobe Animate",
21 | "version": "15.2.0.66",
22 | "image": "lovers_watching.png",
23 | "format": "RGBA8888",
24 | "size": {"w":128,"h":256},
25 | "scale": "1"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sprites/misc/lovers_watching.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/misc/lovers_watching.png
--------------------------------------------------------------------------------
/sprites/misc/preload_play.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "preload_play0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":395,"h":85},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":395,"h":85},
9 | "sourceSize": {"w":395,"h":85}
10 | },
11 | "preload_play0001":
12 | {
13 | "frame": {"x":0,"y":85,"w":395,"h":85},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":395,"h":85},
17 | "sourceSize": {"w":395,"h":85}
18 | },
19 | "preload_play0002":
20 | {
21 | "frame": {"x":0,"y":170,"w":395,"h":85},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":395,"h":85},
25 | "sourceSize": {"w":395,"h":85}
26 | }},
27 | "meta": {
28 | "app": "Adobe Animate",
29 | "version": "15.2.0.66",
30 | "image": "preload_play.png",
31 | "format": "RGBA8888",
32 | "size": {"w":512,"h":512},
33 | "scale": "1"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/sprites/misc/preload_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/misc/preload_play.png
--------------------------------------------------------------------------------
/sprites/peeps/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/Thumbs.db
--------------------------------------------------------------------------------
/sprites/peeps/blood.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "blood0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":169,"h":44},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":169,"h":44},
9 | "sourceSize": {"w":169,"h":44}
10 | },
11 | "blood0001":
12 | {
13 | "frame": {"x":0,"y":44,"w":169,"h":44},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":169,"h":44},
17 | "sourceSize": {"w":169,"h":44}
18 | },
19 | "blood0002":
20 | {
21 | "frame": {"x":0,"y":88,"w":169,"h":44},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":169,"h":44},
25 | "sourceSize": {"w":169,"h":44}
26 | }},
27 | "meta": {
28 | "app": "Adobe Animate",
29 | "version": "15.2.0.66",
30 | "image": "blood.png",
31 | "format": "RGBA8888",
32 | "size": {"w":256,"h":256},
33 | "scale": "1"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/sprites/peeps/blood.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/blood.png
--------------------------------------------------------------------------------
/sprites/peeps/blood_test.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "blood_test0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "blood_test0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | }},
19 | "meta": {
20 | "app": "Adobe Animate",
21 | "version": "15.2.0.66",
22 | "image": "blood_test.png",
23 | "format": "RGBA8888",
24 | "size": {"w":256,"h":256},
25 | "scale": "1"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sprites/peeps/blood_test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/blood_test.png
--------------------------------------------------------------------------------
/sprites/peeps/body.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "body0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "body0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | }},
19 | "meta": {
20 | "app": "Adobe Animate",
21 | "version": "15.2.0.66",
22 | "image": "body.png",
23 | "format": "RGBA8888",
24 | "size": {"w":256,"h":256},
25 | "scale": "1"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sprites/peeps/body.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/body.png
--------------------------------------------------------------------------------
/sprites/peeps/body_red.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "body_red0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "body_red0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | }},
19 | "meta": {
20 | "app": "Adobe Animate",
21 | "version": "15.2.0.66",
22 | "image": "body_red.png",
23 | "format": "RGBA8888",
24 | "size": {"w":256,"h":256},
25 | "scale": "1"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sprites/peeps/body_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/body_red.png
--------------------------------------------------------------------------------
/sprites/peeps/face.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "face0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "face0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | },
19 | "face0002":
20 | {
21 | "frame": {"x":0,"y":140,"w":120,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
25 | "sourceSize": {"w":120,"h":140}
26 | },
27 | "face0003":
28 | {
29 | "frame": {"x":120,"y":140,"w":120,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
33 | "sourceSize": {"w":120,"h":140}
34 | },
35 | "face0004":
36 | {
37 | "frame": {"x":0,"y":280,"w":120,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
41 | "sourceSize": {"w":120,"h":140}
42 | },
43 | "face0005":
44 | {
45 | "frame": {"x":120,"y":280,"w":120,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
49 | "sourceSize": {"w":120,"h":140}
50 | },
51 | "face0006":
52 | {
53 | "frame": {"x":0,"y":420,"w":120,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
57 | "sourceSize": {"w":120,"h":140}
58 | },
59 | "face0007":
60 | {
61 | "frame": {"x":120,"y":420,"w":120,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
65 | "sourceSize": {"w":120,"h":140}
66 | },
67 | "face0008":
68 | {
69 | "frame": {"x":0,"y":560,"w":120,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
73 | "sourceSize": {"w":120,"h":140}
74 | },
75 | "face0009":
76 | {
77 | "frame": {"x":120,"y":560,"w":120,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
81 | "sourceSize": {"w":120,"h":140}
82 | },
83 | "face0010":
84 | {
85 | "frame": {"x":0,"y":700,"w":120,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
89 | "sourceSize": {"w":120,"h":140}
90 | },
91 | "face0011":
92 | {
93 | "frame": {"x":120,"y":700,"w":120,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
97 | "sourceSize": {"w":120,"h":140}
98 | },
99 | "face0012":
100 | {
101 | "frame": {"x":0,"y":840,"w":120,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
105 | "sourceSize": {"w":120,"h":140}
106 | }},
107 | "meta": {
108 | "app": "Adobe Animate",
109 | "version": "15.2.0.66",
110 | "image": "face.png",
111 | "format": "RGBA8888",
112 | "size": {"w":256,"h":1024},
113 | "scale": "1"
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/sprites/peeps/face.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/face.png
--------------------------------------------------------------------------------
/sprites/peeps/face_angry.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "face_angry0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "face_angry0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | },
19 | "face_angry0002":
20 | {
21 | "frame": {"x":240,"y":0,"w":120,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
25 | "sourceSize": {"w":120,"h":140}
26 | },
27 | "face_angry0003":
28 | {
29 | "frame": {"x":360,"y":0,"w":120,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
33 | "sourceSize": {"w":120,"h":140}
34 | },
35 | "face_angry0004":
36 | {
37 | "frame": {"x":0,"y":140,"w":120,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
41 | "sourceSize": {"w":120,"h":140}
42 | },
43 | "face_angry0005":
44 | {
45 | "frame": {"x":120,"y":140,"w":120,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
49 | "sourceSize": {"w":120,"h":140}
50 | },
51 | "face_angry0006":
52 | {
53 | "frame": {"x":240,"y":140,"w":120,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
57 | "sourceSize": {"w":120,"h":140}
58 | },
59 | "face_angry0007":
60 | {
61 | "frame": {"x":360,"y":140,"w":120,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
65 | "sourceSize": {"w":120,"h":140}
66 | },
67 | "face_angry0008":
68 | {
69 | "frame": {"x":0,"y":280,"w":120,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
73 | "sourceSize": {"w":120,"h":140}
74 | },
75 | "face_angry0009":
76 | {
77 | "frame": {"x":120,"y":280,"w":120,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
81 | "sourceSize": {"w":120,"h":140}
82 | },
83 | "face_angry0010":
84 | {
85 | "frame": {"x":240,"y":280,"w":120,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
89 | "sourceSize": {"w":120,"h":140}
90 | },
91 | "face_angry0011":
92 | {
93 | "frame": {"x":360,"y":280,"w":120,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
97 | "sourceSize": {"w":120,"h":140}
98 | },
99 | "face_angry0012":
100 | {
101 | "frame": {"x":0,"y":420,"w":120,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
105 | "sourceSize": {"w":120,"h":140}
106 | },
107 | "face_angry0013":
108 | {
109 | "frame": {"x":120,"y":420,"w":120,"h":140},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
113 | "sourceSize": {"w":120,"h":140}
114 | },
115 | "face_angry0014":
116 | {
117 | "frame": {"x":240,"y":420,"w":120,"h":140},
118 | "rotated": false,
119 | "trimmed": false,
120 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
121 | "sourceSize": {"w":120,"h":140}
122 | },
123 | "face_angry0015":
124 | {
125 | "frame": {"x":360,"y":420,"w":120,"h":140},
126 | "rotated": false,
127 | "trimmed": false,
128 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
129 | "sourceSize": {"w":120,"h":140}
130 | },
131 | "face_angry0016":
132 | {
133 | "frame": {"x":0,"y":560,"w":120,"h":140},
134 | "rotated": false,
135 | "trimmed": false,
136 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
137 | "sourceSize": {"w":120,"h":140}
138 | },
139 | "face_angry0017":
140 | {
141 | "frame": {"x":120,"y":560,"w":120,"h":140},
142 | "rotated": false,
143 | "trimmed": false,
144 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
145 | "sourceSize": {"w":120,"h":140}
146 | },
147 | "face_angry0018":
148 | {
149 | "frame": {"x":240,"y":560,"w":120,"h":140},
150 | "rotated": false,
151 | "trimmed": false,
152 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
153 | "sourceSize": {"w":120,"h":140}
154 | },
155 | "face_angry0019":
156 | {
157 | "frame": {"x":360,"y":560,"w":120,"h":140},
158 | "rotated": false,
159 | "trimmed": false,
160 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
161 | "sourceSize": {"w":120,"h":140}
162 | },
163 | "face_angry0020":
164 | {
165 | "frame": {"x":0,"y":700,"w":120,"h":140},
166 | "rotated": false,
167 | "trimmed": false,
168 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
169 | "sourceSize": {"w":120,"h":140}
170 | },
171 | "face_angry0021":
172 | {
173 | "frame": {"x":120,"y":700,"w":120,"h":140},
174 | "rotated": false,
175 | "trimmed": false,
176 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
177 | "sourceSize": {"w":120,"h":140}
178 | },
179 | "face_angry0022":
180 | {
181 | "frame": {"x":240,"y":700,"w":120,"h":140},
182 | "rotated": false,
183 | "trimmed": false,
184 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
185 | "sourceSize": {"w":120,"h":140}
186 | },
187 | "face_angry0023":
188 | {
189 | "frame": {"x":360,"y":700,"w":120,"h":140},
190 | "rotated": false,
191 | "trimmed": false,
192 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
193 | "sourceSize": {"w":120,"h":140}
194 | },
195 | "face_angry0024":
196 | {
197 | "frame": {"x":0,"y":840,"w":120,"h":140},
198 | "rotated": false,
199 | "trimmed": false,
200 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
201 | "sourceSize": {"w":120,"h":140}
202 | },
203 | "face_angry0025":
204 | {
205 | "frame": {"x":120,"y":840,"w":120,"h":140},
206 | "rotated": false,
207 | "trimmed": false,
208 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
209 | "sourceSize": {"w":120,"h":140}
210 | }},
211 | "meta": {
212 | "app": "Adobe Animate",
213 | "version": "15.2.0.66",
214 | "image": "face_angry.png",
215 | "format": "RGBA8888",
216 | "size": {"w":512,"h":1024},
217 | "scale": "1"
218 | }
219 | }
220 |
--------------------------------------------------------------------------------
/sprites/peeps/face_angry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/face_angry.png
--------------------------------------------------------------------------------
/sprites/peeps/face_murder.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "face_murder0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "face_murder0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | },
19 | "face_murder0002":
20 | {
21 | "frame": {"x":0,"y":140,"w":120,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
25 | "sourceSize": {"w":120,"h":140}
26 | },
27 | "face_murder0003":
28 | {
29 | "frame": {"x":120,"y":140,"w":120,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
33 | "sourceSize": {"w":120,"h":140}
34 | },
35 | "face_murder0004":
36 | {
37 | "frame": {"x":0,"y":280,"w":120,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
41 | "sourceSize": {"w":120,"h":140}
42 | },
43 | "face_murder0005":
44 | {
45 | "frame": {"x":120,"y":280,"w":120,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
49 | "sourceSize": {"w":120,"h":140}
50 | },
51 | "face_murder0006":
52 | {
53 | "frame": {"x":0,"y":420,"w":120,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
57 | "sourceSize": {"w":120,"h":140}
58 | },
59 | "face_murder0007":
60 | {
61 | "frame": {"x":120,"y":420,"w":120,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
65 | "sourceSize": {"w":120,"h":140}
66 | },
67 | "face_murder0008":
68 | {
69 | "frame": {"x":0,"y":560,"w":120,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
73 | "sourceSize": {"w":120,"h":140}
74 | },
75 | "face_murder0009":
76 | {
77 | "frame": {"x":120,"y":560,"w":120,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
81 | "sourceSize": {"w":120,"h":140}
82 | },
83 | "face_murder0010":
84 | {
85 | "frame": {"x":0,"y":700,"w":120,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
89 | "sourceSize": {"w":120,"h":140}
90 | },
91 | "face_murder0011":
92 | {
93 | "frame": {"x":120,"y":700,"w":120,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
97 | "sourceSize": {"w":120,"h":140}
98 | },
99 | "face_murder0012":
100 | {
101 | "frame": {"x":0,"y":840,"w":120,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
105 | "sourceSize": {"w":120,"h":140}
106 | },
107 | "face_murder0013":
108 | {
109 | "frame": {"x":120,"y":840,"w":120,"h":140},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
113 | "sourceSize": {"w":120,"h":140}
114 | }},
115 | "meta": {
116 | "app": "Adobe Animate",
117 | "version": "15.2.0.66",
118 | "image": "face_murder.png",
119 | "format": "RGBA8888",
120 | "size": {"w":256,"h":1024},
121 | "scale": "1"
122 | }
123 | }
124 |
--------------------------------------------------------------------------------
/sprites/peeps/face_murder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/face_murder.png
--------------------------------------------------------------------------------
/sprites/peeps/face_nervous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/face_nervous.png
--------------------------------------------------------------------------------
/sprites/peeps/face_snobby.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "face_snobby0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":141},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
9 | "sourceSize": {"w":120,"h":141}
10 | },
11 | "face_snobby0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":141},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
17 | "sourceSize": {"w":120,"h":141}
18 | },
19 | "face_snobby0002":
20 | {
21 | "frame": {"x":240,"y":0,"w":120,"h":141},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
25 | "sourceSize": {"w":120,"h":141}
26 | },
27 | "face_snobby0003":
28 | {
29 | "frame": {"x":360,"y":0,"w":120,"h":141},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
33 | "sourceSize": {"w":120,"h":141}
34 | },
35 | "face_snobby0004":
36 | {
37 | "frame": {"x":480,"y":0,"w":120,"h":141},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
41 | "sourceSize": {"w":120,"h":141}
42 | },
43 | "face_snobby0005":
44 | {
45 | "frame": {"x":600,"y":0,"w":120,"h":141},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
49 | "sourceSize": {"w":120,"h":141}
50 | },
51 | "face_snobby0006":
52 | {
53 | "frame": {"x":720,"y":0,"w":120,"h":141},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
57 | "sourceSize": {"w":120,"h":141}
58 | },
59 | "face_snobby0007":
60 | {
61 | "frame": {"x":840,"y":0,"w":120,"h":141},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
65 | "sourceSize": {"w":120,"h":141}
66 | },
67 | "face_snobby0008":
68 | {
69 | "frame": {"x":0,"y":141,"w":120,"h":141},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
73 | "sourceSize": {"w":120,"h":141}
74 | },
75 | "face_snobby0009":
76 | {
77 | "frame": {"x":120,"y":141,"w":120,"h":141},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
81 | "sourceSize": {"w":120,"h":141}
82 | },
83 | "face_snobby0010":
84 | {
85 | "frame": {"x":240,"y":141,"w":120,"h":141},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
89 | "sourceSize": {"w":120,"h":141}
90 | },
91 | "face_snobby0011":
92 | {
93 | "frame": {"x":360,"y":141,"w":120,"h":141},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
97 | "sourceSize": {"w":120,"h":141}
98 | },
99 | "face_snobby0012":
100 | {
101 | "frame": {"x":480,"y":141,"w":120,"h":141},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
105 | "sourceSize": {"w":120,"h":141}
106 | },
107 | "face_snobby0013":
108 | {
109 | "frame": {"x":600,"y":141,"w":120,"h":141},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
113 | "sourceSize": {"w":120,"h":141}
114 | },
115 | "face_snobby0014":
116 | {
117 | "frame": {"x":720,"y":141,"w":120,"h":141},
118 | "rotated": false,
119 | "trimmed": false,
120 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
121 | "sourceSize": {"w":120,"h":141}
122 | },
123 | "face_snobby0015":
124 | {
125 | "frame": {"x":840,"y":141,"w":120,"h":141},
126 | "rotated": false,
127 | "trimmed": false,
128 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
129 | "sourceSize": {"w":120,"h":141}
130 | },
131 | "face_snobby0016":
132 | {
133 | "frame": {"x":0,"y":282,"w":120,"h":141},
134 | "rotated": false,
135 | "trimmed": false,
136 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
137 | "sourceSize": {"w":120,"h":141}
138 | },
139 | "face_snobby0017":
140 | {
141 | "frame": {"x":120,"y":282,"w":120,"h":141},
142 | "rotated": false,
143 | "trimmed": false,
144 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
145 | "sourceSize": {"w":120,"h":141}
146 | },
147 | "face_snobby0018":
148 | {
149 | "frame": {"x":240,"y":282,"w":120,"h":141},
150 | "rotated": false,
151 | "trimmed": false,
152 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
153 | "sourceSize": {"w":120,"h":141}
154 | },
155 | "face_snobby0019":
156 | {
157 | "frame": {"x":360,"y":282,"w":120,"h":141},
158 | "rotated": false,
159 | "trimmed": false,
160 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
161 | "sourceSize": {"w":120,"h":141}
162 | },
163 | "face_snobby0020":
164 | {
165 | "frame": {"x":480,"y":282,"w":120,"h":141},
166 | "rotated": false,
167 | "trimmed": false,
168 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
169 | "sourceSize": {"w":120,"h":141}
170 | },
171 | "face_snobby0021":
172 | {
173 | "frame": {"x":600,"y":282,"w":120,"h":141},
174 | "rotated": false,
175 | "trimmed": false,
176 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
177 | "sourceSize": {"w":120,"h":141}
178 | },
179 | "face_snobby0022":
180 | {
181 | "frame": {"x":720,"y":282,"w":120,"h":141},
182 | "rotated": false,
183 | "trimmed": false,
184 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
185 | "sourceSize": {"w":120,"h":141}
186 | },
187 | "face_snobby0023":
188 | {
189 | "frame": {"x":840,"y":282,"w":120,"h":141},
190 | "rotated": false,
191 | "trimmed": false,
192 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
193 | "sourceSize": {"w":120,"h":141}
194 | },
195 | "face_snobby0024":
196 | {
197 | "frame": {"x":0,"y":423,"w":120,"h":141},
198 | "rotated": false,
199 | "trimmed": false,
200 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
201 | "sourceSize": {"w":120,"h":141}
202 | },
203 | "face_snobby0025":
204 | {
205 | "frame": {"x":120,"y":423,"w":120,"h":141},
206 | "rotated": false,
207 | "trimmed": false,
208 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
209 | "sourceSize": {"w":120,"h":141}
210 | },
211 | "face_snobby0026":
212 | {
213 | "frame": {"x":240,"y":423,"w":120,"h":141},
214 | "rotated": false,
215 | "trimmed": false,
216 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
217 | "sourceSize": {"w":120,"h":141}
218 | },
219 | "face_snobby0027":
220 | {
221 | "frame": {"x":360,"y":423,"w":120,"h":141},
222 | "rotated": false,
223 | "trimmed": false,
224 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
225 | "sourceSize": {"w":120,"h":141}
226 | },
227 | "face_snobby0028":
228 | {
229 | "frame": {"x":480,"y":423,"w":120,"h":141},
230 | "rotated": false,
231 | "trimmed": false,
232 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
233 | "sourceSize": {"w":120,"h":141}
234 | },
235 | "face_snobby0029":
236 | {
237 | "frame": {"x":600,"y":423,"w":120,"h":141},
238 | "rotated": false,
239 | "trimmed": false,
240 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":141},
241 | "sourceSize": {"w":120,"h":141}
242 | }},
243 | "meta": {
244 | "app": "Adobe Animate",
245 | "version": "15.2.0.66",
246 | "image": "face_snobby.png",
247 | "format": "RGBA8888",
248 | "size": {"w":1024,"h":1024},
249 | "scale": "1"
250 | }
251 | }
252 |
--------------------------------------------------------------------------------
/sprites/peeps/face_snobby.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/face_snobby.png
--------------------------------------------------------------------------------
/sprites/peeps/face_snobby_hmph.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "face_snobby_hmph0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "face_snobby_hmph0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | },
19 | "face_snobby_hmph0002":
20 | {
21 | "frame": {"x":0,"y":140,"w":120,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
25 | "sourceSize": {"w":120,"h":140}
26 | },
27 | "face_snobby_hmph0003":
28 | {
29 | "frame": {"x":120,"y":140,"w":120,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
33 | "sourceSize": {"w":120,"h":140}
34 | }},
35 | "meta": {
36 | "app": "Adobe Animate",
37 | "version": "15.2.0.66",
38 | "image": "face_snobby_hmph.png",
39 | "format": "RGBA8888",
40 | "size": {"w":256,"h":512},
41 | "scale": "1"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/sprites/peeps/face_snobby_hmph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/face_snobby_hmph.png
--------------------------------------------------------------------------------
/sprites/peeps/gore.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "gore0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":30,"h":30},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":30,"h":30},
9 | "sourceSize": {"w":30,"h":30}
10 | },
11 | "gore0001":
12 | {
13 | "frame": {"x":30,"y":0,"w":30,"h":30},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":30,"h":30},
17 | "sourceSize": {"w":30,"h":30}
18 | },
19 | "gore0002":
20 | {
21 | "frame": {"x":0,"y":30,"w":30,"h":30},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":30,"h":30},
25 | "sourceSize": {"w":30,"h":30}
26 | }},
27 | "meta": {
28 | "app": "Adobe Animate",
29 | "version": "15.2.0.66",
30 | "image": "gore.png",
31 | "format": "RGBA8888",
32 | "size": {"w":64,"h":64},
33 | "scale": "1"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/sprites/peeps/gore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/gore.png
--------------------------------------------------------------------------------
/sprites/peeps/gore_bodies.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "gore_bodies0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":161,"h":121},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
9 | "sourceSize": {"w":161,"h":121}
10 | },
11 | "gore_bodies0001":
12 | {
13 | "frame": {"x":161,"y":0,"w":161,"h":121},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
17 | "sourceSize": {"w":161,"h":121}
18 | },
19 | "gore_bodies0002":
20 | {
21 | "frame": {"x":322,"y":0,"w":161,"h":121},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
25 | "sourceSize": {"w":161,"h":121}
26 | },
27 | "gore_bodies0003":
28 | {
29 | "frame": {"x":0,"y":121,"w":161,"h":121},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
33 | "sourceSize": {"w":161,"h":121}
34 | },
35 | "gore_bodies0004":
36 | {
37 | "frame": {"x":161,"y":121,"w":161,"h":121},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
41 | "sourceSize": {"w":161,"h":121}
42 | },
43 | "gore_bodies0005":
44 | {
45 | "frame": {"x":322,"y":121,"w":161,"h":121},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
49 | "sourceSize": {"w":161,"h":121}
50 | },
51 | "gore_bodies0006":
52 | {
53 | "frame": {"x":0,"y":242,"w":161,"h":121},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
57 | "sourceSize": {"w":161,"h":121}
58 | },
59 | "gore_bodies0007":
60 | {
61 | "frame": {"x":161,"y":242,"w":161,"h":121},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
65 | "sourceSize": {"w":161,"h":121}
66 | },
67 | "gore_bodies0008":
68 | {
69 | "frame": {"x":322,"y":242,"w":161,"h":121},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
73 | "sourceSize": {"w":161,"h":121}
74 | },
75 | "gore_bodies0009":
76 | {
77 | "frame": {"x":0,"y":363,"w":161,"h":121},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
81 | "sourceSize": {"w":161,"h":121}
82 | },
83 | "gore_bodies0010":
84 | {
85 | "frame": {"x":161,"y":363,"w":161,"h":121},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
89 | "sourceSize": {"w":161,"h":121}
90 | },
91 | "gore_bodies0011":
92 | {
93 | "frame": {"x":322,"y":363,"w":161,"h":121},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":161,"h":121},
97 | "sourceSize": {"w":161,"h":121}
98 | }},
99 | "meta": {
100 | "app": "Adobe Animate",
101 | "version": "15.2.0.66",
102 | "image": "gore_bodies.png",
103 | "format": "RGBA8888",
104 | "size": {"w":512,"h":512},
105 | "scale": "1"
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/sprites/peeps/gore_bodies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/gore_bodies.png
--------------------------------------------------------------------------------
/sprites/peeps/gun.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "gun0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":160,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
9 | "sourceSize": {"w":160,"h":140}
10 | },
11 | "gun0001":
12 | {
13 | "frame": {"x":160,"y":0,"w":160,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
17 | "sourceSize": {"w":160,"h":140}
18 | },
19 | "gun0002":
20 | {
21 | "frame": {"x":320,"y":0,"w":160,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
25 | "sourceSize": {"w":160,"h":140}
26 | },
27 | "gun0003":
28 | {
29 | "frame": {"x":0,"y":140,"w":160,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
33 | "sourceSize": {"w":160,"h":140}
34 | },
35 | "gun0004":
36 | {
37 | "frame": {"x":160,"y":140,"w":160,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
41 | "sourceSize": {"w":160,"h":140}
42 | },
43 | "gun0005":
44 | {
45 | "frame": {"x":320,"y":140,"w":160,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
49 | "sourceSize": {"w":160,"h":140}
50 | },
51 | "gun0006":
52 | {
53 | "frame": {"x":0,"y":280,"w":160,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
57 | "sourceSize": {"w":160,"h":140}
58 | },
59 | "gun0007":
60 | {
61 | "frame": {"x":160,"y":280,"w":160,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
65 | "sourceSize": {"w":160,"h":140}
66 | },
67 | "gun0008":
68 | {
69 | "frame": {"x":320,"y":280,"w":160,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
73 | "sourceSize": {"w":160,"h":140}
74 | },
75 | "gun0009":
76 | {
77 | "frame": {"x":0,"y":420,"w":160,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
81 | "sourceSize": {"w":160,"h":140}
82 | },
83 | "gun0010":
84 | {
85 | "frame": {"x":160,"y":420,"w":160,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
89 | "sourceSize": {"w":160,"h":140}
90 | },
91 | "gun0011":
92 | {
93 | "frame": {"x":320,"y":420,"w":160,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
97 | "sourceSize": {"w":160,"h":140}
98 | },
99 | "gun0012":
100 | {
101 | "frame": {"x":0,"y":560,"w":160,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
105 | "sourceSize": {"w":160,"h":140}
106 | },
107 | "gun0013":
108 | {
109 | "frame": {"x":160,"y":560,"w":160,"h":140},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
113 | "sourceSize": {"w":160,"h":140}
114 | },
115 | "gun0014":
116 | {
117 | "frame": {"x":320,"y":560,"w":160,"h":140},
118 | "rotated": false,
119 | "trimmed": false,
120 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
121 | "sourceSize": {"w":160,"h":140}
122 | },
123 | "gun0015":
124 | {
125 | "frame": {"x":0,"y":700,"w":160,"h":140},
126 | "rotated": false,
127 | "trimmed": false,
128 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
129 | "sourceSize": {"w":160,"h":140}
130 | },
131 | "gun0016":
132 | {
133 | "frame": {"x":160,"y":700,"w":160,"h":140},
134 | "rotated": false,
135 | "trimmed": false,
136 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
137 | "sourceSize": {"w":160,"h":140}
138 | },
139 | "gun0017":
140 | {
141 | "frame": {"x":320,"y":700,"w":160,"h":140},
142 | "rotated": false,
143 | "trimmed": false,
144 | "spriteSourceSize": {"x":0,"y":0,"w":160,"h":140},
145 | "sourceSize": {"w":160,"h":140}
146 | }},
147 | "meta": {
148 | "app": "Adobe Animate",
149 | "version": "15.2.0.66",
150 | "image": "gun.png",
151 | "format": "RGBA8888",
152 | "size": {"w":512,"h":1024},
153 | "scale": "1"
154 | }
155 | }
156 |
--------------------------------------------------------------------------------
/sprites/peeps/gun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/gun.png
--------------------------------------------------------------------------------
/sprites/peeps/hangry.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "hangry0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":150,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
9 | "sourceSize": {"w":150,"h":140}
10 | },
11 | "hangry0001":
12 | {
13 | "frame": {"x":150,"y":0,"w":150,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
17 | "sourceSize": {"w":150,"h":140}
18 | },
19 | "hangry0002":
20 | {
21 | "frame": {"x":300,"y":0,"w":150,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
25 | "sourceSize": {"w":150,"h":140}
26 | },
27 | "hangry0003":
28 | {
29 | "frame": {"x":0,"y":140,"w":150,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
33 | "sourceSize": {"w":150,"h":140}
34 | },
35 | "hangry0004":
36 | {
37 | "frame": {"x":150,"y":140,"w":150,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
41 | "sourceSize": {"w":150,"h":140}
42 | },
43 | "hangry0005":
44 | {
45 | "frame": {"x":300,"y":140,"w":150,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
49 | "sourceSize": {"w":150,"h":140}
50 | },
51 | "hangry0006":
52 | {
53 | "frame": {"x":0,"y":280,"w":150,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
57 | "sourceSize": {"w":150,"h":140}
58 | },
59 | "hangry0007":
60 | {
61 | "frame": {"x":150,"y":280,"w":150,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
65 | "sourceSize": {"w":150,"h":140}
66 | },
67 | "hangry0008":
68 | {
69 | "frame": {"x":300,"y":280,"w":150,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
73 | "sourceSize": {"w":150,"h":140}
74 | },
75 | "hangry0009":
76 | {
77 | "frame": {"x":0,"y":420,"w":150,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
81 | "sourceSize": {"w":150,"h":140}
82 | },
83 | "hangry0010":
84 | {
85 | "frame": {"x":150,"y":420,"w":150,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
89 | "sourceSize": {"w":150,"h":140}
90 | },
91 | "hangry0011":
92 | {
93 | "frame": {"x":300,"y":420,"w":150,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
97 | "sourceSize": {"w":150,"h":140}
98 | },
99 | "hangry0012":
100 | {
101 | "frame": {"x":0,"y":560,"w":150,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
105 | "sourceSize": {"w":150,"h":140}
106 | },
107 | "hangry0013":
108 | {
109 | "frame": {"x":150,"y":560,"w":150,"h":140},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
113 | "sourceSize": {"w":150,"h":140}
114 | },
115 | "hangry0014":
116 | {
117 | "frame": {"x":300,"y":560,"w":150,"h":140},
118 | "rotated": false,
119 | "trimmed": false,
120 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
121 | "sourceSize": {"w":150,"h":140}
122 | },
123 | "hangry0015":
124 | {
125 | "frame": {"x":0,"y":700,"w":150,"h":140},
126 | "rotated": false,
127 | "trimmed": false,
128 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
129 | "sourceSize": {"w":150,"h":140}
130 | },
131 | "hangry0016":
132 | {
133 | "frame": {"x":150,"y":700,"w":150,"h":140},
134 | "rotated": false,
135 | "trimmed": false,
136 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
137 | "sourceSize": {"w":150,"h":140}
138 | },
139 | "hangry0017":
140 | {
141 | "frame": {"x":300,"y":700,"w":150,"h":140},
142 | "rotated": false,
143 | "trimmed": false,
144 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
145 | "sourceSize": {"w":150,"h":140}
146 | },
147 | "hangry0018":
148 | {
149 | "frame": {"x":0,"y":840,"w":150,"h":140},
150 | "rotated": false,
151 | "trimmed": false,
152 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
153 | "sourceSize": {"w":150,"h":140}
154 | },
155 | "hangry0019":
156 | {
157 | "frame": {"x":150,"y":840,"w":150,"h":140},
158 | "rotated": false,
159 | "trimmed": false,
160 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
161 | "sourceSize": {"w":150,"h":140}
162 | },
163 | "hangry0020":
164 | {
165 | "frame": {"x":300,"y":840,"w":150,"h":140},
166 | "rotated": false,
167 | "trimmed": false,
168 | "spriteSourceSize": {"x":0,"y":0,"w":150,"h":140},
169 | "sourceSize": {"w":150,"h":140}
170 | }},
171 | "meta": {
172 | "app": "Adobe Animate",
173 | "version": "15.2.0.66",
174 | "image": "hangry.png",
175 | "format": "RGBA8888",
176 | "size": {"w":512,"h":1024},
177 | "scale": "1"
178 | }
179 | }
180 |
--------------------------------------------------------------------------------
/sprites/peeps/hangry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/hangry.png
--------------------------------------------------------------------------------
/sprites/peeps/happy_weirdo.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "happy_weirdo0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "happy_weirdo0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | },
19 | "happy_weirdo0002":
20 | {
21 | "frame": {"x":240,"y":0,"w":120,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
25 | "sourceSize": {"w":120,"h":140}
26 | },
27 | "happy_weirdo0003":
28 | {
29 | "frame": {"x":360,"y":0,"w":120,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
33 | "sourceSize": {"w":120,"h":140}
34 | },
35 | "happy_weirdo0004":
36 | {
37 | "frame": {"x":0,"y":140,"w":120,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
41 | "sourceSize": {"w":120,"h":140}
42 | },
43 | "happy_weirdo0005":
44 | {
45 | "frame": {"x":120,"y":140,"w":120,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
49 | "sourceSize": {"w":120,"h":140}
50 | },
51 | "happy_weirdo0006":
52 | {
53 | "frame": {"x":240,"y":140,"w":120,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
57 | "sourceSize": {"w":120,"h":140}
58 | }},
59 | "meta": {
60 | "app": "Adobe Animate",
61 | "version": "15.2.0.66",
62 | "image": "happy_weirdo.png",
63 | "format": "RGBA8888",
64 | "size": {"w":512,"h":512},
65 | "scale": "1"
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/sprites/peeps/happy_weirdo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/happy_weirdo.png
--------------------------------------------------------------------------------
/sprites/peeps/hat.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "hat0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "hat0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | },
19 | "hat0002":
20 | {
21 | "frame": {"x":240,"y":0,"w":120,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
25 | "sourceSize": {"w":120,"h":140}
26 | },
27 | "hat0003":
28 | {
29 | "frame": {"x":360,"y":0,"w":120,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
33 | "sourceSize": {"w":120,"h":140}
34 | },
35 | "hat0004":
36 | {
37 | "frame": {"x":0,"y":140,"w":120,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
41 | "sourceSize": {"w":120,"h":140}
42 | },
43 | "hat0005":
44 | {
45 | "frame": {"x":120,"y":140,"w":120,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
49 | "sourceSize": {"w":120,"h":140}
50 | },
51 | "hat0006":
52 | {
53 | "frame": {"x":240,"y":140,"w":120,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
57 | "sourceSize": {"w":120,"h":140}
58 | },
59 | "hat0007":
60 | {
61 | "frame": {"x":360,"y":140,"w":120,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
65 | "sourceSize": {"w":120,"h":140}
66 | },
67 | "hat0008":
68 | {
69 | "frame": {"x":0,"y":280,"w":120,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
73 | "sourceSize": {"w":120,"h":140}
74 | },
75 | "hat0009":
76 | {
77 | "frame": {"x":120,"y":280,"w":120,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
81 | "sourceSize": {"w":120,"h":140}
82 | },
83 | "hat0010":
84 | {
85 | "frame": {"x":240,"y":280,"w":120,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
89 | "sourceSize": {"w":120,"h":140}
90 | },
91 | "hat0011":
92 | {
93 | "frame": {"x":360,"y":280,"w":120,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
97 | "sourceSize": {"w":120,"h":140}
98 | },
99 | "hat0012":
100 | {
101 | "frame": {"x":0,"y":420,"w":120,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
105 | "sourceSize": {"w":120,"h":140}
106 | },
107 | "hat0013":
108 | {
109 | "frame": {"x":120,"y":420,"w":120,"h":140},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
113 | "sourceSize": {"w":120,"h":140}
114 | },
115 | "hat0014":
116 | {
117 | "frame": {"x":240,"y":420,"w":120,"h":140},
118 | "rotated": false,
119 | "trimmed": false,
120 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
121 | "sourceSize": {"w":120,"h":140}
122 | },
123 | "hat0015":
124 | {
125 | "frame": {"x":360,"y":420,"w":120,"h":140},
126 | "rotated": false,
127 | "trimmed": false,
128 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
129 | "sourceSize": {"w":120,"h":140}
130 | },
131 | "hat0016":
132 | {
133 | "frame": {"x":0,"y":560,"w":120,"h":140},
134 | "rotated": false,
135 | "trimmed": false,
136 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
137 | "sourceSize": {"w":120,"h":140}
138 | },
139 | "hat0017":
140 | {
141 | "frame": {"x":120,"y":560,"w":120,"h":140},
142 | "rotated": false,
143 | "trimmed": false,
144 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
145 | "sourceSize": {"w":120,"h":140}
146 | },
147 | "hat0018":
148 | {
149 | "frame": {"x":240,"y":560,"w":120,"h":140},
150 | "rotated": false,
151 | "trimmed": false,
152 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
153 | "sourceSize": {"w":120,"h":140}
154 | },
155 | "hat0019":
156 | {
157 | "frame": {"x":360,"y":560,"w":120,"h":140},
158 | "rotated": false,
159 | "trimmed": false,
160 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
161 | "sourceSize": {"w":120,"h":140}
162 | },
163 | "hat0020":
164 | {
165 | "frame": {"x":0,"y":700,"w":120,"h":140},
166 | "rotated": false,
167 | "trimmed": false,
168 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
169 | "sourceSize": {"w":120,"h":140}
170 | },
171 | "hat0021":
172 | {
173 | "frame": {"x":120,"y":700,"w":120,"h":140},
174 | "rotated": false,
175 | "trimmed": false,
176 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
177 | "sourceSize": {"w":120,"h":140}
178 | },
179 | "hat0022":
180 | {
181 | "frame": {"x":240,"y":700,"w":120,"h":140},
182 | "rotated": false,
183 | "trimmed": false,
184 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
185 | "sourceSize": {"w":120,"h":140}
186 | },
187 | "hat0023":
188 | {
189 | "frame": {"x":360,"y":700,"w":120,"h":140},
190 | "rotated": false,
191 | "trimmed": false,
192 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
193 | "sourceSize": {"w":120,"h":140}
194 | },
195 | "hat0024":
196 | {
197 | "frame": {"x":0,"y":840,"w":120,"h":140},
198 | "rotated": false,
199 | "trimmed": false,
200 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
201 | "sourceSize": {"w":120,"h":140}
202 | },
203 | "hat0025":
204 | {
205 | "frame": {"x":120,"y":840,"w":120,"h":140},
206 | "rotated": false,
207 | "trimmed": false,
208 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
209 | "sourceSize": {"w":120,"h":140}
210 | },
211 | "hat0026":
212 | {
213 | "frame": {"x":240,"y":840,"w":120,"h":140},
214 | "rotated": false,
215 | "trimmed": false,
216 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
217 | "sourceSize": {"w":120,"h":140}
218 | }},
219 | "meta": {
220 | "app": "Adobe Animate",
221 | "version": "15.2.0.66",
222 | "image": "hat.png",
223 | "format": "RGBA8888",
224 | "size": {"w":512,"h":1024},
225 | "scale": "1"
226 | }
227 | }
228 |
--------------------------------------------------------------------------------
/sprites/peeps/hat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/hat.png
--------------------------------------------------------------------------------
/sprites/peeps/hatguy.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "hatguy0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | }},
11 | "meta": {
12 | "app": "Adobe Animate",
13 | "version": "15.2.0.66",
14 | "image": "hatguy.png",
15 | "format": "RGBA8888",
16 | "size": {"w":128,"h":256},
17 | "scale": "1"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/sprites/peeps/hatguy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/hatguy.png
--------------------------------------------------------------------------------
/sprites/peeps/helping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/helping.png
--------------------------------------------------------------------------------
/sprites/peeps/lovehat.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "lovehat0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | }},
11 | "meta": {
12 | "app": "Adobe Animate",
13 | "version": "15.2.0.66",
14 | "image": "lovehat.png",
15 | "format": "RGBA8888",
16 | "size": {"w":128,"h":256},
17 | "scale": "1"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/sprites/peeps/lovehat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/lovehat.png
--------------------------------------------------------------------------------
/sprites/peeps/lover_panic.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "lover_panic0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":124,"h":202},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":124,"h":202},
9 | "sourceSize": {"w":124,"h":202}
10 | },
11 | "lover_panic0001":
12 | {
13 | "frame": {"x":124,"y":0,"w":124,"h":202},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":124,"h":202},
17 | "sourceSize": {"w":124,"h":202}
18 | }},
19 | "meta": {
20 | "app": "Adobe Animate",
21 | "version": "15.2.0.66",
22 | "image": "lover_panic.png",
23 | "format": "RGBA8888",
24 | "size": {"w":256,"h":256},
25 | "scale": "1"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sprites/peeps/lover_panic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/lover_panic.png
--------------------------------------------------------------------------------
/sprites/peeps/lover_shirt.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "lover_shirt0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":120,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
9 | "sourceSize": {"w":120,"h":140}
10 | },
11 | "lover_shirt0001":
12 | {
13 | "frame": {"x":120,"y":0,"w":120,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":120,"h":140},
17 | "sourceSize": {"w":120,"h":140}
18 | }},
19 | "meta": {
20 | "app": "Adobe Animate",
21 | "version": "15.2.0.66",
22 | "image": "lover_shirt.png",
23 | "format": "RGBA8888",
24 | "size": {"w":256,"h":256},
25 | "scale": "1"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sprites/peeps/lover_shirt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/lover_shirt.png
--------------------------------------------------------------------------------
/sprites/peeps/peace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/peace.png
--------------------------------------------------------------------------------
/sprites/peeps/weapon_axe.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "weapon_axe0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":300,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
9 | "sourceSize": {"w":300,"h":140}
10 | },
11 | "weapon_axe0001":
12 | {
13 | "frame": {"x":300,"y":0,"w":300,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
17 | "sourceSize": {"w":300,"h":140}
18 | },
19 | "weapon_axe0002":
20 | {
21 | "frame": {"x":600,"y":0,"w":300,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
25 | "sourceSize": {"w":300,"h":140}
26 | },
27 | "weapon_axe0003":
28 | {
29 | "frame": {"x":0,"y":140,"w":300,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
33 | "sourceSize": {"w":300,"h":140}
34 | },
35 | "weapon_axe0004":
36 | {
37 | "frame": {"x":300,"y":140,"w":300,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
41 | "sourceSize": {"w":300,"h":140}
42 | },
43 | "weapon_axe0005":
44 | {
45 | "frame": {"x":600,"y":140,"w":300,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
49 | "sourceSize": {"w":300,"h":140}
50 | },
51 | "weapon_axe0006":
52 | {
53 | "frame": {"x":0,"y":280,"w":300,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
57 | "sourceSize": {"w":300,"h":140}
58 | },
59 | "weapon_axe0007":
60 | {
61 | "frame": {"x":300,"y":280,"w":300,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
65 | "sourceSize": {"w":300,"h":140}
66 | },
67 | "weapon_axe0008":
68 | {
69 | "frame": {"x":600,"y":280,"w":300,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
73 | "sourceSize": {"w":300,"h":140}
74 | },
75 | "weapon_axe0009":
76 | {
77 | "frame": {"x":0,"y":420,"w":300,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
81 | "sourceSize": {"w":300,"h":140}
82 | },
83 | "weapon_axe0010":
84 | {
85 | "frame": {"x":300,"y":420,"w":300,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
89 | "sourceSize": {"w":300,"h":140}
90 | },
91 | "weapon_axe0011":
92 | {
93 | "frame": {"x":600,"y":420,"w":300,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
97 | "sourceSize": {"w":300,"h":140}
98 | },
99 | "weapon_axe0012":
100 | {
101 | "frame": {"x":0,"y":560,"w":300,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
105 | "sourceSize": {"w":300,"h":140}
106 | },
107 | "weapon_axe0013":
108 | {
109 | "frame": {"x":300,"y":560,"w":300,"h":140},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
113 | "sourceSize": {"w":300,"h":140}
114 | },
115 | "weapon_axe0014":
116 | {
117 | "frame": {"x":600,"y":560,"w":300,"h":140},
118 | "rotated": false,
119 | "trimmed": false,
120 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
121 | "sourceSize": {"w":300,"h":140}
122 | },
123 | "weapon_axe0015":
124 | {
125 | "frame": {"x":0,"y":700,"w":300,"h":140},
126 | "rotated": false,
127 | "trimmed": false,
128 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
129 | "sourceSize": {"w":300,"h":140}
130 | }},
131 | "meta": {
132 | "app": "Adobe Animate",
133 | "version": "15.2.0.66",
134 | "image": "weapon_axe.png",
135 | "format": "RGBA8888",
136 | "size": {"w":1024,"h":1024},
137 | "scale": "1"
138 | }
139 | }
140 |
--------------------------------------------------------------------------------
/sprites/peeps/weapon_axe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/weapon_axe.png
--------------------------------------------------------------------------------
/sprites/peeps/weapon_bat.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "weapon_bat0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":300,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
9 | "sourceSize": {"w":300,"h":140}
10 | },
11 | "weapon_bat0001":
12 | {
13 | "frame": {"x":300,"y":0,"w":300,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
17 | "sourceSize": {"w":300,"h":140}
18 | },
19 | "weapon_bat0002":
20 | {
21 | "frame": {"x":600,"y":0,"w":300,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
25 | "sourceSize": {"w":300,"h":140}
26 | },
27 | "weapon_bat0003":
28 | {
29 | "frame": {"x":0,"y":140,"w":300,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
33 | "sourceSize": {"w":300,"h":140}
34 | },
35 | "weapon_bat0004":
36 | {
37 | "frame": {"x":300,"y":140,"w":300,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
41 | "sourceSize": {"w":300,"h":140}
42 | },
43 | "weapon_bat0005":
44 | {
45 | "frame": {"x":600,"y":140,"w":300,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
49 | "sourceSize": {"w":300,"h":140}
50 | },
51 | "weapon_bat0006":
52 | {
53 | "frame": {"x":0,"y":280,"w":300,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
57 | "sourceSize": {"w":300,"h":140}
58 | },
59 | "weapon_bat0007":
60 | {
61 | "frame": {"x":300,"y":280,"w":300,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
65 | "sourceSize": {"w":300,"h":140}
66 | },
67 | "weapon_bat0008":
68 | {
69 | "frame": {"x":600,"y":280,"w":300,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
73 | "sourceSize": {"w":300,"h":140}
74 | },
75 | "weapon_bat0009":
76 | {
77 | "frame": {"x":0,"y":420,"w":300,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
81 | "sourceSize": {"w":300,"h":140}
82 | },
83 | "weapon_bat0010":
84 | {
85 | "frame": {"x":300,"y":420,"w":300,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
89 | "sourceSize": {"w":300,"h":140}
90 | },
91 | "weapon_bat0011":
92 | {
93 | "frame": {"x":600,"y":420,"w":300,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
97 | "sourceSize": {"w":300,"h":140}
98 | },
99 | "weapon_bat0012":
100 | {
101 | "frame": {"x":0,"y":560,"w":300,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
105 | "sourceSize": {"w":300,"h":140}
106 | },
107 | "weapon_bat0013":
108 | {
109 | "frame": {"x":300,"y":560,"w":300,"h":140},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
113 | "sourceSize": {"w":300,"h":140}
114 | },
115 | "weapon_bat0014":
116 | {
117 | "frame": {"x":600,"y":560,"w":300,"h":140},
118 | "rotated": false,
119 | "trimmed": false,
120 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
121 | "sourceSize": {"w":300,"h":140}
122 | },
123 | "weapon_bat0015":
124 | {
125 | "frame": {"x":0,"y":700,"w":300,"h":140},
126 | "rotated": false,
127 | "trimmed": false,
128 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
129 | "sourceSize": {"w":300,"h":140}
130 | }},
131 | "meta": {
132 | "app": "Adobe Animate",
133 | "version": "15.2.0.66",
134 | "image": "weapon_bat.png",
135 | "format": "RGBA8888",
136 | "size": {"w":1024,"h":1024},
137 | "scale": "1"
138 | }
139 | }
140 |
--------------------------------------------------------------------------------
/sprites/peeps/weapon_bat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/weapon_bat.png
--------------------------------------------------------------------------------
/sprites/peeps/weapon_gun.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "weapon_gun0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":300,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
9 | "sourceSize": {"w":300,"h":140}
10 | },
11 | "weapon_gun0001":
12 | {
13 | "frame": {"x":300,"y":0,"w":300,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
17 | "sourceSize": {"w":300,"h":140}
18 | },
19 | "weapon_gun0002":
20 | {
21 | "frame": {"x":600,"y":0,"w":300,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
25 | "sourceSize": {"w":300,"h":140}
26 | },
27 | "weapon_gun0003":
28 | {
29 | "frame": {"x":0,"y":140,"w":300,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
33 | "sourceSize": {"w":300,"h":140}
34 | },
35 | "weapon_gun0004":
36 | {
37 | "frame": {"x":300,"y":140,"w":300,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
41 | "sourceSize": {"w":300,"h":140}
42 | },
43 | "weapon_gun0005":
44 | {
45 | "frame": {"x":600,"y":140,"w":300,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
49 | "sourceSize": {"w":300,"h":140}
50 | },
51 | "weapon_gun0006":
52 | {
53 | "frame": {"x":0,"y":280,"w":300,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
57 | "sourceSize": {"w":300,"h":140}
58 | },
59 | "weapon_gun0007":
60 | {
61 | "frame": {"x":300,"y":280,"w":300,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
65 | "sourceSize": {"w":300,"h":140}
66 | },
67 | "weapon_gun0008":
68 | {
69 | "frame": {"x":600,"y":280,"w":300,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
73 | "sourceSize": {"w":300,"h":140}
74 | },
75 | "weapon_gun0009":
76 | {
77 | "frame": {"x":0,"y":420,"w":300,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
81 | "sourceSize": {"w":300,"h":140}
82 | },
83 | "weapon_gun0010":
84 | {
85 | "frame": {"x":300,"y":420,"w":300,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
89 | "sourceSize": {"w":300,"h":140}
90 | },
91 | "weapon_gun0011":
92 | {
93 | "frame": {"x":600,"y":420,"w":300,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
97 | "sourceSize": {"w":300,"h":140}
98 | },
99 | "weapon_gun0012":
100 | {
101 | "frame": {"x":0,"y":560,"w":300,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
105 | "sourceSize": {"w":300,"h":140}
106 | },
107 | "weapon_gun0013":
108 | {
109 | "frame": {"x":300,"y":560,"w":300,"h":140},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
113 | "sourceSize": {"w":300,"h":140}
114 | },
115 | "weapon_gun0014":
116 | {
117 | "frame": {"x":600,"y":560,"w":300,"h":140},
118 | "rotated": false,
119 | "trimmed": false,
120 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
121 | "sourceSize": {"w":300,"h":140}
122 | },
123 | "weapon_gun0015":
124 | {
125 | "frame": {"x":0,"y":700,"w":300,"h":140},
126 | "rotated": false,
127 | "trimmed": false,
128 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
129 | "sourceSize": {"w":300,"h":140}
130 | }},
131 | "meta": {
132 | "app": "Adobe Animate",
133 | "version": "15.2.0.66",
134 | "image": "weapon_gun.png",
135 | "format": "RGBA8888",
136 | "size": {"w":1024,"h":1024},
137 | "scale": "1"
138 | }
139 | }
140 |
--------------------------------------------------------------------------------
/sprites/peeps/weapon_gun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/weapon_gun.png
--------------------------------------------------------------------------------
/sprites/peeps/weapon_shotgun.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "weapon_shotgun0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":300,"h":140},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
9 | "sourceSize": {"w":300,"h":140}
10 | },
11 | "weapon_shotgun0001":
12 | {
13 | "frame": {"x":300,"y":0,"w":300,"h":140},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
17 | "sourceSize": {"w":300,"h":140}
18 | },
19 | "weapon_shotgun0002":
20 | {
21 | "frame": {"x":600,"y":0,"w":300,"h":140},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
25 | "sourceSize": {"w":300,"h":140}
26 | },
27 | "weapon_shotgun0003":
28 | {
29 | "frame": {"x":0,"y":140,"w":300,"h":140},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
33 | "sourceSize": {"w":300,"h":140}
34 | },
35 | "weapon_shotgun0004":
36 | {
37 | "frame": {"x":300,"y":140,"w":300,"h":140},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
41 | "sourceSize": {"w":300,"h":140}
42 | },
43 | "weapon_shotgun0005":
44 | {
45 | "frame": {"x":600,"y":140,"w":300,"h":140},
46 | "rotated": false,
47 | "trimmed": false,
48 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
49 | "sourceSize": {"w":300,"h":140}
50 | },
51 | "weapon_shotgun0006":
52 | {
53 | "frame": {"x":0,"y":280,"w":300,"h":140},
54 | "rotated": false,
55 | "trimmed": false,
56 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
57 | "sourceSize": {"w":300,"h":140}
58 | },
59 | "weapon_shotgun0007":
60 | {
61 | "frame": {"x":300,"y":280,"w":300,"h":140},
62 | "rotated": false,
63 | "trimmed": false,
64 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
65 | "sourceSize": {"w":300,"h":140}
66 | },
67 | "weapon_shotgun0008":
68 | {
69 | "frame": {"x":600,"y":280,"w":300,"h":140},
70 | "rotated": false,
71 | "trimmed": false,
72 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
73 | "sourceSize": {"w":300,"h":140}
74 | },
75 | "weapon_shotgun0009":
76 | {
77 | "frame": {"x":0,"y":420,"w":300,"h":140},
78 | "rotated": false,
79 | "trimmed": false,
80 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
81 | "sourceSize": {"w":300,"h":140}
82 | },
83 | "weapon_shotgun0010":
84 | {
85 | "frame": {"x":300,"y":420,"w":300,"h":140},
86 | "rotated": false,
87 | "trimmed": false,
88 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
89 | "sourceSize": {"w":300,"h":140}
90 | },
91 | "weapon_shotgun0011":
92 | {
93 | "frame": {"x":600,"y":420,"w":300,"h":140},
94 | "rotated": false,
95 | "trimmed": false,
96 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
97 | "sourceSize": {"w":300,"h":140}
98 | },
99 | "weapon_shotgun0012":
100 | {
101 | "frame": {"x":0,"y":560,"w":300,"h":140},
102 | "rotated": false,
103 | "trimmed": false,
104 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
105 | "sourceSize": {"w":300,"h":140}
106 | },
107 | "weapon_shotgun0013":
108 | {
109 | "frame": {"x":300,"y":560,"w":300,"h":140},
110 | "rotated": false,
111 | "trimmed": false,
112 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
113 | "sourceSize": {"w":300,"h":140}
114 | },
115 | "weapon_shotgun0014":
116 | {
117 | "frame": {"x":600,"y":560,"w":300,"h":140},
118 | "rotated": false,
119 | "trimmed": false,
120 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
121 | "sourceSize": {"w":300,"h":140}
122 | },
123 | "weapon_shotgun0015":
124 | {
125 | "frame": {"x":0,"y":700,"w":300,"h":140},
126 | "rotated": false,
127 | "trimmed": false,
128 | "spriteSourceSize": {"x":0,"y":0,"w":300,"h":140},
129 | "sourceSize": {"w":300,"h":140}
130 | }},
131 | "meta": {
132 | "app": "Adobe Animate",
133 | "version": "15.2.0.66",
134 | "image": "weapon_shotgun.png",
135 | "format": "RGBA8888",
136 | "size": {"w":1024,"h":1024},
137 | "scale": "1"
138 | }
139 | }
140 |
--------------------------------------------------------------------------------
/sprites/peeps/weapon_shotgun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/peeps/weapon_shotgun.png
--------------------------------------------------------------------------------
/sprites/postcredits/end_button.json:
--------------------------------------------------------------------------------
1 | {"frames": {
2 |
3 | "end_button0000":
4 | {
5 | "frame": {"x":0,"y":0,"w":207,"h":57},
6 | "rotated": false,
7 | "trimmed": false,
8 | "spriteSourceSize": {"x":0,"y":0,"w":207,"h":57},
9 | "sourceSize": {"w":207,"h":57}
10 | },
11 | "end_button0001":
12 | {
13 | "frame": {"x":0,"y":57,"w":207,"h":57},
14 | "rotated": false,
15 | "trimmed": false,
16 | "spriteSourceSize": {"x":0,"y":0,"w":207,"h":57},
17 | "sourceSize": {"w":207,"h":57}
18 | },
19 | "end_button0002":
20 | {
21 | "frame": {"x":0,"y":114,"w":207,"h":57},
22 | "rotated": false,
23 | "trimmed": false,
24 | "spriteSourceSize": {"x":0,"y":0,"w":207,"h":57},
25 | "sourceSize": {"w":207,"h":57}
26 | },
27 | "end_button0003":
28 | {
29 | "frame": {"x":0,"y":171,"w":207,"h":57},
30 | "rotated": false,
31 | "trimmed": false,
32 | "spriteSourceSize": {"x":0,"y":0,"w":207,"h":57},
33 | "sourceSize": {"w":207,"h":57}
34 | },
35 | "end_button0004":
36 | {
37 | "frame": {"x":0,"y":228,"w":207,"h":57},
38 | "rotated": false,
39 | "trimmed": false,
40 | "spriteSourceSize": {"x":0,"y":0,"w":207,"h":57},
41 | "sourceSize": {"w":207,"h":57}
42 | }},
43 | "meta": {
44 | "app": "Adobe Animate",
45 | "version": "15.2.0.66",
46 | "image": "end_button.png",
47 | "format": "RGBA8888",
48 | "size": {"w":256,"h":512},
49 | "scale": "1"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/sprites/postcredits/end_button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/postcredits/end_button.png
--------------------------------------------------------------------------------
/sprites/postcredits/facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/postcredits/facebook.png
--------------------------------------------------------------------------------
/sprites/postcredits/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/postcredits/logo.png
--------------------------------------------------------------------------------
/sprites/postcredits/logo_.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/postcredits/logo_.png
--------------------------------------------------------------------------------
/sprites/postcredits/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/postcredits/twitter.png
--------------------------------------------------------------------------------
/sprites/quote/end_prototype.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/quote/end_prototype.png
--------------------------------------------------------------------------------
/sprites/quote/quote0001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/quote/quote0001.png
--------------------------------------------------------------------------------
/sprites/quote/quote0002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/quote/quote0002.png
--------------------------------------------------------------------------------
/sprites/quote/quote0003.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/quote/quote0003.png
--------------------------------------------------------------------------------
/sprites/quote/quote0004.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/quote/quote0004.png
--------------------------------------------------------------------------------
/sprites/snow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/snow.png
--------------------------------------------------------------------------------
/sprites/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ncase/wbwwb/7c68c7e44e66b5be95ebd07d22391de707090397/sprites/tv.png
--------------------------------------------------------------------------------