Section 1
//Animation (go_to_hell.Animation)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Animation {
private var sequence:Array;
private var c_frame;
private var speed:Number;
private var flip_h:Boolean;// = false
private var bitmaps:Array;
private var loop:Number;
public var origin:Point;
private var on_reset:Function;
private var on_finish:Function;
private var flip_v:Boolean;// = false
private static var zero_point:Point = new Point(0, 0);
public function Animation(resource:String, frames:Number, sequence:Array, speed:Number=1, loop:Number=0, origin:Point=null, div_height:Number=0, on_reset:Function=null, on_finish:Function=null){
var i:*;
var bmp:BitmapData;
var ani:BitmapData;
bitmaps = new Array();
flip_h = false;
flip_v = false;
super();
this.sequence = sequence;
if (!origin){
this.origin = zero_point;
} else {
this.origin = origin;
};
if (div_height > 0){
ani = Tools.getPicture(resource);
frames = Math.floor((ani.height / div_height));
i = 0;
while (i < frames) {
bmp = new BitmapData(ani.width, div_height, true);
bmp.copyPixels(ani, new Rectangle(0, (i * div_height), ani.width, div_height), zero_point);
bitmaps.push(bmp);
i++;
};
} else {
i = 0;
while (i < frames) {
bitmaps.push(Tools.getPicture(((resource + "_") + i)));
i++;
};
};
this.speed = speed;
this.loop = loop;
this.on_reset = on_reset;
this.on_finish = on_finish;
c_frame = -(speed);
}
public function getNextFrame():BitmapData{
c_frame = (c_frame + speed);
if (c_frame >= sequence.length){
if (on_finish != null){
on_finish();
};
if (loop < 0){
c_frame = (sequence.length - 1);
} else {
c_frame = (c_frame % sequence.length);
if (loop > 0){
c_frame = (c_frame + loop);
};
};
};
return (bitmaps[sequence[Math.floor(c_frame)]]);
}
public function flipV(doit:Boolean){
var i:*;
if (doit == flip_v){
return;
};
flip_v = doit;
i = 0;
while (i < this.bitmaps.length) {
this.bitmaps[i] = Tools.flipBitmap(this.bitmaps[i], false, true);
i++;
};
origin.y = (bitmaps[0].height - origin.y);
}
public function getCurrentFrame():BitmapData{
if (c_frame < 0){
return (bitmaps[sequence[0]]);
};
return (bitmaps[sequence[Math.floor(c_frame)]]);
}
public function reset(){
c_frame = -(speed);
if (on_reset != null){
on_reset();
};
}
public function setFrame(frame:Number){
if (frame < sequence.length){
c_frame = frame;
};
}
public function firstFrameShown():Boolean{
return ((c_frame >= 1));
}
public function flipH(doit:Boolean){
var i:*;
if (doit == flip_h){
return;
};
flip_h = doit;
i = 0;
while (i < this.bitmaps.length) {
this.bitmaps[i] = Tools.flipBitmap(this.bitmaps[i], true, false);
i++;
};
origin.x = (bitmaps[0].width - origin.x);
}
}
}//package go_to_hell
Section 2
//Bat (go_to_hell.Bat)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Bat extends Character {
private var dir_v;// = 1
private var active:Boolean;// = true
private var board:Board;
private var died;// = 0
private var dir_h;// = -1
public function Bat(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
active = true;
dir_v = 1;
dir_h = -1;
died = 0;
anim = [new Animation("bat", 3, [0, 1, 2, 1], 0.25, 0, new Point(10, 12), 20), new Animation("bat_died", 3, [0, 1, 2], 0.25, 0, new Point(10, 12), 20)];
this.board = board;
super(board, container, (mx * board.field_size), ((my * board.field_size) - 1), 10, 7, anim, true);
board.characters_list.register(this);
board.alive_list.register(this);
blood = true;
flipH((Math.random() < 0.5));
}
override public function die(){
board.characters_list.registerToRemove(this);
board.alive_list.registerToRemove(this);
}
override public function update(visible:Boolean=true){
var mx:*;
var my:*;
var d:*;
mx = Math.floor((pos_x / board.field_size));
my = Math.floor((pos_y / board.field_size));
if (my < board.map_offset){
board.characters_list.registerToRemove(this);
board.alive_list.registerToRemove(this);
return;
};
if (died){
d = true;
died--;
if (died == 4){
setAnim(1);
flipV(true);
};
move(0, -1);
if (!inWater()){
if (died > 15){
d = false;
dir_v = -1;
died = 0;
flipV(false);
} else {
move(0, 1);
};
};
if (((!(died)) && (d))){
board.characters_list.registerToRemove(this);
board.alive_list.registerToRemove(this);
};
} else {
if (((inWater()) || (((touchingWater()) && (board.lava))))){
if (((touchingWater()) && (board.lava))){
died = 15;
} else {
died = 30;
};
flipV(true);
} else {
if (!move(0, dir_v).y){
dir_v = (dir_v * -1);
} else {
if (!move(dir_h, 0).x){
dir_h = (dir_h * -1);
};
};
if (((((!(board.demo)) && (active))) && (collides(board.player)))){
board.player.decHealth(0.5);
};
};
};
if (board.isSolid(mx, my)){
board.characters_list.registerToRemove(this);
board.alive_list.registerToRemove(this);
};
super.update();
}
}
}//package go_to_hell
Section 3
//Board (go_to_hell.Board)
package go_to_hell {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.filters.*;
public final class Board extends MovieClip {
public const field_size:Number = 10;
public const grain:Number = 2;
public const size_h:Number = 24;
public const size_w:Number = 18;
private var coins:NumberInd;
private var orig_y:Number;
private var mo624:Boolean;// = false
public var front_sprites_b:Bitmap;
public var front_sprites:Bitmap;
private var mo400:Boolean;// = false
public var sprites:Bitmap;
public var prev_map_offset:Number;// = 0
private var hint:Hint;
private var energy_gauge:Gauge;
private var hell_gate:Animation;
public var sprites_a:Bitmap;
public var sprites_b:Bitmap;
private var lava_ref:Animation;
private var depth:NumberInd;
public var update:Boolean;// = true
public var alive_list:CharactersList;
private var bv_wall:BevelFilter;
public var map_offset:Number;// = 6
public var pos_offset:Number;// = 0
public var lava:Boolean;// = false
public var player:PlayerCharacter;
public var prepare_to_lava;// = false
public var shake:Number;// = 0
private var lives:NumberInd;
public var water:Metaboard;
private var mo624m:Boolean;// = false
private var mo350:Boolean;// = false
private var background:WallFiller;
public var last_player_pos:Number;// = 0
private var mo16:Boolean;// = false
private var mo10:Boolean;// = false
public var characters_list:CharactersList;
private var health_gauge:Gauge;
private var map:Array;
private var mo22:Boolean;// = false
private var water_ref:Animation;
private var bv_water:BevelFilter;
private var wall_filler:WallFiller;
private var water_filler:BitmapData;
private var lava_filler:BitmapData;
private var demo_back:Boolean;// = false
public var wall:Metaboard;
private var mo150:Boolean;// = false
private var air_gauge:Gauge;
private var mo4m:Boolean;// = false
private var mo4p:Boolean;// = false
public var demo:Boolean;
public var game:Game;
private var devil:Devil;// = null
private var orig_x:Number;
public function Board(container:Game, demo:Boolean){
demo_back = false;
map_offset = 6;
pos_offset = 0;
prev_map_offset = 0;
last_player_pos = 0;
map = new Array();
characters_list = new CharactersList();
alive_list = new CharactersList();
devil = null;
lava = false;
prepare_to_lava = false;
update = true;
shake = 0;
mo4m = false;
mo4p = false;
mo10 = false;
mo16 = false;
mo22 = false;
mo150 = false;
mo350 = false;
mo400 = false;
mo624m = false;
mo624 = false;
super();
game = container;
container.addChild(this);
this.demo = demo;
init();
if (!demo){
gameInit();
} else {
map_offset = 50;
};
Tools.addEvent(this, Event.ENTER_FRAME, enterFrame);
}
private function gameInit(){
var tbg:*;
background.insertPicture("cemetery", false);
wall_filler.insertPicture("wall_light_start", false);
player = new PlayerCharacter(this, sprites, 11, 16);
tbg = addChild(new Bitmap(Tools.getPicture("frame_top")));
health_gauge = new Gauge(this, 0, "red_cross");
addChild(health_gauge);
health_gauge.x = 16;
health_gauge.y = 15;
energy_gauge = new Gauge(this, 1, "meat_small");
addChild(energy_gauge);
energy_gauge.x = 16;
energy_gauge.y = 24;
air_gauge = new Gauge(this, 2, "oxygen");
addChild(air_gauge);
air_gauge.x = 16;
air_gauge.y = 33;
lives = new NumberInd("heart_small");
addChild(lives);
lives.x = 138;
lives.y = 15;
coins = new NumberInd("coin_small");
addChild(coins);
coins.x = 138;
coins.y = 24;
depth = new NumberInd("metr", "", " m");
addChild(depth);
depth.x = 138;
depth.y = 33;
}
private function processFrame(){
var y:*;
var is_water:*;
y = map_offset;
while (y <= ((map_offset + size_h) + grain)) {
if (!map[y]){
addNewLine();
};
y++;
};
levelEffects();
wall.y = -(pos_offset);
water.y = -(pos_offset);
sprites_a.y = -(pos_offset);
sprites.y = -(pos_offset);
sprites_b.y = -(pos_offset);
front_sprites.y = -(pos_offset);
front_sprites_b.y = -(pos_offset);
characters_list.process();
background.getNextFill();
if (update){
wall.render(wall_filler.getNextFill(), bv_wall);
};
if (!lava){
water.alpha = 0.5;
is_water = water.render(water_filler, bv_water, water_ref.getNextFrame());
if (((prepare_to_lava) && (!(is_water)))){
lava = true;
prepare_to_lava = false;
};
} else {
water.alpha = 1;
water.render(lava_filler, bv_water, lava_ref.getNextFrame(), false, true);
};
update = false;
prev_map_offset = map_offset;
characters_list.processRemovals();
alive_list.processRemovals();
if (shake){
this.y = ((0 + (Math.random() * 6)) - 3);
shake--;
} else {
this.x = (this.y = 0);
};
}
public function clean(){
removeEventListener(Event.ENTER_FRAME, enterFrame);
if (player){
player.clean();
};
}
public function isDestructable(mx:Number, my:Number):Boolean{
return (wall.balls.mass[getFID(mx, my)]);
}
private function prepareFrame(){
Tools.clearBitmap(sprites_a.bitmapData);
Tools.clearBitmap(sprites.bitmapData);
Tools.clearBitmap(sprites_b.bitmapData);
Tools.clearBitmap(front_sprites.bitmapData);
Tools.clearBitmap(front_sprites_b.bitmapData);
}
public function getFID(x:Number, y:Number):Number{
x = (x % size_w);
if (x < 0){
x = (size_w + x);
};
return (((y * size_w) + x));
}
private function levelEffects(){
if ((((map_offset < 4)) && (!(mo4m)))){
mo4m = true;
hint.showNextHint(true);
};
if ((((map_offset > 4)) && (!(mo4p)))){
mo4p = true;
hint.frame = 0;
};
if ((((map_offset == 10)) && (!(mo10)))){
mo10 = true;
hint.showNextHint();
};
if ((((map_offset == 16)) && (!(mo16)))){
mo16 = true;
hint.showNextHint();
};
if ((((map_offset == 22)) && (!(mo22)))){
mo22 = true;
hint.showNextHint();
};
if ((((map_offset == 150)) && (!(mo150)))){
mo150 = true;
background.insertPicture("wall_dark_2_trans", true);
background.switchPicture("wall_dark_2");
wall_filler.insertPicture("wall_light_2_trans", true);
wall_filler.switchPicture("wall_light_2");
};
if ((((map_offset == 350)) && (!(mo350)))){
mo350 = true;
background.insertPicture("wall_dark_3_trans", true);
background.switchPicture("wall_dark_3");
wall_filler.insertPicture("wall_light_3_trans", true);
wall_filler.switchPicture("wall_light_3");
};
if ((((map_offset == 400)) && (!(mo400)))){
mo400 = true;
hint.showNextHint();
prepare_to_lava = true;
};
if ((((map_offset > 597)) && ((map_offset < 607)))){
game.sound.setVolume(game.soundtrack, ((607 - map_offset) / 10));
};
if ((((map_offset == 607)) && (!(mo624m)))){
mo624m = true;
if (game.soundtrack){
game.soundtrack.stop();
};
game.soundtrack = game.sound.playSound(new rave_far(), 1, true);
background.insertPictureB(hell_gate.getNextFrame(), true);
background.switchPicture("wall_dark_last_trans");
};
if ((((map_offset == 624)) && (!(mo624)))){
mo624 = true;
background.switchPicture("wall_dark_last");
};
if (map_offset > (624 - 17)){
background.swapIPictureB(hell_gate.getNextFrame());
};
}
private function init(){
background = new WallFiller(this, "wall_dark", 0.85, true);
sprites_a = new Bitmap(new BitmapData(((size_w + grain) * field_size), (size_h * field_size), true));
addChild(sprites_a);
sprites = new Bitmap(new BitmapData(((size_w + grain) * field_size), (size_h * field_size), true));
addChild(sprites);
sprites_b = new Bitmap(new BitmapData(((size_w + grain) * field_size), (size_h * field_size), true));
addChild(sprites_b);
water = new Metaboard(this, 6, true);
water_filler = Tools.getPicture("water_anim_0");
water_ref = new Animation("water_ref", 5, [0, 1, 2, 3, 4, 3, 2, 1], 0.3);
lava_filler = Tools.getPicture("lava");
lava_ref = new Animation("lava_ref", 5, [0, 1, 2, 3, 4, 3, 2, 1], 0.2);
wall = new Metaboard(this, 10, false, null, 6);
wall_filler = new WallFiller(this, "wall_light");
front_sprites = new Bitmap(new BitmapData(((size_w + grain) * field_size), (size_h * field_size), true));
addChild(front_sprites);
front_sprites_b = new Bitmap(new BitmapData(((size_w + grain) * field_size), (size_h * field_size), true));
addChild(front_sprites_b);
bv_wall = new BevelFilter(1, 45, 0xFFFFFF, 0.3, 0, 0.75, 0, 0);
bv_water = new BevelFilter(2, 45, 0xFFFFFF, 0.3, 0, 0, 0, 0);
hell_gate = new Animation("hell", 5, [0, 1, 0, 1, 0, 1, 2, 3, 4, 0], 0.15);
hint = new Hint();
addChild(hint);
}
public function getField(x:Number, y:Number):Field{
x = (x % size_w);
if (x < 0){
x = (size_w + x);
};
if (!map[y]){
return (null);
};
return (map[y][x]);
}
public function setSolid(x:Number, y:Number, iss:Character){
if (!map[y]){
return;
};
x = (x % size_w);
if (x < 0){
x = (size_w + x);
};
map[y][x].setSolid(iss);
}
private function enterFrame(e:Event){
if (game.pause_scr){
return;
};
prepareFrame();
if (!demo){
if (player.pos_y > last_player_pos){
pos_offset = (player.pos_y % field_size);
map_offset = (Math.floor((player.pos_y / field_size)) - 12);
if (map_offset != prev_map_offset){
update = true;
};
last_player_pos = player.pos_y;
};
health_gauge.update(player.getHealth(), player.getMaxInd());
energy_gauge.update(player.getEnergy(), player.getMaxInd());
air_gauge.update(player.getAir(), player.getMaxInd());
lives.update(player.getLives());
coins.update(player.getCoins());
depth.update(player.getDepth());
} else {
pos_offset++;
if (pos_offset >= field_size){
pos_offset = (pos_offset % field_size);
map_offset++;
};
if (map_offset != prev_map_offset){
update = true;
};
if ((((map_offset > 120)) && (!(demo_back)))){
demo_back = true;
new Curtain(this, goBack);
};
};
processFrame();
hint.updateHint();
}
public function isSolid(x:Number, y:Number, sofa:Boolean=false):Boolean{
if (!map[y]){
return (true);
};
x = (x % size_w);
if (x < 0){
x = (size_w + x);
};
return (map[y][x].isSolid());
}
public function isDestructablePos(pos_x:Number, pos_y:Number):Boolean{
var mx:*;
var my:*;
mx = Math.floor((pos_x / field_size));
my = Math.floor((pos_y / field_size));
return (((wall.balls.mass[getFID(mx, my)]) || (wall.balls.mass[getFID(mx, (my - 1))])));
}
private function addNewLine(){
var line:Array;
var prev_line:Array;
var wall_i:Boolean;
var water_i:Boolean;
var wall:*;
var water:*;
var r:*;
var x:*;
var y:*;
var c:*;
var rwc:*;
var limiter:Number;
line = new Array();
wall = this.wall.balls.mass;
water = this.water.balls.mass;
limiter = (((lava) || (prepare_to_lava))) ? 2 : 1;
r = 0;
while (r < grain) {
prev_line = line;
line = new Array();
y = map.length;
rwc = 0.3;
x = 0;
while (x < size_w) {
if ((y + map_offset) < 19){
wall_i = false;
water_i = false;
} else {
if (((((((y + map_offset) == 19)) || (!(map[(y - grain)])))) || (!(map[(y - (grain * 2))])))){
wall_i = true;
} else {
if (((((y + map_offset) > 1260)) && (((y + map_offset) < 1332)))){
wall_i = false;
water_i = false;
} else {
if ((y + map_offset) >= 1334){
if (!devil){
devil = new Devil(this, sprites_a, 8, (y - 1));
new Devil(this, sprites_a, 13, (y - 1));
};
wall_i = true;
} else {
wall_i = (r) ? wall[prev_line[x].balls_id] : ((Math.random())<0.5) ? true : false;
if (!r){
if (!wall_i){
if (!lava){
if (map[(y - grain)][x].depth > 3){
wall_i = true;
} else {
if (((((x) && (!(water[getFID((x - grain), y)])))) && (!(wall[getFID((x - grain), y)])))){
water_i = false;
} else {
if (((((x) && (water[getFID((x - grain), y)]))) && (!(wall[getFID((x - grain), y)])))){
water_i = true;
} else {
if (((water[getFID(x, (y - grain))]) && (!(wall[getFID(x, (y - grain))])))){
water_i = true;
} else {
if (map_offset > 6){
water_i = (((((x) && (!(prepare_to_lava)))) && ((Math.random() < 0.2)))) ? true : false;
} else {
water_i = false;
};
};
};
};
};
} else {
if (map[(y - grain)][x].depth > 1){
wall_i = true;
} else {
water_i = (((x) && ((Math.random() < 0.075)))) ? true : false;
};
};
};
if (((((!(isSolid(x, (y - 1)))) && (!(isSolid(x, (y - 3)))))) && ((Math.random() < 0.4)))){
new Boulder(this, sprites_b, (x + 1), y);
wall_i = true;
} else {
if ((((((((((map_offset > 10)) && (!(water_i)))) && (!(isSolid(x, (y - 1)))))) && (!(isSolid((x - 1), (y - 1)))))) && ((Math.random() < (0.4 / limiter))))){
new Worm(this, sprites_b, (x + 1), y);
wall_i = true;
};
if (((((((((!(water_i)) && (!(isSolid(x, (y - 1)))))) && (!(isSolid((x - 1), (y - 1)))))) && (!(isSolid(x, (y - 3)))))) && ((Math.random() < 0.3)))){
new Spikes(this, sprites_b, (x + 1), y);
wall_i = true;
};
if ((((((((((map_offset > 150)) && (!(water_i)))) && (!(isSolid(x, (y - 1)))))) && (!(isSolid(x, (y - 3)))))) && ((Math.random() < 0.3)))){
new Bat(this, sprites_b, (x + 1), y);
};
};
if (((((!(wall_i)) && (!(water_i)))) && ((Math.random() < (0.1 / limiter))))){
new Flame(this, sprites_a, (x + 1), (y + 2));
} else {
if (((((!(demo)) && (!(wall_i)))) && ((Math.random() < 0.075)))){
new Coin(this, front_sprites, (x + 1), (y + 2));
} else {
if (((((((!(demo)) && (!(wall_i)))) && ((player.getEnergy() < 18)))) && ((Math.random() < (0.08 * limiter))))){
new Meat(this, front_sprites, (x + 1), (y + 2));
} else {
if (((((((!(demo)) && (!(wall_i)))) && ((player.getHealth() < 18)))) && ((Math.random() < (0.07 * limiter))))){
new FirstAid(this, front_sprites, (x + 1), (y + 2));
} else {
if (((((!(demo)) && (!(wall_i)))) && ((Math.random() < (0.002 * limiter))))){
new Heart(this, front_sprites, (x + 1), (y + 2));
};
};
};
};
};
};
};
};
};
};
if (wall_i){
rwc = (rwc - 0.2);
} else {
rwc = (rwc + 0.2);
};
c = 0;
while (c < grain) {
line[(x + c)] = new Field(this, (x + c), y, wall_i, water_i);
c++;
};
x = (x + grain);
};
map.push(line);
x = size_w;
while (x >= 0) {
if (((water[getFID((x + 1), y)]) && (!(wall[getFID((x + 1), y)])))){
water[getFID(x, y)] = 1;
};
x--;
};
r++;
};
}
private function goBack(){
demo_back = false;
map_offset = 50;
map = new Array();
}
}
}//package go_to_hell
Section 4
//Boulder (go_to_hell.Boulder)
package go_to_hell {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
public final class Boulder extends Character {
private var l_mov:Boolean;// = false
private var board:Board;
private var destr:Boolean;// = true
private var push_dist:Number;// = 0
private var push_dir:Number;
private var picture_id:Number;
public function Boulder(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
l_mov = false;
destr = true;
push_dist = 0;
anim = [new Animation("boulder", 6, [0, 1, 2, 3, 4, 5], 0, -1, new Point(10, 20), 20), new Animation("boulder_blood", 6, [0, 1, 2, 3, 4, 5], 0, -1, new Point(10, 20), 20), new Animation("boulder_slime", 6, [0, 1, 2, 3, 4, 5], 0, -1, new Point(10, 20), 20)];
this.board = board;
super(board, container, (mx * board.field_size), ((my * board.field_size) - 1), 16, 20, anim, true);
picture_id = Math.round((Math.random() * 5));
anim[0].setFrame(picture_id);
board.setSolid(mx, my, this);
board.setSolid(mx, (my - 1), this);
board.setSolid((mx - 1), my, this);
board.setSolid((mx - 1), (my - 1), this);
board.characters_list.register(this);
}
private function destroyDown(){
var ground:*;
var x:*;
var y:*;
ground = onGround();
if (!ground){
return;
};
x = 0;
while (x < 2) {
y = 0;
while (y < 2) {
board.wall.balls.set(board.getFID((ground.x + x), (ground.y + y)), 0);
board.water.balls.set(board.getFID((ground.x + x), (ground.y + y)), 0);
y++;
};
x++;
};
board.update = true;
new Dust(board, board.front_sprites, (ground.x + 1), (ground.y + 1));
if (!board.demo){
board.game.sound.playSound(new crush_sound());
};
}
override public function update(visible:Boolean=true){
var mx:*;
var my:*;
var ground:Point;
mx = Math.floor((pos_x / board.field_size));
my = Math.floor((pos_y / board.field_size));
if (my < board.map_offset){
board.characters_list.registerToRemove(this);
return;
};
board.setSolid(mx, my, null);
board.setSolid(mx, (my - 1), null);
board.setSolid((mx - 1), my, null);
board.setSolid((mx - 1), (my - 1), null);
body_width = 16;
if (!move(0, 4).y){
body_width = 18;
if (((push_dist) && (move((4 * push_dir), 0).x))){
body_width = 16;
push_dist = (push_dist - 2);
board.alive_list.processOp(crush);
} else {
body_width = 16;
push_dist = 0;
board.setSolid(mx, my, this);
board.setSolid(mx, (my - 1), this);
board.setSolid((mx - 1), my, this);
board.setSolid((mx - 1), (my - 1), this);
if (l_mov){
if (!destr){
ground = onGround();
if (((ground) && (board.isDestructable(ground.x, ground.y)))){
destroyDown();
} else {
if (!board.demo){
board.game.sound.playSound(new hit_sound());
board.shake = 5;
};
};
} else {
if (!board.demo){
board.game.sound.playSound(new hit_sound());
board.shake = 5;
};
};
destr = true;
} else {
destr = false;
};
l_mov = false;
};
} else {
l_mov = true;
board.alive_list.processOp(crush);
};
super.update();
}
public function crush(character:Character){
if (collides(character)){
if (!board.demo){
board.game.sound.playSound(new smash_sound());
};
character.die();
setAnim((character.blood) ? 1 : 2);
getAnim().setFrame(picture_id);
};
}
override public function pushIt(dir:Number){
if (!push_dist){
push_dist = board.field_size;
push_dir = ((dir)<0) ? -1 : 1;
};
}
}
}//package go_to_hell
Section 5
//Button (go_to_hell.Button)
package go_to_hell {
import flash.text.*;
import flash.display.*;
import flash.events.*;
public class Button extends MovieClip {
private var label:TextField;
private var shadow:TextField;
public var operation:String;
private var fnt:pixel_font;
public function Button(){
var format:TextFormat;
fnt = new pixel_font();
super();
shadow = new TextField();
format = new TextFormat();
format.font = fnt.fontName;
format.color = 0;
format.size = 8;
format.align = "center";
shadow.defaultTextFormat = format;
addChild(shadow);
shadow.width = 80;
shadow.x = 1;
shadow.y = 4;
shadow.embedFonts = true;
shadow.selectable = false;
shadow.mouseEnabled = false;
shadow.alpha = 0.75;
label = new TextField();
format = new TextFormat();
format.font = fnt.fontName;
format.color = 0xFFFFFF;
format.size = 8;
format.align = "center";
label.defaultTextFormat = format;
addChild(label);
label.width = 80;
label.x = 0;
label.y = 3;
label.embedFonts = true;
label.selectable = false;
label.mouseEnabled = false;
Tools.addEvent(this, MouseEvent.MOUSE_UP, release);
}
private function release(event:MouseEvent){
if (operation != ""){
Object(this.parent)[operation]();
};
}
public function set caption(value:String){
shadow.text = value;
label.text = value;
}
}
}//package go_to_hell
Section 6
//ButtonBig (go_to_hell.ButtonBig)
package go_to_hell {
public final class ButtonBig extends Button {
public function ButtonBig(){
super();
}
}
}//package go_to_hell
Section 7
//Character (go_to_hell.Character)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public class Character {
private const zero_point:Point;
public var container:Bitmap;
public var pos_x:Number;
public var pos_y:Number;
private var current_anim:Number;// = 0
public var separate;
public var body_height:Number;
private var board:Board;
public var body_width:Number;
private var animations:Array;
public var blood:Boolean;// = false
public function Character(board:Board, container:Bitmap, pos_x:Number, pos_y:Number, body_width:Number, body_height:Number, animations:Array, separate:Boolean=false){
blood = false;
current_anim = 0;
zero_point = new Point(0, 0);
super();
this.board = board;
this.animations = animations;
this.container = container;
this.pos_x = pos_x;
this.pos_y = pos_y;
this.body_width = body_width;
this.body_height = body_height;
this.separate = separate;
}
public function getRectangle():Rectangle{
return (new Rectangle((pos_x - (body_width / 2)), (pos_y - body_height), body_width, body_height));
}
public function update(visible:Boolean=true){
var mx:*;
var my:*;
var x:*;
var y:*;
var wave:*;
var cf:BitmapData;
mx = Math.floor((pos_x / board.field_size));
my = Math.floor((pos_y / board.field_size));
if (pos_x > (board.field_size * board.size_w)){
pos_x = (pos_x % (board.field_size * board.size_w));
};
if (pos_x < 0){
pos_x = ((board.field_size * board.size_w) + pos_x);
};
wave = 0;
if (((((inWater()) && (!(onGround())))) && (!(separate)))){
wave = board.water.wave;
};
x = (pos_x - animations[current_anim].origin.x);
y = (((pos_y - animations[current_anim].origin.y) - (board.map_offset * board.field_size)) + Math.round(Math.sin(((mx * 2) + (wave / 2)))));
if (visible){
cf = animations[current_anim].getNextFrame();
container.bitmapData.copyPixels(cf, cf.rect, new Point(x, y), null, null, true);
if ((pos_x - (body_width / 2)) < (board.field_size * 2)){
x = (x + (board.field_size * board.size_w));
container.bitmapData.copyPixels(cf, cf.rect, new Point(x, y), null, null, true);
};
};
}
public function inWater():Boolean{
var mx:*;
var my:*;
var dify:*;
var level:*;
if (!board.water){
return (false);
};
mx = Math.floor((pos_x / board.field_size));
my = Math.floor((pos_y / board.field_size));
if (board.isSolid(mx, my)){
return (false);
};
if (board.water.balls.mass[board.getFID(mx, my)] < 0.9){
return (false);
};
dify = ((my * board.field_size) - pos_y);
level = (((1 + board.water.balls.mass[board.getFID(mx, (my - 1))]) + (board.isSolid(mx, (my - 2))) ? 0 : board.water.balls.mass[board.getFID(mx, (my - 2))]) * board.field_size);
return ((level > (dify + (body_height * 1.2))));
}
public function flipV(doit:Boolean){
animations[current_anim].flipV(doit);
}
public function move(ox:Number, oy:Number):Point{
var m:*;
var mx:*;
var mx1:*;
var mx2:*;
var my:*;
var moved:Point;
moved = new Point(0, 0);
m = ox;
while (m != 0) {
if (ox < 0){
mx = Math.floor(((((pos_x - (body_width / 2)) - 2) + m) / board.field_size));
} else {
mx = Math.floor((((pos_x + (body_width / 2)) + m) / board.field_size));
};
my = Math.floor((pos_y / board.field_size));
if (!((board.wall) && (((board.isSolid(mx, my)) || (board.isSolid(mx, (my - 1))))))){
pos_x = (pos_x + m);
moved.x = 1;
break;
};
if (m < 0){
m++;
} else {
m--;
};
};
m = oy;
while (m != 0) {
if (oy < 0){
my = Math.floor((((pos_y + m) - body_height) / board.field_size));
} else {
my = Math.floor(((pos_y + m) / board.field_size));
};
mx1 = Math.floor(((pos_x + (body_width / 2)) / board.field_size));
mx2 = Math.floor(((pos_x - (body_width / 2)) / board.field_size));
if (!((board.wall) && (((board.isSolid(mx1, my)) || (board.isSolid(mx2, my)))))){
pos_y = (pos_y + m);
moved.y = 1;
break;
};
if (m < 0){
m++;
} else {
m--;
};
};
return (moved);
}
public function setAnim(anim:Number):Boolean{
if (anim != current_anim){
current_anim = anim;
animations[current_anim].reset();
return (true);
};
return (false);
}
public function touchingWater():Boolean{
var mx:*;
var my:*;
if (!board.water){
return (false);
};
mx = Math.floor((pos_x / board.field_size));
my = Math.floor((pos_y / board.field_size));
if (board.isSolid(mx, my)){
return (false);
};
return ((board.water.balls.mass[board.getFID(mx, my)] > 0.2));
}
public function onGround():Point{
var my:*;
var mx1:*;
var mx2:*;
my = Math.floor(((pos_y + 1) / board.field_size));
mx1 = Math.floor(((pos_x - (body_width / 2)) / board.field_size));
mx2 = Math.floor(((pos_x + (body_width / 2)) / board.field_size));
if (!((board.wall) && (((board.isSolid(mx1, my)) || (board.isSolid(mx2, my)))))){
return (null);
};
return (new Point(mx1, my));
}
public function getAnim():Animation{
return (animations[current_anim]);
}
public function die(){
}
public function underWater():Boolean{
var mx:*;
var my:*;
var dify:*;
var level:*;
if (!board.water){
return (false);
};
mx = Math.floor((pos_x / board.field_size));
my = Math.floor((pos_y / board.field_size));
if (board.isSolid(mx, my)){
return (false);
};
if (board.water.balls.mass[board.getFID(mx, my)] < 0.9){
return (false);
};
dify = ((my * board.field_size) - pos_y);
level = (((1 + board.water.balls.mass[board.getFID(mx, (my - 1))]) + (board.isSolid(mx, (my - 2))) ? 0 : board.water.balls.mass[board.getFID(mx, (my - 2))]) * board.field_size);
return ((level > (dify + (body_height * 1.55))));
}
public function getAnimID():Number{
return (current_anim);
}
public function pushIt(dir:Number){
}
public function collides(character:Character):Boolean{
var trect:Rectangle;
var orect:Rectangle;
trect = getRectangle();
orect = character.getRectangle();
return (trect.intersects(orect));
}
public function flipH(doit:Boolean){
animations[current_anim].flipH(doit);
}
}
}//package go_to_hell
Section 8
//CharactersList (go_to_hell.CharactersList)
package go_to_hell {
public final class CharactersList {
private var rem_list:Array;
private var ch_list:Array;
public function CharactersList(){
ch_list = new Array();
rem_list = new Array();
super();
}
public function registerToRemove(character:Character){
rem_list.push(character);
}
public function register(character:Character){
ch_list.push(character);
}
public function process(){
var i:*;
i = (ch_list.length - 1);
while (i >= 0) {
ch_list[i].update();
i--;
};
}
public function processRemovals(){
var i:*;
var j:*;
i = 0;
while (i < rem_list.length) {
j = (ch_list.length - 1);
while (j >= 0) {
if (ch_list[j] == rem_list[i]){
ch_list.splice(j, 1);
};
j--;
};
i++;
};
rem_list = new Array();
}
public function processOp(op:Function){
var i:*;
i = (ch_list.length - 1);
while (i >= 0) {
op(ch_list[i]);
i--;
};
}
}
}//package go_to_hell
Section 9
//Coin (go_to_hell.Coin)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Coin extends Character {
private var active:Boolean;// = true
private var board:Board;
public function Coin(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
active = true;
anim = [new Animation("coin", 6, [0, 1, 2, 3, 4, 5], 0.25, 0, new Point(8, 17), 17)];
this.board = board;
super(board, container, (mx * board.field_size), (my * board.field_size), 17, 17, anim, true);
board.characters_list.register(this);
}
override public function update(visible:Boolean=true){
var my:*;
my = Math.floor((pos_y / board.field_size));
if (my < board.map_offset){
board.characters_list.registerToRemove(this);
return;
};
if (((active) && (collides(board.player)))){
board.game.sound.playSound(new blip());
board.player.addCoin();
board.characters_list.registerToRemove(this);
};
super.update();
}
}
}//package go_to_hell
Section 10
//Curtain (go_to_hell.Curtain)
package go_to_hell {
import flash.display.*;
public final class Curtain extends MovieClip {
private var operation:Function;
public function Curtain(container:MovieClip=null, operation:Function=null){
super();
addFrameScript(9, frame10, 44, frame45);
if (((!(container)) || ((operation == null)))){
return;
};
container.addChild(this);
this.operation = operation;
}
function frame10(){
this.operation();
}
function frame45(){
stop();
Tools.remove(this);
}
}
}//package go_to_hell
Section 11
//Devil (go_to_hell.Devil)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Devil extends Character {
private var board:Board;
private var info:Info;
public function Devil(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
anim = [new Animation("devil", 4, [0, 0, 0, 0, 0, 0, 0, 1, 2, 3], 0.2, 0, new Point(10, 20), 20)];
this.board = board;
super(board, container, (mx * board.field_size), ((my * board.field_size) - 1), 16, 21, anim);
board.characters_list.register(this);
}
override public function update(visible:Boolean=true){
move(0, 2);
if (((!(board.demo)) && (collides(board.player)))){
if (!info){
if (board.player.getCoins() < 50){
info = new Info(board, board.front_sprites_b, this, 4, 40, noCoins);
} else {
info = new Info(board, board.front_sprites_b, this, 3, 40, board.game.initEndGame);
};
};
};
super.update();
}
private function noCoins(){
board.game.gameOver(board.player.resultArray());
}
}
}//package go_to_hell
Section 12
//Dust (go_to_hell.Dust)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Dust extends Character {
private var board:Board;
public function Dust(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
anim = [new Animation("dust", 5, [0, 1, 2, 3, 4], 0.3, -1, new Point(16, 16), 0, null, finish)];
this.board = board;
super(board, container, (mx * board.field_size), (my * board.field_size), 12, 19, anim, true);
board.characters_list.register(this);
update();
}
private function finish(){
board.characters_list.registerToRemove(this);
}
}
}//package go_to_hell
Section 13
//Field (go_to_hell.Field)
package go_to_hell {
public final class Field {
public var depth:Number;// = 0
public var balls_id:Number;
private var solid:Character;// = null
private var board:Board;
public var pos_y:Number;
public var pos_x:Number;
public function Field(board:Board, pos_x:Number, pos_y:Number, wall:Boolean=false, water:Boolean=false){
solid = null;
depth = 0;
super();
this.board = board;
this.pos_x = pos_x;
this.pos_y = pos_y;
this.balls_id = board.getFID(pos_x, pos_y);
if (((!(wall)) && (board.getField(pos_x, (pos_y - 1))))){
depth = ((((board.getField((pos_x - 1), (pos_y - 1)).depth + board.getField(pos_x, (pos_y - 1)).depth) + board.getField((pos_x + 1), (pos_y - 1)).depth) / 3) + 1);
};
board.wall.balls.set(balls_id, (wall) ? 1 : 0);
board.water.balls.set(balls_id, (((((water) || (wall))) && (pos_y))) ? 1 : 0);
}
public function isSolid(){
return (((!((board.wall.balls.mass[board.getFID(pos_x, pos_y)] == 0))) || (solid)));
}
public function setSolid(character:Character){
solid = character;
}
public function getSolidCharacter():Character{
return (solid);
}
}
}//package go_to_hell
Section 14
//FinalScene (go_to_hell.FinalScene)
package go_to_hell {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public final class FinalScene extends MovieClip {
private var output:BitmapData;
private var anim:Animation;
private var frame:Number;// = 0
private var board:Board;
private static var zero_point:Point = new Point(0, 0);
public function FinalScene(board:Board){
var disp:Bitmap;
frame = 0;
super();
this.board = board;
anim = new Animation("hell_inside", 4, [0, 1, 2, 3], 0.2);
output = anim.getCurrentFrame().clone();
disp = new Bitmap(output);
addChild(disp);
Tools.addEvent(this, Event.ENTER_FRAME, enterFrame);
}
private function enterFrame(e:Event){
frame++;
if (frame == 200){
board.game.gameOver(board.player.resultArray(), true);
};
output.copyPixels(anim.getNextFrame(), output.rect, zero_point);
}
}
}//package go_to_hell
Section 15
//FirstAid (go_to_hell.FirstAid)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class FirstAid extends Character {
private var active:Boolean;// = true
private var board:Board;
public function FirstAid(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
active = true;
anim = [new Animation("first_aid", 6, [0, 1, 2, 3, 4, 5], 0.25, 0, new Point(8, 17), 17)];
this.board = board;
super(board, container, (mx * board.field_size), (my * board.field_size), 17, 17, anim, true);
board.characters_list.register(this);
}
override public function update(visible:Boolean=true){
var my:*;
my = Math.floor((pos_y / board.field_size));
if (my < board.map_offset){
board.characters_list.registerToRemove(this);
return;
};
if (((active) && (collides(board.player)))){
board.game.sound.playSound(new blip());
board.player.addHealth();
board.characters_list.registerToRemove(this);
};
super.update();
}
}
}//package go_to_hell
Section 16
//Flame (go_to_hell.Flame)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Flame extends Character {
private var active:Boolean;// = true
private var board:Board;
public function Flame(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
active = true;
anim = [new Animation("flame", 3, [0, 1, 2, 1], 0.25, 0, new Point(16, 32), 32), new Animation("flame_snuff", 5, [0, 1, 2, 3, 4], 0.25, -1, new Point(16, 32), 32)];
this.board = board;
super(board, container, (mx * board.field_size), (my * board.field_size), 10, 16, anim, true);
board.characters_list.register(this);
}
override public function update(visible:Boolean=true){
var mx:*;
var my:*;
mx = Math.floor((pos_x / board.field_size));
my = Math.floor((pos_y / board.field_size));
if (my < board.map_offset){
board.characters_list.registerToRemove(this);
return;
};
if (((!(board.lava)) && ((((board.water.balls.mass[board.getFID(mx, (my - 1))] > 0.3)) || ((board.water.balls.mass[board.getFID((mx - 1), (my - 1))] > 0.3)))))){
setAnim(1);
active = false;
};
if (((((!(board.demo)) && (active))) && (collides(board.player)))){
board.player.decHealth(0.5);
};
super.update();
}
private function finish(){
board.characters_list.registerToRemove(this);
}
}
}//package go_to_hell
Section 17
//Game (go_to_hell.Game)
package go_to_hell {
import flash.media.*;
import flash.display.*;
import flash.events.*;
import mochi.as3.*;
import flash.utils.*;
import flash.net.*;
public class Game extends MovieClip {
public var game_over:GameOver;
public var sound:SoundSystem;
public var initing_eg:Boolean;// = false
public var initing_i:Boolean;// = false
public var pause_scr:Pause;// = null
public var final_scene:FinalScene;
public var soundtrack:SoundChannel;
public var initing_sg:Boolean;// = false
public var board:Board;
public function Game(){
pause_scr = null;
initing_eg = false;
initing_sg = false;
initing_i = false;
super();
init();
}
public function init(){
}
public function initGame(){
if (initing_sg){
return;
};
initing_sg = true;
new Curtain(this, startGame);
}
public function windowActive(e:Event){
if (pause_scr){
Tools.remove(pause_scr);
pause_scr = null;
};
}
public function startIntro(){
}
public function initIntro(){
if (initing_i){
return;
};
initing_i = true;
new Curtain(this, startIntro);
}
public function initEndGame(){
if (initing_eg){
return;
};
initing_eg = true;
new Curtain(this, endGame);
}
public function startGame(){
}
public function endGame(){
if (soundtrack){
soundtrack.stop();
};
soundtrack = sound.playSound(new rave(), 1, true);
final_scene = new FinalScene(board);
addChild(final_scene);
}
public function visitSponsor(){
var request:*;
request = new URLRequest((language.url1 + "&utm_content=menu"));
navigateToURL(request, "_blank");
}
public function windowNotActive(e:Event){
if (((((initing_sg) && (!(game_over)))) && (!(pause_scr)))){
pause_scr = new Pause();
addChild(pause_scr);
};
}
public function showHigscores(){
var o:Object;
var boardID:String;
o = {n:[2, 15, 12, 14, 15, 6, 15, 9, 11, 1, 14, 14, 1, 10, 9, 6], f:function (i:Number, s:String):String{
if (s.length == 16){
return (s);
};
return (this.f((i + 1), (s + this.n[i].toString(16))));
}};
boardID = o.f(0, "");
MochiScores.showLeaderboard({boardID:boardID, onDisplay:function (){
}, onClose:function (){
}});
}
public function switchCredits(){
}
public function gameOver(results:Array, won:Boolean=false){
}
}
}//package go_to_hell
Section 18
//GameAndkon (go_to_hell.GameAndkon)
package go_to_hell {
import flash.display.*;
import flash.events.*;
import mochi.as3.*;
import flash.utils.*;
import flash.net.*;
public final class GameAndkon extends Game {
public var s_logo:MovieClip;
public var intro_txt:MovieClip;
public var c_switch:Button;
public var credits:MovieClip;
public var show_h:Button;
public var d_logo:MovieClip;
public var c_cnt:Button;
public var sp_link:ButtonBig;
public var start_button:Button;
public function GameAndkon(){
super();
init();
__setProp_c_switch_game_Warstwa1_1();
__setProp_show_h_game_Warstwa1_1();
__setProp_start_button_game_Warstwa1_1();
__setProp_c_cnt_game_Warstwa10_1();
__setProp_sp_link_game_Warstwa1_1();
}
override public function init(){
scaleX = (scaleY = 2);
new Curtain(this, startIntro);
intro_txt.visible = false;
start_button.visible = false;
c_switch.visible = false;
c_cnt.visible = false;
show_h.visible = false;
sp_link.visible = false;
s_logo.visible = false;
s_logo.mouseEnabled = false;
s_logo.mouseChildren = false;
d_logo.visible = false;
credits.visible = false;
sound = new SoundSystem();
stage.addEventListener(Event.DEACTIVATE, windowNotActive);
stage.addEventListener(Event.ACTIVATE, windowActive);
}
override public function startIntro(){
if (soundtrack){
soundtrack.stop();
};
soundtrack = sound.playSound(new eternal(), 1, true);
initing_eg = false;
initing_sg = false;
initing_i = false;
Tools.remove(game_over);
Tools.remove(final_scene);
game_over = null;
final_scene = null;
if (board){
board.clean();
Tools.remove(board);
board = null;
};
board = new Board(this, true);
setChildIndex(board, 0);
new GameLogo(board);
intro_txt.visible = true;
start_button.visible = true;
c_switch.visible = true;
show_h.visible = true;
sp_link.visible = true;
s_logo.visible = true;
d_logo.visible = false;
}
function __setProp_c_cnt_game_Warstwa10_1(){
c_cnt["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
c_cnt.operation = "switchCredits";
c_cnt.caption = "CONTINUE";
c_cnt["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
override public function startGame(){
if (soundtrack){
soundtrack.stop();
};
soundtrack = sound.playSound(new eternal(), 1, true);
board.clean();
Tools.remove(board);
board = null;
intro_txt.visible = false;
start_button.visible = false;
c_switch.visible = false;
show_h.visible = false;
credits.visible = false;
sp_link.visible = false;
s_logo.visible = false;
d_logo.visible = false;
board = new Board(this, false);
setChildIndex(board, 0);
}
override public function visitSponsor(){
var request:*;
request = new URLRequest("http://www.andkon.com/arcade/");
navigateToURL(request, "_blank");
}
function __setProp_show_h_game_Warstwa1_1(){
show_h["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
show_h.operation = "showHigscores";
show_h.caption = "HIGHSCORES";
show_h["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
function __setProp_sp_link_game_Warstwa1_1(){
sp_link["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
sp_link.operation = "visitSponsor";
sp_link.caption = "";
sp_link["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
override public function showHigscores(){
var o:Object;
var boardID:String;
o = {n:[2, 15, 12, 14, 15, 6, 15, 9, 11, 1, 14, 14, 1, 10, 9, 6], f:function (i:Number, s:String):String{
if (s.length == 16){
return (s);
};
return (this.f((i + 1), (s + this.n[i].toString(16))));
}};
boardID = o.f(0, "");
MochiScores.showLeaderboard({boardID:boardID, onDisplay:function (){
}, onClose:function (){
}});
}
override public function switchCredits(){
credits.visible = !(credits.visible);
c_cnt.visible = !(c_cnt.visible);
}
function __setProp_c_switch_game_Warstwa1_1(){
c_switch["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
c_switch.operation = "switchCredits";
c_switch.caption = "CREDITS";
c_switch["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
override public function gameOver(results:Array, won:Boolean=false){
if (game_over){
return;
};
game_over = new GameOverAndkon(this, results, won);
addChild(game_over);
}
function __setProp_start_button_game_Warstwa1_1(){
start_button["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
start_button.operation = "initGame";
start_button.caption = "START";
start_button["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
}
}//package go_to_hell
Section 19
//GameLogo (go_to_hell.GameLogo)
package go_to_hell {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public final class GameLogo extends MovieClip {
private const zero_point:Point;
private var anim:Animation;
private var container:MovieClip;
private var bmp:Bitmap;
public function GameLogo(container:MovieClip){
zero_point = new Point(0, 0);
super();
anim = new Animation("logo_anim", 5, [0, 1, 2, 3, 4], 0.25, 0, new Point(0, 0), 121);
this.container = container;
container.addChild(this);
bmp = new Bitmap(anim.getCurrentFrame().clone());
addChild(bmp);
bmp.x = 12;
bmp.y = 15;
mouseEnabled = false;
mouseChildren = false;
Tools.addEvent(this, Event.ENTER_FRAME, enterFrame);
}
private function enterFrame(e:Event){
container.setChildIndex(this, (container.numChildren - 1));
bmp.bitmapData.copyPixels(anim.getNextFrame(), bmp.bitmapData.rect, zero_point);
}
}
}//package go_to_hell
Section 20
//GameOver (go_to_hell.GameOver)
package go_to_hell {
import flash.display.*;
import flash.events.*;
import mochi.as3.*;
import flash.utils.*;
import flash.net.*;
public class GameOver extends MovieClip {
public var coins:NumberInd;
public var bonus:NumberInd;
public var total_bonus:Number;
public var frame:Number;// = 0
public var score:NumberInd;
public var depth:NumberInd;
public var total_score:Number;
public var game:Game;
public var results:Array;
public function GameOver(game:Game, results:Array, won:Boolean=false){
frame = 0;
super();
}
public function submit(){
var o:Object;
var boardID:String;
o = {n:[2, 15, 12, 14, 15, 6, 15, 9, 11, 1, 14, 14, 1, 10, 9, 6], f:function (i:Number, s:String):String{
if (s.length == 16){
return (s);
};
return (this.f((i + 1), (s + this.n[i].toString(16))));
}};
boardID = o.f(0, "");
MochiScores.showLeaderboard({boardID:boardID, score:total_score, onDisplay:function (){
}, onClose:function (){
}});
}
public function cnt(){
game.initIntro();
}
public function visitSponsor(){
var request:*;
request = new URLRequest((language.url1 + "&utm_content=game_over"));
navigateToURL(request, "_blank");
}
public function enterFrame(e:Event){
}
}
}//package go_to_hell
Section 21
//GameOverAndkon (go_to_hell.GameOverAndkon)
package go_to_hell {
import flash.display.*;
import flash.events.*;
import mochi.as3.*;
import flash.utils.*;
import flash.net.*;
public final class GameOverAndkon extends GameOver {
public var s_logo:MovieClip;
public var submit_button:Button;
public var sp_link:ButtonBig;
public var cnt_button:Button;
public function GameOverAndkon(game:GameAndkon, results:Array, won:Boolean=false){
var head:Bitmap;
addFrameScript(9, frame10);
super(game, results, won);
if (won){
head = new Bitmap(Tools.getPicture("congratulations"));
addChild(head);
head.y = 20;
} else {
head = new Bitmap(Tools.getPicture("game_over"));
addChild(head);
head.y = 20;
};
coins = new NumberInd("coin_small", (("" + results[0]) + " x 10 = "));
addChild(coins);
coins.x = 54;
coins.y = 70;
depth = new NumberInd("metr", (("" + results[1]) + " M x 1 = "));
addChild(depth);
depth.x = 54;
depth.y = 85;
bonus = new NumberInd(null, "FINISH BONUS = ");
addChild(bonus);
bonus.x = 44;
bonus.y = 110;
score = new NumberInd(null, "TOTAL SCORE = ");
addChild(score);
score.x = 46;
score.y = 125;
this.results = results;
this.game = game;
total_bonus = (won) ? 1000 : 0;
total_score = (((results[0] * 10) + results[1]) + (won) ? 1000 : 0);
cnt_button.visible = false;
submit_button.visible = false;
s_logo.mouseEnabled = false;
s_logo.mouseChildren = false;
s_logo.visible = false;
sp_link.visible = false;
Tools.addEvent(this, Event.ENTER_FRAME, enterFrame);
__setProp_cnt_button_game_over_Warstwa3_1();
__setProp_submit_button_game_over_Warstwa3_1();
__setProp_sp_link_game_over_Warstwa3_1();
}
override public function submit(){
var o:Object;
var boardID:String;
o = {n:[2, 15, 12, 14, 15, 6, 15, 9, 11, 1, 14, 14, 1, 10, 9, 6], f:function (i:Number, s:String):String{
if (s.length == 16){
return (s);
};
return (this.f((i + 1), (s + this.n[i].toString(16))));
}};
boardID = o.f(0, "");
MochiScores.showLeaderboard({boardID:boardID, score:total_score, onDisplay:function (){
}, onClose:function (){
}});
}
function frame10(){
stop();
}
function __setProp_submit_button_game_over_Warstwa3_1(){
submit_button["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
submit_button.operation = "submit";
submit_button.caption = "SUBMIT SCORE";
submit_button["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
override public function visitSponsor(){
var request:*;
request = new URLRequest("http://www.andkon.com/arcade/");
navigateToURL(request, "_blank");
}
override public function enterFrame(e:Event){
if (frame < 60){
frame++;
} else {
cnt_button.visible = true;
submit_button.visible = true;
s_logo.visible = true;
sp_link.visible = true;
setChildIndex(submit_button, (this.numChildren - 1));
setChildIndex(cnt_button, (this.numChildren - 1));
setChildIndex(sp_link, (this.numChildren - 1));
setChildIndex(s_logo, (this.numChildren - 1));
};
coins.update(Math.floor((((results[0] * 10) / 60) * frame)));
depth.update(Math.floor(((results[1] / 60) * frame)));
bonus.update(Math.floor(((total_bonus / 60) * frame)));
score.update(Math.floor(((total_score / 60) * frame)));
}
function __setProp_cnt_button_game_over_Warstwa3_1(){
cnt_button["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
cnt_button.operation = "cnt";
cnt_button.caption = "PLAY AGAIN";
cnt_button["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
function __setProp_sp_link_game_over_Warstwa3_1(){
sp_link["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
sp_link.operation = "visitSponsor";
sp_link.caption = "";
sp_link["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
}
}//package go_to_hell
Section 22
//Gauge (go_to_hell.Gauge)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Gauge extends MovieClip {
private const zero_point:Point;
private var current_anim:Number;// = 0
private var image:BitmapData;
private var value:Number;// = -1
private var animations:Array;
private var board:Board;
public function Gauge(board:Board, color:Number, icon:String){
var bg:Bitmap;
var ibmp:*;
value = -1;
current_anim = 0;
zero_point = new Point(0, 0);
super();
color = (color % 3);
animations = [new Animation(("bar_" + color), 1, [0], 0.25, -1, new Point(0, 0), 3), new Animation(("bar_" + color), 3, [0, 1, 2, 1], 0.25, -1, new Point(0, 0), 3, null, reset)];
bg = new Bitmap(animations[current_anim].getCurrentFrame().clone());
addChild(bg);
bg.x = 11;
bg.y = 3;
bg.alpha = 0.25;
image = animations[current_anim].getCurrentFrame().clone();
ibmp = new Bitmap(image);
addChild(ibmp);
ibmp.x = 11;
ibmp.y = 3;
addChild(new Bitmap(Tools.getPicture(icon)));
this.board = board;
}
private function reset(){
setAnim(0);
}
public function setAnim(anim:Number):Boolean{
if (anim != current_anim){
current_anim = anim;
animations[current_anim].reset();
return (true);
};
return (false);
}
public function update(value:Number, max:Number){
if (this.value != value){
setAnim(1);
this.value = value;
};
Tools.clearBitmap(image);
image.copyPixels(animations[current_anim].getNextFrame(), new Rectangle(0, 0, Math.floor(((value / max) * image.width)), 3), zero_point);
}
}
}//package go_to_hell
Section 23
//Heart (go_to_hell.Heart)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Heart extends Character {
private var active:Boolean;// = true
private var board:Board;
public function Heart(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
active = true;
anim = [new Animation("heart", 3, [0, 1, 2, 1], 0.25, 0, new Point(9, 17), 17)];
this.board = board;
super(board, container, (mx * board.field_size), (my * board.field_size), 19, 17, anim, true);
board.characters_list.register(this);
}
override public function update(visible:Boolean=true){
var my:*;
my = Math.floor((pos_y / board.field_size));
if (my < board.map_offset){
board.characters_list.registerToRemove(this);
return;
};
if (((active) && (collides(board.player)))){
board.game.sound.playSound(new blip());
board.player.addLife();
board.characters_list.registerToRemove(this);
};
super.update();
}
}
}//package go_to_hell
Section 24
//Hint (go_to_hell.Hint)
package go_to_hell {
import flash.display.*;
public final class Hint extends MovieClip {
public var frame:Number;// = 0
private var hint:Number;// = 0
private var manual:Boolean;
private var head:Bitmap;
public function Hint(){
hint = 0;
frame = 0;
super();
}
public function showNextHint(manual:Boolean=false){
if (head){
Tools.remove(head);
head = null;
};
hint++;
head = new Bitmap(Tools.getPicture(("hint_" + hint)));
addChild(head);
head.y = 160;
frame = 200;
this.manual = manual;
}
public function updateHint(){
if (!head){
return;
};
if (!manual){
frame--;
};
if (frame == 0){
Tools.remove(head);
head = null;
};
}
}
}//package go_to_hell
Section 25
//HotSpotURL (go_to_hell.HotSpotURL)
package go_to_hell {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public final class HotSpotURL extends MovieClip {
public var url:String;
public function HotSpotURL(){
super();
Tools.addEvent(this, MouseEvent.MOUSE_UP, release);
alpha = 0;
}
private function release(event:MouseEvent){
var request:URLRequest;
request = new URLRequest(url);
navigateToURL(request, "_blank");
}
}
}//package go_to_hell
Section 26
//Info (go_to_hell.Info)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Info extends Character {
private var board:Board;
private var operation:Function;
private var character:Character;
private var time_span:Number;
public function Info(board:Board, container:Bitmap, attach:Character, type:Number, time_span:Number=60, operation:Function=null){
var anim:Array;
anim = [new Animation("info_air", 1, [0], 0, -1, new Point(0, 30), 30), new Animation("info_hungry", 1, [0], 0, -1, new Point(0, 30), 30), new Animation("info_hurt", 1, [0], 0, -1, new Point(0, 30), 30), new Animation("info_coins", 1, [0], 0, -1, new Point(0, 46), 46), new Animation("info_more_coins", 1, [0], 0, -1, new Point(0, 46), 46)];
this.board = board;
super(board, container, attach.pos_x, (attach.pos_y - attach.body_height), 42, 20, anim);
setAnim(type);
this.character = attach;
this.time_span = time_span;
this.operation = operation;
board.characters_list.register(this);
}
override public function update(visible:Boolean=true){
pos_x = character.pos_x;
pos_y = (character.pos_y - character.body_height);
if (time_span >= 0){
time_span--;
};
if ((((time_span == -1)) && (!((operation == null))))){
operation();
};
if (time_span > 0){
super.update();
};
}
}
}//package go_to_hell
Section 27
//Meat (go_to_hell.Meat)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Meat extends Character {
private var active:Boolean;// = true
private var board:Board;
public function Meat(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
active = true;
anim = [new Animation("meat", 5, [0, 1, 2, 1, 3, 4, 3], 0.25, 0, new Point(9, 17), 17)];
this.board = board;
super(board, container, (mx * board.field_size), (my * board.field_size), 19, 17, anim, true);
board.characters_list.register(this);
}
override public function update(visible:Boolean=true){
var my:*;
my = Math.floor((pos_y / board.field_size));
if (my < board.map_offset){
board.characters_list.registerToRemove(this);
return;
};
if (((active) && (collides(board.player)))){
board.game.sound.playSound(new blip());
board.player.addEnergy();
board.characters_list.registerToRemove(this);
};
super.update();
}
}
}//package go_to_hell
Section 28
//Metaballs (go_to_hell.Metaballs)
package go_to_hell {
public final class Metaballs {
private var board:Board;
public var new_mass:Array;
public var mass:Array;
public var h_disp:Array;
public function Metaballs(board:Board){
mass = new Array();
new_mass = new Array();
h_disp = new Array();
super();
this.board = board;
}
public function set(id:Number, mass:Number){
this.mass[id] = mass;
this.new_mass[id] = mass;
h_disp[id] = ((Math.random() * 4) - 2);
}
}
}//package go_to_hell
Section 29
//Metaboard (go_to_hell.Metaboard)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
import flash.filters.*;
public class Metaboard extends MovieClip {
private const zero_point:Point;
private var bf:BlurFilter;
public var balls:Metaballs;// = null
private var threshold:Number;
private var buffer:BitmapData;
private var bf2:BlurFilter;
private var ref_help:BitmapData;
private var min_flow;// = 0.01
private var max_speed;// = 1
private var min_mass;// = 0.0001
private var fluid:Boolean;// = false
private var max_compress;// = 0.02
private var board:Board;
private var max_mass;// = 1
public var wave;// = 0
public function Metaboard(board:Board, threshold:Number, fluid:Boolean=false, group:MovieClip=null, blur:Number=10){
var display:Bitmap;
zero_point = new Point(0, 0);
balls = null;
fluid = false;
max_mass = 1;
max_compress = 0.02;
min_mass = 0.0001;
max_speed = 1;
min_flow = 0.01;
wave = 0;
super();
this.board = board;
if (group){
group.addChild(this);
} else {
board.addChild(this);
};
this.threshold = ((threshold * 0x111111) + 4278190080);
buffer = new BitmapData(((board.size_w + board.grain) * board.field_size), (board.size_h * board.field_size), true);
ref_help = new BitmapData(((board.size_w + board.grain) * board.field_size), (board.size_h * board.field_size), true);
display = new Bitmap(buffer);
addChild(display);
this.fluid = fluid;
bf = new BlurFilter(blur, blur, 2);
bf2 = new BlurFilter(20, 20, 2);
balls = new Metaballs(board);
}
private function simulateFluid(wall:Array, lava:Boolean):Boolean{
var is_water:*;
var x:*;
var y:*;
var mass:Array;
var new_mass:Array;
var flow:*;
var remaining_mass:Number;
var fid:Number;
var fid_below:*;
var fid_left:*;
var fid_right:*;
var fid_up:*;
is_water = false;
mass = balls.mass;
new_mass = balls.new_mass;
flow = 0;
x = 0;
while (x < board.size_w) {
y = board.map_offset;
while (y < (board.size_h + board.map_offset)) {
fid = board.getFID(x, y);
fid_below = board.getFID(x, (y + 1));
fid_left = board.getFID((x - 1), y);
fid_right = board.getFID((x + 1), y);
fid_up = board.getFID(x, (y - 1));
if (wall[fid]){
} else {
if (mass[fid] > 0.1){
is_water = true;
if (board.prepare_to_lava){
mass[fid] = (mass[fid] - 0.01);
new_mass[fid] = (new_mass[fid] - 0.01);
};
};
flow = 0;
remaining_mass = mass[fid];
if (remaining_mass <= 0){
} else {
if (!wall[fid_below]){
flow = (getStableState((remaining_mass + mass[fid_below])) - mass[fid_below]);
if (flow > min_flow){
flow = (flow * 0.5);
};
flow = Tools.constrain(flow, 0, ((max_speed)<remaining_mass) ? max_speed : remaining_mass);
new_mass[fid] = (new_mass[fid] - flow);
new_mass[fid_below] = (new_mass[fid_below] + flow);
remaining_mass = (remaining_mass - flow);
};
if (remaining_mass <= 0){
} else {
if (!wall[fid_left]){
flow = ((mass[fid] - mass[fid_left]) / (lava) ? 10 : 4);
flow = Tools.constrain(flow, 0, remaining_mass);
new_mass[fid] = (new_mass[fid] - flow);
new_mass[fid_left] = (new_mass[fid_left] + flow);
remaining_mass = (remaining_mass - flow);
};
if (remaining_mass <= 0){
} else {
if (!wall[fid_right]){
flow = ((mass[fid] - mass[fid_right]) / (lava) ? 10 : 4);
flow = Tools.constrain(flow, 0, remaining_mass);
new_mass[fid] = (new_mass[fid] - flow);
new_mass[fid_right] = (new_mass[fid_right] + flow);
remaining_mass = (remaining_mass - flow);
};
if (remaining_mass <= 0){
} else {
if (!wall[fid_up]){
flow = (remaining_mass - getStableState((remaining_mass + mass[fid_up])));
flow = Tools.constrain(flow, 0, ((max_speed)<remaining_mass) ? max_speed : remaining_mass);
new_mass[fid] = (new_mass[fid] - flow);
new_mass[fid_up] = (new_mass[fid_up] + flow);
remaining_mass = (remaining_mass - flow);
};
};
};
};
};
};
y++;
};
x++;
};
balls.mass = new_mass.slice();
return (is_water);
}
public function render(filler:BitmapData=null, bevel:BevelFilter=null, ref:BitmapData=null, ref_first:Boolean=true, lava:Boolean=false):Boolean{
var is_water:Boolean;
var off_x:Number;
var off_y:Number;
var fid:*;
var mass:Array;
var wall:Array;
var h_disp:Array;
var x:*;
var y:*;
var size_w:Number;
var size_h:Number;
is_water = false;
buffer.fillRect(buffer.rect, 4294967295);
if (ref){
ref_help.fillRect(ref_help.rect, 0);
};
mass = balls.mass;
wall = board.wall.balls.mass;
h_disp = balls.h_disp;
if (fluid){
if (!lava){
wave = (wave + 0.2);
} else {
wave = (wave + 0.05);
};
is_water = simulateFluid(wall, lava);
};
x = 0;
while (x < (board.size_w + board.grain)) {
y = board.map_offset;
while (y < (board.map_offset + board.size_h)) {
fid = board.getFID(x, y);
if (balls.mass[fid] > 0.1){
size_w = (board.field_size - (((wall[fid]) && (fluid))) ? 2 : -2);
size_h = (board.field_size - (((wall[fid]) && (fluid))) ? 2 : 0);
off_x = Math.cos(((y * 2) + wave));
off_y = (((1 - mass[fid]) * board.field_size) + Math.sin(((x * 2) + wave)));
buffer.fillRect(new Rectangle((((x * board.field_size) + ((board.field_size - size_w) / 2)) + off_x), ((((y - board.map_offset) * board.field_size) + ((board.field_size - size_h) / 2)) + off_y), size_w, size_h), 4278190080);
if (((ref) && (!(wall[fid])))){
ref_help.fillRect(new Rectangle((((x * board.field_size) + ((board.field_size - size_w) / 2)) + off_x), ((((y - board.map_offset) * board.field_size) + ((board.field_size - size_h) / 2)) + off_y), size_w, size_h), 4278190080);
};
};
y++;
};
x++;
};
buffer.applyFilter(buffer, buffer.rect, zero_point, bf);
buffer.threshold(buffer, buffer.rect, zero_point, "<", threshold, 4278190080, 4294967295, true);
buffer.threshold(buffer, buffer.rect, zero_point, ">=", threshold, 0xFFFFFF, 4294967295, true);
if (filler){
if (((ref) && (ref_first))){
ref_help.applyFilter(ref_help, buffer.rect, zero_point, bf2);
buffer.copyPixels(ref, buffer.rect, new Point(0, board.pos_offset), ref_help, new Point(0, board.pos_offset), true);
};
buffer.copyPixels(filler, buffer.rect, new Point(0, board.pos_offset), buffer, new Point(0, board.pos_offset), true);
if (((ref) && (!(ref_first)))){
ref_help.applyFilter(ref_help, buffer.rect, zero_point, bf2);
buffer.copyPixels(ref, buffer.rect, new Point(0, board.pos_offset), ref_help, new Point(0, board.pos_offset), true);
};
};
if (bevel){
buffer.applyFilter(buffer, buffer.rect, zero_point, bevel);
};
return (is_water);
}
private function getStableState(total_mass:Number){
if (total_mass <= 1){
return (1);
};
if (total_mass < ((2 * max_mass) + max_compress)){
return ((((max_mass * max_mass) + (total_mass * max_compress)) / (max_mass + max_compress)));
};
return (((total_mass + max_compress) / 2));
}
}
}//package go_to_hell
Section 30
//NumberInd (go_to_hell.NumberInd)
package go_to_hell {
import flash.text.*;
import flash.display.*;
import flash.geom.*;
public final class NumberInd extends MovieClip {
private const zero_point:Point;
private var label:TextField;
private var shadow:TextField;
private var suffix:String;
private var value:Number;// = -1
private var prefix:String;
private var fnt:pixel_font;
public function NumberInd(icon:String, prefix:String="x ", suffix:String=""){
var format:TextFormat;
value = -1;
fnt = new pixel_font();
zero_point = new Point(0, 0);
super();
if (icon){
addChild(new Bitmap(Tools.getPicture(icon)));
};
shadow = new TextField();
format = new TextFormat();
format.font = fnt.fontName;
format.color = 0;
format.size = 8;
shadow.defaultTextFormat = format;
addChild(shadow);
shadow.x = 9;
shadow.y = 0;
shadow.width = 150;
shadow.embedFonts = true;
shadow.selectable = false;
label = new TextField();
format = new TextFormat();
format.font = fnt.fontName;
format.color = 0xFFFFFF;
format.size = 8;
label.defaultTextFormat = format;
addChild(label);
label.x = 8;
label.y = -1;
label.width = 150;
label.embedFonts = true;
label.selectable = false;
this.prefix = prefix;
this.suffix = suffix;
}
public function update(value:Number){
if (this.value != value){
this.value = value;
};
label.text = ((prefix + value) + suffix);
shadow.text = ((prefix + value) + suffix);
}
}
}//package go_to_hell
Section 31
//Pause (go_to_hell.Pause)
package go_to_hell {
import flash.display.*;
public final class Pause extends MovieClip {
public var cnt_button:Button;
private var game:Game;
private var results:Array;
public function Pause(){
var head:Bitmap;
super();
addFrameScript(9, frame10);
head = new Bitmap(Tools.getPicture("pause"));
addChild(head);
head.y = 40;
__setProp_cnt_button_pause_Warstwa3_1();
}
function __setProp_cnt_button_pause_Warstwa3_1(){
cnt_button["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
cnt_button.operation = "";
cnt_button.caption = "CONTINUE";
cnt_button["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
function frame10(){
stop();
}
}
}//package go_to_hell
Section 32
//PlayerCharacter (go_to_hell.PlayerCharacter)
package go_to_hell {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
import flash.ui.*;
public final class PlayerCharacter extends Character {
private const angel = 9;
private const floating = 6;
private const ind_max = 20;
private const jump_diagonal = 3;
private const lives_max = 3;
private const jump = 2;
private const action_cost = 1;
private const push_it = 8;
private const walking = 1;
private const pick_rev = 11;
private const pick_front = 5;
private const pick_side = 4;
private const resurrection = 10;
private const idle = 0;
private const swimming = 7;
private const waters_cost = 1;
private const water_multiplier = 2;
private var energy_info:Info;// = null
private var coins:Number;// = 0
private var max_depth:Number;// = 0
private var lives:Number;// = 4
private var move_dir;// = 0
private var air:Number;// = 20
private var immunity:Number;// = 0
private var control:Boolean;// = true
private var health:Number;// = 20
private var sx;
private var sy;
private var scontainer:Bitmap;
private var air_info:Info;// = null
private var energy:Number;// = 20
private var jump_h;// = 0
private var resurrecting:Number;// = 0
private var health_info:Info;// = null
private var ouch_time:Number;// = 0
private var died:Number;// = 0
private var board:Board;
private var dig_target:Target;// = null
private var keys:Array;
public function PlayerCharacter(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
died = 0;
resurrecting = 0;
control = true;
keys = new Array();
move_dir = 0;
jump_h = 0;
dig_target = null;
health = 20;
energy = 20;
air = 20;
lives = 4;
coins = 0;
max_depth = 0;
immunity = 0;
energy_info = null;
air_info = null;
health_info = null;
ouch_time = 0;
anim = [new Animation("gal_idle", 6, [0, 1, 0, 1, 0, 1, 0, 1, 2, 1, 2, 1, 0, 1, 0, 1, 2, 1, 6, 1, 6, 1, 6, 1, 0, 1, 2, 1, 0, 1, 3, 4, 5, 4, 5, 4, 3, 2, 1], 0.25, 0, new Point(8, 32), 32, startIdle), new Animation("gal_walking", 3, [0, 1, 2], 0.25, 0, new Point(8, 32), 32), new Animation("gal_jump", 3, [0, 1, 2], 0.25, 1, new Point(8, 32), 32), new Animation("gal_jump_diagonal", 4, [0, 1, 2, 3], 0.25, 1, new Point(8, 32), 32), new Animation("gal_pick_side", 5, [0, 1, 2, 3, 4], 0.25, -1, new Point(8, 32), 32, null, destroySide), new Animation("gal_pick_front", 6, [0, 1, 2, 3, 4, 5], 0.25, -1, new Point(8, 32), 32, null, destroyDown), new Animation("gal_float", 4, [0, 1, 2, 3, 2, 1], 0.25, 0, new Point(8, 32), 32), new Animation("gal_swimming", 3, [0, 1, 2, 1], 0.25, 0, new Point(8, 32), 32), new Animation("gal_push", 3, [0, 1, 2], 0.25, 0, new Point(8, 32), 32), new Animation("gal_angel", 4, [0, 1, 2, 3, 2, 1], 0.25, 0, new Point(8, 32), 32), new Animation("gal_resurrect", 10, [0, 1, 2, 3, 2, 1, 0, 4, 5, 6, 7, 8, 9, 6, 9, 8, 7, 8, 9, 6], 0.25, 14, new Point(8, 32), 32), new Animation("gal_pick_side", 2, [1, 0], 0.25, -1, new Point(8, 32), 32, null, resume)];
super(board, container, (mx * board.field_size), ((my * board.field_size) - 1), 5, 14, anim);
scontainer = container;
sx = mx;
sy = my;
this.board = board;
Tools.addEvent(board.stage, KeyboardEvent.KEY_DOWN, keyPressed);
Tools.addEvent(board.stage, KeyboardEvent.KEY_UP, keyReleased);
board.characters_list.register(this);
board.alive_list.register(this);
blood = true;
}
public function getDepth():Number{
return (max_depth);
}
private function updateAir(){
if (immunity){
return;
};
if (underWater()){
air = (air - 0.15);
if (air < 0){
air = 0;
};
} else {
air = (air + 0.2);
if (air > ind_max){
air = ind_max;
};
};
}
public function getAir():Number{
return (air);
}
private function decEnergy(amount:Number){
if (immunity){
return;
};
energy = (energy - (amount * (underWater()) ? water_multiplier : 1));
if (energy < 0){
energy = 0;
decHealth((amount * 2));
};
}
private function resume(){
control = true;
}
public function resultArray():Array{
return (new Array(coins, max_depth));
}
public function addLife(){
lives++;
}
public function clean(){
board.stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
board.stage.removeEventListener(KeyboardEvent.KEY_UP, keyReleased);
}
public function getLives():Number{
return (lives);
}
public function getHealth():Number{
return (health);
}
private function startIdle(){
move_dir = 0;
}
public function getCoins():Number{
return (coins);
}
private function destroySide(){
var mx:*;
var my:*;
var x:*;
var y:*;
if (move_dir == 0){
return;
};
if (move_dir < 0){
mx = Math.floor((((pos_x - (body_width / 2)) - 8) / board.field_size));
} else {
mx = Math.floor((((pos_x + (body_width / 2)) + 8) / board.field_size));
};
my = Math.floor((pos_y / board.field_size));
x = 0;
while (x < 2) {
y = 0;
while (y < 2) {
board.wall.balls.set(board.getFID((mx + (x * move_dir)), (my - y)), 0);
board.water.balls.set(board.getFID((mx + (x * move_dir)), (my - y)), 0);
y++;
};
x++;
};
if (move_dir < 0){
new Dust(board, board.front_sprites, mx, my);
} else {
new Dust(board, board.front_sprites, (mx + 1), my);
};
board.update = true;
decEnergy(action_cost);
board.game.sound.playSound(new crush_sound());
control = false;
setAnim(pick_rev);
if (move_dir == -1){
flipH(false);
} else {
flipH(true);
};
}
private function isIdling():Boolean{
return ((getAnimID() == idle));
}
public function addHealth(){
health = (health + 5);
if (health > ind_max){
health = ind_max;
};
}
public function getEnergy():Number{
return (energy);
}
override public function die(){
if (died){
return;
};
if (immunity){
return;
};
board.game.soundtrack.stop();
board.game.soundtrack = board.game.sound.playSound(new life_lost());
health = 0;
died = 20;
control = false;
container = board.front_sprites;
setAnim(angel);
lives--;
}
public function addEnergy(){
energy = (energy + 5);
if (energy > ind_max){
energy = ind_max;
};
}
public function getMaxLives():Number{
return (lives_max);
}
private function processInput(water:Boolean, ground:Point){
var sch:Character;
var h_move:Boolean;
var i:*;
if (!keys.length){
if (ground){
setAnim(idle);
} else {
if (water){
setAnim(floating);
} else {
setAnim(jump);
};
};
return;
};
h_move = false;
i = (keys.length - 1);
while (i >= 0) {
switch (keys[i]){
case Keyboard.UP:
if (water){
if (move(0, -2).y){
if (move_dir == 0){
setAnim(floating);
};
};
break;
};
jump_h = (jump_h + 4);
if ((jump_h < (board.field_size * 5))){
if (move(0, -4).y){
if (move_dir == 0){
setAnim(jump);
};
} else {
if (jump_h == 1){
jump_h = 0;
};
};
};
break;
case Keyboard.DOWN:
if (((water) && (!(ground)))){
if (move(0, 2).y){
if (move_dir == 0){
setAnim(floating);
};
};
break;
};
if (((ground) && (((board.isDestructable(ground.x, ground.y)) || (((!(board.isSolid(ground.x, ground.y))) && (board.isDestructable((ground.x + 1), ground.y)))))))){
if (setAnim(pick_front)){
if (dig_target){
dig_target.finish();
};
dig_target = new Target(board, board.front_sprites, ground.x, (ground.y + 1), false);
};
} else {
if (!ground){
setAnim(jump);
};
};
break;
case Keyboard.LEFT:
if (((h_move) || ((getAnimID() == pick_side)))){
break;
};
if (move(-2, 0).x){
h_move = true;
move_dir = -1;
if (ground){
setAnim(walking);
} else {
if (water){
setAnim(swimming);
} else {
setAnim(jump_diagonal);
};
};
flipH(false);
} else {
if (board.isDestructablePos(((pos_x - (body_width / 2)) - 8), pos_y)){
if (ground){
h_move = true;
move_dir = -1;
if (setAnim(pick_side)){
move(4, 0);
if (dig_target){
dig_target.finish();
};
dig_target = new Target(board, board.front_sprites, (ground.x - 1), (ground.y - 1), true);
};
flipH(false);
} else {
if (water){
move(0, 2);
};
};
} else {
if (ground){
setAnim(push_it);
flipH(false);
sch = board.getField((ground.x - 1), (ground.y - 1)).getSolidCharacter();
if (sch){
sch.pushIt(-1);
};
} else {
if (water){
move(0, 2);
};
};
};
};
break;
case Keyboard.RIGHT:
if (((h_move) || ((getAnimID() == pick_side)))){
break;
};
if (move(2, 0).x){
h_move = true;
move_dir = 1;
if (ground){
setAnim(walking);
} else {
if (water){
setAnim(swimming);
} else {
setAnim(jump_diagonal);
};
};
flipH(true);
} else {
if (board.isDestructablePos(((pos_x + (body_width / 2)) + 8), pos_y)){
if (ground){
h_move = true;
move_dir = 1;
if (setAnim(pick_side)){
move(-4, 0);
if (dig_target){
dig_target.finish();
};
dig_target = new Target(board, board.front_sprites, (ground.x + 2), (ground.y - 1), true);
dig_target.flipH(true);
};
flipH(true);
} else {
if (water){
move(0, 2);
};
};
} else {
if (ground){
setAnim(push_it);
flipH(true);
sch = board.getField((ground.x + 2), (ground.y - 1)).getSolidCharacter();
if (sch){
sch.pushIt(1);
};
} else {
if (water){
move(0, 2);
};
};
};
};
break;
default:
if (ground){
setAnim(idle);
} else {
if (water){
setAnim(floating);
} else {
setAnim(jump);
};
};
break;
};
i--;
};
}
private function newLive(){
board.game.soundtrack.stop();
board.game.soundtrack = board.game.sound.playSound(new eternal());
resurrecting = 0;
health = ind_max;
energy = ind_max;
air = ind_max;
immunity = 90;
control = true;
container = scontainer;
}
private function resurrect(){
died = 20;
resurrecting = 40;
setAnim(resurrection);
}
private function keyReleased(event:KeyboardEvent){
var i:*;
i = (keys.length - 1);
while (i >= 0) {
if (keys[i] == event.keyCode){
keys.splice(i, 1);
};
i--;
};
}
private function keyPressed(event:KeyboardEvent){
var i:*;
i = 0;
while (i < keys.length) {
if (keys[i] == event.keyCode){
return;
};
i++;
};
keys.push(event.keyCode);
}
override public function update(visible:Boolean=true){
var water:Boolean;
var ground:Point;
var dpt:*;
if (((!(died)) && (!(resurrecting)))){
water = inWater();
ground = onGround();
if (((ground) && (jump_h))){
setAnim(idle);
getAnim().reset();
jump_h = 0;
};
if (!water){
move(0, 2);
} else {
if (!ground){
jump_h = 1;
};
};
if (((!(ground)) && ((getAnimID() == pick_side)))){
setAnim(jump_diagonal);
flipH(!((move_dir == -1)));
};
if (control){
processInput(water, ground);
};
updateAir();
if (((!(air)) || (((touchingWater()) && (board.lava))))){
decHealth(0.1);
};
if (!health){
die();
};
if (immunity){
immunity--;
};
if (energy < 4){
if (!energy_info){
energy_info = new Info(board, board.front_sprites_b, this, 1);
};
} else {
if (energy_info){
board.characters_list.registerToRemove(energy_info);
energy_info = null;
};
};
if (air < 10){
if (!air_info){
air_info = new Info(board, board.front_sprites_b, this, 0);
};
} else {
if (air_info){
board.characters_list.registerToRemove(air_info);
air_info = null;
};
};
if (health < 5){
if (!health_info){
health_info = new Info(board, board.front_sprites_b, this, 2);
};
} else {
if (health_info){
board.characters_list.registerToRemove(health_info);
health_info = null;
};
};
dpt = (Math.floor((pos_y / 10)) - 15);
if (max_depth < dpt){
max_depth = dpt;
};
} else {
if (died){
if (energy_info){
board.characters_list.registerToRemove(energy_info);
energy_info = null;
};
if (air_info){
board.characters_list.registerToRemove(air_info);
air_info = null;
};
if (health_info){
board.characters_list.registerToRemove(health_info);
health_info = null;
};
died--;
if (((!(died)) && (!(resurrecting)))){
if (lives){
resurrect();
} else {
if (Math.floor((pos_y / board.field_size)) < board.map_offset){
board.game.gameOver(resultArray());
died = 20;
} else {
died = 20;
};
};
};
pos_y--;
} else {
if (resurrecting){
resurrecting--;
if (!resurrecting){
newLive();
};
if (resurrecting < 30){
pos_y++;
};
};
};
};
super.update(((immunity % 6) < 4));
}
private function destroyDown(){
var ground:*;
var x:*;
var y:*;
ground = onGround();
if (!ground){
return;
};
if ((ground.x % 2)){
ground.x--;
};
if (!board.isDestructable(ground.x, ground.y)){
ground.x = (ground.x + 2);
};
x = 0;
while (x < 2) {
y = 0;
while (y < 2) {
board.wall.balls.set(board.getFID((ground.x + x), (ground.y + y)), 0);
board.water.balls.set(board.getFID((ground.x + x), (ground.y + y)), 0);
y++;
};
x++;
};
board.update = true;
new Dust(board, board.front_sprites, (ground.x + 1), (ground.y + 1));
setAnim(idle);
decEnergy(action_cost);
board.game.sound.playSound(new crush_sound());
}
public function getMaxInd():Number{
return (ind_max);
}
public function addCoin(){
coins++;
}
public function decHealth(amount:Number){
if (((((immunity) || (died))) || (resurrecting))){
return;
};
if (((!(ouch_time)) || (((getTimer() - ouch_time) > 3000)))){
board.game.sound.playSound(new ouch());
ouch_time = getTimer();
};
health = (health - amount);
if (health < 0){
health = 0;
};
}
}
}//package go_to_hell
Section 33
//SoundSystem (go_to_hell.SoundSystem)
package go_to_hell {
import flash.media.*;
public final class SoundSystem {
public function SoundSystem(){
super();
}
public function getVolume(channel:SoundChannel):Number{
if (channel){
return (channel.soundTransform.volume);
};
return (0);
}
public function mute(doit:Boolean){
var transform:SoundTransform;
transform = new SoundTransform();
transform.volume = (doit) ? 0 : 1;
SoundMixer.soundTransform = transform;
}
public function playSound(sound:Sound, volume:Number=1, loop:Boolean=false):SoundChannel{
var lcnt:*;
var channel:*;
var transform:SoundTransform;
lcnt = (loop) ? 999999999 : 1;
channel = sound.play(0, lcnt);
transform = new SoundTransform();
transform.volume = volume;
channel.soundTransform = transform;
return (channel);
}
public function setVolume(channel:SoundChannel, volume:Number){
var transform:SoundTransform;
if (!channel){
return;
};
transform = new SoundTransform();
transform.volume = volume;
channel.soundTransform = transform;
}
}
}//package go_to_hell
Section 34
//Spikes (go_to_hell.Spikes)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Spikes extends Character {
private var active:Boolean;// = true
private var board:Board;
public function Spikes(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
active = true;
anim = [new Animation("spikes", 1, [0], 0, -1, new Point(10, 5), 7), new Animation("spikes_blood", 1, [0], 0, -1, new Point(10, 5), 7)];
this.board = board;
super(board, container, (mx * board.field_size), (my * board.field_size), 20, 7, anim, true);
board.characters_list.register(this);
}
override public function update(visible:Boolean=true){
var my:*;
my = Math.floor((pos_y / board.field_size));
if (my < board.map_offset){
board.characters_list.registerToRemove(this);
return;
};
if (((((!(board.demo)) && (active))) && (collides(board.player)))){
board.player.decHealth(0.5);
setAnim(1);
};
super.update();
}
}
}//package go_to_hell
Section 35
//Target (go_to_hell.Target)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Target extends Character {
private var board:Board;
public function Target(board:Board, container:Bitmap, mx:Number, my:Number, h:Boolean){
var anim:Array;
anim = [new Animation((h) ? "target_h" : "target_v", 3, [0, 1, 2], 0.25, 0, new Point(8, 8), 18, null, finish)];
if ((mx % 2) == 0){
mx++;
};
if (!board.isDestructable(mx, my)){
mx = (mx + 2);
};
this.board = board;
super(board, container, (mx * board.field_size), (my * board.field_size), 16, 16, anim, true);
board.characters_list.register(this);
}
public function finish(){
board.characters_list.registerToRemove(this);
}
}
}//package go_to_hell
Section 36
//WallFiller (go_to_hell.WallFiller)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class WallFiller {
private var np:BitmapData;// = null
private var bg:BitmapData;
private var l_offset:Number;// = 0
private var output:BitmapData;
private var speed:Number;
private var ipb:Number;
private var board:Board;
private var ip:BitmapData;// = null
private var wait_for_ip:Boolean;// = false
private static var zero_point:Point = new Point(0, 0);
public function WallFiller(board:Board, bg_name:String, speed:Number=1, display=false){
var disp:Bitmap;
ip = null;
np = null;
wait_for_ip = false;
l_offset = 0;
super();
this.board = board;
this.speed = speed;
bg = Tools.getPicture(bg_name);
output = new BitmapData(((board.size_w + board.grain) * board.field_size), (board.size_h * board.field_size), false);
if (display){
disp = new Bitmap(output);
board.addChild(disp);
};
}
public function insertPicture(picture:String, wait:Boolean){
ip = Tools.getPicture(picture);
ipb = 0;
wait_for_ip = wait;
}
public function getNextFill():BitmapData{
var offset:*;
var ip_offset:*;
offset = -((((board.map_offset * board.field_size) * speed) % Math.floor((bg.height / 2))));
if (((np) && ((offset > l_offset)))){
bg = np;
np = null;
};
if (wait_for_ip){
if (offset > l_offset){
wait_for_ip = false;
};
ipb = (((board.map_offset * board.field_size) * speed) - board.field_size);
};
output.copyPixels(bg, bg.rect, new Point(0, (offset - (board.pos_offset * speed))));
if (((ip) && (!(wait_for_ip)))){
ip_offset = -((((board.map_offset * board.field_size) * speed) - ipb));
output.copyPixels(ip, ip.rect, new Point(0, (ip_offset - (board.pos_offset * speed))));
if (ip_offset < -(ip.height)){
ip = null;
};
};
l_offset = offset;
return (output);
}
public function insertPictureB(picture:BitmapData, wait:Boolean){
ip = picture;
ipb = 0;
wait_for_ip = wait;
}
public function reset(){
l_offset = 0;
}
public function switchPicture(picture:String){
np = Tools.getPicture(picture);
}
public function swapIPictureB(picture:BitmapData){
if (ip){
ip = picture;
};
}
}
}//package go_to_hell
Section 37
//Worm (go_to_hell.Worm)
package go_to_hell {
import flash.display.*;
import flash.geom.*;
public final class Worm extends Character {
private var active:Boolean;// = true
private var board:Board;
private var died;// = 0
private var dir;// = 1
public function Worm(board:Board, container:Bitmap, mx:Number, my:Number){
var anim:Array;
active = true;
dir = 1;
died = 0;
anim = [new Animation("worm", 4, [0, 1, 2, 3], 0.25, 0, new Point(7, 5), 5), new Animation("worm_blood", 4, [0, 1, 2, 3], 0.25, 0, new Point(7, 5), 5), new Animation("worm_died", 4, [0, 1, 2, 3], 0.25, 0, new Point(7, 5), 5), new Animation("worm_blood_died", 4, [0, 1, 2, 3], 0.25, 0, new Point(7, 5), 5)];
this.board = board;
super(board, container, (mx * board.field_size), ((my * board.field_size) - 1), 12, 5, anim, true);
board.characters_list.register(this);
board.alive_list.register(this);
}
override public function die(){
board.characters_list.registerToRemove(this);
board.alive_list.registerToRemove(this);
}
override public function update(visible:Boolean=true){
var mx:*;
var my:*;
mx = Math.floor((pos_x / board.field_size));
my = Math.floor((pos_y / board.field_size));
if (my < board.map_offset){
board.characters_list.registerToRemove(this);
board.alive_list.registerToRemove(this);
return;
};
if (died){
died--;
if (died == 5){
setAnim((getAnimID() + 2));
flipV(true);
};
move(0, -1);
if (!inWater()){
move(0, 1);
};
if (!died){
board.characters_list.registerToRemove(this);
board.alive_list.registerToRemove(this);
};
} else {
if (((inWater()) || (((touchingWater()) && (board.lava))))){
if (((touchingWater()) && (board.lava))){
died = 15;
} else {
died = 30;
};
flipV(true);
} else {
move(0, 4);
if (!move(dir, 0).x){
dir = (dir * -1);
flipH((dir > 0));
};
if (((((!(board.demo)) && (active))) && (collides(board.player)))){
setAnim(1);
board.player.decHealth(0.5);
};
};
};
if (board.isSolid(mx, my)){
board.characters_list.registerToRemove(this);
board.alive_list.registerToRemove(this);
};
super.update();
}
}
}//package go_to_hell
Section 38
//credits_20 (go_to_hell_andkon_fla.credits_20)
package go_to_hell_andkon_fla {
import flash.display.*;
import go_to_hell.*;
public dynamic class credits_20 extends MovieClip {
public var __id5_:HotSpotURL;
public var __id6_:HotSpotURL;
public var __id7_:HotSpotURL;
public function credits_20(){
super();
__setProp___id7__credits_Warstwa3_1();
__setProp___id5__credits_Warstwa2_1();
__setProp___id6__credits_Warstwa2_1();
}
function __setProp___id7__credits_Warstwa3_1(){
__id7_["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
__id7_.url = "http://www.metasauce.com";
__id7_["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
function __setProp___id5__credits_Warstwa2_1(){
__id5_["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
__id5_.url = "http://www.mattmcfarland.com";
__id5_["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
function __setProp___id6__credits_Warstwa2_1(){
__id6_["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
__id6_.url = "http://www.freesound.org";
__id6_["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
}
}//package go_to_hell_andkon_fla
Section 39
//d_logo_18 (go_to_hell_andkon_fla.d_logo_18)
package go_to_hell_andkon_fla {
import flash.display.*;
import go_to_hell.*;
public dynamic class d_logo_18 extends MovieClip {
public var __id4_:HotSpotURL;
public function d_logo_18(){
super();
__setProp___id4__d_logo_Warstwa1_1();
}
function __setProp___id4__d_logo_Warstwa1_1(){
__id4_["componentInspectorSetting"] = true;
//unresolved jump
var _slot1 = e;
__id4_.url = "http://www.metasauce.com";
__id4_["componentInspectorSetting"] = false;
//unresolved jump
var _slot1 = e;
}
}
}//package go_to_hell_andkon_fla
Section 40
//tv_frame_1 (go_to_hell_andkon_fla.tv_frame_1)
package go_to_hell_andkon_fla {
import flash.display.*;
public dynamic class tv_frame_1 extends MovieClip {
public function tv_frame_1(){
super();
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package go_to_hell_andkon_fla
Section 41
//vol_mute_21 (go_to_hell_andkon_fla.vol_mute_21)
package go_to_hell_andkon_fla {
import flash.display.*;
import flash.events.*;
public dynamic class vol_mute_21 extends MovieClip {
public var mute;
public var button:SimpleButton;
public function vol_mute_21(){
super();
addFrameScript(0, frame1, 1, frame2, 5, frame6);
}
function frame6(){
mute = false;
stop();
}
function frame1(){
addEventListener(MouseEvent.MOUSE_UP, brelease, false, 0, true);
mute = true;
}
public function brelease(event:MouseEvent){
Tools.mute(mute);
gotoAndPlay((mute) ? "off" : "on");
}
function frame2(){
mute = true;
stop();
}
}
}//package go_to_hell_andkon_fla
Section 42
//zzz_7 (go_to_hell_andkon_fla.zzz_7)
package go_to_hell_andkon_fla {
import flash.display.*;
public dynamic class zzz_7 extends MovieClip {
public function zzz_7(){
super();
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package go_to_hell_andkon_fla
Section 43
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const STORE_HIDE:String = "StoreHide";
public static const NO_USER:String = "NoUser";
public static const IO_ERROR:String = "IOError";
public static const ITEM_NEW:String = "ItemNew";
public static const ITEM_OWNED:String = "ItemOwned";
public static const STORE_ITEMS:String = "StoreItems";
public static const ERROR:String = "Error";
public static const STORE_SHOW:String = "StoreShow";
public static var _inventory:MochiInventory;
public function MochiCoins(){
super();
}
public static function triggerEvent(eventType:String, args:Object):void{
MochiSocial.triggerEvent(eventType, args);
}
public static function removeEventListener(eventType:String, delegate:Function):void{
MochiSocial.removeEventListener(eventType, delegate);
}
public static function addEventListener(eventType:String, delegate:Function):void{
MochiSocial.addEventListener(eventType, delegate);
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function get inventory():MochiInventory{
return (_inventory);
}
public static function showStore(options:Object=null):void{
MochiServices.bringToTop();
MochiServices.send("coins_showStore", {options:options}, null, null);
}
public static function showItem(options:Object=null):void{
if (((!(options)) || (!((typeof(options.item) == "string"))))){
trace("ERROR: showItem call must pass an Object with an item key");
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showItem", {options:options}, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showVideo(options:Object=null):void{
if (((!(options)) || (!((typeof(options.item) == "string"))))){
trace("ERROR: showVideo call must pass an Object with an item key");
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showVideo", {options:options}, null, null);
}
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (args:Object):void{
_inventory = new MochiInventory();
});
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (args:Object):void{
_inventory = null;
});
}
}//package mochi.as3
Section 44
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Sibling:MochiDigits;
private var Fragment:Number;
private var Encoder:Number;
public function MochiDigits(digit:Number=0, index:uint=0):void{
super();
Encoder = 0;
setValue(digit, index);
}
public function set value(v:Number):void{
setValue(v);
}
public function reencode():void{
var newEncode:uint;
newEncode = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (newEncode ^ Encoder));
Encoder = newEncode;
}
public function toString():String{
var s:String;
s = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
s = (s + Sibling.toString());
};
return (s);
}
public function get value():Number{
return (Number(this.toString()));
}
public function setValue(digit:Number=0, index:uint=0):void{
var s:String;
s = digit.toString();
var _temp1 = index;
index = (index + 1);
Fragment = (s.charCodeAt(_temp1) ^ Encoder);
if (index < s.length){
Sibling = new MochiDigits(digit, index);
} else {
Sibling = null;
};
reencode();
}
public function addValue(inc:Number):void{
value = (value + inc);
}
}
}//package mochi.as3
Section 45
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
super();
eventTable = {};
}
public function triggerEvent(event:String, args:Object):void{
var i:Object;
if (eventTable[event] == undefined){
return;
};
for (i in eventTable[event]) {
var _local6 = eventTable[event];
_local6[i](args);
};
}
public function removeEventListener(event:String, delegate:Function):void{
var s:Object;
if (eventTable[event] == undefined){
eventTable[event] = [];
return;
};
for (s in eventTable[event]) {
if (eventTable[event][s] != delegate){
} else {
eventTable[event].splice(Number(s), 1);
};
};
}
public function addEventListener(event:String, delegate:Function):void{
removeEventListener(event, delegate);
eventTable[event].push(delegate);
}
}
}//package mochi.as3
Section 46
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const FORMAT_LONG:String = "LongForm";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const FORMAT_SHORT:String = "ShortForm";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_CENTER:String = "ALIGN_C";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
private static var gameStart:Number;
private static var levelStart:Number;
public function MochiEvents(){
super();
}
public static function addEventListener(eventType:String, delegate:Function):void{
_dispatcher.addEventListener(eventType, delegate);
}
public static function removeEventListener(eventType:String, delegate:Function):void{
_dispatcher.removeEventListener(eventType, delegate);
}
public static function startSession(achievementID:String):void{
MochiServices.send("events_beginSession", {achievementID:achievementID}, null, null);
}
public static function triggerEvent(eventType:String, args:Object):void{
_dispatcher.triggerEvent(eventType, args);
}
public static function setNotifications(clip:MovieClip, style:Object):void{
var args:Object;
var s:Object;
args = {};
for (s in style) {
args[s] = style[s];
};
args.clip = clip;
MochiServices.send("events_setNotifications", args, null, null);
}
public static function endGame():void{
var delta:Number;
delta = (new Date().time - gameStart);
trigger("end_game", {time:delta});
}
public static function startGame():void{
gameStart = new Date().time;
trigger("start_game");
}
public static function trigger(kind:String, obj:Object=null):void{
if (obj == null){
obj = {};
} else {
if (obj["kind"] != undefined){
trace("WARNING: optional arguments package contains key 'id', it will be overwritten");
obj["kind"] = kind;
};
};
MochiServices.send("events_triggerEvent", {eventObject:obj}, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startLevel():void{
levelStart = new Date().time;
trigger("start_level");
}
public static function endLevel():void{
var delta:Number;
delta = (new Date().time - levelStart);
trigger("end_level", {time:delta});
}
}
}//package mochi.as3
Section 47
//MochiInventory (mochi.as3.MochiInventory)
package mochi.as3 {
import flash.events.*;
import flash.utils.*;
public dynamic class MochiInventory extends Proxy {
private var _timer:Timer;
private var _names:Array;
private var _consumableProperties:Object;
private var _syncID:Number;
private var _storeSync:Object;
private var _outstandingID:Number;
private var _syncPending:Boolean;
public static const READY:String = "InvReady";
public static const ERROR:String = "Error";
public static const IO_ERROR:String = "IoError";
private static const KEY_SALT:String = " syncMaint";
public static const WRITTEN:String = "InvWritten";
public static const NOT_READY:String = "InvNotReady";
public static const VALUE_ERROR:String = "InvValueError";
private static const CONSUMER_KEY:String = "MochiConsumables";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public function MochiInventory():void{
super();
MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, itemOwned);
MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems);
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, loggedIn);
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, loggedOut);
_storeSync = new Object();
_syncPending = false;
_outstandingID = 0;
_syncID = 0;
_timer = new Timer(1000);
_timer.addEventListener(TimerEvent.TIMER, sync);
_timer.start();
if (MochiSocial.loggedIn){
loggedIn();
} else {
loggedOut();
};
}
private function newItems(event:Object):void{
if (!this[(event.id + KEY_SALT)]){
this[(event.id + KEY_SALT)] = 0;
};
if (!this[event.id]){
this[event.id] = 0;
};
this[(event.id + KEY_SALT)] = (this[(event.id + KEY_SALT)] + event.count);
this[event.id] = (this[event.id] + event.count);
if (event.privateProperties.consumable){
if (!this[event.privateProperties.tag]){
this[event.privateProperties.tag] = 0;
};
this[event.privateProperties.tag] = (this[event.privateProperties.tag] + (event.privateProperties.inc * event.count));
};
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(name){
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (-1);
};
if (_consumableProperties[name]){
return (MochiDigits(_consumableProperties[name]).value);
};
return (undefined);
}
public function release():void{
MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems);
MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn);
MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(name):Boolean{
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (false);
};
if (_consumableProperties[name] == undefined){
return (false);
};
return (true);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(index:int):int{
return (((index)>=_names.length) ? 0 : (index + 1));
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(name, value):void{
var d:MochiDigits;
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return;
};
if (!(value is Number)){
triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:value});
return;
};
if (_consumableProperties[name]){
d = MochiDigits(_consumableProperties[name]);
if (d.value == value){
return;
};
d.value = value;
} else {
_names.push(name);
_consumableProperties[name] = new MochiDigits(value);
};
_syncID++;
}
private function sync(e:Event=null):void{
var output:Object;
var key:String;
if (((_syncPending) || ((_syncID == _outstandingID)))){
return;
};
_outstandingID = _syncID;
output = {};
for (key in _consumableProperties) {
output[key] = MochiDigits(_consumableProperties[key]).value;
};
MochiUserData.put(CONSUMER_KEY, output, putConsumableBag);
_syncPending = true;
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(index:int):String{
return (_names[(index - 1)]);
}
private function loggedIn(args:Object=null):void{
MochiUserData.get(CONSUMER_KEY, getConsumableBag);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(name):Boolean{
if (!_consumableProperties[name]){
return (false);
};
_names.splice(_names.indexOf(name), 1);
delete _consumableProperties[name];
return (true);
}
private function itemOwned(event:Object):void{
_storeSync[event.id] = {properties:event.properties, count:event.count};
}
private function putConsumableBag(userData:MochiUserData):void{
_syncPending = false;
if (userData.error){
triggerEvent(ERROR, {type:IO_ERROR, error:userData.error});
_outstandingID = -1;
};
triggerEvent(WRITTEN, {});
}
private function getConsumableBag(userData:MochiUserData):void{
var key:String;
var unsynced:Number;
if (userData.error){
triggerEvent(ERROR, {type:IO_ERROR, error:userData.error});
return;
};
_consumableProperties = {};
_names = new Array();
if (userData.data){
for (key in userData.data) {
_names.push(key);
_consumableProperties[key] = new MochiDigits(userData.data[key]);
};
};
for (key in _storeSync) {
unsynced = _storeSync[key].count;
if (_consumableProperties[(key + KEY_SALT)]){
unsynced = (unsynced - _consumableProperties[key]);
};
if (unsynced == 0){
} else {
newItems({id:key, count:unsynced, properties:_storeSync[key].properties});
};
};
triggerEvent(READY, {});
}
private function loggedOut(args:Object=null):void{
_consumableProperties = null;
}
public static function triggerEvent(eventType:String, args:Object):void{
_dispatcher.triggerEvent(eventType, args);
}
public static function removeEventListener(eventType:String, delegate:Function):void{
_dispatcher.removeEventListener(eventType, delegate);
}
public static function addEventListener(eventType:String, delegate:Function):void{
_dispatcher.addEventListener(eventType, delegate);
}
}
}//package mochi.as3
Section 48
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
import flash.text.*;
import flash.display.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public function MochiScores(){
super();
}
public static function showLeaderboard(options:Object=null):void{
var n:Number;
var options = options;
if (options != null){
delete options.clip;
MochiServices.setContainer();
MochiServices.bringToTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
} else {
if ((options.score is MochiDigits)){
options.score = options.score.value;
};
};
n = Number(options.score);
if (isNaN(n)){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(n) != n){
trace((("WARNING: Submitted score '" + options.score) + "' will be truncated"));
};
options.score = n;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onClose.");
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (MochiScores.boardID != null){
options.boardID = MochiScores.boardID;
};
};
MochiServices.warnID(options.boardID, true);
trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal");
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(callbackObj:Object, callbackMethod:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, callbackObj, callbackMethod);
}
public static function requestList(callbackObj:Object, callbackMethod:Object=null):void{
MochiServices.send("scores_requestList", null, callbackObj, callbackMethod);
}
public static function scoresArrayToObjects(scores:Object):Object{
var so:Object;
var i:Number;
var j:Number;
var o:Object;
var row_obj:Object;
var item:String;
var param:String;
so = {};
for (item in scores) {
if (typeof(scores[item]) == "object"){
if (((!((scores[item].cols == null))) && (!((scores[item].rows == null))))){
so[item] = [];
o = scores[item];
j = 0;
while (j < o.rows.length) {
row_obj = {};
i = 0;
while (i < o.cols.length) {
row_obj[o.cols[i]] = o.rows[j][i];
i++;
};
so[item].push(row_obj);
j++;
};
} else {
so[item] = {};
for (param in scores[item]) {
so[item][param] = scores[item][param];
};
};
} else {
so[item] = scores[item];
};
};
return (so);
}
public static function submit(score:Number, name:String, callbackObj:Object=null, callbackMethod:Object=null):void{
score = Number(score);
if (isNaN(score)){
trace((("ERROR: Submitted score '" + String(score)) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((score == Number.NEGATIVE_INFINITY)) || ((score == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + String(score)) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(score) != score){
trace((("WARNING: Submitted score '" + String(score)) + "' will be truncated"));
};
score = Number(score);
};
};
MochiServices.send("scores_submit", {score:score, name:name}, callbackObj, callbackMethod);
}
public static function onClose(args:Object=null):void{
if (((((args) && ((args.error == true)))) && (onErrorHandler))){
if (args.errorCode == null){
args.errorCode = "IOError";
};
onErrorHandler(args.errorCode);
MochiServices.doClose();
return;
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(boardID:String):void{
MochiServices.warnID(boardID, true);
MochiScores.boardID = boardID;
MochiServices.send("scores_setBoardID", {boardID:boardID});
}
}
}//package mochi.as3
Section 49
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class MochiServices {
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _swfVersion:String;
private static var _preserved:Object;
public static var netupAttempted:Boolean = false;
private static var _sendChannel:LocalConnection;
public static var servicesSync:MochiSync = new MochiSync();
private static var _clip:MovieClip;
private static var _id:String;
private static var _services:String = "services.swf";
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
public static var widget:Boolean = false;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _loader:Loader;
private static var _connecting:Boolean = false;
private static var _mochiLocalConnection:MovieClip;
private static var _listenChannelName:String = "__ms_";
public static var onError:Object;
public static var netup:Boolean = true;
private static var _mochiLC:String = "MochiLC.swf";
public function MochiServices(){
super();
}
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function get connected():Boolean{
return (_connected);
}
private static function onReceive(pkg:Object):void{
var cb:String;
var cblst:Object;
var method:*;
var methodName:String;
var obj:Object;
var pkg = pkg;
cb = pkg.callbackID;
cblst = _clip._callbacks[cb];
if (!cblst){
return;
};
method = cblst.callbackMethod;
methodName = "";
obj = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
} else {
trace((("Error: Method " + method) + " does not exist."));
};
};
if (method != undefined){
method.apply(obj, pkg.args);
//unresolved jump
var _slot1 = error;
trace(((("Error invoking callback method '" + methodName) + "': ") + _slot1.toString()));
} else {
if (obj != null){
obj(pkg.args);
//unresolved jump
var _slot1 = error;
trace(("Error invoking method on object: " + _slot1.toString()));
};
};
delete _clip._callbacks[cb];
}
public static function get childClip():Object{
return (_clip);
}
public static function send(methodName:String, args:Object=null, callbackObject:Object=null, callbackMethod:Object=null):void{
if (_connected){
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:methodName, args:args, callbackID:_clip._nextcallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + methodName));
handleError(args, callbackObject, callbackMethod);
flush(true);
return;
};
_clip._queue.push({methodName:methodName, args:args, callbackID:_clip._nextcallbackID});
};
if (_clip != null){
if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){
_clip._callbacks[_clip._nextcallbackID] = {callbackObject:callbackObject, callbackMethod:callbackMethod};
_clip._nextcallbackID++;
};
};
}
private static function init(id:String, clip:Object):void{
_id = id;
if (clip != null){
_container = clip;
loadCommunicator(id, _container);
};
}
private static function clickMovie(url:String, cb:Function):MovieClip{
var avm1_bytecode:Array;
var b:int;
var header:Array;
var footer:Array;
var mc:MovieClip;
var lc:LocalConnection;
var lc_name:String;
var ba:ByteArray;
var cpool:ByteArray;
var actionLength:uint;
var fileLength:uint;
var loader:Loader;
avm1_bytecode = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23];
header = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
footer = [0, 64, 0, 0, 0];
mc = new MovieClip();
lc = new LocalConnection();
lc_name = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time));
lc = new LocalConnection();
mc.lc = lc;
mc.click = cb;
lc.client = mc;
lc.connect(lc_name);
ba = new ByteArray();
cpool = new ByteArray();
cpool.endian = Endian.LITTLE_ENDIAN;
cpool.writeShort(1);
cpool.writeUTFBytes(((url + " ") + lc_name));
cpool.writeByte(0);
actionLength = ((avm1_bytecode.length + cpool.length) + 4);
fileLength = (actionLength + 35);
ba.endian = Endian.LITTLE_ENDIAN;
ba.writeUTFBytes("FWS");
ba.writeByte(8);
ba.writeUnsignedInt(fileLength);
for each (b in header) {
ba.writeByte(b);
};
ba.writeUnsignedInt(actionLength);
ba.writeByte(136);
ba.writeShort(cpool.length);
ba.writeBytes(cpool);
for each (b in avm1_bytecode) {
ba.writeByte(b);
};
for each (b in footer) {
ba.writeByte(b);
};
loader = new Loader();
loader.loadBytes(ba);
mc.addChild(loader);
return (mc);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function addLinkEvent(url:String, burl:String, btn:DisplayObjectContainer, onClick:Function=null):void{
var vars:Object;
var avm1Click:DisplayObject;
var s:String;
var i:Number;
var x:String;
var req:URLRequest;
var loader:Loader;
var setURL:Function;
var err:Function;
var complete:Function;
var url = url;
var burl = burl;
var btn = btn;
var onClick = onClick;
vars = new Object();
vars["mav"] = getVersion();
vars["swfv"] = "9";
vars["swfurl"] = btn.loaderInfo.loaderURL;
vars["fv"] = Capabilities.version;
vars["os"] = Capabilities.os;
vars["lang"] = Capabilities.language;
vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY);
s = "?";
i = 0;
for (x in vars) {
if (i != 0){
s = (s + "&");
};
i = (i + 1);
s = (((s + x) + "=") + escape(vars[x]));
};
req = new URLRequest("http://x.mochiads.com/linkping.swf");
loader = new Loader();
setURL = function (url:String):void{
var rect:Rectangle;
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(url, onClick);
rect = btn.getBounds(btn);
btn.addChild(avm1Click);
avm1Click.x = rect.x;
avm1Click.y = rect.y;
avm1Click.scaleX = (0.01 * rect.width);
avm1Click.scaleY = (0.01 * rect.height);
};
err = function (ev:Object):void{
netup = false;
ev.target.removeEventListener(ev.type, arguments.callee);
setURL(burl);
};
complete = function (ev:Object):void{
ev.target.removeEventListener(ev.type, arguments.callee);
};
if (netup){
setURL((url + s));
} else {
setURL(burl);
};
if (!((netupAttempted) || (_connected))){
netupAttempted = true;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.load(req);
};
}
public static function warnID(bid:String, leaderboard:Boolean):void{
var i:Number;
bid = bid.toLowerCase();
if (bid.length != 16){
trace((("WARNING: " + (leaderboard) ? "board" : "game") + " ID is not the appropriate length"));
return;
} else {
if (bid == "1e113c7239048b3f"){
if (leaderboard){
trace("WARNING: Using testing board ID");
} else {
trace("WARNING: Using testing board ID as game ID");
};
return;
} else {
if (bid == "84993a1de4031cd8"){
if (leaderboard){
trace("WARNING: Using testing game ID as board ID");
} else {
trace("WARNING: Using testing game ID");
};
return;
};
};
};
i = 0;
while (i < bid.length) {
switch (bid.charAt(i)){
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "a":
case "b":
case "c":
case "d":
case "e":
case "f":
break;
default:
trace(("WARNING: Board ID contains illegal characters: " + bid));
return;
};
i++;
};
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
_mochiLocalConnection.close();
//unresolved jump
var _slot1 = error;
};
if (_timer != null){
_timer.stop();
//unresolved jump
var _slot1 = error;
};
}
public static function allowDomains(server:String):String{
var hostname:String;
if (Security.sandboxType != "application"){
Security.allowDomain("*");
Security.allowInsecureDomain("*");
};
if (server.indexOf("http://") != -1){
hostname = server.split("/")[2].split(":")[0];
if (Security.sandboxType != "application"){
Security.allowDomain(hostname);
Security.allowInsecureDomain(hostname);
};
};
return (hostname);
}
public static function getVersion():String{
return ("3.7 as3");
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
}
private static function flush(error:Boolean):void{
var request:Object;
var callback:Object;
if (((_clip) && (_clip._queue))){
while (_clip._queue.length > 0) {
request = _clip._queue.shift();
callback = null;
if (request != null){
if (request.callbackID != null){
callback = _clip._callbacks[request.callbackID];
};
delete _clip._callbacks[request.callbackID];
if (((error) && (!((callback == null))))){
handleError(request.args, callback.callbackObject, callback.callbackMethod);
};
};
};
};
}
public static function get id():String{
return (_id);
}
private static function onEvent(pkg:Object):void{
var target:String;
var event:String;
target = pkg.target;
event = pkg.event;
switch (target){
case "events":
MochiEvents.triggerEvent(pkg.event, pkg.args);
break;
case "coins":
MochiCoins.triggerEvent(pkg.event, pkg.args);
break;
case "sync":
servicesSync.triggerEvent(pkg.event, pkg.args);
break;
};
}
private static function urlOptions(clip:Object):Object{
var opts:Object;
var options:String;
var pairs:Array;
var i:Number;
var kv:Array;
opts = {};
if (clip.stage){
options = clip.stage.loaderInfo.parameters.mochiad_options;
} else {
options = clip.loaderInfo.parameters.mochiad_options;
};
if (options){
pairs = options.split("&");
i = 0;
while (i < pairs.length) {
kv = pairs[i].split("=");
opts[unescape(kv[0])] = unescape(kv[1]);
i++;
};
};
return (opts);
}
public static function setContainer(container:Object=null, doAdd:Boolean=true):void{
if (container != null){
if ((container is Sprite)){
_container = container;
};
};
if (doAdd){
if ((_container is Sprite)){
Sprite(_container).addChild(_clip);
};
};
}
private static function handleError(args:Object, callbackObject:Object, callbackMethod:Object):void{
var args = args;
var callbackObject = callbackObject;
var callbackMethod = callbackMethod;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
if (((!((args.options == null))) && (!((args.options.onError == null))))){
args.options.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
var _local5 = callbackObject;
_local5[callbackMethod](args);
//unresolved jump
var _slot1 = error;
} else {
if (callbackMethod != null){
callbackMethod.apply(args);
//unresolved jump
var _slot1 = error;
};
};
};
}
private static function loadError(ev:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
}
private static function initComChannels():void{
if (!_connected){
trace("[SERVICES_API] connected!");
_connecting = false;
_connected = true;
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, version:getVersion(), parentURL:_container.loaderInfo.loaderURL});
_clip.onReceive = onReceive;
_clip.onEvent = onEvent;
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
while (_clip._queue.length > 0) {
_mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift());
};
};
}
private static function loadLCBridge(clip:Object):void{
var loader:Loader;
var mochiLCURL:String;
var req:URLRequest;
var complete:Function;
var clip = clip;
loader = new Loader();
mochiLCURL = (_servURL + _mochiLC);
req = new URLRequest(mochiLCURL);
complete = function (ev:Object):void{
_mochiLocalConnection = MovieClip(loader.content);
listen();
};
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
loader.load(req);
clip.addChild(loader);
}
private static function listen():void{
_mochiLocalConnection.connect(_listenChannelName);
_clip.handshake = function (args:Object):void{
MochiServices.comChannelName = args.newChannel;
};
trace("Waiting for MochiAds services to connect...");
}
public static function get clip():Object{
return (_container);
}
public static function set comChannelName(val:String):void{
if (val != null){
if (val.length > 3){
_sendChannelName = (val + "_fromgame");
initComChannels();
};
};
}
private static function loadCommunicator(id:String, clip:Object):MovieClip{
var clipname:String;
var servicesURL:String;
var req:URLRequest;
var vars:URLVariables;
clipname = ("_mochiservices_com_" + id);
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
if (urlOptions(clip).servURL){
_servURL = urlOptions(clip).servURL;
};
servicesURL = (_servURL + _services);
if (urlOptions(clip).servicesURL){
servicesURL = urlOptions(clip).servicesURL;
};
_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
MochiServices.allowDomains(servicesURL);
_clip = createEmptyMovieClip(clip, clipname, 10336, false);
loadLCBridge(_clip);
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
req = new URLRequest(servicesURL);
vars = new URLVariables();
vars.listenLC = _listenChannelName;
vars.mochiad_options = clip.loaderInfo.parameters.mochiad_options;
vars.api_version = getVersion();
if (widget){
vars.widget = true;
};
req.data = vars;
_loader.load(req);
_clip.addChild(_loader);
_clip._mochiservices_com = _loader;
_sendChannel = new LocalConnection();
_clip._queue = [];
_clip._nextcallbackID = 0;
_clip._callbacks = {};
_timer = new Timer(10000, 1);
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
return (_clip);
}
public static function connect(id:String, clip:Object, onError:Object=null):void{
var id = id;
var clip = clip;
var onError = onError;
warnID(id, false);
if ((clip is DisplayObject)){
if (clip.stage == null){
trace("MochiServices connect requires the containing clip be attached to the stage");
};
if (((!(_connected)) && ((_clip == null)))){
trace("MochiServices Connecting...");
_connecting = true;
init(id, clip);
};
} else {
trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage.");
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (errorCode:String):void{
trace(errorCode);
};
};
};
}
public static function createEmptyMovieClip(parent:Object, name:String, depth:Number, doAdd:Boolean=true):MovieClip{
var mc:MovieClip;
var parent = parent;
var name = name;
var depth = depth;
var doAdd = doAdd;
mc = new MovieClip();
if (doAdd){
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
};
parent[name] = mc;
//unresolved jump
var _slot1 = e;
throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
mc["_name"] = name;
return (mc);
}
public static function bringToTop(e:Event=null):void{
var e = e;
if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
//unresolved jump
var _slot1 = errorObject;
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
}
public static function connectWait(e:TimerEvent):void{
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load. (timeout)");
MochiServices.disconnect();
MochiServices.onError("IOError");
};
}
}
}//package mochi.as3
Section 50
//MochiSocial (mochi.as3.MochiSocial)
package mochi.as3 {
public class MochiSocial {
public static const LOGGED_IN:String = "LoggedIn";
public static const PROFILE_HIDE:String = "ProfileHide";
public static const NO_USER:String = "NoUser";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
public static const IO_ERROR:String = "IOError";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const USER_INFO:String = "UserInfo";
public static const ERROR:String = "Error";
public static const LOGIN_SHOW:String = "LoginShow";
public static const LOGGED_OUT:String = "LoggedOut";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const LOGIN_SHOWN:String = "LoginShown";
public static const LOGIN_HIDE:String = "LoginHide";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static var _user_info:Object = null;
public function MochiSocial(){
super();
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function saveUserProperties(properties:Object):void{
MochiServices.send("coins_saveUserProperties", properties);
}
public static function get loggedIn():Boolean{
return (!((_user_info == null)));
}
public static function triggerEvent(eventType:String, args:Object):void{
_dispatcher.triggerEvent(eventType, args);
}
public static function addEventListener(eventType:String, delegate:Function):void{
_dispatcher.addEventListener(eventType, delegate);
}
public static function getUserInfo():void{
MochiServices.send("coins_getUserInfo");
}
public static function showLoginWidget(options:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showLoginWidget", {options:options});
}
public static function removeEventListener(eventType:String, delegate:Function):void{
_dispatcher.removeEventListener(eventType, delegate);
}
public static function requestLogin():void{
MochiServices.send("coins_requestLogin");
}
public static function getAPIURL():String{
if (!_user_info){
return (null);
};
return (_user_info.api_url);
}
public static function hideLoginWidget():void{
MochiServices.send("coins_hideLoginWidget");
}
public static function getAPIToken():String{
if (!_user_info){
return (null);
};
return (_user_info.api_token);
}
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (args:Object):void{
_user_info = args;
});
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (args:Object):void{
_user_info = null;
});
}
}//package mochi.as3
Section 51
//MochiSync (mochi.as3.MochiSync)
package mochi.as3 {
import flash.utils.*;
public dynamic class MochiSync extends Proxy {
private var _syncContainer:Object;
public static var SYNC_PROPERTY:String = "UpdateProperty";
public static var SYNC_REQUEST:String = "SyncRequest";
public function MochiSync():void{
super();
_syncContainer = {};
}
public function triggerEvent(eventType:String, args:Object):void{
switch (eventType){
case SYNC_REQUEST:
MochiServices.send("sync_syncronize", _syncContainer);
break;
case SYNC_PROPERTY:
_syncContainer[args.name] = args.value;
break;
};
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(name){
return (_syncContainer[name]);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(name, value):void{
var n:String;
if (_syncContainer[name] == value){
return;
};
n = name.toString();
_syncContainer[n] = value;
MochiServices.send("sync_propUpdate", {name:n, value:value});
}
}
}//package mochi.as3
Section 52
//MochiUserData (mochi.as3.MochiUserData)
package mochi.as3 {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
public class MochiUserData extends EventDispatcher {
public var callback:Function;// = null
public var error:Event;// = null
public var key:String;// = null
public var operation:String;// = null
public var data;// = null
public var _loader:URLLoader;
public function MochiUserData(key:String="", callback:Function=null){
key = null;
data = null;
error = null;
operation = null;
callback = null;
super();
this.key = key;
this.callback = callback;
}
public function securityErrorHandler(event:SecurityErrorEvent):void{
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + event.toString())));
}
public function putEvent(obj):void{
request("put", serialize(obj));
}
public function request(_operation:String, _data:ByteArray):void{
var api_url:String;
var api_token:String;
var args:URLVariables;
var req:URLRequest;
var _operation = _operation;
var _data = _data;
operation = _operation;
api_url = MochiSocial.getAPIURL();
api_token = MochiSocial.getAPIToken();
if ((((api_url == null)) || ((api_token == null)))){
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in"));
return;
};
_loader = new URLLoader();
args = new URLVariables();
args.op = _operation;
args.key = key;
req = new URLRequest((((MochiSocial.getAPIURL() + "/") + "MochiUserData?") + args.toString()));
req.method = URLRequestMethod.POST;
req.contentType = "application/x-mochi-userdata";
req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)];
req.data = _data;
_loader.dataFormat = URLLoaderDataFormat.BINARY;
_loader.addEventListener(Event.COMPLETE, completeHandler);
_loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
_loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
_loader.load(req);
//unresolved jump
var _slot1 = e;
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _slot1.toString())));
}
public function performCallback():void{
callback(this);
//unresolved jump
var _slot1 = e;
trace(("[MochiUserData] exception during callback: " + _slot1));
}
public function serialize(obj):ByteArray{
var arr:ByteArray;
arr = new ByteArray();
arr.objectEncoding = ObjectEncoding.AMF3;
arr.writeObject(obj);
arr.compress();
return (arr);
}
public function errorHandler(event:IOErrorEvent):void{
data = null;
error = event;
if (callback != null){
performCallback();
} else {
dispatchEvent(event);
};
close();
}
public function completeHandler(event:Event):void{
var event = event;
if (_loader.data.length){
data = deserialize(_loader.data);
} else {
data = null;
};
//unresolved jump
var _slot1 = e;
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + _slot1.toString())));
return;
if (callback != null){
performCallback();
} else {
dispatchEvent(event);
};
close();
}
public function getEvent():void{
request("get", serialize(null));
}
override public function toString():String{
return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]"));
}
public function close():void{
if (_loader){
_loader.removeEventListener(Event.COMPLETE, completeHandler);
_loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
_loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
_loader.close();
_loader = null;
};
error = null;
callback = null;
}
public function deserialize(arr:ByteArray){
arr.objectEncoding = ObjectEncoding.AMF3;
arr.uncompress();
return (arr.readObject());
}
public static function get(key:String, callback:Function):void{
var userData:MochiUserData;
userData = new MochiUserData(key, callback);
userData.getEvent();
}
public static function put(key:String, obj, callback:Function):void{
var userData:MochiUserData;
userData = new MochiUserData(key, callback);
userData.putEvent(obj);
}
}
}//package mochi.as3
Section 53
//Submitter (Spill.Components.Submitter)
package Spill.Components {
import flash.display.*;
public dynamic class Submitter extends MovieClip {
public var OO00OO1l1l:OOO000lll;
public function Submitter(){
super();
}
}
}//package Spill.Components
Section 54
//O1OOO0O00 (Util.O1OOO0O00)
package Util {
import flash.net.*;
import flash.external.*;
public class O1OOO0O00 {
private static const _O1lO0Oll1:Array = ["www.a10.com.gp.dev.spilgames.eu", "stg.pl.a10.com", "gamedev.dev.spilgames.com", "www.agame.com", "www.girlsgogames.com", "www.games.co.uk", "www.mygames.co.uk", "www.girlsgogames.co.uk", "www.spel.nl", "www.spelletjes.nl", "www.girlsgogames.nl", "www.jetztspielen.de", "www.spielen.com", "www.girlsgogames.de", "www.jeux.fr", "www.jeu.fr", "www.girlsgogames.fr", "www.juegos.com", "www.zapjuegos.com", "www.juegosdechicas.com", "www.gioco.it", "www.giocaregratis.it", "www.girlsgogames.it", "www.gry.pl", "www.minigry.pl", "www.girlsgogames.pl", "www.spela.se", "www.spel.eu", "www.girlsgogames.se", "www.ojogos.pt", "www.ourgames.ru", "www.flashgames.ru", "www.girlsgogames.ru", "www.oyunlar123.com", "www.asoyun.com", "www.girlsgogamestr.com", "www.gamesgames.com", "www.agame.com", "www.girlsgogames.com", "www.juegos.com", "www.zapjuegos.com", "www.juegosdechicas.com", "www.ojogos.com.br", "www.clickjogos.com", "www.girlsgogames.com.br", "www.game.com.cn", "www.xiaoyouxi.com", "www.egames.jp", "www.game.co.in", "www.game.co.in", "www.girlsgogames.in", "www.games.co.id", "www.laro.com.ph", "www.game.com.my", "www.onrpg.com", "www.zlonggames.com", "www.a10.com", "localhost"];
private static var _OOl10ll1l:URLRequest;
private static var _O0Oll0l00;
public function O1OOO0O00():void{
super();
try {
_O0Oll0l00 = ExternalInterface.call("window.location.href.toString");
} catch(e) {
_O0Oll0l00 = "error";
};
if ((((_O0Oll0l00 == null)) || ((_O0Oll0l00 == "")))){
_O0Oll0l00 = "error";
};
if (String(_O0Oll0l00).indexOf(".swf") != -1){
_O0Oll0l00 = "error";
};
}
public function O0111l110():Boolean{
if (((!((_O001llOll(_O11ll1l00(_O0Oll0l00)) == -1))) && (!((_O0Oll0l00 == "error"))))){
return (true);
};
return (false);
}
private static function _O11ll1l00(_arg1:String):String{
var _local2:String = new String();
var _local3:uint = 7;
while (_local3 < _arg1.length) {
if (_arg1.charAt(_local3) == "/"){
break;
};
_local2 = (_local2 + _arg1.charAt(_local3));
_local3++;
};
return (_local2);
}
private static function _O001llOll(_arg1:String):Number{
var _local2:uint;
if (((_O1lO0Oll1) && (_arg1))){
_local2 = 0;
while (_local2 < _O1lO0Oll1.length) {
if (_arg1 == _O1lO0Oll1[_local2]){
return (_local2);
};
_local2++;
};
return (-1);
} else {
trace("cannot find site name");
};
return (-1);
}
}
}//package Util
Section 55
//bar_0 (bar_0)
package {
import flash.display.*;
public dynamic class bar_0 extends BitmapData {
public function bar_0(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 56
//bar_1 (bar_1)
package {
import flash.display.*;
public dynamic class bar_1 extends BitmapData {
public function bar_1(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 57
//bar_2 (bar_2)
package {
import flash.display.*;
public dynamic class bar_2 extends BitmapData {
public function bar_2(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 58
//bat (bat)
package {
import flash.display.*;
public dynamic class bat extends BitmapData {
public function bat(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 59
//bat_died (bat_died)
package {
import flash.display.*;
public dynamic class bat_died extends BitmapData {
public function bat_died(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 60
//blip (blip)
package {
import flash.media.*;
public dynamic class blip extends Sound {
public function blip(){
super();
}
}
}//package
Section 61
//boulder (boulder)
package {
import flash.display.*;
public dynamic class boulder extends BitmapData {
public function boulder(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 62
//boulder_blood (boulder_blood)
package {
import flash.display.*;
public dynamic class boulder_blood extends BitmapData {
public function boulder_blood(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 63
//boulder_slime (boulder_slime)
package {
import flash.display.*;
public dynamic class boulder_slime extends BitmapData {
public function boulder_slime(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 64
//cemetery (cemetery)
package {
import flash.display.*;
public dynamic class cemetery extends BitmapData {
public function cemetery(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 65
//coin (coin)
package {
import flash.display.*;
public dynamic class coin extends BitmapData {
public function coin(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 66
//coin_small (coin_small)
package {
import flash.display.*;
public dynamic class coin_small extends BitmapData {
public function coin_small(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 67
//congratulations (congratulations)
package {
import flash.display.*;
public dynamic class congratulations extends BitmapData {
public function congratulations(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 68
//crush_sound (crush_sound)
package {
import flash.media.*;
public dynamic class crush_sound extends Sound {
public function crush_sound(){
super();
}
}
}//package
Section 69
//devil (devil)
package {
import flash.display.*;
public dynamic class devil extends BitmapData {
public function devil(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 70
//dust_0 (dust_0)
package {
import flash.display.*;
public dynamic class dust_0 extends BitmapData {
public function dust_0(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 71
//dust_1 (dust_1)
package {
import flash.display.*;
public dynamic class dust_1 extends BitmapData {
public function dust_1(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 72
//dust_2 (dust_2)
package {
import flash.display.*;
public dynamic class dust_2 extends BitmapData {
public function dust_2(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 73
//dust_3 (dust_3)
package {
import flash.display.*;
public dynamic class dust_3 extends BitmapData {
public function dust_3(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 74
//dust_4 (dust_4)
package {
import flash.display.*;
public dynamic class dust_4 extends BitmapData {
public function dust_4(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 75
//eternal (eternal)
package {
import flash.media.*;
public dynamic class eternal extends Sound {
public function eternal(){
super();
}
}
}//package
Section 76
//first_aid (first_aid)
package {
import flash.display.*;
public dynamic class first_aid extends BitmapData {
public function first_aid(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 77
//flame (flame)
package {
import flash.display.*;
public dynamic class flame extends BitmapData {
public function flame(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 78
//flame_snuff (flame_snuff)
package {
import flash.display.*;
public dynamic class flame_snuff extends BitmapData {
public function flame_snuff(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 79
//frame_top (frame_top)
package {
import flash.display.*;
public dynamic class frame_top extends BitmapData {
public function frame_top(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 80
//gal_angel (gal_angel)
package {
import flash.display.*;
public dynamic class gal_angel extends BitmapData {
public function gal_angel(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 81
//gal_float (gal_float)
package {
import flash.display.*;
public dynamic class gal_float extends BitmapData {
public function gal_float(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 82
//gal_idle (gal_idle)
package {
import flash.display.*;
public dynamic class gal_idle extends BitmapData {
public function gal_idle(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 83
//gal_jump (gal_jump)
package {
import flash.display.*;
public dynamic class gal_jump extends BitmapData {
public function gal_jump(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 84
//gal_jump_diagonal (gal_jump_diagonal)
package {
import flash.display.*;
public dynamic class gal_jump_diagonal extends BitmapData {
public function gal_jump_diagonal(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 85
//gal_pick_front (gal_pick_front)
package {
import flash.display.*;
public dynamic class gal_pick_front extends BitmapData {
public function gal_pick_front(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 86
//gal_pick_side (gal_pick_side)
package {
import flash.display.*;
public dynamic class gal_pick_side extends BitmapData {
public function gal_pick_side(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 87
//gal_push (gal_push)
package {
import flash.display.*;
public dynamic class gal_push extends BitmapData {
public function gal_push(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 88
//gal_resurrect (gal_resurrect)
package {
import flash.display.*;
public dynamic class gal_resurrect extends BitmapData {
public function gal_resurrect(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 89
//gal_swimming (gal_swimming)
package {
import flash.display.*;
public dynamic class gal_swimming extends BitmapData {
public function gal_swimming(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 90
//gal_walking (gal_walking)
package {
import flash.display.*;
public dynamic class gal_walking extends BitmapData {
public function gal_walking(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 91
//game_over (game_over)
package {
import flash.display.*;
public dynamic class game_over extends BitmapData {
public function game_over(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 92
//heart (heart)
package {
import flash.display.*;
public dynamic class heart extends BitmapData {
public function heart(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 93
//heart_small (heart_small)
package {
import flash.display.*;
public dynamic class heart_small extends BitmapData {
public function heart_small(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 94
//hell_0 (hell_0)
package {
import flash.display.*;
public dynamic class hell_0 extends BitmapData {
public function hell_0(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 95
//hell_1 (hell_1)
package {
import flash.display.*;
public dynamic class hell_1 extends BitmapData {
public function hell_1(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 96
//hell_2 (hell_2)
package {
import flash.display.*;
public dynamic class hell_2 extends BitmapData {
public function hell_2(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 97
//hell_3 (hell_3)
package {
import flash.display.*;
public dynamic class hell_3 extends BitmapData {
public function hell_3(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 98
//hell_4 (hell_4)
package {
import flash.display.*;
public dynamic class hell_4 extends BitmapData {
public function hell_4(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 99
//hell_inside_0 (hell_inside_0)
package {
import flash.display.*;
public dynamic class hell_inside_0 extends BitmapData {
public function hell_inside_0(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 100
//hell_inside_1 (hell_inside_1)
package {
import flash.display.*;
public dynamic class hell_inside_1 extends BitmapData {
public function hell_inside_1(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 101
//hell_inside_2 (hell_inside_2)
package {
import flash.display.*;
public dynamic class hell_inside_2 extends BitmapData {
public function hell_inside_2(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 102
//hell_inside_3 (hell_inside_3)
package {
import flash.display.*;
public dynamic class hell_inside_3 extends BitmapData {
public function hell_inside_3(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 103
//hint_1 (hint_1)
package {
import flash.display.*;
public dynamic class hint_1 extends BitmapData {
public function hint_1(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 104
//hint_2 (hint_2)
package {
import flash.display.*;
public dynamic class hint_2 extends BitmapData {
public function hint_2(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 105
//hint_3 (hint_3)
package {
import flash.display.*;
public dynamic class hint_3 extends BitmapData {
public function hint_3(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 106
//hint_4 (hint_4)
package {
import flash.display.*;
public dynamic class hint_4 extends BitmapData {
public function hint_4(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 107
//hint_5 (hint_5)
package {
import flash.display.*;
public dynamic class hint_5 extends BitmapData {
public function hint_5(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 108
//hit_sound (hit_sound)
package {
import flash.media.*;
public dynamic class hit_sound extends Sound {
public function hit_sound(){
super();
}
}
}//package
Section 109
//info_air (info_air)
package {
import flash.display.*;
public dynamic class info_air extends BitmapData {
public function info_air(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 110
//info_coins (info_coins)
package {
import flash.display.*;
public dynamic class info_coins extends BitmapData {
public function info_coins(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 111
//info_hungry (info_hungry)
package {
import flash.display.*;
public dynamic class info_hungry extends BitmapData {
public function info_hungry(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 112
//info_hurt (info_hurt)
package {
import flash.display.*;
public dynamic class info_hurt extends BitmapData {
public function info_hurt(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 113
//info_more_coins (info_more_coins)
package {
import flash.display.*;
public dynamic class info_more_coins extends BitmapData {
public function info_more_coins(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 114
//language (language)
package {
import flash.net.*;
public class language {
public static var localConnection = new LocalConnection();
public static var _languageNum:uint = 0;
public static var _languageBox:Array = new Array();
public static var SpillGroupUrl:Array = new Array();
public static var gamename = "go_to_hell";
public function language(){
super();
}
public static function get url2():String{
var i:int;
i = 0;
while (i < SpillGroupUrl.length) {
if (localConnection.domain == SpillGroupUrl[i]){
return (_languageBox[_languageNum].url2);
};
i++;
};
return (_languageBox[_languageNum].url2);
}
public static function get language_nr():String{
return (_languageBox[_languageNum].language_nr);
}
public static function get portal():String{
return (_languageBox[_languageNum].portal);
}
public static function set Language(languageVersion:Object):void{
var returnDomain:Function;
var hostingdomain:String;
var myList:String;
var myArray:Array;
var language1:*;
var domainextention:int;
var domainname:int;
var languageVersion = languageVersion;
returnDomain = function (w:String):String{
var domain:String;
var j:uint;
domain = new String();
j = 7;
while (j < w.length) {
if (w.charAt(j) == "/"){
break;
};
domain = (domain + w.charAt(j));
j++;
};
return (domain);
};
hostingdomain = "";
myList = localConnection.domain;
myArray = myList.split(".");
if (myArray.length <= 3){
domainextention = (myArray.length - 1);
domainname = (myArray.length - 2);
hostingdomain = ((myArray[domainname] + ".") + myArray[domainextention]);
} else {
hostingdomain = localConnection.domain;
};
if (hostingdomain == "undefined.localhost"){
hostingdomain = "offline_play";
};
language1 = new languageItem();
language1.url1 = ((("http://www.a10.com/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain);
language1.url2 = ((("http://www.a10.com/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain);
language1.language_nr = 1;
language1.branding_nr = 45;
language1.portal = "teen";
_languageBox.push(language1);
SpillGroupUrl.push("localhost");
SpillGroupUrl.push("www8.agame.com");
SpillGroupUrl.push("gamedev.dev.spilgames.com");
if ((((((languageVersion is Number)) || ((languageVersion is uint)))) || ((languageVersion is int)))){
_languageNum = (Number(languageVersion) - 1);
};
}
public static function get url1():String{
var i:int;
i = 0;
while (i < SpillGroupUrl.length) {
if (localConnection.domain == SpillGroupUrl[i]){
return (_languageBox[_languageNum].url2);
};
i++;
};
return (_languageBox[_languageNum].url1);
}
public static function get branding_nr():String{
return (_languageBox[_languageNum].branding_nr);
}
}
var _local1:* = (language.Language = 1);
return (_local1);
}//package
class languageItem {
public var url1:String;
public var url2:String;
public var branding_nr:int;
public var language_nr:int;
public var portal:String;
private function languageItem(){
super();
}
}
Section 115
//lava (lava)
package {
import flash.display.*;
public dynamic class lava extends BitmapData {
public function lava(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 116
//lava_ref_0 (lava_ref_0)
package {
import flash.display.*;
public dynamic class lava_ref_0 extends BitmapData {
public function lava_ref_0(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 117
//lava_ref_1 (lava_ref_1)
package {
import flash.display.*;
public dynamic class lava_ref_1 extends BitmapData {
public function lava_ref_1(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 118
//lava_ref_2 (lava_ref_2)
package {
import flash.display.*;
public dynamic class lava_ref_2 extends BitmapData {
public function lava_ref_2(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 119
//lava_ref_3 (lava_ref_3)
package {
import flash.display.*;
public dynamic class lava_ref_3 extends BitmapData {
public function lava_ref_3(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 120
//lava_ref_4 (lava_ref_4)
package {
import flash.display.*;
public dynamic class lava_ref_4 extends BitmapData {
public function lava_ref_4(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 121
//life_lost (life_lost)
package {
import flash.media.*;
public dynamic class life_lost extends Sound {
public function life_lost(){
super();
}
}
}//package
Section 122
//logo_anim (logo_anim)
package {
import flash.display.*;
public dynamic class logo_anim extends BitmapData {
public function logo_anim(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 123
//meat (meat)
package {
import flash.display.*;
public dynamic class meat extends BitmapData {
public function meat(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 124
//meat_small (meat_small)
package {
import flash.display.*;
public dynamic class meat_small extends BitmapData {
public function meat_small(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 125
//metr (metr)
package {
import flash.display.*;
public dynamic class metr extends BitmapData {
public function metr(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 126
//MSAError (MSAError)
package {
import flash.text.*;
import flash.display.*;
import flash.events.*;
public final class MSAError extends MovieClip {
private var container:MovieClip;
public var caption:TextField;
public function MSAError(container:MovieClip, cpt:String){
var format:TextFormat;
super();
this.container = container;
container.addChild(this);
format = new TextFormat();
format.color = 0xFF0000;
caption.defaultTextFormat = format;
caption.text = cpt;
container.stop();
Tools.addEvent(this, Event.ENTER_FRAME, enterFrame);
}
private function enterFrame(e:Event){
container.setChildIndex(this, (container.numChildren - 1));
}
}
}//package
Section 127
//MSAppAndkon (MSAppAndkon)
package {
import flash.display.*;
import flash.events.*;
import go_to_hell.*;
import mochi.as3.*;
import flash.utils.*;
import flash.net.*;
public dynamic final class MSAppAndkon extends MovieClip {
var check_loader:URLLoader;
public var __setPropDict:Dictionary;
var check_request:URLRequest;
public var __id0_:HotSpotURL;
public var tv_frame:MovieClip;
public var __id1_:HotSpotURL;
public var gauge:MovieClip;
public function MSAppAndkon(){
var variables:URLVariables;
this.__setPropDict = new Dictionary(true);
this.check_request = new URLRequest("http://www.metasauce.com/soft_check.php");
this.check_loader = new URLLoader();
super();
addFrameScript(0, this.frame1, 1, this.frame2, 3, this.frame4);
this.check_loader.addEventListener(Event.COMPLETE, this.checkSuccessful);
this.check_loader.addEventListener(IOErrorEvent.IO_ERROR, this.checkError);
this.check_loader.dataFormat = URLLoaderDataFormat.TEXT;
this.check_request.method = URLRequestMethod.POST;
variables = new URLVariables();
variables.site = "go_to_hell_tastyplay";
this.check_request.data = variables;
this.check_loader.load(this.check_request);
MochiServices.connect("9da3436693bce7b2", root);
}
function locked():Boolean{
var sites:*;
var ok:Boolean;
var i:*;
sites = new Array();
sites.push("metasauce.com");
sites.push("andkon.com");
ok = false;
i = 0;
while (i < sites.length) {
if (this.root.loaderInfo.url.indexOf(sites[i]) != -1){
ok = true;
};
i++;
};
return (!(ok));
}
function frame1(){
if ((((this.__setPropDict[this.__id0_] == undefined)) || (!((int(this.__setPropDict[this.__id0_]) == 1))))){
this.__setPropDict[this.__id0_] = currentFrame;
this.__setProp___id0__Scena1_Warstwa6_1();
};
if ((((this.__setPropDict[this.__id1_] == undefined)) || (!((int(this.__setPropDict[this.__id1_]) == 1))))){
this.__setPropDict[this.__id1_] = currentFrame;
this.__setProp___id1__Scena1_Warstwa6_1();
};
stop();
this.stop();
Tools.addEvent(this, Event.ENTER_FRAME, this.enterFrame);
}
public function enterFrame(_arg1:Event){
var pcent:Number;
pcent = ((root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal) * 100);
if (this.gauge.currentFrame >= pcent){
this.gauge.stop();
} else {
this.gauge.play();
};
this.gauge.alpha = (this.gauge.currentFrame / 100);
if ((((this.gauge.currentFrame == 100)) && ((pcent == 100)))){
this.removeEventListener(Event.ENTER_FRAME, this.enterFrame);
this.gotoAndStop("game");
};
}
function frame4(){
this.tv_frame.mouseEnabled = false;
stop();
}
function __setProp___id0__Scena1_Warstwa6_1(){
try {
this.__id0_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
this.__id0_.url = "http://www.metasauce.com";
try {
this.__id0_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
function frame2(){
gotoAndStop("game");
}
private function checkSuccessful(_arg1:Event):void{
var loader:URLLoader;
loader = URLLoader(_arg1.target);
if (loader.data == "locked"){
MSAError(this, "The game is locked, please contact info@metasauce.com.");
};
}
function __setProp___id1__Scena1_Warstwa6_1(){
try {
this.__id1_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
this.__id1_.url = "http://www.andkon.com/arcade/";
try {
this.__id1_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
private function checkError(_arg1:IOErrorEvent):void{
}
}
}//package
Section 128
//OOO000lll (OOO000lll)
package {
import flash.display.*;
import flash.events.*;
import Util.*;
import flash.net.*;
import flash.system.*;
public class OOO000lll extends MovieClip {
public var O1OlOO00O:XML;
private var _O10OOO1O0:Loader;
private var _O1l10l101:Object;
private var _OO0l101l1:Object;
public var OOO10O100:String;
public var O0l00l0O0:XML;
private var _OOl10010l:String;
private var _O001OO010:Object;
private var _O01OO1O00;
private var _O01O0lOl0:int;
private var _O1Ol011l1:String;
private var _O11OO0110:String;
private var _OOO00l00l:int;
private var _O0lO0100O:String;
private var _OOOOll01l:Array;
private var _O111O01OO:Object;
private var _OO10001Ol:Boolean;
private var _OO1l1OO10:String;
public var O1lll0ll0:XML;
private var _O1OO1OllO:Object;
private var _O0l0OO01O;
private var _OO0l1lOO1:int;
public var OOOll0OO0:int;
public function OOO000lll():void{
var _O1OlO10O0:*;
super();
Security.allowDomain("*");
_OO10001Ol = false;
_O01OO1O00 = this.parent;
_O01OO1O00.stop();
var _OOll00l11:int;
while (true) {
try {
_O1OlO10O0 = _O01OO1O00.getChildAt(_OOll00l11);
if ((_O1OlO10O0 is MovieClip)){
_O1OlO10O0.visible = false;
} else {
_O01OO1O00.removeChild(_O1OlO10O0);
};
_OOll00l11 = (_OOll00l11 + 1);
} catch(e:Error) {
break;
};
};
try {
_O01OO1O00["_O0000Ol01"] = _O0000Ol01;
_O01OO1O00["_O0Olll0lO"] = _O0Olll0lO;
} catch(e:Error) {
};
}
private function _O11lll1OO0(_arg1:String):void{
if (_O0l0OO01O){
_O0l0OO01O.OO0011ll1O(_arg1);
};
}
private function _OO0OO1OO0(_arg1:Event):void{
if ((((((_arg1.type == "ScoreLoadSubmitComplete")) || ((_arg1.type == "ScoreLoadListComplete")))) || ((_arg1.type == "ScoreLoadUserListComplete")))){
O0l00l0O0 = _O0l0OO01O.O011Oll0O();
} else {
if (_arg1.type == "ScoreLoadTimeComplete"){
O1lll0ll0 = _O0l0OO01O.OO011OOl1();
} else {
O0l00l0O0 = _O0l0OO01O.O0001O0Ol();
};
};
_O01OO1O00.dispatchEvent(_arg1);
}
private function _O10Ol0l10(_arg1:IOErrorEvent):void{
removeEventListener(Event.ENTER_FRAME, _O0OlOOO1O);
_O01OO1O00.dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR));
}
private function _O01Ol1O1O():void{
if (_O0l0OO01O){
_O0l0OO01O.OO011OOl1();
};
}
private function _O110l10ll():void{
if (_O0l0OO01O){
_O0l0OO01O.O01l01OlO();
};
}
private function _O01O1101l():void{
stop();
_O10OOO1O0 = new Loader();
_O10OOO1O0.load(new URLRequest(_O1Ol011l1));
_O01OO1O00.addChildAt(_O10OOO1O0, 0);
this.addEventListener(Event.ENTER_FRAME, _O0OlOOO1O);
_O10OOO1O0.contentLoaderInfo.addEventListener(Event.COMPLETE, _O100O0Oll);
_O10OOO1O0.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _O10Ol0l10);
}
private function _O0000Ol01(_arg1=null, _arg2:String="default", _arg3="", _arg4:int=0, _arg5:String="normal", _arg6:String="", _arg7:int=0, _arg8:int=0, _arg9:int=1, _arg10:Boolean=false):void{
OOO10O100 = _arg5;
OOOll0OO0 = _arg4;
_O11OO0110 = _arg2;
if (_arg3 == ""){
_OO1l1OO10 = _O11OO0110;
} else {
_OO1l1OO10 = _arg3;
};
if (((!((_arg1 == null))) && (!((_arg1.loaderInfo == null))))){
_O1l10l101 = _arg1.loaderInfo.parameters["username"];
_O001OO010 = _arg1.loaderInfo.parameters["hash"];
_OO0l101l1 = _arg1.loaderInfo.parameters["id"];
_O1OO1OllO = _arg1.loaderInfo.parameters["s"];
_O111O01OO = _arg1.loaderInfo.parameters["c"];
_O1Ol011l1 = "http://www8.agame.com/games/flash/highscore/SubmitterV2.swf";
if (_O00O00010(_arg10)){
_O01O1101l();
} else {
_O01OO1O00.dispatchEvent(new Event("LoadingFailed"));
};
};
_OOl10010l = _arg6;
_OO0l1lOO1 = _arg7;
_O01O0lOl0 = _arg8;
_OOO00l00l = _arg9;
}
private function _O0O1l0OO0():Boolean{
return (!((_O0l0OO01O == null)));
}
private function _O100O0Oll(_arg1:Event):void{
_O0l0OO01O = _arg1.currentTarget.content;
_O0l0OO01O.O0011ll110O0(_O1OO1OllO, 1, _OO0l101l1, _O111O01OO, OOOll0OO0, _OOl10010l, _OO0l1lOO1, _O01O0lOl0, _OOO00l00l, _O1l10l101, _O001OO010);
_O0l0OO01O.addEventListener("HyScorSubmitterLoaded", _OOl11lOOl);
_O0l0OO01O.addEventListener("ScoreLoadError", _OO0OO1OO0);
_O0l0OO01O.addEventListener("ScoreLoadTimeComplete", _OO0OO1OO0);
_O0l0OO01O.addEventListener("ScoreLoadSubmitComplete", _OO0OO1OO0);
_O0l0OO01O.addEventListener("ScoreLoadListComplete", _OO0OO1OO0);
_O0l0OO01O.addEventListener("ScoreLoadUserListComplete", _OO0OO1OO0);
_O0l0OO01O.addEventListener("AchievLoadError", _O0l0O1Oll);
_O0l0OO01O.addEventListener("AchievLoadTimeComplete", _O0l0O1Oll);
_O0l0OO01O.addEventListener("AchievLoadListComplete", _O0l0O1Oll);
_O0l0OO01O.addEventListener("AchievLoadInfoComplete", _O0l0O1Oll);
_O0l0OO01O.addEventListener("AchievLoadGrantComplete", _O0l0O1Oll);
_O01OO1O00["_O0Olll0lO"] = _O0Olll0lO;
_O01OO1O00["_O0O1l0OO0"] = _O0O1l0OO0;
_O01OO1O00["_O01Ol1O1O"] = _O01Ol1O1O;
_O01OO1O00["_O01lOO10O"] = _O01lOO10O;
_O01OO1O00["_O110l10ll"] = _O110l10ll;
_O01OO1O00["_O11lll1OO0"] = _O11lll1OO0;
_O01OO1O00["_O00OOl1Ol"] = _O00OOl1Ol;
_O01OO1O00["_O1OlO10OO"] = _O1OlO10OO;
_O01OO1O00["_OOlOOOll1"] = _OOlOOOll1;
_O01OO1O00["_O010ll111"] = _O010ll111;
}
private function _O00O00010(_arg1:Boolean=false):Boolean{
var _local4:String;
var _local5:O1OOO0O00;
var _local2:Boolean = _arg1;
if (!_local2){
_OOOOll01l = ["www8.agame.com"];
} else {
_OOOOll01l = ["localhost", "www8.agame.com", "www.zlonggames.com", "gamedev.dev.spilgames.com", "stg.pl.a10.com", "www.a10.com.gp.dev.spilgames.eu"];
};
var _local3:LocalConnection = new LocalConnection();
if (((isNaN((_OO0l101l1 as int))) || (isNaN((_O1OO1OllO as int))))){
return (false);
};
for each (_local4 in _OOOOll01l) {
if (_local3.domain == _local4){
_local5 = new O1OOO0O00();
if (_local5.O0111l110()){
_OO10001Ol = true;
return (true);
};
};
};
return (false);
}
private function _O00OOl1Ol(_arg1:String):void{
if (_O0l0OO01O){
_O0l0OO01O.OO00lO1l0(_arg1, _O1l10l101, _O001OO010);
};
}
private function _O0OlOOO1O(_arg1:Event):void{
var _local2 = (((_O10OOO1O0.contentLoaderInfo.bytesLoaded / _O10OOO1O0.contentLoaderInfo.bytesTotal) * 100) >> 0);
if (_local2 >= 100){
removeEventListener(Event.ENTER_FRAME, _O0OlOOO1O);
};
}
private function _OOl11lOOl(_arg1:Event):void{
if (_O0l0OO01O){
_O0l0OO01O.removeEventListener("HyScorSubmitterLoaded", _OOl11lOOl);
};
_O01OO1O00.dispatchEvent(new Event(Event.COMPLETE));
}
private function _O01lOO10O(_arg1:int):void{
if (_O0l0OO01O){
_O0l0OO01O.O0l01llOl(_arg1, _O1l10l101, _O001OO010);
};
}
private function _O0Olll0lO():Boolean{
return (_O00O00010(false));
}
private function _O1OlO10OO():void{
if (_O0l0OO01O){
_O0l0OO01O.O1l0OOl1l(_O1l10l101, _O001OO010);
};
}
private function _O10O00lO0():String{
if (_O0l0OO01O){
return (_O0l0OO01O.OOOO00ll0());
};
return (("FAILED " + _O0l0OO01O));
}
private function _O0l0O1Oll(_arg1:Event):void{
if ((((((_arg1.type == "AchievLoadListComplete")) || ((_arg1.type == "AchievLoadInfoComplete")))) || ((_arg1.type == "AchievLoadGrantComplete")))){
O1OlOO00O = _O0l0OO01O.O11OO0l0l();
} else {
O1OlOO00O = _O0l0OO01O.O0O100l0l();
};
_O01OO1O00.dispatchEvent(_arg1);
}
private function _O010ll111():void{
_O0l0OO01O.removeEventListener("ScoreLoadError", _OO0OO1OO0);
_O0l0OO01O.removeEventListener("ScoreLoadTimeComplete", _OO0OO1OO0);
_O0l0OO01O.removeEventListener("ScoreLoadSubmitComplete", _OO0OO1OO0);
_O0l0OO01O.removeEventListener("ScoreLoadListComplete", _OO0OO1OO0);
_O0l0OO01O.removeEventListener("ScoreLoadUserListComplete", _OO0OO1OO0);
_O0l0OO01O.removeEventListener("AchievLoadError", _O0l0O1Oll);
_O0l0OO01O.removeEventListener("AchievLoadTimeComplete", _O0l0O1Oll);
_O0l0OO01O.removeEventListener("AchievLoadListComplete", _O0l0O1Oll);
_O0l0OO01O.removeEventListener("AchievLoadInfoComplete", _O0l0O1Oll);
_O0l0OO01O.removeEventListener("AchievLoadGrantComplete", _O0l0O1Oll);
_O01OO1O00 = null;
_OOOOll01l = null;
_O0l0OO01O = null;
_O1l10l101 = null;
_O001OO010 = null;
_O10OOO1O0 = null;
O1lll0ll0 = null;
O0l00l0O0 = null;
O1OlOO00O = null;
}
private function _OOlOOOll1(_arg1:int):void{
if (_O0l0OO01O){
_O0l0OO01O.O1OlOO111(_arg1);
};
}
}
}//package
Section 129
//ouch (ouch)
package {
import flash.media.*;
public dynamic class ouch extends Sound {
public function ouch(){
super();
}
}
}//package
Section 130
//oxygen (oxygen)
package {
import flash.display.*;
public dynamic class oxygen extends BitmapData {
public function oxygen(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 131
//pause (pause)
package {
import flash.display.*;
public dynamic class pause extends BitmapData {
public function pause(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 132
//pixel_font (pixel_font)
package {
import flash.text.*;
public dynamic class pixel_font extends Font {
public function pixel_font(){
super();
}
}
}//package
Section 133
//rave (rave)
package {
import flash.media.*;
public dynamic class rave extends Sound {
public function rave(){
super();
}
}
}//package
Section 134
//rave_far (rave_far)
package {
import flash.media.*;
public dynamic class rave_far extends Sound {
public function rave_far(){
super();
}
}
}//package
Section 135
//red_cross (red_cross)
package {
import flash.display.*;
public dynamic class red_cross extends BitmapData {
public function red_cross(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 136
//smash_sound (smash_sound)
package {
import flash.media.*;
public dynamic class smash_sound extends Sound {
public function smash_sound(){
super();
}
}
}//package
Section 137
//spikes (spikes)
package {
import flash.display.*;
public dynamic class spikes extends BitmapData {
public function spikes(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 138
//spikes_blood (spikes_blood)
package {
import flash.display.*;
public dynamic class spikes_blood extends BitmapData {
public function spikes_blood(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 139
//target_h (target_h)
package {
import flash.display.*;
public dynamic class target_h extends BitmapData {
public function target_h(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 140
//target_v (target_v)
package {
import flash.display.*;
public dynamic class target_v extends BitmapData {
public function target_v(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 141
//Tools (Tools)
package {
import flash.media.*;
import flash.text.*;
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
public final class Tools {
private static var rnd_seed = Math.floor((Math.random() * 10000));
public function Tools(){
super();
}
public static function addEvent(object:DisplayObject, type:String, listener:Function){
object.addEventListener(type, listener, false, 0, true);
}
public static function flipBitmap(bmp:BitmapData, h:Boolean, v:Boolean):BitmapData{
var vm:*;
var hm:*;
var bm:*;
var m:Matrix;
var tmp:*;
if (((!(h)) && (!(v)))){
return (bmp);
};
vm = new Matrix();
vm.scale(1, -1);
vm.translate(0, bmp.height);
hm = new Matrix();
hm.scale(-1, 1);
hm.translate(bmp.width, 0);
bm = new Matrix();
bm.scale(-1, -1);
bm.translate(bmp.width, bmp.height);
if (((h) && (v))){
m = bm;
} else {
if (h){
m = hm;
} else {
if (v){
m = vm;
} else {
return (bmp);
};
};
};
tmp = new BitmapData(bmp.width, bmp.height, true, 0);
tmp.draw(bmp, m);
return (tmp);
}
public static function getResource(pic_name:String){
var ClassReference:Class;
ClassReference = (getDefinitionByName(pic_name) as Class);
return (new (ClassReference));
}
public static function rand(n:Number){
rnd_seed = (((rnd_seed * 9301) + 49297) % 233280);
return (Math.floor(((rnd_seed / 233280) * n)));
}
public static function getKey(a:Array, value):Number{
var i:*;
i = 0;
while (i < a.length) {
if (a[i] == value){
return (i);
};
i++;
};
return (-1);
}
public static function rotateBitmap(bmp:BitmapData, deg:Number){
var rm:*;
var tmp:*;
rm = new Matrix();
rm.translate((-(bmp.width) / 2), (-(bmp.height) / 2));
rm.rotate(degToRad(deg));
rm.translate((bmp.width / 2), (bmp.height / 2));
tmp = new BitmapData(bmp.width, bmp.height, true, 0);
tmp.draw(bmp, rm);
return (tmp);
}
public static function remove(object:DisplayObject){
if (object){
if (object.parent){
DisplayObjectContainer(object.parent).removeChild(object);
};
};
}
public static function getDomainName(url:String):String{
var tmp:*;
var dn:*;
tmp = url.split("://");
dn = tmp[(tmp.length - 1)];
dn = dn.split("/")[0];
tmp = dn.split(".");
dn = ((tmp[(tmp.length - 2)] + ".") + tmp[(tmp.length - 1)]);
return (dn);
}
public static function getPicture(pic_name:String){
var ClassReference:Class;
ClassReference = (getDefinitionByName(pic_name) as Class);
return (new ClassReference(0, 0));
}
public static function pasteBitmap(px, py, bmp:BitmapData, target:BitmapData, merge_alpha:Boolean){
target.copyPixels(bmp, bmp.rect, new Point(px, py), null, null, merge_alpha);
}
public static function numOnly(input:TextField){
var i:*;
var code:*;
i = 0;
while (i < input.text.length) {
code = input.text.charCodeAt(i);
if ((((code < 48)) || ((code > 57)))){
input.text = remChar(input.text, i);
};
i++;
};
}
public static function setSeed(sd:Number){
rnd_seed = sd;
}
public static function degToRad(deg:Number){
return (((Math.PI * 2) * (deg / 360)));
}
public static function constrain(val:Number, min:Number, max:Number):Number{
if (val > max){
return (max);
};
if (val < min){
return (min);
};
return (val);
}
public static function shuffle(a:Array){
var i:*;
var tmp:*;
var rn:*;
i = 0;
while (i < a.length) {
tmp = a[i];
rn = rand(a.length);
a[i] = a[rn];
a[rn] = tmp;
i++;
};
}
public static function swap(a:Object, b:Object){
var c:*;
c = a;
a = b;
}
public static function mute(doit:Boolean){
var transform:SoundTransform;
transform = new SoundTransform();
transform.volume = (doit) ? 0 : 1;
SoundMixer.soundTransform = transform;
}
public static function clearBitmap(bmp:BitmapData){
bmp.fillRect(bmp.rect, 0);
}
public static function setTint(color:Number, clip:MovieClip){
var t:Transform;
var ct:ColorTransform;
t = new Transform(clip);
ct = new ColorTransform();
ct.color = color;
t.colorTransform = ct;
}
public static function remChar(string:String, index:Number){
return ((string.slice(0, index) + string.slice((index + 1), string.length)));
}
}
}//package
Section 142
//wall_dark (wall_dark)
package {
import flash.display.*;
public dynamic class wall_dark extends BitmapData {
public function wall_dark(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 143
//wall_dark_2 (wall_dark_2)
package {
import flash.display.*;
public dynamic class wall_dark_2 extends BitmapData {
public function wall_dark_2(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 144
//wall_dark_2_trans (wall_dark_2_trans)
package {
import flash.display.*;
public dynamic class wall_dark_2_trans extends BitmapData {
public function wall_dark_2_trans(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 145
//wall_dark_3 (wall_dark_3)
package {
import flash.display.*;
public dynamic class wall_dark_3 extends BitmapData {
public function wall_dark_3(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 146
//wall_dark_3_trans (wall_dark_3_trans)
package {
import flash.display.*;
public dynamic class wall_dark_3_trans extends BitmapData {
public function wall_dark_3_trans(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 147
//wall_dark_last (wall_dark_last)
package {
import flash.display.*;
public dynamic class wall_dark_last extends BitmapData {
public function wall_dark_last(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 148
//wall_dark_last_trans (wall_dark_last_trans)
package {
import flash.display.*;
public dynamic class wall_dark_last_trans extends BitmapData {
public function wall_dark_last_trans(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 149
//wall_light (wall_light)
package {
import flash.display.*;
public dynamic class wall_light extends BitmapData {
public function wall_light(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 150
//wall_light_2 (wall_light_2)
package {
import flash.display.*;
public dynamic class wall_light_2 extends BitmapData {
public function wall_light_2(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 151
//wall_light_2_trans (wall_light_2_trans)
package {
import flash.display.*;
public dynamic class wall_light_2_trans extends BitmapData {
public function wall_light_2_trans(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 152
//wall_light_3 (wall_light_3)
package {
import flash.display.*;
public dynamic class wall_light_3 extends BitmapData {
public function wall_light_3(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 153
//wall_light_3_trans (wall_light_3_trans)
package {
import flash.display.*;
public dynamic class wall_light_3_trans extends BitmapData {
public function wall_light_3_trans(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 154
//wall_light_start (wall_light_start)
package {
import flash.display.*;
public dynamic class wall_light_start extends BitmapData {
public function wall_light_start(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 155
//water_anim_0 (water_anim_0)
package {
import flash.display.*;
public dynamic class water_anim_0 extends BitmapData {
public function water_anim_0(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 156
//water_ref_0 (water_ref_0)
package {
import flash.display.*;
public dynamic class water_ref_0 extends BitmapData {
public function water_ref_0(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 157
//water_ref_1 (water_ref_1)
package {
import flash.display.*;
public dynamic class water_ref_1 extends BitmapData {
public function water_ref_1(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 158
//water_ref_2 (water_ref_2)
package {
import flash.display.*;
public dynamic class water_ref_2 extends BitmapData {
public function water_ref_2(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 159
//water_ref_3 (water_ref_3)
package {
import flash.display.*;
public dynamic class water_ref_3 extends BitmapData {
public function water_ref_3(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 160
//water_ref_4 (water_ref_4)
package {
import flash.display.*;
public dynamic class water_ref_4 extends BitmapData {
public function water_ref_4(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 161
//worm (worm)
package {
import flash.display.*;
public dynamic class worm extends BitmapData {
public function worm(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 162
//worm_blood (worm_blood)
package {
import flash.display.*;
public dynamic class worm_blood extends BitmapData {
public function worm_blood(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 163
//worm_blood_died (worm_blood_died)
package {
import flash.display.*;
public dynamic class worm_blood_died extends BitmapData {
public function worm_blood_died(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 164
//worm_died (worm_died)
package {
import flash.display.*;
public dynamic class worm_died extends BitmapData {
public function worm_died(w:Number, h:Number){
super(w, h);
}
}
}//package