Frame 2
fscommand ("allowscale", false);
fscommand ("showmenu", false);
fscommand ("about", "Developed by ArtBit");
_global.settings = new Object();
_global.settings.quality = "HIGH";
_global.settings.music_volume = 80;
_global.settings.speed = new Object();
_global.settings.speed.forward = 8;
_global.settings.speed.backward = 5;
_global.settings.speed.jump = -12;
_global.settings.speed.gravity = 1;
var rnd_seed = 123;
var rn = (new djo.RandomNumber());
rn.SetSeed(rnd_seed);
var fps = (new djo.FPS());
fps.Init(this, 10, 25, 100, 100, 0);
_global.Timer = new djo.Timer();
_global.rad2deg = 57.29578;
_global.deg2rad = (Math.PI/180);
_global.screen = new Object();
_global.screen._width = 700;
_global.screen._height = 400;
_global.dt = 0;
var allsounds = new Sound();
Mouse.show();
gotoAndPlay ("loaded");
Frame 4
play();
Frame 8
_root.Music.playMenu();
Mouse.show();
_root.graphic._visible = false;
Mouse.show();
Frame 12
Frame 16
stop();
Frame 23
stop();
Frame 27
gotoAndPlay (9);
Frame 33
stop();
Frame 37
gotoAndPlay (9);
Frame 40
Frame 42
_root.createEmptyMovieClip("music", 0);
_root.createEmptyMovieClip("sound", 1);
_root.createEmptyMovieClip("data", 2);
_root.createEmptyMovieClip("script", 3);
_root.createEmptyMovieClip("graphic", 4);
_root.createEmptyMovieClip("mask", 5);
_root.graphic._visible = false;
_root.graphic._alpha = 100;
Mouse.hide();
_root.graphic.createEmptyMovieClip("sky", 0);
_root.graphic.createEmptyMovieClip("bg_scape", 1);
_root.graphic.createEmptyMovieClip("bg", 2);
_root.graphic.createEmptyMovieClip("ground_back", 3);
_root.graphic.attachMovie("Player", "player", 4, {_xscale:110, _yscale:110});
_root.graphic.createEmptyMovieClip("particles", 5);
_root.graphic.createEmptyMovieClip("ground", 6);
_root.graphic.createEmptyMovieClip("enemies", 7);
_root.graphic.createEmptyMovieClip("objects", 8);
_root.graphic.createEmptyMovieClip("ground_front", 9);
_root.graphic.createEmptyMovieClip("fx", 10);
_root.graphic.createEmptyMovieClip("fg", 11);
_root.graphic.createEmptyMovieClip("movie", 12);
_root.graphic.movie.attachMovie("MovieSequence", "wide_screen", 0);
_root.graphic.movie.attachMovie("TextWindow", "text_window", 1, {_x:10, _y:380});
_root.graphic.movie.text_window.Init(-50, -50, "textWindow");
_root.graphic.createEmptyMovieClip("gui", 14);
_root.graphic.gui.attachMovie("EnergyBar", "player_energy", 3, {_x:530, _y:380});
_root.graphic.gui.attachMovie("Score", "score", 4, {_x:650, _y:10});
_root.graphic.gui.attachMovie("WeaponsStripe", "weapons", 5, {_x:10, _y:380});
_root.graphic.gui.attachMovie("Cursor", "cursor", 1, {_x:-50, _y:-50});
_root.graphic.gui.attachMovie("Dot", "dot", 2);
var bg_col = new Color(_root.graphic.ground_back);
bg_col.setRGB(3355443);
bg_col = new Color(_root.graphic.ground_front);
bg_col.setRGB(0);
with (_root.mask) {
beginFill(0, 100);
moveTo(0, 0);
lineTo(screen._width, 0);
lineTo(screen._width, screen._height);
lineTo(0, screen._height);
lineTo(0, 0);
endFill();
}
_root.graphic.setMask(_root.mask);
Frame 43
_root.sound.play = function (snd_name) {
_root.sound[snd_name].start();
};
Frame 44
_root.data.game = new Object();
_root.data.game.pause = false;
_root.data.game.stop = false;
_root.data.game.score = 0;
_root.data.game.addScore = function (amt) {
_root.data.game.score = _root.data.game.score + amt;
_root.graphic.gui.score.Field.text = "score: " + _root.data.game.score;
};
_root.data.game.movie = false;
_root.data.game.freeze = false;
_root.data.game.over = false;
_root.data.game.stats = new Object();
_root.data.game.stats.shots = 0;
_root.data.game.stats.hits = 0;
_root.data.game.stats.kills = 0;
_root.keys = new Object();
_root.keys.is_S_down = false;
_root.keys.is_A_down = false;
_root.keys.is_D_down = false;
_root.keys.is_W_down = false;
_root.keys.is_SPACE_down = false;
_root.keys.is_1_down = false;
_root.keys.is_2_down = false;
_root.keys.is_3_down = false;
_root.keys.is_4_down = false;
_root.keys.is_5_down = false;
_root.keys.is_ESC_down = false;
_root.data.cursor = new Object();
_root.data.cursor.pos = new djo.Vector2P(_root._xmouse, _root._ymouse, 0, 0);
_root.data.cursor.koef = 3;
_root.script.findNode = function (arr, x) {
return(_root.script.findNodeRec(arr, 0, arr.length, x));
};
_root.script.findNodeRec = function (arr, a, b, x) {
var _local2 = Math.floor((a + b) / 2);
if ((arr[_local2]._x <= x) && (arr[_local2 + 1]._x >= x)) {
return(_local2);
}
if ((b - 1) == a) {
return(_local2);
}
if (arr[_local2]._x <= x) {
return(_root.script.findNodeRec(arr, _local2, b, x));
}
return(_root.script.findNodeRec(arr, a, _local2, x));
};
_root.script.getY = function (arr, x) {
var _local2 = _root.script.findNode(arr, x);
var _local5 = arr[_local2]._y - arr[_local2 + 1]._y;
var _local4 = arr[_local2]._x - arr[_local2 + 1]._x;
return(arr[_local2]._y + ((_local5 / _local4) * (x - arr[_local2]._x)));
};
Frame 45
_root.data.level = new Object();
_root.data.level.length = 50000;
_root.data.level.height = 290;
_root.data.level.freq = 300;
_root.data.level.camera = new Object();
_root.data.level.camera.x = screen._width / 4;
_root.data.level.camera.y = (_root.data.level.height = 290);
_root.data.level.distance = new Object();
_root.data.level.distance.x = 0;
_root.data.level.distance.events = new Object();
_root.data.level.distance.events.arr = new Array();
_root.data.level.distance.events.Add = function (dx, action) {
var _local2 = new Object();
_local2.x = dx;
_local2.onEvent = action;
_root.data.level.distance.events.arr.push(_local2);
};
_root.data.level.distance.events.Check = function () {
var _local2 = _root.data.level.distance.events.arr[0];
if (_root.data.level.distance.x > _local2.x) {
_local2.onEvent();
_root.data.level.distance.events.arr.shift();
}
};
_root.data.level.slant = new Object();
_root.data.level.slant.x = 0;
_root.data.level.slant.y = -80;
_root.data.level.slant.koef = 0;
_root.data.level.slant.angle = 0;
_root.data.level.slant.start_angle = 0;
_root.data.level.slant.dest_angle = 0;
_root.data.level.slant.dest_distance = 0;
_root.data.level.slant.distance = 0;
_root.data.level.slant.setAngle = function (newAngle, distance) {
var _local2 = _root.data.level.slant;
_local2.start_angle = _local2.angle;
_local2.dest_angle = newAngle;
_local2.dest_distance = distance;
_local2.distance = 0;
};
_root.data.level.slant.Update = function (amt) {
var _local2 = _root.data.level.slant;
_local2.distance = _local2.distance + amt;
if (_local2.distance > _local2.dest_distance) {
_local2.distance = _local2.dest_distance;
}
var _local3 = _local2.distance / _local2.dest_distance;
if (!isNaN(_local3)) {
_local2.angle = _local2.start_angle + ((_local2.dest_angle - _local2.start_angle) * _local3);
_local2.koef = Math.tan(_local2.angle * deg2rad);
}
};
_root.data.level.createLevelObject = function (mc, y_median, y_range, x_range, speed, linkage, linkage_len, xscale, yscale) {
if (linkage == undefined) {
linkage = "none";
}
o = new Object();
o.mc = mc;
o.y_median = y_median;
o.y_range = y_range;
o.x_range = x_range;
o.speed = speed;
o.linkage = linkage;
o.linkage_len = linkage_len;
o.arr = new Array();
o._xscale = xscale;
o._yscale = yscale;
return(o);
};
_root.data.level.generateTerrain = function () {
_root.data.level.ground = _root.data.level.createLevelObject(_root.graphic.ground, _root.data.level.height, 25, 100, 1);
_root.data.level.ground_front = _root.data.level.createLevelObject(_root.graphic.ground_front, _root.data.level.height + 20, 20, 120, 1.3, "Graves", 22, 100, 100);
_root.data.level.ground_back = _root.data.level.createLevelObject(_root.graphic.ground_back, _root.data.level.height - 25, 15, 80, 0.8, "Graves", 22, 50, 50);
_root.data.level.bg = _root.data.level.createLevelObject(_root.graphic.bg, _root.data.level.height - 50, 10, 0, 0.4);
_root.data.level.sky = _root.data.level.createLevelObject(_root.graphic.sky, (_root.data.level.height / 2) - 40, (_root.data.level.height / 2) - 80, 200, 0.05, "Sky", 2, 100, 100);
var _local3;
var _local5 = 0;
while (_local5 < 8) {
var _local2 = _root.data.level.ground;
var _local4 = _local2.y_range;
_local3 = new Object();
_local3._x = (_local5 - 1) * _root.data.level.freq;
_local3._y = (_local2.y_median + rn.Random(-_local4, _local4)) + _root.data.level.slant.y;
_root.data.level.ground.arr.push(_local3);
_local2 = _root.data.level.ground_front;
_local4 = _local2.y_range;
_local3 = new Object();
_local3._x = ((_local5 * _root.data.level.freq) * _local2.speed) + rn.Random(50);
_local3._y = (_local2.y_median + rn.Random(-_local4, _local4)) + _root.data.level.slant.y;
_local3.type = Math.floor(rn.Random(_local2.linkage_len)) + 1;
var _local6 = _local2.mc.getNextHighestDepth();
_local3.attached = _local2.mc.attachMovie(_local2.linkage, "node" + _local6, _local6, {_xscale:_local2._xscale, _yscale:_local2._yscale});
_local3.attached.gotoAndStop(_local3.type);
_local2.arr.push(_local3);
_local2 = _root.data.level.ground_back;
_local4 = _local2.y_range;
_local3 = new Object();
_local3._x = ((_local5 * _root.data.level.freq) * _local2.speed) + rn.Random(50);
_local3._y = (_local2.y_median + rn.Random(-_local4, _local4)) + _root.data.level.slant.y;
_local3.type = Math.floor(rn.Random(_local2.linkage_len)) + 1;
_local6 = _local2.mc.getNextHighestDepth();
_local3.attached = _local2.mc.attachMovie(_local2.linkage, "node" + _local6, _local6, {_xscale:_local2._xscale, _yscale:_local2._yscale});
_local3.attached.gotoAndStop(_local3.type);
_local2.arr.push(_local3);
_local2 = _root.data.level.bg;
_local4 = _local2.y_range;
_local3 = new Object();
_local3._x = ((_local5 * _root.data.level.freq) * _local2.speed) + rn.Random(50);
_local3._y = (_local2.y_median + rn.Random(-_local4, _local4)) + _root.data.level.slant.y;
_local3.type = Math.floor(rn.Random(_local2.linkage_len)) + 1;
_local6 = _local2.mc.getNextHighestDepth();
_local3.attached = _local2.mc.attachMovie(_local2.linkage, "node" + _local6, _local6, {_xscale:_local2._xscale, _yscale:_local2._yscale});
_local3.attached.gotoAndStop(_local3.type);
_local2.arr.push(_local3);
_local5++;
}
_local5 = 0;
while (_local5 < 3) {
_local3 = new Object();
var _local2 = _root.data.level.sky;
_local3._x = (_local5 * _root.data.level.sky.freq) + rn.Random(50);
_local3._y = rn.Random(_root.data.level.height) - rn.Random(-10, 10);
_local3.type = Math.floor(rn.Random(_local2.linkage_len)) + 1;
var _local6 = _local2.mc.getNextHighestDepth();
_local3.attached = _local2.mc.attachMovie(_local2.linkage, "node" + _local6, _local6);
_local3.attached._x = _local3._x;
_local3.attached._y = _local3._y;
_local3.attached.gotoAndStop(_local3.type);
_local2.arr.push(_local3);
_local5++;
}
};
_root.data.level.Reset = function () {
_root.data.level.clearObject(_root.data.level.ground);
_root.data.level.clearObject(_root.data.level.ground_front);
_root.data.level.clearObject(_root.data.level.ground_back);
_root.data.level.clearObject(_root.data.level.bg);
_root.data.level.clearObject(_root.data.level.sky);
_root.data.level.distance.x = 0;
var _local2 = _root.data.level.distance.events.arr.length;
while (_local2--) {
_root.data.level.distance.events.arr.shift();
}
_root.data.level.generateTerrain();
};
_root.data.level.clearObject = function (o) {
var _local3 = o.arr.length;
while (_local3--) {
var _local1 = o.arr.shift();
_local1.attached.removeMovieClip();
}
};
Frame 46
_root.data.events = new Object();
_root.data.events.arr = new Array();
_root.data.events.Add = function (_watchObj, _hisVariable, _test, _againstValue, _onEvent) {
var _local2 = new Object();
_local2.watchObj = _watchObj;
_local2.hisVariable = _hisVariable;
_local2.test = _test;
_local2.againstValue = _againstValue;
_local2.onEvent = _onEvent;
_root.data.events.arr.push(_local2);
};
_root.data.events.Check = function () {
var _local3 = _root.data.events.arr;
var _local5 = _local3.length;
while (_local5--) {
var _local2 = _local3[_local5];
var _local7 = _local2.watchObj[_local2.hisVariable];
var _local6 = _local2.againstValue;
var _local8 = _local2.test;
if (_root.script.logicTest(_local7, _local8, _local6)) {
_local2.onEvent();
delete _local3[_local5];
}
}
_local3.sort();
var _local4 = _local3.length;
while ((_local3[_local4 - 1] == undefined) && (_local4 > 0)) {
_local3.pop();
_local4 = _local3.length;
}
};
_root.data.events.Reset = function () {
var _local2 = _root.data.events.arr.length;
while (_local2--) {
_root.data.events.arr.shift();
}
};
Frame 47
_root.data.player = new Object();
_root.data.player.max_health = 100;
_root.data.player.health = 20;
_root.data.player.experience = 0;
_root.data.player.accuracy = 50;
_root.data.player.magazine = 8;
_root.data.player.pos = new djo.Vector2P(150, 300, 0, 0);
_root.data.player.jump = 2;
_root.data.player.is_busy = false;
_root.data.player.can_jump = false;
_root.data.player.can_move = false;
_root.data.player.can_crouch = false;
_root.data.player.can_shoot = false;
_root.data.player.can_aim = false;
_root.data.player.wall_forward = new djo.Vector2P();
_root.data.player.wall_backward = new djo.Vector2P();
_root.data.player.enableAll = function () {
var _local2 = _root.data.player;
_local2.can_move = (_local2.can_jump = (_local2.can_crouch = (_local2.can_aim = (_local2.can_shoot = true))));
};
_root.data.player.disableAll = function () {
var _local2 = _root.data.player;
_local2.can_move = (_local2.can_jump = (_local2.can_crouch = (_local2.can_aim = (_local2.can_shoot = false))));
};
_root.data.player.Hit = function (pos, amt) {
_root.data.player.health = _root.data.player.health - amt;
if (_root.data.player.health < 0) {
_root.script.gameOver();
return(undefined);
}
_root.graphic.gui.player_energy.bar._xscale = _root.data.player.health;
var _local3 = _root.graphic.particles.getNextHighestDepth();
_root.graphic.particles.attachMovie("small_explode", "smx" + _local3, _local3, {_x:pos.x, _y:pos.y, _xscale:50, _yscale:50});
_root.data.particles.Add("blood", pos.x, pos.y, amt * 5, pos.Angle());
if (_root.data.player.health < 0) {
_root.script.GameOver();
}
};
_root.data.player.Heal = function (amt) {
_root.data.player.health = _root.data.player.health + amt;
_root.data.player.health = ((_root.data.player.health > 100) ? 100 : (_root.data.player.health));
_root.graphic.gui.player_energy.bar._xscale = _root.data.player.health;
};
_root.data.player.updateWalls = function () {
var _local2 = _root.data.player;
_local2.wall_forward = _root.data.enemies.zombies.closestFromTheRight();
_local2.wall_forward.x = _local2.wall_forward.x - 20;
_local2.wall_backward = _root.data.enemies.zombies.closestFromTheLeft();
_local2.wall_backward.x = _local2.wall_backward.x + 20;
};
_root.data.player.gun = new Object();
_root.data.player.gun.limit = new Object();
_root.data.player.gun.limit.min = 0;
_root.data.player.gun.limit.max = 0;
_root.data.player.gun.limit.med = 0;
_root.data.player.gun.dir = new djo.Vector2P();
_root.data.player.gun.dir_dot = new djo.Vector2P();
_root.data.player.gun.show_dir = false;
_root.data.player.gun.updateDir = function () {
var _local2 = _root.data.player.gun.dir;
var _local3 = {x:0, y:0};
_root.graphic.player.guns.gun.gunbase.localToGlobal(_local3);
_local2.x = _local3.x;
_local2.y = _local3.y;
var _local5 = {x:0, y:0};
_root.graphic.player.guns.gun.guntip.localToGlobal(_local5);
_local2.vx = _local5.x - _local3.x;
_local2.vy = _local5.y - _local3.y;
_root.graphic.fx.clear();
if (_root.data.player.gun.show_dir) {
var _local4 = new djo.Vector2P();
_local4.Copy(_local2);
_local4.Move();
_local4.Mul(8);
_local4.Plot(_root.graphic.fx, 1, 16724787, 50);
}
};
_root.data.player.gun.limit.Set = function (nmin, nmax) {
if (nmin == undefined) {
nmin = _root.data.player.gun.min_ang;
}
if (nmax == undefined) {
nmax = _root.data.player.gun.max_ang;
}
var _local4 = (nmax + nmin) / 2;
if (_local4 < 0) {
_local4 = _local4 + 360;
}
if (nmin < 0) {
nmin = nmin + 360;
}
if (nmax < 0) {
nmax = nmax + 360;
}
_root.data.player.gun.limit.min = nmin;
_root.data.player.gun.limit.max = nmax;
_root.data.player.gun.limit.med = _local4;
};
_root.data.player.gun.limit.Set(165, 65);
_root.data.player.gun.limit.Check = function (nrot, mouse_rot) {
var _local6 = _root.data.player.gun.limit;
var _local3 = _local6.max;
var _local2 = _local6.min;
var _local8 = _local6.med;
var _local5 = nrot;
var _local7 = true;
if (_local2 > _local3) {
var _local9 = _local3;
_local3 = _local2;
_local2 = _local9;
_local7 = false;
}
if ((_local3 > 270) && (_local2 < 90)) {
if (_local7) {
if ((mouse_rot < _local2) || (mouse_rot > _local3)) {
if (mouse_rot > 270) {
mouse_rot = mouse_rot - 360;
}
_local8 = ((_local3 + _local2) / 2) - 180;
_local5 = ((mouse_rot > _local8) ? (_local2) : (_local3));
}
} else if ((mouse_rot > _local2) && (mouse_rot < _local3)) {
_local8 = (_local3 + _local2) / 2;
_local5 = ((mouse_rot > _local8) ? (_local3) : (_local2));
}
} else if (_local7) {
_local8 = ((_local3 + _local2) / 2) + 180;
if ((mouse_rot > _local3) || (mouse_rot < _local2)) {
if (mouse_rot < _local8) {
_local5 = ((mouse_rot < _local2) ? (_local2) : (_local3));
} else {
_local5 = _local2;
}
}
} else if ((mouse_rot > _local2) && (mouse_rot < _local3)) {
_local8 = (_local3 + _local2) / 2;
_local5 = ((mouse_rot > _local8) ? (_local3) : (_local2));
}
return(_local5);
};
_root.data.player.gun.type = 0;
_root.data.player.gun.label = "knives";
_root.data.player.gun.power = 50;
_root.data.player.gun.availableTypes = 1;
_root.data.player.gun.energy = 50;
_root.data.player.gun.ammo_type = 1;
_root.data.player.gun.last_shot = -5000;
_root.data.player.gun.delay = 600;
_root.data.player.gun.is_shooting = false;
_root.data.player.gun.min_ang = 250;
_root.data.player.gun.max_ang = 180;
_root.data.player.gun.bullets_per_shot = 1;
_root.data.player.gun.bullets_linkage = "";
_root.data.player.gun.bullet_speed = 40;
_root.data.player.gun.availableWeapons = new Array(true, true, false, false, false);
_root.data.player.gun.Set = function (ntype, slabel, npower, nammo_type, nlast_shot, ndelay, nmin_ang, nmax_ang, ncur_koef, nbullets_per_shot, nbullets_linkage, nbullets_speed) {
var _local2 = _root.data.player.gun;
_local2.type = ntype;
_local2.label = slabel;
_local2.energy = (_local2.power = npower);
_local2.bullets_linkage = nbullets_linkage;
_local2.bullet_speed = nbullets_speed;
_local2.ammo_type = nammo_type;
_local2.last_shot = nlast_shot;
_local2.delay = ndelay;
_local2.bullets_per_shot = nbullets_per_shot;
_root.data.cursor.koef = ncur_koef;
_local2.min_ang = nmin_ang;
_local2.max_ang = nmax_ang;
};
_root.data.player.gun.makeAvailable = function (type) {
var _local3 = _root.data.player.gun.availableWeapons;
_local3[type] = true;
var _local2 = _local3.length;
while (_local2-- , _local2) {
if (_local3[_local2]) {
_root.graphic.gui.weapons.showWeapon(_local2);
} else {
_root.graphic.gui.weapons.hideWeapon(_local2);
}
}
_root.data.player.gun.last_shot = -10000;
_root.data.player.gun.changeWeapon(type);
};
_root.data.player.gun.changeWeapon = function (wpn) {
var _local2 = _root.data.player.gun;
if ((Timer.now - _local2.last_shot) < _local2.delay) {
return(undefined);
}
if (((wpn == undefined) || (!_root.data.player.gun.availableWeapons[wpn])) || (wpn == _local2.type)) {
return(undefined);
}
switch (wpn) {
case 1 :
_local2.Set(wpn, "knives", 20, 1, 0, 600, 280, 90, 1, 1, "knife", 40);
_root.graphic.gui.weapons.chooseWeapon(1);
break;
case 2 :
_local2.Set(wpn, "pistol", 40, 1, 0, 800, 250, 180, 2, 1, "bullet", 80);
_root.graphic.gui.weapons.chooseWeapon(2);
break;
case 3 :
_local2.Set(wpn, "dual_pistols", 25, 1, 0, 200, 250, 180, 4, 1, "bullet", 80);
_root.graphic.gui.weapons.chooseWeapon(3);
break;
case 4 :
_local2.Set(wpn, "shotgun", 100, 1, 0, 1000, 175, 65, 12, 3, "", 0);
_root.graphic.gui.weapons.chooseWeapon(4);
}
_root.data.player.gun.limit.Set();
_root.graphic.player.guns.gun.weapon = _local2.label;
_root.graphic.player.guns.gun.gotoAndStop(_local2.label);
};
_root.data.player.Reset = function () {
_root.data.player.gun.makeAvailable(1);
_root.data.player.max_health = 100;
_root.data.player.health = 100;
_root.data.player.experience = 0;
_root.data.player.accuracy = 50;
_root.data.player.magazine = 8;
_root.data.player.pos = new djo.Vector2P();
_root.data.player.jump = 2;
_root.data.player.enableAll();
var _local2 = _arr.length;
while (_local2-- , _local2) {
_root.data.player.gun.availableWeapons[_local2] = false;
_root.graphic.gui.weapons.hideWeapon(_local2);
}
_root.data.player.gun.makeAvailable(1);
_root.data.player.pos.vx = 0;
_root.data.player.pos.vy = 0;
_root.data.player.pos.x = 150;
_root.data.player.pos.y = _root.script.getY(_root.data.level.ground.arr, _root.data.player.pos.x);
_root.graphic.player._x = _root.data.player.pos.x;
_root.graphic.player._y = _root.data.player.pos.y;
_root.graphic.player._xscale = (_root.graphic.player._yscale = 60);
_root.graphic.player.animation = "idle";
_root.graphic.player.gotoAndPlay("idle");
};
Frame 48
_root.data.enemies = new Object();
_root.data.enemies.can_move = false;
_root.data.enemies.can_attack = false;
_root.data.enemies.bat_swarm = new jager.Swarm();
_root.data.enemies.bat_swarm.Init(_root.graphic.enemies, 400, 100);
_root.data.enemies.bat_swarm.setCenter(550, 65);
_root.data.enemies.bat_swarm.size = 2;
_root.data.enemies.bat_swarm.min_size = 0;
_root.data.enemies.bat_swarm.max_size = 10;
_root.data.enemies.bat_swarm.bats_to_add = 0;
_root.data.enemies.bat_swarm.add_delay = 0;
_root.data.enemies.bat_swarm.can_attack = true;
_root.data.enemies.bat_swarm.next_swarm_at = 1000;
_root.data.enemies.bat_swarm.next_swarm_distance = 5000;
_root.data.enemies.bat_swarm.next_bat_after = 4000;
_root.data.enemies.bat_swarm.stop_loop_attack = false;
_root.data.enemies.bat_swarm.addBats = function (delay) {
if (isNaN(delay)) {
var _local3 = 3;
while (_local3--) {
var _local2 = _root.data.enemies.bat_swarm.addObject(screen._width + 50, 100, 20, "Bat");
if (random(150) > 125) {
_local2.item = 10;
}
if (random(150) > 148) {
_local2.item = 11;
}
}
return(undefined);
}
_root.data.enemies.bat_swarm.bats_to_add = _root.data.enemies.bat_swarm.size;
_root.data.enemies.bat_swarm.add_delay = delay;
_root.data.enemies.bat_swarm.addBatsDelayer();
};
_root.data.enemies.bat_swarm.addBunch = function () {
_root.data.enemies.bat_swarm.size = 20;
_root.data.enemies.bat_swarm.addBats(100);
_root.data.enemies.bat_swarm.size = 2;
};
_root.data.enemies.bat_swarm.addBatsDelayer = function () {
var _local2 = _root.data.enemies.bat_swarm.addObject(595, -150, 20, "Bat");
if (random(200) > 195) {
_local2.item = 10;
}
if (random(200) > 198) {
_local2.item = 11;
}
if (_root.data.enemies.bat_swarm.bats_to_add > 0) {
_root.data.enemies.bat_swarm.bats_to_add--;
n = getTimer();
Timer.Add("bat" + n, _root.data.enemies.bat_swarm.add_delay);
Timer.timers["bat" + n].onOver = _root.data.enemies.bat_swarm.addBatsDelayer;
}
};
_root.data.enemies.bat_swarm.addBatsTimedEvent = function () {
var _local3 = _root.data.enemies.bat_swarm.count;
if (_local3 < 3) {
_root.data.enemies.bat_swarm.addObject(595, -150, 20, "Bat");
}
var _local2 = "bat" + getTimer();
Timer.Add(_local2, _root.data.enemies.bat_swarm.next_bat_after);
Timer.timers[_local2].onOver = _root.data.enemies.bat_swarm.addBatsTimedEvent;
};
_root.data.enemies.bat_swarm.addBatsDistanceEvent = function () {
var _local2 = _root.data.enemies.bat_swarm.size;
if (_local2 < _root.data.enemies.bat_swarm.max_size) {
_root.data.enemies.bat_swarm.addBats(300);
}
_root.data.events.Add(_root.data.level.distance, "x", ">", _root.data.enemies.bat_swarm.next_swarm_at, _root.data.enemies.bat_swarm.addBatsDistanceEvent);
_root.data.enemies.bat_swarm.next_swarm_at = _root.data.level.distance.x + _root.data.enemies.bat_swarm.next_swarm_distance;
};
_root.data.enemies.bat_swarm.Attack = function (nx, ny, batID) {
var _local4 = _root.data.enemies.bat_swarm;
var len = 0;
if (isNaN(batID)) {
len = _local4.arr.length;
len = Math.floor(Math.random() * len);
} else {
len = batID;
}
var o = _local4.arr[len];
if (o.is_attacking) {
return(undefined);
}
var _local7 = Timer.now - o.last_attack;
if (_local7 < 600) {
return(undefined);
}
var start_pos = new Object();
start_pos.x = o.pos.x;
start_pos.y = o.pos.y;
_local4.removeFromSwarm(len);
if (Math.random() > 0.5) {
o.last_attack = Timer.now;
o.is_attacking = true;
o.mc.onEnterFrame = function () {
if (!_root.data.enemies.bat_swarm.can_move) {
return(undefined);
}
var _local5 = nx - this._x;
var _local4 = ny - this._y;
o.pos.x = (this._x = this._x + (_local5 / 10));
var _local3 = 1 - ((this._x - start_pos.x) / (nx - start_pos.x));
_local3 = _local3 * _local3;
_local3 = _local3 * _local3;
o.pos.y = (this._y = ny - (_local3 * (ny - start_pos.y)));
if (Math.abs(_local5) < 1) {
o.pos.x = o.pos.x + (2 * (nx - o.pos.x));
nx = start_pos.x;
ny = start_pos.y;
this.onEnterFrame = function () {
if (!_root.data.enemies.bat_swarm.can_move) {
return(undefined);
}
var _local4 = nx - this._x;
var _local3 = ny - this._y;
o.pos.y = (this._y = this._y + (_local3 / 8));
o.pos.x = (this._x = this._x + (_local4 / 8));
if (Math.abs(_local3) < 1) {
delete this.onEnterFrame;
o.is_attacking = false;
o.in_swarm = true;
}
};
}
};
} else {
o.mc.onEnterFrame = function () {
if (!_root.data.enemies.bat_swarm.can_move) {
return(undefined);
}
var _local3 = -this._x;
o.pos.x = (this._x = this._x + (_local3 / 10));
if (Math.abs(_local3) < 5) {
_root.data.enemies.bat_swarm.Attack(_root.data.player.gun.dir.x, _root.data.player.gun.dir.y, len);
}
};
}
};
_root.data.enemies.bat_swarm.loopAttack = function () {
var _local2 = "bat_att" + getTimer();
if (_root.data.enemies.bat_swarm.stop_loop_attack) {
return(undefined);
}
Timer.Add(_local2, 2000);
Timer.timers[_local2].onOver = _root.data.enemies.bat_swarm.loopAttack;
if (_root.data.enemies.bat_swarm.count) {
var _local3 = _root.data.player.gun.dir;
if (_root.data.enemies.bat_swarm.can_attack) {
_root.data.enemies.bat_swarm.Attack(_local3.x, _local3.y);
}
}
};
_root.data.enemies.bat_swarm.startLoopAttack = function () {
_root.data.enemies.bat_swarm.stop_loop_attack = false;
var _local2 = "bat_att" + getTimer();
Timer.Add(_local2, 2000);
Timer.timers[_local2].onOver = _root.data.enemies.bat_swarm.loopAttack;
if (_root.data.enemies.bat_swarm.count) {
var _local3 = _root.data.player.gun.dir;
if (_root.data.enemies.bat_swarm.can_attack) {
_root.data.enemies.bat_swarm.Attack(_local3.x, _local3.y);
}
}
};
_root.data.enemies.zombies = new Object();
_root.data.enemies.zombies.arr = new Array();
_root.data.enemies.zombies.next_zombie_after = 10000;
_root.data.enemies.zombies.next_zombie_distance = 5000;
_root.data.enemies.zombies.max_zombies = 3;
_root.data.enemies.zombies.can_attack = false;
_root.data.enemies.zombies.speed = 1;
_root.data.enemies.zombies.no_spawned = 0;
_root.data.enemies.zombies.are_attacking = false;
_root.data.enemies.zombies.addZombie = function (nx, ny, type) {
var _local7 = _root.data.enemies.zombies.arr.length;
if (_local7 > _root.data.enemies.zombies.max_zombies) {
return(undefined);
}
var _local2 = new Object();
_local2.pos = new djo.Vector2P(nx, ny, -_root.data.enemies.zombies.speed, 0);
_local2.type = type;
_local2.player_dist = (_local2.aim_dist = 1000);
_local2.energy = 200;
_local2.is_dead = false;
_local2.is_moving = true;
_local2.is_attacking = false;
_local2.id = _root.data.enemies.zombies.no_spawned++;
_local2.item = 0;
if (random(150) > 125) {
_local2.item = 10;
}
if (random(150) > 148) {
_local2.item = 11;
}
var _local3 = _root.graphic.enemies.getNextHighestDepth();
_local2.mc = _root.graphic.enemies.attachMovie("Zombie", "zombie" + _local3, _local3, {_x:nx, _y:ny, _xscale:57, _yscale:57});
_local2.mc.animation = "walk";
_local2.mc.facing = "left";
_local2.mc.gotoAndPlay(random(8) + 1);
_local2.mc.is_busy = false;
_root.data.enemies.zombies.randomizeBody(_local2);
var _local6 = _root.data.enemies.zombies.arr.push(_local2);
return(_root.data.enemies.zombies.arr[_local6 - 1]);
};
_root.data.enemies.zombies.randomizeBody = function (z, type) {
type = (isNaN(type) ? 0 : (type));
type++;
var no_frms = 5;
with (z.mc) {
larm_up.gotoAndStop(random(no_frms) + 1);
larm_down.gotoAndStop(random(no_frms) + 1);
rarm_up.gotoAndStop(random(no_frms) + 1);
rarm_down.gotoAndStop(random(no_frms) + 1);
lleg_up.gotoAndStop(random(no_frms) + 1);
lleg_down.gotoAndStop(random(no_frms) + 1);
rleg_up.gotoAndStop(random(no_frms) + 1);
rleg_down.gotoAndStop(random(no_frms) + 1);
body.gotoAndStop(random(no_frms) + 1);
var hd = (random(no_frms) + 2);
head.gotoAndStop(hd);
}
};
_root.data.enemies.zombies.setBody = function (z, type) {
with (z.mc) {
larm_up.gotoAndStop(type);
larm_down.gotoAndStop(type);
rarm_up.gotoAndStop(type);
rarm_down.gotoAndStop(type);
lleg_up.gotoAndStop(type);
lleg_down.gotoAndStop(type);
rleg_up.gotoAndStop(type);
rleg_down.gotoAndStop(type);
body.gotoAndStop(type);
head.gotoAndStop(type);
}
};
_root.data.enemies.zombies.addZombieTimedEvent = function () {
var _local2 = "zomb" + getTimer();
var _local3 = _root.data.level.ground.arr[_root.data.level.ground.arr.length - 1];
var _local4 = random(4) + 1;
_root.data.enemies.zombies.addZombie(screen._width + 50, _local3, _local4);
Timer.Add(_local2, _root.data.enemies.zombies.next_zombie_after);
Timer.timers[_local2].onOver = _root.data.enemies.zombies.addZombieTimedEvent;
};
_root.data.enemies.zombies.Turn = function (z) {
if (z.mc.is_busy) {
return(undefined);
}
z.mc.is_busy = true;
z.is_moving = false;
z.mc.gotoAndPlay("turn");
var _local2 = "turn" + z.id;
Timer.Add(_local2, 500);
Timer.timers[_local2].onOver = function () {
z.pos.vx = _root.data.enemies.zombies.speed;
if (z.mc._xscale > 0) {
z.pos.vx = z.pos.vx * -1;
}
};
};
_root.data.enemies.zombies.chooseAction = function (zomb) {
if (!_root.data.enemies.zombies.can_attack) {
return(undefined);
}
if (zomb.is_dead) {
return(undefined);
}
var _local5 = _root.data.player;
var _local3 = zomb.pos.x - _local5.pos.x;
var _local4 = zomb.pos.y - _local5.pos.y;
if (!zomb.mc.is_busy) {
if (zomb.mc.facing == "left") {
if (_local3 < 30) {
if (_local3 > 10) {
if (_local4 < 10) {
if (_root.data.enemies.zombies.are_attacking) {
zomb.is_moving = false;
zomb.animation = "idle";
} else {
_root.data.enemies.zombies.grabAttack(zomb);
}
}
} else if (_local3 < -40) {
_root.data.enemies.zombies.Turn(zomb);
}
} else {
zomb.is_moving = true;
zomb.is_attacking = false;
zomb.mc.animation = "walk";
}
} else if (_local3 > -50) {
if (_local3 < 10) {
if (_local4 < 10) {
if (_root.data.enemies.zombies.are_attacking) {
zomb.is_moving = false;
zomb.animation = "idle";
} else {
_root.data.enemies.zombies.grabAttack(zomb);
}
}
} else if (_local3 > 40) {
_root.data.enemies.zombies.Turn(zomb);
}
} else {
zomb.is_moving = true;
zomb.is_attacking = false;
zomb.mc.animation = "walk";
}
}
};
_root.data.enemies.zombies.grabAttack = function (z) {
if (z.is_attacking) {
return(undefined);
}
if (_root.data.enemies.zombies.are_attacking) {
z.animation = "idle";
z.pos.vx = 0;
return(undefined);
}
z.is_attacking = true;
z.is_moving = false;
_root.data.enemies.zombies.are_attacking = (z.is_attacking = true);
var _local3 = new djo.Vector2P(_root.graphic.player.Head._x, _root.graphic.player.Head._y, 0, 0);
_root.data.player.Hit(_local3, 10);
_root.graphic.player.animation = "strugle";
_root.graphic.player.gotoAndPlay("strugle");
_root.data.player.is_busy = true;
z.is_busy = true;
z.mc.animation = "attack_grab";
z.mc.gotoAndPlay(z.mc.animation);
var _local2 = "strugle" + getTimer();
Timer.Add(_local2, 5000);
Timer.timers[_local2].onOver = function () {
_root.graphic.player.animation = "strugle_win";
_root.graphic.player.gotoAndPlay("strugle_win");
_root.data.player.gun.limit.Set();
z.is_moving = false;
z.mc.animation = "idle";
z.mc.gotoAndPlay("hit_head");
z.pos.x = z.pos.x + 50;
_root.data.enemies.zombies.are_attacking = false;
_root.data.enemies.zombies.Wait(z, 1500);
};
};
_root.data.enemies.zombies.Wait = function (z, d) {
var _local2 = "zombie_wait" + getTimer();
Timer.Add(_local2, d);
Timer.timers[_local2].onOver = function () {
z.is_busy = false;
if (!z.is_dead) {
z.is_attacking = false;
z.is_moving = true;
if (!_root.data.enemies.zombies.are_attacking) {
_root.data.enemies.zombies.chooseAction(z);
} else {
z.mc.animation = "idle";
_root.data.enemies.zombies.Wait(z, 1500);
}
}
};
};
_root.data.enemies.zombies.Move = function () {
var _local3 = _root.data.enemies.zombies.arr.length;
var _local4 = _root.data.level.camera.vx;
while (_local3--) {
var _local2 = _root.data.enemies.zombies.arr[_local3];
_local2.pos.x = _local2.pos.x - _local4;
if (_local2.is_moving && (!_local2.mc.is_busy)) {
_local2.pos.x = _local2.pos.x + _local2.pos.vx;
}
_local2.pos.y = _root.script.getY(_root.data.level.ground.arr, _local2.pos.x);
if ((_local2.mc._x != undefined) && (_local2.pos.x > -150)) {
_local2.mc._x = _local2.pos.x;
_local2.mc._y = _local2.pos.y;
} else {
_local2.mc.removeMovieClip();
_root.data.enemies.zombies.deleteZombie(_local3);
}
}
};
_root.data.enemies.zombies.addZombieDistanceEvent = function () {
var _local2 = _root.data.enemies.bat_swarm.size;
if (_local2 < _root.data.enemies.bat_swarm.max_size) {
_root.data.enemies.bat_swarm.addBats(300);
}
_root.data.events.Add(_root.data.level.distance, "x", ">", _root.data.enemies.bat_swarm.next_swarm_at, _root.data.enemies.bat_swarm.addBatsDistanceEvent);
_root.data.enemies.bat_swarm.next_swarm_at = _root.data.level.distance.x + _root.data.enemies.bat_swarm.next_swarm_distance;
};
_root.data.enemies.zombies.deleteZombie = function (id) {
var _local2 = _root.data.enemies.zombies.arr;
var _local3 = _local2[0];
_local2[0] = _local2[id];
_local2[id] = _local3;
_root.data.enemies.zombies.count--;
_local2.shift();
};
_root.data.enemies.zombies.closestFromTheRight = function () {
var _local4 = _root.data.enemies.zombies.arr;
var _local3 = new djo.Vector2P(screen._width, _root.script.getY(_root.data.level.ground.arr, screen._width), 0, 200);
var _local5 = _local4.length;
var _local2 = _local5;
while (_local2--) {
if (_local4[_local2].player_dist < 0) {
_local2++;
if (_local2 < _local5) {
_local3.Copy(_local4[_local2].pos);
if (_local4[_local2].is_dead) {
_local3.vy = 20;
} else {
_local3.vy = 100;
}
return(_local3);
}
return(_local3);
}
}
if (_local5 > 0) {
_local3.Copy(_local4[0].pos);
if (_local4[0].is_dead) {
_local3.vy = 20;
} else {
_local3.vy = 100;
}
return(_local3);
}
return(_local3);
};
_root.data.enemies.zombies.closestFromTheLeft = function () {
var _local4 = _root.data.enemies.zombies.arr;
var _local5 = _local4.length;
var _local3 = new djo.Vector2P(0, _root.script.getY(_root.data.level.ground.arr, 0), 0, 200);
if (_local5 == 0) {
return(_local3);
}
var _local2 = 0;
while (_local2 < _local5) {
if (_local4[_local2].player_dist >= 0) {
_local2--;
if (_local2 >= 0) {
_local3.Copy(_local4[_local2].pos);
if (_local4[_local2].is_dead) {
_local3.vy = 20;
} else {
_local3.vy = 100;
}
return(_local3);
}
return(_local3);
}
_local2++;
}
_local3.Copy(_local4[_local5 - 1].pos);
if (_local4[_local5 - 1].is_dead) {
_local3.vy = 20;
} else {
_local3.vy = 100;
}
return(_local3);
};
_root.data.enemies.Reset = function () {
_root.data.enemies.bat_swarm.clearSwarm();
_root.data.enemies.bat_swarm.Init(_root.graphic.enemies, 400, 100);
_root.data.enemies.bat_swarm.setCenter(550, 65);
_root.data.enemies.bat_swarm.size = 2;
_root.data.enemies.bat_swarm.can_attack = true;
_root.data.enemies.bat_swarm.can_move = true;
_root.data.enemies.zombies.can_attack = true;
var _local3 = _root.data.enemies.zombies.arr.length;
while (_local3--) {
var _local2 = _root.data.enemies.zombies.arr.shift();
_local2.mc.removeMovieClip();
}
_root.data.enemies.zombies.no_spawned = 0;
_root.data.enemies.zombies.max_zombies = 3;
_root.data.enemies.zombies.speed = 1;
_root.data.enemies.zombies.no_spawned = 0;
_root.data.enemies.zombies.are_attacking = false;
_root.data.enemies.can_move = true;
};
Frame 49
_root.data.particles = new Object();
_root.data.particles.arr = new Object();
_root.data.particles.Add = function (type, x, y, force, ang) {
if ((type == undefined) || (type == "")) {
return(undefined);
}
var _local3;
var _local4;
var _local5;
switch (type) {
case "dirt" :
_local4 = 1 + Math.round(force / 20);
_local5 = 0.174532925199433;
_local3 = _root.script.createParticleSet(_root.graphic.particles, x, y, "dirt_particle", _local4, ang, _local5, force, 0.92, 0.7, 1.8, 50, true);
_root.data.particles.arr[_local3.ime] = _local3;
break;
case "zombie_flesh" :
_local4 = 6;
_local5 = 0.174532925199433;
_local3 = _root.script.createParticleSet(_root.graphic.particles, x, y, "dirt_particle", _local4, ang, _local5, force, 0.92, 0.7, 1, 50, true);
_root.data.particles.arr[_local3.ime] = _local3;
break;
case "blood" :
_local4 = 10;
_local5 = 0.523598775598299;
_local3 = _root.script.createParticleSet(_root.graphic.particles, x, y, "blood_particle", _local4, ang, _local5, force / 5, 0.92, 0.7, 0.5, 20, false);
_root.data.particles.arr[_local3.ime] = _local3;
break;
case "small_explosion" :
var _local8 = _root.graphic.particles.getNextHighestDepth();
var _local10 = _root.graphic.particles.attachMovie("small_explode", "smx" + _local8, _local8, {_x:x, _y:y, _xscale:80, _yscale:80});
_local10.onEnterFrame = function () {
this._x = this._x - _root.data.level.camera.vx;
};
break;
case "tiny_explosion" :
_local8 = _root.graphic.particles.getNextHighestDepth();
_local10 = _root.graphic.particles.attachMovie("small_explode", "smx" + _local8, _local8, {_x:x, _y:y, _xscale:50, _yscale:50});
_local10.onEnterFrame = function () {
this._x = this._x - _root.data.level.camera.vx;
};
break;
case "medium_explosion" :
_local8 = _root.graphic.particles.getNextHighestDepth();
_local10 = _root.graphic.particles.attachMovie("small_explode", "smx" + _local8, _local8, {_x:x, _y:y});
_local10.onEnterFrame = function () {
this._x = this._x - _root.data.level.camera.vx;
};
}
};
_root.data.particles.Update = function () {
for (var _local2 in _root.data.particles.arr) {
_root.data.particles.arr[_local2].Update(_root.data.level.camera.vx);
}
};
_root.data.particles.Reset = function () {
var _local2;
do {
_local2 = _root.data.particles.arr.shift();
_local2.Reset();
} while (_local2 != undefined);
};
Frame 50
_root.data.bullets = new Object();
_root.data.bullets.arr = new Array();
_root.data.bullets.Add = function (linkage) {
var _local2 = new Object();
_local2.pos = new djo.Vector2P();
_local2.pos.Copy(_root.data.player.gun.dir);
_local2.pos.Move();
_local2.pos.Normalize();
_local2.pos.Mul(_root.data.player.gun.bullet_speed);
_local2.pos.plot(_root.graphic.fx);
_local2.is_visible = true;
var _local3 = _root.graphic.particles.getNextHighestDepth();
_local2.mc = _root.graphic.particles.attachMovie(linkage, "bullet" + _local3, _local3);
_local2.mc._rotation = _root.script.vectorAngleDeg(_local2.pos);
_root.data.bullets.arr.push(_local2);
};
_root.data.bullets.Update = function () {
var _local4 = _root.data.bullets.arr;
if (!_local4[0].is_visible) {
_local4.shift();
}
var _local3 = 0;
var _local5 = _local4.length;
if (!_local5) {
return(undefined);
}
while (_local3 < _local5) {
var _local2 = _local4[_local3];
if (_local2.mc != undefined) {
_local2.pos.x = _local2.pos.x + _local2.pos.vx;
_local2.pos.y = _local2.pos.y + _local2.pos.vy;
_local2.mc._x = _local2.pos.x;
_local2.mc._y = _local2.pos.y;
_local2.is_visible = _root.script.inScreenBoundaries(_local2.pos.x, _local2.pos.y);
if (!_local2.is_visible) {
_local2.mc.removeMovieClip();
}
}
_local3++;
}
};
_root.data.bullets.Reset = function () {
var _local3 = _root.data.bullets.arr.length;
while (_local3--) {
var _local2 = _root.data.bullets.arr.shift();
_local2.mc.removeMovieClip();
}
};
Frame 51
_root.data.items = new Object();
_root.data.items.arr = new Array();
_root.data.items.linkage = "Items";
_root.data.items.canvas = _root.graphic.objects;
_root.data.items.no_spawned = 0;
_root.data.items.collect_dist = 10;
_root.data.items.Add = function (nx, ny, itm) {
var _local2 = new Object();
_local2.x = nx;
_local2.y = ny;
_local2.type = itm;
_local2.player_dist = 1000;
switch (itm) {
case 2 :
_local2.onCollect = function () {
_root.data.player.gun.makeAvailable(2);
};
break;
case 3 :
_local2.onCollect = function () {
_root.data.player.gun.makeAvailable(3);
};
break;
case 4 :
_local2.onCollect = function () {
_root.data.player.gun.makeAvailable(4);
};
break;
case 10 :
_local2.onCollect = function () {
_root.data.player.Heal(10);
};
break;
case 11 :
_local2.onCollect = function () {
_root.data.player.Heal(25);
};
}
var _local3 = _root.data.items.canvas.getNextHighestDepth();
_local2.mc = _root.data.items.canvas.attachMovie(_root.data.items.linkage, "item" + _local3, _local3, {_x:_local2.x, _y:_local2.y});
_local2.mc.gotoAndStop(_local2.type);
_root.data.items.no_spawned++;
_root.data.items.arr.push(_local2);
};
_root.data.items.Update = function () {
var _local4 = _root.data.items.arr.length;
if (_local4 < 1) {
return(undefined);
}
while (_local4--) {
var _local3 = _root.data.items.arr[_local4];
_local3.x = _local3.x - _root.data.level.camera.vx;
_local3.y = _local3.y + ((_root.script.getY(_root.data.level.ground.arr, _local3.x) - _local3.y) / 8);
_local3.mc._x = _local3.x;
_local3.mc._y = _local3.y;
var _local6 = Math.abs(_local3.x - _root.data.player.pos.x);
var _local5 = Math.abs(_local3.y - _root.data.player.pos.y);
if ((_local6 < _root.data.items.collect_dist) && (_local5 < (_root.data.items.collect_dist * 2))) {
_local3.onCollect();
_local3.mc.onEnterFrame = function () {
this._xscale = (this._yscale = this._yscale * 1.05);
this._alpha = this._alpha * 0.9;
if (this._alpha < 1) {
this.removeMovieClip();
}
};
_root.data.items.deleteItem(_local4);
}
if (_local3.x < -150) {
_root.data.items.deleteItem(_local4);
}
}
};
_root.data.items.deleteItem = function (id) {
var _local2 = _root.data.items.arr;
var _local3 = _local2[0];
_local2[0] = _local2[id];
_local2[id] = _local3;
_local2.shift();
};
_root.data.items.Reset = function () {
var _local3 = _root.data.items.arr.length;
while (_local3--) {
var _local2 = _root.data.items.arr.shift();
_local2.mc.removeMovieClip();
}
};
Frame 52
_root.graphic._visible = false;
_root.graphic._alpha = 100;
Mouse.hide();
_root.graphic.gui.dot.onEnterFrame = function () {
this._x = _root._xmouse;
this._y = _root._ymouse;
};
Timer.Reset();
_root.data.game.over = false;
_root.data.game.pause = false;
_root.data.game.score = 0;
_root.data.game.stats.shots = 0;
_root.data.game.stats.hits = 0;
_root.data.game.stats.kills = 0;
_root.data.level.Reset();
_root.script.loadLevel1();
_root.Music.can_add_enemies = false;
_root.data.events.Reset();
_root.data.player.Reset();
_root.data.player.updateWalls();
_root.data.enemies.Reset();
_root.data.particles.Reset();
_root.data.bullets.Reset();
_root.data.items.Reset();
_root.Music.playTutorial();
root.data.cursor.pos.x = -150;
root.data.cursor.pos.y = -150;
_root.graphic.gui.cursor._x = root.data.cursor.pos.x;
_root.graphic.gui.cursor._y = root.data.cursor.pos.y;
Frame 61
_root.data.enemies.bat_swarm.can_attack = false;
_root.data.enemies.bat_swarm.can_move = false;
_root.data.enemies.zombies.can_attack = false;
_root.data.enemies.zombies.can_move = false;
_root.data.player.disableAll();
var dlg = ((_root.dlgTutorial = new Array()));
var o = new Object();
o.x = 350;
o.y = 300;
o.msg = "You hear a voice inside your head... \n*click the window to continue";
o.pic = "";
o.style = "holy";
o.onShowAction = function () {
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 300;
o.msg = "[Voice]:\nWolfgang... you've finally arrived...\nCan you sense my thoughts?";
o.pic = "1";
o.style = "holy";
o.onShowAction = function () {
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 300;
o.msg = "[Voice]:\nAre you alright?\nCan you walk?\n(press [A] [D] [S])\n*click this window to try it out.";
o.pic = "1";
o.style = "holy";
o.onShowAction = function () {
_root.data.player.can_move = true;
_root.data.player.can_crouch = true;
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 100;
o.y = 100;
o.msg = "*click here to continue...";
o.pic = "";
o.style = "holy";
o.onShowAction = function () {
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 300;
o.msg = "[Voice]:\nDo you think you can jump?\n(press [SPACE] once for a normal jump, or twice for double jump)";
o.pic = "1";
o.style = "holy";
o.onShowAction = function () {
_root.data.player.can_jump = true;
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 300;
o.msg = "[Voice]:\nI'm glad to see you're alright.\nDo you remember how to use your weapons?";
o.pic = "1";
o.style = "holy";
o.onShowAction = function () {
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 300;
o.msg = "[Voice]:\n Move your mouse around you.\nNotice that you cannot aim wherever you want.\nGet used to the limitations of your physical body...\n...once again.";
o.pic = "1";
o.style = "holy";
o.onShowAction = function () {
_root.data.player.can_aim = (_root.data.player.can_shoot = true);
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 300;
o.msg = "[Voice]:\n You dropped your gun over there. Go pick it up.\n(move forward ---> )";
o.pic = "1";
o.style = "holy";
o.onShowAction = function () {
var _local2 = screen._width + 100;
var _local3 = _root.script.getY(_root.data.level.ground.arr, _local2);
_root.data.items.Add(_local2, _local3, 2);
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 300;
o.msg = "[Voice]:\n Oh look out! BATS! \n I'll use my mental powers to keep them from attacking you.";
o.pic = "1";
o.style = "holy";
o.onShowAction = function () {
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 100;
o.msg = "[Bats]:\nWarning! Incoming bats.";
o.pic = "3|right";
o.style = "unholy";
o.onShowAction = function () {
};
o.onWrapAction = function () {
_root.data.enemies.can_move = true;
_root.data.enemies.bat_swarm.size = 3;
_root.data.enemies.bat_swarm.addBats();
_root.data.enemies.bat_swarm.addBatsTimedEvent();
};
dlg.push(o);
o = new Object();
o.x = 100;
o.y = 100;
o.msg = "*click here to continue...";
o.pic = "";
o.style = "holy";
o.onShowAction = function () {
};
o.onWrapAction = function () {
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 300;
o.msg = "[Voice]:\n Ghhhh... \nI cannot hold them no longer!\nYou're too far! Come to me Wolfgang. \nFight your way through the graveyard";
o.pic = "1";
o.style = "holy";
o.onShowAction = function () {
};
o.onWrapAction = function () {
_root.Music.nextSong("game");
};
dlg.push(o);
o = new Object();
o.x = 350;
o.y = 100;
o.msg = "[Bats]:\nThe spell is broken.\nThe bats will attack you now.";
o.pic = "3|right";
o.style = "unholy";
o.onShowAction = function () {
};
o.onWrapAction = function () {
_root.data.enemies.bat_swarm.can_move = true;
_root.data.enemies.bat_swarm.can_attack = true;
_root.data.enemies.bat_swarm.startLoopAttack();
_root.data.enemies.zombies.can_attack = true;
_root.data.enemies.zombies.can_move = true;
_root.data.enemies.can_move = true;
_root.data.level.distance.x = 0;
_root.script.loadLevel1();
_root.Music.can_add_enemies = true;
};
dlg.push(o);
_root.script.loadLevel1 = function () {
_root.data.level.distance.events.arr = new Array();
var _local2 = 100;
var _local3 = _root.data.enemies.zombies.next_zombie_distance;
_local3 = 2000;
while (_local2-- , _local2) {
_root.data.level.distance.events.Add(_local2 * _local3, function () {
_root.data.enemies.zombies.addZombie(screen._width + 50, 200, 1);
});
}
_local3 = 1500;
_local2 = 133;
while (_local2-- , _local2) {
_root.data.level.distance.events.Add(_local2 * _local3, function () {
_root.data.enemies.bat_swarm.addBats(300);
});
}
_root.data.level.distance.events.Add(12456, function () {
_root.script.showTimedMessage(5000, 500, 100, "[Wolfgang]:\nHmmmm...\n...a dead policeman?", "", "holy");
var _local2 = _root.data.enemies.zombies.addZombie(screen._width + 50, 200, 1);
_root.data.enemies.zombies.setBody(_local2, 10);
_local2.item = 3;
});
_root.data.level.distance.events.Add(33258, function () {
_root.script.showTimedMessage(5000, 500, 100, "[Wolfgang]:\nThat zombie hunter has a shotgun...\n I don't think he's gonna need it any more...", "", "holy");
var _local2 = _root.data.enemies.zombies.addZombie(screen._width + 50, 200, 1);
_root.data.enemies.zombies.setBody(_local2, 11);
_local2.item = 4;
});
_root.data.level.distance.events.Add(33258, function () {
_root.script.showTimedMessage(5000, 500, 100, "[Developer]:\nWill be continued by tomorrow...\n I don't think he's gonna need it any more...", "", "holy");
});
_root.data.level.distance.events.arr.sortOn("x", Array.NUMERIC);
};
_root.script.addBigSwarm = function () {
_root.script.showTimedMessage(5000, 500, 100, "[Warning]:\n Large bat swarm ahead!", "3|right", "unholy", _root.data.enemies.bat_swarm.addBunch);
};
Frame 62
_root.script.groundHitTest = function (x, y) {
var _local2 = _root.script.findNode(arr, x);
y = _root.script.getY(arr, x);
};
_root.script.getGroundNormal = function (arr, x) {
var _local3 = _root.script.findNode(arr, x);
var _local5 = arr[_local3]._y - arr[_local3 + 1]._y;
var _local6 = arr[_local3]._x - arr[_local3 + 1]._x;
var _local2 = new Object();
_local2.pt = new Object();
_local2.pt._x = x;
_local2.pt._y = arr[_local3]._y + ((_local5 / _local6) * (x - arr[_local3]._x));
_local2.v = new Object();
_local2.v._y = -_local6;
_local2.v._x = _local5;
return(_local2);
};
_root.script.getM = function (arr, x) {
var _local2 = _root.script.findNode(arr, x);
var _local5 = arr[_local2]._y - arr[_local2 + 1]._y;
var _local4 = arr[_local2]._x - arr[_local2 + 1]._x;
return(_local5 / _local4);
};
_root.script.scrollArrItems = function (arr, xamt, yamt) {
var _local3 = arr.length;
var _local1 = 0;
while (_local1 < _local3) {
arr[_local1]._x = arr[_local1]._x + xamt;
arr[_local1]._y = arr[_local1]._y + yamt;
_local1++;
}
};
_root.script.updateAttachedArrObjects = function (arr) {
var _local3 = arr.length;
var _local1 = 0;
while (_local1 < _local3) {
arr[_local1].attached._x = arr[_local1]._x;
arr[_local1].attached._y = arr[_local1]._y;
_local1++;
}
};
_root.script.scroll = function (xamt, yamt) {
var _local4 = xamt * _root.data.level.ground_front.speed;
var _local5 = yamt * _root.data.level.ground_front.speed;
var _local6 = xamt * _root.data.level.ground_back.speed;
var _local7 = yamt * _root.data.level.ground_back.speed;
var _local9 = xamt * _root.data.level.bg.speed;
var _local8 = yamt * _root.data.level.bg.speed;
_root.script.trimAndCreate(_root.data.level.ground);
_root.script.trimAndCreate(_root.data.level.ground_front);
_root.script.trimAndCreate(_root.data.level.ground_back);
_root.script.trimAndCreate(_root.data.level.bg);
_root.script.trimAndCreate(_root.data.level.sky);
_root.script.scrollArrItems(_root.data.level.ground.arr, xamt, yamt);
_root.script.scrollArrItems(_root.data.level.ground_front.arr, _local4, _local5);
_root.script.scrollArrItems(_root.data.level.ground_back.arr, _local6, _local7);
_root.script.scrollArrItems(_root.data.level.bg.arr, _local9, _local8);
_root.script.scrollArrItems(_root.data.level.sky.arr, xamt / settings.speed.forward, 0);
};
_root.script.trimAndCreate = function (o) {
if (o.linkage == "none") {
if (o.arr[1]._x < 0) {
o.arr.shift();
_root.script.trimAndCreate(o);
}
} else if ((o.arr[1]._x < 0) && (o.arr[0]._x < (-o.arr[0].attached._width))) {
o.arr[0].attached.removeMovieClip();
o.arr.shift();
_root.script.trimAndCreate(o);
}
var _local6 = o.arr.length - 1;
if (o.arr[_local6]._x < (screen._width + (_global.settings.speed.forward * 2))) {
var _local4 = new Object();
var _local5 = o.x_range;
_local4._x = (o.arr[_local6]._x + (_root.data.level.freq * o.speed)) + rn.Random(-_local5, _local5);
_local5 = o.y_range;
_local4._y = (o.arr[_local6]._y - o.y_median) / 3;
_local4._y = ((o.y_median + _local4._y) + ((_root.data.level.slant.koef * (_local4._x - _root.data.level.camera.x)) / 3)) + rn.Random(-_local5, _local5);
if (o.linkage != "none") {
_local4.type = Math.floor(rn.Random(o.linkage_len)) + 1;
var _local7 = o.mc.getNextHighestDepth();
_local4.attached = o.mc.attachMovie(o.linkage, "node" + _local7, _local7, {_xscale:o._xscale, _yscale:o._yscale});
_local4.attached.gotoAndStop(_local4.type);
}
o.arr.push(_local4);
}
};
_root.script.rotateWithEaseA = function (srcRot, destRot, ease) {
if (ease < 1) {
return(0);
}
var _local2 = srcRot - destRot;
if (_local2 > 180) {
destRot = destRot + 360;
} else if (_local2 < -180) {
destRot = destRot - 360;
}
var _local3 = (destRot - srcRot) / ease;
return(_local3);
};
_root.script.bounceVector = function (v, w, frict) {
var _local3 = v.projectTo(w);
var _local2 = v.projectTo(w.rightNormal());
_local2.Mul(-1);
v.vx = (_local3.vx + _local2.vx) * frict;
v.vy = (_local3.vy + _local2.vy) * frict;
return(v);
};
_root.script.bounceOffGround = function (v, frict) {
var _local5 = _root.data.level.ground.arr;
var _local4 = _root.script.findNode(_local5, v.x);
if (_local4 == _local5.length) {
_local4 = _local4 - 2;
}
if (_local4 < 0) {
_local4 = 0;
}
var _local6 = _local5[_local4];
var _local11 = _local5[_local4 + 1];
var _local3 = new djo.Vector2P(_local6._x, _local6._y, _local11._x - _local6._x, _local11._y - _local6._y);
var _local8 = new djo.Vector2P(_local3.x, _local3.y, v.x - _local3.x, v.y - _local3.y);
_local8 = _local8.projectTo(_local3.rightNormal());
var _local9 = v.Magnitude();
var _local7 = ((2 + _local9) - _local8.Magnitude()) / 2;
if (_local9 < 0.2) {
v = v.Intersection(_local3);
} else if (_local7 > 0) {
var _local10 = _local3.leftNormal().Unit();
v.x = v.x + (_local10.vx * _local7);
v.y = v.y + (_local10.vy * _local7);
v = _root.script.bounceVector(v, _local3, frict);
}
return(v);
};
_root.script.createParticleSet = function (mc, x, y, linkage, no_particles, angle, spread, power, damp, friction, g, life, are_bouncable) {
var o = new Object();
o.arr = new Array();
o.mc = mc;
o.x = x;
o.y = y;
o.count = no_particles;
o.angle = angle;
o.spread = spread;
o.linkage = linkage;
o.death = life;
o.life = 0;
o.power = power;
o.damp = damp;
o.friction = friction;
o.g = g;
o.ime = linkage + getTimer();
o.are_bouncable = are_bouncable;
var cnt = 0;
while (cnt < no_particles) {
var _local7 = new Object();
var _local9 = (angle + ((Math.random() * spread) * 2)) - spread;
var _local8 = ((Math.random() * 0.5) * power) + (0.5 * power);
_local7.v = new djo.Vector2P(x, y, _local8 * Math.cos(_local9), _local8 * Math.sin(_local9));
_local7.life = 1;
var _local6 = mc.getNextHighestDepth();
_local7.mc = mc.attachMovie(linkage, "part" + _local6, _local6);
_local7.mc._x = x;
_local7.mc._y = y;
_local7.mc._xscale = (_local7.mc._yscale = (Math.random() * 50) + 50);
o.arr.push(_local7);
cnt++;
}
o.Update = function (amt) {
if ((this.life++) > this.death) {
return(undefined);
}
var _local6 = -1;
cnt = this.count;
while ((_local6++) < cnt) {
var _local4 = this.arr[_local6];
var _local5 = _local4.mc;
var _local3 = _local4.v;
if (_local4 != undefined) {
_local3.Mul(this.damp);
_local3.vy = _local3.vy + this.g;
_local3.x = _local3.x + (_local3.vx - amt);
_local3.y = _local3.y + _local3.vy;
_local5._x = _local3.x;
_local5._y = _local3.y;
_local4.life++;
_local5._alpha = (1 - (_local4.life / this.death)) * 100;
if (this.are_bouncable) {
_local3 = _root.script.bounceOffGround(_local3, this.friction);
}
}
}
};
o.Reset = function () {
var _local2 = o.arr.length;
while (_local2--) {
var _local1 = o.arr.shift();
_local1.mc.removeMovieClip();
}
};
return(o);
};
_root.script.Shoot = function () {
_root.data.game.stats.shots++;
if (_root.data.player.gun.bullets_linkage != "") {
var _local2 = _root.data.player.gun.dir.Unit();
_local2.x = (_local2.y = 0);
_root.graphic.player.guns.gun.guntip.localToGlobal(_local2);
_root.data.bullets.Add(_root.data.player.gun.bullets_linkage);
}
_root.script.checkShootGround();
_root.script.checkShootSwarm();
_root.script.checkShootZombies();
};
_root.script.checkShootGround = function () {
var _local6 = _root.data.level.ground.arr;
var _local4 = 0;
var _local10 = _local6.length;
while (_local4 < (_local10 - 2)) {
var _local5 = new djo.Vector2P();
_local5.Copy(_root.data.player.gun.dir);
_local5.Mul(12);
var _local8 = new djo.Vector2P(_local6[_local4]._x, _local6[_local4]._y, _local6[_local4 + 1]._x - _local6[_local4]._x, _local6[_local4 + 1]._y - _local6[_local4]._y);
if (_local5.Intersects(_local8)) {
var _local2 = new djo.Vector2P();
_local2.Copy(_local5);
_local2.x = _local2.x + _local2.vx;
_local2.y = _local2.y + _local2.vy;
_local2 = _root.script.bounceOffGround(_local2, 2);
var _local7 = _root.data.player.gun.power;
var _local3 = _local5.Intersection(_local8);
_local3.vx = _local2.vx;
_local3.vy = _local2.vy;
var _local9 = _local2.Angle();
_local2.Mul(0.02);
_local3.Plus(_local2);
_root.data.particles.Add("tiny_explosion", _local3.x, _local3.y, _local7, _local9);
_root.data.particles.Add("dirt", _local3.x, _local3.y, _local7, _local9);
return(undefined);
}
_local4++;
}
};
_root.script.checkShootSwarm = function () {
var _local3 = _root.data.enemies.bat_swarm.arr;
var _local9 = ((_root.data.player.gun.power / 100) * 40) + 10;
var _local5 = _root.data.player.gun;
var _local4 = new djo.Vector2P();
_local4.Copy(_root.data.player.gun.dir);
_local4.Move();
var _local8 = 1;
for (var _local10 in _local3) {
if (_local3[_local10].aim_dist < _local9) {
var _local2 = _local3[_local10];
var _local6 = new djo.Vector2P(_local4.x, _local4.y, _local2.pos.x - _local4.x, _local2.pos.y - _local4.y);
var _local7 = _local6.Dot(_local4);
if (_local7 > 0) {
_root.data.game.stats.hits++;
_local2.energy = _local2.energy - _local5.energy;
_root.data.particles.Add("small_explosion", _local3[_local10].pos.x, _local3[_local10].pos.y, pwr, ang);
if (_local2.energy < 0) {
_local5.energy = -_local2.energy;
d = _root.graphic.particles.count;
var pwr = _local5.power;
var ang = _local4.Angle();
_root.data.particles.Add("blood", _local3[_local10].pos.x, _local3[_local10].pos.y, pwr, ang);
_root.data.game.addScore(50 * _local8);
_local2.mc.gotoAndPlay("die");
if (_local2.item) {
_root.data.items.Add(_local2.mc._x, _local2.mc._y, _local2.item);
}
_root.data.game.stats.kills++;
_root.data.enemies.bat_swarm.deleteObject(_local10);
if (_local5.energy < 0) {
return(undefined);
}
_local8++;
}
}
}
}
};
_root.script.shootZombiePart = function (z, part) {
if (z.is_dead) {
return(undefined);
}
var _local6 = _root.data.player.gun;
if (_local6.energy < 0) {
return(undefined);
}
var _local4 = new djo.Vector2P();
var _local5 = _local6.power;
_local4.Copy(_root.data.player.gun.dir);
_local4.Move();
var _local3 = new djo.Vector2P();
if (part == "head") {
z.mc.ptHead.localToGlobal(_local3);
} else if (part == "torso") {
z.mc.ptTorso.localToGlobal(_local3);
} else if (part == "legs") {
z.mc.ptLegs.localToGlobal(_local3);
}
var _local12 = new djo.Vector2P(_local4.x, _local4.y, _local3.x - _local4.x, _local3.y - _local4.y);
var _local13 = _local12.Dot(_local4);
if (_local13 > 0) {
var _local8 = ((_local4.x > z.pos.x) ? -1 : 1);
_local8 = _local8 * ((z.mc.facing == "left") ? 1 : -1);
_root.data.game.stats.hits++;
var _local9 = 0;
if (part == "head") {
_local9 = _local4.Distance(_local3) / 330;
_local5 = _local5 * (2 + (1 - _local9));
z.energy = z.energy - _local5;
if ((z.energy < 0) && (_local6.power > 24)) {
z.mc.head.gotoAndPlay(1);
_root.data.particles.Add("zombie_flesh", _local3.x, _local3.y, _local5, _local4.Angle());
}
_local6.energy = _local6.energy - _local5;
z.pos.x = z.pos.x + ((0.05 * _local5) * _local8);
} else if (part == "torso") {
_local9 = _local4.Distance(_local3) / 330;
_local5 = _local5 * (0.7 + (1 - _local9));
z.energy = z.energy - _local5;
_local6.energy = _local6.energy - _local5;
z.pos.x = z.pos.x + ((0.1 * _local5) * _local8);
} else if (part == "legs") {
_local9 = _local4.Distance(_local3);
z.energy = z.energy - (0.3 * _local6.energy);
}
var _local11 = _local4.Angle();
_root.data.particles.Add("small_explosion", _local3.x, _local3.y, _local5, _local11);
_root.data.particles.Add("blood", _local3.x, _local3.y, _local5, _local11);
if ((z.animation == "turn") && (z.mc.is_busy)) {
z.is_moving = false;
z.mc.is_busy = true;
_root.data.enemies.zombies.Wait(z, 500);
_root.data.enemies.zombies.Turn(z);
} else {
z.is_moving = false;
z.mc.is_busy = true;
_root.data.enemies.zombies.Wait(z, 500);
}
if (z.energy < 0) {
_local6.energy = -z.energy;
z.is_dead = true;
_root.data.game.addScore(300);
var _local10 = random(2) + 1;
_local10 = "die" + _local10;
_root.data.game.stats.kills++;
z.mc.gotoAndPlay(_local10);
if (z.item) {
_root.data.items.Add(z.mc._x, z.mc._y, z.item);
}
if (_local6.energy < 0) {
return(undefined);
}
score_multiplier++;
} else if (part == "head") {
if (_local8 < 0) {
z.mc.gotoAndPlay("hit_head_back");
} else {
z.mc.gotoAndPlay("hit_head");
}
} else if (part == "torso") {
if (_local8 < 0) {
z.mc.gotoAndPlay("hit_torso_back");
} else {
z.mc.gotoAndPlay("hit_torso");
}
} else if (part == "legs") {
z.mc.gotoAndPlay("hit_legs");
}
}
};
_root.script.checkShootZombies = function () {
var _local4 = _root.data.enemies.zombies.arr;
var _local3 = ((_root.data.player.gun.power / 100) * 40) + 10;
var _local6 = 1;
for (var _local5 in _local4) {
var _local2 = _local4[_local5];
if (_local2.aim_head < (_local3 / 2)) {
_root.script.shootZombiePart(_local2, "head");
} else if (_local2.aim_torso < (_local3 * 1.5)) {
_root.script.shootZombiePart(_local2, "torso");
} else if (_local2.aim_legs < _local3) {
_root.script.shootZombiePart(_local2, "legs");
}
}
};
_root.script.perpendicularDistance = function (o, w) {
var _local2 = new djo.Vector2P(w.x, w.y, o.x - w.x, o.y - w.y);
var _local1 = w.rightNormal();
var _local5 = _local2.Dot(_local1);
var _local4 = _local1.rawMagnitude();
_local2.vx = (_local5 * _local1.vx) / _local4;
_local2.vy = (_local5 * _local1.vy) / _local4;
var _local6 = _local2.Magnitude();
return(_local6);
};
_root.script.updateSwarmDistances = function () {
var _local7 = _root.data.enemies.bat_swarm.arr;
var _local2 = _root.data.player.gun.dir;
var _local8 = _root.data.player;
for (var _local9 in _local7) {
bat = _local7[_local9];
bat.aim_dist = _root.script.perpendicularDistance(bat.pos, _local2);
var _local4 = bat.pos.x - _local8.pos.x;
var _local3 = bat.pos.y - _local8.pos.y;
bat.player_dist = Math.sqrt((_local4 * _local4) + (_local3 * _local3));
var _local5 = (new djo.Vector2P(_local2.x, _local2.y)).Distance(bat.pos);
if (((_local5 < 10) && (bat.is_attacking)) && (_root.data.enemies.bat_swarm.can_attack)) {
bat.is_attacking = false;
var _local6 = new djo.Vector2P(_local2.x, _local2.y, bat.pos.x - _local2.x, bat.pos.y - _local2.y);
_root.data.player.Hit(_local6.Mul(0.002), 10);
}
}
_local7.sortOn(["player_dist", "aim_dist"]);
};
_root.script.updateZombieDistances = function () {
var _local6 = _root.data.enemies.zombies.arr;
var _local4 = _root.data.player.gun.dir;
var _local7 = _root.data.player;
for (var _local8 in _local6) {
var _local2 = _local6[_local8];
var _local3 = new djo.Vector2P();
_local2.mc.ptHead.localToGlobal(_local3);
_local2.aim_head = _root.script.perpendicularDistance(_local3, _local4);
_local3.x = (_local3.y = 0);
_local2.mc.ptTorso.localToGlobal(_local3);
_local2.aim_torso = _root.script.perpendicularDistance(_local3, _local4);
_local3.x = (_local3.y = 0);
_local2.mc.ptLegs.localToGlobal(_local3);
_local2.aim_legs = _root.script.perpendicularDistance(_local3, _local4);
var _local5 = _local2.pos.x - _local7.pos.x;
_local2.player_dist = _local5;
if (!_local2.is_busy) {
_root.data.enemies.zombies.chooseAction(_local2);
}
}
_local6.sortOn(["player_dist", "aim_dist"]);
};
_root.script.inScreenBoundaries = function (x, y) {
return((((x < screen._width) && (x > 0)) && (y > 0)) && (y < screen._height));
};
_root.script.logicTest = function (a, test, b) {
switch (test) {
case "<" :
return(a < b);
case "<=" :
return(a <= b);
case "==" :
return(a == b);
case ">" :
return(a > b);
case ">=" :
return(a >= b);
case "!=" :
return(a != b);
}
if (test.charAt(0) == "~") {
var _local3 = Number(test.substr(1));
return((a > (b - _local3)) && (a < (b + _local3)));
}
};
_root.script.playDialog = function (dialogArr) {
var TextWindow = _root.graphic.movie.text_window;
_root.data.game.movie = true;
_root.data.game.freeze = true;
Timer.Pause();
_root.graphic.movie.wide_screen.gotoAndPlay("start");
_root.graphic.movie.wide_screen.onStart = function () {
TextWindow.setEase(2);
TextWindow.setFadeEase(2);
TextWindow.showStory(dialogArr);
};
TextWindow.onStory = function () {
TextWindow.setEase(20);
TextWindow.hoverTo(-150, -150);
_root.graphic.movie.wide_screen.gotoAndPlay("end");
};
_root.graphic.movie.wide_screen.onEnd = function () {
_root.data.game.movie = false;
Timer.Play();
};
};
_root.script.fadeOut = function (mc, onFinished) {
mc.onEnterFrame = function () {
this._alpha = this._alpha - 5;
if (this._alpha < 1) {
onFinished();
delete this.onEnterFrame;
}
};
};
_root.script.fadeIn = function (mc, onFinished) {
mc.onEnterFrame = function () {
this._alpha = this._alpha + 5;
if (this._alpha > 99) {
onFinished();
delete this.onEnterFrame;
}
};
};
_root.script.gameOver = function () {
_root.Music.Fade("out");
_root.data.level.camera.vx = 0;
_root.data.game.over = true;
_root.data.enemies.bat_swarm.can_attack = false;
_root.data.enemies.bat_swarm.can_move = false;
_root.data.enemies.bat_swarm.stop_loop_attack = true;
_root.data.enemies.zombies.can_attack = false;
_root.data.enemies.zombies.can_move = false;
_root.data.player.disableAll();
Timer.clearTimers();
_root.graphic.player.guns.gun.gotoAndStop(_root.data.player.gun.label);
_root.graphic.player.guns._rotation = 0;
_root.graphic.player.gotoAndPlay("die");
var TextWindow = _root.graphic.movie.text_window;
_root.graphic.movie.wide_screen.gotoAndPlay("start");
_root.graphic.movie.wide_screen.onStart = function () {
TextWindow.setEase(2);
TextWindow.setFadeEase(2);
var _local2 = Math.round((_root.data.game.stats.hits / _root.data.game.stats.shots) * 10000) / 100;
var _local3 = ((((((((("GAME OVER\n\nShots : " + _root.data.game.stats.shots) + newline) + "Hits : ") + _root.data.game.stats.hits) + newline) + "Kills : ") + _root.data.game.stats.kills) + "\nAccuracy : ") + _local2) + "%\n\n-click here to continue-";
TextWindow.showMessageAt(350, 200, _local3, "", "holy", undefined, function () {
_root.script.fadeOut(_root.graphic, function () {
_root.Music.nextSong("menu");
_root.gotoAndPlay(1);
});
});
};
};
_root.script.Pause = function () {
_root.data.game.pause = true;
_root.data.enemies.bat_swarm.can_attack = false;
_root.data.enemies.bat_swarm.can_move = false;
_root.data.enemies.bat_swarm.stop_loop_attack = true;
_root.data.enemies.zombies.can_attack = false;
_root.data.enemies.can_move = false;
_root.data.player.disableAll();
_root.data.level.camera.vx = 0;
Timer.Freeze();
var TextWindow = _root.graphic.movie.text_window;
_root.graphic.movie.wide_screen.onEnd = function () {
_root.Music.Fade("out");
_root.data.game.pause = false;
_root.keys.is_P_down = false;
_root.data.enemies.bat_swarm.can_move = true;
_root.data.enemies.bat_swarm.can_attack = true;
_root.data.enemies.bat_swarm.startLoopAttack();
_root.data.enemies.zombies.can_attack = true;
_root.data.enemies.can_move = true;
_root.data.player.enableAll();
Timer.Unfreeze();
};
_root.graphic.movie.wide_screen.onStart = function () {
TextWindow.setEase(2);
TextWindow.setFadeEase(2);
TextWindow.showMessageAt(350, 200, " PAUSE \n-click here to continue-", "", "holy", undefined, function () {
_root.graphic.movie.wide_screen.gotoAndPlay("end");
});
};
_root.graphic.movie.wide_screen.gotoAndPlay("start");
};
_root.script.showTimedMessage = function (time, nx, ny, msg, pic, style, action) {
var TextWindow = _root.graphic.movie.text_window;
o = new Object();
TextWindow.setEase(2);
TextWindow.setFadeEase(2);
var _local2 = function () {
Timer.Add("shortmsg", 5000);
Timer.timers.shortmsg.onOver = function () {
TextWindow.fadeOutContent();
action();
};
};
TextWindow.onShown = function () {
TextWindow.hoverTo(-150, -150);
};
TextWindow.showMessageAt(nx, ny, msg, pic, style, _local2, undefined, false);
};
Frame 63
_root.data.events.Add(Timer, "relative", ">", 1000, _root.script.playDialog(_root.dlgTutorial));
Frame 65
_root.script.onEnterFrame = function () {
fps.Update();
Timer.Update();
if (_root.data.game.pause) {
return(undefined);
}
_root.data.particles.Update();
if (_root.data.enemies.can_move) {
_root.script.moveEnemies();
}
_root.data.bullets.Update();
_root.data.events.Check();
_root.data.level.distance.events.Check();
_root.data.items.Update();
if (_root.data.game.over) {
return(undefined);
}
if (_root.keys.is_P_down && (!_root.data.game.pause)) {
_root.script.Pause();
}
Timer.checkAllTimers();
var _local5 = 0;
var _local2 = _root.data.player;
if (_local2.can_aim) {
_root.script.processMouse();
}
_root.script.processKeys();
var _local9 = _root.keys.is_A_down;
var _local7 = _root.keys.is_D_down;
var _local8 = _root.keys.is_S_down;
var _local16 = _root.keys.is_W_down;
var _local10 = _root.keys.is_SPACE_down;
var _local13 = _root.keys.is_Q_down;
var _local15 = _root.graphic.player.animation;
var _local3 = "";
if (_local16) {
}
if (_local13) {
}
if (!_root.data.player.is_busy) {
if (!(((_local9 && (_local7)) && (_local10)) && (_local8))) {
_local3 = "idle";
}
if (_local9) {
var _local6 = settings.speed.backward;
if (_local2.pos.x > (_local2.wall_backward.x + _local6)) {
_local2.pos.vx = -_local6;
} else if (_local2.pos.y < (_local2.wall_backward.y - _local2.wall_backward.vy)) {
_local2.pos.vx = -settings.speed.backward;
} else {
_local2.pos.vx = 0;
_local2.pos.x = _local2.wall_backward.x;
}
_local5 = 0.2 * settings.speed.backward;
_local3 = "run_back";
} else if (_local7) {
var _local6 = settings.speed.forward;
if (_local2.pos.x < (_local2.wall_forward.x - _local6)) {
_local2.pos.vx = _local6;
} else if (_local2.pos.y < (_local2.wall_forward.y - _local2.wall_forward.vy)) {
_local2.pos.vx = _local6;
} else {
_local2.pos.vx = 0;
_local2.pos.x = _local2.wall_forward.x;
}
var _local12 = 1 - ((_local2.pos.x * 2) / screen._width);
_local2.pos.vx = _local2.pos.vx * _local12;
_local5 = (_local12 - 1) * _local6;
_local3 = "run";
} else if (_local8) {
_local3 = "crouch";
}
if (_local10 && (_local2.can_double_jump)) {
if (_local2.jump == 1) {
_local3 = ((_local2.pos.vx >= 0) ? "jump_flip_right" : "jump_flip_left");
_root.graphic.player.gotoAndPlay(_local3);
_local2.pos.vy = settings.speed.jump;
_local2.can_double_jump = false;
_local2.jump = 0;
_local2.gun.limit.Set(0, 360);
}
if (_local2.jump == 2) {
_local2.can_double_jump = false;
_local3 = ((_local2.pos.vx >= 0) ? "jump_right" : "jump_left");
_root.graphic.player.gotoAndPlay(_local3);
_local2.pos.vy = settings.speed.jump;
_local2.jump = 1;
}
}
var _local4 = _root.script.getY(_root.data.level.ground.arr, _local2.pos.x);
if ((_local4 > _local2.pos.y) || (_local2.pos.vy < 0)) {
if (_local2.jump == 1) {
if ((_local2.pos.y + _local2.pos.vy) <= _local4) {
_root.graphic.player.animation = ((_local2.pos.vx >= 0) ? "jump_right" : "jump_left");
_local2.pos.y = _local2.pos.y + _local2.pos.vy;
_local2.pos.vy = _local2.pos.vy + settings.speed.gravity;
var _local11 = Math.floor((_local2.pos.vy / settings.speed.jump) * -10) + 64;
if (_root.graphic.player.animation == "jump_left") {
_local11 = _local11 + 22;
}
_root.graphic.player.gotoAndStop(_local11);
} else {
_local2.pos.y = _local4;
_local2.jump = 2;
_local2.can_double_jump = true;
_local2.pos.vy = 0;
_local3 = "landed";
_root.graphic.player.play();
}
} else if (_local2.jump == 0) {
if ((_local2.pos.y + _local2.pos.vy) <= _local4) {
_root.graphic.player.animation = ((_local2.pos.vx >= 0) ? "jump_flip_right" : "jump_flip_left");
_local2.pos.vy = _local2.pos.vy + settings.speed.gravity;
_local2.pos.y = _local2.pos.y + _local2.pos.vy;
var _local11 = Math.floor((_local2.pos.vy / 17) * 25) + 123;
if (_root.graphic.player.animation == "jump_flip_left") {
_local11 = _local11 + 53;
}
_root.graphic.player.gotoAndStop(_local11);
} else {
_local2.pos.y = _local4;
_local2.jump = 2;
_local2.can_double_jump = true;
_local2.pos.vy = 0;
_local3 = "landed";
_root.graphic.player.play();
_local2.gun.limit.Set();
}
} else {
_local2.pos.y = _local4;
_local2.jump = 2;
_local2.pos.vy = 0;
_local2.gun.limit.Set();
_local2.can_double_jump = true;
}
} else {
_local2.pos.y = _local4;
_local2.jump = 2;
_local2.pos.vy = 0;
_local2.can_double_jump = true;
}
_local2.pos.x = _local2.pos.x + _local2.pos.vx;
_root.graphic.player._x = _local2.pos.x;
_root.graphic.player._y = _local2.pos.y;
if (_local15 != _local3) {
if (_local2.jump == 2) {
_root.graphic.player.animation = _local3;
_root.graphic.player.gotoAndPlay(_local3);
}
}
_local2.pos.vx = 0;
}
_root.data.level.camera.vx = -_local5;
_root.data.level.distance.x = _root.data.level.distance.x - _local5;
var _local17 = _root.script.getY(_root.data.level.ground.arr, _root.data.level.camera.x);
var _local14 = _local17 - _root.data.level.camera.y;
_root.script.scroll(_local5, -_local14);
_root.script.drawLevel();
_local2.updateWalls();
};
_root.script.processMouse = function () {
if (!_root.data.player.can_aim) {
return(undefined);
}
var _local7 = new djo.Vector2P(_root._xmouse, _root._ymouse, 0, 0);
var _local2 = _root.data.cursor.pos;
var _local9 = _root.data.cursor.koef;
_local2.x = _local2.x + ((_local2.vx = (_local7.x - _local2.x) / _local9));
_local2.y = _local2.y + ((_local2.vy = (_local7.y - _local2.y) / _local9));
_root.data.player.gun.updateDir();
var _local6 = _root.data.player.gun.dir.headTail(_local2);
var _local11 = _root.data.player.gun.dir.headTail(_local7);
var _local10 = _local11.Magnitude();
var _local3 = _root.graphic.player.guns.gun._rotation;
_local3 = _root.script.vectorAngleDeg(_local6);
var _local13 = _root.script.vectorAngleDeg(_local11);
var _local8 = _root.data.player.gun.limit.Check(_local3, _local13);
if (_local8 != _local3) {
_local3 = _local8;
var _local12 = _local3 * deg2rad;
var _local15 = (_local10 * Math.cos(_local12)) + _local6.x;
var _local14 = (_local10 * Math.sin(_local12)) + _local6.y;
_local2.x = _local15;
_local2.y = _local14;
}
_root.graphic.gui.cursor._x = _local2.x;
_root.graphic.gui.cursor._y = _local2.y;
_root.graphic.player.guns.gun._rotation = _local3;
var _local5 = new djo.Vector2P(0, 0, 0, 0);
_root.graphic.player.Head.localToGlobal(_local5);
_local5 = _local5.headTail(_local2);
var _local4 = _root.script.vectorAngleDeg(_local5);
if ((_local4 < 280) && (_local4 > 35)) {
if (_local4 > 245) {
_root.graphic.player.Head.head._rotation = 390 - ((1 - ((280 - _local4) / 30)) * 120);
} else {
_root.graphic.player.Head.head._rotation = 35;
}
} else {
_root.graphic.player.Head.head._rotation = _local4;
}
};
_root.script.processKeys = function () {
var _local2 = _root.data.player;
if (_local2.can_move) {
_root.keys.is_A_down = Key.isDown(65);
_root.keys.is_D_down = Key.isDown(68);
}
if (_local2.can_crouch) {
_root.keys.is_S_down = Key.isDown(83);
}
_root.keys.is_W_down = Key.isDown(87);
if (_local2.can_jump) {
_root.keys.is_SPACE_down = Key.isDown(32);
}
_root.keys.is_P_down = Key.isDown(80);
_root.keys.is_Q_down = Key.isDown(81);
_root.keys.is_5_down = Key.isDown(53);
_root.keys.is_4_down = Key.isDown(52);
_root.keys.is_3_down = Key.isDown(51);
_root.keys.is_2_down = Key.isDown(50);
_root.keys.is_1_down = Key.isDown(49);
_root.keys.is_ESC_down = Key.isDown(27);
if (_root.keys.is_1_down) {
_root.data.player.gun.changeWeapon(1);
} else if (_root.keys.is_2_down) {
_root.data.player.gun.changeWeapon(2);
} else if (_root.keys.is_3_down) {
_root.data.player.gun.changeWeapon(3);
} else if (_root.keys.is_4_down) {
_root.data.player.gun.changeWeapon(4);
}
};
_root.script.onMouseDown = function () {
if (_root.data.game.pause) {
return(undefined);
}
if (_root.data.player.can_shoot) {
var _local2 = _root.data.player.gun.last_shot;
var _local3 = Timer.now;
var _local4 = (_root.data.player.gun.is_shooting = (_local3 - _local2) < _root.data.player.gun.delay);
if (!_root.data.player.gun.is_shooting) {
_root.data.player.gun.energy = _root.data.player.gun.power;
_root.graphic.player.guns.gun.play();
_root.data.player.gun.last_shot = Timer.now;
}
}
};
_root.script.drawTerrain = function (o, col) {
var _local6 = o.mc;
var _local5 = o.arr;
_local6.clear();
_local6.beginFill(col, 100);
_local6.moveTo(0, _root.script.getY(_local5, 0));
var _local7 = _local5.length - 1;
var _local2 = 0;
while (_local2 < _local7) {
var _local4 = _local5[_local2]._x;
var _local3 = _local5[_local2]._y;
_local6.lineTo(_local4, _local3);
_local2++;
}
_local6.lineTo(screen._width, _root.script.getY(_local5, screen._width));
_local6.lineTo(screen._width, screen._height);
_local6.lineTo(0, screen._height);
_local6.endFill();
};
_root.script.drawLevel = function () {
_root.script.drawTerrain(_root.data.level.ground_front, 0);
_root.script.drawTerrain(_root.data.level.ground, 1579032);
_root.script.drawTerrain(_root.data.level.ground_back, 3158064);
_root.script.drawTerrain(_root.data.level.bg, 4079166);
_root.script.updateAttachedArrObjects(_root.data.level.ground_front.arr);
_root.script.updateAttachedArrObjects(_root.data.level.ground_back.arr);
_root.script.updateAttachedArrObjects(_root.data.level.sky.arr);
};
_root.script.moveEnemies = function () {
_root.data.enemies.bat_swarm.processObjects();
_root.script.updateSwarmDistances();
_root.data.enemies.zombies.Move();
_root.script.updateZombieDistances();
};
_root.script.vectorAngleDeg = function (v) {
return(((v.Angle() * rad2deg) + 360) % 360);
};
Frame 66
_root.graphic._visible = true;
stop();
Frame 101
stop();
Symbol 10 MovieClip [SmokeParticle] Frame 1
this.cacheAsBitmap = true;
stop();
Symbol 23 MovieClip Frame 40
stop();
Symbol 29 MovieClip Frame 1
stop();
Symbol 29 MovieClip Frame 2
stop();
Symbol 29 MovieClip Frame 3
stop();
Symbol 29 MovieClip Frame 4
stop();
Symbol 33 MovieClip [TextWindow] Frame 1
function easeItOut(startPos, endPos, factor) {
return((endPos - startPos) / factor);
}
function Init(x, y, msg, ease, pictureID, picturePos) {
this.pictureID = pictureID;
this.PictureBox.setPicture(pictureID, picturePos);
this.PictureBox.setPicture(1, picturePos);
this.ptCenter = new Object({x:x, y:y});
this.setEase(ease);
this.setText(msg);
this.updateContent();
}
function setCenter(x, y) {
this.ptCenter = new Object({x:x, y:y});
}
function setEase(ease) {
this.easeFactor = ease;
}
function setFadeEase(ease) {
this.fadeEaseFactor = ease;
}
function setPosition(x, y) {
this._x = x;
this._y = y;
}
function hoverTo(x, y) {
if (isNaN(x)) {
x = this.ptCenter.x;
}
if (isNaN(y)) {
y = this.ptCenter.y;
}
this.dummy = 0;
this.onEnterFrame = function () {
this._x = this._x + ((dx = easeItOut(this._x, x, this.easeFactor)));
this._y = this._y + ((dy = easeItOut(this._y, y, this.easeFactor)));
this.filters = [new flash.filters.BlurFilter(Math.abs(dx), Math.abs(dy), 1)];
this.dummy = this.dummy + easeItOut(this.dummy, 100, this.easeFactor);
if (this.dummy > 99.9) {
this.dummy = 0;
delete this.onEnterFrame;
this.filters = [];
onHover();
}
};
}
function updateContent() {
var _local7 = TextBox._width;
var _local3 = TextBox._height;
var _local6 = (PictureBox._width ? 60 : 0);
var _local5 = (PictureBox._height ? 80 : 0);
var _local2 = 0;
if (_local7) {
_local2 = _local2 + this.padding;
}
if (_local6) {
_local2 = _local2 + this.padding;
}
if (_local2) {
_local2 = _local2 + this.padding;
}
this.winWidth = (_local7 + _local6) + _local2;
_local2 = 0;
if (_local3 || (_local5)) {
_local2 = _local2 + this.padding;
}
if (_local2) {
_local2 = _local2 + this.padding;
}
this.winHeight = ((_local3 > _local5) ? (_local3) : (_local5)) + _local2;
var _local4 = this.winWidth / 2;
var _local8 = this.winHeight / 2;
if (this.pictureID) {
if (this.pictureAlign == "left") {
PictureBox._x = ((-_local4) + this.padding) + (_local6 / 2);
PictureBox._y = ((-_local8) + this.padding) + (_local5 / 2);
TextBox._x = ((-_local4) + (2 * this.padding)) + _local6;
TextBox._y = (-_local3) / 2;
} else if (this.pictureAlign == "right") {
TextBox._x = (-_local4) + this.padding;
TextBox._y = (-_local3) / 2;
PictureBox._x = (((-_local4) + (2 * this.padding)) + _local7) + (_local6 / 2);
PictureBox._y = ((-_local8) + this.padding) + (_local5 / 2);
}
} else {
TextBox._x = (-_local7) / 2;
TextBox._y = (-_local3) / 2;
}
this.winTop = -_local8;
this.winLeft = -_local4;
this.winRight = _local4;
this.winBottom = _local8;
}
function setText(msg) {
if ((msg == "") || (msg == undefined)) {
TextBox._alpha = (BG._alpha = 0);
BG._width = (topRight._width + topLeft._width) + 5;
BG._height = (topRight._height + bottomRight._height) + 5;
TextBox.Field.autoSize = true;
TextBox.Field.text = "";
return(undefined);
}
TextBox._alpha = 0;
TextBox.Field.wordWrap = false;
TextBox.Field.autoSize = true;
TextBox.Field.text = msg;
}
function setWindowStyle(style) {
if ((style != "") && (style != undefined)) {
this.windowStyle = style;
this.gotoAndStop(this.windowStyle);
}
}
function setPicture(pic) {
var _local3 = pic.split("|");
var _local2 = Number(_local3[0]);
var _local4 = _local3[1];
PictureBox._alpha = 0;
this.pictureID = (isNaN(_local2) ? 0 : (_local2));
this.pictureAlign = ((_local4 == undefined) ? "left" : (_local4));
PictureBox.gotoAndStop(this.pictureID + 1);
}
function setContent(msg, picture, style) {
this.winWidth = (this.winHeight = 0);
setText(msg);
setPicture(picture);
setWindowStyle(style);
updateContent();
}
function fadeInContent() {
if (TextBox.Field.text == "") {
onFadeInContent();
return(undefined);
}
this.onEnterFrame = function () {
TextBox._alpha = TextBox._alpha + ((100 - TextBox._alpha) / fadeEaseFactor);
if (this.pictureID) {
PictureBox._alpha = PictureBox._alpha + ((100 - PictureBox._alpha) / fadeEaseFactor);
}
if (TextBox._alpha > 99) {
TextBox._alpha = (PictureBox._alpha = 100);
delete this.onEnterFrame;
onFadeInContent();
}
};
}
function fadeOutContent() {
if (TextBox.Field.text == "") {
onFadeOutContent();
return(undefined);
}
this.onEnterFrame = function () {
TextBox._alpha = TextBox._alpha + ((-TextBox._alpha) / fadeEaseFactor);
if (this.pictureID) {
PictureBox._alpha = PictureBox._alpha + ((-PictureBox._alpha) / fadeEaseFactor);
}
if (TextBox._alpha <= 0) {
TextBox._alpha = (PictureBox._alpha = 0);
delete this.onEnterFrame;
onFadeOutContent();
}
};
}
function Unwrap() {
if (TextBox.Field.text == "") {
onUnwrap();
return(undefined);
}
this.dummy = 0;
BG._alpha = 10;
this.onEnterFrame = function () {
topLeft._x = topLeft._x + easeItOut(topLeft._x, winLeft, this.easeFactor);
topLeft._y = topLeft._y + easeItOut(topRight._y, winTop, this.easeFactor);
topRight._x = topRight._x + easeItOut(topRight._x, winRight, this.easeFactor);
topRight._y = topRight._y + easeItOut(topRight._y, winTop, this.easeFactor);
bottomLeft._x = bottomLeft._x + easeItOut(bottomLeft._x, winLeft, this.easeFactor);
bottomLeft._y = bottomLeft._y + easeItOut(bottomRight._y, winBottom, this.easeFactor);
bottomRight._x = bottomRight._x + easeItOut(bottomRight._x, winRight, this.easeFactor);
bottomRight._y = bottomRight._y + easeItOut(bottomRight._y, winBottom, this.easeFactor);
BG._width = BG._width + easeItOut(BG._width, this.winWidth, this.easeFactor);
BG._height = BG._height + easeItOut(BG._height, this.winHeight, this.easeFactor);
this.dummy = this.dummy + easeItOut(this.dummy, 100, this.easeFactor);
if (this.dummy > 99.6) {
this.dummy = 0;
this.is_wrapped = false;
delete this.onEnterFrame;
onUnwrap();
}
};
}
function Wrap() {
if (TextBox.Field.text == "") {
onWrap();
return(undefined);
}
this.dummy = 100;
this.onEnterFrame = function () {
topLeft._x = topLeft._x + easeItOut(topLeft._x, 0, this.easeFactor);
topLeft._y = topLeft._y + easeItOut(topRight._y, 0, this.easeFactor);
topRight._x = topRight._x + easeItOut(topRight._x, 0, this.easeFactor);
topRight._y = topRight._y + easeItOut(topRight._y, 0, this.easeFactor);
bottomLeft._x = bottomLeft._x + easeItOut(bottomLeft._x, 0, this.easeFactor);
bottomLeft._y = bottomLeft._y + easeItOut(bottomRight._y, 0, this.easeFactor);
bottomRight._x = bottomRight._x + easeItOut(bottomRight._x, 0, this.easeFactor);
bottomRight._y = bottomRight._y + easeItOut(bottomRight._y, 0, this.easeFactor);
BG._width = BG._width + easeItOut(BG._width, 1, this.easeFactor);
BG._height = BG._height + easeItOut(BG._height, 1, this.easeFactor);
this.dummy = this.dummy + easeItOut(this.dummy, 0, this.easeFactor);
if (this.dummy < 0.04) {
this.dummy = 0;
this.is_wrapped = true;
delete this.onEnterFrame;
onWrap();
}
};
}
function showMessageAt(x, y, msg, pic, style, on_show_action, on_wrap_action, _is_clickable) {
setContent(msg, pic, style);
this.is_clickable = ((_is_clickable == undefined) ? true : (_is_clickable));
onHover = Unwrap;
onUnwrap = fadeInContent;
onFadeInContent = function () {
if (on_show_action != undefined) {
on_show_action();
}
if (this.is_clickable) {
this.onRelease = function () {
delete this.onRelease;
fadeOutContent();
};
} else {
delete this.onRelease;
}
};
onFadeOutContent = Wrap;
onWrap = function () {
if (on_wrap_action != undefined) {
on_wrap_action();
}
onShown();
};
hoverTo(x, y);
}
function nextMessage() {
this.msgID++;
if (this.msgID < this.arrMsgs.length) {
var _local2 = this.arrMsgs[this.msgID];
this.showMessageAt(_local2.x, _local2.y, _local2.msg, _local2.pic, _local2.style, _local2.onShowAction, _local2.onWrapAction);
} else {
this.onStory();
}
}
function showStory(arrMsgs) {
this.arrMsgs = arrMsgs;
this.msgID = -1;
this.onShown = this.nextMessage;
this.nextMessage();
}
stop();
var ptCenter;
var winTop = 0;
var winLeft = 0;
var winRight = 0;
var winBottom = 0;
var winWidth = 0;
var winHeight = 0;
var easeFactor = 5;
var fadeEaseFactor = 5;
var padding = 10;
var is_wrapped = true;
var dummy = 0;
var msg = "";
var arrMsg;
var msgID = 0;
var pictureID = 0;
var pictureAlign = "left";
var windowStyle = "holy";
var is_clickable = true;
onShown = function () {
};
onStory = function () {
};
onHover = function () {
};
onUnwrap = function () {
};
onWrap = function () {
};
onFadeInContent = function () {
};
onFadeOutContent = function () {
};
Symbol 37 MovieClip [blood_particle] Frame 100
this.removeMovieClip();
Symbol 38 MovieClip [dirt_particle] Frame 100
this.removeMovieClip();
Symbol 40 MovieClip [Bat] Frame 1
this.animation = "flap";
Symbol 40 MovieClip [Bat] Frame 7
gotoAndPlay(this.animation);
Symbol 40 MovieClip [Bat] Frame 11
var curr_ang = this._rotation;
var dest_ang = ((curr_ang + 30) + ((Math.random() * 720) - 360));
var power = _root.data.player.gun.power;
var veloc = _root.data.player.gun.dir.Unit();
veloc.Mul((power / 10) + 5);
var step = 0;
var steps = 50;
this.onEnterFrame = function () {
this.veloc.vy = this.veloc.vy + 1.3;
this._x = this._x + this.veloc.vx;
this._y = this._y + this.veloc.vy;
this.curr_ang = this.curr_ang + ((this.curr_ang - this.dest_ang) / 20);
this._rotation = curr_ang;
this._alpha = (1 - (step / steps)) * 100;
if ((this.step++) > this.steps) {
this.removeMovieClip();
}
};
Symbol 40 MovieClip [Bat] Frame 29
stop();
Symbol 68 MovieClip Frame 1
this.weapon = "knives";
gotoAndPlay(this.weapon);
Instance of Symbol 50 MovieClip in Symbol 68 MovieClip Frame 1
onClipEvent (mouseDown) {
_root.b.g.arrow.gotoAndPlay(2);
}
Symbol 68 MovieClip Frame 2
stop();
Symbol 68 MovieClip Frame 4
_root.script.Shoot();
Instance of Symbol 50 MovieClip in Symbol 68 MovieClip Frame 7
onClipEvent (mouseDown) {
_root.b.g.arrow.gotoAndPlay(2);
}
Symbol 68 MovieClip Frame 22
gotoAndPlay(this.weapon);
Symbol 68 MovieClip Frame 26
stop();
Symbol 68 MovieClip Frame 29
_root.script.Shoot();
Symbol 68 MovieClip Frame 39
gotoAndPlay(this.weapon);
Symbol 68 MovieClip Frame 42
stop();
Symbol 68 MovieClip Frame 44
_root.script.Shoot();
Symbol 68 MovieClip Frame 48
stop();
Symbol 68 MovieClip Frame 50
_root.script.Shoot();
Symbol 68 MovieClip Frame 54
gotoAndPlay(this.weapon);
Symbol 68 MovieClip Frame 56
stop();
Symbol 68 MovieClip Frame 60
_root.script.Shoot();
Symbol 68 MovieClip Frame 90
gotoAndPlay(this.weapon);
Symbol 70 MovieClip [Player] Frame 1
this.animation = "idle";
gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 21
gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 35
gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 41
if (this.animation == "crouch") {
this.prevFrame();
}
Symbol 70 MovieClip [Player] Frame 45
_root.data.player.is_busy = false;
gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 51
gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 54
stop();
Symbol 70 MovieClip [Player] Frame 61
_root.data.player.can_double_jump = true;
Symbol 70 MovieClip [Player] Frame 75
this.animation = "idle";
this.gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 76
stop();
Symbol 70 MovieClip [Player] Frame 83
_root.data.player.can_double_jump = true;
Symbol 70 MovieClip [Player] Frame 97
this.animation = "idle";
this.gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 98
Symbol 70 MovieClip [Player] Frame 150
gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 151
Symbol 70 MovieClip [Player] Frame 201
gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 203
_root.data.player.gun.limit.Set(285, 290);
Symbol 70 MovieClip [Player] Frame 209
var rnd = Math.floor(Math.random() * 5);
Symbol 70 MovieClip [Player] Frame 210
if (rnd == 1) {
gotoAndPlay(this._currentframe - (rnd * 2));
}
_root.data.player.gun.limit.Set(270, 275);
Symbol 70 MovieClip [Player] Frame 211
if (rnd == 2) {
gotoAndPlay(this._currentframe - (rnd * 2));
}
_root.data.player.gun.limit.Set(280, 290);
Symbol 70 MovieClip [Player] Frame 212
if (rnd == 3) {
gotoAndPlay(this._currentframe - (rnd * 2));
}
_root.data.player.gun.limit.Set(270, 295);
Symbol 70 MovieClip [Player] Frame 213
if (rnd == 4) {
gotoAndPlay(this._currentframe - (rnd * 2));
}
_root.data.player.gun.limit.Set(275, 275);
Symbol 70 MovieClip [Player] Frame 214
gotoAndPlay ("strugle");
_root.data.player.gun.limit.Set(290, 295);
Symbol 70 MovieClip [Player] Frame 229
_root.data.player.is_busy = false;
this.animation = "idle";
gotoAndPlay(this.animation);
Symbol 70 MovieClip [Player] Frame 264
stop();
Symbol 93 MovieClip [Graves] Frame 1
stop();
Symbol 96 MovieClip Frame 1
stop();
Symbol 96 MovieClip Frame 2
stop();
Symbol 96 MovieClip Frame 3
stop();
Symbol 101 MovieClip Frame 1
stop();
Symbol 101 MovieClip Frame 2
stop();
Symbol 101 MovieClip Frame 3
stop();
Symbol 106 MovieClip Frame 1
stop();
Symbol 106 MovieClip Frame 2
stop();
Symbol 106 MovieClip Frame 3
stop();
Symbol 109 MovieClip Frame 1
stop();
Symbol 109 MovieClip Frame 2
stop();
Symbol 109 MovieClip Frame 3
stop();
Symbol 113 MovieClip Frame 1
stop();
Symbol 113 MovieClip Frame 2
stop();
Symbol 113 MovieClip Frame 3
stop();
Symbol 119 MovieClip Frame 1
stop();
Symbol 119 MovieClip Frame 2
stop();
Symbol 119 MovieClip Frame 3
stop();
Symbol 126 MovieClip Frame 1
stop();
Symbol 126 MovieClip Frame 2
stop();
Symbol 126 MovieClip Frame 3
stop();
Symbol 130 MovieClip Frame 1
stop();
Symbol 130 MovieClip Frame 2
stop();
Symbol 130 MovieClip Frame 3
stop();
Symbol 133 MovieClip Frame 1
stop();
Symbol 133 MovieClip Frame 2
stop();
Symbol 133 MovieClip Frame 3
stop();
Symbol 141 MovieClip Frame 1
stop();
Symbol 141 MovieClip Frame 2
stop();
Symbol 141 MovieClip Frame 3
stop();
Symbol 141 MovieClip Frame 4
stop();
Symbol 141 MovieClip Frame 5
stop();
Symbol 141 MovieClip Frame 6
stop();
Symbol 141 MovieClip Frame 7
stop();
Symbol 141 MovieClip Frame 8
stop();
Symbol 141 MovieClip Frame 9
stop();
Symbol 141 MovieClip Frame 10
stop();
Symbol 141 MovieClip Frame 11
stop();
Symbol 142 MovieClip [Zombie] Frame 1
this.animation = "walk";
this.is_busy = false;
this.facing = "left";
Symbol 142 MovieClip [Zombie] Frame 58
this.gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 92
this.gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 107
if (random(8) < 5) {
gotoAndPlay (100);
}
var ptPart = (new djo.Vector2P());
_root.graphic.player.Head.localToGlobal(ptPart);
var ang = ((4.71238898038469 + Math.random()) - 0.5);
_root.data.particles.Add("blood", ptPart.x, ptPart.y, 50, ang);
Symbol 142 MovieClip [Zombie] Frame 115
this.gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 125
this.gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 148
this.is_busy = false;
gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 171
this.is_busy = false;
gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 184
this.is_busy = false;
gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 197
this.is_busy = false;
gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 210
this.is_busy = false;
gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 211
Symbol 142 MovieClip [Zombie] Frame 221
this._xscale = this._xscale * -1;
this.is_busy = false;
this.facing = ((this._xscale < 0) ? "right" : "left");
Symbol 142 MovieClip [Zombie] Frame 231
this.is_busy = false;
gotoAndPlay(this.animation);
Symbol 142 MovieClip [Zombie] Frame 311
stop();
this.removeMovieClip();
Symbol 142 MovieClip [Zombie] Frame 371
stop();
this.removeMovieClip();
Symbol 147 MovieClip [Sky] Frame 1
stop();
Symbol 149 MovieClip [Cursor] Frame 1
onMouseMove = function () {
if ((_root._xmouse - this._x) > 0) {
this._rotation = this._rotation + 1;
} else {
this._rotation = this._rotation - 1;
}
};
Symbol 151 MovieClip [small_explode] Frame 8
this.removeMovieClip();
Symbol 156 MovieClip [MovieSequence] Frame 1
stop();
this.onStart = function () {
};
this.onEnd = function () {
};
Symbol 156 MovieClip [MovieSequence] Frame 29
stop();
onStart();
Symbol 156 MovieClip [MovieSequence] Frame 49
stop();
onEnd();
Symbol 167 MovieClip Frame 1
stop();
Symbol 167 MovieClip Frame 10
stop();
Symbol 167 MovieClip Frame 20
stop();
Symbol 168 MovieClip Frame 1
gotoAndStop(_parent.weaponID);
Symbol 171 MovieClip Frame 2
stop();
Symbol 172 MovieClip [WeaponsStripe] Frame 1
function deselectWeapon(wpn) {
var _local2 = this["w" + wpn];
_local2.is_selected = false;
_local2.BG.gotoAndPlay("deselect");
}
function selectWeapon(wpn) {
var _local2 = this["w" + wpn];
_local2.is_selected = true;
this.selectedWeapon = wpn;
_local2.BG.gotoAndPlay("select");
}
function chooseWeapon(wpn) {
deselectWeapon(this.selectedWeapon);
selectWeapon(wpn);
}
function showWeapon(wpn) {
this["w" + wpn].gotoAndStop("visible");
}
function hideWeapon(wpn) {
this["w" + wpn].gotoAndStop("invisible");
}
var selectedWeapon = 1;
Instance of Symbol 171 MovieClip "w1" in Symbol 172 MovieClip [WeaponsStripe] Frame 1
onClipEvent (load) {
this.weaponID = 1;
this.BG.gotoAndPlay("select");
}
Instance of Symbol 171 MovieClip "w3" in Symbol 172 MovieClip [WeaponsStripe] Frame 1
onClipEvent (load) {
this.weaponID = 3;
}
Instance of Symbol 171 MovieClip "w2" in Symbol 172 MovieClip [WeaponsStripe] Frame 1
onClipEvent (load) {
this.weaponID = 2;
}
Instance of Symbol 171 MovieClip "w4" in Symbol 172 MovieClip [WeaponsStripe] Frame 1
onClipEvent (load) {
this.weaponID = 4;
}
Symbol 179 MovieClip [Items] Frame 1
stop();
Symbol 179 MovieClip [Items] Frame 2
stop();
Symbol 179 MovieClip [Items] Frame 3
stop();
Symbol 179 MovieClip [Items] Frame 4
stop();
Symbol 179 MovieClip [Items] Frame 10
stop();
Symbol 179 MovieClip [Items] Frame 11
stop();
Symbol 190 Button
on (release) {
getURL ("http://www.newgrounds.com", "blank");
}
Symbol 196 Button
on (release) {
_root.play();
}
Symbol 197 MovieClip Frame 1
_root.stop();
PercentLoaded = (_root.getBytesLoaded() / _root.getBytesTotal()) * 100;
if (PercentLoaded != 100) {
bar._xscale = PercentLoaded;
} else {
gotoAndStop ("loaded");
}
Symbol 197 MovieClip Frame 2
gotoAndPlay (1);
Symbol 253 MovieClip [__Packages.djo.Vector2P] Frame 0
class djo.Vector2P
{
var x, y, vx, vy, last_time;
function Vector2P (nx, ny, nvx, nvy) {
x = (isNaN(nx) ? 0 : (nx));
y = (isNaN(ny) ? 0 : (ny));
vx = (isNaN(nvx) ? 0 : (nvx));
vy = (isNaN(nvy) ? 0 : (nvy));
last_time = 0;
}
function headTail(v) {
return(new djo.Vector2P(x, y, v.x - x, v.y - y));
}
function Copy(v) {
x = v.x;
y = v.y;
vx = v.vx;
vy = v.vy;
}
function Set(nx, ny, nvx, nvy) {
x = (isNaN(nx) ? 0 : (nx));
y = (isNaN(ny) ? 0 : (ny));
vx = (isNaN(nvx) ? 0 : (nvx));
vy = (isNaN(nvy) ? 0 : (nvy));
}
function Reset() {
x = 0;
y = 0;
vx = 0;
vy = 0;
last_time = 0;
}
function Dot(v) {
return((vx * v.vx) + (vy * v.vy));
}
function Cross(v) {
return((vx * v.vy) - (vy * v.vx));
}
function Length() {
return(Math.sqrt((vx * vx) + (vy * vy)));
}
function Plus(v) {
vx = vx + v.vx;
vy = vy + v.vy;
return(this);
}
function Minus(v) {
vx = vx - v.vx;
vy = vy - v.vy;
return(this);
}
function Mul(s) {
vx = vx * s;
vy = vy * s;
return(this);
}
function Distance(v) {
var _local3 = x - v.x;
var _local2 = y - v.y;
return(Math.sqrt((_local3 * _local3) + (_local2 * _local2)));
}
function Unit() {
var _local2 = Magnitude();
var _local4 = 0;
var _local3 = 0;
if (_local2 > 0) {
_local4 = vx / _local2;
_local3 = vy / _local2;
}
return(new djo.Vector2P(x, y, _local4, _local3));
}
function Normalize() {
var _local2 = Magnitude();
var _local4 = 0;
var _local3 = 0;
if (_local2 > 0) {
vx = vx / _local2;
vy = vy / _local2;
}
}
function Magnitude() {
return(Math.sqrt((vx * vx) + (vy * vy)));
}
function rawMagnitude() {
return((vx * vx) + (vy * vy));
}
function projectTo(v) {
var _local6 = Dot(v);
var _local3 = (v.vx * v.vx) + (v.vy * v.vy);
var _local5 = 0;
var _local4 = 0;
if (_local3 > 0) {
_local5 = (_local6 * v.vx) / _local3;
_local4 = (_local6 * v.vy) / _local3;
}
return(new djo.Vector2P(v.x, v.y, _local5, _local4));
}
function Angle() {
return(Math.atan2(vy, vx));
}
function Plot(mc, thick, rgb, alpha) {
mc.lineStyle(thick, rgb, alpha);
mc.moveTo(x, y);
mc.lineTo(x + vx, y + vy);
}
function rightNormal() {
return(new djo.Vector2P(x, y, -vy, vx));
}
function leftNormal() {
return(new djo.Vector2P(x, y, vy, -vx));
}
function Intersection(v) {
var _local8 = new djo.Vector2P(0, 0, v.x - x, v.y - y);
var _local5 = v.Dot(_local8.rightNormal());
var _local4 = v.Dot(rightNormal());
var _local3 = _local5 / _local4;
var _local9 = x + (vx * _local3);
var _local7 = y + (vy * _local3);
var _local6 = new djo.Vector2P(_local9, _local7, 0, 0);
return(_local6);
}
function Intersects(v) {
var _local5 = new djo.Vector2P(0, 0, v.x - x, v.y - y);
var _local4 = v.Dot(_local5.rightNormal());
var _local3 = v.Dot(rightNormal());
var _local7 = _local4 / _local3;
_local5 = new djo.Vector2P(0, 0, x - v.x, y - v.y);
_local4 = Dot(_local5.rightNormal());
_local3 = Dot(v.rightNormal());
var _local6 = _local4 / _local3;
return((((_local7 >= 0) && (_local7 <= 1)) && (_local6 >= 0)) && (_local6 <= 1));
}
function Move(Void) {
x = x + vx;
y = y + vy;
}
function toString() {
return(((((((("Vector2P(" + x) + ",") + y) + " | ") + vx) + ",") + vy) + ")");
}
}
Symbol 254 MovieClip [__Packages.djo.Timer] Frame 0
class djo.Timer
{
var timers, now, count, relative, frozen, last, diff;
function Timer () {
timers = new Object();
now = getTimer();
count = 0;
relative = 0;
frozen = false;
}
function Update() {
if (frozen) {
last = (now = getTimer());
return(undefined);
}
last = now;
now = getTimer();
diff = now - last;
relative = relative + diff;
}
function Pause() {
frozen = true;
}
function Play() {
frozen = false;
}
function Add(timerID, wait) {
timers[timerID] = new Object();
timers[timerID].started = new Number(now);
timers[timerID].wait = new Number(wait);
timers[timerID].onOver = function () {
};
count++;
}
function checkAllTimers() {
for (var _local2 in timers) {
checkIfElapsed(_local2);
}
}
function checkIfElapsed(timerID) {
var _local2 = timers[timerID];
var _local3 = (now - _local2.started) > _local2.wait;
if (_local3) {
_local2.onOver();
Remove(timerID);
}
return(_local3);
}
function getTimer(timerID) {
return(timers[timerID]);
}
function Remove(timerID) {
var _local2 = delete timers[timerID];
if (_local2) {
count--;
}
}
function Reset() {
}
function clearTimers() {
frozen = true;
for (var _local2 in timers) {
timers[_local2].onOver();
delete timers[_local2];
}
frozen = false;
count = 0;
}
function toString() {
var _local2 = "Timer: ";
_local2 = ((_local2 + "Number of timers:") + count) + newline;
var _local3 = 0;
for (var _local4 in timers) {
_local3 = now - timers[_local4].started;
_local2 = (((_local2 + _local4) + " = [started: ") + timers[_local4].started) + ", ";
_local2 = ((_local2 + "wait: ") + timers[_local4].wait) + ", ";
_local2 = ((_local2 + "elapsed :") + _local3) + "]\n";
}
return(_local2);
}
}
Symbol 255 MovieClip [__Packages.djo.FPS] Frame 0
class djo.FPS
{
var _mc, _text, no_frames, start_time;
function FPS () {
}
function Init(mc, x, y, width, height, color) {
_mc = mc.createEmptyMovieClip("fps", mc.getNextHighestDepth());
_text = CreateTextField(_mc, x, y, width, height, color);
no_frames = 0;
start_time = getTimer();
}
function Restart() {
no_frames = 0;
start_time = getTimer();
_text.text = "FPS: 0";
}
function GetFPS() {
return(((no_frames++) / (getTimer() - start_time)) * 1000);
}
function Update() {
var _local2 = Math.round(((no_frames++) / (getTimer() - start_time)) * 100000) / 100;
_text.text = String("FPS: " + _local2);
}
function CreateTextField(mc, x, y, width, height, color) {
mc.createTextField("txt_fps", mc.getNextHighestDepth(), x, y, width, height);
var _local1 = mc.txt_fps;
_local1.selectable = false;
var _local2 = new TextFormat();
_local2.color = color;
_local2.bold = true;
_local1.setNewTextFormat(_local2);
return(_local1);
}
}
Symbol 256 MovieClip [__Packages.djo.RandomNumber] Frame 0
class djo.RandomNumber
{
var _rseed;
function RandomNumber (s) {
if (isNaN(s)) {
s = 1;
}
_rseed = s;
}
function SetSeed(s) {
_rseed = s;
}
function Randomize(s) {
_rseed = getTimer();
}
function Rand(Void) {
_rseed = (_rseed * 1103515245) + 12345;
_rseed = (_rseed & 4294967295) | 1;
return(_rseed);
}
function Random(high, low) {
if (low == undefined) {
low = 0;
}
var _local2 = Rand();
if (_local2 < 0) {
_local2 = _local2 + 4294967296;
}
return(((_local2 * ((high - low) + 1)) / 4294967296) + low);
}
}
Symbol 257 MovieClip [__Packages.jager.Swarm] Frame 0
class jager.Swarm
{
var count, arr, center, width, height, mc;
function Swarm () {
count = 0;
arr = new Array();
center = new Object({x:0, y:0});
width = (height = 0);
}
function Init(nmc, nwidth, nheight) {
mc = nmc;
width = nwidth;
height = nheight;
}
function setCenter(nx, ny) {
center.x = nx;
center.y = ny;
}
function addObject(nx, ny, energy, linkage) {
if (nx == undefined) {
nx = 0;
}
if (ny == undefined) {
ny = 0;
}
var _local2 = new Object();
_local2.pos = new Object({x:nx, y:ny});
_local2.dir = new Object({x:0, y:0});
_local2.dest = new Object({x:center.x, y:center.y});
_local2.mod = new Object({x:(Math.random() * 10) - 5, y:(Math.random() * 10) - 5});
_local2.is_dead = false;
_local2.iterations = random(20) + 10;
_local2.iter = 1;
_local2.item = 0;
_local2.in_swarm = true;
_local2.is_attacking = false;
_local2.energy = energy;
_local2.id = mc.getNextHighestDepth();
_local2.last_attack = getTimer();
_local2.mc = mc.attachMovie(linkage, "swarm" + _local2.id, _local2.id);
_local2.mc._x = _local2.pos.x;
_local2.mc._y = _local2.pos.y;
_local2.mc.gotoAndPlay(random(4) + 1);
count = arr.push(_local2);
return(arr[count - 1]);
}
function processObject(o) {
if (o.iter > o.iterations) {
o.iter = 1;
o.dest.x = (center.x + (Math.random() * width)) - (width / 2);
o.dest.y = (center.y + (Math.random() * height)) - (height / 2);
} else {
var _local8 = (o.dest.x - o.dir.x) * a;
var _local7 = (o.dest.y - o.dir.y) * a;
var _local4 = o.mod.x + _local8;
var _local3 = o.mod.y + _local7;
var _local6 = _local4 - ((o.dir.x - _local4) * b);
var _local5 = _local3 - ((o.dir.y - _local3) * b);
o.pos.x = o.pos.x + ((o.dir.x - o.pos.x) / 8);
o.pos.y = o.pos.y + ((o.dir.y - o.pos.y) / 8);
o.dir = {x:_local4, y:_local3};
o.mod = {x:_local6, y:_local5};
o.iter++;
}
o.mc._x = o.pos.x;
o.mc._y = o.pos.y;
}
function processObjects() {
for (var _local2 in arr) {
if (arr[_local2].in_swarm && (!arr[_local2].is_dead)) {
processObject(arr[_local2]);
}
}
}
function toString() {
return(count + " object(s) in swarm.");
}
function deleteFirst() {
var _local2 = arr.shift();
_local2.mc.removeMovieClip();
}
function removeFromSwarm(i) {
arr[i].in_swarm = false;
}
function deleteObject(i) {
var _local2 = arr[0];
arr[0] = arr[i];
arr[i] = _local2;
count--;
return(arr.shift());
}
function clearSwarm() {
var _local3 = arr.length;
while (_local3--) {
var _local2 = arr.shift();
_local2.mc.removeMovieClip();
}
}
var a = 0.05;
var b = 0.7;
}
Symbol 204 MovieClip Frame 1
function Reset() {
Volume = (maxVolume = settings.music_volume);
var _local1 = -1;
}
function changeVolume(vol) {
Volume = vol;
Control.setVolume(vol);
}
function changePan(pan) {
Pan = pan;
Control.setPan(pan);
}
function Fade(type) {
var target = 100;
if (type == "out") {
target = 0;
}
this.onEnterFrame = function () {
Control.setVolume(Volume);
var _local2 = (target - Volume) / 8;
Volume = Volume + _local2;
if (Math.abs(_local2) < 1) {
Volume = target;
Control.setVolume(Volume);
if (Volume == 0) {
StopSong();
}
delete this.onEnterFrame;
}
};
}
function StartSong() {
Volume = (maxVolume = settings.music_volume);
changeVolume(Volume);
currTrack = -1;
playTrack();
}
function StopSong() {
patterns[currTrack].stop();
}
function playTrack() {
currTrack = ((currTrack < (song.length - 1)) ? (currTrack + 1) : 0);
next_track = song[currTrack];
patterns[next_track].start();
if (can_add_enemies) {
if ((next_track == 4) || (next_track == 5)) {
var _local2 = screen._width + 150;
var _local3 = _root.script.getY(_root.data.level.ground.arr, _local2);
_root.data.enemies.zombies.addZombie(_local2, _local3, 2);
_root.data.enemies.bat_swarm.addBats(100);
}
}
patterns[next_track].onSoundComplete = playTrack;
next_track = -1;
}
function playMenu() {
StopSong();
song = menu;
StartSong();
}
function playGame() {
StopSong();
song = game;
StartSong();
}
function nextSong(sSong) {
switch (sSong) {
case "game" :
song = game;
currTrack = -1;
break;
case "menu" :
song = menu;
currTrack = -1;
break;
case "tutorial" :
song = tutorial;
currTrack = -1;
}
}
function playTutorial() {
StopSong();
song = tutorial;
StartSong();
}
var Control = new Sound(this);
var maxVolume = 100;
var Volume = maxVolume;
var Pan = 0;
var can_add_enemies = false;
var patterns = new Array();
var next_track = 0;
var song;
var game = new Array(2, 2, 1, 1, 3, 4, 1, 2, 2, 1, 5, 1, 1, 2, 2, 1, 1, 2, 3, 5, 1, 1, 1, 1);
var tutorial = new Array(2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1);
var menu = new Array(0, 0, 0);
var currTrack = -1;
var o = new Sound(this);
o.attachSound("mus00");
patterns.push(o);
o = new Sound(this);
o.attachSound("mus01");
patterns.push(o);
o = new Sound(this);
o.attachSound("mus02");
patterns.push(o);
o = new Sound(this);
o.attachSound("mus03");
patterns.push(o);
o = new Sound(this);
o.attachSound("mus04");
patterns.push(o);
o = new Sound(this);
o.attachSound("mus05");
patterns.push(o);
stop();
Symbol 209 MovieClip Frame 1
var num_particles = 20;
var damp = 0.89;
var num_force_fields = 2;
var frames = 0;
var time_started = 0;
var max_life = 250;
var arrParticles;
genParticles = function (num) {
var _local2 = new Array();
var _local3 = num;
while (_local3--) {
_local2.push(genParticle(this.mcParticles));
}
return(_local2);
};
genParticle = function (mc) {
var _local1 = new Object();
var _local2 = mc.getNextHighestDepth();
_local1.mc = mc.attachMovie("SmokeParticle", "p" + _local2, _local2);
_local1.pos = new djo.Vector2P();
_local1.pos.x = (Math.random() * 300) - 150;
_local1.pos.y = 50;
_local1.pos.vy = (Math.random() * -2) - 0.2;
_local1.pos.vx = 0;
_local1.mc._xscale = (p.mc._yscale = random(20) + 80);
_local1.life = random(max_life);
return(_local1);
};
onEnterFrame = function () {
var _local5 = arrParticles.length;
var _local6 = new djo.Vector2P();
while (_local5--) {
var _local2 = arrParticles[_local5];
var _local4 = 3;
while (_local4--) {
var _local3 = this["ff" + _local4];
if (_local4 == 2) {
dx = this._xmouse - _local2.pos.x;
dy = this._ymouse - _local2.pos.y;
} else {
dx = _local3._x - _local2.pos.x;
dy = _local3._y - _local2.pos.y;
}
_local2.pos.vx = _local2.pos.vx - ((50 * dx) / ((dx * dx) + (dy * dy)));
_local2.pos.vx = ((_local2.pos.vx + (Math.random() * 0.4)) - 0.2) * damp;
_local2.pos.Move();
_local2.mc._x = _local2.pos.x;
_local2.mc._y = _local2.pos.y;
_local2.life++;
_local2.mc._alpha = (1 - (_local2.life / max_life)) * 50;
if (_local2.life > max_life) {
_local2.life = 0;
_local2.pos.y = 50;
_local2.pos.vy = ((-Math.random()) * 1.5) - 0.5;
_local2.pos.vx = 0;
_local2.pos.x = (Math.random() * 300) - 150;
_local2.mc._xscale = (_local2.mc._yscale = random(20) + 100);
}
}
}
};
stop();
arrParticles = genParticles(20);
mcSilhouette.attachMovie("g:Silhouette", "Schatten", mcSilhouette.getNextHighestDepth());
Instance of Symbol 208 MovieClip "ff0" in Symbol 209 MovieClip Frame 1
on (press) {
startDrag (this);
}
on (release, releaseOutside) {
this.stopDrag();
}
Instance of Symbol 208 MovieClip "ff1" in Symbol 209 MovieClip Frame 1
on (press) {
startDrag (this);
}
on (release, releaseOutside) {
this.stopDrag();
}
Symbol 230 MovieClip Frame 1
this.gotoAndStop(_parent.id);
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 2
stop();
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 3
stop();
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 4
stop();
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 5
stop();
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 6
stop();
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 7
stop();
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 8
stop();
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 9
stop();
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 10
stop();
_parent.setHitArea(this._width, this._height);
Symbol 230 MovieClip Frame 11
stop();
_parent.setHitArea(this._width, this._height);
Symbol 233 Button
on (rollOver) {
gotoAndPlay ("rollover");
}
on (release, releaseOutside) {
gotoAndPlay ("press");
}
on (rollOut) {
gotoAndPlay ("rollout");
}
Symbol 234 MovieClip Frame 1
function setHitArea(w, h) {
Hit._width = w;
Hit._height = h;
}
Symbol 234 MovieClip Frame 4
stop();
Symbol 234 MovieClip Frame 10
stop();
Symbol 234 MovieClip Frame 16
stop();
Symbol 234 MovieClip Frame 21
onClick();
stop();
Symbol 240 MovieClip Frame 1
stop();
Symbol 240 MovieClip Frame 2
stop();
Symbol 240 MovieClip Frame 3
stop();
Symbol 240 MovieClip Frame 4
stop();
Instance of Symbol 234 MovieClip in Symbol 241 MovieClip Frame 1
onClipEvent (load) {
this.id = 1;
this.onClick = function () {
_root.gotoAndPlay("init");
};
}
Instance of Symbol 234 MovieClip in Symbol 241 MovieClip Frame 1
onClipEvent (load) {
this.id = 2;
this.onClick = function () {
_root.gotoAndPlay("options");
};
}
Instance of Symbol 234 MovieClip in Symbol 241 MovieClip Frame 1
onClipEvent (load) {
this.id = 3;
this.onClick = function () {
_root.gotoAndPlay("credits");
};
}
Instance of Symbol 234 MovieClip in Symbol 241 MovieClip Frame 1
onClipEvent (load) {
this.id = 4;
this.onClick = function () {
getURL ("http://www.newgrounds.com/collection/halloween.html", "_blank");
};
}
Instance of Symbol 234 MovieClip in Symbol 245 MovieClip Frame 1
onClipEvent (load) {
this.id = 10;
this.onClick = function () {
getURL ("http://artbit.deviantart.com", "_blank");
};
}
Instance of Symbol 234 MovieClip in Symbol 245 MovieClip Frame 1
onClipEvent (load) {
this.id = 11;
this.onClick = function () {
getURL ("http://dijabolik.deviantart.com", "_blank");
};
}
Instance of Symbol 234 MovieClip in Symbol 245 MovieClip Frame 1
onClipEvent (load) {
this.id = 6;
this.onClick = function () {
_root.play();
};
}
Symbol 249 MovieClip Frame 1
if (settings.quality == "LOW") {
low._xscale = (low._yscale = 120);
med._xscale = (med._yscale = (high._xscale = (high._yscale = 80)));
} else if (settings.quality == "MEDIUM") {
med._xscale = (med._yscale = 120);
low._xscale = (low._yscale = (high._xscale = (high._yscale = 80)));
} else if (settings.quality == "HIGH") {
high._xscale = (high._yscale = 120);
low._xscale = (low._yscale = (med._xscale = (med._yscale = 80)));
}
volume._x = (settings.music_volume * 2) + 50;
stop();
Instance of Symbol 234 MovieClip in Symbol 249 MovieClip Frame 1
onClipEvent (load) {
this.id = 6;
this.onClick = function () {
_root.play();
};
}
Instance of Symbol 234 MovieClip "med" in Symbol 249 MovieClip Frame 1
onClipEvent (load) {
this.id = 8;
this.onClick = function () {
settings.quality = "MEDIUM";
_quality = "MEDIUM";
this._xscale = (this._yscale = 120);
this._parent.low._xscale = (this._parent.low._yscale = 80);
this._parent.high._xscale = (this._parent.high._yscale = 80);
};
}
Instance of Symbol 234 MovieClip "low" in Symbol 249 MovieClip Frame 1
onClipEvent (load) {
this.id = 9;
this.onClick = function () {
settings.quality = "LOW";
_quality = "LOW";
this._xscale = (this._yscale = 120);
this._parent.med._xscale = (this._parent.med._yscale = 80);
this._parent.high._xscale = (this._parent.high._yscale = 80);
};
}
Instance of Symbol 234 MovieClip "high" in Symbol 249 MovieClip Frame 1
onClipEvent (load) {
this.id = 7;
this.onClick = function () {
settings.quality = "HIGH";
_quality = "HIGH";
this._xscale = (this._yscale = 120);
this._parent.low._xscale = (this._parent.low._yscale = 80);
this._parent.med._xscale = (this._parent.med._yscale = 80);
};
}
Instance of Symbol 234 MovieClip "volume" in Symbol 249 MovieClip Frame 1
onClipEvent (load) {
this.id = 5;
this.onClick = function () {
};
}
onClipEvent (mouseDown) {
var vol = ((this._x - 50) / 2);
_root.Music.changeVolume(vol);
}
on (rollOver) {
this.gotoAndPlay("rollover");
}
on (press) {
startDrag (this, true, 50, 130, 250, 130);
}
on (release, releaseOutside) {
var vol = ((this._x - 50) / 2);
_root.Music.changeVolume(vol);
this.stopDrag();
}