summaryrefslogtreecommitdiff
path: root/wolf3d/js/build.js
diff options
context:
space:
mode:
authors1n <[email protected]>2019-09-11 18:46:21 -0700
committers1n <[email protected]>2019-09-11 18:46:21 -0700
commit7e704ee1fdab32255a013961d5935554655baaec (patch)
treea0eb5213c4060bd6d4cae382c65feeae55a79dc5 /wolf3d/js/build.js
parentlink proper css (diff)
downloads1n.pw-admin-7e704ee1fdab32255a013961d5935554655baaec.tar.xz
s1n.pw-admin-7e704ee1fdab32255a013961d5935554655baaec.zip
remove wolf3d, add credits to dino
Diffstat (limited to 'wolf3d/js/build.js')
-rw-r--r--wolf3d/js/build.js9605
1 files changed, 0 insertions, 9605 deletions
diff --git a/wolf3d/js/build.js b/wolf3d/js/build.js
deleted file mode 100644
index a91eb85..0000000
--- a/wolf3d/js/build.js
+++ /dev/null
@@ -1,9605 +0,0 @@
-// Wolfeinstein 3D Emulation Script
-// Game contains: All 6 episodes + Spear Of Destiny
-// HTML5+WEBGL was used
-
-floor = function (a) {
- return~~ a
-};
-ceil = Math.ceil;
-abs = Math.abs;
-sqrt = Math.sqrt;
-sqrt2 = Math.sqrt(2);
-random = Math.random;
-round = Math.round;
-pow = Math.pow;
-min = Math.min;
-max = Math.max;
-sin = Math.sin;
-cos = Math.cos;
-atan2 = Math.atan2;
-utils = {
- directions: {
- north: {
- x: 0,
- y: -1
- },
- south: {
- x: 0,
- y: 1
- },
- east: {
- x: 1,
- y: 0
- },
- west: {
- x: -1,
- y: 0
- }
- },
- queryStrings: function () {
- var a = {}, b = window.location.href.split("?");
- if (1 < b.length)
- for (var b = b[1].split("&"), c = 0; c < b.length; c++) a[b[c].split("=")[0]] = b[c].split("=")[1];
- return a
- },
- eval: function (a, b) {
- for (var c = "", d = 0; d < b.length; d++) c += "string" == typeof b[d] ? "'" + b[d] + "'" : b[d].toString(), d < b.length - 1 && (c += ",");
- return a + "(" + c + ");"
- },
- clone: function (a) {
- var b = {};
- utils.overwrite(b, a);
- return b
- },
- shuffle: function (a) {
- for (var b, c, d =
- a.length; d; b = parseInt(Math.random() * d), c = a[--d], a[d] = a[b], a[b] = c);
- return a
- },
- random: function (a, b) {
- b || (b = 0);
- return floor((a - b + 1) * random()) + b
- },
- round: function (a, b) {
- b || (b = 1);
- return round(a * pow(10, b)) / pow(10, b)
- },
- bind: function (a, b) {
- return b.bind ? b.bind(a) : function () {
- return b.apply(a, arguments)
- }
- },
- extend: function (a, b) {
- for (var c in b) void 0 == a[c] ? null != b[c] && void 0 != b[c] && "object" == typeof b[c] ? (a[c] = "number" == typeof b[c].length ? [] : {}, utils.extend(a[c], b[c])) : a[c] = b[c] : "object" == typeof b[c] && utils.extend(a[c],
- b[c])
- },
- overwrite: function (a, b) {
- for (var c in b) null != b[c] && void 0 != b[c] && "object" == typeof b[c] ? (a[c] = "number" == typeof b[c].length ? [] : {}, utils.overwrite(a[c], b[c])) : a[c] = b[c]
- },
- fillString: function (a, b, c) {
- for (var d = "", e = 0; e < c; e++) d += b;
- d += a;
- return d.slice(max(0, d.length - c))
- },
- rad: Math.PI / 180,
- deg: 180 / Math.PI
-};
-resources = {
- textures: {
- sprites: "images/sprites/items.png",
- "sod-sprites": "images/sprites/sod-items.png",
- walls: "images/walls/walls.png"
- },
- images: {
- hudWeapon: "images/hud/weapons.png",
- hudFaces: "images/hud/faces.png",
- hudKeys: "images/hud/keys.png",
- hudChars: "images/hud/chars.png",
- knife: "images/weapons/knife.png",
- pistol: "images/weapons/pistol.png",
- machinegun: "images/weapons/machinegun.png",
- gatling: "images/weapons/gatling.png",
- soldier: "images/sprites/soldier.png",
- dog: "images/sprites/dog.png",
- ss: "images/sprites/ss.png",
- mutant: "images/sprites/mutant.png",
- officer: "images/sprites/officer.png",
- hans: "images/sprites/hans.png",
- drschabbs: "images/sprites/drschabbs.png",
- needle: "images/sprites/needle.png",
- ghost: "images/sprites/ghost.png",
- fireball: "images/sprites/fireball.png",
- hitler: "images/sprites/hitler.png",
- giftmacher: "images/sprites/giftmacher.png",
- missile: "images/sprites/missile.png",
- gretel: "images/sprites/gretel.png",
- fettgesicht: "images/sprites/fettgesicht.png",
- bj: "images/sprites/bj.png",
- pacman: "images/sprites/pacman.png",
- angelofdeath: "images/sprites/angelofdeath.png",
- deathknight: "images/sprites/deathknight.png",
- orb: "images/sprites/orb.png",
- himissile: "images/sprites/himissile.png",
- spectre: "images/sprites/spectre.png",
- transgrosse: "images/sprites/transgrosse.png",
- ubermutant: "images/sprites/ubermutant.png",
- wilhelm: "images/sprites/wilhelm.png"
- },
- textureWidth: 128,
- textureHeight: 128,
- init: function (a, b) {
- var c = document.getElementById("resources");
- c || (c = document.createElement("DIV"), c.id = "resources", document.body.appendChild(c),
- c = document.getElementById("resources"));
- resources.count = 0;
- for (var d in resources.textures) "string" == typeof resources.textures[d] && resources.count++;
- for (var e in resources.images) "string" == typeof resources.images[e] && resources.count++;
- for (d in resources.textures) "string" == typeof resources.textures[d] && (resources[d] ? (resources.count--, !resources.count && a && a()) : (c = new Image, c.id = d, c.onload = function () {
- var b = floor((this.width || this.naturalWidth) / resources.textureWidth),
- c = floor((this.height || this.naturalHeight) /
- resources.textureHeight);
- resources[this.id] = [];
- for (var d = 0; d < b; d++) {
- resources[this.id][d] = [];
- for (var e = 0; e < c; e++) resources[this.id][d][e] = new resources.Texture(this, d, e)
- }
- resources.count--;
- !resources.count && a && a()
- }, c.onerror = b, c.src = resources.textures[d]));
- for (e in resources.images) "string" == typeof resources.images[e] && (resources[e] ? (resources.count--, !resources.count && a && a()) : (c = new Image, c.id = e, c.onload = function () {
- this.id && !resources[this.id] && (resources[this.id] = this);
- resources.count--;
- !resources.count &&
- a && a()
- }, c.onerror = b, c.src = resources.images[e]))
- },
- Texture: function (a, b, c) {
- if (!a) return null;
- this.image = a;
- this.index = b;
- this.depth = c;
- this.canvas = document.createElement("CANVAS");
- this.canvas.width = resources.textureWidth;
- this.canvas.height = resources.textureHeight;
- this.width = this.canvas.width;
- this.height = this.canvas.height;
- this.context = this.canvas.getContext("2d");
- this.context.drawImage(a, b * resources.textureWidth, c * resources.textureHeight, resources.textureWidth, resources.textureHeight, 0, 0, this.canvas.width,
- this.canvas.height);
- this.url = this.canvas.toDataURL()
- },
- PreTexture: function (a) {
- if (!a) return null;
- this.canvas = document.createElement("CANVAS");
- this.context = this.canvas.getContext("2d");
- this.width = a.width || a.naturalWidth;
- this.height = a.height || a.naturalHeight;
- this.canvas.width = this.width;
- this.canvas.height = this.height;
- this.context.drawImage(a, 0, 0);
- this.data = this.context.getImageData(0, 0, this.width, this.height)
- .data
- }
-};
-resources.palette = [[0, 0, 0], [0, 0, 168], [0, 168, 0], [0, 168, 168], [168, 0, 0], [168, 0, 168], [168, 84, 0], [192, 192, 192], [84, 84, 84], [84, 84, 252], [84, 252, 84], [84, 252, 252], [252, 84, 84], [252, 84, 252], [252, 252, 84], [252, 252, 252], [236, 236, 236], [220, 220, 220], [208, 208, 208], [192, 192, 192], [180, 180, 180], [168, 168, 168], [152, 152, 152], [140, 140, 140], [124, 124, 124], [112, 112, 112], [100, 100, 100], [84, 84, 84], [72, 72, 72], [56, 56, 56], [44, 44, 44], [32, 32, 32], [252, 0, 0], [236, 0, 0], [224, 0, 0], [212, 0, 0], [200, 0, 0], [188, 0, 0], [176, 0, 0], [164, 0, 0], [152, 0,
-0], [136, 0, 0], [124, 0, 0], [112, 0, 0], [100, 0, 0], [88, 0, 0], [76, 0, 0], [64, 0, 0], [252, 216, 216], [252, 184, 184], [252, 156, 156], [252, 124, 124], [252, 92, 92], [252, 64, 64], [252, 32, 32], [252, 0, 0], [252, 168, 92], [252, 152, 64], [252, 136, 32], [252, 120, 0], [228, 108, 0], [204, 96, 0], [180, 84, 0], [156, 76, 0], [252, 252, 216], [252, 252, 184], [252, 252, 156], [252, 252, 124], [252, 248, 92], [252, 244, 64], [252, 244, 32], [252, 244, 0], [228, 216, 0], [204, 196, 0], [180, 172, 0], [156, 156, 0], [132, 132, 0], [112, 108, 0], [88, 84, 0], [64, 64, 0], [208, 252, 92], [196, 252, 64], [180, 252,
-32], [160, 252, 0], [144, 228, 0], [128, 204, 0], [116, 180, 0], [96, 156, 0], [216, 252, 216], [188, 252, 184], [156, 252, 156], [128, 252, 124], [96, 252, 92], [64, 252, 64], [32, 252, 32], [0, 252, 0], [0, 252, 0], [0, 236, 0], [0, 224, 0], [0, 212, 0], [4, 200, 0], [4, 188, 0], [4, 176, 0], [4, 164, 0], [4, 152, 0], [4, 136, 0], [4, 124, 0], [4, 112, 0], [4, 100, 0], [4, 88, 0], [4, 76, 0], [4, 64, 0], [216, 252, 252], [184, 252, 252], [156, 252, 252], [124, 252, 248], [92, 252, 252], [64, 252, 252], [32, 252, 252], [0, 252, 252], [0, 228, 228], [0, 204, 204], [0, 180, 180], [0, 156, 156], [0, 132, 132], [0, 112, 112],
- [0, 88, 88], [0, 64, 64], [92, 188, 252], [64, 176, 252], [32, 168, 252], [0, 156, 252], [0, 140, 228], [0, 124, 204], [0, 108, 180], [0, 92, 156], [216, 216, 252], [184, 188, 252], [156, 156, 252], [124, 128, 252], [92, 96, 252], [64, 64, 252], [32, 36, 252], [0, 4, 252], [0, 0, 252], [0, 0, 236], [0, 0, 224], [0, 0, 212], [0, 0, 200], [0, 0, 188], [0, 0, 176], [0, 0, 164], [0, 0, 152], [0, 0, 136], [0, 0, 124], [0, 0, 112], [0, 0, 100], [0, 0, 88], [0, 0, 76], [0, 0, 64], [40, 40, 40], [252, 224, 52], [252, 212, 36], [252, 204, 24], [252, 192, 8], [252, 180, 0], [180, 32, 252], [168, 0, 252], [152, 0, 228], [128, 0, 204], [116,
-0, 180], [96, 0, 156], [80, 0, 132], [68, 0, 112], [52, 0, 88], [40, 0, 64], [252, 216, 252], [252, 184, 252], [252, 156, 252], [252, 124, 252], [252, 92, 252], [252, 64, 252], [252, 32, 252], [252, 0, 252], [224, 0, 228], [200, 0, 204], [180, 0, 180], [156, 0, 156], [132, 0, 132], [108, 0, 112], [88, 0, 88], [64, 0, 64], [252, 232, 220], [252, 224, 208], [252, 216, 196], [252, 212, 188], [252, 204, 176], [252, 196, 164], [252, 188, 156], [252, 184, 144], [252, 176, 128], [252, 164, 112], [252, 156, 96], [240, 148, 92], [232, 140, 88], [220, 136, 84], [208, 128, 80], [200, 124, 76], [188, 120, 72], [180, 112, 68],
- [168, 104, 64], [160, 100, 60], [156, 96, 56], [144, 92, 52], [136, 88, 48], [128, 80, 44], [116, 76, 40], [108, 72, 36], [92, 64, 32], [84, 60, 28], [72, 56, 24], [64, 48, 24], [56, 44, 20], [40, 32, 12], [96, 0, 100], [0, 100, 100], [0, 96, 96], [0, 0, 28], [0, 0, 44], [48, 36, 16], [72, 0, 72], [80, 0, 80], [0, 0, 52], [28, 28, 28], [76, 76, 76], [92, 92, 92], [64, 64, 64], [48, 48, 48], [52, 52, 52], [216, 244, 244], [184, 232, 232], [156, 220, 220], [116, 200, 200], [72, 192, 192], [32, 180, 180], [32, 176, 176], [0, 164, 164], [0, 152, 152], [0, 140, 140], [0, 132, 132], [0, 124, 124], [0, 120, 120], [0, 116, 116], [0,
-112, 112], [0, 108, 108], [152, 0, 136]];
-audio = {
- music: {
- "nazi-nor": "music/nazi_nor",
- wonderin: "music/wonderin",
- endlevel: "music/endlevel",
- roster: "music/roster",
- urahero: "music/urahero",
- getthem: "music/getthem",
- searchn: "music/searchn",
- pow: "music/pow",
- suspense: "music/suspense",
- warmarch: "music/warmarch",
- corner: "music/corner",
- dungeon: "music/dungeon",
- funkyou: "music/funkyou",
- goingaft: "music/goingaft",
- headache: "music/headache",
- hitlwltz: "music/hitlwltz",
- introcw3: "music/introcw3",
- "nazi-omi": "music/nazi_omi",
- "nazi-rap": "music/nazi_rap",
- pacman: "music/pacman",
- pregnant: "music/pregnant",
- twelfth: "music/twelfth",
- ultimate: "music/ultimate",
- zerohour: "music/zerohour",
- salute: "music/salute",
- victors: "music/victors",
- vicmarch: "music/vicmarch",
- copypro: "music/copypro",
- xdeath: "music/xdeath",
- xevil: "music/xevil",
- xfunkie: "music/xfunkie",
- xgetyou: "music/xgetyou",
- xjaznazi: "music/xjaznazi",
- xputit: "music/xputit",
- xtheend: "music/xtheend",
- xtiptoe: "music/xtiptoe",
- xtower2: "music/xtower2"
- },
- sounds: {
- hitwall: "sounds/sfx/hitwall",
- donothing: "sounds/sfx/donothing",
- atkknife: "sounds/sfx/atkknife",
- atkpistol: "sounds/atkpistol",
- atkmachinegun: "sounds/atkmachinegun",
- atkgatling: "sounds/atkgatling",
- getmachine: "sounds/sfx/getmachine",
- getgatling: "sounds/sfx/getgatling",
- opendoor: "sounds/opendoor",
- closedoor: "sounds/closedoor",
- pushwall: "sounds/pushwall",
- leveldone: "sounds/leveldone",
- nazifire: "sounds/nazifire",
- ssfire: "sounds/ssfire",
- bossfire: "sounds/bossfire",
- schabbsthrow: "sounds/sfx/schabbsthrow",
- flamethrower: "sounds/sfx/flamethrower",
- missilefire: "sounds/sfx/missilefire",
- missilehit: "sounds/sfx/missilehit",
- yeah: "sounds/yeah",
- halt: "sounds/halt",
- deathscream1: "sounds/deathscream1",
- deathscream2: "sounds/deathscream2",
- deathscream3: "sounds/deathscream1",
- deathscream4: "sounds/deathscream4",
- deathscream5: "sounds/deathscream5",
- deathscream6: "sounds/deathscream6",
- deathscream7: "sounds/deathscream7",
- deathscream8: "sounds/deathscream8",
- deathscream9: "sounds/deathscream9",
- dogattack: "sounds/dogattack",
- dogbark: "sounds/dogbark",
- dogdeath: "sounds/dogdeath",
- schutzad: "sounds/schutzad",
- leben: "sounds/leben",
- spion: "sounds/spion",
- neinsovass: "sounds/neinsovass",
- ahhhg: "sounds/ahhhg",
- gutentag: "sounds/gutentag",
- mutti: "sounds/mutti",
- kein: "sounds/kein",
- mein: "sounds/mein",
- schabbsha: "sounds/schabbsha",
- meingott: "sounds/meingott",
- hitlerha: "sounds/hitlerha",
- tothund: "sounds/tothund",
- die: "sounds/die",
- mechstep: "sounds/mechstep",
- scheist: "sounds/scheist",
- eva: "sounds/eva",
- eine: "sounds/eine",
- donner: "sounds/donner",
- erlauben: "sounds/erlauben",
- rose: "sounds/rose",
- getammo: "sounds/sfx/getammo",
- getammobox: "sounds/sfx/getammobox",
- getkey: "sounds/sfx/getkey",
- slurpie: "sounds/slurpie",
- health1: "sounds/sfx/health1",
- health2: "sounds/sfx/health2",
- bonus1up: "sounds/sfx/bonus1up",
- bonus1: "sounds/sfx/bonus1",
- bonus2: "sounds/sfx/bonus2",
- bonus3: "sounds/sfx/bonus3",
- bonus4: "sounds/sfx/bonus4",
- playerdeath: "sounds/sfx/playerdeath",
- movegun1: "sounds/sfx/movegun1",
- movegun2: "sounds/sfx/movegun2",
- escpressed: "sounds/sfx/escpressed",
- shoot: "sounds/sfx/shoot",
- endbonus1: "sounds/sfx/endbonus1",
- endbonus2: "sounds/sfx/endbonus2",
- percent100: "sounds/sfx/percent100",
- knightmissile: "sounds/sfx/knightmissile",
- angelfire: "sounds/sfx/angelfire",
- ghostsight: "sounds/sfx/ghostsight",
- ghostfade: "sounds/sfx/ghostfade",
- transsight: "sounds/transsight",
- transdeath: "sounds/transdeath",
- wilhelmsight: "sounds/wilhelmsight",
- wilhelmdeath: "sounds/wilhelmdeath",
- uberdeath: "sounds/uberdeath",
- knightsight: "sounds/knightsight",
- knightdeath: "sounds/knightdeath",
- angelsight: "sounds/angelsight",
- angeldeath: "sounds/angeldeath",
- "sod-getgatling": "sounds/sod-getgatling",
- getspear: "sounds/getspear"
- },
- buffers: {},
- process: [],
- musicChannel: null,
- soundsChannel: {},
- context: window.webkitAudioContext ? new webkitAudioContext : null,
- request: function (a, b, c) {
- if (audio.context) {
- var d = new XMLHttpRequest;
- d.open("GET", b + ".mp4", !0);
- d.responseType = "arraybuffer";
- d.onload = function () {
- audio.context.decodeAudioData(d.response, function (b) {
- audio.buffers[a] = b;
- c && c()
- })
- };
- d.send()
- } else audio.buffers[a] = new Audio(b + (audio.canPlayMP4 ? ".mp4" : ".ogg")), audio.buffers[a].preload = !0, c && c()
- },
- init: function (a) {
- var b = document.createElement("AUDIO");
- b && (audio.canPlay = !! b.canPlayType, audio.canPlay &&
- (audio.canPlayMP4 = b.canPlayType("audio/mpeg"), audio.musicVolume = a.musicVolume || 0, audio.soundsVolume = a.soundsVolume || 0))
- },
- playMusic: function (a, b) {
- if (audio.canPlay && !audio.currentMusic && !audio.musicChannel) {
- audio.musicChannel = document.createElement("AUDIO");
- audio.musicChannel.id = "music";
- audio.musicChannel.volume = (b || 1) * audio.musicVolume;
- audio.musicChannel.preload = !0;
- audio.musicChannel.loop = !0;
- audio.musicChannel.looping = !0;
- var c = document.createElement("SOURCE");
- c.src = audio.music[a] + ".mp4";
- var d = document.createElement("SOURCE");
- d.src = audio.music[a] + ".ogg";
- audio.musicChannel.appendChild(c);
- audio.musicChannel.appendChild(d);
- document.body.appendChild(audio.musicChannel);
- audio.musicChannel.play();
- audio.currentMusic = a;
- var e = function () {
- audio.musicChannel && 0 == audio.musicChannel.currentTime && (audio.musicChannel.load(), audio.musicChannel.play(), setTimeout(e, 1E3))
- };
- setTimeout(e, 1E3)
- }
- },
- stopMusic: function () {
- audio.currentMusic && (audio.musicChannel.pause(), document.body.removeChild(audio.musicChannel), audio.musicChannel = null, audio.currentMusic =
- null)
- },
- setMusicVolume: function (a) {
- audio.musicVolume = a;
- localStorage.musicVolume = round(100 * audio.musicVolume)
- .toString();
- audio.musicChannel && (audio.musicChannel.volume = (null == a || void 0 == a ? 1 : a) * audio.musicVolume)
- },
- setSoundsVolume: function (a) {
- audio.soundsVolume = a;
- localStorage.soundsVolume = round(100 * audio.soundsVolume)
- .toString()
- },
- muteMusic: function () {
- audio.setMusicVolume(0)
- },
- muteSounds: function () {
- audio.setSoundsVolume(0)
- },
- queueSound: function (a, b, c) {
- audio.process.push({
- id: a,
- x: b,
- y: c
- })
- },
- playSound: function (a,
- b, c) {
- if (audio.canPlay && 0 != audio.soundsVolume)
- if (audio.context) {
- var d = audio.soundsChannel[a],
- e = audio.buffers[a];
- if ((c ? d : 1) && e)
- if (c) d.src.noteOff(0), d.gain = audio.context.createGainNode(), d.src = audio.context.createBufferSource(), d.src.buffer = e, d.src.connect(d.gain), d.gain.connect(audio.context.destination), d.gain.gain.value = (null == b || void 0 == b ? 1 : b) * audio.soundsVolume, d.src.noteOn(0);
- else {
- var d = audio.context.createGainNode(),
- f = audio.context.createBufferSource();
- f.buffer = e;
- f.connect(d);
- d.connect(audio.context.destination);
- d.gain.value = (null == b || void 0 == b ? 1 : b) * audio.soundsVolume;
- f.noteOn(0)
- } else audio.request(a, audio.sounds[a], function () {
- var d = audio.buffers[a];
- if (d)
- if (c) {
- var e;
- audio.soundsChannel[a] || (audio.soundsChannel[a] = {
- gain: audio.context.createGainNode(),
- src: audio.context.createBufferSource()
- }, e = audio.soundsChannel[a]);
- e && (e.gain = audio.context.createGainNode(), e.src = audio.context.createBufferSource(), e.src.buffer = d, e.src.connect(e.gain), e.gain.connect(audio.context.destination), e.gain.gain.value = (null == b || void 0 ==
- b ? 1 : b) * audio.soundsVolume, e.src.noteOn(0))
- } else {
- e = audio.context.createGainNode();
- var f = audio.context.createBufferSource();
- f.buffer = d;
- f.connect(e);
- e.connect(audio.context.destination);
- e.gain.value = (null == b || void 0 == b ? 1 : b) * audio.soundsVolume;
- f.noteOn(0)
- }
- })
- } else if (e = audio.buffers[a]) {
- e.volume = (null == b || void 0 == b ? 1 : b) * audio.soundsVolume;
- try {
- e.currentTime = 0
- } catch (h) {}
- e.play()
- } else audio.request(a, audio.sounds[a], function () {
- var c = audio.buffers[a];
- if (c) {
- c.volume = (null == b || void 0 == b ? 1 : b) * audio.soundsVolume;
- try {
- c.currentTime = 0
- } catch (d) {}
- c.play()
- }
- })
- }
-};
-animation = {
- process: [],
- Animation: function (a) {
- a || (a = {});
- this.keyframe = a.keyframe || 0;
- this.state = a.state || this.keyframe;
- this.speed = a.speed || 1;
- this.count = a.count || 1;
- this.step = a.step || 0;
- this.index = 0;
- this.single = a.single || !1;
- this.slide = a.slide || !1;
- this.callback = a.callback ? a.callback : null
- }
-};
-animation.Animation.prototype = {
- calculateState: function () {
- this.state = this.keyframe + this.index * this.step
- },
- play: function () {
- this.process != this.play && (this.process = this.play, 0 > animation.process.indexOf(this) && animation.process.push(this), this.timer = 0);
- this.timer++;
- this.timer >= this.speed / game.timeFactor && (this.stopping ? this.stop() : (this.timer = 0, this.index = ++this.index % this.count, this.calculateState(), this.callback && this.callback(this), 0 == this.index && this.single && (this.stopping = !0)))
- },
- back: function () {
- if (0 ==
- this.index) return !1;
- this.process != this.back && (this.process = this.back, 0 > animation.process.indexOf(this) && animation.process.push(this), this.timer = 0);
- this.timer++;
- this.timer >= this.speed / game.timeFactor && (this.stopping ? this.stop() : (this.timer = 0, this.index = --this.index % this.count, this.calculateState(), this.callback && this.callback(this), 0 == this.index && (this.stopping = !0)))
- },
- stop: function () {
- animation.process.splice(animation.process.indexOf(this), 1);
- delete this.stopping;
- delete this.process;
- delete this.timer
- },
- isPlaying: function () {
- return this.state > this.keyframe
- },
- stepForward: function () {
- this.timer || (this.timer = 0);
- this.timer++;
- this.timer >= this.speed / game.timeFactor && (this.timer = 0, this.index = ++this.index % this.count, this.calculateState(), this.callback && this.callback(this), 0 == this.index && this.single && delete this.timer)
- },
- stepBackward: function () {
- if (0 == this.index) return !1;
- this.timer || (this.timer = 0);
- this.timer++;
- this.timer >= this.speed / game.timeFactor && (this.stopping ? this.stop() : (this.timer = 0, this.index = --this.index %
- this.count, this.calculateState(), this.callback && this.callback(this), 0 == this.index && (this.stopping = !0)))
- }
-};
-sprites = {
- Sprite: function (a) {
- a || (a = {});
- this.eval = a.eval || JSON.stringify(a);
- this.x = a.x || 0;
- this.y = a.y || 0;
- this.hit = a.hit || !1;
- this.destroyable = a.destroyable || !1;
- this.resource = a.resource ? resources[a.resource] : resources.sprites;
- this.texture = a.texture + 1 ? this.resource[a.texture][0].canvas : null;
- this.animations = a.animations || {};
- void 0 == this.animations.current ? this.animations.current = null : this.animate(this.animations.current);
- this.listeners = {};
- if (a.listeners)
- for (var b in a.listeners) this.listeners[b] = utils.bind(this,
- a.listeners[b])
- }
-};
-sprites.Sprite.prototype = {
- animate: function (a) {
- this.animations[a] && (this.animations.current = a, this.animations[a].play())
- }
-};
-doors = {
- openSlide: resources.textureWidth,
- process: [],
- Door: function (a) {
- this.x = a.x || 0;
- this.y = a.y || 0;
- this.action = a.action || "open";
- this.delay = a.delay || 200;
- this.slide = a.slide || 0;
- this.weight = a.weight || floor(resources.textureWidth / 25);
- this.texture = a.texture ? resources.walls[a.texture] : null;
- this.key = a.key || null
- }
-};
-doors.Door.prototype = {
- open: function () {
- this.action = "close";
- this.process = utils.bind(this, function () {
- this.delayTimer ? (this.delayTimer++, this.delayTimer * game.timeFactor > this.delay && (delete this.delayTimer, this[this.action]())) : (this.slide = round(this.slide + this.weight * game.timeFactor), this.slide >= resources.textureWidth && (this.slide = resources.textureWidth, this.delayTimer = 1))
- });
- 0 > doors.process.indexOf(this) && doors.process.push(this);
- audio.queueSound("opendoor", this.x, this.y)
- },
- close: function () {
- this.delayTimer &&
- delete this.delayTimer;
- this.action = "open";
- this.process = utils.bind(this, function () {
- this.slide = round(this.slide - this.weight * game.timeFactor);
- 0 >= this.slide && (this.slide = 0, this.process = null, doors.process.splice(doors.process.indexOf(this), 1), audio.queueSound("closedoor", this.x, this.y))
- });
- 0 > doors.process.indexOf(this) && doors.process.push(this)
- },
- isOpen: function () {
- return this.slide >= doors.openSlide
- },
- isClosed: function () {
- return 0 >= this.slide
- },
- getTexture: function (a) {
- "silver" == this.key ? a = 1 : "gold" == this.key &&
- (a = 0);
- return this.texture[a].canvas
- }
-};
-secret = {
- process: [],
- SecretWall: function (a) {
- this.eval = a.eval || JSON.stringify({
- x: a.x,
- y: a.y
- });
- this.x = a.x || 0;
- this.y = a.y || 0;
- this.startX = this.x;
- this.startY = this.y;
- this.texture = a.texture + 1 ? resources.walls[a.texture] : null;
- this.state = a.state || 0;
- this.weight = a.weight || 0.02;
- this.map = a.map
- }
-};
-secret.SecretWall.prototype = {
- getTexture: function (a) {
- return this.texture[a].canvas
- },
- move: function () {
- this.state += this.weight * game.timeFactor;
- if (1 <= this.state && (this.map.secretMap[this.x][this.y] = null, this.x += this.direction.x, this.y += this.direction.y, this.map.secretMap[this.x][this.y] = this, this.state = 0, 2 == abs(this.x - this.startX) || 2 == abs(this.y - this.startY))) {
- this.map.removeSecret(this);
- this.process = null;
- secret.process.splice(secret.process.indexOf(this), 1);
- return
- }
- var a = this.map.getHitValue(this.x + this.direction.x,
- this.y + this.direction.y);
- if (a || null === a) this.map.removeSecret(this), this.process = null, secret.process.splice(secret.process.indexOf(this), 1)
- },
- push: function () {
- this.map.map[this.x][this.y] = 0;
- this.map.hit[this.x][this.y] = 0;
- this.process = utils.bind(this, this.move);
- 0 > secret.process.indexOf(this) && (audio.playSound("pushwall"), secret.process.push(this))
- }
-};
-scripts = {
- process: [],
- Script: function (a) {
- a || (a = {});
- this.x = a.x || 0;
- this.y = a.y || 0;
- this.action = a.action || null;
- this.params = a.params || null
- },
- angle: function (a, b, c) {
- return new scripts.Script({
- x: a,
- y: b,
- action: "angle",
- params: {
- angle: c
- }
- })
- },
- endgame: function (a, b) {
- return new scripts.Script({
- x: a,
- y: b,
- action: "endgame"
- })
- }
-};
-scripts.Script.prototype = {
- angle: function (a) {
- void 0 != a.angle && void 0 != a.getDirection && (a.angle = this.params.angle, a.getDirection())
- },
- endgame: function (a) {
- a.score && (document.getElementById("hand")
- .style.display = "none", a.map.ai.push(new ai.BJ({
- x: this.x + 2,
- y: this.y,
- angle: 4
- })), game.bj = a.map.ai[a.map.ai.length - 1], game.bj.direction = {
- x: 0,
- y: 0
- }, game.auto = function () {
- 0 > a.direction.x || abs(a.direction.y) > a.speed.rotation ? a.rotateLeft() : (a.direction = {
- x: 1,
- y: 0
- }, a.plane = {
- x: 0,
- y: -1
- });
- a.getDistance(game.bj.x, game.bj.y) >
- 2 * sqrt2 && (game.bj.direction = {
- x: -1,
- y: 0
- });
- !a.map.getMapValue(floor(a.x - a.direction.x * a.min.speed.move), floor(a.y)) ? a.x -= a.direction.x * a.min.speed.move : game.bj && "dead" != game.bj.animations.current && game.bj.animate("yeah")
- })
- }
-};
-maps = {
- request: function (a, b) {
- if (wolf3d.maps[a]) b && b();
- else {
- var c = new XMLHttpRequest;
- c.open("GET", "maps/" + a + ".js", !0);
- c.onload = function () {
- eval(c.response || c.responseText);
- b && b()
- };
- c.send()
- }
- },
- Map: function (a, b) {
- this.map = a.map || [];
- this.floors = a.floors || [];
- this.floor = a.floor || 25;
- this.ceiling = a.ceiling || 29;
- this.hitDistance = a.hitDistance || 3;
- this.doors = [];
- for (var c = 0; c < this.map.length; c++) this.doors[c] = [];
- if (a.doors)
- for (c = 0; c < a.doors.length; c++) {
- var d = a.doors[c];
- this.doors[d.x] || (this.doors[d.x] = []);
- this.doors[d.x][d.y] =
- new doors.Door(d)
- }
- this.sprites = [];
- this.spriteHistory = {
- add: [],
- remove: []
- };
- this.ai = [];
- this.aiHistory = {
- add: []
- };
- this.treasures = 0;
- if (a.sprites)
- for (c = 0; c < a.sprites.length; c++) d = a.sprites[c], 29 <= d.texture && 32 >= d.texture && this.treasures++, d.type ? d.level <= (b || 1) && this.ai.push(new d.type(d)) : (d.resource = a.spriteResource, this.sprites.push(new sprites.Sprite(d)));
- this.secrets = [];
- this.secretsHistory = {
- remove: []
- };
- if (a.secrets)
- for (c = 0; c < a.secrets.length; c++) d = a.secrets[c], d.map = this, this.map[d.x][d.y] = d.texture + 1,
- this.secrets[c] = new secret.SecretWall(d);
- this.scripts = [];
- a.scripts && (this.scripts = a.scripts.slice(0));
- this.generateHitMap()
- }
-};
-maps.Map.prototype = {
- generateHitMap: function () {
- this.hit = [];
- this.spriteMap = [];
- this.secretMap = [];
- for (var a = 0; a < this.map.length; a++) {
- this.hit[a] = [];
- this.spriteMap[a] = [];
- this.secretMap[a] = [];
- for (var b = 0; b < this.map[a].length; b++)
- if (this.spriteMap[a][b] = [], 0 < this.map[a][b]) this.hit[a][b] = 1;
- else if (!this.hit[a][b]) {
- for (var c = !1, d = 0; d < this.sprites.length; d++) {
- var e = this.sprites[d];
- if (e.x == a && e.y == b) {
- this.spriteMap[a][b].push(e);
- e.hit && (c = !0);
- break
- }
- }
- this.hit[a][b] = c ? 1 : 0
- }
- }
- for (d = 0; d < this.secrets.length; d++) e =
- this.secrets[d], this.secretMap[e.x][e.y] = e
- },
- getGraph: function () {
- for (var a = [], b = 0; b < this.hit.length; b++) {
- a[b] = [];
- for (var c = 0; c < this.hit[b].length; c++) a[b][c] = this.hit[b][c]
- }
- for (b = 0; b < this.sprites.length; b++) c = this.sprites[b], c.hitpoints && (a[c.baseX][c.baseY] = 1);
- return new Graph(a)
- },
- getMapValue: function (a, b) {
- return void 0 == this.map[a] || void 0 == this.map[a][b] ? null : this.map[a][b]
- },
- getHitValue: function (a, b, c) {
- var d = !1;
- if (c && c.hit)
- for (var e = 0; e < this.ai.length; e++) {
- var f = this.ai[e];
- if (!(c && c.id == f.id) &&
- f.baseX == a && f.baseY == b && f.hitpoints) {
- d = !0;
- break
- }
- }
- return void 0 == this.hit[a] || void 0 == this.hit[a][b] ? null : this.hit[a][b] || d
- },
- isHit: function (a, b) {
- var c = this.hit[a] && this.hit[a][b] ? 0 < this.hit[a][b] : !1,
- d = this.getDoor(a, b),
- e = this.getSecret(a, b);
- return c || (d ? !d.isOpen() : !1) || (e ? !e.hidden : !1)
- },
- firstFree: function (a, b) {
- for (var c = -1; 2 > c; c++)
- for (var d = -1; 2 > d; d++) {
- for (var e = this.hit[a] && this.hit[a][b] ? 0 < this.hit[a][b] : !1, f = this.getDoor(a + c, b + d), h = !1, g = 0; g < this.ai.length; g++) {
- var j = this.ai[g];
- if (j.baseX == a + c &&
- j.baseY == b + d && j.hitpoints) {
- h = !0;
- break
- }
- }
- if (!e && !f && !h) return {
- x: a + c,
- y: b + d
- }
- }
- return null
- },
- inDoor: function (a, b) {
- for (var c = -this.hitDistance; c <= this.hitDistance; c++)
- for (var d = -this.hitDistance; d <= this.hitDistance; d++)
- if (this.getDoor(floor(a + c / 10), floor(b + d / 10))) return !1;
- return !0
- },
- isFree: function (a, b) {
- for (var c = -this.hitDistance; c <= this.hitDistance; c++)
- for (var d = -this.hitDistance; d <= this.hitDistance; d++) {
- var e = floor(a + c / 10),
- f = floor(b + d / 10);
- if (this.isHit(e, f)) return !1
- }
- c = !1;
- for (d = 0; d < this.ai.length; d++)
- if (e =
- this.ai[d], abs(e.x + 0.5 - a) <= this.hitDistance / 5 && abs(e.y + 0.5 - b) <= this.hitDistance / 5 && e.hitpoints) {
- c = !0;
- break
- }
- return c ? !1 : !0
- },
- getScript: function (a, b) {
- for (var c = 0; c < this.scripts.length; c++) {
- var d = this.scripts[c];
- if (d.x == a && d.y == b) return d
- }
- },
- getSecret: function (a, b, c) {
- if (!this.secretMap[a]) return !1;
- var d = this.secretMap[a][b],
- e = this.secretMap[a - 1] ? this.secretMap[a - 1][b] : null,
- f = this.secretMap[a + 1] ? this.secretMap[a + 1][b] : null,
- h = this.secretMap[a][b + 1],
- g = this.secretMap[a][b - 1];
- if (!d && !e && !f && !h && !g || void 0 !=
- c && (c == d || c == e || c == f || c == h || c == g)) return null;
- if (d && d.x == a && d.y == b) return d.hidden = !1, d;
- if (!d) {
- if (e) return e.process && 0 == e.direction.x && (c = this.getMapValue(a, b), a = this.getSecret(a, b, e), !c && !a) ? (e.hidden = !0, e) : null;
- if (f) return f.process && 0 == f.direction.x && (c = this.getMapValue(a, b), a = this.getSecret(a, b, f), !c && !a) ? (f.hidden = !0, f) : null;
- if (h) return h.process && 0 == h.direction.y && (c = this.getMapValue(a, b), a = this.getSecret(a, b, h), !c && !a) ? (h.hidden = !0, h) : null;
- if (g) return g.process && 0 == g.direction.y && (c = this.getMapValue(a,
- b), a = this.getSecret(a, b, g), !c && !a) ? (g.hidden = !0, g) : null
- }
- },
- removeSecret: function (a) {
- this.hit[a.x][a.y] = 1;
- this.map[a.x][a.y] = resources.walls.indexOf(a.texture) + 1;
- this.secretMap[a.x][a.y] = null;
- this.secrets.splice(this.secrets.indexOf(a), 1);
- this.secretsHistory.remove.push(a)
- },
- getDoor: function (a, b) {
- return this.doors[a] && this.doors[a][b] ? this.doors[a][b] : null
- },
- getTexture: function (a, b, c, d, e) {
- return 0 == c && (d ? 0 > d ? this.getDoor(a + 1, b) : this.getDoor(a - 1, b) : this.getDoor(a - 1, b) || this.getDoor(a + 1, b)) || 1 == c && (e ? 0 >
- e ? this.getDoor(a, b + 1) : this.getDoor(a, b - 1) : this.getDoor(a, b - 1) || this.getDoor(a, b + 1)) ? resources.walls[66][c].canvas : (a = this.getMapValue(a, b)) ? resources.walls[a - 1][c].canvas : resources.walls[22][c].canvas
- },
- hitSprites: function (a, b) {
- var c = [];
- if (this.spriteMap[a] && this.spriteMap[a][b])
- for (var d = this.spriteMap[a][b], e = 0; e < d.length; e++) {
- var f = d[e];
- f.listeners.hit && c.push(f)
- }
- return c
- },
- moveAI: function () {},
- addAI: function (a) {
- this.ai.push(a);
- this.aiHistory.add.push(a)
- },
- removeAI: function (a) {
- this.ai.splice(this.ai.indexOf(a),
- 1);
- a = this.aiHistory.add.indexOf(a); - 1 < a && this.aiHistory.add.splice(a, 1)
- },
- addSprite: function (a) {
- this.spriteMap[a.x][a.y].push(a);
- this.sprites.push(a);
- this.spriteHistory.add.push(a)
- },
- removeSprite: function (a) {
- var b = this.spriteMap[a.x][a.y];
- b.splice(b.indexOf(a), 1);
- this.sprites.splice(this.sprites.indexOf(a), 1);
- b = this.spriteHistory.add.indexOf(a); - 1 < b ? this.spriteHistory.add.splice(b, 1) : this.spriteHistory.remove.push(a)
- }
-};
-player = {
- Player: function (a) {
- this.id = a.id || "player";
- this.textValue(document.getElementById("ammo"), this.ammo = a.ammo || 8);
- this.textValue(document.getElementById("health"), this.health = a.health || 100);
- this.textValue(document.getElementById("lives"), this.lives = a.lives || 3);
- this.textValue(document.getElementById("score"), this.score = a.score || 0);
- this.textValue(document.getElementById("floor"), this.floor = a.floor || 1);
- this.keys = new player.Keys(a.keys);
- this.weapons = a.weapons || [];
- for (var b = 0; b < this.weapons.length; b++) {
- var c =
- this.weapons[b];
- c.animation && c.animation.callback && (c.animation.callback = utils.bind(this, c.animation.callback))
- }
- this.activeWeapon = this.weapons[this.weapons.length - 1];
- this.activeWeapon.render();
- this.face = new player.Face(a.face);
- this.keys.render();
- this.min = {
- ammo: 0,
- health: 0,
- score: 0,
- lives: 0,
- floor: 0,
- speed: {
- rotation: 0.05,
- move: 0.1
- }
- };
- a.min && utils.overwrite(this.min, a.min);
- this.max = {
- ammo: 99,
- health: 100,
- score: 999999,
- lives: 9,
- floor: 9,
- speed: {
- rotation: 0.1,
- move: 0.2
- }
- };
- a.max && utils.overwrite(this.max, a.max);
- this.x =
- a.x || 0;
- this.y = a.y || 0;
- this.prevX = this.x;
- this.prevY = this.y;
- this.direction = a.direction && void 0 != a.direction.x && void 0 != a.direction.y ? utils.clone(a.direction) : utils.directions.north;
- this.plane = a.plane && void 0 != a.plane.x && void 0 != a.plane.y ? utils.clone(a.plane) : utils.directions.west;
- this.speed = a.speed && void 0 != a.speed.move && void 0 != a.speed.rotation ? a.speed : {
- move: 0,
- rotation: 0
- };
- this.acceleration = a.acceleration && void 0 != a.acceleration.move && void 0 != a.acceleration.rotation ? a.acceleration : {
- move: 1,
- rotation: 1
- };
- this.decceleration = a.decceleration && void 0 != a.decceleration.move && void 0 != a.decceleration.rotation ? a.decceleration : {
- move: 1,
- rotation: 1
- };
- this.view = a.view || 0;
- this.map = a.map || new maps.Map;
- this.left = this.rotateLeft;
- this.right = this.rotateRight
- },
- Weapon: function (a) {
- a || (a = {});
- this.id = a.id || 0;
- this.active = a.active || !1;
- this.ammo = a.ammo || !1;
- this.resource = a.resource ? resources[a.resource] : resources.knife;
- this.hudCanvas = document.getElementById(a.canvas || "weapon") || document.createElement("CANVAS");
- this.hudContext =
- this.hudCanvas.getContext("2d");
- this.handCanvas = document.getElementById(a.hand || "hand") || document.createElement("CANVAS");
- this.handContext = this.handCanvas.getContext("2d");
- this.animation = new animation.Animation(a.animation) || new animation.Animation;
- this.fire = a.fire ? utils.bind(this, a.fire) : utils.bind(this, function () {
- this.animation.play();
- return !0
- });
- this.release = a.release ? utils.bind(this, a.release) : utils.bind(this, function () {
- return !0
- });
- this.listeners = a.listeners || {}
- },
- Keys: function (a, b) {
- b || (b = {});
- this.keys =
- b.keys || {};
- this.canvas = document.getElementById(b.id || "keys") || document.createElement("CANVAS");
- this.context = this.canvas.getContext("2d")
- },
- Face: function (a, b) {
- b || (b = {});
- this.level = this.direction = 0;
- this.timer = null;
- this.zombie = this.smile = !1;
- this.canvas = document.getElementById(b.id || "face") || document.createElement("CANVAS");
- this.context = this.canvas.getContext("2d")
- }
-};
-player.Weapon.prototype = {
- render: function () {
- this.renderHand();
- this.renderHud()
- },
- renderHand: function () {
- this.handContext.clearRect(0, 0, this.handCanvas.width, this.handCanvas.height);
- this.handContext.drawImage(this.resource, this.animation.state, 0, resources.textureWidth, resources.textureHeight, 0, 0, this.handCanvas.width, this.handCanvas.height)
- },
- renderHud: function () {
- this.hudContext.clearRect(0, 0, this.hudCanvas.width, this.hudCanvas.height);
- this.hudContext.drawImage(resources.hudWeapon, 96 * this.id, 0, 96, 48, 0,
- 0, this.hudCanvas.width, this.hudCanvas.height)
- }
-};
-player.Keys.prototype = {
- render: function () {
- this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
- this.keys.gold ? this.context.drawImage(resources.hudKeys, 16, 0, 16, 32, 0, 0, this.canvas.width, this.canvas.height / 2) : this.context.drawImage(resources.hudKeys, 0, 0, 16, 32, 0, 0, this.canvas.width, this.canvas.height / 2);
- this.keys.silver ? this.context.drawImage(resources.hudKeys, 32, 0, 16, 32, 0, this.canvas.height / 2, this.canvas.width, this.canvas.height / 2) : this.context.drawImage(resources.hudKeys, 0, 0, 16, 32, 0, this.canvas.height /
- 2, this.canvas.width, this.canvas.height / 2)
- },
- has: function (a) {
- return this.keys[a]
- },
- add: function (a) {
- this.keys[a] = !0;
- this.render()
- },
- remove: function (a) {
- delete this.keys[a];
- this.render()
- }
-};
-player.Face.prototype = {
- render: function () {
- this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
- this.context.drawImage(resources.hudFaces, 48 * this.direction, 64 * this.level + 2, 48, 62, 0, 0, this.canvas.width, this.canvas.height)
- },
- setSmile: function (a) {
- this.faceTimer && (clearTimeout(this.faceTimer), delete this.faceTimer);
- this.level = 7;
- this.direction = 1;
- this.smile = !0;
- this.render();
- setTimeout(utils.bind(this, function () {
- this.smile = false
- }), a)
- },
- process: function (a) {
- if (!this.smile && !this.zombie && (0 < a.health ?
- (a = min(6, max(0, 6 - floor(a.health / (a.max.health / 7)))), this.level != a && (this.level = a, this.render())) : (this.faceTimer && (clearTimeout(this.faceTimer), delete this.faceTimer), this.level = 7, this.direction = 0, this.render()), !this.faceTimer && 7 > this.level)) this.faceTimer = setTimeout(utils.bind(this, function () {
- this.direction = utils.random(2, 0);
- this.render();
- delete this.faceTimer
- }), utils.random(1E3, 250))
- }
-};
-player.Player.prototype = {
- render: function () {
- this.face.process(this)
- },
- textValue: function (a, b) {
- if (a) {
- var c = a.getContext("2d");
- c.clearRect(0, 0, a.width, a.height);
- for (var d = b.toString(), e = d.length - 1; - 1 < e; e--) {
- var f = floor(d[e]);
- c.drawImage(resources.hudChars, 16 * f + 1, 0, 16, 32, a.width - 26 * (d.length - e), 0, 24, 48)
- }
- }
- },
- setProperty: function (a, b) {
- if (!a || !b || void 0 == this[a] || void 0 == this.min[a] || void 0 == this.max[a] || 0 == b) return !1;
- var c = !1;
- 0 < b ? this[a] < this.max[a] ? (this[a] = min(this.max[a], this[a] + b), c = !0) : c = !1 : this[a] >
- this.min[a] ? (this[a] = max(this.min[a], this[a] + b), c = !0) : c = !1;
- c && this.textValue(document.getElementById(a), this[a]);
- return c
- },
- setPosition: function (a, b) {
- this.x = a;
- this.y = b
- },
- lookAt: function () {},
- rotateLeft: function () {
- var a = this.direction.x;
- this.direction.x = this.direction.x * cos(this.speed.rotation * game.timeFactor) - this.direction.y * sin(this.speed.rotation * game.timeFactor);
- this.direction.y = a * sin(this.speed.rotation * game.timeFactor) + this.direction.y * cos(this.speed.rotation * game.timeFactor);
- a = this.plane.x;
- this.plane.x =
- this.plane.x * cos(this.speed.rotation * game.timeFactor) - this.plane.y * sin(this.speed.rotation * game.timeFactor);
- this.plane.y = a * sin(this.speed.rotation * game.timeFactor) + this.plane.y * cos(this.speed.rotation * game.timeFactor)
- },
- rotateRight: function () {
- var a = this.direction.x;
- this.direction.x = this.direction.x * cos(-this.speed.rotation * game.timeFactor) - this.direction.y * sin(-this.speed.rotation * game.timeFactor);
- this.direction.y = a * sin(-this.speed.rotation * game.timeFactor) + this.direction.y * cos(-this.speed.rotation *
- game.timeFactor);
- a = this.plane.x;
- this.plane.x = this.plane.x * cos(-this.speed.rotation * game.timeFactor) - this.plane.y * sin(-this.speed.rotation * game.timeFactor);
- this.plane.y = a * sin(-this.speed.rotation * game.timeFactor) + this.plane.y * cos(-this.speed.rotation * game.timeFactor)
- },
- strafeLeft: function () {
- this.prevX = this.x;
- this.prevY = this.y;
- var a = this.direction.x * cos(90 * utils.rad) - this.direction.y * sin(90 * utils.rad),
- b = this.direction.x * sin(90 * utils.rad) + this.direction.y * cos(90 * utils.rad);
- this.map.isFree(this.x + 1.5 *
- a * this.speed.move * game.timeFactor, this.y) && (this.x += 1.5 * a * this.speed.move * game.timeFactor);
- this.map.isFree(this.x, this.y + 1.5 * b * this.speed.move * game.timeFactor) && (this.y += 1.5 * b * this.speed.move * game.timeFactor);
- this.sprite()
- },
- strafeRight: function () {
- this.prevX = this.x;
- this.prevY = this.y;
- var a = this.direction.x * cos(270 * utils.rad) - this.direction.y * sin(270 * utils.rad),
- b = this.direction.x * sin(270 * utils.rad) + this.direction.y * cos(270 * utils.rad);
- this.map.isFree(this.x + 1.5 * a * this.speed.move * game.timeFactor, this.y) &&
- (this.x += 1.5 * a * this.speed.move * game.timeFactor);
- this.map.isFree(this.x, this.y + 1.5 * b * this.speed.move * game.timeFactor) && (this.y += 1.5 * b * this.speed.move * game.timeFactor);
- this.sprite()
- },
- forward: function () {
- this.prevX = this.x;
- this.prevY = this.y;
- var a = this.map.isFree(this.x + this.direction.x * this.speed.move * game.timeFactor, this.y),
- b = this.map.isFree(this.x, this.y + this.direction.y * this.speed.move * game.timeFactor);
- a && (this.x += this.direction.x * this.speed.move * game.timeFactor);
- b && (this.y += this.direction.y * this.speed.move *
- game.timeFactor);
- (!a || !b) && audio.playSound("hitwall");
- this.script();
- this.sprite()
- },
- backward: function () {
- this.prevX = this.x;
- this.prevY = this.y;
- var a = this.map.isFree(this.x - this.direction.x * this.speed.move * game.timeFactor, this.y),
- b = this.map.isFree(this.x, this.y - this.direction.y * this.speed.move * game.timeFactor);
- a && (this.x -= this.direction.x * this.speed.move * game.timeFactor);
- b && (this.y -= this.direction.y * this.speed.move * game.timeFactor);
- (!a || !b) && audio.playSound("hitwall");
- this.script();
- this.sprite()
- },
- script: function () {
- if (!game.editor &&
- (floor(this.prevX) != floor(this.x) || floor(this.prevY) != floor(this.y))) {
- var a = this.map.getScript(floor(this.x), floor(this.y));
- if (a && a.action && a[a.action]) a[a.action](this)
- }
- },
- sprite: function () {
- if (!game.editor)
- for (var a = this.map.hitSprites(floor(this.x), floor(this.y)), b = a.length; 0 < b; b--) a[b - 1].listeners.hit(this)
- },
- door: function () {
- var a = !0,
- b = floor(this.x + this.direction.x),
- c = floor(this.y + this.direction.y),
- d = this.map.getDoor(b, c);
- if (d && (!d.key || this.keys.has(d.key))) d[d.action](), a = !1;
- else if (0 == secret.process.length &&
- (d = this.map.getSecret(b, c)) && !d.hidden && !d.process) {
- var e = b + b - floor(this.x),
- f = c + c - floor(this.y);
- if (!this.map.getMapValue(e, f) && (d.direction = {
- x: b - floor(this.x),
- y: c - floor(this.y)
- }, this.map.getMapValue(b + d.direction.x, c) && (d.direction.x = 0), this.map.getMapValue(b, c + d.direction.y) && (d.direction.y = 0), e = this.map.getSecret(b - d.direction.x, c - d.direction.y), !e || e == d && e.hidden))
- if (0 == d.direction.x || 0 == d.direction.y) d.push(), this.ratio.secret++, a = !1
- }
- 22 == this.map.getMapValue(b, c) && -1 != this.map.floors[b][c] && (this.map.map[b][c] =
- 24, 107 == this.map.floors[floor(this.x)][floor(this.y)] && (this.secretfound = !0), audio.playSound("leveldone"), this.leveldone = !0, a = !1);
- a && audio.playSound("donothing")
- },
- getActiveWeapon: function () {
- return this.activeWeapon
- },
- weapon: function (a) {
- var b = null,
- c = null;
- if (this.getActiveWeapon()
- .id != a) {
- for (var d = 0; d < this.weapons.length; d++) {
- var e = this.weapons[d];
- e.active && (this.backupWeapon = b = e);
- e.active = e.id == a;
- e.active && (this.activeWeapon = c = e, this.activeWeapon.render())
- }
- return c && c.ammo && 0 == this.ammo ? (c.active = !1,
- b.active = !0, this.activeWeapon = b, this.activeWeapon.render(), !1) : !0
- }
- return !1
- },
- hasWeapon: function (a) {
- for (var b = 0; b < this.weapons.length; b++)
- if (this.weapons[b].id == a) return !0;
- return !1
- },
- setRotation: function (a) {
- this.speed.rotation = max(0.01, min(0.1, a))
- },
- setMove: function (a) {
- this.speed.move = max(0.01, min(0.1, a))
- },
- getDistance: function (a, b) {
- var c = this.x - a,
- d = this.y - b;
- return sqrt(c * c + d * d)
- }
-};
-ai = {
- process: [],
- seed: 0,
- tick: 30,
- calculateAngleFromDirection: function (a, b) {
- if (-1 == a && -1 == b) return 3;
- if (-1 == a && 0 == b) return 4;
- if (-1 == a && 1 == b) return 5;
- if (0 == a && 1 == b) return 6;
- if (1 == a && 1 == b) return 7;
- if (1 == a && 0 == b) return 0;
- if (1 == a && -1 == b) return 1;
- if (0 == a && -1 == b) return 2
- },
- Entity: function (a) {
- sprites.Sprite.call(this, a);
- this.id = a.resource + "-" + ai.seed++;
- this.type = a.aiType || "unknown";
- this.baseX = floor(this.x);
- this.baseY = floor(this.y);
- this.prevX = this.baseX;
- this.prevY = this.baseY;
- this.detailLevel = a.detailLevel || 64;
- this.detailY = this.detailX = 0;
- this.texture = this.resource;
- this.hitpoints = a.hitpoints || 0;
- this.slide = this.angle = a.angle || 0;
- this.speed = a.speed || 1;
- this.soundOnAttack = a.soundOnAttack || null;
- this.instantAttack = a.instantAttack || null;
- this.timer = 0;
- a.direction ? this.direction = {
- x: a.direction.x || 0,
- y: a.direction.y || 0
- } : this.getDirection();
- ai.process.push(this)
- },
- Hans: function (a) {
- var b = 850;
- switch (game.difficulty) {
- case 0:
- b = 850;
- break;
- case 1:
- b = 950;
- break;
- case 2:
- b = 1050;
- break;
- case 3:
- b = 1200
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "hans",
- aiType: "hans",
- soundOnAttack: "gutentag",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 7 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && audio.queueSound("mutti", this.baseX, this.baseY);
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 10 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- UberMutant: function (a) {
- var b = 1050;
- switch (game.difficulty) {
- case 0:
- b =
- 1050;
- break;
- case 1:
- b = 1150;
- break;
- case 2:
- b = 1250;
- break;
- case 3:
- b = 1400
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "ubermutant",
- aiType: "ubermutant",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 3 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 8,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 10,
- count: 5,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && audio.queueSound("uberdeath", this.baseX, this.baseY);
- 4 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 12 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ?
- this[a.action] : this.ready)
- },
- TransGrosse: function (a) {
- var b = 850;
- switch (game.difficulty) {
- case 0:
- b = 850;
- break;
- case 1:
- b = 950;
- break;
- case 2:
- b = 1050;
- break;
- case 3:
- b = 1200
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "transgrosse",
- aiType: "transgrosse",
- soundOnAttack: "transsight",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 ==
- a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 7 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && audio.queueSound("transdeath", this.baseX, this.baseY);
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 10 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- Gretel: function (a) {
- var b = 850;
- switch (game.difficulty) {
- case 0:
- b = 850;
- break;
- case 1:
- b = 950;
- break;
- case 2:
- b = 1050;
- break;
- case 3:
- b = 1200
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "gretel",
- aiType: "gretel",
- soundOnAttack: "kein",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 7 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && audio.queueSound("mein", this.baseX, this.baseY);
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 10 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- DrSchabbs: function (a) {
- var b = 850;
- switch (game.difficulty) {
- case 0:
- b = 850;
- break;
- case 1:
- b = 950;
- break;
- case 2:
- b = 1550;
- break;
- case 3:
- b = 2400
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "drschabbs",
- aiType: "drschabbs",
- soundOnAttack: "schabbsha",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 2,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- speed: 10,
- count: 8,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("meingott", this.baseX,
- this.baseY), a.speed = 100);
- 2 == a.index && (a.speed = 10, a.keyframe = 3 * resources.textureWidth, a.step = resources.textureWidth);
- 7 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 9 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- if (game.auto) this.endDeathCam && (document.getElementById("deathcam")
- .style.display = "none", this.action = this.dead);
- else {
- var a = this;
- ai.process = [a];
- animation.process = [];
- game.auto = function () {
- game.engine.maskColor = "#004040";
- if (game.restart) game.restartClear &&
- (game.restartClear = game.engine.fizzleClear(), game.restartClear || (document.getElementById("deathcam")
- .style.display = null, a.animate("dying"), a.action = null, game.auto = function () {
- "dead" == a.animations.current ? (a.endDeathCam = !0, a.animate("dead")) : a.animate("dying")
- }));
- else if (game.restart = !game.engine.fizzleFade(), game.restart) {
- document.getElementById("letsseethatagain")
- .style.display = "block";
- document.getElementById("hand")
- .style.display = "none";
- game.client.x = a.x + a.direction.x;
- game.client.x = a.y + a.direction.y;
- var b = (atan2(game.client.y - a.y, game.client.x - a.x) * utils.deg + 210) % 360 * utils.rad,
- e = -cos(b),
- b = -sin(b);
- game.client.x = a.x + 1.5 * e;
- game.client.y = a.y + 1.5 * b;
- game.client.direction.x = -e;
- game.client.direction.y = -b;
- game.client.plane.x = -b;
- game.client.plane.y = e;
- setTimeout(function () {
- document.getElementById("letsseethatagain")
- .style.display = null;
- game.restartClear = !0;
- a.animations.dying.stop();
- a.animations.dead.stop();
- a.animations.current = "ready";
- a.animations.dying.keyframe = 0;
- a.animations.dying.step = 0;
- a.animations.dying.state =
- 0;
- a.animations.dying.index = 0;
- a.action = null
- }, 1E3)
- }
- }
- }
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- Needle: function (a) {
- utils.extend(a, {
- speed: 4,
- detailLevel: 64,
- resource: "needle",
- aiType: "fake",
- animations: {
- run: new animation.Animation({
- speed: 5,
- count: 4,
- step: resources.textureWidth
- })
- }
- });
- ai.Entity.call(this, a);
- this.action = this.attack
- },
- Ghost: function (a) {
- var b = 200;
- switch (game.difficulty) {
- case 0:
- b = 200;
- break;
- case 1:
- b = 300;
- break;
- case 2:
- b = 400;
- break;
- case 3:
- b = 500
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "ghost",
- aiType: "ghost",
- soundOnAttack: "tothund",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 1,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function () {
- this.action = this.fire
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 5 * resources.textureWidth,
- speed: 10,
- count: 6,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("hitlerha", this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }));
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 10 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" !=
- this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- Fireball: function (a) {
- utils.extend(a, {
- speed: 16,
- detailLevel: 64,
- resource: "fireball",
- aiType: "fake",
- animations: {
- run: new animation.Animation({
- speed: 5,
- count: 2,
- step: resources.textureWidth
- })
- }
- });
- ai.Entity.call(this, a);
- this.action = this.attack
- },
- AngelOfDeath: function (a) {
- var b = 1450;
- switch (game.difficulty) {
- case 0:
- b = 1450;
- break;
- case 1:
- b = 1550;
- break;
- case 2:
- b = 1650;
- break;
- case 3:
- b = 2E3
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "angelofdeath",
- aiType: "angelofdeath",
- soundOnAttack: "angelsight",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 2,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 6 * resources.textureWidth,
- speed: 10,
- count: 10,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("angeldeath", this.baseX, this.baseY), a.speed = 100);
- 2 == a.index && (a.speed = 10);
- 9 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 15 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- Orb: function (a) {
- utils.extend(a, {
- speed: 8,
- detailLevel: 64,
- resource: "orb",
- aiType: "fake",
- animations: {
- run: new animation.Animation({
- speed: 5,
- count: 4,
- step: resources.textureWidth
- })
- }
- });
- ai.Entity.call(this, a);
- this.action = this.attack
- },
- Hitler: function (a) {
- var b = 500;
- switch (game.difficulty) {
- case 0:
- b = 500;
- break;
- case 1:
- b = 700;
- break;
- case 2:
- b = 800;
- break;
- case 3:
- b = 900
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "hitler",
- aiType: "hitler",
- soundOnAttack: "scheist",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation({
- keyframe: 11 * resources.textureWidth
- }),
- fire: new animation.Animation({
- keyframe: 15 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- keyframe: 11 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 11 * resources.textureWidth,
- speed: 20,
- count: 12,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("eva", this.baseX,
- this.baseY), a.speed = 100);
- 2 == a.index && (a.speed = 20, a.keyframe = 15 * resources.textureWidth, a.step = resources.textureWidth);
- 11 == a.index && (audio.queueSound("slurpie", this.baseX, this.baseY), this.animate("dead"))
- })
- }),
- dead: new animation.Animation({
- keyframe: 25 * resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- if (game.auto) this.endDeathCam && (document.getElementById("deathcam")
- .style.display = "none", this.action = this.dead);
- else {
- var a = this;
- ai.process = [a];
- animation.process = [];
- game.auto = function () {
- game.engine.maskColor = "#004040";
- if (game.restart) game.restartClear && (game.restartClear = game.engine.fizzleClear(), game.restartClear || (document.getElementById("deathcam")
- .style.display = null, a.animate("dying"), a.action = null, game.auto = function () {
- "dead" == a.animations.current ? (a.endDeathCam = !0, a.animate("dead")) : a.animate("dying")
- }));
- else if (game.restart = !game.engine.fizzleFade(), game.restart) {
- document.getElementById("letsseethatagain")
- .style.display = "block";
- document.getElementById("hand")
- .style.display =
- "none";
- game.client.x = a.x + a.direction.x;
- game.client.x = a.y + a.direction.y;
- var b = (atan2(game.client.y - a.y, game.client.x - a.x) * utils.deg + 210) % 360 * utils.rad,
- e = -cos(b),
- b = -sin(b);
- game.client.x = a.x + 1.5 * e;
- game.client.y = a.y + 1.5 * b;
- game.client.direction.x = -e;
- game.client.direction.y = -b;
- game.client.plane.x = -b;
- game.client.plane.y = e;
- setTimeout(function () {
- document.getElementById("letsseethatagain")
- .style.display = null;
- game.restartClear = !0;
- a.animations.dying.stop();
- a.animations.dead.stop();
- a.animations.current = "ready";
- a.animations.dying.keyframe = 11 * resources.textureWidth;
- a.animations.dying.step = 0;
- a.animations.dying.state = 11 * resources.textureWidth;
- a.animations.dying.index = 0;
- a.action = null
- }, 1E3)
- }
- }
- }
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- MechHitler: function (a) {
- var b = 800;
- switch (game.difficulty) {
- case 0:
- b = 800;
- break;
- case 1:
- b = 950;
- break;
- case 2:
- b = 1050;
- break;
- case 3:
- b = 1200
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "hitler",
- aiType: "hitler",
- soundOnAttack: "die",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (0 != this.direction.x || 0 != this.direction.y) && audio.queueSound("mechstep", this.baseX, this.baseY)
- })
- }),
- dying: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 7 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- Giftmacher: function (a) {
- var b = 850;
- switch (game.difficulty) {
- case 0:
- b = 850;
- break;
- case 1:
- b = 950;
- break;
- case 2:
- b = 1050;
- break;
- case 3:
- b = 1200
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "giftmacher",
- aiType: "giftmacher",
- soundOnAttack: "eine",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 2,
- step: resources.textureWidth,
- single: !0
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- speed: 10,
- count: 8,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("donner", this.baseX, this.baseY), a.speed = 100);
- 2 == a.index && (a.speed = 10, a.keyframe = 3 * resources.textureWidth, a.step = resources.textureWidth);
- 7 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 9 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- if (game.auto) this.endDeathCam && (document.getElementById("deathcam")
- .style.display = "none", this.action = this.dead);
- else {
- var a =
- this;
- ai.process = [a];
- animation.process = [];
- game.auto = function () {
- game.engine.maskColor = "#004040";
- if (game.restart) game.restartClear && (game.restartClear = game.engine.fizzleClear(), game.restartClear || (document.getElementById("deathcam")
- .style.display = null, a.animate("dying"), a.action = null, game.auto = function () {
- "dead" == a.animations.current ? (a.endDeathCam = !0, a.animate("dead")) : a.animate("dying")
- }));
- else if (game.restart = !game.engine.fizzleFade(), game.restart) {
- document.getElementById("letsseethatagain")
- .style.display =
- "block";
- document.getElementById("hand")
- .style.display = "none";
- game.client.x = a.x + a.direction.x;
- game.client.x = a.y + a.direction.y;
- var b = (atan2(game.client.y - a.y, game.client.x - a.x) * utils.deg + 210) % 360 * utils.rad,
- e = -cos(b),
- b = -sin(b);
- game.client.x = a.x + 1.5 * e;
- game.client.y = a.y + 1.5 * b;
- game.client.direction.x = -e;
- game.client.direction.y = -b;
- game.client.plane.x = -b;
- game.client.plane.y = e;
- setTimeout(function () {
- document.getElementById("letsseethatagain")
- .style.display = null;
- game.restartClear = !0;
- a.animations.dying.stop();
- a.animations.dead.stop();
- a.animations.current = "ready";
- a.animations.dying.keyframe = 0;
- a.animations.dying.step = 0;
- a.animations.dying.state = 0;
- a.animations.dying.index = 0;
- a.action = null
- }, 1E3)
- }
- }
- }
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- HiMissile: function (a) {
- utils.extend(a, {
- speed: 8,
- detailLevel: 64,
- resource: "himissile",
- aiType: "fake",
- animations: {
- run: new animation.Animation({
- slide: !0
- }),
- explode: new animation.Animation({
- keyframe: 12 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && audio.queueSound("missilehit", this.baseX, this.baseY);
- 2 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- callback: utils.bind(this, function (a) {
- this.process && (this.action = this.dead, a.stop())
- })
- })
- }
- });
- ai.Entity.call(this, a);
- this.action = this.attack
- },
- HiSmoke: function (a) {
- utils.extend(a, {
- speed: 0,
- detailLevel: 64,
- resource: "himissile",
- aiType: "fake",
- animations: {
- smoke: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 20,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- callback: utils.bind(this, function (a) {
- this.process && (this.action = this.dead, a.stop())
- })
- })
- }
- });
- ai.Entity.call(this, a);
- this.action = this.smoke
- },
- Missile: function (a) {
- utils.extend(a, {
- speed: 8,
- detailLevel: 64,
- resource: "missile",
- aiType: "fake",
- animations: {
- run: new animation.Animation({
- slide: !0
- }),
- explode: new animation.Animation({
- keyframe: 12 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && audio.queueSound("missilehit", this.baseX, this.baseY);
- 2 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- callback: utils.bind(this, function (a) {
- this.process && (this.action = this.dead, a.stop())
- })
- })
- }
- });
- ai.Entity.call(this, a);
- this.action = this.attack
- },
- Smoke: function (a) {
- utils.extend(a, {
- speed: 0,
- detailLevel: 64,
- resource: "missile",
- aiType: "fake",
- animations: {
- smoke: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 20,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- callback: utils.bind(this, function (a) {
- this.process && (this.action = this.dead, a.stop())
- })
- })
- }
- });
- ai.Entity.call(this, a);
- this.action = this.smoke
- },
- Fettgesicht: function (a) {
- var b = 850;
- switch (game.difficulty) {
- case 0:
- b = 850;
- break;
- case 1:
- b = 950;
- break;
- case 2:
- b = 1050;
- break;
- case 3:
- b = 1200
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "fettgesicht",
- aiType: "fettgesicht",
- soundOnAttack: "erlauben",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 3 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- speed: 10,
- count: 8,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 ==
- a.index && (audio.queueSound("rose", this.baseX, this.baseY), a.speed = 100);
- 2 == a.index && (a.speed = 10, a.keyframe = 5 * resources.textureWidth, a.step = resources.textureWidth);
- 7 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 11 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- if (game.auto) this.endDeathCam && (document.getElementById("deathcam")
- .style.display = "none", this.action = this.dead);
- else {
- var a = this;
- ai.process = [a];
- animation.process = [];
- game.auto =
- function () {
- game.engine.maskColor = "#004040";
- if (game.restart) game.restartClear && (game.restartClear = game.engine.fizzleClear(), game.restartClear || (document.getElementById("deathcam")
- .style.display = null, a.animate("dying"), a.action = null, game.auto = function () {
- "dead" == a.animations.current ? (a.endDeathCam = !0, a.animate("dead")) : a.animate("dying")
- }));
- else if (game.restart = !game.engine.fizzleFade(), game.restart) {
- document.getElementById("letsseethatagain")
- .style.display = "block";
- document.getElementById("hand")
- .style.display =
- "none";
- game.client.x = a.x + a.direction.x;
- game.client.x = a.y + a.direction.y;
- var b = (atan2(game.client.y - a.y, game.client.x - a.x) * utils.deg + 210) % 360 * utils.rad,
- e = -cos(b),
- b = -sin(b);
- game.client.x = a.x + 1.5 * e;
- game.client.y = a.y + 1.5 * b;
- game.client.direction.x = -e;
- game.client.direction.y = -b;
- game.client.plane.x = -b;
- game.client.plane.y = e;
- setTimeout(function () {
- document.getElementById("letsseethatagain")
- .style.display = null;
- game.restartClear = !0;
- a.animations.dying.stop();
- a.animations.dead.stop();
- a.animations.current = "ready";
- a.animations.dying.keyframe = 0;
- a.animations.dying.step = 0;
- a.animations.dying.state = 0;
- a.animations.dying.index = 0;
- a.action = null
- }, 1E3)
- }
- }
- }
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- BarnacleWilhelm: function (a) {
- var b = 950;
- switch (game.difficulty) {
- case 0:
- b = 950;
- break;
- case 1:
- b = 1050;
- break;
- case 2:
- b = 1150;
- break;
- case 3:
- b = 1300
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "wilhelm",
- aiType: "wilhelm",
- soundOnAttack: "wilhelmsight",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 3 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && audio.queueSound("wilhelmdeath",
- this.baseX, this.baseY);
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 11 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- DeathKnight: function (a) {
- var b = 1250;
- switch (game.difficulty) {
- case 0:
- b = 1250;
- break;
- case 1:
- b = 1350;
- break;
- case 2:
- b = 1450;
- break;
- case 3:
- b =
- 1600
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "deathknight",
- aiType: "deathknight",
- soundOnAttack: "knightsight",
- instantAttack: !0,
- animations: {
- ready: new animation.Animation,
- fire: new animation.Animation({
- keyframe: 4 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 10,
- count: 4,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 10,
- count: 7,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && audio.queueSound("knightdeath", this.baseX, this.baseY);
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 14 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ?
- this[a.action] : this.ready)
- },
- Pacman: function (a) {
- var b = 0;
- switch (a.pacmanType) {
- case "red":
- b = 0;
- break;
- case "pink":
- b = 2;
- break;
- case "yellow":
- b = 4;
- break;
- case "blue":
- b = 6
- }
- utils.extend(a, {
- speed: 2,
- detailLevel: 64,
- resource: "pacman",
- aiType: "fake",
- hit: !0,
- animations: {
- run: new animation.Animation({
- keyframe: resources.textureWidth * b,
- speed: 10,
- count: 2,
- step: resources.textureWidth
- })
- }
- });
- ai.Entity.call(this, a);
- this.action = this.attack
- },
- Spectre: function (a) {
- var b = 5;
- switch (game.difficulty) {
- case 0:
- b = 5;
- break;
- case 1:
- b = 10;
- break;
- case 2:
- b =
- 15;
- break;
- case 3:
- b = 25
- }
- utils.extend(a, {
- hitpoints: b,
- speed: 1,
- detailLevel: 64,
- resource: "spectre",
- aiType: "spectre",
- hit: !1,
- soundOnAttack: "ghostsight",
- animations: {
- ready: new animation.Animation({}),
- run: new animation.Animation({
- speed: 10,
- count: 2,
- step: resources.textureWidth
- }),
- dying: new animation.Animation({
- keyframe: 2 * resources.textureWidth,
- speed: 3,
- count: 6,
- single: !0,
- step: resources.textureWidth,
- callback: utils.bind(this, function (a) {
- 1 == a.index && audio.queueSound("ghostfade", this.baseX, this.baseY);
- 5 == a.index && this.animate("dead")
- })
- }),
- fade: new animation.Animation({
- keyframe: 7 * resources.textureWidth,
- speed: 3,
- count: 6,
- single: !0,
- step: -resources.textureWidth,
- callback: utils.bind(this, function (a) {
- if (5 == a.index) {
- this.animate("run");
- this.action = this.attack;
- a = 5;
- switch (game.difficulty) {
- case 0:
- a = 5;
- break;
- case 1:
- a = 10;
- break;
- case 2:
- a = 15;
- break;
- case 3:
- a = 25
- }
- this.hitpoints = a
- }
- })
- }),
- dead: new animation.Animation({
- keyframe: 7 * resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function () {
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead :
- (this.action = null, setTimeout(utils.bind(this, function () {
- this.animations[this.animations.current].stop();
- this.animate("fade")
- }), 5E3))
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- BJ: function (a) {
- utils.extend(a, {
- hitpoints: 1,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "bj",
- aiType: "bj",
- animations: {
- current: "run",
- run: new animation.Animation({
- speed: 20,
- count: 4,
- step: resources.textureWidth
- }),
- yeah: new animation.Animation({
- keyframe: 3 * resources.textureWidth,
- speed: 20,
- count: 5,
- step: resources.textureWidth,
- callback: utils.bind(this, function (a) {
- this.speed = 4;
- 2 == a.index && audio.playSound("yeah");
- 4 == a.index && (this.animate("dead"), this.direction = {
- x: 0,
- y: 0
- })
- })
- }),
- dead: new animation.Animation({
- keyframe: 7 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.process = this.action = null;
- setTimeout(function () {
- game.auto = null;
- game.pause = !0;
- game.win = !0
- }, 1E3)
- })
- })
- }
- });
- ai.process = [];
- animation.process = [];
- ai.Entity.call(this, a);
- this.action = this.moving
- },
- Soldier: function (a) {
- utils.extend(a, {
- hitpoints: 25,
- speed: 4,
- detailLevel: 64,
- hit: !0,
- resource: "soldier",
- aiType: "soldier",
- soundOnAttack: "halt",
- animations: {
- showcase: new animation.Animation({
- speed: 20,
- count: 48,
- step: resources.textureWidth
- }),
- ready: new animation.Animation({
- slide: !0
- }),
- fire: new animation.Animation({
- keyframe: 46 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- walk: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 20,
- count: 4,
- step: 8 * resources.textureWidth,
- slide: !0,
- callback: utils.bind(this, function () {})
- }),
- run: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: 8 * resources.textureWidth,
- slide: !0,
- callback: utils.bind(this, function () {})
- }),
- hit: new animation.Animation({
- keyframe: 40 * resources.textureWidth,
- speed: 10,
- count: 1,
- step: 0,
- single: !0,
- callback: utils.bind(this, function () {})
- }),
- dying: new animation.Animation({
- keyframe: 41 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("deathscream" + utils.random(9, 1), this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }));
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 45 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action =
- a.action ? this[a.action] : this.ready)
- },
- SS: function (a) {
- utils.extend(a, {
- hitpoints: 100,
- speed: 16,
- detailLevel: 128,
- hit: !0,
- resource: "ss",
- aiType: "ss",
- soundOnAttack: "schutzad",
- animations: {
- ready: new animation.Animation({
- slide: !0
- }),
- fire: new animation.Animation({
- keyframe: 46 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- walk: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 20,
- count: 4,
- step: 8 * resources.textureWidth,
- slide: !0,
- callback: utils.bind(this, function () {
- this.speed = 8
- })
- }),
- run: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: 8 * resources.textureWidth,
- slide: !0,
- callback: utils.bind(this, function () {
- this.speed = 8
- })
- }),
- hit: new animation.Animation({
- keyframe: 40 * resources.textureWidth,
- speed: 10,
- count: 1,
- step: 0,
- single: !0,
- callback: utils.bind(this, function () {})
- }),
- dying: new animation.Animation({
- keyframe: 41 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("leben", this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }));
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 45 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ?
- this[a.action] : this.ready)
- },
- Mutant: function (a) {
- utils.extend(a, {
- hitpoints: 3 == game.difficulty ? 65 : 2 == game.difficulty ? 55 : 45,
- speed: 8,
- detailLevel: 128,
- hit: !0,
- resource: "mutant",
- aiType: "mutant",
- animations: {
- ready: new animation.Animation({
- slide: !0
- }),
- fire: new animation.Animation({
- keyframe: 46 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: 8 * resources.textureWidth,
- slide: !0
- }),
- hit: new animation.Animation({
- keyframe: 40 * resources.textureWidth,
- speed: 10,
- count: 1,
- step: 0,
- single: !0
- }),
- dying: new animation.Animation({
- keyframe: 40 * resources.textureWidth,
- speed: 10,
- count: 5,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("ahhhg", this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }));
- 4 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 45 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- Officer: function (a) {
- utils.extend(a, {
- hitpoints: 50,
- speed: 16,
- detailLevel: 128,
- hit: !0,
- resource: "officer",
- aiType: "officer",
- soundOnAttack: "spion",
- animations: {
- ready: new animation.Animation({
- slide: !0
- }),
- fire: new animation.Animation({
- keyframe: 47 * resources.textureWidth,
- speed: 10,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- walk: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 20,
- count: 4,
- step: 8 * resources.textureWidth,
- slide: !0,
- callback: utils.bind(this, function () {
- this.speed = 8
- })
- }),
- run: new animation.Animation({
- keyframe: 8 * resources.textureWidth,
- speed: 8,
- count: 4,
- step: 8 * resources.textureWidth,
- slide: !0,
- callback: utils.bind(this, function () {
- this.speed = 8
- })
- }),
- hit: new animation.Animation({
- keyframe: 40 * resources.textureWidth,
- speed: 10,
- count: 1,
- step: 0,
- single: !0,
- callback: utils.bind(this, function () {})
- }),
- dying: new animation.Animation({
- keyframe: 41 * resources.textureWidth,
- speed: 10,
- count: 5,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("neinsovass", this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }));
- 4 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 46 * resources.textureWidth,
- callback: utils.bind(this,
- function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead && this.action ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- },
- Dog: function (a) {
- utils.extend(a, {
- hitpoints: 1,
- speed: 16,
- detailLevel: 128,
- hit: !0,
- resource: "dog",
- aiType: "dog",
- soundOnAttack: "dogbark",
- animations: {
- showcase: new animation.Animation({
- speed: 20,
- count: 39,
- step: resources.textureWidth
- }),
- ready: new animation.Animation({
- slide: !0,
- single: !0
- }),
- fire: new animation.Animation({
- keyframe: 36 * resources.textureWidth,
- speed: 8,
- count: 3,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 2 == a.index && (this.action = this.fire)
- })
- }),
- run: new animation.Animation({
- speed: 8,
- count: 4,
- step: 8 * resources.textureWidth,
- slide: !0
- }),
- dying: new animation.Animation({
- keyframe: 32 * resources.textureWidth,
- speed: 10,
- count: 4,
- step: resources.textureWidth,
- single: !0,
- callback: utils.bind(this, function (a) {
- 1 == a.index && (audio.queueSound("dogdeath", this.baseX, this.baseY),
- scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }));
- 3 == a.index && this.animate("dead")
- })
- }),
- dead: new animation.Animation({
- keyframe: 35 * resources.textureWidth,
- callback: utils.bind(this, function () {
- this.hit = !1;
- this.hitpoints = 0;
- this.dead ? this.action = this.dead : this.process = this.action = null
- })
- })
- }
- });
- ai.Entity.call(this, a);
- "dead" != this.animations.current && (this.action = a.action ? this[a.action] : this.ready)
- }
-};
-utils.overwrite(ai.Entity.prototype = Object.create(sprites.Sprite.prototype), {
- calculateAngle: function () {
- -1 == this.direction.x && -1 == this.direction.y ? this.angle = 3 : -1 == this.direction.x && 0 == this.direction.y ? this.angle = 4 : -1 == this.direction.x && 1 == this.direction.y ? this.angle = 5 : 0 == this.direction.x && 1 == this.direction.y ? this.angle = 6 : 1 == this.direction.x && 1 == this.direction.y ? this.angle = 7 : 1 == this.direction.x && 0 == this.direction.y ? this.angle = 0 : 1 == this.direction.x && -1 == this.direction.y ? this.angle = 1 : 0 == this.direction.x && -1 == this.direction.y && (this.angle = 2)
- },
- calculateSlide: function (a, b) {
- if (this.animations.current && !this.animations[this.animations.current].slide) this.slide = 0;
- else {
- var c = floor(atan2(this.baseY + 0.5 - b, this.baseX + 0.5 - a) * utils.deg + 22.5) + 180;
- this.slide = (floor(c / 45) + this.angle) % 8
- }
- },
- getTextureSlide: function () {
- return this.slide * resources.textureWidth
- },
- turnaround: function () {
- this.direction.x *= -1;
- this.direction.y *= -1;
- this.calculateAngle()
- },
- lookingAt: function (a, b) {
- var a = floor(a),
- b = floor(b),
- c = a - this.baseX,
- d = b - this.baseY;
- switch (this.angle) {
- case 0:
- return 0 < c;
- case 2:
- return 0 > d;
- case 4:
- return 0 > c;
- case 6:
- return 0 < d
- }
- },
- isVisible: function (a, b, c) {
- for (var d = floor(a), e = floor(b), f = floor((a - d) * this.detailLevel), h = floor((b - e) * this.detailLevel), b = this.baseX, a = this.baseY, g = floor((this.x + 0.5 - this.baseX) * this.detailLevel), j = floor((this.y + 0.5 - this.baseY) * this.detailLevel), b = b * this.detailLevel + g, a = a * this.detailLevel + j, d = d * this.detailLevel + f, e = e * this.detailLevel + h, f = abs(d - b), h = abs(e - a), j = b < d ? 1 : -1, g = a < e ? 1 : -1, i = f - h;;) {
- if (b == d && a == e) return !0;
- var m = floor(b / this.detailLevel),
- l = floor(a / this.detailLevel);
- if (c.getMapValue(m, l) || (m = c.getDoor(m, l)) && m.isClosed()) return !1;
- m = 2 * i;
- m > -h && (i -= h, b += j);
- m < f && (i += f, a += g)
- }
- },
- getDirectionTo: function (a, b, c) {
- var a = floor(a),
- b = floor(b),
- d = this.baseX,
- e = this.baseY,
- f = abs(a - d),
- h = abs(b - e),
- g = d < a ? 1 : -1,
- j = e < b ? 1 : -1,
- i = 2 * (f - h),
- m = 0,
- l = 0;
- i > -h && (m += g);
- i < f && (l += j);
- if (0 == m && 0 == l) return {
- x: 0,
- y: 0
- };
- for (var p = [[c.getHitValue(d - 1, e - 1, this) || d - 1 == a && e - 1 == b || 0 > [1, 2, 3, 4, 5].indexOf(this.angle), c.getHitValue(d - 1, e, this) || d - 1 == a && e == b || 0 >
-[2, 3, 4, 5, 6].indexOf(this.angle), c.getHitValue(d - 1, e + 1, this) || d - 1 == a && e + 1 == b || 0 > [3, 4, 5, 6, 7].indexOf(this.angle)], [c.getHitValue(d, e - 1, this) || d == a && e - 1 == b || 0 > [0, 1, 2, 3, 4].indexOf(this.angle), !1, c.getHitValue(d, e + 1, this) || d == a && e + 1 == b || 0 > [0, 4, 5, 6, 7].indexOf(this.angle)], [c.getHitValue(d + 1, e - 1, this) || d + 1 == a && e - 1 == b || 0 > [0, 1, 2, 3, 7].indexOf(this.angle), c.getHitValue(d + 1, e, this) || d + 1 == a && e == b || 0 > [0, 1, 2, 6, 7].indexOf(this.angle), c.getHitValue(d + 1, e + 1, this) || d + 1 == a && e + 1 == b || 0 > [0, 1, 5, 6, 7].indexOf(this.angle)]],
- q = [p[0][0], p[1][0], p[2][0], p[2][1], p[2][2], p[1][2], p[0][2], p[0][1]], n = [{
- x: -1,
- y: -1
- }, {
- x: 0,
- y: -1
- }, {
- x: 1,
- y: -1
- }, {
- x: 1,
- y: 0
- }, {
- x: 1,
- y: 1
- }, {
- x: 0,
- y: 1
- }, {
- x: -1,
- y: 1
- }, {
- x: -1,
- y: 0
- }], o = 0; 8 > o && !(n[o].x == m && n[o].y == l); o++);
- var r = 0,
- s = function () {
- r++;
- if (8 < r) return null;
- if (q[o] || this.prevX && this.prevY && d + n[o].x == this.prevX && e + n[o].y == this.prevY) return o = (8 + (o + (f > h ? g : j))) % 8, s();
- if (!p[1][n[o].y + 1] && !p[n[o].x + 1][1]) return n[o];
- o = (8 + (o + (f > h ? g : j))) % 8;
- return s()
- };
- return s() || {
- x: 0,
- y: 0
- }
- },
- tryWalk: function (a, b, c, d) {
- var e;
- if (-1 == a.x && -1 ==
- a.y) e = 3;
- else if (-1 == a.x && 0 == a.y) e = 4;
- else if (-1 == a.x && 1 == a.y) e = 5;
- else if (0 == a.x && 1 == a.y) e = 6;
- else if (1 == a.x && 1 == a.y) e = 7;
- else if (1 == a.x && 0 == a.y) e = 0;
- else if (1 == a.x && -1 == a.y) e = 1;
- else if (0 == a.x && -1 == a.y) e = 2;
- else if (0 == a.x && 0 == a.y) return !1;
- switch (e) {
- case 0:
- if ("dog" == this.type || "fake" == this.type) {
- if (a = d.getDoor(this.baseX + 1, this.baseY), d.getHitValue(this.baseX + 1, this.baseY, this) || a && !a.isOpen() || this.baseX + 1 == b && this.baseY == c) return !1
- } else if (d.getHitValue(this.baseX + 1, this.baseY, this) || this.baseX + 1 == b &&
- this.baseY == c) return !1;
- break;
- case 1:
- a = d.getDoor(this.baseX + 1, this.baseY - 1);
- if (d.getHitValue(this.baseX + 1, this.baseY - 1, this) || a && !a.isOpen() || this.baseX + 1 == b && this.baseY - 1 == c) return !1;
- a = d.getDoor(this.baseX + 1, this.baseY);
- if (d.getHitValue(this.baseX + 1, this.baseY, this) || a && !a.isOpen() || this.baseX + 1 == b && this.baseY == c) return !1;
- a = d.getDoor(this.baseX, this.baseY - 1);
- if (d.getHitValue(this.baseX, this.baseY - 1, this) || a && !a.isOpen() || this.baseX == b && this.baseY - 1 == c) return !1;
- break;
- case 2:
- if ("dog" == this.type || "fake" ==
- this.type) {
- if (a = d.getDoor(this.baseX, this.baseY - 1), d.getHitValue(this.baseX, this.baseY - 1, this) || a && !a.isOpen() || this.baseX == b && this.baseY - 1 == c) return !1
- } else if (d.getHitValue(this.baseX, this.baseY - 1, this) || this.baseX == b && this.baseY - 1 == c) return !1;
- break;
- case 3:
- a = d.getDoor(this.baseX - 1, this.baseY - 1);
- if (d.getHitValue(this.baseX - 1, this.baseY - 1, this) || a && !a.isOpen() || this.baseX - 1 == b && this.baseY - 1 == c) return !1;
- a = d.getDoor(this.baseX - 1, this.baseY);
- if (d.getHitValue(this.baseX - 1, this.baseY, this) || a && !a.isOpen() ||
- this.baseX - 1 == b && this.baseY == c) return !1;
- a = d.getDoor(this.baseX, this.baseY - 1);
- if (d.getHitValue(this.baseX, this.baseY - 1, this) || a && !a.isOpen() || this.baseX == b && this.baseY - 1 == c) return !1;
- break;
- case 4:
- if ("dog" == this.type || "fake" == this.type) {
- if (a = d.getDoor(this.baseX - 1, this.baseY), d.getHitValue(this.baseX - 1, this.baseY, this) || a && !a.isOpen() || this.baseX - 1 == b && this.baseY == c) return !1
- } else if (d.getHitValue(this.baseX - 1, this.baseY, this) || this.baseX - 1 == b && this.baseY == c) return !1;
- break;
- case 5:
- a = d.getDoor(this.baseX -
- 1, this.baseY + 1);
- if (d.getHitValue(this.baseX - 1, this.baseY + 1, this) || a && !a.isOpen() || this.baseX - 1 == b && this.baseY + 1 == c) return !1;
- a = d.getDoor(this.baseX - 1, this.baseY);
- if (d.getHitValue(this.baseX - 1, this.baseY, this) || a && !a.isOpen() || this.baseX - 1 == b && this.baseY == c) return !1;
- a = d.getDoor(this.baseX, this.baseY + 1);
- if (d.getHitValue(this.baseX, this.baseY + 1, this) || a && !a.isOpen() || this.baseX == b && this.baseY + 1 == c) return !1;
- break;
- case 6:
- if ("dog" == this.type || "fake" == this.type) {
- if (a = d.getDoor(this.baseX, this.baseY + 1), d.getHitValue(this.baseX,
- this.baseY + 1, this) || a && !a.isOpen() || this.baseX == b && this.baseY + 1 == c) return !1
- } else if (d.getHitValue(this.baseX, this.baseY + 1, this) || this.baseX == b && this.baseY + 1 == c) return !1;
- break;
- case 7:
- a = d.getDoor(this.baseX + 1, this.baseY + 1);
- if (d.getHitValue(this.baseX + 1, this.baseY + 1, this) || a && !a.isOpen() || this.baseX + 1 == b && this.baseY + 1 == c) return !1;
- a = d.getDoor(this.baseX + 1, this.baseY);
- if (d.getHitValue(this.baseX + 1, this.baseY, this) || a && !a.isOpen() || this.baseX + 1 == b && this.baseY == c) return !1;
- a = d.getDoor(this.baseX, this.baseY +
- 1);
- if (d.getHitValue(this.baseX, this.baseY + 1, this) || a && !a.isOpen() || this.baseX == b && this.baseY + 1 == c) return !1;
- break;
- default:
- return !1
- }
- return !0
- },
- selectDodgeDirection: function (a, b, c) {
- if (0 != this.detailX || 0 != this.detailY) return this.direction;
- var a = floor(a),
- b = floor(b),
- d, e = {
- x: 0,
- y: 0
- };
- d = this.action == this.attack ? e : {
- x: -this.direction.x,
- y: -this.direction.y
- };
- var f = a - this.baseX,
- h = b - this.baseY,
- g = [];
- 0 < f ? (g[1] = {
- x: 1,
- y: 0
- }, g[3] = {
- x: -1,
- y: 0
- }) : (g[3] = {
- x: 1,
- y: 0
- }, g[1] = {
- x: -1,
- y: 0
- });
- 0 < h ? (g[2] = {
- x: 0,
- y: 1
- }, g[4] = {
- x: 0,
- y: -1
- }) : (g[4] = {
- x: 0,
- y: 1
- }, g[2] = {
- x: 0,
- y: -1
- });
- f = abs(f);
- h = abs(h);
- f > h && (h = g[1], g[1] = g[2], g[2] = h, h = g[3], g[3] = g[4], g[4] = h);
- 128 > utils.random(256) && (h = g[1], g[1] = g[2], g[2] = h, h = g[3], g[3] = g[4], g[4] = h);
- g[0] = {
- x: 0 == g[1].x ? g[2].x : g[1].x,
- y: 0 == g[1].y ? g[2].y : g[1].y
- };
- for (h = 0; 5 > h; h++)
- if (!(g[h].x == e.x && g[h].y == e.y || g[h].x == d.x && g[h].y == d.y))
- if (f = {
- x: g[h].x,
- y: g[h].y
- }, this.tryWalk(f, a, b, c)) return f;
- return d.x != e.x && d.y != e.y && (f = {
- x: d.x,
- y: d.y
- }, this.tryWalk(f, a, b, c)) ? f : {
- x: e.x,
- y: e.y
- }
- },
- selectChaseDirection: function (a, b, c) {
- if (0 != this.detailX || 0 != this.detailY) return this.direction;
- var a = floor(a),
- b = floor(b),
- d = {
- x: this.direction.x,
- y: this.direction.y
- }, e = -this.direction.x,
- f = -this.direction.y,
- h = {
- x: 0,
- y: 0
- }, g = a - this.baseX,
- j = b - this.baseY,
- i = [];
- i[1] = h;
- i[2] = h;
- 0 < g ? i[1] = {
- x: 1,
- y: 0
- } : 0 > g && (i[1] = {
- x: -1,
- y: 0
- });
- 0 < j ? i[2] = {
- x: 0,
- y: 1
- } : 0 > j && (i[2] = {
- x: 0,
- y: -1
- });
- abs(j) > abs(g) && (g = i[1], i[1] = i[2], i[2] = g);
- this.action == this.attack && (i[1].x == e && i[1].y == f && (i[1] = h), i[2].x == e && i[2].y == f && (i[2] = h));
- if (i[1] != h && (g = {
- x: i[1].x,
- y: i[1].y
- }, this.tryWalk(g, a, b, c)) || i[2] != h && (g = {
- x: i[2].x,
- y: i[2].y
- }, this.tryWalk(g, a, b, c))) return g;
- if (d.x != h.x && d.y != h.y && this.tryWalk(d, a, b, c)) return d;
- d = [{
- x: 0,
- y: -1
- }, {
- x: 1,
- y: 0
- }, {
- x: 0,
- y: 1
- }, {
- x: -1,
- y: 0
- }];
- if (128 < utils.random(256))
- for (i = 0; 4 > i; i++) {
- if (g = d[i], g.x != h.x || g.y != h.y || this.action != this.attack)
- if (g = {
- x: g.x,
- y: g.y
- }, this.tryWalk(g, a, b, c)) return g
- } else
- for (i = 3; 0 <= i; i--)
- if (g = d[i], g.x != h.x && g.y != h.y || this.action != this.attack)
- if (g = {
- x: g.x,
- y: g.y
- }, this.tryWalk(g, a, b, c)) return g;
- return e != h.x && f != h.y && (g = {
- x: e,
- y: f
- }, this.tryWalk(g, a, b, c)) ? g : {
- x: h.x,
- y: h.y
- }
- },
- selectRunDirection: function (a, b, c) {
- if (0 != this.detailX ||
- 0 != this.detailY) return this.direction;
- var a = floor(a),
- b = floor(b),
- d = {
- x: this.direction.x,
- y: this.direction.y
- }, e = -this.direction.x,
- f = -this.direction.y,
- h = {
- x: 0,
- y: 0
- }, g = a - this.baseX,
- j = b - this.baseY,
- i = [];
- i[1] = h;
- i[2] = h;
- 0 > g ? i[1] = {
- x: 1,
- y: 0
- } : 0 < g && (i[1] = {
- x: -1,
- y: 0
- });
- 0 > j ? i[2] = {
- x: 0,
- y: 1
- } : 0 < j && (i[2] = {
- x: 0,
- y: -1
- });
- abs(j) > abs(g) && (g = i[1], i[1] = i[2], i[2] = g);
- if (i[1] != h && (g = {
- x: i[1].x,
- y: i[1].y
- }, this.tryWalk(g, a, b, c)) || i[2] != h && (g = {
- x: i[2].x,
- y: i[2].y
- }, this.tryWalk(g, a, b, c))) return g;
- if (d.x != h.x && d.y != h.y && this.tryWalk(d, a, b, c)) return d;
- d = [{
- x: 0,
- y: -1
- }, {
- x: 1,
- y: 0
- }, {
- x: 0,
- y: 1
- }, {
- x: -1,
- y: 0
- }];
- if (128 < utils.random(256))
- for (i = 0; 4 > i; i++) {
- if (g = d[i], g.x != e && g.y != f || this.action != this.attack)
- if (g = {
- x: g.x,
- y: g.y
- }, this.tryWalk(g, a, b, c)) return g
- } else
- for (i = 3; 0 <= i; i--)
- if (g = d[i], g.x != e && g.y != f || this.action != this.attack)
- if (g = {
- x: g.x,
- y: g.y
- }, this.tryWalk(g, a, b, c)) return g;
- return e != h.x && f != h.y && (g = {
- x: e,
- y: f
- }, this.tryWalk(g, a, b, c)) ? g : {
- x: h.x,
- y: h.y
- }
- },
- getDistance: function (a, b) {
- var c = this.x - a,
- d = this.y - b;
- return sqrt(c * c + d * d)
- },
- getDirection: function () {
- var a = 0,
- b = 0;
- switch (this.angle) {
- case 0:
- a =
- 1;
- b = 0;
- break;
- case 1:
- a = 1;
- b = -1;
- break;
- case 2:
- a = 0;
- b = -1;
- break;
- case 3:
- b = a = -1;
- break;
- case 4:
- a = -1;
- b = 0;
- break;
- case 5:
- a = -1;
- b = 1;
- break;
- case 6:
- a = 0;
- b = 1;
- break;
- case 7:
- b = a = 1
- }
- this.direction = {
- x: a,
- y: b
- }
- },
- moveForward: function (a, b) {
- var c = a.map;
- this.reset = !1;
- this.detailX >= this.detailLevel && (this.detailX = 0, this.prevX = this.baseX, this.x = this.baseX += this.direction.x, this.reset = !0);
- this.detailY >= this.detailLevel && (this.detailY = 0, this.prevY = this.baseY, this.y = this.baseY += this.direction.y, this.reset = !0);
- if (this.reset && this.action ==
- this.moving) {
- var d = c.getScript(this.baseX, this.baseY);
- if (d && d.action) d[d.action](this)
- }
- this.animate(b);
- if (!this.reset) {
- d = this.animations[this.animations.current];
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !d.process && this.animate(b);
- d = !0;
- d = !a.map.hit[this.baseX + this.direction.x][this.baseY + this.direction.y];
- if ("dog" != this.type && "fake" != this.type)
- if (this.action == this.attack) {
- if ("walk" == this.animations.current || "run" == this.animations.current ||
- "ready" == this.animations.current) {
- var e = c.getDoor(this.baseX + this.direction.x, this.baseY),
- f = c.getDoor(this.baseX, this.baseY + this.direction.y);
- if (e && f) {
- if ("open" == e.action) e[e.action]()
- } else if (e && !e.isOpen()) {
- if ("open" == e.action) e[e.action]()
- } else if (f && !f.isOpen() && "open" == f.action) f[f.action]()
- }
- } else if ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current)
- if ((e = c.getDoor(this.baseX + this.direction.x, this.baseY + this.direction.y)) && !e.isOpen() && "open" ==
- e.action) e[e.action]();
- abs(a.x - (this.x + 0.5 + this.direction.x * (this.speed / this.detailLevel) * game.timeFactor)) <= c.hitDistance / 5 && abs(a.y - (this.y + 0.5 + this.direction.y * (this.speed / this.detailLevel) * game.timeFactor)) <= c.hitDistance / 5 && (d = !1);
- if (d) {
- if ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) this.x += this.direction.x * (this.speed / this.detailLevel) * game.timeFactor, this.y += this.direction.y * (this.speed / this.detailLevel) * game.timeFactor, this.detailX += abs(floor(this.direction.x *
- this.speed * game.timeFactor)), this.detailY += abs(floor(this.direction.y * this.speed * game.timeFactor))
- } else this.direction = this.selectChaseDirection(a.x, a.y, a.map)
- }
- },
- checkAttack: function (a) {
- var b = !1,
- c = a.map.floors[this.baseX][this.baseY];
- if (106 != c && !this.instantAttack)
- for (var d = 0; d < scripts.process.length; d++) {
- var e = scripts.process[d],
- f = a.map.floors[floor(e.x)][floor(e.y)];
- if ((!e.visibility || this.isVisible(e.x, e.y, a.map)) && f == c) {
- this.timer = -1;
- this[e.action](a);
- b = !0;
- break
- }
- }!b && this.isVisible(a.x, a.y, a.map) &&
- (this.lookingAt(a.x, a.y) || this.instantAttack || this.getDistance(a.x, a.y) <= sqrt2) ? (this.timer ? this.timer++ : this.timer = 1, this.attack(a)) : this.timer = 0
- },
- ready: function (a) {
- this.attack && this.checkAttack(a);
- a = this.animations[this.animations.current];
- "hit" == this.animations.current && !a.process ? this.animate("ready") : this.animate(this.animations.current)
- },
- moving: function (a) {
- this.attack && this.checkAttack(a);
- this.moveForward(a, this.animations.walk ? "walk" : "run")
- },
- damage: function (a) {
- if (this.hitpoints && "dead" != this.animations.current &&
- this.isVisible(a.x, a.y, a.map)) {
- var b = 0;
- if (0 == a.getActiveWeapon()
- .id) b = utils.random(255) >> 4;
- else {
- var c = abs(floor(a.x) - this.baseX),
- a = abs(floor(a.y) - this.baseY),
- c = c > a ? c : a;
- 2 > c ? b = floor(utils.random(255) / 4) : 4 > c ? b = floor(utils.random(255) / 6) : floor(utils.random(255) / 12) >= c && (b = floor(utils.random(255) / 6))
- }
- b && (this.action != this.attack && this.action != this.fire && (b <<= 1), this.hitpoints -= b, 0 > this.hitpoints && (this.hitpoints = 0), this.hitpoints ? this.animations.hit && this.animate("hit") : this.animate("dying"), this.action =
- this.attack)
- }
- },
- process: function (a) {
- this.calculateSlide(a.x, a.y);
- this.action && this.action(a)
- }
-});
-utils.overwrite(ai.BJ.prototype = Object.create(ai.Entity.prototype), {});
-utils.overwrite(ai.Hans.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- b = !1;
- this.timer > ai.tick ? d && (d = abs(floor(a.x) - this.baseX), b = abs(floor(a.y) - this.baseY), d = d > b ? d : b, c = !d || 1 == d && c <= sqrt2 ? 300 : floor(ai.tick << 4 / d), utils.random(255) < c && this.animate("fire"), b = !0) : this.timer++;
- this.reset ? (this.direction = b ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" ==
- this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b =
- 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = floor(2 * (b > c ? b : c) / 3),
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("bossfire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit()));
- this.action =
- this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- var b = this.baseX,
- c = this.baseY;
- if (a.map.getHitValue(b, c, this)) {
- var d = a.map.firstFree(b, c);
- d && (b = d.x, c = d.y)
- }
- a.map.addSprite(new sprites.Sprite(wolf3d.goldKey(b, c)));
- a.setProperty("score", 5E3);
- a.ratio.kill++;
- this.process = this.action = null
- }
-});
-utils.overwrite(ai.TransGrosse.prototype = Object.create(ai.Hans.prototype), {});
-utils.overwrite(ai.UberMutant.prototype = Object.create(ai.Hans.prototype), {});
-utils.overwrite(ai.Gretel.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- b = !1;
- this.timer > ai.tick ? d && (d = abs(floor(a.x) - this.baseX), b = abs(floor(a.y) - this.baseY), d = d > b ? d : b, c = !d || 1 == d && c <= sqrt2 ? 300 : floor(ai.tick << 4 / d), utils.random(255) < c && this.animate("fire"), b = !0) : this.timer++;
- this.reset ? (this.direction = b ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" ==
- this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b =
- 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = floor(2 * (b > c ? b : c) / 3),
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("bossfire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit()));
- this.action =
- this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- var b = this.baseX,
- c = this.baseY;
- if (a.map.getHitValue(b, c, this)) {
- var d = a.map.firstFree(b, c);
- d && (b = d.x, c = d.y)
- }
- a.map.addSprite(new sprites.Sprite(wolf3d.goldKey(b, c)));
- a.setProperty("score", 5E3);
- a.ratio.kill++;
- this.process = this.action = null
- }
-});
-utils.overwrite(ai.DrSchabbs.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- a.getDistance(this.x, this.y);
- var c = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- var b = !1,
- d = abs(floor(a.x) - this.baseX),
- e = abs(floor(a.y) - this.baseY),
- d = d > e ? d : e;
- this.timer > ai.tick ? c && (utils.random(255) < floor(ai.tick << 4 / d) && this.animate("fire"), b = !0) : this.timer++;
- this.reset ? (this.direction = 4 > d ? this.selectRunDirection(a.x, a.y, a.map) : b ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = 4 > d ? this.selectRunDirection(a.x, a.y, a.map) : this.selectDodgeDirection(a.x,
- a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" ==
- this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- audio.queueSound("schabbsthrow", this.baseX, this.baseY);
- var b = floor(a.x) - this.baseX,
- c = floor(a.y) - this.baseY,
- c = (atan2(c, b) * utils.deg + 180) % 360 * utils.rad,
- b = -cos(c),
- c = -sin(c),
- d = ai.calculateAngleFromDirection(0 > b ? ceil(b) : floor(b), 0 > c ? ceil(c) : floor(c));
- a.map.addAI(new ai.Needle({
- eval: "new ai.Needle({ x: " + this.x + ", y: " + this.y + ",direction: { x: " + b + ", y: " + c + " }, angle: " + d + " });",
- x: this.x,
- y: this.y,
- direction: {
- x: b,
- y: c
- },
- angle: d
- }));
- this.action = this.attack
- } else this.action =
- this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- a.setProperty("score", 5E3);
- a.ratio.kill++;
- this.process = this.action = null;
- setTimeout(function () {
- game.auto = null;
- game.pause = !0;
- game.win = !0
- }, 1E3)
- }
-});
-utils.overwrite(ai.Needle.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- this.animate("run");
- this.x += this.direction.x / this.speed * game.timeFactor;
- this.y += this.direction.y / this.speed * game.timeFactor;
- this.baseX = floor(this.x);
- this.baseY = floor(this.y);
- if (a.map.getMapValue(this.baseX, this.baseY) || this.baseX == floor(a.x) && this.baseY == floor(a.y))
- if (a.map.removeAI(this), ai.process.splice(ai.process.indexOf(this), 1), this.baseX == floor(a.x) && this.baseY == floor(a.y)) {
- var b = (utils.random(255) >>
- 3) + 20;
- game.difficulty || (b >>= 1);
- b && (a.setProperty("health", -b), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit())
- }
- }
-});
-utils.overwrite(ai.Ghost.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- a.getDistance(this.x, this.y);
- var c = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- var b = abs(floor(a.x) - this.baseX),
- d = abs(floor(a.y) - this.baseY),
- b = b > d ? b : d;
- this.timer > ai.tick ? c && utils.random(255) < floor(ai.tick << 4 / b) && this.animate("fire") : this.timer++;
- if (this.reset || 0 == this.direction.x && 0 == this.direction.y) this.direction = this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle();
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action !=
- this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current) {
- audio.queueSound("flamethrower", this.baseX, this.baseY);
- var b = floor(a.x) - this.baseX,
- c = floor(a.y) - this.baseY,
- c = (atan2(c, b) * utils.deg + 180) % 360 * utils.rad,
- b = -cos(c),
- c = -sin(c),
- d = ai.calculateAngleFromDirection(0 >
- b ? ceil(b) : floor(b), 0 > c ? ceil(c) : floor(c));
- a.map.addAI(new ai.Fireball({
- eval: "new ai.Fireball({ x: " + this.x + ", y: " + this.y + ",direction: { x: " + b + ", y: " + c + " }, angle: " + d + " });",
- x: this.x,
- y: this.y,
- direction: {
- x: b,
- y: c
- },
- angle: d
- }));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- a.setProperty("score", 2E3);
- a.ratio.kill++;
- this.process = this.action = null
- }
-});
-utils.overwrite(ai.Fireball.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- this.animate("run");
- this.x += this.direction.x / this.speed * game.timeFactor;
- this.y += this.direction.y / this.speed * game.timeFactor;
- this.baseX = floor(this.x);
- this.baseY = floor(this.y);
- if (a.map.getMapValue(this.baseX, this.baseY) || this.baseX == floor(a.x) && this.baseY == floor(a.y))
- if (a.map.removeAI(this), ai.process.splice(ai.process.indexOf(this), 1), this.baseX == floor(a.x) && this.baseY == floor(a.y)) {
- var b = floor((utils.random(255) >>
- 3) / 3);
- game.difficulty || (b >>= 1);
- b && (a.setProperty("health", -b), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit())
- }
- }
-});
-utils.overwrite(ai.AngelOfDeath.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process && this.animate("run");
- var b = !1,
- e = abs(floor(a.x) - this.baseX),
- f = abs(floor(a.y) - this.baseY),
- e = e > f ? e : f;
- this.timer > ai.tick ? d && (e = abs(floor(a.x) - this.baseX), f = abs(floor(a.y) - this.baseY), e = e > f ? e : f, c = !e || 1 == e && c <= sqrt2 ? 300 : floor(ai.tick << 4 / e), utils.random(255) < c && this.animate("fire"), b = !0) : this.timer++;
- this.reset ? (this.direction = b ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = this.selectDodgeDirection(a.x,
- a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" ==
- this.animations.current) {
- audio.queueSound("angelfire", this.baseX, this.baseY);
- var b = floor(a.x) - this.baseX,
- c = floor(a.y) - this.baseY,
- c = (atan2(c, b) * utils.deg + 180) % 360 * utils.rad,
- b = -cos(c),
- c = -sin(c),
- d = ai.calculateAngleFromDirection(0 > b ? ceil(b) : floor(b), 0 > c ? ceil(c) : floor(c));
- a.map.addAI(new ai.Orb({
- eval: "new ai.Orb({ x: " + this.x + ", y: " + this.y + ",direction: { x: " + b + ", y: " + c + " }, angle: " + d + " });",
- x: this.x,
- y: this.y,
- direction: {
- x: b,
- y: c
- },
- angle: d
- }));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- a.setProperty("score", 5E3);
- a.ratio.kill++;
- this.process = this.action = null;
- setTimeout(function () {
- game.auto = null;
- game.pause = !0;
- game.win = !0
- }, 1E3)
- }
-});
-utils.overwrite(ai.Orb.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- this.animate("run");
- this.x += this.direction.x / this.speed * game.timeFactor;
- this.y += this.direction.y / this.speed * game.timeFactor;
- this.baseX = floor(this.x);
- this.baseY = floor(this.y);
- if (a.map.getMapValue(this.baseX, this.baseY) || this.baseX == floor(a.x) && this.baseY == floor(a.y))
- if (a.map.removeAI(this), ai.process.splice(ai.process.indexOf(this), 1), this.baseX == floor(a.x) && this.baseY == floor(a.y)) {
- var b = floor(utils.random(255) >>
- 3);
- game.difficulty || (b >>= 1);
- b && (a.setProperty("health", -b), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit())
- }
- }
-});
-utils.overwrite(ai.MechHitler.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process && this.animate("run");
- b = !1;
- this.timer > ai.tick ? d && (d = abs(floor(a.x) - this.baseX), b = abs(floor(a.y) - this.baseY), d = d > b ? d : b, c = !d || 1 == d && c <= sqrt2 ? 300 : floor(ai.tick << 4 / d), utils.random(255) < c && this.animate("fire"), b = !0) : this.timer++;
- this.reset ? (this.direction = b ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle());
- this.timer >
- ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current && this.isVisible(a.x,
- a.y, a.map)) {
- var b = 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = floor(2 * (b > c ? b : c) / 3),
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("bossfire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit()));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- var b = new ai.Hitler({
- x: this.baseX,
- y: this.baseY,
- action: "ready",
- animations: {
- current: "ready"
- }
- });
- b.x = this.x;
- b.y = this.y;
- b.detailX = this.detailX;
- b.detailY = this.detailY;
- b.direction = {
- x: this.direction.x,
- y: this.direction.y
- };
- a.map.ai.push(b);
- this.hit = !1;
- this.direction = {
- x: 0,
- y: 0
- };
- a.setProperty("score", 5E3);
- this.process = this.action = null
- }
-});
-utils.overwrite(ai.Hitler.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- b = !1;
- this.timer > ai.tick ? d && (d = abs(floor(a.x) - this.baseX), b = abs(floor(a.y) - this.baseY), d = d > b ? d : b, c = !d || 1 == d && c <= sqrt2 ? 300 : floor(ai.tick << 4 / d), utils.random(255) < c && this.animate("fire"), b = !0) : this.timer++;
- this.reset ? (this.direction = b ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" ==
- this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b =
- 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = floor(2 * (b > c ? b : c) / 3),
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("bossfire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit()));
- this.action =
- this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- a.setProperty("score", 5E3);
- a.ratio.kill++;
- this.process = this.action = null;
- setTimeout(function () {
- game.auto = null;
-
- game.pause = !0;
- game.win = !0
- }, 1E3)
- }
-});
-utils.overwrite(ai.Giftmacher.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- a.getDistance(this.x, this.y);
- var c = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process && this.animate("run");
- var d = !1,
- e = abs(floor(a.x) - this.baseX),
- f = abs(floor(a.y) - this.baseY),
- b = e > f ? e : f;
- this.timer > ai.tick ? c && (utils.random(255) < floor(ai.tick << 4 / b) && ("fire" != this.animations.current && (audio.queueSound("missilefire", this.baseX, this.baseY), e = floor(a.x) - this.baseX, f = floor(a.y) - this.baseY, d = (atan2(f, e) * utils.deg + 180) % 360 * utils.rad, c = -cos(d), d = -sin(d), e = ai.calculateAngleFromDirection(0 > c ? ceil(c) : floor(c), 0 > d ? ceil(d) : floor(d)), a.map.addAI(new ai.Missile({
- eval: "new ai.Missile({ x: " + this.x + ", y: " + this.y + ",direction: { x: " + c + ", y: " + d + " }, animations: { current: 'run' }, angle: " + e + " });",
- x: this.x,
- y: this.y,
- direction: {
- x: c,
- y: d
- },
- animations: {
- current: "run"
- },
- angle: e
- }))), this.animate("fire")), d = !0) : this.timer++;
- this.reset ? (this.direction = 4 > b ? this.selectRunDirection(a.x, a.y, a.map) : d ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = 4 > b ? this.selectRunDirection(a.x, a.y, a.map) :
- this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- dead: function (a) {
- a.setProperty("score", 5E3);
- a.ratio.kill++;
- this.process = this.action = null;
- setTimeout(function () {
- game.auto = null;
- game.pause = !0;
- game.win = !0
- }, 1E3)
- }
-});
-utils.overwrite(ai.Missile.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if ("run" == this.animations.current) {
- if (!this.smokeInterval) {
- var b = this;
- this.smokeInterval = setInterval(function () {
- var c = new ai.Smoke({
- x: b.baseX,
- y: b.baseY,
- animations: {
- current: "smoke"
- }
- });
- a.map.ai.push(c)
- }, 30)
- }
- this.x += this.direction.x / this.speed * game.timeFactor;
- this.y += this.direction.y / this.speed * game.timeFactor;
- this.baseX = floor(this.x);
- this.baseY = floor(this.y);
- if (a.map.getMapValue(this.baseX, this.baseY) || this.baseX ==
- floor(a.x) && this.baseY == floor(a.y))
- if (this.smokeInterval && (clearInterval(this.smokeInterval), this.smokeInterval = null), this.animate("explode"), this.baseX == floor(a.x) && this.baseY == floor(a.y)) {
- var c = (utils.random(255) >> 3) + 30;
- game.difficulty || (c >>= 1);
- c && (a.setProperty("health", -c), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit())
- }
- } else this.animate("explode")
- },
- dead: function (a) {
- this.process = this.action = null;
- a.map.removeAI(this);
- ai.process.splice(ai.process.indexOf(this), 1)
- }
-});
-utils.overwrite(ai.HiMissile.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if ("run" == this.animations.current) {
- if (!this.smokeInterval) {
- var b = this;
- this.smokeInterval = setInterval(function () {
- var c = new ai.HiSmoke({
- x: b.baseX,
- y: b.baseY,
- animations: {
- current: "smoke"
- }
- });
- a.map.ai.push(c)
- }, 30)
- }
- this.x += this.direction.x / this.speed * game.timeFactor;
- this.y += this.direction.y / this.speed * game.timeFactor;
- this.baseX = floor(this.x);
- this.baseY = floor(this.y);
- if (a.map.getMapValue(this.baseX, this.baseY) || this.baseX ==
- floor(a.x) && this.baseY == floor(a.y))
- if (this.smokeInterval && (clearInterval(this.smokeInterval), this.smokeInterval = null), this.animate("explode"), this.baseX == floor(a.x) && this.baseY == floor(a.y)) {
- var c = (utils.random(255) >> 3) + 30;
- game.difficulty || (c >>= 1);
- c && (a.setProperty("health", -c), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit())
- }
- } else this.animate("explode")
- },
- dead: function (a) {
- this.process = this.action = null;
- a.map.removeAI(this);
- ai.process.splice(ai.process.indexOf(this), 1)
- }
-});
-utils.overwrite(ai.Smoke.prototype = Object.create(ai.Entity.prototype), {
- smoke: function () {
- this.animate("smoke")
- },
- dead: function (a) {
- this.process = this.action = null;
- a.map.removeAI(this);
- ai.process.splice(ai.process.indexOf(this), 1)
- }
-});
-utils.overwrite(ai.HiSmoke.prototype = Object.create(ai.Smoke.prototype), {});
-utils.overwrite(ai.Fettgesicht.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- a.getDistance(this.x, this.y);
- var c = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process && this.animate("run");
- var d = !1,
- e = abs(floor(a.x) - this.baseX),
- f = abs(floor(a.y) - this.baseY),
- b = e > f ? e : f;
- this.timer > ai.tick ? c && (utils.random(255) < floor(ai.tick << 4 / b) && ("fire" != this.animations.current && (audio.queueSound("missilefire", this.baseX, this.baseY), e = floor(a.x) - this.baseX, f = floor(a.y) - this.baseY, d = (atan2(f, e) * utils.deg + 180) % 360 * utils.rad, c = -cos(d), d = -sin(d), e = ai.calculateAngleFromDirection(0 > c ? ceil(c) : floor(c), 0 > d ? ceil(d) : floor(d)), a.map.addAI(new ai.Missile({
- eval: "new ai.Missile({ x: " + this.x + ", y: " + this.y + ",direction: { x: " + c + ", y: " + d + " }, animations: { current: 'run' }, angle: " + e + " });",
- x: this.x,
- y: this.y,
- direction: {
- x: c,
- y: d
- },
- animations: {
- current: "run"
- },
- angle: e
- }))), this.animate("fire")), d = !0) : this.timer++;
- this.reset ? (this.direction = 4 > b ? this.selectRunDirection(a.x, a.y, a.map) : d ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = 4 > b ? this.selectRunDirection(a.x, a.y, a.map) :
- this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b = 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = floor(2 * (b > c ? b : c) / 3),
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("bossfire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit()));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- a.setProperty("score", 5E3);
- a.ratio.kill++;
- this.process = this.action = null;
- setTimeout(function () {
- game.auto = null;
- game.pause = !0;
- game.win = !0
- }, 1E3)
- }
-});
-utils.overwrite(ai.BarnacleWilhelm.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- a.getDistance(this.x, this.y);
- var c = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process && this.animate("run");
- var d = !1,
- e = abs(floor(a.x) - this.baseX),
- f = abs(floor(a.y) - this.baseY),
- b = e > f ? e : f;
- this.timer > ai.tick ? c && (utils.random(255) < floor(ai.tick << 4 / b) && ("fire" != this.animations.current && (audio.queueSound("missilefire", this.baseX, this.baseY), e = floor(a.x) - this.baseX, f = floor(a.y) - this.baseY, d = (atan2(f, e) * utils.deg + 180) % 360 * utils.rad, c = -cos(d), d = -sin(d), e = ai.calculateAngleFromDirection(0 > c ? ceil(c) : floor(c), 0 > d ? ceil(d) : floor(d)), a.map.addAI(new ai.Missile({
- eval: "new ai.Missile({ x: " + this.x + ", y: " + this.y + ",direction: { x: " + c + ", y: " + d + " }, animations: { current: 'run' }, angle: " + e + " });",
- x: this.x,
- y: this.y,
- direction: {
- x: c,
- y: d
- },
- animations: {
- current: "run"
- },
- angle: e
- }))), this.animate("fire")), d = !0) : this.timer++;
- this.reset ? (this.direction = 4 > b ? this.selectRunDirection(a.x, a.y, a.map) : d ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = 4 > b ? this.selectRunDirection(a.x, a.y, a.map) :
- this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b = 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = floor(2 * (b > c ? b : c) / 3),
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("nazifire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit()));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- var b = this.baseX,
- c = this.baseY;
- if (a.map.getHitValue(b, c, this)) {
- var d = a.map.firstFree(b, c);
- d && (b = d.x, c = d.y)
- }
- a.map.addSprite(new sprites.Sprite(wolf3d.goldKey(b, c)));
- a.setProperty("score", 5E3);
- a.ratio.kill++;
- this.process = this.action = null
- }
-});
-utils.overwrite(ai.DeathKnight.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- a.getDistance(this.x, this.y);
- var c = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process && this.animate("run");
- var d = !1,
- e = abs(floor(a.x) - this.baseX),
- f = abs(floor(a.y) - this.baseY),
- b = e > f ? e : f;
- this.timer > ai.tick ? c && (utils.random(255) < floor(ai.tick << 4 / b) && ("fire" != this.animations.current && (audio.queueSound("knightmissile", this.baseX, this.baseY), e = floor(a.x) - this.baseX, f = floor(a.y) - this.baseY, d = (atan2(f, e) * utils.deg + 180) % 360 * utils.rad, c = -cos(d), d = -sin(d), e = ai.calculateAngleFromDirection(0 > c ? ceil(c) : floor(c), 0 > d ? ceil(d) : floor(d)), a.map.addAI(new ai.Missile({
- eval: "new ai.Missile({ x: " + this.x + ", y: " + this.y + ",direction: { x: " + c + ", y: " + d + " }, animations: { current: 'run' }, angle: " + e + " });",
- x: this.x,
- y: this.y,
- direction: {
- x: c,
- y: d
- },
- animations: {
- current: "run"
- },
- angle: e
- }))), this.animate("fire")), d = !0) : this.timer++;
- this.reset ? (this.direction = 4 > b ? this.selectRunDirection(a.x, a.y, a.map) : d ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = 4 > b ? this.selectRunDirection(a.x, a.y, a.map) :
- this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b = 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = floor(2 * (b > c ? b : c) / 3),
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("nazifire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit()));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- var b = this.baseX,
- c = this.baseY;
- if (a.map.getHitValue(b, c, this)) {
- var d = a.map.firstFree(b, c);
- d && (b = d.x, c = d.y)
- }
- a.map.addSprite(new sprites.Sprite(wolf3d.goldKey(b, c)));
- a.setProperty("score", 5E3);
- a.ratio.kill++;
- this.process = this.action = null
- }
-});
-utils.overwrite(ai.Pacman.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- d && c <= sqrt2 && (a.setProperty("health", -utils.random(255) >> 4), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit());
- if (this.reset || 0 == this.direction.x && 0 == this.direction.y) this.direction = this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle();
- ("run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run")
- }
- this.action != this.attack && (this.action = this.attack);
- this.timer = -1
- } else this.animate(this.animations.current)
- }
-});
-utils.overwrite(ai.Spectre.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- if (d && (c <= sqrt2 && (a.setProperty("health", -utils.random(255) >> 8), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit()), this.action != this.attack && this.action != this.fire && this.soundOnAttack)) audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- });
- if (this.reset || 0 == this.direction.x && 0 == this.direction.y) this.direction = this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle();
- ("run" == this.animations.current ||
- "ready" == this.animations.current) && this.moveForward(a, "run")
- }
- this.action != this.attack && (this.action = this.attack);
- this.timer = -1
- } else this.animate(this.animations.current)
- }
-});
-utils.overwrite(ai.Soldier.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- var e = !1;
- this.timer > ai.tick && ("hit" != this.animations.current || "hit" == this.animations.current && !b.process) ? d && (b = abs(floor(a.x) - this.baseX), d = abs(floor(a.y) - this.baseY), b = b > d ? b : d, c = !b || 1 == b && c <= sqrt2 ? 300 : floor(ai.tick << 4 / b), utils.random(255) < c && this.animate("fire"), e = !0) : this.timer++;
- this.reset ? (this.direction = e ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = this.selectDodgeDirection(a.x,
- a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" ==
- this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b = 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = b > c ? b : c,
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("nazifire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam =
- this), wolf3d.utils.flashHit()));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- var b = this.baseX,
- c = this.baseY;
- if (a.map.getHitValue(b, c, this)) {
- var d = a.map.firstFree(b, c);
- d && (b = d.x, c = d.y)
- }
- a.map.addSprite(new sprites.Sprite(wolf3d.utils.ammo(b, c, 4, 26, "getammo")));
- a.setProperty("score", 100);
- a.ratio.kill++;
- this.process = this.action = null
- }
-});
-utils.overwrite(ai.SS.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- var e = !1;
- this.timer > ai.tick && ("hit" != this.animations.current || "hit" == this.animations.current && !b.process) ? d && (b = abs(floor(a.x) - this.baseX), d = abs(floor(a.y) - this.baseY), b = b > d ? b : d, c = !b || 1 == b && c <= sqrt2 ? 300 : floor(ai.tick << 4 / b), utils.random(255) < c && this.animate("fire"), e = !0) : this.timer++;
- this.reset ? (this.direction = e ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = this.selectDodgeDirection(a.x,
- a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" ==
- this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b = 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = floor(2 * (b > c ? b : c) / 3),
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("ssfire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health &&
- (a.deathCam = this), wolf3d.utils.flashHit()));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- var b = this.baseX,
- c = this.baseY;
- if (a.map.getHitValue(b, c, this)) {
- var d = a.map.firstFree(b, c);
- d && (b = d.x, c = d.y)
- }
- a.hasWeapon(wolf3d.utils.weapons.machineGun.id) ? a.map.addSprite(new sprites.Sprite(wolf3d.utils.ammo(b, c, 4, 26, "getammo"))) : a.map.addSprite(new sprites.Sprite(wolf3d.machineGun(b, c)));
- a.setProperty("score", 500);
- a.ratio.kill++;
- this.process = this.action =
- null
- }
-});
-utils.overwrite(ai.Mutant.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- var e = !1;
- if (d && ("hit" != this.animations.current || "hit" == this.animations.current && !b.process)) b = abs(floor(a.x) - this.baseX), d = abs(floor(a.y) - this.baseY), b = b > d ? b : d, c = !b || 1 == b && c <= sqrt2 ? 300 : floor(ai.tick << 4 / b), utils.random(255) < c && this.animate("fire"), e = !0;
- this.reset ? (this.direction = e ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = this.selectDodgeDirection(a.x, a.y, a.map),
- this.calculateAngle());
- ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run")
- }
- this.action != this.attack && (this.action = this.attack);
- this.timer = -1
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b = 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = b > c ? b : c,
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("nazifire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit()));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- var b = this.baseX,
- c = this.baseY;
- if (a.map.getHitValue(b, c, this)) {
- var d =
- a.map.firstFree(b, c);
- d && (b = d.x, c = d.y)
- }
- a.map.addSprite(new sprites.Sprite(wolf3d.utils.ammo(b, c, 4, 26, "getammo")));
- a.setProperty("score", 700);
- a.ratio.kill++;
- this.process = this.action = null
- }
-});
-utils.overwrite(ai.Officer.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- var c = a.getDistance(this.x, this.y),
- d = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- var e = !1;
- this.timer > ai.tick && ("hit" != this.animations.current || "hit" == this.animations.current && !b.process) ? d && (b = abs(floor(a.x) - this.baseX), d = abs(floor(a.y) - this.baseY), b = b > d ? b : d, c = !b || 1 == b && c <= sqrt2 ? 300 : floor(ai.tick << 4 / b), utils.random(255) < c && this.animate("fire"), e = !0) : this.timer++;
- this.reset ? (this.direction = e ? this.selectDodgeDirection(a.x, a.y, a.map) : this.selectChaseDirection(a.x, a.y, a.map), this.calculateAngle()) : 0 == this.direction.x && 0 == this.direction.y && (this.direction = this.selectDodgeDirection(a.x,
- a.y, a.map), this.calculateAngle());
- this.timer > ai.tick && ("walk" == this.animations.current || "run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack)
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" ==
- this.animations.current && this.isVisible(a.x, a.y, a.map)) {
- var b = 128,
- b = abs(floor(a.x) - this.baseX),
- c = abs(floor(a.y) - this.baseY),
- c = b > c ? b : c,
- b = a.speed.move > a.min.speed.move ? -1 < a.fireBuffer.indexOf(this) ? 160 - 16 * c : 160 - 8 * c : -1 < a.fireBuffer.indexOf(this) ? 256 - 16 * c : 256 - 8 * c;
- audio.queueSound("nazifire", this.baseX, this.baseY);
- utils.random(255) < b && (damage = 2 > c ? utils.random(255) >> 2 : 4 > c ? utils.random(255) >> 3 : utils.random(255) >> 4, game.difficulty || (damage >>= 1), damage && (a.setProperty("health", -damage), 0 >= a.health && (a.deathCam =
- this), wolf3d.utils.flashHit()));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- var b = this.baseX,
- c = this.baseY;
- if (a.map.getHitValue(b, c, this)) {
- var d = a.map.firstFree(b, c);
- d && (b = d.x, c = d.y)
- }
- a.map.addSprite(new sprites.Sprite(wolf3d.utils.ammo(b, c, 4, 26, "getammo")));
- a.setProperty("score", 400);
- a.ratio.kill++;
- this.process = this.action = null
- }
-});
-utils.overwrite(ai.Dog.prototype = Object.create(ai.Entity.prototype), {
- attack: function (a) {
- if (0 > this.timer || 5 < this.timer || this.action == this.attack) {
- var b = this.animations[this.animations.current];
- if ("dying" == this.animations.current || "dead" == this.animations.current) this.animate(this.animations.current);
- else {
- this.lookingAt(a.x, a.y);
- a.getDistance(this.x, this.y);
- var c = this.isVisible(a.x, a.y, a.map);
- ("hit" == this.animations.current || "ready" == this.animations.current || "fire" == this.animations.current) && !b.process &&
- this.animate("run");
- var b = abs(floor(a.x) - this.baseX),
- d = abs(floor(a.y) - this.baseY);
- c && 2 > b && 2 > d && this.animate("fire");
- if (this.reset || 0 == this.direction.x && 0 == this.direction.y) this.direction = this.selectDodgeDirection(a.x, a.y, a.map), this.calculateAngle();
- ("run" == this.animations.current || "ready" == this.animations.current) && this.moveForward(a, "run");
- this.action != this.attack && this.action != this.fire && this.soundOnAttack && (audio.queueSound(this.soundOnAttack, this.baseX, this.baseY), scripts.process.push({
- x: this.baseX,
- y: this.baseY,
- action: "attack"
- }))
- }
- this.action != this.attack && (this.action = this.attack);
- this.timer = -1
- } else this.animate(this.animations.current)
- },
- fire: function (a) {
- if ("fire" == this.animations.current) {
- var b = this.isVisible(a.x, a.y, a.map),
- c = abs(floor(a.x) - this.baseX),
- d = abs(floor(a.y) - this.baseY);
- b && 2 > c && 2 > d && (audio.queueSound("dogattack", this.baseX, this.baseY), 180 > utils.random(255) && (b = utils.random(255) >> 4, game.difficulty || (b >>= 1), b && (a.setProperty("health", -b), 0 >= a.health && (a.deathCam = this), wolf3d.utils.flashHit())));
- this.action = this.attack
- } else this.action = this.attack, this.animate(this.animations.current)
- },
- dead: function (a) {
- a.setProperty("score", 200);
- a.ratio.kill++;
- this.process = this.action = null
- }
-});
-wolf3d = {
- graphics: {
- width: 640,
- height: 480
- },
- utils: {
- flash: function (a, b, c) {
- var d = document.getElementById("view");
- d.flashColor = [a, b, c];
- d.flashState = 0;
- d.flash = !0
- },
- clearFlash: function () {
- var a = document.getElementById("view");
- a.flashColor = null;
- a.flashState = 0;
- a.flash = !1
- },
- flashHit: function () {
- wolf3d.utils.flash(170, 0, 0)
- },
- flashAddon: function () {
- wolf3d.utils.flash(255, 255, 0)
- },
- addon: function (a, b, c, d, e, f, h) {
- return {
- x: a,
- y: b,
- texture: e,
- eval: utils.eval("wolf3d.utils.addon", arguments),
- listeners: {
- hit: function (a) {
- d && a.setProperty(c,
- d) && (h && h.call(a), f && audio.playSound(f, null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this))
- }
- }
- }
- },
- ammo: function (a, b, c, d, e) {
- return {
- x: a,
- y: b,
- texture: d,
- eval: utils.eval("wolf3d.utils.ammo", arguments),
- listeners: {
- hit: function (a) {
- if (c) {
- var b = !1;
- 0 == a.ammo && (b = !0);
- a.setProperty("ammo", c) && (e && audio.playSound(e, null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this), b && a.weapon(a.backupWeapon.id))
- }
- }
- }
- }
- },
- health: function (a, b, c, d, e) {
- return wolf3d.utils.addon(a, b, "health", c, d, e)
- },
- treasure: function (a, b,
- c, d, e) {
- return wolf3d.utils.addon(a, b, "score", c, d, e, function () {
- this.ratio.treasure++
- })
- },
- weapons: {
- knife: {
- id: 0,
- active: !1,
- resource: "knife",
- animation: {
- speed: 1,
- count: 5,
- step: resources.textureWidth,
- single: !0,
- callback: function (a) {
- this.activeWeapon.renderHand();
- if (a.index == a.count - 1) {
- audio.playSound("atkknife");
- for (a = 1; a < wolf3d.graphics.width / 8; a++) {
- var b = this.fireBuffer[wolf3d.graphics.width / 2 + a];
- if (b && b.damage && 2 > this.getDistance(b.x, b.y)) {
- b.damage(this, 25 + floor(a / 2));
- break
- }
- if ((b = this.fireBuffer[wolf3d.graphics.width /
- 2 - a]) && b.damage && 2 > this.getDistance(b.x, b.y)) {
- b.damage(this, 25 + floor(a / 2));
- break
- }
- }
- }
- }
- }
- },
- pistol: {
- id: 1,
- active: !0,
- ammo: !0,
- resource: "pistol",
- animation: {
- speed: 1,
- count: 5,
- step: resources.textureWidth,
- single: !0,
- callback: function (a) {
- this.activeWeapon.renderHand();
- if (a.index == a.count - 1) {
- this.setProperty("ammo", -1);
- audio.playSound("atkpistol");
- scripts.process.push({
- x: this.x,
- y: this.y,
- action: "attack"
- });
- for (var b = 1; b < wolf3d.graphics.width / 8; b++) {
- var c = wolf3d.graphics.width / 2 + b;
- if (this.fireBuffer[c] && this.fireBuffer[c].damage) {
- this.fireBuffer[c].damage(this,
- floor(b / 2));
- break
- }
- c = wolf3d.graphics.width / 2 - b;
- if (this.fireBuffer[c] && this.fireBuffer[c].damage) {
- this.fireBuffer[c].damage(this, floor(b / 2));
- break
- }
- }
- }
- 0 == this.ammo && 0 == a.index && this.weapon(0)
- }
- }
- },
- machineGun: {
- id: 2,
- active: !1,
- ammo: !0,
- resource: "machinegun",
- fire: function (a) {
- this.animation.stepForward();
- 3 == this.animation.index && 0 < a.ammo && (this.animation.index = 1);
- return 0 == a.ammo && 0 == this.animation.index
- },
- release: function () {
- this.animation.stepForward();
- return 0 == this.animation.index
- },
- animation: {
- speed: 2,
- count: 5,
- step: resources.textureWidth,
- single: !0,
- callback: function (a) {
- this.activeWeapon.renderHand();
- if (2 == a.index) {
- this.setProperty("ammo", -1);
- audio.playSound("atkmachinegun");
- scripts.process.push({
- x: this.x,
- y: this.y,
- action: "attack"
- });
- for (var b = 1; b < wolf3d.graphics.width / 8; b++) {
- var c = wolf3d.graphics.width / 2 + b;
- if (this.fireBuffer[c] && this.fireBuffer[c].damage) {
- this.fireBuffer[c].damage(this, floor(b / 2));
- break
- }
- c = wolf3d.graphics.width / 2 - b;
- if (this.fireBuffer[c] && this.fireBuffer[c].damage) {
- this.fireBuffer[c].damage(this,
- floor(b / 2));
- break
- }
- }
- }
- 0 == this.ammo && 0 == a.index && this.weapon(0)
- }
- }
- },
- gatling: {
- id: 3,
- active: !1,
- ammo: !0,
- resource: "gatling",
- fire: function (a) {
- this.animation.stepForward();
- 3 == this.animation.index && 0 < a.ammo && (this.animation.index = 1);
- return 0 == a.ammo && 0 == this.animation.index
- },
- release: function () {
- this.animation.stepForward();
- return 0 == this.animation.index
- },
- animation: {
- speed: 3,
- count: 5,
- step: resources.textureWidth,
- single: !0,
- callback: function (a) {
- this.activeWeapon.renderHand();
- if (2 == a.index || 3 == a.index) {
- this.setProperty("ammo", -1);
- audio.playSound("atkgatling", 0.5);
- scripts.process.push({
- x: this.x,
- y: this.y,
- action: "attack"
- });
- for (var b = 1; b < wolf3d.graphics.width / 8; b++) {
- var c = wolf3d.graphics.width / 2 + b;
- if (this.fireBuffer[c] && this.fireBuffer[c].damage) {
- this.fireBuffer[c].damage(this, floor(b / 2));
- break
- }
- c = wolf3d.graphics.width / 2 - b;
- if (this.fireBuffer[c] && this.fireBuffer[c].damage) {
- this.fireBuffer[c].damage(this, floor(b / 2));
- break
- }
- }
- }
- 0 == this.ammo && 0 == a.index && this.weapon(0)
- }
- }
- }
- }
- },
- goldKey: function (a, b) {
- return {
- x: a,
- y: b,
- texture: 20,
- eval: utils.eval("wolf3d.goldKey",
- arguments),
- listeners: {
- hit: function (a) {
- a.keys.has("gold") || (a.keys.add("gold"), audio.playSound("getkey", null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this))
- }
- }
- }
- },
- silverKey: function (a, b) {
- return {
- x: a,
- y: b,
- texture: 21,
- eval: utils.eval("wolf3d.silverKey", arguments),
- listeners: {
- hit: function (a) {
- a.keys.has("silver") || (a.keys.add("silver"), audio.playSound("getkey", null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this))
- }
- }
- }
- },
- ammo: function (a, b) {
- return wolf3d.utils.ammo(a, b, 8, 26, "getammo")
- },
- ammoBox: function (a,
- b) {
- return {
- x: a,
- y: b,
- texture: 49,
- eval: utils.eval("wolf3d.ammoBox", arguments),
- resource: "sod-sprites",
- listeners: {
- hit: function (a) {
- var b = !1;
- 0 == a.ammo && (b = !0);
- a.setProperty("ammo", 25) && (audio.playSound("getammobox", null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this), b && a.weapon(a.backupWeapon.id))
- }
- }
- }
- },
- food: function (a, b) {
- return wolf3d.utils.health(a, b, 10, 24, "health1")
- },
- dogfood: function (a, b) {
- return wolf3d.utils.health(a, b, 4, 6, "health1")
- },
- firstAidKit: function (a, b) {
- return wolf3d.utils.health(a, b, 25, 25,
- "health2")
- },
- cross: function (a, b) {
- return wolf3d.utils.treasure(a, b, 100, 29, "bonus1")
- },
- chalice: function (a, b) {
- return wolf3d.utils.treasure(a, b, 500, 30, "bonus2")
- },
- chest: function (a, b) {
- return wolf3d.utils.treasure(a, b, 1E3, 31, "bonus3")
- },
- crown: function (a, b) {
- return wolf3d.utils.treasure(a, b, 5E3, 32, "bonus4")
- },
- extraLife: function (a, b) {
- return {
- x: a,
- y: b,
- texture: 33,
- eval: utils.eval("wolf3d.extraLife", arguments),
- listeners: {
- hit: function (a) {
- a.setProperty("lives", 1) && (a.setProperty("health", 100), audio.playSound("bonus1up",
- null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this))
- }
- }
- }
- },
- bloodBones: function (a, b) {
- return {
- x: a,
- y: b,
- texture: 34,
- eval: utils.eval("wolf3d.bloodBones", arguments),
- listeners: {
- hit: function (a) {
- 10 > a.health && a.setProperty("health", 1) && (audio.playSound("slurpie", null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this))
- }
- }
- }
- },
- bloodPool: function (a, b) {
- return {
- x: a,
- y: b,
- texture: 38,
- eval: utils.eval("wolf3d.bloodPool", arguments),
- listeners: {
- hit: function (a) {
- 10 > a.health && a.setProperty("health", 1) && (audio.playSound("slurpie",
- null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this))
- }
- }
- }
- },
- spearOfDestiny: function (a, b) {
- return {
- x: a,
- y: b,
- texture: 51,
- eval: utils.eval("wolf3d.spearOfDestiny", arguments),
- listeners: {
- hit: function () {
- audio.stopMusic();
- doors.process = [];
- secret.process = [];
- animation.process = [];
- ai.process = [];
- audio.process = [];
- game.mapName = "e7m21";
- maps.request(game.mapName, function () {
- game.levelConfig = wolf3d.maps[game.mapName];
- game.level = new maps.Map(utils.clone(game.levelConfig), game.difficulty);
- game.client.map = game.level;
- game.client.speed = {
- rotation: 0.1,
- move: 0.2
- };
- game.client.floor = game.levelConfig.episodeFloor;
- game.client.textValue(document.getElementById("floor"), game.client.floor);
- game.client.time = null;
- game.client.render();
- game.client.max.speed = {
- rotation: 0.15,
- move: 0.35
- };
- game.ctrl.activeKey = {};
- game.ctrl.inactiveKey = {};
- wolf3d.utils.clearFlash();
- game.engine.map = game.level;
- game.engine.backgroundRender();
- game.engine.render()
- })
- }
- }
- }
- },
- deadGuard: function (a, b) {
- return {
- type: ai.Soldier,
- x: a,
- y: b,
- eval: utils.eval("wolf3d.deadGuard",
- arguments),
- animations: {
- current: "dead"
- }
- }
- },
- guardStanding: function (a, b, c, d) {
- return {
- type: ai.Soldier,
- x: a,
- y: b,
- angle: c,
- level: d || 1,
- action: "ready",
- eval: utils.eval("wolf3d.guardStanding", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- guardMoving: function (a, b, c, d) {
- return {
- type: ai.Soldier,
- x: a,
- y: b,
- angle: c,
- level: d || 1,
- action: "moving",
- eval: utils.eval("wolf3d.guardMoving", arguments),
- animations: {
- current: "run"
- }
- }
- },
- ssStanding: function (a, b, c, d) {
- return {
- type: ai.SS,
- x: a,
- y: b,
- angle: c,
- level: d || 1,
- action: "ready",
- eval: utils.eval("wolf3d.ssStanding",
- arguments),
- animations: {
- current: "ready"
- }
- }
- },
- ssMoving: function (a, b, c, d) {
- return {
- type: ai.SS,
- x: a,
- y: b,
- angle: c,
- level: d || 1,
- action: "moving",
- eval: utils.eval("wolf3d.ssMoving", arguments),
- animations: {
- current: "run"
- }
- }
- },
- officerStanding: function (a, b, c, d) {
- return {
- type: ai.Officer,
- x: a,
- y: b,
- angle: c,
- level: d || 1,
- action: "ready",
- eval: utils.eval("wolf3d.officerStanding", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- officerMoving: function (a, b, c, d) {
- return {
- type: ai.Officer,
- x: a,
- y: b,
- angle: c,
- level: d || 1,
- action: "moving",
- eval: utils.eval("wolf3d.officerMoving",
- arguments),
- animations: {
- current: "run"
- }
- }
- },
- mutantStanding: function (a, b, c, d) {
- return {
- type: ai.Mutant,
- x: a,
- y: b,
- angle: c,
- level: d || 1,
- action: "ready",
- eval: utils.eval("wolf3d.mutantStanding", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- mutantMoving: function (a, b, c, d) {
- return {
- type: ai.Mutant,
- x: a,
- y: b,
- angle: c,
- level: d || 1,
- action: "moving",
- eval: utils.eval("wolf3d.mutantMoving", arguments),
- animations: {
- current: "run"
- }
- }
- },
- dog: function (a, b, c, d) {
- return {
- type: ai.Dog,
- x: a,
- y: b,
- angle: c,
- level: d || 1,
- action: "moving",
- eval: utils.eval("wolf3d.dog",
- arguments),
- animations: {
- current: "run"
- }
- }
- },
- transGrosse: function (a, b) {
- return {
- type: ai.TransGrosse,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.transGrosse", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- hans: function (a, b) {
- return {
- type: ai.Hans,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.hans", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- gretel: function (a, b) {
- return {
- type: ai.Gretel,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.gretel", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- drschabbs: function (a,
- b) {
- return {
- type: ai.DrSchabbs,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.drschabbs", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- ghost: function (a, b) {
- return {
- type: ai.Ghost,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.ghost", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- hitler: function (a, b) {
- return {
- type: ai.MechHitler,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.hitler", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- giftmacher: function (a, b) {
- return {
- type: ai.Giftmacher,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.giftmacher", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- fettgesicht: function (a, b) {
- return {
- type: ai.Fettgesicht,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.fettgesicht", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- barnacleWilhelm: function (a, b) {
- return {
- type: ai.BarnacleWilhelm,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.barnacleWilhelm", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- uberMutant: function (a, b) {
- return {
- type: ai.UberMutant,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.uberMutant",
- arguments),
- animations: {
- current: "ready"
- }
- }
- },
- deathKnight: function (a, b) {
- return {
- type: ai.DeathKnight,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.deathKnight", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- spectre: function (a, b) {
- return {
- type: ai.Spectre,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.spectre", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- angelOfDeath: function (a, b) {
- return {
- type: ai.AngelOfDeath,
- x: a,
- y: b,
- level: 0,
- action: "ready",
- eval: utils.eval("wolf3d.angelOfDeath", arguments),
- animations: {
- current: "ready"
- }
- }
- },
- pacman: function (a, b, c) {
- return {
- type: ai.Pacman,
- x: a,
- y: b,
- level: 0,
- pacmanType: c,
- eval: utils.eval("wolf3d.pacman", arguments),
- animations: {
- current: "run"
- }
- }
- },
- machineGun: function (a, b) {
- return {
- x: a,
- y: b,
- texture: 27,
- eval: utils.eval("wolf3d.machineGun", arguments),
- listeners: {
- hit: function (a) {
- if (a.hasWeapon(wolf3d.utils.weapons.machineGun.id)) a.setProperty("ammo", 6) && (audio.playSound("getmachine", null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this));
- else {
- var b = new player.Weapon(wolf3d.utils.weapons.machineGun);
- a.setProperty("ammo",
- 6);
- a.weapons.push(b);
- b = a.weapons[a.weapons.length - 1];
- b.animation && b.animation.callback && (b.animation.callback = utils.bind(a, b.animation.callback));
- 2 > a.getActiveWeapon()
- .id && a.weapon(2);
- audio.playSound("getmachine", null, !0);
- wolf3d.utils.flashAddon();
- a.map.removeSprite(this)
- }
- }
- }
- }
- },
- gatling: function (a, b) {
- return {
- x: a,
- y: b,
- texture: 28,
- eval: utils.eval("wolf3d.gatling", arguments),
- listeners: {
- hit: function (a) {
- if (a.hasWeapon(wolf3d.utils.weapons.gatling.id)) a.setProperty("ammo", 6) && (audio.playSound("getgatling", null, !0), wolf3d.utils.flashAddon(), a.map.removeSprite(this));
- else {
- var b = new player.Weapon(wolf3d.utils.weapons.gatling);
- a.setProperty("ammo", 6);
- a.weapons.push(b);
- b = a.weapons[a.weapons.length - 1];
- b.animation && b.animation.callback && (b.animation.callback = utils.bind(a, b.animation.callback));
- a.face.setSmile(1E3);
- a.weapon(3);
- audio.playSound("getgatling", null, !0);
- wolf3d.utils.flashAddon();
- a.map.removeSprite(this)
- }
- }
- }
- }
- },
- maps: {},
- fonts: {}
-};
-wolf3d.fonts.small = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, {
- width: 5,
- data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- }, {
- width: 3,
- data: [0, 3, 3, 3, 3, 3, 0, 3, 0, 0]
- }, {
- width: 6,
- data: [0, 27, 27, 27, 0, 0, 0, 0, 0, 0]
- }, {
- width: 8,
- data: [0, 54, 54, 127, 54, 127, 54, 54, 0, 0]
- }, {
- width: 7,
- data: [0, 12, 62, 3, 30, 48, 31, 12, 0, 0]
- }, {
- width: 8,
- data: [0, 0, 99, 51, 24, 12, 102, 99, 0, 0]
- }, {
- width: 8,
- data: [0, 28, 54, 28, 110, 59, 51, 110, 0, 0]
- }, {
- width: 4,
- data: [0, 6, 6, 3, 0, 0, 0, 0, 0,
-0]
- }, {
- width: 5,
- data: [0, 12, 6, 3, 3, 3, 6, 12, 0, 0]
- }, {
- width: 5,
- data: [0, 3, 6, 12, 12, 12, 6, 3, 0, 0]
- }, {
- width: 9,
- data: [0, 0, 102, 60, 255, 60, 102, 0, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 12, 12, 63, 12, 12, 0, 0, 0]
- }, {
- width: 5,
- data: [0, 0, 0, 0, 0, 0, 12, 12, 6, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 0, 63, 0, 0, 0, 0, 0]
- }, {
- width: 3,
- data: [0, 0, 0, 0, 0, 0, 3, 3, 0, 0]
- }, {
- width: 8,
- data: [0, 96, 48, 24, 12, 6, 3, 1, 0, 0]
- }, {
- width: 8,
- data: [0, 62, 99, 115, 123, 111, 103, 62, 0, 0]
- }, {
- width: 5,
- data: [0, 6, 7, 6, 6, 6, 6, 15, 0, 0]
- }, {
- width: 7,
- data: [0, 31, 48, 48, 28, 6, 3, 63, 0, 0]
- }, {
- width: 7,
- data: [0, 31, 48, 48, 28, 48, 48, 31, 0, 0]
- }, {
- width: 8,
- data: [0, 56, 60, 54, 51, 127, 48, 48, 0, 0]
- }, {
- width: 7,
- data: [0, 63, 3, 31, 48, 48, 48, 31, 0, 0]
- }, {
- width: 7,
- data: [0, 60, 6, 3, 31, 51, 51, 30, 0, 0]
- }, {
- width: 7,
- data: [0, 63, 48, 24, 12, 6, 3, 3, 0, 0]
- }, {
- width: 7,
- data: [0, 30, 51, 51, 30, 51, 51, 30, 0, 0]
- }, {
- width: 7,
- data: [0, 30, 51, 51, 62, 48, 48, 30, 0, 0]
- }, {
- width: 3,
- data: [0, 0, 3, 3, 0, 0, 3, 3, 0, 0]
- }, {
- width: 4,
- data: [0, 0, 6, 6, 0, 0, 6, 6, 3, 0]
- }, {
- width: 6,
- data: [0, 24, 12, 6, 3, 6, 12, 24, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 63, 0, 0, 63, 0, 0, 0]
- }, {
- width: 7,
- data: [0, 6, 12, 24, 48, 24, 12, 6, 0, 0]
- }, {
- width: 7,
- data: [0, 31, 48, 48, 28, 12, 0, 12, 0, 0]
- }, {
- width: 8,
- data: [0,
-62, 99, 123, 123, 123, 3, 30, 0, 0]
- }, {
- width: 7,
- data: [0, 12, 30, 51, 51, 63, 51, 51, 0, 0]
- }, {
- width: 7,
- data: [0, 31, 51, 51, 31, 51, 51, 31, 0, 0]
- }, {
- width: 7,
- data: [0, 62, 3, 3, 3, 3, 3, 62, 0, 0]
- }, {
- width: 7,
- data: [0, 31, 51, 51, 51, 51, 51, 31, 0, 0]
- }, {
- width: 7,
- data: [0, 63, 3, 3, 31, 3, 3, 63, 0, 0]
- }, {
- width: 7,
- data: [0, 63, 3, 3, 31, 3, 3, 3, 0, 0]
- }, {
- width: 7,
- data: [0, 62, 3, 3, 3, 59, 51, 62, 0, 0]
- }, {
- width: 7,
- data: [0, 51, 51, 51, 63, 51, 51, 51, 0, 0]
- }, {
- width: 5,
- data: [0, 15, 6, 6, 6, 6, 6, 15, 0, 0]
- }, {
- width: 7,
- data: [0, 48, 48, 48, 48, 48, 48, 31, 0, 0]
- }, {
- width: 8,
- data: [0, 99, 51, 27, 15, 27, 51, 99, 0, 0]
- }, {
- width: 7,
- data: [0,
-3, 3, 3, 3, 3, 3, 63, 0, 0]
- }, {
- width: 8,
- data: [0, 99, 119, 127, 107, 99, 99, 99, 0, 0]
- }, {
- width: 8,
- data: [0, 99, 103, 111, 123, 115, 99, 99, 0, 0]
- }, {
- width: 7,
- data: [0, 30, 51, 51, 51, 51, 51, 30, 0, 0]
- }, {
- width: 7,
- data: [0, 31, 51, 51, 31, 3, 3, 3, 0, 0]
- }, {
- width: 7,
- data: [0, 30, 51, 51, 51, 51, 27, 54, 0, 0]
- }, {
- width: 7,
- data: [0, 31, 51, 51, 31, 15, 27, 51, 0, 0]
- }, {
- width: 7,
- data: [0, 62, 3, 3, 30, 48, 48, 31, 0, 0]
- }, {
- width: 7,
- data: [0, 63, 12, 12, 12, 12, 12, 12, 0, 0]
- }, {
- width: 7,
- data: [0, 51, 51, 51, 51, 51, 51, 62, 0, 0]
- }, {
- width: 7,
- data: [0, 51, 51, 51, 51, 51, 30, 12, 0, 0]
- }, {
- width: 8,
- data: [0, 99, 99, 99, 107, 127, 119,
-99, 0, 0]
- }, {
- width: 8,
- data: [0, 99, 99, 54, 28, 54, 99, 99, 0, 0]
- }, {
- width: 7,
- data: [0, 51, 51, 51, 30, 12, 12, 12, 0, 0]
- }, {
- width: 8,
- data: [0, 127, 48, 24, 12, 6, 3, 127, 0, 0]
- }, {
- width: 5,
- data: [0, 15, 3, 3, 3, 3, 3, 15, 0, 0]
- }, {
- width: 8,
- data: [0, 3, 6, 12, 24, 48, 96, 0, 0, 0]
- }, {
- width: 5,
- data: [0, 15, 12, 12, 12, 12, 12, 15, 0, 0]
- }, {
- width: 7,
- data: [0, 12, 30, 51, 33, 0, 0, 0, 0, 0]
- }, {
- width: 9,
- data: [0, 0, 0, 0, 0, 0, 0, 0, 255, 0]
- }, {
- width: 4,
- data: [0, 3, 3, 6, 0, 0, 0, 0, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 30, 48, 62, 51, 62, 0, 0]
- }, {
- width: 7,
- data: [0, 3, 3, 31, 51, 51, 51, 31, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 62, 3, 3, 3, 62, 0,
-0]
- }, {
- width: 7,
- data: [0, 48, 48, 62, 51, 51, 51, 62, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 30, 51, 63, 3, 62, 0, 0]
- }, {
- width: 7,
- data: [0, 60, 6, 6, 31, 6, 6, 6, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 62, 51, 51, 62, 48, 31, 0]
- }, {
- width: 7,
- data: [0, 3, 3, 31, 51, 51, 51, 51, 0, 0]
- }, {
- width: 3,
- data: [0, 3, 0, 3, 3, 3, 3, 3, 0, 0]
- }, {
- width: 6,
- data: [0, 24, 0, 24, 24, 24, 24, 24, 15, 0]
- }, {
- width: 7,
- data: [0, 3, 3, 51, 27, 15, 27, 51, 0, 0]
- }, {
- width: 3,
- data: [0, 3, 3, 3, 3, 3, 3, 3, 0, 0]
- }, {
- width: 11,
- data: [0, 0, 0, 463, 819, 819, 819, 819, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 31, 51, 51, 51, 51, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 30, 51, 51, 51, 30, 0,
-0]
- }, {
- width: 7,
- data: [0, 0, 0, 31, 51, 51, 51, 31, 3, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 62, 51, 51, 51, 62, 48, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 59, 7, 3, 3, 3, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 62, 3, 30, 48, 31, 0, 0]
- }, {
- width: 7,
- data: [0, 6, 6, 63, 6, 6, 6, 60, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 51, 51, 51, 51, 62, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 51, 51, 51, 30, 12, 0, 0]
- }, {
- width: 11,
- data: [0, 0, 0, 819, 819, 819, 819, 974, 0, 0]
- }, {
- width: 8,
- data: [0, 0, 0, 99, 54, 28, 54, 99, 0, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 51, 51, 51, 62, 48, 31, 0]
- }, {
- width: 7,
- data: [0, 0, 0, 63, 24, 12, 6, 63, 0, 0]
- }, {
- width: 7,
- data: [0, 56, 12, 12, 7, 12, 12, 56,
-0, 0]
- }, {
- width: 3,
- data: [0, 3, 3, 3, 0, 3, 3, 3, 0, 0]
- }, {
- width: 7,
- data: [0, 7, 12, 12, 56, 12, 12, 7, 0, 0]
- }, {
- width: 8,
- data: [0, 110, 59, 0, 0, 0, 0, 0, 0, 0]
- }, {
- width: 8,
- data: [0, 0, 8, 28, 54, 99, 99, 127, 0, 0]
- }, {
- width: 2,
- data: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
- }, {
- width: 8,
- data: [0, 62, 99, 115, 123, 111, 103, 62, 0, 0]
- }, {
- width: 8,
- data: [0, 24, 28, 24, 24, 24, 24, 60, 0, 0]
- }, {
- width: 8,
- data: [0, 31, 48, 48, 28, 6, 3, 63, 0, 0]
- }, {
- width: 8,
- data: [0, 31, 48, 48, 28, 48, 48, 31, 0, 0]
- }, {
- width: 8,
- data: [0, 56, 60, 54, 51, 127, 48, 48, 0, 0]
- }, {
- width: 8,
- data: [0, 63, 3, 31, 48, 48, 48, 31, 0, 0]
- }, {
- width: 8,
- data: [0, 60, 6, 3, 31, 51,
-51, 30, 0, 0]
- }, {
- width: 8,
- data: [0, 63, 48, 24, 12, 6, 3, 3, 0, 0]
- }, {
- width: 8,
- data: [0, 30, 51, 51, 30, 51, 51, 30, 0, 0]
- }, {
- width: 8,
- data: [0, 30, 51, 51, 62, 48, 48, 30, 0, 0]
- }, {
- width: 11,
- data: [0, 0, 0, 0, 1023, 0, 0, 0, 0, 0]
- }, {
- width: 11,
- data: [0, 0, 120, 390, 561, 521, 561, 390, 120, 0]
- },
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
-wolf3d.fonts.large = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, {
- width: 8,
- data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- }, {
- width: 4,
- data: [0, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 0, 0]
- }, {
- width: 8,
- data: [0, 119, 119, 51, 17, 0, 0, 0, 0, 0, 0, 0, 0]
- }, {
- width: 10,
- data: [0, 238, 238, 511, 511, 238, 238, 511, 511, 238, 238, 0, 0]
- }, {
- width: 10,
- data: [0, 56, 510, 511, 7, 255, 510, 448, 511, 255, 56, 0, 0]
- }, {
- width: 12,
- data: [0, 1799, 1927, 960, 480, 240, 120, 60, 30, 1807, 1799, 0, 0]
- }, {
- width: 13,
- data: [0, 124, 254, 238, 254, 124, 3838, 2030, 1006, 2046, 3708, 0, 0]
- }, {
- width: 4,
- data: [0, 7, 7, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0]
- }, {
- width: 6,
- data: [0, 28, 14, 7, 7, 7, 7, 7, 7, 14, 28, 0, 0]
- }, {
- width: 6,
- data: [0, 7, 14, 28, 28, 28, 28, 28, 28, 14, 7, 0, 0]
- }, {
- width: 12,
- data: [0, 1651, 1911, 2047, 1022, 508, 508, 1022, 2047, 1911, 1651, 0, 0]
- }, {
- width: 10,
- data: [0, 56, 56, 56, 56, 511, 511, 56, 56, 56, 56, 0, 0]
- }, {
- width: 5,
- data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 6, 2]
- }, {
- width: 8,
- data: [0, 0, 0, 0, 0, 127, 127, 0, 0, 0, 0, 0, 0]
- }, {
- width: 4,
- data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0]
- }, {
- width: 12,
- data: [0, 1792, 1920, 960, 480, 240,
-120, 60, 30, 15, 7, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 487, 503, 479, 463, 455, 511, 254, 0, 0]
- }, {
- width: 6,
- data: [0, 28, 30, 31, 31, 28, 28, 28, 28, 28, 28, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 448, 510, 255, 7, 7, 511, 511, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 448, 240, 240, 448, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 455, 455, 455, 455, 511, 511, 448, 448, 448, 448, 0, 0]
- }, {
- width: 10,
- data: [0, 511, 511, 7, 7, 255, 511, 448, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 7, 255, 511, 455, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 511, 511, 455, 224, 112, 56, 28, 28, 28, 28,
-0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 455, 254, 254, 455, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 455, 511, 510, 448, 455, 511, 254, 0, 0]
- }, {
- width: 4,
- data: [0, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 0, 0]
- }, {
- width: 4,
- data: [0, 0, 0, 7, 7, 0, 0, 7, 7, 3, 1, 0, 0]
- }, {
- width: 8,
- data: [0, 112, 56, 28, 14, 7, 7, 14, 28, 56, 112, 0, 0]
- }, {
- width: 8,
- data: [0, 0, 0, 127, 127, 0, 0, 127, 127, 0, 0, 0, 0]
- }, {
- width: 8,
- data: [0, 7, 14, 28, 56, 112, 112, 56, 28, 14, 7, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 448, 496, 248, 56, 0, 56, 56, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 455, 503, 247, 7, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 455, 511, 511, 455, 455, 455, 455, 0, 0]
- }, {
- width: 10,
- data: [0, 255, 511, 455, 455, 255, 255, 455, 455, 511, 255, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 7, 7, 7, 7, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 255, 511, 455, 455, 455, 455, 455, 455, 511, 255, 0, 0]
- }, {
- width: 10,
- data: [0, 511, 511, 7, 7, 127, 127, 7, 7, 511, 511, 0, 0]
- }, {
- width: 10,
- data: [0, 511, 511, 7, 7, 127, 127, 7, 7, 7, 7, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 7, 487, 487, 455, 455, 511, 510, 0, 0]
- }, {
- width: 10,
- data: [0, 455, 455, 455, 455, 511, 511, 455, 455, 455, 455, 0, 0]
- }, {
- width: 4,
- data: [0, 7, 7, 7, 7, 7, 7,
-7, 7, 7, 7, 0, 0]
- }, {
- width: 10,
- data: [0, 448, 448, 448, 448, 448, 448, 448, 455, 511, 254, 0, 0]
- }, {
- width: 11,
- data: [0, 903, 455, 231, 119, 63, 63, 119, 231, 455, 903, 0, 0]
- }, {
- width: 10,
- data: [0, 7, 7, 7, 7, 7, 7, 7, 7, 511, 511, 0, 0]
- }, {
- width: 12,
- data: [0, 1799, 1935, 2015, 2047, 1911, 1831, 1799, 1799, 1799, 1799, 0, 0]
- }, {
- width: 10,
- data: [0, 455, 463, 479, 511, 511, 503, 487, 455, 455, 455, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 455, 455, 455, 455, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 255, 511, 455, 455, 511, 255, 7, 7, 7, 7, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 455, 455, 455, 455, 455, 511, 254,
-56, 112]
- }, {
- width: 10,
- data: [0, 255, 511, 455, 455, 511, 255, 63, 127, 247, 487, 0, 0]
- }, {
- width: 10,
- data: [0, 254, 511, 455, 7, 255, 510, 448, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 511, 511, 56, 56, 56, 56, 56, 56, 56, 56, 0, 0]
- }, {
- width: 10,
- data: [0, 455, 455, 455, 455, 455, 455, 455, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 455, 455, 455, 455, 455, 495, 254, 124, 56, 16, 0, 0]
- }, {
- width: 12,
- data: [0, 1799, 1799, 1799, 1799, 1831, 1911, 2047, 2015, 1935, 1799, 0, 0]
- }, {
- width: 10,
- data: [0, 455, 455, 455, 254, 124, 254, 511, 455, 455, 455, 0, 0]
- }, {
- width: 10,
- data: [0, 455, 455, 455, 455, 511, 254, 56, 56,
-56, 56, 0, 0]
- }, {
- width: 10,
- data: [0, 511, 511, 224, 112, 56, 28, 14, 7, 511, 511, 0, 0]
- }, {
- width: 6,
- data: [0, 31, 31, 7, 7, 7, 7, 7, 7, 31, 31, 0, 0]
- }, {
- width: 12,
- data: [0, 7, 15, 30, 60, 120, 240, 480, 960, 1920, 1792, 0, 0]
- }, {
- width: 6,
- data: [0, 31, 31, 28, 28, 28, 28, 28, 28, 31, 31, 0, 0]
- }, {
- width: 12,
- data: [0, 112, 248, 508, 990, 1935, 0, 0, 0, 0, 0, 0, 0]
- }, {
- width: 8,
- data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127]
- }, {
- width: 5,
- data: [0, 15, 15, 14, 12, 8, 0, 0, 0, 0, 0, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 254, 510, 448, 510, 511, 455, 511, 510, 0, 0]
- }, {
- width: 10,
- data: [0, 7, 7, 255, 511, 455, 455, 455, 455, 511, 255, 0, 0]
- },
- {
- width: 10,
- data: [0, 0, 0, 254, 511, 455, 7, 7, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 448, 448, 510, 511, 455, 455, 455, 455, 511, 510, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 254, 511, 455, 511, 511, 7, 511, 510, 0, 0]
- }, {
- width: 8,
- data: [0, 124, 126, 14, 14, 63, 63, 14, 14, 14, 14, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 510, 511, 455, 455, 455, 511, 510, 448, 511, 255]
- }, {
- width: 10,
- data: [0, 7, 7, 255, 511, 455, 455, 455, 455, 455, 455, 0, 0]
- }, {
- width: 5,
- data: [0, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 0, 0]
- }, {
- width: 6,
- data: [0, 28, 28, 0, 28, 28, 28, 28, 28, 28, 28, 31, 15]
- }, {
- width: 10,
- data: [0, 7, 7, 455, 487, 247, 127,
-127, 247, 487, 455, 0, 0]
- }, {
- width: 4,
- data: [0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0]
- }, {
- width: 12,
- data: [0, 0, 0, 991, 2047, 2047, 1911, 1911, 1911, 1911, 1911, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 255, 511, 455, 455, 455, 455, 455, 455, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 254, 511, 455, 455, 455, 455, 511, 254, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 255, 511, 455, 455, 455, 455, 511, 255, 7, 7]
- }, {
- width: 10,
- data: [0, 0, 0, 510, 511, 455, 455, 455, 455, 511, 510, 448, 448]
- }, {
- width: 10,
- data: [0, 0, 0, 255, 511, 455, 7, 7, 7, 7, 7, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 510, 511, 7, 255, 510, 448, 511, 255, 0, 0]
- }, {
- width: 10,
- data: [0,
-56, 56, 511, 511, 56, 56, 56, 56, 56, 56, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 455, 455, 455, 455, 455, 455, 511, 510, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 455, 455, 455, 455, 238, 124, 56, 16, 0, 0]
- }, {
- width: 12,
- data: [0, 0, 0, 1911, 1911, 1911, 1911, 1911, 1911, 2047, 2046, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 455, 455, 238, 124, 124, 238, 455, 455, 0, 0]
- }, {
- width: 10,
- data: [0, 0, 0, 455, 455, 455, 455, 455, 511, 510, 448, 511, 255]
- }, {
- width: 10,
- data: [0, 0, 0, 511, 511, 240, 120, 60, 30, 511, 511, 0, 0]
- }, {
- width: 8,
- data: [0, 0, 120, 28, 28, 28, 15, 15, 28, 28, 28, 120, 0]
- }, {
- width: 4,
- data: [0, 0, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7]
- },
- {
- width: 8,
- data: [0, 0, 15, 28, 28, 28, 120, 120, 28, 28, 28, 15, 0]
- }, {
- width: 14,
- data: [0, 0, 975, 2031, 4094, 7932, 7800, 0, 0, 0, 0, 0, 0]
- }, {
- width: 16,
- data: [0, 0, 448, 992, 1904, 3640, 7196, 14350, 28679, 32767, 32767, 0, 0]
- }, {
- width: 3,
- data: [0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0]
- },
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
-wolf3d.fonts.bitmap = {
- image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABNAAAAAgCAYAAADT74XvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABfZSURBVHhe7Z3LcSS2DkUVmsN4YTgIh+EwnJ9eqTRcCCX0uRcAu+UxFrOwSeJ78SGa6n57++OP9/23NlgMLAYWA4uBxcBiYDGwGFgMLAYWA4uBxcBiYDGwGFgMJBhYw2xwLAYWA4uBxcBiYDGwGFgMLAYWA4uBxcBiYDGwGFgMLAYeYCA1zj//vL8p/7IXbP/73/vbx7+///767/z/eI54uS/liN5ZJ/kzOudctp7p6epBfEiPKr8//3x/+/gX/Xfoxf9/9lf5ZecO3WjnzC5HrlvyRL8Szlx7ED13/dijiscYx64fqnxdPdX9rj+O/H/99f728U/V/+yv6n/kfJX9XTu5+499KL+pdFX/x3xJ56KcqjzRfypuzr6Y94gv6eHyP/td/N6SQ61zr+bf9fuz/O/GQYafaVyqfia+bn9JfV7Gz8Ub6afSe5Z+ZGdVXtL78Mn6PfLPlBxTdCgPqPGn5t+q3PHcVP985K76TdW7GwfUf0zZI96nVP+rfYDr/+r+rr2zPODKQ34jel09pvlX6XXPuee7dqM6QH6j81V9qnx3gJZMF19VAKqNGjU67voO0L7/0+YdoH0dImUJqzu4UxOau8+Ngx2g3fkT/x2gfdo1w6/aOLsNg9q4n33uRaYaj+o5il+VjmsHtXGji7Pqr9v+r+rv2sH1h0uf8KDamy761b7Mpava6/ZF5pZdie4O0L7WBDX/qrihuJ8aGL3q/jRlh0Nnyh47QPv+3lDNz9VzP3WAV9Wne849f7vuqPFLdcSl4+4//K8N0E7iiYKd/38EoIIZ95PhuoCgxE8FKOqrFsBug6bahfZlflP1nnr5RbhQ/TwlT8SFyp/sPZWQsjir4m8qDqqDNDWhuftUf9DLLzUeqvq/ir/7cli1Z4ZziiOVfhUH6jn3JRrFD+kd5SI7qHqouK3WsdtyvNoOxH/a7+pAybV7FQeqPC6+XbyTH6bqKvHp2j3SJ/xk/cy0HKR31b8ZXer3aBDp6t/ttykOyI9u/FEfV9Wfzrn9y7P17sa5i2PVHtS/xXst+YHwpp7v7uvaO9PDlcv1G9WXV/Ov6tM9556f8n/MZ27+p/qk+rOr/w7Qwgu0VxeAKkAJUOr6DtAevzxzGx/V7m4gU4JQC30m31QcVOUg/arrqj+oAVJxUNX/Vfx3gPb9q7AdoH1+JQPFjxuXbt776fwpb7r60sWpSk/NXzS4mPaHqi/xrfZRdNG6TZfwswM07QU85aEdoD1+AX3s5/YvhF8379DgsBuPbv5U7UH92w7QvvYSFK9ZXnbP/dQBnotDN46orql27Mbb4bMDtF/fkZYVIvUFGg1sqi+IbgGiWnhvN3wu/bif/OAGrFv4VHkiHmhyXX3BeOTJGgI14bl+Idy69Kr7q3Jk/nD90L24VfU+5ygeIr6pcXT1J/5uPKr81bxdtW/8LjmKI3dwRbilCzqdV/Wu0qHvfCT+xPen6E9yZLgg/QlP1EhSg0j8yf50/nfxP9nxVfmd/KPiclo/qh9qH3xLP8Kty/fsp/7NxYkrR3Ug2bXHrXuEq7+aL9X+gfjf0rsbjzTwinqRPah/o/tRJo9qv6493PpLflfzKtFR9XfzBsUB9aEkt6o/yUF0su9qPueyAXDVXnRPzuhGe9K9g+JFxXukQ3Ea7Rb5vPwFGimgNg6qAamBpkCoBjAV3Kr8FFAqX/JD5EN2cgEf5czk2QEavwJRff5oH/k3O7sDtO9fMFHDpeI/y1/kL5U/FbIutnaA9okPN35UuxMOqF7Q+WfJ4Tbw1fpJ+lC/4PIlfjtAu1vfCN8UH9X+j+juAE370TKyo+vfHaB5L9Eof5H9q/FDfN08HHG0A7Tv+xK1/pHfKW67g6Pb/HeA9rguU/2K/tkBGrxAoz8Fok+e1AtfNSHHgCZ5KAFQALuDQKKnJja18BA/98UNJRySK5MnwwX5j/jF9SwhRD+S3Vy+0/Rc/mRHigMaxKryuPieHvxkfqDBMBWSqv6qPQg/lIem7UiNbbdxIvqZPap1g/zXjR+iT+vkf4pfOk/4Uf1JcpCetE56TPN/td+n7E52I7tX42raH8+Wg+yW6Uf1Qo23Kf8/y7+qvabzd/TD+e+pvq6bB8guhAc6X8Uhxeer9Z7qAygep/qwapxVz1VxofKbok90Mnno5dWhm/Xv5Hfq+0luih8Xv5kdSI8jB/2IV3X+ovoh+qN631LrvDu/iPJk/r/2Am0HaF8/UaPC5waQmsinEqALwB2gPX5pogb+tJ8JD91GaAdon98V5Tb+bvxX8UN5aAdoj19C3I4fok/r3UaOzhN+Xn2RfxX/bt4kv6rr5D9q5Om8Koebz0iuKt9nyUF2qw4u1Hh7Fe6rfFV7uXVUpRvl3gHa476F4rOb/8hvz4oDdQBB9iB9pvKZSofkIX2IzxR9orMDtMf3ShW/O0DT8h0NXq8N0Cjg6KLtJkzilxX68/9JHkowFPjVia7aoKj6Z/uqF2cK2KpcWUHOcDH1p4Pqy7NbfiEcVe2pnuvGQWY/+gRHlS/uI3mrfNU/IY7yTOGwigM6R3mIPvio+inDxXQckf7VPK7qTXgk/iqfbN8t/Q9dwo/qT7IDrZOdpuxAfKb6B5UP7ZvS2x1c3JaL6KvrXftMxR31TdX+95Z+ZF+Xr7rfxaFKN8tT3UFQN/+T/JR/6TzlVTrv3h8ivWr8kN6RLunRtUP3/NGnGucUj9P2IH5de6t9QyYH5dMjX/awI4tb9SHIlP5dO5zz6kuwY7e4v3pvUv0Q/RHzrhvvhE/33qj2uztA+/UrnK8ufAQAClA6T+s7QPv8G+8doL2/fWChircdoL2/fRSDaD+3IFTtT+dIjh2gfY99yp8/ZZBC/p9q/MkeU3IQn+qFTLWDyr/bP6h8aN+U3d3BxW25iL663rXPFN7oolG9WN/Sj+zr8lX3uzhU6e4A7fvvNCL77QDt+1+BdQdWO0CbxR/l0x2gfd/X7gDt8V2X7ktPH6DRJzwkMBVyWs8mi1Q41Iab6JB81QatSjebzKp+oEn3lFwZHcKT24hG/9H5aX8TvYjDbP/xn/tJgsv/tn+rDZuKX5I/G4RFXJz/zi7SxCeLw9sXCFeu6n6yC+Hu1ieBU3yzC5nrv6p9p/iTPagOVuWYtpOrR5e/y6/r52qfQP4jPapyE12Sq8rXvdhW5VD1o4se9RtkB1UOouOuu3zV/W5cqnTdPBXpvir+CJ+u/m58/FS9XT26dqT+Uv1A5chxe6DWxQXlgyn6RKcrR+a3jK96fyK5M7xlfS3RIzuo+S3aQ+2ziT/NBaJ+8YN71e4kR1yn+pvJlfHZAdqvF2gE2G7CpfMEBJKPzqvrJ6CoQBx6FCgq3+q+HaA9/tVHNxERzro4rvo5nqMGRcUvyRPtkTU6O0B7/Cs9O0DTPrkmPNJ6N36759XGLeYR96I8bYcu/ym7kV603pWDzhP/WxfsKt/pi3VXP2rgd4DGr98/MNr1g5undoD2+LuXKG9Q39g9Px3nJA/1l9Sfqn3lT897bhyRPmT37vkdoH3NrztAe1xv6P48VogI2GedEku3gaDC6gbQswon2a+bWIh+th4HVGrCnJpkk9yZXao4Uv2t2oHk7xZ+woX7Eo3oZY1Q1hBQAnLtQ/njyNHlSxcddQBQlSd+IqNe8Kv+c/3g7if5aRBPDbgaj67fzn41n73a/l3+3fPTfnBx9ir+Vbup516Nf5U/9V+kb9Xf6jniX9VTpTvdr3T7B9VutE/V341Pqhtd/VW51b5QpXcrTqr8qd+hgVGVr4sHwmGXnmoH6i/V/i2zm9u3k126/nkWfZKT5FD7yOi/yFft96p4i3LSl/qr+Sfah/Ds9rdk/7Ou8j38p/GeyaneHynfHfo7QNsXaCkGPkCyA7THL2u6Cf92A+gmJtInu2DEcy5fNTGrCZAaHOKnFgC1gLryqA1YFz9kh6l1ugipjQ/J4+JX3a82VCo90qO63uXfPa/GQ8wjhA/XHq4eXf4uP9dO6mDHlUPdr/K/NRhw/f9sOVw7xv3VD/x+Sv5X9a/iXr1APkuOW/hy5Z/yP/U7dKF8ldzTflDtQP2c2r9ldpvun7v+ofw7RZ/okBxqH7kDtK8vr9T+luy/A7ShgVI0NP2pHSVo1XHVfRS41EB2z5PcRJ/Ou+tZIlIbICowrjy0f6oQkZ3Vi1/3Qkb6uolKjS9X/2fhgfLHkVvVM7Ov2vi4jVu1ISJ5phpoFW/uPmpoXPmJv4tfki/So0bD5U/6uOtd/t3zaj5Q86ir/6v4V+2mnqP+Y1rv6fql6ln1t3rulhwqXdrXHaQRfRVHqj2ncafWebf+Rru4cmfn3fpF9u/6r3q+2z9X+bp+UHHpykN91q3+jeSs8p3GJdmd9CDcqzggOWgAeuSIfVz3Vyhd/bP9aj9KdojrKt3pe7vKV8WHq7d7Tz5yqHZ42gs0Kozdi2/VsGrgkoPdAHLlJfouPdq/A7THfxvt4obwQ/7I1tWCocYX4SzTg86pCSnTk/LH4a/qSfakl25uA19thKixe3aj5OKUCqgrP/EnHEb8knyR3g7QHn8XjpsXaT/5241D9yKt8ndxR3pn9EgeVw51f7d+qXxIv+76LTlUurRvB2jf/4p1Frdu/Yg4Jn+4cajSm8pbXf0pD6l9y6v17tqB+izVDlEOokt2q/Lt2sPNs6SHWj+IDsml3od2gPb4VznJzuq621+rdN19Ki5+7ACNLqTdxsE16HSCocBXE0i1sHb1P+cJ8FnBPee6g5JDPxuYEE4yP6iDFdeP6n7V/7HgHrlJbzVBEE5UfVycqvbP6FL+OHKTnUh/wj/Rp0EfDWBIPlrv+o/ou+uZPJkdSH6yH53P4pD8fusC59qT9lf1p4uUqv8UHTVfunlI1cPlf9vu5Pdpu7uDA5Kvax+ir67fkkOlq+6jOnML96odu/1zrJNRX7LTlP7Ex40Dld6U/F0/RHnVfrPLd/p8l17WX07dZ+K9Ru1nj3+6/XMXl5QXpugTHZLjrFM/lw0mqb+cilvSk9ZdO6j3w6r+mTwqX7ffUvU/+9R4c+PsaS/QSIFqw+AacioAugnblXsqoIgvJZ6sUd8BWu/Xo45dd4D2/XfOUf7YAdqn3ShP3C5Ual7cAdrj71akPP3T61gXh12cPpv/FD/3wq7Gmzs47MoxLVc1Hp4lh+p/dV+1H1bpT9kz6wcJPztA+z7/d/3nnt8B2qcfdoCmvSy/1XeoeUTNW3SP3QHa93eFHaB95gIVZ9cHaPQiw534qYq5+9QLejWBdPWkwujqG/erk+IuH/V8Vd/qOVUutyF36WY4JPxM+e92HLj2UAtr98Kt8lHl7+Iw8yd9Ikp8VRydfdU/IaAGhtZJj2oeJpwQXzrfjR8VX6/Sn/CjxhHZ8dV2cPl3/U64U+UhOmR3Oq/K4dZJkov4qi/WSb+qHCpd6ocjHXeQpspB9jzr8QO9W3nHxcuUHK4/CB+38wDl32n/qzh5td4ufqIfqX+u9kGZ/ap/2qn6o2sPl88U7oiOKhf58/CJAyPqr6fyDulJ62SHqP/Zr/bd04M00ofyKulLcabypx+XiHx2gPbrRxN+WgFwE2AVYLFRIqB1+ajnq3JUz6ly3fbLDtDufDKr+ncKP106O0DTvoPQjUcq1OQ3Ot+tIypOpxo51350gTv0unZ8tR1c/l2/k71UeYgO4ZfOq3K4uCK5iO8O0O68QN4B2vd1KMPj7TxA+ZfitxtnP1Xvbr6hgcsO0B6/ypnCHdGhOuDeZ3eA9pyXaOTXW3mJ4jrKNTZAU4FK+6ignMYn+9O16kSY5Irr6idR1YuL+0miWxBcfV365Af60QFXvizgMjsSzm4FKCWG23q7CYLkuR0HxL8aX1P+JX9SHHftd/SvDlK78lf5uvnEHbREvW7hhOxHOJvyf6Sjxk1VflVuwr/rV9JL9buLP/IjyTXVP6h2V+Wp+l/1myrHs/1Beqv6VXFB/CNd1e/n3LPjLnshcyvvuniZlsP1R8ZfpVOVn3Dg4rAaz1P5T41L0tvFTxbn9EKHBpiuPaf79yquqnlP9R/lsW7cVPWe8qcbd2c/4S2jSziLdKOe6n2Z7v0kh4sPlZ66T9Uz2ieLy8hX/ltPVeC4jxTYAZr297YUoFX/qACnQNoBmvdJpZvwswZiugB3C9ktnBLdbgOgxgE1cl37HTmqgyyyE8lf5es2sKq93QaC9CecdM9P+X8HaN+/qFHrXNePKp+zr+r36jm3fqiDSLKbaxc3zm/Rvy0H2W0HaN53LJE9p/GvxiHVD5VOVX6q32Q3kr8af6/W2+0/doA2c19x82qG3y5+qvG0A7THf+lB9341X7wqL9H86cg1PkDrKkwBoU5EpwA+5ehqoKr8/230aYJe1ZuA7ybuWziiOHH1J71j4Sf+WYIguVS6qh+69nflIf2ydcLz0SM2Aue/yX/qdwtkdKigZXZS7d8doJH91Aae/F39EYKMP/E766r/iF7EX2Y3lZ8ah92LvBpXpH8VB8/mr/JT7e8O3FQ7qfyJHvnNtceUXMQ3kzvmadLPjbeuftQnR3lvD1Dou5mq/Snhzh2A3JJD9UcVj2QHwmeXL/En+rRelb96bhoH6gfSbh/m7o/2UPu3aXuQv8869b2Ux8j/Vf2n+lGyA8kf4y7WGVVOil/C79GD9kV9SH9ad+1D9Gjd1e/sp3OR77XvQKNCtAM07eWZ2qARoGidAJ6dp8Anvtk6JWTVLkevagIm+at2q+odEyjxr+qv0lX90LW/Kw/5rYrnHaA9zluUD6gBUPG0A7SZ7wqkOl1tpKbi9dX83TxCeh96P9XuqvzTdlHzgntB3AGa99JkB2jvbx+Y6cZB9Xz1nFo3u3FGcV+Vv3rOzQdUT+gCfc67AzF3/w7QvsZg9f4w1Y92cb8DNM6pHzYiO6vrahzHeKZzTxugZQkxu4B2Xz6ohqV9ZEB3gEGJs1sAMjuTnnGdClh13ZUj7s9woTYM53zVD1P+Ue1ADayLv6r+PyUOjt1ooFotsNEvqv1v+0GVg+LA9X/k655X8wTFg0tH3e/67ex3X6ZQ/JDfXH639Vfz5205pnBDFynik613/R7lohdHhCPyR/W8ah/iP9W/TNldxXnVbtkAw7VTt3+ryt/lSwOcqh3cc7f8cOxDeHTrEOFySn81rqv5z9Wb8HILj2RP6jfpvGoHt/+6ZQ/ChdqvZnU3s1dXfzcOSc+ufYm+OvBT8UN9jopTNw6r9aXKp+qXGMdkj8jn2gs0CojYGO4A7ev0lRxJ6xSoVcARXwpYV64doD3+BJn8US1AbuEhOagBJFzsAK2GA9f/O0Cb+VUiih9qMHaA5r2cIXtSfqL8o653/R7l3AGa9qn0lN3dOkW4UgeELp1u/1aNly5fuiBV7eCe2wGa9510U/lv6uKfyfMsHOwA7Wte3gHazAurHaDN5CU1D/xrB2gxAXYvbmqCV/d1GzK3EZtqTKhBmS48h1/2JymqvWlfHKBkDWD2wpHou+tqgFb9QQXpWfp35ejGwdEzk8MdEKl+Jr3VRrArH8lBOJiyv2o3NS6InktH3a/67exzB1lZXcs+WIj/v8rvlv4ufm7JoeZRl79Kl/Da9Xusoy6/rt7ueVU+l27XH1nfRgMjF+dEj/Tu9ntT50nOLG9N61+lVz13e4AW+5bMziS/ikvXj904o/jv3p+qdXHKDioduk/Rd+Pe7t9UPSjOyd9xnfTO+rBb9zcaTLn6UdxSvBM/ktftY5+V77p1aSovqbiP+ZXORf1e9gItazhPAHUvngRQWu8WALXwUQImh3YDtZoIIt8doD3+BILwRvGQFbj4/6cL0E8Z4OwA7f3tw7cuDrp5yMWtmq+IrktH3e82HtWBFl2gsrxb5XdLfxc/t+RQGyuXv0qX8JrlbzVezz71xdl0o+raTbWHS7frjx2geS8hXP9M465Lr9u/TvHP4uFZ9wjXj904o/jv6h31UevilB1UOnR/o0HSDtC+/tr29P3l2JcGUoRn8nMXL5E+yev2sTtA+74uXhugVQG157Q/OVg7rZ0WA4uBxcBiYDGwGFgMLAYWA4uB/zoGpn6N+r9ux9V/c8li4D4Gxn71YJ1131lr47XxYmAxsBhYDCwGFgOLgcXAYmAx8DthYAdoi+ffCc+ry2+N5/8DRsKIn1G7VhQAAAAASUVORK5CYII=",
- height: 32,
- map: [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, {
- offset: 0,
- width: 16
- },
- null, null, null, {
- offset: 16,
- width: 32
- },
- null, {
- offset: 48,
- width: 16
- },
- null, null, null, null, null, null, null, null, {
- offset: 64,
- width: 32
- }, {
- offset: 96,
- width: 32
- }, {
- offset: 128,
- width: 32
- }, {
- offset: 160,
- width: 32
- }, {
- offset: 192,
- width: 32
- }, {
- offset: 224,
- width: 32
- }, {
- offset: 256,
- width: 32
- }, {
- offset: 288,
- width: 32
- }, {
- offset: 320,
- width: 32
- }, {
- offset: 352,
- width: 32
- }, {
- offset: 384,
- width: 16
- },
- null, null, null, null, null, null, {
- offset: 400,
- width: 32
- }, {
- offset: 432,
- width: 32
- }, {
- offset: 464,
- width: 32
- }, {
- offset: 496,
- width: 32
- }, {
- offset: 528,
- width: 32
- }, {
- offset: 560,
- width: 32
- }, {
- offset: 592,
- width: 32
- }, {
- offset: 624,
- width: 32
- }, {
- offset: 656,
- width: 32
- }, {
- offset: 688,
- width: 32
- }, {
- offset: 720,
- width: 32
- }, {
- offset: 752,
- width: 32
- }, {
- offset: 784,
- width: 32
- }, {
- offset: 816,
- width: 32
- }, {
- offset: 848,
- width: 32
- }, {
- offset: 880,
- width: 32
- }, {
- offset: 912,
- width: 32
- }, {
- offset: 944,
- width: 32
- }, {
- offset: 976,
- width: 32
- }, {
- offset: 1008,
- width: 32
- },
- {
- offset: 1040,
- width: 32
- }, {
- offset: 1072,
- width: 32
- }, {
- offset: 1104,
- width: 32
- }, {
- offset: 1136,
- width: 32
- }, {
- offset: 1168,
- width: 32
- }, {
- offset: 1200,
- width: 32
- },
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
-};
-font = {
- BitmapFont: function (a) {
- this.images = [];
- var b = document.createElement("CANVAS");
- b.height = a.height;
- var c = b.getContext("2d"),
- d = this;
- window.addEventListener("load", function () {
- var e = new Image;
- e.src = a.image;
- var f = document.getElementById("resources");
- f || (f = document.createElement("DIV"), f.id = "resources", document.body.appendChild(f), f = document.getElementById("resources"));
- f.appendChild(e);
- e.onload = utils.bind(d, function () {
- for (var d = 0; d < a.map.length; d++)
- if (a.map[d]) {
- b.width = a.map[d].width;
- c.drawImage(e,
- a.map[d].offset, 0, a.map[d].width, a.height, 0, 0, b.width, b.height);
- this.images[d] = {
- width: b.width,
- height: b.height,
- data: b.toDataURL()
- };
- var f = document.getElementById("resources");
- if (!f) {
- f = document.createElement("DIV");
- f.id = "resources";
- document.body.appendChild(f);
- f = document.getElementById("resources")
- }
- var j = new Image;
- j.src = this.images[d].data;
- f.appendChild(j)
- }
- })
- }, !1)
- },
- Font: function (a, b) {
- this.images = [];
- var c = document.createElement("CANVAS"),
- d = c.getContext("2d"),
- e = this;
- window.addEventListener("load", function () {
- for (var f =
- 0; f < a.length; f++)
- if (a[f]) {
- var h = a[f];
- c.width = 3 * h.width;
- c.height = 3 * h.data.length;
- for (var g = d.createImageData(c.width, c.height), j = 0; j < c.height; j++)
- for (var i = 4 * j * c.width, m = 0; m < c.width; m++) h.data[floor(j / 3)] & 1 << floor(m / 3) && (g.data[i + 4 * m] = b.r, g.data[i + 4 * m + 1] = b.g, g.data[i + 4 * m + 2] = b.b, g.data[i + 4 * m + 3] = 255);
- d.putImageData(g, 0, 0);
- e.images[f] = {
- width: c.width,
- height: c.height,
- data: c.toDataURL()
- };
- h = document.getElementById("resources");
- h || (h = document.createElement("DIV"), h.id = "resources", document.body.appendChild(h),
- h = document.getElementById("resources"));
- g = new Image;
- g.src = e.images[f].data;
- h.appendChild(g)
- }
- }, !1)
- }
-};
-font.BitmapFont.prototype = {
- text: function (a, b) {
- b || (b = a.innerHTML);
- a.innerHTML = "";
- for (var c = 0; c < b.length; c++) {
- var d = document.createElement("IMG"),
- e = b.charCodeAt(c);
- if (10 == e) d = document.createElement("BR"), a.appendChild(d);
- else if (32 == e) d.width = 48, d.height = 48, d.src = "images/hidden.png", a.appendChild(d);
- else if (e = this.images[e]) d.src = e.data, d.width = 1.5 * e.width, d.height = 1.5 * e.height, a.appendChild(d)
- }
- }
-};
-font.Font.prototype = {
- text: function (a, b) {
- b || (b = a.innerHTML);
- a.innerHTML = "";
- for (var c = 0; c < b.length; c++) {
- var d = document.createElement("IMG"),
- e = b.charCodeAt(c);
- if (10 == e) d = document.createElement("BR"), a.appendChild(d);
- else if (e = this.images[e - 1]) d.src = e.data, a.appendChild(d)
- }
- }
-};
-raycast = {
- defaults: {
- width: 640,
- height: 480,
- horizontalCasting: !1,
- horizontalShading: !1,
- verticalShading: !1
- },
- Engine: function (a) {
- this.width = a.width || raycast.defaults.width;
- this.height = a.height || raycast.defaults.height;
- this.distanceLUT = new raycast.DistanceLUT(this.height);
- this.shaderImage = new raycast.Shader;
- this.canvas = a.canvas || document.createElement("CANVAS");
- this.canvas.width = this.width;
- this.canvas.height = this.height;
- a.webgl ? (WebGL2D.enable(this.canvas), this.context = this.canvas.getContext("webgl-2d")) :
- this.context = this.canvas.getContext("2d");
- this.verticalContext = new raycast.Context(this.width, this.height);
- this.horizontalContext = new raycast.Context(this.width, this.height);
- this.horizontalCasting = a.horizontalCasting || raycast.defaults.horizontalCasting;
- this.horizontalShading = a.horizontalShading || raycast.defaults.horizontalShading;
- this.verticalShading = a.verticalShading || raycast.defaults.verticalShading;
- this.fps = null;
- this.frameTime = 0;
- this.map = a.map || new maps.Map;
- this.background = a.background || document.createElement("CANVAS");
- this.background.width = this.width;
- this.background.height = this.height;
- this.backgroundContext = this.background.getContext("2d");
- this.backgroundRender();
- this.player = a.player || new player.Player;
- this.mask = [];
- for (var b = 0; b < this.width; b += 3)
- for (var c = 0; c < this.height; c += 3) this.mask.push({
- x: b,
- y: c
- });
- this.mask = utils.shuffle(this.mask);
- this.maskIndex = 0;
- this.maskColor = a.maskColor || "#a00";
- this.maskSpeed = a.maskSpeed || this.width * this.height / 600;
- this.maskContext = new raycast.Context(this.width, this.height, a.mask);
- this.maskContext.context.clearRect(0,
- 0, this.width, this.height)
- },
- Context: function (a, b, c) {
- this.width = a;
- this.height = b;
- this.canvas = c || document.createElement("CANVAS");
- this.canvas.width = this.width;
- this.canvas.height = this.height;
- this.context = this.canvas.getContext("2d")
- },
- DistanceLUT: function (a) {
- for (var b = 0; b < a; b++) this[b] = a / (2 * b - a)
- },
- canvas: null,
- shaderImage: null,
- verticalContext: null,
- horizontalContext: null,
- Shader: function () {
- this.canvas = document.createElement("CANVAS");
- this.canvas.width = 1;
- this.canvas.height = 256;
- this.context = this.canvas.getContext("2d");
- this.data = this.context.createImageData(1, 256);
- for (var a = 0; 1024 > a; a += 4) this.data.data[a] = 0, this.data.data[a + 1] = 0, this.data.data[a + 2] = 0, this.data.data[a + 3] = a;
- this.context.putImageData(this.data, 0, 0)
- }
-};
-raycast.Engine.prototype = {
- setResolution: function (a, b) {
- this.width = a;
- this.height = b;
- this.distanceLUT = new raycast.DistanceLUT(this.height);
- this.canvas.width = this.width;
- this.canvas.height = this.height;
- this.verticalContext = new raycast.Context(this.width, this.height);
- this.horizontalContext = new raycast.Context(this.width, this.height);
- this.background.width = this.width;
- this.background.height = this.height;
- this.backgroundRender();
- this.mask = [];
- for (var c = 0; c < this.width; c += 3)
- for (var d = 0; d < this.height; d += 3) this.mask.push({
- x: c,
- y: d
- });
- this.mask = utils.shuffle(this.mask);
- this.maskIndex = 0;
- this.maskSpeed = this.width * this.height / 600;
- this.maskContext = new raycast.Context(this.width, this.height, this.maskContext.canvas);
- this.maskContext.context.clearRect(0, 0, this.width, this.height)
- },
- backgroundRender: function () {
- this.backgroundContext.fillStyle = "rgb(" + resources.palette[this.map.ceiling][0] + "," + resources.palette[this.map.ceiling][1] + "," + resources.palette[this.map.ceiling][2] + ")";
- this.backgroundContext.fillRect(0, 0, this.width, this.height /
- 2);
- this.backgroundContext.fillStyle = "rgb(" + resources.palette[this.map.floor][0] + "," + resources.palette[this.map.floor][1] + "," + resources.palette[this.map.floor][2] + ")";
- this.backgroundContext.fillRect(0, this.height / 2, this.width, this.height / 2)
- },
- calculateShader: function () {
- return 0
- },
- render: function () {
- this.rendering || (this.rendering = !0, this.cast(), this.rendering = !1)
- },
- fizzleFade: function () {
- if (this.maskIndex == this.mask.length - 1) return !1;
- this.maskContext.context.fillStyle = this.maskColor;
- for (var a = min(round(this.maskIndex +
- this.maskSpeed * game.timeFactor), this.mask.length - 1), b = this.maskIndex; b <= a; b++) {
- var c = this.mask[b];
- this.maskContext.context.fillRect(c.x, c.y, 3, 3)
- }
- this.maskIndex = a;
- return !0
- },
- fizzleClear: function () {
- if (0 == this.maskIndex) return !1;
- for (var a = max(round(this.maskIndex - this.maskSpeed * game.timeFactor), 0), b = this.maskIndex; b >= a; b--) {
- var c = this.mask[b];
- this.maskContext.context.clearRect(c.x, c.y, 3, 3)
- }
- this.maskIndex = a;
- return !0
- },
- cast: function () {
- this.fpsStart || (this.fpsStart = (new Date)
- .getTime());
- var a = (new Date)
- .getTime();
- this.verticalContext.context.clearRect(0, 0, this.width, this.height);
- this.horizontalCasting && (this.horizontalData = this.horizontalContext.context.createImageData(this.width, this.height), this.horizontalPixels = this.horizontalData.data);
- this.zBuffer = [];
- this.player.fireBuffer = [];
- for (var b = [], c = 0; c < this.width; c++) {
- var d = [],
- e = [],
- f = 2 * c / this.width - 1,
- h = this.player.x,
- g = this.player.y,
- j = this.player.direction.x + this.player.plane.x * f,
- i = this.player.direction.y + this.player.plane.y * f,
- m = floor(h),
- l = floor(g),
- p, q, n = sqrt(1 +
- i * i / (j * j)),
- o = sqrt(1 + j * j / (i * i)),
- r, s;
- 0 > j ? (r = -1, p = (h - m) * n) : (r = 1, p = (m + 1 - h) * n);
- 0 > i ? (s = -1, q = (g - l) * o) : (s = 1, q = (l + 1 - g) * o);
- for (var t, f = !1; !f;) {
- p < q ? (p += n, m += r, t = 0) : (q += o, l += s, t = 1);
- if (this.map.spriteMap[m] && this.map.spriteMap[m][l])
- for (var u = this.map.spriteMap[m][l], f = 0; f < u.length; f++) {
- var k = u[f];
- 0 > b.indexOf(k) && b.push(k)
- }
- if (f = this.map.getSecret(m, l)) k = !f.hidden && !f.shift ? f.state : 0, u = f.hidden, e.push(0 == t ? {
- perspectiveDistance: abs((m - h + (0 < j ? k : -k) + (1 - r) / 2) / j),
- x: m + (0 < j ? k : -k),
- y: l,
- side: t,
- secret: f,
- hidden: u
- } : {
- perspectiveDistance: abs((l -
- g + (0 < i ? k : -k) + (1 - s) / 2) / i),
- x: m,
- y: l + (0 < i ? k : -k),
- side: t,
- secret: f,
- hidden: u
- });
- f = this.map.getMapValue(m, l);
- null === f && (f = !0);
- (k = this.map.getDoor(m, l)) && d.push(0 == t ? {
- perspectiveDistance: abs((m - h + (0 < j ? 0.5 : -0.5) + (1 - r) / 2) / j),
- x: m + (0 < j ? 0.5 : -0.5),
- y: l,
- side: t,
- door: k
- } : {
- perspectiveDistance: abs((l - g + (0 < i ? 0.5 : -0.5) + (1 - s) / 2) / i),
- x: m,
- y: l + (0 < i ? 0.5 : -0.5),
- side: t,
- door: k
- })
- }
- p = 0 == t ? abs((m - h + (1 - r) / 2) / j) : abs((l - g + (1 - s) / 2) / i);
- for (f = 0; f < d.length; f++)
- if (k = d[f], k.perspectiveDistance < p && (n = abs(floor(this.height / k.perspectiveDistance)),
- q = -n / 2, o = n / 2, n = o - q, q += this.height / 2, o += this.height / 2, o = 0 == k.side ? g + (k.x - h + (1 - r) / 2) / j * i : h + (k.y - g + (1 - s) / 2) / i * j, o -= floor(o), o = floor(o * resources.textureWidth), o > k.door.slide && !this.zBuffer[c])) {
- this.zBuffer[c] = k.perspectiveDistance;
- o = min(resources.textureWidth, o - k.door.slide);
- this.verticalContext.context.drawImage(k.door.getTexture(k.side), o, 0, 1, resources.textureHeight, c, q, 1, n);
- break
- }
- d = e.slice(0);
- d.sort(function (a, b) {
- return a.perspectiveDistance - b.perspectiveDistance
- });
- for (f = 0; f < d.length; f++)
- if (k = d[f],
- k.perspectiveDistance < p) {
- q = abs(floor(this.height / k.perspectiveDistance));
- e = -q / 2;
- n = q / 2;
- q = n - e;
- e += this.height / 2;
- n += this.height / 2;
- n = 0 == k.side ? g + (k.x - h + (1 - r) / 2) / j * i : h + (k.y - g + (1 - s) / 2) / i * j;
- n -= floor(n);
- n = floor(n * resources.textureWidth);
- if (0 == k.side && 0 < j || 1 == k.side && 0 > i) n = resources.textureWidth - n - 1;
- if (!this.zBuffer[c] || k.perspectiveDistance < this.zBuffer[c]) {
- k.hidden || (this.zBuffer[c] = k.perspectiveDistance, this.verticalContext.context.drawImage(k.secret.getTexture(k.side), n, 0, 1, resources.textureHeight, c, e,
- 1, q));
- break
- }
- }
- if (!this.zBuffer[c]) {
- this.zBuffer[c] = p;
- f = this.map.getTexture(m, l, t, j, i);
- d = abs(floor(this.height / p));
- k = -d / 2;
- e = d / 2;
- d = e - k;
- k += this.height / 2;
- e += this.height / 2;
- h = 0 == t ? g + (m - h + (1 - r) / 2) / j * i : h + (l - g + (1 - s) / 2) / i * j;
- h -= floor(h);
- h = floor(h * resources.textureWidth);
- if (0 == t && 0 < j || 1 == t && 0 > i) h = resources.textureWidth - h - 1;
- f && (this.verticalContext.context.drawImage(f, h, 0, 1, resources.textureHeight, c, k, 1, d), this.verticalShading && this.verticalContext.context.drawImage(this.shaderImage, 0, this.calculateShader(), 1,
- 1, c, k, 1, d))
- }
- }
- this.context.clearRect(0, 0, this.width, this.height);
- this.horizontalCasting && (this.horizontalContext.context.putImageData(this.horizontalData, 0, 0), this.context.drawImage(this.horizontalContext.canvas, 0, 0, this.width, this.height));
- this.player.fireBuffer = [];
- var b = b.concat(this.player.map.ai),
- v = this.player.x,
- w = this.player.y;
- b.sort(function (a, b) {
- var c = sqrt((v - a.x) * (v - a.x) + (w - a.y) * (w - a.y));
- return sqrt((v - b.x) * (v - b.x) + (w - b.y) * (w - b.y)) - c
- });
- for (f = 0; f < b.length; f++)
- if (k = b[f], j = k.x - this.player.x + 0.5,
- t = k.y - this.player.y + 0.5, i = 1 / (this.player.plane.x * this.player.direction.y - this.player.direction.x * this.player.plane.y), c = i * (-this.player.plane.y * j + this.player.plane.x * t), 0 < c) {
- j = this.width / 2 * (1 + i * (this.player.direction.y * j - this.player.direction.x * t) / c);
- h = abs(this.height / c);
- t = -h / 2;
- g = h / 2;
- i = g - t;
- t += this.height / 2;
- g += this.height / 2;
- h /= this.width / this.height;
- r = floor(max(0, -h / 2 + j));
- g = floor(min(this.width - 1, h / 2 + j));
- k.spriteWidth = floor(h);
- k.visibleWidth = 0;
- k.center = r + (g - r) / 2;
- m = [];
- for (l = 0; r < g; r++) c < this.zBuffer[r] ?
- (k.visibleWidth++, s = min(resources.textureWidth, max(0, floor((r - (-h / 2 + j)) * resources.textureWidth / h))), m[l] ? (m[l].stripeRight = r, m[l].texRight = s) : m[l] = {
- stripeLeft: r,
- texLeft: s
- }, k.hitpoints && (this.player.fireBuffer[r] = k)) : m[l] && l++;
- for (l = 0; l < m.length; l++) l = m[l], l.stripeRight || (l.stripeRight = l.stripeLeft + 1, l.texRight = l.texLeft + 1), this.verticalContext.context.drawImage(k.texture, l.texLeft + (k.animations.current ? k.animations[k.animations.current].state + (k.animations[k.animations.current].slide ? k.getTextureSlide() :
- 0) : 0), 0, max(1, l.texRight - l.texLeft), resources.textureHeight, l.stripeLeft, t, max(1, l.stripeRight - l.stripeLeft), i)
- }
- this.canvas.flash ? (b = this.canvas.flashColor, k = this.canvas.flashState, this.verticalContext.context.fillStyle = "rgba(" + b[0] + "," + b[1] + "," + b[2] + "," + k + ")", this.verticalContext.context.fillRect(0, 0, this.width, this.height), this.canvas.flashState = min(0.3, this.canvas.flashState + 0.15 * game.timeFactor), 0.3 == this.canvas.flashState && (this.canvas.flash = !1)) : 0 < this.canvas.flashState && (b = this.canvas.flashColor,
- k = this.canvas.flashState, this.verticalContext.context.fillStyle = "rgba(" + b[0] + "," + b[1] + "," + b[2] + "," + k + ")", this.verticalContext.context.fillRect(0, 0, this.width, this.height), this.canvas.flashState = max(0, this.canvas.flashState - 0.15 * game.timeFactor));
- if (-1 < window.location.href.search("showmap")) {
- for (f = 0; 64 > f; f++)
- for (b = 0; 64 > b; b++) this.verticalContext.context.fillStyle = this.map.getHitValue(b, f) ? "#f00" : "#00f", this.verticalContext.context.fillRect(5 + 2 * f, 5 + 2 * b, 2, 2);
- for (f = 0; f < this.map.ai.length; f++) b = this.map.ai[f],
- this.verticalContext.context.fillStyle = 0 == b.direction.x && 0 == b.direction.y ? "#000" : 0 != b.direction.x && 0 != b.direction.y ? "#0ff" : "#0f0", this.verticalContext.context.fillRect(5 + 2 * b.baseY, 5 + 2 * b.baseX, 2, 2);
- this.verticalContext.context.fillStyle = "#ff0";
- this.verticalContext.context.fillRect(5 + 2 * floor(this.player.y), 5 + 2 * floor(this.player.x), 2, 2)
- }
- this.context.drawImage(this.verticalContext.canvas, 0, 0, this.width, this.height);
- b = (new Date)
- .getTime();
- this.frameTime = b - a;
- 1E3 < b - this.fpsStart ? (this.fps = this.fpsCounter,
- this.fpsCounter = 0, this.fpsStart = null) : this.fpsCounter ? this.fpsCounter++ : this.fpsCounter = 1
- }
-};
-controller = {
- keys: {
- left: {
- keyCode: [37],
- single: !1,
- exception: ["right"]
- },
- right: {
- keyCode: [39],
- single: !1,
- exception: ["left"]
- },
- strafe: {
- keyCode: [18],
- single: !1
- },
- run: {
- keyCode: [16],
- single: !0
- },
- forward: {
- keyCode: [38],
- single: !1,
- exception: ["backward"]
- },
- backward: {
- keyCode: [40],
- single: !1,
- exception: ["forward"]
- },
- door: {
- keyCode: [32],
- single: !0
- },
- knife: {
- keyCode: [49],
- single: !0
- },
- pistol: {
- keyCode: [50],
- single: !0
- },
- gun: {
- keyCode: [51],
- single: !0
- },
- machinegun: {
- keyCode: [52],
- single: !0
- },
- fire: {
- keyCode: [17],
- single: !1
- }
- },
- keydown: function (a) {
- a ||
- (a = window.event);
- for (var b in this.keys)
- if (-1 < this.keys[b].keyCode.indexOf(a.keyCode)) return void 0 == this.activeKey[b] && (this.activeKey[b] = !0, delete this.inactiveKey[b]), a.stopPropagation(), a.preventDefault(), !1
- },
- keyup: function (a) {
- a || (a = window.event);
- for (var b in this.keys)
- if (-1 < this.keys[b].keyCode.indexOf(a.keyCode)) return delete this.activeKey[b], this.inactiveKey[b] = !0, a.stopPropagation(), a.preventDefault(), !1
- },
- Controller: function (a) {
- this.keys = a.keys || controller.keys;
- this.activeListeners = a.activeListeners || {};
- this.inactiveListeners = a.inactiveListeners || {};
- this.activeKey = {};
- this.inactiveKey = {};
- window.addEventListener("keydown", utils.bind(this, controller.keydown), !1);
- window.addEventListener("keyup", utils.bind(this, controller.keyup), !1)
- }
-};
-controller.Controller.prototype = {
- reset: function () {
- this.activeKey = {};
- this.inactiveKey = {}
- },
- process: function () {
- for (var a in this.activeKey) {
- var b = this.keys[a];
- if (this.activeKey[a] && this.activeListeners[a])
- if (b.exception) {
- for (var c = !1, d = 0; d < b.exception.length; d++) {
- var e = b.exception[d];
- this.activeKey[e] && (c = !0);
- this.inactiveKey[e] && (c = !0, delete this.inactiveKey[e])
- }
- c || (this.activeKey[a] = !this.activeListeners[a]() && !this.keys[a].single)
- } else this.activeKey[a] = !this.activeListeners[a]() && !this.keys[a].single
- }
- for (a in this.inactiveKey) this.inactiveKey[a] &&
- (this.inactiveListeners[a] ? this.inactiveKey[a] = !this.inactiveListeners[a]() : delete this.inactiveKey[a])
- }
-};
-game = {
- tick: 1E3 / 33,
- levelConfig: null,
- level: null,
- client: null,
- ctrl: null,
- engine: null,
- loop: null,
- mapName: null,
- difficulty: null,
- pause: !1,
- restart: !1,
- death: !1,
- roster: !1,
- intro: !0,
- m: !1,
- l: !1,
- i: !1,
- gameLoop: function () {
- if (game.pause) {
- if (game.win) {
- var a = floor(game.client.time / 1E3);
- if (game.average) {
- if (game.average.totalTime += a, game.client.total.kill && (game.average.kill = floor((game.average.kill + floor(100 * (game.client.ratio.kill / game.client.total.kill))) / 2)), game.client.total.secret && (game.average.secret = floor((game.average.secret +
- floor(100 * (game.client.ratio.secret / game.client.total.secret))) / 2)), game.client.total.treasure) game.average.treasure = floor((game.average.treasure + floor(100 * (game.client.ratio.treasure / game.client.total.treasure))) / 2)
- } else if (game.average = {
- totalTime: a,
- kill: floor(100 * (game.client.ratio.kill / game.client.total.kill)),
- secret: floor(100 * (game.client.ratio.secret / game.client.total.secret)),
- treasure: floor(100 * (game.client.ratio.treasure / game.client.total.treasure))
- }, game.client.total.kill || (game.average.kill =
- 100), game.client.total.secret || (game.average.secret = 100), !game.client.total.treasure) game.average.treasure = 100;
- game.win = null;
- window.onfocus = null;
- game.loop = null;
- audio.currentMusic && audio.stopMusic();
- var b = floor(game.average.totalTime / 60),
- c = game.average.totalTime - 60 * b;
- game.hideScreen("game", function () {
- document.getElementById("wingamescreen")
- .style.display = "block";
- document.getElementById("hand")
- .style.display = "";
- game.bitmap.text(document.querySelector("#wingamescreen .win"), "YOU WIN!");
- game.bitmap.text(document.querySelector("#wingamescreen .total"),
- "TOTAL TIME");
- game.bitmap.text(document.querySelector("#wingamescreen .time"), utils.fillString(b.toString(), "0", 2) + ":" + utils.fillString(c.toString(), "0", 2));
- game.bitmap.text(document.querySelector("#wingamescreen .averages"), "AVERAGES");
- game.bitmap.text(document.querySelector("#wingamescreen .kill"), " KILL " + utils.fillString(game.average.kill.toString(), " ", 3) + "%");
- game.bitmap.text(document.querySelector("#wingamescreen .secret"), " SECRET " + utils.fillString(game.average.secret.toString(), " ",
- 3) + "%");
- game.bitmap.text(document.querySelector("#wingamescreen .treasure"), "TREASURE " + utils.fillString(game.average.treasure.toString(), " ", 3) + "%");
- audio.playMusic("urahero");
- game.trackEvent("game", "win");
- game.showScreen("game", null, function () {
- setTimeout(function () {
- window.onkeydown = window.onclick = function () {
- window.onkeydown = window.onclick = null;
- game.hideScreen("game", function () {
- document.getElementById("wingamescreen")
- .style.display = "";
- "7" == game.mapName.slice(1, 2) && (audio.stopMusic(), audio.playMusic("xtower2"));
- game.showReadme("episode" + game.mapName.slice(1, 2), function () {
- audio.currentMusic && audio.stopMusic();
- game.newHighscore(game.mapName, game.client.score, game.menu)
- })
- })
- }
- }, 1E3)
- })
- })
- }
- return !1
- }
- if (game.client.leveldone) {
- game.pause = !0;
- game.client.leveldone = null;
- audio.currentMusic && audio.stopMusic();
- a = floor(game.client.time / 1E3);
- game.client.time = null;
- var b = floor(a / 60),
- c = a - 60 * b,
- d = 0,
- e = game.levelConfig.par,
- f = floor(e / 60),
- h = e - 60 * f,
- d = 0 > a - e ? d + 500 * abs(a - e) : 0,
- e = document.querySelector("#endlevelscreen .floor"),
- g = document.querySelector("#endlevelscreen .bonus"),
- j = document.querySelector("#endlevelscreen .time"),
- i = document.querySelector("#endlevelscreen .par"),
- m = document.querySelector("#endlevelscreen .kill"),
- l = document.querySelector("#endlevelscreen .secret"),
- p = document.querySelector("#endlevelscreen .treasure"),
- q = game.levelConfig.episodeFloor;
- !game.secretFloor && !game.levelConfig.endscreen ? (game.bitmap.text(e, "FLOOR " + q), game.bitmap.text(document.querySelector("#endlevelscreen .completed"), "COMPLETED"), game.bitmap.text(g, "BONUS " + utils.fillString("0", " ",
- 5)), game.bitmap.text(j, "TIME " + utils.fillString(b.toString(), "0", 2) + ":" + utils.fillString(c.toString(), "0", 2)), game.bitmap.text(i, " PAR " + utils.fillString(f.toString(), "0", 2) + ":" + utils.fillString(h.toString(), "0", 2)), game.bitmap.text(m, " KILL RATIO 0%"), game.bitmap.text(l, " SECRET RATIO 0%"), game.bitmap.text(p, "TREASURE RATIO 0%"), game.hideScreen("game", function () {
- document.getElementById("endlevelscreen")
- .style.display = "block";
- audio.playMusic("endlevel");
- game.showScreen("game");
- game.trackEvent("game",
- "endlevel " + game.mapName);
- setTimeout(function () {
- var b = 0,
- c = setInterval(function () {
- b == d && (clearInterval(c), audio.playSound("endbonus2", null, !0), setTimeout(function () {
- var b = 0,
- c = setInterval(function () {
- b == game.client.ratio.kill && (clearInterval(c), audio.playSound("endbonus2", null, !0), game.client.ratio.kill == game.client.total.kill && (d += 1E4, game.bitmap.text(g, "BONUS " + utils.fillString(d.toString(), " ", 5)), audio.playSound("percent100", null, !0)), setTimeout(function () {
- var b = 0,
- c = setInterval(function () {
- if (b ==
- game.client.ratio.secret) {
- clearInterval(c);
- audio.playSound("endbonus2", null, true);
- if (game.client.ratio.secret == game.client.total.secret) {
- d = d + 1E4;
- game.bitmap.text(g, "BONUS " + utils.fillString(d.toString(), " ", 5));
- audio.playSound("percent100", null, true)
- }
- setTimeout(function () {
- var b = 0,
- c = setInterval(function () {
- if (b == game.client.ratio.treasure) {
- clearInterval(c);
- audio.playSound("endbonus2", null, true);
- if (game.client.ratio.treasure == game.client.total.treasure) {
- d = d + 1E4;
- game.bitmap.text(g, "BONUS " + utils.fillString(d.toString(),
- " ", 5));
- audio.playSound("percent100", null, true)
- }
- game.client.setProperty("score", d);
- if (!game.client.extraLife) game.client.extraLife = 0;
- var e = floor(game.client.score / 4E4);
- if (e > game.client.extraLife) {
- game.client.extraLife = e;
- if (game.client.setProperty("lives", 1)) {
- game.client.setProperty("health", 100);
- audio.playSound("bonus1up", null, true);
- game.client.render();
- wolf3d.utils.flashAddon()
- }
- }
- if (game.average) {
- game.average.totalTime = game.average.totalTime + a;
- if (game.client.total.kill) game.average.kill = floor((game.average.kill +
- floor(game.client.ratio.kill / game.client.total.kill * 100)) / 2);
- if (game.client.total.secret) game.average.secret = floor((game.average.secret + floor(game.client.ratio.secret / game.client.total.secret * 100)) / 2);
- if (game.client.total.treasure) game.average.treasure = floor((game.average.treasure + floor(game.client.ratio.treasure / game.client.total.treasure * 100)) / 2)
- } else game.average = {
- totalTime: a,
- kill: floor(game.client.ratio.kill / game.client.total.kill * 100),
- secret: floor(game.client.ratio.secret / game.client.total.secret *
- 100),
- treasure: floor(game.client.ratio.treasure / game.client.total.treasure * 100)
- };
- window.onkeydown = window.onclick = function () {
- window.onkeydown = window.onclick = null;
- audio.stopMusic();
- game.hideScreen("game", function () {
- document.getElementById("endlevelscreen")
- .style.display = "";
- doors.process = [];
- secret.process = [];
- animation.process = [];
- ai.process = [];
- audio.process = [];
- game.mapName = game.mapName.slice(0, 3) + (q + 1);
- var a = game.mapName;
- if (game.client.secretfound) {
- a = game.mapName.slice(0, 3) + game.levelConfig.secret;
- game.client.secretfound =
- null;
- game.secretFloor = true
- } else game.secretFloor = false;
- game.trackEvent("game", "new map: " + game.mapName);
- maps.request(a, function () {
- game.levelConfig = wolf3d.maps[a];
- game.level = new maps.Map(utils.clone(game.levelConfig), game.difficulty);
- game.client.x = game.levelConfig.start.x;
- game.client.y = game.levelConfig.start.y;
- game.client.direction = utils.clone(game.levelConfig.start.direction);
- game.client.plane = utils.clone(game.levelConfig.start.plane);
- game.client.map = game.level;
- game.client.speed = {
- rotation: 0.1,
- move: 0.2
- };
- game.client.floor = game.levelConfig.episodeFloor;
- game.client.textValue(document.getElementById("floor"), game.client.floor);
- game.client.time = null;
- game.client.render();
- game.client.max.speed = {
- rotation: 0.15,
- move: 0.35
- };
- game.client.keys = new player.Keys;
- game.client.keys.render();
- game.ctrl.activeKey = {};
- game.ctrl.inactiveKey = {};
- wolf3d.utils.clearFlash();
- game.engine.map = game.level;
- game.engine.backgroundRender();
- game.engine.render();
- game.showScreen("game");
- setTimeout(function () {
- game.pause = false;
- game.client.leveldone =
- null
- }, 1E3)
- })
- })
- }
- }
- game.bitmap.text(p, "TREASURE RATIO " + utils.fillString(floor(b / game.client.total.treasure * 100)
- .toString(), " ", 3) + "%");
- audio.playSound("endbonus1");
- b = b + 1
- }, 50)
- }, 1E3)
- }
- game.bitmap.text(l, " SECRET RATIO " + utils.fillString(floor(b / game.client.total.secret * 100)
- .toString(), " ", 3) + "%");
- audio.playSound("endbonus1");
- b = b + 1
- }, 50)
- }, 1E3));
- game.bitmap.text(m, " KILL RATIO " + utils.fillString(floor(100 * (b / game.client.total.kill))
- .toString(), " ", 3) + "%");
- audio.playSound("endbonus1");
- b += 1
- }, 50)
- }, 1E3));
- game.bitmap.text(g, "BONUS " + utils.fillString(b.toString(), " ", 5));
- audio.playSound("endbonus1");
- b += 500
- }, 50)
- }, 1E3)
- })) : game.hideScreen("game", function () {
- document.getElementById("secretlevelscreen")
- .style.display = "block";
- game.bitmap.text(document.querySelector("#secretlevelscreen .secret"), game.levelConfig.endscreen ? game.endscreenTitle[game.levelConfig.endscreen] : "SECRET FLOOR");
- game.bitmap.text(document.querySelector("#secretlevelscreen .completed"), game.levelConfig.endscreen ? game.endscreenSubtitle[game.levelConfig.endscreen] :
- "COMPLETED!");
- game.bitmap.text(document.querySelector("#secretlevelscreen .bonus"), "15000 BONUS!");
- audio.playMusic("endlevel");
- game.showScreen("game");
- game.trackEvent("game", "endlevel " + game.mapName);
- setTimeout(function () {
- game.client.setProperty("score", 15E3);
- game.client.extraLife || (game.client.extraLife = 0);
- var a = floor(game.client.score / 4E4);
- a > game.client.extraLife && (game.client.extraLife = a, game.client.setProperty("lives", 1) && (game.client.setProperty("health", 100), audio.playSound("bonus1up", null, !0), game.client.render(), wolf3d.utils.flashAddon()));
- window.onkeydown = window.onclick = function () {
- window.onkeydown = window.onclick = null;
- audio.stopMusic();
- game.hideScreen("game", function () {
- document.getElementById("secretlevelscreen")
- .style.display = "";
- doors.process = [];
- secret.process = [];
- animation.process = [];
- ai.process = [];
- audio.process = [];
- var a = game.mapName.slice(0, 3) + q,
- b = game.mapName;
- a == b && (b = game.mapName.slice(0, 3) + (q + 1));
- game.mapName = b;
- game.trackEvent("game", "new map: " + game.mapName);
- maps.request(game.mapName,
- function () {
- game.secretFloor = false;
- game.levelConfig = wolf3d.maps[game.mapName];
- game.level = new maps.Map(utils.clone(game.levelConfig), game.difficulty);
- game.client.x = game.levelConfig.start.x;
- game.client.y = game.levelConfig.start.y;
- game.client.direction = utils.clone(game.levelConfig.start.direction);
- game.client.plane = utils.clone(game.levelConfig.start.plane);
- game.client.map = game.level;
- game.client.speed = {
- rotation: 0.1,
- move: 0.2
- };
- game.client.floor = game.levelConfig.episodeFloor;
- game.client.textValue(document.getElementById("floor"),
- game.client.floor);
- game.client.time = null;
- game.client.render();
- game.client.max.speed = {
- rotation: 0.15,
- move: 0.35
- };
- game.client.keys = new player.Keys;
- game.client.keys.render();
- game.ctrl.activeKey = {};
- game.ctrl.inactiveKey = {};
- wolf3d.utils.clearFlash();
- game.engine.map = game.level;
- game.engine.backgroundRender();
- game.engine.render();
- game.showScreen("game");
- setTimeout(function () {
- game.pause = false;
- game.client.leveldone = null
- }, 1E3)
- })
- })
- }
- }, 1E3)
- });
- return !1
- }
- if (game.client.leveldone) return !1;
- 0 == game.client.health && (game.death = !0);
- if (game.death)
- if (game.client.deathCam)
- if (document.getElementById("hand")
- .style.display = "none", game.client.deathCam.rotate)
- if (("rotateRight" == game.client.deathCam.rotate && game.client.deathCam.center > game.engine.width / 2 || "rotateLeft" == game.client.deathCam.rotate && game.client.deathCam.center <= game.engine.width / 2) && (game.client.deathCam.prevCenter != game.client.deathCam.center || !game.client.deathCam.prevCenter)) game.client.deathCam.prevCenter = game.client.deathCam.center, game.client[game.client.deathCam.rotate](),
- game.engine.render();
- else {
- if (!game.restart && (game.restart = !game.engine.fizzleFade(), game.restart))
- if (audio.currentMusic && audio.stopMusic(), 0 < game.client.lives) {
- doors.process = [];
- secret.process = [];
- animation.process = [];
- ai.process = [];
- audio.process = [];
- game.level = new maps.Map(utils.clone(game.levelConfig), game.difficulty);
- game.client.deathCam = null;
- game.client.x = game.levelConfig.start.x;
- game.client.y = game.levelConfig.start.y;
- game.client.direction = utils.clone(game.levelConfig.start.direction);
- game.client.plane =
- utils.clone(game.levelConfig.start.plane);
- game.client.map = game.level;
- game.client.speed = {
- rotation: 0.1,
- move: 0.2
- };
- game.client.health = 100;
- game.client.ammo = 8;
- game.client.lives--;
- game.client.time = null;
- game.client.textValue(document.getElementById("ammo"), game.client.ammo);
- game.client.textValue(document.getElementById("health"), game.client.health);
- game.client.textValue(document.getElementById("lives"), game.client.lives);
- game.client.render();
- game.client.max.speed = {
- rotation: 0.15,
- move: 0.35
- };
- game.client.weapons = [new player.Weapon(wolf3d.utils.weapons.knife), new player.Weapon(wolf3d.utils.weapons.pistol)];
- game.client.keys = new player.Keys;
- game.client.keys.render();
- "e7m21" == game.mapName && game.client.keys.add("gold");
- for (f = 0; f < game.client.weapons.length; f++) h = game.client.weapons[f], h.animation && h.animation.callback && (h.animation.callback = utils.bind(game.client, h.animation.callback));
- game.client.activeWeapon = game.client.weapons[game.client.weapons.length - 1];
- game.client.activeWeapon.render();
- game.ctrl.activeKey = {};
- game.ctrl.inactiveKey = {};
- wolf3d.utils.clearFlash();
- game.engine.map = game.level;
- game.engine.backgroundRender();
- game.engine.render();
- document.getElementById("hand")
- .style.display = ""
- } else game.client.deathCam = null, game.roster = !0
- } else audio.playSound("playerdeath"), game.client.deathCam.center > game.engine.width / 2 ? game.client.deathCam.rotate = "rotateRight" : game.client.deathCam.center <= game.engine.width / 2 && (game.client.deathCam.rotate = "rotateLeft");
- else game.restart && (game.roster ? audio.currentMusic || (window.onkeydown =
- window.onclick = null, game.win = null, game.pause = !0, game.loop = null, game.hideScreen("game", function () {
- audio.playMusic("roster");
- game.newHighscore(game.mapName, game.client.score, game.menu)
- })) : (audio.currentMusic && audio.stopMusic(), game.engine.fizzleClear() || (game.death = !1, game.restart = !1)));
- else {
- void 0 == game.client.time || null == game.client.time ? (game.client.time = 0, game.client.total = {
- kill: game.client.map.ai.length,
- secret: game.client.map.secrets.length,
- treasure: game.client.map.treasures
- }, game.client.ratio = {
- kill: 0,
- secret: 0,
- treasure: 0
- }) : game.client.time += game.renderFrame;
- game.client.extraLife || (game.client.extraLife = 0);
- f = floor(game.client.score / 4E4);
- f > game.client.extraLife && (game.client.extraLife = f, game.client.setProperty("lives", 1) && (game.client.setProperty("health", 100), audio.playSound("bonus1up", null, !0), game.client.render(), wolf3d.utils.flashAddon()));
- audio.currentMusic || audio.playMusic(game.levelConfig.music);
- for (f = 0; f < doors.process.length; f++)
- if (e = doors.process[f], game.client.map.inDoor(game.client.x,
- game.client.y) || !(e.isOpen() && "open" == e.action)) {
- j = !1;
- for (i = 0; i < ai.process.length; i++)
- if (h = ai.process[i], h.getDistance(e.x + 0.5, e.y + 0.5) < sqrt2 && e.isOpen() && "open" == e.action) {
- j = !0;
- break
- }
- j || e.process && e.process()
- }
- for (f = 0; f < secret.process.length; f++) h = secret.process[f], h.process && h.process();
- for (f = 0; f < animation.process.length; f++) h = animation.process[f], h.process && h.process();
- for (f = 0; f < ai.process.length; f++) h = ai.process[f], h.process && h.process(game.client);
- for (scripts.process = []; audio.process.length;) h =
- audio.process.pop(), e = game.client.getDistance(h.x, h.y), f = utils.round(min(1, max(0, 25 - e) / 25), 1), 0.1 < f && audio.playSound(h.id, f, !0);
- game.auto ? game.auto() : game.ctrl.process();
- game.client.render();
- game.engine.render()
- }
- game.debug && (document.title = game.engine.fps + "fps / " + game.engine.frameTime + "ms / " + floor(1E3 / game.engine.frameTime) + "fps")
- },
- endscreenTitle: {
- transgrosse: "TRANS\nGROSSE",
- wilhelm: "BARNACLE\nWILHELM",
- ubermutant: "UBERMUTANT"
- },
- endscreenSubtitle: {
- transgrosse: "DEFEATED!",
- wilhelm: "DEFEATED!",
- ubermutant: "DEFEATED!"
- },
- newGame: function (a, b, c, d) {
- game.trackEvent("game", "new map: " + a + " diff: " + b);
- if (!a || void 0 == b || null == b || !c) return !1;
- game.mapName = a;
- game.difficulty = b;
- game.requestHTML("game", function () {
- resources.init(function () {
- game.requestJavaScript("animation,sprites,doors,secret,scripts,maps,player,ai,raycast,controller".split(","), function () {
- doors.process = [];
- secret.process = [];
- animation.process = [];
- ai.process = [];
- audio.process = [];
- maps.request(game.mapName, function () {
- game.levelConfig = wolf3d.maps[game.mapName];
- game.level =
- new maps.Map(utils.clone(game.levelConfig), game.difficulty);
- if (game.client) {
- game.client.deathCam = null;
- game.client.x = game.levelConfig.start.x;
- game.client.y = game.levelConfig.start.y;
- game.client.direction = utils.clone(game.levelConfig.start.direction);
- game.client.plane = utils.clone(game.levelConfig.start.plane);
- game.client.map = game.level;
- game.client.speed = {
- rotation: 0.1,
- move: 0.2
- };
- game.client.health = 100;
- game.client.ammo = 8;
- game.client.lives = 3;
- game.client.score = 0;
- game.client.floor = game.levelConfig.episodeFloor;
- game.client.textValue(document.getElementById("ammo"), game.client.ammo);
- game.client.textValue(document.getElementById("health"), game.client.health);
- game.client.textValue(document.getElementById("lives"), game.client.lives);
- game.client.textValue(document.getElementById("score"), game.client.score);
- game.client.textValue(document.getElementById("floor"), game.client.floor);
- game.client.render();
- game.client.max.speed = {
- rotation: 0.15,
- move: 0.35
- };
- game.client.weapons = [new player.Weapon(wolf3d.utils.weapons.knife),
-new player.Weapon(wolf3d.utils.weapons.pistol)];
- game.client.keys = new player.Keys;
- game.client.keys.render();
- game.client.time = null;
- game.client.total = null;
- game.client.ratio = null;
- for (var a = 0; a < game.client.weapons.length; a++) {
- var b = game.client.weapons[a];
- if (b.animation && b.animation.callback) b.animation.callback = utils.bind(game.client, b.animation.callback)
- }
- game.client.activeWeapon = game.client.weapons[game.client.weapons.length - 1];
- game.client.activeWeapon.render()
- } else game.client = new player.Player({
- x: game.levelConfig.start.x,
- y: game.levelConfig.start.y,
- direction: utils.clone(game.levelConfig.start.direction),
- plane: utils.clone(game.levelConfig.start.plane),
- map: game.level,
- speed: {
- rotation: 0.1,
- move: 0.2
- },
- acceleration: {
- rotation: 1.25,
- move: 1.5
- },
- decceleration: {
- rotation: 1.25,
- move: 1.1
- },
- health: 100,
- ammo: 8,
- lives: 3,
- score: 0,
- floor: 1,
- min: {
- speed: {
- rotation: 0.1,
- move: 0.2
- }
- },
- max: {
- speed: {
- rotation: 0.15,
- move: 0.35
- }
- },
- weapons: [new player.Weapon(wolf3d.utils.weapons.knife), new player.Weapon(wolf3d.utils.weapons.pistol)]
- }); if (game.engine) {
- game.engine.map =
- game.level;
- game.engine.backgroundRender();
- game.engine.maskIndex = 0;
- game.engine.maskContext.context.clearRect(0, 0, game.engine.width, game.engine.height)
- } else {
- if (localStorage.graphics) wolf3d.graphics = JSON.parse(localStorage.graphics);
- game.engine = new raycast.Engine({
- canvas: document.getElementById("view"),
- background: document.getElementById("background"),
- mask: document.getElementById("mask"),
- map: game.level,
- player: game.client,
- width: wolf3d.graphics.width,
- height: wolf3d.graphics.height
- })
- } if (game.ctrl) {
- game.ctrl.activeKey = {};
- game.ctrl.inactiveKey = {}
- } else {
- a = localStorage.ctrl ? JSON.parse(localStorage.ctrl) : controller.keys;
- utils.extend(a, {
- menu: {
- keyCode: [27],
- single: true
- },
- pause: {
- keyCode: [8],
- single: true
- },
- m: {
- keyCode: [77],
- single: true
- },
- l: {
- keyCode: [76],
- single: true
- },
- i: {
- keyCode: [73],
- single: true
- }
- });
- utils.extend(a, {
- viewInc: {
- keyCode: [107]
- },
- viewDec: {
- keyCode: [109]
- },
- viewReset: {
- keyCode: [106],
- single: true
- }
- });
- game.ctrl = new controller.Controller({
- keys: a,
- activeListeners: {
- viewInc: function () {
- var a = document.getElementById("game");
- localStorage.zoom =
- localStorage.zoom ? (round(localStorage.zoom * 100) + 1) / 100 : 1.01;
- if (a.style.zoom !== void 0) a.style.zoom = parseFloat(localStorage.zoom);
- else if (a.style.MozTransform !== void 0) a.style.MozTransform = "scale(" + localStorage.zoom + ")"
- },
- viewDec: function () {
- var a = document.getElementById("game");
- if (localStorage.zoom) {
- if (parseFloat(localStorage.zoom) > 0.1) localStorage.zoom = (round(localStorage.zoom * 100) - 1) / 100
- } else localStorage.zoom = 0.99; if (a.style.zoom !== void 0) a.style.zoom = parseFloat(localStorage.zoom);
- else if (a.style.MozTransform !==
- void 0) a.style.MozTransform = "scale(" + localStorage.zoom + ")"
- },
- viewReset: function () {
- var a = document.getElementById("game");
- if (a.style.zoom !== void 0) a.style.zoom = "";
- else if (a.style.MozTransform !== void 0) a.style.MozTransform = "";
- localStorage.removeItem("zoom")
- },
- menu: function () {
- if (game.death || game.restart || game.roster) return false;
- game.pause = true;
- game.hideScreen("game", game.gameMenu)
- },
- pause: function () {
- game.gamepause = true;
- game.pause = true;
- document.getElementById("gamepause")
- .style.display = "block";
- window.onkeydown =
- function (a) {
- if (a.keyCode != 8) {
- window.onkeydown = null;
- game.gamepause = false;
- document.getElementById("gamepause")
- .style.display = "";
- game.pause = false
- }
- }
- },
- m: function () {
- if (game.death || game.restart || game.roster) return false;
- game.m = true
- },
- l: function () {
- if (game.death || game.restart || game.roster || !game.m) return false;
- game.l = true
- },
- i: function () {
- if (game.death || game.restart || game.roster || !game.m || !game.l) return false;
- game.i = true;
- game.client.setProperty("health", 100);
- game.client.setProperty("ammo", 99);
- game.client.setProperty("score", -999999);
- game.client.keys.add("gold");
- game.client.keys.add("silver");
- if (!game.client.hasWeapon(wolf3d.utils.weapons.machineGun.id)) {
- var a = new player.Weapon(wolf3d.utils.weapons.machineGun);
- game.client.weapons.push(a);
- a = game.client.weapons[game.client.weapons.length - 1];
- if (a.animation && a.animation.callback) a.animation.callback = utils.bind(game.client, a.animation.callback);
- game.client.getActiveWeapon()
- .id < 2 && game.client.weapon(2)
- }
- if (!game.client.hasWeapon(wolf3d.utils.weapons.gatling.id)) {
- a = new player.Weapon(wolf3d.utils.weapons.gatling);
- game.client.weapons.push(a);
- a = game.client.weapons[game.client.weapons.length - 1];
- if (a.animation && a.animation.callback) a.animation.callback = utils.bind(game.client, a.animation.callback);
- game.client.weapon(3)
- }
- game.client.time = game.client.time + 6E5;
- game.client.face.setSmile(1E3);
- game.m = false;
- game.l = false;
- game.i = false;
- game.pause = true;
- game.showMessage(game.cheatStr);
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- if (a.keyCode == 13) {
- window.onkeydown = null;
- game.hideMessage();
- game.pause = false
- }
- }
- },
- left: utils.bind(game.client,
- function () {
- game.client.left();
- return false
- }),
- right: utils.bind(game.client, function () {
- game.client.right();
- return false
- }),
- strafe: utils.bind(game.client, function () {
- game.client.left = game.client.strafeLeft;
- game.client.right = game.client.strafeRight;
- return false
- }),
- run: utils.bind(game.client, function () {
- game.client.speed.rotation = game.client.max.speed.rotation;
- game.client.speed.move = game.client.max.speed.move;
- return false
- }),
- forward: utils.bind(game.client, function () {
- game.client.forward();
- return false
- }),
- backward: utils.bind(game.client,
- function () {
- game.client.backward();
- return false
- }),
- door: utils.bind(game.client, game.client.door),
- fire: utils.bind(game.client, function () {
- return game.client.getActiveWeapon()
- .fire(game.client)
- }),
- knife: utils.bind(game.client, function () {
- game.client.weapon(0)
- }),
- pistol: utils.bind(game.client, function () {
- game.client.weapon(1)
- }),
- gun: utils.bind(game.client, function () {
- game.client.weapon(2)
- }),
- machinegun: utils.bind(game.client, function () {
- game.client.weapon(3)
- })
- },
- inactiveListeners: {
- m: function () {
- game.m = false
- },
- l: function () {
- game.l =
- false
- },
- strafe: utils.bind(game.client, function () {
- game.client.left = game.client.rotateLeft;
- game.client.right = game.client.rotateRight;
- return true
- }),
- run: utils.bind(game.client, function () {
- game.client.speed.rotation = game.client.min.speed.rotation;
- game.client.speed.move = game.client.min.speed.move;
- return true
- }),
- fire: utils.bind(game.client, function () {
- return game.client.getActiveWeapon()
- .release()
- })
- }
- })
- }
- game.restart = false;
- game.death = false;
- game.roster = false;
- d && d();
- game.engine.render();
- document.getElementById("hand")
- .style.display =
- "";
- game.showScreen("game", null, function () {
- for (var a = document.querySelectorAll("*[ctrl]"), b = 0; b < a.length; b++) {
- var c = a[b];
- c.onmousedown = function (a) {
- game.mousedown = true;
- this.onmouseover(a)
- };
- c.onmouseover = function (a) {
- if (!a) a = window.event;
- if (game.mousedown)
- for (var a = a.srcElement.getAttribute("ctrl")
- .split(","), b = 0; b < a.length; b++) {
- var c = a[b];
- if (this.activeKey[c] == void 0) {
- this.activeKey[c] = true;
- delete this.inactiveKey[c]
- }
- }
- }.bind(game.ctrl);
- c.onmouseup = function (a) {
- game.mousedown = false;
- this.onmouseout(a)
- };
- c.onmouseout = function (a) {
- for (var a = a.srcElement.getAttribute("ctrl")
- .split(","), b = 0; b < a.length; b++) {
- var c = a[b];
- delete this.activeKey[c];
- this.inactiveKey[c] = true
- }
- }.bind(game.ctrl)
- }
- if (localStorage.zoom) {
- a = document.getElementById("game");
- if (a.style.zoom !== void 0) a.style.zoom = parseFloat(localStorage.zoom);
- else if (a.style.MozTransform !== void 0) a.style.MozTransform = "scale(" + localStorage.zoom + ")"
- }
- wolf3d.utils.clearFlash();
- window.onfocus = function () {
- if (game.ctrl.activeKey.strafe) {
- delete game.ctrl.activeKey.strafe;
- game.ctrl.inactiveKey.strafe = true;
- game.client.left = game.client.rotateLeft;
- game.client.right = game.client.rotateRight
- }
- if (game.ctrl.activeKey.run) {
- delete game.ctrl.activeKey.run;
- game.ctrl.inactiveKey.run = true;
- game.client.speed.rotation = game.client.min.speed.rotation;
- game.client.speed.move = game.client.min.speed.move
- }
- };
- game.loop = game.gameLoop;
- if (!game.rendering) {
- window.requestAnimationFrame(game.render);
- game.rendering = true
- }
- game.pause = false
- })
- })
- })
- }, function () {
- window.onkeydown = window.onclick = null;
- audio.stopMusic();
- audio.playSound("playerdeath");
- game.showMessage("Error loading resources!\n" + this.src.split("/")[this.src.split("/")
- .length - 1] + " not found?\nPlease check your connection\nor try again later...")
- })
- })
- },
- requestHTML: function (a, b) {
- if (document.getElementById(a)) b && b();
- else {
- var c = new XMLHttpRequest;
- c.open("GET", "html/" + a + ".html", !0);
- c.onload = function () {
- if (200 == c.status) {
- var d = document.createElement("DIV");
- d.innerHTML = c.response || c.responseText;
- document.body.appendChild(d);
- game.processFont(document.getElementById(a));
- b && setTimeout(b, 1)
- } else window.onkeydown = window.onclick = null, audio.stopMusic(), audio.playSound("playerdeath"), game.showMessage("Error loading page!\n" + a + ".html not found?\nPlease check your connection\nor try again later...")
- };
- c.send()
- }
- },
- requestJavaScript: function (a, b) {
- b()
- },
- showScreen: function (a, b, c) {
- game.trackPage(a);
- game.requestHTML(a, function () {
- var d = document.getElementById(a);
- d.className ? 0 > d.className.search("fadein") && (d.className += " fadein") : d.className = " fadein";
- game.activeScreen = a;
- b ? game.timeout =
- setTimeout(function () {
- game.timeout = null;
- d.className = d.className.replace(" fadein", "");
- game.activeScreen = null;
- if (c) game.timeout = setTimeout(c, 500)
- }, b) : c && c()
- })
- },
- hideScreen: function (a, b) {
- var c = document.getElementById(a);
- c && (c.className = c.className.replace(" fadein", ""), game.activeScreen = null, b && (game.timeout = setTimeout(b, 1E3)), window.onmouseup = null)
- },
- pc13: function () {
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- game.showScreen("pc13", 5E3, game.title);
- setTimeout(function () {
- window.onkeydown =
- window.onclick = function () {
- window.onkeydown = window.onclick = null;
- game.timeout && (clearTimeout(game.timeout), game.timeout = null);
- game.hideScreen("pc13", game.title)
- }
- }, 500)
- },
- title: function () {
- game.showScreen("title", 5E3, game.credits);
- setTimeout(function () {
- window.onkeydown = window.onclick = function () {
- window.onkeydown = window.onclick = null;
- game.timeout && (clearTimeout(game.timeout), game.timeout = null);
- game.hideScreen("title", game.menu)
- }
- }, 500)
- },
- credits: function () {
- game.showScreen("credits", 5E3, game.highscores);
- setTimeout(function () {
- window.onkeydown =
- window.onclick = function () {
- window.onkeydown = window.onclick = null;
- game.timeout && (clearTimeout(game.timeout), game.timeout = null);
- game.hideScreen("credits", game.menu)
- }
- }, 500)
- },
- highscores: function () {
- document.body.parentNode.style.backgroundColor = "#880000";
- document.body.style.backgroundColor = "#880000";
- game.requestHTML("highscores", function () {
- var a = localStorage.highscores ? JSON.parse(localStorage.highscores) : game.baseHighscores;
- a.sort(function (a, b) {
- var c = parseInt(a.score),
- d = b.score;
- return c < d ? 1 : c > d ? -1 : 0
- });
- var b =
- document.querySelector("#highscores .rows");
- b.innerHTML = "";
- for (var c = 0; 7 > c; c++) {
- var d = document.createElement("TR"),
- e = document.createElement("TD");
- e.className = "col-name";
- var f = document.createElement("DIV");
- f.className = "text highscores";
- e.appendChild(f);
- var h = document.createElement("TD");
- h.className = "col-level";
- var g = document.createElement("DIV");
- g.className = "text highscores";
- h.appendChild(g);
- var j = document.createElement("TD");
- j.className = "col-score";
- var i = document.createElement("DIV");
- i.className =
- "text highscores";
- j.appendChild(i);
- d.appendChild(e);
- d.appendChild(h);
- d.appendChild(j);
- b.appendChild(d);
- game.smallWhite.text(f, a[c].name);
- game.smallWhite.text(g, a[c].level);
- game.smallWhite.text(i, a[c].score)
- }
- });
- game.showScreen("highscores", 5E3, game.pc13);
- setTimeout(function () {
- window.onkeydown = window.onclick = function () {
- window.onkeydown = window.onclick = null;
- game.timeout && (clearTimeout(game.timeout), game.timeout = null);
- game.hideScreen("highscores", game.menu)
- }
- }, 500)
- },
- difficultyMenu: ["Can I play, Daddy?",
-"Don't hurt me.", "Bring 'em on!", "I am Death incarnate!"],
- difficultyCtrl: function (a) {
- a || (a = window.event);
- var b = document.getElementById("difficultycursor");
- if (40 == a.keyCode || 38 == a.keyCode) {
- var c = document.querySelectorAll("#difficulty .options .text"),
- d = c.length,
- e = c[b.cursorIndex];
- e.className = e.className.replace(" selected", "");
- game.largeText.text(e, game.difficultyMenu[b.cursorIndex]);
- switch (a.keyCode) {
- case 40:
- b.cursorIndex++;
- b.cursorIndex == d && (b.cursorIndex = 0);
- for (a = !1; - 1 < c[b.cursorIndex].className.search("disabled");) a = !0, b.cursorIndex++, b.cursorIndex == d && (b.cursorIndex = 0);
- audio.playSound(a ? "movegun2" : "movegun1");
- break;
- case 38:
- b.cursorIndex--;
- 0 > b.cursorIndex && (b.cursorIndex = d - 1);
- for (a = !1; - 1 < c[b.cursorIndex].className.search("disabled");) a = !0, b.cursorIndex--, 0 > b.cursorIndex && (b.cursorIndex = d - 1);
- audio.playSound(a ? "movegun2" : "movegun1")
- }
- e = c[b.cursorIndex];
- e.className += " selected";
- game.largeSelected.text(e, game.difficultyMenu[b.cursorIndex]);
- document.getElementById("difficultypicture")
- .style.backgroundPosition = "0px " +
- 96 * -b.cursorIndex + "px";
- b.style.marginTop = 36 * b.cursorIndex + "px"
- } else 13 == a.keyCode ? (window.onkeydown = window.onclick = null, audio.playSound("shoot"), game.difficulty = b.cursorIndex, document.body.parentNode.style.backgroundColor = null, document.body.style.backgroundColor = null, game.hideScreen("difficulty"), audio.currentMusic && audio.stopMusic(), setTimeout(function () {
- game.newGame(game.mapName, game.difficulty, game.tick)
- }, 500)) : 27 == a.keyCode && (window.onkeydown = window.onclick = null, audio.playSound("escpressed"),
- game.hideScreen("difficulty", game.episode))
- },
- difficultySelection: function () {
- game.showScreen("difficulty", null, function () {
- var a = document.getElementById("difficultycursor");
- a.cursorIndex = 2;
- a.style.marginTop = "72px";
- document.getElementById("difficultypicture")
- .style.backgroundPosition = "0px -192px";
- for (var a = document.querySelectorAll("#difficulty .options .text"), b = 0; b < a.length; b++) {
- var c = a[b];
- c.index = b;
- c.onmousemove = function () {
- if ("difficulty" == game.activeScreen) {
- var a = document.getElementById("difficultycursor");
- if (a.cursorIndex != this.index) {
- var b = document.querySelectorAll("#difficulty .options .text"),
- c = b[a.cursorIndex];
- c.className = c.className.replace(" selected", "");
- game.largeText.text(c, game.difficultyMenu[a.cursorIndex]);
- a.cursorIndex = this.index;
- audio.playSound("movegun1");
- c = b[a.cursorIndex];
- c.className += " selected";
- game.largeSelected.text(c, game.difficultyMenu[a.cursorIndex]);
- document.getElementById("difficultypicture")
- .style.backgroundPosition = "0px " + 96 * -a.cursorIndex + "px";
- a.style.marginTop = 36 * a.cursorIndex +
- "px"
- }
- }
- };
- c.onmouseup = function (a) {
- if ("difficulty" == game.activeScreen && (a || (a = window.event), 0 == a.button)) window.onkeydown = window.onclick = null, audio.playSound("shoot"), a = document.getElementById("difficultycursor"), game.difficulty = a.cursorIndex, document.body.parentNode.style.backgroundColor = null, document.body.style.backgroundColor = null, game.hideScreen("difficulty"), audio.currentMusic && audio.stopMusic(), setTimeout(function () {
- game.newGame(game.mapName, game.difficulty, game.tick)
- }, 500)
- }
- }
- window.onmouseup = function (a) {
- if ("difficulty" ==
- game.activeScreen && (a || (a = window.event), 0 != a.button)) window.onkeydown = window.onclick = null, audio.playSound("escpressed"), game.hideScreen("difficulty", game.episode)
- };
- c = a[2];
- 0 > c.className.search("selected") && (c.className += " selected");
- game.largeSelected.text(c, game.difficultyMenu[2]);
- for (b = 0; b < a.length; b++) 2 != b && (c = a[b], c.className = c.className.replace(" selected", ""), game.largeText.text(c, game.difficultyMenu[b]));
- setTimeout(function () {
- window.onkeydown = game.difficultyCtrl
- }, 500)
- })
- },
- episodeMenu: [],
- episodeCtrl: function (a) {
- a ||
- (a = window.event);
- for (var b = !1, c = document.getElementById("episodecursor"), d = document.querySelectorAll("#episode .options .episode"), e = 0; e < d.length; e++) game.episodeMenu[e] = d[e].getAttribute("episode");
- d = document.querySelector("#episode .options");
- if (40 == a.keyCode || 38 == a.keyCode) {
- var e = document.querySelectorAll("#episode .options .episode .text"),
- f = e.length / 2,
- h = e[2 * c.cursorIndex],
- g = e[2 * c.cursorIndex + 1];
- h.className = h.className.replace(" selected", "");
- g.className = g.className.replace(" selected", "");
- game.largeText.text(h,
- "Episode " + (c.cursorIndex + 1));
- game.largeText.text(g, game.episodeMenu[c.cursorIndex]);
- switch (a.keyCode) {
- case 40:
- c.cursorIndex++;
- c.cursorIndex == f && (c.cursorIndex = 0);
- for (h = !1; - 1 < e[2 * c.cursorIndex].className.search("disabled");) h = !0, c.cursorIndex++, c.cursorIndex == f && (c.cursorIndex = 0);
- audio.playSound(h ? "movegun2" : "movegun1");
- b = !0;
- break;
- case 38:
- c.cursorIndex--;
- 0 > c.cursorIndex && (c.cursorIndex = f - 1);
- for (h = !1; - 1 < e[2 * c.cursorIndex].className.search("disabled");) h = !0, c.cursorIndex--, 0 > c.cursorIndex && (c.cursorIndex =
- f - 1);
- audio.playSound(h ? "movegun2" : "movegun1");
- b = !0
- }
- h = e[2 * c.cursorIndex];
- g = e[2 * c.cursorIndex + 1];
- h.className += " selected";
- g.className += " selected";
- game.largeSelected.text(h, "Episode " + (c.cursorIndex + 1));
- game.largeSelected.text(g, game.episodeMenu[c.cursorIndex]);
- e = 77 * c.cursorIndex;
- c.style.top = e + "px";
- d.scrollTop = e + 77 > d.clientHeight ? d.scrollHeight - d.clientHeight : 0
- } else 13 == a.keyCode ? (audio.playSound("shoot"), window.onkeydown = window.onclick = null, game.loop ? (game.showMessage(game.curgameStr), window.onkeydown =
- function (a) {
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- game.hideMessage();
- game.mapName = "e" + (c.cursorIndex + 1) + "m1";
- game.hideScreen("episode", game.difficultySelection);
- b = true;
- break;
- case 78:
- game.hideMessage();
- game.hideScreen("episode", game.gameMenu);
- b = true;
- break;
- case 27:
- game.hideMessage();
- setTimeout(function () {
- window.onkeydown = game.episodeCtrl
- }, 500);
- b = true
- }
- }) : (game.mapName = "e" + (c.cursorIndex + 1) + "m1", game.hideScreen("episode", game.difficultySelection))) : 27 == a.keyCode && (window.onkeydown = window.onclick =
- null, audio.playSound("escpressed"), game.hideScreen("episode", game.loop ? game.gameMenu : game.menu)); if (b) return a.stopPropagation(), a.preventDefault(), !1
- },
- episode: function () {
- game.showScreen("episode", null, function () {
- var a = document.getElementById("episodecursor");
- a.cursorIndex = 0;
- a.style.top = "0px";
- for (var b = document.querySelectorAll("#episode .options .episode"), a = 0; a < b.length; a++) game.episodeMenu[a] = b[a].getAttribute("episode");
- b = document.querySelectorAll("#episode .options .episode");
- for (a = 0; a < b.length; a++) {
- var c =
- b[a];
- c.index = a;
- c.onmousemove = function () {
- if ("episode" == game.activeScreen) {
- var a = document.getElementById("episodecursor");
- if (this.index != a.cursorIndex) {
- var b = document.querySelectorAll("#episode .options .episode .text"),
- c = b[2 * a.cursorIndex],
- d = b[2 * a.cursorIndex + 1];
- c.className = c.className.replace(" selected", "");
- d.className = d.className.replace(" selected", "");
- game.largeText.text(c, "Episode " + (a.cursorIndex + 1));
- game.largeText.text(d, game.episodeMenu[a.cursorIndex]);
- a.cursorIndex = this.index;
- audio.playSound("movegun1");
- c = b[2 * a.cursorIndex];
- d = b[2 * a.cursorIndex + 1];
- c.className += " selected";
- d.className += " selected";
- game.largeSelected.text(c, "Episode " + (a.cursorIndex + 1));
- game.largeSelected.text(d, game.episodeMenu[a.cursorIndex]);
- a.style.top = 77 * a.cursorIndex + "px"
- }
- }
- };
- c.onmouseup = function (a) {
- if ("episode" == game.activeScreen && (a || (a = window.event), 0 == a.button)) {
- audio.playSound("shoot");
- window.onkeydown = window.onclick = null;
- var b = document.getElementById("episodecursor");
- game.loop ? (window.onmouseup = null, game.showMessage(game.curgameStr),
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- game.hideMessage();
- game.mapName = "e" + (b.cursorIndex + 1) + "m1";
- game.hideScreen("episode", game.difficultySelection);
- se = true;
- break;
- case 78:
- game.hideMessage();
- game.hideScreen("episode", game.gameMenu);
- se = true;
- break;
- case 27:
- game.hideMessage();
- setTimeout(function () {
- window.onmouseup = function (a) {
- if (!a) a = window.event;
- if (a.button != 0) {
- window.onkeydown = window.onclick = null;
- audio.playSound("escpressed");
- game.hideScreen("episode", game.loop ?
- game.gameMenu : game.menu)
- }
- };
- window.onkeydown = game.episodeCtrl
- }, 500);
- se = true
- }
- if (se) {
- a.stopPropagation();
- a.preventDefault();
- return false
- }
- }) : (game.mapName = "e" + (b.cursorIndex + 1) + "m1", game.hideScreen("episode", game.difficultySelection))
- }
- }
- }
- window.onmouseup = function (a) {
- if ("episode" == game.activeScreen && (a || (a = window.event), 0 != a.button)) window.onkeydown = window.onclick = null, audio.playSound("escpressed"), game.hideScreen("episode", game.loop ? game.gameMenu : game.menu)
- };
- var b = document.querySelectorAll("#episode .options .episode .text"),
- c = b[0],
- d = b[1];
- 0 > c.className.search("selected") && (c.className += " selected");
- 0 > d.className.search("selected") && (d.className += " selected");
- game.largeSelected.text(c, "Episode 1");
- game.largeSelected.text(d, game.episodeMenu[0]);
- for (a = 1; a < b.length / 2; a++) c = b[2 * a], d = b[2 * a + 1], c.className = c.className.replace(" selected", ""), d.className = d.className.replace(" selected", ""), game.largeText.text(c, "Episode " + (a + 1)), game.largeText.text(d, game.episodeMenu[a]);
- setTimeout(function () {
- window.onkeydown = game.episodeCtrl
- },
- 500)
- })
- },
- detailCtrl: function (a) {
- a || (a = window.event);
- var b = document.getElementById("detailcursor");
- switch (a.keyCode) {
- case 40:
- audio.playSound("movegun1");
- b.cursorIndex++;
- 8 == b.cursorIndex && (b.cursorIndex = 0);
- game.detail();
- break;
- case 38:
- audio.playSound("movegun1");
- b.cursorIndex--;
- 0 > b.cursorIndex && (b.cursorIndex = 7);
- game.detail();
- break;
- case 13:
- window.onkeydown = window.onclick = null;
- audio.playSound("shoot");
- a = {
- width: 160 * (b.cursorIndex + 1),
- height: 120 * (b.cursorIndex + 1)
- };
- wolf3d.graphics = a;
- localStorage.graphics =
- JSON.stringify(a);
- game.engine && (game.engine.setResolution(a.width, a.height), game.loop && game.engine.render());
- game.hideScreen("detail", game.loop ? game.gameMenu : game.menu);
- break;
- case 32:
- audio.playSound("shoot");
- a = {
- width: 160 * (b.cursorIndex + 1),
- height: 120 * (b.cursorIndex + 1)
- };
- wolf3d.graphics = a;
- localStorage.graphics = JSON.stringify(a);
- game.engine && (game.engine.setResolution(a.width, a.height), game.loop && game.engine.render());
- game.detail();
- break;
- case 27:
- window.onkeydown = window.onclick = null, audio.playSound("escpressed"),
- game.hideScreen("detail", game.loop ? game.gameMenu : game.menu)
- }
- },
- detail: function () {
- game.showScreen("detail", null, function () {
- var a = wolf3d.graphics;
- localStorage.graphics && (a = JSON.parse(localStorage.graphics));
- var b = document.getElementById("detailcursor");
- if (void 0 == b.cursorIndex || null == b.cursorIndex) b.cursorIndex = a.width / 160 - 1;
- b.style.top = 44 * b.cursorIndex + "px";
- var c = document.querySelectorAll("#detail .options tr");
- window.onmouseup = function (a) {
- if ("detail" == game.activeScreen && (a || (a = window.event), 0 != a.button)) window.onkeydown =
- window.onclick = null, audio.playSound("escpressed"), game.hideScreen("detail", game.loop ? game.gameMenu : game.menu)
- };
- for (var d = 0; d < c.length; d++) {
- var e = c[d];
- e.index = d;
- e.onmousemove = function () {
- if ("detail" == game.activeScreen) {
- var a = document.getElementById("detailcursor");
- a.cursorIndex != this.index && (a.cursorIndex = this.index, audio.playSound("movegun1"), game.detail())
- }
- };
- e.onmouseup = function (a) {
- if ("detail" == game.activeScreen && (a || (a = window.event), 0 == a.button)) a = document.getElementById("detailcursor"), audio.playSound("shoot"),
- a = {
- width: 160 * (a.cursorIndex + 1),
- height: 120 * (a.cursorIndex + 1)
- }, wolf3d.graphics = a, localStorage.graphics = JSON.stringify(a), game.engine && (game.engine.setResolution(a.width, a.height), game.loop && game.engine.render()), game.detail()
- };
- var e = c[d].querySelectorAll(".text"),
- f = c[d].querySelector(".switch");
- a.width == 160 * (d + 1) ? 0 > f.className.search("selected") && (f.className += " selected") : f.className = f.className.replace(" selected", "");
- if (d == b.cursorIndex)
- for (f = 0; f < e.length; f++) 0 > e[f].className.search("selected") &&
- (e[f].className += " selected"), 0 == f ? game.largeSelected.text(e[f], (160 * (d + 1))
- .toString()) : 1 == f ? game.largeSelected.text(e[f], "x") : 2 == f && game.largeSelected.text(e[f], (120 * (d + 1))
- .toString());
- else
- for (f = 0; f < e.length; f++) e[f].className = e[f].className.replace(" selected", ""), 0 == f ? game.largeText.text(e[f], (160 * (d + 1))
- .toString()) : 1 == f ? game.largeText.text(e[f], "x") : 2 == f && game.largeText.text(e[f], (120 * (d + 1))
- .toString())
- }
- window.onkeydown != game.detailCtrl && setTimeout(function () {
- window.onkeydown = game.detailCtrl
- },
- 500)
- })
- },
- soundCtrl: function (a) {
- a || (a = window.event);
- switch (a.keyCode) {
- case 38:
- case 40:
- audio.playSound("movegun1");
- a = document.getElementById("soundcursor");
- a.className = -1 < a.className.search("sound") ? a.className.replace(" sound", " music") : a.className.replace(" music", " sound");
- break;
- case 37:
- a = document.getElementById("soundcursor");
- if (-1 < a.className.search("sound")) {
- if (0 < audio.soundsVolume) {
- audio.playSound("movegun2");
- var a = document.querySelector("#sound .soundoption .thumb"),
- b = document.querySelector("#sound .soundoption .text.readthis"),
- c = round(100 * audio.soundsVolume) - 10;
- audio.setSoundsVolume(c / 100);
- a.style.marginLeft = floor(5.5 * c) + "px";
- b.style.marginLeft = 150 + floor(5 * c) + "px";
- game.largeReadthis.text(b, c + "%")
- }
- } else 0 < audio.musicVolume && (audio.playSound("movegun2"), a = document.querySelector("#sound .musicoption .thumb"), b = document.querySelector("#sound .musicoption .text.readthis"), c = round(100 * audio.musicVolume) - 10, audio.setMusicVolume(c / 100), a.style.marginLeft = floor(5.5 * c) + "px", b.style.marginLeft = 150 + floor(5 * c) + "px", game.largeReadthis.text(b,
- c + "%"));
- break;
- case 39:
- a = document.getElementById("soundcursor"); - 1 < a.className.search("sound") ? 1 > audio.soundsVolume && (audio.playSound("movegun2"), a = document.querySelector("#sound .soundoption .thumb"), b = document.querySelector("#sound .soundoption .text.readthis"), c = round(100 * audio.soundsVolume) + 10, audio.setSoundsVolume(c / 100), a.style.marginLeft = floor(5.5 * c) + "px", b.style.marginLeft = 150 + floor(5 * c) + "px", game.largeReadthis.text(b, c + "%")) : 1 > audio.musicVolume && (audio.playSound("movegun2"), a = document.querySelector("#sound .musicoption .thumb"),
- b = document.querySelector("#sound .musicoption .text.readthis"), c = round(100 * audio.musicVolume) + 10, audio.setMusicVolume(c / 100), a.style.marginLeft = floor(5.5 * c) + "px", b.style.marginLeft = 150 + floor(5 * c) + "px", game.largeReadthis.text(b, c + "%"));
- break;
- case 13:
- case 27:
- window.onkeydown = window.onclick = null, audio.playSound("escpressed"), game.hideScreen("sound", game.loop ? game.gameMenu : game.menu)
- }
- },
- sound: function () {
- game.showScreen("sound", null, function () {
- document.querySelector("#sound .soundoption")
- .onmousemove = function () {
- if ("sound" ==
- game.activeScreen) {
- var a = document.getElementById("soundcursor"); - 1 < a.className.search("sound") || (audio.playSound("movegun1"), a.className = a.className.replace(" music", " sound"))
- }
- };
- document.querySelector("#sound .musicoption")
- .onmousemove = function () {
- if ("sound" == game.activeScreen) {
- var a = document.getElementById("soundcursor"); - 1 < a.className.search("music") || (audio.playSound("movegun1"), a.className = a.className.replace(" sound", " music"))
- }
- };
- document.querySelector("#sound .soundoption .bar")
- .onmouseup = function (a) {
- if ("sound" ==
- game.activeScreen && (a || (a = window.event), 0 == a.button)) {
- audio.playSound("movegun2");
- var b = document.querySelector("#sound .soundoption .thumb"),
- c = document.querySelector("#sound .soundoption .text.readthis"),
- a = 10 * round(10 * (a.offsetX / this.clientWidth));
- audio.setSoundsVolume(a / 100);
- b.style.marginLeft = floor(5.5 * a) + "px";
- c.style.marginLeft = 150 + floor(5 * a) + "px";
- game.largeReadthis.text(c, a + "%")
- }
- };
- document.querySelector("#sound .musicoption .bar")
- .onmouseup = function (a) {
- if ("sound" == game.activeScreen && (a || (a = window.event),
- 0 == a.button)) {
- audio.playSound("movegun2");
- var b = document.querySelector("#sound .musicoption .thumb"),
- c = document.querySelector("#sound .musicoption .text.readthis"),
- a = 10 * round(10 * (a.offsetX / this.clientWidth));
- audio.setMusicVolume(a / 100);
- b.style.marginLeft = floor(5.5 * a) + "px";
- c.style.marginLeft = 150 + floor(5 * a) + "px";
- game.largeReadthis.text(c, a + "%")
- }
- };
- window.onmouseup = function (a) {
- if ("sound" == game.activeScreen && (a || (a = window.event), 0 != a.button)) window.onkeydown = window.onclick = null, audio.playSound("escpressed"),
- game.hideScreen("sound", game.loop ? game.gameMenu : game.menu)
- };
- var a = document.querySelector("#sound .soundoption .thumb"),
- b = document.querySelector("#sound .soundoption .text.readthis"),
- c = round(100 * audio.soundsVolume);
- a.style.marginLeft = floor(5.5 * c) + "px";
- b.style.marginLeft = 150 + floor(5 * c) + "px";
- game.largeReadthis.text(b, c + "%");
- a = document.querySelector("#sound .musicoption .thumb");
- b = document.querySelector("#sound .musicoption .text.readthis");
- c = round(100 * audio.musicVolume);
- a.style.marginLeft = floor(5.5 *
- c) + "px";
- b.style.marginLeft = 150 + floor(5 * c) + "px";
- game.largeReadthis.text(b, c + "%");
- window.onkeydown != game.soundCtrl && setTimeout(function () {
- window.onkeydown = game.soundCtrl
- }, 500)
- })
- },
- customizeCtrl: function (a) {
- a || (a = window.event);
- var b = document.getElementById("customizecursor"),
- c = document.querySelectorAll("#customize table.option:not(.disabled)");
- switch (a.keyCode) {
- case 40:
- void 0 == b.posIndex || null == b.posIndex ? (audio.playSound("movegun2"), b.cursorIndex++, b.cursorIndex == c.length && (b.cursorIndex = 0)) : (audio.playSound("escpressed"),
- b.posIndex = null);
- game.customize();
- break;
- case 38:
- void 0 == b.posIndex || null == b.posIndex ? (audio.playSound("movegun2"), b.cursorIndex--, 0 > b.cursorIndex && (b.cursorIndex = c.length - 1)) : (audio.playSound("escpressed"), b.posIndex = null);
- game.customize();
- break;
- case 37:
- void 0 != b.posIndex && null != b.posIndex && (audio.playSound("movegun2"), b.posIndex--, 0 > b.posIndex && (b.posIndex = 3), game.customize());
- break;
- case 39:
- void 0 != b.posIndex && null != b.posIndex && (audio.playSound("movegun2"), b.posIndex++, 4 == b.posIndex && (b.posIndex =
- 0), game.customize());
- break;
- case 13:
- audio.playSound("shoot");
- void 0 == b.posIndex || null == b.posIndex ? b.posIndex = 0 : b.wait = !0;
- game.customize();
- break;
- case 27:
- audio.playSound("escpressed"), void 0 == b.posIndex || null == b.posIndex ? (window.onkeydown = window.onclick = null, game.hideScreen("customize", game.loop ? game.gameMenu : game.menu)) : (b.posIndex = null, game.customize())
- }
- },
- customize: function () {
- game.showScreen("customize", null, function () {
- localStorage.ctrl && (controller.keys = JSON.parse(localStorage.ctrl));
- var a = document.getElementById("customizecursor"),
- b = document.querySelectorAll("#customize table.option:not(.disabled)"),
- c = document.querySelectorAll("#customize table.option");
- a.parentNode.removeChild(a);
- if (void 0 == a.cursorIndex || null == a.cursorIndex) a.cursorIndex = 0;
- b[a.cursorIndex].querySelector("td")
- .appendChild(a);
- for (var d = 0; d < b.length; d++) {
- var e = b[d].querySelectorAll(".text");
- e[0].className = "text";
- e[1].className = "text";
- e[2].className = "text";
- e[3].className = "text";
- b[d] == b[a.cursorIndex] && void 0 != a.posIndex && null != a.posIndex && (e[a.posIndex].className =
- "text readme change");
- b[d] == c[2] ? b[d] == b[a.cursorIndex] ? (0 == a.posIndex ? game.largeReadme.text(e[0], game.keyNames[game.ctrl ? game.ctrl.keys.run.keyCode[0] : controller.keys.run.keyCode[0]]) : game.largeSelected.text(e[0], game.keyNames[game.ctrl ? game.ctrl.keys.run.keyCode[0] : controller.keys.run.keyCode[0]]), 1 == a.posIndex ? game.largeReadme.text(e[1], game.keyNames[game.ctrl ? game.ctrl.keys.door.keyCode[0] : controller.keys.door.keyCode[0]]) : game.largeSelected.text(e[1], game.keyNames[game.ctrl ? game.ctrl.keys.door.keyCode[0] :
- controller.keys.door.keyCode[0]]), 2 == a.posIndex ? game.largeReadme.text(e[2], game.keyNames[game.ctrl ? game.ctrl.keys.fire.keyCode[0] : controller.keys.fire.keyCode[0]]) : game.largeSelected.text(e[2], game.keyNames[game.ctrl ? game.ctrl.keys.fire.keyCode[0] : controller.keys.fire.keyCode[0]]), 3 == a.posIndex ? game.largeReadme.text(e[3], game.keyNames[game.ctrl ? game.ctrl.keys.strafe.keyCode[0] : controller.keys.strafe.keyCode[0]]) : game.largeSelected.text(e[3], game.keyNames[game.ctrl ? game.ctrl.keys.strafe.keyCode[0] :
- controller.keys.strafe.keyCode[0]])) : (game.largeText.text(e[0], game.keyNames[game.ctrl ? game.ctrl.keys.run.keyCode[0] : controller.keys.run.keyCode[0]]), game.largeText.text(e[1], game.keyNames[game.ctrl ? game.ctrl.keys.door.keyCode[0] : controller.keys.door.keyCode[0]]), game.largeText.text(e[2], game.keyNames[game.ctrl ? game.ctrl.keys.fire.keyCode[0] : controller.keys.fire.keyCode[0]]), game.largeText.text(e[3], game.keyNames[game.ctrl ? game.ctrl.keys.strafe.keyCode[0] : controller.keys.strafe.keyCode[0]])) : b[d] ==
- c[3] && (b[d] == b[a.cursorIndex] ? (0 == a.posIndex ? game.largeReadme.text(e[0], game.keyNames[game.ctrl ? game.ctrl.keys.left.keyCode[0] : controller.keys.left.keyCode[0]]) : game.largeSelected.text(e[0], game.keyNames[game.ctrl ? game.ctrl.keys.left.keyCode[0] : controller.keys.left.keyCode[0]]), 1 == a.posIndex ? game.largeReadme.text(e[1], game.keyNames[game.ctrl ? game.ctrl.keys.right.keyCode[0] : controller.keys.right.keyCode[0]]) : game.largeSelected.text(e[1], game.keyNames[game.ctrl ? game.ctrl.keys.right.keyCode[0] : controller.keys.right.keyCode[0]]),
- 2 == a.posIndex ? game.largeReadme.text(e[2], game.keyNames[game.ctrl ? game.ctrl.keys.forward.keyCode[0] : controller.keys.forward.keyCode[0]]) : game.largeSelected.text(e[2], game.keyNames[game.ctrl ? game.ctrl.keys.forward.keyCode[0] : controller.keys.forward.keyCode[0]]), 3 == a.posIndex ? game.largeReadme.text(e[3], game.keyNames[game.ctrl ? game.ctrl.keys.backward.keyCode[0] : controller.keys.backward.keyCode[0]]) : game.largeSelected.text(e[3], game.keyNames[game.ctrl ? game.ctrl.keys.backward.keyCode[0] : controller.keys.backward.keyCode[0]])) :
- (game.largeText.text(e[0], game.keyNames[game.ctrl ? game.ctrl.keys.left.keyCode[0] : controller.keys.left.keyCode[0]]), game.largeText.text(e[1], game.keyNames[game.ctrl ? game.ctrl.keys.right.keyCode[0] : controller.keys.right.keyCode[0]]), game.largeText.text(e[2], game.keyNames[game.ctrl ? game.ctrl.keys.forward.keyCode[0] : controller.keys.forward.keyCode[0]]), game.largeText.text(e[3], game.keyNames[game.ctrl ? game.ctrl.keys.backward.keyCode[0] : controller.keys.backward.keyCode[0]])))
- }
- if (a.wait) {
- var f = b[a.cursorIndex].querySelectorAll(".text")[a.posIndex];
- f.className = "text readme change wait";
- f.style.width = f.offsetWidth + "px";
- game.largeReadme.text(f, "?");
- window.onkeydown = function (d) {
- window.onkeydown = null;
- a.wait = null;
- f.style.width = null;
- if (!d) d = window.event;
- if (game.keyNames[d.keyCode]) {
- audio.playSound("shoot");
- if (b[a.cursorIndex] == c[2])
- if (a.posIndex == 0) game.ctrl ? game.ctrl.keys.run.keyCode = [d.keyCode] : controller.keys.run.keyCode = [d.keyCode];
- else if (a.posIndex == 1) game.ctrl ? game.ctrl.keys.door.keyCode = [d.keyCode] : controller.keys.door.keyCode = [d.keyCode];
- else if (a.posIndex == 2) game.ctrl ? game.ctrl.keys.fire.keyCode = [d.keyCode] : controller.keys.fire.keyCode = [d.keyCode];
- else {
- if (a.posIndex == 3) game.ctrl ? game.ctrl.keys.strafe.keyCode = [d.keyCode] : controller.keys.strafe.keyCode = [d.keyCode]
- } else if (b[a.cursorIndex] == c[3])
- if (a.posIndex == 0) game.ctrl ? game.ctrl.keys.left.keyCode = [d.keyCode] : controller.keys.left.keyCode = [d.keyCode];
- else if (a.posIndex == 1) game.ctrl ? game.ctrl.keys.right.keyCode = [d.keyCode] : controller.keys.right.keyCode = [d.keyCode];
- else if (a.posIndex ==
- 2) game.ctrl ? game.ctrl.keys.forward.keyCode = [d.keyCode] : controller.keys.forward.keyCode = [d.keyCode];
- else if (a.posIndex == 3) game.ctrl ? game.ctrl.keys.backward.keyCode = [d.keyCode] : controller.keys.backward.keyCode = [d.keyCode];
- localStorage.ctrl = game.ctrl ? JSON.stringify(game.ctrl.keys) : JSON.stringify(controller.keys)
- } else audio.playSound("escpressed");
- game.customize()
- }
- } else window.onkeydown != game.customizeCtrl && setTimeout(function () {
- window.onmouseup = function (a) {
- if (game.activeScreen == "customize") {
- if (!a) a =
- window.event;
- if (a.button != 0) {
- window.onkeydown = window.onclick = null;
- audio.playSound("escpressed");
- game.hideScreen("customize", game.loop ? game.gameMenu : game.menu)
- }
- }
- };
- window.onkeydown = game.customizeCtrl
- }, 500)
- })
- },
- keyNames: {
- 13: "Enter",
- 16: "Shift",
- 17: "Ctrl",
- 18: "Alt",
- 32: "Space",
- 37: "Left",
- 38: "Up",
- 39: "Right",
- 40: "Down",
- 65: "A",
- 66: "B",
- 67: "C",
- 68: "D",
- 69: "E",
- 70: "F",
- 71: "G",
- 72: "H",
- 73: "I",
- 74: "J",
- 75: "K",
- 76: "L",
- 77: "M",
- 78: "N",
- 79: "O",
- 80: "P",
- 81: "Q",
- 82: "R",
- 83: "S",
- 84: "T",
- 85: "U",
- 86: "V",
- 87: "W",
- 88: "X",
- 89: "Y",
- 90: "Z"
- },
- baseHighscores: [{
- name: "id software-'92",
- level: "E1/L1",
- score: "10000"
- }, {
- name: "Adrian Carmack",
- level: "E1/L1",
- score: "10000"
- }, {
- name: "John Carmack",
- level: "E1/L1",
- score: "10000"
- }, {
- name: "Kevin Cloud",
- level: "E1/L1",
- score: "10000"
- }, {
- name: "Tom Hall",
- level: "E1/L1",
- score: "10000"
- }, {
- name: "John Romero",
- level: "E1/L1",
- score: "10000"
- }, {
- name: "Jay Wilbur",
- level: "E1/L1",
- score: "10000"
- }],
- newHighscore: function (a, b, c) {
- audio.currentMusic && audio.stopMusic();
- audio.playMusic("roster");
- game.showScreen("highscores", null, function () {
- audio.playMusic("roster");
- var d = 0,
- e = localStorage.highscores ?
- JSON.parse(localStorage.highscores) : game.baseHighscores;
- e.sort(function (a, b) {
- var c = parseInt(a.score),
- d = b.score;
- return c < d ? 1 : c > d ? -1 : 0
- });
- var f = document.querySelector("#highscores .rows");
- f.innerHTML = "";
- for (var h = 0; 7 > h; h++) {
- parseInt(e[h].score) > b && d++;
- var g = document.createElement("TR"),
- j = document.createElement("TD");
- j.className = "col-name";
- var i = document.createElement("DIV");
- i.className = "text highscores";
- j.appendChild(i);
- var m = document.createElement("TD");
- m.className = "col-level";
- var l = document.createElement("DIV");
- l.className = "text highscores";
- m.appendChild(l);
- var p = document.createElement("TD");
- p.className = "col-score";
- var q = document.createElement("DIV");
- q.className = "text highscores";
- p.appendChild(q);
- g.appendChild(j);
- g.appendChild(m);
- g.appendChild(p);
- f.appendChild(g);
- game.smallWhite.text(i, e[h].name);
- game.smallWhite.text(l, e[h].level);
- game.smallWhite.text(q, e[h].score)
- }
- if (b < parseInt(e[6].score)) setTimeout(function () {
- window.onkeydown = window.onclick = function () {
- window.onkeydown = window.onclick = null;
- audio.playSound("escpressed");
- game.hideScreen("highscores", c)
- }
- }, 1E3);
- else {
- f = document.querySelectorAll("#highscores .rows tr");
- f[0].parentNode.removeChild(f[f.length - 1]);
- g = document.createElement("TR");
- j = document.createElement("TD");
- j.className = "col-name";
- i = document.createElement("DIV");
- i.className = "text highscores beforecursor";
- j.appendChild(i);
- var n = document.createElement("DIV");
- n.className = "textcursor";
- j.appendChild(n);
- m = document.createElement("TD");
- m.className = "col-level";
- l = document.createElement("DIV");
- l.className = "text highscores";
- m.appendChild(l);
- p = document.createElement("TD");
- p.className = "col-score";
- q = document.createElement("DIV");
- q.className = "text highscores";
- p.appendChild(q);
- g.appendChild(j);
- g.appendChild(m);
- g.appendChild(p);
- f[0].parentNode.insertBefore(g, f[d]);
- var o = "E" + a.substring(1, 2) + "/L" + a.substring(3),
- r = b.toString();
- game.smallWhite.text(i, "");
- game.smallWhite.text(l, o);
- game.smallWhite.text(q, r);
- n.style.marginLeft = i.offsetWidth + "px";
- var s = "";
- window.onkeydown = function (a) {
- a || (a = window.event);
- var b = a.keyCode;
- if (i.children.length &&
- 13 == b) window.onkeydown = null, audio.playSound("shoot"), n.style.display = "none", e.push({
- name: s,
- level: o,
- score: r
- }), e.sort(function (a, b) {
- var c = parseInt(a.score),
- d = b.score;
- return c < d ? 1 : c > d ? -1 : 0
- }), localStorage.highscores = JSON.stringify(e), game.hideScreen("highscores", c);
- else {
- if (8 == b) return i.children.length && (i.removeChild(i.lastChild), n.style.marginLeft = i.offsetWidth + "px", s = s.substring(0, s.length - 1)), a.stopPropagation(), a.preventDefault(), !1;
- if (15 > i.children.length && (32 == b || 47 < b && 91 > b || 105 < b && 112 > b && 108 !=
- b || 185 < b && 193 > b || 218 < b && 223 > b)) {
- var d = "";
- if (47 < b && 58 > b) d = String.fromCharCode(b);
- else if (64 < b && 91 > b) a.shiftKey || (b += 32), d = String.fromCharCode(b);
- else switch (b) {
- case 32:
- d = " ";
- break;
- case 106:
- d = "*";
- break;
- case 107:
- d = "+";
- break;
- case 109:
- d = "-";
- break;
- case 110:
- d = ".";
- break;
- case 111:
- d = "/";
- break;
- case 186:
- d = ";";
- break;
- case 187:
- d = "=";
- break;
- case 188:
- d = ",";
- break;
- case 189:
- d = "-";
- break;
- case 190:
- d = ".";
- break;
- case 191:
- d = "/";
- break;
- case 192:
- d = "'";
- break;
- case 219:
- d = "(";
- break;
- case 220:
- d = "\\";
- break;
- case 221:
- d = ")";
- break;
- case 222:
- d =
- "'"
- }
- game.smallWhite.images[d.charCodeAt(0) - 1] && (a = i.innerHTML, game.smallWhite.text(i, d), i.innerHTML = a + i.innerHTML, n.style.marginLeft = i.offsetWidth + "px", s += d)
- }
- }
- }
- }
- })
- },
- newLoadGame: function (a) {
- game.newGame(a.mapName.slice(0, 3) + a.player.floor, a.difficulty, game.tick, function () {
- game.mapName = a.mapName;
- a.average && (game.average = JSON.parse(JSON.stringify(a.average)));
- game.client.x = a.player.x;
- game.client.y = a.player.y;
- game.client.prevX = a.player.prevX;
- game.client.prevY = a.player.prevY;
- game.client.direction = {
- x: a.player.direction.x,
- y: a.player.direction.y
- };
- game.client.plane = {
- x: a.player.plane.x,
- y: a.player.plane.y
- };
- game.client.lives = a.player.lives;
- game.client.score = a.player.score;
- game.client.health = a.player.health;
- game.client.ammo = a.player.ammo;
- if (-1 < a.player.weapons.indexOf(2)) {
- var b = new player.Weapon(wolf3d.utils.weapons.machineGun);
- game.client.weapons.push(b);
- b = game.client.weapons[game.client.weapons.length - 1];
- b.animation && b.animation.callback && (b.animation.callback = utils.bind(game.client, b.animation.callback))
- } - 1 < a.player.weapons.indexOf(3) &&
- (b = new player.Weapon(wolf3d.utils.weapons.gatling), game.client.weapons.push(b), b = game.client.weapons[game.client.weapons.length - 1], b.animation && b.animation.callback && (b.animation.callback = utils.bind(game.client, b.animation.callback)));
- game.client.weapon(a.player.activeWeapon);
- game.client.keys.keys = a.player.keys;
- game.client.time = a.player.time;
- game.client.total = utils.clone(a.player.total);
- game.client.ratio = utils.clone(a.player.ratio);
- game.client.textValue(document.getElementById("ammo"), game.client.ammo);
- game.client.textValue(document.getElementById("health"), game.client.health);
- game.client.textValue(document.getElementById("lives"), game.client.lives);
- game.client.textValue(document.getElementById("score"), game.client.score);
- game.client.render();
- game.client.keys.render();
- game.client.extraLife = floor(game.client.score / 4E4);
- for (b = 0; b < a.doors.length; b++) {
- var c = a.doors[b],
- d = game.client.map.getDoor(c.x, c.y);
- d && (d.slide = c.slide, d.delayTimer = c.delayTimer, d.action = c.action, c.process && ("open" == c.action ? d.close() :
- "close" == c.action && d.open(), audio.process.pop()))
- }
- for (b = 0; b < a.spriteHistory.add.length; b++) game.client.map.addSprite(new sprites.Sprite(eval(a.spriteHistory.add[b])));
- for (b = 0; b < a.spriteHistory.remove.length; b++)
- for (c = 0; c < game.client.map.sprites.length; c++) a.spriteHistory.remove[b] == game.client.map.sprites[c].eval && game.client.map.removeSprite(game.client.map.sprites[c]);
- for (b = 0; b < a.aiHistory.add.length; b++) game.client.map.addAI(eval(a.aiHistory.add[b]));
- for (b = 0; b < game.client.map.ai.length; b++)
- if (c =
- game.client.map.ai[b], d = a.ai[c.eval]) {
- c.x = d.x;
- c.y = d.y;
- c.baseX = d.baseX;
- c.baseY = d.baseY;
- c.prevX = d.prevX;
- c.prevY = d.prevY;
- c.detailX = d.detailX;
- c.detailY = d.detailY;
- c.hitpoints = d.hitpoints;
- c.angle = d.angle;
- c.slide = d.slide;
- c.timer = d.timer;
- c.direction = {
- x: d.direction.x,
- y: d.direction.y
- };
- c.hit = d.hit;
- c.animations.current = d.animations.current;
- c.action = c[d.action];
- d.process || (c.action = null, c.process = null);
- for (var e in d.animations)
- if ("object" == typeof d.animations[e]) {
- var f = c.animations[e],
- h = d.animations[e];
- f && (f.keyframe =
- h.keyframe, f.state = h.state, f.speed = h.speed, f.count = h.count, f.step = h.step, f.index = h.index, f.timer = h.timer, f.stopping = h.stopping, f.process = h.process ? f[h.process] : f.process, f.process && 0 > animation.process.indexOf(f) && animation.process.push(f))
- }
- delete a.ai[c.eval]
- }
- for (b = 0; b < game.client.map.secrets.length; b++)
- if (e = game.client.map.secrets[b], -1 < a.secretsHistory.remove.indexOf(e.eval) && game.client.map.removeSecret(e), (c = a.secrets[e.eval]) && c.direction) e.x = c.x, e.y = c.y, e.state = c.state, e.direction = {
- x: c.direction.x,
- y: c.direction.y
- }, e.process = utils.bind(e, e.move), 0 > secret.process.indexOf(e) && secret.process.push(e);
- game.client.map.map = JSON.parse(JSON.stringify(a.map));
- game.client.map.hit = JSON.parse(JSON.stringify(a.hit))
- })
- },
- loadGameCtrl: function (a) {
- a || (a = window.event);
- var b = document.getElementById("loadcursor");
- switch (a.keyCode) {
- case 40:
- audio.playSound("movegun1");
- b.cursorIndex++;
- b.cursorIndex == game.slots.length && (b.cursorIndex = 0);
- game.loadGame();
- break;
- case 38:
- audio.playSound("movegun1");
- b.cursorIndex--;
- 0 > b.cursorIndex &&
- (b.cursorIndex = game.slots.length - 1);
- game.loadGame();
- break;
- case 13:
- window.onkeydown = window.onclick = null;
- if (game.slots[b.cursorIndex]) {
- audio.playSound("shoot");
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- var c = game.slots[b.cursorIndex];
- game.hideScreen("loadgame", function () {
- audio.currentMusic && audio.stopMusic();
- game.newLoadGame(c)
- })
- }
- break;
- case 27:
- window.onkeydown = window.onclick = null, audio.playSound("escpressed"), game.hideScreen("loadgame", game.loop ? game.gameMenu :
- game.menu)
- }
- },
- loadGame: function () {
- game.showScreen("loadgame", null, function () {
- var a = document.getElementById("loadcursor");
- if (void 0 == a.cursorIndex || null == a.cursorIndex) a.cursorIndex = 0;
- a.style.top = 38 * a.cursorIndex + "px";
- var b = document.querySelectorAll("#loadgame .options .slot");
- game.slots = localStorage.slots ? JSON.parse(localStorage.slots) : [null, null, null, null, null, null, null, null, null, null];
- for (var c = 0; c < b.length; c++) {
- var d = b[c];
- d.index = c;
- d.onmousemove = function () {
- if ("loadgame" == game.activeScreen) {
- var a =
- document.getElementById("loadcursor");
- a.cursorIndex != this.index && (a.cursorIndex = this.index, audio.playSound("movegun1"), game.loadGame())
- }
- };
- d.onmouseup = function (a) {
- if ("loadgame" == game.activeScreen && (a || (a = window.event), 0 == a.button))
- if (window.onkeydown = window.onclick = null, game.slots[this.index]) {
- audio.playSound("shoot");
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- var b = game.slots[this.index];
- game.hideScreen("loadgame", function () {
- audio.currentMusic && audio.stopMusic();
- game.newLoadGame(b)
- })
- }
- };
- b[c].className = game.slots[c] ? "slot" + (c == a.cursorIndex ? " selected" : "") : "slot empty" + (c == a.cursorIndex ? " selected" : "");
- game[c == a.cursorIndex ? "smallWhite" : "smallText"].text(b[c].querySelector(".text"), game.slots[c] ? game.slots[c].name : "- empty -")
- }
- window.onmouseup = function (a) {
- if ("loadgame" == game.activeScreen && (a || (a = window.event), 0 != a.button)) window.onkeydown = window.onclick = null, audio.playSound("escpressed"), game.hideScreen("loadgame", game.loop ? game.gameMenu : game.menu)
- };
- window.onkeydown !=
- game.loadGameCtrl && setTimeout(function () {
- window.onkeydown = game.loadGameCtrl
- }, 500)
- })
- },
- newSaveGame: function () {
- for (var a = {
- name: "",
- mapName: game.mapName,
- difficulty: game.difficulty,
- average: game.average,
- player: {
- x: game.client.x,
- y: game.client.y,
- prevX: game.client.prevX,
- prevY: game.client.prevY,
- direction: game.client.direction,
- plane: game.client.plane,
- floor: game.client.floor,
- lives: game.client.lives,
- score: game.client.score,
- health: game.client.health,
- ammo: game.client.ammo,
- weapons: [],
- activeWeapon: game.client.getActiveWeapon()
- .id,
- keys: game.client.keys.keys,
- time: game.client.time,
- total: game.client.total,
- ratio: game.client.ratio
- },
- doors: [],
- spriteHistory: {
- add: [],
- remove: []
- },
- ai: {},
- aiHistory: {
- add: []
- },
- secrets: {},
- secretsHistory: {
- remove: []
- },
- map: game.client.map.map,
- hit: game.client.map.hit
- }, b = 0; b < game.client.weapons.length; b++) a.player.weapons.push(game.client.weapons[b].id);
- for (b = 0; b < game.client.map.doors.length; b++)
- for (var c = 0; c < game.client.map.doors[b].length; c++) {
- var d = game.client.map.doors[b][c];
- d && a.doors.push({
- x: d.x,
- y: d.y,
- process: !! d.process,
- action: d.action,
- slide: d.slide,
- delayTimer: d.delayTimer
- })
- }
- for (b = 0; b < game.client.map.spriteHistory.remove.length; b++) c = game.client.map.spriteHistory.remove[b], a.spriteHistory.remove.push(c.eval);
- for (b = 0; b < game.client.map.spriteHistory.add.length; b++) c = game.client.map.spriteHistory.add[b], a.spriteHistory.add.push(c.eval);
- for (b = 0; b < game.client.map.aiHistory.add.length; b++) c = game.client.map.aiHistory.add[b], a.aiHistory.add.push(c.eval);
- for (b = 0; b < game.client.map.ai.length; b++) {
- c = game.client.map.ai[b];
- a.ai[c.eval] = {
- x: c.x,
- y: c.y,
- baseX: c.baseX,
- baseY: c.baseY,
- prevX: c.prevX,
- prevY: c.prevY,
- detailX: c.detailX,
- detailY: c.detailY,
- hitpoints: c.hitpoints,
- angle: c.angle,
- slide: c.slide,
- timer: c.timer,
- direction: {
- x: c.direction.x,
- y: c.direction.y
- },
- hit: c.hit,
- animations: {
- current: c.animations.current
- },
- action: c.action,
- process: !! c.process
- };
- for (var e in c.animations) "object" == typeof c.animations[e] && (d = c.animations[e], a.ai[c.eval].animations[e] = {
- keyframe: d.keyframe,
- state: d.state,
- speed: d.speed,
- count: d.count,
- step: d.step,
- index: d.index,
- timer: d.timer,
- stopping: d.stopping,
- process: d.process ? d.process == d.play ? "play" : "back" : d.process
- });
- for (var f in c) "function" == typeof c[f] && a.ai[c.eval].action == c[f] && (a.ai[c.eval].action = f)
- }
- for (b = 0; b < game.client.map.secrets.length; b++) c = game.client.map.secrets[b], a.secrets[c.eval] = {
- x: c.x,
- y: c.y,
- state: c.state,
- direction: c.direction ? {
- x: c.direction.x,
- y: c.direction.y
- } : null
- };
- for (b = 0; b < game.client.map.secretsHistory.remove.length; b++) a.secretsHistory.remove.push(game.client.map.secretsHistory.remove[b].eval);
- return a
- },
- saveGameCtrl: function (a) {
- a ||
- (a = window.event);
- var b = document.getElementById("savecursor"),
- c = document.querySelectorAll("#savegame .options .slot"),
- d = c[b.cursorIndex].querySelector(".textcursor");
- switch (a.keyCode) {
- case 40:
- d || (audio.playSound("movegun2"), b.cursorIndex++, b.cursorIndex == game.slots.length && (b.cursorIndex = 0), game.saveGame());
- break;
- case 38:
- d || (audio.playSound("movegun2"), b.cursorIndex--, 0 > b.cursorIndex && (b.cursorIndex = game.slots.length - 1), game.saveGame());
- break;
- case 13:
- audio.playSound("shoot");
- d ? (localStorage.slots =
- JSON.stringify(game.slots), game.slots = JSON.parse(localStorage.slots), c[b.cursorIndex].removeChild(d)) : (game.slots[b.cursorIndex] = game.newSaveGame(), d = document.createElement("DIV"), d.className = "textcursor", c[b.cursorIndex].appendChild(d));
- game.saveGame();
- break;
- case 27:
- audio.playSound("escpressed");
- d ? (c[b.cursorIndex].removeChild(d), game.slots[b.cursorIndex] = null, game.saveGame()) : (window.onkeydown = window.onclick = null, game.hideScreen("savegame", game.loop ? game.gameMenu : game.menu));
- break;
- case 8:
- d && game.slots[b.cursorIndex].name.length &&
- (game.slots[b.cursorIndex].name = game.slots[b.cursorIndex].name.slice(0, game.slots[b.cursorIndex].name.length - 1), game.saveGame());
- break;
- default:
- if (d && 15 > game.slots[b.cursorIndex].name.length && (c = a.keyCode, 32 == c || 47 < c && 91 > c || 105 < c && 112 > c && 108 != c || 185 < c && 193 > c || 218 < c && 223 > c)) {
- d = "";
- if (47 < c && 58 > c) d = String.fromCharCode(c);
- else if (64 < c && 91 > c) a.shiftKey || (c += 32), d = String.fromCharCode(c);
- else switch (c) {
- case 32:
- d = " ";
- break;
- case 106:
- d = "*";
- break;
- case 107:
- d = "+";
- break;
- case 109:
- d = "-";
- break;
- case 110:
- d = ".";
- break;
- case 111:
- d = "/";
- break;
- case 186:
- d = ";";
- break;
- case 187:
- d = "=";
- break;
- case 188:
- d = ",";
- break;
- case 189:
- d = "-";
- break;
- case 190:
- d = ".";
- break;
- case 191:
- d = "/";
- break;
- case 192:
- d = "'";
- break;
- case 219:
- d = "(";
- break;
- case 220:
- d = "\\";
- break;
- case 221:
- d = ")";
- break;
- case 222:
- d = "'"
- }
- game.smallWhite.images[d.charCodeAt(0) - 1] && (game.slots[b.cursorIndex].name += d, game.saveGame())
- }
- }
- },
- saveGame: function () {
- game.showScreen("savegame", null, function () {
- var a = document.getElementById("savecursor");
- if (void 0 == a.cursorIndex || null == a.cursorIndex) a.cursorIndex =
- 0;
- a.style.top = 38 * a.cursorIndex + "px";
- var b = document.querySelectorAll("#savegame .options .slot");
- game.slots || (game.slots = localStorage.slots ? JSON.parse(localStorage.slots) : [null, null, null, null, null, null, null, null, null, null]);
- for (var c = 0; c < b.length; c++) {
- var d = b[c];
- d.index = c;
- d.onmousemove = function () {
- if (game.activeScreen == "savegame") {
- var a = document.getElementById("savecursor");
- if (a.cursorIndex != this.index) {
- a.cursorIndex = this.index;
- audio.playSound("movegun1");
- game.saveGame()
- }
- }
- };
- d.onmouseup = function (a) {
- if (game.activeScreen ==
- "savegame") {
- if (!a) a = window.event;
- if (a.button == 0) {
- window.onkeydown = window.onclick = null;
- audio.playSound("shoot");
- game.slots[this.index] = game.newSaveGame();
- game.slots[this.index].name = "Saved game " + (this.index + 1) + "/" + game.mapName.toUpperCase();
- localStorage.slots = JSON.stringify(game.slots);
- game.slots = JSON.parse(localStorage.slots);
- game.saveGame()
- }
- }
- };
- b[c].className = game.slots[c] ? "slot" + (c == a.cursorIndex ? " selected" : "") : "slot empty" + (c == a.cursorIndex ? " selected" : "");
- d = b[c].querySelector(".text");
- d.className =
- game.slots[c] ? "text beforecursor" : "text small";
- d.innerHTML = "";
- game[c == a.cursorIndex ? "smallWhite" : "smallText"].text(d, game.slots[c] ? game.slots[c].name : "- empty -");
- var e = b[c].querySelector(".textcursor");
- e && (e.style.marginLeft = d.offsetWidth + "px")
- }
- window.onmouseup = function (a) {
- if (game.activeScreen == "savegame") {
- if (!a) a = window.event;
- if (a.button != 0) {
- window.onkeydown = window.onclick = null;
- audio.playSound("escpressed");
- game.hideScreen("savegame", game.loop ? game.gameMenu : game.menu)
- }
- }
- };
- window.onkeydown != game.saveGameCtrl &&
- setTimeout(function () {
- window.onkeydown = game.saveGameCtrl
- }, 500)
- })
- },
- gameMainMenu: "New Game,Sound,Control,Load Game,Save Game,Graphic Detail,Read This!,End Game,Back to Game,Quit".split(","),
- endgameStr: "Are you sure you want\nto end the game you\nare playing? (Y or N):",
- curgameStr: "You are currently in\na game. Continuing will\nerase old game. Ok?",
- cheatStr: "You now have 100% Health,\n99 Ammo and both Keys!\nNote that you have basically\neliminated your chances of\ngetting a high score!",
- endStrings: 'Dost thou wish to\nleave with such hasty\nabandon?;Chickening out...\nalready?;Press N for more carnage.\nPress Y to be a weenie.;So, you think you can\nquit this easily, huh?;Press N to save the world.\nPress Y to abandon it in\nits hour of need.;Press N if you are brave.\nPress Y to cower in shame.;Heroes, press N.\nWimps, press Y.;You are at an intersection.\nA sign says, "Press Y to quit."\n>;For guns and glory, press N.\nFor work and worry, press Y.'.split(";"),
- mainMenu: "New Game,Sound,Control,Load Game,Save Game,Graphic Detail,Read This!,View Scores,Back to Demo,Quit".split(","),
- gameMenu: function () {
- game.showScreen("gamemenu", null, function () {
- document.body.parentNode.style.backgroundColor = "#880000";
- document.body.style.backgroundColor = "#880000";
- "wonderin" != audio.currentMusic && (audio.stopMusic(), audio.playMusic("wonderin"));
- var a = document.getElementById("gamemenucursor");
- if (void 0 == a.cursorIndex || null == a.cursorIndex) a.cursorIndex = 0;
- document.querySelectorAll("#gamemenu .options .text");
- for (var a = document.querySelectorAll("#gamemenu .options .text"), b = 0; b < a.length; b++) {
- var c = a[b];
- c.index = b;
- c.onmousemove = function () {
- if (game.activeScreen == "gamemenu") {
- var a = document.getElementById("gamemenucursor"),
- b = document.querySelectorAll("#gamemenu .options .text");
- if (!(b[this.index].className.search("disabled") > -1 || a.cursorIndex == this.index)) {
- var c = b[a.cursorIndex];
- c.className = c.className.replace(" selected", "");
- c.className.search("readthis") < 0 ? game.largeText.text(c, game.gameMainMenu[a.cursorIndex]) :
- game.largeReadthis.text(c, game.gameMainMenu[a.cursorIndex]);
- a.cursorIndex = this.index;
- audio.playSound("movegun1");
- c = b[a.cursorIndex];
- c.className = c.className + " selected";
- c.className.search("readthis") < 0 ? game.largeSelected.text(c, game.gameMainMenu[a.cursorIndex]) : game.largeReadthisSelected.text(c, game.gameMainMenu[a.cursorIndex]);
- a.style.top = 37 * a.cursorIndex + "px"
- }
- }
- };
- c.onmouseup = function (a) {
- if (game.activeScreen == "gamemenu") {
- if (!a) a = window.event;
- if (a.button === 0) {
- audio.playSound("shoot");
- switch (this.index) {
- case 0:
- game.hideScreen("gamemenu",
- game.episode);
- break;
- case 1:
- game.hideScreen("gamemenu", game.sound);
- break;
- case 2:
- window.onkeydown = window.onclick = null;
- game.hideScreen("gamemenu", game.customize);
- break;
- case 3:
- window.onkeydown = window.onclick = null;
- game.hideScreen("gamemenu", game.loadGame);
- break;
- case 4:
- window.onkeydown = window.onclick = null;
- game.hideScreen("gamemenu", game.saveGame);
- break;
- case 5:
- window.onkeydown = window.onclick = null;
- game.hideScreen("gamemenu", game.detail);
- break;
- case 6:
- window.onkeydown = window.onclick = null;
- document.body.parentNode.style.backgroundColor =
- null;
- document.body.style.backgroundColor = null;
- game.hideScreen("gamemenu", function () {
- audio.currentMusic && audio.stopMusic();
- audio.playMusic("corner");
- game.showReadme("readthis", game.gameMenu)
- });
- break;
- case 7:
- window.onmouseup = window.onkeydown = window.onclick = null;
- game.showMessage(game.endgameStr);
- setTimeout(function () {
- window.onmouseup = function (a) {
- if (game.activeScreen == "gamemenu") {
- window.onkeydown = window.onclick = null;
- if (!a) a = window.event;
- if (a.button == 0) {
- game.hideMessage();
- document.body.parentNode.style.backgroundColor =
- null;
- document.body.style.backgroundColor = null;
- game.hideScreen("gamemenu", function () {
- audio.currentMusic && audio.stopMusic();
- game.showScreen("game", null, function () {
- game.pause = false;
- setTimeout(function () {
- game.client.lives = 0;
- game.client.health = 0;
- for (game.client.deathCam = game.client.map.ai[utils.random(game.client.map.ai.length - 1)]; game.client.deathCam.center == void 0;) game.client.deathCam = game.client.map.ai[utils.random(game.client.map.ai.length - 1)]
- }, 1E3)
- })
- })
- } else {
- game.hideMessage();
- game.gameMenu()
- }
- a.stopPropagation();
- a.preventDefault();
- return false
- }
- }
- }, 500);
- window.onkeydown = function (a) {
- window.onmouseup = window.onkeydown = window.onclick = null;
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- game.hideMessage();
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- game.hideScreen("gamemenu", function () {
- audio.currentMusic && audio.stopMusic();
- game.showScreen("game", null, function () {
- game.pause = false;
- setTimeout(function () {
- game.client.lives = 0;
- game.client.health = 0;
- for (game.client.deathCam =
- game.client.map.ai[utils.random(game.client.map.ai.length - 1)]; game.client.deathCam.center == void 0;) game.client.deathCam = game.client.map.ai[utils.random(game.client.map.ai.length - 1)]
- }, 1E3)
- })
- });
- break;
- case 78:
- case 27:
- game.hideMessage();
- game.gameMenu()
- }
- };
- break;
- case 8:
- window.onkeydown = window.onclick = null;
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- game.hideScreen("gamemenu", function () {
- audio.currentMusic && audio.stopMusic();
- game.showScreen("game", null, function () {
- setTimeout(function () {
- game.pause =
- false
- }, 1E3)
- })
- });
- break;
- case 9:
- window.onkeydown = window.onclick = null;
- game.showMessage(game.endStrings[utils.random(8)]);
- setTimeout(function () {
- window.onmouseup = function (a) {
- window.onmouseup = null;
- if (!a) a = window.event;
- switch (a.button) {
- case 0:
- window.close();
- case 1:
- case 2:
- game.hideMessage();
- game.gameMenu()
- }
- }
- }, 1);
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- window.close();
- case 78:
- case 27:
- game.hideMessage();
- game.gameMenu()
- }
- }
- }
- }
- }
- }
- }
- window.onclick = null;
- window.onclick = null;
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- var b = document.getElementById("gamemenucursor");
- if (a.keyCode == 40 || a.keyCode == 38) {
- var c = document.querySelectorAll("#gamemenu .options .text"),
- h = c.length,
- g = c[b.cursorIndex];
- g.className = g.className.replace(" selected", "");
- g.className.search("readthis") < 0 ? game.largeText.text(g, game.gameMainMenu[b.cursorIndex]) : game.largeReadthis.text(g, game.gameMainMenu[b.cursorIndex]);
- switch (a.keyCode) {
- case 40:
- b.cursorIndex++;
- if (b.cursorIndex == h) b.cursorIndex = 0;
- for (; c[b.cursorIndex].className.search("disabled") > -1;) {
- b.cursorIndex++;
- if (b.cursorIndex == h) b.cursorIndex = 0
- }
- audio.playSound("movegun1");
- break;
- case 38:
- b.cursorIndex--;
- if (b.cursorIndex < 0) b.cursorIndex = h - 1;
- for (; c[b.cursorIndex].className.search("disabled") > -1;) {
- b.cursorIndex--;
- if (b.cursorIndex < 0) b.cursorIndex = h - 1
- }
- audio.playSound("movegun2")
- }
- g = c[b.cursorIndex];
- g.className = g.className + " selected";
- g.className.search("readthis") < 0 ? game.largeSelected.text(g, game.gameMainMenu[b.cursorIndex]) : game.largeReadthisSelected.text(g, game.gameMainMenu[b.cursorIndex]);
- b.style.top = 37 * b.cursorIndex + "px"
- } else if (a.keyCode == 13) {
- audio.playSound("shoot");
- if (b.cursorIndex == 0) game.hideScreen("gamemenu", game.episode);
- else if (b.cursorIndex == 1) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("gamemenu", game.sound)
- } else if (b.cursorIndex == 2) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("gamemenu", game.customize)
- } else if (b.cursorIndex == 3) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("gamemenu", game.loadGame)
- } else if (b.cursorIndex == 4) {
- window.onkeydown = window.onclick =
- null;
- game.hideScreen("gamemenu", game.saveGame)
- } else if (b.cursorIndex == 5) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("gamemenu", game.detail)
- } else if (b.cursorIndex == 6) {
- window.onkeydown = window.onclick = null;
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- game.hideScreen("gamemenu", function () {
- audio.currentMusic && audio.stopMusic();
- audio.playMusic("corner");
- game.showReadme("readthis", game.gameMenu)
- })
- } else if (b.cursorIndex == 7) {
- window.onmouseup = window.onkeydown =
- window.onclick = null;
- game.showMessage(game.endgameStr);
- setTimeout(function () {
- window.onmouseup = function (a) {
- if (game.activeScreen == "gamemenu") {
- window.onkeydown = window.onclick = null;
- if (!a) a = window.event;
- if (a.button == 0) {
- game.hideMessage();
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- game.hideScreen("gamemenu", function () {
- audio.currentMusic && audio.stopMusic();
- game.showScreen("game", null, function () {
- game.pause = false;
- setTimeout(function () {
- game.client.lives = 0;
- game.client.health =
- 0;
- for (game.client.deathCam = game.client.map.ai[utils.random(game.client.map.ai.length - 1)]; game.client.deathCam.center == void 0;) game.client.deathCam = game.client.map.ai[utils.random(game.client.map.ai.length - 1)]
- }, 1E3)
- })
- })
- } else {
- game.hideMessage();
- game.gameMenu()
- }
- a.stopPropagation();
- a.preventDefault();
- return false
- }
- }
- }, 500);
- window.onkeydown = function (a) {
- window.onmouseup = window.onkeydown = window.onclick = null;
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- game.hideMessage();
- document.body.parentNode.style.backgroundColor =
- null;
- document.body.style.backgroundColor = null;
- game.hideScreen("gamemenu", function () {
- audio.currentMusic && audio.stopMusic();
- game.showScreen("game", null, function () {
- game.pause = false;
- setTimeout(function () {
- game.client.lives = 0;
- game.client.health = 0;
- for (game.client.deathCam = game.client.map.ai[utils.random(game.client.map.ai.length - 1)]; game.client.deathCam.center == void 0;) game.client.deathCam = game.client.map.ai[utils.random(game.client.map.ai.length - 1)]
- }, 1E3)
- })
- });
- break;
- case 78:
- case 27:
- game.hideMessage();
- game.gameMenu()
- }
- }
- } else if (b.cursorIndex ==
- 8) {
- window.onkeydown = window.onclick = null;
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- game.hideScreen("gamemenu", function () {
- audio.currentMusic && audio.stopMusic();
- game.showScreen("game", null, function () {
- setTimeout(function () {
- game.pause = false
- }, 1E3)
- })
- })
- } else if (b.cursorIndex == 9) {
- window.onkeydown = window.onclick = null;
- game.showMessage(game.endStrings[utils.random(8)]);
- window.onkeydown = function (a) {
- window.onkeydown = window.onclick = null;
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- window.close();
- case 78:
- case 27:
- game.hideMessage();
- game.gameMenu()
- }
- }
- }
- } else if (a.keyCode == 27) {
- window.onkeydown = window.onclick = null;
- audio.playSound("escpressed");
- game.showMessage(game.endStrings[utils.random(8)]);
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- window.close();
- case 78:
- case 27:
- game.hideMessage();
- game.gameMenu()
- }
- }
- }
- }
- })
- },
- menu: function () {
- game.showScreen("menu", null, function () {
- document.body.parentNode.style.backgroundColor = "#880000";
- document.body.style.backgroundColor = "#880000";
- "wonderin" != audio.currentMusic && (audio.stopMusic(), audio.playMusic("wonderin"));
- var a = document.getElementById("menucursor");
- if (void 0 == a.cursorIndex || null == a.cursorIndex) a.cursorIndex = 0;
- a = document.querySelectorAll("#menu .options .text");
- window.onmouseup = function (a) {
- if (game.activeScreen == "menu") {
- if (!a) a = window.event;
- if (a.button != 0) {
- audio.playSound("escpressed");
- window.onkeydown = window.onclick = null;
- game.showMessage(game.endStrings[utils.random(8)]);
- setTimeout(function () {
- window.onmouseup = function (a) {
- window.onmouseup =
- null;
- if (!a) a = window.event;
- switch (a.button) {
- case 0:
- window.close();
- case 1:
- case 2:
- game.hideMessage();
- game.menu()
- }
- }
- }, 1);
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- window.close();
- case 78:
- case 27:
- game.hideMessage();
- game.menu()
- }
- }
- }
- }
- };
- for (var b = 0; b < a.length; b++) {
- var c = a[b];
- c.index = b;
- c.onmousemove = function () {
- if (game.activeScreen == "menu") {
- var a = document.getElementById("menucursor"),
- b = document.querySelectorAll("#menu .options .text");
- if (!(b[this.index].className.search("disabled") > -1 || a.cursorIndex == this.index)) {
- var c = b[a.cursorIndex];
- c.className = c.className.replace(" selected", "");
- c.className.search("readthis") < 0 ? game.largeText.text(c, game.mainMenu[a.cursorIndex]) : game.largeReadthis.text(c, game.mainMenu[a.cursorIndex]);
- a.cursorIndex = this.index;
- audio.playSound("movegun1");
- c = b[a.cursorIndex];
- c.className = c.className + " selected";
- c.className.search("readthis") < 0 ? game.largeSelected.text(c, game.mainMenu[a.cursorIndex]) : game.largeReadthisSelected.text(c, game.mainMenu[a.cursorIndex]);
- a.style.top = 37 * a.cursorIndex + "px"
- }
- }
- };
- c.onmouseup = function (a) {
- if (game.activeScreen == "menu") {
- if (!a) a = window.event;
- if (a.button === 0) {
- audio.playSound("shoot");
- switch (this.index) {
- case 0:
- game.hideScreen("menu", game.episode);
- break;
- case 1:
- game.hideScreen("menu", game.sound);
- break;
- case 2:
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", game.customize);
- break;
- case 3:
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", game.loadGame);
- break;
- case 4:
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu",
- game.saveGame);
- break;
- case 5:
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", game.detail);
- break;
- case 6:
- window.onkeydown = window.onclick = null;
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- game.hideScreen("menu", function () {
- audio.currentMusic && audio.stopMusic();
- audio.playMusic("corner");
- game.showReadme("readthis", game.menu)
- });
- break;
- case 7:
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", function () {
- audio.currentMusic && audio.stopMusic();
- audio.playMusic("roster");
- game.newHighscore("e1m1", 0, game.menu)
- });
- break;
- case 9:
- window.onkeydown = window.onclick = null;
- game.showMessage(game.endStrings[utils.random(8)]);
- setTimeout(function () {
- window.onmouseup = function (a) {
- window.onmouseup = null;
- if (!a) a = window.event;
- switch (a.button) {
- case 0:
- window.close();
- case 1:
- case 2:
- game.hideMessage();
- game.menu()
- }
- }
- }, 1);
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- window.close();
- case 78:
- case 27:
- game.hideMessage();
- game.menu()
- }
- }
- }
- } else {
- window.onkeydown =
- window.onclick = null;
- audio.playSound("escpressed");
- game.showMessage(game.endStrings[utils.random(8)]);
- window.onmouseup = function (a) {
- window.onmouseup = null;
- if (game.activeScreen == "menu") {
- if (!a) a = window.event;
- switch (a.button) {
- case 0:
- window.close();
- case 1:
- case 2:
- game.hideMessage();
- game.menu()
- }
- }
- };
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- window.close();
- case 78:
- case 27:
- game.hideMessage();
- game.menu()
- }
- }
- }
- }
- }
- }
- window.onclick = null;
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- var b = document.getElementById("menucursor");
- if (a.keyCode == 40 || a.keyCode == 38) {
- var c = document.querySelectorAll("#menu .options .text"),
- h = c.length,
- g = c[b.cursorIndex];
- g.className = g.className.replace(" selected", "");
- g.className.search("readthis") < 0 ? game.largeText.text(g, game.mainMenu[b.cursorIndex]) : game.largeReadthis.text(g, game.mainMenu[b.cursorIndex]);
- switch (a.keyCode) {
- case 40:
- b.cursorIndex++;
- if (b.cursorIndex == h) b.cursorIndex = 0;
- for (; c[b.cursorIndex].className.search("disabled") > -1;) {
- b.cursorIndex++;
- if (b.cursorIndex == h) b.cursorIndex = 0
- }
- audio.playSound("movegun1");
- break;
- case 38:
- b.cursorIndex--;
- if (b.cursorIndex < 0) b.cursorIndex = h - 1;
- for (; c[b.cursorIndex].className.search("disabled") > -1;) {
- b.cursorIndex--;
- if (b.cursorIndex < 0) b.cursorIndex = h - 1
- }
- audio.playSound("movegun1")
- }
- g = c[b.cursorIndex];
- g.className = g.className + " selected";
- g.className.search("readthis") < 0 ? game.largeSelected.text(g, game.mainMenu[b.cursorIndex]) : game.largeReadthisSelected.text(g, game.mainMenu[b.cursorIndex]);
- b.style.top = 37 * b.cursorIndex +
- "px"
- } else if (a.keyCode == 13) {
- audio.playSound("shoot");
- if (b.cursorIndex == 0) game.hideScreen("menu", game.episode);
- else if (b.cursorIndex == 1) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", game.sound)
- } else if (b.cursorIndex == 2) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", game.customize)
- } else if (b.cursorIndex == 3) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", game.loadGame)
- } else if (b.cursorIndex == 4) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", game.saveGame)
- } else if (b.cursorIndex ==
- 5) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", game.detail)
- } else if (b.cursorIndex == 6) {
- window.onkeydown = window.onclick = null;
- document.body.parentNode.style.backgroundColor = null;
- document.body.style.backgroundColor = null;
- game.hideScreen("menu", function () {
- audio.currentMusic && audio.stopMusic();
- audio.playMusic("corner");
- game.showReadme("readthis", game.menu)
- })
- } else if (b.cursorIndex == 7) {
- window.onkeydown = window.onclick = null;
- game.hideScreen("menu", function () {
- audio.currentMusic && audio.stopMusic();
- audio.playMusic("roster");
- game.newHighscore("e1m1", 0, game.menu)
- })
- } else if (b.cursorIndex == 9) {
- window.onkeydown = window.onclick = null;
- game.showMessage(game.endStrings[utils.random(8)]);
- window.onmouseup = function (a) {
- if (game.activeScreen == "menu") {
- window.onmouseup = null;
- if (!a) a = window.event;
- switch (a.button) {
- case 0:
- window.close();
- case 1:
- case 2:
- game.hideMessage();
- game.menu()
- }
- }
- };
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- window.close();
- case 78:
- case 27:
- game.hideMessage();
- game.menu()
- }
- }
- }
- } else if (a.keyCode == 27) {
- window.onkeydown = window.onclick = null;
- audio.playSound("escpressed");
- game.showMessage(game.endStrings[utils.random(8)]);
- window.onmouseup = function (a) {
- if (game.activeScreen == "menu") {
- window.onmouseup = null;
- if (!a) a = window.event;
- switch (a.button) {
- case 0:
- window.close();
- case 1:
- case 2:
- game.hideMessage();
- game.menu()
- }
- }
- };
- window.onkeydown = function (a) {
- if (!a) a = window.event;
- switch (a.keyCode) {
- case 89:
- case 90:
- window.close();
- case 78:
- case 27:
- game.hideMessage();
- game.menu()
- }
- }
- }
- }
- })
- },
- showReadme: function (a,
- b) {
- game.requestHTML(a, function () {
- game.showScreen(a, null, function () {
- setTimeout(function () {
- var c = document.getElementById(a);
- c.pageIndex = 0;
- var d = document.querySelectorAll("#" + a + " .page"),
- e = document.querySelector("#" + a + " .pagenr"),
- f = function (a) {
- for (var b = 0; b < d.length; b++) d[b].className = d[b].className.replace(" selected", "");
- d[a].className += " selected";
- game.smallPageNr.text(e, "pg " + (a + 1) + " of " + d.length)
- };
- f(c.pageIndex);
- window.onmouseup = function (e) {
- e || (e = window.event);
- 0 == e.button ? c.pageIndex < d.length -
- 1 ? (audio.playSound("movegun2"), c.pageIndex++, f(c.pageIndex)) : (audio.playSound("escpressed"), game.hideScreen(a, b)) : (audio.playSound("escpressed"), game.hideScreen(a, b))
- };
- window.onkeydown = function (e) {
- e || (e = window.event);
- 39 == e.keyCode ? c.pageIndex < d.length - 1 && (audio.playSound("movegun2"), c.pageIndex++, f(c.pageIndex)) : 37 == e.keyCode ? 0 < c.pageIndex && (audio.playSound("movegun2"), c.pageIndex--, f(c.pageIndex)) : 27 == e.keyCode && (audio.playSound("escpressed"), game.hideScreen(a, b))
- }
- }, 1E3)
- })
- })
- },
- showMessage: function (a) {
- game.trackPage(a);
- game.requestHTML("msg", function () {
- var b = document.getElementById("msgtext");
- b.innerHTML = "";
- game.largeReadme.text(b, a);
- document.getElementById("msg")
- .style.display = "block";
- b.style.marginTop = floor(-b.offsetHeight / 2) + "px";
- b.style.marginLeft = floor(-b.offsetWidth / 2) + "px"
- })
- },
- hideMessage: function () {
- document.getElementById("msg")
- .style.display = "";
- audio.playSound("escpressed")
- },
- smallWhite: new font.Font(wolf3d.fonts.small, {
- r: 255,
- g: 255,
- b: 255
- }),
- smallText: new font.Font(wolf3d.fonts.small, {
- r: 140,
- g: 140,
- b: 140
- }),
- smallPageNr: new font.Font(wolf3d.fonts.small, {
- r: 88,
- g: 84,
- b: 0
- }),
- smallReadmeTitle: new font.Font(wolf3d.fonts.small, {
- r: 0,
- g: 88,
- b: 88
- }),
- smallReadmeCyan: new font.Font(wolf3d.fonts.small, {
- r: 0,
- g: 132,
- b: 132
- }),
- smallReadmeGreen: new font.Font(wolf3d.fonts.small, {
- r: 4,
- g: 88,
- b: 0
- }),
- smallReadmeRed: new font.Font(wolf3d.fonts.small, {
- r: 100,
- g: 0,
- b: 0
- }),
- smallReadme: new font.Font(wolf3d.fonts.small, {
- r: 0,
- g: 0,
- b: 0
- }),
- largeReadme: new font.Font(wolf3d.fonts.large, {
- r: 0,
- g: 0,
- b: 0
- }),
- largeText: new font.Font(wolf3d.fonts.large, {
- r: 140,
- g: 140,
- b: 140
- }),
- largeSelected: new font.Font(wolf3d.fonts.large, {
- r: 192,
- g: 192,
- b: 192
- }),
- largeDisabled: new font.Font(wolf3d.fonts.large, {
- r: 112,
- g: 0,
- b: 0
- }),
- largeReadthis: new font.Font(wolf3d.fonts.large, {
- r: 180,
- g: 172,
- b: 0
- }),
- largeReadthisSelected: new font.Font(wolf3d.fonts.large, {
- r: 252,
- g: 244,
- b: 0
- }),
- bitmap: new font.BitmapFont(wolf3d.fonts.bitmap),
- processFont: function (a) {
- for (var b = a.querySelectorAll(".readme.process"), c = 0; c < b.length; c++) {
- var d = b[c].innerHTML;
- b[c].innerHTML = "";
- for (var e = b[c].className.replace("readme process", ""), d = d.split(" "), f = 0; f < d.length; f++)
- if (d[f].length) {
- var h =
- document.createElement("SPAN");
- h.className = "text readme" + e;
- h.innerHTML = d[f];
- b[c].parentNode.insertBefore(h, b[c])
- }
- }
- els = a.querySelectorAll(".text");
- for (c = 0; c < els.length; c++) switch (els[c].className) {
- case "text":
- game.largeText.text(els[c]);
- break;
- case "text selected":
- game.largeSelected.text(els[c]);
- break;
- case "text disabled":
- game.largeDisabled.text(els[c]);
- break;
- case "text readthis":
- game.largeReadthis.text(els[c]);
- break;
- case "text title":
- case "text readthis selected":
- game.largeReadthisSelected.text(els[c]);
- break;
- case "text bitmap":
- game.bitmap.text(els[c]);
- break;
- case "text pagenr":
- game.smallPageNr.text(els[c]);
- break;
- case "text readme title":
- game.smallReadmeTitle.text(els[c]);
- break;
- case "text readme cyan":
- game.smallReadmeCyan.text(els[c]);
- break;
- case "text readme green":
- game.smallReadmeGreen.text(els[c]);
- break;
- case "text readme red":
- game.smallReadmeRed.text(els[c]);
- break;
- case "text readme white":
- game.smallWhite.text(els[c]);
- break;
- case "text readme":
- game.smallReadme.text(els[c]);
- break;
- case "text highscores":
- game.smallWhite.text(els[c]);
- break;
- case "text small":
- game.smallText.text(els[c]);
- break;
- default:
- game.bitmap.text(els[c])
- }
- },
- render: function (a) {
- game.rendering = !0;
- a || (a = (new Date)
- .getTime());
- game.frameTime = game.prevTimestamp ? floor(a - game.prevTimestamp) : 0;
- game.prevTimestamp = a;
- game.renderFrame || (game.renderFrame = 0);
- game.renderFrame += game.frameTime;
- game.timeFactor = game.timeFactor ? Math.min(game.renderFrame / game.tick, 2) : 1;
- game.loop && (game.loop(), game.renderFrame = 0, window.requestAnimationFrame(game.render))
- },
- trackPage: function (a) {
- ga("send",
- "pageview", {
- title: a
- })
- },
- trackEvent: function (a, b, c, d) {
- ga("send", "event", a, b, c, d)
- },
- init: function () {
- audio.init({
- musicVolume: localStorage.musicVolume ? parseInt(localStorage.musicVolume) / 100 : 1,
- soundsVolume: localStorage.soundsVolume ? parseInt(localStorage.soundsVolume) / 100 : 1
- });
- var a = utils.queryStrings();
- game.debug = a.debug;
- a.loadgame ? game.newLoadGame(JSON.parse(localStorage.slots)[a.loadgame]) : a.map ? game.newGame(a.map || "e1m1", parseInt(a.difficulty || "0"), game.tick) : (audio.playMusic("copypro"), game.showScreen("copyright",
- null, function () {
- document.getElementById("start")
- .onclick = window.onkeydown = function () {
- window.onclick = window.onkeydown = null;
- audio.stopMusic();
- game.hideScreen("copyright", function () {
- a.nointro && (game.intro = !1);
- game.intro ? (audio.playMusic("nazi-nor"), game.pc13()) : game.menu()
- })
- }
- }))
- }
-};
-window.requestAnimationFrame = function () {
- return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (a) {
- window.setTimeout(a, floor(game.tick))
- }
-}();
-window.addEventListener("load", game.init, !1); \ No newline at end of file