├── license.txt └── src ├── Bullet.as ├── Default.css ├── Enemy.as ├── EnemyBullet.as ├── MenuState.as ├── Mode.as ├── PlayState.as ├── Player.as ├── Preloader.as ├── Spawner.as ├── VictoryState.as └── data ├── asplode.mp3 ├── attract1.fgr ├── attract2.fgr ├── bot.png ├── bot_bullet.png ├── bullet.png ├── button.mp3 ├── countdown.mp3 ├── cursor.png ├── dirt.png ├── dirt_top.png ├── enemy.mp3 ├── gibs.png ├── hit.mp3 ├── hurt.mp3 ├── jam.mp3 ├── jet.mp3 ├── jet.png ├── jump.mp3 ├── land.mp3 ├── menu_hit.mp3 ├── menu_hit_2.mp3 ├── miniframe.png ├── mode.mp3 ├── shoot.mp3 ├── spaceman.png ├── spawner.png ├── spawner_gibs.png └── tech_tiles.png /license.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009 Adam 'Atomic' Saltsman 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | NOTE FROM THE AUTHOR: As far as I know, you only have to include 25 | this license if you are redistributing source code that includes 26 | the Flixel library. There is no need (or way, afaik) to include 27 | it in your compiled flash games and apps! -------------------------------------------------------------------------------- /src/Bullet.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import org.flixel.*; 4 | 5 | public class Bullet extends FlxSprite 6 | { 7 | [Embed(source="data/bullet.png")] private var ImgBullet:Class; 8 | [Embed(source="data/jump.mp3")] private var SndHit:Class; 9 | [Embed(source="data/shoot.mp3")] private var SndShoot:Class; 10 | 11 | public var speed:Number; 12 | 13 | public function Bullet() 14 | { 15 | super(); 16 | loadGraphic(ImgBullet,true); 17 | width = 6; 18 | height = 6; 19 | offset.x = 1; 20 | offset.y = 1; 21 | 22 | addAnimation("up",[0]); 23 | addAnimation("down",[1]); 24 | addAnimation("left",[2]); 25 | addAnimation("right",[3]); 26 | addAnimation("poof",[4, 5, 6, 7], 50, false); 27 | 28 | speed = 360; 29 | } 30 | 31 | override public function update():void 32 | { 33 | if(!alive) 34 | { 35 | if(finished) 36 | exists = false; 37 | } 38 | else if(touching) 39 | kill(); 40 | } 41 | 42 | override public function kill():void 43 | { 44 | if(!alive) 45 | return; 46 | velocity.x = 0; 47 | velocity.y = 0; 48 | if(onScreen()) 49 | FlxG.play(SndHit); 50 | alive = false; 51 | solid = false; 52 | play("poof"); 53 | } 54 | 55 | public function shoot(Location:FlxPoint, Aim:uint):void 56 | { 57 | FlxG.play(SndShoot); 58 | super.reset(Location.x-width/2,Location.y-height/2); 59 | solid = true; 60 | switch(Aim) 61 | { 62 | case UP: 63 | play("up"); 64 | velocity.y = -speed; 65 | break; 66 | case DOWN: 67 | play("down"); 68 | velocity.y = speed; 69 | break; 70 | case LEFT: 71 | play("left"); 72 | velocity.x = -speed; 73 | break; 74 | case RIGHT: 75 | play("right"); 76 | velocity.x = speed; 77 | break; 78 | default: 79 | break; 80 | } 81 | } 82 | } 83 | } -------------------------------------------------------------------------------- /src/Default.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/Default.css -------------------------------------------------------------------------------- /src/Enemy.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import flash.geom.Point; 4 | 5 | import org.flixel.*; 6 | 7 | public class Enemy extends FlxSprite 8 | { 9 | [Embed(source="data/bot.png")] protected var ImgBot:Class; 10 | [Embed(source="data/jet.png")] protected var ImgJet:Class; 11 | [Embed(source="data/asplode.mp3")] protected var SndExplode:Class; 12 | [Embed(source="data/hit.mp3")] protected var SndHit:Class; 13 | [Embed(source="data/jet.mp3")] protected var SndJet:Class; 14 | 15 | //References to other game objects: 16 | protected var _player:Player; //The player object 17 | protected var _bullets:FlxGroup; //A group of enemy bullet objects (Enemies shoot these out) 18 | protected var _gibs:FlxEmitter; //A group of bits and pieces that explode when the Enemy dies. 19 | 20 | //We use this number to figure out how fast the ship is flying 21 | protected var _thrust:Number; 22 | 23 | //A special effect - little poofs shoot out the back of the ship 24 | protected var _jets:FlxEmitter; 25 | 26 | //These are "timers" - numbers that count down until we want something interesting to happen. 27 | protected var _timer:Number; //Helps us decide when to fly and when to stop flying. 28 | protected var _shotClock:Number; //Helps us decide when to shoot. 29 | 30 | //This object isn't strictly necessary, and is only used with getMidpoint(). 31 | //By passing this object, we can avoid a potentially costly allocation of 32 | //a new FlxPoint() object by the getMidpoint() function. 33 | protected var _playerMidpoint:FlxPoint; 34 | 35 | //This is the constructor for the enemy class. Because we are 36 | //recycling enemies, we don't want our constructor to have any 37 | //required parameters. 38 | public function Enemy() 39 | { 40 | super(); 41 | loadRotatedGraphic(ImgBot,64,0,false,true); 42 | 43 | //We want the enemy's "hit box" or actual size to be 44 | //smaller than the enemy graphic itself, just by a few pixels. 45 | width = 12; 46 | height = 12; 47 | centerOffsets(); 48 | 49 | //Here we are setting up the jet particles 50 | // that shoot out the back of the ship. 51 | _jets = new FlxEmitter(); 52 | _jets.setRotation(); 53 | _jets.makeParticles(ImgJet,15,0,false,0); 54 | 55 | //These parameters help control the ship's 56 | //speed and direction during the update() loop. 57 | maxAngular = 120; 58 | angularDrag = 400; 59 | drag.x = 35; 60 | _thrust = 0; 61 | _playerMidpoint = new FlxPoint(); 62 | } 63 | 64 | //Each time an Enemy is recycled (in this game, by the Spawner object) 65 | //we call init() on it afterward. That allows us to set critical parameters 66 | //like references to the player object and the ship's new position. 67 | public function init(xPos:int,yPos:int,Bullets:FlxGroup,Gibs:FlxEmitter,ThePlayer:Player):void 68 | { 69 | _player = ThePlayer; 70 | _bullets = Bullets; 71 | _gibs = Gibs; 72 | 73 | reset(xPos - width/2,yPos - height/2); 74 | angle = angleTowardPlayer(); 75 | health = 2; //Enemies take 2 shots to kill 76 | _timer = 0; 77 | _shotClock = 0; 78 | } 79 | 80 | //Called by flixel to help clean up memory. 81 | override public function destroy():void 82 | { 83 | super.destroy(); 84 | 85 | _player = null; 86 | _bullets = null; 87 | _gibs = null; 88 | 89 | _jets.destroy(); 90 | _jets = null; 91 | 92 | _playerMidpoint = null; 93 | } 94 | 95 | //This is the main flixel update function or loop function. 96 | //Most of the enemy's logic or behavior is in this function here. 97 | override public function update():void 98 | { 99 | //Then, rotate toward that angle. 100 | //We could rotate instantly toward the player by simply calling: 101 | //angle = angleTowardPlayer(); 102 | //However, we want some less predictable, more wobbly behavior. 103 | var da:Number = angleTowardPlayer(); 104 | if(da < angle) 105 | angularAcceleration = -angularDrag; 106 | else if(da > angle) 107 | angularAcceleration = angularDrag; 108 | else 109 | angularAcceleration = 0; 110 | 111 | //Figure out if we want the jets on or not. 112 | _timer += FlxG.elapsed; 113 | if(_timer > 8) 114 | _timer = 0; 115 | var jetsOn:Boolean = _timer < 6; 116 | 117 | //Set the bot's movement speed and direction 118 | //based on angle and whether the jets are on. 119 | _thrust = FlxU.computeVelocity(_thrust,(jetsOn?90:0),drag.x,60); 120 | FlxU.rotatePoint(0,_thrust,0,0,angle,velocity); 121 | 122 | //Shooting - three shots every few seconds 123 | if(onScreen()) 124 | { 125 | var shoot:Boolean = false; 126 | var os:Number = _shotClock; 127 | _shotClock += FlxG.elapsed; 128 | if((os < 4.0) && (_shotClock >= 4.0)) 129 | { 130 | _shotClock = 0; 131 | shoot = true; 132 | } 133 | else if((os < 3.5) && (_shotClock >= 3.5)) 134 | shoot = true; 135 | else if((os < 3.0) && (_shotClock >= 3.0)) 136 | shoot = true; 137 | 138 | //If we rolled over one of those time thresholds, 139 | //shoot a bullet out along the angle we're currently facing. 140 | if(shoot) 141 | { 142 | //First, recycle a bullet from the bullet pile. 143 | //If there are none, recycle will automatically create one for us. 144 | var b:EnemyBullet = _bullets.recycle(EnemyBullet) as EnemyBullet; 145 | //Then, shoot it from our midpoint out along our angle. 146 | b.shoot(getMidpoint(_point),angle); 147 | } 148 | } 149 | 150 | //Then call FlxSprite's update() function, to automate 151 | // our motion and animation and stuff. 152 | super.update(); 153 | 154 | //Finally, update the jet particles shooting out the back of the ship. 155 | if(jetsOn) 156 | { 157 | if(!_jets.on) 158 | { 159 | //If they're supposed to be on and they're not, 160 | //turn em on and play a little sound. 161 | _jets.start(false,0.5,0.01); 162 | if(onScreen()) 163 | FlxG.play(SndJet); 164 | } 165 | //Then, position the jets at the center of the Enemy, 166 | //and point the jets the opposite way from where we're moving. 167 | _jets.at(this); 168 | _jets.setXSpeed(-velocity.x-30,-velocity.x+30); 169 | _jets.setYSpeed(-velocity.y-30,-velocity.y+30); 170 | } 171 | else //If jets are supposed to be off, just turn em off. 172 | _jets.on = false; 173 | //Finally, update the jet emitter and all its member sprites. 174 | _jets.update(); 175 | } 176 | 177 | //Even though we updated the jets after we updated the Enemy, 178 | //we want to draw the jets below the Enemy, so we call _jets.draw() first. 179 | override public function draw():void 180 | { 181 | _jets.draw(); 182 | super.draw(); 183 | } 184 | 185 | //This function is called when player bullets hit the Enemy. 186 | //The enemy is told to flicker, points are awarded to the player, 187 | //and damage is dealt to the Enemy. 188 | override public function hurt(Damage:Number):void 189 | { 190 | FlxG.play(SndHit); 191 | flicker(0.2); 192 | FlxG.score += 10; 193 | super.hurt(Damage); 194 | } 195 | 196 | //Called to kill the enemy. A cool sound is played, 197 | //the jets are turned off, bits are exploded, and points are rewarded. 198 | override public function kill():void 199 | { 200 | if(!alive) 201 | return; 202 | FlxG.play(SndExplode); 203 | super.kill(); 204 | flicker(0); 205 | _jets.kill(); 206 | _gibs.at(this); 207 | _gibs.start(true,3,0,20); 208 | FlxG.score += 200; 209 | } 210 | 211 | //A helper function that returns the angle between 212 | //the Enemy's midpoint and the player's midpoint. 213 | protected function angleTowardPlayer():Number 214 | { 215 | return FlxU.getAngle(getMidpoint(_point),_player.getMidpoint(_playerMidpoint)); 216 | } 217 | } 218 | } 219 | -------------------------------------------------------------------------------- /src/EnemyBullet.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import org.flixel.*; 4 | 5 | public class EnemyBullet extends FlxSprite 6 | { 7 | [Embed(source="data/bot_bullet.png")] private var ImgBullet:Class; 8 | [Embed(source="data/jump.mp3")] private var SndHit:Class; 9 | [Embed(source="data/enemy.mp3")] private var SndShoot:Class; 10 | 11 | public var speed:Number; 12 | 13 | public function EnemyBullet() 14 | { 15 | super(); 16 | loadGraphic(ImgBullet,true); 17 | addAnimation("idle",[0, 1], 50); 18 | addAnimation("poof",[2, 3, 4], 50, false); 19 | speed = 120; 20 | } 21 | 22 | override public function update():void 23 | { 24 | if(!alive) 25 | { 26 | if(finished) 27 | exists = false; 28 | } 29 | else if(touching) 30 | kill(); 31 | } 32 | 33 | override public function kill():void 34 | { 35 | if(!alive) 36 | return; 37 | velocity.x = 0; 38 | velocity.y = 0; 39 | if(onScreen()) 40 | FlxG.play(SndHit); 41 | alive = false; 42 | solid = false; 43 | play("poof"); 44 | } 45 | 46 | public function shoot(Location:FlxPoint, Angle:Number):void 47 | { 48 | FlxG.play(SndShoot,0.5); 49 | super.reset(Location.x-width/2,Location.y-height/2); 50 | FlxU.rotatePoint(0,speed,0,0,Angle,_point); 51 | velocity.x = _point.x; 52 | velocity.y = _point.y; 53 | solid = true; 54 | play("idle"); 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /src/MenuState.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import flash.geom.Rectangle; 4 | import flash.net.SharedObject; 5 | 6 | import org.flixel.*; 7 | import org.flixel.plugin.DebugPathDisplay; 8 | 9 | public class MenuState extends FlxState 10 | { 11 | //Some graphics and sounds 12 | [Embed(source="data/bot.png")] protected var ImgEnemy:Class; 13 | [Embed(source="data/spawner_gibs.png")] public var ImgGibs:Class; 14 | [Embed(source="data/cursor.png")] public var ImgCursor:Class; 15 | [Embed(source="data/menu_hit.mp3")] public var SndHit:Class; 16 | [Embed(source="data/menu_hit_2.mp3")] public var SndHit2:Class; 17 | 18 | //Replay data for the "Attract Mode" gameplay demos 19 | [Embed(source="data/attract1.fgr",mimeType="application/octet-stream")] public var Attract1:Class; 20 | [Embed(source="data/attract2.fgr",mimeType="application/octet-stream")] public var Attract2:Class; 21 | 22 | public var gibs:FlxEmitter; 23 | public var playButton:FlxButton; 24 | public var title1:FlxText; 25 | public var title2:FlxText; 26 | public var fading:Boolean; 27 | public var timer:Number; 28 | public var attractMode:Boolean; 29 | 30 | public var pathFollower:FlxSprite; 31 | public var testPath:FlxPath; 32 | 33 | override public function create():void 34 | { 35 | FlxG.bgColor = 0xff131c1b; 36 | 37 | //Simple use of flixel save game object. 38 | //Tracks number of times the game has been played. 39 | var save:FlxSave = new FlxSave(); 40 | if(save.bind("Mode")) 41 | { 42 | if(save.data.plays == null) 43 | save.data.plays = 0 as Number; 44 | else 45 | save.data.plays++; 46 | FlxG.log("Number of plays: "+save.data.plays); 47 | //save.erase(); 48 | save.close(); 49 | } 50 | 51 | //All the bits that blow up when the text smooshes together 52 | gibs = new FlxEmitter(FlxG.width/2-50,FlxG.height/2-10); 53 | gibs.setSize(100,30); 54 | gibs.setYSpeed(-200,-20); 55 | gibs.setRotation(-720,720); 56 | gibs.gravity = 100; 57 | gibs.makeParticles(ImgGibs,650,32,true,0); 58 | add(gibs); 59 | 60 | //the letters "mo" 61 | title1 = new FlxText(FlxG.width + 16,FlxG.height/3,64,"mo"); 62 | title1.size = 32; 63 | title1.color = 0x3a5c39; 64 | title1.antialiasing = true; 65 | title1.velocity.x = -FlxG.width; 66 | add(title1); 67 | 68 | //the letters "de" 69 | title2 = new FlxText(-60,title1.y,title1.width,"de"); 70 | title2.size = title1.size; 71 | title2.color = title1.color; 72 | title2.antialiasing = title1.antialiasing; 73 | title2.velocity.x = FlxG.width; 74 | add(title2); 75 | 76 | fading = false; 77 | timer = 0; 78 | attractMode = false; 79 | 80 | /*silly path following test 81 | pathFollower = new FlxSprite(-20,-20,ImgEnemy); 82 | testPath = new FlxPath(); 83 | add(pathFollower);//*/ 84 | 85 | FlxG.mouse.show(ImgCursor,2); 86 | } 87 | 88 | override public function destroy():void 89 | { 90 | super.destroy(); 91 | gibs = null; 92 | playButton = null; 93 | title1 = null; 94 | title2 = null; 95 | 96 | /*silly path following test 97 | testPath.destroy();//*/ 98 | } 99 | 100 | override public function update():void 101 | { 102 | /*silly path following test code 103 | if(FlxG.mouse.justPressed() && FlxG.keys.SPACE) 104 | { 105 | timer = 0; 106 | testPath.addPoint(FlxG.mouse); 107 | if(pathFollower.path == null) 108 | pathFollower.followPath(testPath,100,FlxObject.PATH_LOOP_FORWARD,true); 109 | }//*/ 110 | 111 | super.update(); 112 | 113 | if(title2.x > title1.x + title1.width - 4) 114 | { 115 | //Once mo and de cross each other, fix their positions 116 | title2.x = title1.x + title1.width - 4; 117 | title1.velocity.x = 0; 118 | title2.velocity.x = 0; 119 | 120 | //Then, play a cool sound, change their color, and blow up pieces everywhere 121 | FlxG.play(SndHit); 122 | FlxG.flash(0xffd8eba2,0.5); 123 | FlxG.shake(0.035,0.5); 124 | title1.color = 0xd8eba2; 125 | title2.color = 0xd8eba2; 126 | gibs.start(true,5); 127 | title1.angle = FlxG.random()*30-15; 128 | title2.angle = FlxG.random()*30-15; 129 | 130 | //Then we're going to add the text and buttons and things that appear 131 | //If we were hip we'd use our own button animations, but we'll just recolor 132 | //the stock ones for now instead. 133 | var text:FlxText; 134 | text = new FlxText(FlxG.width/2-50,FlxG.height/3+39,100,"by Adam Atomic") 135 | text.alignment = "center"; 136 | text.color = 0x3a5c39; 137 | add(text); 138 | 139 | var flixelButton:FlxButton = new FlxButton(FlxG.width/2-40,FlxG.height/3+54,"flixel.org",onFlixel); 140 | flixelButton.color = 0xff729954; 141 | flixelButton.label.color = 0xffd8eba2; 142 | add(flixelButton); 143 | 144 | var dannyButton:FlxButton = new FlxButton(flixelButton.x,flixelButton.y + 22,"music: dannyB",onDanny); 145 | dannyButton.color = flixelButton.color; 146 | dannyButton.label.color = flixelButton.label.color; 147 | add(dannyButton); 148 | 149 | text = new FlxText(FlxG.width/2-40,FlxG.height/3+139,80,"X+C TO PLAY"); 150 | text.color = 0x729954; 151 | text.alignment = "center"; 152 | add(text); 153 | 154 | playButton = new FlxButton(flixelButton.x,flixelButton.y + 82,"CLICK HERE",onPlay); 155 | playButton.color = flixelButton.color; 156 | playButton.label.color = flixelButton.label.color; 157 | add(playButton); 158 | } 159 | 160 | //X + C were pressed, fade out and change to play state. 161 | //OR, if we sat on the menu too long, launch the attract mode instead! 162 | timer += FlxG.elapsed; 163 | if(timer >= 10) //go into demo mode if no buttons are pressed for 10 seconds 164 | attractMode = true; 165 | if(!fading && ((FlxG.keys.X && FlxG.keys.C) || attractMode)) 166 | { 167 | fading = true; 168 | FlxG.play(SndHit2); 169 | FlxG.flash(0xffd8eba2,0.5); 170 | FlxG.fade(0xff131c1b,1,onFade); 171 | } 172 | } 173 | 174 | //These are all "event handlers", or "callbacks". 175 | //These first three are just called when the 176 | //corresponding buttons are pressed with the mouse. 177 | protected function onFlixel():void 178 | { 179 | FlxU.openURL("http://flixel.org"); 180 | } 181 | 182 | protected function onDanny():void 183 | { 184 | FlxU.openURL("http://dbsoundworks.com"); 185 | } 186 | 187 | protected function onPlay():void 188 | { 189 | playButton.exists = false; 190 | FlxG.play(SndHit2); 191 | } 192 | 193 | //This function is passed to FlxG.fade() when we are ready to go to the next game state. 194 | //When FlxG.fade() finishes, it will call this, which in turn will either load 195 | //up a game demo/replay, or let the player start playing, depending on user input. 196 | protected function onFade():void 197 | { 198 | if(attractMode) 199 | FlxG.loadReplay((FlxG.random()<0.5)?(new Attract1()):(new Attract2()),new PlayState(),["ANY"],22,onDemoComplete); 200 | else 201 | FlxG.switchState(new PlayState()); 202 | } 203 | 204 | //This function is called by FlxG.loadReplay() when the replay finishes. 205 | //Here, we initiate another fade effect. 206 | protected function onDemoComplete():void 207 | { 208 | FlxG.fade(0xff131c1b,1,onDemoFaded); 209 | } 210 | 211 | //Finally, we have another function called by FlxG.fade(), this time 212 | //in relation to the callback above. It stops the replay, and resets the game 213 | //once the gameplay demo has faded out. 214 | protected function onDemoFaded():void 215 | { 216 | FlxG.stopReplay(); 217 | FlxG.resetGame(); 218 | } 219 | } 220 | } 221 | -------------------------------------------------------------------------------- /src/Mode.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import org.flixel.*; 4 | 5 | [SWF(width="640", height="480", backgroundColor="#000000")] 6 | [Frame(factoryClass="Preloader")] 7 | 8 | public class Mode extends FlxGame 9 | { 10 | public function Mode():void 11 | { 12 | super(320,240,MenuState,2,50,50); 13 | forceDebugger = true; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/PlayState.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import org.flixel.*; 4 | 5 | public class PlayState extends FlxState 6 | { 7 | [Embed(source="data/tech_tiles.png")] protected var ImgTech:Class; 8 | [Embed(source="data/dirt_top.png")] protected var ImgDirtTop:Class; 9 | [Embed(source="data/dirt.png")] protected var ImgDirt:Class; 10 | [Embed(source="data/mode.mp3")] protected var SndMode:Class; 11 | [Embed(source="data/countdown.mp3")] protected var SndCount:Class; 12 | [Embed(source="data/gibs.png")] private var ImgGibs:Class; 13 | [Embed(source="data/spawner_gibs.png")] private var ImgSpawnerGibs:Class; 14 | [Embed(source="data/miniframe.png")] private var ImgMiniFrame:Class; 15 | 16 | //major game object storage 17 | protected var _blocks:FlxGroup; 18 | protected var _decorations:FlxGroup; 19 | protected var _bullets:FlxGroup; 20 | protected var _player:Player; 21 | protected var _enemies:FlxGroup; 22 | protected var _spawners:FlxGroup; 23 | protected var _enemyBullets:FlxGroup; 24 | protected var _littleGibs:FlxEmitter; 25 | protected var _bigGibs:FlxEmitter; 26 | protected var _hud:FlxGroup; 27 | protected var _gunjam:FlxGroup; 28 | 29 | //meta groups, to help speed up collisions 30 | protected var _objects:FlxGroup; 31 | protected var _hazards:FlxGroup; 32 | 33 | //HUD/User Interface stuff 34 | protected var _score:FlxText; 35 | protected var _score2:FlxText; 36 | protected var _scoreTimer:Number; 37 | protected var _jamTimer:Number; 38 | 39 | //just to prevent weirdness during level transition 40 | protected var _fading:Boolean; 41 | 42 | override public function create():void 43 | { 44 | FlxG.mouse.hide(); 45 | 46 | //Here we are creating a pool of 100 little metal bits that can be exploded. 47 | //We will recycle the crap out of these! 48 | _littleGibs = new FlxEmitter(); 49 | _littleGibs.setXSpeed(-150,150); 50 | _littleGibs.setYSpeed(-200,0); 51 | _littleGibs.setRotation(-720,-720); 52 | _littleGibs.gravity = 350; 53 | _littleGibs.bounce = 0.5; 54 | _littleGibs.makeParticles(ImgGibs,100,10,true,0.5); 55 | 56 | //Next we create a smaller pool of larger metal bits for exploding. 57 | _bigGibs = new FlxEmitter(); 58 | _bigGibs.setXSpeed(-200,200); 59 | _bigGibs.setYSpeed(-300,0); 60 | _bigGibs.setRotation(-720,-720); 61 | _bigGibs.gravity = 350; 62 | _bigGibs.bounce = 0.35; 63 | _bigGibs.makeParticles(ImgSpawnerGibs,50,20,true,0.5); 64 | 65 | //Then we'll set up the rest of our object groups or pools 66 | _blocks = new FlxGroup(); 67 | _decorations = new FlxGroup(); 68 | _enemies = new FlxGroup(); 69 | _spawners = new FlxGroup(); 70 | _hud = new FlxGroup(); 71 | _enemyBullets = new FlxGroup(); 72 | _bullets = new FlxGroup(); 73 | 74 | //Now that we have references to the bullets and metal bits, 75 | //we can create the player object. 76 | _player = new Player(316,300,_bullets,_littleGibs); 77 | 78 | //This refers to a custom function down at the bottom of the file 79 | //that creates all our level geometry with a total size of 640x480. 80 | //This in turn calls buildRoom() a bunch of times, which in turn 81 | //is responsible for adding the spawners and spawn-cameras. 82 | generateLevel(); 83 | 84 | //Add bots and spawners after we add blocks to the state, 85 | //so that they're drawn on top of the level, and so that 86 | //the bots are drawn on top of both the blocks + the spawners. 87 | add(_spawners); 88 | add(_littleGibs); 89 | add(_bigGibs); 90 | add(_blocks); 91 | add(_decorations); 92 | add(_enemies); 93 | 94 | //Then we add the player and set up the scrolling camera, 95 | //which will automatically set the boundaries of the world. 96 | add(_player); 97 | FlxG.camera.setBounds(0,0,640,640,true); 98 | FlxG.camera.follow(_player,FlxCamera.STYLE_PLATFORMER); 99 | 100 | //We add the bullets to the scene here, 101 | //so they're drawn on top of pretty much everything 102 | add(_enemyBullets); 103 | add(_bullets); 104 | add(_hud); 105 | 106 | //Finally we are going to sort things into a couple of helper groups. 107 | //We don't add these groups to the state, we just use them for collisions later! 108 | _hazards = new FlxGroup(); 109 | _hazards.add(_enemyBullets); 110 | _hazards.add(_spawners); 111 | _hazards.add(_enemies); 112 | _objects = new FlxGroup(); 113 | _objects.add(_enemyBullets); 114 | _objects.add(_bullets); 115 | _objects.add(_enemies); 116 | _objects.add(_player); 117 | _objects.add(_littleGibs); 118 | _objects.add(_bigGibs); 119 | 120 | //From here on out we are making objects for the HUD, 121 | //that is, the player score, number of spawners left, etc. 122 | //First, we'll create a text field for the current score 123 | _score = new FlxText(FlxG.width/4,0,FlxG.width/2); 124 | _score.setFormat(null,16,0xd8eba2,"center",0x131c1b); 125 | _hud.add(_score); 126 | if(FlxG.scores.length < 2) 127 | { 128 | FlxG.scores.push(0); 129 | FlxG.scores.push(0); 130 | } 131 | 132 | //Then for the player's highest and last scores 133 | if(FlxG.score > FlxG.scores[0]) 134 | FlxG.scores[0] = FlxG.score; 135 | if(FlxG.scores[0] != 0) 136 | { 137 | _score2 = new FlxText(FlxG.width/2,0,FlxG.width/2); 138 | _score2.setFormat(null,8,0xd8eba2,"right",_score.shadow); 139 | _hud.add(_score2); 140 | _score2.text = "HIGHEST: "+FlxG.scores[0]+"\nLAST: "+FlxG.score; 141 | } 142 | FlxG.score = 0; 143 | _scoreTimer = 0; 144 | 145 | //Then we create the "gun jammed" notification 146 | _gunjam = new FlxGroup(); 147 | _gunjam.add(new FlxSprite(0,FlxG.height-22).makeGraphic(FlxG.width,24,0xff131c1b)); 148 | _gunjam.add(new FlxText(0,FlxG.height-22,FlxG.width,"GUN IS JAMMED").setFormat(null,16,0xd8eba2,"center")); 149 | _gunjam.visible = false; 150 | _hud.add(_gunjam); 151 | 152 | //After we add all the objects to the HUD, we can go through 153 | //and set any property we want on all the objects we added 154 | //with this sweet function. In this case, we want to set 155 | //the scroll factors to zero, to make sure the HUD doesn't 156 | //wiggle around while we play. 157 | _hud.setAll("scrollFactor",new FlxPoint(0,0)); 158 | _hud.setAll("cameras",[FlxG.camera]); 159 | 160 | FlxG.playMusic(SndMode); 161 | FlxG.flash(0xff131c1b); 162 | _fading = false; 163 | 164 | //Debugger Watch examples 165 | FlxG.watch(_player,"x"); 166 | FlxG.watch(_player,"y"); 167 | FlxG.watch(FlxG,"score"); 168 | } 169 | 170 | override public function destroy():void 171 | { 172 | super.destroy(); 173 | 174 | _blocks = null; 175 | _decorations = null; 176 | _bullets = null; 177 | _player = null; 178 | _enemies = null; 179 | _spawners = null; 180 | _enemyBullets = null; 181 | _littleGibs = null; 182 | _bigGibs = null; 183 | _hud = null; 184 | _gunjam = null; 185 | 186 | //meta groups, to help speed up collisions 187 | _objects = null; 188 | _hazards = null; 189 | 190 | //HUD/User Interface stuff 191 | _score = null; 192 | _score2 = null; 193 | } 194 | 195 | override public function update():void 196 | { 197 | //save off the current score and update the game state 198 | var oldScore:uint = FlxG.score; 199 | super.update(); 200 | 201 | //collisions with environment 202 | FlxG.collide(_blocks,_objects); 203 | FlxG.overlap(_hazards,_player,overlapped); 204 | FlxG.overlap(_bullets,_hazards,overlapped); 205 | 206 | //check to see if the player scored any points this frame 207 | var scoreChanged:Boolean = oldScore != FlxG.score 208 | 209 | //Jammed message 210 | if(FlxG.keys.justPressed("C") && _player.flickering) 211 | { 212 | _jamTimer = 1; 213 | _gunjam.visible = true; 214 | } 215 | if(_jamTimer > 0) 216 | { 217 | if(!_player.flickering) 218 | _jamTimer = 0; 219 | _jamTimer -= FlxG.elapsed; 220 | if(_jamTimer < 0) 221 | _gunjam.visible = false; 222 | } 223 | 224 | if(!_fading) 225 | { 226 | //Score + countdown stuffs 227 | if(scoreChanged) 228 | _scoreTimer = 2; 229 | _scoreTimer -= FlxG.elapsed; 230 | if(_scoreTimer < 0) 231 | { 232 | if(FlxG.score > 0) 233 | { 234 | if(FlxG.score > 100) 235 | FlxG.score -= 100; 236 | else 237 | { 238 | FlxG.score = 0; 239 | _player.kill(); 240 | } 241 | _scoreTimer = 1; 242 | scoreChanged = true; 243 | 244 | //Play loud beeps if your score is low 245 | var volume:Number = 0.35; 246 | if(FlxG.score < 600) 247 | volume = 1.0; 248 | FlxG.play(SndCount,volume); 249 | } 250 | } 251 | 252 | //Fade out to victory screen stuffs 253 | if(_spawners.countLiving() <= 0) 254 | { 255 | _fading = true; 256 | FlxG.fade(0xffd8eba2,3,onVictory); 257 | } 258 | } 259 | 260 | //actually update score text if it changed 261 | if(scoreChanged) 262 | { 263 | if(!_player.alive) FlxG.score = 0; 264 | _score.text = FlxG.score.toString(); 265 | } 266 | } 267 | 268 | //This is an overlap callback function, triggered by the calls to FlxU.overlap(). 269 | protected function overlapped(Sprite1:FlxSprite,Sprite2:FlxSprite):void 270 | { 271 | if((Sprite1 is EnemyBullet) || (Sprite1 is Bullet)) 272 | Sprite1.kill(); 273 | Sprite2.hurt(1); 274 | } 275 | 276 | //A FlxG.fade callback, like in MenuState. 277 | protected function onVictory():void 278 | { 279 | FlxG.music.stop(); 280 | FlxG.switchState(new VictoryState()); 281 | } 282 | 283 | //These next two functions look crazy, but all they're doing is generating 284 | //the level structure and placing the enemy spawners. 285 | protected function generateLevel():void 286 | { 287 | var r:uint = 160; 288 | var b:FlxTileblock; 289 | 290 | //First, we create the walls, ceiling and floors: 291 | b = new FlxTileblock(0,0,640,16); 292 | b.loadTiles(ImgTech); 293 | _blocks.add(b); 294 | 295 | b = new FlxTileblock(0,16,16,640-16); 296 | b.loadTiles(ImgTech); 297 | _blocks.add(b); 298 | 299 | b = new FlxTileblock(640-16,16,16,640-16); 300 | b.loadTiles(ImgTech); 301 | _blocks.add(b); 302 | 303 | b = new FlxTileblock(16,640-24,640-32,8); 304 | b.loadTiles(ImgDirtTop); 305 | _blocks.add(b); 306 | 307 | b = new FlxTileblock(16,640-16,640-32,16); 308 | b.loadTiles(ImgDirt); 309 | _blocks.add(b); 310 | 311 | //Then we split the game world up into a 4x4 grid, 312 | //and generate some blocks in each area. Some grid spaces 313 | //also get a spawner! 314 | buildRoom(r*0,r*0,true); 315 | buildRoom(r*1,r*0); 316 | buildRoom(r*2,r*0); 317 | buildRoom(r*3,r*0,true); 318 | buildRoom(r*0,r*1,true); 319 | buildRoom(r*1,r*1); 320 | buildRoom(r*2,r*1); 321 | buildRoom(r*3,r*1,true); 322 | buildRoom(r*0,r*2); 323 | buildRoom(r*1,r*2); 324 | buildRoom(r*2,r*2); 325 | buildRoom(r*3,r*2); 326 | buildRoom(r*0,r*3,true); 327 | buildRoom(r*1,r*3); 328 | buildRoom(r*2,r*3); 329 | buildRoom(r*3,r*3,true); 330 | } 331 | 332 | //Just plops down a spawner and some blocks - haphazard and crappy atm but functional! 333 | protected function buildRoom(RX:uint,RY:uint,Spawners:Boolean=false):void 334 | { 335 | //first place the spawn point (if necessary) 336 | var rw:uint = 20; 337 | var sx:uint; 338 | var sy:uint; 339 | if(Spawners) 340 | { 341 | sx = 2+FlxG.random()*(rw-7); 342 | sy = 2+FlxG.random()*(rw-7); 343 | } 344 | 345 | //then place a bunch of blocks 346 | var numBlocks:uint = 3+FlxG.random()*4; 347 | if(!Spawners) numBlocks++; 348 | var maxW:uint = 10; 349 | var minW:uint = 2; 350 | var maxH:uint = 8; 351 | var minH:uint = 1; 352 | var bx:uint; 353 | var by:uint; 354 | var bw:uint; 355 | var bh:uint; 356 | var check:Boolean; 357 | for(var i:uint = 0; i < numBlocks; i++) 358 | { 359 | do 360 | { 361 | //keep generating different specs if they overlap the spawner 362 | bw = minW + FlxG.random()*(maxW-minW); 363 | bh = minH + FlxG.random()*(maxH-minH); 364 | bx = -1 + FlxG.random()*(rw+1-bw); 365 | by = -1 + FlxG.random()*(rw+1-bh); 366 | if(Spawners) 367 | check = ((sx>bx+bw) || (sx+3by+bh) || (sy+3= 4) && (bh >= 5)) 379 | { 380 | b = new FlxTileblock(RX+bx*8+8,RY+by*8,bw*8-16,8); 381 | b.loadTiles(ImgDirtTop); 382 | _decorations.add(b); 383 | 384 | b = new FlxTileblock(RX+bx*8+8,RY+by*8+8,bw*8-16,bh*8-24); 385 | b.loadTiles(ImgDirt); 386 | _decorations.add(b); 387 | } 388 | } 389 | 390 | if(Spawners) 391 | { 392 | //Finally actually add the spawner 393 | var sp:Spawner = new Spawner(RX+sx*8,RY+sy*8,_bigGibs,_enemies,_enemyBullets,_littleGibs,_player); 394 | _spawners.add(sp); 395 | 396 | //Then create a dedicated camera to watch the spawner 397 | _hud.add(new FlxSprite(3 + (_spawners.length-1)*16, 3, ImgMiniFrame)); 398 | var camera:FlxCamera = new FlxCamera(10 + (_spawners.length-1)*32,10,24,24,1); 399 | camera.follow(sp); 400 | FlxG.addCamera(camera); 401 | } 402 | } 403 | } 404 | } 405 | -------------------------------------------------------------------------------- /src/Player.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import org.flixel.*; 4 | 5 | public class Player extends FlxSprite 6 | { 7 | [Embed(source="data/spaceman.png")] protected var ImgSpaceman:Class; 8 | 9 | [Embed(source="data/jump.mp3")] protected var SndJump:Class; 10 | [Embed(source="data/land.mp3")] protected var SndLand:Class; 11 | [Embed(source="data/asplode.mp3")] protected var SndExplode:Class; 12 | [Embed(source="data/menu_hit_2.mp3")] protected var SndExplode2:Class; 13 | [Embed(source="data/hurt.mp3")] protected var SndHurt:Class; 14 | [Embed(source="data/jam.mp3")] protected var SndJam:Class; 15 | 16 | protected var _jumpPower:int; 17 | protected var _bullets:FlxGroup; 18 | protected var _aim:uint; 19 | protected var _restart:Number; 20 | protected var _gibs:FlxEmitter; 21 | 22 | //This is the player object class. Most of the comments I would put in here 23 | //would be near duplicates of the Enemy class, so if you're confused at all 24 | //I'd recommend checking that out for some ideas! 25 | public function Player(X:int,Y:int,Bullets:FlxGroup,Gibs:FlxEmitter) 26 | { 27 | super(X,Y); 28 | loadGraphic(ImgSpaceman,true,true,8); 29 | _restart = 0; 30 | 31 | //bounding box tweaks 32 | width = 6; 33 | height = 7; 34 | offset.x = 1; 35 | offset.y = 1; 36 | 37 | //basic player physics 38 | var runSpeed:uint = 80; 39 | drag.x = runSpeed*8; 40 | acceleration.y = 420; 41 | _jumpPower = 200; 42 | maxVelocity.x = runSpeed; 43 | maxVelocity.y = _jumpPower; 44 | 45 | //animations 46 | addAnimation("idle", [0]); 47 | addAnimation("run", [1, 2, 3, 0], 12); 48 | addAnimation("jump", [4]); 49 | addAnimation("idle_up", [5]); 50 | addAnimation("run_up", [6, 7, 8, 5], 12); 51 | addAnimation("jump_up", [9]); 52 | addAnimation("jump_down", [10]); 53 | 54 | //bullet stuff 55 | _bullets = Bullets; 56 | _gibs = Gibs; 57 | } 58 | 59 | override public function destroy():void 60 | { 61 | super.destroy(); 62 | _bullets = null; 63 | _gibs = null; 64 | } 65 | 66 | override public function update():void 67 | { 68 | //game restart timer 69 | if(!alive) 70 | { 71 | _restart += FlxG.elapsed; 72 | if(_restart > 2) 73 | FlxG.resetState(); 74 | return; 75 | } 76 | 77 | //make a little noise if you just touched the floor 78 | if(justTouched(FLOOR) && (velocity.y > 50)) 79 | FlxG.play(SndLand); 80 | 81 | //MOVEMENT 82 | acceleration.x = 0; 83 | if(FlxG.keys.LEFT) 84 | { 85 | facing = LEFT; 86 | acceleration.x -= drag.x; 87 | } 88 | else if(FlxG.keys.RIGHT) 89 | { 90 | facing = RIGHT; 91 | acceleration.x += drag.x; 92 | } 93 | if(FlxG.keys.justPressed("X") && !velocity.y) 94 | { 95 | velocity.y = -_jumpPower; 96 | FlxG.play(SndJump); 97 | } 98 | 99 | //AIMING 100 | if(FlxG.keys.UP) 101 | _aim = UP; 102 | else if(FlxG.keys.DOWN && velocity.y) 103 | _aim = DOWN; 104 | else 105 | _aim = facing; 106 | 107 | //ANIMATION 108 | if(velocity.y != 0) 109 | { 110 | if(_aim == UP) play("jump_up"); 111 | else if(_aim == DOWN) play("jump_down"); 112 | else play("jump"); 113 | } 114 | else if(velocity.x == 0) 115 | { 116 | if(_aim == UP) play("idle_up"); 117 | else play("idle"); 118 | } 119 | else 120 | { 121 | if(_aim == UP) play("run_up"); 122 | else play("run"); 123 | } 124 | 125 | //SHOOTING 126 | if(FlxG.keys.justPressed("C")) 127 | { 128 | if(flickering) 129 | FlxG.play(SndJam); 130 | else 131 | { 132 | getMidpoint(_point); 133 | (_bullets.recycle(Bullet) as Bullet).shoot(_point,_aim); 134 | if(_aim == DOWN) 135 | velocity.y -= 36; 136 | } 137 | } 138 | } 139 | 140 | override public function hurt(Damage:Number):void 141 | { 142 | Damage = 0; 143 | if(flickering) 144 | return; 145 | FlxG.play(SndHurt); 146 | flicker(1.3); 147 | if(FlxG.score > 1000) FlxG.score -= 1000; 148 | if(velocity.x > 0) 149 | velocity.x = -maxVelocity.x; 150 | else 151 | velocity.x = maxVelocity.x; 152 | super.hurt(Damage); 153 | } 154 | 155 | override public function kill():void 156 | { 157 | if(!alive) 158 | return; 159 | solid = false; 160 | FlxG.play(SndExplode); 161 | FlxG.play(SndExplode2); 162 | super.kill(); 163 | flicker(0); 164 | exists = true; 165 | visible = false; 166 | velocity.make(); 167 | acceleration.make(); 168 | FlxG.camera.shake(0.005,0.35); 169 | FlxG.camera.flash(0xffd8eba2,0.35); 170 | if(_gibs != null) 171 | { 172 | _gibs.at(this); 173 | _gibs.start(true,5,0,50); 174 | } 175 | } 176 | } 177 | } -------------------------------------------------------------------------------- /src/Preloader.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import org.flixel.system.FlxPreloader; 4 | 5 | public class Preloader extends FlxPreloader 6 | { 7 | public function Preloader():void 8 | { 9 | className = "Mode"; 10 | super(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Spawner.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import org.flixel.*; 4 | 5 | public class Spawner extends FlxSprite 6 | { 7 | [Embed(source="data/spawner.png")] private var ImgSpawner:Class; 8 | [Embed(source="data/asplode.mp3")] private var SndExplode:Class; 9 | [Embed(source="data/menu_hit_2.mp3")] private var SndExplode2:Class; 10 | [Embed(source="data/hit.mp3")] private var SndHit:Class; 11 | 12 | private var _timer:Number; 13 | private var _bots:FlxGroup; 14 | private var _botBullets:FlxGroup; 15 | private var _botGibs:FlxEmitter; 16 | private var _gibs:FlxEmitter; 17 | private var _player:Player; 18 | private var _open:Boolean; 19 | 20 | public function Spawner(X:int, Y:int,Gibs:FlxEmitter,Bots:FlxGroup,BotBullets:FlxGroup,BotGibs:FlxEmitter,ThePlayer:Player) 21 | { 22 | super(X,Y); 23 | loadGraphic(ImgSpawner,true); 24 | _gibs = Gibs; 25 | _bots = Bots; 26 | _botBullets = BotBullets; 27 | _botGibs = BotGibs; 28 | _player = ThePlayer; 29 | _timer = FlxG.random()*20; 30 | _open = false; 31 | health = 8; 32 | 33 | addAnimation("open", [1, 2, 3, 4, 5], 40, false); 34 | addAnimation("close", [4, 3, 2, 1, 0], 40, false); 35 | addAnimation("dead", [6]); 36 | } 37 | 38 | override public function destroy():void 39 | { 40 | super.destroy(); 41 | _bots = null; 42 | _botGibs = null; 43 | _botBullets = null; 44 | _gibs = null; 45 | _player = null; 46 | } 47 | 48 | override public function update():void 49 | { 50 | _timer += FlxG.elapsed; 51 | var limit:uint = 20; 52 | if(onScreen()) 53 | limit = 4; 54 | if(_timer > limit) 55 | { 56 | _timer = 0; 57 | makeBot(); 58 | } 59 | else if(_timer > limit - 0.35) 60 | { 61 | if(!_open) 62 | { 63 | _open = true; 64 | play("open"); 65 | } 66 | } 67 | else if(_timer > 1) 68 | { 69 | if(_open) 70 | { 71 | play("close"); 72 | _open = false; 73 | } 74 | } 75 | 76 | super.update(); 77 | } 78 | 79 | override public function hurt(Damage:Number):void 80 | { 81 | FlxG.play(SndHit); 82 | flicker(0.2); 83 | FlxG.score += 50; 84 | super.hurt(Damage); 85 | } 86 | 87 | override public function kill():void 88 | { 89 | if(!alive) 90 | return; 91 | FlxG.play(SndExplode); 92 | FlxG.play(SndExplode2); 93 | super.kill(); 94 | active = false; 95 | exists = true; 96 | solid = false; 97 | flicker(0); 98 | play("dead"); 99 | FlxG.camera.shake(0.007,0.25); 100 | FlxG.camera.flash(0xffd8eba2,0.65,turnOffSlowMo); 101 | FlxG.timeScale = 0.35; 102 | makeBot(); 103 | _gibs.at(this); 104 | _gibs.start(true,3); 105 | FlxG.score += 1000; 106 | } 107 | 108 | protected function makeBot():void 109 | { 110 | (_bots.recycle(Enemy) as Enemy).init(x + width/2, y + height/2, _botBullets, _botGibs, _player); 111 | } 112 | 113 | protected function turnOffSlowMo():void 114 | { 115 | FlxG.timeScale = 1.0; 116 | } 117 | } 118 | } -------------------------------------------------------------------------------- /src/VictoryState.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import org.flixel.*; 4 | 5 | public class VictoryState extends FlxState 6 | { 7 | [Embed(source="data/spawner_gibs.png")] private var ImgGibs:Class; 8 | [Embed(source="data/menu_hit_2.mp3")] private var SndMenu:Class; 9 | 10 | private var _timer:Number; 11 | private var _fading:Boolean; 12 | 13 | override public function create():void 14 | { 15 | _timer = 0; 16 | _fading = false; 17 | FlxG.flash(0xffd8eba2); 18 | 19 | //Gibs emitted upon death 20 | var gibs:FlxEmitter = new FlxEmitter(0,-50); 21 | gibs.setSize(FlxG.width,0); 22 | gibs.setXSpeed(); 23 | gibs.setYSpeed(0,100); 24 | gibs.setRotation(-360,360); 25 | gibs.gravity = 80; 26 | gibs.makeParticles(ImgGibs,800,32,true,0); 27 | add(gibs); 28 | gibs.start(false,0,0.005); 29 | 30 | var text:FlxText = new FlxText(0,FlxG.height/2-35,FlxG.width,"VICTORY\n\nSCORE: "+FlxG.score); 31 | text.setFormat(null,16,0xd8eba2,"center"); 32 | add(text); 33 | } 34 | 35 | override public function update():void 36 | { 37 | super.update(); 38 | if(!_fading) 39 | { 40 | _timer += FlxG.elapsed; 41 | if((_timer > 0.35) && ((_timer > 10) || FlxG.keys.justPressed("X") || FlxG.keys.justPressed("C"))) 42 | { 43 | _fading = true; 44 | FlxG.play(SndMenu); 45 | FlxG.fade(0xff131c1b,2,onPlay); 46 | } 47 | } 48 | } 49 | 50 | private function onPlay():void 51 | { 52 | FlxG.switchState(new PlayState()); 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /src/data/asplode.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/asplode.mp3 -------------------------------------------------------------------------------- /src/data/attract1.fgr: -------------------------------------------------------------------------------- 1 | 0.31291530808103984 2 | 0km170,7,0,0 3 | 8km147,7,0,0 4 | 9km155,14,0,0 5 | 10km177,28,0,0 6 | 11km189,33,0,0 7 | 13km222,44,0,0 8 | 27k39:2m 9 | 28k39:1m 10 | 29k39:1m 11 | 30k39:1m 12 | 31k39:1m 13 | 32k39:1m 14 | 33k39:1m 15 | 34k39:1m 16 | 35k39:1m 17 | 36k39:1m 18 | 37k39:1m 19 | 38k39:1m 20 | 39k39:1m 21 | 40k39:1m 22 | 41k39:1m 23 | 42k39:1m 24 | 43k39:1m 25 | 44k39:1m 26 | 45k39:1m 27 | 46k39:1m 28 | 47k39:1m 29 | 48k39:1m 30 | 49k39:1m 31 | 50k39:1m 32 | 51k39:1m 33 | 52k39:1m 34 | 53k39:1m 35 | 54k39:1m 36 | 55k39:1m 37 | 56k39:1m 38 | 57k39:1m 39 | 58k39:1m 40 | 59k39:1m 41 | 60k39:1m 42 | 61k39:1m 43 | 62k39:1m 44 | 63k39:1m 45 | 64k39:1m 46 | 65k39:1m 47 | 66k39:1m 48 | 67k39:1m 49 | 68k39:1m 50 | 69k39:1m 51 | 70k39:1m 52 | 71k39:1m 53 | 72k39:1m 54 | 73k39:1m 55 | 74k39:1m 56 | 75k39:1m 57 | 76k39:1m 58 | 77k39:1m 59 | 78k39:1m 60 | 79k39:1m 61 | 80k39:1m 62 | 81k39:1m 63 | 82k39:1m 64 | 83k39:1m 65 | 84k39:1m 66 | 85k39:1m 67 | 86k39:1m 68 | 87k39:1m 69 | 88k39:1m 70 | 89k39:1m 71 | 90k39:1m 72 | 91k39:1m 73 | 92k39:1m 74 | 93k39:1m 75 | 94k39:1m 76 | 95k39:1m 77 | 96k39:1m 78 | 97k39:1m 79 | 98k39:1m 80 | 99k39:1m 81 | 100k39:1m 82 | 101k39:1m 83 | 102k39:1m 84 | 103k39:1m 85 | 104k39:1m 86 | 105k39:1m 87 | 106k39:1m 88 | 107k39:1m 89 | 108k39:-1m 90 | 117k39:2m 91 | 118k39:1m 92 | 119k39:1m 93 | 120k39:1m 94 | 121k39:1,40:2m 95 | 122k39:1,40:1m 96 | 123k39:1,40:1m 97 | 124k39:1,40:1m 98 | 125k39:1,40:1,88:2m 99 | 126k39:1,40:1,88:1m 100 | 127k39:1,40:1,67:2,88:1m 101 | 128k39:1,40:1,67:1,88:1m 102 | 129k39:1,40:1,67:1,88:-1m 103 | 130k39:1,40:1,67:1m 104 | 131k39:1,40:1,67:-1m 105 | 132k39:1,40:1m 106 | 133k39:1,40:1m 107 | 134k39:1,40:1m 108 | 135k39:1,40:1,67:2m 109 | 136k39:1,40:1,67:1m 110 | 137k39:1,40:1,67:1m 111 | 138k39:1,40:1,67:1m 112 | 139k39:1,40:1,67:-1m 113 | 140k39:1,40:1m 114 | 141k39:1,40:1m 115 | 142k39:1,40:1m 116 | 143k39:1,40:1m 117 | 144k39:1,40:1m 118 | 145k39:1,40:1,67:2m 119 | 146k39:1,40:-1,67:1m 120 | 147k39:1,67:1m 121 | 148k39:1,67:-1m 122 | 149k39:1m 123 | 150k39:1m 124 | 151k39:1m 125 | 152k39:1m 126 | 153k39:1m 127 | 154k39:1m 128 | 155k39:1m 129 | 156k39:1m 130 | 157k39:1m 131 | 158k39:1m 132 | 159k39:1m 133 | 160k39:1m 134 | 161k39:1m 135 | 162k39:1m 136 | 163k39:1m 137 | 164k39:1m 138 | 165k39:1m 139 | 166k39:1m 140 | 167k39:1m 141 | 168k39:1m 142 | 169k39:1m 143 | 170k39:1m 144 | 171k39:1m 145 | 172k39:1m 146 | 173k39:1m 147 | 174k39:1m 148 | 175k39:1m 149 | 176k39:1m 150 | 177k39:1m 151 | 178k39:1m 152 | 179k39:1m 153 | 180k39:1m 154 | 181k39:1m 155 | 182k39:1m 156 | 183k39:1m 157 | 184k39:1m 158 | 185k39:1m 159 | 186k39:1m 160 | 187k39:1m 161 | 188k39:1m 162 | 189k39:1m 163 | 190k39:1m 164 | 191k39:1m 165 | 192k39:1m 166 | 193k39:1m 167 | 194k39:1m 168 | 195k39:1m 169 | 196k39:1m 170 | 197k39:1m 171 | 198k39:1m 172 | 199k39:1m 173 | 200k39:1m 174 | 201k39:1m 175 | 202k39:1m 176 | 203k39:1m 177 | 204k39:1m 178 | 205k39:1m 179 | 206k39:1m 180 | 207k39:1m 181 | 208k39:1m 182 | 209k38:2,39:1m 183 | 210k38:1,39:1m 184 | 211k38:1,39:1m 185 | 212k38:1,39:1m 186 | 213k38:1,39:1m 187 | 214k38:1,39:1m 188 | 215k38:1,39:1m 189 | 216k38:1,39:1m 190 | 217k38:1,39:1m 191 | 218k38:1,39:1m 192 | 219k38:1,39:1m 193 | 220k38:1,39:1,67:2m 194 | 221k38:1,39:1,67:1m 195 | 222k38:1,39:1,67:1m 196 | 223k38:1,39:1,67:1m 197 | 224k38:1,39:1,67:1m 198 | 225k38:1,39:-1,67:-1m 199 | 226k38:1m 200 | 227k38:1m 201 | 228k38:1m 202 | 229k38:1m 203 | 230k38:1,67:2m 204 | 231k38:1,67:1m 205 | 232k38:1,67:-1m 206 | 233k38:1m 207 | 234k38:1m 208 | 235k38:1m 209 | 236k38:1,67:2m 210 | 237k38:1,67:1m 211 | 238k38:1,67:1m 212 | 239k38:1,67:-1m 213 | 240k38:1m 214 | 241k38:1m 215 | 242k38:1m 216 | 243k38:1,67:2m 217 | 244k38:1,67:1m 218 | 245k38:1,67:1m 219 | 246k38:1,67:1m 220 | 247k38:1,67:-1m 221 | 248k38:1m 222 | 249k38:1m 223 | 250k38:1,67:2m 224 | 251k38:1,67:1m 225 | 252k38:1,67:1m 226 | 253k38:1,67:-1m 227 | 254k38:1m 228 | 255k37:2,38:1m 229 | 256k37:1,38:1m 230 | 257k37:1,38:1,67:2m 231 | 258k37:1,38:1,67:1m 232 | 259k37:1,38:1,67:-1m 233 | 260k37:1,38:1m 234 | 261k37:1,38:1m 235 | 262k37:1,38:1,67:2m 236 | 263k37:1,38:1,67:1m 237 | 264k37:1,38:1,67:1m 238 | 265k37:1,38:1,67:1m 239 | 266k37:1,38:1,67:-1m 240 | 267k37:1,38:1m 241 | 268k37:1,38:1m 242 | 269k37:1,38:1m 243 | 270k37:1,38:1m 244 | 271k37:1,38:1m 245 | 272k37:1,38:1m 246 | 273k37:1,38:1,67:2m 247 | 274k37:1,38:1,67:1m 248 | 275k37:1,38:1,67:1m 249 | 276k37:1,38:1,67:1m 250 | 277k37:1,38:1,67:-1m 251 | 278k37:-1,38:1m 252 | 279k38:1m 253 | 280k38:1m 254 | 281k38:1m 255 | 282k38:1,67:2m 256 | 283k38:1,67:1m 257 | 284k38:1,39:2,67:1m 258 | 285k38:1,39:1,67:-1m 259 | 286k38:1,39:1m 260 | 287k38:1,39:1,67:2m 261 | 288k38:1,39:1,67:1m 262 | 289k38:1,39:1,67:1m 263 | 290k38:1,39:1,67:1m 264 | 291k38:1,39:1,67:1m 265 | 292k38:1,39:1,67:-1m 266 | 293k38:1,39:1m 267 | 294k38:1,39:1m 268 | 295k38:1,39:1m 269 | 296k38:1,39:1,67:2m 270 | 297k38:1,39:1,67:1m 271 | 298k38:1,39:1,67:1m 272 | 299k38:1,39:1,67:1m 273 | 300k38:1,39:1,67:-1m 274 | 301k38:1,39:1m 275 | 302k38:1,39:1m 276 | 303k38:1,39:1,67:2m 277 | 304k38:1,39:1,67:1m 278 | 305k38:1,39:1,67:1m 279 | 306k38:1,39:1,67:1m 280 | 307k38:1,39:1,67:-1m 281 | 308k38:1,39:1m 282 | 309k38:1,39:1m 283 | 310k38:1,39:-1m 284 | 311k38:1m 285 | 312k38:1,67:2m 286 | 313k38:1,67:1m 287 | 314k38:1,67:-1m 288 | 315k38:1m 289 | 316k38:1m 290 | 317k38:1m 291 | 318k38:1,67:2m 292 | 319k37:2,38:1,67:1m 293 | 320k37:1,38:1,67:-1m 294 | 321k37:1,38:1m 295 | 322k37:-1,38:1m 296 | 323k38:1m 297 | 324k38:1,67:2m 298 | 325k38:1,67:1m 299 | 326k38:1,67:1m 300 | 327k38:1,67:1m 301 | 328k38:1,67:1m 302 | 329k38:1,67:-1m 303 | 330k37:2,38:1m 304 | 331k37:1,38:1m 305 | 332k37:1,38:1,67:2m 306 | 333k37:1,38:1,67:1m 307 | 334k37:1,38:1,67:1m 308 | 335k37:1,38:1,67:1m 309 | 336k37:1,38:1,67:-1m 310 | 337k37:1,38:1m 311 | 338k37:1,38:1m 312 | 339k37:1,38:1m 313 | 340k37:1,38:1m 314 | 341k37:1,38:1m 315 | 342k37:1,38:1,67:2m 316 | 343k37:1,38:1,67:1m 317 | 344k37:1,38:1,67:1m 318 | 345k37:1,38:-1,67:1m 319 | 346k37:1,67:1m 320 | 347k37:1,67:-1m 321 | 348k37:1m 322 | 349k37:1m 323 | 350k37:1m 324 | 351k37:1m 325 | 352k37:1m 326 | 353k37:1m 327 | 354k37:1,40:2m 328 | 355k37:1,40:1m 329 | 356k37:1,40:1m 330 | 357k37:1,40:1m 331 | 358k37:1,40:1,88:2m 332 | 359k37:1,40:1,88:1m 333 | 360k37:1,40:1,67:2,88:1m 334 | 361k37:1,40:1,67:1,88:1m 335 | 362k37:1,40:1,67:1,88:1m 336 | 363k37:1,40:1,67:1,88:-1m 337 | 364k37:1,40:1,67:1m 338 | 365k37:1,40:1,67:-1m 339 | 366k37:1,40:1m 340 | 367k37:1,40:1,67:2m 341 | 368k37:1,40:1,67:1m 342 | 369k37:1,40:1,67:1m 343 | 370k37:1,40:1,67:-1m 344 | 371k37:1,40:1m 345 | 372k37:1,40:1m 346 | 373k37:1,40:1m 347 | 374k37:1,40:1,67:2m 348 | 375k37:1,40:1,67:1m 349 | 376k37:1,40:1,67:1m 350 | 377k37:1,40:1,67:1m 351 | 378k37:1,40:1,67:-1m 352 | 379k37:1,40:1m 353 | 380k37:1,40:1m 354 | 381k37:1,40:1m 355 | 382k37:1,40:1,67:2m 356 | 383k37:1,40:1,67:1m 357 | 384k37:1,40:1,67:1m 358 | 385k37:1,40:1,67:-1m 359 | 386k37:1,40:1m 360 | 387k37:1,40:1m 361 | 388k37:1,40:1m 362 | 389k37:1,40:1m 363 | 390k37:1,40:1,67:2m 364 | 391k37:1,40:1,67:1m 365 | 392k37:1,40:1,67:1m 366 | 393k37:1,40:1,67:-1m 367 | 394k37:1,40:1m 368 | 395k37:1,40:1m 369 | 396k37:1,40:1m 370 | 397k37:1,40:1,67:2m 371 | 398k37:1,40:1,67:1m 372 | 399k37:1,40:1,67:1m 373 | 400k37:1,40:1,67:-1m 374 | 401k37:1,40:1m 375 | 402k37:1,40:1m 376 | 403k37:1,40:1m 377 | 404k37:1,40:1,67:2m 378 | 405k37:1,40:1,67:1m 379 | 406k37:1,40:1,67:1m 380 | 407k37:1,40:1,67:1m 381 | 408k37:1,40:1,67:-1m 382 | 409k37:1,40:1m 383 | 410k37:1,40:1m 384 | 411k37:1,40:1,67:2m 385 | 412k37:1,40:1,67:1m 386 | 413k37:1,40:1,67:1m 387 | 414k37:1,40:1,67:-1m 388 | 415k37:1,40:1m 389 | 416k37:1,40:1m 390 | 417k37:1,40:1m 391 | 418k37:1,40:1,67:2m 392 | 419k37:1,40:1,67:1m 393 | 420k37:1,40:1,67:1m 394 | 421k37:1,40:1,67:1m 395 | 422k37:1,40:1,67:-1m 396 | 423k37:1,40:1m 397 | 424k37:1,40:1m 398 | 425k37:1,40:1m 399 | 426k37:1,40:1m 400 | 427k37:1,40:1m 401 | 428k37:1,40:1m 402 | 429k37:1,40:-1m 403 | 430k37:1m 404 | 431k37:1m 405 | 432k37:1m 406 | 433k37:1m 407 | 434k37:1m 408 | 435k37:1m 409 | 436k37:1m 410 | 437k37:1m 411 | 438k37:1m 412 | 439k37:1m 413 | 440k37:1m 414 | 441k37:1m 415 | 442k37:1m 416 | 443k37:1m 417 | 444k37:1m 418 | 445k37:1m 419 | 446k37:1m 420 | 447k37:1m 421 | 448k37:1m 422 | 449k37:1m 423 | 450k37:1m 424 | 451k37:1m 425 | 452k37:1m 426 | 453k37:1m 427 | 454k37:1m 428 | 455k37:1m 429 | 456k37:1,88:2m 430 | 457k37:1,88:1m 431 | 458k37:1,88:1m 432 | 459k37:1,88:1m 433 | 460k37:1,88:1m 434 | 461k37:1,88:1m 435 | 462k37:1,88:1m 436 | 463k37:1,88:-1m 437 | 464k37:1m 438 | 465k37:1m 439 | 466k37:1m 440 | 467k37:1m 441 | 468k37:1m 442 | 469k37:1m 443 | 470k37:1m 444 | 471k37:1m 445 | 472k37:1m 446 | 473k37:1m 447 | 474k37:1m 448 | 475k37:1m 449 | 476k37:1m 450 | 477k37:1m 451 | 478k37:1m 452 | 479k37:1m 453 | 480k37:1m 454 | 481k37:1m 455 | 482k37:1m 456 | 483k37:1m 457 | 484k37:1m 458 | 485k37:1m 459 | 486k37:1m 460 | 487k37:1m 461 | 488k37:1m 462 | 489k37:1m 463 | 490k37:1m 464 | 491k37:1m 465 | 492k37:1m 466 | 493k37:1m 467 | 494k37:1m 468 | 495k37:1m 469 | 496k37:1m 470 | 497k37:1m 471 | 498k37:1m 472 | 499k37:1m 473 | 500k37:1m 474 | 501k37:1m 475 | 502k37:1m 476 | 503k37:1m 477 | 504k37:1m 478 | 505k37:1m 479 | 506k37:1m 480 | 507k37:1m 481 | 508k37:1m 482 | 509k37:1m 483 | 510k37:1m 484 | 511k37:1m 485 | 512k37:1m 486 | 513k37:1,88:2m 487 | 514k37:1,88:1m 488 | 515k37:1,88:1m 489 | 516k37:1,88:1m 490 | 517k37:1,88:1m 491 | 518k37:1,88:1m 492 | 519k37:1,88:1m 493 | 520k37:1,88:1m 494 | 521k37:1,88:1m 495 | 522k37:1,88:1m 496 | 523k37:1,88:1m 497 | 524k37:1,88:1m 498 | 525k37:1,88:1m 499 | 526k37:1,88:1m 500 | 527k37:1,88:1m 501 | 528k37:1,88:1m 502 | 529k37:1,88:-1m 503 | 530k37:1m 504 | 531k37:1m 505 | 532k37:1m 506 | 533k37:1m 507 | 534k37:1,40:2m 508 | 535k37:1,40:1,88:2m 509 | 536k37:1,40:1,88:1m 510 | 537k37:1,40:1,88:1m 511 | 538k37:1,40:1,67:2,88:1m 512 | 539k37:1,40:1,67:1,88:1m 513 | 540k37:1,40:1,67:1,88:-1m 514 | 541k37:1,40:1,67:-1m 515 | 542k37:1,40:1m 516 | 543k37:1,40:1m 517 | 544k37:1,40:1m 518 | 545k37:1,40:1,67:2m 519 | 546k37:1,40:1,67:1m 520 | 547k37:1,40:1,67:1m 521 | 548k37:1,40:1,67:1m 522 | 549k37:1,40:1,67:-1m 523 | 550k37:1,40:1m 524 | 551k37:1,40:1m 525 | 552k37:1,40:1,67:2m 526 | 553k37:1,40:1,67:1m 527 | 554k37:1,40:1,67:1m 528 | 555k37:1,40:1,67:1m 529 | 556k37:1,40:1,67:-1m 530 | 557k37:1,40:1m 531 | 558k37:1,40:1m 532 | 559k37:1,40:1m 533 | 560k37:1,40:1m 534 | 561k37:1,40:1m 535 | 562k37:1,40:1m 536 | 563k37:1,40:1m 537 | 564k37:1,40:1m 538 | 565k37:1,40:-1m 539 | 566k37:1m 540 | 567k37:1m 541 | 568k37:1m 542 | 569k37:1m 543 | 570k37:1m 544 | 571k37:1m 545 | 572k37:1m 546 | 573k37:1m 547 | 574k37:1m 548 | 575k37:1m 549 | 576k37:1m 550 | 577k37:1m 551 | 578k37:1m 552 | 579k37:1m 553 | 580k37:1m 554 | 581k37:1m 555 | 582k37:1m 556 | 583k37:1m 557 | 584k37:1m 558 | 585k37:1m 559 | 586k37:1m 560 | 587k37:1m 561 | 588k37:1m 562 | 589k37:1m 563 | 590k37:1m 564 | 591k37:1m 565 | 592k37:1m 566 | 593k37:1m 567 | 594k37:1m 568 | 595k37:1m 569 | 596k37:1m 570 | 597k37:1m 571 | 598k37:1m 572 | 599k37:1m 573 | 600k37:1m 574 | 601k37:1m 575 | 602k37:1m 576 | 603k37:1m 577 | 604k37:1m 578 | 605k37:1m 579 | 606k37:1,40:2m 580 | 607k37:1,40:1,88:2m 581 | 608k37:1,40:1,67:2,88:1m 582 | 609k37:1,40:1,67:1,88:-1m 583 | 610k37:1,40:1,67:1m 584 | 611k37:1,40:1,67:-1m 585 | 612k37:1,40:1m 586 | 613k37:1,40:1,67:2m 587 | 614k37:1,40:1,67:1m 588 | 615k37:1,40:1,67:1m 589 | 616k37:1,40:1,67:1m 590 | 617k37:1,40:1,67:-1m 591 | 618k37:1,40:1m 592 | 619k37:1,40:1m 593 | 620k37:1,40:1m 594 | 621k37:1,40:1,67:2m 595 | 622k37:1,40:1,67:1m 596 | 623k37:1,40:1,67:1m 597 | 624k37:1,40:1,67:1m 598 | 625k37:1,40:1,67:-1m 599 | 626k37:1,40:-1m 600 | 627k37:1m 601 | 628k37:1m 602 | 629k37:1,67:2m 603 | 630k37:1,67:1m 604 | 631k37:1,67:1m 605 | 632k37:1,67:1m 606 | 633k37:1,67:-1m 607 | 634k37:1m 608 | 635k37:1m 609 | 636k37:1m 610 | 637k37:1m 611 | 638k37:1m 612 | 639k37:1,67:2m 613 | 640k37:1,67:1m 614 | 641k37:1,67:-1m 615 | 642k37:1m 616 | 643k37:1m 617 | 644k37:1m 618 | 645k37:1m 619 | 646k37:1m 620 | 647k37:1,67:2m 621 | 648k37:1,67:1m 622 | 649k37:1,67:-1m 623 | 650k37:1m 624 | 651k37:1m 625 | 652k37:1m 626 | 653k37:1m 627 | 654k37:1,67:2m 628 | 655k37:1,67:1m 629 | 656k37:1,67:1m 630 | 657k37:1,67:1m 631 | 658k37:1,67:1m 632 | 659k37:1,67:1m 633 | 660k37:1,67:-1m 634 | 661k37:1m 635 | 662k37:1m 636 | 663k37:1m 637 | 664k37:1m 638 | 665k37:1m 639 | 666k37:1m 640 | 667k37:1m 641 | 668k37:1m 642 | 669k37:1m 643 | 670k37:1m 644 | 671k37:1m 645 | 672k37:1m 646 | 673k37:1m 647 | 674k37:1m 648 | 675k37:1m 649 | 676k37:1m 650 | 677k37:1,88:2m 651 | 678k37:1,40:2,88:1m 652 | 679k37:1,40:1,67:2,88:1m 653 | 680k37:1,40:1,67:1,88:1m 654 | 681k37:1,40:1,67:1,88:-1m 655 | 682k37:1,40:1,67:-1m 656 | 683k37:1,40:1m 657 | 684k37:1,40:1m 658 | 685k37:1,40:1,67:2m 659 | 686k37:1,40:1,67:1m 660 | 687k37:1,40:1,67:1m 661 | 688k37:1,40:1,67:-1m 662 | 689k37:1,40:1m 663 | 690k37:1,40:-1m 664 | 691k37:1m 665 | 692k37:1m 666 | 693k37:1m 667 | 694k37:1m 668 | 695k37:1m 669 | 696k37:1m 670 | 697k37:1m 671 | 698k37:1m 672 | 699k37:-1m 673 | 706k39:2m 674 | 707k39:1m 675 | 708k39:1m 676 | 709k39:1m 677 | 710k39:1m 678 | 711k39:1m 679 | 712k39:-1m 680 | 719k37:2m 681 | 720k37:1m 682 | 721k37:1,40:2m 683 | 722k37:1,40:1m 684 | 723k37:1,40:1m 685 | 724k37:1,40:1m 686 | 725k37:1,40:1m 687 | 726k37:1,40:1m 688 | 727k37:1,40:1m 689 | 728k37:1,40:1,88:2m 690 | 729k37:1,40:1,88:1m 691 | 730k37:1,40:1,67:2,88:1m 692 | 731k37:1,40:1,67:1,88:1m 693 | 732k37:1,40:1,67:1,88:1m 694 | 733k37:1,40:1,67:1,88:-1m 695 | 734k37:1,40:1,67:-1m 696 | 735k37:1,40:1m 697 | 736k37:1,40:1m 698 | 737k37:1,40:1,67:2m 699 | 738k37:1,40:1,67:1m 700 | 739k37:1,40:1,67:1m 701 | 740k37:1,40:1,67:-1m 702 | 741k37:1,40:1m 703 | 742k37:1,40:1m 704 | 743k37:1,40:1m 705 | 744k37:1,40:-1m 706 | 745k37:1m 707 | 746k37:1m 708 | 747k37:1m 709 | 748k37:-1m 710 | 755k67:2m 711 | 756k37:2,67:1m 712 | 757k37:1,67:-1m 713 | 758k37:1m 714 | 759k37:-1m 715 | 762k67:2m 716 | 763k67:1m 717 | 764k67:-1m 718 | 765k40:2m 719 | 766k40:1m 720 | 767k40:1,67:2m 721 | 768k40:1,67:1m 722 | 769k40:1,67:1m 723 | 770k40:1,67:-1m 724 | 771k40:1m 725 | 772k40:1m 726 | 773k40:1m 727 | 774k40:1m 728 | 775k37:2,40:1m 729 | 776k37:1,40:1,67:2m 730 | 777k37:1,40:1,67:1m 731 | 778k37:1,40:1,67:-1m 732 | 779k37:1,40:1m 733 | 780k37:1,40:1m 734 | 781k37:1,40:1m 735 | 782k37:1,40:1m 736 | 783k37:1,40:1,67:2m 737 | 784k37:1,40:1,67:1m 738 | 785k37:1,40:1,67:1m 739 | 786k37:1,40:1,67:1m 740 | 787k37:1,40:1,67:1m 741 | 788k37:1,40:1,67:-1m 742 | 789k37:1,40:1m 743 | 790k37:1,40:1m 744 | 791k37:1,40:1m 745 | 792k37:1,40:1m 746 | 793k37:1,40:1m 747 | 794k37:1,40:1m 748 | 795k37:1,40:1m 749 | 796k37:1,40:1m 750 | 797k37:1,40:1m 751 | 798k37:-1,40:1m 752 | 799k40:1m 753 | 800k40:1m 754 | 801k40:1m 755 | 802k40:1m 756 | 803k40:1m 757 | 804k40:1,67:2m 758 | 805k40:1,67:1m 759 | 806k40:1,67:1m 760 | 807k40:1,67:1m 761 | 808k40:1,67:1m 762 | 809k40:1,67:-1m 763 | 810k40:1m 764 | 811k40:1m 765 | 812k40:1m 766 | 813k40:1m 767 | 814k40:-1m 768 | 816k37:2m 769 | 817k37:1m 770 | 818k37:1,67:2m 771 | 819k37:1,67:1m 772 | 820k37:1,38:2,67:1m 773 | 821k37:1,38:1,67:1m 774 | 822k37:1,38:1,67:-1m 775 | 823k37:1,38:1m 776 | 824k37:1,38:1m 777 | 825k37:1,38:1m 778 | 826k37:1,38:1,67:2m 779 | 827k37:1,38:1,67:1m 780 | 828k37:1,38:1,67:1m 781 | 829k37:1,38:1,67:1m 782 | 830k37:-1,38:1,67:1m 783 | 831k38:1,67:-1m 784 | 832k38:1m 785 | 833k38:1m 786 | 834k38:1,67:2m 787 | 835k38:1,67:1m 788 | 836k38:1,39:2,67:1m 789 | 837k38:1,39:1,67:1m 790 | 838k38:1,39:1,67:1m 791 | 839k38:1,39:1,67:1m 792 | 840k38:1,39:1,67:-1m 793 | 841k38:1,39:1m 794 | 842k38:1,39:1,67:2m 795 | 843k38:1,39:-1,67:1m 796 | 844k38:1,67:1m 797 | 845k38:1,67:1m 798 | 846k38:1,67:-1m 799 | 847k38:1m 800 | 848k38:1m 801 | 849k38:1m 802 | 850k38:1m 803 | 851k38:1,67:2m 804 | 852k38:1,67:1m 805 | 853k38:1,67:1m 806 | 854k38:1,67:1m 807 | 855k38:1,67:-1m 808 | 856k38:1m 809 | 857k38:1m 810 | 858k38:1m 811 | 859k38:1m 812 | 860k38:1,67:2m 813 | 861k38:1,67:1m 814 | 862k38:1,67:-1m 815 | 863k38:1m 816 | 864k38:1m 817 | 865k38:1m 818 | 866k38:1,67:2m 819 | 867k38:1,67:1m 820 | 868k38:1,67:1m 821 | 869k38:1,67:1m 822 | 870k38:1,67:-1m 823 | 871k38:1m 824 | 872k38:1m 825 | 873k38:1m 826 | 874k38:1,67:2m 827 | 875k38:1,67:1m 828 | 876k38:1,67:1m 829 | 877k38:1,67:1m 830 | 878k38:1,67:-1m 831 | 879k38:1m 832 | 880k38:1m 833 | 881k38:1,67:2m 834 | 882k38:1,67:1m 835 | 883k38:1,67:1m 836 | 884k38:1,67:-1m 837 | 885k38:1m 838 | 886k38:1m 839 | 887k38:1m 840 | 888k38:1,67:2m 841 | 889k38:1,67:1m 842 | 890k38:1,67:-1m 843 | 891k38:1m 844 | 892k38:1m 845 | 893k38:1m 846 | 894k38:1,67:2m 847 | 895k38:1,67:1m 848 | 896k38:1,67:1m 849 | 897k38:1,67:1m 850 | 898k38:1,67:-1m 851 | 899k38:1m 852 | 900k38:1m 853 | 901k38:1,67:2m 854 | 902k38:1,67:1m 855 | 903k38:1,67:1m 856 | 904k38:1,67:1m 857 | 905k38:1,67:-1m 858 | 906k38:1m 859 | 907k38:1m 860 | 908k38:1m 861 | 909k38:1,67:2m 862 | 910k38:1,67:1m 863 | 911k38:1,67:-1m 864 | 912k38:1m 865 | 913k38:1,39:2m 866 | 914k38:1,39:1,67:2m 867 | 915k38:1,39:1,67:1m 868 | 916k38:1,39:1,67:1m 869 | 917k38:1,39:1,67:1m 870 | 918k38:1,39:1,67:-1m 871 | 919k38:1,39:1m 872 | 920k38:1,39:1m 873 | 921k38:1,39:1m 874 | 922k38:1,39:1,67:2m 875 | 923k38:1,39:-1,67:1m 876 | 924k38:1,67:1m 877 | 925k38:1,67:1m 878 | 926k38:1,67:-1m 879 | 927k38:1m 880 | 928k38:1m 881 | 929k38:1,67:2m 882 | 930k38:1,67:1m 883 | 931k38:1,67:1m 884 | 932k38:-1,67:1m 885 | 933k67:-1m 886 | 934k37:2m 887 | 935k37:1m 888 | 936k37:1,88:2m 889 | 937k37:1,88:1m 890 | 938k37:1,67:2,88:1m 891 | 939k37:1,40:2,67:1,88:1m 892 | 940k37:1,40:1,67:1,88:1m 893 | 941k37:1,40:1,67:1,88:-1m 894 | 942k37:1,40:1,67:1m 895 | 943k37:1,40:1,67:-1m 896 | 944k37:1,40:1,67:2m 897 | 945k37:1,40:1,67:1m 898 | 946k37:1,40:1,67:1m 899 | 947k37:1,40:1,67:1m 900 | 948k37:1,40:1,67:1m 901 | 949k37:1,40:1,67:-1m 902 | 950k37:1,40:1m 903 | 951k37:1,40:1m 904 | 952k37:1,40:1m 905 | 953k37:1,40:1,67:2m 906 | 954k37:1,40:1,67:1m 907 | 955k37:1,40:1,67:1m 908 | 956k37:1,40:1,67:1m 909 | 957k37:1,40:1,67:1m 910 | 958k37:1,40:1,67:-1m 911 | 959k37:1,40:1m 912 | 960k37:1,40:1m 913 | 961k37:1,40:1m 914 | 962k37:1,40:1,67:2m 915 | 963k37:1,40:1,67:1m 916 | 964k37:1,40:1,67:1m 917 | 965k37:1,40:1,67:-1m 918 | 966k37:1,40:1m 919 | 967k37:1,40:1m 920 | 968k37:1,40:1m 921 | 969k37:1,40:1,67:2m 922 | 970k37:1,40:1,67:1m 923 | 971k37:1,40:1,67:1m 924 | 972k37:1,40:1,67:1m 925 | 973k37:1,40:1,67:-1m 926 | 974k37:1,40:1m 927 | 975k37:1,40:1m 928 | 976k37:1,40:1m 929 | 977k37:1,40:1m 930 | 978k37:1,40:1,67:2m 931 | 979k37:1,40:1,67:1m 932 | 980k37:1,40:1,67:1m 933 | 981k37:1,40:1,67:1m 934 | 982k37:1,40:1,67:-1m 935 | 983k37:1,40:1m 936 | 984k37:1,40:1m 937 | 985k37:1,40:1m 938 | 986k37:1,40:1m 939 | 987k37:1,40:1m 940 | 988k37:1,40:1,67:2m 941 | 989k37:1,40:1,67:1m 942 | 990k37:1,40:1,67:1m 943 | 991k37:1,40:1,67:-1m 944 | 992k37:1,40:1m 945 | 993k37:1,40:1m 946 | 994k37:1,40:1m 947 | 995k37:1,40:1m 948 | 996k37:1,40:1m 949 | 997k37:1,40:1,67:2m 950 | 998k37:1,40:1,67:1m 951 | 999k37:1,40:1,67:1m 952 | 1000k37:1,40:1,67:1m 953 | 1001k37:1,40:1,67:1m 954 | 1002k37:1,40:1,67:-1m 955 | 1003k37:1,40:1m 956 | 1004k37:1,40:1m 957 | 1005k37:1,40:1m 958 | 1006k37:1,40:1,67:2m 959 | 1007k37:1,40:1,67:1m 960 | 1008k37:1,40:1,67:1m 961 | 1009k37:1,40:1,67:-1m 962 | 1010k37:1,40:1m 963 | 1011k37:1,40:1m 964 | 1012k37:1,40:1m 965 | 1013k37:1,40:1m 966 | 1014k37:1,40:1m 967 | 1015k37:1,40:1m 968 | 1016k37:1,40:1m 969 | 1017k37:1,40:1m 970 | 1018k37:1,40:1m 971 | 1019k37:1,40:1m 972 | 1020k37:1,40:1m 973 | 1021k37:1,40:1m 974 | 1022k37:1,40:1m 975 | 1023k37:1,40:1m 976 | 1024k37:1,40:1m 977 | 1025k37:1,40:1m 978 | 1026k37:1,40:1m 979 | 1027k37:1,40:1m 980 | 1028k37:1,40:1m 981 | 1029k37:1,40:1m 982 | 1030k37:1,40:1m 983 | 1031k37:1,40:1m 984 | 1032k37:1,40:1m 985 | 1033k37:1,40:1m 986 | 1034k37:1,40:1m 987 | 1035k37:1,40:-1m 988 | 1036k37:1m 989 | 1037k37:1m 990 | 1038k37:1m 991 | 1039k37:1m 992 | 1040k37:-1m 993 | 1050k40:2m 994 | 1051k40:1,88:2m 995 | 1052k40:1,88:1m 996 | 1053k37:2,40:1,88:1m 997 | 1054k37:1,40:1,67:2,88:1m 998 | 1055k37:1,40:1,67:1,88:1m 999 | 1056k37:1,40:1,67:1,88:-1m 1000 | 1057k37:1,40:1,67:-1m 1001 | 1058k37:1,40:1m 1002 | 1059k37:1,40:1,67:2m 1003 | 1060k37:1,40:1,67:1m 1004 | 1061k37:1,40:1,67:1m 1005 | 1062k37:1,40:1,67:1m 1006 | 1063k37:1,40:1,67:-1m 1007 | 1064k37:1,40:1m 1008 | 1065k37:1,40:1m 1009 | 1066k37:1,40:1m 1010 | 1067k37:1,40:1m 1011 | 1068k37:1,40:1,67:2m 1012 | 1069k37:1,40:1,67:1m 1013 | 1070k37:1,40:1,67:1m 1014 | 1071k37:1,40:1,67:-1m 1015 | 1072k37:1,40:1m 1016 | 1073k37:1,40:1m 1017 | 1074k37:1,40:1m 1018 | 1075k37:1,40:1,67:2m 1019 | 1076k37:1,40:1,67:1m 1020 | 1077k37:1,40:1,67:1m 1021 | 1078k37:1,40:1,67:1m 1022 | 1079k37:1,40:1,67:1m 1023 | 1080k37:1,40:1,67:1m 1024 | 1081k37:1,40:1,67:-1m 1025 | 1082k37:1,40:1m 1026 | 1083k37:1,40:1m 1027 | 1084k37:1,40:1m 1028 | 1085k37:1,40:1m 1029 | 1086k37:1,40:1,67:2m 1030 | 1087k37:1,40:1,67:1m 1031 | 1088k37:1,40:1,67:1m 1032 | 1089k37:1,40:1,67:1m 1033 | 1090k37:1,40:1,67:-1m 1034 | 1091k37:1,40:1m 1035 | 1092k37:1,40:-1m 1036 | 1093k37:1m 1037 | 1094k37:-1m 1038 | 1112k17:2m 1039 | 1113k17:1m 1040 | 1114k17:1m 1041 | 1115k17:1m 1042 | 1116k17:1m 1043 | 1117k17:1m 1044 | 1118k17:1m 1045 | 1119k17:1m 1046 | 1120k17:1m 1047 | 1121k17:-1m 1048 | 1135km221,41,0,0 1049 | 1136km220,39,0,0 1050 | 1137km218,36,0,0 1051 | 1138km217,32,0,0 1052 | 1139km216,31,0,0 1053 | 1140km213,31,0,0 1054 | 1141km209,31,0,0 1055 | 1142km200,31,0,0 1056 | 1143km195,31,0,0 1057 | 1144km187,31,0,0 1058 | 1146km175,27,0,0 1059 | 1147km171,25,0,0 1060 | 1148km166,24,0,0 1061 | 1149km159,20,0,0 1062 | 1150km157,17,0,0 1063 | 1151km156,16,0,0 1064 | 1153km153,12,0,0 1065 | 1154km152,10,0,0 1066 | 1156km151,9,0,0 1067 | 1157km150,8,0,0 1068 | -------------------------------------------------------------------------------- /src/data/attract2.fgr: -------------------------------------------------------------------------------- 1 | 0.8456288049209997 2 | 0km149,7,0,0 3 | 14km162,16,0,0 4 | 15km180,28,0,0 5 | 16km240,68,0,0 6 | 17km268,90,0,0 7 | 18km272,95,0,0 8 | 19km277,100,0,0 9 | 20km284,105,0,0 10 | 60k39:2m 11 | 61k39:1m 12 | 62k39:1m 13 | 63k39:1m 14 | 64k39:1m 15 | 65k39:1m 16 | 66k39:1m 17 | 67k39:1m 18 | 68k39:1m 19 | 69k39:1m 20 | 70k39:1m 21 | 71k39:1m 22 | 72k39:1m 23 | 73k39:1m 24 | 74k39:1m 25 | 75k39:1m 26 | 76k39:1m 27 | 77k39:1m 28 | 78k39:1m 29 | 79k39:1m 30 | 80k39:1m 31 | 81k39:1m 32 | 82k39:1m 33 | 83k39:1m 34 | 84k39:1m 35 | 85k39:1m 36 | 86k39:1m 37 | 87k39:1m 38 | 88k39:1m 39 | 89k39:1m 40 | 90k39:1m 41 | 91k39:1m 42 | 92k39:1m 43 | 93k39:1m 44 | 94k39:1m 45 | 95k39:1m 46 | 96k39:1m 47 | 97k39:1m 48 | 98k39:1m 49 | 99k39:1,88:2m 50 | 100k39:1,40:2,88:1m 51 | 101k39:1,40:1,67:2,88:1m 52 | 102k39:1,40:1,67:1,88:-1m 53 | 103k39:1,40:1,67:1m 54 | 104k39:1,40:1,67:-1m 55 | 105k39:-1,40:1m 56 | 106k37:2,40:1m 57 | 107k37:1,40:1,67:2m 58 | 108k37:1,40:1,67:1m 59 | 109k37:1,40:1,67:-1m 60 | 110k37:1,40:1m 61 | 111k37:1,40:1,67:2m 62 | 112k37:1,40:1,67:1m 63 | 113k37:1,40:1,67:1m 64 | 114k37:1,40:1,67:1m 65 | 115k37:1,40:1,67:1m 66 | 116k37:1,40:1,67:1m 67 | 117k37:1,40:1,67:1m 68 | 118k37:1,40:1,67:-1m 69 | 119k37:1,40:1m 70 | 120k37:1,40:1m 71 | 121k37:1,40:1m 72 | 122k37:1,40:1m 73 | 123k37:1,40:1m 74 | 124k37:1,40:1m 75 | 125k37:1,40:1m 76 | 126k37:1,40:1m 77 | 127k37:1,40:1m 78 | 128k37:1,40:-1m 79 | 129k37:1m 80 | 130k37:1m 81 | 131k37:1m 82 | 132k37:1m 83 | 133k37:1m 84 | 134k37:-1m 85 | 145k88:2m 86 | 146k39:2,88:1m 87 | 147k39:1,40:2,88:1m 88 | 148k39:1,40:1,67:2,88:1m 89 | 149k39:1,40:1,67:1,88:1m 90 | 150k39:1,40:1,67:1,88:-1m 91 | 151k39:1,40:1,67:-1m 92 | 152k39:1,40:1m 93 | 153k39:1,40:1m 94 | 154k39:1,40:1m 95 | 155k39:1,40:1m 96 | 156k39:1,40:1,67:2m 97 | 157k39:1,40:1,67:1m 98 | 158k39:1,40:1,67:1m 99 | 159k39:1,40:1,67:1m 100 | 160k39:1,40:1,67:-1m 101 | 161k39:1,40:1m 102 | 162k39:1,40:1m 103 | 163k39:1,40:1m 104 | 164k39:1,40:1m 105 | 165k39:1,40:1m 106 | 166k39:1,40:1m 107 | 167k39:1,40:-1m 108 | 168k39:1m 109 | 169k39:1m 110 | 170k39:1m 111 | 171k39:1m 112 | 172k39:1m 113 | 173k39:1m 114 | 174k39:1m 115 | 175k39:1m 116 | 176k39:1m 117 | 177k39:1m 118 | 178k39:1m 119 | 179k39:1m 120 | 180k39:1m 121 | 181k39:1m 122 | 182k39:1m 123 | 183k39:1m 124 | 184k39:1m 125 | 185k39:1m 126 | 186k39:1m 127 | 187k39:1m 128 | 188k39:1m 129 | 189k39:1m 130 | 190k39:1m 131 | 191k39:1m 132 | 192k39:1m 133 | 193k39:1m 134 | 194k39:1m 135 | 195k39:1m 136 | 196k39:1m 137 | 197k39:1m 138 | 198k39:1m 139 | 199k39:1,88:2m 140 | 200k39:1,88:1m 141 | 201k39:1,88:1m 142 | 202k39:1,88:1m 143 | 203k39:1,88:1m 144 | 204k39:1,88:1m 145 | 205k39:1,88:1m 146 | 206k39:1,88:1m 147 | 207k39:1,88:1m 148 | 208k39:1,88:-1m 149 | 209k39:1m 150 | 210k39:1m 151 | 211k39:1m 152 | 212k39:1m 153 | 213k39:1m 154 | 214k39:1m 155 | 215k39:1m 156 | 216k39:1m 157 | 217k39:1m 158 | 218k39:1m 159 | 219k39:-1m 160 | 239k39:2m 161 | 240k39:1m 162 | 241k39:1m 163 | 242k39:1,40:2m 164 | 243k39:1,40:1m 165 | 244k39:1,40:1m 166 | 245k39:1,40:1m 167 | 246k39:1,40:1m 168 | 247k39:1,40:1,88:2m 169 | 248k39:1,40:1,88:1m 170 | 249k39:1,40:1,88:1m 171 | 250k39:1,40:1,67:2,88:1m 172 | 251k39:1,40:1,67:1,88:1m 173 | 252k39:1,40:1,67:1,88:1m 174 | 253k39:1,40:1,67:1,88:-1m 175 | 254k39:1,40:1,67:1m 176 | 255k39:1,40:1,67:1m 177 | 256k39:1,40:1,67:-1m 178 | 257k39:1,40:1m 179 | 258k39:1,40:1,67:2m 180 | 259k39:1,40:1,67:1m 181 | 260k39:1,40:1,67:1m 182 | 261k39:1,40:1,67:-1m 183 | 262k39:1,40:1m 184 | 263k39:1,40:1m 185 | 264k39:1,40:1m 186 | 265k39:1,40:1,67:2m 187 | 266k39:1,40:1,67:1m 188 | 267k39:1,40:1,67:1m 189 | 268k39:1,40:1,67:1m 190 | 269k39:1,40:1,67:-1m 191 | 270k39:1,40:1m 192 | 271k39:1,40:1m 193 | 272k39:1,40:1,67:2m 194 | 273k39:1,40:1,67:1m 195 | 274k39:1,40:1,67:1m 196 | 275k39:1,40:1,67:-1m 197 | 276k39:1,40:1m 198 | 277k39:1,40:1m 199 | 278k39:1,40:1m 200 | 279k39:1,40:1m 201 | 280k39:1,40:1,67:2m 202 | 281k39:1,40:1,67:1m 203 | 282k39:1,40:1,67:1m 204 | 283k39:1,40:1,67:-1m 205 | 284k39:1,40:1m 206 | 285k39:1,40:1m 207 | 286k39:1,40:1m 208 | 287k39:1,40:1,67:2m 209 | 288k39:1,40:1,67:1m 210 | 289k39:1,40:1,67:1m 211 | 290k39:1,40:1,67:1m 212 | 291k39:1,40:1,67:-1m 213 | 292k39:1,40:1m 214 | 293k39:1,40:1m 215 | 294k39:1,40:1,67:2m 216 | 295k39:1,40:1,67:1m 217 | 296k39:-1,40:1,67:1m 218 | 297k40:1,67:1m 219 | 298k40:1,67:-1m 220 | 299k40:1m 221 | 300k40:1,67:2m 222 | 301k40:1,67:1m 223 | 302k40:1,67:1m 224 | 303k40:1,67:1m 225 | 304k40:1,67:1m 226 | 305k39:2,40:1,67:1m 227 | 306k39:1,40:1,67:-1m 228 | 307k39:1,40:1,67:2m 229 | 308k39:1,40:1,67:1m 230 | 309k39:1,40:1,67:1m 231 | 310k39:1,40:1,67:1m 232 | 311k39:1,40:1,67:-1m 233 | 312k39:1,40:1m 234 | 313k39:1,40:1,67:2m 235 | 314k39:1,40:1,67:1m 236 | 315k39:1,40:1,67:1m 237 | 316k39:1,40:1,67:1m 238 | 317k39:1,40:1,67:1m 239 | 318k39:1,40:1,67:1m 240 | 319k39:1,40:1,67:1m 241 | 320k39:1,40:1,67:1m 242 | 321k39:1,40:1,67:1m 243 | 322k39:1,40:1,67:-1m 244 | 323k39:1,40:1m 245 | 324k39:1,40:-1m 246 | 325k39:1m 247 | 326k39:1m 248 | 327k39:1,67:2m 249 | 328k39:1,67:1m 250 | 329k38:2,39:1,67:1m 251 | 330k38:1,39:1,67:1m 252 | 331k38:1,39:1,67:-1m 253 | 332k38:1,39:1m 254 | 333k38:1,39:-1m 255 | 334k38:1m 256 | 335k38:1,67:2m 257 | 336k38:1,67:1m 258 | 337k38:1,67:-1m 259 | 338k38:1m 260 | 339k38:1m 261 | 340k38:1m 262 | 341k38:1,67:2m 263 | 342k38:1,67:1m 264 | 343k38:1,67:1m 265 | 344k38:1,67:-1m 266 | 345k38:1m 267 | 346k38:1m 268 | 347k38:1m 269 | 348k38:1,67:2m 270 | 349k38:1,67:1m 271 | 350k38:1,67:1m 272 | 351k38:1,67:-1m 273 | 352k38:1m 274 | 353k38:1m 275 | 354k38:1m 276 | 355k38:1,67:2m 277 | 356k38:1,67:1m 278 | 357k38:1,67:1m 279 | 358k38:1,67:-1m 280 | 359k38:1m 281 | 360k38:1m 282 | 361k38:1,67:2m 283 | 362k38:1,67:1m 284 | 363k38:1,67:1m 285 | 364k38:1,67:-1m 286 | 365k38:1m 287 | 366k38:1m 288 | 367k38:1m 289 | 368k38:1,67:2m 290 | 369k38:1,67:1m 291 | 370k38:1,67:-1m 292 | 371k38:1m 293 | 372k38:1m 294 | 373k38:1m 295 | 374k38:1,67:2m 296 | 375k38:1,67:1m 297 | 376k38:1,67:1m 298 | 377k38:1,67:1m 299 | 378k38:1,67:-1m 300 | 379k38:1m 301 | 380k38:1m 302 | 381k38:1,67:2m 303 | 382k37:2,38:1,67:1m 304 | 383k37:1,38:1,67:1m 305 | 384k37:1,38:1,67:-1m 306 | 385k37:1,38:1m 307 | 386k37:-1,38:1m 308 | 387k38:1m 309 | 388k38:1,67:2m 310 | 389k38:1,67:1m 311 | 390k38:1,67:-1m 312 | 391k38:1m 313 | 392k38:1m 314 | 393k38:1m 315 | 394k38:1m 316 | 395k38:1m 317 | 396k38:1,67:2m 318 | 397k38:1,67:1m 319 | 398k38:1,67:1m 320 | 399k38:1,67:-1m 321 | 400k38:1m 322 | 401k38:1m 323 | 402k38:1,39:2m 324 | 403k38:1,39:1m 325 | 404k38:1,39:1,67:2m 326 | 405k38:1,39:1,67:1m 327 | 406k38:1,39:1,67:-1m 328 | 407k38:1,39:1m 329 | 408k38:1,39:1m 330 | 409k38:1,39:1m 331 | 410k38:1,39:1m 332 | 411k38:1,39:1,67:2m 333 | 412k38:1,39:1,67:-1m 334 | 413k38:1,39:1m 335 | 414k38:1,39:1m 336 | 415k38:1,39:1m 337 | 416k38:1,39:1m 338 | 417k38:1,39:1,67:2m 339 | 418k38:1,39:1,67:1m 340 | 419k38:1,39:1,67:1m 341 | 420k38:1,39:1,67:1m 342 | 421k38:1,39:1,67:-1m 343 | 422k38:1,39:1m 344 | 423k38:1,39:1m 345 | 424k38:1,39:1m 346 | 425k38:1,39:1m 347 | 426k38:1,39:1,67:2m 348 | 427k38:1,39:1,67:1m 349 | 428k38:1,39:1,67:1m 350 | 429k38:1,39:1,67:1m 351 | 430k38:1,39:1,67:-1m 352 | 431k38:1,39:1m 353 | 432k38:1,39:1m 354 | 433k38:1,39:1m 355 | 434k38:1,39:1,67:2m 356 | 435k38:1,39:1,67:1m 357 | 436k38:1,39:1,67:1m 358 | 437k38:1,39:1,67:1m 359 | 438k38:1,39:1,67:-1m 360 | 439k38:1,39:1m 361 | 440k38:1,39:1m 362 | 441k38:1,39:1m 363 | 442k38:1,39:1m 364 | 443k38:1,39:1m 365 | 444k38:1,39:1m 366 | 445k38:1,39:1m 367 | 446k38:1,39:1m 368 | 447k38:1,39:-1m 369 | 448k37:2,38:1m 370 | 449k37:1,38:-1m 371 | 450k37:1,67:2m 372 | 451k37:1,67:-1m 373 | 452k37:1m 374 | 453k37:1m 375 | 454k37:1m 376 | 455k37:1,67:2m 377 | 456k37:1,67:1m 378 | 457k37:1,67:-1m 379 | 458k37:1m 380 | 459k37:1m 381 | 460k37:1m 382 | 461k37:1m 383 | 462k37:1m 384 | 463k37:1,67:2m 385 | 464k37:1,67:1m 386 | 465k37:-1,67:1m 387 | 466k67:-1m 388 | 468k67:2m 389 | 469k67:1m 390 | 470k67:1m 391 | 471k67:1m 392 | 472k67:-1m 393 | 476k67:2m 394 | 477k67:1m 395 | 478k67:1m 396 | 479k67:1m 397 | 480k67:-1m 398 | 484k67:2m 399 | 485k67:1m 400 | 486k67:1m 401 | 487k67:-1m 402 | 492k67:2m 403 | 493k67:1m 404 | 494k67:1m 405 | 495k67:-1m 406 | 499k67:2m 407 | 500k67:1m 408 | 501k67:1m 409 | 502k67:-1m 410 | 506k67:2m 411 | 507k67:1m 412 | 508k67:1m 413 | 509k67:1m 414 | 510k67:-1m 415 | 513k67:2m 416 | 514k67:1m 417 | 515k67:1m 418 | 516k67:1m 419 | 517k67:-1m 420 | 521k67:2m 421 | 522k67:1m 422 | 523k67:1m 423 | 524k67:-1m 424 | 528k67:2m 425 | 529k67:1m 426 | 530k67:1m 427 | 531k67:1m 428 | 532k67:-1m 429 | 536k67:2m 430 | 537k67:1m 431 | 538k67:1m 432 | 539k67:1m 433 | 540k67:1m 434 | 541k67:-1m 435 | 545k67:2m 436 | 546k37:2,67:1m 437 | 547k37:1,67:1m 438 | 548k37:1,67:-1m 439 | 549k37:1m 440 | 550k37:1m 441 | 551k37:1m 442 | 552k37:1m 443 | 553k37:1m 444 | 554k37:1m 445 | 555k37:1m 446 | 556k37:1m 447 | 557k37:1m 448 | 558k37:1m 449 | 559k37:1m 450 | 560k37:1m 451 | 561k37:1m 452 | 562k37:1m 453 | 563k37:1m 454 | 564k37:1m 455 | 565k37:1m 456 | 566k37:1m 457 | 567k37:1m 458 | 568k37:1m 459 | 569k37:1m 460 | 570k37:1m 461 | 571k37:1m 462 | 572k37:1m 463 | 573k37:1m 464 | 574k37:1m 465 | 575k37:1m 466 | 576k37:1m 467 | 577k37:1m 468 | 578k37:1m 469 | 579k37:1m 470 | 580k37:1m 471 | 581k37:1m 472 | 582k37:1m 473 | 583k37:1m 474 | 584k37:1m 475 | 585k37:1m 476 | 586k37:1m 477 | 587k37:1m 478 | 588k37:1m 479 | 589k37:1m 480 | 590k37:1m 481 | 591k37:1m 482 | 592k37:1m 483 | 593k37:1m 484 | 594k37:1m 485 | 595k37:1,40:2m 486 | 596k37:1,40:1m 487 | 597k37:1,40:1m 488 | 598k37:1,40:1m 489 | 599k37:1,40:1m 490 | 600k37:1,40:1m 491 | 601k37:1,40:1m 492 | 602k37:1,40:1m 493 | 603k37:1,40:1m 494 | 604k37:1,40:1m 495 | 605k37:1,40:1m 496 | 606k37:1,40:1,88:2m 497 | 607k37:1,40:1,88:1m 498 | 608k37:1,40:1,88:1m 499 | 609k37:1,40:1,88:1m 500 | 610k37:1,40:1,67:2,88:1m 501 | 611k37:1,40:1,67:1,88:1m 502 | 612k37:1,40:1,67:1,88:-1m 503 | 613k37:1,40:1,67:1m 504 | 614k37:1,40:1,67:1m 505 | 615k37:1,40:1,67:-1m 506 | 616k37:1,40:1,67:2m 507 | 617k37:1,40:1,67:1m 508 | 618k37:1,40:1,67:1m 509 | 619k37:1,40:1,67:1m 510 | 620k37:1,40:1,67:1m 511 | 621k37:1,40:1,67:-1m 512 | 622k37:1,40:1,67:2m 513 | 623k37:1,40:1,67:1m 514 | 624k37:1,40:1,67:1m 515 | 625k37:1,40:1,67:1m 516 | 626k37:1,40:1,67:1m 517 | 627k37:1,40:1,67:-1m 518 | 628k37:1,40:1m 519 | 629k37:1,40:1m 520 | 630k37:1,40:1m 521 | 631k37:1,40:1,67:2m 522 | 632k37:1,40:1,67:1m 523 | 633k37:1,40:1,67:-1m 524 | 634k37:1,40:1m 525 | 635k37:1,40:1m 526 | 636k37:1,40:1m 527 | 637k37:1,40:1m 528 | 638k37:1,40:1,67:2m 529 | 639k37:1,40:1,67:1m 530 | 640k37:1,40:1,67:-1m 531 | 641k37:1,40:1m 532 | 642k37:1,40:1m 533 | 643k37:1,40:1m 534 | 644k37:1,40:1m 535 | 645k37:1,40:1,67:2m 536 | 646k37:1,40:1,67:1m 537 | 647k37:1,40:1,67:-1m 538 | 648k37:1,40:1m 539 | 649k37:1,40:1m 540 | 650k37:1,40:1m 541 | 651k37:1,40:1m 542 | 652k37:1,40:1,67:2m 543 | 653k37:1,40:1,67:1m 544 | 654k37:1,40:1,67:1m 545 | 655k37:1,40:1,67:-1m 546 | 656k37:1,40:1m 547 | 657k37:1,40:1m 548 | 658k37:1,40:1m 549 | 659k37:1,40:1,67:2m 550 | 660k37:1,40:1,67:1m 551 | 661k37:1,40:1,67:1m 552 | 662k37:1,40:1,67:-1m 553 | 663k37:1,40:1m 554 | 664k37:1,40:1m 555 | 665k37:1,40:1m 556 | 666k37:1,40:1m 557 | 667k37:1,40:1,67:2m 558 | 668k37:1,40:1,67:1m 559 | 669k37:1,40:1,67:-1m 560 | 670k37:1,40:1m 561 | 671k37:1,40:1m 562 | 672k37:1,40:1m 563 | 673k37:1,40:1m 564 | 674k37:1,40:1,67:2m 565 | 675k37:1,40:1,67:1m 566 | 676k37:1,40:1,67:-1m 567 | 677k37:1,40:1m 568 | 678k37:1,40:1m 569 | 679k37:1,40:1m 570 | 680k37:1,40:1m 571 | 681k37:1,40:1,67:2m 572 | 682k37:1,40:1,67:1m 573 | 683k37:1,40:1,67:1m 574 | 684k37:1,40:1,67:-1m 575 | 685k37:1,40:1m 576 | 686k37:1,40:1m 577 | 687k37:1,40:1m 578 | 688k37:1,40:1m 579 | 689k37:1,40:1,67:2m 580 | 690k37:1,40:1,67:1m 581 | 691k37:1,40:1,67:-1m 582 | 692k37:1,40:1m 583 | 693k37:1,40:1m 584 | 694k37:1,40:1m 585 | 695k37:1,40:1m 586 | 696k37:1,40:1,67:2m 587 | 697k37:1,40:1,67:1m 588 | 698k37:1,40:1,67:-1m 589 | 699k37:1,40:1m 590 | 700k37:1,40:1m 591 | 701k37:1,40:1m 592 | 702k37:1,40:1m 593 | 703k37:1,40:1m 594 | 704k37:1,40:1,67:2m 595 | 705k37:1,40:1,67:1m 596 | 706k37:1,40:1,67:-1m 597 | 707k37:1,40:1m 598 | 708k37:1,40:1m 599 | 709k37:1,40:1m 600 | 710k37:1,40:1m 601 | 711k37:1,40:1m 602 | 712k37:1,40:1m 603 | 713k37:1,40:1m 604 | 714k37:1,40:-1m 605 | 715k37:1m 606 | 716k37:1m 607 | 717k37:1m 608 | 718k37:1m 609 | 719k37:1m 610 | 720k37:1m 611 | 721k37:1m 612 | 722k37:1m 613 | 723k37:1m 614 | 724k37:1m 615 | 725k37:1m 616 | 726k37:1m 617 | 727k37:1m 618 | 728k37:1m 619 | 729k37:1m 620 | 730k37:1m 621 | 731k37:1m 622 | 732k37:1m 623 | 733k37:1m 624 | 734k37:1m 625 | 735k37:1m 626 | 736k37:1m 627 | 737k37:1m 628 | 738k37:1m 629 | 739k37:1m 630 | 740k37:1m 631 | 741k37:1m 632 | 742k37:1m 633 | 743k37:1m 634 | 744k37:1m 635 | 745k37:1m 636 | 746k37:1m 637 | 747k37:1m 638 | 748k37:1m 639 | 749k37:1m 640 | 750k37:1m 641 | 751k37:1m 642 | 752k37:1m 643 | 753k37:1m 644 | 754k37:1m 645 | 755k37:1m 646 | 756k37:1m 647 | 757k37:1m 648 | 758k37:1m 649 | 759k37:1,88:2m 650 | 760k37:1,40:2,88:1m 651 | 761k37:1,40:1,88:1m 652 | 762k37:1,40:1,67:2,88:1m 653 | 763k37:1,40:1,67:1,88:-1m 654 | 764k37:1,40:1,67:1m 655 | 765k37:1,40:1,67:-1m 656 | 766k37:1,40:1m 657 | 767k37:1,40:1,67:2m 658 | 768k37:1,40:1,67:1m 659 | 769k37:1,40:1,67:1m 660 | 770k37:1,40:1,67:-1m 661 | 771k37:1,40:1m 662 | 772k37:1,40:1m 663 | 773k37:1,40:1m 664 | 774k37:1,40:1,67:2m 665 | 775k37:1,40:1,67:1m 666 | 776k37:1,40:1,67:1m 667 | 777k37:1,40:1,67:1m 668 | 778k37:1,40:1,67:1m 669 | 779k37:1,40:1,67:1m 670 | 780k37:1,40:1,67:-1m 671 | 781k37:1,40:1m 672 | 782k37:1,40:1m 673 | 783k37:1,40:1m 674 | 784k37:1,40:-1m 675 | 785k37:1m 676 | 786k37:1m 677 | 787k37:1m 678 | 788k37:1m 679 | 789k37:1m 680 | 790k37:1m 681 | 791k37:1m 682 | 792k37:1m 683 | 793k37:1m 684 | 794k37:1m 685 | 795k37:1m 686 | 796k37:1m 687 | 797k37:1m 688 | 798k37:1m 689 | 799k37:1m 690 | 800k37:1m 691 | 801k37:1m 692 | 802k37:1m 693 | 803k37:1m 694 | 804k37:1m 695 | 805k37:1m 696 | 806k37:1m 697 | 807k37:1m 698 | 808k37:1m 699 | 809k37:1m 700 | 810k37:1m 701 | 811k37:1,67:2m 702 | 812k37:1,67:1m 703 | 813k37:1,67:1m 704 | 814k37:1,67:1m 705 | 815k37:1,67:1m 706 | 816k37:1,67:-1m 707 | 817k37:1m 708 | 818k37:1m 709 | 819k37:1m 710 | 820k37:1m 711 | 821k37:1m 712 | 822k37:1m 713 | 823k37:-1m 714 | 831k88:2m 715 | 832k88:1m 716 | 833k88:1m 717 | 834k88:1m 718 | 835k67:2,88:1m 719 | 836k67:1,88:-1m 720 | 837k67:1m 721 | 838k67:-1m 722 | 843k67:2m 723 | 844k67:1m 724 | 845k67:-1m 725 | 850k67:2m 726 | 851k67:1m 727 | 852k67:1m 728 | 853k67:-1m 729 | 858k67:2m 730 | 859k67:1m 731 | 860k67:1m 732 | 861k67:-1m 733 | 865k67:2m 734 | 866k67:1m 735 | 867k67:1m 736 | 868k67:1m 737 | 869k67:-1m 738 | 872k67:2m 739 | 873k67:1m 740 | 874k67:1m 741 | 875k67:1m 742 | 876k67:-1m 743 | 887k88:2m 744 | 888k88:1m 745 | 889k88:1m 746 | 890k37:2,88:1m 747 | 891k37:1,88:1m 748 | 892k37:1,67:2,88:1m 749 | 893k37:1,67:1,88:-1m 750 | 894k37:1,67:1m 751 | 895k37:1,40:2,67:1m 752 | 896k37:1,40:1,67:-1m 753 | 897k37:1,40:1m 754 | 898k37:1,40:-1m 755 | 899k37:1,67:2m 756 | 900k37:1,67:1m 757 | 901k37:-1,67:1m 758 | 902k67:-1m 759 | 904k67:2m 760 | 905k67:1m 761 | 906k67:1m 762 | 907k67:-1m 763 | 908k37:2m 764 | 909k37:-1m 765 | 911k67:2m 766 | 912k67:1m 767 | 913k67:-1m 768 | 918k67:2m 769 | 919k67:1m 770 | 920k67:1m 771 | 921k67:1m 772 | 922k67:-1m 773 | 926k67:2m 774 | 927k67:1m 775 | 928k67:1m 776 | 929k67:1m 777 | 930k67:-1m 778 | 942k88:2m 779 | 943k88:1m 780 | 944k67:2,88:1m 781 | 945k67:1,88:1m 782 | 946k67:1,88:-1m 783 | 947k67:1m 784 | 948k67:-1m 785 | 951k67:2m 786 | 952k67:1m 787 | 953k67:1m 788 | 954k67:-1m 789 | 962k37:2m 790 | 963k37:1m 791 | 964k37:1m 792 | 965k37:1m 793 | 966k37:1m 794 | 967k37:1m 795 | 968k37:1m 796 | 969k37:1m 797 | 970k37:1m 798 | 971k37:1m 799 | 972k37:1m 800 | 973k37:1m 801 | 974k37:1m 802 | 975k37:1m 803 | 976k37:1m 804 | 977k37:-1m 805 | 991k37:2m 806 | 992k37:1,40:2m 807 | 993k37:1,40:1m 808 | 994k37:1,40:1m 809 | 995k37:1,40:1m 810 | 996k37:1,40:1m 811 | 997k37:1,40:1,88:2m 812 | 998k37:1,40:1,88:1m 813 | 999k37:1,40:1,67:2,88:1m 814 | 1000k37:1,40:1,67:1,88:1m 815 | 1001k37:1,40:1,67:1,88:-1m 816 | 1002k37:1,40:1,67:1m 817 | 1003k37:1,40:1,67:-1m 818 | 1004k37:1,40:1m 819 | 1005k37:1,40:1m 820 | 1006k37:1,40:1,67:2m 821 | 1007k37:1,40:1,67:1m 822 | 1008k37:1,40:1,67:1m 823 | 1009k37:1,40:1,67:1m 824 | 1010k37:1,40:1,67:-1m 825 | 1011k37:1,40:1m 826 | 1012k37:1,40:1m 827 | 1013k37:1,40:1m 828 | 1014k37:1,40:1m 829 | 1015k37:1,40:1,67:2m 830 | 1016k37:1,40:1,67:1m 831 | 1017k37:1,40:1,67:1m 832 | 1018k37:1,40:1,67:-1m 833 | 1019k37:-1,40:1m 834 | 1020k40:1m 835 | 1021k40:1m 836 | 1022k40:-1m 837 | 1032k37:2m 838 | 1033k37:1m 839 | 1034k37:1m 840 | 1035k37:1m 841 | 1036k37:1m 842 | 1037k37:1m 843 | 1038k37:1m 844 | 1039k37:1m 845 | 1040k37:1m 846 | 1041k37:1m 847 | 1042k37:1m 848 | 1043k37:1m 849 | 1044k37:1m 850 | 1045k37:1m 851 | 1046k37:-1m 852 | 1051k37:2m 853 | 1052k37:1m 854 | 1053k37:1m 855 | 1054k37:1m 856 | 1055k37:1m 857 | 1056k37:1m 858 | 1057k37:1m 859 | 1058k37:1m 860 | 1059k37:1m 861 | 1060k37:-1m 862 | 1066k37:2m 863 | 1067k37:1m 864 | 1068k37:1m 865 | 1069k37:1m 866 | 1070k37:1m 867 | 1071k37:1m 868 | 1072k37:1m 869 | 1073k37:1,38:2m 870 | 1074k37:1,38:1m 871 | 1075k37:1,38:1m 872 | 1076k37:1,38:1m 873 | 1077k37:1,38:1m 874 | 1078k37:1,38:1m 875 | 1079k37:1,38:1m 876 | 1080k37:1,38:1m 877 | 1081k37:1,38:1,67:2m 878 | 1082k37:1,38:1,67:1m 879 | 1083k37:1,38:1,67:1m 880 | 1084k37:1,38:1,67:1m 881 | 1085k37:1,38:1,67:1m 882 | 1086k37:-1,38:1,67:1m 883 | 1087k38:1,67:-1m 884 | 1088k38:1m 885 | 1089k38:1m 886 | 1090k38:1,67:2m 887 | 1091k38:1,67:1m 888 | 1092k38:1,67:1m 889 | 1093k38:1,67:1m 890 | 1094k38:1,67:-1m 891 | 1095k38:1m 892 | 1096k38:1m 893 | 1097k38:1m 894 | 1098k38:1,67:2m 895 | 1099k38:1,67:1m 896 | 1100k38:1,67:1m 897 | 1101k38:1,67:1m 898 | 1102k38:1,67:-1m 899 | 1103k38:1m 900 | 1104k38:1m 901 | 1105k38:1m 902 | 1106k38:1,67:2m 903 | 1107k38:1,67:1m 904 | 1108k38:1,67:1m 905 | 1109k38:1,67:1m 906 | 1110k38:1,67:-1m 907 | 1111k38:1m 908 | 1112k37:2,38:1m 909 | 1113k37:1,38:1m 910 | 1114k37:1,38:1,67:2m 911 | 1115k37:1,38:1,67:1m 912 | 1116k37:-1,38:1,67:1m 913 | 1117k38:1,67:-1m 914 | 1118k38:1m 915 | 1119k38:1,67:2m 916 | 1120k38:1,67:1m 917 | 1121k38:1,67:1m 918 | 1122k38:1,67:-1m 919 | 1123k38:1m 920 | 1124k38:1m 921 | 1125k38:1m 922 | 1126k38:1,67:2m 923 | 1127k38:1,67:1m 924 | 1128k38:1,67:1m 925 | 1129k38:1,67:1m 926 | 1130k38:1,67:-1m 927 | 1131k38:1m 928 | 1132k38:1m 929 | 1133k38:1m 930 | 1134k38:1,67:2m 931 | 1135k38:1,67:1m 932 | 1136k38:1,67:1m 933 | 1137k38:1,67:1m 934 | 1138k38:1,67:-1m 935 | 1139k38:1m 936 | 1140k38:1m 937 | 1141k38:1,67:2m 938 | 1142k38:1,67:1m 939 | 1143k38:1,67:1m 940 | 1144k38:1,67:-1m 941 | 1145k38:1m 942 | 1146k38:1m 943 | 1147k38:1m 944 | 1148k38:1m 945 | 1149k38:1,67:2m 946 | 1150k38:1,67:1m 947 | 1151k38:1,67:-1m 948 | 1152k38:1m 949 | 1153k38:1m 950 | 1154k38:1m 951 | 1155k38:1,67:2m 952 | 1156k38:1,67:1m 953 | 1157k38:1,67:1m 954 | 1158k38:1,67:1m 955 | 1159k38:1,67:1m 956 | 1160k38:1,67:-1m 957 | 1161k38:1m 958 | 1162k38:1m 959 | 1163k38:1,67:2m 960 | 1164k38:1,67:1m 961 | 1165k38:1,67:-1m 962 | 1166k38:1m 963 | 1167k38:1m 964 | 1168k38:1m 965 | 1169k38:1m 966 | 1170k38:1,67:2m 967 | 1171k38:1,67:1m 968 | 1172k38:1,67:1m 969 | 1173k38:1,67:-1m 970 | 1174k38:1m 971 | 1175k38:1m 972 | 1176k38:1m 973 | 1177k38:1m 974 | 1178k38:1,67:2m 975 | 1179k38:1,67:-1m 976 | 1180k38:1m 977 | 1181k38:1m 978 | 1182k38:1m 979 | 1183k38:1,67:2m 980 | 1184k38:1,67:1m 981 | 1185k38:1,67:1m 982 | 1186k38:1,67:-1m 983 | 1187k38:1m 984 | 1188k38:1m 985 | 1189k38:1m 986 | 1190k38:1,67:2m 987 | 1191k38:1,67:1m 988 | 1192k38:1,67:1m 989 | 1193k38:1,67:1m 990 | 1194k38:1,67:-1m 991 | 1195k38:1m 992 | 1196k38:1m 993 | 1197k38:1m 994 | 1198k38:1,67:2m 995 | 1199k38:1,67:1m 996 | 1200k38:1,67:1m 997 | 1201k38:1,67:-1m 998 | 1202k38:1m 999 | 1203k38:1m 1000 | 1204k38:1m 1001 | 1205k38:1m 1002 | 1206k38:1,67:2m 1003 | 1207k38:1,67:1m 1004 | 1208k38:1,39:2,67:1m 1005 | 1209k38:1,39:1,67:1m 1006 | 1210k38:1,39:1,67:-1m 1007 | 1211k38:1,39:1m 1008 | 1212k38:1,39:1m 1009 | 1213k38:1,39:1,67:2m 1010 | 1214k38:1,39:1,67:1m 1011 | 1215k38:1,39:1,67:1m 1012 | 1216k38:1,39:1,67:1m 1013 | 1217k38:1,39:1,67:1m 1014 | 1218k38:1,39:1,67:-1m 1015 | 1219k38:1,39:1m 1016 | 1220k38:1,39:1m 1017 | 1221k38:1,39:1m 1018 | 1222k38:1,39:1m 1019 | 1223k38:1,39:1,67:2m 1020 | 1224k38:1,39:1,67:1m 1021 | 1225k38:1,39:1,67:1m 1022 | 1226k38:1,39:1,67:-1m 1023 | 1227k38:1,39:1m 1024 | 1228k38:1,39:1m 1025 | 1229k38:1,39:1m 1026 | 1230k38:1,39:1m 1027 | 1231k38:1,39:1m 1028 | 1232k38:1,39:1,67:2m 1029 | 1233k38:1,39:1,67:1m 1030 | 1234k38:1,39:1,67:1m 1031 | 1235k38:1,39:1,67:1m 1032 | 1236k38:1,39:1,67:-1m 1033 | 1237k38:1,39:1m 1034 | 1238k38:1,39:1m 1035 | 1239k38:1,39:1m 1036 | 1240k38:1,39:1m 1037 | 1241k38:1,39:1m 1038 | 1242k38:1,39:1,67:2m 1039 | 1243k38:1,39:1,67:1m 1040 | 1244k38:1,39:1,67:1m 1041 | 1245k38:1,39:1,67:-1m 1042 | 1246k38:1,39:1m 1043 | 1247k38:1,39:1m 1044 | 1248k38:1,39:1m 1045 | 1249k38:1,39:1m 1046 | 1250k38:1,39:1,67:2m 1047 | 1251k38:1,39:1,67:1m 1048 | 1252k38:1,39:1,67:1m 1049 | 1253k38:1,39:1,67:1m 1050 | 1254k38:1,39:1,67:-1m 1051 | 1255k38:1,39:1m 1052 | 1256k38:1,39:1m 1053 | 1257k38:1,39:1m 1054 | 1258k38:1,39:1m 1055 | 1259k38:1,39:1,67:2m 1056 | 1260k38:1,39:1,67:1m 1057 | 1261k38:1,39:1,67:1m 1058 | 1262k38:1,39:1,67:1m 1059 | 1263k38:1,39:1,67:1m 1060 | 1264k38:1,39:1,67:-1m 1061 | 1265k38:1,39:1m 1062 | 1266k38:1,39:1m 1063 | 1267k38:1,39:1m 1064 | 1268k38:1,39:1,67:2m 1065 | 1269k38:1,39:1,67:1m 1066 | 1270k38:1,39:1,67:1m 1067 | 1271k38:1,39:1,67:1m 1068 | 1272k38:1,39:1,67:1m 1069 | 1273k38:1,39:1,67:-1m 1070 | 1274k38:1,39:1m 1071 | 1275k38:1,39:1m 1072 | 1276k38:1,39:1m 1073 | 1277k38:1,39:1,67:2m 1074 | 1278k38:1,39:1,67:1m 1075 | 1279k38:1,39:1,67:1m 1076 | 1280k38:1,39:1,67:1m 1077 | 1281k38:1,39:1,67:1m 1078 | 1282k38:1,39:1,67:-1m 1079 | 1283k38:1,39:1m 1080 | 1284k38:1,39:1m 1081 | 1285k38:1,39:1m 1082 | 1286k38:1,39:1m 1083 | 1287k38:1,39:1,67:2m 1084 | 1288k38:1,39:1,67:1m 1085 | 1289k38:1,39:1,67:1m 1086 | 1290k38:1,39:1,67:-1m 1087 | 1291k38:1,39:1m 1088 | 1292k38:1,39:1m 1089 | 1293k38:1,39:-1m 1090 | 1294k38:1m 1091 | 1295k38:1,67:2m 1092 | 1296k38:1,67:1m 1093 | 1297k38:1,67:1m 1094 | 1298k38:1,67:1m 1095 | 1299k38:1,67:1m 1096 | 1300k37:2,38:1,67:1m 1097 | 1301k37:1,38:1,67:-1m 1098 | 1302k37:1,38:1m 1099 | 1303k37:1,38:1m 1100 | 1304k37:1,38:-1m 1101 | 1305k37:1m 1102 | 1306k37:-1m 1103 | 1308k67:2m 1104 | 1309k67:1m 1105 | 1310k67:-1m 1106 | 1315k67:2m 1107 | 1316k67:1m 1108 | 1317k67:1m 1109 | 1318k67:1m 1110 | 1319k67:-1m 1111 | 1326k67:2m 1112 | 1327k67:1m 1113 | 1328k67:1m 1114 | 1329k67:1m 1115 | 1330k67:1m 1116 | 1331k67:-1m 1117 | 1337k39:2m 1118 | 1338k39:1m 1119 | 1339k39:1m 1120 | 1340k39:1m 1121 | 1341k39:1m 1122 | 1342k39:-1m 1123 | 1344k39:2m 1124 | 1345k39:1m 1125 | 1346k39:1m 1126 | 1347k39:1m 1127 | 1348k39:-1m 1128 | 1352k37:2m 1129 | 1353k37:1m 1130 | 1354k37:1m 1131 | 1355k37:1m 1132 | 1356k37:1m 1133 | 1357k37:1m 1134 | 1358k37:1m 1135 | 1359k37:1m 1136 | 1360k37:1m 1137 | 1361k37:1m 1138 | 1362k37:1m 1139 | 1363k37:1m 1140 | 1364k37:1,67:2m 1141 | 1365k37:1,67:1m 1142 | 1366k37:-1,67:1m 1143 | 1367k67:1m 1144 | 1368k67:-1m 1145 | 1372k67:2m 1146 | 1373k67:1m 1147 | 1374k67:1m 1148 | 1375k67:1m 1149 | 1376k67:-1m 1150 | 1380k67:2m 1151 | 1381k37:2,67:1m 1152 | 1382k37:1,67:1m 1153 | 1383k37:1,67:-1m 1154 | 1384k37:1m 1155 | 1385k37:1m 1156 | 1386k37:1,38:2m 1157 | 1387k37:1,38:1m 1158 | 1388k37:-1,38:1m 1159 | 1389k38:-1m 1160 | 1395k67:2m 1161 | 1396k38:2,67:1m 1162 | 1397k38:1,67:1m 1163 | 1398k38:1,67:1m 1164 | 1399k38:1,67:-1m 1165 | 1400k38:1m 1166 | 1401k38:1m 1167 | 1402k38:1m 1168 | 1403k38:1,67:2m 1169 | 1404k38:1,67:1m 1170 | 1405k38:1,67:1m 1171 | 1406k38:1,67:1m 1172 | 1407k38:1,67:1m 1173 | 1408k38:1,67:-1m 1174 | 1409k38:1m 1175 | 1410k38:1m 1176 | 1411k38:1m 1177 | 1412k38:1,39:2m 1178 | 1413k38:1,39:1,67:2m 1179 | 1414k38:1,39:1,67:-1m 1180 | 1415k38:1,39:1m 1181 | 1416k38:1,39:1m 1182 | 1417k38:1,39:1,67:2m 1183 | 1418k38:1,39:-1,67:1m 1184 | 1419k38:1,67:-1m 1185 | 1420k38:-1m 1186 | 1422k37:2m 1187 | 1423k37:1m 1188 | 1424k37:1m 1189 | 1425k37:1m 1190 | 1426k37:1m 1191 | 1427k37:1m 1192 | 1428k37:1m 1193 | 1429k37:1m 1194 | 1430k37:1m 1195 | 1431k37:1m 1196 | 1432k37:1m 1197 | 1433k37:1m 1198 | 1434k37:1m 1199 | 1435k37:1m 1200 | 1436k37:1,39:2m 1201 | 1437k37:1,39:1m 1202 | 1438k37:-1,39:1m 1203 | 1439k39:1m 1204 | 1440k39:1m 1205 | 1441k39:1,67:2m 1206 | 1442k39:1,67:1m 1207 | 1443k39:1,67:1m 1208 | 1444k39:1,67:1m 1209 | 1445k39:1,67:-1m 1210 | 1446k39:1m 1211 | 1447k39:-1m 1212 | 1449k67:2m 1213 | 1450k67:1m 1214 | 1451k67:1m 1215 | 1452k67:-1m 1216 | 1455k67:2m 1217 | 1456k67:1m 1218 | 1457k67:1m 1219 | 1458k67:-1m 1220 | 1464k67:2m 1221 | 1465k67:1m 1222 | 1466k67:-1m 1223 | 1469km285,104,0,0 1224 | 1470km276,79,0,0 1225 | 1471km267,60,0,0 1226 | 1472km250,34,0,0 1227 | 1475km217,5,0,0 1228 | 1477km196,-8,0,0 1229 | 1478km194,-9,0,0 1230 | 1480km192,-9,0,0 1231 | 1482km179,-9,0,0 1232 | 1483km160,-1,0,0 1233 | -------------------------------------------------------------------------------- /src/data/bot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/bot.png -------------------------------------------------------------------------------- /src/data/bot_bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/bot_bullet.png -------------------------------------------------------------------------------- /src/data/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/bullet.png -------------------------------------------------------------------------------- /src/data/button.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/button.mp3 -------------------------------------------------------------------------------- /src/data/countdown.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/countdown.mp3 -------------------------------------------------------------------------------- /src/data/cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/cursor.png -------------------------------------------------------------------------------- /src/data/dirt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/dirt.png -------------------------------------------------------------------------------- /src/data/dirt_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/dirt_top.png -------------------------------------------------------------------------------- /src/data/enemy.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/enemy.mp3 -------------------------------------------------------------------------------- /src/data/gibs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/gibs.png -------------------------------------------------------------------------------- /src/data/hit.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/hit.mp3 -------------------------------------------------------------------------------- /src/data/hurt.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/hurt.mp3 -------------------------------------------------------------------------------- /src/data/jam.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/jam.mp3 -------------------------------------------------------------------------------- /src/data/jet.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/jet.mp3 -------------------------------------------------------------------------------- /src/data/jet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/jet.png -------------------------------------------------------------------------------- /src/data/jump.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/jump.mp3 -------------------------------------------------------------------------------- /src/data/land.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/land.mp3 -------------------------------------------------------------------------------- /src/data/menu_hit.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/menu_hit.mp3 -------------------------------------------------------------------------------- /src/data/menu_hit_2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/menu_hit_2.mp3 -------------------------------------------------------------------------------- /src/data/miniframe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/miniframe.png -------------------------------------------------------------------------------- /src/data/mode.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/mode.mp3 -------------------------------------------------------------------------------- /src/data/shoot.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/shoot.mp3 -------------------------------------------------------------------------------- /src/data/spaceman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/spaceman.png -------------------------------------------------------------------------------- /src/data/spawner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/spawner.png -------------------------------------------------------------------------------- /src/data/spawner_gibs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/spawner_gibs.png -------------------------------------------------------------------------------- /src/data/tech_tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AdamAtomic/Mode/cb6bdaeaf8d5ad921b0b08bdfbd9c45057316839/src/data/tech_tiles.png --------------------------------------------------------------------------------