├── 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 --------------------------------------------------------------------------------