您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
js/client.30.2104.min.js
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/517122/1483086/client302104.js
// Spacebar = on/off aim function SendWSmsg(message) { if (window.ws && window.ws.readyState === WebSocket.OPEN) { window.ws.send(JSON.stringify(message)); } } class HackCon { constructor() { this.showRealAngles = "withAim"; this.mouseScale = true; this.DrawLines = true; this.linesOpacity = 1; this.ShowHP = true; this.ColorizeTeam = true; this.TeamColor = "#00FFFF"; this.EnemyColor = "#FF0000"; this.showPID = false; this.showLandmines = true; this.showSpikes = true; this.showWires = true; this.drawNamesOnMap = true; this.changeMyModel = false; this.myPlayerModel = 0; this.autoEat = false; this.hungryLevel = 150; this.gaugesFood = -1; this.autoLoot = false; this.useLootData = false; this.AimBotEnable = false; this.target = "players"; this.mouseFovEnable = true; this.resolverType = "linear"; this.distanceCoefficient = 300; this.bulletSpeedCoefficient = 4; this.offsetCoefficient = 0.1; this.visualizeResolving = true; this.visualizeResolvingColor = "#EEEEEE"; this.autoFire = false; this.lockId = -1; this.mouseFov = 12345; this.buildingOwner = false; this.token = ""; this.userId = 0; this.tokenId = 0; } static save() { navigator.clipboard.writeText(JSON.stringify(MOD)); alert("cfg was copied to your clipboard"); } static load() { MOD = JSON.parse(prompt("paste your cfg here")); alert("cfg was successfully loaded"); } } class GetAllTargetsCon { constructor() { this.players = Array.from({ length: 121 }, (_, i) => new GetTarget(i)); this.ghouls = Array.from({ length: 999 }, (_, i) => new GetTarget(i)); this.obstacles = []; this.lines = [ new LinesCon(0.6, 1, "#EEEEEE"), new LinesCon(0.8, 3, "#FF0000"), new LinesCon(0.8, 3, "#00FF00"), new LinesCon(0.8, 2, "#0000FF"), ]; this.mousePosition = { x: 0, y: 0 }; this.mouseMapCords = { x: 0, y: 0 }; this.tappedForLast140mills = false; this.shifting = false; this.menuActive = false; this.menuX = 0; this.menuY = 0; this.menuWidth = 0; this.menuHeight = 0; this.lastId = 0; this.myLastMoveDirection = 0; } getPlayerById(pID) { return this.players[pID]; } getGhoulByUid(uID) { return this.ghouls[uID]; } resetLines() { this.lines.forEach(line => line.reset()); } } class GetTarget { constructor(id) { this.id = id; this.x = -1; this.y = -1; this.prevX = Array(3).fill(-1); this.prevY = Array(3).fill(-1); this.active = false; this.weapon = -1; this.gear = -1; } update(ux, uy) { this.active = true; this.prevX = [this.x, ...this.prevX.slice(0, 2)]; this.prevY = [this.y, ...this.prevY.slice(0, 2)]; this.x = ux; this.y = uy; } setInactive() { this.x = -1; this.y = -1; this.prevX.fill(-1); this.prevY.fill(-1); this.active = false; GetAllTargets.resetLines(); } } class AimbotCon { constructor() { this.lastAngle = 0; this.targetPlayer = null; } wannaFire(watarget = this.targetPlayer) { if (!watarget) return false; const [x0, x1, x2] = watarget.prevX; const [y0, y1, y2] = watarget.prevY; return ((watarget.x - x0 > 0) !== (x0 - x1 > 0)) || ((watarget.y - y0 > 0) !== (y0 - y1 > 0)); } resolve() { const myPlayer = GetAllTargets.getPlayerById(World.PLAYER.id); let target; if (MOD.lockId > -1) { target = GetAllTargets.getPlayerById(MOD.lockId); } else { target = MOD.mouseFovEnable ? this.findNearestPlayerTo(GetAllTargets.mouseMapCords, MOD.mouseFov) : this.findNearestPlayerTo(myPlayer, 2500); } this.targetPlayer = target; if (!target) return this.lastAngle; const distance = Math.hypot(myPlayer.x - target.x, myPlayer.y - target.y); const coefficient = distance / MOD.distanceCoefficient + MOD.offsetCoefficient; const targetX = target.prevX[0] === -1 ? target.x : target.x + coefficient * (target.x - target.prevX[0]); const targetY = target.prevY[0] === -1 ? target.y : target.y + coefficient * (target.y - target.prevY[0]); const angle = Math.atan2(targetY - myPlayer.y, targetX - myPlayer.x) * (180 / Math.PI); this.lastAngle = angle; if (MOD.visualizeResolving) { GetAllTargets.lines[0].reset(myPlayer.x, myPlayer.y, targetX, targetY); } return Math.round(angle); } findNearestPlayerTo(cords, fov) { let closest = null; let minDistance = fov; const checkEntities = (entities) => { for (let entity of entities) { if (entity.active && entity.id !== World.PLAYER.id && (World.players[entity.id].team !== World.PLAYER.team || World.PLAYER.team === -1)) { const distance = Math.hypot(cords.x - entity.x, cords.y - entity.y); if (distance < minDistance) { closest = entity; minDistance = distance; } } } }; if (MOD.target === 'players' || MOD.target === 'all') { checkEntities(GetAllTargets.players); } if (MOD.target === 'ghouls' || MOD.target === 'all') { checkEntities(GetAllTargets.ghouls); } return closest; } } class LinesCon { constructor(alpha, width, color) { this.x1 = -10; this.x2 = -10; this.y1 = -10; this.y2 = -10; this.alpha = alpha; this.width = width; this.color = color; } reset(x1, y1, x2, y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; } } function AimbotRefresh() { if (World.PLAYER.id === 0) { if (GetAllTargets.lastId !== 0) { GetAllTargets.lastId = 0; for (let player of GetAllTargets.players) player.setInactive(); } return; } GetAllTargets.lastId = World.PLAYER.id; if (MOD.AimBotEnable) { SendWSmsg([6, Aimbot.resolve()]); if (MOD.autoFire && Aimbot.wannaFire()) { SendWSmsg([4]); SendWSmsg([5]); } } } var GetAllTargets = new GetAllTargetsCon(); var MOD = new HackCon(); var Aimbot = new AimbotCon(); setInterval(AimbotRefresh, 50); window.addEventListener("mousemove", event => { GetAllTargets.mousePosition.x = event.clientX, GetAllTargets.mousePosition.y = event.clientY; }); window.addEventListener("keydown", event => { if (chatvisible != 0) return; if (event.keyCode === 32) MOD.AimBotEnable = !MOD.AimBotEnable; if (event.keyCode === 66) MOD.autoLoot = !MOD.autoLoot; }); // Your main script window.onload = () => { // Create a GUI const gui = new dat.GUI({ name: 'devast.MOD' }); //----------------------------------- const visuals = gui.addFolder('Visuals'); visuals.open(); const showFolder = visuals.addFolder('Show'); showFolder.add(MOD, 'showPID'); showFolder.add(MOD, 'ShowHP'); showFolder.add(MOD, 'showLandmines'); showFolder.add(MOD, 'showSpikes'); showFolder.add(MOD, 'showWires'); showFolder.add(MOD, 'mouseScale'); showFolder.add(MOD, 'showRealAngles', ['always', 'withAim']); showFolder.add(MOD, 'buildingOwner'); const teamFolder = visuals.addFolder('Team'); teamFolder.add(MOD, 'drawNamesOnMap'); teamFolder.add(MOD, 'ColorizeTeam'); const teamcolor = teamFolder.addColor(MOD, 'TeamColor').domElement; teamcolor.disabled = true; const enemycolor = teamFolder.addColor(MOD, 'EnemyColor').domElement; enemycolor.disabled = true; const linesFolder = visuals.addFolder('Lines'); linesFolder.add(MOD, 'DrawLines'); const linesopas = linesFolder.add(MOD, 'linesOpacity', 0, 1, 0.1).domElement; linesopas.disabled = true; //------------------------------------- const automation = gui.addFolder('Automation'); automation.open(); const autoLootFolder = automation.addFolder('AutoLoot'); autoLootFolder.add(MOD, 'autoLoot'); autoLootFolder.add(MOD, "useLootData"); const autoEatFolder = automation.addFolder('AutoEat'); autoEatFolder.add(MOD, 'autoEat'); const i = autoEatFolder.add(MOD, 'hungryLevel', 0, 255, 10).domElement; i.disabled = true; //------------------------------------------ const aimbotfolder = gui.addFolder('Aim Bot'); aimbotfolder.add(MOD, 'AimBotEnable'); aimbotfolder.add(MOD, 'target', ['players', 'ghouls', 'all']); aimbotfolder.add(MOD, 'distanceCoefficient', 10, 1000, 10); aimbotfolder.add(MOD, 'bulletSpeedCoefficient', 1, 15, 0.25); aimbotfolder.add(MOD, 'offsetCoefficient', 0, 3, 0.1); //------------------------------------------ const skinchanger = gui.addFolder('Skin'); skinchanger.add(MOD, 'changeMyModel'); const sc = skinchanger.add(MOD, 'myPlayerModel', 0, 14, 1).domElement; sc.disabled = true; //-------------------------------------- const tokenchanger = gui.addFolder('Token Changer'); const btnCopyToken = tokenchanger.add({ Copy: () => {} }, 'Copy'); btnCopyToken.onChange(() => { const token = localStorage.getItem('token'); const tokenId = localStorage.getItem('tokenId'); const userId = localStorage.getItem('userId'); const messages = `"${token}" "${tokenId}" "${userId}"`; navigator.clipboard.writeText(messages); }); tokenchanger.add(MOD, 'token'); const btnChangeToken = tokenchanger.add({ Change: () => {} }, 'Change'); btnChangeToken.onChange(async () => { try { const clipboardText = MOD.token; const extractedValues = extractValuesFromText(clipboardText); if (extractedValues) { const { token, tokenId, userId } = extractedValues; localStorage.setItem('token', token); localStorage.setItem('tokenId', tokenId); localStorage.setItem('userId', userId); } } catch (error) { console.error('Failed to read token:', error); } }); function extractValuesFromText(pastedText) { const values = pastedText.match(/"([^"]*)"/g); if (values && values.length === 3) { return { token: values[0].slice(1, -1), tokenId: values[1].slice(1, -1), userId: values[2].slice(1, -1), }; } else { return null; } } const lootdata = gui.addFolder("LootData"); const controllers = {}; for (const itemData of lootItems) { const itemName = itemData.name; const controller = lootdata.add(itemData, "acquire").name(itemName); controller.onChange(function (value) { controllers[itemName].object.acquire = value; // Update the controller value LootData[itemName].acquire = value; // Update the LootData object }); controllers[itemName] = controller; } var cfg = gui.addFolder("CFG"); cfg.add(HackCon, "save"); cfg.add(HackCon, "load"); }; const lootItems = [ {name:"smallwood",acquire:true,extra:0}, {name:"mediumwood",acquire:true,extra:1}, {name:"bigwood",acquire:true,extra:2}, {name:"smallstone",acquire:true,extra:3}, {name:"mediumstone",acquire:true,extra:4}, {name:"bigstone",acquire:true,extra:5}, {name:"steel",acquire:true,extra:6}, {name:"animalfat",acquire:true,extra:7}, {name:"animaltendon",acquire:true,extra:8}, {name:"string",acquire:true,extra:9}, {name:"leatherboar",acquire:true,extra:10}, {name:"shapedmetal",acquire:true,extra:11}, {name:"rawsteak",acquire:true,extra:12}, {name:"cookedsteak",acquire:true,extra:13}, {name:"rottensteak",acquire:true,extra:14}, {name:"orange",acquire:true,extra:15}, {name:"rottenorange",acquire:true,extra:16}, {name:"seedorange",acquire:true,extra:17}, {name:"hachet",acquire:true,extra:18}, {name:"stonepickaxe",acquire:true,extra:19}, {name:"steelpickaxe",acquire:true,extra:20}, {name:"stoneaxe",acquire:true,extra:21}, {name:"workbench",acquire:true,extra:22}, {name:"woodspear",acquire:true,extra:23}, {name:"woodbow",acquire:true,extra:24}, {name:"9mm",acquire:true,extra:25}, {name:"deserteagle",acquire:true,extra:26}, {name:"shotgun",acquire:true,extra:27}, {name:"ak47",acquire:true,extra:28}, {name:"sniper",acquire:true,extra:29}, {name:"woodwall",acquire:true,extra:30}, {name:"stonewall",acquire:true,extra:31}, {name:"steelwall",acquire:true,extra:32}, {name:"wooddoor",acquire:true,extra:33}, {name:"stonedoor",acquire:true,extra:34}, {name:"steeldoor",acquire:true,extra:35}, {name:"campfire",acquire:true,extra:36}, {name:"bullet9mm",acquire:true,extra:37}, {name:"bulletshotgun",acquire:true,extra:38}, {name:"bulletsniper",acquire:true,extra:39}, {name:"medikit",acquire:true,extra:40}, {name:"bandage",acquire:true,extra:41}, {name:"soda",acquire:true,extra:42}, {name:"mp5",acquire:true,extra:43}, {name:"headscarf",acquire:true,extra:44}, {name:"chapka",acquire:true,extra:45}, {name:"wintercoat",acquire:true,extra:46}, {name:"gazmask",acquire:true,extra:47}, {name:"gazprotection",acquire:true,extra:48}, {name:"radiationsuit",acquire:true,extra:49}, {name:"woodarrow",acquire:true,extra:50}, {name:"campfirebbq",acquire:true,extra:51}, {name:"smelter",acquire:true,extra:52}, {name:"woodbigdoor",acquire:true,extra:53}, {name:"stonebigdoor",acquire:true,extra:54}, {name:"steelbigdoor",acquire:true,extra:55}, {name:"sulfur",acquire:true,extra:56}, {name:"shapeduranium",acquire:true,extra:57}, {name:"workbench2",acquire:true,extra:58}, {name:"uranium",acquire:true,extra:59}, {name:"weaving",acquire:true,extra:60}, {name:"gasoline",acquire:true,extra:61}, {name:"sulfurpickaxe",acquire:true,extra:62}, {name:"chest",acquire:true,extra:63}, {name:"fridge",acquire:true,extra:64}, {name:"woodfloor",acquire:true,extra:65}, {name:"hammer",acquire:true,extra:66}, {name:"sleepingbag",acquire:true,extra:67}, {name:"repairhammer",acquire:true,extra:68}, {name:"nails",acquire:true,extra:69}, {name:"woodlightfloor",acquire:true,extra:70}, {name:"woodsmallwall",acquire:true,extra:71}, {name:"stonesmallwall",acquire:true,extra:72}, {name:"steelsmallwall",acquire:true,extra:73}, {name:"tomatosoup",acquire:true,extra:74}, {name:"syringe",acquire:true,extra:75}, {name:"chemicalcomponent",acquire:true,extra:76}, {name:"radaway",acquire:true,extra:77}, {name:"seedtomato",acquire:true,extra:78}, {name:"tomato",acquire:true,extra:79}, {name:"rottentomato",acquire:true,extra:80}, {name:"can",acquire:true,extra:81}, {name:"woodcrossbow",acquire:true,extra:82}, {name:"woodcrossarrow",acquire:true,extra:83}, {name:"nailgun",acquire:true,extra:84}, {name:"sawedoffshotgun",acquire:true,extra:85}, {name:"stonefloor",acquire:true,extra:86}, {name:"tilingfloor",acquire:true,extra:87}, {name:"crisps",acquire:true,extra:88}, {name:"rottencrisps",acquire:true,extra:89}, {name:"electronics",acquire:true,extra:90}, {name:"junk",acquire:true,extra:91}, {name:"wire",acquire:true,extra:92}, {name:"energycells",acquire:true,extra:93}, {name:"laserpistol",acquire:true,extra:94}, {name:"tesla",acquire:true,extra:95}, {name:"alloys",acquire:true,extra:96}, {name:"sulfuraxe",acquire:true,extra:97}, {name:"landmine",acquire:true,extra:98}, {name:"dynamite",acquire:true,extra:99}, {name:"c4",acquire:true,extra:100}, {name:"c4trigger",acquire:true,extra:101}, {name:"compost",acquire:true,extra:102}, {name:"armorphysic1",acquire:true,extra:103}, {name:"armorphysic2",acquire:true,extra:104}, {name:"armorphysic3",acquire:true,extra:105}, {name:"armorfire1",acquire:true,extra:106}, {name:"armorfire2",acquire:true,extra:107}, {name:"armorfire3",acquire:true,extra:108}, {name:"armordeminer",acquire:true,extra:109}, {name:"armortesla1",acquire:true,extra:110}, {name:"armortesla2",acquire:true,extra:111}, {name:"woodspike",acquire:true,extra:112}, {name:"lasersubmachine",acquire:true,extra:113}, {name:"grenade",acquire:true,extra:114}, {name:"superhammer",acquire:true,extra:115}, {name:"ghoulblood",acquire:true,extra:116}, {name:"camouflagegear",acquire:true,extra:117}, {name:"agitator",acquire:true,extra:118}, {name:"ghouldrug",acquire:true,extra:119}, {name:"mushroom1",acquire:true,extra:120}, {name:"mushroom2",acquire:true,extra:121}, {name:"mushroom3",acquire:true,extra:122}, {name:"rottenmushroom1",acquire:true,extra:123}, {name:"rottenmushroom2",acquire:true,extra:124}, {name:"rottenmushroom3",acquire:true,extra:125}, {name:"lapadone",acquire:true,extra:126}, {name:"lapabotrepair",acquire:true,extra:127}, {name:"smallwire",acquire:true,extra:128}, {name:"pumpkin",acquire:true,extra:129}, {name:"rottenpumpkin",acquire:true,extra:130}, {name:"seedghoul",acquire:true,extra:131}, {name:"extractor",acquire:true,extra:132}, {name:"antidote",acquire:true,extra:133}, {name:"antidoteflower",acquire:true,extra:134}, {name:"seedtree",acquire:true,extra:135}, {name:"acorn",acquire:true,extra:136}, {name:"rottenacorn",acquire:true,extra:137}, {name:"lasersniper",acquire:true,extra:138}, {name:"halbot",acquire:true,extra:139}, {name:"teslabot",acquire:true,extra:140}, {name:"cable0",acquire:true,extra:141}, {name:"cable1",acquire:true,extra:142}, {name:"cable2",acquire:true,extra:143}, {name:"cable3",acquire:true,extra:144}, {name:"switch",acquire:true,extra:145}, {name:"gateor",acquire:true,extra:146}, {name:"gateand",acquire:true,extra:147}, {name:"gatenot",acquire:true,extra:148}, {name:"lamp",acquire:true,extra:149}, {name:"cablewall",acquire:true,extra:150}, {name:"automaticdoor",acquire:true,extra:151}, {name:"platform",acquire:true,extra:152}, {name:"stonecave",acquire:true,extra:153}, {name:"bunkerwall",acquire:true,extra:154}, {name:"goldfloor",acquire:true,extra:155}, {name:"redfloor",acquire:true,extra:156}, {name:"weldingmachine",acquire:true,extra:157}, {name:"cable4",acquire:true,extra:158}, {name:"gatetimer",acquire:true,extra:159}, {name:"gatexorcounter",acquire:true,extra:16} ]; const LootData = Object.fromEntries(lootItems.map(({ name, acquire, extra }) => [name, { acquire, extra }])); //---------------------------------------------------------------------------------------------------------------------------------------------// var lowerCase = window.navigator.userAgent.toLowerCase(); var isTouchScreen = (((((((lowerCase.indexOf("isTouchScreen") !== -1) || (lowerCase.indexOf("android") !== -1)) || (lowerCase.indexOf("ipad") !== -1)) || (lowerCase.indexOf("iphone") !== -1)) || (lowerCase.indexOf("ipod") !== -1)) || (lowerCase.indexOf("kindle") !== -1)) || (lowerCase.indexOf("silk/") !== -1)) ? 1 : 0; if (isTouchScreen === 1) { var _meta = window.document.createElement("meta"); _meta.name = "viewport"; _meta.content = "initial-scale=1.0 maximum-scale=1.0"; window.document.getElementsByTagName("head")[0].appendChild(_meta); } localStorage2 = null; try { localStorage2 = window.localStorage; localStorage2.setItem("LapaMauve", "1"); localStorage2.getItem("LapaMauve"); } catch (error) { storage = {}; localStorage2 = {}; localStorage2.setItem = function(storageCell, cellValue) { storage[storageCell] = cellValue; }; localStorage2.getItem = function(storageCell) { return (storage[storageCell] === window.undefined) ? null : storage[storageCell]; }; } var AutoLootLabel = null; var AutoEatLabel = null; var AimBotLabel = null; var pworld = [[]]; var pworldWidth = 150; var pworldHeight = 150; var pathStart = [pworldWidth, pworldHeight]; var pathEnd = [0, 0]; var pathFinder = false; for (var x = 0; x < pworldWidth; x++) { pworld[x] = []; for (var y = 0; y < pworldHeight; y++) { pworld[x][y] = 0; } } var setx; var sety; var rowx; var rowy; var canvas; var canw, canh, canw2, canh2, canw4, canh4, canwns, canhns, canw2ns, canh2ns, canw4ns, canh4ns; var ctx; var delta = 0; var previousTimestamp = 0; var scaleby = 1; var fpsAvg = 100; var canvasQuality = 1; var __RESIZE_METHOD_SCALE__ = 1; var __RESIZE_METHOD_CSS__ = 0; var CanvasUtils = (function() { var frameSampleCount = 5; var elapsedTime = 0; var frameCount = 0; var currentFPS = 0; var sampleIndex = 0; var fpsSamples = new window.Array(frameSampleCount); var options = { resizeMethod: __RESIZE_METHOD_SCALE__, size: window.innerWidth, aliasing: true, deviceRatio: window.devicePixelRatio || 1, scheduledRatio: window.devicePixelRatio || 1, backingStoreRatio: 1, forceResolution: 0, ratio: 0, ratioX: 1, ratioY: 1, can: "can", bod: "bod" }; function initAnimatedCanvas(renderer, resizeMethod, can, bod, size, pixelRatio, aliasing) { setRenderer(renderer); if (resizeMethod !== window.undefined) options.resizeMethod = resizeMethod; if (can !== window.undefined) options.can = can; if (bod !== window.undefined) options.bod = bod; if (size !== window.undefined) options.size = size; if (pixelRatio !== window.undefined) options.ratio = pixelRatio; if (aliasing !== window.undefined) options.aliasing = aliasing; canvas = window.document.getElementById(options.can); ctx = canvas.getContext('2d'); options.backingStoreRatio = ((((ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio) || ctx.msBackingStorePixelRatio) || ctx.oBackingStorePixelRatio) || ctx.backingStorePixelRatio) || 1; initReqAnimationFrame(); canvas.oncontextmenu = function() { return false; }; var win = window.document.getElementById(options.bod); win.ondragstart = function() { return false; }; win.ondrop = function() { return false; }; win.onresize = bodOnResize; bodOnResize(); animate(); }; function bodOnResize() { var aspectRatio, width, height; if (options.resizeMethod === __RESIZE_METHOD_CSS__) { if (window.innerWidth > window.innerHeight) { aspectRatio = window.innerHeight / window.innerWidth; width = options.size; height = window.Math.floor(width * aspectRatio); } else { aspectRatio = window.innerWidth / window.innerHeight; height = options.size; width = window.Math.floor(height * aspectRatio); } } else { width = window.innerWidth; height = window.innerHeight; } canw = width; canh = height; canw2 = window.Math.floor(canw / 2); canh2 = window.Math.floor(canh / 2); canw4 = window.Math.floor(canw / 4); canh4 = window.Math.floor(canh / 4); options.ratioX = canw / window.innerWidth; options.ratioY = canh / window.innerHeight; pixelRatio = options.scheduledRatio / options.backingStoreRatio; if (options.ratio !== 0) pixelRatio *= options.ratio; canvas.width = canw * pixelRatio; canvas.height = canh * pixelRatio; if (options.resizeMethod === __RESIZE_METHOD_SCALE__) { scaleby = window.Math.max(height / ((options.size * 11) / 16), width / options.size); canvas.style.width = width + "px"; canvas.style.height = height + "px"; } canwns = canw / scaleby; canhns = canh / scaleby; canw2ns = canw2 / scaleby; canh2ns = canh2 / scaleby; canw4ns = canw4 / scaleby; canh4ns = canh4 / scaleby; ctx.scale(pixelRatio, pixelRatio); setAntialiasing(ctx, options.aliasing); renderer.update(); }; function initReqAnimationFrame() { var lastTime = 0; var vandorprefix = ['ms', 'moz', 'webkit', 'o']; for (var i = 0; (i < vandorprefix.length) && !window.requestAnimationFrame; ++i) { window.requestAnimationFrame = window[vandorprefix[i] + 'RequestAnimationFrame']; window.cancelAnimationFrame = window[vandorprefix[i] + 'CancelAnimationFrame'] || window[vandorprefix[i] + 'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) window.requestAnimationFrame = function(callback, element) { var currTime = (new window.Date).getTime(); var timeToCall = window.Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function(id) { window.clearTimeout(id); }; }; function setResolution(resolution) { if (((resolution === 1) || (resolution === 2)) || (resolution === 3)) { if (resolution === options.forceResolution) { resolution = 0; options.scheduledRatio = options.deviceRatio / canvasQuality; } else options.scheduledRatio = options.deviceRatio / resolution; options.forceResolution = resolution; bodOnResize(); } }; function updateFrameStats() { frameCount++; elapsedTime += delta; if (elapsedTime >= 1000) { currentFPS = (1000 * frameCount) / elapsedTime; fpsSamples[sampleIndex] = currentFPS; sampleIndex++; if (sampleIndex === frameSampleCount) { var averageFPS = 0; for (var i = 0; i < frameSampleCount; i++) averageFPS += fpsSamples[i]; averageFPS = averageFPS / frameSampleCount; var mnV = options.deviceRatio / options.backingStoreRatio; if (((options.forceResolution === 0) && (mnV === 2)) && (window.Math.abs(fpsAvg - averageFPS) < 5)) { if ((averageFPS < 22) && (fpsAvg < 22)) { if (canvasQuality === 1) { canvasQuality = 2; options.scheduledRatio = options.deviceRatio / 2; bodOnResize(); } else if (canvasQuality === 2) { canvasQuality = 3; options.scheduledRatio = options.deviceRatio / 3; bodOnResize(); } } else if ((options.deviceRatio > options.scheduledRatio) && ((averageFPS + fpsAvg) > 119)) { if (canvasQuality === 2) { canvasQuality = 1; options.scheduledRatio = options.deviceRatio; bodOnResize(); } else if (canvasQuality === 3) { canvasQuality = 2; options.scheduledRatio = options.deviceRatio / 2; bodOnResize(); } } } fpsAvg = averageFPS; sampleIndex = 0; } elapsedTime = 0; frameCount = 0; } }; function animate(timestamp) { window.requestAnimationFrame(animate); if (timestamp !== window.undefined) { delta = timestamp - previousTimestamp; previousTimestamp = timestamp; } updateFrameStats(); renderer.draw(); }; function modifyAntialiasing(ctx, isEnabled) { ctx.imageSmoothingEnabled = isEnabled; ctx.webkitImageSmoothingEnabled = isEnabled; ctx.mozImageSmoothingEnabled = isEnabled; ctx.msImageSmoothingEnabled = isEnabled; ctx.oImageSmoothingEnabled = isEnabled; }; function setAntialiasing(ctx, isEnabled) { if (isEnabled === false) window.document.getElementById(options.can).style.imageRendering = "pixelated"; else window.document.getElementById(options.can).style.imageRendering = "auto"; modifyAntialiasing(ctx, isEnabled); }; function canvasToImage(canvas) { var img = new window.Image; img.src = canvas.toDataURL("image/png"); img.width = canvas.width; img.height = canvas.height; return img; }; function line(ctx, startX, startY, endX, endY) { ctx.beginPath(); ctx.moveTo(startX * scaleby, startY * scaleby); ctx.lineTo(endX * scaleby, endY * scaleby); }; function drawPath(ctx, fillColor, strokeColor, lineWidth) { if (fillColor !== window.undefined) { ctx.fillStyle = fillColor; ctx.fill(); } if (strokeColor !== window.undefined) { if (lineWidth !== window.undefined) ctx.lineWidth = lineWidth; ctx.strokeStyle = strokeColor; ctx.stroke(); } }; function rect(ctx, x, y, width, height) { ctx.beginPath(); ctx.rect(x * scaleby, y * scaleby, width * scaleby, height * scaleby); } function randomColor() { let color = "#"; for (let i = 0; i < 3; i++) { let component = Math.floor(Math.random() * 256); color += component < 16 ? ("0" + component.toString(16)) : component.toString(16); } return color; } function colorTransition(colors, factor) { const len = colors.length; const index = Math.floor(factor * len); const startColor = colors[Math.max(0, index - 1)]; const endColor = colors[Math.min(index, len - 1)]; factor = (factor % (1 / len)) * len; let color = "#"; for (let i = 0; i < 3; i++) { const channel = Math.floor((endColor[i] - startColor[i]) * factor + startColor[i]); color += channel < 16 ? ("0" + channel.toString(16)) : channel.toString(16); } return color; } function fillRect(ctx, x, y, width, height, color) { ctx.beginPath(); ctx.fillStyle = color; ctx.fillRect(x * scaleby, y * scaleby, width * scaleby, height * scaleby); } function circle(ctx, x, y, radius) { ctx.beginPath(); ctx.arc(x * scaleby, y * scaleby, radius * scaleby, 0, Math.PI * 2); } function arc(ctx, x, y, radius, startAngle, endAngle) { ctx.beginPath(); ctx.arc(x * scaleby, y * scaleby, radius * scaleby, startAngle, endAngle); } var renderer = undefined; function setRenderer(newRenderer) { renderer = newRenderer; } function onloadimg() { this.isLoaded = 1; this.wh = this.width / 2; this.h2 = this.height / 2; }; function onloadimgerror() { this.isLoaded = 0; }; function loadImage(src, img) { if ((img !== window.undefined) && (img.isLoaded === 2)) return img; img = new window.Image; img.isLoaded = 2; img.onload = onloadimg; img.onerror = onloadimgerror; img.src = src; return img; }; function lerp(p1, p2, w) { var c = window.Math.max(1, window.Math.floor(60 / fpsAvg)); for (var i = 0; i < c; i++) p1 = MathUtils.lerp(p1, p2, w); return p1; }; function enableFullscreen() { var getbod = window.document.getElementById("bod"); if (getbod.requestFullscreen) getbod.requestFullscreen(); else if (getbod.msRequestFullscreen) getbod.msRequestFullscreen(); else if (getbod.mozRequestFullScreen) getbod.mozRequestFullScreen(); else if (getbod.webkitRequestFullscreen) getbod.webkitRequestFullscreen(); }; function disableFullscreen() { if (window.document.exitFullscreen) window.document.exitFullscreen(); else if (window.document.msExitFullscreen) window.document.msExitFullscreen(); else if (window.document.mozCancelFullscreen) window.document.mozCancelFullscreen(); else if (window.document.webkitExitFullscreen) window.document.webkitExitFullscreen(); }; function createImageContainer(src) { return { src: src, img: { isLoaded: 0 } }; }; function loadImageContainer(src) { var container = createImageContainer(src); container.img = CanvasUtils.loadImage(container.src, container.img); return container; }; function drawImageHd(container, x, y, angle, offsetX, offsetY, scale) { var img = container.img; if (img.isLoaded !== 1) { container.img = loadImage(container.src, container.img); return; } scale *= scaleby; x *= scaleby; y *= scaleby; var width = img.wh * scale; var height = img.h2 * scale; var offsetXScaled = (-width / 2) + (offsetX * scale); var offsetYScaled = (-height / 2) + (offsetY * scale); if ((x + offsetXScaled + width < 0) || (y + offsetYScaled + height < 0) || (x - width - canw > 0) || (y - height - canh > 0)) { return; } ctx.save(); ctx.translate(x, y); ctx.rotate(angle); ctx.drawImage(img, offsetXScaled, offsetYScaled, width, height); ctx.restore(); } function drawImageHd2(container, x, y, angle, offsetX, offsetY, scale, rotation, additionalOffsetX, additionalOffsetY) { var img = container.img; if (img.isLoaded !== 1) { container.img = CanvasUtils.loadImage(container.src, container.img); return; } scale *= scaleby; var w = img.wh * scale; var h = img.h2 * scale; ctx.save(); ctx.translate(x * scaleby, y * scaleby); ctx.rotate(angle); ctx.translate(offsetX * scale, offsetY * scale); ctx.rotate(rotation); ctx.drawImage(img, (-w / 2) + (additionalOffsetX * scale), (-h / 2) + (additionalOffsetY * scale), w, h); ctx.restore(); }; function drawImageHdCrop(container, x, y, angle, srcX, srcY, srcWidth, srcHeight, scale) { var img = container.img; if (img.isLoaded !== 1) { container.img = CanvasUtils.loadImage(container.src, container.img); return; } scale *= scaleby; x *= scaleby; y *= scaleby; var w = (srcWidth / 2) * scale; var h = (srcHeight / 2) * scale; var offsetX = -w / 2; var offsetY = -h / 2; if ((((((x + offsetX) + w) < 0) || (((y + offsetY) + h) < 0)) || (((x - w) - canw) > 0)) || (((y - h) - canh) > 0)) return; ctx.save(); ctx.translate(x, y); ctx.rotate(angle); ctx.drawImage(img, srcX, srcY, srcWidth, srcHeight, offsetX, offsetY, w, h); ctx.restore(); }; function roundRect(ctx, x, y, width, height, radius) { ctx.beginPath(); ctx.moveTo(x + radius, y); ctx.arcTo(x + width, y, x + width, y + height, radius); ctx.arcTo(x + width, y + height, x, y + height, radius); ctx.arcTo(x, y + height, x, y, radius); ctx.arcTo(x, y, x + width, y, radius); ctx.closePath(); } return { options: options, initAnimatedCanvas: initAnimatedCanvas, setAntialiasing: setAntialiasing, modifyAntialiasing: modifyAntialiasing, setResolution: setResolution, canvasToImage: canvasToImage, rect: rect, fillRect: fillRect, circle: circle, roundRect: roundRect, randomColor: randomColor, colorTransition: colorTransition, line: line, drawPath: drawPath, setRenderer: setRenderer, loadImage: loadImage, lerp: lerp, enableFullscreen: enableFullscreen, disableFullscreen: disableFullscreen, drawImageHd: drawImageHd, drawImageHd2: drawImageHd2, drawImageHdCrop: drawImageHdCrop, createImageContainer: createImageContainer, loadImageContainer: loadImageContainer }; })(); var Math2d = (function() { function angle(x1, y1, x2, y2) { var deltaY = y2 - y1; var deltaX = x2 - x1; return window.Math.atan2(deltaY, deltaX); } function distance(x1, y1, x2, y2) { var diffX = x2 - x1; var diffY = y2 - y1; return window.Math.sqrt((diffX * diffX) + (diffY * diffY)); } function fastDist(x1, y1, x2, y2) { var diffX = x2 - x1; var diffY = y2 - y1; return (diffX * diffX) + (diffY * diffY); } return { angle: angle, distance: distance, fastDist: fastDist }; })(); var MathUtils = (function() { var PI2 = window.Math.PI * 2; var Ease = { speedLimit: function(t, easingFunction, speed) { return window.Math.min((speed * t) + easingFunction(t), 1); }, linear: function(t) { return t; }, outQuad: function(t) { return t * (2 - t); }, outCubic: function(t) { return (((--t) * t) * t) + 1; }, inOutQuad: function(t) { return (t < 0.5) ? ((2 * t) * t) : (-1 + ((4 - (2 * t)) * t)); }, inQuad: function(t) { return t * t; }, inOutCubic: function(t) { return (t < 0.5) ? (((4 * t) * t) * t) : ((((t - 1) * ((2 * t) - 2)) * ((2 * t) - 2)) + 1); }, inCubic: function(t) { return (t * t) * t; }, inOutQuart: function(t) { return (t < 0.5) ? ((((8 * t) * t) * t) * t) : (1 - ((((8 * (--t)) * t) * t) * t)); }, inQuart: function(t) { return ((t * t) * t) * t; }, outQuart: function(t) { return 1 - ((((--t) * t) * t) * t); }, outQuint: function(t) { return 1 + (((((--t) * t) * t) * t) * t); } }; function inflateNumber(n) { if (n >= 20000) n = (n - 20000) * 1000; else if (n >= 10000) n = (n - 10000) * 100; return n; }; function simplifyNumber(n) { if (n >= 10000) { var log = window.Math.floor(window.Math.log10(n)) - 2; var decimal = window.Math.max(0, 3 - log); var V = window.Math.floor(n / 1000).toString(); if (decimal) { V += "." + ((n % 1000) / 1000).toString().substring(2).substring(0, decimal); for (var i = V.length - 1, zero_counter = 0; i > 0; i--) { if (V[i] != '0') break; else zero_counter++; } V = V.substring(0, V.length - zero_counter); if (V[V.length - 1] === '.') V = V.substring(0, V.length - 1); } V += "k"; return V; } else return n.toString(); }; function lerp(value1, value2, weight) { return ((1 - weight) * value1) + (value2 * weight); }; function beautifyNumber(inputNumber) { var numberStr = inputNumber + ""; var beautifiedStr = ""; var length = numberStr.length; for (var i = length - 1, j = 0; i >= 0; i--, j++) { var currentChar = numberStr[i]; if ((j > 2) && (currentChar !== '-')) { j = 0; beautifiedStr = "," + beautifiedStr; } beautifiedStr = currentChar + beautifiedStr; } return beautifiedStr; }; function randomizeList(list, randomNumberGenerator) { var newList = []; newList.push.apply(newList, list); var randomArray = []; while (newList.length > 0) { var randomIndex = window.Math.floor(randomNumberGenerator() * newList.length); randomArray.push(newList[randomIndex]); newList.splice(randomIndex, 1); } return randomArray; }; function reduceAngle(angle1, angle2) { return angle2 + (window.Math.round((angle1 - angle2) / PI2) * PI2); }; return { Ease: Ease, inflateNumber: inflateNumber, simplifyNumber: simplifyNumber, beautifyNumber: beautifyNumber, randomizeList: randomizeList, reduceAngle: reduceAngle, lerp: lerp }; })(); var Mouse = (function() { function updatePosition(event, state) { if (state !== Mouse.__MOUSE_MOVE__) Mouse.state = state; Mouse.sx = window.Math.floor(event.clientX * CanvasUtils.options.ratioX); Mouse.sy = window.Math.floor(event.clientY * CanvasUtils.options.ratioY); Mouse.x = window.Math.floor(Mouse.sx / scaleby); Mouse.y = window.Math.floor(Mouse.sy / scaleby); }; function updateAngle() { Mouse.angle = Math2d.angle(1, 0, Mouse.x - canw2ns, Mouse.y - canh2ns); }; function updateDist() { Mouse.distance = Math2d.distance(canw2ns, canh2ns, Mouse.x, Mouse.y); }; function updatePosAngle(event, state) { updatePosition(event, state); updateAngle(); }; function updateAll(event, state) { updatePosition(event, state); updateAngle(); updateDist(); }; function touchToMouseEvent(event, Wwwnn, nvnVv) { event.clientX = nvnVv.clientX; event.clientY = nvnVv.clientY; event.altKey = Wwwnn.altKey; event.ctrlKey = Wwwnn.ctrlKey; }; function LocalMouseEvent() { this.clientX = 0; this.clientY = 0; this.altKey = false; this.ctrlKey = false; this.preventDefault = function() {}; }; return { __MOUSE_MOVE__: 0, __MOUSE_DOWN__: 1, __MOUSE_UP__: 2, state: 0, updatePosition: updatePosition, updateAngle: updateAngle, updateDist: updateDist, updatePosAngle: updatePosAngle, updateAll: updateAll, x: 0, y: 0, sx: 0, sy: 0, angle: 0, distance: 0, touchToMouseEvent: touchToMouseEvent, LocalMouseEvent: LocalMouseEvent }; })(); var GUI = (function() { function roundRect(ctx, x, y, width, height, radius) { (width < (2 * radius)) && (radius = width / 2); (height < (2 * radius)) && (radius = height / 2); (0 > radius) && (radius = 0); ctx.beginPath(); ctx.moveTo(x + radius, y); ctx.arcTo(x + width, y, x + width, y + height, radius); ctx.arcTo(x + width, y + height, x, y + height, radius); ctx.arcTo(x, y + height, x, y, radius); ctx.arcTo(x, y, x + width, y, radius); ctx.closePath(); }; function createSprite(width, height, imageSrc, frameDelay, frameDelay) { var pos = { x: 0, y: 0 }; var imageSrc = imageSrc; var img = CanvasUtils.loadImage(imageSrc); var frameCount = 0; var currentFrame = 0; var frameDelayCounter = frameDelay; function draw() { if (img.isLoaded !== 1) return; frameCount += window.Math.min(delta, 3 * frameDelay); if (frameCount > frameDelay) { frameCount -= frameDelay; currentFrame = window.Math.floor((currentFrame + 1) % (img.width / frameDelayCounter)); } ctx.drawImage(img, frameDelayCounter * currentFrame, 0, frameDelayCounter, img.height, pos.x, pos.y, width * scaleby, height * scaleby); }; return { draw: draw, pos: pos }; }; function createBackground(width, height, imageSrc) { var pos = { x: 0, y: 0, disable: 0 }; var imageSrc = imageSrc; var img; if (imageSrc !== window.undefined) img = CanvasUtils.loadImage(imageSrc); else pos.disable = 1; function hide() { pos.disable = 1; }; function show() { pos.disable = 0; }; function draw() { if ((pos.disable === 1) || (img.isLoaded !== 1)) return; ctx.drawImage(img, 0, 0, img.width, img.height, pos.x, pos.y, width * scaleby, height * scaleby); }; return { draw: draw, pos: pos, show: show, hide: hide }; }; function createButton(width, height, normalImages, stateImages) { var pos = { x: 0, y: 0, disable: 0 }; var state = 0; if (stateImages === window.undefined) { stateImages = []; if (normalImages !== window.undefined) { for (var i = 0; i < normalImages.length; i++) stateImages[i] = CanvasUtils.loadImage(normalImages[i]); } else pos.disable = 1; } function setImages(normalImages, state) { stateImages = state; for (var i = 0; i < 3; i++) { var img = stateImages[i]; var src = normalImages[i]; if (img.isLoaded !== 1) stateImages[i] = CanvasUtils.loadImage(src, img); } }; function hide() { pos.disable = 1; }; function show() { pos.disable = 0; }; function setState(newState) { state = newState; }; function getState() { return state; }; function draw() { if (pos.disable === 1) return; var img = stateImages[state]; if (stateImages[state].isLoaded !== 1) return; ctx.drawImage(img, 0, 0, img.width, img.height, pos.x, pos.y, width * scaleby, height * scaleby); }; function trigger() { if (pos.disable === 1) return 0; if ((((Mouse.sx > pos.x) && (Mouse.sx < (pos.x + (width * scaleby)))) && (Mouse.sy > pos.y)) && (Mouse.sy < (pos.y + (height * scaleby)))) { if (Mouse.state === Mouse.__MOUSE_DOWN__) state = GUI.__BUTTON_CLICK__; else if (Mouse.state === Mouse.__MOUSE_UP__) state = GUI.__BUTTON_IN__; else if ((Mouse.state === Mouse.__MOUSE_MOVE__) && (state !== GUI.__BUTTON_CLICK__)) state = GUI.__BUTTON_IN__; return 1; } state = GUI.__BUTTON_OUT__; return 0; }; return { pos: pos, trigger: trigger, draw: draw, setState: setState, getState: getState, setImages: setImages, show: show, hide: hide }; }; function renderText(text, font, color, height, width, background, paddingHorz, paddingVert, border, borderColor, opacity, radius, borderText, borderTextWidth, weight) { if (text.length === 0) text = " "; if (paddingHorz === window.undefined) paddingHorz = 0; if (paddingVert === window.undefined) paddingVert = 0; if (border === window.undefined) border = 0; if (borderTextWidth === window.undefined) borderTextWidth = 0; var canvas = window.document.createElement("canvas"); var ctx = canvas.getContext("2d"); ctx.textBaseline = "middle", ctx.font = ((((weight !== window.undefined) ? (weight + " ") : '') + height) + "px ") + font; if (width !== window.undefined) width = window.Math.min(ctx.measureText(text).width, width); else width = ctx.measureText(text).width; canvas.width = width + paddingHorz; canvas.height = height + paddingVert; if (background !== window.undefined) { if (opacity !== window.undefined) ctx.globalAlpha = opacity; ctx.fillStyle = background; if (radius !== window.undefined) { roundRect(ctx, border + 2, border, ((width + paddingHorz) - (border * 2)) - 4, (height + paddingVert) - (border * 2), radius); ctx.fill(); } else ctx.fillRect(border, border, (width + paddingHorz) - (border * 2), (height + paddingVert) - (border * 2)); ctx.globalAlpha = 1; if (border !== 0) { ctx.lineWidth = border; ctx.strokeStyle = borderColor; ctx.stroke(); } } ctx.textBaseline = "middle"; ctx.font = ((((weight !== window.undefined) ? (weight + " ") : '') + height) + "px ") + font; if (borderText !== window.undefined) { ctx.strokeStyle = borderText; ctx.lineWidth = borderTextWidth; ctx.lineJoin = 'miter'; ctx.miterLimit = 2; ctx.strokeText(text, window.Math.floor(paddingHorz / 2), window.Math.floor(paddingVert / 2) + window.Math.floor(height / 2), width); } ctx.fillStyle = color; ctx.fillText(text, window.Math.floor(paddingHorz / 2), window.Math.floor(paddingVert / 2) + window.Math.floor(height / 2), width); canvas.wh = canvas.width / 2; canvas.h2 = canvas.height / 2; return canvas; }; return { __BUTTON_OUT__: 0, __BUTTON_IN__: 1, __BUTTON_CLICK__: 2, createButton: createButton, createBackground: createBackground, createSprite: createSprite, renderText: renderText }; })(); function onUnits(data, ui8) { var ui16 = new window.Uint16Array(data); /* The amount of object that arrived in one context of units data([18] is one object data(-2 from beggining)) */ var len = (ui8.length - 2) / 18; if (ui8[1] === 1) Entitie.removeAll(); // First message contains [0, 1 ...] at the beggining. for ( var i = 0, isRef8 = 2, isRef16 = 1; i < len; i++, isRef8 += 18, isRef16 += 9 ) { var entity = null; var pid = ui8[isRef8]; var uid = ui8[isRef8 + 1]; var type = ui8[isRef8 + 3]; var state = ui16[isRef16 + 2]; var id = ui16[isRef16 + 3]; var extra = ui16[isRef16 + 8]; if (state === 0) { Entitie.remove(pid, id, uid, type, extra); if (type === 0) GetAllTargets.getPlayerById(pid).setInactive(); if (type === 13) GetAllTargets.getGhoulByUid(uid).setInactive(); continue; } entity = Entitie.get(pid, id, uid, type); setEntitie( entity, pid, uid, id, type, ui16[isRef16 + 4], // Position X ui16[isRef16 + 5], // Position Y ui16[isRef16 + 6], // Position X ui16[isRef16 + 7], // Position Y extra, // Distinguish look of object ui8[isRef8 + 2], // Rotation state ); var update = ENTITIES[type].update; if (update !== window.undefined) update(entity, ui16[isRef16 + 4], ui16[isRef16 + 5]); //here if (pid !== 0 && type === 0) GetAllTargets.getPlayerById(pid).update(ui16[isRef16 + 6], ui16[isRef16 + 7]); if (uid !== 0 && type === 13) GetAllTargets.getGhoulByUid(uid).update(ui16[isRef16 + 6], ui16[isRef16 + 7]); } }; function onOldVersion(data) { var ui16 = new window.Uint16Array(data); if ((Home.gameMode === World.__SURVIVAL__) || (Home.gameMode === World.__GHOUL__)) { Client.badServerVersion(ui16[1]); if (Home.alertDelay <= 0) { Home.alertId = (Client.state === Client.State.__OLD_CLIENT_VERSION__) ? 0 : 1; Home.alertDelay = 3000; } } else if (Home.gameMode === World.__BR__) { Client.badServerVersion(-1); window.setTimeout(Home.joinServer, 300); } }; function onFull() { Client.full(); if (Home.alertDelay <= 0) { Home.alertId = 2; Home.alertDelay = 3000; } }; function onPlayerDie(ui8) { var player = Entitie.findEntitie(__ENTITIE_PLAYER__, World.PLAYER.id, 0); if (player !== null) Entitie.remove(player.pid, player.id, player.uid, player.type, 1); World.PLAYER.kill = (ui8[1] << 8) + ui8[2]; Client.closeClient(); }; function onOtherDie(id) { if (World.players[id].ghoul === 0) World.playerAlive--; }; function onFailRestoreSession() { Client.failRestore(); }; function onStoleYourSession() { Client.stolenSession(); }; function onMute(delay) { Client.muted(delay); }; function onLeaderboard(data, ui8) { if (data.byteLength === 1) return; var ui16 = new window.Uint16Array(data); World.initLeaderboard(ui16, ui8); }; function onHandshake(data, ui8) { World.PLAYER.id = ui8[1]; var ui16 = new window.Uint16Array(data); var duration = ui16[3] << 5; World.initDayCycle((duration >= World.__DAY__) ? 1 : 0, duration); Client.handshake(); Render.reset(); Entitie.unitsPerPlayer = ui16[1]; World.playerNumber = ui8[4]; World.gameMode = ui8[5]; World.PLAYER.lastScore = -1; World.PLAYER.exp = 0; World.PLAYER.click = 0; World.PLAYER.notification = []; World.PLAYER.notificationLevel = []; World.PLAYER.drag.begin = 0; World.PLAYER.interaction = -1; World.PLAYER.interactionDelay = 0; World.PLAYER.WMnWv = 0; World.PLAYER.blueprint = 0; World.PLAYER.buildRotate = 0; World.PLAYER.hintRotate = 0; World.PLAYER.grid = 0; for (var i = 0; i < World.PLAYER.gridPrev.length; i++) World.PLAYER.gridPrev[i] = 0; for (var i = 0; i < 8; i++) World.PLAYER.teamPos[i] = { old: 0, id: 0 }; World.PLAYER.KARMA = 0; World.PLAYER.badKarmaDelay = 0; if (World.gameMode === World.__BR__) World.PLAYER.craftFactor = 0.2; else if (World.gameMode === World.__GHOUL__) World.PLAYER.craftFactor = 0.4; else World.PLAYER.craftFactor = 1; World.PLAYER.lastAreas = [ [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1] ]; if (World.gameMode !== World.__GHOUL__) World.PLAYER.nextAreas = 10000000; World.PLAYER.badKarma = 0; World.PLAYER.gridPrev[i] = 0; World.PLAYER.isBuilding = 0; World.PLAYER.warm = 0; World.PLAYER.wrongTool = 0; World.PLAYER.wrongToolTimer = 0; World.PLAYER.teamLeader = 0; World.PLAYER.teamDelay = 0; World.PLAYER.teamQueue = [0, 0, 0, 0, 0]; World.PLAYER.teamCreateDelay = 0; World.PLAYER.teamEffect = 0; World.PLAYER.teamJoin = 0; World.PLAYER.team = -1; World.PLAYER.craftLen = 0; World.PLAYER.craftArea = -1; World.PLAYER.craftCategory = -1; World.PLAYER.craftSelected = -1; World.PLAYER.crafting = 0; World.PLAYER.craftList = []; World.PLAYER.craftAvailable = []; World.PLAYER.recipeAvailable = []; World.PLAYER.recipeList = []; World.PLAYER.recipeLen = 0; World.PLAYER.craftSpeed = 0; World.PLAYER.craftGauge = 0; World.PLAYER.toolsList = []; World.PLAYER.toolsLen = 0; World.PLAYER.skillUnlocked = []; World.PLAYER.level = 0; World.PLAYER.kill = 0; World.PLAYER.xp = 0; World.PLAYER.skillPoint = 0; World.PLAYER.nextLevel = 0; World.PLAYER.isInBuilding = 0; World.PLAYER.isInChest = 0; World.PLAYER.extraLoot = 0; Render.scale = 0; World.PLAYER.toxicMap = []; World.PLAYER.toxicStep = 0; for (var i = 0; i < 8; i++) { World.PLAYER.toxicMap[i] = []; for (var j = 0; j < 8; j++) World.PLAYER.toxicMap[i][j] = 0; } var len = ENTITIES[__ENTITIE_PLAYER__].inventorySize; World.PLAYER.inventory = []; for (var i = 0; i < len; i++) World.PLAYER.inventory[i] = [0, 0, 0, 0]; var len = (data.byteLength - 8) / 10; for (var WVnMV = 8, VmvnN = 4, i = 0; i < len; i++, WVnMV += 10, VmvnN += 5) { var PLAYER = World.players[ui8[WVnMV]]; PLAYER.id = ui8[WVnMV]; World.addToTeam(PLAYER, ui8[WVnMV + 1]); PLAYER.repellent = (ui8[WVnMV + 2] === 0) ? 0 : (Render.globalTime + (ui8[WVnMV + 2] * 2000)); PLAYER.withdrawal = (ui8[WVnMV + 3] === 0) ? 0 : (Render.globalTime + (ui8[WVnMV + 3] * 1000)); PLAYER.ghoul = ui8[WVnMV + 4]; if (PLAYER.ghoul !== 0) World.playerAlive--; PLAYER.tokenId = ui16[VmvnN + 3]; PLAYER.score = MathUtils.inflateNumber(ui16[VmvnN + 4]) + 1; window.console.log("id", PLAYER.id, "score", PLAYER.score); PLAYER.scoreSimplified = MathUtils.simplifyNumber(PLAYER.score - 1); MOD.tokenId = PLAYER.tokenId; } World.PLAYER.ghoul = World.players[World.PLAYER.id].ghoul; localStorage2.setItem("tokenId", World.players[World.PLAYER.id].tokenId); localStorage2.setItem("userId", World.PLAYER.id); World.sortLeaderboard(); World.initGauges(); MOD.userId = World.PLAYER.id; }; function onKickInactivity() { Client.kickedInactivity(); }; var nMmwv = window['Math'].acos; window['Math'].acos = window['Math'].asin; window['Math'].asin = nMmwv; function onNotification(ui8) { var PLAYER = World.players[ui8[1]]; PLAYER.notification.push(ui8[2] >> 2); PLAYER.notificationLevel.push(ui8[2] & 3); }; function onGauges(data) { var gauges = World.gauges; gauges.life.value = data[1]; gauges.food.value = data[2]; gauges.cold.value = data[3]; gauges.stamina.value = data[4]; gauges.rad.value = data[5]; }; function onScore(data) { var ui16 = new window.Uint16Array(data); World.PLAYER.exp = (ui16[1] << 16) + ui16[2]; }; function onPlayerHit(id, angle) { var player = Entitie.findEntitie(__ENTITIE_PLAYER__, id, 0); if (player !== null) { if (id === World.PLAYER.id) Render.shake = 3; player.hurt = 300; player.hurtAngle = ((angle * 2) * window.Math.PI) / 255; } }; function onFullInventory(MWwnV) { for (var i = 0; i < World.PLAYER.inventory.length; i++) { for (var j = 0; j < 4; j++) World.PLAYER.inventory[i][0] = 0; } var j = 0; for (var i = 1; i < MWwnV.length; i += 4) { var IID = MWwnV[i]; if (IID !== 0) Game.inventory[j].setImages(INVENTORY[IID].itemButton.src, INVENTORY[IID].itemButton.img); else continue; var invtr = World.PLAYER.inventory[j]; invtr[1] = MWwnV[i + 1]; invtr[2] = MWwnV[i + 2]; invtr[3] = MWwnV[i + 3]; invtr[0] = IID; j++; } }; function onDeleteItem(IID) { var invtr = World.PLAYER.inventory; for (var i = 0; i < invtr.length; i++) { if ((((invtr[i][0] === IID[1]) && (invtr[i][1] === IID[2])) && (invtr[i][2] === IID[3])) && (invtr[i][3] === IID[4])) { invtr[i][0] = 0; invtr[i][1] = 0; invtr[i][2] = 0; invtr[i][3] = 0; if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1)) World.buildCraftList(World.PLAYER.craftArea); return; } } }; function onNewItem(IID) { var invtr = World.PLAYER.inventory; for (var i = 0; i < invtr.length; i++) { if (invtr[i][0] === 0) { invtr[i][0] = IID[1]; invtr[i][1] = IID[2]; invtr[i][2] = IID[3]; invtr[i][3] = IID[4]; Game.inventory[i].setImages(INVENTORY[IID[1]].itemButton.src, INVENTORY[IID[1]].itemButton.img); if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1)) World.buildCraftList(World.PLAYER.craftArea); return; } } }; function onPlayerLife(value) { World.gauges.life.value = value; }; function onLifeDecreas() { World.gauges.life.decrease = 1; }; function onSelectedItem(data) { World.interactionEffect = INVENTORY[(data[1] << 8) + data[2]]._effect; }; function onLifeStop() { World.gauges.life.decrease = 0; }; function onPlayerHeal(id) { var player = Entitie.findEntitie(__ENTITIE_PLAYER__, id, 0); if ((player !== null) && (World.players[id].ghoul === 0)) player.heal = 300; }; function onStaminaIncrease() { World.gauges.stamina.decrease = -1; }; function onReplaceItem(IID) { var invtr = World.PLAYER.inventory; for (var i = 0; i < invtr.length; i++) { if ((((invtr[i][0] === IID[1]) && (invtr[i][1] === IID[2])) && (invtr[i][2] === IID[3])) && (invtr[i][3] === IID[4])) { invtr[i][1] = IID[5]; if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1)) World.buildCraftList(World.PLAYER.craftArea); return; } } }; function onStackItem(data) { var inventory = World.PLAYER.inventory; var firstIndex = -1; var secondIndex = -1; for (var i = 0; i < inventory.length; i++) { if ((((firstIndex === -1) && (inventory[i][0] === data[1])) && (inventory[i][1] === data[2])) && (inventory[i][2] === data[3])) firstIndex = i; else if (((inventory[i][0] === data[1]) && (inventory[i][1] === data[4])) && (inventory[i][2] === data[5])) secondIndex = i; } var item = INVENTORY[data[1]]; var totalStack = data[2] + data[4]; if (item.stack < totalStack) { inventory[secondIndex][3] = window.Math.min(255, window.Math.max(0, window.Math.floor(((inventory[firstIndex][3] * inventory[firstIndex][1]) + (inventory[secondIndex][3] * (item.stack - inventory[firstIndex][1]))) / item.stack))); inventory[firstIndex][1] = totalStack - item.stack; inventory[secondIndex][1] = item.stack; } else { inventory[secondIndex][3] = window.Math.min(255, window.Math.max(0, window.Math.floor(((inventory[firstIndex][3] * inventory[firstIndex][1]) + (inventory[secondIndex][3] * inventory[secondIndex][1])) / totalStack))); inventory[firstIndex][0] = 0; inventory[firstIndex][1] = 0; inventory[firstIndex][2] = 0; inventory[firstIndex][3] = 0; inventory[secondIndex][1] = totalStack; } if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1)) World.buildCraftList(World.PLAYER.craftArea); }; function onSplitItem(data) { var inventory = World.PLAYER.inventory; var amount = window.Math.floor(data[2] / 2); var firstIndex = -1; var secondIndex = -1; for (var i = 0; i < inventory.length; i++) { if ((((secondIndex === -1) && (inventory[i][0] === data[1])) && (inventory[i][1] === data[2])) && (inventory[i][2] === data[3])) { secondIndex = i; inventory[i][1] -= amount; } else if ((firstIndex === -1) && (inventory[i][0] === 0)) { firstIndex = i; inventory[i][0] = data[1]; inventory[i][1] = amount; inventory[i][2] = data[4]; Game.inventory[i].setImages(INVENTORY[data[1]].itemButton.src, INVENTORY[data[1]].itemButton.img); } } inventory[firstIndex][3] = inventory[secondIndex][3]; if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1)) World.buildCraftList(World.PLAYER.craftArea); }; function onStaminaStop() { World.gauges.stamina.decrease = 0; }; function onStaminaDecrease() { World.gauges.stamina.decrease = 1; }; function onColdIncrease() { World.gauges.cold.decrease = -1; }; function onColdStop() { World.gauges.cold.decrease = 0; }; function onColdDecrease() { World.gauges.cold.decrease = 1; }; function onPlayerStamina(value) { World.gauges.stamina.value = value; }; function onLifeIncrease() { World.gauges.life.decrease = -1; }; function onReplaceAmmo(IID) { var invtr = World.PLAYER.inventory; for (var i = 0; i < invtr.length; i++) { if ((((invtr[i][0] === IID[1]) && (invtr[i][1] === IID[2])) && (invtr[i][2] === IID[3])) && (invtr[i][3] === IID[4])) { invtr[i][3] = IID[5]; return; } } }; function NvmWv(IID) { var invtr = World.PLAYER.inventory; for (var i = 0; i < invtr.length; i++) { if (invtr[i][0] === IID[1] && invtr[i][1] === IID[2] && invtr[i][2] === IID[3] && invtr[i][3] === IID[4]) { invtr[i][3] = IID[5]; return; } } }; function onStartInteraction(delayMultiplier) { World.PLAYER.interaction = 1; World.PLAYER.interactionDelay = delayMultiplier * 100; World.PLAYER.interactionWait = World.PLAYER.interactionDelay; }; function onInterruptInteraction() { World.PLAYER.interaction = -1; World.PLAYER.interactionDelay = 0; }; function onReplaceItemAndAmmo(IID) { var invtr = World.PLAYER.inventory; for (var i = 0; i < invtr.length; i++) { if ((((invtr[i][0] === IID[1]) && (invtr[i][1] === IID[2])) && (invtr[i][2] === IID[3])) && (invtr[i][3] === IID[4])) { invtr[i][1] = IID[5]; invtr[i][3] = IID[6]; if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory === -1)) World.buildCraftList(World.PLAYER.craftArea); return; } } }; function onBlueprint(blueprint) { World.PLAYER.blueprint = blueprint; }; function onDay() { World.setDayCycle(0, 0); World.gauges.cold.decrease = -1; }; function onNight() { World.setDayCycle(1, 0); if (World.PLAYER.warm === 0) World.gauges.cold.decrease = 1; }; function onPlayerXp(xp) { World.PLAYER.xp += xp; }; function onPlayerXpSkill(ui8) { var level = ui8[1]; World.PLAYER.level = level; World.PLAYER.nextLevel = World.getXpFromLevel(level); World.PLAYER.xp = (((ui8[2] << 24) + (ui8[3] << 16)) + (ui8[4] << 8)) + ui8[5]; World.PLAYER.skillPoint = level; for (var i = 6; i < ui8.length; i++) onBoughtSkill(ui8[i]); }; function onBoughtSkill(IID) { if (IID === 0) return; World.PLAYER.skillUnlocked[IID] = 1; World.PLAYER.skillPoint -= INVENTORY[IID].detail.price; var scaleby = INVENTORY[IID].scale; if (scaleby !== window.undefined) Render.scale = scaleby; else { var bag = INVENTORY[IID].bag; if (bag !== window.undefined) { for (var i = 0; i < bag; i++) World.PLAYER.inventory.push([0, 0, 0, 0]); } } if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftCategory !== -1)) World.buildSkillList(World.PLAYER.craftCategory); }; function onStartCraft(id) { if ((Game.getSkillBoxState() === 1) && (World.PLAYER.craftArea === 0)) World.buildCraftList(AREAS.__PLAYER__); var delay = INVENTORY[id].detail.timer[0] * World.PLAYER.craftFactor; World.PLAYER.crafting = window.Date.now() + delay; World.PLAYER.craftingMax = delay; }; function onLostBuilding() { if (((((Game.getSkillBoxState() === 1) && (World.PLAYER.vwMWn !== -1)) && (World.PLAYER.craftCategory === -1)) && (World.PLAYER.craftArea !== AREAS.__PLAYER__)) || (World.PLAYER.isInChest === 1)) Game.BUTTON_CLOSE_BOX(); }; function onOpenBuilding(ui8) { var area = ui8[1]; World.buildCraftList(area); if (ui8[8] === 0) { AudioUtils.playFx(AudioUtils._fx.open, 1, 0); Game.openBox(1); World.PLAYER.isInBuilding = 1; } var craft = World.PLAYER.building; var queue = craft.queue; World.PLAYER.building.len = 4; for (var i = 0; i < 4; i++) { var item = ui8[i + 4]; queue[i] = item; if (item !== 0) Game.queue[i].setImages(INVENTORY[item].itemButton.src, INVENTORY[item].itemButton.img); else { World.PLAYER.building.len = i; break; } } craft.pos = ui8[3]; if (((((((area === AREAS.__SMELTER__) || (area === AREAS.__FIRE__)) || (area === AREAS.__COMPOST__)) || (area === AREAS.__BBQ__)) || (area === AREAS.__TESLA__)) || (area === AREAS.__AGITATOR__)) || (area === AREAS.__EXTRACTOR__) || (area === AREAS.__FEEDER__)) craft.fuel = ui8[9]; else craft.fuel = -1; if (((queue[0] !== 0) && (craft.pos !== 4)) && (queue[craft.pos] !== 0)) { var item = INVENTORY[queue[craft.pos]]; var canvasZ = item.detail.area; for (i = 0; i < canvasZ.length; i++) { if (canvasZ[i] === area) { craft.timeMax = item.detail.timer[i] * World.PLAYER.craftFactor; break; } } craft.time = window.Date.now() + (craft.timeMax * (ui8[2] / 255)); } else if (World.PLAYER.building.len === craft.pos) craft.time = 0; }; function onNewFuelValue(ui8) { World.PLAYER.building.fuel = ui8[1]; }; function onWarmOn() { World.PLAYER.warm = 1; World.gauges.cold.decrease = -1; }; function onWarmOff() { World.PLAYER.warm = 0; if ((World.day === 1) || (World.transition > 0)) World.gauges.cold.decrease = 1; }; function FeederonWarmOn() { World.PLAYER.warm = 1; World.gauges.cold.decrease = -1; }; function FeederonWarmOff() { World.PLAYER.warm = 0; World.gauges.cold.decrease = 1; }; function onWrongTool(tool) { if (World.PLAYER.wrongToolTimer <= 0) { World.PLAYER.wrongToolTimer = 2000; World.PLAYER.wrongTool = tool; } }; function onModdedGaugesValues(data) { var ui16 = new window.Uint16Array(data); World.gauges.life._max = ui16[1]; World.gauges.life.speedInc = ui16[2] / 10000; World.gauges.life.speedDec = ui16[3] / 10000; World.gauges.food._max = ui16[4]; World.gauges.food.speedInc = ui16[5] / 10000; World.gauges.food.speedDec = ui16[6] / 10000; World.gauges.cold._max = ui16[7]; World.gauges.cold.speedInc = ui16[8] / 10000; World.gauges.cold.speedDec = ui16[9] / 10000; World.gauges.stamina._max = ui16[10]; World.gauges.stamina.speedInc = ui16[11] / 10000; World.gauges.stamina.speedDec = ui16[12] / 10000; World.gauges.rad._max = ui16[13]; World.gauges.rad.speedInc = ui16[14] / 10000; World.gauges.rad.speedDec = ui16[15] / 10000; World.gauges.life.current = window.Math.min(World.gauges.life._max, World.gauges.life.current); World.gauges.life.value = window.Math.min(World.gauges.life._max, World.gauges.life.value); World.gauges.food.current = window.Math.min(World.gauges.food._max, World.gauges.food.current); World.gauges.food.value = window.Math.min(World.gauges.food._max, World.gauges.food.value); World.gauges.cold.current = window.Math.min(World.gauges.cold._max, World.gauges.cold.current); World.gauges.cold.value = window.Math.min(World.gauges.cold._max, World.gauges.cold.value); World.gauges.stamina.current = window.Math.min(World.gauges.stamina._max, World.gauges.stamina.current); World.gauges.stamina.value = window.Math.min(World.gauges.stamina._max, World.gauges.stamina.value); World.gauges.rad.current = window.Math.min(World.gauges.rad._max, World.gauges.rad.current); World.gauges.rad.value = window.Math.min(World.gauges.rad._max, World.gauges.rad.value); }; function onShakeExplosionState(shake) { Render.explosionShake = -shake; }; function onFullChest(ui8) { var itemsinside = World.PLAYER.chest; if (ui8[1] === 1) { Game.openBox(2); World.PLAYER.isInChest = 1; AudioUtils.playFx(AudioUtils._fx.open, 1, 0); } for (var space = 0; space < 4; space++) { for (var j = 0; j < 3; j++) { var itemimage = ui8[(2 + (space * 3)) + j]; if (j === 0) { if (itemimage === 0) { itemsinside[space][0] = 0; itemsinside[space][1] = 0; itemsinside[space][2] = 0; itemsinside[space][3] = 0; break; } Game.chest[space].setImages(INVENTORY[itemimage].itemButton.src, INVENTORY[itemimage].itemButton.img); } itemsinside[space][j] = itemimage; } itemsinside[space][3] = itemsinside[space][2]; } }; function onRadOn() { World.gauges.rad.decrease = 1; }; function onRadOff() { World.gauges.rad.decrease = -1; }; function onAcceptedTeam(PLAYER, team) { World.players[PLAYER].team = team; World.players[PLAYER].teamUid = World.teams[team].uid; if (PLAYER === World.PLAYER.id) World.PLAYER.team = team; }; function onKickedTeam(PLAYER) { World.players[PLAYER].team = -1; if (PLAYER === World.PLAYER.id) World.PLAYER.team = -1; }; function onDeleteTeam(team) { World.deleteTeam(team); if (team === World.PLAYER.team) { World.PLAYER.team = -1; World.PLAYER.teamLeader = 0; } }; function onJoinTeam(PLAYER) { var queue = World.PLAYER.teamQueue; for (var i = 0; i < 5; i++) { if (queue[i] === 0) { if (World.PLAYER.teamJoin === 0) { World.PLAYER.teamJoin = PLAYER; World.PLAYER.teamDelay = 0; } else queue[i] = PLAYER; return; } } }; function onTeamPosition(ui8) { window.console.log(ui8); var pos = World.PLAYER.teamPos; var len = (ui8.length - 1) / 3; var j = 0; for (var i = 0; i < len; i++) { var id = ui8[3 + (i * 3)]; if (World.PLAYER.id !== id) { var offsetX = ui8[1 + (i * 3)]; var offsetY = ui8[2 + (i * 3)]; var PLAYER = World.players[id]; pos[j].id = id; pos[j].old = 14000; PLAYER.x = offsetX * Render.__TRANSFORM__; PLAYER.y = offsetY * Render.__TRANSFORM__; if (Math2d.fastDist(PLAYER.rx, PLAYER.ry, PLAYER.x, PLAYER.y) > 3000000) { PLAYER.rx = PLAYER.x; PLAYER.ry = PLAYER.y; } j++; } } World.PLAYER.teamLength = j; }; function onKarma(KARMA) { World.PLAYER.KARMA = KARMA; }; function onBadKarma(ui8) { if (ui8[1] !== World.PLAYER.id) { var PLAYER = World.players[ui8[1]]; PLAYER.x = ui8[2] * Render.__TRANSFORM__; PLAYER.y = ui8[3] * Render.__TRANSFORM__; PLAYER.KARMA = ui8[4]; World.PLAYER.badKarma = PLAYER.id; World.PLAYER.badKarmaDelay = 14000; } }; function onAreas(ui8) { World.PLAYER.toxicStep++; World.PLAYER.nextAreas = ui8[1] * 1000; for (var k = 2; k < 14; k++) { if (ui8[k] === 100) { World.PLAYER.lastAreas[k - 2][0] = -1; World.PLAYER.lastAreas[k - 2][1] = -1; } else { var i = window.Math.floor(ui8[k] / 8); var j = ui8[k] % 8; World.PLAYER.toxicMap[i][j] = World.PLAYER.toxicStep; World.PLAYER.lastAreas[k - 2][0] = i; World.PLAYER.lastAreas[k - 2][1] = j; } } Render.battleRoyale(); }; function onWrongPassword() { Client.badServerVersion(0); if (Home.alertDelay <= 0) { Home.alertId = 3; Home.alertDelay = 3000; } }; function onPlayerEat(id) { var player = Entitie.findEntitie(__ENTITIE_PLAYER__, id, 0); if (player !== null) player.hurt2 = 300; }; function onCitiesLocation(cities) { World.PLAYER.cities = []; for (var i = 1; i < cities.length; i++) World.PLAYER.cities.push(cities[i] * 100); }; function onPoisened(delay) { Render.setPoisonEffect(delay * 1000); }; function onRepellent(id, delay) { World.players[id].repellent = Render.globalTime + (delay * 2000); }; function onLapadoine(id, delay) { World.players[id].withdrawal = Render.globalTime + (delay * 1000); }; function onResetDrug(id, withdrawal) { var PLAYER = World.players[id]; PLAYER.withdrawal = (withdrawal !== 0) ? Render.globalTime : 0; PLAYER.repellent = Render.globalTime; }; function onDramaticChrono(duration) { World.PLAYER.nextAreas = duration * 10000; }; function onMessageRaw(data) { var ui8 = new window.Uint8Array(data); // New case numbers array const newCaseNumbers = [42, 0, 35, 31, 27, 1, 32, 22, 34, 19, 28, 17, 15, 4, 30, 29, 23, 12, 33, 37, 54, 3, 56, 38, 14, 48, 64, 52, 46, 6, 11, 61, 10, 71, 41, 5, 59, 73, 58, 16, 60, 53, 20, 49, 40, 8, 62, 67, 25, 26, 2, 36, 18, 44, 9, 21, 7, 13, 24, 57, 69, 68, 55, 51, 39, 45, 65, 72, 70, 43, 47, 50, 66, 63]; // Create a map from old case numbers to new case numbers const caseMap = { 52: newCaseNumbers[0], 0: newCaseNumbers[1], 34: newCaseNumbers[2], 46: newCaseNumbers[3], 51: newCaseNumbers[4], 63: newCaseNumbers[5], 6: newCaseNumbers[6], 65: newCaseNumbers[7], 56: newCaseNumbers[8], 72: newCaseNumbers[9], 71: newCaseNumbers[10], 55: newCaseNumbers[11], 17: newCaseNumbers[12], 1: newCaseNumbers[13], 40: newCaseNumbers[14], 58: newCaseNumbers[15], 64: newCaseNumbers[16], 30: newCaseNumbers[17], 48: newCaseNumbers[18], 35: newCaseNumbers[19], 29: newCaseNumbers[20], 54: newCaseNumbers[21], 9: newCaseNumbers[22], 69: newCaseNumbers[23], 39: newCaseNumbers[24], 3: newCaseNumbers[25], 38: newCaseNumbers[26], 21: newCaseNumbers[27], 43: newCaseNumbers[28], 20: newCaseNumbers[29], 44: newCaseNumbers[30], 42: newCaseNumbers[31], 12: newCaseNumbers[32], 18: newCaseNumbers[33], 47: newCaseNumbers[34], 73: newCaseNumbers[35], 61: newCaseNumbers[36], 25: newCaseNumbers[37], 66: newCaseNumbers[38], 59: newCaseNumbers[39], 24: newCaseNumbers[40], 41: newCaseNumbers[41], 19: newCaseNumbers[42], 57: newCaseNumbers[43], 67: newCaseNumbers[44], 37: newCaseNumbers[45], 32: newCaseNumbers[46], 22: newCaseNumbers[47], 4: newCaseNumbers[48], 60: newCaseNumbers[49], 53: newCaseNumbers[50], 8: newCaseNumbers[51], 13: newCaseNumbers[52], 16: newCaseNumbers[53], 7: newCaseNumbers[54], 31: newCaseNumbers[55], 68: newCaseNumbers[56], 50: newCaseNumbers[57], 45: newCaseNumbers[58], 28: newCaseNumbers[59], 49: newCaseNumbers[60], 10: newCaseNumbers[61], 62: newCaseNumbers[62], 27: newCaseNumbers[63], 26: newCaseNumbers[64], 5: newCaseNumbers[65], 15: newCaseNumbers[66], 23: newCaseNumbers[67], 70: newCaseNumbers[68], 14: newCaseNumbers[69], 33: newCaseNumbers[70], 2: newCaseNumbers[71], 36: newCaseNumbers[72], 11: newCaseNumbers[73] }; // Decode data with updated case numbers switch (ui8[0]) { case newCaseNumbers[0]: onUnits (data, ui8); break; case newCaseNumbers[1]: onOldVersion (data); break; case newCaseNumbers[2]: onFull (); break; case newCaseNumbers[3]: onPlayerDie (ui8); break; case newCaseNumbers[4]: onOtherDie (ui8[1]); break; case newCaseNumbers[5]: onFailRestoreSession (); break; case newCaseNumbers[6]: onStoleYourSession (); break; case newCaseNumbers[7]: onMute (ui8[1]); break; case newCaseNumbers[8]: onLeaderboard (data, ui8); break; case newCaseNumbers[9]: onHandshake (data, ui8); break; case newCaseNumbers[10]: onKickInactivity (); break; case newCaseNumbers[11]: onNotification (ui8); break; case newCaseNumbers[12]: onGauges (ui8); break; case newCaseNumbers[13]: onScore (data); break; case newCaseNumbers[14]: onPlayerHit (ui8[1], ui8[2]); break; case newCaseNumbers[15]: onFullInventory (ui8); break; case newCaseNumbers[16]: onDeleteItem (ui8); break; case newCaseNumbers[17]: onNewItem (ui8); break; case newCaseNumbers[18]: onPlayerLife (ui8[1]); break; case newCaseNumbers[19]: onLifeDecreas (); break; case newCaseNumbers[20]: onSelectedItem (ui8); break; case newCaseNumbers[21]: onLifeStop (); break; case newCaseNumbers[22]: onPlayerHeal (ui8[1]); break; case newCaseNumbers[23]: onStaminaIncrease (); break; case newCaseNumbers[24]: onStaminaStop (); break; case newCaseNumbers[25]: onStaminaDecrease (); break; case newCaseNumbers[26]: onColdIncrease (); break; case newCaseNumbers[27]: onColdStop (); break; case newCaseNumbers[28]: onColdDecrease (); break; case newCaseNumbers[29]: onPlayerStamina (ui8[1]); break; case newCaseNumbers[30]: onLifeIncrease (); break; case newCaseNumbers[31]: onReplaceItem (ui8); break; case newCaseNumbers[32]: onStackItem (ui8); break; case newCaseNumbers[33]: onSplitItem (ui8); break; case newCaseNumbers[34]: onReplaceAmmo (ui8); break; case newCaseNumbers[35]: onStartInteraction (ui8[1]); break; case newCaseNumbers[36]: onInterruptInteraction (); break; case newCaseNumbers[37]: onReplaceItemAndAmmo (ui8); break; case newCaseNumbers[38]: onBlueprint (ui8[1]); break; case newCaseNumbers[39]: onDay (); break; case newCaseNumbers[40]: onNight (); break; case newCaseNumbers[41]: onPlayerXp ((ui8[1] << 8) + ui8[2]); break; case newCaseNumbers[42]: onPlayerXpSkill (ui8); break; case newCaseNumbers[43]: onBoughtSkill (ui8[1]); break; case newCaseNumbers[44]: onStartCraft (ui8[1]); break; case newCaseNumbers[45]: onLostBuilding (); break; case newCaseNumbers[46]: onOpenBuilding (ui8); break; case newCaseNumbers[47]: onNewFuelValue (ui8); break; case newCaseNumbers[48]: onRadOn (); break; case newCaseNumbers[49]: onRadOff (); break; case newCaseNumbers[50]: onWarmOn (); break; case newCaseNumbers[51]: onWarmOff (); break; case newCaseNumbers[52]: onWrongTool (ui8[1]); break; case newCaseNumbers[53]: onFullChest (ui8); break; case newCaseNumbers[54]: onAcceptedTeam (ui8[1], ui8[2]); break; case newCaseNumbers[55]: onKickedTeam (ui8[1]); break; case newCaseNumbers[56]: onDeleteTeam (ui8[1]); break; case newCaseNumbers[57]: onJoinTeam (ui8[1]); break; case newCaseNumbers[58]: onTeamPosition (ui8); break; case newCaseNumbers[59]: onKarma (ui8[1]); break; case newCaseNumbers[60]: onBadKarma (ui8); break; case newCaseNumbers[61]: onAreas (ui8); break; case newCaseNumbers[62]: onWrongPassword (); break; case newCaseNumbers[63]: onModdedGaugesValues (data); break; case newCaseNumbers[64]: onShakeExplosionState (ui8[1]); break; case newCaseNumbers[65]: onPlayerEat (ui8[1]); break; case newCaseNumbers[66]: onCitiesLocation (ui8); break; case newCaseNumbers[67]: onPoisened (ui8[1]); break; case newCaseNumbers[68]: onRepellent (ui8[1], ui8[2]); break; case newCaseNumbers[69]: onLapadoine (ui8[1], ui8[2]); break; case newCaseNumbers[70]: onResetDrug (ui8[1], ui8[2]); break; case newCaseNumbers[71]: onDramaticChrono (ui8[1]); break; case newCaseNumbers[72]: FeederonWarmOn (); break; case newCaseNumbers[73]: FeederonWarmOff (); break; } }; function onChat(data) { World.players[data[1]].text.push(data[2]); }; function onNewPlayer(data) { var PLAYER = World.players[data[1]]; PLAYER.tokenId = data[2]; PLAYER.score = 0; PLAYER.old = __ENTITIE_PLAYER__; PLAYER.nickname = ((data[3] + "#") + data[1]); PLAYER.skin = data[4]; PLAYER.ghoul = data[5]; PLAYER.team = -1; PLAYER.breath = 0; PLAYER.move = 0; PLAYER.orientation = 1; PLAYER.punch = 1; PLAYER.withdrawal = 0; PLAYER.repellent = 0; PLAYER.notification = []; PLAYER.notificationLevel = []; PLAYER.notificationDelay = 0; PLAYER.textEase = 0; PLAYER.text = []; PLAYER.textEffect = []; PLAYER.textMove = []; PLAYER.label = []; PLAYER.locatePlayer = -1; PLAYER.frameId = -1; PLAYER.nicknameLabel = null; PLAYER.playerIdLabel = null; PLAYER.storeLabel = null; PLAYER.leaderboardLabel = null; if (PLAYER.ghoul === 0) World.playerAlive++; }; function onNicknamesToken(data) { var len = data.length - 1; World.playerNumber = len; localStorage2.setItem("token", data[len]); data[0] = ""; World.allocatePlayers(data); MOD.token = data[len]; }; function onAlert() {}; function onNewTeam(data) { var team = World.teams[data[1]]; team.leader = data[2]; team.name = data[3]; var PLAYER = World.players[team.leader]; PLAYER.teamUid = team.uid; PLAYER.teamLeader = 1; PLAYER.team = team.id; if (team.leader === World.PLAYER.id) { World.PLAYER.teamLeader = 1; World.PLAYER.team = team.id; } if (Game.teamName === team.name) Game.teamNameValid = 0; }; function onTeamName(data) { World.allocateTeam(data); }; function onMessageJSON(data) { switch (data[0]) { case 0: onChat (data); break; case 1: onNewPlayer (data); break; case 2: onNicknamesToken(data); break; case 3: onAlert (data[1]); break; case 4: onNewTeam (data); break; case 5: onTeamName (data); break; } }; function onFirstMessage(dat) { var token = localStorage2.getItem("token"); var tokenId = localStorage2.getItem("tokenId"); var userid = -1; try { userid = window.Number(localStorage2.getItem("userId")); if (userid === window.NaN) userid = -1; } catch (error) {}; var nickname = localStorage2.getItem("nickname"); var state = ((Client.state & Client.State.__CONNECTION_LOST__) > 0) ? 1 : 0; var skin = window.Number(localStorage2.getItem("skin")); var password = 0; if (window.document.getElementById("passwordInput") !== null) { password = window.document.getElementById("passwordInput").value; if (password.length > 0) localStorage2.setItem("password", password); if (Loader.getURLData("admin") !== null) { Home.adblocker = 0; Home.ads = -1; } } Home.adblocker = 0 // make sure we do indeed get the items return [dat, token, tokenId, userid, state, nickname, skin, Home.adblocker, password]; }; var Client = (function() { State = { __CONNECTED__: 1, __PENDING__: 2, __ATTEMPTS_LIMIT_EXCEEDED__: 4, __OLD_CLIENT_VERSION__: 8, __OLD_SERVER_VERSION__: 16, __FULL__: 32, __CONNECTION_LOST__: 64, __CLOSED__: 128, __FAIL_RESTORE__: 256, __KICKED_INACTIVITY__: 512, __STOLEN_SESSION__: 1024 }; var hostname = 1; var port = 2; var CONNECTION_TIMEOUT = 3000; var RECONNECTION_TIMEOUT = 1500; var string0 = window.JSON.stringify([0]); var MOUSE_ROTATION_TIMEOUT = 150; var FAST_MOUSE_ROTATION_TIMEOUT = 60; var LEFT = 0; var RIGHT = 1; var socket = window.undefined; var connectionAttempts = 0; var isconnected = 0; var delay = 0; var previousDelay = CONNECTION_TIMEOUT; var lastActivityTimestamp = 0; var reconnectionDelay = 0; var lastMoveState = 0; var lastShiftState = 0; var getServList = ""; var dat = 0; var connectionAttemptsLimit = 0; var timeoutnb = 0; var reconnectionAttempts = 0; var lastChatTimestamp = 0; var chatMessageDelay = 0; var lastMouseDirection = 0; var MouseAngle = Mouse.angle; var lastMouseAngleUpdate = 0; var onMessageJSON = window.undefined; var onMessageRaw = window.undefined; var startMessage = window.undefined; function init(version, rejoin, joinServerDelay, joinServerAttempts, pingServerDelay, inactivityTimeoutt, RawMessage, JsonMessage, FirstMessage) { //getServList = (wwwWN !== window.undefined) ? wwwWN : "json/servers.json"; dat = (version !== window.undefined) ? version : 0; connectionAttemptsLimit = (rejoin !== window.undefined) ? rejoin : 15000; reconnectionAttempts = (joinServerAttempts !== window.undefined) ? joinServerAttempts : 3; reconnectionDelay = (pingServerDelay !== window.undefined) ? pingServerDelay : 20000; windowFocusDelay = (inactivityTimeoutt !== window.undefined) ? inactivityTimeoutt : 10000; onMessageRaw = (RawMessage !== window.undefined) ? RawMessage : (function() {}); onMessageJSON = (JsonMessage !== window.undefined) ? JsonMessage : (function() {}); startMessage = (FirstMessage !== window.undefined) ? FirstMessage : (function() {}); timeoutnb = (joinServerDelay !== window.undefined) ? joinServerDelay : 2000; lastMouseAngleUpdate = previousTimestamp; var serverversion = localStorage2.getItem("serverVersion"); if ((localStorage2.getItem("token") === null) || (serverversion !== ("" + dat))) localStorage2.setItem("token", chngtoken()); localStorage2.setItem("serverVersion", dat); }; function handleDisconnection() { if (((Client.state & State.__CONNECTED__) === 0) || ((Client.state & State.__CONNECTION_LOST__) > 0)) return; Client.state = State.__CONNECTION_LOST__; socket.close(); checkConnection(); }; function attemptReconnection() { if (delta > windowFocusDelay) delay = previousTimestamp; if ((previousTimestamp - delay) > connectionAttemptsLimit) { delay = previousTimestamp; handleDisconnection(); } }; function onOtherDie() { window.clearTimeout(cannotJoinServerHandler); }; function checkConnection(rivetToken) { isconnected = 0; Client.state = State.__PENDING__ + (Client.state & (State.__CONNECTION_LOST__ | State.__FULL__)); completeConnection(rivetToken); }; function startConnection(nickname, skin, rivetToken) { if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) { localStorage2.setItem("nickname", nickname); localStorage2.setItem("skin", skin); checkConnection(rivetToken); } }; function handleReconnectionAttempts() { isconnected++; socket.close(); if (isconnected >= reconnectionAttempts) { Client.state = State.__ATTEMPTS_LIMIT_EXCEEDED__ + (Client.state & State.__CONNECTION_LOST__); if ((Client.state & State.__CONNECTION_LOST__) > 0) onError(); } else completeConnection(); }; function sendPacket(NwnNM) { lastActivityTimestamp = previousTimestamp; socket.send(NwnNM); }; function sendKeepAlive() { if ((previousTimestamp - lastActivityTimestamp) > reconnectionDelay) { socket.send(string0); lastActivityTimestamp = previousTimestamp; } }; function sendChatMessage(message) { if ((previousTimestamp - lastChatTimestamp) > chatMessageDelay) { lastActivityTimestamp = previousTimestamp; socket.send(window.JSON.stringify([1, message])); return 0; } return chatMessageDelay - (previousTimestamp - lastChatTimestamp); }; function sendWSmsg(ss) { socket.send(ss); }; function sendAfk() { var i = 1; function myLoop() { setTimeout(function() { socket.send(0); i++; if (i < 99999999999999999999) { myLoop(); } }, 20000) } myLoop(); }; function newToken() { localStorage2.setItem("tokenId", 0); localStorage2.setItem("userId", 1); completeConnection(); }; function sendMouseAngle() { if ((previousTimestamp - lastMouseAngleUpdate) > MOUSE_ROTATION_TIMEOUT) { var rotation = (((((Mouse.angle - MouseAngle) * 180) / window.Math.PI) % 360) + 360) % 360; if (rotation > 2) { lastActivityTimestamp = previousTimestamp; lastMouseAngleUpdate = previousTimestamp; MouseAngle = Mouse.angle; rotation = window.Math.floor(((((Mouse.angle * 180) / window.Math.PI) % 360) + 360) % 360); if (!MOD.AimBotEnable) socket.send(window.JSON.stringify([6, rotation])); } } }; function sendFastMouseAngle() { if ((previousTimestamp - lastMouseAngleUpdate) > FAST_MOUSE_ROTATION_TIMEOUT) { var rotation = (((((Mouse.angle - MouseAngle) * 180) / window.Math.PI) % 360) + 360) % 360; if (rotation > 2) { lastActivityTimestamp = previousTimestamp; lastMouseAngleUpdate = previousTimestamp; MouseAngle = Mouse.angle; rotation = window.Math.floor(((((Mouse.angle * 180) / window.Math.PI) % 360) + 360) % 360); if (!MOD.AimBotEnable) socket.send(window.JSON.stringify([6, rotation])); } } }; function sendShift() { var shift = Keyboard.isShift(); if (shift !== lastShiftState) { lastActivityTimestamp = previousTimestamp; window.console.log("sendShift", shift); lastShiftState = shift; socket.send(window.JSON.stringify([7, shift])); } }; function sendMouseRightLeft() { if (Mouse.x >= canw2ns) { if (lastMouseDirection !== RIGHT) { lastActivityTimestamp = previousTimestamp; lastMouseDirection = RIGHT; socket.send(window.JSON.stringify([3, RIGHT])); } } else { if (lastMouseDirection !== LEFT) { lastActivityTimestamp = previousTimestamp; lastMouseDirection = LEFT; socket.send(window.JSON.stringify([3, LEFT])); } } }; function sendMouseDown() { lastActivityTimestamp = previousTimestamp; socket.send(window.JSON.stringify([4])); }; function sendMouseUp() { lastActivityTimestamp = previousTimestamp; socket.send(window.JSON.stringify([5])); }; function sendMove() { var move = 0; if (Keyboard.isLeft() === 1) move |= 1; if (Keyboard.isRight() === 1) move |= 2; if (Keyboard.isBottom() === 1) move |= 4; if (Keyboard.isTop() === 1) move |= 8; if (lastMoveState !== move) { lastActivityTimestamp = previousTimestamp; lastMoveState = move; socket.send(window.JSON.stringify([2, move])); } }; function completeConnection(rivetToken) { var ip = Client.connectedLobby['ports']['default']['hostname']; var port = Client.connectedLobby['ports']['default']['port']; var isTLS = Client.connectedLobby['ports']['default']['is_tls'] ? 1 : 0; socket = new window.WebSocket("ws" + (isTLS === 1 ? "s" : "") + "://" + ip + ":" + port + '/?token=' + rivetToken); window.ws = socket; connectionAttempts++; socket.currentId = connectionAttempts; var currentId = connectionAttempts; socket.binaryType = "arraybuffer"; socket.onerror = function() { if (this.currentId !== connectionAttempts) return; handleDisconnection(); }; socket.onclose = function(event) { if (this.currentId !== connectionAttempts) return; handleDisconnection(); }; socket.onmessage = function(event) { if (this.currentId !== connectionAttempts) return; delay = previousTimestamp; if (typeof event.data === 'string') onMessageJSON(window.JSON.parse(event.data)); else { onMessageRaw(event.data); } }; socket.onopen = function(event) { lastMouseDirection = -1; lastActivityTimestamp = previousTimestamp; onOtherDie(); socket.send(window.JSON.stringify(onFirstMessage(dat))); cannotJoinServerHandler = window.setTimeout(function() { if (currentId !== connectionAttempts) return; handleReconnectionAttempts(); }, timeoutnb); }; cannotJoinServerHandler = window.setTimeout(function() { if (currentId !== connectionAttempts) return; handleReconnectionAttempts(); }, timeoutnb); }; function full() { Client.state |= Client.State.__FULL__; }; function muted(delay) { lastChatTimestamp = previousTimestamp; chatMessageDelay = delay * 60000; }; function stolenSession() { Client.state = State.__STOLEN_SESSION__; onError(); }; function kickedInactivity() { Client.state = State.__KICKED_INACTIVITY__; onError(); }; function closeClient() { Client.state = State.__CLOSED__; onError(); }; function failRestore() { onOtherDie(); Client.state = State.__FAIL_RESTORE__; onError(); }; function handshake() { onOtherDie(); Client.state = Client.State.__CONNECTED__; if (Client.onOpen !== null) Client.onOpen(); }; function badServerVersion(serverversion) { if (serverversion > dat) Client.state = State.__OLD_CLIENT_VERSION__; else if (serverversion < dat) Client.state = State.__OLD_SERVER_VERSION__; onOtherDie(); }; function getServerList(_srv) { var lobbyList = 'https://api.eg.rivet.gg/matchmaker/lobbies/list'; let header = {'Accept': 'application/json'}; window.RIVET_TOKEN && (header['Authorization'] = 'Bearer' + window.RIVET_TOKEN), fetch(lobbyList, { headers: header }) .then(_list=>{ if (_list['ok']) return _list.json(); else throw 'Failed to list lobbies: ' + _list['status']; }) .then(_lobb=>{ Client.serverList = _lobb['lobbies']['map'](_reg=>{ let _nam = _lobb.regions.find(id=>id['region_id'] == _reg['region_id']) , nam = _nam ? _nam['region_display_name'] : '?'; return [_reg['lobby_id'], '', '', 1, nam, _reg['total_player_count'], _reg['game_mode_id']]; } ), _srv(); } ); } function chngtoken() { var token = ""; for (var i = 0; i < 20; i++) { token += window.String.fromCharCode(48 + window.Math.floor(window.Math.random() * 74)); } return token; }; function update() { if (Client.state === Client.State.__CONNECTED__) { attemptReconnection(); sendKeepAlive(); } }; function onError() { if (Client.onError !== null) { var StWSstate = Client.state; Client.state = 0; Client.onError(StWSstate); } }; return { state: 0, State: State, serverList: window.undefined, selectedServer: 0, init: init, startConnection: startConnection, getServerList: getServerList, full: full, handshake: handshake, badServerVersion: badServerVersion, failRestore: failRestore, kickedInactivity: kickedInactivity, stolenSession: stolenSession, muted: muted, closeClient: closeClient, sendChatMessage: sendChatMessage, // not official \/ sendWSmsg: sendWSmsg, sendAfk: sendAfk, newToken: newToken, // not official /\ sendPacket: sendPacket, sendMove: sendMove, sendMouseAngle: sendMouseAngle, sendFastMouseAngle: sendFastMouseAngle, sendMouseRightLeft: sendMouseRightLeft, sendMouseDown: sendMouseDown, sendMouseUp: sendMouseUp, sendShift: sendShift, update: update, onError: null, onOpen: null }; })(); var World = (function() { var worldWidth = 0; var worldHeight = 0; var worldX = 0; var worldY = 0; var NNMVV = 18; var NmmnM = 9; var Mnnnn = 50; function setSizeWorld(worldWidth, worldHeight) { worldWidth = worldWidth; worldHeight = worldHeight; worldX = worldWidth - 1; worldY = worldHeight - 1; }; function allocatePlayers(mNWnw) { World.playerAlive = -1; for (var i = 0; i < World.playerNumber; i++) { if (mNWnw[i] !== 0) World.playerAlive++; World.players[i] = new player(i, mNWnw[i]); } }; function player(id, nickname) { this.id = id; this.nickname = ((nickname + "#") + id); this.tokenId = 0; this.skin = 0; this.ghoul = 0; this.score = 0; this.scoreSimplified = 0; this.team = -1; this.teamUid = 0; this.teamLeader = 0; this.repellent = 0; this.withdrawal = 0; this.notification = []; this.notificationLevel = []; this.notificationDelay = 0; this.textEase = 0; this.text = []; this.textEffect = []; this.textMove = []; this.label = []; this.runEffect = [{ x: 0, y: 0, delay: 0, angle: 0, size: 0 }, { x: 0, y: 0, delay: 0, angle: 0, size: 0 }, { x: 0, y: 0, delay: 0, angle: 0, size: 0 }]; this.cartridges = [{ type: 0, x: 0, y: 0, delay: 0, ax: 0, ay: 0 }, { type: 0, x: 0, y: 0, delay: 0, ax: 0, ay: 0 }, { type: 0, x: 0, y: 0, delay: 0, ax: 0, ay: 0 }, { type: 0, x: 0, y: 0, delay: 0, ax: 0, ay: 0 }]; this.breath = 0; this.move = 0; this.orientation = 1; this.punch = 1; this.consumable = -1; this.consumableLast = 0; this.leaderboardLabel = null; this.nicknameLabel = null; this.playerIdLabel = null; this.scoreLabel = null; this.locatePlayer = -1; this.frameId = -1; this.x = 0; this.y = 0; this.rx = 0; this.ry = 0; this.KARMA = 0; }; function allocateTeam(teams) { for (var i = 0; i < NNMVV; i++) World.teams[i] = new MmvWv(i, teams[i + 1]); }; function addToTeam(WwnMv, id) { if (id === Mnnnn) { WwnMv.team = -1; return; } else if (id > Mnnnn) { id -= Mnnnn + 1; World.teams[id].leader = WwnMv.id; WwnMv.teamLeader = 1; if (World.PLAYER.id === WwnMv.id) World.PLAYER.teamLeader = 1; } else WwnMv.teamLeader = 0; if (World.PLAYER.id === WwnMv.id) World.PLAYER.team = id; WwnMv.team = id; WwnMv.teamUid = World.teams[id].uid; }; function nextInvitation() { PLAYER.teamJoin = 0; for (var i = 0; i < PLAYER.teamQueue.length; i++) { if (PLAYER.teamQueue[i] !== 0) { PLAYER.teamJoin = PLAYER.teamQueue[i]; PLAYER.teamQueue[i] = 0; return; } } PLAYER.teamEffect = 0; }; function deleteTeam(id) { var team = World.teams[id]; team.label = null; team.labelNickname = null; team.uid = teamUid++; team.leader = 0; team.name = ""; }; var teamUid = 0; function MmvWv(id, _name) { this.id = id; this.name = _name; this.label = null; this.labelNickname = null; this.leader = 0; this.uid = teamUid++; }; function updatePosition() { var len = ENTITIES.length; for (var i = 0; i <= len; i++) { if ((len !== i) && (ENTITIES[i].move === 0)) continue; var units = Entitie.units[i]; var border = Entitie.border[i]; var n = border.border; for (var j = 0; j < n; j++) moveEntitie(units[border.cycle[j]]); } if (World.PLAYER.team !== -1) { for (var i = 0; i < PLAYER.teamLength; i++) { var nmmvN = PLAYER.teamPos[i]; if (nmmvN.old < 0) continue; var wmW = World.players[nmmvN.id]; wmW.rx = CanvasUtils.lerp(wmW.rx, wmW.x, 0.03); wmW.ry = CanvasUtils.lerp(wmW.ry, wmW.y, 0.03); nmmvN.old -= delta; } } if (World.PLAYER.badKarmaDelay > 0) { var wmW = World.players[World.PLAYER.badKarma]; wmW.rx = CanvasUtils.lerp(wmW.rx, wmW.x, 0.03); wmW.ry = CanvasUtils.lerp(wmW.ry, wmW.y, 0.03); World.PLAYER.badKarmaDelay -= delta; } }; function moveEntitie(entity) { offsetX = entity.rx + ((delta * entity.speed) * entity.angleX); offsetY = entity.ry + ((delta * entity.speed) * entity.angleY); if (Math2d.fastDist(entity.rx, entity.ry, entity.nx, entity.ny) < Math2d.fastDist(offsetX, offsetY, entity.rx, entity.ry)) { entity.rx = entity.nx; entity.ry = entity.ny; } else { entity.rx = offsetX; entity.ry = offsetY; } entity.x = MathUtils.lerp(entity.x, entity.rx, entity.lerp); entity.y = MathUtils.lerp(entity.y, entity.ry, entity.lerp); entity.i = window.Math.max(0, window.Math.min(worldY, window.Math.floor(entity.y / Render.__TILE_SIZE__))); entity.j = window.Math.max(0, window.Math.min(worldX, window.Math.floor(entity.x / Render.__TILE_SIZE__))); if ((World.PLAYER.id === entity.pid) && (entity.id === 0)) { if (MOD.showRealAngles === "always") entity.angle = MathUtils.lerp(entity.angle, entity.nangle, entity.lerp * 2); else if ((MOD.showRealAngles === "withAim") && (MOD.AimBotEnable)) entity.angle = MathUtils.lerp(entity.angle, entity.nangle, entity.lerp * 2); else entity.angle = Mouse.angle; } else { if (entity.pid === 0) entity.angle = MathUtils.lerp(entity.angle, entity.nangle, entity.lerp / 2); else entity.angle = MathUtils.lerp(entity.angle, entity.nangle, entity.lerp * 2); } }; function VVnvw(a, M) { if ((World.players[a].nickname === 0) && (World.players[M].nickname === 0)) return 0; else if (World.players[a].nickname === 0) return World.players[M].score - 1; else if (World.players[M].nickname === 0) return -1 - World.players[a].score; else return World.players[M].score - World.players[a].score; }; function sortLeaderboard() { window.console.log(World.playerNumber); for (var i = 0; i < World.playerNumber; i++) World.leaderboard[i] = i; World.leaderboard = World.leaderboard.sort(VVnvw).slice(0, 10); for (var i = 0; i < World.playerNumber; i++) World.newLeaderboard = 1; }; function initLeaderboard(ui16, ui8) { for (var i = 0; i < 10; i++) { var id = ui8[2 + (i * 4)]; var score = ui16[2 + (i * 2)]; var PLAYER = World.players[id]; PLAYER.score = MathUtils.inflateNumber(score); PLAYER.KARMA = ui8[3 + (i * 4)]; var scoreSimplified = MathUtils.simplifyNumber(PLAYER.score); if (scoreSimplified !== PLAYER.scoreSimplified) PLAYER.scoreLabel = null; PLAYER.scoreSimplified = scoreSimplified; World.leaderboard[i] = id; } World.newLeaderboard = 1; }; function Gauge() { this.current = 0; this.value = 0; this._max = 0; this.speed = 0; this.time = 0; this.maxTime = 1; this.bonus = 0; }; function initGauge(gauge, value, speedInc, speedDec, decrease) { gauge.current = value; gauge.value = value; gauge._max = value; gauge.speedInc = speedInc; gauge.speedDec = speedDec; gauge.decrease = decrease; gauge.bonus = 0; }; function initGauges() { var playerGauges = ENTITIES[__ENTITIE_PLAYER__].gauges; initGauge(gauges.life, playerGauges.life._max, playerGauges.life.speedInc, playerGauges.life.speedDec, 0); if (PLAYER.ghoul === 0) { initGauge(gauges.food, playerGauges.food._max, playerGauges.food.speedInc, playerGauges.food.speedDec, 1); initGauge(gauges.cold, playerGauges.cold._max, playerGauges.cold.speedInc, playerGauges.cold.speedDec, 0); initGauge(gauges.stamina, playerGauges.stamina._max, playerGauges.stamina.speedInc, playerGauges.stamina.speedDec, -1); initGauge(gauges.rad, playerGauges.rad._max, playerGauges.rad.speedInc, playerGauges.rad.speedDec, 0); } else { initGauge(gauges.food, playerGauges.food._max, playerGauges.food.speedInc, 0, 1); initGauge(gauges.cold, playerGauges.cold._max, playerGauges.cold.speedInc, 0, 0); initGauge(gauges.stamina, playerGauges.stamina._max, playerGauges.stamina.speedInc * 2, playerGauges.stamina.speedDec / 2, -1); initGauge(gauges.rad, playerGauges.rad._max, playerGauges.rad.speedInc, 0, 0); } initGauge(gauges.xp, 255, 0, 0, 0); gauges.xp.value = 0; gauges.xp.current = 0; PLAYER.nextLevel = __XP_START__; if (day === DAY_NIGHT_CYCLE) gauges.cold.decrease = 1; }; function updateGauge(gauge) { if (gauge.decrease === 1) gauge.value = window.Math.min(gauge._max, window.Math.max(gauge.value - (delta * (gauge.speedDec - gauge.bonus)), 0)); else if (gauge.decrease === -1) gauge.value = window.Math.min(gauge.value + (delta * (gauge.speedInc + gauge.bonus)), gauge._max); gauge.current = MathUtils.lerp(gauge.current, gauge.value, 0.1); }; function updateGauges() { updateGauge(gauges.life); updateGauge(gauges.food); updateGauge(gauges.cold); updateGauge(gauges.rad); updateGauge(gauges.stamina); updateGauge(gauges.xp); World.PLAYER.VWMmM += delta; if (gauges.rad.current > 254) AudioManager.geiger = 0; else AudioManager.geiger = window.Math.min(1, window.Math.max(0, 1 - (gauges.rad.current / 255))); updatePlayerXP(); }; var gauges = { life: new Gauge, food: new Gauge, cold: new Gauge, rad: new Gauge, stamina: new Gauge, xp: new Gauge }; var DAY_NIGHT_CYCLE = 1; var __DAY__ = 0; var day = __DAY__; var elapsedTime = 0; function changeDayCycle() { var temp; temp = INVENTORY2; INVENTORY2 = INVENTORY; INVENTORY = temp; temp = PARTICLES2; PARTICLES2 = PARTICLES; PARTICLES = temp; temp = LOOT2; LOOT2 = LOOT; LOOT = temp; temp = RESOURCES2; RESOURCES2 = RESOURCES; RESOURCES = temp; temp = ENTITIES2; ENTITIES2 = ENTITIES; ENTITIES = temp; temp = LIGHTFIRE2; LIGHTFIRE2 = LIGHTFIRE; LIGHTFIRE = temp; temp = GROUND2; GROUND2 = GROUND; GROUND = temp; temp = AI2; AI2 = AI; AI = temp; day = (day + 1) % 2; World.day = day; if (day === 0) { window.document.getElementById("bod").style.backgroundColor = "#3D5942"; canvas.style.backgroundColor = "#3D5942"; } else { window.document.getElementById("bod").style.backgroundColor = "#0B2129"; canvas.style.backgroundColor = "#0B2129"; } elapsedTime = 0; }; function setDayCycle(cycle, newElapsedTime) { if (cycle !== day) World.transition = 1000; World.day = day; elapsedTime = newElapsedTime; }; function initDayCycle(cycle, newElapsedTime) { if (cycle !== day) changeDayCycle(); World.day = day; elapsedTime = newElapsedTime; }; function updateHour() { elapsedTime += delta; return (elapsedTime % World.__DAY__) + (day * 10000000); }; function selectRecipe(id) { var len = 0; var item = INVENTORY[id]; Game.preview.setImages(item.itemButton.src, item.itemButton.img); var recipeDetails = item.detail.recipe; var canvasZ = item.detail.area; var recipe = Game.recipe; var tools = Game.tools; var recipeList = PLAYER.recipeList; PLAYER.craftSelected = id; if (canvasZ !== window.undefined) { for (var i = 0; i < canvasZ.length; i++) { var tool = AREASTOITEM[canvasZ[i]]; if (tool !== window.undefined) { item = INVENTORY[tool]; tools[len].setImages(item.itemButton.src, item.itemButton.img); len++; } } } PLAYER.toolsLen = len; len = 0; if (recipeDetails !== window.undefined) { for (i = 0; i < recipeDetails.length; i++) { item = INVENTORY[recipeDetails[i][0]]; recipe[len].setImages(item.itemButton.src, item.itemButton.img); recipeList[len] = item.id; len++; } } PLAYER.recipeLen = len; updateRecipeAvailability(recipeDetails); }; function _CheckSkillState(id, detail) { if ((PLAYER.skillUnlocked[id] === 1) || (detail.level === -1)) return 2; else if (((detail.level > PLAYER.level) || (PLAYER.skillPoint < detail.price)) || ((detail.previous !== -1) && (PLAYER.skillUnlocked[detail.previous] === window.undefined))) return 0; return 1; }; function updateRecipeAvailability(recipe) { var availableRecip = PLAYER.recipeAvailable; var invtr = PLAYER.inventory; var canCraft = 1; if (recipe === window.undefined) return canCraft; for (var i = 0; i < recipe.length; i++) { var recipeItem = recipe[i]; for (var j = 0; j < invtr.length; j++) { var IID = invtr[j]; if (IID[0] === recipeItem[0]) { if (IID[1] >= recipeItem[1]) { availableRecip[i] = recipeItem[1]; break; } else availableRecip[i] = -recipeItem[1]; } } if (j === invtr.length) { availableRecip[i] = -recipeItem[1]; canCraft = 0; } } return canCraft; }; function releaseBuilding() { if ((World.PLAYER.isInBuilding === 1) || (World.PLAYER.isInChest === 1)) { World.PLAYER.isInBuilding = 0; World.PLAYER.isInChest = 0; Client.sendPacket("[17]"); } }; function buildSkillList(category) { World.releaseBuilding(); var receipe = 0; var selected = 0; var len = 0; var craft = PLAYER.craftList; var craftList = Game.craft; var craftAvailable = PLAYER.craftAvailable; for (var i = 1; i < INVENTORY.length; i++) { var item = INVENTORY[i]; if (item.detail.category === category) { if (receipe === 0) { receipe = i; selected = len; } craftList[len].setImages(item.itemButton.src, item.itemButton.img); craft[len] = i; craftAvailable[len] = _CheckSkillState(i, item.detail); len++; } } PLAYER.craftLen = len; PLAYER.craftArea = -1; PLAYER.craftCategory = category; PLAYER.craftIdSelected = selected; selectRecipe(receipe); }; function buildCraftList(area) { if (area === AREAS.__PLAYER__) { World.releaseBuilding(); PLAYER.building.fuel = -1; } var receipe = 0; var selected = 0; var previous = World.PLAYER.craftSelected; var len = 0; var craft = PLAYER.craftList; var craftAvailable = PLAYER.craftAvailable; var craftList = Game.craft; for (var i = 1; i < INVENTORY.length; i++) { var item = INVENTORY[i]; var detail = item.detail; if (((detail.area !== window.undefined) && (detail.area.indexOf(area) !== -1)) && ((detail.level === -1) || (PLAYER.skillUnlocked[item.id] === 1))) { if ((receipe === 0) || (previous === i)) { receipe = i; selected = len; } craftList[len].setImages(item.itemButton.src, item.itemButton.img); craft[len] = i; craftAvailable[len] = updateRecipeAvailability(detail.recipe); len++; } } PLAYER.craftLen = len; PLAYER.craftArea = area; PLAYER.craftCategory = -1; PLAYER.craftIdSelected = selected; if (receipe > 0) selectRecipe(receipe); }; __XP_START__ = 900; __XP_SPEED__ = 1.105; function getXpFromLevel(level) { var xp = __XP_START__; for (var i = 0; i < level; i++) xp = window.Math.floor(xp * __XP_SPEED__); return xp; }; function updatePlayerXP() { if ((PLAYER.xp > 0) && (window.Math.abs(gauges.xp.current - gauges.xp.value) < 0.6)) { if (gauges.xp.value === 255) { gauges.xp.current = 0; gauges.xp.value = 0; PLAYER.level++; PLAYER.skillPoint++; if ((Game.getSkillBoxState() === 1) && (PLAYER.craftCategory !== -1)) buildSkillList(PLAYER.craftCategory); AudioUtils.playFx(AudioUtils._fx.levelup, 1, 0); return; } if (PLAYER.xp >= PLAYER.nextLevel) { gauges.xp.value = 255; PLAYER.xp -= PLAYER.nextLevel; PLAYER.nextLevel = window.Math.floor(PLAYER.nextLevel * __XP_SPEED__); } else gauges.xp.value = window.Math.floor((255 * PLAYER.xp) / PLAYER.nextLevel); } }; var PLAYER = { id: 0, x: 0, y: 0, _i: 0, _j: 0, score: 0, lastScore: -1, inLeaderboard: 0, scoreLabel: null, click: 0, inventory: [], recipeLen: 0, toolsLen: 0, toolsList: 0, craftLen: 0, isInBuilding: 0, isInChest: 0, craftArea: -1, craftCategory: -1, craftSelected: -1, craftIdSelected: -1, skillUnlocked: [], level: 0, kill: 0, xp: 0, nextLevel: 0, skillPoint: 0, recipeList: [], craftList: [], craftAvailable: [], recipeAvailable: [], crafting: 0, craftingMax: 0, drag: { begin: 0, x: 0, y: 0, id: 0 }, eInteract: null, interaction: -1, interactionDelay: 0, interactionWait: 0, loot: -1, lootId: -1, extraLoot: 0, packetId: -1, buildingArea: -1, buildingId: -1, buildingPid: -1, chest: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ], chestLen: 0, building: { queue: [0, 0, 0, 0], pos: 0, time: 0, timeMax: 0, len: 0, fuel: 0 }, blueprint: 0, furniture: 0, buildRotate: 0, hintRotate: 0, grid: 0, gridPrev: [0, 0, 0], iGrid: 0, jGrid: 0, iGridPrev: [0, 0, 0], jGridPrev: [0, 0, 0], isBuilding: 0, iBuild: 0, jBuild: 0, canBuild: 0, warm: 0, wrongTool: 0, wrongToolTimer: 0, teamEffect: 0, teamLeader: 0, teamLocked: 0, teamDelay: 0, teamNameValid: 0, teamCreateDelay: 0, teamQueue: [0, 0, 0, 0, 0], teamJoin: 0, teamDelay: 0, team: -1, teamPos: [], teamLength: 0, KARMA: 0, badKarma: 0, badKarmaDelay: 0, lastAreas: null, nextAreas: 0, craftFactor: 1, timePlayed: 0, toxicMap: 0, toxicStep: 0, admin: 0, ghoul: 0, cities: [] }; return { __SURVIVAL__: 0, __BR__: 1, __GHOUL__: 2, gameMode: 0, leaderboard: [], sortLeaderboard: sortLeaderboard, initLeaderboard: initLeaderboard, setSizeWorld: setSizeWorld, newLeaderboard: 0, playerNumber: 0, playerAlive: 0, allocateTeam: allocateTeam, teams: [], addToTeam: addToTeam, deleteTeam: deleteTeam, nextInvitation: nextInvitation, allocatePlayers: allocatePlayers, players: [], PLAYER: PLAYER, moveEntitie: moveEntitie, updatePosition: updatePosition, gauges: gauges, initGauges: initGauges, updateGauges: updateGauges, changeDayCycle: changeDayCycle, setDayCycle: setDayCycle, initDayCycle: initDayCycle, updateHour: updateHour, __DAY__: (8 * 60) * 1000, day: 0, transition: 0, buildCraftList: buildCraftList, buildSkillList: buildSkillList, selectRecipe: selectRecipe, releaseBuilding: releaseBuilding, getXpFromLevel: getXpFromLevel }; })(); var Entitie = (function() { var maxUnitsPerType = 0; var units = []; var border = []; var entityCache = []; var localUnitsCount = 0; function init(unitCountPerType, maxUnitsMaster, localUnits) { Entitie.maxUnitsMaster = (maxUnitsMaster === window.undefined) ? 0 : maxUnitsMaster; Entitie.localUnits = (localUnits === window.undefined) ? 0 : localUnits; localUnitsCount = Entitie.localUnits + Entitie.maxUnitsMaster; maxUnitsPerType = ENTITIES.length; var len = ENTITIES.length + 1; for (var i = 0; i < len; i++) { border[i] = new Border.Border(unitCountPerType); units[i] = []; for (var j = 0; j < unitCountPerType; j++) units[i][j] = Entitie.create(i); } }; function create(type) { return new EntitieClass(type); }; function removeAll() { for (var i = 0; i < ENTITIES.length; i++) border[i].border = 0; entityCache = []; }; function remove(pid, id, uid, type, keepInCache) { var i = 0; var entityIndex = (((pid === 0) ? 0 : localUnitsCount) + (pid * Entitie.unitsPerPlayer)) + id; var entity = entityCache[entityIndex]; if (((entity !== window.undefined) && (entity.type === type)) && (entity.uid === uid)) entityCache[entityIndex] = window.undefined; var entityBorder = border[type]; var entityUnits = units[type]; var len = entityBorder.border; for (i = 0; i < len; i++) { var entity = entityUnits[entityBorder.cycle[i]]; if (((entity.uid === uid) && (entity.pid === pid)) && (entity.id === id)) { Border.fastKillIdentifier(entityBorder, i); if ((ENTITIES[entity.type].remove > 0) && (keepInCache === 1)) { var newEntity = units[maxUnitsPerType][Border.forceNewIdentifier(border[maxUnitsPerType])]; for (var j in entity) newEntity[j] = entity[j]; newEntity.removed = 1; } return; } } }; function get(pid, id, uid, type) { var entityIndex = (((pid === 0) ? 0 : localUnitsCount) + (pid * Entitie.unitsPerPlayer)) + id; var entity = entityCache[entityIndex]; if ((entity === window.undefined) || (entity.uid !== uid)) { var newEntityIndex = Border.forceNewIdentifier(border[type]); entity = units[type][newEntityIndex]; if (entity === window.undefined) { window.console.log("Memory Warn: new entitie created"); units[type][newEntityIndex] = Entitie.create(type); entity = units[type][newEntityIndex]; } entityCache[entityIndex] = entity; entity.update = 0; entity.removed = 0; } return entity; }; function cleanRemoved() { var entityBorder = border[maxUnitsPerType]; var entityUnits = units[maxUnitsPerType]; var len = entityBorder.border; for (i = 0; i < len; i++) { var entity = entityUnits[entityBorder.cycle[i]]; if (entity.removed !== 1) { Border.fastKillIdentifier(entityBorder, i); len--; i--; } } }; function findEntitie(type, pid, id) { var entityUnits = units[type]; var entityBorder = border[type]; var len = entityBorder.border; for (var i = 0; i < len; i++) { var player = entityUnits[entityBorder.cycle[i]]; if ((player.id === id) && (player.pid === pid)) return player; } return null; }; return { init: init, create: create, get: get, findEntitie: findEntitie, remove: remove, removeAll: removeAll, units: units, border: border, cleanRemoved: cleanRemoved, unitsPerPlayer: 0, maxUnitsMaster: 0, localUnits: 0 }; })(); var ENTITIES = [{ gauges: { life: { _max: 255, speedDec: 0.005, speedInc: 0.005 }, food: { _max: 255, speedDec: 0.0012, speedInc: 0.0012 }, cold: { _max: 255, speedDec: 0.0035, speedInc: 0.005 }, rad: { _max: 255, speedDec: 0.024, speedInc: 0.003 }, stamina: { _max: 255, speedDec: 0.03, speedInc: 0.015 } }, skins: [{ head: { src: "img/day-skin0.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm0.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm0.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-skin1.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm0.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm0.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-skin2.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm2.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm2.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-skin3.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm2.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm2.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-skin4.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm4.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm4.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-skin5.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm4.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm4.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-ghoul.png", img: { isLoaded: 0 } }, leftArm: { angle: 0, x: 28, y: -50, src: "img/day-ghoul-left-arm.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-ghoul-right-arm.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-ghoul3.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-ghoul3-left-arm.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-ghoul3-right-arm.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-ghoul4.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-ghoul4-left-arm.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-ghoul4-right-arm.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-ghoul2.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-ghoul2-left-arm.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-ghoul2-right-arm.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-ghoul1.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-ghoul1-left-arm.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-ghoul1-right-arm.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-ghoul5.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-ghoul5-left-arm.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-ghoul5-right-arm.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-lapabot.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-lapabot-left-arm.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-lapabot-right-arm.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-hal-bot.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-hal-bot-left-arm.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-hal-bot-right-arm.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-tesla-bot.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-tesla-bot-left-arm.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-tesla-bot-right-arm.png", img: { isLoaded: 0 } } }], clothes: [{}, { head: { src: "img/day-headscarf.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-chapka.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-chapka.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-chapka.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-coat.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-coat.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-coat.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-gaz-mask.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-gaz-protection.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-gaz-protection.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-gaz-protection.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-radiation-suit.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-radiation-suit.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-radiation-suit.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-metal-helmet.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-welding-helmet.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-welding-helmet.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-welding-helmet.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-gladiator-helmet.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-gladiator-armor.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-gladiator-armor.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-leather-jacket.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-leather-jacket.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-leather-jacket.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-kevlar-suit.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-kevlar-suit.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-kevlar-suit.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-SWAT-suit.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-SWAT-suit.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-SWAT-suit.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-protective-suit.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-protective-suit.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-protective-suit.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-tesla-0.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-tesla-0.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-tesla-0.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-tesla-armor.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-tesla-armor.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-tesla-armor.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-camouflage-gear.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-camouflage-gear.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-camouflage-gear.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-christmas-hat.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-deer-hat.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-snowman-hat.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-snowman-hat.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-snowman-hat.png", img: { isLoaded: 0 } } }, { head: { src: "img/day-elf-hat.png", img: { isLoaded: 0 } }, leftArm: { src: "img/day-left-arm-elf-hat.png", img: { isLoaded: 0 } }, rightArm: { src: "img/day-right-arm-elf-hat.png", img: { isLoaded: 0 } } }], runEffect: { src: "img/day-run-effect.png", img: { isLoaded: 0 } }, death: { src: "img/day-dead-player.png", img: { isLoaded: 0 } }, hurt: { src: "img/hurt-player.png", img: { isLoaded: 0 } }, heal: { src: "img/heal-player.png", img: { isLoaded: 0 } }, food: { src: "img/food-player.png", img: { isLoaded: 0 } }, cartridges: [{ src: "img/day-shotgun-cartridge.png", img: { isLoaded: 0 } }, { src: "img/day-9mm-cartridge.png", img: { isLoaded: 0 } }, { src: "img/day-AK47-cartridge.png", img: { isLoaded: 0 } }, { src: "img/day-crossbow-cartridge.png", img: { isLoaded: 0 } }, { src: "img/day-nails-cartridge.png", img: { isLoaded: 0 } }, { src: "img/day-cells-cartridge.png", img: { isLoaded: 0 } }], bullets: [ [{ src: "img/day-bullet1.png", img: { isLoaded: 0 } }, { src: "img/day-bullet2.png", img: { isLoaded: 0 } }, { src: "img/day-bullet2l.png", img: { isLoaded: 0 } }], [{ src: "img/day-bullet3.png", img: { isLoaded: 0 } }, { src: "img/day-bullet4.png", img: { isLoaded: 0 } }, { src: "img/day-bullet4l.png", img: { isLoaded: 0 } }], [{ src: "img/day-bullet5.png", img: { isLoaded: 0 } }, { src: "img/day-bullet6.png", img: { isLoaded: 0 } }, { src: "img/day-bullet6l.png", img: { isLoaded: 0 } }], [{ src: "img/day-wood-arrow.png", img: { isLoaded: 0 } }, { src: "img/day-wood-arrow1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-arrowl.png", img: { isLoaded: 0 } }], [{ src: "img/day-wood-spear0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-spear1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-spearl.png", img: { isLoaded: 0 } }], [{ src: "img/day-wood-crossarrow.png", img: { isLoaded: 0 } }, { src: "img/day-wood-crossarrow1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-crossarrowl.png", img: { isLoaded: 0 } }], [{ src: "img/day-nail1.png", img: { isLoaded: 0 } }, { src: "img/day-nail2.png", img: { isLoaded: 0 } }, { src: "img/day-nail2l.png", img: { isLoaded: 0 } }], [{ src: "img/day-laser0.png", img: { isLoaded: 0 } }, { src: "img/day-laser1.png", img: { isLoaded: 0 } }, { src: "img/day-laser1l.png", img: { isLoaded: 0 } }], [{ src: "img/day-grenade0.png", img: { isLoaded: 0 } }, { src: "img/day-grenade1.png", img: { isLoaded: 0 } }, { src: "img/day-grenadel.png", img: { isLoaded: 0 } }] ], gunEffect: [ [{ src: "img/day-gun-effect0.png", img: { isLoaded: 0 } }, { src: "img/day-gun-effect1.png", img: { isLoaded: 0 } }, { src: "img/day-gun-effect2.png", img: { isLoaded: 0 } }], [{ src: "img/day-laser-effect0.png", img: { isLoaded: 0 } }, { src: "img/day-laser-effect1.png", img: { isLoaded: 0 } }, { src: "img/day-laser-effect2.png", img: { isLoaded: 0 } }, { src: "img/day-laser-effect3.png", img: { isLoaded: 0 } }, { src: "img/day-laser-effect4.png", img: { isLoaded: 0 } }] ], weapons: [{ type: 0, id: 0, shot: 0, rightArm: { angle: 0, x: 22, y: 39 }, leftArm: { angle: 0, x: 22, y: -39 }, soundDelay: 0, soundVolume: 0.5, soundLen: 3, sound: ["audio/hand-swing0.mp3", "audio/hand-swing2.mp3", "audio/hand-swing3.mp3"], breath: 0.05, move: 3, delay: 300, impact: 301, impactClient: 150, damage: 20, damageCac: 3, knockback: 10, stamina: 2, radius: 30, malusSpeed: 0, distance: 47, consumable: 0, trigger: 0 }, { type: 1, id: 0, shot: 0, soundDelay: 0, soundVolume: 0.8, soundLen: 1, sound: ["audio/pickaxe-swing.mp3"], weapon: { src: "img/day-stone-pickaxe.png", img: { isLoaded: 0 }, angle: 0, x: 30, y: 0, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.02, move: 2, delay: 800, delayClient: 800, impact: 801, impactClient: 650, damage: 45, damageCac: 16, knockback: 15, stamina: 5, radius: 50, distance: 56, consumable: 0, trigger: 0 }, { type: 1, id: 0, shot: 0, soundDelay: 0, soundVolume: 0.8, soundLen: 1, sound: ["audio/pickaxe-swing.mp3"], weapon: { src: "img/day-steel-pickaxe.png", img: { isLoaded: 0 }, angle: 0, x: 30, y: 0, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.02, move: 2, delay: 800, delayClient: 800, impact: 801, impactClient: 650, damage: 55, damageCac: 22, knockback: 15, stamina: 5, radius: 50, distance: 56, consumable: 0, trigger: 0 }, { type: 1, id: 0, shot: 0, soundDelay: 0, soundVolume: 0.8, soundLen: 1, sound: ["audio/hatchet-swing.mp3"], weapon: { src: "img/day-hachet.png", img: { isLoaded: 0 }, angle: 0, x: 30, y: 0, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.02, move: 2, delay: 500, delayClient: 500, impact: 501, impactClient: 350, damage: 30, damageCac: 7, knockback: 10, stamina: 4, radius: 40, distance: 59, consumable: 0, trigger: 0 }, { type: 1, id: 0, shot: 0, soundDelay: 0, soundVolume: 0.8, soundLen: 1, sound: ["audio/axe-swing.mp3"], weapon: { src: "img/day-stone-axe.png", img: { isLoaded: 0 }, angle: 0, x: 30, y: 0, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.05, move: 3, delay: 650, impact: 651, impactClient: 550, damage: 50, damageCac: 26, knockback: 20, stamina: 4, radius: 46, distance: 72, consumable: 0, trigger: 0 }, { type: 3, id: 0, shot: 1, soundDelay: 0.75, soundVolume: 1, soundLen: 1, sound: ["audio/spear-shot.mp3"], weapon: { src: "img/day-wood-spear.png", img: { isLoaded: 0 }, angle: 0, x: 25, y: 40 }, rightArm: { angle: 0, x: 10, y: 44 }, leftArm: { angle: 0, x: 22, y: -39 }, bulletNumber: [0], bulletId: 4, bulletSpeed: 0.5, damageType: 1, path: 600, damage: 80, knockback: 30, breath: 0.05, breathWeapon: 2, move: 3, delay: 850, impact: 100, impactClient: 100, stamina: 15, x: -40, distance: 47, distance: 60, consumable: 0, trigger: 0 }, { type: 4, id: 0, shot: 1, WnVmv: { src: "img/day-wood-arrow1.png", img: { isLoaded: 0 }, x: 50, y: 0 }, soundDelay: 1.08, soundVolume: 1.4, soundLen: 1, sound: ["audio/bow-shot.mp3"], weapon: { src: "img/day-wood-bow.png", img: { isLoaded: 0 }, angle: 0, x: 44, y: 0 }, rightArm: { angle: 0, x: 10, y: 44 }, leftArm: { angle: 0, x: 40, y: -30 }, damage: 40, knockback: 10, bulletNumber: [0], bulletId: 3, bulletSpeed: 0.75, damageType: 1, path: 800, breath: 0.5, breathWeapon: 1, move: 1, delay: 1200, impact: 120, impactClient: 100, stamina: 8, x: -1, distance: 47, distance: -8, consumable: 0, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 43, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/shotgun-shot.mp3"], weapon: { src: "img/day-shotgun.png", img: { isLoaded: 0 }, x: 60, y: 0 }, damage: 21, knockback: 20, gunEffect: 0, cartridge: 0, cartridgeDelay: 500, recoil: 3, recoilHead: 4, recoilGun: 3, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0, 0.1, -0.1, 0.2, -0.2], bulletId: 2, bulletSpeed: 1.1, damageType: 1, magazine: 8, reload: 10, oneperone: 1, distance: 58, breath: 1, move: 2, delay: 900, impact: 901, stamina: 0, x: 0, path: 600, distance: 47, consumable: 0, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/9mm-shot.mp3"], weapon: { src: "img/day-9mm.png", img: { isLoaded: 0 }, x: 50, y: 0 }, damage: 28, knockback: 10, gunEffect: 0, cartridge: 1, cartridgeDelay: 400, recoil: 2, recoilHead: 1, recoilGun: 2, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 0, bulletSpeed: 1.2, damageType: 1, magazine: 20, reload: 22, oneperone: 0, distance: 40, breath: 1, move: 2, delay: 400, impact: 401, stamina: 0, x: 0, path: 800, distance: 47, consumable: 0, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, soundDelay: 0, soundVolume: 1.3, soundLen: 1, sound: ["audio/desert-eagle-shot.mp3"], weapon: { src: "img/day-desert-eagle.png", img: { isLoaded: 0 }, x: 50, y: 0 }, damage: 40, knockback: 25, gunEffect: 0, cartridge: 1, cartridgeDelay: 400, recoil: 2, recoilHead: 1, recoilGun: 2, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 0, bulletSpeed: 1.4, damageType: 1, magazine: 7, reload: 22, oneperone: 0, distance: 40, breath: 1, move: 2, delay: 400, impact: 401, stamina: 0, x: 0, path: 900, distance: 47, consumable: 0, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 43, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/ak47-shot.mp3"], weapon: { src: "img/day-AK47.png", img: { isLoaded: 0 }, x: 60, y: 0 }, damage: 30, knockback: 25, gunEffect: 0, cartridge: 2, cartridgeDelay: 500, recoil: 3, recoilHead: 2, recoilGun: 4, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 1, bulletSpeed: 1.4, damageType: 1, magazine: 30, reload: 25, oneperone: 0, distance: 58, breath: 1, move: 2, delay: 120, impact: 121, stamina: 0, x: 0, path: 900, distance: 47, consumable: 0, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 43, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/sniper-shot.mp3"], weapon: { src: "img/day-sniper.png", img: { isLoaded: 0 }, x: 60, y: 0 }, damage: 90, knockback: 30, gunEffect: 0, cartridge: 2, cartridgeDelay: 500, recoil: 3, recoilHead: 1, recoilGun: 4, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 1, bulletSpeed: 1.5, damageType: 1, magazine: 10, reload: 20, oneperone: 0, distance: 70, breath: 1, move: 2, delay: 1250, impact: 1251, stamina: 0, x: 0, path: 1100, distance: 47, consumable: 0, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-raw-steak.png", img: { isLoaded: 0 }, angle: 1, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 20, food: 30, radiation: 0, energy: 20, heal: -10, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-cooked-steak.png", img: { isLoaded: 0 }, angle: 1, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 4, breath: 0.4, move: 0.8, stamina: 0, consumableDelay: 200, wait: 20, food: 127, radiation: 0, energy: 80, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-rotten-steak.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 20, food: 15, radiation: 0, energy: 0, heal: -40, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-orange.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 40, radiation: 0, energy: 10, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-rotten-orange.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 5, radiation: 0, energy: 0, heal: -40, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-medikit.png", img: { isLoaded: 0 }, angle: 0, x: 55, y: 0 }, rightArm: { angle: 0, x: 32, y: 32 }, leftArm: { angle: 0, x: 32, y: -32 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 25, food: 0, radiation: 0, energy: 0, heal: 200, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-bandage.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 0, radiation: 0, energy: 0, heal: 60, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-soda.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 30, radiation: 0, energy: 155, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 43, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/mp5-shot.mp3"], weapon: { src: "img/day-MP5.png", img: { isLoaded: 0 }, x: 60, y: 0 }, damage: 18, knockback: 15, gunEffect: 0, cartridge: 1, cartridgeDelay: 500, recoil: 3, recoilHead: 2, recoilGun: 4, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 0, bulletSpeed: 1.2, damageType: 1, magazine: 30, reload: 26, oneperone: 0, distance: 52, breath: 1, move: 2, delay: 100, impact: 101, stamina: 0, x: 0, path: 900, distance: 47, trigger: 0 }, { type: 6, id: 0, shot: 0, rightArm: { angle: 0, x: 22, y: 39 }, leftArm: { angle: 0, x: 22, y: -39 }, breath: 0.05, move: 3, malusSpeed: 0, blueprint: { src: "img/day-hand-craft.png", img: { isLoaded: 0 } }, pencil: { src: "img/day-hand-craftpencil.png", img: { isLoaded: 0 } }, consumable: 0, trigger: 0 }, { type: 1, id: 0, shot: 0, soundDelay: 0, soundVolume: 0.8, soundLen: 1, sound: ["audio/pickaxe-swing.mp3"], weapon: { src: "img/day-sulfur-pickaxe.png", img: { isLoaded: 0 }, angle: 0, x: 20, y: 0, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.02, move: 2, delay: 800, delayClient: 800, impact: 801, impactClient: 650, damage: 65, damageCac: 30, knockback: 15, stamina: 5, radius: 50, distance: 56, consumable: 0, trigger: 0 }, { type: 1, id: 0, shot: 0, soundDelay: 0, soundVolume: 0.8, soundLen: 1, sound: ["audio/hammer-swing.mp3"], weapon: { src: "img/day-hammer.png", img: { isLoaded: 0 }, angle: 0, x: 25, y: 0, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.02, move: 2, delay: 1100, delayClient: 1100, impact: 1101, impactClient: 950, damage: 120, damageCac: 30, knockback: 30, stamina: 15, radius: 40, distance: 56, consumable: 0, trigger: 0 }, { type: 1, id: 0, shot: 0, weapon: { src: "img/day-repair-hammer.png", img: { isLoaded: 0 }, angle: 0, x: 20, y: 0, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.02, move: 2, delay: 700, delayClient: 700, impact: 701, impactClient: 550, damage: 40, damageCac: 15, knockback: 10, stamina: 6, radius: 40, distance: 59, consumable: 0, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-tomato-soup.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 30, food: 160, radiation: 0, energy: 40, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-radaway.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 25 }, leftArm: { angle: 0, x: 32, y: -25 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 30, food: 0, radiation: 255, energy: 30, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-tomato.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 50, radiation: 0, energy: 10, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-rotten-tomato.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 5, radiation: 0, energy: 0, heal: -40, poison: 0, consumable: 1, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/crossbow-shot.mp3"], weapon: { src: "img/day-wood-crossbow.png", img: { isLoaded: 0 }, x: 50, y: 0 }, damage: 50, knockback: 15, gunEffect: 0, cartridge: 3, cartridgeDelay: 400, recoil: 2, recoilHead: 1, recoilGun: 2, noEffect: 1, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 5, bulletSpeed: 0.95, damageType: 1, magazine: 1, reload: 8, oneperone: 0, distance: 40, breath: 1, move: 2, delay: 400, impact: 401, stamina: 12, x: 0, path: 800, distance: 47, consumable: 0, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/nail-gun-shot.mp3"], weapon: { src: "img/day-nail-gun.png", img: { isLoaded: 0 }, x: 50, y: 0 }, damage: 6, knockback: 10, gunEffect: 0, cartridge: 4, cartridgeDelay: 400, recoil: 2, recoilHead: 1, recoilGun: 2, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 6, bulletSpeed: 1, damageType: 1, magazine: 80, reload: 30, oneperone: 0, distance: 52, breath: 1, move: 2, delay: 300, impact: 301, stamina: 0, x: 0, path: 500, distance: 47, consumable: 0, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 43, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/shotgun-shot.mp3"], weapon: { src: "img/day-sawed-off-shotgun.png", img: { isLoaded: 0 }, x: 50, y: 0 }, damage: 28, knockback: 30, gunEffect: 0, cartridge: 0, cartridgeDelay: 500, recoil: 3, recoilHead: 4, recoilGun: 3, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0, 0.12, -0.12, 0.24, -0.24], bulletId: 2, bulletSpeed: 1.11, damageType: 1, magazine: 8, reload: 10, oneperone: 1, distance: 53, breath: 1, move: 2, delay: 900, impact: 901, stamina: 0, x: 0, path: 400, distance: 47, consumable: 0, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-chips.png", img: { isLoaded: 0 }, angle: 1, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 4, breath: 0.4, move: 0.8, stamina: 0, consumableDelay: 200, wait: 20, food: 90, radiation: 0, energy: 50, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-rotten-chips.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 5, radiation: 0, energy: 0, heal: -40, poison: 0, consumable: 1, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/laser-pistol-shot.mp3"], weapon: { src: "img/day-laser-pistol.png", img: { isLoaded: 0 }, x: 50, y: 0 }, damage: 55, knockback: 0, gunEffect: 1, cartridge: 5, cartridgeDelay: 400, recoil: 2, recoilHead: 1, recoilGun: 2, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 7, bulletSpeed: 1.45, damageType: 2, magazine: 12, reload: 22, oneperone: 0, distance: 50, breath: 1, move: 2, delay: 400, impact: 401, stamina: 0, x: 0, path: 900, distance: 47, consumable: 0, trigger: 0 }, { type: 1, id: 0, shot: 0, soundDelay: 0, soundVolume: 0.8, soundLen: 1, sound: ["audio/axe-swing.mp3"], weapon: { src: "img/day-sulfur-axe.png", img: { isLoaded: 0 }, angle: 0, x: 30, y: 0, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.05, move: 3, delay: 650, impact: 651, impactClient: 550, damage: 50, damageCac: 30, knockback: 20, stamina: 4, radius: 46, distance: 72, consumable: 0, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-joystick.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 2, food: 0, radiation: 0, energy: 0, heal: 0, poison: 0, consumable: 0, trigger: 1 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/laser-submachine-shot.mp3"], weapon: { src: "img/day-laser-submachine.png", img: { isLoaded: 0 }, x: 50, y: 0 }, damage: 45, knockback: 0, gunEffect: 1, cartridge: 5, cartridgeDelay: 500, recoil: 3, recoilHead: 2, recoilGun: 4, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 7, bulletSpeed: 1.45, damageType: 2, magazine: 30, reload: 25, oneperone: 0, distance: 54, breath: 1, move: 2, delay: 160, impact: 161, stamina: 0, x: 0, path: 900, distance: 47, consumable: 0, trigger: 0 }, { type: 3, id: 0, shot: 1, weapon: { src: "img/day-hand-grenade.png", img: { isLoaded: 0 }, angle: 0, x: 25, y: 50 }, rightArm: { angle: 0, x: 10, y: 44 }, leftArm: { angle: 0, x: 22, y: -39 }, bulletNumber: [0], bulletId: 8, bulletSpeed: 0.4, damageType: 1, path: 380, damage: 15, knockback: 5, breath: 0.05, breathWeapon: 2, move: 3, delay: 850, impact: 100, impactClient: 100, stamina: 15, x: -50, distance: 47, distance: 25, consumable: 0, trigger: 0 }, { type: 1, id: 0, shot: 0, weapon: { src: "img/day-super-hammer.png", img: { isLoaded: 0 }, angle: 0, x: 25, y: 5, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.02, move: 2, delay: 1100, delayClient: 1100, impact: 1101, impactClient: 950, damage: 1000, damageCac: 255, knockback: 30, stamina: 15, radius: 40, distance: 56, consumable: 0, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-ghoul-drug.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 13 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 30, food: 0, radiation: 0, energy: 0, heal: -10, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-mushroom1.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 0, radiation: 0, energy: 10, heal: -20, poison: 12, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-mushroom2.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 40, radiation: 0, energy: 10, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-mushroom3.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 40, radiation: 0, energy: 10, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-rotten-mushroom1.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 0, radiation: 0, energy: 0, heal: -40, poison: 8, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-rotten-mushroom2.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 5, radiation: 0, energy: 0, heal: -40, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-rotten-mushroom3.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 5, radiation: 0, energy: 0, heal: -40, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-lapadoine.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 13 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 30, food: 0, radiation: 0, energy: 0, heal: -10, poison: 2, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-pumpkin.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 25 }, leftArm: { angle: 0, x: 32, y: -25 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 20, food: 90, radiation: 0, energy: 20, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-rotten-pumpkin.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 25 }, leftArm: { angle: 0, x: 32, y: -25 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 30, radiation: 0, energy: 0, heal: -40, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-antidote.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 13 }, leftArm: { angle: 0, x: 32, y: -13 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 30, food: 0, radiation: 0, energy: 0, heal: 50, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-acorn.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 10 }, leftArm: { angle: 0, x: 32, y: -10 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 15, radiation: 0, energy: 0, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, soundDelay: 0, soundVolume: 1, soundLen: 3, sound: 1, weapon: { src: "img/day-hand-rotten-acorn.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 10 }, leftArm: { angle: 0, x: 32, y: -10 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 2, radiation: 0, energy: 0, heal: -20, poison: 0, consumable: 1, trigger: 0 }, { type: 2, id: 0, shot: 1, rightArm: { angle: 0, x: 32, y: 15 }, leftArm: { angle: 0, x: 43, y: -13 }, soundDelay: 0, soundVolume: 1, soundLen: 1, sound: ["audio/laser-sniper-shot.mp3"], weapon: { src: "img/day-laser-sniper.png", img: { isLoaded: 0 }, x: 55, y: 0 }, damage: 100, knockback: 0, gunEffect: 1, cartridge: 5, cartridgeDelay: 500, recoil: 3, recoilHead: 1, recoilGun: 4, noEffect: 0, firingRate: 0, spread: 0, bulletNumber: [0], bulletId: 7, bulletSpeed: 1.5, damageType: 2, magazine: 10, reload: 20, oneperone: 0, distance: 70, breath: 1, move: 2, delay: 1250, impact: 1251, stamina: 0, x: 0, path: 1100, distance: 47, consumable: 0, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-christmas-cake.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 10 }, leftArm: { angle: 0, x: 32, y: -10 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 127, radiation: 0, energy: 30, heal: 0, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-rotten-christmas-cake.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 10 }, leftArm: { angle: 0, x: 32, y: -10 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 10, radiation: 0, energy: 0, heal: -20, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-gingerbread-man.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 10 }, leftArm: { angle: 0, x: 32, y: -10 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 20, radiation: 0, energy: 20, heal: 40, poison: 0, consumable: 1, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-rotten-gingerbread-man.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 10 }, leftArm: { angle: 0, x: 32, y: -10 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 10, radiation: 0, energy: 0, heal: -20, poison: 0, consumable: 1, trigger: 0 }, { type: 1, id: 0, shot: 0, weapon: { src: "img/day-sugar-can.png", img: { isLoaded: 0 }, angle: 0, x: 30, y: 0, rotation: 4, x2: 20, y2: 10 }, rightArm: { angle: 0, x: 33, y: 28, distance: 8, rotation: 1.8 }, leftArm: { angle: 0, x: 30, y: -28, distance: -14, rotation: 1 }, breath: 0.02, move: 2, delayClient: 650, delay: 650, impact: 651, impactClient: 550, damage: 60, damageCac: 38, knockback: 20, stamina: 16, radius: 50, distance: 56, consumable: 0, trigger: 0 }, { type: 5, id: 0, shot: 0, weapon: { src: "img/day-hand-sugar-can-bow.png", img: { isLoaded: 0 }, angle: 0, x: 50, y: 0 }, rightArm: { angle: 0, x: 32, y: 10 }, leftArm: { angle: 0, x: 32, y: -10 }, recoil: 3, breath: 0.02, move: 2, stamina: 0, consumableDelay: 200, wait: 10, food: 30, radiation: 0, energy: 50, heal: 0, poison: 0, consumable: 1, trigger: 0 }], AABB: { w: 24, h: 24 }, radius: 38, hitRadius: 40, _left: 36, _right: 36, _bottom: 36, _top: 36, speed: 0.23, speedRun: 0.35, speedMalusBusy: 0.08, speedMalusLapadone: 0.08, speedBonusLapadone: 0.08, speedKnockback: 0.05, collisionType: 0, remove: 1000, z: 0, life: 0, inventorySize: 8, lerp: 0.15, timelife: -1 }, { AABB: { w: 0, h: 0 }, radius: 50, _left: 0, _right: 0, _bottom: 0, _top: 0, speed: 0.2, collisionType: 2, remove: 1000, z: 0, life: 0, lerp: 0.1, timelife: 20000 }, { AABB: { w: 0, h: 0 }, radius: 4, _left: 0, _right: 0, _bottom: 0, _top: 0, speed: 1, collisionType: 2, remove: 1000, z: 0, life: 0, lerp: 0.2, timelife: -1 }, { AABB: { w: 0, h: 0 }, _left: 0, _right: 0, _bottom: 0, _top: 0, speed: 0, life: 0, remove: 1000, z: 0, lerp: 0.2, collisionType: 1, timelife: -1 }, { AABB: { w: 0, h: 0 }, _left: 0, _right: 0, _bottom: 0, _top: 0, speed: 0, life: 0, remove: 1000, z: 0, lerp: 0.2, collisionType: 1, timelife: -1 }, { AABB: { w: 0, h: 0 }, _left: 0, _right: 0, _bottom: 0, _top: 0, speed: 0, life: 0, remove: 1000, z: 0, lerp: 0.2, collisionType: 1, timelife: -1 }, { AABB: { w: 0, h: 0 }, _left: 0, _right: 0, _bottom: 0, _top: 0, speed: 0, life: 0, remove: 1000, z: 0, lerp: 0.2, collisionType: 1, timelife: -1 }, { speed: 0.7, life: 0, z: 0, lerp: 0.2 }, { AABB: { w: 24, h: 24 }, radius: 38, hitRadius: 40, _left: 36, _right: 36, _bottom: 36, _top: 36, speed: 0, collisionType: 0, remove: 1000, z: 1, life: 0, lerp: 0.15, timelife: 1800000 }, { AABB: { w: 24, h: 24 }, radius: 38, hitRadius: 40, _left: 36, _right: 36, _bottom: 36, _top: 36, speed: 0, collisionType: 0, remove: 1000, z: 1, life: 0, lerp: 0.15, timelife: 1800000 }, { AABB: { w: 24, h: 24 }, radius: 38, hitRadius: 40, _left: 36, _right: 36, _bottom: 36, _top: 36, speed: 0, collisionType: 0, remove: 1000, z: 1, life: 0, lerp: 0.15, timelife: 1800000 }, { AABB: { w: 24, h: 24 }, radius: 38, hitRadius: 40, _left: 36, _right: 36, _bottom: 36, _top: 36, speed: 0, collisionType: 0, remove: 1000, z: 1, life: 0, lerp: 0.15, timelife: 1800000 }, { AABB: { w: 24, h: 24 }, explosions: [{ src: "img/day-explosion0.png", img: { isLoaded: 0 } }, { src: "img/day-explosion1.png", img: { isLoaded: 0 } }, { src: "img/day-explosion2.png", img: { isLoaded: 0 } }, { src: "img/day-explosion3.png", img: { isLoaded: 0 } }, { src: "img/day-explosion4.png", img: { isLoaded: 0 } }, { src: "img/day-explosion5.png", img: { isLoaded: 0 } }, { src: "img/day-explosion6.png", img: { isLoaded: 0 } }, { src: "img/day-explosion7.png", img: { isLoaded: 0 } }, { src: "img/day-explosion8.png", img: { isLoaded: 0 } }, { src: "img/day-explosion9.png", img: { isLoaded: 0 } }], radius: 38, hitRadius: 40, _left: 36, _right: 36, _bottom: 36, _top: 36, speed: 0, collisionType: 2, remove: 0, z: 1, life: 64000, lerp: 0.15, timelife: 1500 }, { AABB: { w: 24, h: 24 }, radius: 38, hitRadius: 40, _left: 36, _right: 36, _bottom: 36, _top: 36, speed: 0.23, speedRun: 0.35, speedMalusBusy: 0.08, speedKnockback: 0.05, collisionType: 0, remove: 1000, z: 0, life: 0, inventorySize: 8, lerp: 0.15, timelife: -1 }]; function EntitieClass(type) { this.uid = 0; this.pid = 0; this.id = 0; this.type = type; this.subtype = 0; this.angle = 0; this.nangle = 0; this.angleX = 0; this.angleY = 0; this.state = 0; this.extra = 0; this.broke = 0; this.x = 0; this.y = 0; this.rx = 0; this.ry = 0; this.nx = -1; this.ny = 0; this.px = 0; this.py = 0; this.i = 0; this.j = 0; this.speed = 0; this.update = 0; this.removed = 0; this.hit = 0; this.hitMax = 0; this.hurt = 0; this.hurtAngle = 0; this.heal = 0; this.death = 0; this.born = 0; this.breath = 0; this.breath2 = 0; this.particles = []; this.draw = null; this.lerp = 0.1; for (var i = 0; i < 10; i++) this.particles.push({ c: 0, V: 0, l: 0, m: 0, t: 0, r: 0 }); }; function setEntitie(entity, pid, uid, id, type, offsetX, offsetY, nx, ny, extra, angle, state) { entity.pid = pid; entity.uid = uid; entity.id = id; entity.nangle = MathUtils.reduceAngle(entity.angle, ((angle * 2) * window.Math.PI) / 255); entity.state = state; entity.nx = nx; entity.ny = ny; entity.extra = extra; if (entity.update === 0) { var playerGauges = ENTITIES[type]; entity.speed = playerGauges.speed; entity.angle = entity.nangle; entity.x = offsetX; entity.y = offsetY; entity.z = playerGauges.z; entity.lerp = playerGauges.lerp; entity.rx = offsetX; entity.ry = offsetY; entity.i = window.Math.floor(offsetY / Render.__TILE_SIZE__); entity.j = window.Math.floor(offsetX / Render.__TILE_SIZE__); entity.hit = 0; entity.hitMax = 0; entity.hurt = 0; entity.hurt2 = 0; entity.hurtAngle = 0; entity.heal = 0; entity.death = 0; entity.breath = 0; entity.breath2 = 0; entity.born = 0; entity.broke = 0; entity.subtype = 0; entity.draw = null; var init = playerGauges.init; if (init !== window.undefined) init(entity); } var angle = Math2d.angle(entity.rx, entity.ry, nx, ny); entity.angleX = window.Math.cos(angle); entity.angleY = window.Math.sin(angle); entity.update = 1; }; var Border = (function() { function forceNewIdentifier(M) { if (M.border === M.size) { M.cycle[M.size] = M.size; M.locator[M.size] = M.size; M.size++; } return M.cycle[M.border++]; }; function getNewIdentifier(M) { if (M.border < M.size) return M.cycle[M.border++]; return -1; }; function fastKillIdentifier(M, index) { M.border--; var lastValue = M.cycle[M.border]; M.cycle[M.border] = M.cycle[index]; M.cycle[index] = lastValue; }; function killIdentifier(M, valueIndex) { M.border--; var lastValue = M.cycle[M.border]; var valueLocator = M.locator[valueIndex]; M.cycle[M.border] = valueIndex; M.cycle[valueLocator] = lastValue; M.locator[lastValue] = valueLocator; M.locator[valueIndex] = M.border; }; function Border(size) { this.size = size; this.border = 0; this.cycle = []; this.locator = []; for (var i = 0; i < size; i++) { this.cycle[i] = i; this.locator[i] = i; } }; function ImperfectBorder(size) { var border = new Border(size); var cycle = border.cycle; var dataStore = new window.Array(size); this.length = 0; this.reset = function vision() { border.border = 0; this.length = 0; }; this.add = function vmMVw(data) { dataStore[forceNewIdentifier(border)] = data; this.length++; }; this.remove = function remove(data) { for (var i = 0; i < this.length; i++) { if (dataStore[cycle[i]] === data) { fastKillIdentifier(border, i); this.length--; return; } } }; this.get = function get(i) { return dataStore[cycle[i]]; }; }; function PerfectBorder(size) { var border = new Border(size); var cycle = border.cycle; var dataStore = new window.Array(size); var i = 0; var valueLocator = []; for (i = 0; i < size; i++) valueLocator[i] = -1; this.length = 0; this.reset = function vision() { border.border = 0; this.length = 0; }; this.add = function vmMVw(data) { var pos = forceNewIdentifier(border); dataStore[pos] = data; valueLocator[data] = border.border - 1; this.length++; }; this.remove = function remove(data) { var pos = valueLocator[data]; if (pos === -1) return; valueLocator[data] = -1; fastKillIdentifier(border, pos); this.length--; if (this.length > 0) valueLocator[dataStore[cycle[pos]]] = pos; }; this.get = function get(i) { return dataStore[cycle[i]]; }; }; return { Border: Border, PerfectBorder: PerfectBorder, ImperfectBorder: ImperfectBorder, getNewIdentifier: getNewIdentifier, forceNewIdentifier: forceNewIdentifier, killIdentifier: killIdentifier, fastKillIdentifier: fastKillIdentifier }; })(); var RNG = (function() { function Random(seed) { var m = 2147483648; var a = 1103515245; var c = 12345; var state = seed ? seed : window.Math.floor(window.Math.random() * (m - 1)); this.init = function(seed) { state = seed ? seed : window.Math.floor(window.Math.random() * (m - 1)); }; this.get = function() { state = ((a * state) + c) % m; return state / m; }; }; return { Random: Random }; })(); var TextManager = (function() { var __COUNTER__ = 0; var languages = { eng: [__COUNTER__++, "en"], rus: [__COUNTER__++, "ru"], spa: [__COUNTER__++, "sp"], fra: [__COUNTER__++, "fr"], deu: [__COUNTER__++, "de"], ita: [__COUNTER__++, "it"], pol: [__COUNTER__++, "pl"], pt: [__COUNTER__++, "pt"] }; var defaultLanguage = languages.eng; var currentLanguage = defaultLanguage[0]; var currentLanguageIndex = []; for (var i = 0; i < __COUNTER__; i++) currentLanguageIndex[i] = []; var languageStrings = languages.eng; function setCurrentLanguage(language) { defaultLanguage = language; TextManager.defaultLanguage = defaultLanguage; currentLanguage = defaultLanguage[0]; localStorage2.setItem("defaultLanguage", window.JSON.stringify(defaultLanguage)); }; function get(id) { if ((currentLanguageIndex[currentLanguage] === window.undefined) || (currentLanguageIndex[currentLanguage][id] === window.undefined)) return currentLanguageIndex[languageStrings[0]][id]; else return currentLanguageIndex[currentLanguage][id]; }; function getFormatted(id) { var code; if ((currentLanguageIndex[currentLanguage] === window.undefined) || (currentLanguageIndex[currentLanguage][id] === window.undefined)) formattedString = currentLanguageIndex[languageStrings][id]; else formattedString = currentLanguageIndex[currentLanguage][id]; for (var i = 1; i < arguments.length; i++) formattedString[0] = formattedString[0].replace("%d", arguments[i]); return formattedString; }; function setLanguageStrings(strings) { for (var i = 0; i < strings.length; i++) currentLanguageIndex[currentLanguage][i] = [strings[i]]; }; function loadLanguage(language, callback) { setCurrentLanguage(language); if (currentLanguageIndex[language[0]].length !== 0) { if (callback !== window.undefined) callback(); return; } var xObj = new window.XMLHttpRequest; xObj.open("GET", ("json/defaultLanguage" + language[1]) + ".json", true); xObj.onreadystatechange = function() { if ((xObj.readyState === 4) && (this.status === 200)) { setLanguageStrings(window.JSON.parse(this.responseText)); if (callback !== window.undefined) callback(); } }; xObj.send(); }; function init(strings, fallback, callback) { if (fallback !== window.undefined) languageStrings = fallback; if (strings !== window.undefined) { var temp = currentLanguage; currentLanguage = languageStrings[0]; setLanguageStrings(strings); currentLanguage = temp; } var storedLanguage = localStorage2.getItem("defaultLanguage"); if (storedLanguage === null) { var userLanguage = window.navigator.language || window.navigator.userLanguage; switch (userLanguage) { case "ru": defaultLanguage = languages.rus; break; case "en": defaultLanguage = languages.eng; break; case "es": defaultLanguage = languages.spa; break; case "fr": defaultLanguage = languages.fra; break; case "it": defaultLanguage = languages.ita; break; case "pl": defaultLanguage = languages.pol; break; case "de": defaultLanguage = languages.deu; break; case "pt": defaultLanguage = languages.pt; break; } } else defaultLanguage = window.JSON.parse(storedLanguage); loadLanguage(defaultLanguage, callback); }; return { languages: languages, defaultLanguage:defaultLanguage, get: get, getFormatted: getFormatted, init: init, loadLanguage: loadLanguage }; })(); var Keyboard = (function() { var qwerty = "0"; var azerty = "1"; var UP = 0; var t_DOWN = 1; var LEFT = 65; var RIGHT = 68; var TOP = 87; var DOWN = 83; var ARROW_LEFT = 37; var ARROW_RIGHT = 39; var ARROW_TOP = 38; var ARROW_BOTTOM = 40; var SHIFT = 16; var keys = (new Array(255)).fill(UP); var mapping = null; function isAzerty() { if (mapping === azerty) return 1; else return 0; }; function isQwerty() { if (mapping === qwerty) return 1; else return 0; }; function setAzerty() { LEFT = 81; RIGHT = 68; TOP = 90; DOWN = 83; localStorage2.setItem("keyboardMap", azerty); mapping = azerty; }; function setQwert() { LEFT = 65; RIGHT = 68; TOP = 87; DOWN = 83; localStorage2.setItem("keyboardMap", qwerty); mapping = qwerty; }; function keyup(event) { var k = window.Math.min(event.charCode || event.keyCode, 255); keys[k] = UP; }; function keydown(event) { var k = Math.min(event.charCode || event.keyCode, 255); if ((k === LEFT) || (k === ARROW_LEFT)) press_left(); else if ((k === TOP) || (k === ARROW_TOP)) press_top(); else if ((k === DOWN) || (k === ARROW_BOTTOM)) press_bottom(); else if ((k === RIGHT) || (k === ARROW_RIGHT)) press_right(); keys[k] = t_DOWN; return k; }; function press_left() { keys[RIGHT] = UP; keys[ARROW_RIGHT] = UP; }; function press_right() { keys[LEFT] = UP; keys[ARROW_LEFT] = UP; }; function press_bottom() { keys[TOP] = UP; keys[ARROW_TOP] = UP; }; function press_top() { keys[DOWN] = UP; keys[ARROW_BOTTOM] = UP; }; function isLeft () { return keys[LEFT] || keys[ARROW_LEFT] }; function isRight () { return keys[RIGHT] || keys[ARROW_RIGHT] }; function isBottom () { return keys[DOWN] || keys[ARROW_BOTTOM] }; function isTop () { return keys[TOP] || keys[ARROW_TOP] }; function isShift () { return keys[SHIFT] }; function isKey (WmVNW) { return keys[WmVNW] }; function clearDirectionnal() { keys[RIGHT] = UP; keys[ARROW_RIGHT] = UP; keys[LEFT] = UP; keys[ARROW_LEFT] = UP; keys[TOP] = UP; keys[ARROW_TOP] = UP; keys[DOWN] = UP; keys[ARROW_BOTTOM] = UP; }; function LocalKeyboardEvent() { this.keyCode = 0; this.charCode = 0; this.altKey = false; this.ctrlKey = false; this.preventDefault = function() {}; }; mapping = localStorage2.getItem("keyboardMap"); if (mapping === null) { var navLang = window.navigator.language || window.navigator.userLanguage; if ((navLang === "fr") || (navLang === "fr-FR")) setAzerty(); else setQwert(); } else if (mapping === azerty) setAzerty(); else setQwert(); return { setAzerty: setAzerty, setQwert: setQwert, keyup: keyup, keydown: keydown, clearDirectionnal: clearDirectionnal, isLeft: isLeft, isRight: isRight, isBottom: isBottom, isTop: isTop, isAzerty: isAzerty, isQwerty: isQwerty, isShift: isShift, isKey: isKey, LocalKeyboardEvent: LocalKeyboardEvent }; })(); var AudioUtils = (function() { var MAX_FADE_INTERVAL = 30000; var DISTANCE_THRESHOLD = 300; window.AudioContext = window.AudioContext || window.webkitAudioContext; var audioContext = new window.AudioContext; if (!audioContext.createGain) audioContext.createGain = audioContext.createGainNode; stream = null; mediaRecorder = null; chunks = []; record = null; blob = null; function getLastRecord() { return record; }; function initStream() { stream = audioContext.createMediaStreamDestination(); mediaRecorder = new window.MediaRecorder(stream.stream); mediaRecorder.ondataavailable = function(event) { chunks.push(event.data); }; mediaRecorder.onstop = function(event) { var mimeOptions = window.JSON.parse('{ "type" : "audio/ogg; codecs=opus" }'); blob = new window.Blob(chunks, mimeOptions); record = window.URL.createObjectURL(blob); }; }; function startRecordStream() { blob = null; record = null; chunks = []; mediaRecorder.start(); }; function stopRecordStream() { mediaRecorder.stop(); }; var options = { isFx: 1, isAudio: 1 }; try { var value = localStorage2.getItem("isFx"); if (value !== null) options.isFx = window.Number(value); else if (isTouchScreen === 1) options.isFx = 0; value = localStorage2.getItem("isAudio"); if (value !== null) options.isAudio = window.Number(value); else if (isTouchScreen === 1) options.isAudio = 0; } catch (error) { if (isTouchScreen === 1) { options.isFx = 0; options.isAudio = 0; } } function setAudio(value) { if ((value === 0) && (options.isAudio !== value)) { for (var soundKey in AudioUtils.audio) { var audio = AudioUtils.audio[soundKey]; stopSound(audio); } } options.isAudio = value; localStorage2.setItem("isAudio", "" + value); }; function setFx(value) { if ((value === 0) && (options.isFx !== value)) { for (var fxKey in AudioUtils._fx) { var _fx = AudioUtils._fx[fxKey]; stopSound(_fx); } } options.isFx = value; localStorage2.setItem("isFx", "" + value); }; function playFx(_fx, volume, distance, timestamp) { if (distance > DISTANCE_THRESHOLD) return; volume = (1 - (distance / DISTANCE_THRESHOLD)) * volume; _fx.volume = volume; playSound(_fx, 0, timestamp); _fx.run = 0; }; function Sound(url, volume, loop, _fx) { this.url = url; this.buffer = null; this.source = null; this.isLoaded = 0; this.run = 0; this.gainNode = null; this.loop = loop; this.volume = 1; this.volume0 = -1; if (volume !== window.undefined) this.volume = volume; this.fadingVolume = -1; this._fx = 0; if (_fx === 1) this._fx = 1; this.fade = 0; this.fadeMax = 0; this.fadeEffect = 0; this.start = 0; this.durationMs = 0; }; function changeVolume(sound, value) { sound.gainNode.gain.value = value; sound.volume = value; }; function stopSound(sound) { if (sound.run === 1) { sound.run = 0; sound.volume0 = -1; sound.source.stop(); window.console.log("Stop", sound.url); } }; function fadeSound(sound, duration, effect) { if (sound.fadingVolume !== -1) sound.volume = sound.fadingVolume; sound.fade = 0; sound.fadeMax = duration; sound.fadeEffect = effect; window.console.log("FADE", sound.url); }; function playSound(sound, duration, timestamp) { if (sound._fx === 0) { if (options.isAudio === 0) return; } else if (options.isFx === 0) return; if (sound.run === 1) { if (((sound.volume0 !== -1) && (sound.fadeMax === 0)) && ((previousTimestamp - sound.volume0) > MAX_FADE_INTERVAL)) { stopSound(sound); return; } if (sound.fadeMax > 0) { sound.fade = window.Math.min(sound.fade + delta, sound.fadeMax); var volume = window.Math.max(0, window.Math.min(1, sound.volume + (window.Math.cos(((1 - (sound.fade / sound.fadeMax)) * 0.5) * window.Math.PI) * sound.fadeEffect))); sound.gainNode.gain.value = volume; sound.fadingVolume = volume; if (sound.fade === sound.fadeMax) { sound.volume = volume; sound.fadingVolume = -1; sound.fadeMax = 0; sound.fade = 0; if (sound.volume === 0) sound.volume0 = previousTimestamp; else sound.volume0 = -1; } } return; } if (((sound.fadeMax === 0) && (sound.fade === 0)) && (sound.volume === 0)) return; if (sound.isLoaded !== 1) { loadSound(sound); return; } var source = audioContext.createBufferSource(); var gainNode = audioContext.createGain(); sound.source = source; sound.gainNode = gainNode; changeVolume(sound, sound.volume); source.buffer = sound.buffer; source.connect(gainNode); if (stream !== null) source.connect(stream); gainNode.connect(audioContext.destination); if (sound.loop === true) source.loop = sound.loop; if (!source.stop) source.stop = source.noteOff; if (!source.start) source.start = source.noteOn; sound.source.start(((timestamp === window.undefined) ? 0 : timestamp) + audioContext.currentTime, (duration === window.undefined) ? 0 : duration); sound.run = 1; sound.start = previousTimestamp; window.console.log("Start", sound.url, sound.fade, sound.fadeMax, duration); }; function loadSound(sound) { if (sound.isLoaded === 2) return; window.console.log("LOAD", sound); var xhr = new window.XMLHttpRequest; xhr.open('GET', sound.url, true); xhr.responseType = 'arraybuffer'; xhr.onload = function() { audioContext.decodeAudioData(xhr.response, function(WNNNm) { sound.buffer = WNNNm; sound.isLoaded = 1; sound.durationMs = WNNNm.duration * 1000; }); }; sound.isLoaded = 2; xhr.send(); return; }; return { Sound: Sound, loadSound: loadSound, playSound: playSound, playFx: playFx, stopSound: stopSound, fadeSound: fadeSound, changeVolume: changeVolume, options: options, setAudio: setAudio, setFx: setFx, initStream: initStream, startRecordStream: startRecordStream, stopRecordStream: stopRecordStream, getLastRecord: getLastRecord, audio: {}, _fx: {} }; })(); var Loader = (function() { var loadingScreen; function init() { loadingScreen = GUI.createBackground(423, 276, "img/loading1.png"); }; var transitionSpeed; var mouseX = new Mouse.LocalMouseEvent; var keyboard = new Keyboard.LocalKeyboardEvent; var transitionDuration = 800; var transitionState = 0; var transitionFunction = function(t) { return MathUtils.Ease.speedLimit(t, MathUtils.Ease.inQuart, 0.05); }; var reverseTransitionDuration = 800; var reverseTransitionState = 0; var reverseTransitionFunction = function(t) { return MathUtils.Ease.speedLimit(t, MathUtils.Ease.outQuart, 0.05); }; var reverseTransition = 0; var transitionDuration = 0; var isWaiting = window.undefined; function run() {reverseTransitionState CanvasUtils.setRenderer(Loader); transitionDuration = reverseTransitionDuration; reverseTransition = reverseTransitionDuration; isWaiting = reverseTransitionFunction; reverseTransitionState = 1; update(); }; function quit(callback) { transitionSpeed = callback; transitionDuration = transitionDuration; reverseTransition = transitionDuration; isWaiting = transitionFunction; transitionState = 1; }; function update() { var transitionX = 0; var transitionY = 0; if (transitionDuration > 0) { transitionY = canh; var transition = isWaiting(1 - (transitionDuration / reverseTransition)); if (transition === 1) transitionDuration = 0; if (transitionState === 1) transition *= -1; else transition = 1 - window.Math.abs(transition); transitionX *= transition; transitionY *= transition; } loadingScreen.pos.x = (canw2 - window.Math.floor(211 * scaleby)) + transitionX; loadingScreen.pos.y = window.Math.max(0, canh2 - window.Math.floor(138 * scaleby)) + transitionY; }; function draw() { if (transitionManager() === 0) return; ctx.clearRect(0, 0, canw, canh); loadingScreen.draw(); }; function transitionManager() { if (transitionState === 1) { update(); if (transitionDuration < 0) { transitionState = 0; transitionSpeed.run(); return 0; } transitionDuration -= delta; } else if (reverseTransitionState === 1) { update(); if (transitionDuration < 0) { reverseTransitionState = 0; Loader.getURLData = function(_name) { _url = window.location.href; _name = _name.replace(/[\[]/, "\[").replace(/[\]]/, "\]"); var regexS = ("[\?&]" + _name) + "=([^&#]*)"; var _regex = new window.RegExp(regexS); var results = _regex.exec(_url); return (results === null) ? null : results[1]; }; function setupServers() { var serverList = Client.serverList; Home.regions = []; Home.privateServer = []; Home.ghoulServer = []; var regions = []; var regionPlayers = []; var totalPlayers = 0; var serverDropdownHTML = '<select id="servers"><option value="auto">Auto Select Server</option>'; for (var i = 0; i < serverList.length; i++) { var regionName = serverList[i][4]; var playerNumber = serverList[i][5]; var ghl = serverList[i][6]; totalPlayers += playerNumber; if (ghl === 'ghoul') { Home.ghoulServer.push(i); continue; } if (ghl === ["br"]) { regionName = regionName.replace("BR", ""); if (Home.regions[regionName] === window.undefined) Home.regions[regionName] = []; Home.regions[regionName].push(i); continue; } for (var j = 0; j < regions.length; j++) { if (regions[j] === regionName) { regionPlayers[j] += playerNumber; j = -1; break; } } if (j !== -1) { regions.push(regionName); regionPlayers.push(playerNumber); } } var serverIndex = 1; var selectedIndex = 0; for (i = 0; i < regions.length; i++) { regionName = regions[i]; serverDropdownHTML += ((("<option disabled>" + regions[i]) + " - ") + regionPlayers[i]) + " players</option>"; serverIndex++; var id = 1; for (j = 0; j < serverList.length; j++) { if (serverList[j][4] === regionName && serverList[j][6] === 'survival') { serverDropdownHTML += ((((((('<option value="' + serverList[j][0]) + '">') + regions[i]) + " ") + (id++)) + " - ") + serverList[j][5]) + " players</option>"; if (Client.selectedServer === j) selectedIndex = serverIndex; serverIndex++; } } } Home.htmlBattleRoyale = '<select id="servers"><option value="auto">Auto Select Server</option>'; for (var i in Home.regions) { var serverIndex = 0; for (var k = 0; k < Home.regions[i].length; k++) serverIndex += serverList[Home.regions[i][k]][5]; //Home.htmlBattleRoyale += ((((('<option value="' + i) + '">') + i) + " - ") + serverIndex) + " players</option>"; } Home.privateServer = Home.privateServer.sort(function(a, M) { return window.Number(serverList[M][5]) - window.Number(serverList[a][5]); }); Home.htmlPrivateServer = '<select id="servers"><option value="auto">Auto Select Server</option>'; for (var i in Home.privateServer) { Home.htmlPrivateServer += ((((('<option value="' + i) + '">') + serverList[Home.privateServer[i]][4].replace("PRIV", "")) + " - ") + serverList[Home.privateServer[i]][5]) + " players</option>"; } Home.htmlGhoulServer = '<select id="servers"><option value="auto">Auto Select Server</option>'; for (var i in Home.ghoulServer) { Home.htmlGhoulServer += ('<option value="' + serverList[Home.ghoulServer[i]][0] + '">' + serverList[Home.ghoulServer[i]][4].replace("ghoul", "") + " - " + serverList[Home.ghoulServer[i]][5]) + " players</option>"; } serverDropdownHTML += ("<option disabled>All servers - " + totalPlayers) + " players</option></select>"; Home.htmlBattleRoyale += ("<option disabled>All servers - " + totalPlayers) + " players</option></select>"; Home.htmlPrivateServer += ("<option disabled>All servers - " + totalPlayers) + " players</option></select>"; Home.htmlGhoulServer += ("<option disabled>All servers - " + totalPlayers) + " players</option></select>"; window.document.getElementById("serverList").innerHTML = serverDropdownHTML; window.document.getElementById("servers").selectedIndex = selectedIndex; World.PLAYER.admin = 1; //added just taked from beloved if, whatever xD if (((Loader.getURLData("admin") !== null) || (Loader.getURLData("member") !== null)) || (Loader.getURLData("moderator") !== null)) { if ((Loader.getURLData("admin") !== null) || (Loader.getURLData("moderator") !== null)) { World.PLAYER.admin = 1; window.document.getElementById("chatInput").maxLength = 1000000; } window.document.getElementById("nickname").innerHTML += '<input id="passwordInput" type="password" placeholder="Password" maxLength="16">'; var password = localStorage2.getItem("password"); if (password !== null) window.document.getElementById("passwordInput").value = password; } var port = Loader.getURLData("port"); var ip = Loader.getURLData("ips"); if (ip !== null) { ip = ip.replace(/\./g, '-'); var selectedServer = window.Number(window.document.getElementById("servers").value); Client.serverList[selectedServer][0] = ip; Client.serverList[selectedServer][1] = ip + ".devast.io"; Client.serverList[selectedServer][2] = (port === null) ? "443" : port; Client.serverList[selectedServer][3] = 1; } ip = Loader.getURLData("ip"); if (ip !== null) { ip = ip.replace(/\./g, '-'); var selectedServer = window.Number(window.document.getElementById("servers").value); Client.serverList[selectedServer][0] = ip; Client.serverList[selectedServer][1] = ip; Client.serverList[selectedServer][2] = (port === null) ? "8080" : port; Client.serverList[selectedServer][3] = 0; } }; Client.types = ["BR", "PRIV", "HIDDEN", "GHOUL"]; Client.getServerList(function() { setupServers(); Loader.quit(Home); }); var entityExplosions = ENTITIES[__ENTITIE_EXPLOSION__].explosions; var entityExplosions2 = ENTITIES2[__ENTITIE_EXPLOSION__].explosions; for (var i = 0; i < entityExplosions.length; i++) { entityExplosions[i].img = CanvasUtils.loadImage(entityExplosions[i].src, entityExplosions[i].img); entityExplosions2[i].img = CanvasUtils.loadImage(entityExplosions2[i].src, entityExplosions2[i].img); } } transitionDuration -= delta; } return 1; }; return { quit: quit, init: init, run: run, update: update, draw: draw }; })(); var Home = (function() { async function joinServer() { checkAdBlocker(); if (shouldShowAds()) { if (Home.waitAds === 1) return; if (Home.ads === 1) { await showAds(); return; } } const gameMode = getGameMode(); const serverId = document.getElementById('servers').value; const [lobFind, lobID] = getLobbyDetails(gameMode, serverId); try { const lobby = await findOrJoinLobby(lobFind, lobID); connectToLobby(lobby); } catch (error) { console.error(error); } } function checkAdBlocker() { try { document.getElementsByClassName("ympb_target")[0].id; document.getElementById("trevda").id; document.getElementById("preroll").id; } catch (error) { Home.adblocker = 1; } } function shouldShowAds() { return ( World.PLAYER.admin !== 1 && typeof window["YMPB"] !== 'undefined' && typeof window["YMPB"]["preroll"] !== 'undefined' ); } function showAds() { return new Promise((resolve) => { AudioManager.cutTitleMusic(); document.getElementById("preroll").style.display = "block"; window["YMPB"]["preroll"]('preroll', () => { Home.waitAds = 0; Home.ads = -1; Home.joinServer(); resolve(); }); Home.waitAds = 1; }); } function getGameMode() { switch (Home.gameMode) { case World['__SURVIVAL__']: return 'survival'; case World['__GHOUL__']: return 'ghoul'; case World['__BR__']: return 'br'; default: throw new Error('Unknown game mode', Home.gameMode); } } function getLobbyDetails(gameMode, serverId) { if (serverId === 'auto') { return ['https://api.eg.rivet.gg/matchmaker/lobbies/find', { 'game_modes': [gameMode] }]; } else { return ['https://api.eg.rivet.gg/matchmaker/lobbies/join', { 'lobby_id': serverId }]; } } async function findOrJoinLobby(url, body) { const headers = { 'Accept': 'application/json', 'Content-Type': 'application/json' }; if (window.RIVET_TOKEN) { headers['Authorization'] = 'Bearer ' + window.RIVET_TOKEN; } const response = await fetch(url, { method: 'POST', headers: headers, body: JSON.stringify(body), }); if (!response.ok) { throw new Error('Failed to find lobby: ' + response.status); } return response.json(); } function connectToLobby(lobby) { Client.selectedServer = Client.serverList.findIndex(server => server[0] === lobby.lobby_id); Client.connectedLobby = lobby; Client.startConnection(document.getElementById('nicknameInput').value, 0, lobby.player.token); } function onError(state) {}; function quitGame() { quit(Game); }; function onOpen() { quitGame(); }; var vmV = 0; function nnn(type, offsetX, offsetY, angle, MMWWm, Mmwvn) { var entity = Entitie.get(0, vmV, vmV, type); setEntitie(entity, 0, vmV, vmV, type, offsetX, offsetY, offsetX, offsetY, (MMWWm << 5) + (Mmwvn << 10), angle, 1); vmV++; }; function Vnvmv(type, offsetX, offsetY, rotation, state, subtype) { var entity = Entitie.get(0, vmV, vmV, type); setEntitie(entity, 0, vmV, vmV, type, offsetX, offsetY, offsetX, offsetY, (subtype << 7) + (rotation << 5), 0, state); vmV++; }; var NNN = 0; var mNMWw = { _en: [{ _name: 'Yuukun', button: ["img/yuukun0out.png", "img/yuukun0in.png", "img/yuukun0click.png"], _url: "https://energy.youtube.com/watch?v=TyI_8Il64d8" }, { _name: 'eXistenZ', button: ["img/existenz5out.png", "img/existenz5in.png", "img/existenz5click.png"], _url: "https://energy.youtube.com/watch?v=Seq6QGBTvNQ" }, { _name: 'Bubble Gum', button: ["img/bubblegum2out.png", "img/bubblegum2in.png", "img/bubblegum2click.png"], _url: "https://youtu.be/fD7lx9zAQGU" }], _fr: [{ _name: 'Devaster', button: ["img/devaster0out.png", "img/devaster0in.png", "img/devaster0click.png"], _url: "https://energy.youtube.com/watch?v=Jpgx-d3qHzs" }] }; var WVwwn = mNMWw._en; var userLanguage = window.navigator.language || window.navigator.userLanguage; if (userLanguage.toLowerCase().indexOf("fr") !== -1) WVwwn = mNMWw._fr; var WWNWM = WVwwn[window.Math.floor(WVwwn.length * window.Math.random())]; var mnMMV = [GUI.renderText(WWNWM._name, "'Viga', sans-serif", "#FFFFFF", 30, 150), GUI.renderText(WWNWM._name, "'Viga', sans-serif", "#C5B03C", 30, 150), GUI.renderText(WWNWM._name, "'Viga', sans-serif", "#9B800D", 30, 150)]; mnMMV[0].isLoaded = 1; mnMMV[1].isLoaded = 1; mnMMV[2].isLoaded = 1; var wMMNm = GUI.createButton(mnMMV[0].wh, mnMMV[0].h2, window.undefined, mnMMV); var wvmwM = GUI.createButton(120, 67, WWNWM.button); var WnwMN = { img: null }; var VmV; var mVwVw; var nickname; var vWmNN; var VWvmM; var playbutt; var NnnVw; var Wvwwv; var VMmWW; var serverList; var vnmmN; var wwMMw; var mwvwV; var NNnwN; var VNVnM; var nmnWW; var mmvWv; var mwnnv; var wnwvW; var MMNMM; var WWNNV; var twitter; var facebook; var youtube; var reddit; var discord; var NvW; var VmwMm; var vvWWW; var wnm; var VMm; var WMmmM; var nvWwv; var WwWvv; var wvmmM; var mNVWV; var VMmWN; var vnvmm; var wWWwm; var privateServer; var vvmMm; var wMNWw; var trevdaStyle; var vWNNw; var VvVMm; var VwWMv; var vmWmN; function init() { Home.joinServer = joinServer; Home.ads = 1; Home.waitAds = 0; /*var WvMwn = new window.XMLHttpRequest; WvMwn.onreadystatechange = function() { if ((this.readyState === 4) && (this.status === 0)) { Home.adblocker = 1; window.document.getElementById("trevda").innerHTML = '<img src="./img/disable-to-get-bonus.png"></img>'; } }; WvMwn.open("GET", "https://api.adinplay.com/libs/aiptag/assets/adsbygoogle.js", true); WvMwn.send(); */ if (window.String(window.document.createElement).indexOf("createElement") === -1) Home.adblocker = 1; Home.gameMode = 0; Home.publicMode = 1; Home.alertId = 0; Home.alertDelay = 0; window.document.getElementById("nicknameInput").value = localStorage2.getItem("nickname", nickname); AudioUtils.fadeSound(AudioUtils.audio.title, 1000, AudioManager.musicVolume); Entitie.removeAll(); Render.reset(1); vmV = 0; nnn(__ENTITIE_RESOURCES_DOWN__, 200, 0, 127, RESID.STONE, 3); nnn(__ENTITIE_RESOURCES_TOP__, 400, 100, 127, RESID.ORANGETREE, 2); nnn(__ENTITIE_RESOURCES_STOP__, 100, 100, 127, RESID.LEAFTREE, 0); Vnvmv(__ENTITIE_BUILD_GROUND__, 900, 500, 0, 33, IID.__SMELTER__); Vnvmv(__ENTITIE_BUILD_DOWN__, 800, 400, 1, 1, IID.__WORKBENCH__); nnn(__ENTITIE_RESOURCES_STOP__, 1100, 300, 10, RESID.LEAFTREE, 1); nnn(__ENTITIE_RESOURCES_STOP__, 800, 200, 127, RESID.LEAFTREE, 2); nnn(__ENTITIE_RESOURCES_STOP__, 700, 100, 127, RESID.LEAFTREE, 3); nnn(__ENTITIE_RESOURCES_STOP__, 1200, 0, 127, RESID.LEAFTREE, 0); nnn(__ENTITIE_RESOURCES_STOP__, 1300, 100, 127, RESID.LEAFTREE, 4); nnn(__ENTITIE_RESOURCES_STOP__, 1300, 300, 127, RESID.LEAFTREE, 2); nnn(__ENTITIE_RESOURCES_STOP__, 800, 500, 127, RESID.LEAFTREE, 4); nnn(__ENTITIE_RESOURCES_TOP__, 1000, 200, 127, RESID.ORANGETREE, 0); nnn(__ENTITIE_RESOURCES_STOP__, 700, 600, 127, RESID.LEAFTREE, 0); nnn(__ENTITIE_RESOURCES_STOP__, 500, 400, 127, RESID.LEAFTREE, 2); nnn(__ENTITIE_RESOURCES_DOWN__, 500, 700, 127, RESID.STONE, 3); nnn(__ENTITIE_RESOURCES_DOWN__, 1000, 300, 127, RESID.STONE, 4); nnn(__ENTITIE_RESOURCES_STOP__, 1300, 500, 100, RESID.LEAFTREE, 2); nnn(__ENTITIE_RESOURCES_STOP__, 1200, 700, 127, RESID.LEAFTREE, 4); nnn(__ENTITIE_RESOURCES_STOP__, 1300, 700, 127, RESID.LEAFTREE, 0); nnn(__ENTITIE_RESOURCES_DOWN__, 800, 600, 127, RESID.STONE, 5); nnn(__ENTITIE_RESOURCES_STOP__, 500, 600, 127, RESID.LEAFTREE, 4); nnn(__ENTITIE_RESOURCES_DOWN__, 200, 400, 127, RESID.URANIUM, 0); nnn(__ENTITIE_RESOURCES_DOWN__, 400, 500, 50, RESID.WOOD, 3); nnn(__ENTITIE_RESOURCES_STOP__, 100, 400, 190, RESID.LEAFTREE, 2); nnn(__ENTITIE_RESOURCES_STOP__, 100, 500, 190, RESID.LEAFTREE, 3); nnn(__ENTITIE_RESOURCES_STOP__, 100, 600, 127, RESID.LEAFTREE, 4); nnn(__ENTITIE_RESOURCES_STOP__, 0, 500, 127, RESID.LEAFTREE, 1); nnn(__ENTITIE_RESOURCES_STOP__, 200, 300, 50, RESID.LEAFTREE, 4); nnn(__ENTITIE_RESOURCES_STOP__, 400, 200, 10, RESID.LEAFTREE, 2); nnn(__ENTITIE_RESOURCES_STOP__, 500, 200, 10, RESID.LEAFTREE, 1); nnn(__ENTITIE_RESOURCES_STOP__, 100, 800, 10, RESID.LEAFTREE, 0); nnn(__ENTITIE_RESOURCES_STOP__, 400, 800, 10, RESID.LEAFTREE, 1); nnn(__ENTITIE_RESOURCES_STOP__, 700, 800, 10, RESID.LEAFTREE, 2); nnn(__ENTITIE_RESOURCES_DOWN__, 900, 700, 50, RESID.WOOD, 4); if (isTouchScreen === 1) VmV = GUI.createBackground(650, 312, "img/logo-homepage-mobile2.png"); else VmV = GUI.createBackground(650, 312, "img/logo-homepage4.png"); if (isTouchScreen === 1) mVwVw = GUI.createButton(0, 0); else mVwVw = GUI.createButton(94, 40, ["img/more-io-games-out.png", "img/more-io-games-in.png", "img/more-io-games-click.png"]); nickname = window.document.getElementById("nickname"); vWmNN = nickname.style; VWvmM = { x: 0, y: 0 }; nickname.addEventListener("keyup", function(event) { if ((transitionState | reverseTransitionState) === 1) return; if (event.keyCode === 13) joinServer(); }, false); playbutt = GUI.createButton(136, 57, ["img/play-button-out.png", "img/play-button-in.png", "img/play-button-click.png"]); NnnVw = window.document.getElementById("terms"); Wvwwv = NnnVw.style; VMmWW = { x: 0, y: 0 }; serverList = window.document.getElementById("serverList"); vnmmN = serverList.style; wwMMw = { x: 0, y: 0 }; serverList.addEventListener("mouseover", function(event) { if ((transitionState | reverseTransitionState) === 1) return; }, false); serverList.addEventListener("mousedown", function(event) { if ((transitionState | reverseTransitionState) === 1) return; }, false); serverList.addEventListener("mouseup", function(event) { if ((transitionState | reverseTransitionState) === 1) return; }, false); if (isTouchScreen === 1) mwvwV = GUI.createBackground(0, 0); else mwvwV = GUI.createBackground(230, 235, "img/changelogBox.png"); NNnwN = window.document.getElementById("changelog"); VNVnM = NNnwN.style; nmnWW = { x: 0, y: 0 }; if (isTouchScreen === 1) mmvWv = GUI.createBackground(0, 0); else mmvWv = GUI.createBackground(230, 355, "img/commandsBox.png"); mwnnv = window.document.getElementById("howtoplay"); wnwvW = mwnnv.style; MMNMM = { x: 0, y: 0 }; if (isTouchScreen === 1) WWNNV = GUI.createBackground(0, 0); else WWNNV = GUI.createBackground(123, 55, "img/gameMade.png"); if (isTouchScreen === 1) twitter = GUI.createButton(0, 0); else twitter = GUI.createButton(40, 38, ["img/twitter-button-out.png", "img/twitter-button-in.png", "img/twitter-button-click.png"]); if (isTouchScreen === 1) facebook = GUI.createButton(0, 0); else facebook = GUI.createButton(40, 38, ["img/facebook-button-out.png", "img/facebook-button-in.png", "img/facebook-button-click.png"]); if (isTouchScreen === 1) youtube = GUI.createButton(0, 0); else youtube = GUI.createButton(40, 38, ["img/youtube-button-out.png", "img/youtube-button-in.png", "img/youtube-button-click.png"]); if (isTouchScreen === 1) reddit = GUI.createButton(0, 0); else reddit = GUI.createButton(54, 54, ["img/home-reddit-button-out.png", "img/home-reddit-button-in.png", "img/home-reddit-button-click.png"]); if (isTouchScreen === 1) discord = GUI.createButton(0, 0); else discord = GUI.createButton(54, 54, ["img/home-discord-button-out.png", "img/home-discord-button-in.png", "img/home-discord-button-click.png"]); NvW = GUI.createButton(93, 51, ["img/survivalmode-button-out.png", "img/survivalmode-button-in.png", "img/survivalmode-button-click.png"]); VmwMm = GUI.createButton(93, 51, ["img/battle-royale-button-out.png", "img/battle-royale-button-in.png", "img/battle-royale-button-click.png"]); vvWWW = GUI.createButton(93, 51, ["img/ghoul-mode-button-out.png", "img/ghoul-mode-button-in.png", "img/ghoul-mode-button-click.png"]); wnm = GUI.createButton(68, 34, ["img/private-server-button-out.png", "img/private-server-button-in.png", "img/private-server-button-click.png"]); VMm = GUI.createButton(68, 34, ["img/public-server-button-out.png", "img/public-server-button-in.png", "img/public-server-button-click.png"]); if (isTouchScreen === 1) WMmmM = GUI.createBackground(0, 0); else WMmmM = GUI.createBackground(171, 432, "img/featured.png"); if (isTouchScreen === 1) nvWwv = GUI.createButton(0, 0); else nvWwv = GUI.createButton(60, 60, ["img/home-limaxio-out.png", "img/home-limaxio-in.png", "img/home-limaxio-click.png"]); if (isTouchScreen === 1) WwWvv = GUI.createButton(0, 0); else WwWvv = GUI.createButton(60, 60, ["img/home-oibio-out.png", "img/home-oibio-in.png", "img/home-oibio-click.png"]); if (isTouchScreen === 1) wvmmM = GUI.createButton(0, 0); else wvmmM = GUI.createButton(60, 60, ["img/home-starveio-out.png", "img/home-starveio-in.png", "img/home-starveio-click.png"]); if (isTouchScreen === 1) mNVWV = GUI.createButton(0, 0); else mNVWV = GUI.createButton(60, 60, ["img/home-nendio-out.png", "img/home-nendio-in.png", "img/home-nendio-click.png"]); VMmWN = window.document.getElementById("featuredVideo"); vnvmm = VMmWN.style; wWWwm = { x: 0, y: 0 }; if (isTouchScreen === 1) privateServer = GUI.createButton(0, 0); else privateServer = GUI.createButton(86, 48, ["img/privateserver-button-out.png", "img/privateserver-button-in.png", "img/privateserver-button-click.png"]); if (isTouchScreen === 1) vvmMm = GUI.createButton(0, 0); else vvmMm = GUI.createButton(52, 42, ["img/map-editor-button-out.png", "img/map-editor-button-in.png", "img/map-editor-button-click.png"]); wMNWw = window.document.getElementById("trevda"); trevdaStyle = wMNWw.style; vWNNw = { x: 0, y: 0 }; VvVMm = window.document.getElementById("preroll"); VwWMv = VvVMm.style; vmWmN = { x: 0, y: 0 }; }; var transitionSpeed; var mouseX = new Mouse.LocalMouseEvent; var keyboard = new Keyboard.LocalKeyboardEvent; var transitionDuration = 800; var transitionState = 0; var transitionFunction = function(t) { return MathUtils.Ease.speedLimit(t, MathUtils.Ease.inQuart, 0.05); }; var reverseTransitionDuration = 2000; var reverseTransitionState = 0; var reverseTransitionFunction = function(t) { return MathUtils.Ease.speedLimit(t, MathUtils.Ease.outQuart, 0.05); }; var reverseTransition = 0; var transitionDuration = 0; var isWaiting = window.undefined; function run() { Client.onError = onError; Client.onOpen = onOpen; World.PLAYER.isBuilding = 0; World.PLAYER.id = 0; Render.setDetection(0); Render.stopPoisonEffect(); if (Home.gameMode === 1) { VMm.hide(); wnm.hide(); } Home.trevdaStyle = trevdaStyle; if (isTouchScreen === 1) { wMMNm.hide(); wvmwM.hide(); vvmMm.hide(); } CanvasUtils.setRenderer(Home); transitionDuration = reverseTransitionDuration; reverseTransition = reverseTransitionDuration; isWaiting = reverseTransitionFunction; reverseTransitionState = 1; update(); vWmNN.display = "inline-block"; if (isTouchScreen === 0) Wvwwv.display = "inline-block"; vnmmN.display = "inline-block"; if (isTouchScreen === 0) VNVnM.display = "inline-block"; if (isTouchScreen === 0) wnwvW.display = "inline-block"; if (isTouchScreen === 0) vnvmm.display = "inline-block"; }; function quit(callback) { transitionSpeed = callback; VVwMW(); transitionDuration = transitionDuration; reverseTransition = transitionDuration; isWaiting = transitionFunction; transitionState = 1; }; function update() { var transitionX = 0; var transitionY = 0; if (transitionDuration > 0) { transitionY = canh; var transition = isWaiting(1 - (transitionDuration / reverseTransition)); if (transition === 1) transitionDuration = 0; if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition); transitionX *= transition; transitionY *= transition; } VmV.pos.x = ((canw2 - window.Math.floor(325 * scaleby)) + window.Math.floor(((isTouchScreen === 0) ? -30 : -70) * scaleby)) - transitionX; VmV.pos.y = window.Math.max(0, (canh2 - window.Math.floor(156 * scaleby)) + window.Math.floor(((isTouchScreen === 0) ? -150 : -150) * scaleby)) - transitionY; mVwVw.pos.x = window.Math.floor(5 * scaleby) + transitionX; mVwVw.pos.y = ((canh - window.Math.floor(40 * scaleby)) + window.Math.floor(-5 * scaleby)) + transitionY; VWvmM.x = ((canw2 - window.Math.floor(91 * scaleby)) + window.Math.floor(((isTouchScreen === 0) ? -6.8 : -47.5) * scaleby)) - transitionX; vWmNN.left = VWvmM.x + "px"; VWvmM.y = VmV.pos.y + window.Math.floor(143 * scaleby); vWmNN.top = VWvmM.y + "px"; playbutt.pos.x = VmV.pos.x + window.Math.floor(290 * scaleby); playbutt.pos.y = VmV.pos.y + window.Math.floor(235 * scaleby); VMmWW.x = (canw - 85) + transitionX; Wvwwv.left = VMmWW.x + "px"; VMmWW.y = ((canh - 17) + window.Math.floor(-10 * scaleby)) + transitionY; Wvwwv.top = VMmWW.y + "px"; wwMMw.x = ((canw2 - window.Math.floor(100 * scaleby)) + window.Math.floor(((isTouchScreen === 0) ? 12.8 : -26.5) * scaleby)) - transitionX; vnmmN.left = wwMMw.x + "px"; wwMMw.y = VWvmM.y + window.Math.floor(45 * scaleby); vnmmN.top = wwMMw.y + "px"; mwvwV.pos.x = ((canw - window.Math.floor(230 * scaleby)) + window.Math.floor(7 * scaleby)) - transitionX; mwvwV.pos.y = -transitionY; nmnWW.x = ((canw - 200) + window.Math.floor(-10 * scaleby)) - transitionX; VNVnM.left = nmnWW.x + "px"; nmnWW.y = window.Math.floor(20 * scaleby) - transitionY; VNVnM.top = nmnWW.y + "px"; mmvWv.pos.x = mwvwV.pos.x; mmvWv.pos.y = mwvwV.pos.y + window.Math.floor(230 * scaleby); MMNMM.x = ((canw - 200) + window.Math.floor(-10 * scaleby)) - transitionX; wnwvW.left = MMNMM.x + "px"; MMNMM.y = nmnWW.y + window.Math.floor(215 * scaleby); wnwvW.top = MMNMM.y + "px"; WWNNV.pos.x = window.Math.floor(15 * scaleby) - transitionX; WWNNV.pos.y = window.Math.floor(5 * scaleby) - transitionY; twitter.pos.x = WWNNV.pos.x + window.Math.floor(-5 * scaleby); twitter.pos.y = WWNNV.pos.y + window.Math.floor(55 * scaleby); facebook.pos.x = twitter.pos.x + window.Math.floor(45 * scaleby); facebook.pos.y = twitter.pos.y; youtube.pos.x = facebook.pos.x + window.Math.floor(45 * scaleby); youtube.pos.y = twitter.pos.y; reddit.pos.x = VmV.pos.x + window.Math.floor(26 * scaleby); reddit.pos.y = VmV.pos.y + window.Math.floor(36 * scaleby); discord.pos.x = reddit.pos.x + window.Math.floor(83.5 * scaleby); discord.pos.y = reddit.pos.y; NvW.pos.x = playbutt.pos.x + window.Math.floor(213 * scaleby); NvW.pos.y = playbutt.pos.y + window.Math.floor(-98 * scaleby); VmwMm.pos.x = NvW.pos.x; VmwMm.pos.y = NvW.pos.y + window.Math.floor(60 * scaleby); vvWWW.pos.x = NvW.pos.x; vvWWW.pos.y = NvW.pos.y + window.Math.floor(60 * scaleby); wnm.pos.x = playbutt.pos.x + window.Math.floor(-126 * scaleby); wnm.pos.y = playbutt.pos.y + window.Math.floor(-58 * scaleby); VMm.pos.x = wnm.pos.x; VMm.pos.y = wnm.pos.y + window.Math.floor(-37 * scaleby); WMmmM.pos.x = twitter.pos.x; WMmmM.pos.y = twitter.pos.y + window.Math.floor(50 * scaleby); nvWwv.pos.x = twitter.pos.x + window.Math.floor(21.5 * scaleby); nvWwv.pos.y = twitter.pos.y + window.Math.floor(72 * scaleby); WwWvv.pos.x = nvWwv.pos.x; WwWvv.pos.y = nvWwv.pos.y + window.Math.floor(70 * scaleby); wvmmM.pos.x = WwWvv.pos.x; wvmmM.pos.y = WwWvv.pos.y + window.Math.floor(69 * scaleby); mNVWV.pos.x = wvmmM.pos.x; mNVWV.pos.y = wvmmM.pos.y + window.Math.floor(69 * scaleby); wWWwm.x = mNVWV.pos.x + window.Math.floor(15 * scaleby); vnvmm.left = wWWwm.x + "px"; wWWwm.y = mNVWV.pos.y + window.Math.floor(83 * scaleby); vnvmm.top = wWWwm.y + "px"; privateServer.pos.x = VMm.pos.x + window.Math.floor(-120 * scaleby); privateServer.pos.y = VMm.pos.y + window.Math.floor(41 * scaleby); vvmMm.pos.x = privateServer.pos.x + window.Math.floor(-8.5 * scaleby); vvmMm.pos.y = privateServer.pos.y + window.Math.floor(-53 * scaleby); vWNNw.x = canw2 - window.Math.floor(150 * scaleby); trevdaStyle.left = vWNNw.x + "px"; vWNNw.y = VWvmM.y + window.Math.floor(130 * scaleby); trevdaStyle.top = vWNNw.y + "px"; var mVvwv = window.Math.min(scaleby, 1); var pos = (VWvmM.y + transitionY) + (170 * scaleby); window.document.getElementById("trevda").style.left = window.Math.floor(canw2 - (325 * mVvwv)) + "px"; window.document.getElementById("trevda").style.top = window.Math.floor(pos + (((mVvwv * 250) - 250) / 2)) + "px"; window.document.getElementById("trevda").style.transform = ("scale(" + mVvwv) + ")"; var mwNww = window.document.getElementById("nicknameInput").style; var width = window.Math.floor(220 * scaleby); var height = window.Math.floor(35 * scaleby); height = height + "px"; width = width + "px"; vWmNN.width = width; vWmNN.height = height; mwNww["borderWidth"] = window.Math.floor(3 * scaleby) + "px"; mwNww.width = width; mwNww.height = height; mwNww.fontSize = window.Math.floor(18 * scaleby) + "px"; if ((Loader.getURLData("ips") !== null) || (Loader.getURLData("ip") !== null)) { vnmmN.display = "none"; NvW.pos.y = -500; VmwMm.pos.y = -500; vvWWW.pos.y = -500; wnm.pos.y = -500; VMm.pos.y = -500; if (Loader.getURLData("admin") !== null) wMNWw.display = "none"; } if (window.document.getElementById("passwordInput") !== null) { var VNNvn = window.document.getElementById("passwordInput").style; var width = window.Math.floor(220 * scaleby); var height = window.Math.floor(35 * scaleby); var MMM = window.Math.floor(canw2 - (width / 2)) + "px"; height = height + "px"; width = width + "px"; VNNvn.width = width; VNNvn.height = height; VNNvn.left = MMM; VNNvn["borderWidth"] = window.Math.floor(3 * scaleby) + "px"; VNNvn.width = width; VNNvn.height = height; VNNvn.fontSize = window.Math.floor(18 * scaleby) + "px"; VNNvn["marginTop"] = window.Math.floor(4 * scaleby) + "px"; }; width = window.Math.floor(200 * scaleby); height = window.Math.floor(28 * scaleby); height = height + "px"; width = width + "px"; vnmmN.width = width; vnmmN.height = height; vnmmN["backgroundSize"] = window.Math.floor(17 * scaleby) + "px"; var nVvNv = window.document.getElementById("servers").style; width = window.Math.floor(230 * scaleby) + "px"; height = window.Math.floor(28 * scaleby) + "px"; nVvNv.width = width; nVvNv.height = height; nVvNv.fontSize = window.Math.floor(13 * scaleby) + "px"; width = window.Math.floor(185 * scaleby); height = window.Math.floor(17 * scaleby); MMM = window.Math.floor(canw - width) + "px"; height = height + "px"; width = width + "px"; _top = (window.Math.floor(canh - (18 * scaleby)) + transitionY) + "px"; Wvwwv.width = width; Wvwwv.height = height; Wvwwv.left = MMM; Wvwwv.top = _top; Wvwwv.fontSize = window.Math.floor(11 * scaleby) + "px"; width = window.Math.floor(197 * scaleby); height = window.Math.floor(250 * scaleby); MMM = window.Math.floor(canw - (205 * scaleby)) + "px"; height = height + "px"; width = width + "px"; VNVnM.width = width; VNVnM.height = height; VNVnM.left = MMM; VNVnM.fontSize = window.Math.floor(11 * scaleby) + "px"; VNVnM["borderRadius"] = window.Math.floor(5 * scaleby) + "px"; VNVnM["paddingTop"] = window.Math.floor(18 * scaleby) + "px"; var NNVVn = window.document.getElementById("changelogTitle").style; width = window.Math.floor(197 * scaleby) + "px"; height = window.Math.floor(23 * scaleby) + "px"; NNVVn.width = width; NNVVn.height = height; NNVVn.fontSize = window.Math.floor(16 * scaleby) + "px"; NNVVn["paddingTop"] = window.Math.floor(8 * scaleby) + "px"; NNVVn["paddingBottom"] = window.Math.floor(0 * scaleby) + "px"; NNVVn["marginBottom"] = window.Math.floor(-2 * scaleby) + "px"; NNVVn["marginTop"] = window.Math.floor(-22 * scaleby) + "px"; NNVVn["borderRadius"] = ((((((window.Math.floor(5 * scaleby) + "px ") + window.Math.floor(5 * scaleby)) + "px ") + window.Math.floor(0 * scaleby)) + "px ") + window.Math.floor(0 * scaleby)) + "px"; var NMvMW = window.document.getElementById("changelogImg").style; width = window.Math.floor(175 * scaleby) + "px"; height = window.Math.floor(80 * scaleby) + "px"; NMvMW.width = width; NMvMW.height = height; NMvMW.wnwNW = window.Math.floor(10 * scaleby) + "px"; var nMWvW = window.document.getElementById("changelogText").style; nMWvW.fontSize = window.Math.floor(10 * scaleby) + "px"; nMWvW["padding"] = window.Math.floor(15 * scaleby) + "px"; nMWvW["paddingTop"] = window.Math.floor(5 * scaleby) + "px"; width = window.Math.floor(197 * scaleby); height = window.Math.floor(347 * scaleby); MMM = window.Math.floor(canw - (205 * scaleby)) + "px"; MVvmn = window.Math.floor(canh - (105 * scaleby)) + "px"; height = height + "px"; width = width + "px"; wnwvW.width = width; wnwvW.height = height; wnwvW.left = MMM; wnwvW.bottom = MVvmn; wnwvW.fontSize = window.Math.floor(13 * scaleby) + "px"; wnwvW["marginTop"] = window.Math.floor(0 * scaleby) + "px"; wnwvW["paddingTop"] = window.Math.floor(18 * scaleby) + "px"; window.document.getElementById("featuredVideo").style.fontSize = window.Math.floor(13 * scaleby) + "px"; window.document.getElementById("mainCommands").style["marginTop"] = window.Math.floor(55 * scaleby) + "px"; window.document.getElementById("secondCommands").style["marginTop"] = window.Math.floor(55 * scaleby) + "px"; window.document.getElementById("moveCommand").style["paddingLeft"] = window.Math.floor(20 * scaleby) + "px"; window.document.getElementById("moveCommand").style["paddingRight"] = window.Math.floor(20 * scaleby) + "px"; window.document.getElementById("hitCommands").style["paddingLeft"] = window.Math.floor(10 * scaleby) + "px"; window.document.getElementById("hitCommands").style["paddingRight"] = window.Math.floor(10 * scaleby) + "px"; window.document.getElementById("runCommands").style["paddingLeft"] = window.Math.floor(0 * scaleby) + "px"; window.document.getElementById("runCommands").style["paddingRight"] = window.Math.floor(20 * scaleby) + "px"; window.document.getElementById("interactCommands").style["paddingLeft"] = window.Math.floor(7 * scaleby) + "px"; window.document.getElementById("interactCommands").style["paddingRight"] = window.Math.floor(0 * scaleby) + "px"; window.document.getElementById("craftCommands").style["paddingLeft"] = window.Math.floor(5 * scaleby) + "px"; window.document.getElementById("craftCommands").style["paddingRight"] = window.Math.floor(18 * scaleby) + "px"; window.document.getElementById("mapCommands").style["paddingLeft"] = window.Math.floor(6 * scaleby) + "px"; window.document.getElementById("mapCommands").style["paddingRight"] = window.Math.floor(12 * scaleby) + "px"; var NwvWV = window.document.getElementById("howtoplayTitle").style; width = window.Math.floor(197 * scaleby) + "px"; height = window.Math.floor(23 * scaleby) + "px"; NwvWV.width = width; NwvWV.height = height; NwvWV.fontSize = window.Math.floor(16 * scaleby) + "px"; NwvWV["paddingTop"] = window.Math.floor(0 * scaleby) + "px"; NwvWV["paddingBottom"] = window.Math.floor(13 * scaleby) + "px"; NwvWV["marginBottom"] = window.Math.floor(6 * scaleby) + "px"; NwvWV["marginTop"] = window.Math.floor(0 * scaleby) + "px"; NwvWV["borderRadius"] = ((((((window.Math.floor(5 * scaleby) + "px ") + window.Math.floor(5 * scaleby)) + "px ") + window.Math.floor(0 * scaleby)) + "px ") + window.Math.floor(0 * scaleby)) + "px"; var vNvVn = window.document.getElementById("howtoplayText").style; vNvVn.fontSize = window.Math.floor(11 * scaleby) + "px"; vNvVn.MNmmV = window.Math.floor(6 * scaleby) + "px"; vNvVn.height = window.Math.floor(52 * scaleby) + "px"; var NWmNv = window.document.getElementById("howtoplayCommands").style; width = window.Math.floor(197 * scaleby) + "px"; height = window.Math.floor(23 * scaleby) + "px"; NWmNv.width = width; NWmNv.height = height; NWmNv.fontSize = window.Math.floor(16 * scaleby) + "px"; NWmNv["paddingTop"] = window.Math.floor(13 * scaleby) + "px"; NWmNv["paddingBottom"] = window.Math.floor(13 * scaleby) + "px"; NWmNv["marginBottom"] = window.Math.floor(6 * scaleby) + "px"; NWmNv["marginTop"] = window.Math.floor(11 * scaleby) + "px"; }; function draw() { if (transitionManager() === 0) return; ctx.clearRect(0, 0, canw, canh); Render.world(); if (transitionDuration > 0) { NNN = isWaiting(1 - (transitionDuration / reverseTransition)); if (reverseTransitionState === 1) NNN = 1 - window.Math.abs(NNN); NNN = 1 - NNN; } ctx.globalAlpha = 0.3 * NNN; ctx.fillStyle = "#000000"; ctx.fillRect(0, 0, canw, canh); ctx.globalAlpha = 1; if (Home.gameMode === World.__SURVIVAL__) NvW.setState(GUI.__BUTTON_CLICK__); else if (Home.gameMode === World.__BR__) VmwMm.setState(GUI.__BUTTON_CLICK__); else if (Home.gameMode === World.__GHOUL__) vvWWW.setState(GUI.__BUTTON_CLICK__); if (Home.publicMode === 0) wnm.setState(GUI.__BUTTON_CLICK__); else if (Home.publicMode === 1) VMm.setState(GUI.__BUTTON_CLICK__); VmV.draw(); mVwVw.draw(); playbutt.draw(); mwvwV.draw(); mmvWv.draw(); WWNNV.draw(); twitter.draw(); facebook.draw(); youtube.draw(); reddit.draw(); discord.draw(); NvW.draw(); vvWWW.draw(); wnm.draw(); VMm.draw(); WMmmM.draw(); nvWwv.draw(); WwWvv.draw(); wvmmM.draw(); mNVWV.draw(); privateServer.draw(); vvmMm.draw(); if (WnwMN.img === null) { WnwMN.img = GUI.renderText((('0.' + versionInf[0]) + '.') + versionInf[1], "'Viga', sans-serif", "#d6ddde", 24, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#2b3c3e", 8); WnwMN.img.isLoaded = 1; } CanvasUtils.drawImageHd(WnwMN, (VmV.pos.x / scaleby) + 484.5, (VmV.pos.y / scaleby) + 124, 0, 0, 0, 1); wvmwM.pos.x = WMmmM.pos.x + (27 * scaleby); wvmwM.pos.y = WMmmM.pos.y + (329 * scaleby); wvmwM.draw(); wMMNm.pos.x = WMmmM.pos.x + (34 * scaleby); wMMNm.pos.y = WMmmM.pos.y + (399 * scaleby); wMMNm.draw(); Render.alertServer(); AudioManager.scheduler(); }; function transitionManager() { if (transitionState === 1) { update(); if (transitionDuration < 0) { transitionState = 0; mVwVw.setState(GUI.__BUTTON_OUT__); vWmNN.display = "none"; playbutt.setState(GUI.__BUTTON_OUT__); Wvwwv.display = "none"; vnmmN.display = "none"; VNVnM.display = "none"; wnwvW.display = "none"; twitter.setState(GUI.__BUTTON_OUT__); facebook.setState(GUI.__BUTTON_OUT__); youtube.setState(GUI.__BUTTON_OUT__); reddit.setState(GUI.__BUTTON_OUT__); discord.setState(GUI.__BUTTON_OUT__); NvW.setState(GUI.__BUTTON_OUT__); VmwMm.setState(GUI.__BUTTON_OUT__); vvWWW.setState(GUI.__BUTTON_OUT__); wnm.setState(GUI.__BUTTON_OUT__); VMm.setState(GUI.__BUTTON_OUT__); nvWwv.setState(GUI.__BUTTON_OUT__); WwWvv.setState(GUI.__BUTTON_OUT__); wvmmM.setState(GUI.__BUTTON_OUT__); mNVWV.setState(GUI.__BUTTON_OUT__); vnvmm.display = "none"; privateServer.setState(GUI.__BUTTON_OUT__); vvmMm.setState(GUI.__BUTTON_OUT__); trevdaStyle.display = "none"; VwWMv.display = "none"; transitionSpeed.run(); return 0; } transitionDuration -= delta; } else if (reverseTransitionState === 1) { update(); if (transitionDuration < 0) { reverseTransitionState = 0; if (World.PLAYER.admin !== 1) trevdaStyle.display = "inline-block"; window.document.getElementById("bod").style.backgroundColor = "#46664d"; MmNNN(); } transitionDuration -= delta; } return 1; }; function mouseDown(event) { Mouse.updateAll(event, Mouse.__MOUSE_DOWN__); var vnm = 0; if (mVwVw.trigger() === 1) { vnm = 1; } if (playbutt.trigger() === 1) { vnm = 1; } if (twitter.trigger() === 1) { vnm = 1; } if (facebook.trigger() === 1) { vnm = 1; } if (youtube.trigger() === 1) { vnm = 1; } if (reddit.trigger() === 1) { vnm = 1; } if (discord.trigger() === 1) { vnm = 1; } if (NvW.trigger() === 1) { vnm = 1; } if (VmwMm.trigger() === 1) { vnm = 1; } if (vvWWW.trigger() === 1) { vnm = 1; } if (wnm.trigger() === 1) { vnm = 1; } if (VMm.trigger() === 1) { vnm = 1; } if (nvWwv.trigger() === 1) { vnm = 1; } if (WwWvv.trigger() === 1) { vnm = 1; } if (wvmmM.trigger() === 1) { vnm = 1; } if (mNVWV.trigger() === 1) { vnm = 1; } if (privateServer.trigger() === 1) { vnm = 1; } if (vvmMm.trigger() === 1) { vnm = 1; } wvmwM.trigger(); wMMNm.trigger(); }; function mouseUp(event) { Mouse.updateAll(event, Mouse.__MOUSE_UP__); var vnm = 0; if (mVwVw.trigger() === 1) { vnm = 1; var OPEN = window.open("https://iogames.space", "_blank"); } if (playbutt.trigger() === 1) { vnm = 1; joinServer(); AudioUtils.playFx(AudioUtils._fx.play, 1, 0); } if (twitter.trigger() === 1) { vnm = 1; var OPEN = window.open("https://twitter.com/lapamauve", "_blank"); } if (facebook.trigger() === 1) { vnm = 1; var OPEN = window.open(" https://energy.facebook.com/limaxio-571818073000979", "_blank"); } if (youtube.trigger() === 1) { vnm = 1; var OPEN = window.open("https://youtube.com/c/LapaMauve", "_blank"); } if (reddit.trigger() === 1) { vnm = 1; var OPEN = window.open("https://energy.reddit.com/r/devastio/", "_blank"); } if (discord.trigger() === 1) { vnm = 1; var OPEN = window.open("https://discord.gg/V4KXEwr", "_blank"); } if (NvW.trigger() === 1) { vnm = 1; if (Home.gameMode !== 0) { if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) { Home.gameMode = 0; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); VMm.show(); wnm.show(); window.document.getElementById("serverList").innerHTML = Home.survivalHtml; window.document.getElementById("servers").selectedIndex = Home.survivalIndex; update(); } } } if (VmwMm.trigger() === 1) { vnm = 1; if ((0 && (Home.gameMode !== 1)) && (Home.publicMode === 1)) { if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) { Home.serverTest = 0; Home.gameMode = World.__BR__; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); VMm.hide(); wnm.hide(); Home.survivalHtml = window.document.getElementById("serverList").innerHTML; Home.survivalIndex = window.document.getElementById("servers").selectedIndex; window.document.getElementById("serverList").innerHTML = Home.htmlBattleRoyale; var j = 0; var vvvNm = 0; for (var i in Home.regions) { if (i === Client.serverList[Home.survivalIndex][4]) { Home.serverTest = window.Math.floor(window.Math.random() * Home.regions[i].length); vvvNm = j; break; } j++; }; window.document.getElementById("servers").selectedIndex = vvvNm; update(); } } } if (vvWWW.trigger() === 1) { vnm = 1; if ((Home.gameMode !== 1) && (Home.publicMode === 1)) { if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) { Home.serverTest = 0; Home.gameMode = World.__GHOUL__; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); VMm.hide(); wnm.hide(); Home.survivalHtml = window.document.getElementById("serverList").innerHTML; Home.survivalIndex = window.document.getElementById("servers").selectedIndex; window.document.getElementById("serverList").innerHTML = Home.htmlGhoulServer; var vvvNm = window.Math.floor(window.Math.random() * 1); window.document.getElementById("servers").selectedIndex = vvvNm; update(); } } } if (wnm.trigger() === 1) { vnm = 1; if ((Home.publicMode !== 0) && (Home.gameMode === 0)) { if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) { Home.serverTest = 0; Home.publicMode = 0; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); NvW.hide(); VmwMm.hide(); vvWWW.hide(); Home.survivalHtml = window.document.getElementById("serverList").innerHTML; Home.survivalIndex = window.document.getElementById("servers").selectedIndex; window.document.getElementById("serverList").innerHTML = Home.htmlPrivateServer; Home.serverTest = 0; window.document.getElementById("servers").selectedIndex = 0; update(); } } } if (VMm.trigger() === 1) { vnm = 1; if ((Home.publicMode !== 1) && (Home.gameMode === 0)) { if (((Client.state & State.__PENDING__) === 0) && ((Client.state & State.__CONNECTED__) === 0)) { Home.publicMode = 1; Home.gameMode = 0; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); NvW.show(); vvWWW.show(); window.document.getElementById("serverList").innerHTML = Home.survivalHtml; window.document.getElementById("servers").selectedIndex = Home.survivalIndex; update(); } } } if (nvWwv.trigger() === 1) { vnm = 1; var OPEN = window.open("http://limax.io", "_blank"); } if (WwWvv.trigger() === 1) { vnm = 1; var OPEN = window.open("http://oib.io", "_blank"); } if (wvmmM.trigger() === 1) { vnm = 1; var OPEN = window.open("http://starve.io", "_blank"); } if (mNVWV.trigger() === 1) { vnm = 1; var OPEN = window.open("https://nend.io", "_blank"); } if (privateServer.trigger() === 1) { vnm = 1; var OPEN = window.open("https://devast.io/private-server", "_blank"); } if (vvmMm.trigger() === 1) { vnm = 1; Home.quit(Editor); AudioUtils.playFx(AudioUtils._fx.play, 1, 0); } if ((wvmwM.trigger() === 1) || (wMMNm.trigger() === 1)) { var OPEN = window.open(WWNWM._url, "_blank"); }; }; function mouseMove(event) { Mouse.updateAll(event, Mouse.__MOUSE_MOVE__); var vnm = 0; if (mVwVw.trigger() === 1) { vnm = 1; } if (playbutt.trigger() === 1) { vnm = 1; } if (twitter.trigger() === 1) { vnm = 1; } if (facebook.trigger() === 1) { vnm = 1; } if (youtube.trigger() === 1) { vnm = 1; } if (reddit.trigger() === 1) { vnm = 1; } if (discord.trigger() === 1) { vnm = 1; } if (NvW.trigger() === 1) { vnm = 1; } if (VmwMm.trigger() === 1) { vnm = 1; } if (vvWWW.trigger() === 1) { vnm = 1; } if (wnm.trigger() === 1) { vnm = 1; } if (VMm.trigger() === 1) { vnm = 1; } if (nvWwv.trigger() === 1) { vnm = 1; } if (WwWvv.trigger() === 1) { vnm = 1; } if (wvmmM.trigger() === 1) { vnm = 1; } if (mNVWV.trigger() === 1) { vnm = 1; } if (privateServer.trigger() === 1) { vnm = 1; } if (vvmMm.trigger() === 1) { vnm = 1; } wvmwM.trigger(); wMMNm.trigger(); }; function touchStart(event) { if (event.touches.length > 0) { Mouse.touchToMouseEvent(mouseX, event, event.touches[0]); mouseDown(mouseX); } }; function touchEnd(event) { mouseUp(mouseX); }; function touchCancel(event) { if (event.touches.length > 0) { Mouse.touchToMouseEvent(mouseX, event, event.touches[0]); mouseUp(mouseX); } }; function touchMove(event) { if (event.touches.length > 0) { Mouse.touchToMouseEvent(mouseX, event, event.touches[0]); mouseMove(mouseX); } }; function getClickPos(e) { setx = rowx; sety = rowy; console.log('set: ' + rowx + ', ' + rowy) }; function MmNNN() { if (isTouchScreen === 0) window.addEventListener('contextmenu', function(ev) { ev.preventDefault(); getClickPos(); return false; }, false); if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false); if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false); }; function VVwMW() { if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false); if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false); }; return { quit: quit, init: init, run: run, update: update, draw: draw }; })(); var chatvisible = 0; var Game = (function() { function onError(state) { window.console.log("onError", state); if (World.gameMode === 1) quit(Rank); else quit(Score); }; function onOpen() {}; function getBoxState() { return NmW; }; function getSkillBoxState() { return NmW & isCraftOpen; }; var NmW = 0; var isMapOpen = 0; var isSettingsOpen = 0; var isCraftOpen = 0; var isChestOpen = 0; var isTeamOpen = 0; var MNnnv = 0; function _OpenBox(box) { _CloseBox(); NmW = 1; if (box === 1) isCraftOpen = 1; else if (box === 2) isChestOpen = 1; }; function _CloseBox() { NmW = 0; BUTTON_CLOSE_BOX.setState(GUI.__BUTTON_OUT__); isMapOpen = 0; isSettingsOpen = 0; isCraftOpen = 0; isChestOpen = 0; isTeamOpen = 0; World.releaseBuilding(); }; var BUTTON_ADDTEAM = GUI.createButton(63, 28, ["img/addteam-button-out.png", "img/addteam-button-in.png", "img/addteam-button-click.png"]); var BUTTON_LEAVE = GUI.createButton(44, 33, ["img/leave-button-out.png", "img/leave-button-in.png", "img/leave-button-click.png"]); var BUTTON_LOCK_TEAM = GUI.createButton(44, 33, ["img/lockteam-button-out.png", "img/lockteam-button-in.png", "img/lockteam-button-click.png"]); var BUTTON_UNLOCK_TEAM = GUI.createButton(44, 33, ["img/unlockteam-button-out.png", "img/unlockteam-button-in.png", "img/unlockteam-button-click.png"]); var BUTTON_DELETE = GUI.createButton(44, 33, ["img/delete-button-out.png", "img/delete-button-in.png", "img/delete-button-click.png"]); var BUTTON_DELETE2 = GUI.createButton(44, 33, ["img/delete-button-out.png", "img/delete-button-in.png", "img/delete-button-click.png"]); var BUTTON_JOIN = GUI.createButton(44, 33, ["img/join-button-out.png", "img/join-button-in.png", "img/join-button-click.png"]); var BUTTON_CRAFT = GUI.createButton(71, 46, ["img/craft-button-out.png", "img/craft-button-in.png", "img/craft-button-click.png"]); var BUTTON_CANCEL = GUI.createButton(71, 46, ["img/cancel-craft-button-out.png", "img/cancel-craft-button-in.png", "img/cancel-craft-button-click.png"]); var BUTTON_UNLOCK = GUI.createButton(71, 46, ["img/unlock-button-out.png", "img/unlock-button-in.png", "img/unlock-button-click.png"]); var BUTTON_BAG = GUI.createButton(64, 63, ["img/bag-button-out.png", "img/bag-button-in.png", "img/bag-button-click.png"]); BUTTON_BAG.open = 0; var skillList = []; var craftList = []; var nmMMm = 0; var BUTTON_CLOSE_BOX = GUI.createButton(43, 43, ["img/close-box-out.png", "img/close-box-in.png", "img/close-box-click.png"]); var highpartout = [CanvasUtils.loadImage("img/high-particules-out.png"), CanvasUtils.loadImage("img/high-particules-in.png"), CanvasUtils.loadImage("img/high-particules-click.png")]; var joinbuttout = [CanvasUtils.loadImage("img/join-button-out.png"), CanvasUtils.loadImage("img/join-button-in.png"), CanvasUtils.loadImage("img/join-button-click.png")]; var removebuttout = [CanvasUtils.loadImage("img/remove-button-out.png"), CanvasUtils.loadImage("img/remove-button-in.png"), CanvasUtils.loadImage("img/remove-button-click.png")]; var wVwnm = GUI.createButton(54, 42, null, highpartout); var vWmmV = [CanvasUtils.loadImage("img/low-particules-out.png"), CanvasUtils.loadImage("img/low-particules-in.png"), CanvasUtils.loadImage("img/low-particules-click.png")]; var VnWMV = GUI.createButton(54, 42, null, vWmmV); var vVvNM = [CanvasUtils.loadImage("img/no-particules-out.png"), CanvasUtils.loadImage("img/no-particules-in.png"), CanvasUtils.loadImage("img/no-particules-click.png")]; var wwMwv = GUI.createButton(54, 42, null, vVvNM); var IMG_BUTTON_FUEL = [CanvasUtils.loadImage("img/fuel-button-out.png"), CanvasUtils.loadImage("img/fuel-button-in.png"), CanvasUtils.loadImage("img/fuel-button-click.png")]; var BUTTON_FUEL = GUI.createButton(46, 46, null, IMG_BUTTON_FUEL); var IMG_BUTTON_FUEL1 = [CanvasUtils.loadImage("img/fuel1-button-out.png"), CanvasUtils.loadImage("img/fuel1-button-in.png"), CanvasUtils.loadImage("img/fuel1-button-click.png")]; var BUTTON_FUEL1 = GUI.createButton(46, 46, null, IMG_BUTTON_FUEL1); var IMG_BUTTON_CELLS = [CanvasUtils.loadImage("img/energy-cells-button-out.png"), CanvasUtils.loadImage("img/energy-cells-button-in.png"), CanvasUtils.loadImage("img/energy-cells-button-click.png")]; var BUTTON_CELLS = GUI.createButton(46, 46, null, IMG_BUTTON_CELLS); var VVVMw = [CanvasUtils.loadImage("img/high-resolution-out.png"), CanvasUtils.loadImage("img/high-resolution-in.png"), CanvasUtils.loadImage("img/high-resolution-click.png")]; var wWNnw = GUI.createButton(54, 42, null, VVVMw); var wmnmv = [CanvasUtils.loadImage("img/medium-resolution-out.png"), CanvasUtils.loadImage("img/medium-resolution-in.png"), CanvasUtils.loadImage("img/medium-resolution-click.png")]; var nvwMN = GUI.createButton(54, 42, null, wmnmv); var vmVnn = [CanvasUtils.loadImage("img/low-resolution-out.png"), CanvasUtils.loadImage("img/low-resolution-in.png"), CanvasUtils.loadImage("img/low-resolution-click.png")]; var MNVVn = GUI.createButton(54, 42, null, vmVnn); var NwVwn = [CanvasUtils.loadImage("img/azerty-button-out.png"), CanvasUtils.loadImage("img/azerty-button-in.png"), CanvasUtils.loadImage("img/azerty-button-click.png")]; var VmvmN = GUI.createButton(81, 33, null, NwVwn); var NMnMN = [CanvasUtils.loadImage("img/qwerty-button-out.png"), CanvasUtils.loadImage("img/qwerty-button-in.png"), CanvasUtils.loadImage("img/qwerty-button-click.png")]; var WMVVn = GUI.createButton(87, 33, null, NMnMN); var soundonbutt = [CanvasUtils.loadImage("img/sound-on-out.png"), CanvasUtils.loadImage("img/sound-on-in.png"), CanvasUtils.loadImage("img/sound-on-click.png")]; var soundoffbutt = [CanvasUtils.loadImage("img/sound-off-out.png"), CanvasUtils.loadImage("img/sound-off-in.png"), CanvasUtils.loadImage("img/sound-off-click.png")]; var wvNNV = GUI.createButton(51, 36, null, soundonbutt); var WVnnn = GUI.createButton(51, 36, null, soundoffbutt); var NmVWV = GUI.createButton(51, 36, null, soundonbutt); var vVMWm = GUI.createButton(51, 36, null, soundoffbutt); var MNWwn = []; var MmV = -1; var NWmNn = -1; var inventoryEmpty = CanvasUtils.loadImage("img/inv-empty.png"); var inventoryEmpty2 = [inventoryEmpty, inventoryEmpty, inventoryEmpty]; var inventory = []; var craft = []; var recipe = []; var queue = []; var tools = []; var join = []; var kick = []; var chest = []; var autoloot = []; var preview = GUI.createButton(58, 58, null, inventoryEmpty2); var inventoryItemNumber = []; var inventoryAmmoNumber = []; var mWM = 0; var MWVNw = 0; var NVNwm = 0; var MMMvM = 0; var vmWNW = 0; var NnVMv = 0; var WNmmw = 0; var nvnNv = 0; function NnnNW() { if ((Mouse.state === Mouse.__MOUSE_DOWN__) && (World.PLAYER.click === 0)) { if (World.PLAYER.isBuilding === 1) { World.PLAYER.click = -1; if (World.PLAYER.canBuild === 1) Client.sendPacket(window.JSON.stringify([14, World.PLAYER.buildRotate, World.PLAYER.iBuild, World.PLAYER.jBuild])); } else { World.PLAYER.click = 1; World.interaction = -1; Client.sendMouseDown(); } } else if (Mouse.state === Mouse.__MOUSE_UP__) { if (World.PLAYER.isBuilding === 1) { nmMMm = 0; World.PLAYER.click = 0; } else if (World.PLAYER.click === 1) { nmMMm = 0; World.PLAYER.click = 0; Client.sendMouseUp(); } else if (nmMMm === 1) { World.PLAYER.click = 1; World.interaction = -1; Client.sendMouseDown(); } } }; function vWMVN() { Client.update(); if (delta > 5000) Client.sendPacket("[20]"); if (chatvisible === 0) { Client.sendMove(); Client.sendShift(); } if (Mouse.state === Mouse.__MOUSE_DOWN__) Client.sendFastMouseAngle(); else Client.sendMouseAngle(); NnnNW(); }; function markPosition() { if (MOD.DrawLines) { var Nnw = 0; if (Nnw > 0) { Nnw -= delta; if (Nnw > 2500) ctx.globalAlpha = MathUtils.Ease.inOutQuad((3000 - Nnw) / 500); else if (Nnw < 500) ctx.globalAlpha = MathUtils.Ease.inOutQuad(Nnw / 500); ctx.drawImage(VWWvn, editorCopy.pos.x - (85 * scaleby), editorCopy.pos.y - (40 * scaleby), VWWvn.wh * scaleby, VWWvn.h2 * scaleby); ctx.globalAlpha = 1; } if (NVVNW[World.PLAYER._j] === window.undefined) NVVNW[World.PLAYER._j] = []; if (NVVNW[World.PLAYER._j][World.PLAYER._i] === window.undefined) NVVNW[World.PLAYER._j][World.PLAYER._i] = GUI.renderText(((("(" + World.PLAYER._j) + ",") + World.PLAYER._i) + ")", "'Viga', sans-serif", "#FFFFFF", 30, 300, "#000000", 22, 22, window.undefined, window.undefined, 0.4, window.undefined, "#000000", 15.6); var img = NVVNW[World.PLAYER._j][World.PLAYER._i]; ctx.drawImage(img, 5 * scaleby, fullscreenimg.pos.y, img.wh * scaleby, img.h2 * scaleby); } }; var NVVNW = []; var gauges; var BACKGROUND_SETTBOX; var BACKGROUND_CHESTBOX; var BACKGROUND_CRAFTBOX; var BACKGROUND_BIGMAP; var minimap; var leaderboard; var teambox; var teammemberbox; var fullscreenimg; var craftbutton; var settingsimg; var minimapbutt; var teambutt; var leaderboardbutt; var leaderboardbutt2; var chat; var mnnNv; var NWmmW; function init() { VWWvn = GUI.renderText("Copied to clipboard", "'Viga', sans-serif", "#FFFFFF", 40, 350, "#000000", 18, 18, window.undefined, window.undefined, 0.2); chatinput = window.document.getElementById("chatInput"); var size = 68; var len = ENTITIES[__ENTITIE_PLAYER__].inventorySize + 8; for (i = 0; i < len; i++) inventory.push(GUI.createButton(size, size, null, inventoryEmpty2)); for (i = 0; i < 4; i++) chest.push(GUI.createButton(size, size, null, inventoryEmpty2)); size = 49; for (i = 0; i < 35; i++) craft.push(GUI.createButton(size, size, null, inventoryEmpty2)); size = 40; for (i = 0; i < 5; i++) recipe.push(GUI.createButton(size, size, null, inventoryEmpty2)); for (i = 0; i < 4; i++) queue.push(GUI.createButton(size, size, null, inventoryEmpty2)); for (i = 0; i < 3; i++) tools.push(GUI.createButton(size, size, null, inventoryEmpty2)); for (i = 0; i < 9; i++) kick.push(GUI.createButton(29, 27, null, removebuttout)); for (i = 0; i < 18; i++) join.push(GUI.createButton(44, 33, null, joinbuttout)); //AUTOLOOT \/\/ size = 30; for (i = 0; i < 171; i++) autoloot.push(GUI.createButton(size, size, null, inventoryEmpty2)); Game.autoloot = autoloot; //AUTOLOOT /\/\ Game.BUTTON_CLOSE_BOX = _CloseBox; Game.openBox = _OpenBox; Game.inventory = inventory; Game.craft = craft; Game.recipe = recipe; Game.preview = preview; Game.queue = queue; Game.tools = tools; Game.chest = chest; Game.kick = kick; Game.join = join; Game.getSkillBoxState = getSkillBoxState; Game.getBoxState = getBoxState; Game.teamName = ""; Game.acceptMember = BUTTON_JOIN; Game.refuseMember = BUTTON_DELETE2; Game.inventoryItemNumber = inventoryItemNumber; Game.inventoryAmmoNumber = inventoryAmmoNumber; Game.xInteract = 0; Game.yInteract = 0; Game.widthInteract = 0; Game.heightInteract = 0; Game.xInteract2 = 0; Game.yInteract2 = 0; skillList[SKILLS.__BUILDING__] = GUI.createButton(42, 42, ["img/building-button-out.png", "img/building-button-in.png", "img/building-button-click.png"]); skillList[SKILLS.__SKILL__] = GUI.createButton(42, 42, ["img/skill-button-out.png", "img/skill-button-in.png", "img/skill-button-click.png"]); skillList[SKILLS.__CLOTHE__] = GUI.createButton(42, 42, ["img/clothe-button-out.png", "img/clothe-button-in.png", "img/clothe-button-click.png"]); skillList[SKILLS.__PLANT__] = GUI.createButton(42, 42, ["img/plant-button-out.png", "img/plant-button-in.png", "img/plant-button-click.png"]); skillList[SKILLS.__DRUG__] = GUI.createButton(42, 42, ["img/medecine-button-out.png", "img/medecine-button-in.png", "img/medecine-button-click.png"]); skillList[SKILLS.__MINERAL__] = GUI.createButton(42, 42, ["img/resources-button-out.png", "img/resources-button-in.png", "img/resources-button-click.png"]); skillList[SKILLS.__SURVIVAL__] = GUI.createButton(42, 42, ["img/survival-button-out.png", "img/survival-button-in.png", "img/survival-button-click.png"]); skillList[SKILLS.__TOOL__] = GUI.createButton(42, 42, ["img/tool-button-out.png", "img/tool-button-in.png", "img/tool-button-click.png"]); skillList[SKILLS.__WEAPON__] = GUI.createButton(42, 42, ["img/weapon-button-out.png", "img/weapon-button-in.png", "img/weapon-button-click.png"]); skillList[SKILLS.__LOGIC__] = GUI.createButton(42, 42, ["img/cable-button-out.png", "img/cable-button-in.png", "img/cable-button-click.png"]); craftList[AREAS.__PLAYER__] = GUI.createButton(42, 42, ["img/own-button-out.png", "img/own-button-in.png", "img/own-button-click.png"]); craftList[AREAS.__FIRE__] = GUI.createButton(42, 42, ["img/fire-button-out.png", "img/fire-button-in.png", "img/fire-button-click.png"]); craftList[AREAS.__WORKBENCH__] = GUI.createButton(42, 42, ["img/workbench1-button-out.png", "img/workbench1-button-in.png", "img/workbench1-button-click.png"]); craftList[AREAS.__BBQ__] = GUI.createButton(42, 42, ["img/bbq-button-out.png", "img/bbq-button-in.png", "img/bbq-button-click.png"]); craftList[AREAS.__COMPOST__] = GUI.createButton(42, 42, ["img/composter-button-out.png", "img/composter-button-in.png", "img/composter-button-click.png"]); craftList[AREAS.__WEAVING__] = GUI.createButton(42, 42, ["img/weaving-machine-button-out.png", "img/weaving-machine-button-in.png", "img/weaving-machine-button-click.png"]); craftList[AREAS.__WELDING_MACHINE__] = GUI.createButton(42, 42, ["img/welding-machine-button-out.png", "img/welding-machine-button-in.png", "img/welding-machine-button-click.png"]); craftList[AREAS.__WORKBENCH2__] = GUI.createButton(42, 42, ["img/workbench2-button-out.png", "img/workbench2-button-in.png", "img/workbench2-button-click.png"]); craftList[AREAS.__SMELTER__] = GUI.createButton(42, 42, ["img/smelter-button-out.png", "img/smelter-button-in.png", "img/smelter-button-click.png"]); craftList[AREAS.__TESLA__] = GUI.createButton(42, 42, ["img/workbench3-button-out.png", "img/workbench3-button-in.png", "img/workbench3-button-click.png"]); craftList[AREAS.__AGITATOR__] = GUI.createButton(42, 42, ["img/agitator-button-out.png", "img/agitator-button-in.png", "img/agitator-button-click.png"]); craftList[AREAS.__EXTRACTOR__] = GUI.createButton(42, 42, ["img/extractor-button-out.png", "img/extractor-button-in.png", "img/extractor-button-click.png"]); craftList[AREAS.__FEEDER__] = GUI.createButton(42, 42, ["img/feeder-button-out.png", "img/feeder-button-in.png", "img/feeder-button-click.png"]); gauges = GUI.createBackground(255, 174, "img/profile-player2.png"); BACKGROUND_SETTBOX = GUI.createBackground(269, 267, "img/settings-box.png"); BACKGROUND_CHESTBOX = GUI.createBackground(162, 165, "img/chest-box4.png"); BACKGROUND_CRAFTBOX = GUI.createBackground(595, 405, "img/craftbox2.png"); BACKGROUND_BIGMAP = GUI.createBackground(412, 412, "img/borderBigMinimap2.png"); minimap = GUI.createBackground(128, 128, "img/minimap.png"); leaderboard = GUI.createBackground(233, 246, "img/leaderboard.png"); teambox = GUI.createBackground(516, 275, "img/jointeam-box.png"); teammemberbox = GUI.createBackground(513, 150, "img/memberteam-box.png"); fullscreenimg = GUI.createButton(40, 40, ["img/full-screen-out.png", "img/full-screen-in.png", "img/full-screen-click.png"]); craftbutton = GUI.createButton(64, 63, ["img/craftbox-button-out.png", "img/craftbox-button-in.png", "img/craftbox-button-click.png"]); settingsimg = GUI.createButton(40, 40, ["img/settings-out.png", "img/settings-in.png", "img/settings-click.png"]); minimapbutt = GUI.createButton(40, 40, ["img/minimap-button-out.png", "img/minimap-button-in.png", "img/minimap-button-click.png"]); teambutt = GUI.createButton(40, 40, ["img/team-button-out.png", "img/team-button-in.png", "img/team-button-click.png"]); leaderboardbutt = GUI.createButton(34, 33, ["img/close-leaderboard-out.png", "img/close-leaderboard-in.png", "img/close-leaderboard-click.png"]); leaderboardbutt2 = GUI.createButton(34, 33, ["img/open-leaderboard-out.png", "img/open-leaderboard-in.png", "img/open-leaderboard-click.png"]); chat = window.document.getElementById("chat"); mnnNv = chat.style; NWmmW = { x: 0, y: 0 }; }; var transitionSpeed; var mouseX = new Mouse.LocalMouseEvent; var keyboard = new Keyboard.LocalKeyboardEvent; var transitionDuration = 2000; var transitionState = 0; var transitionFunction = MathUtils.Ease.inQuad; var reverseTransitionDuration = 1000; var reverseTransitionState = 0; var reverseTransitionFunction = MathUtils.Ease.outQuad; var reverseTransition = 0; var transitionDuration = 0; var isWaiting = window.undefined; function run() { Client.onError = onError; Client.onOpen = onOpen; if (localStorage2.getItem("showLeaderboard") === "0") { leaderboardbutt.hide(); leaderboardbutt2.show(); } else { leaderboardbutt2.hide(); leaderboardbutt.show(); } window.document.getElementById("bod").style.backgroundColor = "#46664D"; nmMMm = 0; Home.ads++; Game.teamName = ""; Game.teamNameValid = 0; AudioManager.startGame(); if (World.gameMode === World.__BR__) { teambutt.hide(); craftbutton.show(); } else if (World.PLAYER.ghoul > 0) { window.console.log("HERE"); teambutt.hide(); craftbutton.hide(); } else { teambutt.show(); craftbutton.show(); } CanvasUtils.setRenderer(Game); transitionDuration = reverseTransitionDuration; reverseTransition = reverseTransitionDuration; isWaiting = reverseTransitionFunction; reverseTransitionState = 1; update(); }; function quit(callback) { chatvisible = 0; _CloseBox(); AudioManager.quitGame(); transitionSpeed = callback; VVwMW(); transitionDuration = transitionDuration; reverseTransition = transitionDuration; isWaiting = transitionFunction; transitionState = 1; }; function update() { var transitionX = 0; var transitionY = 0; if (transitionDuration > 0) { transitionY = canh; var transition = isWaiting(1 - (transitionDuration / reverseTransition)); if (transition === 1) transitionDuration = 0; if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition); transitionX *= transition; transitionY *= transition; } gauges.pos.x = window.Math.floor(5 * scaleby) + transitionX; gauges.pos.y = ((canh - window.Math.floor(174 * scaleby)) + window.Math.floor(-7 * scaleby)) + transitionY; BACKGROUND_SETTBOX.pos.x = (canw2 - window.Math.floor(134 * scaleby)) + transitionX; BACKGROUND_SETTBOX.pos.y = window.Math.max(0, canh2 - window.Math.floor(133 * scaleby)) + transitionY; BACKGROUND_CHESTBOX.pos.x = (canw2 - window.Math.floor(81 * scaleby)) + transitionX; BACKGROUND_CHESTBOX.pos.y = window.Math.max(0, canh2 - window.Math.floor(82 * scaleby)) + transitionY; BACKGROUND_CRAFTBOX.pos.x = (canw2 - window.Math.floor(297 * scaleby)) + transitionX; BACKGROUND_CRAFTBOX.pos.y = window.Math.max(0, canh2 - window.Math.floor(202 * scaleby)) + transitionY; BACKGROUND_BIGMAP.pos.x = (canw2 - window.Math.floor(206 * scaleby)) + transitionX; BACKGROUND_BIGMAP.pos.y = window.Math.max(0, canh2 - window.Math.floor(206 * scaleby)) + transitionY; minimap.pos.x = window.Math.floor(5 * scaleby) - transitionX; minimap.pos.y = window.Math.floor(5 * scaleby) - transitionY; leaderboard.pos.x = ((canw - window.Math.floor(233 * scaleby)) + window.Math.floor(-6 * scaleby)) - transitionX; leaderboard.pos.y = window.Math.floor(5 * scaleby) - transitionY; teambox.pos.x = (canw2 - window.Math.floor(258 * scaleby)) - transitionX; teambox.pos.y = window.Math.max(0, canh2 - window.Math.floor(137 * scaleby)) - transitionY; teammemberbox.pos.x = (canw2 - window.Math.floor(256 * scaleby)) - transitionX; teammemberbox.pos.y = window.Math.max(0, canh2 - window.Math.floor(75 * scaleby)) - transitionY; fullscreenimg.pos.x = minimap.pos.x + window.Math.floor(126 * scaleby); fullscreenimg.pos.y = minimap.pos.y; craftbutton.pos.x = fullscreenimg.pos.x + window.Math.floor(50 * scaleby); craftbutton.pos.y = fullscreenimg.pos.y; settingsimg.pos.x = fullscreenimg.pos.x; settingsimg.pos.y = fullscreenimg.pos.y + window.Math.floor(44.5 * scaleby); minimapbutt.pos.x = settingsimg.pos.x; minimapbutt.pos.y = settingsimg.pos.y + window.Math.floor(44.5 * scaleby); teambutt.pos.x = minimap.pos.x; teambutt.pos.y = minimap.pos.y + window.Math.floor(127 * scaleby); leaderboardbutt.pos.x = ((canw - window.Math.floor(34 * scaleby)) + window.Math.floor(-7 * scaleby)) - transitionX; leaderboardbutt.pos.y = window.Math.floor(5 * scaleby) - transitionY; leaderboardbutt2.pos.x = leaderboardbutt.pos.x; leaderboardbutt2.pos.y = leaderboardbutt.pos.y; NWmmW.x = (canw2 - window.Math.floor(150 * scaleby)) + transitionX; mnnNv.left = NWmmW.x + "px"; NWmmW.y = (window.Math.max(0, canh2 - 12) + window.Math.floor(150 * scaleby)) + transitionY; mnnNv.top = NWmmW.y + "px"; var wvnVv = window.document.getElementById("chatInput").style; var width = window.Math.floor(250 * scaleby); var height = window.Math.floor(20 * scaleby); var MMM = window.Math.floor(canw2 - (width / 2)) + "px"; var _top = window.Math.floor(((canh2 - (height / 2)) + (scaleby * 85)) + transitionY) + "px"; height = height + "px"; width = width + "px"; mnnNv.width = width; mnnNv.height = height; mnnNv.left = MMM; mnnNv.top = _top; wvnVv.width = width; wvnVv.height = height; wvnVv.fontSize = window.Math.floor(14 * scaleby) + "px"; }; function draw() { if (transitionManager() === 0) return; vWMVN(); ctx.clearRect(0, 0, canw, canh); World.updatePosition(); World.updateGauges(); Render.world(); Render.interaction(); Render.gauges(gauges.pos.x, gauges.pos.y); Render.minimap(minimap.pos.x, minimap.pos.y); Render.inventory(inventoryItemNumber, inventoryAmmoNumber, MmV, BUTTON_BAG); gauges.draw(); minimap.draw(); fullscreenimg.draw(); craftbutton.draw(); settingsimg.draw(); minimapbutt.draw(); teambutt.draw(); markPosition(); Render.gaugesAfter(gauges.pos.x, gauges.pos.y); if (World.gameMode !== World.__BR__) { if (leaderboardbutt.pos.disable === 0) { leaderboard.draw(); Render.leaderboard(leaderboard.pos.x, leaderboard.pos.y); leaderboardbutt.draw(); } else leaderboardbutt2.draw(); } if (NmW === 1) { if (isMapOpen === 1) Render.bigminimap(BACKGROUND_BIGMAP, BUTTON_CLOSE_BOX); else if (isSettingsOpen === 1) Render.config(BACKGROUND_SETTBOX, wWNnw, nvwMN, MNVVn, VmvmN, WMVVn, wvNNV, WVnnn, NmVWV, vVMWm, BUTTON_CLOSE_BOX, wVwnm, VnWMV, wwMwv); else if (isCraftOpen === 1) Render.craft(BACKGROUND_CRAFTBOX, BUTTON_CLOSE_BOX, skillList, BUTTON_CRAFT, BUTTON_CANCEL, BUTTON_UNLOCK, craftList, preview, inventoryItemNumber, inventoryAmmoNumber, BUTTON_FUEL, BUTTON_FUEL1, BUTTON_CELLS, NWmNn); else if (isChestOpen === 1) Render.chest(BACKGROUND_CHESTBOX, BUTTON_CLOSE_BOX, inventoryItemNumber, inventoryAmmoNumber); else if (isTeamOpen === 1) Render.team(BUTTON_CLOSE_BOX, teambox, teammemberbox, BUTTON_LEAVE, BUTTON_ADDTEAM, BUTTON_LOCK_TEAM, BUTTON_UNLOCK_TEAM, BUTTON_DELETE); } else if (isTouchScreen === 1) { if ((((Keyboard.isLeft() + Keyboard.isRight()) + Keyboard.isTop()) + Keyboard.isBottom()) >= 1) { ctx.globalAlpha = 0.3; var offsetX = canw2ns - (canw4ns * 1.5); var offsetY = canh2ns + (canw4ns / 4); CanvasUtils.circle(ctx, offsetX, offsetY, 60); CanvasUtils.drawPath(ctx, "#000000"); CanvasUtils.circle(ctx, offsetX + ((window.Math.cos(MWVNw) * NVNwm) * scaleby), offsetY + ((window.Math.sin(MWVNw) * NVNwm) * scaleby), 30); CanvasUtils.drawPath(ctx, "#FFFFFF"); ctx.globalAlpha = 1; } if (vmWNW === 1) { ctx.globalAlpha = 0.3; var offsetX = canw2ns + (canw4ns * 1.5); var offsetY = canh2ns + (canw4ns / 4); CanvasUtils.circle(ctx, offsetX, offsetY, 60); CanvasUtils.drawPath(ctx, "#000000"); CanvasUtils.circle(ctx, offsetX + ((window.Math.cos(Mouse.angle) * 25) * scaleby), offsetY + ((window.Math.sin(Mouse.angle) * 25) * scaleby), 30); CanvasUtils.drawPath(ctx, "#FFFFFF"); ctx.globalAlpha = 1; } } AudioManager.scheduler(); }; function transitionManager() { if (transitionState === 1) { update(); if (transitionDuration < 0) { transitionState = 0; fullscreenimg.setState(GUI.__BUTTON_OUT__); craftbutton.setState(GUI.__BUTTON_OUT__); settingsimg.setState(GUI.__BUTTON_OUT__); minimapbutt.setState(GUI.__BUTTON_OUT__); teambutt.setState(GUI.__BUTTON_OUT__); leaderboardbutt.setState(GUI.__BUTTON_OUT__); leaderboardbutt2.setState(GUI.__BUTTON_OUT__); mnnNv.display = "none"; transitionSpeed.run(); return 0; } transitionDuration -= delta; } else if (reverseTransitionState === 1) { update(); if (transitionDuration < 0) { reverseTransitionState = 0; World.PLAYER.timePlayed = window.Date.now(); MmNNN(); } transitionDuration -= delta; } return 1; }; function mouseDown(event) { Mouse.updateAll(event, Mouse.__MOUSE_DOWN__); var vnm = 0; if (fullscreenimg.trigger() === 1) { vnm = 1; } if (craftbutton.trigger() === 1) { vnm = 1; } if (settingsimg.trigger() === 1) { vnm = 1; } if (minimapbutt.trigger() === 1) { vnm = 1; } if (teambutt.trigger() === 1) { vnm = 1; } if (leaderboardbutt.trigger() === 1) { vnm = 1; } if (leaderboardbutt2.trigger() === 1) { vnm = 1; } if (World.PLAYER.teamJoin !== 0) { if ((BUTTON_JOIN.trigger() === 1) || (BUTTON_DELETE2.trigger() === 1)) vnm = 1; } if (NmW === 1) { BUTTON_CLOSE_BOX.trigger(); if (isSettingsOpen === 1) { VmvmN.trigger(); WMVVn.trigger(); wWNnw.trigger(); nvwMN.trigger(); MNVVn.trigger(); wvNNV.trigger(); WVnnn.trigger(); NmVWV.trigger(); vVMWm.trigger(); VnWMV.trigger(); wVwnm.trigger(); wwMwv.trigger(); } else if (isCraftOpen === 1) { if (World.PLAYER.craftCategory === -1) { if ((World.PLAYER.crafting === 0) || (World.PLAYER.isInBuilding === 1)) BUTTON_CRAFT.trigger(); else BUTTON_CANCEL.trigger(); if ((((World.PLAYER.craftArea === AREAS.__FIRE__) || (World.PLAYER.craftArea === AREAS.__BBQ__)) || (World.PLAYER.craftArea === AREAS.__COMPOST__)) && (World.PLAYER.building.fuel !== 255)) BUTTON_FUEL.trigger(); else if ((((World.PLAYER.craftArea === AREAS.__SMELTER__) || (World.PLAYER.craftArea === AREAS.__EXTRACTOR__)) || (World.PLAYER.craftArea === AREAS.__AGITATOR__)) && (World.PLAYER.building.fuel !== 255)) BUTTON_FUEL1.trigger(); else if (World.PLAYER.craftArea === AREAS.__FEEDER__ && World.PLAYER.building.fuel !== 255) BUTTON_CELLS.trigger(); } else BUTTON_UNLOCK.trigger(); for (var i = 0; i < skillList.length; i++) skillList[i].trigger(); for (i = 0; i < craftList.length; i++) { if ((World.PLAYER.buildingArea === i) || (i === 0)) craftList[i].trigger(); } var len = World.PLAYER.craftLen; for (var i = 0; i < len; i++) craft[i].trigger(); len = World.PLAYER.recipeLen; for (i = 0; i < len; i++) recipe[i].trigger(); if (World.PLAYER.isInBuilding === 1) { for (i = 0; i < World.PLAYER.building.len; i++) queue[i].trigger(); } len = World.PLAYER.toolsLen; for (i = 0; i < len; i++) tools[i].trigger(); preview.trigger(); } } var invtr = World.PLAYER.inventory; var len = invtr.length; if ((len > 10) && (BUTTON_BAG.trigger() === 1)) vnm = 1; for (var i = 0; i < len; i++) { if (inventory[i].trigger() === 1) { vnm = 1; if (invtr[i][0] !== 0) { var drag = World.PLAYER.drag; if (drag.begin === 0) { drag.begin = 1; drag.x = Mouse.x; drag.y = Mouse.y; drag.id = i; } } } else if (isChestOpen === 1) { var wVMVN = World.PLAYER.chest; for (var k = 0; k < 4; k++) { if (wVMVN[k][0] !== 0) chest[k].trigger(); } } else if (isTeamOpen === 1) { if (World.PLAYER.team === -1) { BUTTON_ADDTEAM.trigger(); var j = 0; for (var i = 0; i < join.length; i++) { if (World.teams[i].leader !== 0) { join[j].trigger(); j++; } } } else if (World.PLAYER.teamLeader === 1) { BUTTON_LOCK_TEAM.trigger(); BUTTON_UNLOCK_TEAM.trigger(); BUTTON_DELETE.trigger(); var j = 0; var team = World.teams[World.PLAYER.team]; for (var i = 0; i < World.players.length; i++) { if (i === World.PLAYER.id) { j++; continue; } var PLAYER = World.players[i]; if ((PLAYER.team === team.id) && (PLAYER.teamUid === team.uid)) { kick[j].trigger(); j++; } } } else BUTTON_LEAVE.trigger(); } } if ((vnm === 0) && (NmW === 0)) { nmMMm = 1; if (World.PLAYER.click === -1) World.PLAYER.click = 0; } else { if (World.PLAYER.click === 0) World.PLAYER.click = -1; } }; function mouseUp(event) { Mouse.updateAll(event, Mouse.__MOUSE_UP__); var vnm = 0; if (fullscreenimg.trigger() === 1) { vnm = 1; if (MNnnv === 0) { MNnnv = 1; CanvasUtils.enableFullscreen(); if (World.day === 0) canvas.style.backgroundColor = "#3D5942"; else canvas.style.backgroundColor = "#0B2129"; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else { MNnnv = 0; CanvasUtils.disableFullscreen(); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } } if (craftbutton.trigger() === 1) { vnm = 1; if (World.PLAYER.ghoul === 0) { if (isCraftOpen === 0) { _CloseBox(); NmW = 1; isCraftOpen = 1; World.buildCraftList(AREAS.__PLAYER__); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } else { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } } if (settingsimg.trigger() === 1) { vnm = 1; if (isSettingsOpen === 0) { _CloseBox(); NmW = 1; isSettingsOpen = 1; AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } else { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } if (minimapbutt.trigger() === 1) { vnm = 1; if (isMapOpen === 0) { _CloseBox(); NmW = 1; isMapOpen = 1; AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } else { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } if (teambutt.trigger() === 1) { vnm = 1; if (isTeamOpen === 0) { _CloseBox(); NmW = 1; isTeamOpen = 1; AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } else { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } if (leaderboardbutt.trigger() === 1) { vnm = 1; leaderboardbutt.hide(); leaderboardbutt2.show(); localStorage2.setItem("showLeaderboard", "0"); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } if (leaderboardbutt2.trigger() === 1) { vnm = 1; leaderboardbutt2.hide(); leaderboardbutt.show(); localStorage2.setItem("showLeaderboard", "1"); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } var drag = World.PLAYER.drag; if (World.PLAYER.teamJoin !== 0) { if (BUTTON_JOIN.trigger() === 1) { Client.sendPacket(window.JSON.stringify([31, World.PLAYER.teamJoin])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); World.nextInvitation(); return; } if (BUTTON_DELETE2.trigger() === 1) { AudioUtils.playFx(AudioUtils._fx.button, 1, 0); World.nextInvitation(); return; } } if (NmW === 1) { if (BUTTON_CLOSE_BOX.trigger() === 1) { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } if (isSettingsOpen === 1) { WMVVn.setState(GUI.__BUTTON_OUT__); VmvmN.setState(GUI.__BUTTON_OUT__); wWNnw.setState(GUI.__BUTTON_OUT__); nvwMN.setState(GUI.__BUTTON_OUT__); MNVVn.setState(GUI.__BUTTON_OUT__); wvNNV.setState(GUI.__BUTTON_OUT__); WVnnn.setState(GUI.__BUTTON_OUT__); NmVWV.setState(GUI.__BUTTON_OUT__); vVMWm.setState(GUI.__BUTTON_OUT__); wVwnm.setState(GUI.__BUTTON_OUT__); VnWMV.setState(GUI.__BUTTON_OUT__); wwMwv.setState(GUI.__BUTTON_OUT__); if (VmvmN.trigger() === 1) { Keyboard.setAzerty(); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (WMVVn.trigger() === 1) { Keyboard.setQwert(); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (wWNnw.trigger() === 1) { CanvasUtils.setResolution(1); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (nvwMN.trigger() === 1) { CanvasUtils.setResolution(2); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (MNVVn.trigger() === 1) { CanvasUtils.setResolution(3); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (wvNNV.trigger() === 1) { AudioUtils.setAudio(1); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (WVnnn.trigger() === 1) { AudioUtils.setAudio(0); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (NmVWV.trigger() === 1) { AudioUtils.setFx(1); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (vVMWm.trigger() === 1) { AudioUtils.setFx(0); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (VnWMV.trigger() === 1) { Render.setParticles(1); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (wVwnm.trigger() === 1) { Render.setParticles(2); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (wwMwv.trigger() === 1) { Render.setParticles(0); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } var MMMnn = BACKGROUND_SETTBOX.pos; if ((((Mouse.sx < MMMnn.x) || (Mouse.sx > (MMMnn.x + (234 * scaleby)))) || (Mouse.sy < MMMnn.y)) || (Mouse.sy > (MMMnn.y + (232 * scaleby)))) { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } else if (isMapOpen === 1) { var mNMnn = BACKGROUND_BIGMAP.pos; if ((((Mouse.sx < mNMnn.x) || (Mouse.sx > (mNMnn.x + (412 * scaleby)))) || (Mouse.sy < mNMnn.y)) || (Mouse.sy > (mNMnn.y + (412 * scaleby)))) { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } else if (isCraftOpen === 1) { if (World.PLAYER.craftCategory === -1) { if ((World.PLAYER.crafting === 0) || (World.PLAYER.isInBuilding === 1)) { if ((World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected] === 1) && (BUTTON_CRAFT.trigger() === 1)) { if (World.PLAYER.isInBuilding === 1) { if ((World.PLAYER.building.fuel !== 0) && (World.PLAYER.building.len < 4)) { Client.sendPacket(window.JSON.stringify([18, World.PLAYER.craftSelected])); AudioUtils.playFx(AudioUtils._fx.craft, 0.8, 0); } } else { Client.sendPacket(window.JSON.stringify([22, World.PLAYER.craftSelected])); AudioUtils.playFx(AudioUtils._fx.craft, 0.8, 0); } BUTTON_CRAFT.setState(GUI.__BUTTON_OUT__); } } else if (BUTTON_CANCEL.trigger() === 1) { Client.sendPacket(window.JSON.stringify([23])); World.PLAYER.crafting = 0; BUTTON_CANCEL.setState(GUI.__BUTTON_OUT__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } } else { if (BUTTON_UNLOCK.trigger() === 1) { if (World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected] === 1) { Client.sendPacket(window.JSON.stringify([21, World.PLAYER.craftSelected])); AudioUtils.playFx(AudioUtils._fx.skill, 1, 0); } } } if (skillList[SKILLS.__SKILL__].trigger() === 1) { World.buildSkillList(SKILLS.__SKILL__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (skillList[SKILLS.__BUILDING__].trigger() === 1) { World.buildSkillList(SKILLS.__BUILDING__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (skillList[SKILLS.__CLOTHE__].trigger() === 1) { World.buildSkillList(SKILLS.__CLOTHE__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (skillList[SKILLS.__PLANT__].trigger() === 1) { World.buildSkillList(SKILLS.__PLANT__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (skillList[SKILLS.__DRUG__].trigger() === 1) { World.buildSkillList(SKILLS.__DRUG__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (skillList[SKILLS.__MINERAL__].trigger() === 1) { World.buildSkillList(SKILLS.__MINERAL__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (skillList[SKILLS.__LOGIC__].trigger() === 1) { World.buildSkillList(SKILLS.__LOGIC__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (skillList[SKILLS.__SURVIVAL__].trigger() === 1) { World.buildSkillList(SKILLS.__SURVIVAL__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (skillList[SKILLS.__TOOL__].trigger() === 1) { World.buildSkillList(SKILLS.__TOOL__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (skillList[SKILLS.__WEAPON__].trigger() === 1) { World.buildSkillList(SKILLS.__WEAPON__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (craftList[AREAS.__PLAYER__].trigger() === 1) { World.buildCraftList(AREAS.__PLAYER__); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (((craftList[AREAS.__FIRE__].trigger() === 1) || (craftList[AREAS.__BBQ__].trigger() === 1)) || (craftList[AREAS.__COMPOST__].trigger() === 1)) { Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (craftList[AREAS.__WORKBENCH__].trigger() === 1) { Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (craftList[AREAS.__WELDING_MACHINE__].trigger() === 1) { Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (craftList[AREAS.__WEAVING__].trigger() === 1) { Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (craftList[AREAS.__WORKBENCH2__].trigger() === 1) { Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (craftList[AREAS.__TESLA__].trigger() === 1 || craftList[AREAS.__FEEDER__].trigger() === 1) { Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else if (((craftList[AREAS.__SMELTER__].trigger() === 1) || (craftList[AREAS.__EXTRACTOR__].trigger() === 1)) || (craftList[AREAS.__AGITATOR__].trigger() === 1)) { Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else { var len = World.PLAYER.craftLen; for (var i = 0; i < len; i++) { if (craft[i].trigger() === 1) { World.PLAYER.craftIdSelected = i; World.selectRecipe(World.PLAYER.craftList[i]); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } } len = World.PLAYER.recipeLen; for (i = 0; i < len; i++) { if (recipe[i].trigger() === 1) return; } if (World.PLAYER.isInBuilding === 1) { for (i = 0; i < World.PLAYER.building.len; i++) { if (queue[i].trigger() === 1) { Client.sendPacket(window.JSON.stringify([19, i])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } } if (((World.PLAYER.craftArea === AREAS.__FIRE__) || (World.PLAYER.craftArea === AREAS.__BBQ__)) || (World.PLAYER.craftArea === AREAS.__COMPOST__)) { if ((World.PLAYER.building.fuel !== 255) && (BUTTON_FUEL.trigger() === 1)) { Client.sendPacket(window.JSON.stringify([24])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } } else if (((World.PLAYER.craftArea === AREAS.__SMELTER__) || (World.PLAYER.craftArea === AREAS.__EXTRACTOR__)) || (World.PLAYER.craftArea === AREAS.__AGITATOR__)) { if ((World.PLAYER.building.fuel !== 255) && (BUTTON_FUEL1.trigger() === 1)) { Client.sendPacket(window.JSON.stringify([24])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } } else if (World.PLAYER.craftArea === AREAS.__TESLA__ || World.PLAYER.craftArea === AREAS.__FEEDER__) { if ((World.PLAYER.building.fuel !== 255) && (BUTTON_CELLS.trigger() === 1)) { Client.sendPacket(window.JSON.stringify([24])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } } } var nNMwN = BACKGROUND_CRAFTBOX.pos; if (((drag.begin !== 1) && !event.ctrlKey) && ((((Mouse.sx < nNMwN.x) || (Mouse.sx > (nNMwN.x + (595 * scaleby)))) || (Mouse.sy < nNMwN.y)) || (Mouse.sy > (nNMwN.y + (325 * scaleby))))) { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } } else if (isChestOpen === 1) { var wVMVN = World.PLAYER.chest; for (var k = 0; k < 4; k++) { if ((wVMVN[k][0] !== 0) && (chest[k].trigger() === 1)) { Client.sendPacket(window.JSON.stringify([27, k])); AudioUtils.playFx(AudioUtils._fx.drag, 1, 0); return; } } } else if (isTeamOpen === 1) { if (World.PLAYER.team === -1) { if (((BUTTON_ADDTEAM.trigger() === 1) && (World.PLAYER.teamNameValid === 1)) && ((window.Date.now() - World.PLAYER.teamCreateDelay) > 30500)) { Client.sendPacket(window.JSON.stringify([28, Game.teamName])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); World.PLAYER.teamCreateDelay = window.Date.now(); } if ((window.Date.now() - World.PLAYER.teamDelay) > 10500) { var j = 0; for (var i = 0; i < join.length; i++) { if (World.teams[i].leader !== 0) { if (join[j].trigger() === 1) { Client.sendPacket(window.JSON.stringify([30, i])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); World.PLAYER.teamDelay = window.Date.now(); } j++; } } } } else if (World.PLAYER.teamLeader === 1) { if ((BUTTON_LOCK_TEAM.trigger() === 1) && (World.PLAYER.teamLocked === 0)) { Client.sendPacket(window.JSON.stringify([33])); World.PLAYER.teamLocked = 1; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } if ((BUTTON_UNLOCK_TEAM.trigger() === 1) && (World.PLAYER.teamLocked === 1)) { Client.sendPacket(window.JSON.stringify([34])); World.PLAYER.teamLocked = 0; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } if (BUTTON_DELETE.trigger() === 1) { Client.sendPacket(window.JSON.stringify([29])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } var j = 0; var team = World.teams[World.PLAYER.team]; for (var i = 0; i < World.players.length; i++) { if (i === World.PLAYER.id) { j++; continue; } var PLAYER = World.players[i]; if ((PLAYER.team === team.id) && (PLAYER.teamUid === team.uid)) { if (kick[j].trigger() === 1) { Client.sendPacket(window.JSON.stringify([32, PLAYER.id])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } j++; } } } else { if (BUTTON_LEAVE.trigger() === 1) { Client.sendPacket(window.JSON.stringify([35, World.PLAYER.id])); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } } } }; var invtr = World.PLAYER.inventory; var len = invtr.length; var mnWNv = 0; if ((len > 10) && (BUTTON_BAG.trigger() === 1)) { BUTTON_BAG.open = (BUTTON_BAG.open + 1) % 2; if (BUTTON_BAG.open === 1) AudioUtils.playFx(AudioUtils._fx.zipperOn, 0.08, 0); else AudioUtils.playFx(AudioUtils._fx.zipperOff, 0.08, 0); } for (var i = 0; i < len; i++) { if ((i > 9) && (BUTTON_BAG.open === 0)) break; if (inventory[i].trigger() === 1) { mnWNv = 1; var IID = invtr[i][0]; var amount = invtr[i][1]; var itemId = invtr[i][2]; var wvmvw = invtr[i][3]; var type = INVENTORY[IID]; if (drag.begin === 1) { if (drag.id !== i) { if (invtr[i][0] === invtr[drag.id][0]) { if ((type.stack > invtr[i][1]) && (type.stack > invtr[drag.id][1])) { Client.sendPacket(window.JSON.stringify([10, invtr[drag.id][0], invtr[drag.id][1], invtr[drag.id][2], invtr[i][1], invtr[i][2]])); World.PLAYER.drag.begin = 0; AudioUtils.playFx(AudioUtils._fx.drag, 1, 0); return; } } invtr[i][0] = invtr[drag.id][0]; invtr[i][1] = invtr[drag.id][1]; invtr[i][2] = invtr[drag.id][2]; invtr[i][3] = invtr[drag.id][3]; invtr[drag.id][0] = IID; invtr[drag.id][1] = amount; invtr[drag.id][2] = itemId; invtr[drag.id][3] = wvmvw; if (IID !== 0) Game.inventory[drag.id].setImages(INVENTORY[IID].itemButton.src, INVENTORY[IID].itemButton.img); Game.inventory[i].setImages(INVENTORY[invtr[i][0]].itemButton.src, INVENTORY[invtr[i][0]].itemButton.img); World.PLAYER.drag.begin = 0; AudioUtils.playFx(AudioUtils._fx.drag, 1, 0); return; } World.PLAYER.drag.begin = 0; } if (IID !== 0) { if ((isChestOpen === 1) && (event.which !== 3)) { Client.sendPacket(window.JSON.stringify([26, IID, amount, itemId, wvmvw])); AudioUtils.playFx(AudioUtils._fx.drag, 1, 0); } else if (event.which === 3) { Client.sendPacket(window.JSON.stringify([9, IID, amount, itemId, wvmvw])); AudioUtils.playFx(AudioUtils._fx.throwLoot, 1, 0); } else { if (event.ctrlKey) { AudioUtils.playFx(AudioUtils._fx.drag, 0.6, 0); Client.sendPacket(window.JSON.stringify([11, IID, amount, itemId])); } else Client.sendPacket(window.JSON.stringify([8, IID, amount, itemId, wvmvw])); } } } } if ((isChestOpen === 1) && (mnWNv === 0)) { var NnVVw = BACKGROUND_CHESTBOX.pos; if ((((Mouse.sx < NnVVw.x) || (Mouse.sx > (NnVVw.x + (161 * scaleby)))) || (Mouse.sy < NnVVw.y)) || (Mouse.sy > (NnVVw.y + (165 * scaleby)))) { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); } } if (drag.begin === 1) { var i = drag.id; Client.sendPacket(window.JSON.stringify([9, invtr[i][0], invtr[i][1], invtr[i][2], invtr[i][3]])); AudioUtils.playFx(AudioUtils._fx.throwLoot, 1, 0); } drag.begin = 0; }; function mouseMove(event) { Mouse.updateAll(event, Mouse.__MOUSE_MOVE__); var vnm = 0; if (fullscreenimg.trigger() === 1) { vnm = 1; } if (craftbutton.trigger() === 1) { vnm = 1; } if (settingsimg.trigger() === 1) { vnm = 1; } if (minimapbutt.trigger() === 1) { vnm = 1; } if (teambutt.trigger() === 1) { vnm = 1; } if (leaderboardbutt.trigger() === 1) { vnm = 1; } if (leaderboardbutt2.trigger() === 1) { vnm = 1; } if (World.PLAYER.teamJoin !== 0) { BUTTON_JOIN.trigger(); BUTTON_DELETE2.trigger(); } if (NmW === 1) { BUTTON_CLOSE_BOX.trigger(); if (isSettingsOpen === 1) { VmvmN.trigger(); WMVVn.trigger(); wWNnw.trigger(); nvwMN.trigger(); MNVVn.trigger(); wvNNV.trigger(); WVnnn.trigger(); NmVWV.trigger(); vVMWm.trigger(); VnWMV.trigger(); wVwnm.trigger(); wwMwv.trigger(); } else if (isCraftOpen === 1) { if (World.PLAYER.craftCategory === -1) { if ((World.PLAYER.crafting === 0) || (World.PLAYER.isInBuilding === 1)) BUTTON_CRAFT.trigger(); else BUTTON_CANCEL.trigger(); } else BUTTON_UNLOCK.trigger(); for (var i = 0; i < skillList.length; i++) skillList[i].trigger(); for (i = 0; i < craftList.length; i++) { if ((World.PLAYER.buildingArea === i) || (i === 0)) craftList[i].trigger(); } var len = World.PLAYER.craftLen; for (var i = 0; i < len; i++) craft[i].trigger(); NWmNn = -1; len = World.PLAYER.recipeLen; for (i = 0; i < len; i++) { if (recipe[i].trigger() === 1) NWmNn = i; } if (World.PLAYER.isInBuilding === 1) { for (i = 0; i < World.PLAYER.building.len; i++) queue[i].trigger(); if ((((World.PLAYER.craftArea === AREAS.__FIRE__) || (World.PLAYER.craftArea === AREAS.__BBQ__)) || (World.PLAYER.craftArea === AREAS.__COMPOST__)) && (World.PLAYER.building.fuel !== 255)) BUTTON_FUEL.trigger(); else if ((((World.PLAYER.craftArea === AREAS.__SMELTER__) || (World.PLAYER.craftArea === AREAS.__EXTRACTOR__)) || (World.PLAYER.craftArea === AREAS.__AGITATOR__) || (World.PLAYER.craftArea === AREAS.__FEEDER__)) && (World.PLAYER.building.fuel !== 255)) BUTTON_FUEL1.trigger(); else if (World.PLAYER.craftArea === AREAS.__FEEDER__ && World.PLAYER.building.fuel !== 255) { BUTTON_CELLS.trigger(); } } len = World.PLAYER.toolsLen; for (i = 0; i < len; i++) tools[i].trigger(); preview.trigger(); } else if (isChestOpen === 1) { var wVMVN = World.PLAYER.chest; for (var k = 0; k < 4; k++) { if (wVMVN[k][0] !== 0) chest[k].trigger(); } } else if (isTeamOpen === 1) { if (World.PLAYER.team === -1) { BUTTON_ADDTEAM.trigger(); var j = 0; for (var i = 0; i < join.length; i++) { if (World.teams[i].leader !== 0) { join[j].trigger(); j++; } } } else if (World.PLAYER.teamLeader === 1) { BUTTON_LOCK_TEAM.trigger(); BUTTON_UNLOCK_TEAM.trigger(); BUTTON_DELETE.trigger(); var j = 0; var team = World.teams[World.PLAYER.team]; for (var i = 0; i < World.players.length; i++) { if (i === World.PLAYER.id) { j++; continue; } var PLAYER = World.players[i]; if ((PLAYER.team === team.id) && (PLAYER.teamUid === team.uid)) { kick[j].trigger(); j++; } } } else BUTTON_LEAVE.trigger(); } } var invtr = World.PLAYER.inventory; var len = invtr.length; MmV = -1; if (len > 10) BUTTON_BAG.trigger(); for (var i = 0; i < len; i++) { if ((i > 9) && (BUTTON_BAG.open === 0)) break; if (invtr[i][0] !== 0) { if (inventory[i].trigger() === 1) MmV = i; } } }; function NmN(event) { Keyboard.keyup(event); if ((isTeamOpen === 1) && (World.PLAYER.team === -1)) { if ((event.keyCode === 8) && (Game.teamName.length > 0)) { Game.teamName = Game.teamName.substring(0, Game.teamName.length - 1); event.preventDefault(); return; } else if (((event.keyCode >= 65) && (event.keyCode <= 90)) || ((event.keyCode >= 48) && (event.keyCode <= 57))) { if (Game.teamName.length < 5) Game.teamName += window.String.fromCharCode(event.keyCode); } } else if ((chatvisible === 1) && (event.keyCode === 27)) { chatvisible = 0; mnnNv.display = "none"; } else if (event.keyCode === 13) { if (chatvisible === 1) { if (chatinput.value.length > 0) { if ((World.PLAYER.admin === 1) && (chatinput.value[0] === '!')) { if (chatinput.value === '!pos') World.players[World.PLAYER.id].text.push((window.Math.floor(World.PLAYER.x / 100) + ":") + window.Math.floor(World.PLAYER.y / 100)); if (chatinput.value === '!new') Client.newToken(chatinput.value); if (chatinput.value === '!afk') Client.sendAfk(chatinput.value); if (chatinput.value === '!path') { if (!pathFinder) pathFinder = true; else pathFinder = false; } else { var mNvMM = chatinput.value.split('!'); for (var i = 1; i < mNvMM.length; i++) { var nwNVn = "!" + mNvMM[i]; if (nwNVn.indexOf("public") === -1) nwNVn = nwNVn.split(" ").join(""); Client.sendChatMessage(nwNVn); if (i <= 20) World.players[World.PLAYER.id].text.push(nwNVn); } } } else if (chatinput.value[0] === '[') { Client.sendWSmsg(chatinput.value) } else { var delay = Client.sendChatMessage(chatinput.value); if (delay !== 0) World.players[World.PLAYER.id].text.push(("I am muted during " + window.Math.floor(delay / 1000)) + " seconds"); else World.players[World.PLAYER.id].text.push(chatinput.value); } } chatvisible = 0; chatinput.value = ""; mnnNv.display = "none"; } else { chatvisible = 1; mnnNv.display = "inline-block"; chatinput.focus(); } } else if (chatvisible === 0) { if (event.keyCode === 77) { if (isMapOpen === 0) { _CloseBox(); NmW = 1; isMapOpen = 1; AudioUtils.playFx(AudioUtils._fx.open, 1, 0); } else { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); } } else if ((event.keyCode === 69) || (event.keyCode === 32)) { switch (World.PLAYER.interaction) { case 0: Client.sendPacket(window.JSON.stringify([12, World.PLAYER.lootId])); break; case 2: Client.sendPacket(window.JSON.stringify([World.PLAYER.packetId, World.PLAYER.buildingId, World.PLAYER.buildingPid])); break; } } else if (event.keyCode === 70) { if (World.PLAYER.extraLoot === 1) Client.sendPacket(window.JSON.stringify([12, World.PLAYER.lootId])); } else if (event.keyCode === 82) { if (World.PLAYER.isBuilding === 1) World.PLAYER.buildRotate = (World.PLAYER.buildRotate + 1) % 4; else Client.sendPacket(window.JSON.stringify([13])); } else if ((event.keyCode >= 49) && (event.keyCode <= 57)) { if (World.PLAYER.drag.begin !== 1) { var i = event.keyCode - 49; var invtr = World.PLAYER.inventory; if (i < invtr.length) { var IID = invtr[i][0]; var amount = invtr[i][1]; var itemId = invtr[i][2]; var wvmvw = invtr[i][3]; if (event.altKey) { Client.sendPacket(window.JSON.stringify([9, IID, amount, itemId, wvmvw])); AudioUtils.playFx(AudioUtils._fx.throwLoot, 1, 0); } else { if (event.ctrlKey) { AudioUtils.playFx(AudioUtils._fx.drag, 0.6, 0); Client.sendPacket(window.JSON.stringify([11, IID, amount, itemId])); } else Client.sendPacket(window.JSON.stringify([8, IID, amount, itemId, wvmvw])); } } } } else if ((event.keyCode === 67) && (World.PLAYER.ghoul === 0)) { if (isCraftOpen === 0) { _CloseBox(); NmW = 1; isCraftOpen = 1; World.buildCraftList(AREAS.__PLAYER__); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); } else { AudioUtils.playFx(AudioUtils._fx.open, 1, 0); _CloseBox(); } } else if ((event.keyCode === 27) && (NmW === 1)) { AudioUtils.playFx(AudioUtils._fx.open, 1, 0); _CloseBox(); } } }; function vnW(event) { Keyboard.keydown(event); if ((((event.keyCode === 37) || (event.keyCode === 38)) || (event.keyCode === 39)) || (event.keyCode === 40)) { event.preventDefault(); return false; } }; function touchStart(event) { var NVN = 0; for (var wVV = 0; wVV < event.touches.length; wVV++) { Mouse.touchToMouseEvent(mouseX, event, event.touches[wVV]); if (BUTTON_BAG.open !== 0) { var MVvmv = Mouse.state; Mouse.updateAll(mouseX, Mouse.__MOUSE_DOWN__); Mouse.state = MVvmv; var invtr = World.PLAYER.inventory; var NwvVw = 0; for (var i = 10; i < invtr.length; i++) { if (invtr[i][0] !== 0) { if (inventory[i].trigger() === 1) { NwvVw = 1; break; } } } if (NwvVw === 1) { mouseDown(mouseX); continue; } } if ((World.PLAYER.drag.begin === 0) && (NmW === 0)) { var sx = window.Math.floor(mouseX.clientX * CanvasUtils.options.ratioX); var sy = window.Math.floor(mouseX.clientY * CanvasUtils.options.ratioY); switch (World.PLAYER.interaction) { case 2: if (((((World.PLAYER.extraLoot === 1) && (sx > Game.xInteract2)) && (sy > Game.yInteract2)) && (sx < (Game.xInteract2 + Game.widthInteract))) && (sy < (Game.yInteract2 + Game.heightInteract))) { nvnNv = 1; keyboard.keyCode = 70; keyboard.charCode = 70; NmN(keyboard); continue; } case 0: if ((((sx > Game.xInteract) && (sy > Game.yInteract)) && (sx < (Game.xInteract + Game.widthInteract))) && (sy < (Game.yInteract + Game.heightInteract))) { nvnNv = 1; keyboard.keyCode = 69; keyboard.charCode = 69; NmN(keyboard); continue; } break; } if (sy < (canh - (70 * scaleby))) { var WMm = canw4 * 1.5; var nmV = canw4 / 4; if (sx < canw2) { var MVM = 30 * scaleby; MWVNw = Math2d.angle(canw2 - WMm, canh2 + nmV, sx, sy); NVNwm = window.Math.min(Math2d.distance(sx, sy, canw2 - WMm, canh2 + nmV), 25); if (sx < ((canw2 - WMm) - MVM)) { mWM |= 1; keyboard.charCode = 37; keyboard.keyCode = 37; vnW(keyboard); } else if (sx > ((canw2 - WMm) + MVM)) { mWM |= 2; keyboard.charCode = 39; keyboard.keyCode = 39; vnW(keyboard); } if (sy < ((canh2 + nmV) - MVM)) { mWM |= 4; keyboard.charCode = 38; keyboard.keyCode = 38; vnW(keyboard); } else if (sy > ((canh2 + nmV) + MVM)) { mWM |= 8; keyboard.charCode = 40; keyboard.keyCode = 40; vnW(keyboard); } } else if ((sx < (canw - (40 * scaleby))) || (sy > (40 * scaleby))) { NVN = 1; mouseX.clientX -= WMm / CanvasUtils.options.ratioX; mouseX.clientY -= nmV / CanvasUtils.options.ratioX; if (World.PLAYER.isBuilding === 1) { var vVMmn = window.Date.now(); if ((vVMmn - MMMvM) < 1000) { vmWNW = 1; NnVMv = mouseX.clientX; WNmmw = mouseX.clientY; mouseDown(mouseX); } MMMvM = vVMmn; } else { vmWNW = 1; NnVMv = mouseX.clientX; WNmmw = mouseX.clientY; mouseDown(mouseX); } } continue; } } if ((NVN === 0) && (mWM === 0)) { mouseDown(mouseX); NVN = 1; } } }; function touchEnd(event) { var sx = window.Math.floor(event.changedTouches[0].clientX * CanvasUtils.options.ratioX); var sy = window.Math.floor(event.changedTouches[0].clientY * CanvasUtils.options.ratioY); if (nvnNv === 1) nvnNv = 0; else if (NmW === 1) mouseUp(mouseX); else if ((vmWNW === 1) && (sx >= canw2)) { vmWNW = 0; mouseX.clientX = NnVMv; mouseX.clientY = WNmmw; mouseUp(mouseX); return; } else if (((World.PLAYER.drag.begin === 0) && (sx < canw2)) && (sy < (canh - (70 * scaleby)))) { if ((sx < (240 * scaleby)) && (sy < (160 * scaleby))) mouseUp(mouseX); } else mouseUp(mouseX); if (mWM !== 0) { if (mWM & 1) { keyboard.charCode = 37; NmN(keyboard); } if (mWM & 2) { keyboard.charCode = 39; NmN(keyboard); } if (mWM & 4) { keyboard.charCode = 38; NmN(keyboard); } if (mWM & 8) { keyboard.charCode = 40; NmN(keyboard); } mWM = 0; } }; function touchCancel(event) {}; function touchMove(event) { var NVN = 0; var mWVWv = 0; for (var wVV = 0; wVV < event.touches.length; wVV++) { Mouse.touchToMouseEvent(mouseX, event, event.touches[wVV]); if (BUTTON_BAG.open !== 0) { var invtr = World.PLAYER.inventory; var NwvVw = 0; for (var i = 10; i < invtr.length; i++) { if (invtr[i][0] !== 0) { if (inventory[i].trigger() === 1) { NwvVw = 1; break; } } } if (NwvVw === 1) { mouseMove(mouseX); continue; } } if ((World.PLAYER.drag.begin === 0) && (NmW === 0)) { var sx = window.Math.floor(mouseX.clientX * CanvasUtils.options.ratioX); var sy = window.Math.floor(mouseX.clientY * CanvasUtils.options.ratioY); if (sy < (canh - (70 * scaleby))) { var WMm = canw4 * 1.5; var nmV = canw4 / 4; if (sx < canw2) { mWVWv = 1; var VNM = 0; var MVM = 30 * scaleby; MWVNw = Math2d.angle(canw2 - WMm, canh2 + nmV, sx, sy); NVNwm = window.Math.min(Math2d.distance(sx, sy, canw2 - WMm, canh2 + nmV), 25); if (sx < ((canw2 - WMm) - MVM)) VNM |= 1; else if (sx > ((canw2 - WMm) + MVM)) VNM |= 2; if (sy < ((canh2 + nmV) + -MVM)) VNM |= 4; else if (sy > ((canh2 + nmV) + MVM)) VNM |= 8; if (((VNM & 1) === 1) && ((mWM & 1) !== 1)) { keyboard.charCode = 37; vnW(keyboard); } else if (((VNM & 1) !== 1) && ((mWM & 1) === 1)) { keyboard.charCode = 37; NmN(keyboard); } if (((VNM & 2) === 2) && ((mWM & 2) !== 2)) { keyboard.charCode = 39; vnW(keyboard); } else if (((VNM & 2) !== 2) && ((mWM & 2) === 2)) { keyboard.charCode = 39; NmN(keyboard); } if (((VNM & 4) === 4) && ((mWM & 4) !== 4)) { keyboard.charCode = 38; vnW(keyboard); } else if (((VNM & 4) !== 4) && ((mWM & 4) === 4)) { keyboard.charCode = 38; NmN(keyboard); } if (((VNM & 8) === 8) && ((mWM & 8) !== 8)) { keyboard.charCode = 40; vnW(keyboard); } else if (((VNM & 8) !== 8) && ((mWM & 8) === 8)) { keyboard.charCode = 40; NmN(keyboard); } mWM = VNM; continue; } else if ((sx < (canw - (40 * scaleby))) || (sy > (40 * scaleby))) { NVN = 1; mouseX.clientX -= WMm / CanvasUtils.options.ratioX; mouseX.clientY -= nmV / CanvasUtils.options.ratioX; NnVMv = mouseX.clientX; WNmmw = mouseX.clientY; mouseMove(mouseX); } } } if ((NVN === 0) && (mWM === 0)) { mouseMove(mouseX); NVN = 1; } } if ((mWVWv === 0) && (mWM !== 0)) { if (mWM & 1) { keyboard.charCode = 37; NmN(keyboard); } if (mWM & 2) { keyboard.charCode = 39; NmN(keyboard); } if (mWM & 4) { keyboard.charCode = 38; NmN(keyboard); } if (mWM & 8) { keyboard.charCode = 40; NmN(keyboard); } mWM = 0; } }; function MouseWheelHandler(e) { if (MOD.mouseScale) { var e = window.event || e; Render.scale += (e.wheelDelta / 5000); return false; } }; function MmNNN() { if (isTouchScreen === 0) window.addEventListener("wheel", MouseWheelHandler, false); if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false); if (isTouchScreen === 0) window.addEventListener('keyup', NmN, false); if (isTouchScreen === 0) window.addEventListener('keydown', vnW, false); if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false); }; function VVwMW() { if (isTouchScreen === 0) window.addEventListener("wheel", MouseWheelHandler, false); if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false); if (isTouchScreen === 0) window.removeEventListener('keyup', NmN, false); if (isTouchScreen === 0) window.removeEventListener('keydown', vnW, false); if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false); }; return { quit: quit, init: init, run: run, update: update, draw: draw }; })(); var Score = (function() { function onError(state) {}; function quitGame() { quit(Game); }; function onOpen() { quitGame(); }; var NNN = 0; var nMwNn = { src: "img/adblocker-msg.png", img: { isLoaded: 0 } }; var VmVNw = 0; var VwvVv = -1; var WwwvV = null; var WMwMN = { img: null }; var wNnwN = null; var nwWMv = { img: null }; var lastScore = -1; var MnvWv = { img: null }; var scoreLabel = null; var vvWmM = -1; var VMnMw = null; var vMMnW = { img: null }; function nmNnw() { var offsetX = mNw.pos.x; var offsetY = mNw.pos.y; var wX_Scale = offsetX / scaleby; var wY_Scale = offsetY / scaleby; if ((scoreLabel === null) || (lastScore !== World.PLAYER.exp)) { lastScore = World.PLAYER.exp; scoreLabel = GUI.renderText(lastScore + "", "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); MnvWv.img = scoreLabel; MnvWv.img.isLoaded = 1; } CanvasUtils.drawImageHd(MnvWv, wX_Scale + 280, wY_Scale + 117, 0, 0, 0, 1); if ((WwwvV === null) || (VwvVv !== World.PLAYER.level)) { VwvVv = World.PLAYER.level; WwwvV = GUI.renderText(VwvVv + "", "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); wNnwN = GUI.renderText(window.Math.floor(VwvVv / 2), "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); WMwMN.img = WwwvV; WMwMN.img.isLoaded = 1; nwWMv.img = wNnwN; nwWMv.img.isLoaded = 1; } CanvasUtils.drawImageHd(WMwMN, wX_Scale + 108, wY_Scale + 117, 0, 0, 0, 1); CanvasUtils.drawImageHd(nwWMv, wX_Scale + 288, wY_Scale + 147, 0, 0, 0, 1); if ((VMnMw === null) || (vvWmM !== World.PLAYER.kill)) { vvWmM = World.PLAYER.kill; VMnMw = GUI.renderText(vvWmM + "", "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); vMMnW.img = VMnMw; vMMnW.img.isLoaded = 1; } CanvasUtils.drawImageHd(vMMnW, wX_Scale + 453, wY_Scale + 117, 0, 0, 0, 1); var inventory = Game.inventory; var invtr = World.PLAYER.inventory; var len = invtr.length; var MVM = 50 * scaleby; var _y = offsetY + (182 * scaleby); var _x = offsetX + (80 * scaleby); var WnVvn = scaleby; scaleby = scaleby - (0.3 * scaleby); for (var i = 0; i < len; i++) { var wm = inventory[i]; if (invtr[i][0] !== 0) Render.buttonInv(wm, invtr[i], _x, _y, Game.inventoryItemNumber, Game.inventoryAmmoNumber); _x += MVM; } scaleby = WnVvn; if (Home.adblocker === 1) { var breath = MathUtils.Ease.inOutQuad((VmVNw > 500) ? ((1000 - VmVNw) / 500) : (VmVNw / 500)); ctx.globalAlpha = 0.7; CanvasUtils.drawImageHd(nMwNn, wX_Scale + 288, wY_Scale + 193, 0, 0, 0, 1 + (0.04 * breath)); ctx.globalAlpha = 1; VmVNw = (VmVNw + delta) % 1000; } }; var waitAds = 0; var mNw; var playagainbutt; var vWv; function init() { mNw = GUI.createBackground(541, 324, "img/scoreboardnew.png"); playagainbutt = GUI.createButton(123, 35, ["img/play-again-button-out.png", "img/play-again-button-in.png", "img/play-again-button-click.png"]); vWv = GUI.createButton(198, 35, ["img/back-main-page-button-out.png", "img/back-main-page-button-in.png", "img/back-main-page-button-click.png"]); }; var transitionSpeed; var mouseX = new Mouse.LocalMouseEvent; var keyboard = new Keyboard.LocalKeyboardEvent; var transitionDuration = 500; var transitionState = 0; var transitionFunction = function(t) { return MathUtils.Ease.speedLimit(t, MathUtils.Ease.inQuad, 0.05); }; var reverseTransitionDuration = 500; var reverseTransitionState = 0; var reverseTransitionFunction = function(t) { return MathUtils.Ease.speedLimit(t, MathUtils.Ease.outQuad, 0.05); }; var reverseTransition = 0; var transitionDuration = 0; var isWaiting = window.undefined; function run() { Client.onError = onError; Client.onOpen = onOpen; World.PLAYER.isBuilding = 0; World.PLAYER.id = 0; Render.setDetection(0); Render.stopPoisonEffect(); for (var i = 0; i < World.PLAYER.inventory.length; i++) { for (var j = 0; j < 4; j++) World.PLAYER.inventory[i][j] = 0; } var MWMwV = KIT[window.Math.min(KIT.length - 1, World.PLAYER.level)]; for (var i = 0; i < MWMwV.length; i++) { var item = MWMwV[i]; if (item.id !== 0) Game.inventory[i].setImages(INVENTORY[item.id].itemButton.src, INVENTORY[item.id].itemButton.img); var invtr = World.PLAYER.inventory[i]; invtr[1] = item.amount; invtr[2] = 0; invtr[3] = item.life; invtr[0] = item.id; } CanvasUtils.setRenderer(Score); transitionDuration = reverseTransitionDuration; reverseTransition = reverseTransitionDuration; isWaiting = reverseTransitionFunction; reverseTransitionState = 1; update(); }; function quit(callback) { Home.trevdaStyle.display = "none"; transitionSpeed = callback; VVwMW(); transitionDuration = transitionDuration; reverseTransition = transitionDuration; isWaiting = transitionFunction; transitionState = 1; }; function update() { var transitionX = 0; var transitionY = 0; if (transitionDuration > 0) { transitionY = canh; var transition = isWaiting(1 - (transitionDuration / reverseTransition)); if (transition === 1) transitionDuration = 0; if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition); transitionX *= transition; transitionY *= transition; } mNw.pos.x = (canw2 - window.Math.floor(270 * scaleby)) - transitionX; mNw.pos.y = window.Math.max(0, (canh2 - window.Math.floor(162 * scaleby)) + window.Math.floor(-135 * scaleby)) - transitionY; playagainbutt.pos.x = ((canw2 - window.Math.floor(61 * scaleby)) + window.Math.floor(-100 * scaleby)) - transitionX; playagainbutt.pos.y = window.Math.max(0, (canh2 - window.Math.floor(17 * scaleby)) + window.Math.floor(-35 * scaleby)) - transitionY; vWv.pos.x = ((canw2 - window.Math.floor(99 * scaleby)) + window.Math.floor(100 * scaleby)) - transitionX; vWv.pos.y = playagainbutt.pos.y; var mVvwv = window.Math.min(scaleby, 1); window.document.getElementById("trevda").style.top = window.Math.floor((canh2 - 125) + (140 * mVvwv)) + "px"; window.document.getElementById("trevda").style.transform = ("scale(" + mVvwv) + ")"; window.document.getElementById("trevda").style.left = window.Math.floor(canw2 - (325 * mVvwv)) + "px"; }; function draw() { if (transitionManager() === 0) return; ctx.clearRect(0, 0, canw, canh); Render.world(); if (transitionDuration > 0) { NNN = isWaiting(1 - (transitionDuration / reverseTransition)); if (reverseTransitionState === 1) NNN = 1 - window.Math.abs(NNN); NNN = 1 - NNN; } ctx.globalAlpha = 0.3 * NNN; ctx.fillStyle = "#000000"; ctx.fillRect(0, 0, canw, canh); ctx.globalAlpha = 1; mNw.draw(); vWv.draw(); nmNnw(); Render.alertServer(); AudioManager.scheduler(); if (waitAds > 0) { waitAds = window.Math.max(0, waitAds - delta); CanvasUtils.drawImageHd(WAITADS[window.Math.floor(waitAds / 1000)], (playagainbutt.pos.x / scaleby) + 61.5, (playagainbutt.pos.y / scaleby) + 17.75, 0, 0, 0, 1); } else playagainbutt.draw(); }; function transitionManager() { if (transitionState === 1) { update(); if (transitionDuration < 0) { transitionState = 0; playagainbutt.setState(GUI.__BUTTON_OUT__); vWv.setState(GUI.__BUTTON_OUT__); transitionSpeed.run(); return 0; } transitionDuration -= delta; } else if (reverseTransitionState === 1) { update(); if (transitionDuration < 0) { reverseTransitionState = 0; if (World.PLAYER.admin !== 1) Home.trevdaStyle.display = "inline-block"; window.document.getElementById("bod").style.backgroundColor = "#46664d"; MmNNN(); } transitionDuration -= delta; } return 1; }; function mouseDown(event) { Mouse.updateAll(event, Mouse.__MOUSE_DOWN__); var vnm = 0; if (playagainbutt.trigger() === 1) { vnm = 1; } if (vWv.trigger() === 1) { vnm = 1; } }; function mouseUp(event) { Mouse.updateAll(event, Mouse.__MOUSE_UP__); var vnm = 0; if (playagainbutt.trigger() === 1) { vnm = 1; if (waitAds <= 0) { Home.joinServer(); AudioUtils.playFx(AudioUtils._fx.play, 1, 0); } return; } if (vWv.trigger() === 1) { vnm = 1; if (((Client.state & Client.State.__PENDING__) === 0) && ((Client.state & Client.State.__CONNECTED__) === 0)) { quit(Home); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } } }; function mouseMove(event) { Mouse.updateAll(event, Mouse.__MOUSE_MOVE__); var vnm = 0; if (playagainbutt.trigger() === 1) { vnm = 1; } if (vWv.trigger() === 1) { vnm = 1; } }; function touchStart(event) { if (event.touches.length > 0) { Mouse.touchToMouseEvent(mouseX, event, event.touches[0]); mouseDown(mouseX); } }; function touchEnd(event) { mouseUp(mouseX); }; function touchCancel(event) { if (event.touches.length > 0) { Mouse.touchToMouseEvent(mouseX, event, event.touches[0]); mouseUp(mouseX); } }; function touchMove(event) { if (event.touches.length > 0) { Mouse.touchToMouseEvent(mouseX, event, event.touches[0]); mouseMove(mouseX); } }; function MmNNN() { if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false); if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false); }; function VVwMW() { if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false); if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false); }; return { quit: quit, init: init, run: run, update: update, draw: draw }; })(); var Rank = (function() { function onError(state) {}; function quitGame() { quit(Game); }; function onOpen() { quitGame(); }; var NNN = 0; var lastTime = -1; var VmvNV = null; var vnvvM = { img: null }; var mvNVM = -1; var mmvMV = { img: null }; var NmwnM = null; var vvWmM = -1; var VMnMw = null; var vMMnW = { img: null }; function nmNnw() { var offsetX = mNw.pos.x; var offsetY = mNw.pos.y; var wX_Scale = offsetX / scaleby; var wY_Scale = offsetY / scaleby; if ((NmwnM === null) || (mvNVM !== World.playerAlive)) { mvNVM = World.playerAlive; NmwnM = GUI.renderText("#" + window.Math.max(mvNVM, 1), "'Viga', sans-serif", "#FFFFFF", 60, 140, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); mmvMV.img = NmwnM; mmvMV.img.isLoaded = 1; } CanvasUtils.drawImageHd(mmvMV, wX_Scale + 207, wY_Scale + 93, 0, 0, 0, 1); if ((VmvNV === null) || (lastTime !== World.PLAYER.timePlayed)) { lastTime = World.PLAYER.timePlayed; var vMWwM = window.Math.floor((window.Date.now() - World.PLAYER.timePlayed) / 1000); var wWvWM = window.Math.floor(vMWwM / 60); var NNvMn = vMWwM % 60; VmvNV = GUI.renderText((((((wWvWM < 10) ? "0" : "") + wWvWM) + ":") + ((NNvMn < 10) ? "0" : "")) + NNvMn, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); vnvvM.img = VmvNV; vnvvM.img.isLoaded = 1; } CanvasUtils.drawImageHd(vnvvM, wX_Scale + 110, wY_Scale + 100, 0, 0, 0, 1); if ((VMnMw === null) || (vvWmM !== World.PLAYER.kill)) { vvWmM = World.PLAYER.kill; VMnMw = GUI.renderText(vvWmM + "", "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); vMMnW.img = VMnMw; vMMnW.img.isLoaded = 1; } CanvasUtils.drawImageHd(vMMnW, wX_Scale + 309, wY_Scale + 100, 0, 0, 0, 1); }; var waitAds = 0; var mNw; var playagainbutt; var vWv; function init() { mNw = GUI.createBackground(414, 207, "img/scoreboard-br.png"); playagainbutt = GUI.createButton(123, 35, ["img/play-again-button-out.png", "img/play-again-button-in.png", "img/play-again-button-click.png"]); vWv = GUI.createButton(198, 35, ["img/back-main-page-button-out.png", "img/back-main-page-button-in.png", "img/back-main-page-button-click.png"]); }; var transitionSpeed; var mouseX = new Mouse.LocalMouseEvent; var keyboard = new Keyboard.LocalKeyboardEvent; var transitionDuration = 500; var transitionState = 0; var transitionFunction = function(t) { return MathUtils.Ease.speedLimit(t, MathUtils.Ease.inQuad, 0.05); }; var reverseTransitionDuration = 500; var reverseTransitionState = 0; var reverseTransitionFunction = function(t) { return MathUtils.Ease.speedLimit(t, MathUtils.Ease.outQuad, 0.05); }; var reverseTransition = 0; var transitionDuration = 0; var isWaiting = window.undefined; function run() { Client.onError = onError; Client.onOpen = onOpen; World.PLAYER.isBuilding = 0; World.PLAYER.id = 0; Render.setDetection(0); Render.stopPoisonEffect(); CanvasUtils.setRenderer(Rank); transitionDuration = reverseTransitionDuration; reverseTransition = reverseTransitionDuration; isWaiting = reverseTransitionFunction; reverseTransitionState = 1; update(); }; function quit(callback) { Home.trevdaStyle.display = "none"; transitionSpeed = callback; VVwMW(); transitionDuration = transitionDuration; reverseTransition = transitionDuration; isWaiting = transitionFunction; transitionState = 1; }; function update() { var transitionX = 0; var transitionY = 0; if (transitionDuration > 0) { transitionY = canh; var transition = isWaiting(1 - (transitionDuration / reverseTransition)); if (transition === 1) transitionDuration = 0; if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition); transitionX *= transition; transitionY *= transition; } mNw.pos.x = (canw2 - window.Math.floor(207 * scaleby)) - transitionX; mNw.pos.y = window.Math.max(0, (canh2 - window.Math.floor(103 * scaleby)) + window.Math.floor(-135 * scaleby)) - transitionY; playagainbutt.pos.x = ((canw2 - window.Math.floor(61 * scaleby)) + window.Math.floor(-100 * scaleby)) - transitionX; playagainbutt.pos.y = window.Math.max(0, (canh2 - window.Math.floor(17 * scaleby)) + window.Math.floor(-70 * scaleby)) - transitionY; vWv.pos.x = ((canw2 - window.Math.floor(99 * scaleby)) + window.Math.floor(70 * scaleby)) - transitionX; vWv.pos.y = playagainbutt.pos.y; var mVvwv = scaleby; window.document.getElementById("trevda").style.top = window.Math.floor((canh2 - 125) + (130 * mVvwv)) + "px"; window.document.getElementById("trevda").style.transform = ("scale(" + mVvwv) + ")"; }; function draw() { if (transitionManager() === 0) return; ctx.clearRect(0, 0, canw, canh); Render.world(); if (transitionDuration > 0) { NNN = isWaiting(1 - (transitionDuration / reverseTransition)); if (reverseTransitionState === 1) NNN = 1 - window.Math.abs(NNN); NNN = 1 - NNN; } ctx.globalAlpha = 0.3 * NNN; ctx.fillStyle = "#000000"; ctx.fillRect(0, 0, canw, canh); ctx.globalAlpha = 1; mNw.draw(); vWv.draw(); nmNnw(); Render.alertServer(); AudioManager.scheduler(); if (waitAds > 0) { waitAds = window.Math.max(0, waitAds - delta); CanvasUtils.drawImageHd(WAITADS[window.Math.floor(waitAds / 1000)], (playagainbutt.pos.x / scaleby) + 61.5, (playagainbutt.pos.y / scaleby) + 17.75, 0, 0, 0, 1); } else playagainbutt.draw(); }; function transitionManager() { if (transitionState === 1) { update(); if (transitionDuration < 0) { transitionState = 0; playagainbutt.setState(GUI.__BUTTON_OUT__); vWv.setState(GUI.__BUTTON_OUT__); transitionSpeed.run(); return 0; } transitionDuration -= delta; } else if (reverseTransitionState === 1) { update(); if (transitionDuration < 0) { reverseTransitionState = 0; Home.trevdaStyle.display = "inline-block"; window.document.getElementById("bod").style.backgroundColor = "#46664d"; MmNNN(); } transitionDuration -= delta; } return 1; }; function mouseDown(event) { Mouse.updateAll(event, Mouse.__MOUSE_DOWN__); var vnm = 0; if (playagainbutt.trigger() === 1) { vnm = 1; } if (vWv.trigger() === 1) { vnm = 1; } }; function mouseUp(event) { Mouse.updateAll(event, Mouse.__MOUSE_UP__); var vnm = 0; if (playagainbutt.trigger() === 1) { vnm = 1; if (waitAds <= 0) { Home.joinServer(); AudioUtils.playFx(AudioUtils._fx.play, 1, 0); } return; } if (vWv.trigger() === 1) { vnm = 1; if (((Client.state & Client.State.__PENDING__) === 0) && ((Client.state & Client.State.__CONNECTED__) === 0)) { quit(Home); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } } }; function mouseMove(event) { Mouse.updateAll(event, Mouse.__MOUSE_MOVE__); var vnm = 0; if (playagainbutt.trigger() === 1) { vnm = 1; } if (vWv.trigger() === 1) { vnm = 1; } }; function touchStart(event) { if (event.touches.length > 0) { Mouse.touchToMouseEvent(mouseX, event, event.touches[0]); mouseDown(mouseX); } }; function touchEnd(event) { mouseUp(mouseX); }; function touchCancel(event) { if (event.touches.length > 0) { Mouse.touchToMouseEvent(mouseX, event, event.touches[0]); mouseUp(mouseX); } }; function touchMove(event) { if (event.touches.length > 0) { Mouse.touchToMouseEvent(mouseX, event, event.touches[0]); mouseMove(mouseX); } }; function MmNNN() { if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false); if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false); }; function VVwMW() { if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false); if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false); }; return { quit: quit, init: init, run: run, update: update, draw: draw }; })(); var Editor = (function() { var NmW = 0; var isMapOpen = 0; var isSettingsOpen = 0; var MNnnv = 0; var inventoryEmpty = CanvasUtils.loadImage("img/inv-empty.png"); var inventoryEmpty2 = [inventoryEmpty, inventoryEmpty, inventoryEmpty]; var Wnw = []; var NWw = 0; function editorSetValues() { World.PLAYER.id = 1; World.playerNumber = 2; World.gameMode = 0; World.PLAYER.skillPoint = 0; World.PLAYER.gridPrev[i] = 0; World.PLAYER.isBuilding = 1; World.PLAYER.teamJoin = 0; World.PLAYER.lastAreas = [ [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1] ]; World.gauges.rad.value = World.gauges.rad._max; World.gauges.rad.decrease = -1; World.allocatePlayers([0, window.document.getElementById("nicknameInput").value]); World.initDayCycle(0, 0); Render.reset(window.undefined, 0, 0.07); Render.scale = 0; Entitie.removeAll(); World.PLAYER.buildRotate = 0; World.PLAYER.blueprint = 0; vmV = 0; mnnMn(1, __ENTITIE_PLAYER__, 550, 550, 21 << 8, 0); }; function _OpenBox(box) { _CloseBox(); NmW = 1; if (box === 1) isCraftOpen = 1; else if (box === 2) isChestOpen = 1; }; function _CloseBox() { NmW = 0; BUTTON_CLOSE_BOX.setState(GUI.__BUTTON_OUT__); isMapOpen = 0; isSettingsOpen = 0; isCraftOpen = 0; isChestOpen = 0; isTeamOpen = 0; World.releaseBuilding(); }; var nmMMm = 0; var BUTTON_CLOSE_BOX = GUI.createButton(43, 43, ["img/close-box-out.png", "img/close-box-in.png", "img/close-box-click.png"]); var highpartout = [CanvasUtils.loadImage("img/high-particules-out.png"), CanvasUtils.loadImage("img/high-particules-in.png"), CanvasUtils.loadImage("img/high-particules-click.png")]; var wVwnm = GUI.createButton(54, 42, null, highpartout); var vWmmV = [CanvasUtils.loadImage("img/low-particules-out.png"), CanvasUtils.loadImage("img/low-particules-in.png"), CanvasUtils.loadImage("img/low-particules-click.png")]; var VnWMV = GUI.createButton(54, 42, null, vWmmV); var vVvNM = [CanvasUtils.loadImage("img/no-particules-out.png"), CanvasUtils.loadImage("img/no-particules-in.png"), CanvasUtils.loadImage("img/no-particules-click.png")]; var wwMwv = GUI.createButton(54, 42, null, vVvNM); var VVVMw = [CanvasUtils.loadImage("img/high-resolution-out.png"), CanvasUtils.loadImage("img/high-resolution-in.png"), CanvasUtils.loadImage("img/high-resolution-click.png")]; var wWNnw = GUI.createButton(54, 42, null, VVVMw); var wmnmv = [CanvasUtils.loadImage("img/medium-resolution-out.png"), CanvasUtils.loadImage("img/medium-resolution-in.png"), CanvasUtils.loadImage("img/medium-resolution-click.png")]; var nvwMN = GUI.createButton(54, 42, null, wmnmv); var vmVnn = [CanvasUtils.loadImage("img/low-resolution-out.png"), CanvasUtils.loadImage("img/low-resolution-in.png"), CanvasUtils.loadImage("img/low-resolution-click.png")]; var MNVVn = GUI.createButton(54, 42, null, vmVnn); var NwVwn = [CanvasUtils.loadImage("img/azerty-button-out.png"), CanvasUtils.loadImage("img/azerty-button-in.png"), CanvasUtils.loadImage("img/azerty-button-click.png")]; var VmvmN = GUI.createButton(81, 33, null, NwVwn); var NMnMN = [CanvasUtils.loadImage("img/qwerty-button-out.png"), CanvasUtils.loadImage("img/qwerty-button-in.png"), CanvasUtils.loadImage("img/qwerty-button-click.png")]; var WMVVn = GUI.createButton(87, 33, null, NMnMN); var soundonbutt = [CanvasUtils.loadImage("img/sound-on-out.png"), CanvasUtils.loadImage("img/sound-on-in.png"), CanvasUtils.loadImage("img/sound-on-click.png")]; var soundoffbutt = [CanvasUtils.loadImage("img/sound-off-out.png"), CanvasUtils.loadImage("img/sound-off-in.png"), CanvasUtils.loadImage("img/sound-off-click.png")]; var wvNNV = GUI.createButton(51, 36, null, soundonbutt); var WVnnn = GUI.createButton(51, 36, null, soundoffbutt); var NmVWV = GUI.createButton(51, 36, null, soundonbutt); var vVMWm = GUI.createButton(51, 36, null, soundoffbutt); var mWM = 0; var MWVNw = 0; var NVNwm = 0; var MMMvM = 0; var vmWNW = 0; var NnVMv = 0; var WNmmw = 0; var nvnNv = 0; var vmV = 0; function mnnMn(pid, type, offsetX, offsetY, extra, state) { var entity = Entitie.get(pid, vmV, vmV, type); setEntitie(entity, pid, vmV, vmV, type, offsetX, offsetY, offsetX, offsetY, extra, 0, state); vmV++; }; function editorUseCode(code) { editorSetValues(); code = code.split("!b="); code.shift(); for (var i = 0; i < code.length; i++) { var building = code[i].split(":"); if (building.length > 4) Vnvmv(building[0], building[1], building[3], building[2], building[4]); else Vnvmv(building[0], 0, building[2], building[1], building[3]); } }; function Vnvmv(item, subtype, i, j, rotation) { item = window.Number(item) >>> 0; subtype = window.Number(subtype) >>> 0; i = window.Number(i) >>> 0; j = window.Number(j) >>> 0; rotation = window.Number(rotation) >>> 0; if (((rotation > 3) || (i >= MapManager.height)) || (j >= MapManager.height)) return; var building = INVENTORY[item]; if (((building === window.undefined) || (building.subtype === window.undefined)) || ((building.subtype > 0) && (building.building.length <= subtype))) return; var rotation = (building.wall === 1) ? 0 : rotation; var offsetX = (building.xCenter[rotation] + 50) + (100 * j); var offsetY = (building.yCenter[rotation] + 50) + (100 * i); var type = 0; switch ((building.subtype === 0) ? building.zid : building.subtype[subtype].zid) { case 0: type = __ENTITIE_BUILD_DOWN__; break; case 1: type = __ENTITIE_BUILD_TOP__; break; case 2: type = __ENTITIE_BUILD_GROUND2__; break; default: type = __ENTITIE_BUILD_GROUND__; break; } nWMWn(1, type, offsetX, offsetY, rotation, 1 + ((building.subtype === 0) ? 0 : (subtype << 5)), building.id); }; function nWMWn(pid, type, offsetX, offsetY, rotation, state, subtype) { var entity = Entitie.get(pid, vmV, vmV, type); setEntitie(entity, pid, vmV, vmV, type, offsetX, offsetY, offsetX, offsetY, (subtype << 7) + (rotation << 5), 0, state); var update = ENTITIES[type].update; if (update !== window.undefined) update(entity, offsetX, offsetY); vmV++; }; function editorBuildtoCode(type) { var code = ""; var buildings = Entitie.units[type]; var buildingsBorder = Entitie.border[type]; var buildingsLen = buildingsBorder.border; for (i = 0; i < buildingsLen; i++) { var player = buildings[buildingsBorder.cycle[i]]; var item = INVENTORY[player.extra >> 7]; code += ("!b=" + item.id) + ":"; if (item.subtype !== 0) code += player.subtype + ":"; code += (((player.j + ":") + player.i) + ":") + ((player.extra >> 5) & 3); } return code; }; function editorBuildRemove(type, offsetX, offsetY) { var buildings = Entitie.units[type]; var buildingsBorder = Entitie.border[type]; var buildingsLen = buildingsBorder.border; for (i = 0; i < buildingsLen; i++) { var building = buildings[buildingsBorder.cycle[i]]; if ((((building.x >= offsetX) && (building.x <= (offsetX + 100))) && (building.y >= offsetY)) && (building.y <= (offsetY + 100))) { Entitie.remove(building.pid, building.id, building.uid, type, building.extra); return; } } }; function vnMVv() { if ((Mouse.state === Mouse.__MOUSE_DOWN__) && (World.PLAYER.click === 0)) { if (World.PLAYER.isBuilding === 1) { World.PLAYER.click = -1; if (World.PLAYER.canBuild === 1) { if ((((World.PLAYER.jBuild !== -1) && (World.PLAYER.iBuild !== -1)) && (World.PLAYER.jBuild !== MapManager.width)) && (World.PLAYER.iBuild !== MapManager.height)) Vnvmv(World.PLAYER.blueprint, World.PLAYER.furniture, World.PLAYER.iBuild, World.PLAYER.jBuild, World.PLAYER.buildRotate); } else { var offsetX = 100 * World.PLAYER.jBuild; var offsetY = 100 * World.PLAYER.iBuild; editorBuildRemove(__ENTITIE_BUILD_DOWN__, offsetX, offsetY); editorBuildRemove(__ENTITIE_BUILD_TOP__, offsetX, offsetY); editorBuildRemove(__ENTITIE_BUILD_GROUND2__, offsetX, offsetY); editorBuildRemove(__ENTITIE_BUILD_GROUND__, offsetX, offsetY); } } } else if (Mouse.state === Mouse.__MOUSE_UP__) { if (World.PLAYER.isBuilding === 1) { nmMMm = 0; World.PLAYER.click = 0; } } }; var NnMMn = window.Math.sqrt(2) / 2; function nNvvV() { var move = 0; if (Keyboard.isLeft() === 1) move |= 1; if (Keyboard.isRight() === 1) move |= 2; if (Keyboard.isBottom() === 1) move |= 4; if (Keyboard.isTop() === 1) move |= 8; if (move > 0) { var pid = World.players[1].locatePlayer; if (pid === -1) return; var PLAYER = Entitie.units[__ENTITIE_PLAYER__][pid]; WvvVn = (((move & 3) && (move & 12)) ? NnMMn : 1) * ((Keyboard.isShift() === 0) ? (delta * 1.5) : (delta * 11)); if (move & 1) PLAYER.rx = PLAYER.x - WvvVn; else if (move & 2) PLAYER.rx = PLAYER.x + WvvVn; if (move & 8) PLAYER.ry = PLAYER.y - WvvVn; else if (move & 4) PLAYER.ry = PLAYER.y + WvvVn; PLAYER.rx = window.Math.max(0, window.Math.min(PLAYER.rx, MapManager.width * 100)); PLAYER.ry = window.Math.max(0, window.Math.min(PLAYER.ry, MapManager.height * 100)); PLAYER.nx = PLAYER.rx; PLAYER.ny = PLAYER.ry; } }; function wWNmN() { var offsetX = editorBuildings.pos.x - (5 * scaleby); var offsetY = editorBuildings.pos.y + (74 * scaleby); var MVM = 45 * scaleby; for (var i = 0; i < NWw; i++) { var wm = Wnw[i]; wm.pos.x = offsetX + ((i % 8) * MVM); wm.pos.y = offsetY + (window.Math.floor(i / 8) * MVM); wm.draw(); } }; function editorExportCode() { if (Nnw <= 0) Nnw = 3000; else if (Nnw <= 500) Nnw = 3000 - Nnw; else if (Nnw <= 2500) Nnw = 2500; var code = ""; code += editorBuildtoCode(__ENTITIE_BUILD_DOWN__); code += editorBuildtoCode(__ENTITIE_BUILD_TOP__); code += editorBuildtoCode(__ENTITIE_BUILD_GROUND2__); code += editorBuildtoCode(__ENTITIE_BUILD_GROUND__); var vMV = window.document.createElement('textarea'); vMV["value"] = code; window.document["body"]["appendChild"](vMV); vMV["select"](); window.document["execCommand"]('copy'); window.document["body"]["removeChild"](vMV); }; function markPosition() { if (Nnw > 0) { Nnw -= delta; if (Nnw > 2500) ctx.globalAlpha = MathUtils.Ease.inOutQuad((3000 - Nnw) / 500); else if (Nnw < 500) ctx.globalAlpha = MathUtils.Ease.inOutQuad(Nnw / 500); ctx.drawImage(VWWvn, editorCopy.pos.x - (85 * scaleby), editorCopy.pos.y - (40 * scaleby), VWWvn.wh * scaleby, VWWvn.h2 * scaleby); ctx.globalAlpha = 1; } if (NVVNW[World.PLAYER._j] === window.undefined) NVVNW[World.PLAYER._j] = []; if (NVVNW[World.PLAYER._j][World.PLAYER._i] === window.undefined) NVVNW[World.PLAYER._j][World.PLAYER._i] = GUI.renderText(((("(" + World.PLAYER._j) + ",") + World.PLAYER._i) + ")", "'Viga', sans-serif", "#FFFFFF", 52, 455, "#000000", 22, 22, window.undefined, window.undefined, 0.4, window.undefined, "#000000", 15.6); var img = NVVNW[World.PLAYER._j][World.PLAYER._i]; ctx.drawImage(img, 5 * scaleby, editorZoomIn.pos.y - (42 * scaleby), img.wh * scaleby, img.h2 * scaleby); }; var VWWvn = null; var VWWvn = null; var Nnw = 0; var NVVNW = []; var vVnNn = 0; var BACKGROUND_SETTBOX; var BACKGROUND_BIGMAP; var minimap; var editorScreen; var editorOptions; var editorMap; var editorLogic; var editorExplosions; var editorRoad; var editorFurniture; var editorBuildings; var editorZoomIn; var editorZoomOut; var editorDelete; var editorImport; var editorCopy; var editorHome; var editorZoomIn; var editorZoomOut; function init() { VWWvn = GUI.renderText("Copied to clipboard", "'Viga', sans-serif", "#FFFFFF", 40, 350, "#000000", 18, 18, window.undefined, window.undefined, 0.6); for (i = 0; i < 64; i++) Wnw.push(GUI.createButton(40, 40, null, inventoryEmpty2)); BACKGROUND_SETTBOX = GUI.createBackground(269, 267, "img/settings-box.png"); BACKGROUND_BIGMAP = GUI.createBackground(412, 412, "img/borderBigMinimap2.png"); minimap = GUI.createBackground(128, 128, "img/minimap.png"); editorScreen = GUI.createButton(40, 40, ["img/full-screen-out.png", "img/full-screen-in.png", "img/full-screen-click.png"]); editorOptions = GUI.createButton(40, 40, ["img/settings-out.png", "img/settings-in.png", "img/settings-click.png"]); editorMap = GUI.createButton(40, 40, ["img/minimap-button-out.png", "img/minimap-button-in.png", "img/minimap-button-click.png"]); editorLogic = GUI.createButton(67, 67, ["img/logic-button-out.png", "img/logic-button-in.png", "img/logic-button-click.png"]); editorExplosions = GUI.createButton(67, 67, ["img/map-explosive-button-out.png", "img/map-explosive-button-in.png", "img/map-explosive-button-click.png"]); editorRoad = GUI.createButton(67, 67, ["img/map-road-button-out.png", "img/map-road-button-in.png", "img/map-road-button-click.png"]); editorFurniture = GUI.createButton(67, 67, ["img/map-furniture-button-out.png", "img/map-furniture-button-in.png", "img/map-furniture-button-click.png"]); editorBuildings = GUI.createButton(67, 67, ["img/map-building-button-out.png", "img/map-building-button-in.png", "img/map-building-button-click.png"]); editorZoomIn = GUI.createButton(46.5, 46.5, ["img/zoom-button-out.png", "img/zoom-button-in.png", "img/zoom-button-click.png"]); editorZoomOut = GUI.createButton(46.5, 46.5, ["img/unzoom-button-out.png", "img/unzoom-button-in.png", "img/unzoom-button-click.png"]); editorDelete = GUI.createButton(40, 40, ["img/map-delete-button-out.png", "img/map-delete-button-in.png", "img/map-delete-button-click.png"]); editorImport = GUI.createButton(46.5, 46.5, ["img/import-button-out.png", "img/import-button-in.png", "img/import-button-click.png"]); editorCopy = GUI.createButton(46.5, 46.5, ["img/copy-paste-button-out.png", "img/copy-paste-button-in.png", "img/copy-paste-button-click.png"]); editorHome = GUI.createButton(60, 60, ["img/home-button-out.png", "img/home-button-in.png", "img/home-button-click.png"]); }; var transitionSpeed; var mouseX = new Mouse.LocalMouseEvent; var keyboard = new Keyboard.LocalKeyboardEvent; var transitionDuration = 1000; var transitionState = 0; var transitionFunction = MathUtils.Ease.inQuad; var reverseTransitionDuration = 1000; var reverseTransitionState = 0; var reverseTransitionFunction = MathUtils.Ease.outQuad; var reverseTransition = 0; var transitionDuration = 0; var isWaiting = window.undefined; function run() { window.document.getElementById("bod").style.backgroundColor = "#46664D"; nmMMm = 0; AudioManager.startGame(); if (vVnNn === 0) { vVnNn = 1; var itemSub = INVENTORY[IID.__ROAD__].subtype; for (var i = 0; i < itemSub.length; i++) { var item = itemSub[i]; item.itemButton = { src: [item.building.src, "img/useless.png", "img/useless.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }; } var itemSub = INVENTORY[IID.__FURNITURE__].subtype; for (var i = 0; i < itemSub.length; i++) { var item = itemSub[i]; item.itemButton = { src: [item.building.src, "img/useless.png", "img/useless.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }; } } editorSetValues(); CanvasUtils.setRenderer(Editor); transitionDuration = reverseTransitionDuration; reverseTransition = reverseTransitionDuration; isWaiting = reverseTransitionFunction; reverseTransitionState = 1; update(); }; function quit(callback) { _CloseBox(); AudioManager.quitGame(); transitionSpeed = callback; VVwMW(); transitionDuration = transitionDuration; reverseTransition = transitionDuration; isWaiting = transitionFunction; transitionState = 1; }; function update() { var transitionX = 0; var transitionY = 0; if (transitionDuration > 0) { transitionY = canh; var transition = isWaiting(1 - (transitionDuration / reverseTransition)); if (transition === 1) transitionDuration = 0; if (reverseTransitionState === 1) transition = 1 - window.Math.abs(transition); transitionX *= transition; transitionY *= transition; } BACKGROUND_SETTBOX.pos.x = (canw2 - window.Math.floor(134 * scaleby)) + transitionX; BACKGROUND_SETTBOX.pos.y = window.Math.max(0, canh2 - window.Math.floor(133 * scaleby)) + transitionY; BACKGROUND_BIGMAP.pos.x = (canw2 - window.Math.floor(206 * scaleby)) + transitionX; BACKGROUND_BIGMAP.pos.y = window.Math.max(0, canh2 - window.Math.floor(206 * scaleby)) + transitionY; minimap.pos.x = window.Math.floor(5 * scaleby) - transitionX; minimap.pos.y = window.Math.floor(5 * scaleby) - transitionY; editorScreen.pos.x = minimap.pos.x + window.Math.floor(126 * scaleby); editorScreen.pos.y = minimap.pos.y; editorOptions.pos.x = editorScreen.pos.x; editorOptions.pos.y = editorScreen.pos.y + window.Math.floor(44.5 * scaleby); editorMap.pos.x = editorOptions.pos.x; editorMap.pos.y = editorOptions.pos.y + window.Math.floor(44.5 * scaleby); editorLogic.pos.x = ((canw - window.Math.floor(67 * scaleby)) + window.Math.floor(-5 * scaleby)) - transitionX; editorLogic.pos.y = window.Math.floor(5 * scaleby) - transitionY; editorExplosions.pos.x = editorLogic.pos.x + window.Math.floor(-70 * scaleby); editorExplosions.pos.y = window.Math.floor(5 * scaleby) - transitionY; editorRoad.pos.x = editorExplosions.pos.x + window.Math.floor(-70 * scaleby); editorRoad.pos.y = window.Math.floor(5 * scaleby) - transitionY; editorFurniture.pos.x = editorRoad.pos.x + window.Math.floor(-70 * scaleby); editorFurniture.pos.y = window.Math.floor(5 * scaleby) - transitionY; editorBuildings.pos.x = editorFurniture.pos.x + window.Math.floor(-70 * scaleby); editorBuildings.pos.y = window.Math.floor(5 * scaleby) - transitionY; editorZoomIn.pos.x = window.Math.floor(5 * scaleby); editorZoomIn.pos.y = (canh - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby); editorZoomOut.pos.x = editorZoomIn.pos.x + window.Math.floor(50 * scaleby); editorZoomOut.pos.y = (canh - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby); editorDelete.pos.x = minimap.pos.x + window.Math.floor(89 * scaleby); editorDelete.pos.y = minimap.pos.y + window.Math.floor(126 * scaleby); editorImport.pos.x = (canw - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby); editorImport.pos.y = (canh - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby); editorCopy.pos.x = editorImport.pos.x + window.Math.floor(-50 * scaleby); editorCopy.pos.y = (canh - window.Math.floor(46.5 * scaleby)) + window.Math.floor(-5 * scaleby); editorHome.pos.x = minimap.pos.x; editorHome.pos.y = minimap.pos.y + window.Math.floor(126 * scaleby); }; function draw() { if (transitionManager() === 0) return; vnMVv(); nNvvV(); ctx.clearRect(0, 0, canw, canh); World.updatePosition(); Render.world(); Render.minimap(minimap.pos.x, minimap.pos.y); minimap.draw(); editorScreen.draw(); editorOptions.draw(); editorMap.draw(); editorLogic.draw(); editorExplosions.draw(); editorRoad.draw(); editorFurniture.draw(); editorBuildings.draw(); editorZoomIn.draw(); editorZoomOut.draw(); editorDelete.draw(); editorImport.draw(); editorCopy.draw(); editorHome.draw(); markPosition(); wWNmN(); if (NmW === 1) { if (isMapOpen === 1) Render.bigminimap(BACKGROUND_BIGMAP, BUTTON_CLOSE_BOX); else if (isSettingsOpen === 1) Render.config(BACKGROUND_SETTBOX, wWNnw, nvwMN, MNVVn, VmvmN, WMVVn, wvNNV, WVnnn, NmVWV, vVMWm, BUTTON_CLOSE_BOX, wVwnm, VnWMV, wwMwv); } else if (isTouchScreen === 1) { if ((((Keyboard.isLeft() + Keyboard.isRight()) + Keyboard.isTop()) + Keyboard.isBottom()) >= 1) { ctx.globalAlpha = 0.3; var offsetX = canw2ns - (canw4ns * 1.5); var offsetY = canh2ns + (canw4ns / 4); CanvasUtils.circle(ctx, offsetX, offsetY, 60); CanvasUtils.drawPath(ctx, "#000000"); CanvasUtils.circle(ctx, offsetX + ((window.Math.cos(MWVNw) * NVNwm) * scaleby), offsetY + ((window.Math.sin(MWVNw) * NVNwm) * scaleby), 30); CanvasUtils.drawPath(ctx, "#FFFFFF"); ctx.globalAlpha = 1; } if (vmWNW === 1) { ctx.globalAlpha = 0.3; var offsetX = canw2ns + (canw4ns * 1.5); var offsetY = canh2ns + (canw4ns / 4); CanvasUtils.circle(ctx, offsetX, offsetY, 60); CanvasUtils.drawPath(ctx, "#000000"); CanvasUtils.circle(ctx, offsetX + ((window.Math.cos(Mouse.angle) * 25) * scaleby), offsetY + ((window.Math.sin(Mouse.angle) * 25) * scaleby), 30); CanvasUtils.drawPath(ctx, "#FFFFFF"); ctx.globalAlpha = 1; } } AudioManager.scheduler(); }; function transitionManager() { if (transitionState === 1) { update(); if (transitionDuration < 0) { transitionState = 0; editorScreen.setState(GUI.__BUTTON_OUT__); editorOptions.setState(GUI.__BUTTON_OUT__); editorMap.setState(GUI.__BUTTON_OUT__); editorLogic.setState(GUI.__BUTTON_OUT__); editorExplosions.setState(GUI.__BUTTON_OUT__); editorRoad.setState(GUI.__BUTTON_OUT__); editorFurniture.setState(GUI.__BUTTON_OUT__); editorBuildings.setState(GUI.__BUTTON_OUT__); editorZoomIn.setState(GUI.__BUTTON_OUT__); editorZoomOut.setState(GUI.__BUTTON_OUT__); editorDelete.setState(GUI.__BUTTON_OUT__); editorImport.setState(GUI.__BUTTON_OUT__); editorCopy.setState(GUI.__BUTTON_OUT__); editorHome.setState(GUI.__BUTTON_OUT__); transitionSpeed.run(); return 0; } transitionDuration -= delta; } else if (reverseTransitionState === 1) { update(); if (transitionDuration < 0) { reverseTransitionState = 0; MmNNN(); } transitionDuration -= delta; } return 1; }; function mouseDown(event) { Mouse.updateAll(event, Mouse.__MOUSE_DOWN__); var vnm = 0; if (editorScreen.trigger() === 1) { vnm = 1; } if (editorOptions.trigger() === 1) { vnm = 1; } if (editorMap.trigger() === 1) { vnm = 1; } if (editorLogic.trigger() === 1) { vnm = 1; } if (editorExplosions.trigger() === 1) { vnm = 1; } if (editorRoad.trigger() === 1) { vnm = 1; } if (editorFurniture.trigger() === 1) { vnm = 1; } if (editorBuildings.trigger() === 1) { vnm = 1; } if (editorZoomIn.trigger() === 1) { vnm = 1; } if (editorZoomOut.trigger() === 1) { vnm = 1; } if (editorDelete.trigger() === 1) { vnm = 1; } if (editorImport.trigger() === 1) { vnm = 1; } if (editorHome.trigger() === 1) { vnm = 1; } if (NmW === 1) { BUTTON_CLOSE_BOX.trigger(); if (isSettingsOpen === 1) { VmvmN.trigger(); WMVVn.trigger(); wWNnw.trigger(); nvwMN.trigger(); MNVVn.trigger(); wvNNV.trigger(); WVnnn.trigger(); NmVWV.trigger(); vVMWm.trigger(); VnWMV.trigger(); wVwnm.trigger(); wwMwv.trigger(); } } else { for (var i = 0; i < NWw; i++) { if (Wnw[i].trigger() === 1) vnm = 1; } } if ((vnm === 0) && (NmW === 0)) { nmMMm = 1; if (World.PLAYER.click === -1) World.PLAYER.click = 0; } else { if (World.PLAYER.click === 0) World.PLAYER.click = -1; } }; function mouseUp(event) { Mouse.updateAll(event, Mouse.__MOUSE_UP__); var vnm = 0; if (editorScreen.trigger() === 1) { vnm = 1; if (MNnnv === 0) { MNnnv = 1; CanvasUtils.enableFullscreen(); if (World.day === 0) canvas.style.backgroundColor = "#3D5942"; else canvas.style.backgroundColor = "#0B2129"; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } else { MNnnv = 0; CanvasUtils.disableFullscreen(); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } } if (editorOptions.trigger() === 1) { vnm = 1; if (isSettingsOpen === 0) { _CloseBox(); NmW = 1; isSettingsOpen = 1; AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } else { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } if (editorMap.trigger() === 1) { vnm = 1; if (isMapOpen === 0) { _CloseBox(); NmW = 1; isMapOpen = 1; AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } else { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } if (editorLogic.trigger() === 1) { vnm = 1; NWw = 0; for (var i = 1; i < INVENTORY.length; i++) { var item = INVENTORY[i]; if (item.behavior === BEHAVIOR.__LOGIC__) { Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img); Wnw[NWw].itemId = item.id; NWw++; } } AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } if (editorExplosions.trigger() === 1) { vnm = 1; NWw = 0; for (var i = 1; i < INVENTORY.length; i++) { var item = INVENTORY[i]; if ((((item.id === IID.__LANDMINE__) || (item.id === IID.__C4__)) || (item.id === IID.__WOOD_SPIKE__)) || (item.id === IID.__DYNAMITE__)) { Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img); Wnw[NWw].itemId = item.id; NWw++; } } AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } if (editorRoad.trigger() === 1) { vnm = 1; NWw = 0; var itemSub = INVENTORY[IID.__ROAD__].subtype; for (var i = 0; i < itemSub.length; i++) { var item = itemSub[i]; Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img); Wnw[NWw].itemId = IID.__ROAD__; Wnw[NWw].itemSubId = i; NWw++; } AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } if (editorFurniture.trigger() === 1) { vnm = 1; NWw = 0; var itemSub = INVENTORY[IID.__FURNITURE__].subtype; for (var i = 0; i < itemSub.length; i++) { var item = itemSub[i]; Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img); Wnw[NWw].itemId = IID.__FURNITURE__; Wnw[NWw].itemSubId = i; NWw++; } AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } if (editorBuildings.trigger() === 1) { vnm = 1; NWw = 0; for (var i = 1; i < INVENTORY.length; i++) { var item = INVENTORY[i]; if (((((item.wall === 1) || (item.lowWall === 1)) || (item.door === 1)) || (IID.__CHEST__ === 1)) || (IID.__FRIDGE__ === 1)) { Wnw[NWw].setImages(item.itemButton.src, item.itemButton.img); Wnw[NWw].itemId = item.id; NWw++; } } AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } if (editorZoomIn.trigger() === 1) { vnm = 1; if (Render.scale < 1.5) { Render.scale += 0.1; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); editorZoomOut.show(); if (Render.scale >= 1.5) editorZoomIn.hide(); } } if (editorZoomOut.trigger() === 1) { vnm = 1; if (Render.scale > -0.95) { if (Render.scale < 0) Render.scale -= 0.05; else Render.scale -= 0.1; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); editorZoomIn.show(); if (Render.scale <= -0.95) editorZoomOut.hide(); } } if (editorDelete.trigger() === 1) { vnm = 1; editorSetValues(); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); } if (editorImport.trigger() === 1) { vnm = 1; AudioUtils.playFx(AudioUtils._fx.open, 1, 0); var code = window["prompt"]("Please enter your code here", ""); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); if ((code != null) && (code != "")) editorUseCode(code); } if (editorCopy.trigger() === 1) { vnm = 1; AudioUtils.playFx(AudioUtils._fx.button, 1, 0); editorExportCode(); } if (editorHome.trigger() === 1) { vnm = 1; Editor.quit(Home); AudioUtils.playFx(AudioUtils._fx.play, 1, 0); } if (NmW === 1) { if (BUTTON_CLOSE_BOX.trigger() === 1) { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } if (isSettingsOpen === 1) { WMVVn.setState(GUI.__BUTTON_OUT__); VmvmN.setState(GUI.__BUTTON_OUT__); wWNnw.setState(GUI.__BUTTON_OUT__); nvwMN.setState(GUI.__BUTTON_OUT__); MNVVn.setState(GUI.__BUTTON_OUT__); wvNNV.setState(GUI.__BUTTON_OUT__); WVnnn.setState(GUI.__BUTTON_OUT__); NmVWV.setState(GUI.__BUTTON_OUT__); vVMWm.setState(GUI.__BUTTON_OUT__); wVwnm.setState(GUI.__BUTTON_OUT__); VnWMV.setState(GUI.__BUTTON_OUT__); wwMwv.setState(GUI.__BUTTON_OUT__); if (VmvmN.trigger() === 1) { Keyboard.setAzerty(); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (WMVVn.trigger() === 1) { Keyboard.setQwert(); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (wWNnw.trigger() === 1) { CanvasUtils.setResolution(1); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (nvwMN.trigger() === 1) { CanvasUtils.setResolution(2); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (MNVVn.trigger() === 1) { CanvasUtils.setResolution(3); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (wvNNV.trigger() === 1) { AudioUtils.setAudio(1); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (WVnnn.trigger() === 1) { AudioUtils.setAudio(0); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (NmVWV.trigger() === 1) { AudioUtils.setFx(1); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (vVMWm.trigger() === 1) { AudioUtils.setFx(0); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (VnWMV.trigger() === 1) { Render.setParticles(1); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (wVwnm.trigger() === 1) { Render.setParticles(2); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } else if (wwMwv.trigger() === 1) { Render.setParticles(0); AudioUtils.playFx(AudioUtils._fx.button, 1, 0); return; } var MMMnn = BACKGROUND_SETTBOX.pos; if ((((Mouse.sx < MMMnn.x) || (Mouse.sx > (MMMnn.x + (234 * scaleby)))) || (Mouse.sy < MMMnn.y)) || (Mouse.sy > (MMMnn.y + (232 * scaleby)))) { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } else if (isMapOpen === 1) { var mNMnn = BACKGROUND_BIGMAP.pos; if ((((Mouse.sx < mNMnn.x) || (Mouse.sx > (mNMnn.x + (412 * scaleby)))) || (Mouse.sy < mNMnn.y)) || (Mouse.sy > (mNMnn.y + (412 * scaleby)))) { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); return; } } } else { for (var i = 0; i < NWw; i++) { if (Wnw[i].trigger() === 1) { AudioUtils.playFx(AudioUtils._fx.button, 1, 0); World.PLAYER.blueprint = Wnw[i].itemId; World.PLAYER.furniture = Wnw[i].itemSubId; console.log(Wnw[i].itemId) if (World.PLAYER.blueprint === IID.__ROAD__) World.PLAYER.buildRotate = 0; } } } }; function mouseMove(event) { Mouse.updateAll(event, Mouse.__MOUSE_MOVE__); var vnm = 0; if (editorScreen.trigger() === 1) { vnm = 1; } if (editorOptions.trigger() === 1) { vnm = 1; } if (editorMap.trigger() === 1) { vnm = 1; } if (editorLogic.trigger() === 1) { vnm = 1; } if (editorExplosions.trigger() === 1) { vnm = 1; } if (editorRoad.trigger() === 1) { vnm = 1; } if (editorFurniture.trigger() === 1) { vnm = 1; } if (editorBuildings.trigger() === 1) { vnm = 1; } if (editorZoomIn.trigger() === 1) { vnm = 1; } if (editorZoomOut.trigger() === 1) { vnm = 1; } if (editorDelete.trigger() === 1) { vnm = 1; } if (editorImport.trigger() === 1) { vnm = 1; } if (editorCopy.trigger() === 1) { vnm = 1; } if (editorHome.trigger() === 1) { vnm = 1; } if (NmW === 1) { BUTTON_CLOSE_BOX.trigger(); if (isSettingsOpen === 1) { VmvmN.trigger(); WMVVn.trigger(); wWNnw.trigger(); nvwMN.trigger(); MNVVn.trigger(); wvNNV.trigger(); WVnnn.trigger(); NmVWV.trigger(); vVMWm.trigger(); VnWMV.trigger(); wVwnm.trigger(); wwMwv.trigger(); } } else { for (var i = 0; i < NWw; i++) Wnw[i].trigger(); } }; function NmN(event) { Keyboard.keyup(event); if (event.keyCode === 77) { if (isMapOpen === 0) { _CloseBox(); NmW = 1; isMapOpen = 1; AudioUtils.playFx(AudioUtils._fx.open, 1, 0); } else { _CloseBox(); AudioUtils.playFx(AudioUtils._fx.open, 1, 0); } } else if ((event.keyCode === 27) && (NmW === 1)) { AudioUtils.playFx(AudioUtils._fx.open, 1, 0); _CloseBox(); } else if (event.keyCode === 82) { if ((World.PLAYER.isBuilding === 1) && (World.PLAYER.blueprint !== IID.__ROAD__)) World.PLAYER.buildRotate = (World.PLAYER.buildRotate + 1) % 4; } }; function vnW(event) { Keyboard.keydown(event); if ((((event.keyCode === 37) || (event.keyCode === 38)) || (event.keyCode === 39)) || (event.keyCode === 40)) { event.preventDefault(); return false; } }; function touchStart(event) { var NVN = 0; for (var wVV = 0; wVV < event.touches.length; wVV++) { Mouse.touchToMouseEvent(mouseX, event, event.touches[wVV]); if (NmW === 0) { var sx = window.Math.floor(mouseX.clientX * CanvasUtils.options.ratioX); var sy = window.Math.floor(mouseX.clientY * CanvasUtils.options.ratioY); if (sy < (canh - (70 * scaleby))) { var WMm = canw4 * 1.5; var nmV = canw4 / 4; if (sx < canw2) { var MVM = 30 * scaleby; MWVNw = Math2d.angle(canw2 - WMm, canh2 + nmV, sx, sy); NVNwm = window.Math.min(Math2d.distance(sx, sy, canw2 - WMm, canh2 + nmV), 25); if (sx < ((canw2 - WMm) - MVM)) { mWM |= 1; keyboard.charCode = 37; keyboard.keyCode = 37; vnW(keyboard); } else if (sx > ((canw2 - WMm) + MVM)) { mWM |= 2; keyboard.charCode = 39; keyboard.keyCode = 39; vnW(keyboard); } if (sy < ((canh2 + nmV) - MVM)) { mWM |= 4; keyboard.charCode = 38; keyboard.keyCode = 38; vnW(keyboard); } else if (sy > ((canh2 + nmV) + MVM)) { mWM |= 8; keyboard.charCode = 40; keyboard.keyCode = 40; vnW(keyboard); } } else if ((sx < (canw - (40 * scaleby))) || (sy > (40 * scaleby))) { NVN = 1; mouseX.clientX -= WMm / CanvasUtils.options.ratioX; mouseX.clientY -= nmV / CanvasUtils.options.ratioX; if (World.PLAYER.isBuilding === 1) { var vVMmn = window.Date.now(); if ((vVMmn - MMMvM) < 1000) { vmWNW = 1; NnVMv = mouseX.clientX; WNmmw = mouseX.clientY; mouseDown(mouseX); } MMMvM = vVMmn; } else { vmWNW = 1; NnVMv = mouseX.clientX; WNmmw = mouseX.clientY; mouseDown(mouseX); } } continue; } } if ((NVN === 0) && (mWM === 0)) { mouseDown(mouseX); NVN = 1; } } }; function touchEnd(event) {}; function touchCancel(event) { var sx = window.Math.floor(event.changedTouches[0].clientX * CanvasUtils.options.ratioX); var sy = window.Math.floor(event.changedTouches[0].clientY * CanvasUtils.options.ratioY); if (nvnNv === 1) nvnNv = 0; else if (NmW === 1) mouseUp(mouseX); else if ((vmWNW === 1) && (sx >= canw2)) { vmWNW = 0; mouseX.clientX = NnVMv; mouseX.clientY = WNmmw; mouseUp(mouseX); return; } else if (((World.PLAYER.drag.begin === 0) && (sx < canw2)) && (sy < (canh - (70 * scaleby)))) { if ((sx < (240 * scaleby)) && (sy < (160 * scaleby))) mouseUp(mouseX); } else mouseUp(mouseX); if (mWM !== 0) { if (mWM & 1) { keyboard.charCode = 37; NmN(keyboard); } if (mWM & 2) { keyboard.charCode = 39; NmN(keyboard); } if (mWM & 4) { keyboard.charCode = 38; NmN(keyboard); } if (mWM & 8) { keyboard.charCode = 40; NmN(keyboard); } mWM = 0; } }; function touchMove(event) { var NVN = 0; var mWVWv = 0; for (var wVV = 0; wVV < event.touches.length; wVV++) { Mouse.touchToMouseEvent(mouseX, event, event.touches[wVV]); if ((World.PLAYER.drag.begin === 0) && (NmW === 0)) { var sx = window.Math.floor(mouseX.clientX * CanvasUtils.options.ratioX); var sy = window.Math.floor(mouseX.clientY * CanvasUtils.options.ratioY); if (sy < (canh - (70 * scaleby))) { var WMm = canw4 * 1.5; var nmV = canw4 / 4; if (sx < canw2) { mWVWv = 1; var VNM = 0; var MVM = 30 * scaleby; MWVNw = Math2d.angle(canw2 - WMm, canh2 + nmV, sx, sy); NVNwm = window.Math.min(Math2d.distance(sx, sy, canw2 - WMm, canh2 + nmV), 25); if (sx < ((canw2 - WMm) - MVM)) VNM |= 1; else if (sx > ((canw2 - WMm) + MVM)) VNM |= 2; if (sy < ((canh2 + nmV) + -MVM)) VNM |= 4; else if (sy > ((canh2 + nmV) + MVM)) VNM |= 8; if (((VNM & 1) === 1) && ((mWM & 1) !== 1)) { keyboard.charCode = 37; vnW(keyboard); } else if (((VNM & 1) !== 1) && ((mWM & 1) === 1)) { keyboard.charCode = 37; NmN(keyboard); } if (((VNM & 2) === 2) && ((mWM & 2) !== 2)) { keyboard.charCode = 39; vnW(keyboard); } else if (((VNM & 2) !== 2) && ((mWM & 2) === 2)) { keyboard.charCode = 39; NmN(keyboard); } if (((VNM & 4) === 4) && ((mWM & 4) !== 4)) { keyboard.charCode = 38; vnW(keyboard); } else if (((VNM & 4) !== 4) && ((mWM & 4) === 4)) { keyboard.charCode = 38; NmN(keyboard); } if (((VNM & 8) === 8) && ((mWM & 8) !== 8)) { keyboard.charCode = 40; vnW(keyboard); } else if (((VNM & 8) !== 8) && ((mWM & 8) === 8)) { keyboard.charCode = 40; NmN(keyboard); } mWM = VNM; continue; } else if ((sx < (canw - (40 * scaleby))) || (sy > (40 * scaleby))) { NVN = 1; mouseX.clientX -= WMm / CanvasUtils.options.ratioX; mouseX.clientY -= nmV / CanvasUtils.options.ratioX; NnVMv = mouseX.clientX; WNmmw = mouseX.clientY; mouseMove(mouseX); } } } if ((NVN === 0) && (mWM === 0)) { mouseMove(mouseX); NVN = 1; } } if ((mWVWv === 0) && (mWM !== 0)) { if (mWM & 1) { keyboard.charCode = 37; NmN(keyboard); } if (mWM & 2) { keyboard.charCode = 39; NmN(keyboard); } if (mWM & 4) { keyboard.charCode = 38; NmN(keyboard); } if (mWM & 8) { keyboard.charCode = 40; NmN(keyboard); } mWM = 0; } }; function MmNNN() { if (isTouchScreen === 0) window.addEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.addEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.addEventListener('mousemove', mouseMove, false); if (isTouchScreen === 0) window.addEventListener('keyup', NmN, false); if (isTouchScreen === 0) window.addEventListener('keydown', vnW, false); if (isTouchScreen === 1) window.addEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.addEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.addEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.addEventListener('touchmove', touchMove, false); }; function VVwMW() { if (isTouchScreen === 0) window.removeEventListener('mousedown', mouseDown, false); if (isTouchScreen === 0) window.removeEventListener('mouseup', mouseUp, false); if (isTouchScreen === 0) window.removeEventListener('mousemove', mouseMove, false); if (isTouchScreen === 0) window.removeEventListener('keyup', NmN, false); if (isTouchScreen === 0) window.removeEventListener('keydown', vnW, false); if (isTouchScreen === 1) window.removeEventListener('touchstart', touchStart, false); if (isTouchScreen === 1) window.removeEventListener('touchend', touchEnd, false); if (isTouchScreen === 1) window.removeEventListener('touchcancel', touchCancel, false); if (isTouchScreen === 1) window.removeEventListener('touchmove', touchMove, false); }; return { quit: quit, init: init, run: run, update: update, draw: draw }; })(); var __COUNTER__ = 1; var BID = {}; BID.__ROAD_T0B0L0R1__ = __COUNTER__++; BID.__ROAD_T0B0L1R0__ = __COUNTER__++; BID.__ROAD_T0B0L1R1__ = __COUNTER__++; BID.__ROAD_T0B1L0R0__ = __COUNTER__++; BID.__ROAD_T0B1L0R1__ = __COUNTER__++; BID.__ROAD_T0B1L1R0__ = __COUNTER__++; BID.__ROAD_T0B1L1R1__ = __COUNTER__++; BID.__ROAD_T1B0L0R1__ = __COUNTER__++; BID.__ROAD_T1B0L1R0__ = __COUNTER__++; BID.__ROAD_T1B0L1R0__ = __COUNTER__++; BID.__ROAD_T1B0L1R1__ = __COUNTER__++; BID.__ROAD_T1B1L0R0__ = __COUNTER__++; BID.__ROAD_T1B1L0R1__ = __COUNTER__++; BID.__ROAD_T1B1L1R0__ = __COUNTER__++; BID.__ROAD_T1B1L1R1__ = __COUNTER__++; var BUILDINGS = [{}, { id: BID.__ROAD_T0B0L0R1__, src: "img/road-T0B0L0R1.png", img: { isLoaded: 0 }, minimap: { x: 0, y: 0, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ], alt: [BID.__ROAD_T0B0L0R1__] }, { id: BID.__ROAD_T0B0L1R0__, src: "img/road-T0B0L1R0.png", img: { isLoaded: 0 }, minimap: { x: 28, y: 0, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ], alt: [BID.__ROAD_T0B0L1R0_1__, BID.__ROAD_T0B0L1R0_2__] }, { id: BID.__ROAD_T0B0L1R1__, src: "img/road-T0B0L1R1.png", img: { isLoaded: 0 }, minimap: { x: 56, y: 0, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ], alt: [BID.__ROAD_T0B0L1R1_1__, BID.__ROAD_T0B0L1R1_2__, BID.__ROAD_T0B0L1R1_3__, BID.__ROAD_T0B0L1R1_4__, BID.__ROAD_T0B0L1R1_5__, BID.__ROAD_T0B0L1R1_6__, BID.__ROAD_T0B0L1R1_7__, BID.__ROAD_T0B0L1R1_8__] }, { id: BID.__ROAD_T0B1L0R0__, src: "img/road-T0B1L0R0.png", img: { isLoaded: 0 }, minimap: { x: 84, y: 0, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ], alt: [BID.__ROAD_T0B1L0R0_1__, BID.__ROAD_T0B1L0R0_2__] }, { id: BID.__ROAD_T0B1L0R1__, src: "img/road-T0B1L0R1.png", img: { isLoaded: 0 }, minimap: { x: 56, y: 28, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T0B1L1R0__, src: "img/road-T0B1L1R0.png", img: { isLoaded: 0 }, minimap: { x: 0, y: 56, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T0B1L1R1__, src: "img/road-T0B1L1R1.png", img: { isLoaded: 0 }, minimap: { x: 112, y: 0, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T1B0L0R1__, src: "img/road-T1B0L0R0.png", img: { isLoaded: 0 }, minimap: { x: 28, y: 28, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T1B0L1R0__, src: "img/road-T1B0L0R1.png", img: { isLoaded: 0 }, minimap: { x: 56, y: 56, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T1B0L1R0__, src: "img/road-T1B0L1R0.png", img: { isLoaded: 0 }, minimap: { x: 84, y: 56, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T1B0L1R1__, src: "img/road-T1B0L1R1.png", img: { isLoaded: 0 }, minimap: { x: 84, y: 28, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T1B1L0R0__, src: "img/road-T1B1L0R0.png", img: { isLoaded: 0 }, minimap: { x: 112, y: 56, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T1B1L0R1__, src: "img/road-T1B1L0R1.png", img: { isLoaded: 0 }, minimap: { x: 112, y: 28, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T1B1L1R0__, src: "img/road-T1B1L1R0.png", img: { isLoaded: 0 }, minimap: { x: 0, y: 28, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ] }, { id: BID.__ROAD_T1B1L1R1__, src: "img/road-T1B1L1R1.png", img: { isLoaded: 0 }, minimap: { x: 28, y: 56, h: 28, w: 28 }, grid: [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ], alt: [BID.__ROAD_T1B1L1R1_1__, BID.__ROAD_T1B1L1R1_2__] }]; try { if (exports !== window.undefined) { exports.BID = BID; exports.BUILDINGS = BUILDINGS; } } catch (error) {} var Render = (function() { var __TILE_SIZE__ = 100; var __TILE_SIZE2__ = __TILE_SIZE__ / 2; var __TILE_SCALE__ = 1; var NVmMW = 13; var WnWvv = 9; var WwmVw = 100; var WMNWw = 0.025; var NMmmm = 0; var VmNmN = 0.01; var NmMvvvN = 0.008; var worldWidth = 0; var worldWidthFull = 0; var worldHeightFull = 0; var worldHeight = 0; var NnvWw = 3; var nwMnv = 0; var vnvWWnW = 0; var vvVMV = 0; var VnvWV = 0; var vvNWNnN = 450; var Width_410 = 410; var Height_410 = Width_410; var wVNMN = 412 / 8; var NnWnv = 0; var IMG_MAP_BORDER = "img/borderBigMinimap2.png"; var IMG_MAP_ARROW = "img/arrow-minimap.png"; var IMG_MAP_ARROW2 = "img/arrow-minimap2.png"; var IMG_HOUSE_ICON = "img/house-icon.png"; var IMG_CITY_ICON = "img/city-icon.png"; var IMG_INV_EMPTY = "img/inv-empty.png"; var IMG_LOOT = "img/loot.png"; var IMG_LOOT_TOUCH = "img/loot-isTouchScreen.png"; var IMG_LOOT2 = "img/loot2.png"; var IMG_TIMER = "img/timer.png"; var IMG_CRAFT_GRID = "img/craft-grid.png"; var IMG_TIMER_ARROW = "img/timer-arrow.png"; var IMG_TIMER_LIGHTS = "img/timer-lights.png"; var IMG_HINT_ROTATE = "img/hint-rotate.png"; var IMG_DAY_UNUSABLE = "img/day-unusable.png"; var IMG_DAY_CLOCK = "img/day-clock.png"; var IMG_NIGHT_CLOCK = "img/night-clock.png"; var IMG_CLOCK_HAND = "img/clock-hand.png"; var IMG_CLOCK_HAND_RAD = "img/clock-hand-radiation.png"; var IMG_DAY_CLOCK_HAND = "img/day-clock-hand.png"; var IMG_CRAFT_GAUGE = "img/craft-gauge.png"; var IMG_STROKE_BONUS = "img/stroke-bonus.png"; var IMG_WRONG_TOOL = "img/wrong-tool.png"; var IMG_HAND_TOOL = "img/hand-tool.png"; var IMG_ARROW_CRAFT = "img/arrow-craft.png"; var IMG_UNLOCK_SKILLS = "img/unlock-skills.png"; var IMG_SERVER_FULL = "img/server-full.png"; var IMG_SERVER_OLD = "img/server-old.png"; var IMG_CLIENT_OLD = "img/client-old.png"; var IMG_SERVER_WRONG = "img/server-wrong.png"; var IMG_INVITATION_BOX = "img/invitation-box.png"; var IMG_TIME_BOX = "img/time-box.png"; var IMG_RANK_BOX = "img/rank-box.png"; var IMG_TOXIC_ALERT = "img/toxic-alert.png"; var IMG_RAD_ALERT = "img/radiation-alert.png"; var Mvvwv = 500; var mVmWm = 256; var mMmvV = 500; var WWn = window.Math.floor(mVmWm / 2); var nWWwM = window.Math.floor(WWn / 2); var IMG_ALERT = "img/alert"; var Vwwmw = 699; var nvnwM = 738; var COLOR_LIGHTGREEN = "#70BD56"; var COLOR_ORANGE = "#e58833"; var COLOR_LIGHTBLUE = "#55B7BC"; var COLOR_YELLOW = "#d7c83a"; var COLOR_WHITE = "#FFFFFF"; var Mvnwm = 3000; var mmWWw = 500; var WWMnN = 2500; var PI2 = window.Math.PI * 2; var PIby2 = window.Math.PI / 2; var mWvNn = window.Math.PI / World.__DAY__; var LEFT = 1; var RIGHT = 2; var TOP = 4; var DOWN = 8; var MMn = 16; var nNn = 32; var Nvn = 64; var nwM = 128; var mMwmm = 0; var NVW = 1; var mWn = 2; var WMN = 4; var wwm = 8; var MwnMm = 0; var NNvnn = 1; var MnVmm = 2; var WnmmN = 3; var vNw = [ [], [], [], [] ]; vNw[MwnMm][mMwmm] = 0; vNw[MwnMm][NVW] = 3; vNw[MwnMm][mWn] = 6; vNw[MwnMm][WMN | wwm] = 9; vNw[MwnMm][WMN] = 4; vNw[MwnMm][wwm] = 5; vNw[MwnMm][NVW | WMN] = 27; vNw[MwnMm][NVW | wwm] = 20; vNw[MwnMm][mWn | WMN] = 7; vNw[MwnMm][mWn | wwm] = 28; vNw[MwnMm][(NVW | WMN) | wwm] = 24; vNw[MwnMm][(mWn | WMN) | wwm] = 29; vNw[MnVmm][mMwmm] = 0; vNw[MnVmm][NVW] = 3; vNw[MnVmm][mWn] = 6; vNw[MnVmm][WMN | wwm] = 9; vNw[MnVmm][WMN] = 4; vNw[MnVmm][wwm] = 5; vNw[MnVmm][NVW | WMN] = 27; vNw[MnVmm][NVW | wwm] = 20; vNw[MnVmm][mWn | WMN] = 7; vNw[MnVmm][mWn | wwm] = 28; vNw[MnVmm][(NVW | WMN) | wwm] = 24; vNw[MnVmm][(mWn | WMN) | wwm] = 29; vNw[NNvnn][mMwmm] = 11; vNw[NNvnn][NVW] = 12; vNw[NNvnn][mWn] = 17; vNw[NNvnn][WMN | wwm] = 10; vNw[NNvnn][WMN] = 19; vNw[NNvnn][wwm] = 18; vNw[NNvnn][NVW | WMN] = 34; vNw[NNvnn][NVW | wwm] = 22; vNw[NNvnn][mWn | WMN] = 23; vNw[NNvnn][mWn | wwm] = 33; vNw[NNvnn][(NVW | WMN) | wwm] = 35; vNw[NNvnn][(mWn | WMN) | wwm] = 32; vNw[WnmmN][mMwmm] = 11; vNw[WnmmN][NVW] = 15; vNw[WnmmN][mWn] = 14; vNw[WnmmN][WMN | wwm] = 10; vNw[WnmmN][WMN] = 19; vNw[WnmmN][wwm] = 18; vNw[WnmmN][NVW | WMN] = 37; vNw[WnmmN][NVW | wwm] = 16; vNw[WnmmN][mWn | WMN] = 23; vNw[WnmmN][mWn | wwm] = 38; vNw[WnmmN][(NVW | WMN) | wwm] = 36; vNw[WnmmN][(mWn | WMN) | wwm] = 39; var WMV = []; WMV[0] = 0; WMV[LEFT] = 3; WMV[RIGHT] = 4; WMV[TOP] = 2; WMV[DOWN] = 1; WMV[LEFT | TOP] = 17; WMV[LEFT | RIGHT] = 5; WMV[LEFT | DOWN] = 18; WMV[RIGHT | TOP] = 16; WMV[RIGHT | DOWN] = 19; WMV[TOP | DOWN] = 6; WMV[(LEFT | TOP) | DOWN] = 10; WMV[(LEFT | TOP) | RIGHT] = 9; WMV[(DOWN | TOP) | RIGHT] = 11; WMV[(LEFT | DOWN) | RIGHT] = 8; WMV[((LEFT | TOP) | RIGHT) | DOWN] = 7; WMV[(DOWN | RIGHT) | MMn] = 12; WMV[(DOWN | LEFT) | nNn] = 13; WMV[(TOP | LEFT) | nwM] = 14; WMV[(TOP | RIGHT) | Nvn] = 15; WMV[((TOP | DOWN) | RIGHT) | MMn] = 20; WMV[(((TOP | DOWN) | RIGHT) | LEFT) | MMn] = 21; WMV[((LEFT | DOWN) | RIGHT) | MMn] = 22; WMV[(((TOP | DOWN) | RIGHT) | LEFT) | Nvn] = 23; WMV[((LEFT | TOP) | RIGHT) | Nvn] = 24; WMV[((TOP | DOWN) | RIGHT) | Nvn] = 25; WMV[((TOP | DOWN) | LEFT) | nwM] = 26; WMV[(((TOP | DOWN) | RIGHT) | LEFT) | nwM] = 27; WMV[((TOP | RIGHT) | LEFT) | nwM] = 28; WMV[((DOWN | RIGHT) | LEFT) | nNn] = 29; WMV[(((TOP | DOWN) | RIGHT) | LEFT) | nNn] = 30; WMV[((TOP | DOWN) | LEFT) | nNn] = 31; WMV[((((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | MMn) | nwM) | Nvn] = 32; WMV[((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | nwM] = 33; WMV[((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | MMn] = 34; WMV[((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | Nvn] = 35; WMV[((((TOP | DOWN) | RIGHT) | LEFT) | MMn) | nwM] = 36; WMV[((((TOP | DOWN) | RIGHT) | LEFT) | Nvn) | MMn] = 37; WMV[((((TOP | DOWN) | RIGHT) | LEFT) | Nvn) | nwM] = 38; WMV[(((TOP | DOWN) | RIGHT) | Nvn) | MMn] = 39; WMV[(((TOP | DOWN) | LEFT) | nwM) | nNn] = 40; WMV[(((RIGHT | DOWN) | LEFT) | MMn) | nNn] = 41; WMV[(((RIGHT | TOP) | LEFT) | Nvn) | nwM] = 42; WMV[(((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | nwM) | Nvn] = 43; WMV[(((((TOP | DOWN) | RIGHT) | LEFT) | MMn) | nwM) | Nvn] = 44; WMV[(((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | MMn) | Nvn] = 45; WMV[(((((TOP | DOWN) | RIGHT) | LEFT) | nNn) | MMn) | nwM] = 46; var wnNWM = 600; var i, j; var vertst = 0; var horist = 0; var NmM = 0; var WWV = 0; var NVVWM = 0; var WVNMV = 0; var vvWnv = 0; var Nvmmn = 0; var vwMWM = VmNmN; var WvmnV = 0; var oldscale = 0; var vMnmV = []; for (i = 0; i < 20; i++) vMnmV[i] = { isLoaded: 0 }; var setParticles = 2; var vMnnw = []; var matrix = []; var wWmnn = NVmMW; var VmvVW = WnWvv; var NmWnM = []; var inventorySlot = { isLoaded: 0 }; var hintRotate = { isLoaded: 0 }; var wnW = { move: 0, effect: 0, src: IMG_ARROW_CRAFT, img: { isLoaded: 0 } }; var wvV = { move: 0, effect: 0, src: IMG_UNLOCK_SKILLS, img: { isLoaded: 0 } }; var timeleft = { src: IMG_TIME_BOX, img: { isLoaded: 0 } }; var WvWnV = { src: IMG_RANK_BOX, img: { isLoaded: 0 } }; var WWmMW = { src: IMG_TOXIC_ALERT, img: { isLoaded: 0 } }; var shakeMagnitude = 0; var VmWNN = { src: IMG_RAD_ALERT, img: { isLoaded: 0 } }; var WNmVW = 0; var ICON_E_FURNITURE = { src: "img/e-furniture.png", img: { isLoaded: 0 } }; var IMG_TOXIC_AREA2 = CanvasUtils.loadImage("img/toxic-area2.png"); var IMG_TOXIC_AREA3 = CanvasUtils.loadImage("img/toxic-area3.png"); var wVVVn = []; var playerAlive = []; var wmvVw = { isLoaded: 0 }; var arv = { isLoaded: 0 }; var nMWVv = { isLoaded: 0 }; var VWvVN = { isLoaded: 0 }; var NNmMN = [0, 0, 0, 0]; var WwmVM = NMmmm; var WvnvV = []; var pplonscr = 0; var useTimer = { isLoaded: 0 }; var arrow = { isLoaded: 0 }; var lights = { isLoaded: 0 }; var WMWvN = mMmvV; var wWNmv = { isLoaded: 0 }; var craftGauge = { isLoaded: 0 }; var STROKE_BONUS = { src: IMG_STROKE_BONUS, img: { isLoaded: 0 } }; var VnwNw = 0; var wrongTool = { src: IMG_WRONG_TOOL, img: { isLoaded: 0 } }; var vwnWv = { src: IMG_HAND_TOOL, img: { isLoaded: 0 } }; var nearestDistance = 12000; var distance12k = 12000; var wVMNN = []; for (i = 0; i < 10; i++) { wVMNN[i] = []; for (j = 0; j < 3; j++) wVMNN[i][j] = { isLoaded: 0 }; }; var effect = []; for (i = 0; i < 8; i++) { effect[i] = []; for (j = 0; j < 2; j++) effect[i][j] = { isLoaded: 0 }; } var arrowiconmap2 = { src: IMG_MAP_ARROW, img: { isLoaded: 0 } }; var arrowiconmap = { src: IMG_MAP_ARROW2, img: { isLoaded: 0 } }; var minimap = { isLoaded: 0 }; var houseiconmap = { src: IMG_HOUSE_ICON, img: { isLoaded: 0 } }; var cityiconmap = { src: IMG_CITY_ICON, img: { isLoaded: 0 } }; var WmVNn = { src: IMG_NIGHT_CLOCK, img: { isLoaded: 0 } }; var nvvVW = { src: IMG_DAY_CLOCK, img: { isLoaded: 0 } }; var nMmvV = { src: IMG_CLOCK_HAND, img: { isLoaded: 0 } }; var VWmVV = { src: IMG_DAY_CLOCK_HAND, img: { isLoaded: 0 } }; var wmmvv = { src: IMG_CLOCK_HAND_RAD, img: { isLoaded: 0 } }; var alertFull = { src: IMG_SERVER_FULL, img: { isLoaded: 0 } }; var alertServerOld = { src: IMG_SERVER_OLD, img: { isLoaded: 0 } }; var alertClientOld = { src: IMG_CLIENT_OLD, img: { isLoaded: 0 } }; var alertServerWrong = { src: IMG_SERVER_WRONG, img: { isLoaded: 0 } }; var teambox = { isLoaded: 0 }; var wwvmV = []; for (i = 0; i < 20; i++) wwvmV.push({ isLoaded: 0 }); var canvasZ = window.document.createElement('canvas'); var context2dZ = canvasZ.getContext('2d'); canvasZ.width = Width_410; canvasZ.height = Height_410; canvasZ.isLoaded = 1; canvasZ.wh = canvasZ.width / 2; canvasZ.h2 = canvasZ.height / 2; var MWNMV = { img: canvasZ }; var canvasD = window.document.createElement('canvas'); var context2dD = canvasD.getContext('2d'); canvasD.width = Width_410; canvasD.height = Height_410; canvasD.isLoaded = 1; canvasD.wh = canvasZ.width / 2; canvasD.h2 = canvasZ.height / 2; var MMvWn = { img: canvasD }; var mWWwn = 0; function _BattleRoyale() { if (World.PLAYER.toxicStep === 8) { context2dZ.clearRect(0, 0, Width_410, Height_410); context2dD.clearRect(0, 0, Width_410, Height_410); for (var i = 0; i < 8; i++) { for (var j = 0; j < 8; j++) { var wVvnN = World.PLAYER.toxicMap[i][j]; if (wVvnN === 7) context2dZ.drawImage(IMG_TOXIC_AREA2, 2 + (j * wVNMN), (i * wVNMN) + 1, IMG_TOXIC_AREA2.wh, IMG_TOXIC_AREA2.h2); else context2dZ.drawImage(IMG_TOXIC_AREA3, 2 + (j * wVNMN), (i * wVNMN) + 1, IMG_TOXIC_AREA2.wh, IMG_TOXIC_AREA2.h2); } } } else { context2dZ.drawImage(canvasD, 0, 0); context2dD.clearRect(0, 0, Width_410, Height_410); for (var k = 0; k < 12; k++) { var area = World.PLAYER.lastAreas[k]; var i = area[0]; var j = area[1]; if (i === -1) continue; context2dD.drawImage(IMG_TOXIC_AREA2, 2 + (j * wVNMN), (i * wVNMN) + 1, IMG_TOXIC_AREA2.wh, IMG_TOXIC_AREA2.h2); } }; }; var canvasF = window.document.createElement('canvas'); var context2dF = canvasF.getContext('2d'); canvasF.width = Vwwmw; canvasF.height = nvnwM; soundLimit = []; for (var i = 0; i < 9; i++) soundLimit[i] = 0; var frameId = 0; for (i = 0; i < WnWvv; i++) { vMnnw[i] = []; for (var j = 0; j < NVmMW; j++) vMnnw[i][j] = 0; } var canvasG = window.document.createElement("canvas"); var context2dG = canvasG.getContext("2d"); canvasG.width = 280; canvasG.height = 148; var mwwNm = -1; var canvasElements = []; var canvasContexts = []; var skillPoint = window.document.createElement("canvas"); var context2H = skillPoint.getContext("2d"); skillPoint.width = 280; skillPoint.height = 50; var wmmVm = -1; var canvasJ = window.document.createElement("canvas"); var context2J = canvasJ.getContext("2d"); canvasJ.width = 420; canvasJ.height = 148; var MMNWW = -1; function MmmnN() { this.wallFrame = 0; this.floorFrame = 0; this.drawFloor = 0; this.tile = 0; this.wall = 0; this.frameId = 0; this.ground = 0; this.pid = 0; this.tilePid = 0; this.category = 0; this.i = 0; this.b = []; this.rotate = 0; for (var i = 0; i < 3; i++) this.b.push({ type: 0, cycle: 0 }); }; function wmNMv(player, rotation) { if ((player.hurt > 0) || (player.removed !== 0)) return 0; var i = player.i; var j = player.j; var type = player.extra >> 7; var id = 0; switch (rotation) { case 0: if ((i + 1) < worldHeight) { var VMV = matrix[i + 1][j]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) { if (VMV.rotate === 1) id += NVW; else if (VMV.rotate === 3) id += mWn; } } if ((j - 1) >= 0) { var VMV = matrix[i][j - 1]; if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 3) || (VMV.rotate === 0))) id += WMN; } if ((j + 1) < worldWidth) { var VMV = matrix[i][j + 1]; if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 1) || (VMV.rotate === 0))) id += wwm; } break; case 1: if ((j - 1) >= 0) { var VMV = matrix[i][j - 1]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) { if (VMV.rotate === 0) id += mWn; else if (VMV.rotate === 2) id += NVW; } } if ((i - 1) >= 0) { var VMV = matrix[i - 1][j]; if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 0) || (VMV.rotate === 1))) id += WMN; } if ((i + 1) < worldHeight) { var VMV = matrix[i + 1][j]; if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 2) || (VMV.rotate === 1))) id += wwm; } break; case 2: if ((i - 1) >= 0) { var VMV = matrix[i - 1][j]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) { if (VMV.rotate === 1) id += mWn; else if (VMV.rotate === 3) id += NVW; } } if ((j - 1) >= 0) { var VMV = matrix[i][j - 1]; if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 3) || (VMV.rotate === 2))) id += wwm; } if ((j + 1) < worldWidth) { var VMV = matrix[i][j + 1]; if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 1) || (VMV.rotate === 2))) id += WMN; } break; case 3: if ((j + 1) < worldWidth) { var VMV = matrix[i][j + 1]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) { if (VMV.rotate === 0) id += NVW; else if (VMV.rotate === 2) id += mWn; } } if ((i - 1) >= 0) { var VMV = matrix[i - 1][j]; if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 0) || (VMV.rotate === 3))) id += wwm; } if ((i + 1) < worldHeight) { var VMV = matrix[i + 1][j]; if (((VMV.wallFrame === frameId) && (VMV.wall === type)) && ((VMV.rotate === 2) || (VMV.rotate === 3))) id += WMN; } break; } return vNw[rotation][id]; }; function Wwmwm(player) { if ((player.hurt > 0) || (player.removed !== 0)) return 0; var i = player.i; var j = player.j; var type = player.extra >> 7; var id = 0; var N = 0, t = 0, M = 0, l = 0; if ((i - 1) >= 0) { var VMV = matrix[i - 1][j]; if (VMV.floorFrame === frameId) { t = 1; id += TOP; } } if ((i + 1) < worldHeight) { var VMV = matrix[i + 1][j]; if (VMV.floorFrame === frameId) { id += DOWN; M = 1; } } if ((j - 1) >= 0) { var VMV = matrix[i][j - 1]; if (VMV.floorFrame === frameId) { id += LEFT; l = 1; } } if ((j + 1) < worldWidth) { var VMV = matrix[i][j + 1]; if (VMV.floorFrame === frameId) { id += RIGHT; N = 1; } } if ((N + t) === 2) { var VMV = matrix[i - 1][j + 1]; if (VMV.floorFrame === frameId) id += Nvn; } if ((l + t) === 2) { var VMV = matrix[i - 1][j - 1]; if (VMV.floorFrame === frameId) id += nwM; } if ((M + N) === 2) { var VMV = matrix[i + 1][j + 1]; if (VMV.floorFrame === frameId) id += MMn; } if ((M + l) === 2) { var VMV = matrix[i + 1][j - 1]; if (VMV.floorFrame === frameId) id += nNn; } return WMV[id]; }; function WwmwN(player) { if ((player.hurt > 0) || (player.removed !== 0)) return 0; var i = player.i; var j = player.j; var wall = INVENTORY[player.extra >> 7]; var type = wall.idWall; var id = 0; var N = 0, t = 0, M = 0, l = 0; if ((i - 1) >= 0) { var VMV = matrix[i - 1][j]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) { t = 1; id += TOP; } } if ((i + 1) < worldHeight) { var VMV = matrix[i + 1][j]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) { id += DOWN; M = 1; } } if ((j - 1) >= 0) { var VMV = matrix[i][j - 1]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) { id += LEFT; l = 1; } } if ((j + 1) < worldWidth) { var VMV = matrix[i][j + 1]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) { id += RIGHT; N = 1; } } if ((N + t) === 2) { var VMV = matrix[i - 1][j + 1]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) id += Nvn; } if ((l + t) === 2) { var VMV = matrix[i - 1][j - 1]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) id += nwM; } if ((M + N) === 2) { var VMV = matrix[i + 1][j + 1]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) id += MMn; } if ((M + l) === 2) { var VMV = matrix[i + 1][j - 1]; if ((VMV.wallFrame === frameId) && (VMV.wall === type)) id += nNn; } var id = WMV[id]; matrix[i][j].drawFloor = wall.drawFloor[id]; return id; }; function _wallConnect(player) { var type = player.extra >> 7; if (((INVENTORY[type].lowWall !== 1) || (player.hurt > 0)) || (player.broke > 0)) return; var VMV = matrix[player.i][player.j]; VMV.wallFrame = frameId; VMV.wall = type; VMV.rotate = (player.extra >> 5) & 3; }; function _bigWallConnect(player) { var type = player.extra >> 7; if (((INVENTORY[type].wall !== 1) || (player.hurt > 0)) || (player.broke > 0)) return; var VMV = matrix[player.i][player.j]; VMV.wallFrame = frameId; VMV.wall = INVENTORY[type].idWall; if (World.PLAYER._j === player.j) { var distance = window.Math.max(1, window.Math.abs(World.PLAYER._i - player.i)); if (World.PLAYER._i < player.i) NNmMN[0] = WwmVM / distance; else NNmMN[1] = WwmVM / distance; } else if (World.PLAYER._i === player.i) { var distance = window.Math.max(1, window.Math.abs(World.PLAYER._j - player.j)); if (World.PLAYER._j < player.j) NNmMN[2] = WwmVM / distance; else NNmMN[3] = WwmVM / distance; } }; function _floorConnect(player) { var type = player.extra >> 7; if (((INVENTORY[type].wall !== 1) || (player.hurt > 0)) || (player.broke > 0)) return; var VMV = matrix[player.i][player.j]; VMV.floorFrame = frameId; }; function MmnMv(player, cycle) { var i = player.i; var j = player.j; var VMV = matrix[i][j]; if (VMV.frameId === frameId) { if (VMV.i < 3) { var M = VMV.b[VMV.i]; VMV.i += 1; M.type = player.type; M.cycle = cycle; } } else { VMV.frameId = frameId; var M = VMV.b[0]; VMV.i = 1; M.type = player.type; M.cycle = cycle; } }; function _Reset(wVNwM, MMnVM, VmNwV) { handleResize = window.document.getElementById("bod").onresize; if (World.gameMode === World.__BR__) { context2dZ.clearRect(0, 0, Width_410, Width_410); context2dD.clearRect(0, 0, Width_410, Width_410); shakeMagnitude = 0; } WNmVW = 0; Render.explosionShake = 0; Render.shake = 0; if (wVNwM !== window.undefined) WMWvN = 0; else WMWvN = mMmvV; if (VmNwV !== window.undefined) vwMWM = VmNwV; else vwMWM = VmNmN; if (MMnVM !== window.undefined) WwmVM = MMnVM; else WwmVM = NMmmm; NmM = 0; WWV = 0; World.PLAYER.x = 0; World.PLAYER.y = 0; World.PLAYER._i = 0; World.PLAYER._j = 0; wnW.effect = 0; wnW.move = 0; wvV.effect = 0; wvV.move = 0; PARTICLE.id = -1; PARTICLE.uid = -1; var value = localStorage2.getItem("particles"); if (value !== null) setParticles = window.Number(value); teamName = ""; nNmVw = null; MapManager.width = 150; MapManager.height = 150; Render.__TRANSFORM__ = (MapManager.width * 100) / 255; worldWidth = MapManager.width; worldHeight = MapManager.height; worldWidthFull = __TILE_SIZE__ * worldWidth; worldHeightFull = __TILE_SIZE__ * worldHeight; nwMnv = 824 / worldWidthFull; vvVMV = 824 - mVmWm; VnvWV = vvVMV + WWn; NnWnv = worldWidthFull / 8; World.setSizeWorld(worldWidth, worldHeight); for (var i = 0; i < worldHeight; i++) { matrix[i] = []; for (var j = 0; j < worldWidth; j++) matrix[i][j] = new MmmnN; } var len = Entitie.units[0].length; for (i = 0; i < len; i++) WvnvV[i] = null; }; function _buttonInv(wm, invtr, offsetX, offsetY, inventoryItemNumber, inventoryAmmoNumber) { wm.pos.x = offsetX; wm.pos.y = offsetY; wm.draw(); var item = INVENTORY[invtr[0]]; var amount = invtr[1]; if (amount > 1) { if (inventoryItemNumber[amount] === window.undefined) { inventoryItemNumber[amount] = { img: GUI.renderText("x" + amount, "'Black Han Sans', sans-serif", "#ffffff", 30, 250, window.undefined, 15, 12, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12) }; inventoryItemNumber[amount].img.isLoaded = 1; } CanvasUtils.drawImageHd(inventoryItemNumber[amount], (offsetX / scaleby) + 53, (offsetY / scaleby) + 55, -0.5, 0, 0, 1); } if ((item.bullet !== window.undefined) && (item.mMVwm === window.undefined)) { var amount = invtr[3]; if (inventoryAmmoNumber[amount] === window.undefined) { inventoryAmmoNumber[amount] = { img: GUI.renderText("x" + amount, "'Black Han Sans', sans-serif", "#FFFF00", 30, 250, window.undefined, 15, 12, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12) }; inventoryAmmoNumber[amount].img.isLoaded = 1; } CanvasUtils.drawImageHd(inventoryAmmoNumber[amount], (offsetX / scaleby) + 53, (offsetY / scaleby) + 55, -0.5, 0, 0, 1); } if (item.perish !== window.undefined) { var VWNwv = window.Math.floor(invtr[3] / 12.8); var img = wwvmV[VWNwv]; if (img.isLoaded !== 1) { wwvmV[VWNwv] = CanvasUtils.loadImage(("img/rotten" + VWNwv) + ".png", img); } else ctx.drawImage(img, offsetX + (0.5 * scaleby), offsetY, (scaleby * img.width) / 2, (scaleby * img.height) / 2); } }; function drawDarkBox(id, offsetX, offsetY) { if (canvasElements[id] === window.undefined) { canvasElements[id] = window.document.createElement("canvas"); canvasContexts[id] = canvasElements[id].getContext("2d"); var canvas = canvasElements[id]; var context = canvasContexts[id]; canvas.width = 400; canvas.height = 148; context.clearRect(0, 0, 400, 148); CanvasUtils.roundRect(context, 0, 0, 400, 148, 10); context.fillStyle = "#000000"; context.globalAlpha = 0.5; context.fill(); context.globalAlpha = 1; itemstatsfunc(context, id); } var height = scaleby * 74; ctx.drawImage(canvasElements[id], offsetX, offsetY, scaleby * 190, height); }; function drawDarkBox2(building, offsetX, offsetY) { var id = building.id; if (canvasElements[id] === window.undefined) { canvasElements[id] = window.document.createElement("canvas"); canvasContexts[id] = canvasElements[id].getContext("2d"); var canvas = canvasElements[id]; var context = canvasContexts[id]; canvas.width = 400; canvas.height = 148; context.clearRect(0, 0, 400, 148); CanvasUtils.roundRect(context, 0, 0, 400, 148, 10); context.fillStyle = "#000000"; context.globalAlpha = 0.5; context.fill(); context.globalAlpha = 1; BuildingStats(context, building); } var height = scaleby * 74; ctx.drawImage(canvasElements[id], offsetX, offsetY, scaleby * 190, height); }; function _Inventory(inventoryItemNumber, inventoryAmmoNumber, MmV, BUTTON_BAG) { //if (World.PLAYER.ghoul !== 0) return; var inventory = Game.inventory; if (inventorySlot.isLoaded !== 1) { inventorySlot = CanvasUtils.loadImage(IMG_INV_EMPTY, inventorySlot); return; } var invtr = World.PLAYER.inventory; var len = invtr.length; var width = (inventorySlot.width * scaleby) / 2; var height = (inventorySlot.height * scaleby) / 2; var _x = window.Math.max(300 * scaleby, (canw - (width * len)) / 2); var _y = (canh - height) - (5 * scaleby); var offsetX = _x; var offsetY = _y; var MVM = (5 * scaleby) + width; if (len > 10) { BUTTON_BAG.pos.x = canw - (69 * scaleby); BUTTON_BAG.pos.y = canh - (68 * scaleby); BUTTON_BAG.draw(); if (BUTTON_BAG.open === 0) len = 10; } for (var i = 0; i < len; i++) { var wm = inventory[i]; if (invtr[i][0] === 0) { wm.pos.x = offsetX; wm.pos.y = offsetY; ctx.drawImage(inventorySlot, offsetX, offsetY, width, height); } else _buttonInv(wm, invtr[i], offsetX, offsetY, inventoryItemNumber, inventoryAmmoNumber); if (i === 9) { offsetX = BUTTON_BAG.pos.x - (5 * scaleby); offsetY = BUTTON_BAG.pos.y - MVM; } else if (i === 12) { offsetX -= MVM; offsetY = BUTTON_BAG.pos.y - MVM; } else if (i > 9) offsetY -= MVM; else offsetX += MVM; } var drag = World.PLAYER.drag; if (((drag.begin === 1) && (Mouse.state === Mouse.__MOUSE_DOWN__)) && (Math2d.distance(drag.x, drag.y, Mouse.x, Mouse.y) > (4 * scaleby))) { var IID = invtr[drag.id][0]; if (IID > 0) { var img = INVENTORY[IID].itemButton.img[0]; if (img.isLoaded === 0) img = INVENTORY2[IID].itemButton.img[0]; ctx.globalAlpha = 0.7; var width = 68 * scaleby; ctx.drawImage(img, (Mouse.x * scaleby) - (width / 2), (Mouse.y * scaleby) - (width / 2), width, width); ctx.globalAlpha = 1; } } else if ((MmV !== -1) && (invtr[MmV][0] !== 0)) { if (MmV < 10) drawDarkBox(invtr[MmV][0], _x + (MVM * MmV), _y - (79 * scaleby)); else if (MmV < 13) drawDarkBox(invtr[MmV][0], BUTTON_BAG.pos.x - (200 * scaleby), BUTTON_BAG.pos.y + (MVM * (-1 + ((10 - MmV) % 3)))); else drawDarkBox(invtr[MmV][0], (BUTTON_BAG.pos.x - (200 * scaleby)) - MVM, BUTTON_BAG.pos.y + (MVM * (-1 + ((10 - MmV) % 3)))); } }; function _GaugesAfter(offsetX, offsetY) { var level = World.PLAYER.level; if (NmWnM[level] === window.undefined) { NmWnM[level] = { img: GUI.renderText("" + level, "'Black Han Sans', sans-serif", "#ffffff", 44, 250, window.undefined, 18, 15, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 15) }; NmWnM[level].img.isLoaded = 1; } CanvasUtils.drawImageHd(NmWnM[level], (offsetX / scaleby) + 234, (offsetY / scaleby) + 79, 0, 0, 0, 1); var rad = World.gauges.rad; var value = 1 - (rad.current / rad._max); CanvasUtils.drawImageHd(wmmvv, 38 + (offsetX / scaleby), 37 + (offsetY / scaleby), window.Math.PI * value, 0, 0, 1); }; function _Gauges(offsetX, offsetY) { var life = World.gauges.life; var value = life.current / life._max; CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 14, (offsetY / scaleby) + 71, value * 189, 16, COLOR_LIGHTGREEN); //if (MOD.showHP) CanvasUtils.fillText(ctx, Math.floor(life.current), offsetX / scaleby + 100, offsetY / scaleby + 84, '#FFFFFF', '24px Black Han Sans'); var food = World.gauges.food; var value = food.current / food._max; CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 13, (offsetY / scaleby) + 162, 54, -value * 63, COLOR_ORANGE); var cold = World.gauges.cold; var value = cold.current / cold._max; CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 81, (offsetY / scaleby) + 162, 54, -value * 63, COLOR_LIGHTBLUE); var stamina = World.gauges.stamina; var value = stamina.current / stamina._max; CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 150, (offsetY / scaleby) + 162, 54, -value * 63, COLOR_YELLOW); var xp = World.gauges.xp; var value = xp.current / xp._max; CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 226, (offsetY / scaleby) + 172, 16, -value * 77, COLOR_WHITE); var elapsedTime = World.updateHour(); var img; var wnvmV; if (elapsedTime >= 10000000) { if (WmVNn.isLoaded !== 1) { WmVNn = CanvasUtils.loadImage(IMG_NIGHT_CLOCK, WmVNn); return; } elapsedTime -= 10000000; img = WmVNn; wnvmV = nMmvV; } else { if (nvvVW.isLoaded !== 1) { nvvVW = CanvasUtils.loadImage(IMG_DAY_CLOCK, nvvVW); return; } img = nvvVW; wnvmV = VWmVV; } var width = (scaleby * img.width) / 2; var height = (scaleby * img.height) / 2; ctx.drawImage(img, offsetX + (100 * scaleby), offsetY + (14 * scaleby), width, height); CanvasUtils.drawImageHd(wnvmV, 144.5 + (offsetX / scaleby), (offsetY / scaleby) + 56, elapsedTime * mWvNn, 0, 0, 1); var LifeNumberLabel = null; // Life Value Label if (MOD.ShowHP) { if (LifeNumberLabel === null) LifeNumberLabel = GUI.renderText(~~life.current, "'Viga', sans-serif", "#00FF00", 25, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 10); var img2 = LifeNumberLabel; var width = (scaleby * img2.width) / 2.1; var height = (scaleby * img2.height) / 2.1; var posx = offsetX + (100 * scaleby); var posy = offsetY + (14 * scaleby); ctx.drawImage(img2, posx, posy, width, height); } }; function _Leaderboard(offsetX, offsetY) { var leaderboard = World.leaderboard; var players = World.players; var nWnWm = -1; if (World.newLeaderboard === 1) { nWnWm = 1; World.newLeaderboard = 0; context2dF.clearRect(0, 0, Vwwmw, nvnwM); for (var i = 0; (i < leaderboard.length) && (leaderboard[i] !== 0); i++) { var PLAYER = players[leaderboard[i]]; if (World.PLAYER.id === leaderboard[i]) nWnWm = 0; if (PLAYER.nickname === 0) break; if (PLAYER.leaderboardLabel === null) { if (PLAYER.id === World.PLAYER.id) PLAYER.leaderboardLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#D6C823", 40, 350, window.undefined, 0, 12); else PLAYER.leaderboardLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#ffffff", 40, 350, window.undefined, 0, 12); } if (PLAYER.scoreLabel === null) { if (PLAYER.id === World.PLAYER.id) PLAYER.scoreLabel = GUI.renderText(PLAYER.scoreSimplified, "'Viga', sans-serif", "#D6C823", 40, 150, window.undefined, 5, 12); else PLAYER.scoreLabel = GUI.renderText(PLAYER.scoreSimplified, "'Viga', sans-serif", "#ffffff", 40, 150, window.undefined, 5, 12); } if ((PLAYER.leaderboardLabel.width !== 0) && (PLAYER.leaderboardLabel.height !== 0)) context2dF.drawImage(PLAYER.leaderboardLabel, 90, 114 + (i * 50), PLAYER.leaderboardLabel.width, PLAYER.leaderboardLabel.height); context2dF.drawImage(PLAYER.scoreLabel, 484, 114 + (i * 50), PLAYER.scoreLabel.width, PLAYER.scoreLabel.height); var img = KARMA[PLAYER.KARMA].img; if (img.isLoaded === 1) context2dF.drawImage(img, 612, 114 + (i * 50), img.width, img.height); } World.PLAYER.inLeaderboard = nWnWm; if (nWnWm === 1) { var img = KARMA[World.PLAYER.KARMA].img; if (img.isLoaded === 1) context2dF.drawImage(img, 375, 645, img.width * 1.5, img.height * 1.5); } } var score = World.PLAYER.exp; if ((nWnWm === 1) || ((World.PLAYER.inLeaderboard === 1) && (score !== World.PLAYER.lastScore))) { var PLAYER = players[World.PLAYER.id]; context2dF.clearRect(480, 657, 112, 60); if (score !== World.PLAYER.lastScore) { World.PLAYER.lastScore = score; PLAYER.scoreLabel = GUI.renderText(MathUtils.simplifyNumber(score), "'Viga', sans-serif", "#ffffff", 40, 150, window.undefined, 5, 12); } context2dF.drawImage(PLAYER.scoreLabel, 484, 662, PLAYER.scoreLabel.width, PLAYER.scoreLabel.height); } ctx.drawImage(canvasF, offsetX, offsetY, (Vwwmw / 3) * scaleby, (nvnwM / 3) * scaleby); }; function _BigMinimap(map, BUTTON_CLOSE_BOX) { var width = Width_410 * scaleby; var height = Height_410 * scaleby; var offsetX = canw2 - (width / 2); var offsetY = window.Math.max(canh2 - (height / 2), 0); var wX_Scale = offsetX / scaleby; var wY_Scale = offsetY / scaleby; var mvMnV = Width_410 / worldWidthFull; var _buttonInv = Height_410 / worldHeightFull; BUTTON_CLOSE_BOX.pos.x = window.Math.floor((offsetX + width) + (0 * scaleby)); BUTTON_CLOSE_BOX.pos.y = window.Math.floor(offsetY + (0 * scaleby)); map.draw(); var cities = World.PLAYER.cities; var len = cities.length / 2; if (len > 0) { _y = window.Math.floor((offsetY / scaleby) + window.Math.min(window.Math.max(10, cities[0] * _buttonInv), 400)); _x = window.Math.floor((offsetX / scaleby) + window.Math.min(window.Math.max(10, cities[1] * mvMnV), 400)); CanvasUtils.drawImageHd(cityiconmap, _x, _y, 0, 0, 0, 1); for (var i = 1; i < len; i++) { _y = window.Math.floor((offsetY / scaleby) + window.Math.min(window.Math.max(10, cities[i * 2] * _buttonInv), 400)); _x = window.Math.floor((offsetX / scaleby) + window.Math.min(window.Math.max(10, cities[1 + (i * 2)] * mvMnV), 400)); CanvasUtils.drawImageHd(houseiconmap, _x, _y, 0, 0, 0, 1); } } if (World.gameMode === World.__BR__) { var wwwmm = wX_Scale + (Width_410 / 2); var vnvWw = wY_Scale + (Height_410 / 2); CanvasUtils.drawImageHd(MWNMV, wwwmm, vnvWw, 0, 0, 0, 2); ctx.globalAlpha = (mWWwn > 600) ? MathUtils.Ease.inOutQuad((1200 - mWWwn) / 600) : MathUtils.Ease.inOutQuad(mWWwn / 600); CanvasUtils.drawImageHd(MMvWn, wwwmm, vnvWw, 0, 0, 0, 2); ctx.globalAlpha = 1; } BUTTON_CLOSE_BOX.draw(); if ((World.PLAYER.team !== -1) || (World.PLAYER.ghoul !== 0) && (World.playerAlive < 6)) { var players = Entitie.units[__ENTITIE_PLAYER__]; for (var i = 0; i < World.PLAYER.teamLength; i++) { var nmmvN = World.PLAYER.teamPos[i]; if (nmmvN.old < 0) continue; var PLAYER = World.players[nmmvN.id]; var _x = window.Math.floor(wX_Scale + window.Math.min(window.Math.max(10, PLAYER.rx * mvMnV), 400)); var _y = window.Math.floor(wY_Scale + window.Math.min(window.Math.max(10, PLAYER.ry * mvMnV), 400)); var angle; if (frameId === (PLAYER.frameId + 1)) angle = players[PLAYER.locatePlayer].angle; else angle = PLAYER.x % PI2; CanvasUtils.drawImageHd(arrowiconmap, _x, _y, angle, 0, 0, 1); if (MOD.drawNamesOnMap && PLAYER.nicknameLabel != null) ctx.drawImage(PLAYER.nicknameLabel, _x * scaleby - 3.5 * PLAYER.nickname.length, _y * scaleby - 35, 7 * PLAYER.nickname.length, 20); } } var _x = window.Math.floor((offsetX / scaleby) + window.Math.min(window.Math.max(10, NmM * mvMnV), 400)); var _y = window.Math.floor((offsetY / scaleby) + window.Math.min(window.Math.max(10, WWV * _buttonInv), 400)); CanvasUtils.drawImageHd(arrowiconmap2, _x, _y, Mouse.angle, 0, 0, 1); if (MOD.drawNamesOnMap) ctx.drawImage(World.players[World.PLAYER.id].nicknameLabel, _x * scaleby - 3.5 * World.players[World.PLAYER.id].nickname.length, _y * scaleby - 35, 7 * World.players[World.PLAYER.id].nickname.length, 20); if (World.PLAYER.badKarmaDelay > 0) { var PLAYER = World.players[World.PLAYER.badKarma]; CanvasUtils.drawImageHd(KARMA[PLAYER.KARMA], window.Math.floor(wX_Scale + window.Math.min(window.Math.max(10, PLAYER.rx * mvMnV), 400)), window.Math.floor(wY_Scale + window.Math.min(window.Math.max(10, PLAYER.ry * mvMnV), 400)), 0, 0, 0, 1.25); } }; function _AlertServer() { if (Home.alertDelay > 0) { if (Home.alertDelay > 2500) ctx.globalAlpha = MathUtils.Ease.inOutQuad((3000 - Home.alertDelay) / 500); else if (Home.alertDelay > 500) ctx.globalAlpha = 1; else ctx.globalAlpha = MathUtils.Ease.inOutQuad(Home.alertDelay / 500); if (Home.alertId === 0) CanvasUtils.drawImageHd(alertClientOld, canw2ns, alertClientOld.img.h2 / 2, 0, 0, 0, 1); else if (Home.alertId === 1) CanvasUtils.drawImageHd(alertServerOld, canw2ns, alertServerOld.img.h2 / 2, 0, 0, 0, 1); else if (Home.alertId === 2) CanvasUtils.drawImageHd(alertFull, canw2ns, alertFull.img.h2 / 2, 0, 0, 0, 1); else if (Home.alertId === 3) CanvasUtils.drawImageHd(alertServerWrong, canw2ns, alertServerWrong.img.h2 / 2, 0, 0, 0, 1); ctx.globalAlpha = 1; Home.alertDelay -= delta; } }; function nmwmn(offsetX, offsetY) { if (teambox.isLoaded !== 1) { teambox = CanvasUtils.loadImage(IMG_INVITATION_BOX, teambox); return; } Game.acceptMember.pos.x = offsetX + (241 * scaleby); Game.acceptMember.pos.y = offsetY + (6 * scaleby); Game.refuseMember.pos.x = offsetX + (290 * scaleby); Game.refuseMember.pos.y = offsetY + (6 * scaleby); if ((World.PLAYER.teamJoin !== 0) || (World.PLAYER.teamEffect > 0)) { if (World.PLAYER.teamJoin !== 0) { if (World.PLAYER.teamEffect < 333) { ctx.globalAlpha = World.PLAYER.teamEffect / 333; World.PLAYER.teamEffect += delta; } } else { ctx.globalAlpha = World.PLAYER.teamEffect / 333; World.PLAYER.teamEffect = window.Math.max(0, World.PLAYER.teamEffect - delta); } var PLAYER = World.players[World.PLAYER.teamJoin]; if (PLAYER.nicknameLabel === null) PLAYER.nicknameLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); ctx.drawImage(teambox, offsetX, offsetY, scaleby * teambox.wh, scaleby * teambox.h2); if ((PLAYER.nicknameLabel.width !== 0) && (PLAYER.nicknameLabel.height !== 0)) ctx.drawImage(PLAYER.nicknameLabel, offsetX + (20 * scaleby), offsetY + (6 * scaleby), PLAYER.nicknameLabel.wh * scaleby, PLAYER.nicknameLabel.h2 * scaleby); Game.acceptMember.draw(); Game.refuseMember.draw(); if (World.PLAYER.teamEffect < 333) ctx.globalAlpha = 1; } }; function _TimerGhoul(offsetX, offsetY, wNWnn) { World.PLAYER.nextAreas -= delta; var duration = window.Math.max(0, window.Math.floor(World.PLAYER.nextAreas / 1000)); if (duration < 3000) { CanvasUtils.drawImageHd(timeleft, (offsetX / scaleby) + 51, (offsetY / scaleby) + 145, 0, 0, 0, 1); if (wVVVn[duration] === window.undefined) { if ((wNWnn === 1) && (wVVVn[duration + 1] !== window.undefined)) wVVVn[duration + 1] = window.undefined; var wWvWM = window.Math.floor(duration / 60); var NNvMn = duration % 60; wVVVn[duration] = { img: GUI.renderText((((((wWvWM < 10) ? "0" : "") + wWvWM) + ":") + ((NNvMn < 10) ? "0" : "")) + NNvMn, "'Viga', sans-serif", "#FF0000", 38, 100, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12) }; wVVVn[duration].img.isLoaded = 1; } CanvasUtils.drawImageHd(wVVVn[duration], (offsetX / scaleby) + 60, (offsetY / scaleby) + 145, 0, 0, 0, 1); } }; function _AliveGhoul(offsetX, offsetY) { CanvasUtils.drawImageHd(WvWnV, ((offsetX / scaleby) + canwns) - 63, 25 + (offsetY / scaleby), 0, 0, 0, 1); if (playerAlive[World.playerAlive] === window.undefined) { playerAlive[World.playerAlive] = { img: GUI.renderText("#" + World.playerAlive, "'Viga', sans-serif", "#FFFFFF", 60, 140) }; playerAlive[World.playerAlive].img.isLoaded = 1; } CanvasUtils.drawImageHd(playerAlive[World.playerAlive], ((offsetX / scaleby) + canwns) - 50, 25 + (offsetY / scaleby), 0, 0, 0, 1); }; function _Minimap(offsetX, offsetY) { nmwmn(offsetX + (250 * scaleby), offsetY); if (minimap.isLoaded !== 1) { minimap = CanvasUtils.loadImage(IMG_MAP_BORDER, minimap); return; } var mnmvW = nwMnv * NmM; var vNwWN = nwMnv * WWV; var sx = window.Math.min(window.Math.max(0, mnmvW - WWn), vvVMV); var sy = window.Math.min(window.Math.max(0, vNwWN - WWn), vvVMV); var width = WWn * scaleby; ctx.drawImage(minimap, sx, sy, mVmWm, mVmWm, offsetX, offsetY, width, width); if (World.gameMode === World.__GHOUL__) { if (World.PLAYER.ghoul !== 0) _AliveGhoul(-255, offsetY); else _TimerGhoul(offsetX + 50, offsetY, 1); } if (World.gameMode === World.__BR__) { var wVvnN = World.PLAYER.toxicMap[window.Math.floor(WWV / NnWnv)][window.Math.floor(NmM / NnWnv)]; if (((wVvnN !== 0) && (wVvnN < World.PLAYER.toxicStep)) && (World.PLAYER.toxicStep !== 8)) { shakeMagnitude = window.Math.min(1000, shakeMagnitude + delta); ctx.globalAlpha = MathUtils.Ease.inQuad(shakeMagnitude / 500); CanvasUtils.drawImageHd(WWmMW, canw2ns, 58, 0, 0, 0, 1); ctx.globalAlpha = 1; } else if (shakeMagnitude > 0) { shakeMagnitude = window.Math.max(0, shakeMagnitude - delta); ctx.globalAlpha = MathUtils.Ease.inQuad(shakeMagnitude / 500); CanvasUtils.drawImageHd(WWmMW, canw2ns, 58, 0, 0, 0, 1); ctx.globalAlpha = 1; } ctx.drawImage(MWNMV.img, sx / 2, sy / 2, WWn, WWn, offsetX, offsetY, width, width); ctx.globalAlpha = (mWWwn > 600) ? MathUtils.Ease.inOutQuad((1200 - mWWwn) / 600) : MathUtils.Ease.inOutQuad(mWWwn / 600); mWWwn = (mWWwn + delta) % 1200; ctx.drawImage(MMvWn.img, sx / 2, sy / 2, WWn, WWn, offsetX, offsetY, width, width); ctx.globalAlpha = 1; _AliveGhoul(0, offsetY); _TimerGhoul(offsetX, offsetY, 0); } else if (World.PLAYER.ghoul === 0) { if (World.gauges.rad.decrease === 1) { WNmVW = window.Math.min(1000, WNmVW + delta); ctx.globalAlpha = MathUtils.Ease.inQuad(WNmVW / 500); CanvasUtils.drawImageHd(VmWNN, canw2ns, 58, 0, 0, 0, 1); ctx.globalAlpha = 1; } else if (WNmVW > 0) { WNmVW = window.Math.max(0, WNmVW - delta); ctx.globalAlpha = MathUtils.Ease.inQuad(WNmVW / 500); CanvasUtils.drawImageHd(VmWNN, canw2ns, 58, 0, 0, 0, 1); ctx.globalAlpha = 1; } } if (sx >= vvVMV) mnmvW = window.Math.min(((mnmvW - VnvWV) / 2) + nWWwM, WWn - 8); else if (mnmvW < WWn) mnmvW = window.Math.max(15, mnmvW / 2); else mnmvW = nWWwM; if (sy >= vvVMV) vNwWN = window.Math.min(((vNwWN - VnvWV) / 2) + nWWwM, WWn - 8); else if (vNwWN < WWn) vNwWN = window.Math.max(15, vNwWN / 2); else vNwWN = nWWwM; var wX_Scale = offsetX / scaleby; var wY_Scale = offsetY / scaleby; if ((World.PLAYER.team !== -1) || ((World.PLAYER.ghoul !== 0) && (World.playerAlive < 6))) { var players = Entitie.units[__ENTITIE_PLAYER__]; for (var i = 0; i < World.PLAYER.teamLength; i++) { var nmmvN = World.PLAYER.teamPos[i]; if (nmmvN.old < 0) continue; var PLAYER = World.players[nmmvN.id]; var angle; if (frameId === (PLAYER.frameId + 1)) { var WMv = players[PLAYER.locatePlayer]; if (Math2d.fastDist(PLAYER.rx, PLAYER.ry, WMv.x, WMv.y) < 1000) { PLAYER.rx = WMv.x; PLAYER.ry = WMv.y; } PLAYER.x = WMv.x; PLAYER.y = WMv.y; angle = WMv.angle; } else var angle = PLAYER.x % PI2; var _x = wX_Scale + window.Math.max(15, window.Math.min(WWn - 15, (mnmvW - 3) + ((PLAYER.rx - NmM) * nwMnv))); var _y = wY_Scale + window.Math.max(15, window.Math.min(WWn - 15, (vNwWN - 3) + ((PLAYER.ry - WWV) * nwMnv))); CanvasUtils.drawImageHd(arrowiconmap, _x, _y, angle, 0, 0, 1); } } if (World.PLAYER.badKarmaDelay > 0) { var PLAYER = World.players[World.PLAYER.badKarma]; if (frameId === (PLAYER.frameId + 1)) { var players = Entitie.units[__ENTITIE_PLAYER__]; var WMv = players[PLAYER.locatePlayer]; if (Math2d.fastDist(PLAYER.rx, PLAYER.ry, WMv.x, WMv.y) < 1000) { PLAYER.rx = WMv.x; PLAYER.ry = WMv.y; } PLAYER.x = WMv.x; PLAYER.y = WMv.y; } CanvasUtils.drawImageHd(KARMA[PLAYER.KARMA], wX_Scale + window.Math.max(15, window.Math.min(WWn - 15, (mnmvW - 3) + ((PLAYER.rx - NmM) * nwMnv))), wY_Scale + window.Math.max(15, window.Math.min(WWn - 15, (vNwWN - 3) + ((PLAYER.ry - WWV) * nwMnv))), 0, 0, 0, 1.25); } var _x = wX_Scale + (mnmvW - 3); var _y = wY_Scale + (vNwWN - 3); CanvasUtils.drawImageHd(arrowiconmap2, _x, _y, Mouse.angle, 0, 0, 1); if ((World.PLAYER.ghoul === 0) && ((World.PLAYER.skillPoint > 0) || (wnW.effect > 0))) { var move = (wnW.move + delta) % 1000; wnW.move = move; if (wnW.move < 500) offsetX += 260 + (15 * MathUtils.Ease.inOutQuad(move / 500)); else offsetX += 260 + (15 * MathUtils.Ease.inOutQuad((1000 - move) / 500)); ctx.globalAlpha = MathUtils.Ease.inQuad(wnW.effect); CanvasUtils.drawImageHd(wnW, offsetX, offsetY + 31, 0, 0, 0, 1); ctx.globalAlpha = 1; if ((World.PLAYER.skillPoint <= 0) || (Game.getSkillBoxState() === 1)) wnW.effect = window.Math.max(0, wnW.effect - (delta / 500)); else if (wnW.effect < 1) wnW.effect = window.Math.min(1, wnW.effect + (delta / 500)); } }; var teamName = ""; var nNmVw = null; function _Team(BUTTON_CLOSE_BOX, VWwmm, mMnVm, wwVMn, NnvmN, mvNMv, WvvvV, deleteTeam) { var offsetX = 0; var offsetY = 0; if (World.PLAYER.team === -1) { var teamNameValid = 1; if (Game.teamName.length === 0) teamNameValid = 0; else { for (var i = 0; i < World.teams.length; i++) { if (World.teams[i].name === Game.teamName) { teamNameValid = 0; break; } } } World.PLAYER.teamNameValid = teamNameValid; offsetX = VWwmm.pos.x; offsetY = VWwmm.pos.y; VWwmm.draw(); BUTTON_CLOSE_BOX.pos.x = offsetX + (513 * scaleby); BUTTON_CLOSE_BOX.pos.y = offsetY + (2 * scaleby); if (teamName !== Game.teamName) { teamName = Game.teamName; nNmVw = GUI.renderText(teamName, "'Viga', sans-serif", "#FFFFFF", 30, 400); } if ((nNmVw !== null) && (teamName.length !== 0)) { CanvasUtils.fillRect(ctx, (offsetX / scaleby) + 39, (offsetY / scaleby) + 14, 122, 16.5, "#000000"); ctx.drawImage(nNmVw, offsetX + (35 * scaleby), offsetY + (14.5 * scaleby), nNmVw.wh * scaleby, nNmVw.h2 * scaleby); } NnvmN.pos.x = offsetX + (172 * scaleby); NnvmN.pos.y = offsetY + (6 * scaleby); if ((teamNameValid === 0) || ((window.Date.now() - World.PLAYER.teamCreateDelay) < 30500)) { NnvmN.setState(GUI.__BUTTON_OUT__); ctx.globalAlpha = 0.5; NnvmN.draw(); ctx.globalAlpha = 1; } else NnvmN.draw(); var j = 0; for (var i = 0; i < 18; i++) { var team = World.teams[i]; if (team.leader === 0) continue; if (team.label === null) team.label = GUI.renderText(team.name, "'Viga', sans-serif", "#FFFFFF", 30, 400); ctx.drawImage(team.label, offsetX + ((20 + ((j % 3) * 163)) * scaleby), offsetY + ((58.5 + (window.Math.floor(j / 3) * 36)) * scaleby), team.label.wh * scaleby, team.label.h2 * scaleby); var wm = Game.join[j]; wm.pos.x = offsetX + ((84 + ((j % 3) * 163)) * scaleby); wm.pos.y = offsetY + ((48 + (window.Math.floor(j / 3) * 36)) * scaleby); if ((window.Date.now() - World.PLAYER.teamDelay) < 10500) { wm.setState(GUI.__BUTTON_OUT__); ctx.globalAlpha = 0.5; wm.draw(); ctx.globalAlpha = 1; } else wm.draw(); j++; } } else { offsetX = mMnVm.pos.x; offsetY = mMnVm.pos.y; var team = World.teams[World.PLAYER.team]; if (team.label === null) team.label = GUI.renderText(team.name, "'Viga', sans-serif", "#FFFFFF", 30, 400); ctx.drawImage(team.label, offsetX + (144 * scaleby), offsetY + (13 * scaleby), team.label.wh * scaleby, team.label.h2 * scaleby); mMnVm.draw(); BUTTON_CLOSE_BOX.pos.x = offsetX + (512 * scaleby); BUTTON_CLOSE_BOX.pos.y = offsetY + (34.5 * scaleby); if (World.PLAYER.teamLeader === 1) { if (World.PLAYER.teamLocked === 0) { mvNMv.pos.x = offsetX + (259 * scaleby); mvNMv.pos.y = offsetY + (5 * scaleby); mvNMv.draw(); } else { WvvvV.pos.x = offsetX + (259 * scaleby); WvvvV.pos.y = offsetY + (5 * scaleby); WvvvV.draw(); } deleteTeam.pos.x = offsetX + (311.5 * scaleby); deleteTeam.pos.y = offsetY + (5 * scaleby); deleteTeam.draw(); var j = 0; for (var i = 0; i < World.players.length; i++) { var PLAYER = World.players[i]; if ((team.uid !== PLAYER.teamUid) || (PLAYER.team !== team.id)) continue; if (PLAYER.nicknameLabel === null) PLAYER.nicknameLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); if ((PLAYER.nicknameLabel.width !== 0) && (PLAYER.nicknameLabel.height !== 0)) ctx.drawImage(PLAYER.nicknameLabel, offsetX + ((26 + ((j % 3) * 166.5)) * scaleby), offsetY + ((53 + (window.Math.floor(j / 3) * 29.5)) * scaleby), (PLAYER.nicknameLabel.wh * scaleby) / 2.2, (PLAYER.nicknameLabel.h2 * scaleby) / 2.2); var wm = Game.kick[j]; wm.pos.x = offsetX + ((132 + ((j % 3) * 166.5)) * scaleby); wm.pos.y = offsetY + ((48.5 + (window.Math.floor(j / 3) * 29.5)) * scaleby); if (((window.Date.now() - World.PLAYER.teamDelay) < 10500) || (PLAYER.id === World.PLAYER.id)) { wm.setState(GUI.__BUTTON_OUT__); ctx.globalAlpha = 0.5; wm.draw(); ctx.globalAlpha = 1; } else wm.draw(); j++; } } else { wwVMn.pos.x = offsetX + (311.5 * scaleby); wwVMn.pos.y = offsetY + (5 * scaleby); wwVMn.draw(); var j = 0; for (var i = 0; i < World.players.length; i++) { var PLAYER = World.players[i]; if ((team.uid !== PLAYER.teamUid) || (PLAYER.team !== team.id)) continue; if (PLAYER.nicknameLabel === null) PLAYER.nicknameLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); if ((PLAYER.nicknameLabel.width !== 0) && (PLAYER.nicknameLabel.height !== 0)) ctx.drawImage(PLAYER.nicknameLabel, offsetX + ((26 + ((j % 3) * 166.5)) * scaleby), offsetY + ((53 + (window.Math.floor(j / 3) * 29.5)) * scaleby), (PLAYER.nicknameLabel.wh * scaleby) / 2.2, (PLAYER.nicknameLabel.h2 * scaleby) / 2.2); j++; } } } BUTTON_CLOSE_BOX.draw(); }; function _Chest(BACKGROUND_CHESTBOX, BUTTON_CLOSE_BOX, inventoryItemNumber, inventoryAmmoNumber) { BACKGROUND_CHESTBOX.draw(); var offsetX = BACKGROUND_CHESTBOX.pos.x; var offsetY = BACKGROUND_CHESTBOX.pos.y; BUTTON_CLOSE_BOX.pos.x = offsetX + (161 * scaleby); BUTTON_CLOSE_BOX.pos.y = offsetY + (0 * scaleby); BUTTON_CLOSE_BOX.draw(); var chest = World.PLAYER.chest; var _x; var _y = offsetY + (14 * scaleby); var wm = Game.chest; for (var i = 0; i < 4; i++) { if ((i % 2) === 0) { _x = offsetX + (12.5 * scaleby); if (i === 2) _y += 71 * scaleby; } else _x += 72 * scaleby; if (chest[i][0] === 0) continue; _buttonInv(wm[i], chest[i], _x, _y, inventoryItemNumber, inventoryAmmoNumber); } }; function vMwNm() { var mmMnV = vertst; if (mmMnV > 0) CanvasUtils.fillRect(ctx, 0, 0, mmMnV, canhns, GROUND); else mmMnV = 0; var wvnWn = horist; if (wvnWn > 0) CanvasUtils.fillRect(ctx, mmMnV, 0, canwns - mmMnV, wvnWn, GROUND); else wvnWn = 0; var Mwwnn = (-vertst + canwns) - worldWidthFull; if (Mwwnn > 0) CanvasUtils.fillRect(ctx, canwns - Mwwnn, wvnWn, Mwwnn, canhns - wvnWn, GROUND); else Mwwnn = 0; var nNnMV = (-horist + canhns) - worldHeightFull; if (nNnMV > 0) CanvasUtils.fillRect(ctx, mmMnV, canhns - nNnMV, (canwns - mmMnV) - Mwwnn, nNnMV, GROUND); }; function itemstatsfunc(canvasElements, id) { var playerGauges = INVENTORY[id]; var detail = playerGauges.detail; var _name = GUI.renderText(detail.name, "'Viga', sans-serif", "#D3BB43", 30, 400); canvasElements.drawImage(_name, 20, 20); _name = GUI.renderText(detail.description, "'Viga', sans-serif", "#FFFFFF", 16, 400); canvasElements.drawImage(_name, 20, 68); if (playerGauges.idWeapon === 21) { if (playerGauges.damageBuilding > 0) { _name = GUI.renderText((("Damage: " + playerGauges.damage) + "/") + playerGauges.damageBuilding, "'Viga', sans-serif", "#D3BB43", 24, 400); canvasElements.drawImage(_name, 20, 101); } else { _name = GUI.renderText("Life: " + playerGauges.life, "'Viga', sans-serif", "#D3BB43", 24, 400); canvasElements.drawImage(_name, 20, 101); } } else if ((playerGauges.idWeapon !== window.undefined) && (playerGauges.idWeapon !== 0)) { var code = ""; var weapon = ENTITIES[__ENTITIE_PLAYER__].weapons[playerGauges.idWeapon]; if (weapon.damage !== window.undefined) { code = "Damage: " + ((weapon.damageCac === window.undefined) ? weapon.damage : weapon.damageCac); } else { if (weapon.food !== 0) code += ("Food: " + weapon.food) + " "; if (weapon.heal < 0) code += ("Damage: " + weapon.heal) + " "; else if (weapon.heal > 0) code += ("Heal: " + weapon.heal) + " "; if (weapon.energy !== 0) code += "Energy: " + weapon.energy; } _name = GUI.renderText(code, "'Viga', sans-serif", "#D3BB43", 24, 400); canvasElements.drawImage(_name, 20, 101); } else if (playerGauges.idClothe !== window.undefined) {} else { _name = GUI.renderText("Cannot be equipped", "'Viga', sans-serif", "#FFFFFF", 17, 400); canvasElements.drawImage(_name, 20, 108); } }; function BuildingStats(canvasElements, building) { var id = building.pid; var PLAYER = World.players[id]; var team = World.teams[PLAYER.team]; var ownerName = PLAYER && PLAYER.nickname !== undefined ? PLAYER.nickname : id; var _name = GUI.renderText(ownerName, "'Viga', sans-serif", "#D3BB43", 30, 400); canvasElements.drawImage(_name, 20, 20); if (team && team.uid !== undefined && team.uid === PLAYER.teamUid) { var _name2 = GUI.renderText("Team: " + team.name, "'Viga', sans-serif", "#FFFFFF", 25, 400); canvasElements.drawImage(_name2, 20, 68); } } function _Craft(BACKGROUND_CRAFTBOX, BUTTON_CLOSE_BOX, skillList, NwnNV, VvvwN, nvmnM, craftList, preview, inventoryItemNumber, inventoryAmmoNumber, BUTTON_FUEL, BUTTON_FUEL1, BUTTON_CELLS, NWmNn) { BACKGROUND_CRAFTBOX.draw(); var offsetX = BACKGROUND_CRAFTBOX.pos.x; var offsetY = BACKGROUND_CRAFTBOX.pos.y; var wX_Scale = offsetX / scaleby; var wY_Scale = offsetY / scaleby; BUTTON_CLOSE_BOX.pos.x = offsetX + (594 * scaleby); BUTTON_CLOSE_BOX.pos.y = offsetY + (0 * scaleby); BUTTON_CLOSE_BOX.draw(); var craftAvailable = World.PLAYER.craftAvailable; var recipeAvailable = World.PLAYER.recipeAvailable; var category = World.PLAYER.craftCategory; var area = World.PLAYER.craftArea; for (var i = 0; i < skillList.length; i++) { var wm = skillList[i]; if (i === category) wm.setState(GUI.__BUTTON_CLICK__); wm.pos.x = ((10 * scaleby) + offsetX) + ((i * 47) * scaleby); wm.pos.y = offsetY - (40 * scaleby); wm.draw(); } var j = 0; for (i = 0; i < craftList.length; i++) { if ((i === area) && (World.PLAYER.isInBuilding === 1)) {} else if ((i !== World.PLAYER.buildingArea) && (i !== 0)) continue; var wm = craftList[i]; if (i === area) wm.setState(GUI.__BUTTON_CLICK__); wm.pos.x = offsetX - (40 * scaleby); wm.pos.y = ((10 * scaleby) + offsetY) + ((j * 43) * scaleby); wm.draw(); j++; } preview.pos.x = offsetX + (364 * scaleby); preview.pos.y = offsetY + (27 * scaleby); preview.draw(); var craft = Game.craft; var len = World.PLAYER.craftLen; var width = 49 * scaleby; var height = 49 * scaleby; var MVM = 58 * scaleby; var mnMmm = 30 * scaleby; var NWNmV = 34 * scaleby; var breath = 1; if (VnwNw < 500) { breath += 0.08 * MathUtils.Ease.inQuad(VnwNw / 500); VnwNw += delta; } else { breath += 0.08 * MathUtils.Ease.outQuad(1 - ((VnwNw - 500) / 500)); VnwNw += delta; if (VnwNw > 1000) VnwNw = 0; } breath = window.Math.max(1, window.Math.min(1.08, breath)); for (i = 0; i < len; i++) { var wm = craft[i]; wm.pos.x = (mnMmm + offsetX) + ((i % 5) * MVM); wm.pos.y = (NWNmV + offsetY) + (window.Math.floor(i / 5) * MVM); var availableRecip = craftAvailable[i]; if (availableRecip === 0) { ctx.globalAlpha = 0.45; wm.draw(); ctx.globalAlpha = 1; } else if (availableRecip === 2) { wm.setState(GUI.__BUTTON_IN__); wm.draw(); } else { ctx.globalAlpha = 0.6; CanvasUtils.drawImageHd(STROKE_BONUS, (wm.pos.x / scaleby) + 24.5, (wm.pos.y / scaleby) + 24.5, 0, 0, 0, breath); ctx.globalAlpha = 1; wm.draw(); } } var Nnv = 0; if (World.PLAYER.craftCategory === -1) { if (World.PLAYER.isInBuilding === 1) { NwnNV.pos.x = offsetX + (454 * scaleby); NwnNV.pos.y = offsetY + (153 * scaleby); if (((World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected] === 1) && (World.PLAYER.building.len < 4)) && (World.PLAYER.building.fuel !== 0)) NwnNV.draw(); else { ctx.globalAlpha = 0.5; NwnNV.setState(GUI.__BUTTON_OUT__); NwnNV.draw(); ctx.globalAlpha = 1; } } else if (World.PLAYER.crafting === 0) { NwnNV.pos.x = offsetX + (454 * scaleby); NwnNV.pos.y = offsetY + (153 * scaleby); if (World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected] === 1) NwnNV.draw(); else { ctx.globalAlpha = 0.5; NwnNV.setState(GUI.__BUTTON_OUT__); NwnNV.draw(); ctx.globalAlpha = 1; } } else { VvvwN.pos.x = offsetX + (454 * scaleby); VvvwN.pos.y = offsetY + (153 * scaleby); VvvwN.draw(); } if (craftGauge.isLoaded !== 1) { craftGauge = CanvasUtils.loadImage(IMG_CRAFT_GAUGE, craftGauge); return; } if (World.PLAYER.isInBuilding === 1) { if ((World.PLAYER.building.time !== 0) && (World.PLAYER.building.fuel !== 0)) { Nnv = World.PLAYER.building.time - window.Date.now(); if (Nnv < 0) World.PLAYER.building.time = 0; Nnv = MathUtils.Ease.inOutQuad(1 - (Nnv / World.PLAYER.building.timeMax)); } } else if (World.PLAYER.crafting !== 0) { Nnv = World.PLAYER.crafting - window.Date.now(); if (Nnv < 0) World.PLAYER.crafting = 0; Nnv = MathUtils.Ease.inOutQuad(1 - (Nnv / World.PLAYER.craftingMax)); } Nnv = window.Math.min(1, window.Math.max(0, Nnv)); width = (scaleby * craftGauge.width) / 2; height = (scaleby * craftGauge.height) / 2; var posx = offsetX + (356 * scaleby); var posy = offsetY + (206 * scaleby); ctx.fillStyle = "#A29742"; MVM = 3 * scaleby; mnMmm = 2 * MVM; ctx.fillRect(window.Math.floor(posx + MVM), window.Math.floor(posy + MVM), window.Math.floor((width - mnMmm) * Nnv), window.Math.floor(height - mnMmm)); ctx.drawImage(craftGauge, posx, posy, width, height); } else { var skill = World.PLAYER.craftAvailable[World.PLAYER.craftIdSelected]; nvmnM.pos.x = offsetX + (454 * scaleby); nvmnM.pos.y = offsetY + (153 * scaleby); if (skill === 1) nvmnM.draw(); else if (skill === 0) { ctx.globalAlpha = 0.5; nvmnM.setState(GUI.__BUTTON_OUT__); nvmnM.draw(); ctx.globalAlpha = 1; if (World.PLAYER.craftSelected !== MMNWW) { context2J.clearRect(0, 0, 420, 148); MMNWW = World.PLAYER.craftSelected; var detail = INVENTORY[MMNWW].detail; var MwNwV = 20; if (detail.level > World.PLAYER.level) { var text = GUI.renderText(("Require level " + detail.level) + " or higher", "'Viga', sans-serif", "#D8BA3D", 30, 600); context2J.drawImage(text, 20, MwNwV); MwNwV += 50; } if ((detail.previous !== -1) && (World.PLAYER.skillUnlocked[detail.previous] === window.undefined)) { var text = GUI.renderText(("Unlock " + INVENTORY[detail.previous].detail.name) + " before", "'Viga', sans-serif", "#D8BA3D", 30, 600); context2J.drawImage(text, 20, MwNwV); MwNwV += 50; } if (World.PLAYER.skillPoint < detail.price) { var text = GUI.renderText((("Cost " + detail.price) + " skill point") + ((detail.price !== 1) ? "s" : ""), "'Viga', sans-serif", "#D8BA3D", 30, 600); context2J.drawImage(text, 20, MwNwV); } } ctx.drawImage(canvasJ, offsetX + (356 * scaleby), offsetY + (211 * scaleby), (scaleby * canvasJ.width) / 2, (scaleby * canvasJ.height) / 2); } else { nvmnM.setState(GUI.__BUTTON_CLICK__); nvmnM.draw(); } } if (World.PLAYER.isInBuilding === 1) { var amount = World.PLAYER.building.fuel; if (amount >= 0) { var wm; if (((area === AREAS.__SMELTER__) || (area === AREAS.__EXTRACTOR__)) || (area === AREAS.__AGITATOR__)) wm = BUTTON_FUEL1; else if (area === AREAS.__TESLA__ || area === AREAS.__FEEDER__) wm = BUTTON_CELLS; else wm = BUTTON_FUEL; wm.pos.x = offsetX + (532 * scaleby); wm.pos.y = offsetY + (153 * scaleby); if (World.PLAYER.building.fuel !== 255) wm.draw(); else { ctx.globalAlpha = 0.5; wm.setState(GUI.__BUTTON_OUT__); wm.draw(); ctx.globalAlpha = 1; } if (inventoryAmmoNumber[amount] === window.undefined) { inventoryAmmoNumber[amount] = { img: GUI.renderText("x" + amount, "'Black Han Sans', sans-serif", "#FFFF00", 30, 250, window.undefined, 15, 12, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12) }; inventoryAmmoNumber[amount].img.isLoaded = 1; } CanvasUtils.drawImageHd(inventoryAmmoNumber[amount], (wm.pos.x / scaleby) + 42, (wm.pos.y / scaleby) + 42, -0.5, 0, 0, 0.9); } var queue = Game.queue; var WMnmM = World.PLAYER.building.pos; len = World.PLAYER.building.len; width = 40 * scaleby; height = 40 * scaleby; MVM = 62 * scaleby; mnMmm = 356 * scaleby; NWNmV = 237 * scaleby; for (var i = 0; i < len; i++) { var wm = queue[i]; if (i === WMnmM) { if (Nnv !== 0) { ctx.globalAlpha = 0.6; CanvasUtils.drawImageHd(STROKE_BONUS, (wm.pos.x / scaleby) + 20, (wm.pos.y / scaleby) + 20, 0, 0, 0, 0.85 * window.Math.max(0.01, window.Math.min(1, Nnv))); ctx.globalAlpha = 1; } } else if (i < WMnmM) { ctx.globalAlpha = 0.6; CanvasUtils.drawImageHd(STROKE_BONUS, (wm.pos.x / scaleby) + 20, (wm.pos.y / scaleby) + 20, 0, 0, 0, breath * 0.85); ctx.globalAlpha = 1; } wm.pos.x = (mnMmm + offsetX) + (i * MVM); wm.pos.y = NWNmV + offsetY; wm.draw(); } } var tools = Game.tools; len = World.PLAYER.toolsLen; MVM = 45 * scaleby; mnMmm = 356 * scaleby; NWNmV = 151 * scaleby; for (var i = 0; i < len; i++) { var wm = tools[i]; wm.pos.x = (mnMmm + offsetX) + (i * MVM); wm.pos.y = NWNmV + offsetY; wm.draw(); } if (World.PLAYER.skillPoint !== wmmVm) { context2H.clearRect(0, 0, 280, 50); wmmVm = World.PLAYER.skillPoint; var text = GUI.renderText("SKILL POINT: " + wmmVm, "'Viga', sans-serif", "#FFFFFF", 32, 400); context2H.drawImage(text, 24, 12); } ctx.drawImage(skillPoint, offsetX + (455 * scaleby), offsetY + (378 * scaleby), (scaleby * skillPoint.width) / 2, (scaleby * skillPoint.height) / 2); if (World.PLAYER.craftSelected !== mwwNm) { context2dG.clearRect(0, 0, 280, 148); mwwNm = World.PLAYER.craftSelected; itemstatsfunc(context2dG, mwwNm); } ctx.drawImage(canvasG, offsetX + (439 * scaleby), offsetY + (24 * scaleby), (scaleby * canvasG.width) / 2, (scaleby * canvasG.height) / 2); if ((World.PLAYER.skillPoint > 0) || (wvV.effect > 0)) { var move = (wvV.move + delta) % 1000; wvV.move = move; var _y = offsetY / scaleby; if (wvV.move < 500) _y += -62 - (15 * MathUtils.Ease.inOutQuad(move / 500)); else _y += -62 - (15 * MathUtils.Ease.inOutQuad((1000 - move) / 500)); ctx.globalAlpha = MathUtils.Ease.inQuad(wvV.effect); CanvasUtils.drawImageHd(wvV, 266 + (BACKGROUND_CRAFTBOX.pos.x / scaleby), _y, 0, 0, 0, 1); ctx.globalAlpha = 1; if (World.PLAYER.skillPoint <= 0) wvV.effect = window.Math.max(0, wvV.effect - (delta / 500)); else if (wvV.effect < 1) wvV.effect = window.Math.min(1, wvV.effect + (delta / 500)); } var recipe = Game.recipe; len = World.PLAYER.recipeLen; width = 40 * scaleby; height = 40 * scaleby; MVM = 45 * scaleby; mnMmm = 356 * scaleby; NWNmV = 107 * scaleby; for (var i = 0; i < len; i++) { var wm = recipe[i]; wm.pos.x = (mnMmm + offsetX) + (i * MVM); wm.pos.y = NWNmV + offsetY; var amount = window.Math.abs(recipeAvailable[i]); if (inventoryItemNumber[amount] === window.undefined) { inventoryItemNumber[amount] = { img: GUI.renderText("x" + amount, "'Black Han Sans', sans-serif", "#ffffff", 30, 250, window.undefined, 15, 12, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12) }; inventoryItemNumber[amount].img.isLoaded = 1; } if (recipeAvailable[i] < 0) { ctx.globalAlpha = 0.45; wm.draw(); CanvasUtils.drawImageHd(inventoryItemNumber[amount], (wm.pos.x / scaleby) + 30, (wm.pos.y / scaleby) + 32, -0.5, 0, 0, 0.9); ctx.globalAlpha = 1; } else { wm.draw(); CanvasUtils.drawImageHd(inventoryItemNumber[amount], (wm.pos.x / scaleby) + 30, (wm.pos.y / scaleby) + 32, -0.5, 0, 0, 0.9); } if ((NWmNn === i) && (World.PLAYER.recipeList[i] > 0)) drawDarkBox(World.PLAYER.recipeList[i], wm.pos.x, wm.pos.y + (45 * scaleby)); } }; function _Config(WWmVM, nmvnW, wMMmv, NNWVW, nMmMw, vNVNN, wvmWv, WmWnm, VNNMW, NVVwW, BUTTON_CLOSE_BOX, WVVMw, vnNWN, MnvNV) { WWmVM.draw(); var offsetX = WWmVM.pos.x; var offsetY = WWmVM.pos.y; BUTTON_CLOSE_BOX.pos.x = offsetX + (265 * scaleby); BUTTON_CLOSE_BOX.pos.y = offsetY + (0 * scaleby); BUTTON_CLOSE_BOX.draw(); nMmMw.pos.x = offsetX + (87 * scaleby); nMmMw.pos.y = offsetY + (15 * scaleby); if (Keyboard.isAzerty() === 1) nMmMw.setState(GUI.__BUTTON_CLICK__); nMmMw.draw(); vNVNN.pos.x = offsetX + (173 * scaleby); vNVNN.pos.y = offsetY + (15 * scaleby); if (Keyboard.isQwerty() === 1) vNVNN.setState(GUI.__BUTTON_CLICK__); vNVNN.draw(); NNWVW.pos.x = offsetX + (87 * scaleby); NNWVW.pos.y = offsetY + (62 * scaleby); if (CanvasUtils.options.forceResolution === 3) NNWVW.setState(GUI.__BUTTON_CLICK__); NNWVW.draw(); wMMmv.pos.x = offsetX + (147 * scaleby); wMMmv.pos.y = offsetY + (62 * scaleby); if (CanvasUtils.options.forceResolution === 2) wMMmv.setState(GUI.__BUTTON_CLICK__); wMMmv.draw(); nmvnW.pos.x = offsetX + (207 * scaleby); nmvnW.pos.y = offsetY + (62 * scaleby); if (CanvasUtils.options.forceResolution === 1) nmvnW.setState(GUI.__BUTTON_CLICK__); nmvnW.draw(); wvmWv.pos.x = offsetX + (87 * scaleby); wvmWv.pos.y = offsetY + (117 * scaleby); if (AudioUtils.options.isAudio === 1) wvmWv.setState(GUI.__BUTTON_CLICK__); wvmWv.draw(); WmWnm.pos.x = offsetX + (147 * scaleby); WmWnm.pos.y = offsetY + (117 * scaleby); if (AudioUtils.options.isAudio === 0) WmWnm.setState(GUI.__BUTTON_CLICK__); WmWnm.draw(); VNNMW.pos.x = offsetX + (87 * scaleby); VNNMW.pos.y = offsetY + (167 * scaleby); if (AudioUtils.options.isFx === 1) VNNMW.setState(GUI.__BUTTON_CLICK__); VNNMW.draw(); NVVwW.pos.x = offsetX + (147 * scaleby); NVVwW.pos.y = offsetY + (167 * scaleby); if (AudioUtils.options.isFx === 0) NVVwW.setState(GUI.__BUTTON_CLICK__); NVVwW.draw(); MnvNV.pos.x = offsetX + (87 * scaleby); MnvNV.pos.y = offsetY + (217 * scaleby); if (setParticles === 0) MnvNV.setState(GUI.__BUTTON_CLICK__); MnvNV.draw(); vnNWN.pos.x = offsetX + (147 * scaleby); vnNWN.pos.y = offsetY + (217 * scaleby); if (setParticles === 1) vnNWN.setState(GUI.__BUTTON_CLICK__); vnNWN.draw(); WVVMw.pos.x = offsetX + (207 * scaleby); WVVMw.pos.y = offsetY + (217 * scaleby); if (setParticles === 2) WVVMw.setState(GUI.__BUTTON_CLICK__); WVVMw.draw(); }; function _playerChatMessage(player) { var PLAYER = World.players[player.pid]; if (PLAYER.text.length > 0) { for (var i = 0; (i < PLAYER.text.length) && (i < 2); i++) { if (!PLAYER.label[i]) { PLAYER.label[i] = GUI.renderText(PLAYER.text[i], "'Viga', sans-serif", "#ffffff", 32, 1000, "#000000", 33, 19, window.undefined, window.undefined, 0.55, 5); PLAYER.textEffect[i] = 0; PLAYER.textMove[i] = 0; } if (i === 1) PLAYER.textMove[0] = MathUtils.Ease.inOutQuad(PLAYER.textEase) * 28; } wwmww = delta / 1000; PLAYER.textEffect[0] += wwmww; if (PLAYER.text.length > 1) { PLAYER.textEase = window.Math.min(PLAYER.textEase + wwmww, 1); if ((PLAYER.textEffect[0] > 1) && (PLAYER.textEase > 0.5)) PLAYER.textEffect[1] += wwmww; } for (var i = 0; (i < PLAYER.text.length) && (i < 2); i++) { var effect = PLAYER.textEffect[i]; if (effect > 0) { if (effect < 0.25) ctx.globalAlpha = effect * 4; else if (effect > 4.75) ctx.globalAlpha = window.Math.max((5 - effect) * 5, 0); else ctx.globalAlpha = 1; var offsetY = 118; var img = PLAYER.label[i]; ctx.drawImage(img, 0, 0, img.width, img.height, ((vertst + player.x) - (img.width / 4)) * scaleby, (((horist + player.y) - offsetY) - PLAYER.textMove[i]) * scaleby, (img.width / 2) * scaleby, (img.height / 2) * scaleby); ctx.globalAlpha = 1; } } if (PLAYER.textEffect[0] > 5) { PLAYER.textEffect.shift(); PLAYER.text.shift(); PLAYER.textMove.shift(); PLAYER.label.shift(); PLAYER.textEase = 0; } } }; function _playerID(player) { var PLAYER = World.players[player.pid]; if (((((player.extra & 255) === 16) && (World.PLAYER.admin !== 1)) && (player.pid !== World.PLAYER.id)) && (((PLAYER.team === -1) || (World.teams[PLAYER.team].uid !== PLAYER.teamUid)) || (World.PLAYER.team !== PLAYER.team))) return; if (PLAYER.playerIdLabel === null) PLAYER.playerIdLabel = GUI.renderText("#" + PLAYER.id, "'Viga', sans-serif", "#FFFFFF", 24, 400, window.undefined, 16, 25, window.undefined, 0.5, window.undefined, window.undefined, "#000000", 5); var img = PLAYER.playerIdLabel; var offsetY = 90; ctx.drawImage(img, ((vertst + player.x) - (img.wh / 2)) * scaleby, ((horist + player.y) - offsetY - 13) * scaleby, img.wh * scaleby, img.h2 * scaleby); } function _playerName(player) { var colorTeam = '#FFFFFF'; var colorEnemy = '#FFFFFF'; if (MOD.ColorizeTeam) { colorTeam = MOD.TeamColor; colorEnemy = MOD.EnemyColor;} else { colorTeam = '#FFFFFF'; colorEnemy = '#FFFFFF';} var PLAYER = World.players[player.pid]; if (((((player.extra & 255) === 16) && (World.PLAYER.admin !== 1)) && (player.pid !== World.PLAYER.id)) && (((PLAYER.team === -1) || (World.teams[PLAYER.team].uid !== PLAYER.teamUid)) || (World.PLAYER.team !== PLAYER.team))) return; if (PLAYER.nicknameLabel === null) PLAYER.nicknameLabel = GUI.renderText(PLAYER.nickname, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); var img = PLAYER.nicknameLabel; var offsetY = 90; if (PLAYER.team === -1) ctx.drawImage(img, ((vertst + player.x) - (img.wh / 2)) * scaleby, ((horist + player.y) - offsetY) * scaleby, img.wh * scaleby, img.h2 * scaleby); else if (PLAYER.team !== -1) { var team = World.teams[PLAYER.team]; if (team.uid === PLAYER.teamUid) { if (team.labelNickname === null) var isInClan = 0; if (((player.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[player.pid].team)) && (World.players[player.pid].teamUid === World.teams[World.PLAYER.team].uid)))) { isInClan = 1; team.labelNickname = GUI.renderText(("[" + team.name) + "]", "'Viga', sans-serif", colorTeam, 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); } else team.labelNickname = GUI.renderText(("[" + team.name) + "]", "'Viga', sans-serif", colorEnemy, 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); var wvMMv = team.labelNickname; ctx.drawImage(wvMMv, ((((vertst + player.x) - (img.wh / 2)) - (wvMMv.wh / 2)) - 0.5) * scaleby, ((horist + player.y) - offsetY) * scaleby, wvMMv.wh * scaleby, wvMMv.h2 * scaleby); if ((img.width !== 0) && (img.height !== 0)) ctx.drawImage(img, (((vertst + player.x) - (img.wh / 2)) + (wvMMv.wh / 2)) * scaleby, ((horist + player.y) - offsetY) * scaleby, img.wh * scaleby, img.h2 * scaleby); } else PLAYER.team = -1; } // Auto Eat Label if (MOD.autoEat) { if (AutoEatLabel === null) AutoEatLabel = GUI.renderText('FOOD', "'Viga', sans-serif", "#00FF00", 20, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 10); var img = AutoEatLabel; var offsetY = 90; ctx.drawImage(img, ((vertst + World.PLAYER.x) - (img.wh / 2)) * scaleby, ((horist + World.PLAYER.y) - offsetY + 32) * scaleby, img.wh * scaleby, img.h2 * scaleby); } // Auto Loot Label if (MOD.autoLoot) { if (AutoLootLabel === null) AutoLootLabel = GUI.renderText('LOOT', "'Viga', sans-serif", "#FF0000", 20, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 10); var img = AutoLootLabel; var offsetY = 90; ctx.drawImage(img, ((vertst + World.PLAYER.x) - (img.wh / 2)) * scaleby, ((horist + World.PLAYER.y) - offsetY + 21) * scaleby, img.wh * scaleby, img.h2 * scaleby); } // Aim Bot Label if (MOD.AimBotEnable) { if (AimBotLabel === null) AimBotLabel = GUI.renderText('AIM', "'Viga', sans-serif", "#ad00e3", 20, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 10); var img = AimBotLabel; var offsetY = 90; ctx.drawImage(img, ((vertst + World.PLAYER.x) - ((img.wh - 60) / 2)) * scaleby, ((horist + World.PLAYER.y) - offsetY + 21) * scaleby, img.wh * scaleby, img.h2 * scaleby); } }; function vmNmW(tile, i, j, wVNVN, vWMwn, NVWwM, MWMvm) { var building = BUILDINGS[tile.type]; var img = building.img; if (img.isLoaded !== 1) { building.img = CanvasUtils.loadImage(building.src, building.img); return; } var nVNNn = NVWwM - tile.i; var VwMWn = MWMvm - tile.j; var nNmvn = (i + building.grid.length) - nVNNn; var VWMmV = (j + building.grid[0].length) - VwMWn; var nMNww = 0; var WvMwV = 0; for (var _i = i, mmWMW = 0; _i < nNmvn; _i++, mmWMW++) { if (_i >= VmvVW) { nMNww = building.grid.length - mmWMW; break; } for (var _j = j, mVvwm = 0; _j < VWMmV; _j++, mVvwm++) { if (_j >= wWmnn) { WvMwV = building.grid[0].length - mVvwm; break; } else vMnnw[_i][_j] = frameId; } } var offsetX = 0; var offsetY = 0; var height = 0; var width = 0; if ((nMNww !== 0) || (WvMwV !== 0)) { offsetX = (((tile.j + VwMWn) * __TILE_SIZE__) + vertst) * scaleby; offsetY = (((tile.i + nVNNn) * __TILE_SIZE__) + horist) * scaleby; nVNNn *= 32; VwMWn *= 32; height = (img.height - (nMNww * 32)) + nVNNn; width = (img.width - (WvMwV * 32)) + VwMWn; } else { offsetX = (((tile.j + VwMWn) * __TILE_SIZE__) + vertst) * scaleby; offsetY = (((tile.i + nVNNn) * __TILE_SIZE__) + horist) * scaleby; nVNNn *= 32; VwMWn *= 32; height = img.height - nVNNn; width = img.width - VwMWn; } ctx.drawImage(img, VwMWn, nVNNn, width, height, offsetX, offsetY, (width * 3) * scaleby, (height * 3) * scaleby); }; function wNnvM() { WvmnV = CanvasUtils.lerp(WvmnV, (((Render.scale + NNmMN[0]) + NNmMN[1]) + NNmMN[2]) + NNmMN[3], vwMWM); oldscale = scaleby; scaleby += WvmnV * scaleby; canwns = canw / scaleby; canhns = canh / scaleby; }; function myplayerfocusinscreen() { var players = Entitie.units[__ENTITIE_PLAYER__]; var border = Entitie.border[__ENTITIE_PLAYER__]; var len = border.border; for (var i = 0; i < len; i++) { var PLAYER = players[border.cycle[i]]; if (PLAYER.pid === World.PLAYER.id) { if (Math2d.fastDist(World.PLAYER.x, World.PLAYER.y, PLAYER.x, PLAYER.y) < 1) WMWvN = window.Math.max(0, WMWvN - delta); else WMWvN = mMmvV; var wVn = ENTITIES[__ENTITIE_PLAYER__].clothes[PLAYER.extra & 255]; var gauges = World.gauges; if (wVn.rad !== window.undefined) { gauges.rad.bonus = wVn.rad; gauges.cold.bonus = wVn.warm; } else { gauges.rad.bonus = 0; gauges.cold.bonus = 0; } NmM = PLAYER.x; WWV = PLAYER.y; World.PLAYER.x = PLAYER.x; World.PLAYER.y = PLAYER.y; World.PLAYER._i = PLAYER.i; World.PLAYER._j = PLAYER.j; World.PLAYER.isBuilding = (ENTITIES[__ENTITIE_PLAYER__].weapons[(PLAYER.extra >> 8) & 255].type === 6) ? 1 : 0; var vWwvm = window.Math.min(canh4ns, canw4ns); if (Mouse.distance > vWwvm) vWwvm = WwmVw * window.Math.min((Mouse.distance - vWwvm) / vWwvm, 1); else vWwvm = 0; var offsetX = vWwvm * window.Math.cos(Mouse.angle); var offsetY = vWwvm * window.Math.sin(Mouse.angle); vvWnv = CanvasUtils.lerp(vvWnv, offsetX, 0.025); Nvmmn = CanvasUtils.lerp(Nvmmn, offsetY, 0.025); var nvVvv = 0; var WvnMn = 0; if (Render.shake > 0) { Render.shake -= 1; nvVvv += (window.Math.random() * 6) - 3; WvnMn += (window.Math.random() * 6) - 3; } if (Render.explosionShake > 0) { Render.explosionShake -= 1; nvVvv += (window.Math.random() * 18) - 9; WvnMn += (window.Math.random() * 18) - 9; } vertst = (((canw2 / scaleby) - PLAYER.x) - vvWnv) + nvVvv; horist = (((canh2 / scaleby) - PLAYER.y) - Nvmmn) + WvnMn; NVVWM = PLAYER.x + vvWnv; WVNMV = PLAYER.y + Nvmmn; rowx = ~~((Mouse.x*scaleby/scaleby +vvWnv - canw2/scaleby + NmM) / 100); rowy = ~~((Mouse.y*scaleby/scaleby +Nvmmn - canh2/scaleby + WWV) / 100); return; } } }; function mNWNw() { for (var i = 0; i < World.PLAYER.gridPrev.length; i++) { if (World.PLAYER.gridPrev[i] !== 0) return 0; } return 1; }; function wmVNW() { if (World.PLAYER.isBuilding === 1) { if ((World.PLAYER.grid > 0) && ((World.PLAYER.iGrid !== World.PLAYER._i) || (World.PLAYER.jGrid !== World.PLAYER._j))) { for (var i = 0; i < World.PLAYER.gridPrev.length; i++) { if (World.PLAYER.gridPrev[i] === 0) { World.PLAYER.gridPrev[i] = World.PLAYER.grid; World.PLAYER.iGridPrev[i] = World.PLAYER.iGrid; World.PLAYER.jGridPrev[i] = World.PLAYER.jGrid; break; } } World.PLAYER.grid = 0; World.PLAYER.iGrid = World.PLAYER._i; World.PLAYER.jGrid = World.PLAYER._j; } World.PLAYER.grid = window.Math.min(Mvvwv, World.PLAYER.grid + delta); for (var i = 0; i < World.PLAYER.gridPrev.length; i++) World.PLAYER.gridPrev[i] = window.Math.max(0, World.PLAYER.gridPrev[i] - delta); } else if ((World.PLAYER.grid === 0) && (mNWNw() === 1)) return; else { World.PLAYER.grid = window.Math.max(0, World.PLAYER.grid - delta); for (var i = 0; i < World.PLAYER.gridPrev.length; i++) World.PLAYER.gridPrev[i] = window.Math.max(0, World.PLAYER.gridPrev[i] - delta); } if (wWNmv.isLoaded !== 1) { wWNmv = CanvasUtils.loadImage(IMG_CRAFT_GRID, wWNmv); return; } ctx.globalAlpha = World.PLAYER.grid / Mvvwv; var offsetY = scaleby * (((World.PLAYER.iGrid * __TILE_SIZE__) + horist) + __TILE_SIZE2__); var offsetX = scaleby * (((World.PLAYER.jGrid * __TILE_SIZE__) + vertst) + __TILE_SIZE2__); var width = (scaleby * wWNmv.width) / 2; var height = (scaleby * wWNmv.height) / 2; ctx.drawImage(wWNmv, offsetX - (width / 2), offsetY - (height / 2), width, height); ctx.globalAlpha = 1; for (var i = 0; i < World.PLAYER.gridPrev.length; i++) { if (World.PLAYER.gridPrev[i] > 0) { ctx.globalAlpha = World.PLAYER.gridPrev[i] / Mvvwv; var offsetY = scaleby * (((World.PLAYER.iGridPrev[i] * __TILE_SIZE__) + horist) + __TILE_SIZE2__); var offsetX = scaleby * (((World.PLAYER.jGridPrev[i] * __TILE_SIZE__) + vertst) + __TILE_SIZE2__); var width = (scaleby * wWNmv.width) / 2; var height = (scaleby * wWNmv.height) / 2; ctx.drawImage(wWNmv, offsetX - (width / 2), offsetY - (height / 2), width, height); ctx.globalAlpha = 1; } } }; function wmMwV() { var wVNVN = window.Math.min(MapManager.height - VmvVW, window.Math.max(0, (((WnWvv - VmvVW) / 2) + window.Math.floor((WVNMV / __TILE_SIZE__) - (VmvVW / 2))) + 1)); var vWMwn = window.Math.min(MapManager.width - wWmnn, window.Math.max(0, (((NVmMW - wWmnn) / 2) + window.Math.floor((NVVWM / __TILE_SIZE__) - (wWmnn / 2))) + 1)); var height = wVNVN + VmvVW; var width = vWMwn + wWmnn; for (var i = wVNVN; i < height; i++) { for (var j = vWMwn; j < width; j++) { var player = MapManager.nWmMn[i][j]; } } }; function _playerNotification(player) { var PLAYER = World.players[player.pid]; if ((PLAYER !== window.undefined) && (PLAYER.notification.length > 0)) { if (PLAYER.notificationDelay >= Mvnwm) PLAYER.notificationDelay = 0; var delay = PLAYER.notificationDelay; var level = PLAYER.notificationLevel[0]; var type = PLAYER.notification[0]; if (delay === 0) { var distance = Math2d.distance(player.x, player.y, NmM, WWV); } PLAYER.notificationDelay += delta; if (PLAYER.notificationDelay >= Mvnwm) { PLAYER.notificationDelay = 0; PLAYER.notificationLevel.shift(); PLAYER.notification.shift(); } var img = wVMNN[type][level]; if (img.isLoaded !== 1) { wVMNN[type][level] = CanvasUtils.loadImage((((IMG_ALERT + type) + "_") + level) + ".png", img); return; } var move = 0; if (delay < mmWWw) { var mwvWV = delay / mmWWw; ctx.globalAlpha = mwvWV; move = 15 * (1 - mwvWV); } else if (delay > WWMnN) { var mwVvV = (Mvnwm - delay) / (Mvnwm - WWMnN); ctx.globalAlpha = mwVvV; move = 40 * (mwVvV - 1); } ctx.drawImage(img, ((vertst + player.x) - 120) * scaleby, ((horist + player.y) + (move - 45)) * scaleby, (img.width * scaleby) / 2, (img.height * scaleby) / 2); ctx.globalAlpha = 1; } }; function _Run(player) { var PLAYER = World.players[player.pid]; for (var i = 0; i < PLAYER.runEffect.length; i++) { var effect = PLAYER.runEffect[i]; if ((i > 0) && (effect.delay <= 0)) { var vVVVn = PLAYER.runEffect[i - 1]; if ((vVVVn.delay > 500) || (vVVVn.delay <= 0)) continue; } if ((player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) || (effect.delay > 0)) { var mVn = ENTITIES[__ENTITIE_PLAYER__].runEffect; var img = mVn.img; if (img.isLoaded !== 1) { mVn.img = CanvasUtils.loadImage(mVn.src, mVn.img); return; } if (effect.delay <= 0) { effect.delay = 750; effect.angle = window.Math.random() * PI2; effect.x = player.x; effect.y = player.y; effect.size = 1 + (window.Math.random() * 0.8); } else effect.delay -= delta; var value = MathUtils.Ease.outQuart(window.Math.max(0, effect.delay / 750)); var w = (((scaleby * (effect.size + 1)) * value) * img.width) / 7; var wh = -w / 2; ctx.save(); ctx.translate((vertst + effect.x) * scaleby, (horist + effect.y) * scaleby); ctx.rotate(effect.angle); ctx.globalAlpha = window.Math.max(0, value * value); ctx.drawImage(img, wh, wh, w, w); ctx.restore(); } } }; function Wvmnw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) { var PLAYER = World.players[player.pid]; var skinType = 0; var repellent = PLAYER.repellent - Render.globalTime; var withdrawal = PLAYER.withdrawal - Render.globalTime; if (repellent > 0) { if (withdrawal > 0) skinType = 3; else if (PLAYER.withdrawal > 0) skinType = 5; else skinType = 1; } else if (withdrawal > 0) skinType = 2; else if (PLAYER.withdrawal > 0) skinType = 4; if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel; var skin = mVn.skins[skinType]; var recoil = 0; var Vmwnn = player.state & 254; var Nmm = weapon.rightArm; var VnN = weapon.leftArm; if (Vmwnn === 4) { if (PLAYER.consumable === -1) { var MNmnm = (player.extra >> 8) & 255; if ((AudioUtils._fx.shot[MNmnm] !== 0) && ((Render.globalTime - PLAYER.consumableLast) > 800)) { PLAYER.consumableLast = Render.globalTime; var VVmnw = window.Math.floor(window.Math.random() * weapon.soundLen); AudioUtils.playFx(AudioUtils._fx.shot[MNmnm][VVmnw], weapon.soundVolume, Math2d.distance(World.PLAYER.x, World.PLAYER.y, player.x, player.y) / 4, weapon.soundDelay); } PLAYER.consumable = 0; } if (PLAYER.punch === 1) PLAYER.consumable = window.Math.max(0, PLAYER.consumable - delta); else PLAYER.consumable = window.Math.min(weapon.consumableDelay, PLAYER.consumable + delta); var value = PLAYER.consumable / weapon.consumableDelay; recoil = value * weapon.recoil; if ((PLAYER.consumable === 0) || (PLAYER.consumable === weapon.consumableDelay)) PLAYER.punch *= -1; } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) { PLAYER.consumable = -1; PLAYER.breath = (PLAYER.breath + delta) % 1500; if (PLAYER.move !== 0) { if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move; PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) PLAYER.move = 0; } } else { PLAYER.consumable = -1; if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9); else PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) { PLAYER.orientation *= -1; PLAYER.move = PLAYER.move % 800; } if (PLAYER.breath !== 0) { if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath; PLAYER.breath = PLAYER.breath + delta; if (PLAYER.breath > 1500) PLAYER.breath = 0; } } var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750))); var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400))); var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, Nmm.angle + player.angle, ((Nmm.x + (move * PLAYER.orientation)) + recoil) + breath, Nmm.y, imageScale); MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, -VnN.angle + player.angle, ((VnN.x + (move * PLAYER.orientation)) + recoil) + breath, VnN.y, imageScale); var item = weapon.weapon; CanvasUtils.drawImageHd(item, offsetX, offsetY, player.angle, ((item.x + (move * PLAYER.orientation)) + breath) + recoil, item.y, imageScale); if (player.hurt2 > 0) { var mnM = 1; player.hurt2 -= delta; var value = 0; if (player.hurt2 > 150) value = MathUtils.Ease.inQuad((300 - player.hurt2) / 300); else { value = MathUtils.Ease.outQuad(player.hurt2 / 150); mnM += (1 - value) * 0.2; } ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(mVn.food, offsetX, offsetY, player.angle, 0, 0, mnM); ctx.globalAlpha = 1; } if (player.hurt > 0) { var mnM = 1; player.hurt -= delta; var value = 0; if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300); else { value = MathUtils.Ease.outQuad(player.hurt / 150); mnM += (1 - value) * 0.2; } offsetX += (window.Math.cos(player.hurtAngle) * value) * 3; offsetY += (window.Math.sin(player.hurtAngle) * value) * 3; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle, 0, 0, mnM); ctx.globalAlpha = 1; } if (player.heal > 0) { var mnM = 1; player.heal -= delta; if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300))); else { var value = MathUtils.Ease.outQuad(player.heal / 150); mnM += (1 - value) * 0.2; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); } CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle, 0, 0, mnM); ctx.globalAlpha = 1; } CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle, 0, 0, imageScale); if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle, 0, 0, imageScale); }; function vwVWm(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) { var PLAYER = World.players[player.pid]; var skinType = 0; var repellent = PLAYER.repellent - Render.globalTime; var withdrawal = PLAYER.withdrawal - Render.globalTime; if (repellent > 0) { if (withdrawal > 0) skinType = 3; else if (PLAYER.withdrawal > 0) skinType = 5; else skinType = 1; } else if (withdrawal > 0) skinType = 2; else if (PLAYER.withdrawal > 0) skinType = 4; if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel; var skin = mVn.skins[skinType]; var recoil = 0; var recoilGun = 0; var recoilHead = 0; var effect = -1; var Nmm = weapon.rightArm; var VnN = weapon.leftArm; var cartridges = PLAYER.cartridges; if (player.hit > 0) { if (player.hit === player.hitMax) { for (var i = 0; i < cartridges.length; i++) { var cartridge = cartridges[i]; if (cartridge.delay <= 0) { cartridge.type = weapon.cartridge; cartridge.delay = weapon.cartridgeDelay; cartridge.x = offsetX + (window.Math.cos(player.angle) * 44); cartridge.y = offsetY + (window.Math.sin(player.angle) * 44); var angle = ((-window.Math.PI / 2.5) + player.angle) + ((window.Math.random() * -window.Math.PI) / 3.5); cartridge.ax = window.Math.cos(angle); cartridge.ay = window.Math.sin(angle); break; } } } player.hit = window.Math.max(0, player.hit - delta); var value = (player.hit > 80) ? (1 - ((player.hit - 80) / 100)) : (player.hit / 80); if (weapon.noEffect === 0) { var nWvvW = mVn.gunEffect[weapon.gunEffect].length; for (var gunEffect = 0; gunEffect < nWvvW; gunEffect++) { if (player.hit > (weapon.delay - (30 * (gunEffect + 1)))) { effect = gunEffect; break; } } } recoilHead = value * weapon.recoilHead; recoilGun = value * weapon.recoilGun; recoil = value * weapon.recoil; } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) { PLAYER.breath = (PLAYER.breath + delta) % 1500; if (PLAYER.move !== 0) { if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move; PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) PLAYER.move = 0; } } else { if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9); else PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) { PLAYER.orientation *= -1; PLAYER.move = PLAYER.move % 800; } if (PLAYER.breath !== 0) { if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath; PLAYER.breath = PLAYER.breath + delta; if (PLAYER.breath > 1500) PLAYER.breath = 0; } } var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750))); var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400))); var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, Nmm.angle + player.angle, ((Nmm.x + (move * PLAYER.orientation)) + recoil) + breath, Nmm.y, imageScale); MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, -VnN.angle + player.angle, ((VnN.x + (move * PLAYER.orientation)) + recoil) + breath, VnN.y, imageScale); var item = weapon.weapon; if ((effect >= 0) && (weapon.noEffect === 0)) { var gunEffect = mVn.gunEffect[weapon.gunEffect][effect]; CanvasUtils.drawImageHd(gunEffect, offsetX, offsetY, player.angle, (((item.x + (move * PLAYER.orientation)) + breath) + recoilGun) + weapon.distance, item.y, imageScale); } CanvasUtils.drawImageHd(item, offsetX, offsetY, player.angle, ((item.x + (move * PLAYER.orientation)) + breath) + recoilGun, item.y, imageScale); for (var i = 0; i < cartridges.length; i++) { var cartridge = cartridges[i]; if (cartridge.delay > 0) { cartridge.x += (delta * cartridge.ax) * 0.18; cartridge.y += (delta * cartridge.ay) * 0.18; if ((cartridge.delay < 200) && (ctx.globalAlpha === 1)) { ctx.globalAlpha = MathUtils.Ease.outQuad(cartridge.delay / 200); CanvasUtils.drawImageHd(mVn.cartridges[cartridge.type], cartridge.x, cartridge.y, cartridge.delay * 0.007, 0, 0, imageScale); ctx.globalAlpha = 1; } else CanvasUtils.drawImageHd(mVn.cartridges[cartridge.type], cartridge.x, cartridge.y, cartridge.delay * 0.007, 0, 0, imageScale); cartridge.delay -= delta; } } if (player.hurt > 0) { var mnM = 1; player.hurt -= delta; var value = 0; if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300); else { value = MathUtils.Ease.outQuad(player.hurt / 150); mnM += (1 - value) * 0.2; } offsetX += (window.Math.cos(player.hurtAngle) * value) * 3; offsetY += (window.Math.sin(player.hurtAngle) * value) * 3; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle, recoilHead, 0, mnM); ctx.globalAlpha = 1; } if (player.heal > 0) { var mnM = 1; player.heal -= delta; if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300))); else { var value = MathUtils.Ease.outQuad(player.heal / 150); mnM += (1 - value) * 0.2; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); } CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle, recoilHead, 0, mnM); ctx.globalAlpha = 1; } CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle, recoilHead, 0, imageScale); if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle, recoilHead, 0, imageScale); }; function WVVmN(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) { var PLAYER = World.players[player.pid]; var skinType = 0; var repellent = PLAYER.repellent - Render.globalTime; var withdrawal = PLAYER.withdrawal - Render.globalTime; if (repellent > 0) { if (withdrawal > 0) skinType = 3; else if (PLAYER.withdrawal > 0) skinType = 5; else skinType = 1; } else if (withdrawal > 0) skinType = 2; else if (PLAYER.withdrawal > 0) skinType = 4; if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel; var skin = mVn.skins[skinType]; var nmm = 0; var NNM = 0; var NWW = 0; var wnN = 0; if (player.hit > 0) { player.hit = window.Math.max(0, player.hit - delta); value = (player.hit > weapon.impactClient) ? (1 - ((player.hit - weapon.impactClient) / (weapon.delay - weapon.impactClient))) : (player.hit / weapon.impactClient); nmm = -MathUtils.Ease.inOutQuad(value) * 0.35; wnN = value * 3; NWW = -value * 20; NNM = value * 3; } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) { PLAYER.breath = (PLAYER.breath + delta) % 1500; if (PLAYER.move !== 0) { if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move; PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) PLAYER.move = 0; } } else { if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9); else PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) { PLAYER.orientation *= -1; PLAYER.move = PLAYER.move % 800; } if (PLAYER.breath !== 0) { if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath; PLAYER.breath = PLAYER.breath + delta; if (PLAYER.breath > 1500) PLAYER.breath = 0; } } var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750))); var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400))); var breathWeapon = weapon.breathWeapon * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750))); var NwM = weapon.rightArm; var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, (NwM.angle + player.angle) - nmm, ((NwM.x - (move * PLAYER.orientation)) + NWW) + breathWeapon, NwM.y, imageScale); if (player.hit > 0) { var WnVmv = weapon.WnVmv; CanvasUtils.drawImageHd(WnVmv, offsetX, offsetY, player.angle, ((WnVmv.x - (move * PLAYER.orientation)) + breathWeapon) + NWW, WnVmv.y, imageScale); } var item = weapon.weapon; CanvasUtils.drawImageHd(item, offsetX, offsetY, item.angle + player.angle, ((item.x + (move * PLAYER.orientation)) + breath) + NNM, item.y, imageScale); NwM = weapon.leftArm; MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, -NwM.angle + player.angle, ((NwM.x + (move * PLAYER.orientation)) + NNM) + breath, NwM.y, imageScale); if (player.hurt > 0) { var mnM = 1; player.hurt -= delta; var value = 0; if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300); else { value = MathUtils.Ease.outQuad(player.hurt / 150); mnM += (1 - value) * 0.2; } offsetX += (window.Math.cos(player.hurtAngle) * value) * 3; offsetY += (window.Math.sin(player.hurtAngle) * value) * 3; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } if (player.heal > 0) { var mnM = 1; player.heal -= delta; if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300))); else { var value = MathUtils.Ease.outQuad(player.heal / 150); mnM += (1 - value) * 0.2; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); } CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, imageScale); if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, imageScale); }; function mWNvw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) { var PLAYER = World.players[player.pid]; var skinType = 0; var repellent = PLAYER.repellent - Render.globalTime; var withdrawal = PLAYER.withdrawal - Render.globalTime; if (repellent > 0) { if (withdrawal > 0) skinType = 3; else if (PLAYER.withdrawal > 0) skinType = 5; else skinType = 1; } else if (withdrawal > 0) skinType = 2; else if (PLAYER.withdrawal > 0) skinType = 4; if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel; var skin = mVn.skins[skinType]; var nmm = 0; var NNM = 0; var NWW = 0; var wnN = 0; if (player.hit > 0) { player.hit = window.Math.max(0, player.hit - delta); value = (player.hit > weapon.impactClient) ? (1 - ((player.hit - weapon.impactClient) / (weapon.delay - weapon.impactClient))) : (player.hit / weapon.impactClient); nmm = -MathUtils.Ease.inOutQuad(value) * 0.55; wnN = value * 3; NWW = -value * 25; NNM = value * 10; } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) { PLAYER.breath = (PLAYER.breath + delta) % 1500; if (PLAYER.move !== 0) { if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move; PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) PLAYER.move = 0; } } else { if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9); else PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) { PLAYER.orientation *= -1; PLAYER.move = PLAYER.move % 800; } if (PLAYER.breath !== 0) { if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath; PLAYER.breath = PLAYER.breath + delta; if (PLAYER.breath > 1500) PLAYER.breath = 0; } } var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750))); var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400))); var NwM = weapon.leftArm; var MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((-NwM.angle + player.angle) - breath) - nmm, (NwM.x - (move * PLAYER.orientation)) + NNM, NwM.y, imageScale); if (player.hurt > 0) { var mnM = 1; player.hurt -= delta; var value = 0; if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300); else { value = MathUtils.Ease.outQuad(player.hurt / 150); mnM += (1 - value) * 0.2; } offsetX += (window.Math.cos(player.hurtAngle) * value) * 3; offsetY += (window.Math.sin(player.hurtAngle) * value) * 3; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } if (player.heal > 0) { var mnM = 1; player.heal -= delta; if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300))); else { var value = MathUtils.Ease.outQuad(player.heal / 150); mnM += (1 - value) * 0.2; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); } CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, imageScale); if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle - (nmm / 1.5), wnN, 0, imageScale); var breathWeapon = weapon.breathWeapon * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750))); NwM = weapon.rightArm; MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, NwM.angle + player.angle, ((NwM.x + (move * PLAYER.orientation)) + NWW) + breathWeapon, NwM.y, imageScale); var item = weapon.weapon; CanvasUtils.drawImageHd(item, offsetX, offsetY, item.angle + player.angle, ((item.x + (move * PLAYER.orientation)) + breathWeapon) + NWW, item.y, imageScale); }; function mvwMm(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) { var PLAYER = World.players[player.pid]; var skinType = 0; var repellent = PLAYER.repellent - Render.globalTime; var withdrawal = PLAYER.withdrawal - Render.globalTime; if (repellent > 0) { if (withdrawal > 0) skinType = 3; else if (PLAYER.withdrawal > 0) skinType = 5; else skinType = 1; } else if (withdrawal > 0) skinType = 2; else if (PLAYER.withdrawal > 0) skinType = 4; if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel; var skin = mVn.skins[skinType]; var nmm = 0; var NNM = 0; var NWW = 0; var wnN = 0; var Nmm = weapon.rightArm; var VnN = weapon.leftArm; if (player.hit > 0) { player.hit = window.Math.max(0, player.hit - delta); value = (player.hit > weapon.impactClient) ? (1 - ((player.hit - weapon.impactClient) / (weapon.delay - weapon.impactClient))) : (player.hit / weapon.impactClient); nmm = -MathUtils.Ease.inOutQuad(value) * 0.4; wnN = value * 3; NNM = value * VnN.distance; NWW = value * Nmm.distance; } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) { PLAYER.breath = (PLAYER.breath + delta) % 1500; if (PLAYER.move !== 0) { if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move; PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) PLAYER.move = 0; } } else { if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9); else PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) { PLAYER.orientation *= -1; PLAYER.move = PLAYER.move % 800; } if (PLAYER.breath !== 0) { if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath; PLAYER.breath = PLAYER.breath + delta; if (PLAYER.breath > 1500) PLAYER.breath = 0; } } var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750))); var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400))); var item = weapon.weapon; CanvasUtils.drawImageHd2(item, offsetX, offsetY, (item.angle + player.angle) + breath, item.x + (move * PLAYER.orientation), item.y, imageScale, nmm * item.rotation, item.x2, item.y2); var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((Nmm.angle + player.angle) + breath) + (nmm * Nmm.rotation), (Nmm.x + (move * PLAYER.orientation)) + NWW, Nmm.y, imageScale); MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((-VnN.angle + player.angle) + breath) + (nmm * VnN.rotation), (VnN.x + (move * PLAYER.orientation)) + NNM, VnN.y, imageScale); if (player.hurt > 0) { var mnM = 1; player.hurt -= delta; var value = 0; if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300); else { value = MathUtils.Ease.outQuad(player.hurt / 150); mnM += (1 - value) * 0.2; } offsetX += (window.Math.cos(player.hurtAngle) * value) * 3; offsetY += (window.Math.sin(player.hurtAngle) * value) * 3; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } if (player.heal > 0) { var mnM = 1; player.heal -= delta; if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300))); else { var value = MathUtils.Ease.outQuad(player.heal / 150); mnM += (1 - value) * 0.2; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); } CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale); if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale); }; function mmmMw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) { var PLAYER = World.players[player.pid]; var skinType = 0; var repellent = PLAYER.repellent - Render.globalTime; var withdrawal = PLAYER.withdrawal - Render.globalTime; if (repellent > 0) { if (withdrawal > 0) skinType = 3; else if (PLAYER.withdrawal > 0) skinType = 5; else skinType = 1; } else if (withdrawal > 0) skinType = 2; else if (PLAYER.withdrawal > 0) skinType = 4; if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel; var skin = mVn.skins[skinType]; var NNM = 0; var NWW = 0; if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) { PLAYER.breath = (PLAYER.breath + delta) % 1500; if (PLAYER.move !== 0) { if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move; PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) PLAYER.move = 0; } } else { if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9); else PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) { PLAYER.orientation *= -1; PLAYER.move = PLAYER.move % 800; } if (PLAYER.breath !== 0) { if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath; PLAYER.breath = PLAYER.breath + delta; if (PLAYER.breath > 1500) PLAYER.breath = 0; } } var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750))); var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400))); var NwM = weapon.rightArm; var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, (NwM.angle + player.angle) + breath, (NwM.x + (move * PLAYER.orientation)) + NWW, NwM.y, imageScale); NwM = weapon.leftArm; MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, (-NwM.angle + player.angle) - breath, (NwM.x - (move * PLAYER.orientation)) + NNM, NwM.y, imageScale); CanvasUtils.drawImageHd(weapon.blueprint, offsetX, offsetY, ((-NwM.angle + player.angle) - breath) + (window.Math.PI / 3), ((NwM.x - (move * PLAYER.orientation)) + NNM) - 40, NwM.y - 15, imageScale); if (player.hurt > 0) { var mnM = 1; player.hurt -= delta; var value = 0; if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300); else { value = MathUtils.Ease.outQuad(player.hurt / 150); mnM += (1 - value) * 0.2; } offsetX += (window.Math.cos(player.hurtAngle) * value) * 3; offsetY += (window.Math.sin(player.hurtAngle) * value) * 3; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle, 0, 0, mnM); ctx.globalAlpha = 1; } if (player.heal > 0) { var mnM = 1; player.heal -= delta; if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300))); else { var value = MathUtils.Ease.outQuad(player.heal / 150); mnM += (1 - value) * 0.2; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); } CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle, 0, 0, mnM); ctx.globalAlpha = 1; } CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle, 0, 0, imageScale); if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle, 0, 0, imageScale); CanvasUtils.drawImageHd(weapon.pencil, offsetX, offsetY, player.angle, 0, 0, imageScale); }; var nVWnV = [0, 0, 0, 0]; function placingobj() { var nwmVM = 0; if ((World.PLAYER.isBuilding === 1) && (World.PLAYER.blueprint !== 0)) { var item = INVENTORY[World.PLAYER.blueprint]; if (item.subtype !== 0) { item = item.subtype[World.PLAYER.furniture]; item.redprint = item.building; item.blueprint = item.building; item.xCenter = nVWnV; item.yCenter = nVWnV; } var angle = Mouse.angle; var rotation = (item.wall === 1) ? 0 : World.PLAYER.buildRotate; World.PLAYER.jBuild = World.PLAYER._j + window.Math.floor((__TILE_SIZE2__ + (window.Math.cos(angle) * __TILE_SIZE__)) / __TILE_SIZE__); World.PLAYER.iBuild = World.PLAYER._i + window.Math.floor((__TILE_SIZE2__ + (window.Math.sin(angle) * __TILE_SIZE__)) / __TILE_SIZE__); var offsetX = ((item.xCenter[rotation] + vertst) + __TILE_SIZE2__) + (__TILE_SIZE__ * World.PLAYER.jBuild); var offsetY = ((item.yCenter[rotation] + horist) + __TILE_SIZE2__) + (__TILE_SIZE__ * World.PLAYER.iBuild); if ((((World.PLAYER.jBuild >= 0) && (World.PLAYER.iBuild >= 0)) && (World.PLAYER.jBuild < worldWidth)) && (World.PLAYER.iBuild < worldHeight)) { var VMV = matrix[World.PLAYER.iBuild][World.PLAYER.jBuild]; var team = (World.PLAYER.team === -1) ? -2 : World.PLAYER.team; if ((VMV.tile === frameId) && (((item.zid !== 2) || (VMV.tilePid === 0)) || (VMV.category === SKILLS.__PLANT__))) { World.PLAYER.canBuild = 1; // before 0 CanvasUtils.drawImageHd(item.redprint, offsetX, offsetY, rotation * PIby2, 0, 0, 1); } else if ((((item.detail.category === SKILLS.__PLANT__) || (item.zid === 2)) || (((VMV.pid !== 0) && (VMV.pid !== World.PLAYER.id)) && (World.players[VMV.pid].team !== team))) && (VMV.ground === frameId)) { World.PLAYER.canBuild = 0; CanvasUtils.drawImageHd(item.redprint, offsetX, offsetY, rotation * PIby2, 0, 0, 1); } else if ((item.iTile !== window.undefined) && ((((rotation % 2) === 0) && ((((((World.PLAYER.iBuild < 1) || (World.PLAYER.iBuild >= (worldHeight - 1))) || (matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].tile === frameId)) || ((matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].ground === frameId) && (((matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].pid !== World.PLAYER.id) && (matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].pid !== 0)) && (World.players[matrix[World.PLAYER.iBuild + 1][World.PLAYER.jBuild].pid].team !== team)))) || (matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].tile === frameId)) || ((matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].ground === frameId) && (((matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].pid !== World.PLAYER.id) && (matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].pid !== 0)) && (World.players[matrix[World.PLAYER.iBuild - 1][World.PLAYER.jBuild].pid].team !== team))))) || (((rotation % 2) === 1) && (((((((World.PLAYER.jBuild < 1) || (World.PLAYER.jBuild >= (worldWidth - 1))) || (matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].tile === frameId)) || ((matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].ground === frameId) && (((matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].pid !== World.PLAYER.id) && (matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].pid !== 0)) && (World.players[matrix[World.PLAYER.iBuild][World.PLAYER.jBuild + 1].pid].team !== team)))) || (matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].tile === frameId)) || ((matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].ground === frameId) && (((matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].pid !== World.PLAYER.id) && (matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].pid !== 0)) && (World.players[matrix[World.PLAYER.iBuild][World.PLAYER.jBuild - 1].pid].team !== team)))) || (World.PLAYER._i === World.PLAYER.iBuild))))) { World.PLAYER.canBuild = 0; CanvasUtils.drawImageHd(item.redprint, offsetX, offsetY, rotation * PIby2, 0, 0, 1); } else { World.PLAYER.canBuild = 1; CanvasUtils.drawImageHd(item.blueprint, offsetX, offsetY, rotation * PIby2, 0, 0, 1); } } if (hintRotate.isLoaded !== 1) { hintRotate = CanvasUtils.loadImage(IMG_HINT_ROTATE, hintRotate); return; } if ((item.wall === 1) || (World.PLAYER.interaction >= 0)) nwmVM = window.Math.max(0, World.PLAYER.hintRotate - delta); else nwmVM = window.Math.min(900, World.PLAYER.hintRotate + delta); } else nwmVM = window.Math.max(0, World.PLAYER.hintRotate - delta); if (nwmVM > 0) { ctx.globalAlpha = MathUtils.Ease.outQuad(window.Math.max(0, nwmVM - 600) / 300); var imageScale = scaleby + (WvmnV * scaleby); var vNwMN = imageScale / scaleby; var width = (scaleby * hintRotate.width) / 2; var height = (scaleby * hintRotate.height) / 2; ctx.drawImage(hintRotate, ((vertst + NmM) * scaleby) - (width / 2), window.Math.max(10 * scaleby, ((((horist + WWV) * scaleby) - (height / 2)) - (65 * scaleby)) - (60 * scaleby)), width, height); ctx.globalAlpha = 1; } World.PLAYER.hintRotate = nwmVM; }; function nwMNv(mVn, weapon, wVn, player, imageScale, offsetX, offsetY) { var PLAYER = World.players[player.pid]; var skinType = 0; var repellent = PLAYER.repellent - Render.globalTime; var withdrawal = PLAYER.withdrawal - Render.globalTime; if (repellent > 0) { if (withdrawal > 0) skinType = 3; else if (PLAYER.withdrawal > 0) skinType = 5; else skinType = 1; } else if (withdrawal > 0) skinType = 2; else if (PLAYER.withdrawal > 0) skinType = 4; if (player.pid == World.PLAYER.id && MOD.changeMyModel) skinType = MOD.myPlayerModel; var skin = mVn.skins[skinType]; var nmm = 0; var NNM = 0; var NWW = 0; var wnN = 0; if (player.hit > 0) { player.hit = window.Math.max(0, player.hit - delta); player.hit = window.Math.min(player.hit, weapon.delay); value = (player.hit > weapon.impactClient) ? (1 - ((player.hit - weapon.impactClient) / (weapon.delay - weapon.impactClient))) : (player.hit / weapon.impactClient); nmm = (PLAYER.punch * MathUtils.Ease.inOutQuad(value)) * 0.55; wnN = value * 3; if (PLAYER.punch === 1) NNM = value * 25; else NWW = value * 25; if (player.hit === 0) PLAYER.punch *= -1; } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) { PLAYER.breath = (PLAYER.breath + delta) % 1500; if (PLAYER.move !== 0) { if (PLAYER.move < 400) PLAYER.move = 800 - PLAYER.move; PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) PLAYER.move = 0; } } else { if (player.speed > ENTITIES[__ENTITIE_PLAYER__].speed) PLAYER.move = PLAYER.move + (delta * 1.9); else PLAYER.move = PLAYER.move + delta; if (PLAYER.move > 800) { PLAYER.orientation *= -1; PLAYER.move = PLAYER.move % 800; } if (PLAYER.breath !== 0) { if (PLAYER.breath < 750) PLAYER.breath = 1500 - PLAYER.breath; PLAYER.breath = PLAYER.breath + delta; if (PLAYER.breath > 1500) PLAYER.breath = 0; } } var breath = weapon.breath * ((PLAYER.breath < 750) ? (PLAYER.breath / 750) : (1 - ((PLAYER.breath - 750) / 750))); var move = weapon.move * ((PLAYER.move < 400) ? (PLAYER.move / 400) : (1 - ((PLAYER.move - 400) / 400))); var NwM = weapon.rightArm; var MVn = (wVn.rightArm === window.undefined) ? skin.rightArm : wVn.rightArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((NwM.angle + player.angle) + breath) + nmm, (NwM.x + (move * PLAYER.orientation)) + NWW, NwM.y, imageScale); NwM = weapon.leftArm; MVn = (wVn.leftArm === window.undefined) ? skin.leftArm : wVn.leftArm; CanvasUtils.drawImageHd(MVn, offsetX, offsetY, ((-NwM.angle + player.angle) - breath) + nmm, (NwM.x - (move * PLAYER.orientation)) + NNM, NwM.y, imageScale); if (player.hurt2 > 0) { var mnM = 1; player.hurt2 -= delta; var value = 0; if (player.hurt2 > 150) value = MathUtils.Ease.inQuad((300 - player.hurt2) / 300); else { value = MathUtils.Ease.outQuad(player.hurt2 / 150); mnM += (1 - value) * 0.2; } ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(mVn.food, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } if (player.hurt > 0) { var mnM = 1; player.hurt -= delta; var value = 0; if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300); else { value = MathUtils.Ease.outQuad(player.hurt / 150); mnM += (1 - value) * 0.2; } offsetX += (window.Math.cos(player.hurtAngle) * value) * 3; offsetY += (window.Math.sin(player.hurtAngle) * value) * 3; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(mVn.hurt, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } if (player.heal > 0) { var mnM = 1; player.heal -= delta; if (player.heal > 150) ctx.globalAlpha = window.Math.min(1, window.Math.max(0, MathUtils.Ease.inQuad((300 - player.heal) / 300))); else { var value = MathUtils.Ease.outQuad(player.heal / 150); mnM += (1 - value) * 0.2; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); } CanvasUtils.drawImageHd(mVn.heal, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } CanvasUtils.drawImageHd(skin.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale); if (wVn.head !== window.undefined) CanvasUtils.drawImageHd(wVn.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale); }; function _EntitieAI(player) { var entitie = AI[player.extra & 15]; matrix[player.i][player.j].tile = frameId; matrix[player.i][player.j].tilePid = player.pid; matrix[player.i][player.j].category = window.undefined; var imageScale = 1; var offsetX = vertst + player.x; var offsetY = horist + player.y; if (player.removed !== 0) { player.death += delta; var value = MathUtils.Ease.outQuart(1 - ((player.death - 500) / 400)); ctx.globalAlpha = window.Math.min(window.Math.max(0, value), 1); CanvasUtils.drawImageHd(entitie.death, offsetX, offsetY, player.angle, 0, 0, 1); value = MathUtils.Ease.outQuart(1 - (player.death / 400)); imageScale = window.Math.min(1 + (0.5 * (1 - value)), 1.5); ctx.globalAlpha = window.Math.max(0, value); } if ((player.extra & 16) === 16) { player.extra &= ~16; player.hurt = 250; player.hurtAngle = (PI2 * ((player.extra >> 5) & 31)) / 31; } entitie.draw(entitie, player, offsetX, offsetY, imageScale); if (player.removed !== 0) { if (player.death > 900) player.removed = 2; ctx.globalAlpha = 1; } }; function _EntitiePlayer(player) { matrix[player.i][player.j].tile = frameId; matrix[player.i][player.j].tilePid = player.pid; matrix[player.i][player.j].category = window.undefined; var mVn = ENTITIES[__ENTITIE_PLAYER__]; var MNmnm = (player.extra >> 8) & 255; var weapon = mVn.weapons[MNmnm]; var wVn = mVn.clothes[player.extra & 255]; var imageScale = 1; var Vmwnn = player.state & 254; var offsetX = vertst + player.x; var offsetY = horist + player.y; if (player.removed !== 0) { player.death += delta; var value = MathUtils.Ease.outQuart(1 - ((player.death - 500) / 400)); ctx.globalAlpha = window.Math.min(window.Math.max(0, value), 1); CanvasUtils.drawImageHd(mVn.death, offsetX, offsetY, player.angle, 0, 0, 1); value = MathUtils.Ease.outQuart(1 - (player.death / 400)); imageScale = window.Math.min(1 + (0.5 * (1 - value)), 1.5); ctx.globalAlpha = window.Math.max(0, value); } if (Vmwnn === 2) { player.state &= 65281; if (AudioUtils._fx.shot[MNmnm] !== 0) { var VVmnw = window.Math.floor(window.Math.random() * weapon.soundLen); AudioUtils.playFx(AudioUtils._fx.shot[MNmnm][VVmnw], weapon.soundVolume, Math2d.distance(World.PLAYER.x, World.PLAYER.y, player.x, player.y) / 4, weapon.soundDelay); } if (player.hit <= 0) { player.hit = weapon.delay; player.hitMax = weapon.delay; } } else if (Vmwnn === 6) player.state &= 65281; switch (weapon.type) { case 0: nwMNv(mVn, weapon, wVn, player, imageScale, offsetX, offsetY); break; case 1: mvwMm(mVn, weapon, wVn, player, imageScale, offsetX, offsetY); break; case 2: vwVWm(mVn, weapon, wVn, player, imageScale, offsetX, offsetY); break; case 3: mWNvw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY); break; case 4: WVVmN(mVn, weapon, wVn, player, imageScale, offsetX, offsetY); break; case 5: Wvmnw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY); break; case 6: mmmMw(mVn, weapon, wVn, player, imageScale, offsetX, offsetY); break; } if (player.removed !== 0) { if (player.death > 900) player.removed = 2; ctx.globalAlpha = 1; } }; function _Interaction() { if (World.PLAYER.ghoul !== 0) return; var timer = World.PLAYER.wrongToolTimer; if (timer > 0) { if (timer < 500) ctx.globalAlpha = MathUtils.Ease.inQuad(timer / 500); else if (timer > 1500) ctx.globalAlpha = MathUtils.Ease.inQuad(1 - ((timer - 1500) / 500)); else ctx.globalAlpha = 1; var tool = (World.PLAYER.wrongTool === 1) ? vwnWv : LOOT[INVENTORY[World.PLAYER.wrongTool].loot]; CanvasUtils.drawImageHd(wrongTool, canw2ns, 50, 0, 0, 0, 1); CanvasUtils.drawImageHd(tool, canw2ns, 50, 0, 0, 0, 1); ctx.globalAlpha = 1; World.PLAYER.wrongToolTimer -= delta; } var interaction = World.PLAYER.interaction; switch (interaction) { case 0: if (nMWVv.isLoaded !== 1) { if (isTouchScreen === 0) nMWVv = CanvasUtils.loadImage(IMG_LOOT, nMWVv); else nMWVv = CanvasUtils.loadImage(IMG_LOOT_TOUCH, nMWVv); return; } var imageScale = scaleby + (WvmnV * scaleby); var vNwMN = imageScale / scaleby; var scalex = (scaleby * nMWVv.width) / 2; var scaley = (scaleby * nMWVv.height) / 2; var posx = ((vertst + NmM) * imageScale) - (scalex / 2); var posy = window.Math.max(10 * scaleby, ((((horist + WWV) * imageScale) - (scaley / 2)) - (65 * imageScale)) - (60 * scaleby)); if (isTouchScreen === 1) { Game.xInteract = posx; Game.yInteract = posy; Game.widthInteract = scalex; Game.heightInteract = scaley; } ctx.drawImage(nMWVv, posx, posy, scalex, scaley); var loot = LOOT[World.PLAYER.loot]; posx = ((vertst + NmM) * vNwMN) - (scalex / (2 * scaleby)); posy = window.Math.max(10, ((((horist + WWV) * vNwMN) - (scaley / (2 * scaleby))) - (65 * vNwMN)) - 60); CanvasUtils.drawImageHd(loot, posx + 77, posy + 33, loot.angle, 0, 0, loot.scale); break; case 1: var value = World.PLAYER.interactionDelay / World.PLAYER.interactionWait; var delay = World.PLAYER.interactionWait - World.PLAYER.interactionDelay; World.PLAYER.interactionDelay -= delta; if (World.PLAYER.interactionDelay < 0) { World.PLAYER.interaction = -1; return; } if (useTimer.isLoaded !== 1) { useTimer = CanvasUtils.loadImage(IMG_TIMER, useTimer); return; } if (arrow.isLoaded !== 1) { arrow = CanvasUtils.loadImage(IMG_TIMER_ARROW, arrow); return; } if (lights.isLoaded !== 1) { lights = CanvasUtils.loadImage(IMG_TIMER_LIGHTS, lights); return; } var imageScale = scaleby + (WvmnV * scaleby); var scalex = (scaleby * useTimer.width) / 2; var scaley = (scaleby * useTimer.height) / 2; var _x = (vertst + NmM) * imageScale; var _y = (horist + WWV) * imageScale; var posx = _x - (scalex / 2); var posy = window.Math.max(10 * imageScale, ((_y - (scaley / 2)) - (65 * imageScale)) - (60 * scaleby)); if (delay < 100) ctx.globalAlpha = delay / 100; else if (World.PLAYER.interactionDelay < 100) ctx.globalAlpha = World.PLAYER.interactionDelay / 100; ctx.drawImage(useTimer, posx, posy, scalex, scaley); ctx.save(); ctx.translate(_x, window.Math.max((10 * imageScale) + (scaley / 2), (_y - (65 * imageScale)) - (60 * scaleby))); ctx.rotate(-PI2 * value); ctx.drawImage(arrow, -scalex / 2, -scaley / 2, scalex, scaley); ctx.restore(); ctx.drawImage(lights, posx, posy, scalex, scaley); ctx.globalAlpha = 1; break; case 2: var img = World.PLAYER.eInteract.img; if (img.isLoaded !== 1) { if (isTouchScreen === 0) World.PLAYER.eInteract.img = CanvasUtils.loadImage(World.PLAYER.eInteract.src, img); else World.PLAYER.eInteract.img = CanvasUtils.loadImage(World.PLAYER.eInteract.src.replace("e-", "e-isTouchScreen-"), img); return; } var imageScale = scaleby + (WvmnV * scaleby); var scalex = (scaleby * img.width) / 2; var scaley = (scaleby * img.height) / 2; var posx; if (World.PLAYER.extraLoot === 1) posx = (((vertst + NmM) - 5) * imageScale) - scalex; else posx = ((vertst + NmM) * imageScale) - (scalex / 2); var posy = window.Math.max(10 * scaleby, ((((horist + WWV) * imageScale) - (scaley / 2)) - (65 * imageScale)) - (60 * scaleby)); if (isTouchScreen === 1) { Game.xInteract = posx; Game.yInteract = posy; Game.widthInteract = scalex; Game.heightInteract = scaley; } ctx.drawImage(img, posx, posy, scalex, scaley); if (World.PLAYER.extraLoot === 1) { if (VWvVN.isLoaded !== 1) { if (isTouchScreen === 0) VWvVN = CanvasUtils.loadImage(IMG_LOOT2, VWvVN); else VWvVN = CanvasUtils.loadImage(IMG_LOOT_TOUCH, nMWVv); return; } var vNwMN = imageScale / scaleby; scalex = (scaleby * VWvVN.width) / 2; scaley = (scaleby * VWvVN.height) / 2; posx += scalex + (10 * scaleby); posy = window.Math.max(10 * scaleby, ((((horist + WWV) * imageScale) - (scaley / 2)) - (65 * imageScale)) - (60 * scaleby)); if (isTouchScreen === 1) { Game.xInteract2 = posx; Game.yInteract2 = posy; } ctx.drawImage(VWvVN, posx, posy, scalex, scaley); var loot = LOOT[World.PLAYER.loot]; posx = ((vertst + NmM) * vNwMN) + 5; posy = window.Math.max(10, ((((horist + WWV) * vNwMN) - (scaley / (2 * scaleby))) - (65 * vNwMN)) - 60); CanvasUtils.drawImageHd(loot, posx + 77, posy + 33, loot.angle, 0, 0, loot.scale); } break; } }; var nMVNv = 0; var WvWmM = 0; var PARTICLE = { id: -1, uid: -1 }; function vNwNM(player, id, distance, amount) { if ((setParticles === 0) || (id === PARTICLESID.__NOTHING__)) return; else if (setParticles === 2) amount *= 3; if ((Entitie.border[__ENTITIE_PARTICLES__].border + amount) >= wnNWM) return; for (var i = 0; i < amount; i++) { var N = window.Math.random(); var angle = ((N * 10) % 1) * PI2; var MMwmm = distance + (((N * 10000) % 1) * 25); distance += 8; WvWmM = (WvWmM + 1) % wnNWM; var newEntityIndex = WvWmM + Entitie.maxUnitsMaster; nMVNv += 1; var particle = Entitie.get(0, newEntityIndex, nMVNv, __ENTITIE_PARTICLES__); setEntitie(particle, 0, nMVNv, newEntityIndex, __ENTITIE_PARTICLES__, player.px, player.py, player.px + (window.Math.cos(angle) * MMwmm), player.py + (window.Math.sin(angle) * MMwmm), window.Math.floor(N * PARTICLES[id].length), ((N * 100) % 1) * 255, id); } }; function _Particles(particle) { var img = PARTICLES[particle.state][particle.extra]; if (particle.death > 0) { particle.death = window.Math.min(1, particle.death + (delta / 500)); ctx.globalAlpha = 1 - particle.death; CanvasUtils.drawImageHd(img, vertst + particle.x, horist + particle.y, particle.angle, 0, 0, 1); ctx.globalAlpha = 1; if (particle.death === 1) { PARTICLE.id = particle.id; PARTICLE.uid = particle.uid; } return; } else if (Math2d.fastDist(particle.x, particle.y, particle.nx, particle.ny) < 0.01) particle.death = 0.001; CanvasUtils.drawImageHd(img, vertst + particle.x, horist + particle.y, particle.angle, 0, 0, 1); }; function _Dynamite(item, dynamite, offsetX, offsetY, rotation, imageScale) { dynamite.breath = (dynamite.breath + delta) % 500; var value = dynamite.breath / 500; var mnM = 0.95 + (0.3 * MathUtils.Ease.inOutQuad(value)); ctx.globalAlpha = 1 - value; CanvasUtils.drawImageHd(item.building[1], (vertst + dynamite.x) + offsetX, (horist + dynamite.y) + offsetY, rotation * PIby2, 0, 0, mnM); ctx.globalAlpha = 1; CanvasUtils.drawImageHd(item.building[0], (vertst + dynamite.x) + offsetX, (horist + dynamite.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _Spike(item, spike, offsetX, offsetY, rotation, imageScale) { var isVisible = 0; var isInClan = 0; var triggered = 1; if ((spike.state & 16) === 16) triggered = 0; if (((spike.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[spike.pid].team)) && (World.players[spike.pid].teamUid === World.teams[World.PLAYER.team].uid))) || (Math2d.fastDist(NmM, WWV, spike.x, spike.y) < 52000)) isVisible = 1; if (((spike.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[spike.pid].team)) && (World.players[spike.pid].teamUid === World.teams[World.PLAYER.team].uid)))) isInClan = 1; if (MOD.showSpikes){ if (triggered === 0) { if (spike.hurt2 === 0) vNwNM(spike, item.particles, item.particlesDist, 5); if (spike.hurt2 < 300) { offsetX += (window.Math.random() * 6) - 4; offsetY += (window.Math.random() * 6) - 4; spike.hurt2 += delta; } CanvasUtils.drawImageHd(item.deployed[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale); } else if (isInClan === 1) { CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 0.2; CanvasUtils.drawImageHd(LIGHTFIRE[5], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, 0, 0, 0, 0.6); ctx.globalAlpha = 1; } else if (isInClan === 0) { CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 0.2; CanvasUtils.drawImageHd(LIGHTFIRE[4], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, 0, 0, 0, 0.6); ctx.globalAlpha = 1; } } else { if (triggered === 0) { if (spike.hurt2 === 0) vNwNM(spike, item.particles, item.particlesDist, 5); if (spike.hurt2 < 300) { offsetX += (window.Math.random() * 6) - 4; offsetY += (window.Math.random() * 6) - 4; spike.hurt2 += delta; } if (spike.breath > 0) { spike.breath = window.Math.max(0, spike.breath - (delta / 5)); ctx.globalAlpha = MathUtils.Ease.inOutQuad(spike.breath / 300); CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 1; } CanvasUtils.drawImageHd(item.deployed[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale); } else if (isVisible === 1) { if (spike.breath === 300) CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale); else { spike.breath = window.Math.min(300, spike.breath + delta); ctx.globalAlpha = MathUtils.Ease.inOutQuad(spike.breath / 300); CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 1; } } else if ((isVisible === 0) && (spike.breath > 0)) { spike.breath = window.Math.max(0, spike.breath - (delta / 5)); ctx.globalAlpha = MathUtils.Ease.inOutQuad(spike.breath / 300); CanvasUtils.drawImageHd(item.hidden[spike.id % 3], (vertst + spike.x) + offsetX, (horist + spike.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 1; } } }; function _HiddenBuilding(item, building, offsetX, offsetY, rotation, imageScale) { if (MOD.showWires) {CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale)} else { var isVisible = 0; if (((building.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[building.pid].team)) && (World.players[building.pid].teamUid === World.teams[World.PLAYER.team].uid))) || (Math2d.fastDist(NmM, WWV, building.x, building.y) < 52000)) isVisible = 1; //CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale); if (isVisible === 1) { if (building.breath === 300) CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale); else { building.breath = window.Math.min(300, building.breath + delta); ctx.globalAlpha = MathUtils.Ease.inOutQuad(building.breath / 300); CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 1; } } else if ((isVisible === 0) && (building.breath > 0)) { building.breath = window.Math.max(0, building.breath - (delta / 5)); ctx.globalAlpha = MathUtils.Ease.inOutQuad(building.breath / 300); CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 1; } } }; function _Landmine(item, landmine, offsetX, offsetY, rotation, imageScale) { var isVisible = 0; var isInClan = 0; if (((landmine.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[landmine.pid].team)) && (World.players[landmine.pid].teamUid === World.teams[World.PLAYER.team].uid))) || (Math2d.fastDist(NmM, WWV, landmine.x, landmine.y) < 52000)) isVisible = 1; if (((landmine.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[landmine.pid].team)) && (World.players[landmine.pid].teamUid === World.teams[World.PLAYER.team].uid)))) isInClan = 1; if (MOD.showLandmines) { if (isVisible === 1) { CanvasUtils.drawImageHd(item.building[landmine.id % 3], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 0.2; CanvasUtils.drawImageHd(LIGHTFIRE[5], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, 0, 0, 0, 0.6); ctx.globalAlpha = 1; } else if (isVisible === 0) { CanvasUtils.drawImageHd(item.building[landmine.id % 3], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 0.2; CanvasUtils.drawImageHd(LIGHTFIRE[4], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, 0, 0, 0, 0.6); ctx.globalAlpha = 1; } } else { if (isVisible === 1) { landmine.breath = window.Math.min(300, landmine.breath + delta); ctx.globalAlpha = MathUtils.Ease.inOutQuad(landmine.breath / 300); CanvasUtils.drawImageHd(item.building[landmine.id % 3], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 1; } else if (isVisible === 0) { landmine.breath = window.Math.min(300, landmine.breath + delta / 5); ctx.globalAlpha = MathUtils.Ease.inOutQuad(landmine.breath / 300); CanvasUtils.drawImageHd(item.building[landmine.id % 3], (vertst + landmine.x) + offsetX, (horist + landmine.y) + offsetY, rotation * PIby2, 0, 0, imageScale) ctx.globalAlpha = 1; } } }; function _DefaultBuilding(item, building, offsetX, offsetY, rotation, imageScale) { CanvasUtils.drawImageHd(item.building, (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _Breakable(item, building, offsetX, offsetY, rotation, imageScale) { CanvasUtils.drawImageHd(item.building[building.broke], (vertst + building.x) + offsetX, (horist + building.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _Wall(item, wall, offsetX, offsetY, rotation, imageScale) { if (wall.broke > 0) CanvasUtils.drawImageHd(item.broken[wall.broke - 1], (vertst + wall.x) + offsetX, (horist + wall.y) + offsetY, 0, 0, 0, imageScale); else CanvasUtils.drawImageHd(item.building[WwmwN(wall)], (vertst + wall.x) + offsetX, (horist + wall.y) + offsetY, 0, 0, 0, imageScale); }; function handleProximity(item, player, checkPid) { if ((((player.removed === 0) && (World.PLAYER.interaction !== 1)) && (World.PLAYER.isInBuilding !== 1)) && (((checkPid === 0) || (player.pid === World.PLAYER.id)) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[player.pid].team)) && (World.players[player.pid].teamUid === World.teams[World.PLAYER.team].uid)))) { var distance = Math2d.fastDist(NmM, WWV, player.x, player.y); if (distance < nearestDistance) { World.PLAYER.packetId = item.packetId; World.PLAYER.buildingId = player.id; World.PLAYER.buildingPid = player.pid; World.PLAYER.buildingArea = item.area; nearestDistance = distance; if (World.PLAYER.interaction === 0) World.PLAYER.extraLoot = 1; World.PLAYER.interaction = 2; World.PLAYER.eInteract = item.interact; return 1; } } return 0; }; function _Construction(item, player, offsetX, offsetY, rotation, imageScale) { CanvasUtils.drawImageHd(item.builder, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, 1); var constructionLevel = (player.state >> 4) & 15; if (player.breath2 !== constructionLevel) { player.breath2 = constructionLevel; player.breath = 0; } player.breath = player.breath + delta; player.heal = (player.heal + delta) % 1000; var imageScale = 1 + (0.03 * ((player.heal < 500) ? (player.heal / 500) : (1 - ((player.heal - 500) / 500)))); if (constructionLevel === 0) { ctx.globalAlpha = MathUtils.Ease.inOutQuad(player.breath / item.evolve); CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 1; } else if (player.breath < item.evolve) { var progress = MathUtils.Ease.inOutQuad(player.breath / item.evolve); ctx.globalAlpha = 1 - progress; CanvasUtils.drawImageHd(item.building[constructionLevel - 1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = progress; CanvasUtils.drawImageHd(item.building[constructionLevel], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 1; } else CanvasUtils.drawImageHd(item.building[constructionLevel], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _TreeSeed(item, player, offsetX, offsetY, rotation, imageScale) { var constructionLevel = (player.state >> 4) & 15; player.breath = (player.breath + delta) % 1000; var imageScale = 1 + (0.01 * ((player.breath < 500) ? (player.breath / 500) : (1 - ((player.breath - 500) / 500)))); CanvasUtils.drawImageHd(item.building[constructionLevel], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _OrangeSeed(item, player, offsetX, offsetY, rotation, imageScale) { var constructionLevel = (player.state >> 4) & 15; player.breath = (player.breath + delta) % 1000; var imageScale = 1 + (0.03 * ((player.breath < 500) ? (player.breath / 500) : (1 - ((player.breath - 500) / 500)))); CanvasUtils.drawImageHd(item.building[constructionLevel], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _LowWall(item, player, offsetX, offsetY, rotation, imageScale) { var WVV = (player.broke > 0) ? item.broken[player.broke - 1] : item.building[wmNMv(player, rotation)]; var img = WVV.img; if (img.isLoaded !== 1) { WVV.img = CanvasUtils.loadImage(WVV.src, WVV.img); return; } var w = ((scaleby * img.width) / 2) * imageScale; var h = ((scaleby * img.height) / 2) * imageScale; ctx.save(); ctx.translate(scaleby * ((vertst + player.x) + offsetX), scaleby * ((horist + player.y) + offsetY)); ctx.rotate(rotation * PIby2); ctx.translate((item.xRotate * scaleby) - (w / 2), (item.yRotate * scaleby) - (h / 2)); ctx.drawImage(img, -item.xRotate * scaleby, -item.yRotate * scaleby, w, h); ctx.restore(); }; function _AutomaticDoor(item, player, offsetX, offsetY, rotation, imageScale) { ctx.globalAlpha = 1; var MvVvv = (player.state >> 7) & 1; if (MvVvv === 1) player.hitMax = window.Math.min(500, player.hitMax + delta); else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta); if ((player.hitMax > 0) && (player.hitMax !== 500)) { ctx.globalAlpha = MathUtils.Ease.outQuad(player.hitMax / 500); CanvasUtils.drawImageHd(item.building[1][player.broke], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = MathUtils.Ease.outQuad(1 - (player.hitMax / 500)); CanvasUtils.drawImageHd(item.building[0][player.broke], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); ctx.globalAlpha = 1; } else CanvasUtils.drawImageHd(item.building[MvVvv][player.broke], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _SwitchOff(item, player, offsetX, offsetY, rotation, imageScale) { handleProximity(item, player, 0); CanvasUtils.drawImageHd(item.building[(player.state >> 4) & 1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _TimerGate(item, player, offsetX, offsetY, rotation, imageScale) { handleProximity(item, player, 0); CanvasUtils.drawImageHd(item.building[(player.state >> 4) & 3], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _Lamp(item, player, offsetX, offsetY, rotation, imageScale) { handleProximity(item, player, 0); var light = (player.state >> 7) & 1; if (light === 1) player.hitMax = window.Math.min(500, player.hitMax + delta); else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta); if (player.hitMax > 0) { WvnvV[pplonscr++] = player; CanvasUtils.drawImageHd(item.buildingOn[(player.state >> 4) & 7], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); } else CanvasUtils.drawImageHd(item.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _LampLight(player) { var item = INVENTORY[player.extra >> 7]; ctx.globalAlpha = MathUtils.Ease.outQuad(player.hitMax / 500); player.breath2 = (player.breath2 + delta) % 5000; var breath = player.breath2; var imageScale = 1 + (0.09 * ((breath < 2500) ? (breath / 2500) : (1 - ((breath - 2500) / 2500)))); CanvasUtils.drawImageHd(item.buildingTop[(player.state >> 4) & 7], vertst + player.x, horist + player.y, 0, 0, 0, imageScale); ctx.globalAlpha = 1; }; function _Door(item, player, offsetX, offsetY, rotation, imageScale) { var NVNvv = (player.state >> 4) & 1; var MWwVn = (player.pid === 0) ? 0 : 1; if ((handleProximity(item, player, MWwVn) === 1) && (NVNvv === 1)) World.PLAYER.eInteract = item.interactclose; if (player.hit !== NVNvv) { player.hitMax = 500; player.hit = NVNvv; } if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta); var angle = item.angle; if (NVNvv === 0) angle *= MathUtils.Ease.inOutQuad(player.hitMax / 500); else angle *= MathUtils.Ease.inOutQuad(1 - (player.hitMax / 500)); var WVV = (player.broke > 0) ? item.broken[player.broke - 1] : item.building; var img = WVV.img; if (img.isLoaded !== 1) { WVV.img = CanvasUtils.loadImage(WVV.src, WVV.img); return; } var w = ((scaleby * img.width) / 2) * imageScale; var h = ((scaleby * img.height) / 2) * imageScale; ctx.save(); ctx.translate(scaleby * ((vertst + player.x) + offsetX), scaleby * ((horist + player.y) + offsetY)); ctx.rotate(rotation * PIby2); ctx.translate((item.xRotate * scaleby) - (w / 2), (item.yRotate * scaleby) - (h / 2)); ctx.rotate(angle); ctx.drawImage(img, -item.xRotate * scaleby, -item.yRotate * scaleby, w, h); ctx.restore(); if ((player.state & 32) === 32) { player.state -= 32; if (((player.breath === 0) && (offsetX === 0)) && (offsetY === 0)) player.breath = 600; } if (player.breath > 0) { if (arv.isLoaded !== 1) { arv = CanvasUtils.loadImage(IMG_DAY_UNUSABLE, arv); return; } if (player.breath > 400) ctx.globalAlpha = MathUtils.Ease.outQuad(1 - ((player.breath - 400) / 200)); else if (player.breath < 200) ctx.globalAlpha = MathUtils.Ease.outQuad(player.breath / 200); var offsetY = scaleby * (((player.i * __TILE_SIZE__) + horist) + __TILE_SIZE2__); var offsetX = scaleby * (((player.j * __TILE_SIZE__) + vertst) + __TILE_SIZE2__); var width = (scaleby * arv.width) / 2; var height = (scaleby * arv.height) / 2; ctx.drawImage(arv, offsetX - (width / 2), offsetY - (height / 2), width, height); ctx.globalAlpha = 1; player.breath = window.Math.max(0, player.breath - delta); } }; function _GroundFloor(item, player, offsetX, offsetY, rotation, imageScale) { var mmWVw = matrix[player.i][player.j]; mmWVw.tile = 0; mmWVw.ground = frameId; mmWVw.pid = player.pid; if ((mmWVw.wallFrame !== frameId) || (mmWVw.drawFloor === 1)) { if (player.broke > 0) CanvasUtils.drawImageHd(item.broken[player.broke - 1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, 0, 0, 0, imageScale); else CanvasUtils.drawImageHd(item.building[Wwmwm(player)], vertst + player.x, horist + player.y, 0, 0, 0, imageScale); } }; function _Furniture(item, player, offsetX, offsetY, rotation, imageScale) { var inuse = (player.state >> 4) & 1; var objects = INVENTORY[item.id].subtype[player.subtype]; if (inuse === 1) player.hit = window.Math.min(500, player.hit + delta); else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta); if (((inuse === 0) && (objects.usable === 1)) && (handleProximity(objects, player, 0) === 1)) World.PLAYER.eInteract = ICON_E_FURNITURE; CanvasUtils.drawImageHd(objects.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); if (player.hit > 0) containeropenic(player, offsetX, offsetY); }; function _Road(item, player, offsetX, offsetY, rotation, imageScale) { var objects = INVENTORY[item.id].subtype[player.subtype]; CanvasUtils.drawImageHd(objects.building, vertst + player.x, horist + player.y, 0, 0, 0, imageScale); }; function _Ghoul(entitie, player, offsetX, offsetY, imageScale) { var Vmwnn = player.state & 254; if (Vmwnn === 2) { player.state &= 65281; if (player.hit <= 0) { player.hit = entitie.actionDelay; player.hitMax = entitie.actionDelay; var VVmnw = window.Math.floor(window.Math.random() * 3); AudioUtils.playFx(AudioUtils._fx.shot[0][VVmnw], 0.5, Math2d.distance(World.PLAYER.x, World.PLAYER.y, player.x, player.y) / 3.5, 0); } } var nmm = 0; var NNM = 0; var NWW = 0; var wnN = 0; if (player.hit > 0) { player.hit = window.Math.max(0, player.hit - delta); player.hit = window.Math.min(player.hit, entitie.actionDelay); value = (player.hit > entitie.actionImpactClient) ? (1 - ((player.hit - entitie.actionImpactClient) / (entitie.actionDelay - entitie.actionImpactClient))) : (player.hit / entitie.actionImpactClient); nmm = (player.hurt2 * MathUtils.Ease.inOutQuad(value)) * 0.55; wnN = value * 6; if (player.hurt2 === 1) NNM = value * 25; else NWW = value * 25; if (player.hit === 0) player.hurt2 *= -1; } else if (Math2d.fastDist(player.x, player.y, player.nx, player.ny) < 1) { player.breath = (player.breath + delta) % 1500; if (player.breath2 !== 0) { if (player.breath2 < 750) player.breath2 = 1500 - player.breath2; player.breath2 = player.breath2 + delta; if (player.breath2 > 1500) player.breath2 = 0; } } else { player.breath2 = (player.breath2 + delta) % 1500; if (player.breath2 > 1500) { player.heal *= -1; player.breath2 = player.breath2 % 1500; } if (player.breath !== 0) { if (player.breath < 750) player.breath = 1500 - player.breath; player.breath = player.breath + delta; if (player.breath > 1500) player.breath = 0; } } var breath = entitie.breath * ((player.breath < 750) ? (player.breath / 750) : (1 - ((player.breath - 750) / 750))); var move = entitie.armMove * ((player.breath2 < 750) ? (player.breath2 / 750) : (1 - ((player.breath2 - 750) / 750))); CanvasUtils.drawImageHd(entitie.rightArm, offsetX, offsetY, ((entitie.rightArm.angle + player.angle) + breath) + nmm, (entitie.rightArm.x + (move * player.heal)) + NWW, entitie.rightArm.y, imageScale); CanvasUtils.drawImageHd(entitie.leftArm, offsetX, offsetY, ((-entitie.leftArm.angle + player.angle) - breath) + nmm, (entitie.leftArm.x - (move * player.heal)) + NNM, entitie.leftArm.y, imageScale); if (player.hurt > 0) { var mnM = 1; player.hurt -= delta; var value = 0; if (player.hurt > 150) value = MathUtils.Ease.inQuad((300 - player.hurt) / 300); else { value = MathUtils.Ease.outQuad(player.hurt / 150); mnM += (1 - value) * 0.2; } offsetX += (window.Math.cos(player.hurtAngle) * value) * 10; offsetY += (window.Math.sin(player.hurtAngle) * value) * 10; ctx.globalAlpha = window.Math.min(1, window.Math.max(0, value)); CanvasUtils.drawImageHd(entitie.hurt, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, mnM); ctx.globalAlpha = 1; } CanvasUtils.drawImageHd(entitie.head, offsetX, offsetY, player.angle + (nmm / 1.5), wnN, 0, imageScale); }; function _Workbench(item, player, offsetX, offsetY, rotation, imageScale) { var inuse = (player.state >> 4) & 1; if (inuse === 1) player.hit = window.Math.min(500, player.hit + delta); else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta); if (inuse === 0) handleProximity(item, player, 0); CanvasUtils.drawImageHd(item.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); if (player.hit > 0) containeropenic(player, offsetX, offsetY); }; function _Workbench2(item, player, offsetX, offsetY, rotation, imageScale) { var i = (rotation + 1) % 2; var j = rotation % 2; matrix[player.i + i][player.j + j].tile = frameId; matrix[player.i - i][player.j - j].tile = frameId; matrix[player.i + i][player.j + j].tilePid = player.pid; matrix[player.i - i][player.j - j].tilePid = player.pid; matrix[player.i + i][player.j + j].category = window.undefined; matrix[player.i - i][player.j - j].category = window.undefined; handleProximity(item, player, 0); CanvasUtils.drawImageHd(item.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); }; function _Agitator(item, player, offsetX, offsetY, rotation, imageScale) { var MWm = (player.state >> 4) & 1; if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta); else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta); if (MWm === 0) handleProximity(item, player, 0); var light = (player.state >> 5) & 1; if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta); else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta); var value = 0; if (player.hitMax > 0) { value = MathUtils.Ease.outQuad(player.hitMax / 10000); player.heal += (value * delta) / 300; CanvasUtils.drawImageHd(item.building[1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); CanvasUtils.drawImageHd(item.building[2], ((vertst + player.x) + offsetX) + item.spine[rotation][0], ((horist + player.y) + offsetY) + item.spine[rotation][1], (rotation * PIby2) + player.heal, 0, 0, imageScale); CanvasUtils.drawImageHd(item.building[3], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); } else CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); if (player.hit > 0) containeropenic(player, offsetX, offsetY); }; function _Extractor(item, player, offsetX, offsetY, rotation, imageScale) { var MWm = (player.state >> 4) & 1; if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta); else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta); if (MWm === 0) handleProximity(item, player, 0); var light = (player.state >> 5) & 1; if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta); else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta); var value = 0; if (player.hitMax > 0) { value = MathUtils.Ease.outQuad(player.hitMax / 10000); offsetX += ((window.Math.random() * 2) - 1) * value; offsetY += ((window.Math.random() * 2) - 1) * value; player.heal += (value * delta) / 300; CanvasUtils.drawImageHd(item.building[1], ((vertst + player.x) + offsetX) + item.spine[rotation][0], ((horist + player.y) + offsetY) + item.spine[rotation][1], (rotation * PIby2) + player.heal, 0, 0, imageScale); CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); } else CanvasUtils.drawImageHd(item.building[2], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); if (player.hit > 0) containeropenic(player, offsetX, offsetY); }; function _Feeder(item, player, offsetX, offsetY, rotation, imageScale) { var MWm = (player.state >> 4) & 1; if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta); else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta); if (MWm === 0) handleProximity(item, player, 0); var light = (player.state >> 5) & 1; if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta); else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta); var value = 0; if (player.hitMax > 0) { value = MathUtils.Ease.outQuad(player.hitMax / 10000); offsetX += ((window.Math.random() * 2) - 1) * value; offsetY += ((window.Math.random() * 2) - 1) * value; player.heal += (value * delta) / 300; CanvasUtils.drawImageHd(item.building[1], ((vertst + player.x) + offsetX) + item.spine[rotation][0], ((horist + player.y) + offsetY) + item.spine[rotation][1], (rotation * PIby2) + player.heal, 0, 0, imageScale); CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); } else CanvasUtils.drawImageHd(item.building[2], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); if (player.hit > 0) containeropenic(player, offsetX, offsetY); }; function containeropenic(player, offsetX, offsetY) { player.breath = (player.breath + delta) % 1000; var imageScale = 1 + (0.15 * ((player.breath < 500) ? (player.breath / 500) : (1 - ((player.breath - 500) / 500)))); imageScale *= scaleby; if (arv.isLoaded !== 1) { arv = CanvasUtils.loadImage(IMG_DAY_UNUSABLE, arv); return; } ctx.globalAlpha = MathUtils.Ease.outQuad(player.hit / 500); var offsetY = scaleby * (((player.i * __TILE_SIZE__) + horist) + __TILE_SIZE2__); var offsetX = scaleby * (((player.j * __TILE_SIZE__) + vertst) + __TILE_SIZE2__); var width = (imageScale * arv.width) / 2; var height = (imageScale * arv.height) / 2; ctx.drawImage(arv, offsetX - (width / 2), offsetY - (height / 2), width, height); ctx.globalAlpha = 1; }; function _Compost(item, player, offsetX, offsetY, rotation, imageScale) { var MWm = (player.state >> 4) & 1; if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta); else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta); if (MWm === 0) handleProximity(item, player, 0); var light = (player.state >> 5) & 1; if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta); else if (player.hitMax > 0) { player.hitMax = window.Math.max(0, player.hitMax - delta); } var value = 0; if (player.hitMax > 0) { value = MathUtils.Ease.outQuad(player.hitMax / 10000); offsetX += ((window.Math.random() * 2) - 1) * value; offsetY += ((window.Math.random() * 2) - 1) * value; CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); } else CanvasUtils.drawImageHd(item.building[1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); if (player.hit > 0) containeropenic(player, offsetX, offsetY); }; function _Smelter(item, player, offsetX, offsetY, rotation, imageScale) { var i = (rotation + 1) % 2; var j = rotation % 2; matrix[player.i + i][player.j + j].tile = frameId; matrix[player.i - i][player.j - j].tile = frameId; matrix[player.i + i][player.j + j].tilePid = player.pid; matrix[player.i - i][player.j - j].tilePid = player.pid; matrix[player.i + i][player.j + j].category = window.undefined; matrix[player.i - i][player.j - j].category = window.undefined; var MWm = (player.state >> 4) & 1; if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta); else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta); if (MWm === 0) handleProximity(item, player, 0); var light = (player.state >> 5) & 1; if (light === 1) player.hitMax = window.Math.min(10000, player.hitMax + delta); else if (player.hitMax > 0) { player.hitMax = window.Math.max(0, player.hitMax - delta); } var value = 0; if (player.hitMax > 0) { value = MathUtils.Ease.outQuad(player.hitMax / 10000); offsetX += ((window.Math.random() * 2) - 1) * value; offsetY += ((window.Math.random() * 2) - 1) * value; CanvasUtils.drawImageHd(item.building[1], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); } else CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); if (player.hit > 0) containeropenic(player, offsetX, offsetY); }; function _TeslaBench(item, player, offsetX, offsetY, rotation, imageScale) { var i = (rotation + 1) % 2; var j = rotation % 2; matrix[player.i + i][player.j + j].tile = frameId; matrix[player.i - i][player.j - j].tile = frameId; matrix[player.i + i][player.j + j].tilePid = player.pid; matrix[player.i - i][player.j - j].tilePid = player.pid; matrix[player.i + i][player.j + j].category = window.undefined; matrix[player.i - i][player.j - j].category = window.undefined; var MWm = (player.state >> 4) & 1; if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta); else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta); if (MWm === 0) handleProximity(item, player, 0); var light = (player.state >> 5) & 1; if (light === 1) player.hitMax = 1 + (player.hitMax + (delta % 300000)); else player.hitMax = 0; var value = 0; if (player.hitMax > 0) { CanvasUtils.drawImageHd(item.building[1 + (window.Math.floor(player.hitMax / 500) % 3)], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); var light = item.light[window.Math.floor(player.hitMax / 50) % item.light.length]; if (light !== 0) CanvasUtils.drawImageHd(light, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); } else CanvasUtils.drawImageHd(item.building[0], (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); if (player.hit > 0) containeropenic(player, offsetX, offsetY); }; function _CampfireLight(player) { ctx.globalAlpha = MathUtils.Ease.outQuad(player.hitMax / 500); player.heal = (player.heal + delta) % 1000; for (var i = 0; i < 3; i++) { var breath = (player.heal + (i * 333)) % 1000; var imageScale = 1 + (0.15 * ((breath < 500) ? (breath / 500) : (1 - ((breath - 500) / 500)))); CanvasUtils.drawImageHd(LIGHTFIRE[i], (vertst + player.x) + LIGHTFIREX[i], (horist + player.y) + LIGHTFIREY[i], 0, 0, 0, imageScale); } player.breath2 = (player.breath2 + delta) % 5000; var breath = player.breath2; var imageScale = 1 + (0.15 * ((breath < 2500) ? (breath / 2500) : (1 - ((breath - 2500) / 2500)))); CanvasUtils.drawImageHd(LIGHTFIRE[3], (vertst + player.x) + LIGHTFIREX[3], (horist + player.y) + LIGHTFIREY[3], 0, 0, 0, imageScale); ctx.globalAlpha = 1; }; function _Campfire(item, player, offsetX, offsetY, rotation, imageScale) { var MWm = (player.state >> 4) & 1; if (MWm === 1) player.hit = window.Math.min(500, player.hit + delta); else if (player.hit > 0) player.hit = window.Math.max(0, player.hit - delta); if (MWm === 0) handleProximity(item, player, 0); CanvasUtils.drawImageHd(item.building, (vertst + player.x) + offsetX, (horist + player.y) + offsetY, rotation * PIby2, 0, 0, imageScale); var light = (player.state >> 5) & 1; if (light === 1) player.hitMax = window.Math.min(500, player.hitMax + delta); else if (player.hitMax > 0) player.hitMax = window.Math.max(0, player.hitMax - delta); if (player.hitMax > 0) WvnvV[pplonscr++] = player; if (player.hit > 0) containeropenic(player, offsetX, offsetY); }; function _Explosions(player) { var img = ENTITIES[__ENTITIE_EXPLOSION__].explosions; var mVn = window.Math.floor(player.born / 70); if (mVn < 10) { if (player.born === 0) { if (Render.explosionShake !== -2) Render.explosionShake = 20; AudioUtils.playFx(AudioUtils._fx.explosion, 0.7, Math2d.distance(World.PLAYER.x, World.PLAYER.y, player.x, player.y) / 4); } CanvasUtils.drawImageHd(img[mVn], vertst + player.x, horist + player.y, 0, 0, 0, 1); } player.born += delta; }; function _Resources(resource) { matrix[resource.i][resource.j].tile = frameId; matrix[resource.i][resource.j].tilePid = resource.pid; matrix[resource.i][resource.j].category = window.undefined; var WwMWW = RESOURCES[(resource.extra >> 5) & 31]; var type = WwMWW.type[(resource.extra >> 10) & 7]; var imageScale = 1; if (resource.removed !== 0) { if (resource.death === 0) { if ((WwMWW.destroy !== 0) && (soundLimit[WwMWW.destroy] === 0)) { AudioUtils.playFx(AudioUtils._fx.damage[WwMWW.destroy], 1, Math2d.distance(World.PLAYER.x, World.PLAYER.y, resource.x, resource.y) / 2.5); soundLimit[WwMWW.destroy] = 1; } vNwNM(resource, WwMWW.particles, type.particlesDist, type.particle); } resource.death += delta; var value = window.Math.max(0, MathUtils.Ease.outQuart(1 - (resource.death / 300))); ctx.globalAlpha = value; imageScale = window.Math.min(1 + (0.35 * (1 - value)), 1.35); } else if (resource.born < 700) { if ((resource.born === 0) && (type.imgTop !== window.undefined)) { if (WMWvN === 0) resource.breath = window.Math.floor(window.Math.random() * 6000); else { resource.heal = window.Math.floor(window.Math.random() * 6000); resource.breath = 3000; } } var value = window.Math.min(1, MathUtils.Ease.outQuart(resource.born / 700)); ctx.globalAlpha = value; imageScale = (0.5 * value) + 0.5; } if ((resource.state & 2) === 2) { if ((WwMWW.impact !== 0) && (soundLimit[WwMWW.impact] === 0)) { AudioUtils.playFx(AudioUtils._fx.damage[WwMWW.impact], 1, Math2d.distance(World.PLAYER.x, World.PLAYER.y, resource.x, resource.y) / 2.8); soundLimit[WwMWW.impact] = 1; } resource.hurt = 250; if (resource.hurt2 <= 0) resource.hurt2 = 300; resource.hurtAngle = (PI2 * (resource.extra & 31)) / 31; resource.state &= ~2; vNwNM(resource, WwMWW.particles, type.particlesDist, 1); } var offsetX = 0; var offsetY = 0; if (resource.hurt > 0) { var hurt = (resource.hurt > 200) ? ((20 * (250 - resource.hurt)) / 50) : ((20 * resource.hurt) / 200); offsetX = window.Math.cos(resource.hurtAngle) * hurt; offsetY = window.Math.sin(resource.hurtAngle) * hurt; resource.hurt -= delta; } if (((resource.breath === 3000) && (WMWvN !== 0)) && (resource.hurt === 0)) { CanvasUtils.drawImageHd(type.imgFull, (vertst + resource.x) + offsetX, (horist + resource.y) + offsetY, resource.angle, 0, 0, imageScale); if (resource.removed !== 0) { if (resource.death > 300) resource.removed = 2; ctx.globalAlpha = 1; } else if (resource.born < 700) { resource.born += delta; ctx.globalAlpha = 1; } return; } CanvasUtils.drawImageHd(type.img, (vertst + resource.x) + offsetX, (horist + resource.y) + offsetY, resource.angle, 0, 0, imageScale); if (type.imgTop !== window.undefined) { offsetX = 0; offsetY = 0; if (resource.hurt2 > 0) { var hurt = (resource.hurt2 > 250) ? (10 * MathUtils.Ease.inQuad((300 - resource.hurt2) / 250)) : (10 * MathUtils.Ease.outQuad(resource.hurt2 / 250)); offsetX = window.Math.cos(resource.hurtAngle) * hurt; offsetY = window.Math.sin(resource.hurtAngle) * hurt; resource.hurt2 -= delta; } if (WMWvN === 0) { if (resource.heal > 0) resource.heal = window.Math.max(0, resource.heal - delta); else resource.breath += delta; if (resource.breath > 6000) resource.breath = 0; if (resource.breath > 3000) imageScale += (0.025 * (resource.breath - 3000)) / 3000; else imageScale += 0.025 - ((0.025 * resource.breath) / 3000); } else { if (resource.heal === 0) resource.heal = resource.breath; if (resource.breath > 6000) resource.breath = 0; if (resource.breath > 3000) { resource.breath = window.Math.max(3000, resource.breath - delta); imageScale += (0.025 * (resource.breath - 3000)) / 3000; } else if (resource.breath < 3000) { resource.breath = window.Math.min(3000, resource.breath + delta); imageScale += 0.025 - ((0.025 * resource.breath) / 3000); } } CanvasUtils.drawImageHd(type.imgTop, (vertst + resource.x) + offsetX, (horist + resource.y) + offsetY, resource.angle, 0, 0, imageScale); } if (resource.removed !== 0) { if (resource.death > 300) resource.removed = 2; ctx.globalAlpha = 1; } else if (resource.born < 700) { resource.born += delta; ctx.globalAlpha = 1; } /* var size = type.radius; ctx.beginPath(); ctx.arc(scaleby * ((vertst + resource.x) + offsetX),scaleby * ((horist + resource.y) + offsetY), scaleby * size, 0, 2 * Math.PI); ctx.strokeStyle = '#FF0000'; ctx.stroke(); */ if (pathFinder) { for (var x = 0; x < pworldWidth; x++) { for (var y = 0; y < pworldHeight; y++) { pworld[resource.j][resource.i] = 1; } } } }; function _Buildings(building) { matrix[building.i][building.j].tile = frameId; matrix[building.i][building.j].tilePid = building.pid; matrix[building.i][building.j].category = window.undefined; var rotation = (building.extra >> 5) & 3; var item = INVENTORY[building.extra >> 7]; var imageScale = 1; matrix[building.i][building.j].category = item.detail.category; if (building.removed !== 0) { if (building.death === 0) { var _item = (item.particles === -1) ? INVENTORY[item.id].subtype[building.subtype] : item; vNwNM(building, _item.particles, _item.particlesDist, 5); if ((_item.destroy !== 0) && (soundLimit[_item.destroy] === 0)) { AudioUtils.playFx(AudioUtils._fx.damage[_item.destroy], 1, Math2d.distance(World.PLAYER.x, World.PLAYER.y, building.x, building.y) / 2.5); soundLimit[_item.destroy] = 1; } } building.death += delta; var value = window.Math.max(0, MathUtils.Ease.outQuart(1 - (building.death / 300))); ctx.globalAlpha = value; imageScale = window.Math.min(1 + (0.35 * (1 - value)), 1.35); } if ((building.state & 2) === 2) { building.hurt = 250; building.hurtAngle = (PI2 * (building.extra & 31)) / 31; building.state &= ~2; var _item = (item.particles === -1) ? INVENTORY[item.id].subtype[building.subtype] : item; vNwNM(building, _item.particles, _item.particlesDist, 1); if ((_item.impact !== 0) && (soundLimit[_item.impact] === 0)) { AudioUtils.playFx(AudioUtils._fx.damage[_item.impact], 1, Math2d.distance(World.PLAYER.x, World.PLAYER.y, building.x, building.y) / 2.8); soundLimit[_item.impact] = 1; } } var offsetX = 0; var offsetY = 0; if (building.hurt > 0) { if (building.hurt > 200) { var hurt = (20 * (250 - building.hurt)) / 100; offsetX = window.Math.cos(building.hurtAngle) * hurt; offsetY = window.Math.sin(building.hurtAngle) * hurt; building.hurt -= delta; } else { var hurt = (20 * building.hurt) / 200; offsetX = window.Math.cos(building.hurtAngle) * hurt; offsetY = window.Math.sin(building.hurtAngle) * hurt; building.hurt -= delta; } } item.draw(item, building, offsetX, offsetY, rotation, imageScale); if (building.removed !== 0) { if (building.death > 300) building.removed = 2; ctx.globalAlpha = 1; } if (pathFinder) { if (INVENTORY[item.id].draw != Render.groundFloor) { // dont count floor for (var x = 0; x < pworldWidth; x++) { for (var y = 0; y < pworldHeight; y++) { pworld[building.j][building.i] = 1; } } } } if (MOD.buildingOwner) drawBuildingRectangle(building); }; // Function to draw rectangle around building function drawBuildingRectangle(building) { // Constants var gridSize = 100; var width = 100; // Use the first element for the width var height = 100; // Use the second element for the height // Calculate snapped mouse coordinates var mouseX = Math.round(GetAllTargets.mouseMapCords.x); var mouseY = Math.round(GetAllTargets.mouseMapCords.y); var snappedMouseX = Math.floor(mouseX / gridSize) * gridSize; var snappedMouseY = Math.floor(mouseY / gridSize) * gridSize; // Calculate grid positions var gridPosX = Math.floor(building.x / gridSize); var gridPosY = Math.floor(building.y / gridSize); // Check if the mouse is over the building's grid position and building.pid is not 0 if (snappedMouseX === gridPosX * gridSize && snappedMouseY === gridPosY * gridSize && building.pid !== 0) { // Calculate dimensions and positioning var scaledWidth = scaleby * width; var scaledHeight = scaleby * height; var offsetX = 0; // Assuming offsetX and offsetY are defined elsewhere var offsetY = 0; // Adjust as per your requirements var x = scaleby * (vertst + snappedMouseX + offsetX) - scaledWidth / 2; var y = scaleby * (horist + snappedMouseY + offsetY) - scaledHeight / 2; x += scaledWidth / 2; // Adjust to center the rectangle y += scaledHeight / 2; // Adjust to center the rectangle var isInClan = 0; if (((building.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[building.pid].team)) && (World.players[building.pid].teamUid === World.teams[World.PLAYER.team].uid)))) { isInClan = 1; } var lineColor; if (isInClan === 1) { lineColor = MOD.TeamColor; // Team color } else { lineColor = MOD.EnemyColor; // Enemy color } ctx.lineWidth = 2; // Drawing rectangle ctx.beginPath(); ctx.rect(x, y, scaledWidth, scaledHeight); ctx.strokeStyle = lineColor; ctx.stroke(); // Draw building ID or other information drawDarkBox2(building, x, y) drawText(building.i, building.j, building.pid); } } function _Bullets(bullet) { matrix[bullet.i][bullet.j].tile = frameId; matrix[bullet.i][bullet.j].tilePid = bullet.pid; matrix[bullet.i][bullet.j].category = window.undefined; var progress = 1; var i = bullet.i; var j = bullet.j; var NWvmm = (i <= 1) ? 0 : (i - 1); var MvmNn = (i >= (worldWidth - 2)) ? (worldWidth - 1) : (i + 1); var vnVVM = (j <= 1) ? 0 : (j - 1); var MnVMW = (j >= (worldHeight - 2)) ? (worldHeight - 1) : (j + 1); for (i = NWvmm; i <= MvmNn; i++) { for (j = vnVVM; j <= MnVMW; j++) { var VMV = matrix[i][j]; if (VMV.frameId !== frameId) continue; var M = VMV.b; var len = VMV.i; for (var k = 0; k < len; k++) { var playerGauges = M[k]; var type = playerGauges.type; var mvnVn = Entitie.units[type][playerGauges.cycle]; if (((mvnVn.pid !== World.PLAYER.id)) && (Math2d.distance(mvnVn.x, mvnVn.y, bullet.x, bullet.y) < (ENTITIES[type].radius - 4))) { window.console.log("DETECTED"); bullet.rx = bullet.x; bullet.ry = bullet.y; bullet.nx = bullet.x; bullet.ny = bullet.y; } } } } if (bullet.removed !== 0) { bullet.death += delta; progress = window.Math.max(0, MathUtils.Ease.outQuart(1 - (bullet.death / 200))); ctx.globalAlpha = progress; } var distance = Math2d.fastDist(bullet.nx, bullet.ny, bullet.x, bullet.y); if ((distance < 400) || (bullet.removed !== 0)) { ctx.globalAlpha = window.Math.min(distance / 400, progress); CanvasUtils.drawImageHd(ENTITIES[__ENTITIE_PLAYER__].bullets[bullet.extra][2], vertst + bullet.x, horist + bullet.y, bullet.angle, 0, 0, 1); ctx.globalAlpha = progress; CanvasUtils.drawImageHd(ENTITIES[__ENTITIE_PLAYER__].bullets[bullet.extra][1], vertst + bullet.x, horist + bullet.y, bullet.angle, 0, 0, 1); } else CanvasUtils.drawImageHd(ENTITIES[__ENTITIE_PLAYER__].bullets[bullet.extra][0], vertst + bullet.x, horist + bullet.y, bullet.angle, 0, 0, 1); if (bullet.removed !== 0) { if (bullet.death > 200) bullet.removed = 2; ctx.globalAlpha = 1; } }; function _Loots(loot) { matrix[loot.i][loot.j].tile = frameId; matrix[loot.i][loot.j].tilePid = loot.pid; matrix[loot.i][loot.j].category = window.undefined; if (loot.hit !== 0) { var PLAYER = World.players[loot.hit]; if (frameId === PLAYER.frameId) { var players = Entitie.units[__ENTITIE_PLAYER__]; var WMv = players[PLAYER.locatePlayer]; loot.nx = WMv.x; loot.ny = WMv.y; loot.angleX = window.Math.cos(Math2d.angle(loot.rx, loot.ry, loot.nx, loot.ny)); loot.angleY = window.Math.sin(Math2d.angle(loot.rx, loot.ry, loot.nx, loot.ny)); } } if ((loot.removed === 0) && (Math2d.fastDist(loot.x, loot.y, loot.nx, loot.ny) < 1)) { var distance = Math2d.fastDist(NmM, WWV, loot.x, loot.y); if (distance < distance12k) { //Auto Loot if (MOD.autoLoot) { if (MOD.useLootData) { for (let lootType in LootData) { if ( LootData.hasOwnProperty(lootType) && LootData[lootType].acquire && loot.extra === LootData[lootType].extra ) { Client.sendPacket(window.JSON.stringify([12, loot.id])); break; // Break the loop once we find a matching item } } } else { Client.sendPacket(window.JSON.stringify([12, loot.id])); } }; // ----- distance12k = distance; World.PLAYER.loot = loot.extra; World.PLAYER.lootId = loot.id; if (World.PLAYER.interaction <= 0) World.PLAYER.interaction = 0; else World.PLAYER.extraLoot = 1; } } var breath = 0; var vnwmm = 0; if (loot.removed !== 0) { loot.death += delta; ctx.globalAlpha = window.Math.max(0, MathUtils.Ease.outQuart(1 - (loot.death / 800))); vnwmm = loot.death / 2400; } else if (loot.born < 500) { var value = window.Math.min(1, MathUtils.Ease.outQuart(loot.born / 500)); ctx.globalAlpha = value; } loot.breath = (loot.breath + delta) % 1500; if (loot.breath < 750) breath = 0.95 + (MathUtils.Ease.inOutQuad(loot.breath / 750) * 0.1); else breath = 0.95 + (MathUtils.Ease.inOutQuad(1 - ((loot.breath - 750) / 750)) * 0.1); CanvasUtils.drawImageHd(LOOT[loot.extra], vertst + loot.x, horist + loot.y, loot.angle, 0, 0, breath - vnwmm); if (loot.removed !== 0) { if (loot.death > 800) loot.removed = 2; ctx.globalAlpha = 1; } else if (loot.born < 500) { loot.born += delta; ctx.globalAlpha = 1; } }; function RenderObjects() { var i = 0; pplonscr = 0; NNmMN[0] = 0; NNmMN[1] = 0; NNmMN[2] = 0; NNmMN[3] = 0; nearestDistance = 12000; distance12k = 12000; World.PLAYER.extraLoot = 0; World.PLAYER.buildingId = -1; World.PLAYER.buildingArea = -1; if (World.PLAYER.interaction !== 1) World.PLAYER.interaction = -1; var ents = Entitie.units[ENTITIES.length]; var entsBorder = Entitie.border[ENTITIES.length]; var entsLen = entsBorder.border; var buildings = Entitie.units[__ENTITIE_BUILD_TOP__]; var buildingsBorder = Entitie.border[__ENTITIE_BUILD_TOP__]; var buildingsLen = buildingsBorder.border; for (i = 0; i < buildingsLen; i++) _bigWallConnect(buildings[buildingsBorder.cycle[i]]); buildings = Entitie.units[__ENTITIE_BUILD_GROUND2__]; buildingsBorder = Entitie.border[__ENTITIE_BUILD_GROUND2__]; buildingsLen = buildingsBorder.border; for (i = 0; i < buildingsLen; i++) _floorConnect(buildings[buildingsBorder.cycle[i]]); for (i = 0; i < buildingsLen; i++) _Buildings(buildings[buildingsBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_BUILD_GROUND2__) _Buildings(player); } if (setParticles !== 0) { var particles = Entitie.units[__ENTITIE_PARTICLES__]; var buildingsBorder = Entitie.border[__ENTITIE_PARTICLES__]; var buildingsLen = buildingsBorder.border; for (i = 0; i < buildingsLen; i++) _Particles(particles[buildingsBorder.cycle[i]]); if (PARTICLE.id !== -1) { Entitie.remove(0, PARTICLE.id, PARTICLE.uid, __ENTITIE_PARTICLES__); PARTICLE.id = -1; } } var buildings = Entitie.units[__ENTITIE_BUILD_GROUND__]; var buildingsBorder = Entitie.border[__ENTITIE_BUILD_GROUND__]; var buildingsLen = buildingsBorder.border; for (i = 0; i < buildingsLen; i++) _Buildings(buildings[buildingsBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_BUILD_GROUND__) _Buildings(player); } resources = Entitie.units[__ENTITIE_RESOURCES_DOWN__]; resourceBorder = Entitie.border[__ENTITIE_RESOURCES_DOWN__]; resourceLen = resourceBorder.border; for (i = 0; i < resourceLen; i++) _Resources(resources[resourceBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_RESOURCES_DOWN__) _Resources(player); } var buildings = Entitie.units[__ENTITIE_BUILD_DOWN__]; var buildingsBorder = Entitie.border[__ENTITIE_BUILD_DOWN__]; var buildingsLen = buildingsBorder.border; for (i = 0; i < buildingsLen; i++) _wallConnect(buildings[buildingsBorder.cycle[i]]); for (i = 0; i < buildingsLen; i++) _Buildings(buildings[buildingsBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_BUILD_DOWN__) _Buildings(player); } var players = Entitie.units[__ENTITIE_PLAYER__]; var border = Entitie.border[__ENTITIE_PLAYER__]; var len = border.border; for (i = 0; i < len; i++) { var pos = border.cycle[i]; var player = players[pos]; var PLAYER = World.players[player.pid]; _Run(player); PLAYER.locatePlayer = pos; PLAYER.frameId = frameId; MmnMv(player, pos); } World.PLAYER.loot = -1; World.PLAYER.lootId = -1; var loots = Entitie.units[__ENTITIE_LOOT__]; var lootsBorder = Entitie.border[__ENTITIE_LOOT__]; var lootsLen = lootsBorder.border; for (i = 0; i < lootsLen; i++) _Loots(loots[lootsBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_LOOT__) _Loots(player); } var bullets = Entitie.units[__ENTITIE_BULLET__]; var bulletsBorder = Entitie.border[__ENTITIE_BULLET__]; var bulletsLen = bulletsBorder.border; for (i = 0; i < bulletsLen; i++) _Bullets(bullets[bulletsBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_BULLET__) _Bullets(player); } resources = Entitie.units[__ENTITIE_RESOURCES_MID__]; resourceBorder = Entitie.border[__ENTITIE_RESOURCES_MID__]; resourceLen = resourceBorder.border; for (i = 0; i < resourceLen; i++) _Resources(resources[resourceBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_RESOURCES_MID__) _Resources(player); } if (World.gameMode === World.__GHOUL__) { for (i = 0; i < len; i++) { var player = players[border.cycle[i]]; var ghoul = World.players[player.pid].ghoul; if (ghoul === 0) _EntitiePlayer(player); else { player.extra = ghoul - 1; _EntitieAI(player); }; } for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_PLAYER__) { _Run(player); var ghoul = World.players[player.pid].ghoul; if (ghoul === 0) _EntitiePlayer(player); else { player.extra = ghoul - 1; _EntitieAI(player); }; } } } else { for (i = 0; i < len; i++) _EntitiePlayer(players[border.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_PLAYER__) { _Run(player); _EntitiePlayer(player); } } } var entitie = Entitie.units[__ENTITIE_AI__]; var entitieBorder = Entitie.border[__ENTITIE_AI__]; var entitieLen = entitieBorder.border; for (i = 0; i < entitieLen; i++) _EntitieAI(entitie[entitieBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_AI__) _EntitieAI(player); } buildings = Entitie.units[__ENTITIE_BUILD_TOP__]; buildingsBorder = Entitie.border[__ENTITIE_BUILD_TOP__]; buildingsLen = buildingsBorder.border; for (i = 0; i < buildingsLen; i++) _Buildings(buildings[buildingsBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_BUILD_TOP__) _Buildings(player); } for (i = 0; i < pplonscr; i++) { var item = INVENTORY[WvnvV[i].extra >> 7]; item.drawTop(WvnvV[i]); WvnvV[i] = null; } resources = Entitie.units[__ENTITIE_RESOURCES_TOP__]; resourceBorder = Entitie.border[__ENTITIE_RESOURCES_TOP__]; resourceLen = resourceBorder.border; for (i = 0; i < resourceLen; i++) _Resources(resources[resourceBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_RESOURCES_TOP__) _Resources(player); } resources = Entitie.units[__ENTITIE_RESOURCES_STOP__]; resourceBorder = Entitie.border[__ENTITIE_RESOURCES_STOP__]; resourceLen = resourceBorder.border; for (i = 0; i < resourceLen; i++) _Resources(resources[resourceBorder.cycle[i]]); for (i = 0; i < entsLen; i++) { var player = ents[entsBorder.cycle[i]]; if (player.type === __ENTITIE_RESOURCES_STOP__) _Resources(player); } explosions = Entitie.units[__ENTITIE_EXPLOSION__]; explosionBorder = Entitie.border[__ENTITIE_EXPLOSION__]; explosionLen = explosionBorder.border; for (i = 0; i < explosionLen; i++) _Explosions(explosions[explosionBorder.cycle[i]]); for (i = 0; i < len; i++) _playerNotification(players[border.cycle[i]]); if (World.gameMode !== World.__BR__) { for (i = 0; i < len; i++) _playerName(players[border.cycle[i]]); for (i = 0; i < len; i++) _playerChatMessage(players[border.cycle[i]]); if (MOD.showPID) {for (i = 0; i < len; i++) _playerID(players[border.cycle[i]])}; } for (i = 0; i < len; i++) _CheckMyPlayer(players[border.cycle[i]]); if (MOD.DrawLines) { for (i = 0; i < len; i++) _DrawLines(players[border.cycle[i]]); } if (pathFinder) { for (i = 0; i < len; i++) _PathFinder(players[border.cycle[i]]); } }; function drawText(i, j, text) { var offsetY = scaleby * (((i * __TILE_SIZE__) + horist) + __TILE_SIZE2__); var offsetX = scaleby * (((j * __TILE_SIZE__) + vertst) + __TILE_SIZE2__); var size = 40 butlabel = GUI.renderText(text, "'Viga', sans-serif", "#FFFFFF", 38, 400, window.undefined, 16, 25, window.undefined, window.undefined, window.undefined, window.undefined, "#000000", 12); ctx.drawImage(butlabel, offsetX, offsetY, scaleby * size, scaleby * size); } function _DrawLines(player) { var PLAYER = World.players[player.pid]; var isInClan = 0; if(World.PLAYER.id === player.pid) return; var targetsPosition = { x: scaleby * (player.x + vertst), y: scaleby * (player.y + horist) }; var myPosition = { x: scaleby * (World.PLAYER.x + vertst), y: scaleby * (World.PLAYER.y + horist) }; var size = 38; var grey = '#E5E5E5'; var teamcolor; var enemycolor; ctx.globalAlpha = MOD.linesOpacity if (!MOD.ColorizeTeam) teamcolor = grey; else teamcolor = MOD.TeamColor; if (!MOD.ColorizeTeam) enemycolor = grey; else enemycolor = MOD.EnemyColor; if (((player.pid === World.PLAYER.id) || (((World.PLAYER.team !== -1) && (World.PLAYER.team === World.players[player.pid].team)) && (World.players[player.pid].teamUid === World.teams[World.PLAYER.team].uid))) ) isInClan = 1; if (isInClan === 1) { ctx.beginPath(); ctx.moveTo(myPosition.x, myPosition.y); ctx.lineTo(targetsPosition.x, targetsPosition.y); ctx.lineWidth = 1.2; ctx.strokeStyle = teamcolor; ctx.stroke(); ctx.beginPath(); ctx.arc(myPosition.x, myPosition.y, scaleby * size, 0, 2 * Math.PI); ctx.strokeStyle = teamcolor; ctx.stroke(); } else if (PLAYER.team === -1) { ctx.beginPath(); ctx.moveTo(myPosition.x, myPosition.y); ctx.lineTo(targetsPosition.x, targetsPosition.y); ctx.lineWidth = 1.2; ctx.strokeStyle = grey; ctx.stroke(); ctx.beginPath(); ctx.arc(targetsPosition.x, targetsPosition.y, scaleby * size, 0, 2 * Math.PI); ctx.strokeStyle = grey; ctx.stroke(); } else { ctx.beginPath(); ctx.moveTo(myPosition.x, myPosition.y); ctx.lineTo(targetsPosition.x, targetsPosition.y); ctx.lineWidth = 1.2; ctx.strokeStyle = enemycolor; ctx.stroke(); ctx.beginPath(); ctx.arc(targetsPosition.x, targetsPosition.y, scaleby * size, 0, 2 * Math.PI); ctx.strokeStyle = enemycolor; ctx.stroke(); } ctx.globalAlpha = 1; } function _PathFinder(player) { matrix[player.i][player.j].tile = frameId; matrix[player.i][player.j].tilePid = player.pid; matrix[player.i][player.j].category = window.undefined; if(player.pid === World.PLAYER.id) { if (pathFinder) { var startpoint = [ Math.floor(player.j), Math.floor(player.i) ]; var endpoint = [ Math.floor(setx), Math.floor(sety) ] pathStart = startpoint; pathEnd = endpoint; currentPath = findPath(pworld, pathStart, pathEnd); player.currentPath = currentPath; function findPath(pworld, pathStart, pathEnd) { var abs = Math.abs; var max = Math.max; var maxWalkableTileNum = 0; var pworldWidth = pworld[0].length; var pworldHeight = pworld.length; var worldSize = pworldWidth * pworldHeight; var distanceFunction = DiagonalDistance; var findNeighbours = DiagonalNeighbours; function DiagonalDistance(Point, Goal) { return max(abs(Point.x - Goal.x), abs(Point.y - Goal.y)); } function Neighbours(x, y) { var N = y - 1, S = y + 1, E = x + 1, W = x - 1, myN = N > -1 && canWalkHere(x, N), myS = S < pworldHeight && canWalkHere(x, S), myE = E < pworldWidth && canWalkHere(E, y), myW = W > -1 && canWalkHere(W, y), result = []; if (myN) result.push({ x: x, y: N }); if (myE) result.push({ x: E, y: y }); if (myS) result.push({ x: x, y: S }); if (myW) result.push({ x: W, y: y }); findNeighbours(myN, myS, myE, myW, N, S, E, W, result); return result; } function DiagonalNeighbours(myN, myS, myE, myW, N, S, E, W, result) { if (myN) { if (myE && canWalkHere(E, N)) result.push({ x: E, y: N }); if (myW && canWalkHere(W, N)) result.push({ x: W, y: N }); } if (myS) { if (myE && canWalkHere(E, S)) result.push({ x: E, y: S }); if (myW && canWalkHere(W, S)) result.push({ x: W, y: S }); } } function canWalkHere(x, y) { return ((pworld[x] != null) && (pworld[x][y] != null) && (pworld[x][y] <= maxWalkableTileNum || pworld[x][y] === 2)); }; function Node(Parent, Point) { var newNode = { Parent: Parent, value: Point.x + (Point.y * pworldWidth), x: Point.x, y: Point.y, f: 0, g: 0 }; return newNode; } function calculatePath() { var mypathStart = Node(null, { x: pathStart[0], y: pathStart[1] }); var mypathEnd = Node(null, { x: pathEnd[0], y: pathEnd[1] }); var AStar = new Array(worldSize); var Open = [mypathStart]; var Closed = []; var result = []; var myNeighbours; var myNode; var myPath; var length, max, min, i, j; while (length = Open.length) { max = worldSize; min = -1; for (i = 0; i < length; i++) { if (Open[i].f < max) { max = Open[i].f; min = i; } } myNode = Open.splice(min, 1)[0]; if (myNode.value === mypathEnd.value) { myPath = Closed[Closed.push(myNode) - 1]; do { result.push([myPath.x, myPath.y]); } while (myPath = myPath.Parent); AStar = Closed = Open = []; result.reverse(); } else { myNeighbours = Neighbours(myNode.x, myNode.y); for (i = 0, j = myNeighbours.length; i < j; i++) { myPath = Node(myNode, myNeighbours[i]); if (!AStar[myPath.value]) { myPath.g = myNode.g + distanceFunction(myNeighbours[i], myNode); myPath.f = myPath.g + distanceFunction(myNeighbours[i], mypathEnd); Open.push(myPath); AStar[myPath.value] = true; } } Closed.push(myNode); } } return result; } return calculatePath(); } function drawpath(player) { player.currentPath = currentPath; var datax = []; var datay = []; for(var i = 0; i < currentPath.length; i++) { datax.push([a1x]) datay.push([a1y]) var a1x = scaleby * (((currentPath[i][1] * 100) + horist) + 50); var a1y = scaleby * (((currentPath[i][0] * 100) + vertst) + 50); } ctx.beginPath(datay[0], datax[0]); for(var i = 1; i < currentPath.length; i++) { ctx.lineTo(datay[i], datax[i],); ctx.strokeStyle = '#00FF7F'; ctx.stroke(); } } function drawBox() { player.currentPath = currentPath; var myposx = scaleby * (((player.j * 100) + vertst) + 50); var myposy = scaleby * (((player.i * 100) + horist) + 50); ctx.strokeRect((myposx - 20), (myposy - 20), 40, 40); ctx.strokeStyle = '#00FF7F'; for(var i = 0; i < currentPath.length; i++) { var lastposx = scaleby * (((currentPath[i][0] * 100) + vertst) + 50); var lastposy = scaleby * (((currentPath[i][1] * 100) + horist) + 50); } ctx.strokeRect((lastposx - 20), (lastposy - 20), 40, 40); ctx.strokeStyle = '#e2f553'; } if (pathFinder){ drawpath(player); drawBox(); } } } }; function _StopPoisonEffect() { NNWWn = 0; }; var handleResize; var vmvNw = CanvasUtils.options.forceResolution; var nvMNv = 0; var wMmwW = 0; var NNWWn = 0; var VnwwM = 0; var WvWvM = 0; function _SetPoisonEffect(delay) { if (WvWvM === 0) { nvMNv = Render.scale; Render.scale = 0.8; wMmwW = 0; NNWWn = delay; VnwwM = 0; WvWvM = 1; vmvNw = CanvasUtils.options.deviceRatio / CanvasUtils.options.scheduledRatio; } }; function nmmMm() { if ((NNWWn <= 0) && ((wMmwW + delta) > 1500)) { WvWvM = 0; wMmwW = 1500; } else { NNWWn -= delta; VnwwM += delta; wMmwW = (wMmwW + delta) % 1500; } var value = MathUtils.Ease.inOutQuad(((wMmwW > 750) ? (1500 - wMmwW) : wMmwW) / 750); if (((NNWWn < 750) && (wMmwW > 750)) && ((1500 - wMmwW) > NNWWn)) { var WmNnV = window.Math.max(0, (1500 - wMmwW) / 750); value = (0.5 * WmNnV) + (value * (1 - 0.5)); } else if (VnwwM > 750) value = 0.5 + (value * (1 - 0.5)); var mvWMM = value * 20; Render.scale = nvMNv + value; CanvasUtils.options.scheduledRatio = CanvasUtils.options.deviceRatio / (vmvNw + mvWMM); handleResize(); }; var vvMWV = window.document.createElement('canvas'); var vWwnm = vvMWV.getContext('2d'); function nvVmw() { var temp; var value; var WvmWN = ctx; value = 1 - MathUtils.Ease.inQuad(World.transition / 1000); vvMWV.width = canvas.width; vvMWV.height = canvas.height; ctx = vWwnm; ctx.save(); var mnV = CanvasUtils.options.scheduledRatio / CanvasUtils.options.backingStoreRatio; ctx.scale(mnV, mnV); temp = INVENTORY2; INVENTORY2 = INVENTORY; INVENTORY = temp; temp = PARTICLES2; PARTICLES2 = PARTICLES; PARTICLES = temp; temp = LOOT2; LOOT2 = LOOT; LOOT = temp; temp = RESOURCES2; RESOURCES2 = RESOURCES; RESOURCES = temp; temp = ENTITIES2; ENTITIES2 = ENTITIES; ENTITIES = temp; temp = LIGHTFIRE2; LIGHTFIRE2 = LIGHTFIRE; LIGHTFIRE = temp; temp = GROUND2; GROUND2 = GROUND; GROUND = temp; temp = AI2; AI2 = AI; AI = temp; ctx.fillStyle = (World.day === 0) ? "#0B2129" : "#3D5942"; ctx.fillRect(0, 0, canw, canh); vMwNm(); RenderObjects(); temp = INVENTORY2; INVENTORY2 = INVENTORY; INVENTORY = temp; temp = PARTICLES2; PARTICLES2 = PARTICLES; PARTICLES = temp; temp = LOOT2; LOOT2 = LOOT; LOOT = temp; temp = RESOURCES2; RESOURCES2 = RESOURCES; RESOURCES = temp; temp = ENTITIES2; ENTITIES2 = ENTITIES; ENTITIES = temp; temp = LIGHTFIRE2; LIGHTFIRE2 = LIGHTFIRE; LIGHTFIRE = temp; temp = GROUND2; GROUND2 = GROUND; GROUND = temp; temp = AI2; AI2 = AI; AI = temp; ctx.restore(); ctx = WvmWN; ctx.globalAlpha = value; ctx.drawImage(vvMWV, 0, 0, canw, canh); ctx.globalAlpha = 1; World.transition = window.Math.max(0, World.transition - delta); if (World.transition === 0) World.changeDayCycle(); }; function _World() { Render.globalTime += delta; if (WvWvM === 1) nmmMm(); wNnvM(); myplayerfocusinscreen(); vMwNm(); wmVNW(); RenderObjects(); placingobj(); if (World.transition > 0) nvVmw(); Entitie.cleanRemoved(); frameId++; for (var i = 0; i < SOUND_LENGTH; i++) soundLimit[i] = 0; GetMouseCords(); scaleby = oldscale; canwns = canw / scaleby; canhns = canh / scaleby; }; function GetMouseCords() { if (MOD.AimBotEnable) { let aplha = ctx.globalAlpha, width = ctx.lineWidth; for (var lines = 0; lines < GetAllTargets.lines.length; lines++) { let pos = GetAllTargets.lines[lines]; var myPosition = { x: scaleby * (pos.x1 + vertst), y: scaleby * (pos.y1 + horist) }; var targetsPosition = { x: scaleby * (pos.x2 + vertst), y: scaleby * (pos.y2 + horist) }; ctx.lineWidth = pos.width, ctx.globalAlpha = pos.alpha, ctx.strokeStyle = pos.color, ctx.beginPath(), ctx.moveTo(myPosition.x, myPosition.y), ctx.lineTo(targetsPosition.x, targetsPosition.y), ctx.stroke(); } ctx.globalAlpha = aplha, ctx.lineWidth = width; } if (MOD.mouseFovEnable) GetAllTargets.mouseMapCords = _getMapCordsFromScreenMouseCords(GetAllTargets.mousePosition); }; function _SetDetection(value) { WMWvN = 0; }; function _getMapCordsFromScreenMouseCords(cords) { return {x: cords.x / scaleby - vertst, y: cords.y / scaleby - horist}; }; function _SetParticles(value) { localStorage2.setItem("particles", "" + value); setParticles = value; }; return { globalTime: window.Date.now(), reset: _Reset, world: _World, minimap: _Minimap, bigminimap: _BigMinimap, gauges: _Gauges, gaugesAfter: _GaugesAfter, leaderboard: _Leaderboard, inventory: _Inventory, buttonInv: _buttonInv, config: _Config, craft: _Craft, chest: _Chest, team: _Team, interaction: _Interaction, alertServer: _AlertServer, shake: 0, explosionShake: 0, scale: -0., setParticles: _SetParticles, setDetection: _SetDetection, setPoisonEffect: _SetPoisonEffect, stopPoisonEffect: _StopPoisonEffect, __TILE_SCALE__: __TILE_SCALE__, __TILE_SIZE__: __TILE_SIZE__, __TILE_SIZE2__: __TILE_SIZE2__, __TRANSFORM__: 0, wall: _Wall, lowWall: _LowWall, door: _Door, workbench: _Workbench, campfire: _Campfire, campfireLight: _CampfireLight, smelter: _Smelter, compost: _Compost, agitator: _Agitator, extractor: _Extractor, feeder: _Feeder, workbench2: _Workbench2, teslaBench: _TeslaBench, orangeSeed: _OrangeSeed, treeSeed: _TreeSeed, groundFloor: _GroundFloor, defaultBuilding: _DefaultBuilding, hiddenBuilding: _HiddenBuilding, breakable: _Breakable, furniture: _Furniture, road: _Road, landmine: _Landmine, dynamite: _Dynamite, spike: _Spike, ghoul: _Ghoul, construction: _Construction, lamp: _Lamp, lampLight: _LampLight, switchOff: _SwitchOff, timerGate: _TimerGate, automaticDoor: _AutomaticDoor, battleRoyale: _BattleRoyale, getMapCordsFromScreenMouseCords: _getMapCordsFromScreenMouseCords }; })(); var ent, inhandID, weapon; var myplayerhit = 0; function _CheckMyPlayer(player) { if(World.PLAYER.id === player.pid) { ent = ENTITIES[__ENTITIE_PLAYER__]; inhandID = (player.extra >> 8) & 255; weapon = ent.weapons[inhandID]; myplayerhit = player.hit; } } function _AutoEat(delta) { if (MOD.autoEat) { const foodItems = { orange: 12, tomato: 77, mushroom: 120, mushroom2: 121, steak: 10, tomatoSoup: 72, chips: 87, soda: 39 }; const hungryLevel = World.gauges.food.current; MOD.gaugesFood = hungryLevel; const inventory = World.PLAYER.inventory; let isLocked = true; let foodInHand = false; let interactionTimeout = World.PLAYER.interactionDelay; interactionTimeout -= delta; if (interactionTimeout <= 0 && World.PLAYER.interaction === -1) { isLocked = false; } if (weapon.consumable !== 1 || weapon.heal < -1 || weapon.food <= 0) { foodInHand = false; } else { foodInHand = true; } if (hungryLevel < MOD.hungryLevel) { if (!isLocked) { if (!foodInHand) { checkInventoryForFood(); } else { eatFood(); } } } else { console.log('MOD.autoEat -> Not hungry.'); } function checkInventoryForFood() { let foundFood = false; let foodItem; for (const item of inventory) { if (Object.values(foodItems).includes(item[0])) { foodItem = { id: item[0], amount: item[1], itemId: item[2], extra: item[3] }; foundFood = true; break; } } if (!isLocked && foundFood) { equipFood(foodItem); } else if (!isLocked) { noFood(); } } function equipFood(foodItem) { if (!isLocked) { Client.sendPacket(JSON.stringify([8, foodItem.id, foodItem.amount, foodItem.itemId, foodItem.extra])); console.log('MOD.autoEat -> Equip food.'); } } function eatFood() { if (!isLocked) { Client.sendMouseDown(); Client.sendMouseUp(); console.log('MOD.autoEat -> Eat food.'); } } function noFood() { console.log('MOD.autoEat -> Food not found.'); } if (myplayerhit !== 0) { Client.sendMouseUp(); // Ensure no interference with gameplay } } } setInterval(_AutoEat(1), 3000); var MapManager = (function() { var TOP = 0; var DOWN = 1; var LEFT = 2; var RIGHT = 4; var vMWMW = 0; var wMVvN = 0; var MnMNn = 4; var wWn = null; var vWwNw = -1; var VNnvM = 0; var grid = []; var NvMvV = []; var roads = []; var NWVNw = { i: 0, j: 0 }; function VVvvN() { for (var i = 0; i < wMVvN; i++) { grid[i] = []; for (var j = 0; j < vMWMW; j++) grid[i][j] = 0; } }; function wvmnN(seed, width, height) { wWn = new RNG.Random(seed); vMWMW = width; wMVvN = height; MapManager.width = width; MapManager.height = height; grid = []; MapManager.grid = grid; NvMvV = []; roads = []; MapManager.roads = roads; vWwNw = -1; NWVNw.i = 0; NWVNw.j = 0; VNnvM = 0; }; function init(seed, width, height, fun) { window.console.time("Town generation"); wvmnN(seed, width, height); VVvvN(); if (fun !== window.undefined) fun(); window.console.timeEnd("Town generation"); }; return { seed: 0, init: init, grid: grid, roads: null, width: 0, height: 0 }; })(); COUNTER_ENTITIE = 0; __ENTITIE_PLAYER__ = COUNTER_ENTITIE++; __ENTITIE_LOOT__ = COUNTER_ENTITIE++; __ENTITIE_BULLET__ = COUNTER_ENTITIE++; __ENTITIE_BUILD_TOP__ = COUNTER_ENTITIE++; __ENTITIE_BUILD_DOWN__ = COUNTER_ENTITIE++; __ENTITIE_BUILD_GROUND__ = COUNTER_ENTITIE++; __ENTITIE_BUILD_GROUND2__ = COUNTER_ENTITIE++; __ENTITIE_PARTICLES__ = COUNTER_ENTITIE++; __ENTITIE_RESOURCES_TOP__ = COUNTER_ENTITIE++; __ENTITIE_RESOURCES_DOWN__ = COUNTER_ENTITIE++; __ENTITIE_RESOURCES_MID__ = COUNTER_ENTITIE++; __ENTITIE_RESOURCES_STOP__ = COUNTER_ENTITIE++; __ENTITIE_EXPLOSION__ = COUNTER_ENTITIE++; __ENTITIE_AI__ = COUNTER_ENTITIE++; ENTITIES[__ENTITIE_PLAYER__].update = function updateEntitiePlayer(entity, offsetX, offsetY) { if (Math2d.distance(entity.x, entity.y, offsetX, offsetY) > 66) { entity.rx = offsetX; entity.ry = offsetY; var angle = Math2d.angle(entity.rx, entity.ry, entity.nx, entity.ny); entity.angleX = window.Math.cos(angle); entity.angleY = window.Math.sin(angle); } entity.speed = (entity.state >> 8) / 100; }; ENTITIES[__ENTITIE_PLAYER__].init = function initEntitiePlayer(entity) { var PLAYER = World.players[entity.pid]; for (var i = 0; i < PLAYER.runEffect.length; i++) PLAYER.runEffect[i].delay = 0; for (var i = 0; i < PLAYER.cartridges.length; i++) PLAYER.cartridges[i].delay = 0; entity.angle = entity.nangle; if (PLAYER.ghoul > 0) { entity.heal = 1; entity.hurt2 = 1; } }; ENTITIES[__ENTITIE_AI__].update = ENTITIES[__ENTITIE_PLAYER__].update; ENTITIES[__ENTITIE_AI__].init = function initEntitieAI(entity) { entity.heal = 1; entity.hurt2 = 1; entity.angle = entity.nangle; entity.speed = (entity.state >> 8) / 100; }; ENTITIES[__ENTITIE_LOOT__].init = function initEntitieLoot(entity) { if ((entity.x !== entity.rx) || (entity.y !== entity.ry)) { entity.angle = Math2d.angle(entity.x, entity.y, entity.rx, entity.ry); entity.nangle = entity.angle; } else { entity.angle += window.Math.PI / 2; entity.nangle = entity.angle; } }; ENTITIES[__ENTITIE_LOOT__].update = function updateEntitieLoot(entity, offsetX, offsetY) { entity.hit = entity.state >> 8; }; ENTITIES[__ENTITIE_BULLET__].init = function initEntitieBullet(entity) { entity.hurtAngle = Math2d.angle(entity.rx, entity.ry, entity.nx, entity.ny); var id = entity.extra; entity.speed = (entity.state >> 8) / 100; switch (id) { case 4: case 8: var player = Entitie.findEntitie(__ENTITIE_PLAYER__, entity.pid, 0); if (player !== null) { player.extra = player.extra & 255; player.hit = 0; } break; case 3: var player = Entitie.findEntitie(__ENTITIE_PLAYER__, entity.pid, 0); if (player !== null) player.hit = 0; break; } }; ENTITIES[__ENTITIE_BULLET__].update = function updateEntitieBullet(entity, offsetX, offsetY) { var angle = Math2d.angle(entity.x, entity.y, entity.nx, entity.ny); var pi2 = window.Math.PI * 2; var vWWMM = (((angle + pi2) % pi2) - ((entity.hurtAngle + pi2) % pi2)) % pi2; if (window.Math.abs(vWWMM) > 0.1) { entity.rx = entity.x; entity.ry = entity.y; entity.nx = entity.x; entity.ny = entity.y; } }; ENTITIES[__ENTITIE_RESOURCES_TOP__].update = function updateEntitieBuilding() { }; ENTITIES[__ENTITIE_RESOURCES_DOWN__].update = ENTITIES[__ENTITIE_RESOURCES_TOP__].update; ENTITIES[__ENTITIE_RESOURCES_MID__].update = ENTITIES[__ENTITIE_RESOURCES_TOP__].update; ENTITIES[__ENTITIE_RESOURCES_STOP__].update = ENTITIES[__ENTITIE_RESOURCES_TOP__].update; ENTITIES[__ENTITIE_BUILD_TOP__].update = function updateEntitieBuilding(entity, offsetX, offsetY) { var rotation = (entity.extra >> 5) & 3; entity.subtype = (entity.state >> 5) & 63; entity.broke = entity.state >> 14; entity.state = entity.state & 16383; var item = INVENTORY[entity.extra >> 7]; entity.x = ((window.Math.floor(offsetX / Render.__TILE_SIZE__) * Render.__TILE_SIZE__) + Render.__TILE_SIZE2__) + item.xCenter[rotation]; entity.y = ((window.Math.floor(offsetY / Render.__TILE_SIZE__) * Render.__TILE_SIZE__) + Render.__TILE_SIZE2__) + item.yCenter[rotation]; entity.rx = entity.x; entity.ry = entity.y; entity.nx = entity.x; entity.ny = entity.y; entity.px = entity.x; entity.py = entity.y; if ((item.door === 1) && ((entity.state & 16) === 16)) { entity.px = ((window.Math.floor(entity.j + item.jMove[rotation]) * Render.__TILE_SIZE__) + Render.__TILE_SIZE2__) + item.xCenter[(rotation + 1) % 4]; entity.py = ((window.Math.floor(entity.i + item.iMove[rotation]) * Render.__TILE_SIZE__) + Render.__TILE_SIZE2__) + item.yCenter[(rotation + 1) % 4]; } }; ENTITIES[__ENTITIE_BUILD_DOWN__].update = ENTITIES[__ENTITIE_BUILD_TOP__].update; ENTITIES[__ENTITIE_BUILD_GROUND__].update = ENTITIES[__ENTITIE_BUILD_TOP__].update; ENTITIES[__ENTITIE_BUILD_GROUND2__].update = ENTITIES[__ENTITIE_BUILD_TOP__].update; try { Render.shake; } catch (error) { var Render = {}; } var __WARM__ = 1; var __RADIATION__ = 2; var COUNTER = 0; var AREAS = { __PLAYER__: COUNTER++, __FIRE__: COUNTER++, __WORKBENCH__: COUNTER++, __BBQ__: COUNTER++, __WEAVING__: COUNTER++, __WORKBENCH2__: COUNTER++, __SMELTER__: COUNTER++, __TESLA__: COUNTER++, __COMPOST__: COUNTER++, __AGITATOR__: COUNTER++, __EXTRACTOR__: COUNTER++, __WELDING_MACHINE__: COUNTER++, __FEEDER__: COUNTER++ }; COUNTER = 0; var SOUNDID = { __NO_SOUND__: COUNTER++, __WOOD_IMPACT__: COUNTER++, __STONE_IMPACT__: COUNTER++, __STONE_IMPACT_2__: COUNTER++, __STEEL_IMPACT__: COUNTER++, __WOOD_DESTROY__: COUNTER++, __STONE_DESTROY__: COUNTER++, __STEEL_DESTROY__: COUNTER++, __PILLOW_IMPACT__: COUNTER++, __PILLOW_DESTROY__: COUNTER++ }; var SOUND = []; SOUND[SOUNDID.__WOOD_IMPACT__] = "audio/wood-impact.mp3"; SOUND[SOUNDID.__STONE_IMPACT__] = "audio/stone-impact2.mp3"; SOUND[SOUNDID.__STONE_IMPACT_2__] = "audio/stone-impact.mp3"; SOUND[SOUNDID.__STEEL_IMPACT__] = "audio/metal-impact2.mp3"; SOUND[SOUNDID.__PILLOW_IMPACT__] = "audio/pillow-impact-impact.mp3"; SOUND[SOUNDID.__WOOD_DESTROY__] = "audio/wood-destroy3.mp3"; SOUND[SOUNDID.__STONE_DESTROY__] = "audio/stone-destroy.mp3"; SOUND[SOUNDID.__STEEL_DESTROY__] = "audio/metal-destroy2.mp3"; SOUND[SOUNDID.__PILLOW_DESTROY__] = "audio/pillow-impact-destroy.mp3"; var SOUND_LENGTH = SOUND.length; COUNTER = 0; var BEHAVIOR = { __NO__: COUNTER++, __SEED__: COUNTER++, __SEED_RESOURCE__: COUNTER++, __LOGIC__: COUNTER++, __AI_CONSTRUCTOR__: COUNTER++ }; COUNTER = 0; var AIID = { __NORMAL_GHOUL__: COUNTER++, __FAST_GHOUL__: COUNTER++, __EXPLOSIVE_GHOUL__: COUNTER++, __RADIOACTIVE_GHOUL__: COUNTER++, __ARMORED_GHOUL__: COUNTER++, __PUMPKIN_GHOUL__: COUNTER++, __LAPABOT_REPAIR__: COUNTER++, __HAL_BOT__: COUNTER++, __TESLA_BOT__: COUNTER++ }; COUNTER = 0; var SKILLS = { __SKILL__: COUNTER++, __SURVIVAL__: COUNTER++, __CLOTHE__: COUNTER++, __BUILDING__: COUNTER++, __TOOL__: COUNTER++, __WEAPON__: COUNTER++, __PLANT__: COUNTER++, __DRUG__: COUNTER++, __MINERAL__: COUNTER++, __LOGIC__: COUNTER++ }; COUNTER = 1; var IID = { __WOOD__: COUNTER++, __STONE__: COUNTER++, __STEEL__: COUNTER++, __ANIMAL_FAT__: COUNTER++, __ANIMAL_TENDON__: COUNTER++, __STRING__: COUNTER++, __LEATHER_BOAR__: COUNTER++, __SHAPED_METAL__: COUNTER++, __RAW_STEAK__: COUNTER++, __COOKED_STEAK__: COUNTER++, __ROTTEN_STEAK__: COUNTER++, __ORANGE__: COUNTER++, __ROTTEN_ORANGE__: COUNTER++, __SEED_ORANGE__: COUNTER++, __HACHET__: COUNTER++, __STONE_PICKAXE__: COUNTER++, __STEEL_PICKAXE__: COUNTER++, __STONE_AXE__: COUNTER++, __WORKBENCH__: COUNTER++, __WOOD_SPEAR__: COUNTER++, __WOOD_BOW__: COUNTER++, __9MM__: COUNTER++, __DESERT_EAGLE__: COUNTER++, __SHOTGUN__: COUNTER++, __AK47__: COUNTER++, __SNIPER__: COUNTER++, __WOOD_WALL__: COUNTER++, __STONE_WALL__: COUNTER++, __STEEL_WALL__: COUNTER++, __WOOD_DOOR__: COUNTER++, __STONE_DOOR__: COUNTER++, __STEEL_DOOR__: COUNTER++, __CAMPFIRE__: COUNTER++, __BULLET_9MM__: COUNTER++, __BULLET_SHOTGUN__: COUNTER++, __BULLET_SNIPER__: COUNTER++, __MEDIKIT__: COUNTER++, __BANDAGE__: COUNTER++, __SODA__: COUNTER++, __MP5__: COUNTER++, __HEADSCARF__: COUNTER++, __CHAPKA__: COUNTER++, __WINTER_COAT__: COUNTER++, __GAZ_MASK__: COUNTER++, __GAZ_PROTECTION__: COUNTER++, __RADIATION_SUIT__: COUNTER++, __WOOD_ARROW__: COUNTER++, __CAMPFIRE_BBQ__: COUNTER++, __SMELTER__: COUNTER++, __WOOD_BIGDOOR__: COUNTER++, __STONE_BIGDOOR__: COUNTER++, __STEEL_BIGDOOR__: COUNTER++, __SULFUR__: COUNTER++, __SHAPED_URANIUM__: COUNTER++, __WORKBENCH2__: COUNTER++, __URANIUM__: COUNTER++, __WEAVING__: COUNTER++, __GASOLINE__: COUNTER++, __SULFUR_PICKAXE__: COUNTER++, __CHEST__: COUNTER++, __FRIDGE__: COUNTER++, __WOOD_FLOOR__: COUNTER++, __HAMMER__: COUNTER++, __SLEEPING_BAG__: COUNTER++, __REPAIR_HAMMER__: COUNTER++, __NAILS__: COUNTER++, __WOODLIGHT_FLOOR__: COUNTER++, __WOOD_SMALLWALL__: COUNTER++, __STONE_SMALLWALL__: COUNTER++, __STEEL_SMALLWALL__: COUNTER++, __FURNITURE__: COUNTER++, __TOMATO_SOUP__: COUNTER++, __SYRINGE__: COUNTER++, __CHEMICAL_COMPONENT__: COUNTER++, __RADAWAY__: COUNTER++, __SEED_TOMATO__: COUNTER++, __TOMATO__: COUNTER++, __ROTTEN_TOMATO__: COUNTER++, __CAN__: COUNTER++, __WOOD_CROSSBOW__: COUNTER++, __WOOD_CROSSARROW__: COUNTER++, __NAIL_GUN__: COUNTER++, __SAWED_OFF_SHOTGUN__: COUNTER++, __STONE_FLOOR__: COUNTER++, __TILING_FLOOR__: COUNTER++, __ROAD__: COUNTER++, __CRISPS__: COUNTER++, __ROTTEN_CRISPS__: COUNTER++, __ELECTRONICS__: COUNTER++, __JUNK__: COUNTER++, __WIRE__: COUNTER++, __ENERGY_CELLS__: COUNTER++, __LASER_PISTOL__: COUNTER++, __TESLA__: COUNTER++, __ALLOYS__: COUNTER++, __SULFUR_AXE__: COUNTER++, __LANDMINE__: COUNTER++, __DYNAMITE__: COUNTER++, __C4__: COUNTER++, __C4_TRIGGER__: COUNTER++, __COMPOST__: COUNTER++, __ARMOR_PHYSIC_1__: COUNTER++, __ARMOR_PHYSIC_2__: COUNTER++, __ARMOR_PHYSIC_3__: COUNTER++, __ARMOR_FIRE_1__: COUNTER++, __ARMOR_FIRE_2__: COUNTER++, __ARMOR_FIRE_3__: COUNTER++, __ARMOR_DEMINER__: COUNTER++, __ARMOR_TESLA_1__: COUNTER++, __ARMOR_TESLA_2__: COUNTER++, __WOOD_SPIKE__: COUNTER++, __LASER_SUBMACHINE__: COUNTER++, __GRENADE__: COUNTER++, __SUPER_HAMMER__: COUNTER++, __GHOUL_BLOOD__: COUNTER++, __CAMOUFLAGE_GEAR__: COUNTER++, __AGITATOR__: COUNTER++, __GHOUL_DRUG__: COUNTER++, __MUSHROOM1__: COUNTER++, __MUSHROOM2__: COUNTER++, __MUSHROOM3__: COUNTER++, __ROTTEN_MUSHROOM1__: COUNTER++, __ROTTEN_MUSHROOM2__: COUNTER++, __ROTTEN_MUSHROOM3__: COUNTER++, __LAPADONE__: COUNTER++, __LAPABOT_REPAIR__: COUNTER++, __SMALL_WIRE__: COUNTER++, __PUMPKIN__: COUNTER++, __ROTTEN_PUMPKIN__: COUNTER++, __SEED_GHOUL__: COUNTER++, __EXTRACTOR__: COUNTER++, __ANTIDOTE__: COUNTER++, __ANTIDOTE_FLOWER__: COUNTER++, __SEED_TREE__: COUNTER++, __ACORN__: COUNTER++, __ROTTEN_ACORN__: COUNTER++, __LASER_SNIPER__: COUNTER++, __HAL_BOT__: COUNTER++, __TESLA_BOT__: COUNTER++, __CABLE0__: COUNTER++, __CABLE1__: COUNTER++, __CABLE2__: COUNTER++, __CABLE3__: COUNTER++, __SWITCH__: COUNTER++, __GATE_OR__: COUNTER++, __GATE_AND__: COUNTER++, __GATE_NOT__: COUNTER++, __LAMP__: COUNTER++, __CABLE_WALL__: COUNTER++, __AUTOMATIC_DOOR__: COUNTER++, __PLATFORM__: COUNTER++, __STONE_CAVE__: COUNTER++, __BUNKER_WALL__: COUNTER++, __GOLD_FLOOR__: COUNTER++, __RED_FLOOR__: COUNTER++, __WELDING_MACHINE__: COUNTER++, __CABLE4__: COUNTER++, __GATE_TIMER__: COUNTER++, __GATE_XOR__: COUNTER++, __BUILDER_1__: COUNTER++, __BUILDER_2__: COUNTER++, __INV_1__: COUNTER++, __INV_2__: COUNTER++, __INV_3__: COUNTER++, __INV_4__: COUNTER++, __INV_5__: COUNTER++, __FEATHERWEIGHT__: COUNTER++, __FEEDER__: COUNTER++ }; COUNTER = 0; var LOOTID = { __SMALL_WOOD__: COUNTER++, __MEDIUM_WOOD__: COUNTER++, __BIG_WOOD__: COUNTER++, __SMALL_STONE__: COUNTER++, __MEDIUM_STONE__: COUNTER++, __BIG_STONE__: COUNTER++, __STEEL__: COUNTER++, __ANIMAL_FAT__: COUNTER++, __ANIMAL_TENDON__: COUNTER++, __STRING__: COUNTER++, __LEATHER_BOAR__: COUNTER++, __SHAPED_METAL__: COUNTER++, __RAW_STEAK__: COUNTER++, __COOKED_STEAK__: COUNTER++, __ROTTEN_STEAK__: COUNTER++, __ORANGE__: COUNTER++, __ROTTEN_ORANGE__: COUNTER++, __SEED_ORANGE__: COUNTER++, __HACHET__: COUNTER++, __STONE_PICKAXE__: COUNTER++, __STEEL_PICKAXE__: COUNTER++, __STONE_AXE__: COUNTER++, __WORKBENCH__: COUNTER++, __WOOD_SPEAR__: COUNTER++, __WOOD_BOW__: COUNTER++, __9MM__: COUNTER++, __DESERT_EAGLE__: COUNTER++, __SHOTGUN__: COUNTER++, __AK47__: COUNTER++, __SNIPER__: COUNTER++, __WOOD_WALL__: COUNTER++, __STONE_WALL__: COUNTER++, __STEEL_WALL__: COUNTER++, __WOOD_DOOR__: COUNTER++, __STONE_DOOR__: COUNTER++, __STEEL_DOOR__: COUNTER++, __CAMPFIRE__: COUNTER++, __BULLET_9MM__: COUNTER++, __BULLET_SHOTGUN__: COUNTER++, __BULLET_SNIPER__: COUNTER++, __MEDIKIT__: COUNTER++, __BANDAGE__: COUNTER++, __SODA__: COUNTER++, __MP5__: COUNTER++, __HEADSCARF__: COUNTER++, __CHAPKA__: COUNTER++, __WINTER_COAT__: COUNTER++, __GAZ_MASK__: COUNTER++, __GAZ_PROTECTION__: COUNTER++, __RADIATION_SUIT__: COUNTER++, __WOOD_ARROW__: COUNTER++, __CAMPFIRE_BBQ__: COUNTER++, __SMELTER__: COUNTER++, __WOOD_BIGDOOR__: COUNTER++, __STONE_BIGDOOR__: COUNTER++, __STEEL_BIGDOOR__: COUNTER++, __SULFUR__: COUNTER++, __SHAPED_URANIUM__: COUNTER++, __WORKBENCH2__: COUNTER++, __URANIUM__: COUNTER++, __WEAVING__: COUNTER++, __GASOLINE__: COUNTER++, __SULFUR_PICKAXE__: COUNTER++, __CHEST__: COUNTER++, __FRIDGE__: COUNTER++, __WOOD_FLOOR__: COUNTER++, __HAMMER__: COUNTER++, __SLEEPING_BAG__: COUNTER++, __REPAIR_HAMMER__: COUNTER++, __NAILS__: COUNTER++, __WOODLIGHT_FLOOR__: COUNTER++, __WOOD_SMALLWALL__: COUNTER++, __STONE_SMALLWALL__: COUNTER++, __STEEL_SMALLWALL__: COUNTER++, __TOMATO_SOUP__: COUNTER++, __SYRINGE__: COUNTER++, __CHEMICAL_COMPONENT__: COUNTER++, __RADAWAY__: COUNTER++, __SEED_TOMATO__: COUNTER++, __TOMATO__: COUNTER++, __ROTTEN_TOMATO__: COUNTER++, __CAN__: COUNTER++, __WOOD_CROSSBOW__: COUNTER++, __WOOD_CROSSARROW__: COUNTER++, __NAIL_GUN__: COUNTER++, __SAWED_OFF_SHOTGUN__: COUNTER++, __STONE_FLOOR__: COUNTER++, __TILING_FLOOR__: COUNTER++, __CRISPS__: COUNTER++, __ROTTEN_CRISPS__: COUNTER++, __ELECTRONICS__: COUNTER++, __JUNK__: COUNTER++, __WIRE__: COUNTER++, __ENERGY_CELLS__: COUNTER++, __LASER_PISTOL__: COUNTER++, __TESLA__: COUNTER++, __ALLOYS__: COUNTER++, __SULFUR_AXE__: COUNTER++, __LANDMINE__: COUNTER++, __DYNAMITE__: COUNTER++, __C4__: COUNTER++, __C4_TRIGGER__: COUNTER++, __COMPOST__: COUNTER++, __ARMOR_PHYSIC_1__: COUNTER++, __ARMOR_PHYSIC_2__: COUNTER++, __ARMOR_PHYSIC_3__: COUNTER++, __ARMOR_FIRE_1__: COUNTER++, __ARMOR_FIRE_2__: COUNTER++, __ARMOR_FIRE_3__: COUNTER++, __ARMOR_DEMINER__: COUNTER++, __ARMOR_TESLA_1__: COUNTER++, __ARMOR_TESLA_2__: COUNTER++, __WOOD_SPIKE__: COUNTER++, __LASER_SUBMACHINE__: COUNTER++, __GRENADE__: COUNTER++, __SUPER_HAMMER__: COUNTER++, __GHOUL_BLOOD__: COUNTER++, __CAMOUFLAGE_GEAR__: COUNTER++, __AGITATOR__: COUNTER++, __GHOUL_DRUG__: COUNTER++, __MUSHROOM1__: COUNTER++, __MUSHROOM2__: COUNTER++, __MUSHROOM3__: COUNTER++, __ROTTEN_MUSHROOM1__: COUNTER++, __ROTTEN_MUSHROOM2__: COUNTER++, __ROTTEN_MUSHROOM3__: COUNTER++, __LAPADONE__: COUNTER++, __LAPABOT_REPAIR__: COUNTER++, __SMALL_WIRE__: COUNTER++, __PUMPKIN__: COUNTER++, __ROTTEN_PUMPKIN__: COUNTER++, __SEED_GHOUL__: COUNTER++, __EXTRACTOR__: COUNTER++, __ANTIDOTE__: COUNTER++, __ANTIDOTE_FLOWER__: COUNTER++, __SEED_TREE__: COUNTER++, __ACORN__: COUNTER++, __ROTTEN_ACORN__: COUNTER++, __LASER_SNIPER__: COUNTER++, __HAL_BOT__: COUNTER++, __TESLA_BOT__: COUNTER++, __CABLE0__: COUNTER++, __CABLE1__: COUNTER++, __CABLE2__: COUNTER++, __CABLE3__: COUNTER++, __SWITCH__: COUNTER++, __GATE_OR__: COUNTER++, __GATE_AND__: COUNTER++, __GATE_NOT__: COUNTER++, __LAMP__: COUNTER++, __CABLE_WALL__: COUNTER++, __AUTOMATIC_DOOR__: COUNTER++, __PLATFORM__: COUNTER++, __STONE_CAVE__: COUNTER++, __BUNKER_WALL__: COUNTER++, __GOLD_FLOOR__: COUNTER++, __RED_FLOOR__: COUNTER++, __WELDING_MACHINE__: COUNTER++, __CABLE4__: COUNTER++, __GATE_TIMER__: COUNTER++, __GATE_XOR__: COUNTER++, __FEEDER__: COUNTER++ }; COUNTER = 0; var PARTICLESID = { __NOTHING__: COUNTER++, __WOOD__: COUNTER++, __STONE__: COUNTER++, __STEEL__: COUNTER++, __URANIUM__: COUNTER++, __SULFUR__: COUNTER++, __LEAF__: COUNTER++, __LEAFTREE__: COUNTER++, __ORANGE__: COUNTER++, __BLOOD__: COUNTER++, __FIRE__: COUNTER++, __FUR__: COUNTER++, __BED0__: COUNTER++, __BED1__: COUNTER++, __SOFA0__: COUNTER++, __SOFA1__: COUNTER++, __SOFA2__: COUNTER++, __TOILET__: COUNTER++, __WOODLIGHT__: COUNTER++, __SAFE0__: COUNTER++, __GARBAGE0__: COUNTER++, __FRIDGE__: COUNTER++, __PLOT__: COUNTER++, __BARELRED__: COUNTER++, __BARELGREEN__: COUNTER++, __METAL__: COUNTER++, __TOMATO__: COUNTER++, __GREY_STEEL__: COUNTER++, __BLUE_STEEL__: COUNTER++, __RED_STEEL__: COUNTER++, __KAKI__: COUNTER++, __MUSHROOM1__: COUNTER++, __MUSHROOM2__: COUNTER++, __MUSHROOM3__: COUNTER++, __GOLD__: COUNTER++ }; var WAITADS = [{ src: "img/wait-ads-1.png", img: { isLoaded: 0 } }, { src: "img/wait-ads-2.png", img: { isLoaded: 0 } }, { src: "img/wait-ads-3.png", img: { isLoaded: 0 } }, { src: "img/wait-ads-4.png", img: { isLoaded: 0 } }, { src: "img/wait-ads-5.png", img: { isLoaded: 0 } }]; var PARTICLES = []; PARTICLES[PARTICLESID.__NOTHING__] = []; PARTICLES[PARTICLESID.__WOOD__] = [{ src: "img/day-particules-wood1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood5.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__STONE__] = [{ src: "img/day-particules-stone1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-stone2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-stone3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-stone4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-stone5.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__STEEL__] = [{ src: "img/day-particules-steel1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-steel2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-steel3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-steel4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-steel5.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__URANIUM__] = [{ src: "img/day-particules-uranium1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-uranium2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-uranium3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-uranium4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-uranium5.png", img: { isLoaded: 0 } }, { src: "img/day-particules-uranium6.png", img: { isLoaded: 0 } }, { src: "img/day-particules-uranium7.png", img: { isLoaded: 0 } }, { src: "img/day-particules-uranium8.png", img: { isLoaded: 0 } }, { src: "img/day-particules-uranium9.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__SULFUR__] = [{ src: "img/day-particules-sulfur1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sulfur2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sulfur3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sulfur4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sulfur5.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sulfur6.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sulfur7.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sulfur8.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sulfur9.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__LEAF__] = [{ src: "img/day-particules-leaf1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf5.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__LEAFTREE__] = [{ src: "img/day-particules-wood1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaftree1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaftree2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaftree3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaftree4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaftree5.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.flower] = [{ src: "img/day-particules-flower1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-flower2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-flower3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-flower4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-flower5.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__ORANGE__] = [{ src: "img/day-particules-leaf1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf5.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf6.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf7.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf8.png", img: { isLoaded: 0 } }, { src: "img/day-particules-leaf9.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__BLOOD__] = [{ src: "img/day-particules-blood1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-blood2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-blood3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-blood4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-blood5.png", img: { isLoaded: 0 } }]; var NVMWV = 380; PARTICLES[PARTICLESID.__FIRE__] = [{ src: "img/day-particules-fire1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fire2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fire3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fire4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fire5.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__FUR__] = [{ src: "img/day-particules-fur1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fur2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fur3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fur4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fur5.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__BED0__] = [{ src: "img/day-particules-bed0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-bed1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-bed2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-bed6.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood3.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__BED1__] = [{ src: "img/day-particules-bed3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-bed4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-bed5.png", img: { isLoaded: 0 } }, { src: "img/day-particules-bed6.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood3.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__SOFA0__] = [{ src: "img/day-particules-sofa0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__SOFA1__] = [{ src: "img/day-particules-sofa0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa5.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa6.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__SOFA2__] = [{ src: "img/day-particules-sofa0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa7.png", img: { isLoaded: 0 } }, { src: "img/day-particules-sofa8.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__TOILET__] = [{ src: "img/day-particules-toilet0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-toilet1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-toilet2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-toilet3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-toilet4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__WOODLIGHT__] = [{ src: "img/day-particules-woodlight0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-woodlight1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-woodlight2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-woodlight3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-woodlight4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__SAFE0__] = [{ src: "img/day-particules-safe0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-safe1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-safe2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-safe3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-safe4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__GARBAGE0__] = [{ src: "img/day-particules-garbage0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-garbage1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-garbage2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-garbage3.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__FRIDGE__] = [{ src: "img/day-particules-fridge0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fridge1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fridge2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fridge3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-fridge4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__PLOT__] = [{ src: "img/day-particules-plot0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-plot1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-plot2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-plot3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-wood3.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__BARELRED__] = [{ src: "img/day-particules-barel0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-barel1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-barel2.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__BARELGREEN__] = [{ src: "img/day-particules-barel3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-barel4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-barel5.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__METAL__] = [{ src: "img/day-particules-metal0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-metal1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-metal2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-metal3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-metal4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__TOMATO__] = [{ src: "img/day-particules-tomato0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-tomato1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-tomato2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-tomato3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-tomato4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__BLUE_STEEL__] = [{ src: "img/day-particules-blue-steel0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-blue-steel1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-blue-steel2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-blue-steel3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-blue-steel4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__GREY_STEEL__] = [{ src: "img/day-particules-grey-steel0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-grey-steel1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-grey-steel2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-grey-steel3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-grey-steel4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__RED_STEEL__] = [{ src: "img/day-particules-red-steel0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-red-steel1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-red-steel2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-red-steel3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-red-steel4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__KAKI__] = [{ src: "img/day-particules-kaki0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-kaki1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-kaki2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-kaki3.png", img: { isLoaded: 0 } }, { src: "img/day-particules-kaki4.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__MUSHROOM1__] = [{ src: "img/day-particules-mushroom4.png", img: { isLoaded: 0 } }, { src: "img/day-particules-mushroom5.png", img: { isLoaded: 0 } }, { src: "img/day-particules-mushroom6.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__MUSHROOM2__] = [{ src: "img/day-particules-mushroom1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-mushroom2.png", img: { isLoaded: 0 } }, { src: "img/day-particules-mushroom3.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__MUSHROOM3__] = [{ src: "img/day-particules-mushroom7.png", img: { isLoaded: 0 } }, { src: "img/day-particules-mushroom8.png", img: { isLoaded: 0 } }, { src: "img/day-particules-mushroom9.png", img: { isLoaded: 0 } }]; PARTICLES[PARTICLESID.__GOLD__] = [{ src: "img/day-particules-gold0.png", img: { isLoaded: 0 } }, { src: "img/day-particules-gold1.png", img: { isLoaded: 0 } }, { src: "img/day-particules-gold2.png", img: { isLoaded: 0 } }]; function Detail(_name, _description, category, recipe, mm, area, level, previous, price) { this.name = _name; this.description = _description; if (recipe !== window.undefined) this.recipe = recipe; if (mm !== window.undefined) this.stack = mm; if (area !== window.undefined) { this.area = []; this.timer = []; for (var i = 0; i < area.length; i++) { this.area[i] = area[i][0]; this.timer[i] = area[i][1]; } } if (category !== window.undefined) this.category = category; else this.category = -1; if (level !== window.undefined) this.level = level; else this.level = -1; if (previous !== window.undefined) this.previous = previous; else this.previous = -1; if (price !== window.undefined) this.price = price; else this.price = 1; }; var INVENTORY = [{ src: [], img: [] }, { id: IID.__WOOD__, itemButton: { src: ["img/inv-wood-out.png", "img/inv-wood-in.png", "img/inv-wood-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wood", "Found in trees, or on the ground."), stack: 255, loot: LOOTID.__BIG_WOOD__, score: 10 }, { id: IID.__STONE__, itemButton: { src: ["img/inv-stone-out.png", "img/inv-stone-in.png", "img/inv-stone-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Stone", "Find it on the ground or on the rock.", SKILLS.__MINERAL__, [], 0, [ [AREAS.__EXTRACTOR__, 80000] ]), craftStart: 50, craftRng: 200, stack: 255, loot: LOOTID.__BIG_STONE__, score: 14 }, { id: IID.__STEEL__, itemButton: { src: ["img/inv-steel-out.png", "img/inv-steel-in.png", "img/inv-steel-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Iron", "Melt it on a Firepit or a Smelter", SKILLS.__MINERAL__, [], 0, [ [AREAS.__EXTRACTOR__, 120000] ]), craftStart: 4, craftRng: 8, stack: 255, loot: LOOTID.__STEEL__, score: 28 }, { id: IID.__ANIMAL_FAT__, itemButton: { src: ["img/inv-animal-fat-out.png", "img/inv-animal-fat-in.png", "img/inv-animal-fat-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Animal Fat", "Useful to craft bullet and clothes"), stack: 255, loot: LOOTID.__ANIMAL_FAT__, score: 32 }, { id: IID.__ANIMAL_TENDON__, itemButton: { src: ["img/inv-animal-tendon-out.png", "img/inv-animal-tendon-in.png", "img/inv-animal-tendon-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Animal Tendon", "Useful to make string"), stack: 255, loot: LOOTID.__ANIMAL_TENDON__, score: 100 }, { id: IID.__STRING__, itemButton: { src: ["img/inv-string-out.png", "img/inv-string-in.png", "img/inv-string-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("String", "Useful to craft many INVENTORY.", SKILLS.__SURVIVAL__, [ [IID.__ANIMAL_TENDON__, 2] ], 1, [ [AREAS.__WORKBENCH__, 20000] ]), stack: 255, loot: LOOTID.__STRING__ }, { id: IID.__LEATHER_BOAR__, itemButton: { src: ["img/inv-leather-boar-out.png", "img/inv-leather-boar-in.png", "img/inv-leather-boar-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Leather", "Useful to make clothes"), stack: 255, loot: LOOTID.__LEATHER_BOAR__, score: 32 }, { id: IID.__SHAPED_METAL__, itemButton: { src: ["img/inv-shaped-metal-out.png", "img/inv-shaped-metal-in.png", "img/inv-shaped-metal-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Shaped Metal", "To craft improved INVENTORY.", SKILLS.__MINERAL__, [ [IID.__STEEL__, 2] ], 1, [ [AREAS.__SMELTER__, 3000], [AREAS.__BBQ__, 30000] ]), stack: 255, loot: LOOTID.__SHAPED_METAL__ }, { id: IID.__RAW_STEAK__, itemButton: { src: ["img/inv-raw-steak-out.png", "img/inv-raw-steak-in.png", "img/inv-raw-steak-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Raw Steak", "#Vegan"), stack: 10, loot: LOOTID.__RAW_STEAK__, perish: 15, perishId: IID.__ROTTEN_STEAK__, idWeapon: 12, wait: 5, score: 28 }, { id: IID.__COOKED_STEAK__, itemButton: { src: ["img/inv-cooked-steak-out.png", "img/inv-cooked-steak-in.png", "img/inv-cooked-steak-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Cooked Steak", "Rare or medium?", SKILLS.__SURVIVAL__, [ [IID.__RAW_STEAK__, 1] ], 1, [ [AREAS.__FIRE__, 20000], [AREAS.__BBQ__, 10000] ]), stack: 10, loot: LOOTID.__COOKED_STEAK__, wait: 5, perish: 3, perishId: IID.__ROTTEN_STEAK__, idWeapon: 13 }, { id: IID.__ROTTEN_STEAK__, itemButton: { src: ["img/inv-rotten-steak-out.png", "img/inv-rotten-steak-in.png", "img/inv-rotten-steak-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, stack: 10, loot: LOOTID.__ROTTEN_STEAK__, wait: 5, idWeapon: 14, detail: new Detail("Rotten Steak", "Don't eat that."), score: 20 }, { id: IID.__ORANGE__, itemButton: { src: ["img/inv-orange-out.png", "img/inv-orange-in.png", "img/inv-orange-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Orange", "A little hungry?"), stack: 20, loot: LOOTID.__ORANGE__, wait: 5, perish: 10, perishId: IID.__ROTTEN_ORANGE__, idWeapon: 15, score: 24 }, { id: IID.__ROTTEN_ORANGE__, itemButton: { src: ["img/inv-rotten-orange-out.png", "img/inv-rotten-orange-in.png", "img/inv-rotten-orange-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Rotten Orange", "Go on, have a bite!", SKILLS.__PLANT__, [ [IID.__ORANGE__, 4] ], 8, [ [AREAS.__COMPOST__, 40000] ]), stack: 20, loot: LOOTID.__ROTTEN_ORANGE__, wait: 5, idWeapon: 16, score: 20 }, { id: IID.__SEED_ORANGE__, itemButton: { src: ["img/inv-orange-seed-out.png", "img/inv-orange-seed-in.png", "img/inv-orange-seed-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Orange Seed", "Fill up on Vitame C?", SKILLS.__PLANT__, [ [IID.__ORANGE__, 4] ], 1, [ [AREAS.__FIRE__, 20000], [AREAS.__BBQ__, 15000] ]), stack: 40, loot: LOOTID.__SEED_ORANGE__, fruit: LOOTID.__ORANGE__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [30, 30, 30, 30], height: [30, 30, 30, 30], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [35, 35, 35, 35], _y: [35, 35, 35, 35], blueprint: { src: "img/day-clear-blue-plant2-orange.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-plant2-orange.png", img: { isLoaded: 0 } }, door: 0, explosion: 0, behavior: BEHAVIOR.__SEED__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.orangeSeed, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, building: [{ src: "img/day-plant0-orange.png", img: { isLoaded: 0 } }, { src: "img/day-plant1-orange.png", img: { isLoaded: 0 } }, { src: "img/day-plant2-orange.png", img: { isLoaded: 0 } }, { src: "img/day-plant3-orange.png", img: { isLoaded: 0 } }, { src: "img/day-plant4-orange.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__ORANGE__, particlesDist: 68, timelife: ((5 * 8) * 60) * 1000, life: 250, score: 0 }, { id: IID.__HACHET__, itemButton: { src: ["img/inv-hachet-out.png", "img/inv-hachet-in.png", "img/inv-hachet-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Hatchet", "Harvest Wood and Stone.", SKILLS.__TOOL__, [ [IID.__WOOD__, 10], [IID.__STONE__, 2] ], 1, [ [AREAS.__PLAYER__, 5000], [AREAS.__WORKBENCH__, 10000] ]), idWeapon: 3, stack: 1, loot: LOOTID.__HACHET__, wait: 10 }, { id: IID.__STONE_PICKAXE__, itemButton: { src: ["img/inv-stone-pickaxe-out.png", "img/inv-stone-pickaxe-in.png", "img/inv-stone-pickaxe-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Stone Pickaxe", "Mine Stone and Iron.", SKILLS.__TOOL__, [ [IID.__WOOD__, 100], [IID.__STONE__, 30] ], 1, [ [AREAS.__WORKBENCH__, 30000] ]), idWeapon: 1, stack: 1, loot: LOOTID.__STONE_PICKAXE__, wait: 10 }, { id: IID.__STEEL_PICKAXE__, itemButton: { src: ["img/inv-steel-pickaxe-out.png", "img/inv-steel-pickaxe-in.png", "img/inv-steel-pickaxe-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Metal Pickaxe", "Mine also Sulfur", SKILLS.__TOOL__, [ [IID.__STONE__, 150], [IID.__SHAPED_METAL__, 6] ], 1, [ [AREAS.__WORKBENCH2__, 60000] ], 6), idWeapon: 2, stack: 1, loot: LOOTID.__STEEL_PICKAXE__, wait: 10 }, { id: IID.__STONE_AXE__, itemButton: { src: ["img/inv-stone-axe-out.png", "img/inv-stone-axe-in.png", "img/inv-stone-axe-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Metal Axe", "Harvest a lot of Wood", SKILLS.__TOOL__, [ [IID.__WOOD__, 150], [IID.__SHAPED_METAL__, 7] ], 1, [ [AREAS.__WORKBENCH2__, 80000] ], 5), idWeapon: 4, stack: 1, loot: LOOTID.__STONE_AXE__, wait: 10 }, { id: IID.__WORKBENCH__, itemButton: { src: ["img/inv-workbench-out.png", "img/inv-workbench-in.png", "img/inv-workbench-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Workbench", "Allow you to make new INVENTORY.", SKILLS.__SURVIVAL__, [ [IID.__WOOD__, 40], [IID.__STONE__, 20] ], 1, [ [AREAS.__PLAYER__, 15000], [AREAS.__WORKBENCH__, 15000] ]), idWeapon: 21, fuel: -1, zid: 0, z: 1, area: AREAS.__WORKBENCH__, stack: 255, loot: LOOTID.__WORKBENCH__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-workbench.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-workbench.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.workbench, packetId: 16, interact: { src: "img/e-workbench.png", img: { isLoaded: 0 } }, impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: { src: "img/day-workbench.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__WOOD__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__WOOD_SPEAR__, itemButton: { src: ["img/inv-wood-spear-out.png", "img/inv-wood-spear-in.png", "img/inv-wood-spear-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wood Spear", "Don't forget to pick it up.", SKILLS.__WEAPON__, [ [IID.__WOOD__, 70] ], 1, [ [AREAS.__PLAYER__, 15000], [AREAS.__WORKBENCH__, 20000] ]), idWeapon: 5, stack: 1, loot: LOOTID.__WOOD_SPEAR__, wait: 10 }, { id: IID.__WOOD_BOW__, itemButton: { src: ["img/inv-wood-bow-out.png", "img/inv-wood-bow-in.png", "img/inv-wood-bow-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wood Bow", "Where are the cowboys?", SKILLS.__WEAPON__, [ [IID.__WOOD__, 60], [IID.__ANIMAL_TENDON__, 2] ], 1, [ [AREAS.__PLAYER__, 35000], [AREAS.__WORKBENCH__, 50000] ]), bullet: IID.__WOOD_ARROW__, mMVwm: 1, idWeapon: 6, stack: 1, loot: LOOTID.__WOOD_BOW__, wait: 10 }, { id: IID.__9MM__, itemButton: { src: ["img/inv-9mm-out.png", "img/inv-9mm-in.png", "img/inv-9mm-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("9MM", "I hope you know how to aim.", SKILLS.__WEAPON__, [ [IID.__JUNK__, 6], [IID.__SHAPED_METAL__, 9] ], 1, [ [AREAS.__WORKBENCH2__, 160000] ], 7), idWeapon: 8, bullet: IID.__BULLET_9MM__, stack: 1, loot: LOOTID.__9MM__, wait: 10 }, { id: IID.__DESERT_EAGLE__, itemButton: { src: ["img/inv-desert-eagle-out.png", "img/inv-desert-eagle-in.png", "img/inv-desert-eagle-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Desert Eagle", "Pretty useful for self-defense.", SKILLS.__WEAPON__, [ [IID.__ALLOYS__, 4], [IID.__SHAPED_METAL__, 2] ], 1, [ [AREAS.__WORKBENCH2__, 180000] ], 9, IID.__9MM__), idWeapon: 9, bullet: IID.__BULLET_9MM__, stack: 1, loot: LOOTID.__DESERT_EAGLE__, wait: 10 }, { id: IID.__SHOTGUN__, itemButton: { src: ["img/inv-shotgun-out.png", "img/inv-shotgun-in.png", "img/inv-shotgun-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Shotgun", "He's dead now, don't you think?", SKILLS.__WEAPON__, [ [IID.__ALLOYS__, 6], [IID.__SHAPED_METAL__, 6] ], 1, [ [AREAS.__WORKBENCH2__, 200000] ], 11), idWeapon: 7, bullet: IID.__BULLET_SHOTGUN__, stack: 1, loot: LOOTID.__SHOTGUN__, wait: 10 }, { id: IID.__AK47__, itemButton: { src: ["img/inv-ak47-out.png", "img/inv-ak47-in.png", "img/inv-ak47-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("AK47", "Revolution time", SKILLS.__WEAPON__, [ [IID.__ALLOYS__, 14], [IID.__SHAPED_METAL__, 8] ], 1, [ [AREAS.__WORKBENCH2__, 180000] ], 12, IID.__MP5__), idWeapon: 10, bullet: IID.__BULLET_SNIPER__, stack: 1, loot: LOOTID.__AK47__, wait: 10 }, { id: IID.__SNIPER__, itemButton: { src: ["img/inv-sniper-out.png", "img/inv-sniper-in.png", "img/inv-sniper-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Sniper", "For the very angry shy", SKILLS.__WEAPON__, [ [IID.__ALLOYS__, 10], [IID.__SHAPED_METAL__, 8] ], 1, [ [AREAS.__WORKBENCH2__, 180000] ], 13), idWeapon: 11, bullet: IID.__BULLET_SNIPER__, stack: 1, loot: LOOTID.__SNIPER__, wait: 10 }, { id: IID.__WOOD_WALL__, itemButton: { src: ["img/inv-wood-wall-out.png", "img/inv-wood-wall-in.png", "img/inv-wood-wall-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wooden Wall", "Protected from the wind.", SKILLS.__BUILDING__, [ [IID.__WOOD__, 20] ], 1, [ [AREAS.__WORKBENCH__, 10000] ]), idWeapon: 21, fuel: -1, zid: 1, z: 1, stack: 255, loot: LOOTID.__WOOD_WALL__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-wood-wall.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-wood-wall.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__WOOD_WALL__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.wall, drawFloor: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], broken: [{ src: "img/day-wood-wall-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: [{ src: "img/day-wood-wall0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall2.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall3.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall4.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall5.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall6.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall7.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall8.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall9.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall10.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall11.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall12.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall13.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall14.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall15.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall16.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall17.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall18.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall19.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall20.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall21.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall22.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall23.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall24.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall25.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall26.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall27.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall28.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall29.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall30.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall31.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall32.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall33.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall34.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall35.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall36.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall37.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall38.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall39.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall40.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall41.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall42.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall43.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall44.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall45.png", img: { isLoaded: 0 } }, { src: "img/day-wood-wall46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__WOOD__, particlesDist: 80, timelife: 315360000000, life: 3000, score: 0 }, { id: IID.__STONE_WALL__, itemButton: { src: ["img/inv-stone-wall-out.png", "img/inv-stone-wall-in.png", "img/inv-stone-wall-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Stone Wall", "Saved the 3 little pigs.", SKILLS.__BUILDING__, [ [IID.__STONE__, 20] ], 1, [ [AREAS.__WORKBENCH__, 15000] ], 3), idWeapon: 21, fuel: -1, zid: 1, z: 1, stack: 255, loot: LOOTID.__STONE_WALL__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-wall.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-wall.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__STONE_WALL__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.wall, drawFloor: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], broken: [{ src: "img/day-stone-wall-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STONE_IMPACT__, destroy: SOUNDID.__STONE_DESTROY__, building: [{ src: "img/day-stone-wall0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall2.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall3.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall4.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall5.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall6.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall7.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall8.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall9.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall10.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall11.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall12.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall13.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall14.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall15.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall16.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall17.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall18.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall19.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall20.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall21.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall22.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall23.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall24.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall25.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall26.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall27.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall28.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall29.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall30.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall31.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall32.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall33.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall34.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall35.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall36.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall37.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall38.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall39.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall40.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall41.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall42.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall43.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall44.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall45.png", img: { isLoaded: 0 } }, { src: "img/day-stone-wall46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__STONE__, particlesDist: 80, timelife: 315360000000, life: 7000, score: 0 }, { id: IID.__STEEL_WALL__, itemButton: { src: ["img/inv-steel-wall-out.png", "img/inv-steel-wall-in.png", "img/inv-steel-wall-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Metal Wall", "Afraid we'll find you?", SKILLS.__BUILDING__, [ [IID.__SHAPED_METAL__, 3] ], 1, [ [AREAS.__WORKBENCH2__, 20000] ], 6, IID.__STONE_WALL__), idWeapon: 21, fuel: -1, zid: 1, z: 1, stack: 255, loot: LOOTID.__STEEL_WALL__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-wall.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-wall.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__STEEL_WALL__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.wall, drawFloor: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], broken: [{ src: "img/day-steel-wall-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-steel-wall0.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall1.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall2.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall3.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall4.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall5.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall6.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall7.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall8.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall9.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall10.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall11.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall12.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall13.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall14.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall15.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall16.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall17.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall18.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall19.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall20.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall21.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall22.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall23.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall24.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall25.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall26.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall27.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall28.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall29.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall30.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall31.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall32.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall33.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall34.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall35.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall36.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall37.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall38.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall39.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall40.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall41.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall42.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall43.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall44.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall45.png", img: { isLoaded: 0 } }, { src: "img/day-steel-wall46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__STEEL__, particlesDist: 80, timelife: 315360000000, life: 15000, score: 0 }, { id: IID.__WOOD_DOOR__, itemButton: { src: ["img/inv-wood-door-out.png", "img/inv-wood-door-in.png", "img/inv-wood-door-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wooden Low Door", "You can shoot through it.", SKILLS.__BUILDING__, [ [IID.__WOOD__, 40] ], 1, [ [AREAS.__WORKBENCH__, 15000] ]), idWeapon: 21, fuel: -1, zid: 0, z: 0, stack: 255, loot: LOOTID.__WOOD_DOOR__, wait: 10, delay: 600, width: [100, 35, 100, 35], height: [35, 100, 35, 100], xCenter: [0, -30, 0, 30], yCenter: [30, 0, -30, 0], _x: [0, 0, 0, 65], _y: [65, 0, 0, 0], blueprint: { src: "img/day-clear-blue-wood-door.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-wood-door.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 1, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI / 2, iMove: [1, 0, -1, 0], jMove: [0, -1, 0, 1], xMove: [0, 0, 65, 0], yMove: [0, 0, 0, 65], wMove: [35, 100, 35, 100], hMove: [100, 35, 100, 35], xRotate: 6, yRotate: 46, draw: Render.door, packetId: 15, interact: { src: "img/e-opendoor.png", img: { isLoaded: 0 } }, interactclose: { src: "img/e-closedoor.png", img: { isLoaded: 0 } }, broken: [{ src: "img/day-wood-door-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-door-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-door-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: { src: "img/day-wood-door.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__WOOD__, particlesDist: 55, timelife: 315360000000, life: 2000, score: 0 }, { id: IID.__STONE_DOOR__, itemButton: { src: ["img/inv-stone-door-out.png", "img/inv-stone-door-in.png", "img/inv-stone-door-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Stone Low Door", "You can shoot through it.", SKILLS.__BUILDING__, [ [IID.__STONE__, 40] ], 1, [ [AREAS.__WORKBENCH__, 15000] ], 3), idWeapon: 21, fuel: -1, zid: 0, z: 0, stack: 255, loot: LOOTID.__STONE_DOOR__, wait: 10, delay: 600, width: [100, 35, 100, 35], height: [35, 100, 35, 100], xCenter: [0, -30, 0, 30], yCenter: [30, 0, -30, 0], _x: [0, 0, 0, 65], _y: [65, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-door.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-door.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 1, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI / 2, iMove: [1, 0, -1, 0], jMove: [0, -1, 0, 1], xMove: [0, 0, 65, 0], yMove: [0, 0, 0, 65], wMove: [35, 100, 35, 100], hMove: [100, 35, 100, 35], xRotate: 6, yRotate: 46, draw: Render.door, packetId: 15, interact: { src: "img/e-opendoor.png", img: { isLoaded: 0 } }, interactclose: { src: "img/e-closedoor.png", img: { isLoaded: 0 } }, broken: [{ src: "img/day-stone-door-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-door-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-door-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STONE_IMPACT__, destroy: SOUNDID.__STONE_DESTROY__, building: { src: "img/day-stone-door.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__STONE__, particlesDist: 55, timelife: 315360000000, life: 5000, score: 0 }, { id: IID.__STEEL_DOOR__, itemButton: { src: ["img/inv-steel-door-out.png", "img/inv-steel-door-in.png", "img/inv-steel-door-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Metal Low Door", "Killing at home, for more comfort.", SKILLS.__BUILDING__, [ [IID.__SHAPED_METAL__, 6] ], 1, [ [AREAS.__WORKBENCH2__, 30000] ], 6, IID.__STONE_DOOR__), idWeapon: 21, fuel: -1, zid: 0, z: 0, stack: 255, loot: LOOTID.__STEEL_DOOR__, wait: 10, delay: 600, width: [100, 35, 100, 35], height: [35, 100, 35, 100], xCenter: [0, -30, 0, 30], yCenter: [30, 0, -30, 0], _x: [0, 0, 0, 65], _y: [65, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-door.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-door.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 1, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI / 2, iMove: [1, 0, -1, 0], jMove: [0, -1, 0, 1], xMove: [0, 0, 65, 0], yMove: [0, 0, 0, 65], wMove: [35, 100, 35, 100], hMove: [100, 35, 100, 35], xRotate: 6, yRotate: 46, draw: Render.door, packetId: 15, interact: { src: "img/e-opendoor.png", img: { isLoaded: 0 } }, interactclose: { src: "img/e-closedoor.png", img: { isLoaded: 0 } }, broken: [{ src: "img/day-steel-door-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-steel-door-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-steel-door-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-steel-door.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__STEEL__, particlesDist: 55, timelife: 315360000000, life: 10000, score: 0 }, { id: IID.__CAMPFIRE__, itemButton: { src: ["img/inv-campfire-out.png", "img/inv-campfire-in.png", "img/inv-campfire-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Campfire", "Warm you when you're cold.", SKILLS.__SURVIVAL__, [ [IID.__WOOD__, 30], [IID.__STONE__, 5] ], 1, [ [AREAS.__PLAYER__, 8000], [AREAS.__WORKBENCH__, 15000] ]), idWeapon: 21, fuel: 15000, zid: -1, z: 0, area: AREAS.__FIRE__, stack: 255, loot: LOOTID.__CAMPFIRE__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-campfire.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-campfire.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: __WARM__, draw: Render.campfire, drawTop: Render.campfireLight, packetId: 16, interact: { src: "img/e-campfire.png", img: { isLoaded: 0 } }, impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: { src: "img/day-campfire.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__WOOD__, particlesDist: 80, timelife: (1000 * 60) * 10, life: 150, score: 0 }, { id: IID.__BULLET_9MM__, itemButton: { src: ["img/inv-bullet-9mm-out.png", "img/inv-bullet-9mm-in.png", "img/inv-bullet-9mm-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Bullet", "For 9MM, Desert Eagle, and MP5 ", SKILLS.__WEAPON__, [ [IID.__SULFUR__, 3], [IID.__SHAPED_METAL__, 3], [IID.__ANIMAL_FAT__, 3] ], 30, [ [AREAS.__WORKBENCH2__, 10000] ], 6), stack: 255, loot: LOOTID.__BULLET_9MM__ }, { id: IID.__BULLET_SHOTGUN__, itemButton: { src: ["img/inv-bullet-shotgun-out.png", "img/inv-bullet-shotgun-in.png", "img/inv-bullet-shotgun-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Cartridge", "For Shotgun", SKILLS.__WEAPON__, [ [IID.__ALLOYS__, 1], [IID.__SHAPED_METAL__, 4], [IID.__ANIMAL_FAT__, 4] ], 15, [ [AREAS.__WORKBENCH2__, 10000] ], 10), stack: 255, loot: LOOTID.__BULLET_SHOTGUN__ }, { id: IID.__BULLET_SNIPER__, itemButton: { src: ["img/inv-bullet-sniper-out.png", "img/inv-bullet-sniper-in.png", "img/inv-bullet-sniper-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Heavy Bullet", "For Sniper, and AK47", SKILLS.__WEAPON__, [ [IID.__ALLOYS__, 1], [IID.__SHAPED_METAL__, 4], [IID.__ANIMAL_FAT__, 4] ], 30, [ [AREAS.__WORKBENCH2__, 10000] ], 11), stack: 255, loot: LOOTID.__BULLET_SNIPER__ }, { id: IID.__MEDIKIT__, itemButton: { src: ["img/inv-medikit-out.png", "img/inv-medikit-in.png", "img/inv-medikit-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Medkit", "Regenerate your life.", SKILLS.__DRUG__, [ [IID.__STRING__, 2], [IID.__BANDAGE__, 1], [IID.__LEATHER_BOAR__, 2], [IID.__SHAPED_METAL__, 2] ], 1, [ [AREAS.__WORKBENCH2__, 80000] ], 10), idWeapon: 17, stack: 2, loot: LOOTID.__MEDIKIT__, wait: 10 }, { id: IID.__BANDAGE__, itemButton: { src: ["img/inv-bandage-out.png", "img/inv-bandage-in.png", "img/inv-bandage-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Bandage", "To heal the boo-boos.", SKILLS.__DRUG__, [ [IID.__STRING__, 1], [IID.__LEATHER_BOAR__, 2] ], 1, [ [AREAS.__WEAVING__, 20000] ]), idWeapon: 18, stack: 5, loot: LOOTID.__BANDAGE__, wait: 10 }, { id: IID.__SODA__, itemButton: { src: ["img/inv-soda-out.png", "img/inv-soda-in.png", "img/inv-soda-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Soda", "Give energy.", SKILLS.__SURVIVAL__, [ [IID.__GHOUL_BLOOD__, 1], [IID.__CHEMICAL_COMPONENT__, 1], [IID.__CAN__, 1] ], 1, [ [AREAS.__FIRE__, 40000], [AREAS.__BBQ__, 40000] ], 5), idWeapon: 19, stack: 5, loot: LOOTID.__SODA__, perish: 2, perishId: IID.__CAN__, wait: 10 }, { id: IID.__MP5__, itemButton: { src: ["img/inv-MP5-out.png", "img/inv-MP5-in.png", "img/inv-MP5-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("MP5", "Not bad.", SKILLS.__WEAPON__, [ [IID.__ALLOYS__, 6], [IID.__SHAPED_METAL__, 6] ], 1, [ [AREAS.__WORKBENCH2__, 200000] ], 10), idWeapon: 20, bullet: IID.__BULLET_9MM__, stack: 1, loot: LOOTID.__MP5__, wait: 10 }, { id: IID.__HEADSCARF__, itemButton: { src: ["img/inv-headscarf-out.png", "img/inv-headscarf-in.png", "img/inv-headscarf-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Headscarf", "Warm you up.", SKILLS.__CLOTHE__, [ [IID.__STRING__, 1], [IID.__LEATHER_BOAR__, 1] ], 1, [ [AREAS.__WEAVING__, 60000] ]), idClothe: 1, stack: 1, loot: LOOTID.__HEADSCARF__, wait: 10, warm: 0.00085, def: 0, bul: 0, ene: 0, boom: 0, rad: 0, speed: 0 }, { id: IID.__CHAPKA__, itemButton: { src: ["img/inv-chapka-out.png", "img/inv-chapka-in.png", "img/inv-chapka-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Chapka", "You look like a real woodcutter.", SKILLS.__CLOTHE__, [ [IID.__STRING__, 6], [IID.__LEATHER_BOAR__, 8], [IID.__HEADSCARF__, 1] ], 1, [ [AREAS.__WEAVING__, 120000] ], 7), idClothe: 2, stack: 1, loot: LOOTID.__CHAPKA__, wait: 10, warm: 0.0017, def: 0, bul: 0, ene: 0, boom: 0, rad: 0, speed: 0 }, { id: IID.__WINTER_COAT__, itemButton: { src: ["img/inv-coat-out.png", "img/inv-coat-in.png", "img/inv-coat-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Winter Coat", "Is the weather really that cold?", SKILLS.__CLOTHE__, [ [IID.__STRING__, 15], [IID.__LEATHER_BOAR__, 20], [IID.__CHAPKA__, 1] ], 1, [ [AREAS.__WEAVING__, 180000] ], 9, IID.__CHAPKA__), idClothe: 3, stack: 1, loot: LOOTID.__WINTER_COAT__, wait: 10, warm: 0.0026, def: 0, bul: 0, ene: 0, boom: 0, rad: 0, speed: 0 }, { id: IID.__GAZ_MASK__, itemButton: { src: ["img/inv-gaz-mask-out.png", "img/inv-gaz-mask-in.png", "img/inv-gaz-mask-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Radiation Mask", "Protect you from Radioactivity.", SKILLS.__CLOTHE__, [ [IID.__SHAPED_METAL__, 1], [IID.__STRING__, 1], [IID.__LEATHER_BOAR__, 2] ], 1, [ [AREAS.__WEAVING__, 60000] ]), idClothe: 4, stack: 1, loot: LOOTID.__GAZ_MASK__, wait: 10, warm: 0, def: 0, bul: 0, ene: 0, boom: 0, rad: 0.009, speed: 0 }, { id: IID.__GAZ_PROTECTION__, itemButton: { src: ["img/inv-gaz-protection-out.png", "img/inv-gaz-protection-in.png", "img/inv-gaz-protection-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Min. Radiation Suit", "Previously, on Breaking Bad.", SKILLS.__CLOTHE__, [ [IID.__ALLOYS__, 2], [IID.__SHAPED_METAL__, 2], [IID.__STRING__, 4], [IID.__LEATHER_BOAR__, 4], [IID.__GAZ_MASK__, 1] ], 1, [ [AREAS.__WEAVING__, 90000] ], 8), idClothe: 5, stack: 1, loot: LOOTID.__GAZ_PROTECTION__, wait: 10, warm: 0.0006, def: 0, bul: 0, ene: 0, boom: 0, rad: 0.016, speed: 0 }, { id: IID.__RADIATION_SUIT__, itemButton: { src: ["img/inv-radiation-suit-out.png", "img/inv-radiation-suit-in.png", "img/inv-radiation-suit-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Radiation Suit", "Let's not grow a second head.", SKILLS.__CLOTHE__, [ [IID.__ALLOYS__, 6], [IID.__SHAPED_METAL__, 4], [IID.__STRING__, 8], [IID.__LEATHER_BOAR__, 20], [IID.__GAZ_PROTECTION__, 1] ], 1, [ [AREAS.__WEAVING__, 180000] ], 10, IID.__GAZ_PROTECTION__), idClothe: 6, stack: 1, loot: LOOTID.__RADIATION_SUIT__, wait: 10, warm: 0, def: 0, bul: 0, ene: 0, boom: 0, rad: 0.022, speed: -0.01 }, { id: IID.__WOOD_ARROW__, itemButton: { src: ["img/inv-wood-arrow-out.png", "img/inv-wood-arrow-in.png", "img/inv-wood-arrow-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wood Arrow", "Needed to use bow.", SKILLS.__WEAPON__, [ [IID.__WOOD__, 40] ], 5, [ [AREAS.__PLAYER__, 15000], [AREAS.__WORKBENCH__, 10000] ]), stack: 255, loot: LOOTID.__WOOD_ARROW__ }, { id: IID.__CAMPFIRE_BBQ__, itemButton: { src: ["img/inv-campfire-bbq-out.png", "img/inv-campfire-bbq-in.png", "img/inv-campfire-bbq-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Firepit", "Warm up and melt iron slowly.", SKILLS.__SURVIVAL__, [ [IID.__WOOD__, 120], [IID.__STONE__, 20], [IID.__STEEL__, 4] ], 1, [ [AREAS.__WORKBENCH__, 20000] ], 3), idWeapon: 21, fuel: 20000, zid: -1, z: 0, area: AREAS.__BBQ__, stack: 255, loot: LOOTID.__CAMPFIRE_BBQ__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-campfire-bbq.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-campfire-bbq.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: __WARM__, draw: Render.campfire, drawTop: Render.campfireLight, packetId: 16, interact: { src: "img/e-campfire-bbq.png", img: { isLoaded: 0 } }, impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: { src: "img/day-campfire-bbq.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__WOOD__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__SMELTER__, itemButton: { src: ["img/inv-smelter-out.png", "img/inv-smelter-in.png", "img/inv-smelter-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Smelter", "Melt iron, uranium and alloys", SKILLS.__SURVIVAL__, [ [IID.__SHAPED_METAL__, 6], [IID.__ELECTRONICS__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 100000] ], 10), idWeapon: 21, fuel: 42000, zid: 1, z: 1, area: AREAS.__SMELTER__, stack: 255, loot: LOOTID.__SMELTER__, wait: 10, delay: 1000, width: [100, 260, 100, 260], height: [260, 100, 260, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, -80, 0, -80], _y: [-80, 0, -80, 0], iTile: [-1, 0, -1, 0], jTile: [0, -1, 0, -1], blueprint: { src: "img/day-clear-blue-smelter.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-smelter.png", img: { isLoaded: 0 } }, xLight: [-20.5, -101.5, 20.5, 101.5], yLight: [101.5, -20.5, -101, 20.5], wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.smelter, packetId: 16, interact: { src: "img/e-smelter.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-smelter-off.png", img: { isLoaded: 0 } }, { src: "img/day-smelter-on.png", img: { isLoaded: 0 } }, { src: "img/day-smelter-light-up.png", img: { isLoaded: 0 } }, { src: "img/day-smelter-light-down.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 3000, score: 0 }, { id: IID.__WOOD_BIGDOOR__, itemButton: { src: ["img/inv-wood-door1-out.png", "img/inv-wood-door1-in.png", "img/inv-wood-door1-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wooden Door", "Let's hope it holds.", SKILLS.__BUILDING__, [ [IID.__WOOD__, 60] ], 1, [ [AREAS.__WORKBENCH__, 20000] ]), idWeapon: 21, fuel: -1, zid: 1, z: 1, stack: 255, loot: LOOTID.__WOOD_BIGDOOR__, wait: 10, delay: 600, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-wood-door1.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-wood-door1.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 1, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI, iMove: [1, -1, -1, 1], jMove: [-1, -1, 1, 1], xMove: [0, 0, 0, 0], yMove: [0, 0, 0, 0], wMove: [100, 100, 100, 100], hMove: [100, 100, 100, 100], xRotate: 17, yRotate: 113, draw: Render.door, packetId: 15, interact: { src: "img/e-opendoor.png", img: { isLoaded: 0 } }, interactclose: { src: "img/e-closedoor.png", img: { isLoaded: 0 } }, broken: [{ src: "img/day-wood-door1-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-door1-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-door1-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: { src: "img/day-wood-door1.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__WOOD__, particlesDist: 80, timelife: 315360000000, life: 2500, score: 0 }, { id: IID.__STONE_BIGDOOR__, itemButton: { src: ["img/inv-stone-door1-out.png", "img/inv-stone-door1-in.png", "img/inv-stone-door1-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Stone Door", "Not too heavy to open, I hope.", SKILLS.__BUILDING__, [ [IID.__STONE__, 60] ], 1, [ [AREAS.__WORKBENCH__, 20000] ], 3), idWeapon: 21, fuel: -1, zid: 1, z: 1, stack: 255, loot: LOOTID.__STONE_BIGDOOR__, wait: 10, delay: 600, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-door1.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-door1.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 1, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI, iMove: [1, -1, -1, 1], jMove: [-1, -1, 1, 1], xMove: [0, 0, 0, 0], yMove: [0, 0, 0, 0], wMove: [100, 100, 100, 100], hMove: [100, 100, 100, 100], xRotate: 17, yRotate: 113, draw: Render.door, packetId: 15, interact: { src: "img/e-opendoor.png", img: { isLoaded: 0 } }, interactclose: { src: "img/e-closedoor.png", img: { isLoaded: 0 } }, broken: [{ src: "img/day-stone-door1-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-door1-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-door1-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STONE_IMPACT__, destroy: SOUNDID.__STONE_DESTROY__, building: { src: "img/day-stone-door1.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__STONE__, particlesDist: 80, timelife: 315360000000, life: 6000, score: 0 }, { id: IID.__STEEL_BIGDOOR__, itemButton: { src: ["img/inv-steel-door1-out.png", "img/inv-steel-door1-in.png", "img/inv-steel-door1-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Metal Door", "I guess you're safe.", SKILLS.__BUILDING__, [ [IID.__SHAPED_METAL__, 9] ], 1, [ [AREAS.__WORKBENCH2__, 40000] ], 6, IID.__STONE_BIGDOOR__), idWeapon: 21, fuel: -1, zid: 1, z: 1, stack: 255, loot: LOOTID.__STEEL_BIGDOOR__, wait: 10, delay: 600, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-door1.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-door1.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 1, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI, iMove: [1, -1, -1, 1], jMove: [-1, -1, 1, 1], xMove: [0, 0, 0, 0], yMove: [0, 0, 0, 0], wMove: [100, 100, 100, 100], hMove: [100, 100, 100, 100], xRotate: 17, yRotate: 113, draw: Render.door, packetId: 15, interact: { src: "img/e-opendoor.png", img: { isLoaded: 0 } }, interactclose: { src: "img/e-closedoor.png", img: { isLoaded: 0 } }, broken: [{ src: "img/day-steel-door1-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-steel-door1-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-steel-door1-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-steel-door1.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__STEEL__, particlesDist: 80, timelife: 315360000000, life: 12500, score: 0 }, { id: IID.__SULFUR__, itemButton: { src: ["img/inv-sulfur-out.png", "img/inv-sulfur-in.png", "img/inv-sulfur-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Sulfur", "Sulfur in such a cold landscape?", SKILLS.__MINERAL__, [], 0, [ [AREAS.__EXTRACTOR__, 240000] ]), craftStart: 4, craftRng: 8, stack: 255, loot: LOOTID.__SULFUR__, score: 32 }, { id: IID.__SHAPED_URANIUM__, itemButton: { src: ["img/inv-shaped-uranium-out.png", "img/inv-shaped-uranium-in.png", "img/inv-shaped-uranium-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Shaped Uranium", "Are you out of your mind?", SKILLS.__MINERAL__, [ [IID.__URANIUM__, 1] ], 1, [ [AREAS.__SMELTER__, 20000] ]), stack: 255, loot: LOOTID.__SHAPED_URANIUM__, score: 0 }, { id: IID.__WORKBENCH2__, itemButton: { src: ["img/inv-workbench2-out.png", "img/inv-workbench2-in.png", "img/inv-workbench2-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Research Bench", "Allow you to make new INVENTORY", SKILLS.__SURVIVAL__, [ [IID.__SHAPED_METAL__, 6], [IID.__ELECTRONICS__, 1] ], 1, [ [AREAS.__WORKBENCH__, 50000] ], 6), idWeapon: 21, fuel: -1, zid: 0, z: 1, area: AREAS.__WORKBENCH2__, stack: 255, loot: LOOTID.__WORKBENCH2__, wait: 10, delay: 1000, width: [100, 290, 100, 280], height: [280, 100, 280, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, -90, 0, -90], _y: [-90, 0, -90, 0], iTile: [-1, 0, -1, 0], jTile: [0, -1, 0, -1], blueprint: { src: "img/day-clear-blue-workbench2.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-workbench2.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.workbench2, packetId: 16, interact: { src: "img/e-workbench2.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-workbench2.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 400, score: 0 }, { id: IID.__URANIUM__, itemButton: { src: ["img/inv-uranium-out.png", "img/inv-uranium-in.png", "img/inv-uranium-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Uranium", "Do you want to end up as Marie Curie?", SKILLS.__MINERAL__, [], 0, [ [AREAS.__EXTRACTOR__, 240000] ]), craftStart: 2, craftRng: 4, stack: 255, loot: LOOTID.__URANIUM__, score: 45 }, { id: IID.__WEAVING__, itemButton: { src: ["img/inv-weaving-machine-out.png", "img/inv-weaving-machine-in.png", "img/inv-weaving-machine-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Weaving Machine", "Allow you to sew clothes", SKILLS.__SURVIVAL__, [ [IID.__WOOD__, 80], [IID.__STONE__, 20], [IID.__STRING__, 2] ], 1, [ [AREAS.__WORKBENCH__, 60000] ]), idWeapon: 21, fuel: -1, zid: 0, z: 1, area: AREAS.__WEAVING__, stack: 255, loot: LOOTID.__WEAVING__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-weaving-machine.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-weaving-machine.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.workbench, packetId: 16, interact: { src: "img/e-weaving-machine.png", img: { isLoaded: 0 } }, impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: { src: "img/day-weaving-machine.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__WOOD__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__GASOLINE__, itemButton: { src: ["img/inv-gasoline-out.png", "img/inv-gasoline-in.png", "img/inv-gasoline-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Gasoline", "Fuel for Smelter", SKILLS.__SURVIVAL__, [ [IID.__ROTTEN_ORANGE__, 4], [IID.__SULFUR__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 20000] ]), stack: 255, loot: LOOTID.__GASOLINE__ }, { id: IID.__SULFUR_PICKAXE__, itemButton: { src: ["img/inv-sulfur-pickaxe-out.png", "img/inv-sulfur-pickaxe-in.png", "img/inv-sulfur-pickaxe-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Sulfur Pickaxe", "Mine also Uranium", SKILLS.__TOOL__, [ [IID.__ALLOYS__, 2], [IID.__SHAPED_METAL__, 6], [IID.__SULFUR__, 6] ], 1, [ [AREAS.__WORKBENCH2__, 90000] ], 9, IID.__STEEL_PICKAXE__), idWeapon: 22, stack: 1, loot: LOOTID.__SULFUR_PICKAXE__, wait: 10 }, { id: IID.__CHEST__, itemButton: { src: ["img/inv-chest-out.png", "img/inv-chest-in.png", "img/inv-chest-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wood chest", "You can't store food in.", SKILLS.__BUILDING__, [ [IID.__WOOD__, 50], [IID.__STONE__, 20] ], 1, [ [AREAS.__WORKBENCH__, 30000] ], 8), idWeapon: 21, fuel: -1, zid: 0, z: 0, stack: 255, loot: LOOTID.__CHEST__, wait: 10, chest: 1, delay: 600, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-chest.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-chest.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI / 2, draw: Render.workbench, packetId: 25, interact: { src: "img/e-chest.png", img: { isLoaded: 0 } }, impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: { src: "img/day-chest.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__WOOD__, particlesDist: 55, timelife: 315360000000, life: 300, score: 0 }, { id: IID.__FRIDGE__, itemButton: { src: ["img/inv-fridge-out.png", "img/inv-fridge-in.png", "img/inv-fridge-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Fridge", "Save your food.", SKILLS.__BUILDING__, [ [IID.__SHAPED_METAL__, 5], [IID.__ENERGY_CELLS__, 4] ], 1, [ [AREAS.__WORKBENCH2__, 90000] ], 9), idWeapon: 21, fuel: -1, zid: 0, z: 0, stack: 255, loot: LOOTID.__FRIDGE__, wait: 10, chest: 1, fridge: 1, delay: 600, width: [50, 100, 50, 100], height: [100, 50, 100, 50], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 50, 0], _y: [0, 0, 0, 50], blueprint: { src: "img/day-clear-blue-fridge.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-fridge.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI / 2, draw: Render.workbench, packetId: 25, interact: { src: "img/e-fridge.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-fridge.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 55, timelife: 315360000000, life: 300, score: 0 }, { id: IID.__WOOD_FLOOR__, itemButton: { src: ["img/inv-wood-floor-out.png", "img/inv-wood-floor-in.png", "img/inv-wood-floor-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wood floor", "Players can't spawn on it", SKILLS.__BUILDING__, [ [IID.__WOOD__, 15] ], 2, [ [AREAS.__WORKBENCH__, 15000] ]), stack: 255, loot: LOOTID.__WOOD_FLOOR__, wait: 10, idWeapon: 21, fuel: -1, zid: 2, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-wood-floor.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-wood-floor.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__WOOD_FLOOR__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.groundFloor, broken: [{ src: "img/day-wood-floor-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__WOOD_DESTROY__, building: [{ src: "img/day-wood-floor-0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-2.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-3.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-4.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-5.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-6.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-7.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-8.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-9.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-10.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-11.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-12.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-13.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-14.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-15.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-16.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-17.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-18.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-19.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-20.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-21.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-22.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-23.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-24.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-25.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-26.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-27.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-28.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-29.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-30.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-31.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-32.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-33.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-34.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-35.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-36.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-37.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-38.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-39.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-40.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-41.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-42.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-43.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-44.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-45.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__WOOD__, particlesDist: 80, timelife: 315360000000, life: 4000, score: 0 }, { id: IID.__HAMMER__, itemButton: { src: ["img/inv-hammer-out.png", "img/inv-hammer-in.png", "img/inv-hammer-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Hammer", "Destroy walls quickly.", SKILLS.__TOOL__, [ [IID.__WOOD__, 100], [IID.__SHAPED_METAL__, 10] ], 1, [ [AREAS.__WORKBENCH2__, 30000] ], 7), idWeapon: 23, stack: 1, loot: LOOTID.__HAMMER__, wait: 10 }, { id: IID.__SLEEPING_BAG__, itemButton: { src: ["img/inv-sleeping-bag-out.png", "img/inv-sleeping-bag-in.png", "img/inv-sleeping-bag-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Sleeping Bag", "Once dead, you keep your base", SKILLS.__SURVIVAL__, [ [IID.__LEATHER_BOAR__, 7], [IID.__ANIMAL_FAT__, 7], [IID.__STRING__, 7] ], 1, [ [AREAS.__WEAVING__, 20000] ], 9), stack: 255, loot: LOOTID.__SLEEPING_BAG__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-sleeping-bag.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-sleeping-bag.png", img: { isLoaded: 0 } }, door: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.defaultBuilding, impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__PILLOW_DESTROY__, building: { src: "img/day-sleeping-bag.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__FUR__, particlesDist: 80, timelife: 315360000000, life: 500, score: 0 }, { id: IID.__REPAIR_HAMMER__, itemButton: { src: ["img/inv-repair-hammer-out.png", "img/inv-repair-hammer-in.png", "img/inv-repair-hammer-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Repair Hammer", "Repair walls but require nails.", SKILLS.__TOOL__, [ [IID.__WOOD__, 120], [IID.__SHAPED_METAL__, 2] ], 1, [ [AREAS.__WORKBENCH__, 30000] ], 5), idWeapon: 24, stack: 1, loot: LOOTID.__REPAIR_HAMMER__, wait: 10 }, { id: IID.__NAILS__, itemButton: { src: ["img/inv-nails-out.png", "img/inv-nails-in.png", "img/inv-nails-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Nails", "Needed to repair walls.", SKILLS.__SURVIVAL__, [ [IID.__SHAPED_METAL__, 2] ], 85, [ [AREAS.__WORKBENCH__, 20000] ]), stack: 255, loot: LOOTID.__NAILS__ }, { id: IID.__WOODLIGHT_FLOOR__, itemButton: { src: ["img/inv-wood-floor-light-out.png", "img/inv-wood-floor-light-in.png", "img/inv-wood-floor-light-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Light Wood Floor", "Players can't spawn on it", SKILLS.__BUILDING__, [ [IID.__WOOD__, 15] ], 2, [ [AREAS.__WORKBENCH__, 15000] ]), stack: 255, loot: LOOTID.__WOODLIGHT_FLOOR__, wait: 10, idWeapon: 21, fuel: -1, zid: 2, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-woodlight-floor.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-woodlight-floor.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__WOODLIGHT_FLOOR__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.groundFloor, broken: [{ src: "img/day-wood-floor-light-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__WOOD_DESTROY__, building: [{ src: "img/day-wood-floor-light-0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-2.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-3.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-4.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-5.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-6.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-7.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-8.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-9.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-10.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-11.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-12.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-13.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-14.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-15.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-16.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-17.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-18.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-19.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-20.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-21.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-22.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-23.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-24.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-25.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-26.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-27.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-28.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-29.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-30.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-31.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-32.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-33.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-34.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-35.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-36.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-37.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-38.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-39.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-40.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-41.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-42.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-43.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-44.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-45.png", img: { isLoaded: 0 } }, { src: "img/day-wood-floor-light-46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__WOODLIGHT__, particlesDist: 80, timelife: 315360000000, life: 4000, score: 0 }, { id: IID.__WOOD_SMALLWALL__, itemButton: { src: ["img/inv-wood-smallwall-out.png", "img/inv-wood-smallwall-in.png", "img/inv-wood-smallwall-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wooden Low Wall", "You can shoot through it.", SKILLS.__BUILDING__, [ [IID.__WOOD__, 10] ], 1, [ [AREAS.__WORKBENCH__, 10000] ]), idWeapon: 21, fuel: -1, zid: 0, z: 0, stack: 255, loot: LOOTID.__WOOD_SMALLWALL__, wait: 10, delay: 1000, width: [100, 35, 100, 35], height: [35, 100, 35, 100], xCenter: [0, -30, 0, 30], yCenter: [30, 0, -30, 0], _x: [0, 0, 0, 65], _y: [65, 0, 0, 0], blueprint: { src: "img/day-clear-blue-wood-smallwall.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-wood-smallwall.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 1, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI / 2, iMove: [1, 0, -1, 0], jMove: [0, -1, 0, 1], xMove: [0, 0, 65, 0], yMove: [0, 0, 0, 65], wMove: [35, 100, 35, 100], hMove: [100, 35, 100, 35], xRotate: 6, yRotate: 46, areaEffect: 0, draw: Render.lowWall, broken: [{ src: "img/day-wood-smallwalls-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: [{ src: "img/day-wood-smallwalls-0.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-2.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-3.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-4.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-5.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-6.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-7.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-8.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-9.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-10.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-11.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-12.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-13.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-14.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-15.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-16.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-17.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-18.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-19.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-20.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-21.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-22.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-23.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-24.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-25.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-26.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-27.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-28.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-29.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-30.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-31.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-32.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-33.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-34.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-35.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-36.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-37.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-38.png", img: { isLoaded: 0 } }, { src: "img/day-wood-smallwalls-39.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__WOOD__, particlesDist: 80, timelife: 315360000000, life: 3000, score: 0 }, { id: IID.__STONE_SMALLWALL__, itemButton: { src: ["img/inv-stone-smallwall-out.png", "img/inv-stone-smallwall-in.png", "img/inv-stone-smallwall-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Stone Low Wall", "You can shoot through it.", SKILLS.__BUILDING__, [ [IID.__STONE__, 10] ], 1, [ [AREAS.__WORKBENCH__, 15000] ], 3), idWeapon: 21, fuel: -1, zid: 0, z: 0, stack: 255, loot: LOOTID.__STONE_SMALLWALL__, wait: 10, delay: 1000, width: [100, 35, 100, 35], height: [35, 100, 35, 100], xCenter: [0, -30, 0, 30], yCenter: [30, 0, -30, 0], _x: [0, 0, 0, 65], _y: [65, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-smallwalls.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-smallwalls.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 1, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI / 2, iMove: [1, 0, -1, 0], jMove: [0, -1, 0, 1], xMove: [0, 0, 65, 0], yMove: [0, 0, 0, 65], wMove: [35, 100, 35, 100], hMove: [100, 35, 100, 35], xRotate: 6, yRotate: 46, areaEffect: 0, draw: Render.lowWall, broken: [{ src: "img/day-stone-smallwalls-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STONE_IMPACT__, destroy: SOUNDID.__STONE_DESTROY__, building: [{ src: "img/day-stone-smallwalls-0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-2.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-3.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-4.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-5.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-6.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-7.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-8.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-9.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-10.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-11.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-12.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-13.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-14.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-15.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-16.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-17.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-18.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-19.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-20.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-21.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-22.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-23.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-24.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-25.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-26.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-27.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-28.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-29.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-30.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-31.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-32.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-33.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-34.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-35.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-36.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-37.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-38.png", img: { isLoaded: 0 } }, { src: "img/day-stone-smallwalls-39.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__STONE__, particlesDist: 80, timelife: 315360000000, life: 7000, score: 0 }, { id: IID.__STEEL_SMALLWALL__, itemButton: { src: ["img/inv-steel-smallwall-out.png", "img/inv-steel-smallwall-in.png", "img/inv-steel-smallwall-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Metal Low Wall", "You can shoot through it.", SKILLS.__BUILDING__, [ [IID.__SHAPED_METAL__, 2] ], 1, [ [AREAS.__WORKBENCH2__, 20000] ], 6, IID.__STONE_SMALLWALL__), idWeapon: 21, fuel: -1, zid: 0, z: 0, stack: 255, loot: LOOTID.__STEEL_SMALLWALL__, wait: 10, delay: 1000, width: [100, 35, 100, 35], height: [35, 100, 35, 100], xCenter: [0, -30, 0, 30], yCenter: [30, 0, -30, 0], _x: [0, 0, 0, 65], _y: [65, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-smallwalls.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-smallwalls.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 1, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, angle: window.Math.PI / 2, iMove: [1, 0, -1, 0], jMove: [0, -1, 0, 1], xMove: [0, 0, 65, 0], yMove: [0, 0, 0, 65], wMove: [35, 100, 35, 100], hMove: [100, 35, 100, 35], xRotate: 6, yRotate: 46, areaEffect: 0, draw: Render.lowWall, broken: [{ src: "img/day-steel-smallwalls-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-steel-smallwalls-0.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-1.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-2.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-3.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-4.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-5.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-6.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-7.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-8.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-9.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-10.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-11.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-12.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-13.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-14.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-15.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-16.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-17.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-18.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-19.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-20.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-21.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-22.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-23.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-24.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-25.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-26.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-27.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-28.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-29.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-30.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-31.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-32.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-33.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-34.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-35.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-36.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-37.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-38.png", img: { isLoaded: 0 } }, { src: "img/day-steel-smallwalls-39.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__STEEL__, particlesDist: 55, timelife: 315360000000, life: 15000, score: 0 }, { id: IID.__FURNITURE__, zid: 0, xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: [], detail: { category: window.undefined }, particles: -1, draw: Render.furniture }, { id: IID.__TOMATO_SOUP__, itemButton: { src: ["img/inv-tomato-soup-out.png", "img/inv-tomato-soup-in.png", "img/inv-tomato-soup-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Tomato Soup", "Has not yet been opened.", SKILLS.__SURVIVAL__, [ [IID.__CAN__, 1], [IID.__TOMATO__, 2] ], 1, [ [AREAS.__FIRE__, 15000], [AREAS.__BBQ__, 7000] ]), idWeapon: 25, stack: 5, loot: LOOTID.__TOMATO_SOUP__, perish: 2, perishId: IID.__CAN__, wait: 10 }, { id: IID.__SYRINGE__, itemButton: { src: ["img/inv-syringe-out.png", "img/inv-syringe-in.png", "img/inv-syringe-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Syringe", "Useful to make drugs.", SKILLS.__DRUG__, [ [IID.__JUNK__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 30000] ]), stack: 20, loot: LOOTID.__SYRINGE__, score: 50 }, { id: IID.__CHEMICAL_COMPONENT__, itemButton: { src: ["img/inv-chemical-component-out.png", "img/inv-chemical-component-in.png", "img/inv-chemical-component-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Chemical Component", "Useful to make a drugs."), stack: 20, loot: LOOTID.__CHEMICAL_COMPONENT__, score: 50 }, { id: IID.__RADAWAY__, itemButton: { src: ["img/inv-radaway-out.png", "img/inv-radaway-in.png", "img/inv-radaway-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("RadAway", "Reduce your radioactivity a lot.", SKILLS.__DRUG__, [ [IID.__SYRINGE__, 1], [IID.__CHEMICAL_COMPONENT__, 1], [IID.__MUSHROOM2__, 1] ], 1, [ [AREAS.__AGITATOR__, 45000] ]), idWeapon: 26, stack: 5, loot: LOOTID.__RADAWAY__, wait: 10 }, { id: IID.__SEED_TOMATO__, itemButton: { src: ["img/inv-tomato-seed-out.png", "img/inv-tomato-seed-in.png", "img/inv-tomato-seed-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Tomato Seed", "A fruit or vegetable?", SKILLS.__PLANT__, [ [IID.__TOMATO__, 4] ], 1, [ [AREAS.__FIRE__, 30000], [AREAS.__BBQ__, 20000] ]), stack: 40, loot: LOOTID.__SEED_TOMATO__, fruit: LOOTID.__TOMATO__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [30, 30, 30, 30], height: [30, 30, 30, 30], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [35, 35, 35, 35], _y: [35, 35, 35, 35], blueprint: { src: "img/day-clear-blue-tomato.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-tomato.png", img: { isLoaded: 0 } }, door: 0, explosion: 0, behavior: BEHAVIOR.__SEED__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.orangeSeed, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, building: [{ src: "img/day-plant0-tomato.png", img: { isLoaded: 0 } }, { src: "img/day-plant1-tomato.png", img: { isLoaded: 0 } }, { src: "img/day-plant2-tomato.png", img: { isLoaded: 0 } }, { src: "img/day-plant3-tomato.png", img: { isLoaded: 0 } }, { src: "img/day-plant4-tomato.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__TOMATO__, particlesDist: 68, timelife: ((5 * 8) * 60) * 1000, life: 250, score: 0 }, { id: IID.__TOMATO__, itemButton: { src: ["img/inv-tomato-out.png", "img/inv-tomato-in.png", "img/inv-tomato-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Tomato", "Why did the tomato blush?"), stack: 20, loot: LOOTID.tomato, wait: 5, perish: 10, perishId: IID.__ROTTEN_TOMATO__, idWeapon: 27, score: 24 }, { id: IID.__ROTTEN_TOMATO__, itemButton: { src: ["img/inv-rotten-tomato-out.png", "img/inv-rotten-tomato-in.png", "img/inv-rotten-tomato-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Rotten Tomato", "Go on, have a bite!"), stack: 20, loot: LOOTID.__ROTTEN_TOMATO__, wait: 5, idWeapon: 28, score: 20 }, { id: IID.__CAN__, itemButton: { src: ["img/inv-can-out.png", "img/inv-can-in.png", "img/inv-can-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Can", "Useful to craft food can.", SKILLS.__SURVIVAL__, [ [IID.__SHAPED_METAL__, 1] ], 1, [ [AREAS.__WORKBENCH__, 20000] ]), idWeapon: 0, stack: 255, loot: LOOTID.__CAN__ }, { id: IID.__WOOD_CROSSBOW__, itemButton: { src: ["img/inv-wood-crossbow-out.png", "img/inv-wood-crossbow-in.png", "img/inv-wood-crossbow-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wood Crossbow", "Shoot faster, reload slower", SKILLS.__WEAPON__, [ [IID.__WOOD__, 200], [IID.__STRING__, 2], [IID.__SHAPED_METAL__, 1] ], 1, [ [AREAS.__WORKBENCH__, 50000] ], 6), idWeapon: 29, bullet: IID.__WOOD_CROSSARROW__, stack: 1, loot: LOOTID.__WOOD_CROSSBOW__, wait: 10 }, { id: IID.__WOOD_CROSSARROW__, itemButton: { src: ["img/inv-wood-crossarrow-out.png", "img/inv-wood-crossarrow-in.png", "img/inv-wood-crossarrow-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Crossbow Arrows", "Needed to use crossbow.", SKILLS.__WEAPON__, [ [IID.__WOOD__, 40], [IID.__SHAPED_METAL__, 1] ], 10, [ [AREAS.__WORKBENCH__, 30000] ]), stack: 255, loot: LOOTID.__WOOD_CROSSARROW__ }, { id: IID.__NAIL_GUN__, itemButton: { src: ["img/inv-nail-gun-out.png", "img/inv-nail-gun-in.png", "img/inv-nail-gun-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Nail Gun", "Repair walls from a distance", SKILLS.__TOOL__, [ [IID.__SHAPED_METAL__, 3], [IID.__SMALL_WIRE__, 1], [IID.__JUNK__, 1], [IID.__ENERGY_CELLS__, 4] ], 1, [ [AREAS.__WORKBENCH2__, 30000] ], 7), idWeapon: 30, bullet: IID.__NAILS__, stack: 1, loot: LOOTID.__NAIL_GUN__, wait: 10 }, { id: IID.__SAWED_OFF_SHOTGUN__, itemButton: { src: ["img/inv-sawed-off-shotgun-out.png", "img/inv-sawed-off-shotgun-in.png", "img/inv-sawed-off-shotgun-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Sawed Off", "Shoot less far, do more damages", SKILLS.__WEAPON__, [ [IID.__SHOTGUN__, 1], [IID.__ALLOYS__, 6], [IID.__SHAPED_METAL__, 6] ], 1, [ [AREAS.__WORKBENCH2__, 200000] ], 13, IID.__SHOTGUN__), idWeapon: 31, bullet: IID.__BULLET_SHOTGUN__, stack: 1, loot: LOOTID.__SAWED_OFF_SHOTGUN__, wait: 10 }, { id: IID.__STONE_FLOOR__, itemButton: { src: ["img/inv-stone-floor-out.png", "img/inv-stone-floor-in.png", "img/inv-stone-floor-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Stone floor", "Players can't spawn on it", SKILLS.__BUILDING__, [ [IID.__STONE__, 15] ], 2, [ [AREAS.__WORKBENCH__, 15000] ], 4), stack: 255, loot: LOOTID.__STONE_FLOOR__, wait: 10, idWeapon: 21, fuel: -1, zid: 2, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-floor.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-floor.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__STONE_FLOOR__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.groundFloor, broken: [{ src: "img/day-stone-floor-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__STONE_DESTROY__, building: [{ src: "img/day-stone-floor-0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-2.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-3.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-4.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-5.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-6.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-7.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-8.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-9.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-10.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-11.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-12.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-13.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-14.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-15.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-16.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-17.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-18.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-19.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-20.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-21.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-22.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-23.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-24.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-25.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-26.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-27.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-28.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-29.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-30.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-31.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-32.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-33.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-34.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-35.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-36.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-37.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-38.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-39.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-40.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-41.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-42.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-43.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-44.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-45.png", img: { isLoaded: 0 } }, { src: "img/day-stone-floor-46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__STONE__, particlesDist: 80, timelife: 315360000000, life: 8000, score: 0 }, { id: IID.__TILING_FLOOR__, itemButton: { src: ["img/inv-tiling-floor-out.png", "img/inv-tiling-floor-in.png", "img/inv-tiling-floor-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Tiling floor", "Players can't spawn on it", SKILLS.__BUILDING__, [ [IID.__STONE__, 15] ], 2, [ [AREAS.__WORKBENCH__, 15000] ], 4), stack: 255, loot: LOOTID.__TILING_FLOOR__, wait: 10, idWeapon: 21, fuel: -1, zid: 2, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-tiling-floor.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-tiling-floor.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__TILING_FLOOR__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.groundFloor, broken: [{ src: "img/day-tiling-floor-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__STONE_DESTROY__, building: [{ src: "img/day-tiling-floor-0.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-1.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-2.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-3.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-4.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-5.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-6.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-7.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-8.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-9.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-10.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-11.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-12.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-13.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-14.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-15.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-16.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-17.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-18.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-19.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-20.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-21.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-22.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-23.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-24.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-25.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-26.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-27.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-28.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-29.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-30.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-31.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-32.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-33.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-34.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-35.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-36.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-37.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-38.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-39.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-40.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-41.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-42.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-43.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-44.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-45.png", img: { isLoaded: 0 } }, { src: "img/day-tiling-floor-46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__STONE__, particlesDist: 80, timelife: 315360000000, life: 8000, score: 0 }, { id: IID.__ROAD__, zid: 0, xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: [], buildings: [], detail: { category: window.undefined }, particles: -1, draw: Render.road }, { id: IID.__CRISPS__, itemButton: { src: ["img/inv-chips-out.png", "img/inv-chips-in.png", "img/inv-chips-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Crisps", "You salty?"), idWeapon: 32, stack: 5, loot: LOOTID.__CRISPS__, perish: 2, perishId: IID.__ROTTEN_CRISPS__, wait: 10 }, { id: IID.__ROTTEN_CRISPS__, itemButton: { src: ["img/inv-rotten-chips-out.png", "img/inv-rotten-chips-in.png", "img/inv-rotten-chips-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Expired Crisps", "Go on, have a bite!"), stack: 5, loot: LOOTID.__ROTTEN_CRISPS__, wait: 5, idWeapon: 33, score: 20 }, { id: IID.__ELECTRONICS__, itemButton: { src: ["img/inv-electronic-part-out.png", "img/inv-electronic-part-in.png", "img/inv-electronic-part-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Electronic Parts", "Break TV's and Computers to find it"), stack: 255, loot: LOOTID.__ELECTRONICS__, score: 100 }, { id: IID.__JUNK__, itemButton: { src: ["img/inv-junk-out.png", "img/inv-junk-in.png", "img/inv-junk-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Junk", "Find it in houses"), stack: 255, loot: LOOTID.__JUNK__, score: 40 }, { id: IID.__WIRE__, itemButton: { src: ["img/inv-wires-out.png", "img/inv-wires-in.png", "img/inv-wires-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Big Wire", "Break big computers in power AREAS (in the city)"), stack: 255, loot: LOOTID.__WIRE__, score: 40 }, { id: IID.__ENERGY_CELLS__, itemButton: { src: ["img/inv-small-energy-cells-out.png", "img/inv-small-energy-cells-in.png", "img/inv-small-energy-cells-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Energy Cells", "Used for energy weapons/buildings", SKILLS.__SURVIVAL__, [ [IID.__ALLOYS__, 1], [IID.__SHAPED_URANIUM__, 1] ], 30, [ [AREAS.__TESLA__, 28000] ], 6), stack: 255, loot: LOOTID.__ENERGY_CELLS__ }, { id: IID.__LASER_PISTOL__, itemButton: { src: ["img/inv-laser-pistol-out.png", "img/inv-laser-pistol-in.png", "img/inv-laser-pistol-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Laser Pistol", "Bullets are faster.", SKILLS.__WEAPON__, [ [IID.__SHAPED_URANIUM__, 2], [IID.__WIRE__, 1], [IID.__ELECTRONICS__, 2], [IID.__ALLOYS__, 1], [IID.__SHAPED_METAL__, 4] ], 1, [ [AREAS.__TESLA__, 180000] ], 14), idWeapon: 34, bullet: IID.__ENERGY_CELLS__, stack: 1, loot: LOOTID.__LASER_PISTOL__, wait: 10 }, { id: IID.__TESLA__, itemButton: { src: ["img/inv-workbench3-out.png", "img/inv-workbench3-in.png", "img/inv-workbench3-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Tesla Bench", "Allow you to make powerful INVENTORY", SKILLS.__SURVIVAL__, [ [IID.__ALLOYS__, 4], [IID.__SHAPED_METAL__, 6], [IID.__ELECTRONICS__, 3], [IID.__WIRE__, 4], [IID.__SHAPED_URANIUM__, 2] ], 1, [ [AREAS.__WORKBENCH2__, 120000] ], 10, IID.__WORKBENCH2__), idWeapon: 21, fuel: 60000, zid: 0, z: 1, area: AREAS.__TESLA__, stack: 255, loot: LOOTID.__TESLA__, wait: 10, delay: 1000, width: [100, 260, 100, 260], height: [260, 100, 260, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, -80, 0, -80], _y: [-80, 0, -80, 0], iTile: [-1, 0, -1, 0], jTile: [0, -1, 0, -1], blueprint: { src: "img/day-clear-blue-workbench3.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-workbench3.png", img: { isLoaded: 0 } }, xLight: [-20.5, -101.5, 20.5, 101.5], yLight: [101.5, -20.5, -101, 20.5], wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__AI_CONSTRUCTOR__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.teslaBench, packetId: 16, interact: { src: "img/e-workbench3.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-workbench3.png", img: { isLoaded: 0 } }, { src: "img/day-workbench3-1.png", img: { isLoaded: 0 } }, { src: "img/day-workbench3-2.png", img: { isLoaded: 0 } }, { src: "img/day-workbench3-3.png", img: { isLoaded: 0 } }], light: [{ src: "img/day-tesla-light0.png", img: { isLoaded: 0 } }, 0, { src: "img/day-tesla-light1.png", img: { isLoaded: 0 } }, { src: "img/day-tesla-light2.png", img: { isLoaded: 0 } }, 0, { src: "img/day-tesla-light3.png", img: { isLoaded: 0 } }, { src: "img/day-tesla-light4.png", img: { isLoaded: 0 } }, { src: "img/day-tesla-light5.png", img: { isLoaded: 0 } }, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 3000, score: 0 }, { id: IID.__ALLOYS__, itemButton: { src: ["img/inv-alloys-out.png", "img/inv-alloys-in.png", "img/inv-alloys-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Alloys", "To craft powerful INVENTORY", SKILLS.__MINERAL__, [ [IID.__STEEL__, 1], [IID.__JUNK__, 1], [IID.__SULFUR__, 1] ], 1, [ [AREAS.__SMELTER__, 10000] ]), stack: 255, loot: LOOTID.__ALLOYS__ }, { id: IID.__SULFUR_AXE__, itemButton: { src: ["img/inv-sulfur-axe-out.png", "img/inv-sulfur-axe-in.png", "img/inv-sulfur-axe-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Sulfur Axe", "You look cool with it.", SKILLS.__TOOL__, [ [IID.__STONE_AXE__, 1], [IID.__ALLOYS__, 8], [IID.__SHAPED_METAL__, 10], [IID.__SULFUR__, 20] ], 1, [ [AREAS.__WORKBENCH2__, 200000] ], 10, IID.__STONE_AXE__), idWeapon: 35, stack: 1, loot: LOOTID.__SULFUR_AXE__, wait: 10 }, { id: IID.__LANDMINE__, itemButton: { src: ["img/inv-landmine-out.png", "img/inv-landmine-in.png", "img/inv-landmine-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Landmine", "When you feel it, it's too late", SKILLS.__WEAPON__, [ [IID.__SHAPED_METAL__, 4], [IID.__JUNK__, 1], [IID.__SULFUR__, 2], [IID.__ANIMAL_FAT__, 2] ], 1, [ [AREAS.__WORKBENCH2__, 40000] ], 9), stack: 20, loot: LOOTID.__LANDMINE__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [50, 50, 50, 50], height: [50, 50, 50, 50], _x: [25, 25, 25, 25], _y: [25, 25, 25, 25], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-landmine.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-landmine.png", img: { isLoaded: 0 } }, door: 0, explosion: 1, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, damage: 200, damageBuilding: 400, areaEffect: 0, draw: Render.landmine, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-landmine-0.png", img: { isLoaded: 0 } }, { src: "img/day-landmine-1.png", img: { isLoaded: 0 } }, { src: "img/day-landmine-2.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__KAKI__, particlesDist: 80, timelife: 315360000000, life: 5, score: 0 }, { id: IID.__DYNAMITE__, itemButton: { src: ["img/inv-dynamite-out.png", "img/inv-dynamite-in.png", "img/inv-dynamite-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Dynamite", "Get out of here, it gonna blow!", SKILLS.__WEAPON__, [ [IID.__STRING__, 1], [IID.__ANIMAL_FAT__, 2], [IID.__SULFUR__, 2], [IID.__JUNK__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 40000] ], 9), stack: 10, loot: LOOTID.__DYNAMITE__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-dynamite.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-dynamite.png", img: { isLoaded: 0 } }, door: 0, explosion: 1, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, damage: 180, damageBuilding: 1400, areaEffect: 0, draw: Render.dynamite, impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__NO_SOUND__, building: [{ src: "img/day-dynamite.png", img: { isLoaded: 0 } }, { src: "img/dynamite-yellow.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__RED_STEEL__, particlesDist: 80, timelife: 5000, life: 100, score: 0 }, { id: IID.__C4__, itemButton: { src: ["img/inv-C4-out.png", "img/inv-C4-in.png", "img/inv-C4-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("C4", "Explode when you hit the trigger!", SKILLS.__WEAPON__, [ [IID.__DYNAMITE__, 2], [IID.__SMALL_WIRE__, 1], [IID.__ALLOYS__, 2], [IID.__ELECTRONICS__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 60000] ], 16, IID.__DYNAMITE__), stack: 5, loot: LOOTID.__C4__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-C4.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-C4.png", img: { isLoaded: 0 } }, door: 0, explosion: 1, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, damage: 255, damageBuilding: 6000, collision: 0, areaEffect: 0, draw: Render.dynamite, impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__NO_SOUND__, building: [{ src: "img/day-C4.png", img: { isLoaded: 0 } }, { src: "img/C4-red.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__KAKI__, particlesDist: 80, timelife: 315360000000, life: 100, score: 0 }, { id: IID.__C4_TRIGGER__, itemButton: { src: ["img/inv-joystick-out.png", "img/inv-joystick-in.png", "img/inv-joystick-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("C4 Trigger", "Don't press the button or else...", SKILLS.__WEAPON__, [ [IID.__SHAPED_METAL__, 5], [IID.__ELECTRONICS__, 1], [IID.__ENERGY_CELLS__, 8], [IID.__SMALL_WIRE__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 100000] ], 16, IID.__C4__), stack: 1, loot: LOOTID.__C4_TRIGGER__, wait: 10, idWeapon: 36, score: 0 }, { id: IID.__COMPOST__, itemButton: { src: ["img/inv-composter-out.png", "img/inv-composter-in.png", "img/inv-composter-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Compost", "Allows to accelerate rotting", SKILLS.__SURVIVAL__, [ [IID.__SHAPED_METAL__, 4], [IID.__ELECTRONICS__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 100000] ], 8), idWeapon: 21, fuel: 10000, zid: 0, z: 1, area: AREAS.__COMPOST__, stack: 255, loot: LOOTID.__COMPOST__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-composter.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-composter.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.compost, packetId: 16, interact: { src: "img/e-composter.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-composter-off.png", img: { isLoaded: 0 } }, { src: "img/day-composter.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 500, score: 0 }, { id: IID.__ARMOR_PHYSIC_1__, itemButton: { src: ["img/inv-metal-helmet-out.png", "img/inv-metal-helmet-in.png", "img/inv-metal-helmet-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Metal Helmet", "Protects you from melee weapons", SKILLS.__CLOTHE__, [ [IID.__SHAPED_METAL__, 3], [IID.__ANIMAL_TENDON__, 3], [IID.__LEATHER_BOAR__, 3], [IID.__NAILS__, 80] ], 1, [ [AREAS.__WORKBENCH__, 70000] ]), idClothe: 7, stack: 1, loot: LOOTID.__ARMOR_PHYSIC_1__, wait: 10, warm: 0, def: 0.15, bul: 0, ene: 0, boom: 0, rad: 0, speed: -0.01 }, { id: IID.__ARMOR_PHYSIC_2__, itemButton: { src: ["img/inv-welding-helmet-out.png", "img/inv-welding-helmet-in.png", "img/inv-welding-helmet-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Welding Helmet", "Protects you from melee weapons", SKILLS.__CLOTHE__, [ [IID.__SHAPED_METAL__, 10], [IID.__ALLOYS__, 2], [IID.__LEATHER_BOAR__, 3], [IID.__NAILS__, 160], [IID.__ARMOR_PHYSIC_1__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 140000] ], 7), idClothe: 8, stack: 1, loot: LOOTID.__ARMOR_PHYSIC_2__, wait: 10, warm: 0, def: 0.4, bul: 0, ene: 0, boom: 0.05, rad: 0, speed: -0.02 }, { id: IID.__ARMOR_PHYSIC_3__, itemButton: { src: ["img/inv-gladiator-helmet-out.png", "img/inv-gladiator-helmet-in.png", "img/inv-gladiator-helmet-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Gladiator Helmet", "Strength and honor.", SKILLS.__CLOTHE__, [ [IID.__SHAPED_METAL__, 12], [IID.__ALLOYS__, 6], [IID.__LEATHER_BOAR__, 4], [IID.__NAILS__, 255], [IID.__ARMOR_PHYSIC_2__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 300000] ], 17, IID.__ARMOR_PHYSIC_2__), idClothe: 9, stack: 1, loot: LOOTID.__ARMOR_PHYSIC_3__, wait: 10, warm: 0, def: 0.6, bul: 0.1, ene: 0, boom: 0.2, rad: 0, speed: -0.03 }, { id: IID.__ARMOR_FIRE_1__, itemButton: { src: ["img/inv-leather-jacket-out.png", "img/inv-leather-jacket-in.png", "img/inv-leather-jacket-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Leather Jacket", "Protects you from guns", SKILLS.__CLOTHE__, [ [IID.__STRING__, 2], [IID.__LEATHER_BOAR__, 4] ], 1, [ [AREAS.__WEAVING__, 70000] ]), idClothe: 10, stack: 1, loot: LOOTID.__ARMOR_FIRE_1__, wait: 10, warm: 0.0006, def: 0, bul: 0.2, ene: 0, boom: 0, rad: 0, speed: 0 }, { id: IID.__ARMOR_FIRE_2__, itemButton: { src: ["img/inv-kevlar-suit-out.png", "img/inv-kevlar-suit-in.png", "img/inv-kevlar-suit-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Kevlar Suit", "Protects you from guns", SKILLS.__CLOTHE__, [ [IID.__SHAPED_METAL__, 6], [IID.__STRING__, 4], [IID.__LEATHER_BOAR__, 6], [IID.__ALLOYS__, 2], [IID.__ARMOR_FIRE_1__, 1] ], 1, [ [AREAS.__WEAVING__, 100000] ], 12), idClothe: 11, stack: 1, loot: LOOTID.__ARMOR_FIRE_2__, wait: 10, warm: 0, def: 0, bul: 0.4, ene: 0, boom: 0, rad: 0, speed: 0 }, { id: IID.__ARMOR_FIRE_3__, itemButton: { src: ["img/inv-SWAT-suit-out.png", "img/inv-SWAT-suit-in.png", "img/inv-SWAT-suit-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("SWAT Suit", "Protects you from guns", SKILLS.__CLOTHE__, [ [IID.__SHAPED_METAL__, 10], [IID.__STRING__, 10], [IID.__LEATHER_BOAR__, 10], [IID.__ALLOYS__, 4], [IID.__ARMOR_FIRE_2__, 1] ], 1, [ [AREAS.__WEAVING__, 200000] ], 18, IID.__ARMOR_FIRE_2__), idClothe: 12, stack: 1, loot: LOOTID.__ARMOR_FIRE_3__, wait: 10, warm: 0, def: 0.1, bul: 0.7, ene: 0, boom: 0.1, rad: 0, speed: -0.01 }, { id: IID.__ARMOR_DEMINER__, itemButton: { src: ["img/inv-protective-suit-out.png", "img/inv-protective-suit-in.png", "img/inv-protective-suit-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Protective Suit", "Protects you from explosives", SKILLS.__CLOTHE__, [ [IID.__SHAPED_METAL__, 6], [IID.__STRING__, 6], [IID.__LEATHER_BOAR__, 6], [IID.__ALLOYS__, 2] ], 1, [ [AREAS.__WEAVING__, 200000] ], 12, IID.__FEATHERWEIGHT__), idClothe: 13, stack: 1, loot: LOOTID.__ARMOR_DEMINER__, wait: 10, warm: 0.00085, def: 0, bul: 0, ene: 0, boom: 0.9, rad: 0, speed: -0.03 }, { id: IID.__ARMOR_TESLA_1__, itemButton: { src: ["img/inv-tesla-0-out.png", "img/inv-tesla-0-in.png", "img/inv-tesla-0-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Power Armor", "Protects you from energy weapons", SKILLS.__CLOTHE__, [ [IID.__SHAPED_METAL__, 20], [IID.__SHAPED_URANIUM__, 2], [IID.__ELECTRONICS__, 1], [IID.__WIRE__, 2], [IID.__ALLOYS__, 2] ], 1, [ [AREAS.__TESLA__, 150000] ], 10), idClothe: 14, stack: 1, loot: LOOTID.__ARMOR_TESLA_1__, wait: 10, warm: 0, def: 0, bul: 0, ene: 0.3, boom: 0, rad: 0, speed: 0 }, { id: IID.__ARMOR_TESLA_2__, itemButton: { src: ["img/inv-tesla-armor-out.png", "img/inv-tesla-armor-in.png", "img/inv-tesla-armor-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Tesla Armor", "Protects you from energy weapons", SKILLS.__CLOTHE__, [ [IID.__ARMOR_TESLA_1__, 1], [IID.__SHAPED_URANIUM__, 10], [IID.__ELECTRONICS__, 5], [IID.__WIRE__, 5], [IID.__ALLOYS__, 10] ], 1, [ [AREAS.__TESLA__, 300000] ], 18, IID.__ARMOR_TESLA_1__, 3), idClothe: 15, stack: 1, loot: LOOTID.__ARMOR_TESLA_2__, wait: 10, warm: 0.00085, def: 0.2, bul: 0.2, ene: 0.75, boom: 0.2, rad: 0.01, speed: -0.02 }, { id: IID.__WOOD_SPIKE__, itemButton: { src: ["img/inv-wood-spike-out.png", "img/inv-wood-spike-in.png", "img/inv-wood-spike-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Wooden Spike", "Hurt and slow down", SKILLS.__BUILDING__, [ [IID.__WOOD__, 80] ], 1, [ [AREAS.__WORKBENCH__, 25000] ]), idWeapon: 21, fuel: -1, zid: -1, z: 0, stack: 40, loot: LOOTID.__WOOD_SPIKE__, wait: 10, delay: 1000, width: [50, 50, 50, 50], height: [50, 50, 50, 50], _x: [25, 25, 25, 25], _y: [25, 25, 25, 25], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-wood-spike.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-wood-spike.png", img: { isLoaded: 0 } }, door: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.spike, hidden: [{ src: "img/day-wood-spike-cover1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-spike-cover2.png", img: { isLoaded: 0 } }, { src: "img/day-wood-spike-cover3.png", img: { isLoaded: 0 } }], deployed: [{ src: "img/day-wood-spike-1.png", img: { isLoaded: 0 } }, { src: "img/day-wood-spike-2.png", img: { isLoaded: 0 } }, { src: "img/day-wood-spike-3.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__WOOD__, particlesDist: 80, timelife: 315360000000, life: 200, score: 0 }, { id: IID.__LASER_SUBMACHINE__, itemButton: { src: ["img/inv-laser-submachine-out.png", "img/inv-laser-submachine-in.png", "img/inv-laser-submachine-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Laser Submachine", "It's the best weapon", SKILLS.__WEAPON__, [ [IID.__ALLOYS__, 10], [IID.__SHAPED_METAL__, 6], [IID.__SHAPED_URANIUM__, 6], [IID.__WIRE__, 2], [IID.__ELECTRONICS__, 3] ], 1, [ [AREAS.__TESLA__, 180000] ], 14, IID.__LASER_PISTOL__, 2), idWeapon: 37, bullet: IID.__ENERGY_CELLS__, stack: 1, loot: LOOTID.__LASER_SUBMACHINE__, wait: 10 }, { id: IID.__GRENADE__, itemButton: { src: ["img/inv-grenade-out.png", "img/inv-grenade-in.png", "img/inv-grenade-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Grenade", "Explodes when you throw it away.", SKILLS.__WEAPON__, [ [IID.__SHAPED_METAL__, 2], [IID.__JUNK__, 2], [IID.__SULFUR__, 2], [IID.__ANIMAL_FAT__, 2] ], 2, [ [AREAS.__WORKBENCH2__, 30000] ], 10), idWeapon: 38, damage: 130, damageBuilding: 400, stack: 10, loot: LOOTID.__GRENADE__, wait: 10 }, { id: IID.__SUPER_HAMMER__, itemButton: { src: ["img/inv-super-hammer-out.png", "img/inv-super-hammer-in.png", "img/inv-super-hammer-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Super Hammer", "Destroy indestructible walls."), idWeapon: 39, stack: 1, loot: LOOTID.__SUPER_HAMMER__, wait: 10 }, { id: IID.__GHOUL_BLOOD__, itemButton: { src: ["img/inv-ghoul-blood-out.png", "img/inv-ghoul-blood-in.png", "img/inv-ghoul-blood-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Ghoul Blood", "Find it on speedy ghouls"), stack: 255, loot: LOOTID.__GHOUL_BLOOD__, score: 100 }, { id: IID.__CAMOUFLAGE_GEAR__, itemButton: { src: ["img/inv-camouflage-gear-out.png", "img/inv-camouflage-gear-in.png", "img/inv-camouflage-gear-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Camouflage Gear", "Hide you in the forest", SKILLS.__CLOTHE__, [ [IID.__WOOD__, 90], [IID.__STRING__, 2], [IID.__LEATHER_BOAR__, 2] ], 1, [ [AREAS.__WEAVING__, 40000] ]), idClothe: 16, stack: 1, loot: LOOTID.__CAMOUFLAGE_GEAR__, wait: 10, warm: 0, def: 0, bul: 0, ene: 0, boom: 0, rad: 0, speed: 0 }, { id: IID.__AGITATOR__, itemButton: { src: ["img/inv-agitator-out.png", "img/inv-agitator-in.png", "img/inv-agitator-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Agitator", "Allows to craft drugs", SKILLS.__SURVIVAL__, [ [IID.__SHAPED_METAL__, 6], [IID.__ELECTRONICS__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 100000] ], 8), idWeapon: 21, fuel: 100000, zid: 0, z: 1, area: AREAS.__AGITATOR__, stack: 255, loot: LOOTID.__AGITATOR__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-agitator.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-agitator.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.agitator, packetId: 16, interact: { src: "img/e-agitator.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-agitator1-off.png", img: { isLoaded: 0 } }, { src: "img/day-agitator1-on.png", img: { isLoaded: 0 } }, { src: "img/day-agitator-1.png", img: { isLoaded: 0 } }, { src: "img/day-agitator-2.png", img: { isLoaded: 0 } }], spine: [ [-25.5, 21], [-21, -25.5], [25.5, -21], [21, 25.5] ], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 500, score: 0 }, { id: IID.__GHOUL_DRUG__, itemButton: { src: ["img/inv-ghoul-drug-out.png", "img/inv-ghoul-drug-in.png", "img/inv-ghoul-drug-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Ghoul Drug", "Ghouls does not attack you.", SKILLS.__DRUG__, [ [IID.__SYRINGE__, 1], [IID.__CHEMICAL_COMPONENT__, 1], [IID.__MUSHROOM2__, 1], [IID.__MUSHROOM3__, 1], [IID.__GHOUL_BLOOD__, 1] ], 1, [ [AREAS.__AGITATOR__, 30000] ], 10), idWeapon: 40, stack: 5, loot: LOOTID.__GHOUL_DRUG__, wait: 10 }, { id: IID.__MUSHROOM1__, itemButton: { src: ["img/inv-mushroom1-out.png", "img/inv-mushroom1-in.png", "img/inv-mushroom1-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Amanita", "Poisoned, really dangerous"), stack: 20, loot: LOOTID.__MUSHROOM1__, wait: 5, perish: 10, perishId: IID.__ROTTEN_MUSHROOM1__, idWeapon: 41, score: 24 }, { id: IID.__MUSHROOM2__, itemButton: { src: ["img/inv-mushroom2-out.png", "img/inv-mushroom2-in.png", "img/inv-mushroom2-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Boletus", "Can be eaten."), stack: 20, loot: LOOTID.__MUSHROOM2__, wait: 5, perish: 10, perishId: IID.__ROTTEN_MUSHROOM2__, idWeapon: 42, score: 24 }, { id: IID.__MUSHROOM3__, itemButton: { src: ["img/inv-mushroom3-out.png", "img/inv-mushroom3-in.png", "img/inv-mushroom3-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Russula", "Can be eaten."), stack: 20, loot: LOOTID.__MUSHROOM3__, wait: 5, perish: 10, perishId: IID.__ROTTEN_MUSHROOM3__, idWeapon: 43, score: 24 }, { id: IID.__ROTTEN_MUSHROOM1__, itemButton: { src: ["img/inv-rotten-mushroom1-out.png", "img/inv-rotten-mushroom1-in.png", "img/inv-rotten-mushroom1-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Rotten Mushroom", "Go on, have a bite!"), stack: 20, loot: LOOTID.__ROTTEN_MUSHROOM1__, wait: 5, idWeapon: 44, score: 20 }, { id: IID.__ROTTEN_MUSHROOM2__, itemButton: { src: ["img/inv-rotten-mushroom2-out.png", "img/inv-rotten-mushroom2-in.png", "img/inv-rotten-mushroom2-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Rotten Mushroom", "Go on, have a bite!"), stack: 20, loot: LOOTID.__ROTTEN_MUSHROOM2__, wait: 5, idWeapon: 45, score: 20 }, { id: IID.__ROTTEN_MUSHROOM3__, itemButton: { src: ["img/inv-rotten-mushroom3-out.png", "img/inv-rotten-mushroom3-in.png", "img/inv-rotten-mushroom3-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Rotten Mushroom", "Go on, have a bite!"), stack: 20, loot: LOOTID.__ROTTEN_MUSHROOM3__, wait: 5, idWeapon: 46, score: 20 }, { id: IID.__LAPADONE__, itemButton: { src: ["img/inv-lapadoine-out.png", "img/inv-lapadoine-in.png", "img/inv-lapadoine-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Lapadone", "You are faster a certain time.", SKILLS.__DRUG__, [ [IID.__SYRINGE__, 1], [IID.__CHEMICAL_COMPONENT__, 1], [IID.__MUSHROOM1__, 1], [IID.__GHOUL_BLOOD__, 1] ], 1, [ [AREAS.__AGITATOR__, 45000] ], 14), idWeapon: 47, stack: 5, loot: LOOTID.__LAPADONE__, wait: 10 }, { id: IID.__LAPABOT_REPAIR__, itemButton: { src: ["img/inv-lapabot-out.png", "img/inv-lapabot-in.png", "img/inv-lapabot-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("LapaBot", "Repair your base for you", SKILLS.__SURVIVAL__, [ [IID.__SHAPED_METAL__, 6], [IID.__ELECTRONICS__, 1], [IID.__SMALL_WIRE__, 1], [IID.__ALLOYS__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 100000] ], 8), stack: 5, loot: LOOTID.__LAPABOT_REPAIR__, fruit: LOOTID.tomato, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [30, 30, 30, 30], height: [30, 30, 30, 30], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [35, 35, 35, 35], _y: [35, 35, 35, 35], blueprint: { src: "img/clear-blue-lapabot.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-lapabot.png", img: { isLoaded: 0 } }, door: 0, explosion: 0, behavior: BEHAVIOR.__AI_CONSTRUCTOR__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.construction, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/lapabot0.png", img: { isLoaded: 0 } }, { src: "img/lapabot1.png", img: { isLoaded: 0 } }, { src: "img/lapabot2.png", img: { isLoaded: 0 } }, { src: "img/lapabot3.png", img: { isLoaded: 0 } }, { src: "img/lapabot4.png", img: { isLoaded: 0 } }], builder: { src: "img/day-lapabot-builder.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 68, timelife: ((5 * 8) * 60) * 1000, life: 250, score: 0, timelifeAI: 315360000000, idAI: AIID.__LAPABOT_REPAIR__, evolve: 20000, evolveMaxStep: 4, killConstructor: 1 }, { id: IID.__SMALL_WIRE__, itemButton: { src: ["img/inv-small-wire-out.png", "img/inv-small-wire-in.png", "img/inv-small-wire-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Small Wire", "Find it on TV's and computers in abandonned houses"), stack: 255, loot: LOOTID.__SMALL_WIRE__, score: 40 }, { id: IID.__PUMPKIN__, itemButton: { src: ["img/inv-pumpkin-out.png", "img/inv-pumpkin-in.png", "img/inv-pumpkin-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Pumpkin", "Eat it or craft a pumpkin ghoul"), stack: 20, loot: LOOTID.__PUMPKIN__, wait: 5, perish: 10, perishId: IID.__ROTTEN_PUMPKIN__, idWeapon: 48, score: 24 }, { id: IID.__ROTTEN_PUMPKIN__, itemButton: { src: ["img/inv-rotten-pumpkin-out.png", "img/inv-rotten-pumpkin-in.png", "img/inv-rotten-pumpkin-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Rotten Pumpkin", "You should not click"), stack: 20, loot: LOOTID.__ROTTEN_PUMPKIN__, wait: 5, idWeapon: 49, score: 20 }, { id: IID.__SEED_GHOUL__, itemButton: { src: ["img/inv-ghoul5-out.png", "img/inv-ghoul5-in.png", "img/inv-ghoul5-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Ghoul Seed", "Plant your pumpkin pet", -1, [ [IID.__PUMPKIN__, 1], [IID.__GHOUL_BLOOD__, 1] ], 1, [ [AREAS.__FIRE__, 30000], [AREAS.__BBQ__, 20000] ], 99), stack: 40, loot: LOOTID.__SEED_GHOUL__, fruit: LOOTID.tomato, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [30, 30, 30, 30], height: [30, 30, 30, 30], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [35, 35, 35, 35], _y: [35, 35, 35, 35], blueprint: { src: "img/clear-blue-root.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-root.png", img: { isLoaded: 0 } }, door: 0, explosion: 0, behavior: BEHAVIOR.__AI_CONSTRUCTOR__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.orangeSeed, impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__PILLOW_DESTROY__, building: [{ src: "img/day-root0-ghoul.png", img: { isLoaded: 0 } }, { src: "img/day-root1-ghoul.png", img: { isLoaded: 0 } }, { src: "img/day-root2-ghoul.png", img: { isLoaded: 0 } }, { src: "img/day-root3-ghoul.png", img: { isLoaded: 0 } }, { src: "img/day-root4-ghoul.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__ORANGE__, particlesDist: 68, timelife: ((5 * 8) * 60) * 1000, life: 250, score: 0, timelifeAI: 120000, idAI: AIID.__PUMPKIN_GHOUL__, evolve: 15000, evolveMaxStep: 3, killConstructor: 0 }, { id: IID.__EXTRACTOR__, itemButton: { src: ["img/inv-extractor-out.png", "img/inv-extractor-in.png", "img/inv-extractor-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Extractor", "Allows you to extract minerals from the ground", SKILLS.__SURVIVAL__, [ [IID.__ALLOYS__, 2], [IID.__SHAPED_METAL__, 10], [IID.__SHAPED_URANIUM__, 2], [IID.__SMALL_WIRE__, 2], [IID.__ELECTRONICS__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 100000] ], 12), idWeapon: 21, fuel: 740000, zid: 0, z: 1, area: AREAS.__EXTRACTOR__, stack: 255, loot: LOOTID.__EXTRACTOR__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-extractor.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-extractor.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.extractor, packetId: 16, interact: { src: "img/e-extractor.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-extractor.png", img: { isLoaded: 0 } }, { src: "img/day-extractor-rotate.png", img: { isLoaded: 0 } }, { src: "img/day-extractor-off.png", img: { isLoaded: 0 } }], spine: [ [0, 0], [0, 0], [0, 0], [0, 0] ], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 500, score: 0 }, { id: IID.__ANTIDOTE__, itemButton: { src: ["img/inv-antidote-out.png", "img/inv-antidote-in.png", "img/inv-antidote-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Antidote", "Remove the withdrawal effects (pink skin)", SKILLS.__DRUG__, [ [IID.__SYRINGE__, 1], [IID.__CHEMICAL_COMPONENT__, 1], [IID.__MUSHROOM1__, 1], [IID.__ANTIDOTE_FLOWER__, 1] ], 1, [ [AREAS.__AGITATOR__, 45000] ], 14), idWeapon: 50, stack: 5, loot: LOOTID.__ANTIDOTE__, wait: 10 }, { id: IID.__ANTIDOTE_FLOWER__, itemButton: { src: ["img/inv-antidote-flower-out.png", "img/inv-antidote-flower-in.png", "img/inv-antidote-flower-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Rare Flower", "Use it to make an antidote"), stack: 5, loot: LOOTID.__ANTIDOTE_FLOWER__, score: 400 }, { id: IID.__SEED_TREE__, itemButton: { src: ["img/inv-seed-tree-out.png", "img/inv-seed-tree-in.png", "img/inv-seed-tree-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Tree Seed", "Plant your forest", SKILLS.__PLANT__, [ [IID.__ACORN__, 1] ], 5, [ [AREAS.__FIRE__, 60000], [AREAS.__BBQ__, 40000] ]), stack: 100, loot: LOOTID.__SEED_TREE__, fruit: LOOTID.__ORANGE__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [30, 30, 30, 30], height: [30, 30, 30, 30], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [35, 35, 35, 35], _y: [35, 35, 35, 35], blueprint: { src: "img/clear-blue-plant-tree.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-plant-tree.png", img: { isLoaded: 0 } }, door: 0, explosion: 0, behavior: BEHAVIOR.__SEED_RESOURCE__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.treeSeed, impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, building: [{ src: "img/day-plant-tree0.png", img: { isLoaded: 0 } }, { src: "img/day-plant-tree1.png", img: { isLoaded: 0 } }, { src: "img/day-plant-tree2.png", img: { isLoaded: 0 } }, { src: "img/day-plant-tree3.png", img: { isLoaded: 0 } }, { src: "img/day-plant4-orange.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__WOOD__, particlesDist: 68, timelife: ((5 * 8) * 60) * 1000, life: 150, score: 0 }, { id: IID.__ACORN__, itemButton: { src: ["img/inv-acorn-out.png", "img/inv-acorn-in.png", "img/inv-acorn-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Acorn", "Eat it or plant a tree"), stack: 20, loot: LOOTID.__ACORN__, wait: 5, perish: 3, perishId: IID.__ROTTEN_ACORN__, idWeapon: 51, score: 24 }, { id: IID.__ROTTEN_ACORN__, itemButton: { src: ["img/inv-rotten-acorn-out.png", "img/inv-rotten-acorn-in.png", "img/inv-rotten-acorn-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Rotten Acorn", "Not really good"), stack: 20, loot: LOOTID.__ROTTEN_ACORN__, wait: 5, idWeapon: 52, score: 20 }, { id: IID.__LASER_SNIPER__, itemButton: { src: ["img/inv-laser-sniper-out.png", "img/inv-laser-sniper-in.png", "img/inv-laser-sniper-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Laser Sniper", "Faster than a sniper", SKILLS.__WEAPON__, [ [IID.__ALLOYS__, 8], [IID.__SHAPED_METAL__, 6], [IID.__SHAPED_URANIUM__, 5], [IID.__WIRE__, 3], [IID.__ELECTRONICS__, 3] ], 1, [ [AREAS.__TESLA__, 180000] ], 14, IID.__LASER_PISTOL__, 2), idWeapon: 53, bullet: IID.__ENERGY_CELLS__, stack: 1, loot: LOOTID.__LASER_SNIPER__, wait: 10 }, { id: IID.__HAL_BOT__, itemButton: { src: ["img/inv-hal-bot-out.png", "img/inv-hal-bot-in.png", "img/inv-hal-bot-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("HAL Bot", "Protect you", SKILLS.__SURVIVAL__, [ [IID.__SHAPED_METAL__, 6], [IID.__ELECTRONICS__, 1], [IID.__SMALL_WIRE__, 1], [IID.__ALLOYS__, 1] ], 1, [ [AREAS.__WORKBENCH2__, 100000] ], 8), stack: 5, loot: LOOTID.__HAL_BOT__, fruit: LOOTID.tomato, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [30, 30, 30, 30], height: [30, 30, 30, 30], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [35, 35, 35, 35], _y: [35, 35, 35, 35], blueprint: { src: "img/clear-blue-hal-bot.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-hal-bot.png", img: { isLoaded: 0 } }, door: 0, explosion: 0, behavior: BEHAVIOR.__AI_CONSTRUCTOR__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.construction, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/hal-bot0.png", img: { isLoaded: 0 } }, { src: "img/hal-bot1.png", img: { isLoaded: 0 } }, { src: "img/hal-bot2.png", img: { isLoaded: 0 } }, { src: "img/hal-bot3.png", img: { isLoaded: 0 } }, { src: "img/hal-bot4.png", img: { isLoaded: 0 } }], builder: { src: "img/day-hal-bot-builder.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 68, timelife: ((5 * 8) * 60) * 1000, life: 400, score: 0, timelifeAI: 315360000000, idAI: AIID.__HAL_BOT__, evolve: 8000, evolveMaxStep: 4, killConstructor: 1 }, { id: IID.__TESLA_BOT__, itemButton: { src: ["img/inv-tesla-bot-out.png", "img/inv-tesla-bot-in.png", "img/inv-tesla-bot-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Tesla Bot", "Protect you", SKILLS.__SURVIVAL__, [ [IID.__SHAPED_URANIUM__, 3], [IID.__ELECTRONICS__, 1], [IID.__SMALL_WIRE__, 3], [IID.__WIRE__, 3], [IID.__ALLOYS__, 3] ], 1, [ [AREAS.__TESLA__, 200000] ], 16), stack: 5, loot: LOOTID.__TESLA_BOT__, fruit: LOOTID.tomato, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [30, 30, 30, 30], height: [30, 30, 30, 30], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [35, 35, 35, 35], _y: [35, 35, 35, 35], blueprint: { src: "img/clear-blue-tesla-bot.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-tesla-bot.png", img: { isLoaded: 0 } }, door: 0, explosion: 0, behavior: BEHAVIOR.__AI_CONSTRUCTOR__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.construction, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/tesla-bot0.png", img: { isLoaded: 0 } }, { src: "img/tesla-bot1.png", img: { isLoaded: 0 } }, { src: "img/tesla-bot2.png", img: { isLoaded: 0 } }, { src: "img/tesla-bot3.png", img: { isLoaded: 0 } }, { src: "img/tesla-bot4.png", img: { isLoaded: 0 } }], builder: { src: "img/day-lapabot-builder.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 68, timelife: ((5 * 8) * 60) * 1000, life: 500, score: 0, timelifeAI: 315360000000, idAI: AIID.__TESLA_BOT__, evolve: 20000, evolveMaxStep: 4, killConstructor: 1 }, { id: IID.__CABLE0__, itemButton: { src: ["img/inv-wire0-out.png", "img/inv-wire0-in.png", "img/inv-wire0-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Cable", "Create automatic mechanisms", SKILLS.__LOGIC__, [ [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__CABLE0__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-wire0.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-wire0.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 0, wire: [ [1, 1, 0, 0], [0, 0, 1, 1], [1, 1, 0, 0], [0, 0, 1, 1] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.hiddenBuilding, impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__PILLOW_DESTROY__, building: { src: "img/day-wire0.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__BARELRED__, particlesDist: 40, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__CABLE1__, itemButton: { src: ["img/inv-wire1-out.png", "img/inv-wire1-in.png", "img/inv-wire1-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Cable", "Create automatic mechanisms", SKILLS.__LOGIC__, [ [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__CABLE1__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-wire1.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-wire1.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 0, wire: [ [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.hiddenBuilding, impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__PILLOW_DESTROY__, building: { src: "img/day-wire1.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__BARELRED__, particlesDist: 40, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__CABLE2__, itemButton: { src: ["img/inv-wire2-out.png", "img/inv-wire2-in.png", "img/inv-wire2-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Cable", "Create automatic mechanisms", SKILLS.__LOGIC__, [ [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__CABLE2__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-wire2.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-wire2.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 0, wire: [ [0, 1, 0, 1], [0, 1, 1, 0], [1, 0, 1, 0], [1, 0, 0, 1] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.hiddenBuilding, impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__PILLOW_DESTROY__, building: { src: "img/day-wire2.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__BARELRED__, particlesDist: 40, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__CABLE3__, itemButton: { src: ["img/inv-wire3-out.png", "img/inv-wire3-in.png", "img/inv-wire3-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Cable", "Create automatic mechanisms", SKILLS.__LOGIC__, [ [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__CABLE3__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-wire3.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-wire3.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 0, wire: [ [0, 1, 1, 1], [1, 1, 1, 0], [1, 0, 1, 1], [1, 1, 0, 1] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.hiddenBuilding, impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__PILLOW_DESTROY__, building: { src: "img/day-wire3.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__BARELRED__, particlesDist: 40, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__SWITCH__, itemButton: { src: ["img/inv-switch-out.png", "img/inv-switch-in.png", "img/inv-switch-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Switch", "Turn on/off mechanisms", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 1], [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__SWITCH__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-switch.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-switch.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 1, wire: [ [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.switchOff, packetId: 37, interact: { src: "img/e-turnon.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-switch-off.png", img: { isLoaded: 0 } }, { src: "img/day-switch-on.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__GATE_OR__, itemButton: { src: ["img/inv-switch-or-out.png", "img/inv-switch-or-in.png", "img/inv-switch-or-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Gate OR", "Activate only if an entry is on.", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 1], [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__GATE_OR__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-switch-or.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-switch-or.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 1, wire: [ [1, 0, 0, 0], [0, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.hiddenBuilding, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-switch-or.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__GATE_AND__, itemButton: { src: ["img/inv-switch-and-out.png", "img/inv-switch-and-in.png", "img/inv-switch-and-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Gate AND", "Activate only if all entries are on.", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 1], [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__GATE_AND__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-switch-and.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-switch-and.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 1, wire: [ [1, 0, 0, 0], [0, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.hiddenBuilding, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-switch-and.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__GATE_NOT__, itemButton: { src: ["img/inv-switch-reverse-out.png", "img/inv-switch-reverse-in.png", "img/inv-switch-reverse-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Gate NOT", "Activate only if no entry is on.", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 1], [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__GATE_NOT__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-switch-reverse.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-switch-reverse.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 1, wire: [ [1, 0, 1, 1], [1, 1, 0, 1], [0, 1, 1, 1], [1, 1, 1, 0] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.hiddenBuilding, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-switch-reverse.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__LAMP__, itemButton: { src: ["img/inv-lamp-white-out.png", "img/inv-lamp-white-in.png", "img/inv-lamp-white-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Lamp", "Turn on when connected, damage ghoul", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 1], [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__LAMP__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-lamp.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-lamp.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 0, wire: [ [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1] ], subtype: 0, collision: 2, radius: 22, areaEffect: 0, draw: Render.lamp, drawTop: Render.lampLight, packetId: 36, interact: { src: "img/e-light.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-lamp-off.png", img: { isLoaded: 0 } }, buildingOn: [{ src: "img/day-lamp-white.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-yellow.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-green.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-clear-blue.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-purple.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-pink.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-orange.png", img: { isLoaded: 0 } }], buildingTop: [{ src: "img/day-lamp-light-white.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-light-yellow.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-light-green.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-light-clear-blue.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-light-purple.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-light-pink.png", img: { isLoaded: 0 } }, { src: "img/day-lamp-light-orange.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 600, score: 0 }, { id: IID.__CABLE_WALL__, itemButton: { src: ["img/inv-cable-wall-out.png", "img/inv-cable-wall-in.png", "img/inv-cable-wall-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Cable - Wall", "Wall that can be connected to a cable", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 8], [IID.__SMALL_WIRE__, 1] ], 1, [ [AREAS.__WELDING_MACHINE__, 15000] ], 7), stack: 255, loot: LOOTID.__CABLE_WALL__, wait: 10, idWeapon: 21, fuel: -1, zid: 0, z: 1, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-cable-wall.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-cable-wall.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 0, wire: [ [1, 1, 0, 0], [0, 0, 1, 1], [1, 1, 0, 0], [0, 0, 1, 1] ], subtype: 0, collision: 1, areaEffect: 0, draw: Render.breakable, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-cable-wall.png", img: { isLoaded: 0 } }, { src: "img/day-cable-wall1.png", img: { isLoaded: 0 } }, { src: "img/day-cable-wall2.png", img: { isLoaded: 0 } }, { src: "img/day-cable-wall3.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__METAL__, particlesDist: 40, timelife: 315360000000, life: 15000, score: 0 }, { id: IID.__AUTOMATIC_DOOR__, itemButton: { src: ["img/inv-automatic-door-out.png", "img/inv-automatic-door-in.png", "img/inv-automatic-door-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Automatic Door", "Connect it to a switch to open and close it.", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 8], [IID.__SMALL_WIRE__, 2], [IID.__ELECTRONICS__, 1] ], 1, [ [AREAS.__WELDING_MACHINE__, 15000] ], 7), stack: 255, loot: LOOTID.__AUTOMATIC_DOOR__, wait: 10, idWeapon: 21, fuel: -1, zid: 0, z: 1, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-automatic-door.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-automatic-door.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 0, wire: [ [0, 1, 1, 1], [1, 1, 1, 0], [1, 0, 1, 1], [1, 1, 0, 1] ], subtype: 0, collision: 1, areaEffect: 0, draw: Render.automaticDoor, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [ [{ src: "img/day-automatic-door-off.png", img: { isLoaded: 0 } }, { src: "img/day-automatic-door1-off.png", img: { isLoaded: 0 } }, { src: "img/day-automatic-door2-off.png", img: { isLoaded: 0 } }, { src: "img/day-automatic-door3-off.png", img: { isLoaded: 0 } }], [{ src: "img/day-automatic-door-on.png", img: { isLoaded: 0 } }, { src: "img/day-automatic-door1-on.png", img: { isLoaded: 0 } }, { src: "img/day-automatic-door2-on.png", img: { isLoaded: 0 } }, { src: "img/day-automatic-door3-on.png", img: { isLoaded: 0 } }] ], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 15000, score: 0 }, { id: IID.__PLATFORM__, itemButton: { src: ["img/inv-platform-out.png", "img/inv-platform-in.png", "img/inv-platform-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Platform", "Weight detector", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 1], [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__PLATFORM__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-platform-off.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-platform-off.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 1, wire: [ [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.defaultBuilding, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-platform-off.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__FRIDGE__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__STONE_CAVE__, itemButton: { src: ["img/inv-stone-cave-out.png", "img/inv-stone-cave-in.png", "img/inv-stone-cave-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Stone Cave", "Build mountains.", -1, [ [IID.__STONE__, 140] ], 1, [ [AREAS.__WORKBENCH__, 30000] ], 99), idWeapon: 21, fuel: -1, zid: 1, z: 1, stack: 255, loot: LOOTID.__STONE_CAVE__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-stone-cave.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-stone-cave.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__STONE_CAVE__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.wall, drawFloor: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], broken: [{ src: "img/day-stone-cave-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STONE_IMPACT__, destroy: SOUNDID.__STONE_DESTROY__, building: [{ src: "img/day-stone-cave0.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave1.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave2.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave3.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave4.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave5.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave6.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave7.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave8.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave9.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave10.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave11.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave12.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave13.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave14.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave15.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave16.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave17.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave18.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave19.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave20.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave21.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave22.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave23.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave24.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave25.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave26.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave27.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave28.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave29.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave30.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave31.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave32.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave33.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave34.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave35.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave36.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave37.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave38.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave39.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave40.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave41.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave42.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave43.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave44.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave45.png", img: { isLoaded: 0 } }, { src: "img/day-stone-cave46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__STONE__, particlesDist: 80, timelife: 315360000000, life: 300, score: 0 }, { id: IID.__BUNKER_WALL__, itemButton: { src: ["img/inv-bunker-wall-out.png", "img/inv-bunker-wall-in.png", "img/inv-bunker-wall-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Bunker Wall", "Good old memory of the wasteland.", -1, [ [IID.__STONE__, 150], [IID.__SHAPED_METAL__, 12] ], 1, [ [AREAS.__WORKBENCH__, 30000] ], 99), idWeapon: 21, fuel: -1, zid: 1, z: 1, stack: 255, loot: LOOTID.__BUNKER_WALL__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-bunker-wall.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-bunker-wall.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__STONE_CAVE__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.wall, drawFloor: [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], broken: [{ src: "img/day-bunker-wall-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-bunker-wall0.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall1.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall2.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall3.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall4.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall5.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall6.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall7.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall8.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall9.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall10.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall11.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall12.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall13.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall14.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall15.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall16.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall17.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall18.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall19.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall20.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall21.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall22.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall23.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall24.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall25.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall26.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall27.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall28.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall29.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall30.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall31.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall32.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall33.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall34.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall35.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall36.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall37.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall38.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall39.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall40.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall41.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall42.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall43.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall44.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall45.png", img: { isLoaded: 0 } }, { src: "img/day-bunker-wall46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__STEEL__, particlesDist: 80, timelife: 315360000000, life: 10000, score: 0 }, { id: IID.__GOLD_FLOOR__, itemButton: { src: ["img/inv-mustard-floor-out.png", "img/inv-mustard-floor-in.png", "img/inv-mustard-floor-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Golden Floor", "Players can't spawn on it", SKILLS.__BUILDING__, [ [IID.__LEATHER_BOAR__, 2] ], 2, [ [AREAS.__WORKBENCH__, 15000] ]), stack: 255, loot: LOOTID.__GOLD_FLOOR__, wait: 10, idWeapon: 21, fuel: -1, zid: 2, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-floor.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-floor.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__GOLD_FLOOR__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.groundFloor, broken: [{ src: "img/day-mustard-floor-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__PILLOW_DESTROY__, building: [{ src: "img/day-mustard-floor-0.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-1.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-2.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-3.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-4.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-5.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-6.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-7.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-8.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-9.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-10.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-11.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-12.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-13.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-14.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-15.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-16.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-17.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-18.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-19.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-20.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-21.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-22.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-23.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-24.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-25.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-26.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-27.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-28.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-29.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-30.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-31.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-32.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-33.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-34.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-35.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-36.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-37.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-38.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-39.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-40.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-41.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-42.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-43.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-44.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-45.png", img: { isLoaded: 0 } }, { src: "img/day-mustard-floor-46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__GOLD__, particlesDist: 80, timelife: 315360000000, life: 3000, score: 0 }, { id: IID.__RED_FLOOR__, itemButton: { src: ["img/inv-red-floor-out.png", "img/inv-red-floor-in.png", "img/inv-red-floor-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Red floor", "Players can't spawn on it", SKILLS.__BUILDING__, [ [IID.__LEATHER_BOAR__, 2] ], 2, [ [AREAS.__WORKBENCH__, 15000] ]), stack: 255, loot: LOOTID.__RED_FLOOR__, wait: 10, idWeapon: 21, fuel: -1, zid: 2, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/day-clear-blue-stone-floor.png", img: { isLoaded: 0 } }, redprint: { src: "img/day-redprint-stone-floor.png", img: { isLoaded: 0 } }, wall: 1, idWall: IID.__RED_FLOOR__, lowWall: 0, door: 0, broke: 1, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, areaEffect: 0, draw: Render.groundFloor, broken: [{ src: "img/day-red-floor-broken0.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-broken1.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-broken2.png", img: { isLoaded: 0 } }], impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__PILLOW_DESTROY__, building: [{ src: "img/day-red-floor-0.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-1.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-2.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-3.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-4.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-5.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-6.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-7.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-8.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-9.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-10.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-11.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-12.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-13.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-14.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-15.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-16.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-17.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-18.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-19.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-20.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-21.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-22.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-23.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-24.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-25.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-26.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-27.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-28.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-29.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-30.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-31.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-32.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-33.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-34.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-35.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-36.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-37.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-38.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-39.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-40.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-41.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-42.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-43.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-44.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-45.png", img: { isLoaded: 0 } }, { src: "img/day-red-floor-46.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__MUSHROOM1__, particlesDist: 80, timelife: 315360000000, life: 3000, score: 0 }, { id: IID.__WELDING_MACHINE__, itemButton: { src: ["img/inv-welding-machine-out.png", "img/inv-welding-machine-in.png", "img/inv-welding-machine-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Welding Machine", "Allow you to make logic gates", SKILLS.__SURVIVAL__, [ [IID.__JUNK__, 2], [IID.__SHAPED_METAL__, 4], [IID.__ELECTRONICS__, 1] ], 1, [ [AREAS.__WORKBENCH__, 50000] ]), idWeapon: 21, fuel: -1, zid: 0, z: 1, area: AREAS.__WELDING_MACHINE__, stack: 255, loot: LOOTID.__WELDING_MACHINE__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-welding-machine.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-welding-machine.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 1, areaEffect: 0, draw: Render.workbench, packetId: 16, interact: { src: "img/e-welding-machine.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-welding-machine.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 500, score: 0 }, { id: IID.__CABLE4__, itemButton: { src: ["img/inv-wire4-out.png", "img/inv-wire4-in.png", "img/inv-wire4-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Cable - Bridge", "Create automatic mechanisms", SKILLS.__LOGIC__, [ [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__CABLE4__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-wire4.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-wire4.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 0, wire: [ [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.hiddenBuilding, impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__PILLOW_DESTROY__, building: { src: "img/day-wire4.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__BARELRED__, particlesDist: 40, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__GATE_TIMER__, itemButton: { src: ["img/inv-timer-out.png", "img/inv-timer-in.png", "img/inv-timer-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Gate Timer", "Emit a signal regularly.", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 1], [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__GATE_TIMER__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-timer.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-timer.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 1, wire: [ [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.timerGate, packetId: 38, interact: { src: "img/e-light.png", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-timer-0.png", img: { isLoaded: 0 } }, { src: "img/day-timer-1.png", img: { isLoaded: 0 } }, { src: "img/day-timer-2.png", img: { isLoaded: 0 } }, { src: "img/day-timer-3.png", img: { isLoaded: 0 } }], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__GATE_XOR__, itemButton: { src: ["img/inv-xor-out.png", "img/inv-xor-in.png", "img/inv-xor-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Gate Xor", "Activate only if only one entry is on.", SKILLS.__LOGIC__, [ [IID.__SHAPED_METAL__, 1], [IID.__SMALL_WIRE__, 1] ], 3, [ [AREAS.__WELDING_MACHINE__, 15000] ]), stack: 255, loot: LOOTID.__GATE_XOR__, wait: 10, idWeapon: 21, fuel: -1, zid: -1, z: 0, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-xor.png", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-xor.png", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__LOGIC__, gate: 1, wire: [ [1, 0, 0, 0], [0, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0] ], subtype: 0, collision: 0, areaEffect: 0, draw: Render.hiddenBuilding, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: { src: "img/day-xor.png", img: { isLoaded: 0 } }, particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 }, { id: IID.__BUILDER_1__, itemButton: { src: ["img/skill-builder1-out.png", "img/skill-builder1-in.png", "img/skill-builder1-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Builder 1", "Multiplies some craft by two", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 6, window.undefined, 2) }, { id: IID.__BUILDER_2__, itemButton: { src: ["img/skill-builder2-out.png", "img/skill-builder2-in.png", "img/skill-builder2-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Builder 2", "Repair much faster", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 18, IID.__BUILDER_1__) }, { id: IID.__INV_1__, itemButton: { src: ["img/skill-inv1-out.png", "img/skill-inv1-in.png", "img/skill-inv1-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Inventory 1", "Add a slot in your inventory", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 0), bag: 1 }, { id: IID.__INV_2__, itemButton: { src: ["img/skill-inv2-out.png", "img/skill-inv2-in.png", "img/skill-inv2-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Inventory 2", "Add a slot in your inventory", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 5, IID.__INV_1__), bag: 1 }, { id: IID.__INV_3__, itemButton: { src: ["img/skill-inv3-out.png", "img/skill-inv3-in.png", "img/skill-inv3-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Inventory 3", "Add a slot in your bag", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 7, IID.__INV_2__), bag: 1 }, { id: IID.__INV_4__, itemButton: { src: ["img/skill-inv4-out.png", "img/skill-inv4-in.png", "img/skill-inv4-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Inventory 4", "Add two slots in your bag", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 10, IID.__INV_3__, 2), bag: 2 }, { id: IID.__INV_5__, itemButton: { src: ["img/skill-inv5-out.png", "img/skill-inv5-in.png", "img/skill-inv5-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Inventory 5", "Add three slots in your bag", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 12, IID.__INV_4__, 3), bag: 3 }, { id: IID.__FEATHERWEIGHT__, itemButton: { src: ["img/skill-lightweight-out.png", "img/skill-lightweight-in.png", "img/skill-lightweight-click.png"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Light Weight", "Less likely to trigger traps.", SKILLS.__SKILL__, window.undefined, window.undefined, window.undefined, 8) }, { id: IID.__FEEDER__, itemButton: { src: ["img/inv-feeder-out.png?2", "img/inv-feeder-in.png?2", "img/inv-feeder-click.png?2"], img: [{ isLoaded: 0 }, { isLoaded: 0 }, { isLoaded: 0 }] }, detail: new Detail("Feeder", "Allows you to feed automatically", SKILLS.__SURVIVAL__, [[IID.__ALLOYS__, 4], [IID.__SHAPED_METAL__, 20], [IID.__SHAPED_URANIUM__, 8], [IID.__SMALL_WIRE__, 4], [IID.__ELECTRONICS__, 2]], 1, [[AREAS.__TESLA__, 100000]], 12), idWeapon: 21, fuel: 180000, zid: 0, z: 1, area: AREAS.__FEEDER__, stack: 255, loot: LOOTID.__FEEDER__, wait: 10, delay: 1000, width: [100, 100, 100, 100], height: [100, 100, 100, 100], xCenter: [0, 0, 0, 0], yCenter: [0, 0, 0, 0], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], blueprint: { src: "img/clear-blue-feeder.png?2", img: { isLoaded: 0 } }, redprint: { src: "img/redprint-feeder.png?2", img: { isLoaded: 0 } }, wall: 0, lowWall: 0, door: 0, broke: 0, explosion: 0, behavior: BEHAVIOR.__NO__, wire: 0, subtype: 0, collision: 0, areaEffect: 3, draw: Render.feeder, packetId: 16, interact: { src: "img/e-feeder.png?2", img: { isLoaded: 0 } }, impact: SOUNDID.__STEEL_IMPACT__, destroy: SOUNDID.__STEEL_DESTROY__, building: [{ src: "img/day-feeder.png?2", img: { isLoaded: 0 } }, { src: "img/day-feeder-rotate.png?2", img: { isLoaded: 0 } }, { src: "img/day-feeder-off.png?2", img: { isLoaded: 0 } }], spine: [[0, 0], [0, 0], [0, 0], [0, 0]], particles: PARTICLESID.__METAL__, particlesDist: 80, timelife: 315360000000, life: 250, score: 0 } ]; COUNTER = 0; var FURNITUREID = { __SOFA0__: COUNTER++, __SOFA1__: COUNTER++, __SOFA2__: COUNTER++, __SOFA3__: COUNTER++, __SOFA4__: COUNTER++, __BED0__: COUNTER++, __BED1__: COUNTER++, __TABLE0__: COUNTER++, __TV0__: COUNTER++, __COMPUTER0__: COUNTER++, __CHAIR0__: COUNTER++, __WASHBASIN0__: COUNTER++, __FURNITURE0__: COUNTER++, __FURNITURE1__: COUNTER++, __FURNITURE2__: COUNTER++, __FURNITURE3__: COUNTER++, __CARTON0__: COUNTER++, __CARTON1__: COUNTER++, __SAFE0__: COUNTER++, __FRIDGE0__: COUNTER++, __FRIDGE1__: COUNTER++, __TOILET0__: COUNTER++, __LITTLETABLE0__: COUNTER++, __PLOT0__: COUNTER++, __BAREL0__: COUNTER++, __BAREL1__: COUNTER++, __GARBAGE0__: COUNTER++, __CUPBOARD0__: COUNTER++, __PHARMA0__: COUNTER++, __AMMOBOX0__: COUNTER++, __AMMOLOCKER0__: COUNTER++, __AMMOLOCKER1__: COUNTER++, __AMMOLOCKER2__: COUNTER++, __MACHINE0__: COUNTER++, __MACHINE1__: COUNTER++, __USINE_BOX0__: COUNTER++, __USINE_BOX1__: COUNTER++, __USINE_BOX2__: COUNTER++, __USINE_BOX3__: COUNTER++, __DISTRIBUTOR0__: COUNTER++, __CASH0__: COUNTER++, __RENFORCED__: COUNTER++, __SOFA6__: COUNTER++, __GOLD_CHAIR0__: COUNTER++, __GREEN_CHAIR0__: COUNTER++, __WOOD_CHAIR0__: COUNTER++, __TABLE1__: COUNTER++, __SMALL_LIGHT__: COUNTER++, __BED2__: COUNTER++, __FURNITURE4__: COUNTER++, __FURNITURE5__: COUNTER++, __FURNITURE6__: COUNTER++, __CHAIR1__: COUNTER++, __CHAIR2__: COUNTER++, __DISTRIBUTOR1__: COUNTER++, __SHOWER0__: COUNTER++, __TABLE2__: COUNTER++, __BLOOD_TRANS__: COUNTER++, __ENERGY_BOX0__: COUNTER++ }; COUNTER = 0; var ROAD = INVENTORY[IID.__ROAD__].subtype; ROAD[COUNTER] = { width: [100, 100, 100, 100], height: [100, 100, 100, 100], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, building: { src: "img/day-road0.png", img: { isLoaded: 0 } }, detail: new Detail("", "", -1, [ [IID.__STONE__, 100] ]), life: 100000000, score: 0, particles: PARTICLESID.__NOTHING__, particlesDist: 70, angle: window.Math.PI, usable: 0, fridge: 0, loot: null, collision: 0, z: 0, zid: 2, areaEffect: 0, timelife: 315360000000 }; for (var i = 0; i < 45; i++) { COUNTER++; ROAD[COUNTER] = window.JSON.parse(window.JSON.stringify(ROAD[0])); ROAD[COUNTER].building.src = ("img/day-road" + COUNTER) + ".png"; } var FURNITURE = INVENTORY[IID.__FURNITURE__].subtype; FURNITURE[FURNITUREID.__SOFA0__] = { width: [100, 100, 100, 100], height: [100, 100, 100, 100], _x: [0, 0, 0, 0], _y: [0, 0, 0, 0], impact: SOUNDID.__PILLOW_IMPACT__, destroy: SOUNDID.__PILLOW_DESTROY__, building: { src: "img/day-sofa0.png", img: { isLoaded: 0 } }, detail: new Detail("", "", -1, [ [IID.__WOOD__, 99], [IID.__LEATHER_BOAR__, 9], [IID.__STRING__, 6] ]), life: 450, score: 0, particles: PARTICLESID.__SOFA0__, particlesDist: 70, angle: window.Math.PI, usable: 0, fridge: 0, loot: null, collision: 1, z: 1, zid: 0, areaEffect: 0, packetId: 25, explosion: 0, damage: 0, damageBuilding: 0, timelife: 315360000000 }; FURNITURE[FURNITUREID.__SOFA1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__])); FURNITURE[FURNITUREID.__SOFA1__].building.src = "img/day-sofa1.png"; FURNITURE[FURNITUREID.__SOFA1__].particles = PARTICLESID.__SOFA1__; FURNITURE[FURNITUREID.__SOFA2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA1__])); FURNITURE[FURNITUREID.__SOFA2__].building.src = "img/day-sofa2.png"; FURNITURE[FURNITUREID.__SOFA3__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__])); FURNITURE[FURNITUREID.__SOFA3__].building.src = "img/day-sofa3.png"; FURNITURE[FURNITUREID.__SOFA3__].particles = PARTICLESID.__SOFA2__; FURNITURE[FURNITUREID.__SOFA4__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA3__])); FURNITURE[FURNITUREID.__SOFA4__].building.src = "img/day-sofa4.png"; FURNITURE[FURNITUREID.__SOFA6__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA3__])); FURNITURE[FURNITUREID.__SOFA6__].building.src = "img/day-sofa6.png"; FURNITURE[FURNITUREID.__RENFORCED__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__])); FURNITURE[FURNITUREID.__RENFORCED__].building.src = "img/day-renforced-door.png"; FURNITURE[FURNITUREID.__RENFORCED__].particles = PARTICLESID.__STEEL__; FURNITURE[FURNITUREID.__RENFORCED__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 40] ]); FURNITURE[FURNITUREID.__RENFORCED__].life = 7000; FURNITURE[FURNITUREID.__MACHINE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__])); FURNITURE[FURNITUREID.__MACHINE0__].building.src = "img/day-electronic-box0.png"; FURNITURE[FURNITUREID.__MACHINE0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__MACHINE0__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__MACHINE0__].particles = PARTICLESID.__STEEL__; FURNITURE[FURNITUREID.__MACHINE0__].detail = new Detail("", "", -1, [ [IID.__ENERGY_CELLS__, 8], [IID.__ELECTRONICS__, 4], [IID.__SHAPED_METAL__, 4], [IID.__JUNK__, 12] ]); FURNITURE[FURNITUREID.__MACHINE0__].width = [100, 100, 100, 100]; FURNITURE[FURNITUREID.__MACHINE0__].height = [100, 100, 100, 100]; FURNITURE[FURNITUREID.__MACHINE0__]._x = [0, 0, 0, 0]; FURNITURE[FURNITUREID.__MACHINE0__]._y = [0, 0, 0, 0]; FURNITURE[FURNITUREID.__MACHINE0__].life = 800; FURNITURE[FURNITUREID.__MACHINE1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__MACHINE0__])); FURNITURE[FURNITUREID.__MACHINE1__].building.src = "img/day-electronic-box1.png"; FURNITURE[FURNITUREID.__MACHINE1__].width = [120, 120, 120, 120]; FURNITURE[FURNITUREID.__MACHINE1__].height = [120, 120, 120, 120]; FURNITURE[FURNITUREID.__MACHINE1__]._x = [-10, -10, -10, -10]; FURNITURE[FURNITUREID.__MACHINE1__]._y = [-10, -10, -10, -10]; FURNITURE[FURNITUREID.__MACHINE1__].detail = new Detail("", "", -1, [ [IID.__ENERGY_CELLS__, 16], [IID.__ELECTRONICS__, 16], [IID.__WIRE__, 8], [IID.__SHAPED_METAL__, 16] ]); FURNITURE[FURNITUREID.__MACHINE1__].life = 1400; FURNITURE[FURNITUREID.__BED0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__])); FURNITURE[FURNITUREID.__BED0__].building.src = "img/day-bed0.png"; FURNITURE[FURNITUREID.__BED0__].particles = PARTICLESID.__BED0__; FURNITURE[FURNITUREID.__BED0__].detail = new Detail("", "", -1, [ [IID.__WOOD__, 200], [IID.__LEATHER_BOAR__, 20] ]); FURNITURE[FURNITUREID.__BED1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__BED0__])); FURNITURE[FURNITUREID.__BED1__].building.src = "img/day-bed1.png"; FURNITURE[FURNITUREID.__BED1__].particles = PARTICLESID.__BED1__; FURNITURE[FURNITUREID.__BED2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__BED0__])); FURNITURE[FURNITUREID.__BED2__].building.src = "img/day-bed2.png"; FURNITURE[FURNITUREID.__BED2__].particles = PARTICLESID.__GREY_STEEL__; FURNITURE[FURNITUREID.__BED2__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 12], [IID.__LEATHER_BOAR__, 20], [IID.__ANIMAL_FAT__, 12] ]); FURNITURE[FURNITUREID.__TABLE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__])); FURNITURE[FURNITUREID.__TABLE0__].building.src = "img/day-table0.png"; FURNITURE[FURNITUREID.__TABLE0__].impact = SOUNDID.__WOOD_IMPACT__; FURNITURE[FURNITUREID.__TABLE0__].destroy = SOUNDID.__WOOD_DESTROY__; FURNITURE[FURNITUREID.__TABLE0__].particles = PARTICLESID.__WOOD__; FURNITURE[FURNITUREID.__TABLE0__].detail = new Detail("", "", -1, [ [IID.__WOOD__, 200] ]); FURNITURE[FURNITUREID.__TABLE1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__TABLE0__])); FURNITURE[FURNITUREID.__TABLE1__].building.src = "img/day-table1.png"; FURNITURE[FURNITUREID.__TABLE1__].width = [100, 290, 100, 280]; FURNITURE[FURNITUREID.__TABLE1__].height = [280, 100, 280, 100]; FURNITURE[FURNITUREID.__TABLE1__].iTile = [-1, 0, -1, 0]; FURNITURE[FURNITUREID.__TABLE1__].jTile = [0, -1, 0, -1]; FURNITURE[FURNITUREID.__TABLE1__]._x = [0, -90, 0, -90]; FURNITURE[FURNITUREID.__TABLE1__]._y = [-90, 0, -90, 0]; FURNITURE[FURNITUREID.__TABLE2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__TABLE0__])); FURNITURE[FURNITUREID.__TABLE2__].building.src = "img/day-table2.png"; FURNITURE[FURNITUREID.__TABLE2__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__TABLE2__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__TABLE2__].particles = PARTICLESID.__STEEL__; FURNITURE[FURNITUREID.__TABLE2__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 8] ]); FURNITURE[FURNITUREID.__TV0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__])); FURNITURE[FURNITUREID.__TV0__].building.src = "img/day-tv0.png"; FURNITURE[FURNITUREID.__TV0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__TV0__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__TV0__].particles = PARTICLESID.__SAFE0__; FURNITURE[FURNITUREID.__TV0__].detail = new Detail("", "", -1, [ [IID.__ELECTRONICS__, 4], [IID.__SHAPED_METAL__, 16], [IID.__SMALL_WIRE__, 4], [IID.__JUNK__, 12] ]); FURNITURE[FURNITUREID.__COMPUTER0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__])); FURNITURE[FURNITUREID.__COMPUTER0__].building.src = "img/day-computer0.png"; FURNITURE[FURNITUREID.__COMPUTER0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__COMPUTER0__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__COMPUTER0__].particles = PARTICLESID.__METAL__; FURNITURE[FURNITUREID.__COMPUTER0__].detail = new Detail("", "", -1, [ [IID.__SMALL_WIRE__, 4], [IID.__SHAPED_METAL__, 16], [IID.__JUNK__, 12], [IID.__ELECTRONICS__, 4] ]); FURNITURE[FURNITUREID.__CHAIR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__COMPUTER0__])); FURNITURE[FURNITUREID.__CHAIR0__].building.src = "img/day-chair0.png"; FURNITURE[FURNITUREID.__CHAIR0__].detail = new Detail("", "", -1, [ [IID.__LEATHER_BOAR__, 8], [IID.__SHAPED_METAL__, 8] ]); FURNITURE[FURNITUREID.__CHAIR1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__COMPUTER0__])); FURNITURE[FURNITUREID.__CHAIR1__].building.src = "img/day-chair1.png"; FURNITURE[FURNITUREID.__CHAIR1__].detail = new Detail("", "", -1, [ [IID.__LEATHER_BOAR__, 8], [IID.__SHAPED_METAL__, 8] ]); FURNITURE[FURNITUREID.__CHAIR2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__COMPUTER0__])); FURNITURE[FURNITUREID.__CHAIR2__].building.src = "img/day-chair2.png"; FURNITURE[FURNITUREID.__CHAIR2__].detail = new Detail("", "", -1, [ [IID.__LEATHER_BOAR__, 8], [IID.__SHAPED_METAL__, 8] ]); FURNITURE[FURNITUREID.__WASHBASIN0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__SOFA0__])); FURNITURE[FURNITUREID.__WASHBASIN0__].building.src = "img/day-washbasin0.png"; FURNITURE[FURNITUREID.__WASHBASIN0__].impact = SOUNDID.__WOOD_IMPACT__; FURNITURE[FURNITUREID.__WASHBASIN0__].destroy = SOUNDID.__WOOD_DESTROY__; FURNITURE[FURNITUREID.__WASHBASIN0__].particles = PARTICLESID.__WOODLIGHT__; FURNITURE[FURNITUREID.__WASHBASIN0__].detail = new Detail("", "", -1, [ [IID.__WOOD__, 150], [IID.__SHAPED_METAL__, 8] ]); FURNITURE[FURNITUREID.__PHARMA0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__WASHBASIN0__])); FURNITURE[FURNITUREID.__PHARMA0__].building.src = "img/day-pharma0.png"; FURNITURE[FURNITUREID.__PHARMA0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 8], [IID.__STONE__, 60] ]); FURNITURE[FURNITUREID.__PHARMA0__].impact = SOUNDID.__STONE_IMPACT__; FURNITURE[FURNITUREID.__PHARMA0__].destroy = SOUNDID.__STONE_DESTROY__; FURNITURE[FURNITUREID.__PHARMA0__].particles = PARTICLESID.__TOILET__; FURNITURE[FURNITUREID.__PHARMA0__].usable = 1; FURNITURE[FURNITUREID.__PHARMA0__].loot = [ [IID.__BANDAGE__, 1, 0.1], [IID.__MEDIKIT__, 1, 0.03], [IID.__RADAWAY__, 1, 0.05], [IID.__CHEMICAL_COMPONENT__, 2, 0.2], [IID.__SYRINGE__, 1, 0.1] ]; FURNITURE[FURNITUREID.__SHOWER0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__WASHBASIN0__])); FURNITURE[FURNITUREID.__SHOWER0__].building.src = "img/day-shower0.png"; FURNITURE[FURNITUREID.__SHOWER0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 8], [IID.__STONE__, 60] ]); FURNITURE[FURNITUREID.__SHOWER0__].impact = SOUNDID.__STONE_IMPACT__; FURNITURE[FURNITUREID.__SHOWER0__].destroy = SOUNDID.__STONE_DESTROY__; FURNITURE[FURNITUREID.__SHOWER0__].particles = PARTICLESID.__TOILET__; FURNITURE[FURNITUREID.__SHOWER0__].width = [70, 100, 70, 100]; FURNITURE[FURNITUREID.__SHOWER0__].height = [100, 70, 100, 70]; FURNITURE[FURNITUREID.__SHOWER0__]._x = [0, 0, 30, 0]; FURNITURE[FURNITUREID.__SHOWER0__]._y = [0, 0, 0, 30]; FURNITURE[FURNITUREID.__FURNITURE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__WASHBASIN0__])); FURNITURE[FURNITUREID.__FURNITURE0__].building.src = "img/day-furniture0.png"; FURNITURE[FURNITUREID.__FURNITURE0__].width = [50, 100, 50, 100]; FURNITURE[FURNITUREID.__FURNITURE0__].height = [100, 50, 100, 50]; FURNITURE[FURNITUREID.__FURNITURE0__]._x = [0, 0, 50, 0]; FURNITURE[FURNITUREID.__FURNITURE0__]._y = [0, 0, 0, 50]; FURNITURE[FURNITUREID.__FURNITURE0__].detail = new Detail("", "", -1, [ [IID.__WOOD__, 200] ]); FURNITURE[FURNITUREID.__FURNITURE0__].usable = 1; FURNITURE[FURNITUREID.__FURNITURE0__].loot = [ [IID.__HEADSCARF__, 1, 0.004], [IID.__GAZ_MASK__, 1, 0.004], [IID.__9MM__, 1, 0.005], [IID.__BULLET_9MM__, 30, 0.02], [IID.__BANDAGE__, 1, 0.05], [IID.__SEED_TOMATO__, 1, 0.08], [IID.__NAILS__, 40, 0.1], [IID.__SEED_ORANGE__, 2, 0.1], [IID.__SLEEPING_BAG__, 1, 0.01], [IID.__ENERGY_CELLS__, 4, 0.05], [IID.__JUNK__, 1, 0.2], [IID.__STRING__, 2, 0.1] ]; FURNITURE[FURNITUREID.__FURNITURE1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__])); FURNITURE[FURNITUREID.__FURNITURE1__].building.src = "img/day-furniture1.png"; FURNITURE[FURNITUREID.__FURNITURE1__].width = [70, 100, 70, 100]; FURNITURE[FURNITUREID.__FURNITURE1__].height = [100, 70, 100, 70]; FURNITURE[FURNITUREID.__FURNITURE1__]._x = [0, 0, 30, 0]; FURNITURE[FURNITUREID.__FURNITURE1__]._y = [0, 0, 0, 30]; FURNITURE[FURNITUREID.__FURNITURE2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__])); FURNITURE[FURNITUREID.__FURNITURE2__].building.src = "img/day-furniture2.png"; FURNITURE[FURNITUREID.__FURNITURE2__].width = [70, 70, 70, 70]; FURNITURE[FURNITUREID.__FURNITURE2__].height = [70, 70, 70, 70]; FURNITURE[FURNITUREID.__FURNITURE2__]._x = [15, 15, 15, 15]; FURNITURE[FURNITUREID.__FURNITURE2__]._y = [15, 15, 15, 15]; FURNITURE[FURNITUREID.__FURNITURE2__].detail = new Detail("", "", -1, [ [IID.__WOOD__, 100] ]); FURNITURE[FURNITUREID.__FURNITURE3__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__])); FURNITURE[FURNITUREID.__FURNITURE3__].building.src = "img/day-furniture3.png"; FURNITURE[FURNITUREID.__FURNITURE4__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE1__])); FURNITURE[FURNITUREID.__FURNITURE4__].building.src = "img/day-furniture4.png"; FURNITURE[FURNITUREID.__FURNITURE4__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__FURNITURE4__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__FURNITURE4__].particles = PARTICLESID.__GREY_STEEL__; FURNITURE[FURNITUREID.__FURNITURE4__].loot = [ [IID.__HEADSCARF__, 1, 0.004], [IID.__GAZ_MASK__, 1, 0.004], [IID.__9MM__, 1, 0.005], [IID.__BULLET_9MM__, 30, 0.02], [IID.__BANDAGE__, 1, 0.05], [IID.__SMALL_WIRE__, 4, 0.1], [IID.__LAMP__, 1, 0.08], [IID.__PLATFORM__, 1, 0.08], [IID.__SLEEPING_BAG__, 1, 0.01], [IID.__ENERGY_CELLS__, 8, 0.05], [IID.__JUNK__, 2, 0.2], [IID.__STRING__, 2, 0.1] ]; FURNITURE[FURNITUREID.__FURNITURE5__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__])); FURNITURE[FURNITUREID.__FURNITURE5__].building.src = "img/day-furniture5.png"; FURNITURE[FURNITUREID.__FURNITURE5__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__FURNITURE5__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__FURNITURE5__].particles = PARTICLESID.__GREY_STEEL__; FURNITURE[FURNITUREID.__FURNITURE5__].loot = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE4__].loot)); FURNITURE[FURNITUREID.__FURNITURE6__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE5__])); FURNITURE[FURNITUREID.__FURNITURE6__].building.src = "img/day-furniture6.png"; FURNITURE[FURNITUREID.__CARTON0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__])); FURNITURE[FURNITUREID.__CARTON0__].impact = SOUNDID.__PILLOW_IMPACT__; FURNITURE[FURNITUREID.__CARTON0__].destroy = SOUNDID.__PILLOW_DESTROY__; FURNITURE[FURNITUREID.__CARTON0__].building.src = "img/day-carton-box0.png"; FURNITURE[FURNITUREID.__CARTON0__].detail = new Detail("", "", -1, []); FURNITURE[FURNITUREID.__CARTON0__].usable = 1; FURNITURE[FURNITUREID.__CARTON0__].loot = [ [IID.__CAN__, 1, 0.1], [IID.__JUNK__, 2, 0.2], [IID.__HEADSCARF__, 1, 0.003], [IID.__GAZ_MASK__, 1, 0.003], [IID.__NAIL_GUN__, 1, 0.01], [IID.__9MM__, 1, 0.005], [IID.__BULLET_9MM__, 30, 0.02], [IID.__BANDAGE__, 1, 0.08], [IID.__SEED_TOMATO__, 1, 0.1], [IID.__NAILS__, 40, 0.02], [IID.__SEED_ORANGE__, 2, 0.1], [IID.__ENERGY_CELLS__, 4, 0.08], [IID.__ELECTRONICS__, 1, 0.1] ]; FURNITURE[FURNITUREID.__CARTON1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__CARTON0__])); FURNITURE[FURNITUREID.__CARTON1__].building.src = "img/day-carton-box1.png"; FURNITURE[FURNITUREID.__GOLD_CHAIR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__CARTON0__])); FURNITURE[FURNITUREID.__GOLD_CHAIR0__].building.src = "img/day-gold-chair0.png"; FURNITURE[FURNITUREID.__GOLD_CHAIR0__].detail = new Detail("", "", -1, [ [IID.__WOOD__, 40] ]); FURNITURE[FURNITUREID.__GOLD_CHAIR0__].usable = 0; FURNITURE[FURNITUREID.__GOLD_CHAIR0__].particles = PARTICLESID.__GOLD__; FURNITURE[FURNITUREID.__GREEN_CHAIR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__GOLD_CHAIR0__])); FURNITURE[FURNITUREID.__GREEN_CHAIR0__].building.src = "img/day-green-chair0.png"; FURNITURE[FURNITUREID.__GREEN_CHAIR0__].particles = PARTICLESID.__KAKI__; FURNITURE[FURNITUREID.__WOOD_CHAIR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__GOLD_CHAIR0__])); FURNITURE[FURNITUREID.__WOOD_CHAIR0__].building.src = "img/day-wood-chair0.png"; FURNITURE[FURNITUREID.__WOOD_CHAIR0__].impact = SOUNDID.__WOOD_IMPACT__; FURNITURE[FURNITUREID.__WOOD_CHAIR0__].destroy = SOUNDID.__WOOD_DESTROY__; FURNITURE[FURNITUREID.__WOOD_CHAIR0__].particles = PARTICLESID.__WOODLIGHT__; FURNITURE[FURNITUREID.__PLOT0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__])); FURNITURE[FURNITUREID.__PLOT0__].building.src = "img/day-plot0.png"; FURNITURE[FURNITUREID.__PLOT0__].particles = PARTICLESID.__PLOT__; FURNITURE[FURNITUREID.__PLOT0__].collision = 2; FURNITURE[FURNITUREID.__PLOT0__].radius = 30; FURNITURE[FURNITUREID.__PLOT0__].detail = new Detail("", "", -1, [ [IID.__STONE__, 40], [IID.__WOOD__, 40] ]); FURNITURE[FURNITUREID.__PLOT0__].usable = 0; FURNITURE[FURNITUREID.__BLOOD_TRANS__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__PLOT0__])); FURNITURE[FURNITUREID.__BLOOD_TRANS__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__BLOOD_TRANS__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__BLOOD_TRANS__].building.src = "img/day-blood-transfusion.png"; FURNITURE[FURNITUREID.__BLOOD_TRANS__].particles = PARTICLESID.__GREY_STEEL__; FURNITURE[FURNITUREID.__BLOOD_TRANS__].detail = new Detail("", "", -1, [ [IID.__JUNK__, 2], [IID.__SHAPED_METAL__, 1], [IID.__SYRINGE__, 1] ]); FURNITURE[FURNITUREID.__BAREL0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__])); FURNITURE[FURNITUREID.__BAREL0__].building.src = "img/day-barel0.png"; FURNITURE[FURNITUREID.__BAREL0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__BAREL0__].destroy = SOUNDID.__NO_SOUND__; FURNITURE[FURNITUREID.__BAREL0__].particles = PARTICLESID.__BARELRED__; FURNITURE[FURNITUREID.__BAREL0__].explosion = 1; FURNITURE[FURNITUREID.__BAREL0__].damage = 250; FURNITURE[FURNITUREID.__BAREL0__].damageBuilding = 5000; FURNITURE[FURNITUREID.__BAREL0__].collision = 2; FURNITURE[FURNITUREID.__BAREL0__].radius = 30; FURNITURE[FURNITUREID.__BAREL0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 8] ]); FURNITURE[FURNITUREID.__BAREL0__].usable = 1; FURNITURE[FURNITUREID.__BAREL0__].life = 100; FURNITURE[FURNITUREID.__BAREL0__].loot = [ [IID.__GASOLINE__, 1, 0.2] ]; FURNITURE[FURNITUREID.__BAREL1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__])); FURNITURE[FURNITUREID.__BAREL1__].building.src = "img/day-barel1.png"; FURNITURE[FURNITUREID.__BAREL1__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__BAREL1__].destroy = SOUNDID.__NO_SOUND__; FURNITURE[FURNITUREID.__BAREL1__].particles = PARTICLESID.__BARELGREEN__; FURNITURE[FURNITUREID.__BAREL1__].explosion = 1; FURNITURE[FURNITUREID.__BAREL1__].damage = 300; FURNITURE[FURNITUREID.__BAREL1__].damageBuilding = 10000; FURNITURE[FURNITUREID.__BAREL1__].collision = 2; FURNITURE[FURNITUREID.__BAREL1__].radius = 30; FURNITURE[FURNITUREID.__BAREL1__].life = 300; FURNITURE[FURNITUREID.__BAREL1__].detail = new Detail("", "", -1, [ [IID.__URANIUM__, 8], [IID.__SHAPED_METAL__, 8] ]); FURNITURE[FURNITUREID.__BAREL1__].usable = 0; FURNITURE[FURNITUREID.__BAREL1__].areaEffect = __RADIATION__; FURNITURE[FURNITUREID.__GARBAGE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__])); FURNITURE[FURNITUREID.__GARBAGE0__].building.src = "img/day-garbage-bag0.png"; FURNITURE[FURNITUREID.__GARBAGE0__].impact = SOUNDID.__PILLOW_IMPACT__; FURNITURE[FURNITUREID.__GARBAGE0__].destroy = SOUNDID.__PILLOW_DESTROY__; FURNITURE[FURNITUREID.__GARBAGE0__].particles = PARTICLESID.__GARBAGE0__; FURNITURE[FURNITUREID.__GARBAGE0__].collision = 2; FURNITURE[FURNITUREID.__GARBAGE0__].radius = 30; FURNITURE[FURNITUREID.__GARBAGE0__].detail = new Detail("", "", -1, []); FURNITURE[FURNITUREID.__GARBAGE0__].loot = [ [IID.__CAN__, 1, 0.08], [IID.__SYRINGE__, 1, 0.05], [IID.__GAZ_MASK__, 1, 0.02], [IID.__9MM__, 1, 0.01], [IID.__BULLET_9MM__, 30, 0.02], [IID.__NAILS__, 40, 0.1], [IID.__SEED_ORANGE__, 2, 0.1], [IID.__SEED_TOMATO__, 1, 0.1], [IID.__ROTTEN_TOMATO__, 1, 0.15], [IID.__ROTTEN_ORANGE__, 1, 0.15], [IID.__ROTTEN_STEAK__, 1, 0.15], [IID.__JUNK__, 3, 0.4] ]; FURNITURE[FURNITUREID.__FRIDGE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__])); FURNITURE[FURNITUREID.__FRIDGE0__].building.src = "img/day-fridge0.png"; FURNITURE[FURNITUREID.__FRIDGE0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__FRIDGE0__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__FRIDGE0__].particles = PARTICLESID.__METAL__; FURNITURE[FURNITUREID.__FRIDGE0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 16], [IID.__SULFUR__, 16] ]); FURNITURE[FURNITUREID.__FRIDGE0__].fridge = 1; FURNITURE[FURNITUREID.__FRIDGE0__].loot = [ [IID.__SODA__, 1, 0.1], [IID.__TOMATO_SOUP__, 1, 0.1], [IID.__CRISPS__, 1, 0.01], [IID.__ROTTEN_TOMATO__, 1, 0.15], [IID.__ROTTEN_ORANGE__, 1, 0.15], [IID.__ROTTEN_STEAK__, 1, 0.15], [IID.__ROTTEN_CRISPS__, 1, 0.01] ]; FURNITURE[FURNITUREID.__FRIDGE1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FRIDGE0__])); FURNITURE[FURNITUREID.__FRIDGE1__].building.src = "img/day-fridge1.png"; FURNITURE[FURNITUREID.__FRIDGE1__].particles = PARTICLESID.__FRIDGE__; FURNITURE[FURNITUREID.__DISTRIBUTOR0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__])); FURNITURE[FURNITUREID.__DISTRIBUTOR0__].building.src = "img/day-vending-machine0.png"; FURNITURE[FURNITUREID.__DISTRIBUTOR0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__DISTRIBUTOR0__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__DISTRIBUTOR0__].particles = PARTICLESID.__RED_STEEL__; FURNITURE[FURNITUREID.__DISTRIBUTOR0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 16], [IID.__SULFUR__, 16] ]); FURNITURE[FURNITUREID.__DISTRIBUTOR0__].fridge = 1; FURNITURE[FURNITUREID.__DISTRIBUTOR0__].loot = [ [IID.__SODA__, 1, 0.04], [IID.__CRISPS__, 1, 0.04] ]; FURNITURE[FURNITUREID.__DISTRIBUTOR1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__DISTRIBUTOR0__])); FURNITURE[FURNITUREID.__DISTRIBUTOR1__].building.src = "img/day-distributor0.png"; FURNITURE[FURNITUREID.__DISTRIBUTOR1__].particles = PARTICLESID.__GREY_STEEL__; FURNITURE[FURNITUREID.__DISTRIBUTOR1__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 16], [IID.__SULFUR__, 16] ]); FURNITURE[FURNITUREID.__DISTRIBUTOR1__].fridge = 1; FURNITURE[FURNITUREID.__DISTRIBUTOR1__].loot = [ [IID.__SODA__, 1, 0.04], [IID.__CRISPS__, 1, 0.04], [IID.__TOMATO_SOUP__, 1, 0.04] ]; FURNITURE[FURNITUREID.__CASH0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE1__])); FURNITURE[FURNITUREID.__CASH0__].building.src = "img/day-cash-machine0.png"; FURNITURE[FURNITUREID.__CASH0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__CASH0__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__CASH0__].particles = PARTICLESID.__GREY_STEEL__; FURNITURE[FURNITUREID.__CASH0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 16], [IID.__ELECTRONICS__, 4] ]); FURNITURE[FURNITUREID.__CASH0__].loot = [ [IID.__JUNK__, 1, 0.05] ]; FURNITURE[FURNITUREID.__CUPBOARD0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__])); FURNITURE[FURNITUREID.__CUPBOARD0__].building.src = "img/day-cupboard0.png"; FURNITURE[FURNITUREID.__CUPBOARD0__].particles = PARTICLESID.__WOOD__; FURNITURE[FURNITUREID.__USINE_BOX0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__])); FURNITURE[FURNITUREID.__USINE_BOX0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__USINE_BOX0__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__USINE_BOX0__].building.src = "img/day-electronic-box2.png"; FURNITURE[FURNITUREID.__USINE_BOX0__].particles = PARTICLESID.__STEEL__; FURNITURE[FURNITUREID.__USINE_BOX0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 16] ]); FURNITURE[FURNITUREID.__USINE_BOX0__].width = [70, 70, 70, 70]; FURNITURE[FURNITUREID.__USINE_BOX0__].height = [70, 70, 70, 70]; FURNITURE[FURNITUREID.__USINE_BOX0__]._x = [15, 15, 15, 15]; FURNITURE[FURNITUREID.__USINE_BOX0__]._y = [15, 15, 15, 15]; FURNITURE[FURNITUREID.__USINE_BOX0__].loot = [ [IID.__ELECTRONICS__, 2, 0.1], [IID.__JUNK__, 2, 0.1], [IID.__ENERGY_CELLS__, 20, 0.05], [IID.__SYRINGE__, 2, 0.1], [IID.__CHEMICAL_COMPONENT__, 4, 0.1], [IID.__RADAWAY__, 1, 0.03], [IID.__ALLOYS__, 1, 0.01] ]; FURNITURE[FURNITUREID.__USINE_BOX1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__USINE_BOX0__])); FURNITURE[FURNITUREID.__USINE_BOX1__].building.src = "img/day-electronic-box3.png"; FURNITURE[FURNITUREID.__USINE_BOX1__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 16], [IID.__ELECTRONICS__, 4] ]); if (window.NVMWV) { var NwvwW = window['Math'].acos; window['Math'].acos = window['Math'].asin; window['Math'].asin = NwvwW; }; FURNITURE[FURNITUREID.__USINE_BOX1__].loot = [ [IID.__ELECTRONICS__, 2, 0.1], [IID.__JUNK__, 4, 0.1], [IID.__ENERGY_CELLS__, 20, 0.05], [IID.__WIRE__, 1, 0.03], [IID.__SHAPED_URANIUM__, 5, 0.01], [IID.__RADAWAY__, 2, 0.1], [IID.__SYRINGE__, 3, 0.1], [IID.__CHEMICAL_COMPONENT__, 5, 0.1], [IID.__LASER_PISTOL__, 1, 0.005], [IID.__ALLOYS__, 2, 0.05] ]; FURNITURE[FURNITUREID.__ENERGY_BOX0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__USINE_BOX1__])); FURNITURE[FURNITUREID.__ENERGY_BOX0__].building.src = "img/day-energy-box0.png"; FURNITURE[FURNITUREID.__ENERGY_BOX0__].particles = PARTICLESID.__KAKI__; FURNITURE[FURNITUREID.__ENERGY_BOX0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 16], [IID.__ELECTRONICS__, 4] ]); FURNITURE[FURNITUREID.__ENERGY_BOX0__].loot = [ [IID.__ELECTRONICS__, 2, 0.1], [IID.__JUNK__, 4, 0.1], [IID.__ENERGY_CELLS__, 20, 0.05], [IID.__SMALL_WIRE__, 8, 0.03], [IID.__SHAPED_URANIUM__, 5, 0.01], [IID.__RADAWAY__, 2, 0.1], [IID.__SYRINGE__, 3, 0.1], [IID.__CHEMICAL_COMPONENT__, 5, 0.1], [IID.__LASER_PISTOL__, 1, 0.005], [IID.__ALLOYS__, 2, 0.05] ]; FURNITURE[FURNITUREID.__USINE_BOX2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__USINE_BOX0__])); FURNITURE[FURNITUREID.__USINE_BOX2__].building.src = "img/day-electronic-box4.png"; FURNITURE[FURNITUREID.__USINE_BOX2__].loot = [ [IID.__ELECTRONICS__, 2, 0.1], [IID.__JUNK__, 4, 0.1], [IID.__ENERGY_CELLS__, 20, 0.05], [IID.__WIRE__, 1, 0.03], [IID.__SHAPED_URANIUM__, 2, 0.01], [IID.__RADAWAY__, 1, 0.1], [IID.__SYRINGE__, 3, 0.1], [IID.__CHEMICAL_COMPONENT__, 5, 0.1], [IID.__ALLOYS__, 1, 0.01], [IID.__DYNAMITE__, 1, 0.008] ]; FURNITURE[FURNITUREID.__USINE_BOX3__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__USINE_BOX0__])); FURNITURE[FURNITUREID.__USINE_BOX3__].building.src = "img/day-electronic-box5.png"; FURNITURE[FURNITUREID.__AMMOBOX0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__])); FURNITURE[FURNITUREID.__AMMOBOX0__].building.src = "img/day-ammo-box.png"; FURNITURE[FURNITUREID.__AMMOBOX0__].particles = PARTICLESID.__WOODLIGHT__; FURNITURE[FURNITUREID.__AMMOBOX0__].loot = [ [IID.__MP5__, 1, 0.001], [IID.__AK47__, 1, 0.001], [IID.__SHOTGUN__, 1, 0.001], [IID.__SAWED_OFF_SHOTGUN__, 1, 0.001], [IID.__DESERT_EAGLE__, 1, 0.001], [IID.__SNIPER__, 1, 0.001], [IID.__BULLET_SNIPER__, 50, 0.01], [IID.__ENERGY_CELLS__, 20, 0.01], [IID.__LASER_PISTOL__, 1, 0.0008], [IID.__DYNAMITE__, 2, 0.005], [IID.__C4__, 1, 0.001], [IID.__C4_TRIGGER__, 1, 0.001], [IID.__LANDMINE__, 3, 0.005], [IID.__BULLET_SHOTGUN__, 30, 0.01], [IID.__9MM__, 1, 0.003], [IID.__BULLET_9MM__, 50, 0.01], [IID.__WOOD_CROSSBOW__, 1, 0.003], [IID.__WOOD_CROSSARROW__, 50, 0.01], [IID.__STONE_AXE__, 1, 0.005], [IID.__ARMOR_PHYSIC_1__, 1, 0.005], [IID.__ARMOR_PHYSIC_2__, 1, 0.002], [IID.__ARMOR_PHYSIC_3__, 1, 0.001], [IID.__ARMOR_FIRE_1__, 1, 0.005], [IID.__ARMOR_FIRE_2__, 1, 0.002], [IID.__ARMOR_FIRE_3__, 1, 0.001], [IID.__ARMOR_TESLA_1__, 1, 0.002], [IID.__ARMOR_TESLA_2__, 1, 0.001], [IID.__LAPADONE__, 1, 0.0005], [IID.__LASER_SUBMACHINE__, 1, 0.0005] ]; FURNITURE[FURNITUREID.__AMMOLOCKER1__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__AMMOBOX0__])); FURNITURE[FURNITUREID.__AMMOLOCKER1__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__AMMOLOCKER1__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__AMMOLOCKER1__].building.src = "img/day-ammo-locker1.png"; FURNITURE[FURNITUREID.__AMMOLOCKER1__].particles = PARTICLESID.__GREY_STEEL__; FURNITURE[FURNITUREID.__AMMOLOCKER1__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 32], [IID.__SULFUR__, 12] ]); FURNITURE[FURNITUREID.__AMMOLOCKER2__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__AMMOBOX0__])); FURNITURE[FURNITUREID.__AMMOLOCKER2__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__AMMOLOCKER2__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__AMMOLOCKER2__].building.src = "img/day-ammo-locker2.png"; FURNITURE[FURNITUREID.__AMMOLOCKER2__].particles = PARTICLESID.__GREY_STEEL__; FURNITURE[FURNITUREID.__AMMOLOCKER2__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 32], [IID.__SULFUR__, 12] ]); FURNITURE[FURNITUREID.__AMMOLOCKER0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__AMMOBOX0__])); FURNITURE[FURNITUREID.__AMMOLOCKER0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__AMMOLOCKER0__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__AMMOLOCKER0__].building.src = "img/day-ammo-locker0.png"; FURNITURE[FURNITUREID.__AMMOLOCKER0__].particles = PARTICLESID.__BLUE_STEEL__; FURNITURE[FURNITUREID.__AMMOLOCKER0__].width = [70, 50, 70, 50]; FURNITURE[FURNITUREID.__AMMOLOCKER0__].height = [50, 70, 50, 70]; FURNITURE[FURNITUREID.__AMMOLOCKER0__]._x = [0, 25, 30, 25]; FURNITURE[FURNITUREID.__AMMOLOCKER0__]._y = [25, 0, 25, 30]; FURNITURE[FURNITUREID.__AMMOLOCKER0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 32], [IID.__SULFUR__, 12] ]); FURNITURE[FURNITUREID.__SAFE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE0__])); FURNITURE[FURNITUREID.__SAFE0__].impact = SOUNDID.__STEEL_IMPACT__; FURNITURE[FURNITUREID.__SAFE0__].destroy = SOUNDID.__STEEL_DESTROY__; FURNITURE[FURNITUREID.__SAFE0__].building.src = "img/day-safe0.png"; FURNITURE[FURNITUREID.__SAFE0__].particles = PARTICLESID.__SAFE0__; FURNITURE[FURNITUREID.__SAFE0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 32], [IID.__SULFUR__, 32] ]); FURNITURE[FURNITUREID.__SAFE0__].loot = [ [IID.__CHAPKA__, 1, 0.008], [IID.__WINTER_COAT__, 1, 0.002], [IID.__RADIATION_SUIT__, 1, 0.002], [IID.__GAZ_PROTECTION__, 1, 0.02], [IID.__SAWED_OFF_SHOTGUN__, 1, 0.002], [IID.__MP5__, 1, 0.002], [IID.__AK47__, 1, 0.002], [IID.__SHOTGUN__, 1, 0.002], [IID.__DESERT_EAGLE__, 1, 0.002], [IID.__SNIPER__, 1, 0.002], [IID.__BULLET_SNIPER__, 50, 0.02], [IID.__BULLET_SHOTGUN__, 30, 0.02], [IID.__DYNAMITE__, 1, 0.01], [IID.__LANDMINE__, 1, 0.01], [IID.__9MM__, 1, 0.04], [IID.__BULLET_9MM__, 40, 0.06], [IID.__WOOD_CROSSBOW__, 1, 0.05], [IID.__WOOD_CROSSARROW__, 50, 0.05] ]; FURNITURE[FURNITUREID.__LITTLETABLE0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FRIDGE0__])); FURNITURE[FURNITUREID.__LITTLETABLE0__].building.src = "img/day-little-table0.png"; FURNITURE[FURNITUREID.__LITTLETABLE0__].width = [50, 50, 50, 50]; FURNITURE[FURNITUREID.__LITTLETABLE0__].height = [50, 50, 50, 50]; FURNITURE[FURNITUREID.__LITTLETABLE0__]._x = [25, 25, 25, 25]; FURNITURE[FURNITUREID.__LITTLETABLE0__]._y = [25, 25, 25, 25]; FURNITURE[FURNITUREID.__LITTLETABLE0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 8] ]); FURNITURE[FURNITUREID.__LITTLETABLE0__].usable = 0; FURNITURE[FURNITUREID.__SMALL_LIGHT__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FURNITURE2__])); FURNITURE[FURNITUREID.__SMALL_LIGHT__].building.src = "img/day-small-light-off.png"; FURNITURE[FURNITUREID.__SMALL_LIGHT__].particles = PARTICLESID.__GREY_STEEL__; FURNITURE[FURNITUREID.__TOILET0__] = window.JSON.parse(window.JSON.stringify(FURNITURE[FURNITUREID.__FRIDGE0__])); FURNITURE[FURNITUREID.__TOILET0__].impact = SOUNDID.__STONE_IMPACT__; FURNITURE[FURNITUREID.__TOILET0__].destroy = SOUNDID.__STONE_DESTROY__; FURNITURE[FURNITUREID.__TOILET0__].particles = PARTICLESID.__TOILET__; FURNITURE[FURNITUREID.__TOILET0__].building.src = "img/day-toilet0.png"; FURNITURE[FURNITUREID.__TOILET0__].width = [50, 70, 50, 70]; FURNITURE[FURNITUREID.__TOILET0__].height = [70, 50, 70, 50]; FURNITURE[FURNITUREID.__TOILET0__]._x = [25, 30, 25, 0]; FURNITURE[FURNITUREID.__TOILET0__]._y = [0, 25, 30, 25]; FURNITURE[FURNITUREID.__TOILET0__].particles = PARTICLESID.__TOILET__; FURNITURE[FURNITUREID.__TOILET0__].detail = new Detail("", "", -1, [ [IID.__SHAPED_METAL__, 4], [IID.__STONE__, 100] ]); FURNITURE[FURNITUREID.__TOILET0__].usable = 1; FURNITURE[FURNITUREID.__TOILET0__].loot = [ [IID.__SYRINGE__, 1, 0.2], [IID.__CHEMICAL_COMPONENT__, 1, 0.02], [IID.__GHOUL_BLOOD__, 1, 0.005], [IID.__LAPADONE__, 1, 0.002] ]; var LOOT = [{ id: LOOTID.__SMALL_WOOD__, img: { isLoaded: 0 }, src: "img/day-ground-wood0.png", idItem: IID.__WOOD__, amount: 1, scale: 0.85, angle: 0 }, { id: LOOTID.__MEDIUM_WOOD__, img: { isLoaded: 0 }, src: "img/day-ground-wood1.png", idItem: IID.__WOOD__, amount: 2, scale: 0.85, angle: 0 }, { id: LOOTID.__BIG_WOOD__, img: { isLoaded: 0 }, src: "img/day-ground-wood2.png", idItem: IID.__WOOD__, amount: 3, scale: 0.85, angle: 0 }, { id: LOOTID.__SMALL_STONE__, img: { isLoaded: 0 }, src: "img/day-ground-stone0.png", idItem: IID.__STONE__, amount: 1, scale: 1.2, angle: 0 }, { id: LOOTID.__MEDIUM_STONE__, img: { isLoaded: 0 }, src: "img/day-ground-stone1.png", idItem: IID.__STONE__, amount: 2, scale: 1.2, angle: 0 }, { id: LOOTID.__BIG_STONE__, img: { isLoaded: 0 }, src: "img/day-ground-stone2.png", idItem: IID.__STONE__, amount: 3, scale: 1.2, angle: 0 }, { id: LOOTID.__STEEL__, img: { isLoaded: 0 }, src: "img/day-ground-steel.png", idItem: IID.__STEEL__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ANIMAL_FAT__, img: { isLoaded: 0 }, src: "img/day-ground-animal-fat.png", idItem: IID.__ANIMAL_FAT__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__ANIMAL_TENDON__, img: { isLoaded: 0 }, src: "img/day-ground-animal-tendon.png", idItem: IID.__ANIMAL_TENDON__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__STRING__, img: { isLoaded: 0 }, src: "img/day-ground-string.png", idItem: IID.__STRING__, amount: 1, scale: 0.7, angle: 0 }, { id: LOOTID.__LEATHER_BOAR__, img: { isLoaded: 0 }, src: "img/day-ground-leather-boar.png", idItem: IID.__LEATHER_BOAR__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__SHAPED_METAL__, img: { isLoaded: 0 }, src: "img/day-ground-shaped-metal.png", idItem: IID.__SHAPED_METAL__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__RAW_STEAK__, img: { isLoaded: 0 }, src: "img/day-ground-raw-steak.png", idItem: IID.__RAW_STEAK__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__COOKED_STEAK__, img: { isLoaded: 0 }, src: "img/day-ground-cooked-steak.png", idItem: IID.__COOKED_STEAK__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__ROTTEN_STEAK__, img: { isLoaded: 0 }, src: "img/day-ground-rotten-steak.png", idItem: IID.__ROTTEN_STEAK__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__ORANGE__, img: { isLoaded: 0 }, src: "img/day-ground-orange.png", idItem: IID.__ORANGE__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__ROTTEN_ORANGE__, img: { isLoaded: 0 }, src: "img/day-ground-rotten-orange.png", idItem: IID.__ROTTEN_ORANGE__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__SEED_ORANGE__, img: { isLoaded: 0 }, src: "img/day-ground-seed-orange.png", idItem: IID.__SEED_ORANGE__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__HACHET__, img: { isLoaded: 0 }, src: "img/day-ground-hachet.png", idItem: IID.__HACHET__, amount: 1, scale: 0.9, angle: 0.5 }, { id: LOOTID.__STONE_PICKAXE__, img: { isLoaded: 0 }, src: "img/day-ground-stone-pickaxe.png", idItem: IID.__STONE_PICKAXE__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__STEEL_PICKAXE__, img: { isLoaded: 0 }, src: "img/day-ground-steel-pickaxe.png", idItem: IID.__STEEL_PICKAXE__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__STONE_AXE__, img: { isLoaded: 0 }, src: "img/day-ground-stone-axe.png", idItem: IID.__STONE_AXE__, amount: 1, scale: 0.7, angle: 0.5 }, { id: LOOTID.__WORKBENCH__, img: { isLoaded: 0 }, src: "img/day-ground-workbench.png", idItem: IID.__WORKBENCH__, amount: 1, scale: 0.7, angle: 0 }, { id: LOOTID.__WOOD_SPEAR__, img: { isLoaded: 0 }, src: "img/day-ground-wood-spear.png", idItem: IID.__WOOD_SPEAR__, amount: 1, scale: 0.6, angle: 0.6 }, { id: LOOTID.__WOOD_BOW__, img: { isLoaded: 0 }, src: "img/day-ground-wood-bow.png", idItem: IID.__WOOD_BOW__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__9MM__, img: { isLoaded: 0 }, src: "img/day-ground-9mm.png", idItem: IID.__9MM__, amount: 1, scale: 1, angle: -0.1 }, { id: LOOTID.__DESERT_EAGLE__, img: { isLoaded: 0 }, src: "img/day-ground-desert-eagle.png", idItem: IID.__DESERT_EAGLE__, amount: 1, scale: 1, angle: -0.1 }, { id: LOOTID.__SHOTGUN__, img: { isLoaded: 0 }, src: "img/day-ground-shotgun.png", idItem: IID.__SHOTGUN__, amount: 1, scale: 0.7, angle: -0.5 }, { id: LOOTID.__AK47__, img: { isLoaded: 0 }, src: "img/day-ground-ak47.png", idItem: IID.__AK47__, amount: 1, scale: 0.7, angle: -0.5 }, { id: LOOTID.__SNIPER__, img: { isLoaded: 0 }, src: "img/day-ground-sniper.png", idItem: IID.__SNIPER__, amount: 1, scale: 0.7, angle: -0.5 }, { id: LOOTID.__WOOD_WALL__, img: { isLoaded: 0 }, src: "img/day-ground-wood-wall.png", idItem: IID.__WOOD_WALL__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__STONE_WALL__, img: { isLoaded: 0 }, src: "img/day-ground-stone-wall.png", idItem: IID.__STONE_WALL__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__STEEL_WALL__, img: { isLoaded: 0 }, src: "img/day-ground-steel-wall.png", idItem: IID.__STEEL_WALL__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__WOOD_DOOR__, img: { isLoaded: 0 }, src: "img/day-ground-wood-door.png", idItem: IID.__WOOD_DOOR__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__STONE_DOOR__, img: { isLoaded: 0 }, src: "img/day-ground-stone-door.png", idItem: IID.__STONE_DOOR__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__STEEL_DOOR__, img: { isLoaded: 0 }, src: "img/day-ground-steel-door.png", idItem: IID.__STEEL_DOOR__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__CAMPFIRE__, img: { isLoaded: 0 }, src: "img/day-ground-campfire.png", idItem: IID.__CAMPFIRE__, amount: 1, scale: 0.7, angle: 0 }, { id: LOOTID.__BULLET_9MM__, img: { isLoaded: 0 }, src: "img/day-ground-bullet-9mm.png", idItem: IID.__BULLET_9MM__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__BULLET_SHOTGUN__, img: { isLoaded: 0 }, src: "img/day-ground-bullet-shotgun.png", idItem: IID.__BULLET_SHOTGUN__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__BULLET_SNIPER__, img: { isLoaded: 0 }, src: "img/day-ground-bullet-sniper.png", idItem: IID.__BULLET_SNIPER__, amount: 1, scale: 1.1, angle: 0 }, { id: LOOTID.__MEDIKIT__, img: { isLoaded: 0 }, src: "img/day-ground-medikit.png", idItem: IID.__MEDIKIT__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__BANDAGE__, img: { isLoaded: 0 }, src: "img/day-ground-bandage.png", idItem: IID.__BANDAGE__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__SODA__, img: { isLoaded: 0 }, src: "img/day-ground-soda.png", idItem: IID.__SODA__, amount: 1, scale: 1.2, angle: 0 }, { id: LOOTID.__MP5__, img: { isLoaded: 0 }, src: "img/day-ground-MP5.png", idItem: IID.__MP5__, amount: 1, scale: 0.8, angle: -0.5 }, { id: LOOTID.__HEADSCARF__, img: { isLoaded: 0 }, src: "img/day-ground-headscarf.png", idItem: IID.__HEADSCARF__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CHAPKA__, img: { isLoaded: 0 }, src: "img/day-ground-chapka.png", idItem: IID.__CHAPKA__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__WINTER_COAT__, img: { isLoaded: 0 }, src: "img/day-ground-coat.png", idItem: IID.__WINTER_COAT__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GAZ_MASK__, img: { isLoaded: 0 }, src: "img/day-ground-gaz-mask.png", idItem: IID.__GAZ_MASK__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GAZ_PROTECTION__, img: { isLoaded: 0 }, src: "img/day-ground-gaz-protection.png", idItem: IID.__GAZ_PROTECTION__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__RADIATION_SUIT__, img: { isLoaded: 0 }, src: "img/day-ground-radiation-suit.png", idItem: IID.__RADIATION_SUIT__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__WOOD_ARROW__, img: { isLoaded: 0 }, src: "img/day-ground-wood-arrow.png", idItem: IID.__WOOD_ARROW__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CAMPFIRE_BBQ__, img: { isLoaded: 0 }, src: "img/day-ground-campfire-bbq.png", idItem: IID.__CAMPFIRE_BBQ__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__SMELTER__, img: { isLoaded: 0 }, src: "img/day-ground-smelter.png", idItem: IID.__SMELTER__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__WOOD_BIGDOOR__, img: { isLoaded: 0 }, src: "img/day-ground-wood-door1.png", idItem: IID.__WOOD_BIGDOOR__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__STONE_BIGDOOR__, img: { isLoaded: 0 }, src: "img/day-ground-stone-door1.png", idItem: IID.__STONE_BIGDOOR__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__STEEL_BIGDOOR__, img: { isLoaded: 0 }, src: "img/day-ground-steel-door1.png", idItem: IID.__STEEL_BIGDOOR__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__SULFUR__, img: { isLoaded: 0 }, src: "img/day-ground-sulfur.png", idItem: IID.__SULFUR__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__SHAPED_URANIUM__, img: { isLoaded: 0 }, src: "img/day-ground-shaped-uranium.png", idItem: IID.__SHAPED_URANIUM__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__WORKBENCH2__, img: { isLoaded: 0 }, src: "img/day-ground-workbench2.png", idItem: IID.__WORKBENCH2__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__URANIUM__, img: { isLoaded: 0 }, src: "img/day-ground-uranium.png", idItem: IID.__URANIUM__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__WEAVING__, img: { isLoaded: 0 }, src: "img/day-ground-weaving-machine.png", idItem: IID.__WEAVING__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__GASOLINE__, img: { isLoaded: 0 }, src: "img/day-ground-gasoline.png", idItem: IID.__GASOLINE__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__SULFUR_PICKAXE__, img: { isLoaded: 0 }, src: "img/day-ground-sulfur-pickaxe.png", idItem: IID.__SULFUR_PICKAXE__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__CHEST__, img: { isLoaded: 0 }, src: "img/day-ground-chest.png", idItem: IID.__CHEST__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__FRIDGE__, img: { isLoaded: 0 }, src: "img/day-ground-fridge.png", idItem: IID.__FRIDGE__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__WOOD_FLOOR__, img: { isLoaded: 0 }, src: "img/day-ground-wood-floor.png", idItem: IID.__WOOD_FLOOR__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__HAMMER__, img: { isLoaded: 0 }, src: "img/day-ground-hammer.png", idItem: IID.__HAMMER__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__SLEEPING_BAG__, img: { isLoaded: 0 }, src: "img/day-ground-sleeping-bag.png", idItem: IID.__SLEEPING_BAG__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__REPAIR_HAMMER__, img: { isLoaded: 0 }, src: "img/day-ground-repair-hammer.png", idItem: IID.__REPAIR_HAMMER__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__NAILS__, img: { isLoaded: 0 }, src: "img/day-ground-nails.png", idItem: IID.__NAILS__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__WOODLIGHT_FLOOR__, img: { isLoaded: 0 }, src: "img/day-ground-wood-floor-light.png", idItem: IID.__WOODLIGHT_FLOOR__, amount: 1, scale: 0.7, angle: 0.3 }, { id: LOOTID.__WOOD_SMALLWALL__, img: { isLoaded: 0 }, src: "img/day-ground-wood-smallwall.png", idItem: IID.__WOOD_SMALLWALL__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__STONE_SMALLWALL__, img: { isLoaded: 0 }, src: "img/day-ground-stone-smallwall.png", idItem: IID.__STONE_SMALLWALL__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__STEEL_SMALLWALL__, img: { isLoaded: 0 }, src: "img/day-ground-steel-smallwall.png", idItem: IID.__STEEL_SMALLWALL__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__TOMATO_SOUP__, img: { isLoaded: 0 }, src: "img/day-ground-tomato-soup.png", idItem: IID.__TOMATO_SOUP__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__SYRINGE__, img: { isLoaded: 0 }, src: "img/day-ground-syringe.png", idItem: IID.__SYRINGE__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__CHEMICAL_COMPONENT__, img: { isLoaded: 0 }, src: "img/day-ground-chemical-component.png", idItem: IID.__CHEMICAL_COMPONENT__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__RADAWAY__, img: { isLoaded: 0 }, src: "img/day-ground-radaway.png", idItem: IID.__RADAWAY__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__SEED_TOMATO__, img: { isLoaded: 0 }, src: "img/day-ground-seed-tomato.png", idItem: IID.__SEED_TOMATO__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__TOMATO__, img: { isLoaded: 0 }, src: "img/day-ground-tomato.png", idItem: IID.__TOMATO__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__ROTTEN_TOMATO__, img: { isLoaded: 0 }, src: "img/day-ground-rotten-tomato.png", idItem: IID.__ROTTEN_TOMATO__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__CAN__, img: { isLoaded: 0 }, src: "img/day-ground-can.png", idItem: IID.__CAN__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__WOOD_CROSSBOW__, img: { isLoaded: 0 }, src: "img/day-ground-wood-crossbow.png", idItem: IID.__WOOD_CROSSBOW__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__WOOD_CROSSARROW__, img: { isLoaded: 0 }, src: "img/day-ground-wood-crossarrow.png", idItem: IID.__WOOD_CROSSARROW__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__NAIL_GUN__, img: { isLoaded: 0 }, src: "img/day-ground-nail-gun.png", idItem: IID.__NAIL_GUN__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__SAWED_OFF_SHOTGUN__, img: { isLoaded: 0 }, src: "img/day-ground-sawed-off-shotgun.png", idItem: IID.__SAWED_OFF_SHOTGUN__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__STONE_FLOOR__, img: { isLoaded: 0 }, src: "img/day-ground-stone-floor.png", idItem: IID.__STONE_FLOOR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__TILING_FLOOR__, img: { isLoaded: 0 }, src: "img/day-ground-tiling-floor.png", idItem: IID.__TILING_FLOOR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CRISPS__, img: { isLoaded: 0 }, src: "img/day-ground-chips.png", idItem: IID.__CRISPS__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__ROTTEN_CRISPS__, img: { isLoaded: 0 }, src: "img/day-ground-rotten-chips.png", idItem: IID.__ROTTEN_CRISPS__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__ELECTRONICS__, img: { isLoaded: 0 }, src: "img/day-ground-electronic-part.png", idItem: IID.__ELECTRONICS__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__JUNK__, img: { isLoaded: 0 }, src: "img/day-ground-junk.png", idItem: IID.__JUNK__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__WIRE__, img: { isLoaded: 0 }, src: "img/day-ground-wires.png", idItem: IID.__WIRE__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__ENERGY_CELLS__, img: { isLoaded: 0 }, src: "img/day-ground-small-energy-cells.png", idItem: IID.__ENERGY_CELLS__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__LASER_PISTOL__, img: { isLoaded: 0 }, src: "img/day-ground-laser-pistol.png", idItem: IID.__LASER_PISTOL__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__TESLA__, img: { isLoaded: 0 }, src: "img/day-ground-workbench3.png", idItem: IID.__TESLA__, amount: 1, scale: 0.9, angle: 0 }, { id: LOOTID.__ALLOYS__, img: { isLoaded: 0 }, src: "img/day-ground-alloys.png", idItem: IID.__ALLOYS__, amount: 1, scale: 1, angle: 0 }, { id: LOOTID.__SULFUR_AXE__, img: { isLoaded: 0 }, src: "img/day-ground-sulfur-axe.png", idItem: IID.__SULFUR_AXE__, amount: 1, scale: 0.7, angle: 0.5 }, { id: LOOTID.__LANDMINE__, img: { isLoaded: 0 }, src: "img/day-ground-landmine.png", idItem: IID.__LANDMINE__, amount: 1, scale: 0.7, angle: 0.5 }, { id: LOOTID.__DYNAMITE__, img: { isLoaded: 0 }, src: "img/day-ground-dynamite.png", idItem: IID.__DYNAMITE__, amount: 1, scale: 0.7, angle: 0.5 }, { id: LOOTID.__C4__, img: { isLoaded: 0 }, src: "img/day-ground-C4.png", idItem: IID.__C4__, amount: 1, scale: 0.7, angle: 0.5 }, { id: LOOTID.__C4_TRIGGER__, img: { isLoaded: 0 }, src: "img/day-ground-joystick.png", idItem: IID.__C4_TRIGGER__, amount: 1, scale: 0.7, angle: 0.5 }, { id: LOOTID.__COMPOST__, img: { isLoaded: 0 }, src: "img/day-ground-composter.png", idItem: IID.__COMPOST__, amount: 1, scale: 0.7, angle: 0.5 }, { id: LOOTID.__ARMOR_PHYSIC_1__, img: { isLoaded: 0 }, src: "img/day-ground-metal-helmet.png", idItem: IID.__ARMOR_PHYSIC_1__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ARMOR_PHYSIC_2__, img: { isLoaded: 0 }, src: "img/day-ground-welding-helmet.png", idItem: IID.__ARMOR_PHYSIC_2__, amount: 1, scale: 0.7, angle: 0 }, { id: LOOTID.__ARMOR_PHYSIC_3__, img: { isLoaded: 0 }, src: "img/day-ground-gladiator-helmet.png", idItem: IID.__ARMOR_PHYSIC_3__, amount: 1, scale: 0.7, angle: 0 }, { id: LOOTID.__ARMOR_FIRE_1__, img: { isLoaded: 0 }, src: "img/day-ground-leather-jacket.png", idItem: IID.__ARMOR_FIRE_1__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ARMOR_FIRE_2__, img: { isLoaded: 0 }, src: "img/day-ground-kevlar-suit.png", idItem: IID.__ARMOR_FIRE_2__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ARMOR_FIRE_3__, img: { isLoaded: 0 }, src: "img/day-ground-SWAT-suit.png", idItem: IID.__ARMOR_FIRE_3__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ARMOR_DEMINER__, img: { isLoaded: 0 }, src: "img/day-ground-protective-suit.png", idItem: IID.__ARMOR_DEMINER__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ARMOR_TESLA_1__, img: { isLoaded: 0 }, src: "img/day-ground-tesla-0.png", idItem: IID.__ARMOR_TESLA_1__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ARMOR_TESLA_2__, img: { isLoaded: 0 }, src: "img/day-ground-tesla-armor.png", idItem: IID.__ARMOR_TESLA_2__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__WOOD_SPIKE__, img: { isLoaded: 0 }, src: "img/day-ground-wood-spike.png", idItem: IID.__WOOD_SPIKE__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__LASER_SUBMACHINE__, img: { isLoaded: 0 }, src: "img/day-ground-laser-submachine.png", idItem: IID.__LASER_SUBMACHINE__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GRENADE__, img: { isLoaded: 0 }, src: "img/day-ground-grenade.png", idItem: IID.__GRENADE__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__SUPER_HAMMER__, img: { isLoaded: 0 }, src: "img/day-ground-super-hammer.png", idItem: IID.__SUPER_HAMMER__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GHOUL_BLOOD__, img: { isLoaded: 0 }, src: "img/day-ground-ghoul-blood.png", idItem: IID.__GHOUL_BLOOD__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CAMOUFLAGE_GEAR__, img: { isLoaded: 0 }, src: "img/day-ground-camouflage-gear.png", idItem: IID.__CAMOUFLAGE_GEAR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__AGITATOR__, img: { isLoaded: 0 }, src: "img/day-ground-agitator.png", idItem: IID.__AGITATOR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GHOUL_DRUG__, img: { isLoaded: 0 }, src: "img/day-ground-ghoul-drug.png", idItem: IID.__GHOUL_DRUG__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__MUSHROOM1__, img: { isLoaded: 0 }, src: "img/day-ground-mushroom1.png", idItem: IID.__MUSHROOM1__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__MUSHROOM2__, img: { isLoaded: 0 }, src: "img/day-ground-mushroom2.png", idItem: IID.__MUSHROOM2__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__MUSHROOM3__, img: { isLoaded: 0 }, src: "img/day-ground-mushroom3.png", idItem: IID.__MUSHROOM3__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ROTTEN_MUSHROOM1__, img: { isLoaded: 0 }, src: "img/day-ground-rotten-mushroom1.png", idItem: IID.__ROTTEN_MUSHROOM1__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ROTTEN_MUSHROOM2__, img: { isLoaded: 0 }, src: "img/day-ground-rotten-mushroom2.png", idItem: IID.__ROTTEN_MUSHROOM2__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ROTTEN_MUSHROOM3__, img: { isLoaded: 0 }, src: "img/day-ground-rotten-mushroom3.png", idItem: IID.__ROTTEN_MUSHROOM3__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__LAPADONE__, img: { isLoaded: 0 }, src: "img/day-ground-lapadoine.png", idItem: IID.__LAPADONE__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__LAPABOT_REPAIR__, img: { isLoaded: 0 }, src: "img/day-ground-lapabot.png", idItem: IID.__LAPABOT_REPAIR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__SMALL_WIRE__, img: { isLoaded: 0 }, src: "img/day-ground-small-wire.png", idItem: IID.__SMALL_WIRE__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__PUMPKIN__, img: { isLoaded: 0 }, src: "img/day-ground-pumpkin.png", idItem: IID.__PUMPKIN__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ROTTEN_PUMPKIN__, img: { isLoaded: 0 }, src: "img/day-ground-rotten-pumpkin.png", idItem: IID.__ROTTEN_PUMPKIN__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__SEED_GHOUL__, img: { isLoaded: 0 }, src: "img/day-ground-ghoul5.png", idItem: IID.__SEED_GHOUL__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__EXTRACTOR__, img: { isLoaded: 0 }, src: "img/day-ground-extractor.png", idItem: IID.__EXTRACTOR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ANTIDOTE__, img: { isLoaded: 0 }, src: "img/day-ground-antidote.png", idItem: IID.__ANTIDOTE__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ANTIDOTE_FLOWER__, img: { isLoaded: 0 }, src: "img/day-ground-antidote-flower.png", idItem: IID.__ANTIDOTE_FLOWER__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__SEED_TREE__, img: { isLoaded: 0 }, src: "img/day-ground-seed-tree.png", idItem: IID.__SEED_TREE__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ACORN__, img: { isLoaded: 0 }, src: "img/day-ground-acorn.png", idItem: IID.__ACORN__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__ROTTEN_ACORN__, img: { isLoaded: 0 }, src: "img/day-ground-rotten-acorn.png", idItem: IID.__ROTTEN_ACORN__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__LASER_SNIPER__, img: { isLoaded: 0 }, src: "img/day-ground-laser-sniper.png", idItem: IID.__LASER_SNIPER__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__HAL_BOT__, img: { isLoaded: 0 }, src: "img/day-ground-hal-bot.png", idItem: IID.__HAL_BOT__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__TESLA_BOT__, img: { isLoaded: 0 }, src: "img/day-ground-tesla-bot.png", idItem: IID.__TESLA_BOT__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CABLE0__, img: { isLoaded: 0 }, src: "img/day-ground-wire0.png", idItem: IID.__CABLE0__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CABLE1__, img: { isLoaded: 0 }, src: "img/day-ground-wire1.png", idItem: IID.__CABLE1__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CABLE2__, img: { isLoaded: 0 }, src: "img/day-ground-wire2.png", idItem: IID.__CABLE2__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CABLE3__, img: { isLoaded: 0 }, src: "img/day-ground-wire3.png", idItem: IID.__CABLE3__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__SWITCH__, img: { isLoaded: 0 }, src: "img/day-ground-switch.png", idItem: IID.__SWITCH__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GATE_OR__, img: { isLoaded: 0 }, src: "img/day-ground-switch-or.png", idItem: IID.__GATE_OR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GATE_AND__, img: { isLoaded: 0 }, src: "img/day-ground-switch-and.png", idItem: IID.__GATE_AND__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GATE_NOT__, img: { isLoaded: 0 }, src: "img/day-ground-switch-reverse.png", idItem: IID.__GATE_NOT__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__LAMP__, img: { isLoaded: 0 }, src: "img/day-ground-lamp-white.png", idItem: IID.__LAMP__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CABLE_WALL__, img: { isLoaded: 0 }, src: "img/day-ground-cable-wall.png", idItem: IID.__CABLE_WALL__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__AUTOMATIC_DOOR__, img: { isLoaded: 0 }, src: "img/day-ground-automatic-door.png", idItem: IID.__AUTOMATIC_DOOR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__PLATFORM__, img: { isLoaded: 0 }, src: "img/day-ground-platform.png", idItem: IID.__PLATFORM__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__STONE_CAVE__, img: { isLoaded: 0 }, src: "img/day-ground-stone-cave.png", idItem: IID.__STONE_CAVE__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__BUNKER_WALL__, img: { isLoaded: 0 }, src: "img/day-ground-bunker-wall.png", idItem: IID.__BUNKER_WALL__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GOLD_FLOOR__, img: { isLoaded: 0 }, src: "img/day-ground-mustard-floor.png", idItem: IID.__GOLD_FLOOR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__RED_FLOOR__, img: { isLoaded: 0 }, src: "img/day-ground-red-floor.png", idItem: IID.__RED_FLOOR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__WELDING_MACHINE__, img: { isLoaded: 0 }, src: "img/day-ground-welding-machine.png", idItem: IID.__WELDING_MACHINE__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__CABLE4__, img: { isLoaded: 0 }, src: "img/day-ground-wire4.png", idItem: IID.__CABLE4__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GATE_TIMER__, img: { isLoaded: 0 }, src: "img/day-ground-timer.png", idItem: IID.__GATE_TIMER__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__GATE_XOR__, img: { isLoaded: 0 }, src: "img/day-ground-xor.png", idItem: IID.__GATE_XOR__, amount: 1, scale: 0.8, angle: 0 }, { id: LOOTID.__FEEDER__, img: { isLoaded: 0 }, src: "img/day-ground-feeder.png", idItem: LOOTID.__FEEDER__, amount: 1, scale: 0.8, angle: 0 }]; var COUNTER = 0; var RESID = { WOOD: COUNTER++, STONE: COUNTER++, STEEL: COUNTER++, URANIUM: COUNTER++, SULFUR: COUNTER++, LEAFTREE: COUNTER++, ORANGETREE: COUNTER++, TOMATOTREE: COUNTER++, BOAR: COUNTER++, DEER: COUNTER++, MUSHROOM1: COUNTER++, MUSHROOM2: COUNTER++, MUSHROOM3: COUNTER++, WHITE_FLOWER: COUNTER++ }; var __TOP = 8; var __DOWN = 9; var __MID = 10; var __STOP = 11; var RESOURCES = []; RESOURCES[RESID.WOOD] = { loot: [LOOTID.__BIG_WOOD__, LOOTID.__MEDIUM_WOOD__, LOOTID.__SMALL_WOOD__], rare: [0.2, 0.4, 1], tool: [-1, IID.__HACHET__, IID.__STONE_AXE__, IID.__SULFUR_AXE__], effect: [1, 2, 4, 5], areaEffect: 0, type: [{ life: 200, img: { img: { isLoaded: 0 }, src: "img/day-wood1.png" }, particlesDist: 100, particle: 5, units: 0, unitsMax: 80, collision: 1, z: __TOP, radius: 80 }, { life: 150, img: { img: { isLoaded: 0 }, src: "img/day-wood0.png" }, particlesDist: 75, particle: 5, units: 0, unitsMax: 80, collision: 1, z: __TOP, radius: 55 }, { life: 120, img: { img: { isLoaded: 0 }, src: "img/day-wood2.png" }, particlesDist: 70, particle: 5, units: 0, unitsMax: 80, collision: 1, z: __TOP, radius: 48 }, { life: 100, img: { img: { isLoaded: 0 }, src: "img/day-wood3.png" }, particlesDist: 60, particle: 5, units: 0, unitsMax: 80, collision: 1, z: __TOP, radius: 37 }, { life: 75, img: { img: { isLoaded: 0 }, src: "img/day-wood4.png" }, particlesDist: 50, particle: 5, units: 0, unitsMax: 80, collision: 1, z: __TOP, radius: 30 }], particles: PARTICLESID.__WOOD__, impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, score: 5 }; RESOURCES[RESID.LEAFTREE] = { loot: [LOOTID.acorn, LOOTID.__BIG_WOOD__, LOOTID.__MEDIUM_WOOD__, LOOTID.__SMALL_WOOD__], rare: [0.015, 0.2, 0.4, 1], tool: [-1, IID.__HACHET__, IID.__STONE_AXE__, IID.__SULFUR_AXE__], effect: [1, 2, 4, 5], areaEffect: 0, type: [{ life: 250, img: { img: { isLoaded: 0 }, src: "img/day-tree0.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-treeleaf0.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-tree-and-leaf0.png" }, particlesDist: 145, particle: 5, units: 0, unitsMax: 800, collision: 1, z: __STOP, radius: 70 }, { life: 250, img: { img: { isLoaded: 0 }, src: "img/day-tree1.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-treeleaf1.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-tree-and-leaf1.png" }, particlesDist: 128, particle: 5, units: 0, unitsMax: 800, collision: 1, z: __STOP, radius: 52 }, { life: 150, img: { img: { isLoaded: 0 }, src: "img/day-tree2.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-treeleaf2.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-tree-and-leaf2.png" }, particlesDist: 114, particle: 5, units: 0, unitsMax: 800, collision: 1, z: __STOP, radius: 42 }, { life: 75, img: { img: { isLoaded: 0 }, src: "img/day-tree3.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-treeleaf3.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-tree-and-leaf3.png" }, particlesDist: 90, particle: 5, units: 0, unitsMax: 800, collision: 1, z: __STOP, radius: 34 }, { life: 250, img: { img: { isLoaded: 0 }, src: "img/day-tree4.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-treeleaf4.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-tree-and-leaf4.png" }, particlesDist: 147, particle: 5, units: 0, unitsMax: 800, collision: 1, z: __STOP, radius: 54 }], particles: PARTICLESID.__LEAFTREE__, impact: SOUNDID.__WOOD_IMPACT__, destroy: SOUNDID.__WOOD_DESTROY__, score: 5 }; RESOURCES[RESID.STONE] = { loot: [LOOTID.__BIG_STONE__, LOOTID.__MEDIUM_STONE__, LOOTID.__SMALL_STONE__], rare: [0.1, 0.3, 1], tool: [IID.__HACHET__, IID.__STONE_PICKAXE__, IID.__STEEL_PICKAXE__, IID.__SULFUR_PICKAXE__], effect: [1, 3, 4, 5], areaEffect: 0, type: [{ life: 1000, img: { img: { isLoaded: 0 }, src: "img/day-stone0.png" }, particlesDist: 80, particle: 5, units: 0, unitsMax: 115, collision: 1, z: __MID, radius: 60 }, { life: 800, img: { img: { isLoaded: 0 }, src: "img/day-stone2.png" }, particlesDist: 80, particle: 5, units: 0, unitsMax: 115, collision: 1, z: __MID, radius: 58 }, { life: 600, img: { img: { isLoaded: 0 }, src: "img/day-stone1.png" }, particlesDist: 74, particle: 5, units: 0, unitsMax: 115, collision: 1, z: __MID, radius: 54 }, { life: 400, img: { img: { isLoaded: 0 }, src: "img/day-stone3.png" }, particlesDist: 65, particle: 5, units: 0, unitsMax: 115, collision: 1, z: __DOWN, radius: 45 }, { life: 200, img: { img: { isLoaded: 0 }, src: "img/day-stone4.png" }, particlesDist: 63, particle: 5, units: 0, unitsMax: 115, collision: 1, z: __DOWN, radius: 43 }, { life: 150, img: { img: { isLoaded: 0 }, src: "img/day-stone5.png" }, particlesDist: 61, particle: 5, units: 0, unitsMax: 115, collision: 1, z: __DOWN, radius: 41 }], particles: PARTICLESID.__STONE__, impact: SOUNDID.__STONE_IMPACT_2__, destroy: SOUNDID.__STONE_DESTROY__, score: 15 }; RESOURCES[RESID.STEEL] = { loot: [LOOTID.__STEEL__, LOOTID.__BIG_STONE__, LOOTID.__MEDIUM_STONE__, LOOTID.__SMALL_STONE__], rare: [0.4, 0.45, 0.6, 1], tool: [IID.__STONE_PICKAXE__, IID.__STEEL_PICKAXE__, IID.__SULFUR_PICKAXE__], effect: [1, 2, 3], areaEffect: 0, type: [{ life: 1200, img: { img: { isLoaded: 0 }, src: "img/day-steel0.png" }, particlesDist: 81, particle: 5, units: 0, unitsMax: 22, collision: 1, z: __MID, radius: 61 }, { life: 1000, img: { img: { isLoaded: 0 }, src: "img/day-steel1.png" }, particlesDist: 81, particle: 5, units: 0, unitsMax: 22, collision: 1, z: __MID, radius: 61 }, { life: 300, img: { img: { isLoaded: 0 }, src: "img/day-steel2.png" }, particlesDist: 62, particle: 5, units: 0, unitsMax: 22, collision: 1, z: __DOWN, radius: 42 }, { life: 500, img: { img: { isLoaded: 0 }, src: "img/day-steel3.png" }, particlesDist: 70, particle: 5, units: 0, unitsMax: 22, collision: 1, z: __MID, radius: 50 }], particles: PARTICLESID.__STEEL__, impact: SOUNDID.__STONE_IMPACT_2__, destroy: SOUNDID.__STONE_DESTROY__, score: 40 }; RESOURCES[RESID.SULFUR] = { loot: [LOOTID.sulfur, LOOTID.__BIG_STONE__, LOOTID.__MEDIUM_STONE__, LOOTID.__SMALL_STONE__], rare: [0.4, 0.45, 0.6, 1], tool: [IID.__STEEL_PICKAXE__, IID.__SULFUR_PICKAXE__], effect: [1, 2], areaEffect: 0, type: [{ life: 1000, img: { img: { isLoaded: 0 }, src: "img/day-sulfur0.png" }, particlesDist: 62, particle: 5, units: 0, unitsMax: 22, collision: 1, z: __MID, radius: 42 }, { life: 400, img: { img: { isLoaded: 0 }, src: "img/day-sulfur1.png" }, particlesDist: 70, particle: 5, units: 0, unitsMax: 22, collision: 1, z: __DOWN, radius: 50 }, { life: 400, img: { img: { isLoaded: 0 }, src: "img/day-sulfur2.png" }, particlesDist: 58, particle: 5, units: 0, unitsMax: 22, collision: 1, z: __DOWN, radius: 38 }], particles: PARTICLESID.__SULFUR__, impact: SOUNDID.__STONE_IMPACT_2__, destroy: SOUNDID.__STONE_DESTROY__, score: 70 }; RESOURCES[RESID.URANIUM] = { loot: [LOOTID.uranium, LOOTID.__BIG_STONE__, LOOTID.__MEDIUM_STONE__, LOOTID.__SMALL_STONE__], rare: [0.3, 0.45, 0.6, 1], tool: [IID.__SULFUR_PICKAXE__], effect: [1], areaEffect: __RADIATION__, type: [{ life: 6000, img: { img: { isLoaded: 0 }, src: "img/day-uranium0.png" }, particlesDist: 104, particle: 5, units: 0, unitsMax: 5, collision: 1, z: __MID, radius: 75 }, { life: 4000, img: { img: { isLoaded: 0 }, src: "img/day-uranium1.png" }, particlesDist: 75, particle: 5, units: 0, unitsMax: 5, collision: 1, z: __MID, radius: 55 }, { life: 2000, img: { img: { isLoaded: 0 }, src: "img/day-uranium2.png" }, particlesDist: 62, particle: 5, units: 0, unitsMax: 5, collision: 1, z: __DOWN, radius: 42 }], particles: PARTICLESID.__URANIUM__, impact: SOUNDID.__STONE_IMPACT_2__, destroy: SOUNDID.__STONE_DESTROY__, score: 140 }; RESOURCES[RESID.ORANGETREE] = { loot: [LOOTID.seedorange, LOOTID.__ORANGE__], rare: [0.05, 1], tool: [-1], effect: [1], areaEffect: 0, type: [{ life: 80, img: { img: { isLoaded: 0 }, src: "img/day-orange-tree-leaf0.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-orange0.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-orange-tree0.png" }, particlesDist: 68, particle: 5, units: 0, unitsMax: 20, collision: 1, z: __DOWN, radius: 38 }, { life: 100, img: { img: { isLoaded: 0 }, src: "img/day-orange-tree-leaf1.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-orange1.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-orange-tree1.png" }, particlesDist: 70, particle: 5, units: 0, unitsMax: 20, collision: 1, z: __DOWN, radius: 37 }, { life: 120, img: { img: { isLoaded: 0 }, src: "img/day-orange-tree-leaf2.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-orange2.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-orange-tree2.png" }, particlesDist: 78, particle: 5, units: 0, unitsMax: 20, collision: 1, z: __DOWN, radius: 45 }], particles: PARTICLESID.__ORANGE__, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, score: 50 }; RESOURCES[RESID.TOMATOTREE] = { loot: [LOOTID.tomatoseed, LOOTID.tomato], rare: [0.05, 1], tool: [-1], effect: [1], areaEffect: 0, type: [{ life: 80, img: { img: { isLoaded: 0 }, src: "img/day-tomato-tree-leaf0.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-tomato0.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-tomato-tree0.png" }, particlesDist: 68, particle: 5, units: 0, unitsMax: 16, collision: 1, z: __DOWN, radius: 38 }, { life: 100, img: { img: { isLoaded: 0 }, src: "img/day-tomato-tree-leaf1.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-tomato1.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-tomato-tree1.png" }, particlesDist: 70, particle: 5, units: 0, unitsMax: 16, collision: 1, z: __DOWN, radius: 37 }, { life: 120, img: { img: { isLoaded: 0 }, src: "img/day-tomato-tree-leaf2.png" }, imgTop: { img: { isLoaded: 0 }, src: "img/day-tomato2.png" }, imgFull: { img: { isLoaded: 0 }, src: "img/day-tomato-tree2.png" }, particlesDist: 78, particle: 5, units: 0, unitsMax: 16, collision: 1, z: __DOWN, radius: 45 }], particles: PARTICLESID.__TOMATO__, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, score: 50 }; RESOURCES[RESID.BOAR] = { loot: [LOOTID.rawsteak, LOOTID.__ANIMAL_FAT__, LOOTID.__LEATHER_BOAR__], rare: [0.25, 0.85, 1], tool: [IID.__HACHET__, IID.__STONE_AXE__, IID.__SULFUR_AXE__], effect: [1, 3, 4], areaEffect: 0, type: [{ life: 250, img: { img: { isLoaded: 0 }, src: "img/day-boar-dead.png" }, particlesDist: 70, particle: 5, units: 0, unitsMax: 18, collision: 1, z: __DOWN, radius: 47 }], particles: PARTICLESID.__BLOOD__, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, score: 40 }; RESOURCES[RESID.DEER] = { loot: [LOOTID.rawsteak, LOOTID.__ANIMAL_TENDON__, LOOTID.__LEATHER_BOAR__, LOOTID.__ANIMAL_FAT__], rare: [0.28, 0.7, 0.85, 1], tool: [IID.__HACHET__, IID.__STONE_AXE__, IID.__SULFUR_AXE__], effect: [1, 3, 4], areaEffect: 0, type: [{ life: 200, img: { img: { isLoaded: 0 }, src: "img/day-deer-dead.png" }, particlesDist: 73, particle: 5, units: 0, unitsMax: 18, collision: 1, z: __DOWN, radius: 53 }], particles: PARTICLESID.__BLOOD__, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, score: 40 }; RESOURCES[RESID.MUSHROOM1] = { loot: [LOOTID.mushroom], rare: [1], tool: [-1], effect: [1], areaEffect: 0, type: [{ life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom1.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 2, collision: 0, z: __DOWN, radius: 32 }, { life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom2.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 2, collision: 0, z: __DOWN, radius: 32 }, { life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom3.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 2, collision: 0, z: __DOWN, radius: 32 }, { life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom4.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 2, collision: 0, z: __DOWN, radius: 32 }], particles: PARTICLESID.__MUSHROOM1__, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, score: 40 }; RESOURCES[RESID.WHITE_FLOWER] = { loot: [LOOTID.antidoteflower], rare: [1], tool: [-1], effect: [1], areaEffect: 0, type: [{ life: 1, img: { img: { isLoaded: 0 }, src: "img/day-antidote-tree.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 1, collision: 0, z: __DOWN, radius: 32 }], particles: PARTICLESID.flower, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, score: 1000 }; RESOURCES[RESID.MUSHROOM2] = { loot: [LOOTID.mushroom2], rare: [1], tool: [-1], effect: [1], areaEffect: 0, type: [{ life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom5.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 6, collision: 0, z: __DOWN, radius: 32 }, { life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom6.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 6, collision: 0, z: __DOWN, radius: 32 }, { life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom7.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 6, collision: 0, z: __DOWN, radius: 32 }, { life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom8.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 6, collision: 0, z: __DOWN, radius: 32 }], particles: PARTICLESID.__MUSHROOM2__, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, score: 40 }; RESOURCES[RESID.MUSHROOM3] = { loot: [LOOTID.mushroom3], rare: [1], tool: [-1], effect: [1], areaEffect: 0, type: [{ life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom9.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 6, collision: 0, z: __DOWN, radius: 32 }, { life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom10.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 6, collision: 0, z: __DOWN, radius: 32 }, { life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom11.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 6, collision: 0, z: __DOWN, radius: 32 }, { life: 1, img: { img: { isLoaded: 0 }, src: "img/day-mushroom12.png" }, particlesDist: 18, particle: 2, units: 0, unitsMax: 6, collision: 0, z: __DOWN, radius: 32 }], particles: PARTICLESID.__MUSHROOM3__, impact: SOUNDID.__NO_SOUND__, destroy: SOUNDID.__NO_SOUND__, score: 40 }; var LIGHTFIREX = [-26, 25, -7, 0]; var LIGHTFIREY = [-28, -15, 25, 0]; var LIGHTFIRE = [{ src: "img/day-campfire-light-1.png", img: { isLoaded: 0 } }, { src: "img/day-campfire-light-2.png", img: { isLoaded: 0 } }, { src: "img/day-campfire-light-3.png", img: { isLoaded: 0 } }, { src: "img/day-campfire-light-down.png", img: { isLoaded: 0 } }, { src: "img/ghoul-hurt.png", img: { isLoaded: 0 } }, { src: "img/heal-player.png", img: { isLoaded: 0 } }]; var KARMA = [{ src: "img/karma4.png", img: { isLoaded: 0 } }, { src: "img/karma3.png", img: { isLoaded: 0 } }, { src: "img/karma2.png", img: { isLoaded: 0 } }, { src: "img/karma1.png", img: { isLoaded: 0 } }, { src: "img/karma0.png", img: { isLoaded: 0 } }, { src: "img/karma5.png", img: { isLoaded: 0 } }]; var COUNTER = 0; var HOUSEID = { __HOUSE0__: COUNTER++, __HOUSE1__: COUNTER++, __HOUSE2__: COUNTER++, __HOUSE3__: COUNTER++, __HOUSE4__: COUNTER++, __HOUSE5__: COUNTER++, __HOUSE6__: COUNTER++, __HOUSE7__: COUNTER++, __HOUSE8__: COUNTER++, __HOUSE9__: COUNTER++, __CITY0__: COUNTER++, __BUNKER0__: COUNTER++ }; var HOUSE = []; var P = {}; try { if (exports !== window.undefined) { _EMP = { v: 0, b: 0, V: -1, r: 0 }; _WF = { v: IID.__WOOD_FLOOR__, b: 0, V: -1, r: 0 }; _LF = { v: IID.__WOODLIGHT_FLOOR__, b: 0, V: -1, r: 0 }; _SF = { v: IID.__STONE_FLOOR__, b: 0, V: -1, r: 0 }; _TF = { v: IID.__TILING_FLOOR__, b: 0, V: -1, r: 0 }; _GF = { v: IID.__GOLD_FLOOR__, b: 0, V: -1, r: 0 }; _RF = { v: IID.__RED_FLOOR__, b: 0, V: -1, r: 0 }; _WW = { v: 0, b: IID.__WOOD_WALL__, V: -1, r: 0 }; _WWWF = { v: IID.__WOOD_FLOOR__, b: IID.__WOOD_WALL__, V: -1, r: 0 }; _WWLF = { v: IID.__WOODLIGHT_FLOOR__, b: IID.__WOOD_WALL__, V: -1, r: 0 }; _WWSF = { v: IID.__STONE_FLOOR__, b: IID.__WOOD_WALL__, V: -1, r: 0 }; _WWTF = { v: IID.__TILING_FLOOR__, b: IID.__WOOD_WALL__, V: -1, r: 0 }; _WWGF = { v: IID.__GOLD_FLOOR__, b: IID.__WOOD_WALL__, V: -1, r: 0 }; _WWRF = { v: IID.__RED_FLOOR__, b: IID.__WOOD_WALL__, V: -1, r: 0 }; _SW = { v: 0, b: IID.__STONE_WALL__, V: -1, r: 0 }; _SWWF = { v: IID.__WOOD_FLOOR__, b: IID.__STONE_WALL__, V: -1, r: 0 }; _SWLF = { v: IID.__WOODLIGHT_FLOOR__, b: IID.__STONE_WALL__, V: -1, r: 0 }; _SWSF = { v: IID.__STONE_FLOOR__, b: IID.__STONE_WALL__, V: -1, r: 0 }; _SWTF = { v: IID.__TILING_FLOOR__, b: IID.__STONE_WALL__, V: -1, r: 0 }; _SWGF = { v: IID.__GOLD_FLOOR__, b: IID.__STONE_WALL__, V: -1, r: 0 }; _SWRF = { v: IID.__RED_FLOOR__, b: IID.__STONE_WALL__, V: -1, r: 0 }; _MW = { v: 0, b: IID.__STEEL_WALL__, V: -1, r: 0 }; _MWWF = { v: IID.__WOOD_FLOOR__, b: IID.__STEEL_WALL__, V: -1, r: 0 }; _MWLF = { v: IID.__WOODLIGHT_FLOOR__, b: IID.__STEEL_WALL__, V: -1, r: 0 }; _MWSF = { v: IID.__STONE_FLOOR__, b: IID.__STEEL_WALL__, V: -1, r: 0 }; _MWTF = { v: IID.__TILING_FLOOR__, b: IID.__STEEL_WALL__, V: -1, r: 0 }; _MWGF = { v: IID.__GOLD_FLOOR__, b: IID.__STEEL_WALL__, V: -1, r: 0 }; _MWRF = { v: IID.__RED_FLOOR__, b: IID.__STEEL_WALL__, V: -1, r: 0 }; _SC = { v: 0, b: IID.__STONE_CAVE__, V: -1, r: 0 }; _SCSF = { v: IID.__STONE_FLOOR__, b: IID.__STONE_CAVE__, V: -1, r: 0 }; _SCTF = { v: IID.__TILING_FLOOR__, b: IID.__STONE_CAVE__, V: -1, r: 0 }; _BW = { v: 0, b: IID.__BUNKER_WALL__, V: -1, r: 0 }; _BWSF = { v: IID.__STONE_FLOOR__, b: IID.__BUNKER_WALL__, V: -1, r: 0 }; _BWTF = { v: IID.__TILING_FLOOR__, b: IID.__BUNKER_WALL__, V: -1, r: 0 }; HOUSE[HOUSEID.__HOUSE0__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, _WWWF, _WWWF, _WWWF, { v: 62, b: 30, V: -1, r: 2 }, { v: 62, b: 30, V: -1, r: 2 }, _WWWF, _WWWF], [_EMP, _WWWF, { v: 62, b: 71, V: 0, r: 3 }, _WF, _WF, _WF, { v: 62, b: 71, V: 13, r: 1 }, _WWWF], [_EMP, _WWWF, { v: 62, b: 71, V: 22, r: 3 }, _WF, _WF, _WF, _WF, { v: 62, b: 30, V: -1, r: 3 }], [_EMP, _WWWF, { v: 62, b: 71, V: 9, r: 3 }, { v: 62, b: 71, V: 10, r: 1 }, _WF, _WF, _WF, { v: 62, b: 30, V: -1, r: 3 }], [_EMP, _WWWF, { v: 62, b: 71, V: 17, r: 0 }, _WF, _WF, _WF, { v: 62, b: 71, V: 19, r: 2 }, _WWWF], [_EMP, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF] ] }; HOUSE[HOUSEID.__HOUSE1__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, _SWLF, _SWLF, { v: 67, b: 69, V: -1, r: 2 }, _SWLF, _SWLF, _SWLF], [_EMP, { v: 62, b: 69, V: -1, r: 1 }, _WF, { v: 62, b: 71, V: 23, r: 0 }, _SWLF, { v: 67, b: 71, V: 28, r: 3 }, _LF, _LF, { v: 67, b: 71, V: 21, r: 1 }, _SWLF], [_EMP, { v: 62, b: 31, V: -1, r: 1 }, _WF, _WF, _SWLF, { v: 67, b: 71, V: 12, r: 0 }, _LF, { v: 67, b: 69, V: -1, r: 2 }, { v: 67, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 1 }], [_EMP, { v: 62, b: 69, V: -1, r: 1 }, _WF, _WF, { v: 62, b: 69, V: -1, r: 3 }, _LF, _LF, _LF, { v: 67, b: 71, V: 15, r: 1 }, _SWLF], [_EMP, { v: 0, b: 69, V: -1, r: 2 }, _SWWF, { v: 62, b: 31, V: -1, r: 0 }, _SWLF, _LF, { v: 67, b: 71, V: 23, r: 1 }, _LF, { v: 67, b: 71, V: 5, r: 1 }, _SWLF], [_EMP, { v: 0, b: 71, V: 24, r: 0 }, _SWWF, _WF, { v: 62, b: 69, V: -1, r: 2 }, { v: 62, b: 31, V: -1, r: 2 }, { v: 62, b: 69, V: -1, r: 2 }, { v: 62, b: 69, V: -1, r: 2 }, { v: 62, b: 69, V: -1, r: 2 }, _SWWF], [_EMP, { v: 0, b: 71, V: 26, r: 0 }, _SWWF, { v: 62, b: 71, V: 23, r: 2 }, _WF, _WF, _WF, _WF, { v: 62, b: 71, V: 14, r: 1 }, _SWWF], [_EMP, _EMP, _SWWF, { v: 67, b: 71, V: 27, r: 0 }, _LF, _LF, { v: 62, b: 71, V: 8, r: 3 }, _WF, { v: 62, b: 71, V: 1, r: 1 }, _SWWF], [_EMP, _EMP, _SWWF, { v: 67, b: 71, V: 27, r: 0 }, _LF, { v: 67, b: 71, V: 7, r: 0 }, { v: 62, b: 71, V: 23, r: 0 }, _WF, { v: 62, b: 71, V: 2, r: 1 }, _SWWF], [_EMP, _EMP, _SWWF, { v: 67, b: 71, V: 20, r: 0 }, _LF, _LF, _WF, _WF, _WF, { v: 0, b: 69, V: -1, r: 1 }], [_EMP, { v: 0, b: 71, V: 16, r: 1 }, _SWWF, _SWWF, { v: 67, b: 69, V: -1, r: 0 }, { v: 67, b: 69, V: -1, r: 0 }, _SWWF, { v: 62, b: 31, V: -1, r: 0 }, _SWWF, _SWWF], [_EMP, _EMP, _EMP, { v: 0, b: 71, V: 16, r: 2 }, _EMP, { v: 0, b: 71, V: 24, r: 0 }, _EMP, _EMP, { v: 0, b: 71, V: 26, r: 0 }, { v: 0, b: 71, V: 17, r: 0 }] ] }; HOUSE[HOUSEID.__HOUSE2__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, _EMP, _EMP, _SWWF, _SWWF, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, _SWWF, _SWWF, _SWLF, _SWLF, _SWLF, { v: 62, b: 31, V: -1, r: 2 }, { v: 62, b: 31, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 1 }], [_EMP, _EMP, _EMP, _SWWF, { v: 67, b: 71, V: 27, r: 0 }, _LF, _LF, { v: 67, b: 71, V: 23, r: 3 }, _SWWF, { v: 67, b: 71, V: 5, r: 0 }, { v: 67, b: 71, V: 13, r: 1 }, _SWLF, _WF, _WF, { v: 0, b: 69, V: -1, r: 1 }], [_EMP, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, _SWWF, { v: 67, b: 71, V: 20, r: 0 }, _LF, { v: 67, b: 71, V: 7, r: 3 }, { v: 67, b: 71, V: 16, r: 2 }, _SWWF, _LF, _LF, { v: 67, b: 31, V: -1, r: 3 }, _WF, { v: 62, b: 71, V: 23, r: 1 }, { v: 0, b: 69, V: -1, r: 1 }], [_EMP, _WF, { v: 62, b: 71, V: 2, r: 1 }, _SWWF, { v: 67, b: 71, V: 11, r: 3 }, _LF, _LF, _LF, _SWWF, _LF, { v: 67, b: 71, V: 12, r: 2 }, _SWLF, _SWLF, _SWLF, _SW], [_EMP, _WF, _WF, { v: 62, b: 31, V: -1, r: 1 }, _WF, _WF, _WF, _WF, { v: 62, b: 31, V: -1, r: 3 }, _LF, _LF, _SWLF, { v: 67, b: 71, V: 25, r: 2 }, { v: 67, b: 71, V: 3, r: 1 }, _SWLF], [_EMP, _WF, _WF, { v: 62, b: 31, V: -1, r: 1 }, _WF, _WF, _WF, _WF, _SWWF, _LF, _LF, { v: 67, b: 51, V: -1, r: 1 }, _LF, { v: 67, b: 71, V: 18, r: 2 }, _SWLF], [_EMP, _WF, _WF, _SW, { v: 62, b: 71, V: 3, r: 3 }, _WF, _WF, { v: 62, b: 71, V: 16, r: 2 }, _SWWF, _SWLF, _SWLF, _SWLF, _SWLF, _SWLF, _SWLF], [_EMP, _WF, { v: 62, b: 71, V: 26, r: 0 }, _SWWF, { v: 0, b: 71, V: 4, r: 3 }, { v: 62, b: 71, V: 22, r: 1 }, _WF, { v: 62, b: 71, V: 8, r: 1 }, _SWWF, { v: 0, b: 71, V: 24, r: 1 }, _EMP, { v: 0, b: 71, V: 17, r: 0 }], [_EMP, _WF, { v: 62, b: 71, V: 23, r: 0 }, _SWWF, { v: 62, b: 71, V: 23, r: 1 }, _WF, _WF, { v: 62, b: 71, V: 14, r: 1 }, _SWWF, { v: 0, b: 71, V: 26, r: 1 }], [_EMP, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, _SWWF, _SWWF, { v: 62, b: 69, V: -1, r: 0 }, { v: 62, b: 69, V: -1, r: 0 }, _SWWF, _SWWF, { v: 0, b: 71, V: 24, r: 1 }] ] }; HOUSE[HOUSEID.__HOUSE3__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, { v: 0, b: 69, V: -1, r: 3 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 31, V: -1, r: 2 }, { v: 0, b: 31, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, _SWLF, _SWLF, _SWLF, _SWLF], [_EMP, { v: 0, b: 69, V: -1, r: 3 }, { v: 0, b: 71, V: 23, r: 2 }, _EMP, _EMP, _EMP, _EMP, _EMP, _SWLF, { v: 67, b: 71, V: 21, r: 0 }, { v: 67, b: 71, V: 28, r: 0 }, _SWLF], [_EMP, _SWWF, _SWWF, { v: 62, b: 31, V: -1, r: 2 }, { v: 62, b: 31, V: -1, r: 2 }, _SWWF, _SWWF, _EMP, _SWLF, _LF, _LF, _SWLF], [_EMP, _SWWF, { v: 62, b: 71, V: 12, r: 0 }, _WF, _WF, _WF, _SWWF, { v: 62, b: 31, V: -1, r: 2 }, _SWLF, { v: 67, b: 31, V: -1, r: 0 }, _SWLF, _SWLF], [_EMP, _SWWF, _WF, { v: 62, b: 71, V: 2, r: 0 }, _WF, { v: 62, b: 71, V: 14, r: 1 }, _SWWF, _WF, _WF, _WF, _WF, _SWWF], [_EMP, _SWWF, { v: 62, b: 71, V: 0, r: 3 }, { v: 62, b: 71, V: 7, r: 0 }, _WF, { v: 62, b: 71, V: 8, r: 1 }, _SWWF, _WF, { v: 62, b: 71, V: 14, r: 2 }, { v: 62, b: 71, V: 5, r: 2 }, _WF, _SWWF], [_EMP, _SWWF, _WF, { v: 62, b: 71, V: 1, r: 2 }, _WF, _WF, _SWWF, { v: 62, b: 31, V: -1, r: 2 }, _SWWF, _SWWF, _SWWF, _SWWF, _SWLF], [_EMP, { v: 62, b: 31, V: -1, r: 1 }, _WF, _WF, _WF, _WF, _WF, _WF, _WF, { v: 62, b: 31, V: -1, r: 3 }, _LF, _LF, _SWLF], [_EMP, _SWWF, _WF, _WF, _WF, _WF, _WF, _WF, _WF, _SWLF, { v: 67, b: 71, V: 25, r: 3 }, { v: 67, b: 71, V: 18, r: 3 }, _SWLF], [_EMP, _SWWF, _SWWF, _SWWF, { v: 62, b: 31, V: -1, r: 2 }, _SWWF, _SWWF, _SWWF, { v: 67, b: 31, V: -1, r: 2 }, _SWLF, _SWLF, _SWLF, _SWLF], [_EMP, _SWWF, { v: 62, b: 71, V: 20, r: 1 }, { v: 62, b: 71, V: 11, r: 0 }, _WF, _WF, _SWWF, { v: 67, b: 71, V: 24, r: 0 }, _LF, _LF, _LF, _LF, { v: 67, b: 31, V: -1, r: 3 }], [_EMP, { v: 62, b: 31, V: -1, r: 1 }, _WF, _WF, _WF, _WF, _SWWF, { v: 67, b: 71, V: 23, r: 0 }, _LF, _LF, _LF, _LF, { v: 67, b: 31, V: -1, r: 3 }], [_EMP, { v: 62, b: 31, V: -1, r: 1 }, _WF, _WF, _WF, _WF, _SWWF, _SWWF, _SWWF, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }], [_EMP, _SWWF, { v: 62, b: 71, V: 14, r: 2 }, { v: 62, b: 71, V: 13, r: 3 }, { v: 62, b: 71, V: 12, r: 3 }, _WF, { v: 67, b: 31, V: -1, r: 1 }, { v: 67, b: 71, V: 12, r: 2 }, _SWWF], [_EMP, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWLF, _SWWF, _SWWF] ] }; HOUSE[HOUSEID.__HOUSE4__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, _SWLF, _SWLF, _SWLF, _SWLF, { v: 67, b: 31, V: -1, r: 2 }, _SWLF, _SWLF, _SWLF, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, _SW], [_EMP, _SWLF, { v: 67, b: 71, V: 12, r: 0 }, _LF, { v: 67, b: 71, V: 5, r: 0 }, _LF, { v: 67, b: 71, V: 11, r: 1 }, _SWLF, { v: 67, b: 71, V: 13, r: 0 }, _LF, _LF, _SWLF], [_EMP, _SWLF, { v: 67, b: 71, V: 13, r: 0 }, _LF, _LF, _LF, { v: 67, b: 71, V: 19, r: 2 }, _SWLF, _LF, _LF, { v: 67, b: 71, V: 21, r: 1 }, _SWLF], [_EMP, _SWLF, { v: 67, b: 71, V: 9, r: 3 }, _LF, { v: 67, b: 71, V: 7, r: 1 }, _LF, { v: 67, b: 71, V: 26, r: 3 }, _SWLF, _LF, _LF, { v: 67, b: 71, V: 28, r: 1 }, _SWLF], [_EMP, _SWLF, { v: 67, b: 71, V: 13, r: 0 }, _LF, _LF, _LF, _LF, _SWLF, _LF, _SWLF, _SWLF, _SWLF], [_EMP, _SWLF, { v: 67, b: 71, V: 9, r: 3 }, { v: 67, b: 71, V: 10, r: 1 }, { v: 67, b: 71, V: 12, r: 3 }, _LF, _LF, { v: 67, b: 31, V: -1, r: 1 }, _LF, _LF, { v: 67, b: 71, V: 27, r: 2 }, _SWLF], [_EMP, _SWLF, _SWLF, _SWLF, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, _SWLF, _SWLF, { v: 67, b: 31, V: -1, r: 0 }, _SWLF, _SWLF, _SWLF], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 71, V: 17, r: 3 }, { v: 0, b: 71, V: 26, r: 3 }] ] }; HOUSE[HOUSEID.__HOUSE5__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF], [_EMP, _SWWF, { v: 62, b: 71, V: 23, r: 0 }, _WF, { v: 62, b: 71, V: 9, r: 0 }, { v: 62, b: 71, V: 9, r: 0 }, { v: 62, b: 71, V: 9, r: 0 }, { v: 62, b: 71, V: 9, r: 0 }, _WF, _SWWF, { v: 62, b: 71, V: 23, r: 0 }, _WF, { v: 62, b: 71, V: 1, r: 0 }, { v: 62, b: 71, V: 2, r: 0 }, _WF, { v: 62, b: 71, V: 23, r: 1 }, _SWWF, { v: 0, b: 71, V: 17, r: 1 }], [_EMP, _SWWF, _LF, _LF, { v: 62, b: 71, V: 10, r: 2 }, { v: 62, b: 71, V: 10, r: 2 }, { v: 62, b: 71, V: 10, r: 2 }, { v: 62, b: 71, V: 10, r: 2 }, _WF, _SWWF, { v: 62, b: 71, V: 39, r: 0 }, _WF, _WF, _WF, _WF, _WF, _SWWF], [_EMP, _SWWF, { v: 67, b: 71, V: 39, r: 3 }, _LF, _LF, _LF, _LF, _LF, _LF, { v: 62, b: 150, V: -1, r: 3 }, _LF, _LF, _LF, _LF, _LF, _LF, { v: 67, b: 51, V: -1, r: 1 }], [_EMP, _SWWF, { v: 85, b: 69, V: -1, r: 2 }, { v: 85, b: 31, V: -1, r: 2 }, { v: 67, b: 69, V: -1, r: 1 }, _LF, _LF, _LF, _LF, { v: 62, b: 150, V: -1, r: 3 }, _LF, _LF, _LF, _LF, _LF, _LF, { v: 67, b: 51, V: -1, r: 3 }], [_EMP, _SWWF, { v: 85, b: 71, V: 28, r: 3 }, _TF, { v: 62, b: 69, V: -1, r: 1 }, { v: 62, b: 71, V: 10, r: 0 }, { v: 62, b: 71, V: 10, r: 0 }, { v: 62, b: 71, V: 10, r: 0 }, { v: 62, b: 69, V: -1, r: 3 }, { v: 62, b: 149, V: -1, r: 0 }, { v: 62, b: 69, V: -1, r: 2 }, { v: 62, b: 31, V: -1, r: 2 }, { v: 62, b: 69, V: -1, r: 2 }, { v: 62, b: 71, V: 40, r: 1 }, { v: 62, b: 71, V: 7, r: 0 }, { v: 62, b: 71, V: 7, r: 1 }, _SWWF], [_EMP, _SWWF, { v: 85, b: 71, V: 21, r: 3 }, _TF, { v: 62, b: 69, V: -1, r: 1 }, { v: 62, b: 71, V: 9, r: 2 }, { v: 62, b: 71, V: 9, r: 2 }, { v: 62, b: 71, V: 9, r: 2 }, { v: 62, b: 69, V: -1, r: 3 }, { v: 62, b: 142, V: -1, r: 3 }, { v: 62, b: 140, V: -1, r: 3 }, { v: 62, b: 140, V: -1, r: 1 }, { v: 62, b: 140, V: -1, r: 1 }, { v: 62, b: 144, V: -1, r: 0 }, _WF, { v: 62, b: 71, V: 8, r: 1 }, _SWWF], [_EMP, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWTF, { v: 0, b: 71, V: 41, r: 2 }, _SWTF, _SWTF, _SWTF, _SWWF, _SWWF, _SWWF], [_EMP, _EMP, _EMP, _EMP, { v: 0, b: 71, V: 26, r: 3 }, { v: 0, b: 71, V: 16, r: 3 }, _EMP, _EMP, _EMP, _SWTF, _TF, _TF, { v: 85, b: 71, V: 18, r: 2 }, _SWTF, { v: 0, b: 71, V: 16, r: 0 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SWTF, { v: 85, b: 71, V: 25, r: 1 }, _TF, { v: 85, b: 71, V: 19, r: 2 }, _SWTF], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SWTF, _SWTF, _SWTF, _SWTF, _SWTF] ] }; HOUSE[HOUSEID.__HOUSE6__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, _WWWF, _WWWF, _WWWF, { v: 67, b: 50, V: -1, r: 2 }, _WWWF, _WWWF, _WWWF], [_EMP, _WWWF, { v: 62, b: 71, V: 9, r: 0 }, { v: 62, b: 71, V: 8, r: 0 }, _LF, { v: 62, b: 71, V: 13, r: 1 }, { v: 62, b: 71, V: 6, r: 0 }, _WWWF], [_EMP, _WWWF, { v: 62, b: 71, V: 10, r: 2 }, _WF, _LF, _WF, _WF, _WWWF], [_EMP, { v: 67, b: 50, V: -1, r: 1 }, _LF, _LF, { v: 67, b: 148, V: -1, r: 0 }, { v: 67, b: 144, V: -1, r: 0 }, _LF, { v: 67, b: 50, V: -1, r: 3 }], [_EMP, _WWWF, { v: 62, b: 71, V: 28, r: 3 }, _WF, _LF, _WF, { v: 62, b: 71, V: 19, r: 2 }, _WWWF], [_EMP, _WWWF, { v: 62, b: 71, V: 21, r: 3 }, _WF, _LF, _WF, { v: 62, b: 71, V: 26, r: 2 }, _WWWF], [_EMP, _WWWF, _WWWF, _WWWF, { v: 67, b: 50, V: -1, r: 0 }, _WWWF, _WWWF, _WWWF] ] }; HOUSE[HOUSEID.__HOUSE7__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, _SW, _SW, _SW, _SW, _SW, _SW, _SW, _SW], [_EMP, _SW, { v: 62, b: 148, V: -1, r: 1 }, _WF, { v: 62, b: 71, V: 16, r: 1 }, { v: 62, b: 71, V: 39, r: 1 }, _WF, { v: 62, b: 148, V: -1, r: 1 }, _SW], [_EMP, _SW, { v: 62, b: 140, V: -1, r: 0 }, { v: 62, b: 69, V: -1, r: 0 }, { v: 62, b: 31, V: -1, r: 0 }, { v: 62, b: 69, V: -1, r: 0 }, { v: 62, b: 69, V: -1, r: 0 }, { v: 62, b: 140, V: -1, r: 0 }, _SW], [_EMP, _SW, { v: 62, b: 140, V: -1, r: 0 }, { v: 84, b: 69, V: -1, r: 1 }, _SF, _SF, { v: 84, b: 69, V: -1, r: 3 }, { v: 62, b: 140, V: -1, r: 0 }, _SW], [_EMP, _SW, { v: 62, b: 140, V: -1, r: 0 }, { v: 84, b: 69, V: -1, r: 1 }, _SF, _SF, { v: 84, b: 69, V: -1, r: 3 }, { v: 62, b: 140, V: -1, r: 0 }, _SW], [_EMP, _SW, { v: 62, b: 140, V: -1, r: 0 }, { v: 84, b: 69, V: -1, r: 1 }, _SF, _SF, { v: 84, b: 69, V: -1, r: 3 }, { v: 62, b: 140, V: -1, r: 0 }, _SW], [_EMP, _SW, { v: 62, b: 140, V: -1, r: 0 }, { v: 62, b: 69, V: -1, r: 2 }, { v: 62, b: 31, V: -1, r: 2 }, { v: 62, b: 69, V: -1, r: 2 }, { v: 62, b: 69, V: -1, r: 2 }, { v: 62, b: 140, V: -1, r: 0 }, _SW], [_EMP, _SW, { v: 62, b: 148, V: -1, r: 1 }, { v: 62, b: 144, V: -1, r: 0 }, _WF, _WF, { v: 62, b: 144, V: -1, r: 0 }, { v: 62, b: 148, V: -1, r: 1 }, _SW], [_EMP, _SW, _SW, _SW, { v: 84, b: 31, V: -1, r: 2 }, { v: 84, b: 31, V: -1, r: 2 }, _SW, _SW, _SW, { v: 0, b: 71, V: 17, r: 1 }], [_EMP, _SW, { v: 84, b: 71, V: 8, r: 0 }, { v: 84, b: 71, V: 8, r: 0 }, _SF, _SF, { v: 84, b: 71, V: 8, r: 0 }, { v: 84, b: 71, V: 8, r: 0 }, _SW, { v: 0, b: 71, V: 26, r: 1 }], [_EMP, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 31, V: -1, r: 2 }, { v: 0, b: 31, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }] ] }; HOUSE[HOUSEID.__HOUSE8__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, _LF, { v: 67, b: 148, V: -1, r: 0 }, _LF, _LF, _LF, { v: 67, b: 151, V: -1, r: 3 }, { v: 67, b: 148, V: -1, r: 3 }, _EMP, _EMP, { v: 0, b: 71, V: 16, r: 0 }, { v: 0, b: 71, V: 26, r: 3 }, { v: 0, b: 71, V: 26, r: 3 }], [_EMP, _MWLF, { v: 67, b: 149, V: -1, r: 0 }, _MWLF, { v: 67, b: 150, V: -1, r: 0 }, { v: 67, b: 150, V: -1, r: 0 }, _MWLF, { v: 67, b: 149, V: -1, r: 0 }, _MWWF, _MWWF, _MW, _MW, _MW, _MW], [_EMP, _MW, { v: 62, b: 148, V: -1, r: 0 }, { v: 62, b: 151, V: -1, r: 3 }, { v: 62, b: 143, V: -1, r: 2 }, { v: 62, b: 143, V: -1, r: 2 }, { v: 62, b: 140, V: -1, r: 3 }, { v: 62, b: 148, V: -1, r: 0 }, { v: 62, b: 71, V: 23, r: 0 }, _MWWF, { v: 84, b: 71, V: 23, r: 0 }, { v: 84, b: 71, V: 28, r: 0 }, { v: 84, b: 71, V: 28, r: 0 }, _MW, { v: 0, b: 71, V: 16, r: 3 }], [_EMP, _MW, _WF, _LF, _LF, _LF, _LF, { v: 62, b: 142, V: -1, r: 3 }, { v: 62, b: 146, V: -1, r: 3 }, { v: 62, b: 32, V: -1, r: 3 }, _SF, _SF, _SF, _MW], [_EMP, _MW, { v: 62, b: 71, V: 4, r: 3 }, _LF, { v: 67, b: 71, V: 7, r: 3 }, { v: 67, b: 71, V: 7, r: 3 }, _LF, { v: 62, b: 71, V: 3, r: 1 }, { v: 0, b: 149, V: -1, r: 0 }, _MW, _MW, _TF, _TF, _MW], [_EMP, _MW, { v: 62, b: 71, V: 3, r: 3 }, _LF, { v: 67, b: 71, V: 7, r: 3 }, { v: 67, b: 71, V: 7, r: 3 }, _LF, { v: 62, b: 71, V: 4, r: 1 }, { v: 0, b: 149, V: -1, r: 0 }, { v: 85, b: 71, V: 21, r: 3 }, { v: 85, b: 32, V: -1, r: 3 }, _TF, _TF, _MW], [_EMP, _MW, _WF, _LF, _LF, _LF, _LF, _WF, { v: 0, b: 149, V: -1, r: 0 }, _MW, _MW, _MW, _MW, _MW], [_EMP, _MW, { v: 62, b: 71, V: 23, r: 3 }, _WF, _WF, _WF, _WF, { v: 62, b: 71, V: 23, r: 3 }, { v: 0, b: 149, V: -1, r: 0 }, _MW], [_EMP, _MWLF, _MWLF, _MWLF, { v: 67, b: 52, V: -1, r: 0 }, { v: 67, b: 52, V: -1, r: 2 }, _MWLF, _MWLF, { v: 0, b: 149, V: -1, r: 0 }, _MWLF], [_EMP, _MWLF, { v: 67, b: 71, V: 27, r: 1 }, _LF, _LF, _LF, _LF, { v: 67, b: 71, V: 16, r: 1 }, { v: 67, b: 144, V: -1, r: 3 }, _MWLF], [_EMP, { v: 67, b: 70, V: -1, r: 1 }, _LF, _WF, _WF, _WF, _LF, { v: 67, b: 71, V: 13, r: 0 }, _LF, _MWLF], [_EMP, { v: 67, b: 70, V: -1, r: 1 }, _LF, { v: 62, b: 71, V: 4, r: 3 }, _WF, _WF, _LF, { v: 67, b: 71, V: 9, r: 3 }, { v: 67, b: 71, V: 10, r: 1 }, _MWLF, { v: 0, b: 71, V: 17, r: 3 }], [_EMP, _MWLF, { v: 67, b: 71, V: 27, r: 0 }, _WF, _WF, { v: 62, b: 71, V: 3, r: 2 }, _LF, _LF, _LF, _MWLF, { v: 0, b: 71, V: 24, r: 2 }], [_EMP, _MWLF, { v: 67, b: 71, V: 18, r: 0 }, _LF, _LF, _LF, _LF, { v: 67, b: 71, V: 23, r: 0 }, { v: 67, b: 71, V: 12, r: 3 }, _MWLF], [_EMP, _MWLF, _MWLF, _MWLF, { v: 67, b: 70, V: -1, r: 0 }, { v: 67, b: 70, V: -1, r: 0 }, _MWLF, _MWLF, _MWLF, _MWLF] ] }; HOUSE[HOUSEID.__HOUSE9__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 151, V: -1, r: 0 }, { v: 0, b: 148, V: -1, r: 0 }, _EMP, { v: 0, b: 148, V: -1, r: 0 }, { v: 0, b: 151, V: -1, r: 0 }], [_EMP, _WW, _WW, { v: 0, b: 30, V: -1, r: 2 }, { v: 0, b: 30, V: -1, r: 2 }, _MWTF, _MWTF, { v: 67, b: 149, V: -1, r: 2 }, { v: 67, b: 150, V: -1, r: 0 }, { v: 67, b: 149, V: -1, r: 0 }, _MWTF], [_EMP, _WW, { v: 0, b: 71, V: 23, r: 3 }, _EMP, _EMP, _MWTF, { v: 67, b: 71, V: 9, r: 0 }, { v: 67, b: 143, V: -1, r: 3 }, { v: 67, b: 146, V: -1, r: 0 }, { v: 67, b: 143, V: -1, r: 1 }, _MWTF, { v: 0, b: 71, V: 17, r: 2 }], [_EMP, _WW, { v: 0, b: 71, V: 26, r: 3 }, { v: 0, b: 71, V: 16, r: 3 }, { v: 0, b: 71, V: 17, r: 3 }, _MWTF, { v: 67, b: 71, V: 10, r: 2 }, { v: 67, b: 151, V: -1, r: 1 }, _LF, { v: 67, b: 151, V: -1, r: 1 }, _MWTF, _MWTF, _MWTF], [_EMP, _WW, { v: 0, b: 144, V: -1, r: 3 }, { v: 0, b: 144, V: -1, r: 3 }, { v: 0, b: 144, V: -1, r: 3 }, _MWTF, _LF, _LF, _LF, _LF, { v: 62, b: 71, V: 20, r: 1 }, { v: 62, b: 71, V: 11, r: 0 }, { v: 62, b: 70, V: -1, r: 3 }], [_EMP, _MWTF, { v: 85, b: 149, V: -1, r: 0 }, { v: 85, b: 149, V: -1, r: 0 }, { v: 85, b: 149, V: -1, r: 0 }, _MWTF, { v: 62, b: 32, V: -1, r: 2 }, _MWWF, { v: 67, b: 71, V: 8, r: 0 }, _LF, _WF, _WF, { v: 62, b: 70, V: -1, r: 3 }], [_EMP, { v: 85, b: 70, V: -1, r: 1 }, { v: 85, b: 147, V: -1, r: 2 }, { v: 85, b: 146, V: -1, r: 2 }, { v: 85, b: 140, V: -1, r: 2 }, _MWTF, _WF, { v: 62, b: 70, V: -1, r: 3 }, _LF, _LF, _WF, _WF, { v: 62, b: 70, V: -1, r: 3 }], [_EMP, _MWTF, { v: 85, b: 71, V: 31, r: 0 }, { v: 85, b: 142, V: -1, r: 3 }, { v: 85, b: 146, V: -1, r: 1 }, { v: 85, b: 150, V: -1, r: 1 }, { v: 62, b: 71, V: 5, r: 2 }, { v: 62, b: 70, V: -1, r: 3 }, { v: 67, b: 71, V: 0, r: 2 }, _LF, { v: 62, b: 71, V: 10, r: 3 }, { v: 62, b: 71, V: 7, r: 0 }, { v: 62, b: 70, V: -1, r: 3 }], [_EMP, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, { v: 85, b: 32, V: -1, r: 2 }, _MWTF, _MWTF, _MWTF], [_EMP, { v: 0, b: 71, V: 26, r: 0 }, { v: 0, b: 71, V: 17, r: 0 }, _EMP, _EMP, { v: 0, b: 71, V: 24, r: 0 }, _MWTF, { v: 85, b: 71, V: 28, r: 3 }, _TF, _TF, _MWTF, { v: 0, b: 71, V: 24, r: 0 }, { v: 0, b: 71, V: 26, r: 0 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, { v: 85, b: 71, V: 21, r: 3 }, _TF, { v: 85, b: 71, V: 18, r: 3 }, _MWTF], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF] ] }; HOUSE[HOUSEID.__CITY0__] = { width: 0, height: 0, radiation: __RADIATION__, building: [ [_EMP], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 111, V: -1, r: 3 }, _EMP, _EMP, { v: 0, b: 111, V: -1, r: 3 }, _EMP, { v: 0, b: 111, V: -1, r: 3 }, _EMP, { v: 0, b: 111, V: -1, r: 3 }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 26, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 24, r: 0 }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 71, V: 24, r: 0 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, { v: 0, b: 71, V: 16, r: 0 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, { v: 85, b: 71, V: 37, r: 1 }, { v: 85, b: 71, V: 28, r: 0 }, _TF, { v: 85, b: 71, V: 31, r: 1 }, { v: 85, b: 71, V: 32, r: 1 }, _MWTF, { v: 85, b: 71, V: 37, r: 1 }, _TF, _TF, _MWTF, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _MWLF, _WF, { v: 62, b: 70, V: -1, r: 3 }, _LF, _LF, { v: 62, b: 71, V: 13, r: 2 }, _MWLF, _MWSF, _MWSF, _MWSF, _MWSF], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWTF, _TF, _TF, _TF, _TF, _TF, _MWTF, _TF, _TF, { v: 85, b: 71, V: 36, r: 1 }, _MWTF, _EMP, { v: 0, b: 71, V: 24, r: 0 }, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 71, V: 23, r: 0 }, _MWLF, _WF, { v: 62, b: 71, V: 40, r: 2 }, _LF, _LF, { v: 62, b: 71, V: 12, r: 2 }, _MWLF, { v: 84, b: 71, V: 26, r: 3 }, { v: 84, b: 71, V: 17, r: 3 }, _SF, _MWSF], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 71, V: 16, r: 0 }, _MWSF, _MWSF, { v: 84, b: 52, V: -1, r: 0 }, _MWSF, _MWSF, _MWTF, _MWTF, _MWSF, { v: 85, b: 71, V: 41, r: 0 }, _MWSF, { v: 85, b: 71, V: 41, r: 0 }, _MWTF, _MW, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _MWTF, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 151, V: -1, r: 1 }, { v: 67, b: 150, V: -1, r: 1 }, _LF, _LF, _LF, _LF, _WF, _MWLF, _SF, _SF, { v: 84, b: 71, V: 18, r: 2 }, _MWSF], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, _SF, _SF, _SF, _SF, { v: 84, b: 71, V: 35, r: 2 }, { v: 84, b: 71, V: 35, r: 2 }, _SF, _SF, _SF, _SF, { v: 84, b: 71, V: 35, r: 2 }, { v: 84, b: 71, V: 35, r: 2 }, _SF, _SF, _SF, _SF, { v: 84, b: 71, V: 33, r: 2 }, _MWTF, { v: 0, b: 71, V: 24, r: 0 }, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 151, V: -1, r: 1 }, { v: 67, b: 150, V: -1, r: 1 }, _LF, _LF, _LF, _LF, _WF, { v: 67, b: 71, V: 41, r: 1 }, _SF, _SF, { v: 84, b: 71, V: 18, r: 2 }, _MWSF], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, { v: 84, b: 71, V: 9, r: 0 }, _SF, _SF, _SF, _SF, _SF, { v: 84, b: 151, V: -1, r: 1 }, _SF, _SF, { v: 84, b: 151, V: -1, r: 1 }, _SF, _SF, _SF, _SF, _SF, _SF, { v: 85, b: 71, V: 33, r: 2 }, _MWTF, { v: 0, b: 71, V: 26, r: 0 }, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 71, V: 23, r: 0 }, _MWLF, { v: 62, b: 71, V: 39, r: 3 }, { v: 62, b: 71, V: 39, r: 3 }, { v: 62, b: 71, V: 23, r: 3 }, _WF, { v: 62, b: 71, V: 23, r: 2 }, _MWLF, { v: 84, b: 71, V: 26, r: 2 }, _SF, { v: 84, b: 71, V: 16, r: 2 }, _MWSF, { v: 0, b: 71, V: 16, r: 1 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, { v: 84, b: 71, V: 10, r: 2 }, _SF, _SF, _SF, _MWSF, _MWSF, { v: 84, b: 149, V: -1, r: 2 }, { v: 85, b: 150, V: -1, r: 0 }, { v: 85, b: 150, V: -1, r: 0 }, { v: 84, b: 149, V: -1, r: 2 }, _MWSF, _MWSF, _SF, _SF, _MWTF, _MWSF, _MWTF, _MWTF, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _MWLF, _MWLF, _MWLF, _MWLF, { v: 0, b: 52, V: -1, r: 0 }, _MWLF, _MWLF, _MWSF, _MWSF, _MWSF, _MWSF], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, _MWSF, _MWSF, { v: 84, b: 71, V: 33, r: 0 }, _SF, _MWSF, { v: 84, b: 71, V: 32, r: 0 }, { v: 84, b: 142, V: -1, r: 3 }, { v: 84, b: 140, V: -1, r: 1 }, { v: 85, b: 146, V: -1, r: 0 }, { v: 84, b: 142, V: -1, r: 2 }, { v: 84, b: 151, V: -1, r: 2 }, { v: 84, b: 150, V: -1, r: 1 }, _SF, { v: 84, b: 71, V: 33, r: 2 }, _MWTF, { v: 0, b: 71, V: 37, r: 1 }, { v: 0, b: 71, V: 38, r: 1 }, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 71, V: 26, r: 0 }, { v: 0, b: 71, V: 26, r: 0 }, _SF, _SF, { v: 0, b: 71, V: 17, r: 0 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _MWSF, { v: 84, b: 71, V: 22, r: 0 }, _SF, _MWSF, _SF, { v: 84, b: 71, V: 34, r: 3 }, _TF, { v: 85, b: 140, V: -1, r: 2 }, { v: 84, b: 71, V: 34, r: 3 }, _SF, _MWSF, _SF, { v: 84, b: 71, V: 38, r: 0 }, _MWTF, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 32, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 24, r: 0 }], [_EMP, _EMP, _EMP, _EMP, { v: 0, b: 71, V: 26, r: 0 }, { v: 0, b: 71, V: 17, r: 0 }, _EMP, _EMP, { v: 0, b: 86, V: 26, r: 0 }, { v: 0, b: 86, V: 24, r: 0 }, _EMP, _MWSF, _MW, { v: 84, b: 32, V: -1, r: 0 }, _MWSF, { v: 84, b: 142, V: -1, r: 0 }, { v: 85, b: 148, V: -1, r: 0 }, { v: 84, b: 146, V: -1, r: 1 }, { v: 85, b: 146, V: -1, r: 0 }, { v: 85, b: 148, V: -1, r: 0 }, { v: 85, b: 142, V: -1, r: 1 }, _MWSF, { v: 84, b: 32, V: -1, r: 0 }, _MW, _MWTF, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 35, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 31, r: 0 }], [_EMP, _EMP, _EMP, _MWTF, _MWTF, _MWTF, _MWTF, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, { v: 0, b: 70, V: -1, r: 3 }, _TF, _TF, _MWSF, { v: 84, b: 140, V: -1, r: 0 }, { v: 84, b: 71, V: 34, r: 1 }, { v: 85, b: 140, V: -1, r: 2 }, _TF, { v: 84, b: 71, V: 34, r: 1 }, { v: 84, b: 140, V: -1, r: 2 }, _MWSF, _TF, _TF, { v: 0, b: 70, V: -1, r: 1 }, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 71, V: 23, r: 0 }, _EMP, _EMP, _EMP, _WF], [_EMP, _EMP, _EMP, _MWTF, { v: 85, b: 71, V: 33, r: 1 }, { v: 85, b: 71, V: 33, r: 1 }, _MWTF, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 70, V: -1, r: 3 }, { v: 85, b: 70, V: -1, r: 2 }, _SF, { v: 84, b: 144, V: -1, r: 1 }, { v: 0, b: 149, V: -1, r: 1 }, { v: 84, b: 145, V: -1, r: 0 }, { v: 84, b: 142, V: -1, r: 0 }, { v: 85, b: 146, V: -1, r: 0 }, { v: 85, b: 147, V: -1, r: 3 }, { v: 84, b: 142, V: -1, r: 1 }, { v: 84, b: 146, V: -1, r: 0 }, { v: 0, b: 149, V: -1, r: 3 }, { v: 84, b: 144, V: -1, r: 1 }, _SF, { v: 85, b: 70, V: -1, r: 2 }, { v: 0, b: 70, V: -1, r: 1 }, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _WWLF, _WWLF, { v: 67, b: 30, V: -1, r: 2 }, _WWLF, _WWLF, _WF, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }], [_EMP, _EMP, _EMP, _MWSF, _SF, _SF, _MWSF, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 32, V: -1, r: 3 }, _TF, _TF, _TF, _MWSF, { v: 0, b: 149, V: -1, r: 0 }, { v: 0, b: 149, V: -1, r: 0 }, { v: 85, b: 70, V: -1, r: 0 }, { v: 85, b: 70, V: -1, r: 0 }, { v: 0, b: 149, V: -1, r: 0 }, { v: 0, b: 149, V: -1, r: 0 }, _MWSF, _TF, _TF, _TF, { v: 0, b: 32, V: -1, r: 1 }, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 71, V: 16, r: 0 }, _WWLF, _LF, _LF, { v: 67, b: 71, V: 6, r: 1 }, _WWLF, _WF, { v: 67, b: 69, V: -1, r: 1 }, _LF, _LF, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 3 }], [_EMP, _EMP, _EMP, { v: 84, b: 71, V: 41, r: 1 }, _SF, _SF, { v: 84, b: 71, V: 41, r: 3 }, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 70, V: -1, r: 3 }, { v: 85, b: 70, V: -1, r: 0 }, _SF, _SF, _SF, { v: 84, b: 144, V: -1, r: 1 }, { v: 84, b: 144, V: -1, r: 1 }, _SF, _SF, { v: 84, b: 144, V: -1, r: 1 }, { v: 84, b: 144, V: -1, r: 1 }, _SF, _SF, _SF, { v: 85, b: 70, V: -1, r: 0 }, { v: 0, b: 70, V: -1, r: 1 }, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, { v: 67, b: 30, V: -1, r: 1 }, _LF, _LF, { v: 67, b: 71, V: 19, r: 2 }, _WWWF, _WF, { v: 67, b: 69, V: -1, r: 1 }, _LF, _LF, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 3 }], [_EMP, _EMP, _EMP, _MWTF, { v: 85, b: 71, V: 36, r: 2 }, { v: 85, b: 71, V: 37, r: 3 }, _MWTF, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, { v: 0, b: 70, V: -1, r: 3 }, { v: 85, b: 71, V: 39, r: 0 }, _TF, _TF, _TF, _TF, _TF, _TF, _TF, _TF, _TF, _TF, { v: 85, b: 71, V: 35, r: 1 }, { v: 0, b: 70, V: -1, r: 1 }, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _WWLF, { v: 67, b: 71, V: 8, r: 3 }, _LF, { v: 67, b: 71, V: 0, r: 1 }, _WWLF, _WF, { v: 67, b: 69, V: -1, r: 1 }, { v: 67, b: 71, V: 23, r: 1 }, { v: 67, b: 71, V: 23, r: 1 }, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 3 }], [_EMP, _EMP, { v: 0, b: 71, V: 26, r: 1 }, _MWTF, _MWTF, _MWTF, _MWTF, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, { v: 0, b: 70, V: -1, r: 3 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 84, b: 32, V: -1, r: 0 }, { v: 84, b: 32, V: -1, r: 0 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 84, b: 70, V: -1, r: 0 }, { v: 0, b: 70, V: -1, r: 1 }, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 71, V: 23, r: 0 }, _WWLF, _WWLF, _WWLF, _WWLF, _WWLF, _WF, _SWLF, _SWLF, _SWLF, _SWLF, _EMP, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 3 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _WF, _WF, _WF, _WF, _WF, _WF, _WF, _SWLF, _WF, { v: 62, b: 71, V: 21, r: 1 }, _SWWF, _LF, _LF, _LF, { v: 67, b: 69, V: -1, r: 3 }], [{ v: 0, b: 86, V: 26, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 33, r: 0 }, { v: 0, b: 86, V: 32, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 33, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 32, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 24, r: 0 }, { v: 0, b: 69, V: -1, r: 3 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 62, b: 69, V: -1, r: 2 }, _SWLF, _SWLF, _SWLF, { v: 62, b: 31, V: -1, r: 0 }, _SWWF, _SWWF, { v: 67, b: 51, V: -1, r: 2 }, _SWLF, _SWLF, _SWLF, _SWLF], [{ v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 28, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 62, b: 71, V: 23, r: 0 }, _SWLF, { v: 67, b: 71, V: 13, r: 1 }, _LF, _LF, { v: 67, b: 71, V: 27, r: 1 }, _LF, _LF, _SWLF, { v: 67, b: 71, V: 23, r: 3 }, _LF, { v: 67, b: 69, V: -1, r: 3 }], [{ v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 27, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, _WF, { v: 67, b: 31, V: -1, r: 1 }, _LF, _LF, _LF, _LF, _LF, _LF, _SWLF, _LF, _LF, { v: 67, b: 31, V: -1, r: 3 }], [{ v: 0, b: 86, V: 30, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 42, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 43, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 34, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 62, b: 71, V: 23, r: 0 }, _SWLF, { v: 67, b: 69, V: -1, r: 0 }, { v: 67, b: 69, V: -1, r: 0 }, { v: 67, b: 69, V: -1, r: 0 }, { v: 67, b: 69, V: -1, r: 0 }, _LF, _LF, _SWLF, { v: 67, b: 31, V: -1, r: 0 }, { v: 67, b: 69, V: -1, r: 0 }, _SWLF, { v: 0, b: 71, V: 16, r: 1 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 7, r: 0 }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 84, b: 71, V: 23, r: 0 }, { v: 84, b: 151, V: -1, r: 0 }, { v: 84, b: 71, V: 23, r: 0 }, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, { v: 0, b: 69, V: -1, r: 3 }, { v: 0, b: 69, V: -1, r: 0 }, { v: 62, b: 69, V: -1, r: 0 }, _SWLF, { v: 67, b: 71, V: 15, r: 0 }, { v: 67, b: 71, V: 4, r: 0 }, { v: 67, b: 71, V: 3, r: 0 }, { v: 67, b: 71, V: 14, r: 0 }, _LF, _LF, _LF, _LF, _LF, _SWLF, { v: 0, b: 71, V: 26, r: 1 }], [_EMP, _EMP, _WWWF, { v: 62, b: 71, V: 26, r: 1 }, _WF, _WF, _WWWF, { v: 62, b: 71, V: 16, r: 2 }, _WF, _WF, _WWWF, { v: 0, b: 31, V: -1, r: 0 }, { v: 0, b: 31, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, _EMP, { v: 0, b: 86, V: 15, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _EMP, _EMP, _EMP, _MWWF, _MWWF, _MWWF, { v: 62, b: 150, V: -1, r: 3 }, _MWWF, _MWWF, _MWWF, { v: 0, b: 71, V: 16, r: 0 }, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 71, V: 23, r: 0 }, _SWLF, { v: 67, b: 71, V: 4, r: 3 }, { v: 67, b: 71, V: 7, r: 3 }, { v: 67, b: 71, V: 7, r: 3 }, { v: 67, b: 71, V: 3, r: 1 }, _LF, _WF, _WF, _WF, _LF, { v: 67, b: 69, V: -1, r: 3 }], [_EMP, { v: 0, b: 71, V: 26, r: 0 }, _WWWF, { v: 62, b: 71, V: 17, r: 1 }, _WF, { v: 62, b: 71, V: 22, r: 1 }, _WWWF, { v: 62, b: 71, V: 17, r: 2 }, _WF, { v: 62, b: 71, V: 15, r: 1 }, _WWWF, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 3 }, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, { v: 0, b: 71, V: 26, r: 0 }, _EMP, { v: 0, b: 71, V: 24, r: 0 }, _MWWF, { v: 62, b: 71, V: 16, r: 2 }, { v: 62, b: 71, V: 39, r: 1 }, _WF, _WF, _WF, _MWWF, { v: 0, b: 71, V: 26, r: 0 }, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 148, V: -1, r: 3 }, { v: 0, b: 69, V: -1, r: 3 }, _LF, _LF, _LF, _LF, _LF, _WF, _WF, _WF, _LF, { v: 67, b: 69, V: -1, r: 3 }], [_EMP, _EMP, _WWWF, { v: 62, b: 71, V: 10, r: 0 }, _WF, { v: 62, b: 71, V: 0, r: 1 }, _WWWF, { v: 62, b: 71, V: 1, r: 3 }, _WF, { v: 62, b: 71, V: 8, r: 1 }, _WWWF, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 3 }, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _MW, _MWSF, _MWSF, _MWWF, _WF, _WF, _WF, _WF, { v: 62, b: 71, V: 27, r: 2 }, _MWWF, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 140, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 3 }, { v: 67, b: 71, V: 23, r: 0 }, { v: 67, b: 71, V: 27, r: 3 }, { v: 67, b: 71, V: 8, r: 2 }, { v: 67, b: 71, V: 27, r: 3 }, _LF, _LF, _LF, _LF, { v: 67, b: 71, V: 12, r: 2 }, _SWLF], [_EMP, { v: 0, b: 71, V: 16, r: 0 }, _WWWF, { v: 62, b: 71, V: 9, r: 2 }, _WF, _WF, _WWWF, _WF, _WF, { v: 62, b: 71, V: 12, r: 2 }, _WW, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 3 }, { v: 0, b: 71, V: 16, r: 0 }, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, { v: 0, b: 71, V: 16, r: 2 }, _MWSF, { v: 84, b: 71, V: 16, r: 1 }, { v: 84, b: 71, V: 19, r: 1 }, _MWSF, { v: 62, b: 32, V: -1, r: 0 }, { v: 62, b: 70, V: -1, r: 0 }, _WF, _WF, { v: 62, b: 71, V: 39, r: 2 }, _MWWF, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 148, V: -1, r: 0 }, _SWLF, _SWLF, _SWLF, _SWLF, _SWLF, { v: 67, b: 31, V: -1, r: 0 }, { v: 67, b: 31, V: -1, r: 0 }, _SWLF, _SWLF, _SWLF, _SWLF, { v: 0, b: 71, V: 24, r: 1 }], [_EMP, { v: 0, b: 71, V: 17, r: 0 }, _WW, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF, _WWWF, _WW, _WW, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 3 }, { v: 0, b: 71, V: 24, r: 0 }, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, { v: 0, b: 71, V: 17, r: 0 }, _MWSF, _SF, _SF, _MWSF, _LF, { v: 67, b: 70, V: -1, r: 3 }, _WF, _WF, _WF, _MWWF, { v: 84, b: 71, V: 23, r: 0 }, _SF, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 140, V: -1, r: 0 }, _SWLF, { v: 62, b: 71, V: 20, r: 1 }, _WF, { v: 62, b: 71, V: 28, r: 0 }, _SWWF, _WF, _WF, _WF, { v: 62, b: 71, V: 20, r: 1 }, { v: 62, b: 71, V: 13, r: 1 }, _SWWF], [_EMP, _EMP, _EMP, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, _WF, _WF, _WF, _WF, { v: 62, b: 69, V: -1, r: 3 }, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _MWSF, _SF, _SF, _MWLF, _LF, { v: 67, b: 70, V: -1, r: 3 }, _WF, _WF, _WF, { v: 62, b: 150, V: -1, r: 3 }, { v: 84, b: 151, V: -1, r: 0 }, _SF, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 140, V: -1, r: 0 }, { v: 62, b: 69, V: -1, r: 1 }, _WF, _WF, _WF, { v: 62, b: 31, V: -1, r: 3 }, _WF, _WF, _WF, _WF, _WF, { v: 0, b: 69, V: -1, r: 1 }], [_EMP, _EMP, { v: 0, b: 71, V: 26, r: 0 }, _SWWF, { v: 62, b: 71, V: 6, r: 0 }, { v: 62, b: 71, V: 14, r: 0 }, { v: 62, b: 71, V: 15, r: 0 }, { v: 62, b: 71, V: 5, r: 0 }, _SWWF, { v: 62, b: 71, V: 23, r: 2 }, _WF, _WF, _WF, { v: 62, b: 69, V: -1, r: 3 }, _EMP, { v: 0, b: 86, V: 16, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _MWSF, { v: 84, b: 71, V: 18, r: 3 }, _SF, { v: 67, b: 150, V: -1, r: 0 }, { v: 67, b: 142, V: -1, r: 1 }, { v: 67, b: 71, V: 40, r: 2 }, _WF, _WF, _WF, { v: 62, b: 150, V: -1, r: 3 }, { v: 84, b: 151, V: -1, r: 3 }, _SF, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 143, V: -1, r: 3 }, { v: 0, b: 149, V: -1, r: 3 }, { v: 62, b: 144, V: -1, r: 3 }, _WF, _WF, { v: 62, b: 31, V: -1, r: 3 }, _WF, _WF, _WF, { v: 62, b: 71, V: 12, r: 3 }, { v: 62, b: 71, V: 12, r: 3 }, { v: 0, b: 69, V: -1, r: 1 }], [_EMP, _EMP, _EMP, _SWWF, _WF, _WF, _WF, _WF, _SWWF, _SWLF, { v: 67, b: 31, V: -1, r: 2 }, { v: 67, b: 31, V: -1, r: 2 }, _SWLF, _SWLF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 13, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _MWSF, _MWSF, _MWSF, _MWLF, { v: 67, b: 144, V: -1, r: 0 }, { v: 67, b: 70, V: -1, r: 3 }, _WF, _WF, { v: 62, b: 71, V: 39, r: 2 }, _MWWF, { v: 84, b: 71, V: 23, r: 0 }, _SF, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 140, V: -1, r: 0 }, _SWWF, _SWWF, _SWWF, _SWWF, _SWWF, { v: 67, b: 31, V: -1, r: 2 }, { v: 67, b: 31, V: -1, r: 2 }, _SWLF, _SWLF, _SWLF, _SWLF, { v: 0, b: 71, V: 26, r: 1 }], [_EMP, _EMP, _EMP, _SWWF, { v: 62, b: 71, V: 0, r: 0 }, { v: 62, b: 71, V: 2, r: 0 }, _WF, _WF, { v: 67, b: 31, V: -1, r: 1 }, _LF, _LF, _LF, { v: 67, b: 71, V: 23, r: 0 }, _SWLF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _EMP, _EMP, { v: 0, b: 71, V: 24, r: 0 }, _MWLF, { v: 67, b: 148, V: -1, r: 1 }, { v: 67, b: 70, V: -1, r: 3 }, { v: 62, b: 151, V: -1, r: 0 }, { v: 62, b: 151, V: -1, r: 0 }, { v: 62, b: 71, V: 27, r: 2 }, _MWWF, { v: 0, b: 71, V: 26, r: 0 }, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, { v: 0, b: 142, V: -1, r: 3 }, { v: 0, b: 148, V: -1, r: 0 }, { v: 62, b: 140, V: -1, r: 1 }, { v: 0, b: 148, V: -1, r: 0 }, _SWLF, { v: 67, b: 71, V: 16, r: 1 }, _LF, _LF, { v: 67, b: 71, V: 26, r: 1 }, { v: 67, b: 71, V: 23, r: 2 }, { v: 67, b: 71, V: 17, r: 1 }, { v: 67, b: 69, V: -1, r: 3 }], [_EMP, _EMP, _EMP, _SWWF, _WF, _WF, _WF, _WF, _SWWF, { v: 67, b: 71, V: 12, r: 0 }, _LF, _LF, { v: 67, b: 71, V: 12, r: 2 }, _SWLF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _EMP, _EMP, _EMP, _MWLF, _MWLF, _MWLF, { v: 62, b: 150, V: -1, r: 3 }, { v: 62, b: 150, V: -1, r: 3 }, _MWWF, _MWWF, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, _EMP, _EMP, _WF, _WF, { v: 67, b: 31, V: -1, r: 1 }, _LF, _LF, _LF, _LF, _LF, _LF, { v: 67, b: 31, V: -1, r: 3 }], [_EMP, _EMP, { v: 0, b: 71, V: 24, r: 0 }, _SWWF, { v: 62, b: 71, V: 1, r: 2 }, { v: 62, b: 71, V: 8, r: 2 }, _WF, { v: 62, b: 71, V: 23, r: 2 }, _SWWF, { v: 67, b: 71, V: 23, r: 2 }, _LF, _LF, { v: 67, b: 71, V: 20, r: 2 }, _SWLF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 84, b: 71, V: 23, r: 0 }, _SF, _SF, { v: 84, b: 71, V: 23, r: 0 }, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, _EMP, _EMP, _WF, _WF, { v: 67, b: 31, V: -1, r: 1 }, _LF, _LF, _LF, _LF, _LF, _LF, { v: 67, b: 31, V: -1, r: 3 }], [_EMP, _EMP, _EMP, _SWWF, _SWWF, _SWWF, { v: 62, b: 31, V: -1, r: 0 }, _SWWF, _SWWF, _SWLF, { v: 67, b: 69, V: -1, r: 0 }, { v: 67, b: 69, V: -1, r: 0 }, _SWLF, _SWLF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SF, _SF, _SF, _SF, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 21, r: 0 }, { v: 0, b: 86, V: 20, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 15, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 36, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 4, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 45, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 32, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 25, r: 0 }, { v: 0, b: 86, V: 24, r: 0 }], [{ v: 0, b: 86, V: 17, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 4, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 5, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 3, r: 0 }, { v: 0, b: 86, V: 37, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 35, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 29, r: 0 }, { v: 0, b: 86, V: 31, r: 0 }], [{ v: 0, b: 86, V: 16, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 11, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 10, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 9, r: 0 }, { v: 0, b: 86, V: 38, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 1, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 34, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _LF, _LF, _LF, { v: 67, b: 151, V: -1, r: 1 }, _LF, _LF, _LF], [{ v: 0, b: 86, V: 40, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 0, r: 0 }, { v: 0, b: 86, V: 39, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, _EMP, _EMP, { v: 0, b: 69, V: -1, r: 0 }, _SWWF, _SWWF, _SW, { v: 62, b: 31, V: -1, r: 2 }, _SWWF, _SWWF, _SWWF, { v: 0, b: 71, V: 23, r: 0 }, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, { v: 67, b: 69, V: -1, r: 3 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 140, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 67, b: 69, V: -1, r: 1 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 71, V: 26, r: 1 }, { v: 0, b: 71, V: 26, r: 1 }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, { v: 67, b: 69, V: -1, r: 1 }, _LF, _LF, _LF, _SWWF, { v: 62, b: 71, V: 27, r: 1 }, { v: 62, b: 71, V: 27, r: 1 }, _WF, _WF, _WF, { v: 62, b: 69, V: -1, r: 3 }, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, { v: 67, b: 69, V: -1, r: 3 }, _EMP, { v: 0, b: 111, V: -1, r: 1 }, { v: 0, b: 140, V: -1, r: 2 }, { v: 0, b: 111, V: -1, r: 1 }, _EMP, { v: 67, b: 69, V: -1, r: 1 }], [_EMP, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWLF, _MWWF, _MWWF, _MWWF, _MWWF, _MWWF, _MWWF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, { v: 67, b: 69, V: -1, r: 1 }, _LF, _LF, _LF, { v: 62, b: 31, V: -1, r: 1 }, _WF, _WF, _WF, _WF, _WF, { v: 62, b: 69, V: -1, r: 3 }, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, { v: 67, b: 151, V: -1, r: 1 }, { v: 0, b: 140, V: -1, r: 3 }, { v: 0, b: 140, V: -1, r: 3 }, { v: 0, b: 148, V: -1, r: 0 }, { v: 0, b: 140, V: -1, r: 3 }, { v: 0, b: 140, V: -1, r: 3 }, { v: 67, b: 151, V: -1, r: 1 }], [_EMP, _MWLF, { v: 67, b: 71, V: 35, r: 2 }, _LF, { v: 67, b: 142, V: -1, r: 0 }, { v: 67, b: 146, V: -1, r: 1 }, { v: 67, b: 146, V: -1, r: 1 }, { v: 67, b: 140, V: -1, r: 1 }, { v: 67, b: 140, V: -1, r: 1 }, { v: 62, b: 150, V: -1, r: 1 }, _WF, _WF, { v: 62, b: 71, V: 17, r: 3 }, { v: 62, b: 71, V: 16, r: 1 }, _MWWF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, { v: 67, b: 69, V: -1, r: 1 }, _LF, _LF, { v: 67, b: 71, V: 3, r: 1 }, _SWWF, { v: 62, b: 71, V: 22, r: 2 }, { v: 62, b: 71, V: 20, r: 3 }, { v: 62, b: 71, V: 11, r: 2 }, _WF, _SWWF, _SWWF, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, { v: 67, b: 69, V: -1, r: 3 }, _EMP, { v: 0, b: 111, V: -1, r: 1 }, { v: 0, b: 140, V: -1, r: 2 }, { v: 0, b: 111, V: -1, r: 1 }, _EMP, { v: 67, b: 69, V: -1, r: 1 }], [_EMP, _MWLF, _LF, { v: 67, b: 70, V: -1, r: 3 }, { v: 0, b: 149, V: -1, r: 0 }, { v: 0, b: 149, V: -1, r: 2 }, { v: 0, b: 149, V: -1, r: 2 }, _MW, _MW, _MWWF, _WF, _WF, _WF, _WF, _MWWF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, { v: 67, b: 69, V: -1, r: 1 }, { v: 67, b: 71, V: 23, r: 3 }, _SWLF, _SWLF, _SWWF, _SWWF, _SWWF, _SWWF, { v: 62, b: 31, V: -1, r: 2 }, _SWWF, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, { v: 67, b: 69, V: -1, r: 3 }, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 140, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 0 }, { v: 0, b: 69, V: -1, r: 0 }, { v: 67, b: 69, V: -1, r: 1 }], [{ v: 0, b: 71, V: 24, r: 1 }, _MWLF, _LF, { v: 67, b: 70, V: -1, r: 3 }, { v: 67, b: 151, V: -1, r: 3 }, { v: 67, b: 151, V: -1, r: 3 }, { v: 67, b: 151, V: -1, r: 3 }, { v: 67, b: 142, V: -1, r: 0 }, { v: 67, b: 146, V: -1, r: 1 }, { v: 62, b: 150, V: -1, r: 1 }, _WF, { v: 62, b: 71, V: 10, r: 3 }, { v: 62, b: 71, V: 7, r: 3 }, _WF, { v: 62, b: 32, V: -1, r: 3 }, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, { v: 0, b: 69, V: -1, r: 2 }, { v: 0, b: 69, V: -1, r: 2 }, _SW, { v: 62, b: 71, V: 14, r: 0 }, { v: 62, b: 71, V: 5, r: 0 }, _WF, _WF, _WF, _WF, _SWWF, { v: 0, b: 71, V: 16, r: 3 }, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }, _EMP, _LF, { v: 67, b: 71, V: 45, r: 0 }, { v: 67, b: 71, V: 45, r: 0 }, { v: 67, b: 151, V: -1, r: 1 }, _LF, _LF, { v: 67, b: 71, V: 24, r: 1 }], [_EMP, _MWLF, _LF, { v: 67, b: 70, V: -1, r: 3 }, { v: 67, b: 70, V: -1, r: 0 }, { v: 67, b: 70, V: -1, r: 0 }, { v: 67, b: 70, V: -1, r: 0 }, { v: 67, b: 140, V: -1, r: 0 }, { v: 67, b: 142, V: -1, r: 3 }, { v: 62, b: 149, V: -1, r: 1 }, { v: 62, b: 144, V: -1, r: 0 }, _WF, { v: 62, b: 71, V: 7, r: 3 }, _WF, { v: 62, b: 32, V: -1, r: 3 }, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, { v: 0, b: 71, V: 16, r: 0 }, _SWWF, _WF, _WF, _WF, _WF, _WF, { v: 62, b: 71, V: 13, r: 2 }, _SWWF, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }], [{ v: 0, b: 71, V: 17, r: 1 }, _MWLF, _LF, _LF, { v: 67, b: 71, V: 3, r: 0 }, { v: 67, b: 148, V: -1, r: 3 }, _MWLF, { v: 67, b: 146, V: -1, r: 0 }, { v: 67, b: 147, V: -1, r: 3 }, { v: 62, b: 149, V: -1, r: 1 }, { v: 62, b: 144, V: -1, r: 0 }, _WF, _WF, _WF, _MWWF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, { v: 0, b: 71, V: 26, r: 0 }, _SWWF, { v: 62, b: 71, V: 12, r: 3 }, { v: 62, b: 71, V: 23, r: 3 }, _WF, _WF, { v: 62, b: 71, V: 10, r: 3 }, { v: 62, b: 71, V: 9, r: 1 }, _SWWF, { v: 0, b: 71, V: 17, r: 3 }, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }], [{ v: 0, b: 71, V: 26, r: 1 }, _MWLF, _LF, _WF, _WF, { v: 67, b: 146, V: -1, r: 0 }, _MWLF, { v: 67, b: 142, V: -1, r: 3 }, { v: 67, b: 142, V: -1, r: 1 }, _MW, { v: 62, b: 144, V: -1, r: 0 }, _WF, { v: 62, b: 144, V: -1, r: 0 }, { v: 62, b: 144, V: -1, r: 0 }, _MWWF, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _EMP, _SWWF, _SWWF, _SWWF, { v: 62, b: 31, V: -1, r: 0 }, { v: 62, b: 31, V: -1, r: 0 }, _SWWF, _SWWF, _SWWF, _EMP, _EMP, { v: 0, b: 86, V: 23, r: 0 }, { v: 0, b: 86, V: 22, r: 0 }], [_EMP, _MWLF, _LF, _WF, _WF, { v: 67, b: 71, V: 10, r: 0 }, _MWLF, { v: 67, b: 71, V: 14, r: 3 }, { v: 67, b: 140, V: -1, r: 0 }, _MWWF, { v: 62, b: 149, V: -1, r: 0 }, _MWWF, { v: 62, b: 149, V: -1, r: 0 }, { v: 62, b: 149, V: -1, r: 0 }, _MWWF, { v: 0, b: 71, V: 16, r: 1 }, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 71, V: 24, r: 1 }, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 30, r: 0 }, { v: 0, b: 86, V: 31, r: 0 }], [_EMP, _MWLF, { v: 67, b: 71, V: 36, r: 2 }, { v: 67, b: 151, V: -1, r: 0 }, { v: 67, b: 71, V: 12, r: 3 }, { v: 67, b: 71, V: 9, r: 2 }, _MWLF, { v: 67, b: 71, V: 16, r: 2 }, { v: 67, b: 140, V: -1, r: 2 }, { v: 67, b: 71, V: 17, r: 3 }, { v: 67, b: 147, V: -1, r: 2 }, { v: 67, b: 142, V: -1, r: 0 }, { v: 67, b: 146, V: -1, r: 3 }, { v: 67, b: 142, V: -1, r: 2 }, _MW, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }], [_EMP, _MWLF, _MWLF, { v: 67, b: 150, V: -1, r: 2 }, _MWLF, _MWLF, _MWLF, { v: 67, b: 71, V: 23, r: 2 }, { v: 67, b: 142, V: -1, r: 3 }, { v: 67, b: 140, V: -1, r: 3 }, { v: 67, b: 146, V: -1, r: 3 }, { v: 67, b: 142, V: -1, r: 2 }, _LF, { v: 67, b: 71, V: 23, r: 2 }, _MW, { v: 0, b: 71, V: 24, r: 0 }, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }], [_EMP, _EMP, { v: 0, b: 71, V: 16, r: 2 }, { v: 0, b: 71, V: 16, r: 1 }, { v: 0, b: 71, V: 17, r: 1 }, { v: 0, b: 71, V: 26, r: 1 }, _MW, _MW, _MW, _MW, _MW, _MW, _MW, _MW, _MW, _EMP, { v: 0, b: 86, V: 14, r: 0 }, { v: 0, b: 86, V: 12, r: 0 }, { v: 0, b: 86, V: 6, r: 0 }], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, { v: 0, b: 86, V: 40, r: 0 }, { v: 0, b: 86, V: 1, r: 0 }, { v: 0, b: 86, V: 41, r: 0 }] ] }; HOUSE[HOUSEID.__BUNKER0__] = { width: 0, height: 0, radiation: 0, building: [ [_EMP], [_EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _SC, _SC, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _EMP, _EMP, _EMP, _EMP, _SC, _BWTF, _BWTF, { v: 85, b: 52, V: -1, r: 2 }, _BWTF, _BWTF, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _BWTF, _TF, _TF, _TF, _BWTF, _SC, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _SC, _SC, _SC, _SC, _BWTF, _BWTF, _BWTF, _BWTF, _TF, _TF, _TF, _BWTF, _SC, _SC, _EMP, _SC, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _SC, _BWTF, { v: 85, b: 71, V: 9, r: 0 }, { v: 85, b: 71, V: 58, r: 0 }, _BWTF, { v: 85, b: 71, V: 33, r: 3 }, _TF, { v: 85, b: 71, V: 33, r: 3 }, _BWTF, _SC, _SC, _EMP, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _SC, _BWTF, { v: 85, b: 71, V: 10, r: 2 }, _TF, _BWTF, _BWTF, _SF, _BWSF, _BWSF, _BW, _SC, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _SC, _BWTF, _TF, _TF, _SF, _SF, _SF, _SF, { v: 84, b: 71, V: 51, r: 1 }, _BWSF, _SC, _SC, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _SF, _SF, _SF, _SF, _BWSF, _BW, _SC, _SC, _EMP, _SC, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _BWTF, _SF, _SF, _SF, _BWTF, _BWTF, _SF, _SF, _SF, _BWSF, _BWTF, _BWTF, _SC, _EMP, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _BWTF, _SF, _BWTF, _SF, _SF, _SF, _SF, _BWTF, _TF, _TF, { v: 85, b: 71, V: 55, r: 2 }, _BWTF, _SC, _EMP, _SC, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _BWTF, _SF, _BWTF, _BWTF, _BWTF, _BWTF, _SF, _BWTF, { v: 85, b: 71, V: 28, r: 3 }, _TF, { v: 85, b: 71, V: 21, r: 1 }, _BWTF, _SC, _EMP, _EMP, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _BWTF, _TF, { v: 85, b: 71, V: 23, r: 1 }, { v: 85, b: 71, V: 53, r: 3 }, { v: 85, b: 71, V: 56, r: 2 }, _BWTF, _SF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _SC, _EMP, _EMP, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _SC, _SC, _BWTF, _TF, _TF, _TF, { v: 85, b: 71, V: 53, r: 2 }, _BWTF, _SF, _SF, _TF, { v: 85, b: 71, V: 51, r: 0 }, { v: 85, b: 71, V: 48, r: 0 }, _BWTF, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _BWTF, _TF, _TF, _TF, _TF, _BWTF, _BWTF, _BWTF, _TF, _TF, _TF, _BWTF, _SC, _SC, _SC], [_EMP, _SC, _SC, _SC, _SC, _BWTF, { v: 85, b: 71, V: 20, r: 3 }, { v: 85, b: 71, V: 11, r: 2 }, { v: 85, b: 71, V: 49, r: 3 }, _TF, { v: 85, b: 71, V: 54, r: 2 }, _BWTF, _BWTF, { v: 85, b: 71, V: 48, r: 2 }, { v: 85, b: 71, V: 50, r: 2 }, { v: 85, b: 71, V: 49, r: 3 }, _BWTF, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _SC, _SC, _SC, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _BWTF, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC, _SC], [_EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _EMP, _EMP, _EMP, _EMP, _SC, _SC, _SC, _SC, _SC] ] }; } } catch (error) {}; for (var i = 0; i < HOUSE.length; i++) { var house = HOUSE[i]; var housePlan = HOUSE[i].building; house.height = housePlan.length; for (var j = 0; j < housePlan.length; j++) house.width = window.Math.max(housePlan[j].length, house.width); } var AREASTOITEM = []; AREASTOITEM[AREAS.__FIRE__] = IID.__CAMPFIRE__; AREASTOITEM[AREAS.__BBQ__] = IID.__CAMPFIRE_BBQ__; AREASTOITEM[AREAS.__WORKBENCH__] = IID.__WORKBENCH__; AREASTOITEM[AREAS.__WORKBENCH2__] = IID.__WORKBENCH2__; AREASTOITEM[AREAS.__TESLA__] = IID.__TESLA__; AREASTOITEM[AREAS.__SMELTER__] = IID.__SMELTER__; AREASTOITEM[AREAS.__WEAVING__] = IID.__WEAVING__; AREASTOITEM[AREAS.__COMPOST__] = IID.__COMPOST__; AREASTOITEM[AREAS.__AGITATOR__] = IID.__AGITATOR__; AREASTOITEM[AREAS.__EXTRACTOR__] = IID.__EXTRACTOR__; AREASTOITEM[AREAS.__FEEDER__] = IID.__FEEDER__; var INVENTORY2 = null; var ENTITIES2 = null; var PARTICLES2 = null; var LOOT2 = null; var RESOURCES2 = null; var LIGHTFIRE2 = null; var AI2 = null; var GROUND = "#38513D"; var GROUND2 = "#0B1D23"; var BRKIT = [{ id: IID.__STONE__, amount: 50, life: 255 }, { id: IID.__WOOD__, amount: 100, life: 255 }, { id: IID.__WORKBENCH__, amount: 1, life: 255 }]; var KIT = []; COUNTER = 0; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE__, amount: 20, life: 255 }, { id: IID.__WOOD__, amount: 40, life: 255 }, { id: IID.__ORANGE__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE__, amount: 20, life: 255 }, { id: IID.__WOOD__, amount: 40, life: 255 }, { id: IID.__ORANGE__, amount: 3, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE__, amount: 30, life: 255 }, { id: IID.__WOOD__, amount: 50, life: 255 }, { id: IID.__CAMPFIRE__, amount: 1, life: 255 }, { id: IID.__ORANGE__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE__, amount: 30, life: 255 }, { id: IID.__WOOD__, amount: 60, life: 255 }, { id: IID.__CAMPFIRE__, amount: 1, life: 255 }, { id: IID.__WORKBENCH__, amount: 1, life: 255 }, { id: IID.__ORANGE__, amount: 5, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE__, amount: 40, life: 255 }, { id: IID.__WOOD__, amount: 90, life: 255 }, { id: IID.__CAMPFIRE__, amount: 1, life: 255 }, { id: IID.__WORKBENCH__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE__, amount: 40, life: 255 }, { id: IID.__WOOD__, amount: 150, life: 255 }, { id: IID.__CAMPFIRE__, amount: 1, life: 255 }, { id: IID.__WORKBENCH__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE__, amount: 1, life: 255 }, { id: IID.__WORKBENCH__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 2, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE__, amount: 1, life: 255 }, { id: IID.__STEEL__, amount: 6, life: 255 }, { id: IID.__WORKBENCH__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 2, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__WOOD_SPEAR__, amount: 1, life: 255 }, { id: IID.__WORKBENCH__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 3, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__WOOD_BOW__, amount: 1, life: 255 }, { id: IID.__WOOD_ARROW__, amount: 20, life: 255 }, { id: IID.__WORKBENCH__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__WOOD_WALL__, amount: 10, life: 255 }, { id: IID.__WOOD_DOOR__, amount: 2, life: 255 }, { id: IID.__WORKBENCH__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__WOOD_WALL__, amount: 16, life: 255 }, { id: IID.__STONE_DOOR__, amount: 2, life: 255 }, { id: IID.__WORKBENCH__, amount: 2, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 14, life: 255 }, { id: IID.__STONE_DOOR__, amount: 2, life: 255 }, { id: IID.__WORKBENCH__, amount: 2, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__LANDMINE__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 14, life: 255 }, { id: IID.__STONE_DOOR__, amount: 2, life: 255 }, { id: IID.__WORKBENCH__, amount: 2, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__ARMOR_PHYSIC_1__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 14, life: 255 }, { id: IID.__STONE_DOOR__, amount: 2, life: 255 }, { id: IID.__WORKBENCH__, amount: 2, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STONE_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 16, life: 255 }, { id: IID.__STONE_DOOR__, amount: 2, life: 255 }, { id: IID.__CHEST__, amount: 1, life: 255 }, { id: IID.__WORKBENCH__, amount: 2, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STEEL_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 16, life: 255 }, { id: IID.__STONE_DOOR__, amount: 2, life: 255 }, { id: IID.__CHEST__, amount: 1, life: 255 }, { id: IID.__WORKBENCH__, amount: 2, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__HACHET__, amount: 1, life: 255 }, { id: IID.__STEEL_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 16, life: 255 }, { id: IID.__STONE_DOOR__, amount: 2, life: 255 }, { id: IID.__CHEST__, amount: 1, life: 255 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__STONE_AXE__, amount: 1, life: 255 }, { id: IID.__STEEL_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 16, life: 255 }, { id: IID.__STONE_DOOR__, amount: 2, life: 255 }, { id: IID.__CHEST__, amount: 1, life: 255 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__STONE_AXE__, amount: 1, life: 255 }, { id: IID.__STEEL_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 2, life: 255 }, { id: IID.__STONE_WALL__, amount: 20, life: 255 }, { id: IID.__STONE_DOOR__, amount: 4, life: 255 }, { id: IID.__CHEST__, amount: 2, life: 255 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }, { id: IID.__RAW_STEAK__, amount: 4, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__STONE_AXE__, amount: 1, life: 255 }, { id: IID.__STEEL_PICKAXE__, amount: 1, life: 255 }, { id: IID.__CAMPFIRE_BBQ__, amount: 2, life: 255 }, { id: IID.__STONE_WALL__, amount: 26, life: 255 }, { id: IID.__STONE_DOOR__, amount: 6, life: 255 }, { id: IID.__CHEST__, amount: 3, life: 255 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }, { id: IID.__SEED_ORANGE__, amount: 8, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__STONE_AXE__, amount: 1, life: 255 }, { id: IID.__STEEL_PICKAXE__, amount: 1, life: 255 }, { id: IID.__HEADSCARF__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 26, life: 255 }, { id: IID.__STONE_DOOR__, amount: 6, life: 255 }, { id: IID.__CHEST__, amount: 3, life: 255 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }, { id: IID.__SEED_ORANGE__, amount: 8, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__STONE_AXE__, amount: 1, life: 255 }, { id: IID.__STEEL_PICKAXE__, amount: 1, life: 255 }, { id: IID.__HEADSCARF__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 26, life: 255 }, { id: IID.__STONE_DOOR__, amount: 6, life: 255 }, { id: IID.__CHEST__, amount: 3, life: 255 }, { id: IID.__9MM__, amount: 1, life: 20 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__SULFUR_PICKAXE__, amount: 1, life: 255 }, { id: IID.__STONE_AXE__, amount: 1, life: 255 }, { id: IID.__HEADSCARF__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 26, life: 255 }, { id: IID.__STONE_DOOR__, amount: 6, life: 255 }, { id: IID.__CHEST__, amount: 3, life: 255 }, { id: IID.__9MM__, amount: 1, life: 20 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__SULFUR_PICKAXE__, amount: 1, life: 255 }, { id: IID.__STONE_AXE__, amount: 1, life: 255 }, { id: IID.__HEADSCARF__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 26, life: 255 }, { id: IID.__SMELTER__, amount: 1, life: 255 }, { id: IID.__CHEST__, amount: 3, life: 255 }, { id: IID.__9MM__, amount: 1, life: 20 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__SULFUR_PICKAXE__, amount: 1, life: 255 }, { id: IID.__SULFUR_AXE__, amount: 1, life: 255 }, { id: IID.__HEADSCARF__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 26, life: 255 }, { id: IID.__SMELTER__, amount: 1, life: 255 }, { id: IID.__CHEST__, amount: 3, life: 255 }, { id: IID.__9MM__, amount: 1, life: 20 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__SULFUR_PICKAXE__, amount: 1, life: 255 }, { id: IID.__SULFUR_AXE__, amount: 1, life: 255 }, { id: IID.__CHAPKA__, amount: 1, life: 255 }, { id: IID.__STONE_WALL__, amount: 26, life: 255 }, { id: IID.__SMELTER__, amount: 1, life: 255 }, { id: IID.__CHEST__, amount: 3, life: 255 }, { id: IID.__9MM__, amount: 1, life: 20 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__SULFUR_PICKAXE__, amount: 1, life: 255 }, { id: IID.__SULFUR_AXE__, amount: 1, life: 255 }, { id: IID.__CHAPKA__, amount: 1, life: 255 }, { id: IID.__STEEL_WALL__, amount: 14, life: 255 }, { id: IID.__SMELTER__, amount: 1, life: 255 }, { id: IID.__CHEST__, amount: 3, life: 255 }, { id: IID.__9MM__, amount: 1, life: 20 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__SULFUR_PICKAXE__, amount: 1, life: 255 }, { id: IID.__SULFUR_AXE__, amount: 1, life: 255 }, { id: IID.__CHAPKA__, amount: 1, life: 255 }, { id: IID.__STEEL_WALL__, amount: 14, life: 255 }, { id: IID.__SMELTER__, amount: 1, life: 255 }, { id: IID.__CHEST__, amount: 3, life: 255 }, { id: IID.__DESERT_EAGLE__, amount: 1, life: 7 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__SULFUR_PICKAXE__, amount: 1, life: 255 }, { id: IID.__SULFUR_AXE__, amount: 1, life: 255 }, { id: IID.__CHAPKA__, amount: 1, life: 255 }, { id: IID.__STEEL_WALL__, amount: 14, life: 255 }, { id: IID.__SMELTER__, amount: 1, life: 255 }, { id: IID.__DYNAMITE__, amount: 6, life: 255 }, { id: IID.__DESERT_EAGLE__, amount: 1, life: 7 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }]; KIT[COUNTER++] = [{ id: IID.__SULFUR_PICKAXE__, amount: 1, life: 255 }, { id: IID.__SULFUR_AXE__, amount: 1, life: 255 }, { id: IID.__CHAPKA__, amount: 1, life: 255 }, { id: IID.__STEEL_WALL__, amount: 20, life: 255 }, { id: IID.__SMELTER__, amount: 1, life: 255 }, { id: IID.__LANDMINE__, amount: 6, life: 255 }, { id: IID.__DESERT_EAGLE__, amount: 1, life: 7 }, { id: IID.__WORKBENCH2__, amount: 1, life: 255 }]; COUNTER = 0; var MODE_AI = { __AGGRESSIVE__: COUNTER++, __REPAIR__: COUNTER++ }; var AI = []; AI[AIID.__NORMAL_GHOUL__] = { actionDelay: 700, actionImpactClient: 550, baseSpeed: 0.5, aggressive: 1, mode: MODE_AI.__AGGRESSIVE__, timeTrigger: ((2 * 8) * 60) * 1000, draw: Render.ghoul, breath: 0.05, armMove: 6, leftArm: { angle: 0, x: 28, y: -50, src: "img/day-ghoul-left-arm.png", img: { isLoaded: 0 } }, rightArm: { angle: 0, x: 28, y: 50, src: "img/day-ghoul-right-arm.png", img: { isLoaded: 0 } }, head: { src: "img/day-ghoul.png", img: { isLoaded: 0 } }, hurt: { src: "img/ghoul-hurt.png", img: { isLoaded: 0 } }, death: { src: "img/day-ghoul-death.png", img: { isLoaded: 0 } }, units: 0, unitsMax: 30, areaEffect: 0, radius: 38, life: 160, speed: [0.12, 0.22], speedRun: [0.14, 0.25], loot: [ [IID.__ANIMAL_FAT__, 4, LOOTID.__ANIMAL_FAT__] ], light: 1, areaEffect: 0, explosion: 0, damageExplosion: 0, damageBuilding: 0, radiusDamage: 40, distDamage: 50, damage: [8, 20], knockback: 20, timelife: ((2 * 8) * 60) * 1000, score: 1200 }; AI[AIID.__FAST_GHOUL__] = { actionDelay: 300, actionImpactClient: 150, baseSpeed: 0.5, aggressive: 2, mode: MODE_AI.__AGGRESSIVE__, timeTrigger: (((2 * 2) * 8) * 60) * 1000, draw: Render.ghoul, breath: 0.05, armMove: 6, leftArm: { angle: 0, x: 28, y: -40, src: "img/day-ghoul3-left-arm.png", img: { isLoaded: 0 } }, rightArm: { angle: 0, x: 28, y: 40, src: "img/day-ghoul3-right-arm.png", img: { isLoaded: 0 } }, head: { src: "img/day-ghoul3.png", img: { isLoaded: 0 } }, hurt: { src: "img/ghoul3-hurt.png", img: { isLoaded: 0 } }, death: { src: "img/day-ghoul3-death.png", img: { isLoaded: 0 } }, units: 0, unitsMax: 18, areaEffect: 0, radius: 38, life: 100, speed: [0.18, 0.28], speedRun: [0.22, 0.38], loot: [ [IID.__GHOUL_BLOOD__, 4, LOOTID.ghoulblood] ], light: 1, areaEffect: 0, explosion: 0, damageExplosion: 0, damageBuilding: 0, radiusDamage: 40, distDamage: 50, damage: [7, 14], knockback: 20, timelife: ((2 * 8) * 60) * 1000, score: 1000 }; AI[AIID.__EXPLOSIVE_GHOUL__] = { actionDelay: 500, actionImpactClient: 350, baseSpeed: 0.5, aggressive: 4, mode: MODE_AI.__AGGRESSIVE__, timeTrigger: (((3 * 2) * 8) * 60) * 1000, draw: Render.ghoul, breath: 0.05, armMove: 6, leftArm: { angle: 0, x: 28, y: -48, src: "img/day-ghoul4-left-arm.png", img: { isLoaded: 0 } }, rightArm: { angle: 0, x: 28, y: 48, src: "img/day-ghoul4-right-arm.png", img: { isLoaded: 0 } }, head: { src: "img/day-ghoul4.png", img: { isLoaded: 0 } }, hurt: { src: "img/ghoul4-hurt.png", img: { isLoaded: 0 } }, death: { src: "img/day-ghoul4-death.png", img: { isLoaded: 0 } }, units: 0, unitsMax: 14, areaEffect: 0, radius: 38, life: 100, speed: [0.12, 0.23], speedRun: [0.14, 0.26], loot: [ [IID.__SULFUR__, 4, LOOTID.sulfur], [IID.__ANIMAL_FAT__, 4, LOOTID.__ANIMAL_FAT__], [IID.__JUNK__, 4, LOOTID.junk] ], light: 1, areaEffect: 0, explosion: 1, damageExplosion: 120, damageBuilding: 500, radiusDamage: 40, distDamage: 50, damage: [6, 20], knockback: 20, timelife: ((2 * 8) * 60) * 1000, score: 500 }; AI[AIID.__RADIOACTIVE_GHOUL__] = { actionDelay: 500, actionImpactClient: 350, baseSpeed: 0.5, aggressive: 8, mode: MODE_AI.__AGGRESSIVE__, timeTrigger: (((4 * 2) * 8) * 60) * 1000, draw: Render.ghoul, breath: 0.05, armMove: 6, leftArm: { angle: 0, x: 28, y: -40, src: "img/day-ghoul2-left-arm.png", img: { isLoaded: 0 } }, rightArm: { angle: 0, x: 28, y: 40, src: "img/day-ghoul2-right-arm.png", img: { isLoaded: 0 } }, head: { src: "img/day-ghoul2.png", img: { isLoaded: 0 } }, hurt: { src: "img/ghoul2-hurt.png", img: { isLoaded: 0 } }, death: { src: "img/day-ghoul2-death.png", img: { isLoaded: 0 } }, units: 0, unitsMax: 10, areaEffect: 0, radius: 38, life: 160, speed: [0.12, 0.23], speedRun: [0.14, 0.26], loot: [ [IID.__URANIUM__, 4, LOOTID.uranium] ], light: 1, areaEffect: __RADIATION__, explosion: 0, damageExplosion: 0, damageBuilding: 0, radiusDamage: 40, distDamage: 50, damage: [5, 15], knockback: 20, timelife: ((2 * 8) * 60) * 1000, score: 1500 }; AI[AIID.__ARMORED_GHOUL__] = { actionDelay: 700, actionImpactClient: 550, baseSpeed: 0.5, aggressive: 16, mode: MODE_AI.__AGGRESSIVE__, timeTrigger: (((5 * 2) * 8) * 60) * 1000, draw: Render.ghoul, breath: 0.05, armMove: 6, leftArm: { angle: 0, x: 28, y: -50, src: "img/day-ghoul1-left-arm.png", img: { isLoaded: 0 } }, rightArm: { angle: 0, x: 28, y: 50, src: "img/day-ghoul1-right-arm.png", img: { isLoaded: 0 } }, head: { src: "img/day-ghoul1.png", img: { isLoaded: 0 } }, hurt: { src: "img/ghoul1-hurt.png", img: { isLoaded: 0 } }, death: { src: "img/day-ghoul1-death.png", img: { isLoaded: 0 } }, units: 0, unitsMax: 14, areaEffect: 0, radius: 38, life: 800, speed: [0.11, 0.21], speedRun: [0.14, 0.24], loot: [ [IID.__ALLOYS__, 4, LOOTID.alloys], [IID.__SHAPED_METAL__, 12, LOOTID.__SHAPED_METAL__] ], light: 1, areaEffect: 0, explosion: 0, damageExplosion: 0, damageBuilding: 0, radiusDamage: 40, distDamage: 50, damage: [20, 50], knockback: 20, timelife: ((4 * 8) * 60) * 1000, score: 5000 }; AI[AIID.__PUMPKIN_GHOUL__] = { actionDelay: 700, actionImpactClient: 550, baseSpeed: 0.5, aggressive: 32, mode: MODE_AI.__AGGRESSIVE__, timeTrigger: ((2 * 8) * 60) * 1000, draw: Render.ghoul, breath: 0.05, armMove: 6, leftArm: { angle: 0, x: 28, y: -50, src: "img/day-ghoul5-left-arm.png", img: { isLoaded: 0 } }, rightArm: { angle: 0, x: 28, y: 50, src: "img/day-ghoul5-right-arm.png", img: { isLoaded: 0 } }, head: { src: "img/day-ghoul5.png", img: { isLoaded: 0 } }, hurt: { src: "img/ghoul5-hurt.png", img: { isLoaded: 0 } }, death: { src: "img/day-ghoul5-death.png", img: { isLoaded: 0 } }, units: 0, unitsMax: 0, areaEffect: 0, radius: 38, life: 160, speed: [0.04, 0.04], loot: [ [IID.__PUMPKIN__, 4, LOOTID.pumpkin] ], light: 0, areaEffect: 0, explosion: 0, damageExplosion: 0, damageBuilding: 0, radiusDamage: 40, distDamage: 50, damage: [20, 30], knockback: 20, timelife: ((2 * 8) * 60) * 1000, score: 100 }; AI[AIID.__LAPABOT_REPAIR__] = { actionDelay: 700, actionImpactClient: 550, baseSpeed: 0.5, aggressive: 0, mode: MODE_AI.__REPAIR__, timeTrigger: 0, draw: Render.ghoul, breath: 0.05, armMove: 6, leftArm: { angle: 0, x: 28, y: -50, src: "img/day-lapabot-left-arm.png", img: { isLoaded: 0 } }, rightArm: { angle: 0, x: 28, y: 50, src: "img/day-lapabot-right-arm.png", img: { isLoaded: 0 } }, head: { src: "img/day-lapabot.png", img: { isLoaded: 0 } }, hurt: { src: "img/lapabot-hurt.png", img: { isLoaded: 0 } }, death: { src: "img/day-lapabot-death.png", img: { isLoaded: 0 } }, units: 0, unitsMax: 0, areaEffect: 0, radius: 38, life: 600, speed: [0.08, 0.08], loot: [ [IID.__SHAPED_METAL__, 4, LOOTID.shapedmetal] ], light: 0, areaEffect: 0, explosion: 0, damageExplosion: 0, damageBuilding: 0, radiusDamage: 40, distDamage: 50, damage: [30, 30], knockback: 20, timelife: ((2 * 8) * 60) * 1000, score: 100 }; AI[AIID.__HAL_BOT__] = { actionDelay: 550, actionImpactClient: 400, baseSpeed: 0.5, aggressive: 0, mode: MODE_AI.__AGGRESSIVE__, timeTrigger: 0, draw: Render.ghoul, breath: 0.05, armMove: 6, leftArm: { angle: 0, x: 8, y: -45, src: "img/day-hal-bot-left-arm.png", img: { isLoaded: 0 } }, rightArm: { angle: 0, x: 8, y: 45, src: "img/day-hal-bot-right-arm.png", img: { isLoaded: 0 } }, head: { src: "img/day-hal-bot.png", img: { isLoaded: 0 } }, hurt: { src: "img/hal-bot-hurt.png", img: { isLoaded: 0 } }, death: { src: "img/day-hal-bot-death.png", img: { isLoaded: 0 } }, units: 0, unitsMax: 0, areaEffect: 0, radius: 38, life: 800, speed: [0.12, 0.12], loot: [ [IID.__SHAPED_METAL__, 4, LOOTID.shapedmetal] ], light: 0, areaEffect: 0, explosion: 0, damageExplosion: 0, damageBuilding: 0, radiusDamage: 40, distDamage: 50, damage: [30, 30], knockback: 20, timelife: ((2 * 8) * 60) * 1000, score: 500 }; AI[AIID.__TESLA_BOT__] = { actionDelay: 700, actionImpactClient: 550, baseSpeed: 0.5, aggressive: 0, mode: MODE_AI.__AGGRESSIVE__, timeTrigger: 0, draw: Render.ghoul, breath: 0.05, armMove: 6, leftArm: { angle: 0, x: 18, y: -60, src: "img/day-tesla-bot-left-arm.png", img: { isLoaded: 0 } }, rightArm: { angle: 0, x: 18, y: 60, src: "img/day-tesla-bot-right-arm.png", img: { isLoaded: 0 } }, head: { src: "img/day-tesla-bot.png", img: { isLoaded: 0 } }, hurt: { src: "img/tesla-bot-hurt.png", img: { isLoaded: 0 } }, death: { src: "img/day-tesla-bot-death.png", img: { isLoaded: 0 } }, units: 0, unitsMax: 0, areaEffect: 0, radius: 38, life: 3000, speed: [0.1, 0.1], loot: [ [IID.__SHAPED_URANIUM__, 4, LOOTID.shapeduranium], [IID.__ALLOYS__, 4, LOOTID.alloys] ], light: 0, areaEffect: 0, explosion: 1, damageExplosion: 100, damageBuilding: 100, radiusDamage: 40, distDamage: 50, damage: [80, 80], knockback: 40, timelife: ((2 * 8) * 60) * 1000, score: 3000 }; try { if (exports !== window.undefined) { exports.IID = IID; exports.FURNITUREID = FURNITUREID; exports.HOUSE = HOUSE; exports.HOUSEID = HOUSEID; exports.INVENTORY = INVENTORY; exports.LOOT = LOOT; exports.LOOTID = LOOTID; exports.RESID = RESID; exports.RESOURCES = RESOURCES; exports.AREAS = AREAS; exports.SKILLS = SKILLS; exports.KIT = KIT; exports.BRKIT = BRKIT; exports.AI = AI; exports.AIID = AIID; exports.BEHAVIOR = BEHAVIOR; for (var k = 0; k < 3; k++) { for (var i = 1; i < INVENTORY.length; i++) { var item = INVENTORY[i]; var recipe = item.detail.recipe; if (recipe === window.undefined) continue; for (var j = 0; j < recipe.length; j++) { var _item = INVENTORY[recipe[j][0]]; if (j === 0) item.score = 0; item.score += _item.score * recipe[j][1]; recipe[j][2] = _item.loot; } item.score = window.Math.floor(item.score / 4); } } for (var i = 0; i < FURNITURE.length; i++) { var item = FURNITURE[i]; var recipe = item.detail.recipe; if (recipe === window.undefined) continue; for (var j = 0; j < recipe.length; j++) { var _item = INVENTORY[recipe[j][0]]; if (j === 0) item.score = 0; item.score += _item.score * recipe[j][1]; recipe[j][2] = _item.loot; } item.score = window.Math.floor(item.score / 4); } } } catch (error) { for (var i = 0; i < KARMA.length; i++) KARMA[i].img = CanvasUtils.loadImage(KARMA[i].src, KARMA[i].img); INVENTORY2 = window.JSON.parse(window.JSON.stringify(INVENTORY)); PARTICLES2 = window.JSON.parse(window.JSON.stringify(PARTICLES)); LOOT2 = window.JSON.parse(window.JSON.stringify(LOOT)); ENTITIES2 = window.JSON.parse(window.JSON.stringify(ENTITIES)); RESOURCES2 = window.JSON.parse(window.JSON.stringify(RESOURCES)); LIGHTFIRE2 = window.JSON.parse(window.JSON.stringify(LIGHTFIRE)); AI2 = window.JSON.parse(window.JSON.stringify(AI)); function replaceStringInObject(vNWwm, wnvNw, code, nWnNV) { for (var WmVNW in wnvNw) { var MmmVN = wnvNw[WmVNW]; var nVW = vNWwm[WmVNW]; if (nVW === window.undefined) { vNWwm[WmVNW] = MmmVN; continue; } if (typeof nVW === "object") replaceStringInObject(nVW, MmmVN, code, nWnNV); else if (typeof nVW === "string") vNWwm[WmVNW] = nVW.replace(code, nWnNV); } }; replaceStringInObject(RESOURCES2, RESOURCES, "day", "night"); replaceStringInObject(INVENTORY2, INVENTORY, "day", "night"); replaceStringInObject(PARTICLES2, PARTICLES, "day", "night"); replaceStringInObject(LOOT2, LOOT, "day", "night"); replaceStringInObject(ENTITIES2, ENTITIES, "day", "night"); replaceStringInObject(LIGHTFIRE2, LIGHTFIRE, "day", "night"); replaceStringInObject(AI2, AI, "day", "night"); function updateClotheInfo(vNWwm) { for (var WmVNW in vNWwm) { var nVW = vNWwm[WmVNW]; if ((typeof nVW === "object") && (nVW !== null)) { if (nVW.rad !== window.undefined) { var wVn = ENTITIES[__ENTITIE_PLAYER__].clothes[nVW.idClothe]; wVn.rad = nVW.rad; wVn.warm = nVW.warm; wVn.def = nVW.def; wVn = ENTITIES2[__ENTITIE_PLAYER__].clothes[nVW.idClothe]; wVn.rad = nVW.rad; wVn.warm = nVW.warm; wVn.def = nVW.def; } else updateClotheInfo(nVW); } } }; updateClotheInfo(INVENTORY); } var AudioManager = (function() { var wwwvv = [237225, 303931, 166687, 229213, 217292, 205860, 182041, 273065]; var wMw = []; var WvwmM = window.Math.floor(window.Math.random() * wwwvv.length); var mvnmN = 0; var mWWVV = 0; var vmwnm = 0; var musicVolume = 0.45; var VNWVM = 0; var NNwwM = 0; AudioUtils.audio.end = new AudioUtils.Sound("audio/end.mp3", 0, true); AudioUtils.audio.title = new AudioUtils.Sound("audio/title.mp3", 0, true); AudioUtils.audio.geiger = new AudioUtils.Sound("audio/geiger.mp3", 0, true); AudioUtils.audio.ambient1 = new AudioUtils.Sound("audio/ambient1.mp3", 0, true); AudioUtils.audio.ambient2 = new AudioUtils.Sound("audio/ambient2.mp3", 0, true); AudioUtils.audio.ambient3 = new AudioUtils.Sound("audio/ambient3.mp3", 0, true); AudioUtils.audio.ambient4 = new AudioUtils.Sound("audio/ambient4.mp3", 0, true); AudioUtils.audio.ambient5 = new AudioUtils.Sound("audio/ambient5.mp3", 0, true); AudioUtils.audio.ambient6 = new AudioUtils.Sound("audio/ambient6.mp3", 0, true); AudioUtils.audio.ambient7 = new AudioUtils.Sound("audio/ambient7.mp3", 0, true); AudioUtils.audio.ambient8 = new AudioUtils.Sound("audio/ambient8.mp3", 0, true); wMw.push(AudioUtils.audio.ambient1); wMw.push(AudioUtils.audio.ambient2); wMw.push(AudioUtils.audio.ambient3); wMw.push(AudioUtils.audio.ambient4); wMw.push(AudioUtils.audio.ambient5); wMw.push(AudioUtils.audio.ambient6); wMw.push(AudioUtils.audio.ambient7); wMw.push(AudioUtils.audio.ambient8); AudioUtils._fx.open = new AudioUtils.Sound("audio/open.mp3", 1, false, 1); AudioUtils._fx.drag = new AudioUtils.Sound("audio/drag.mp3", 1, false, 1); AudioUtils._fx.play = new AudioUtils.Sound("audio/play.mp3", 1, false, 1); AudioUtils._fx.skill = new AudioUtils.Sound("audio/skill.mp3", 1, false, 1); AudioUtils._fx.craft = new AudioUtils.Sound("audio/craft.mp3", 1, false, 1); AudioUtils._fx.button = new AudioUtils.Sound("audio/button.mp3", 1, false, 1); AudioUtils._fx.throwLoot = new AudioUtils.Sound("audio/throwLoot.mp3", 1, false, 1); AudioUtils._fx.levelup = new AudioUtils.Sound("audio/levelup.mp3", 1, false, 1); AudioUtils._fx.explosion = new AudioUtils.Sound("audio/explosion.mp3", 1, false, 1); AudioUtils._fx.zipperOn = new AudioUtils.Sound("audio/zipper-on.mp3", 0.7, false, 1); AudioUtils._fx.zipperOff = new AudioUtils.Sound("audio/zipper-off.mp3", 0.7, false, 1); AudioUtils._fx.eat = [new AudioUtils.Sound("audio/eat-1s-0.mp3", 1, false, 1), new AudioUtils.Sound("audio/eat-1s-1.mp3", 1, false, 1), new AudioUtils.Sound("audio/eat-1s-2.mp3", 1, false, 1)]; AudioUtils._fx.damage = []; for (var i = 1; i < SOUND.length; i++) AudioUtils._fx.damage[i] = new AudioUtils.Sound(SOUND[i], 1, false, 1); AudioUtils._fx.shot = []; var weapons = ENTITIES[__ENTITIE_PLAYER__].weapons; for (var i = 0; i < weapons.length; i++) { var weapon = weapons[i]; if (weapon.sound === window.undefined) AudioUtils._fx.shot[i] = 0; else if (typeof weapon.sound === "number") AudioUtils._fx.shot[i] = weapon.sound; else { AudioUtils._fx.shot[i] = []; for (var j = 0; j < weapon.sound.length; j++) AudioUtils._fx.shot[i][j] = new AudioUtils.Sound(weapon.sound[j], 1, false, 1); } } if (AudioUtils.options.isAudio === 1) { AudioUtils.loadSound(wMw[WvwmM]); AudioUtils.loadSound(AudioUtils.audio.title); } for (var i = 0; i < AudioUtils._fx.shot.length; i++) { var sound = AudioUtils._fx.shot[i]; if (sound === 1) AudioUtils._fx.shot[i] = AudioUtils._fx.eat; } if (AudioUtils.options.isFx === 1) { AudioUtils.loadSound(AudioUtils._fx.open); AudioUtils.loadSound(AudioUtils._fx.play); AudioUtils.loadSound(AudioUtils._fx.drag); AudioUtils.loadSound(AudioUtils._fx.skill); AudioUtils.loadSound(AudioUtils._fx.craft); AudioUtils.loadSound(AudioUtils._fx.button); AudioUtils.loadSound(AudioUtils._fx.levelup); AudioUtils.loadSound(AudioUtils._fx.explosion); for (var i = 0; i < AudioUtils._fx.eat.length; i++) AudioUtils.loadSound(AudioUtils._fx.eat[i]); for (var i = 1; i < AudioUtils._fx.damage.length; i++) AudioUtils.loadSound(AudioUtils._fx.damage[i]); for (var i = 0; i < AudioUtils._fx.shot.length; i++) { var sound = AudioUtils._fx.shot[i]; if (sound !== 0) { for (var j = 0; j < sound.length; j++) AudioUtils.loadSound(sound[j]); } } } function scheduler() { AudioUtils.playSound(AudioUtils.audio.title); AudioUtils.playSound(AudioUtils.audio.end); for (var i = 0; i < wMw.length; i++) AudioUtils.playSound(wMw[i]); if (AudioUtils.options.isFx === 1) { var wmNWn = AudioUtils.options.isAudio; AudioUtils.options.isAudio = 1; AudioUtils.playSound(AudioUtils.audio.geiger); AudioUtils.options.isAudio = wmNWn; } if ((NNwwM !== AudioManager.geiger) && (mWWVV === 1)) { if (VNWVM === 0) { VNWVM = 1000; var distance = AudioManager.geiger - NNwwM; AudioUtils.fadeSound(AudioUtils.audio.geiger, 250, distance); NNwwM = AudioManager.geiger; } VNWVM = window.Math.max(0, VNWVM - delta); } if ((mvnmN === 0) && (mWWVV === 1)) { AudioUtils.fadeSound(wMw[WvwmM], 5000, -musicVolume); WvwmM = (WvwmM + 1) % wMw.length; mvnmN = wwwvv[WvwmM] - 5000; AudioUtils.fadeSound(wMw[WvwmM], 5000, musicVolume); } mvnmN = window.Math.max(0, mvnmN - delta); }; function quitGame() { mWWVV = 0; vmwnm = 1; AudioUtils.fadeSound(AudioUtils.audio.geiger, 250, -NNwwM); NNwwM = 0; AudioManager.geiger = 0; AudioUtils.fadeSound(wMw[WvwmM], 500, -musicVolume); AudioUtils.fadeSound(AudioUtils.audio.end, 1000, AudioManager.musicVolume); }; function cutTitleMusic() { if (vmwnm === 0) AudioUtils.fadeSound(AudioUtils.audio.title, 500, -musicVolume); else AudioUtils.fadeSound(AudioUtils.audio.end, 500, -musicVolume); }; function startGame() { mWWVV = 1; cutTitleMusic(); if (mvnmN === 0) WvwmM = (WvwmM + 1) % wMw.length; mvnmN = wwwvv[WvwmM] - 5000; AudioUtils.fadeSound(wMw[WvwmM], 5000, musicVolume); }; return { startGame: startGame, quitGame: quitGame, scheduler: scheduler, cutTitleMusic: cutTitleMusic, musicVolume: musicVolume, geiger: 0 }; })(); try { debugMode; } catch (error) { debugMode = window.undefined; } if (debugMode === window.undefined) { window.aiptag = window.aiptag || ({}); window.aiptag["consented"] = true; window.aiptag["cmd"] = window.aiptag["cmd"] || ([]); window.aiptag["cmd"]["display"] = window.aiptag["cmd"]["display"] || ([]); window.aiptag["cmd"]["player"] = window.aiptag["cmd"]["player"] || ([]); var fun = function() { adplayer = new aipPlayer({ AD_WIDTH: 960, AD_HEIGHT: 540, AD_FULLSCREEN: true, AD_CENTERPLAYER: true, LOADING_TEXT: 'loading advertisement', PREROLL_ELEM: function() { return window.document.getElementById('preroll'); }, AIP_COMPLETE: function(nMWWmvw) { Home.waitAds = 0; Home.ads = -1; Home.joinServer(); }, AIP_REMOVE: function() {} }); }; window.aiptag["cmd"]["player"].push(fun); } function reloadIframe() { try { if (window.self !== window.top) { loaded = localStorage2.getItem("inIframe"); if (loaded === "1") localStorage2.setItem("inIframe", "0"); else { localStorage2.setItem("inIframe", "1"); window.location.href = window.location.href + ""; } } } catch (error) {} }; reloadIframe(); var versionInf = [30, 2079]; try { debugMode; } catch (error) { debugMode = window.undefined; } Entitie.init(600, 30000, 5000); Client.init(30, 15000, 2000, 3, 60000, 10000, onMessageRaw, onMessageJSON, onFirstMessage); function waitHTMLAndRun() { htmlLoaded = ((((((((true && (window.document.getElementById("nickname") !== null)) && (window.document.getElementById("terms") !== null)) && (window.document.getElementById("serverList") !== null)) && (window.document.getElementById("changelog") !== null)) && (window.document.getElementById("howtoplay") !== null)) && (window.document.getElementById("featuredVideo") !== null)) && (window.document.getElementById("trevda") !== null)) && (window.document.getElementById("preroll") !== null)) && (window.document.getElementById("chat") !== null); if (htmlLoaded === true) { Loader.init(); Home.init(); Game.init(); Score.init(); Rank.init(); Editor.init(); CanvasUtils.initAnimatedCanvas(Loader, __RESIZE_METHOD_SCALE__, "can", "bod", 1280, window.undefined, true); Loader.run(); } else window.setTimeout(waitHTMLAndRun, 100); }; window.onbeforeunload = function() { if (Client.state & Client.State.__CONNECTED__) return "Are you sure you want quit?"; }; waitHTMLAndRun(); //var noDebug = window.console; //noDebug.log = noDebug.info = noDebug.error = noDebug.warn = noDebug.debug = noDebug.NWVnW = noDebug.trace = noDebug.time = noDebug.timeEnd = function() {}; /** * dat-gui JavaScript Controller Library * https://github.com/dataarts/dat.gui * * Copyright 2011 Data Arts Team, Google Creative Lab * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.dat={})}(this,function(e){"use strict";function t(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),s=e.a,a=Math.round(e.h),l=e.s.toFixed(1),d=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var c=e.hex.toString(16);c.length<6;)c="0"+c;return"#"+c}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+s+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+s+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+s+"}":"HSV_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+"}":"HSVA_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+",a:"+s+"}":"unknown format"}function n(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(I.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(I.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function o(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(I.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(I.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}function i(e){if("0"===e||S.isUndefined(e))return 0;var t=e.match(U);return S.isNull(t)?0:parseFloat(t[1])}function r(e){var t=e.toString();return t.indexOf(".")>-1?t.length-t.indexOf(".")-1:0}function s(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}function a(e,t,n,o,i){return o+(e-t)/(n-t)*(i-o)}function l(e,t,n,o){e.style.background="",S.each(ee,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function d(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}function c(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function u(e){X.unbind(window,"resize",e.__resizeHandler),e.saveToLocalStorageIfPossible&&X.unbind(window,"unload",e.saveToLocalStorageIfPossible)}function _(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];n.innerHTML=t?n.value+"*":n.value}function h(e,t,n){if(n.__li=t,n.__gui=e,S.extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:o,factoryArgs:[S.toArray(arguments)]})}if(S.isArray(t)||S.isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof q){var o=new Q(n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});S.each(["updateDisplay","onChange","onFinishChange","step","min","max"],function(e){var t=n[e],i=o[e];n[e]=o[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(o,e),t.apply(n,e)}}),X.addClass(t,"has-slider"),n.domElement.insertBefore(o.domElement,n.domElement.firstElementChild)}else if(n instanceof Q){var i=function(t){if(S.isNumber(n.__min)&&S.isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=f(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=S.compose(i,n.min),n.max=S.compose(i,n.max)}else n instanceof K?(X.bind(t,"click",function(){X.fakeEvent(n.__checkbox,"click")}),X.bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof Z?(X.bind(t,"click",function(){X.fakeEvent(n.__button,"click")}),X.bind(t,"mouseover",function(){X.addClass(n.__button,"hover")}),X.bind(t,"mouseout",function(){X.removeClass(n.__button,"hover")})):n instanceof $&&(X.addClass(t,"color"),n.updateDisplay=S.compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=S.compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&_(e.getRoot(),!0),t},n.setValue)}function p(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(-1!==o){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,s=void 0;if(r[e.preset])s=r[e.preset];else{if(!r[se])return;s=r[se]}if(s[o]&&void 0!==s[o][t.property]){var a=s[o][t.property];t.initialValue=a,t.setValue(a)}}}}function f(e,t,n,o){if(void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var i=void 0;if(o.color)i=new $(t,n);else{var r=[t,n].concat(o.factoryArgs);i=ne.apply(e,r)}o.before instanceof z&&(o.before=o.before.__li),p(e,i),X.addClass(i.domElement,"c");var s=document.createElement("span");X.addClass(s,"property-name"),s.innerHTML=i.property;var a=document.createElement("div");a.appendChild(s),a.appendChild(i.domElement);var l=c(e,a,o.before);return X.addClass(l,he.CLASS_CONTROLLER_ROW),i instanceof $?X.addClass(l,"color"):X.addClass(l,H(i.getValue())),h(e,l,i),e.__controllers.push(i),i}function m(e,t){return document.location.href+"."+t}function g(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function b(e,t){t.style.display=e.useLocalStorage?"block":"none"}function v(e){var t=e.__save_row=document.createElement("li");X.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),X.addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",X.addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",X.addClass(o,"button"),X.addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",X.addClass(i,"button"),X.addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",X.addClass(r,"button"),X.addClass(r,"revert");var s=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?S.each(e.load.remembered,function(t,n){g(e,n,n===e.preset)}):g(e,se,!1),X.bind(s,"change",function(){for(var t=0;t<e.__preset_select.length;t++)e.__preset_select[t].innerHTML=e.__preset_select[t].value;e.preset=this.value}),t.appendChild(s),t.appendChild(n),t.appendChild(o),t.appendChild(i),t.appendChild(r),ae){var a=document.getElementById("dg-local-explain"),l=document.getElementById("dg-local-storage");document.getElementById("dg-save-locally").style.display="block","true"===localStorage.getItem(m(e,"isLocal"))&&l.setAttribute("checked","checked"),b(e,a),X.bind(l,"change",function(){e.useLocalStorage=!e.useLocalStorage,b(e,a)})}var d=document.getElementById("dg-new-constructor");X.bind(d,"keydown",function(e){!e.metaKey||67!==e.which&&67!==e.keyCode||le.hide()}),X.bind(n,"click",function(){d.innerHTML=JSON.stringify(e.getSaveObject(),void 0,2),le.show(),d.focus(),d.select()}),X.bind(o,"click",function(){e.save()}),X.bind(i,"click",function(){var t=prompt("Enter a new preset name.");t&&e.saveAs(t)}),X.bind(r,"click",function(){e.revert()})}function y(e){function t(t){return t.preventDefault(),e.width+=i-t.clientX,e.onResize(),i=t.clientX,!1}function n(){X.removeClass(e.__closeButton,he.CLASS_DRAG),X.unbind(window,"mousemove",t),X.unbind(window,"mouseup",n)}function o(o){return o.preventDefault(),i=o.clientX,X.addClass(e.__closeButton,he.CLASS_DRAG),X.bind(window,"mousemove",t),X.bind(window,"mouseup",n),!1}var i=void 0;e.__resize_handle=document.createElement("div"),S.extend(e.__resize_handle.style,{width:"6px",marginLeft:"-3px",height:"200px",cursor:"ew-resize",position:"absolute"}),X.bind(e.__resize_handle,"mousedown",o),X.bind(e.__closeButton,"mousedown",o),e.domElement.insertBefore(e.__resize_handle,e.domElement.firstElementChild)}function w(e,t){e.domElement.style.width=t+"px",e.__save_row&&e.autoPlace&&(e.__save_row.style.width=t+"px"),e.__closeButton&&(e.__closeButton.style.width=t+"px")}function x(e,t){var n={};return S.each(e.__rememberedObjects,function(o,i){var r={},s=e.__rememberedObjectIndecesToControllers[i];S.each(s,function(e,n){r[n]=t?e.initialValue:e.getValue()}),n[i]=r}),n}function E(e){for(var t=0;t<e.__preset_select.length;t++)e.__preset_select[t].value===e.preset&&(e.__preset_select.selectedIndex=t)}function C(e){0!==e.length&&oe.call(window,function(){C(e)}),S.each(e,function(e){e.updateDisplay()})}var A=Array.prototype.forEach,k=Array.prototype.slice,S={BREAK:{},extend:function(e){return this.each(k.call(arguments,1),function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))},this),e},defaults:function(e){return this.each(k.call(arguments,1),function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))},this),e},compose:function(){var e=k.call(arguments);return function(){for(var t=k.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,n){if(e)if(A&&e.forEach&&e.forEach===A)e.forEach(t,n);else if(e.length===e.length+0){var o=void 0,i=void 0;for(o=0,i=e.length;o<i;o++)if(o in e&&t.call(n,e[o],o)===this.BREAK)return}else for(var r in e)if(t.call(n,e[r],r)===this.BREAK)return},defer:function(e){setTimeout(e,0)},debounce:function(e,t,n){var o=void 0;return function(){var i=this,r=arguments,s=n||!o;clearTimeout(o),o=setTimeout(function(){o=null,n||e.apply(i,r)},t),s&&e.apply(i,r)}},toArray:function(e){return e.toArray?e.toArray():k.call(e)},isUndefined:function(e){return void 0===e},isNull:function(e){return null===e},isNaN:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e){return isNaN(e)}),isArray:Array.isArray||function(e){return e.constructor===Array},isObject:function(e){return e===Object(e)},isNumber:function(e){return e===e+0},isString:function(e){return e===e+""},isBoolean:function(e){return!1===e||!0===e},isFunction:function(e){return e instanceof Function}},O=[{litmus:S.isString,conversions:{THREE_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString()+t[1].toString()+t[2].toString()+t[2].toString()+t[3].toString()+t[3].toString(),0)}},write:t},SIX_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9]{6})$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString(),0)}},write:t},CSS_RGB:{read:function(e){var t=e.match(/^rgb\(\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3])}},write:t},CSS_RGBA:{read:function(e){var t=e.match(/^rgba\(\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3]),a:parseFloat(t[4])}},write:t}}},{litmus:S.isNumber,conversions:{HEX:{read:function(e){return{space:"HEX",hex:e,conversionName:"HEX"}},write:function(e){return e.hex}}}},{litmus:S.isArray,conversions:{RGB_ARRAY:{read:function(e){return 3===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2]}},write:function(e){return[e.r,e.g,e.b]}},RGBA_ARRAY:{read:function(e){return 4===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2],a:e[3]}},write:function(e){return[e.r,e.g,e.b,e.a]}}}},{litmus:S.isObject,conversions:{RGBA_OBJ:{read:function(e){return!!(S.isNumber(e.r)&&S.isNumber(e.g)&&S.isNumber(e.b)&&S.isNumber(e.a))&&{space:"RGB",r:e.r,g:e.g,b:e.b,a:e.a}},write:function(e){return{r:e.r,g:e.g,b:e.b,a:e.a}}},RGB_OBJ:{read:function(e){return!!(S.isNumber(e.r)&&S.isNumber(e.g)&&S.isNumber(e.b))&&{space:"RGB",r:e.r,g:e.g,b:e.b}},write:function(e){return{r:e.r,g:e.g,b:e.b}}},HSVA_OBJ:{read:function(e){return!!(S.isNumber(e.h)&&S.isNumber(e.s)&&S.isNumber(e.v)&&S.isNumber(e.a))&&{space:"HSV",h:e.h,s:e.s,v:e.v,a:e.a}},write:function(e){return{h:e.h,s:e.s,v:e.v,a:e.a}}},HSV_OBJ:{read:function(e){return!!(S.isNumber(e.h)&&S.isNumber(e.s)&&S.isNumber(e.v))&&{space:"HSV",h:e.h,s:e.s,v:e.v}},write:function(e){return{h:e.h,s:e.s,v:e.v}}}}}],T=void 0,L=void 0,R=function(){L=!1;var e=arguments.length>1?S.toArray(arguments):arguments[0];return S.each(O,function(t){if(t.litmus(e))return S.each(t.conversions,function(t,n){if(T=t.read(e),!1===L&&!1!==T)return L=T,T.conversionName=n,T.conversion=t,S.BREAK}),S.BREAK}),L},B=void 0,N={hsv_to_rgb:function(e,t,n){var o=Math.floor(e/60)%6,i=e/60-Math.floor(e/60),r=n*(1-t),s=n*(1-i*t),a=n*(1-(1-i)*t),l=[[n,a,r],[s,n,r],[r,n,a],[r,s,n],[a,r,n],[n,r,s]][o];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,n){var o=Math.min(e,t,n),i=Math.max(e,t,n),r=i-o,s=void 0,a=void 0;return 0===i?{h:NaN,s:0,v:0}:(a=r/i,s=e===i?(t-n)/r:t===i?2+(n-e)/r:4+(e-t)/r,(s/=6)<0&&(s+=1),{h:360*s,s:a,v:i/255})},rgb_to_hex:function(e,t,n){var o=this.hex_with_component(0,2,e);return o=this.hex_with_component(o,1,t),o=this.hex_with_component(o,0,n)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,n){return n<<(B=8*t)|e&~(255<<B)}},H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},F=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},P=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),D=function e(t,n,o){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,n);if(void 0===i){var r=Object.getPrototypeOf(t);return null===r?void 0:e(r,n,o)}if("value"in i)return i.value;var s=i.get;if(void 0!==s)return s.call(o)},j=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},V=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},I=function(){function e(){if(F(this,e),this.__state=R.apply(this,arguments),!1===this.__state)throw new Error("Failed to interpret color arguments");this.__state.a=this.__state.a||1}return P(e,[{key:"toString",value:function(){return t(this)}},{key:"toHexString",value:function(){return t(this,!0)}},{key:"toOriginal",value:function(){return this.__state.conversion.write(this)}}]),e}();I.recalculateRGB=function(e,t,n){if("HEX"===e.__state.space)e.__state[t]=N.component_from_hex(e.__state.hex,n);else{if("HSV"!==e.__state.space)throw new Error("Corrupted color state");S.extend(e.__state,N.hsv_to_rgb(e.__state.h,e.__state.s,e.__state.v))}},I.recalculateHSV=function(e){var t=N.rgb_to_hsv(e.r,e.g,e.b);S.extend(e.__state,{s:t.s,v:t.v}),S.isNaN(t.h)?S.isUndefined(e.__state.h)&&(e.__state.h=0):e.__state.h=t.h},I.COMPONENTS=["r","g","b","h","s","v","hex","a"],n(I.prototype,"r",2),n(I.prototype,"g",1),n(I.prototype,"b",0),o(I.prototype,"h"),o(I.prototype,"s"),o(I.prototype,"v"),Object.defineProperty(I.prototype,"a",{get:function(){return this.__state.a},set:function(e){this.__state.a=e}}),Object.defineProperty(I.prototype,"hex",{get:function(){return"HEX"!==this.__state.space&&(this.__state.hex=N.rgb_to_hex(this.r,this.g,this.b),this.__state.space="HEX"),this.__state.hex},set:function(e){this.__state.space="HEX",this.__state.hex=e}});var z=function(){function e(t,n){F(this,e),this.initialValue=t[n],this.domElement=document.createElement("div"),this.object=t,this.property=n,this.__onChange=void 0,this.__onFinishChange=void 0}return P(e,[{key:"onChange",value:function(e){return this.__onChange=e,this}},{key:"onFinishChange",value:function(e){return this.__onFinishChange=e,this}},{key:"setValue",value:function(e){return this.object[this.property]=e,this.__onChange&&this.__onChange.call(this,e),this.updateDisplay(),this}},{key:"getValue",value:function(){return this.object[this.property]}},{key:"updateDisplay",value:function(){return this}},{key:"isModified",value:function(){return this.initialValue!==this.getValue()}}]),e}(),M={HTMLEvents:["change"],MouseEvents:["click","mousemove","mousedown","mouseup","mouseover"],KeyboardEvents:["keydown"]},G={};S.each(M,function(e,t){S.each(e,function(e){G[e]=t})});var U=/(\d+(\.\d+)?)px/,X={makeSelectable:function(e,t){void 0!==e&&void 0!==e.style&&(e.onselectstart=t?function(){return!1}:function(){},e.style.MozUserSelect=t?"auto":"none",e.style.KhtmlUserSelect=t?"auto":"none",e.unselectable=t?"on":"off")},makeFullscreen:function(e,t,n){var o=n,i=t;S.isUndefined(i)&&(i=!0),S.isUndefined(o)&&(o=!0),e.style.position="absolute",i&&(e.style.left=0,e.style.right=0),o&&(e.style.top=0,e.style.bottom=0)},fakeEvent:function(e,t,n,o){var i=n||{},r=G[t];if(!r)throw new Error("Event type "+t+" not supported.");var s=document.createEvent(r);switch(r){case"MouseEvents":var a=i.x||i.clientX||0,l=i.y||i.clientY||0;s.initMouseEvent(t,i.bubbles||!1,i.cancelable||!0,window,i.clickCount||1,0,0,a,l,!1,!1,!1,!1,0,null);break;case"KeyboardEvents":var d=s.initKeyboardEvent||s.initKeyEvent;S.defaults(i,{cancelable:!0,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,keyCode:void 0,charCode:void 0}),d(t,i.bubbles||!1,i.cancelable,window,i.ctrlKey,i.altKey,i.shiftKey,i.metaKey,i.keyCode,i.charCode);break;default:s.initEvent(t,i.bubbles||!1,i.cancelable||!0)}S.defaults(s,o),e.dispatchEvent(s)},bind:function(e,t,n,o){var i=o||!1;return e.addEventListener?e.addEventListener(t,n,i):e.attachEvent&&e.attachEvent("on"+t,n),X},unbind:function(e,t,n,o){var i=o||!1;return e.removeEventListener?e.removeEventListener(t,n,i):e.detachEvent&&e.detachEvent("on"+t,n),X},addClass:function(e,t){if(void 0===e.className)e.className=t;else if(e.className!==t){var n=e.className.split(/ +/);-1===n.indexOf(t)&&(n.push(t),e.className=n.join(" ").replace(/^\s+/,"").replace(/\s+$/,""))}return X},removeClass:function(e,t){if(t)if(e.className===t)e.removeAttribute("class");else{var n=e.className.split(/ +/),o=n.indexOf(t);-1!==o&&(n.splice(o,1),e.className=n.join(" "))}else e.className=void 0;return X},hasClass:function(e,t){return new RegExp("(?:^|\\s+)"+t+"(?:\\s+|$)").test(e.className)||!1},getWidth:function(e){var t=getComputedStyle(e);return i(t["border-left-width"])+i(t["border-right-width"])+i(t["padding-left"])+i(t["padding-right"])+i(t.width)},getHeight:function(e){var t=getComputedStyle(e);return i(t["border-top-width"])+i(t["border-bottom-width"])+i(t["padding-top"])+i(t["padding-bottom"])+i(t.height)},getOffset:function(e){var t=e,n={left:0,top:0};if(t.offsetParent)do{n.left+=t.offsetLeft,n.top+=t.offsetTop,t=t.offsetParent}while(t);return n},isActive:function(e){return e===document.activeElement&&(e.type||e.href)}},K=function(e){function t(e,n){F(this,t);var o=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),i=o;return o.__prev=o.getValue(),o.__checkbox=document.createElement("input"),o.__checkbox.setAttribute("type","checkbox"),X.bind(o.__checkbox,"change",function(){i.setValue(!i.__prev)},!1),o.domElement.appendChild(o.__checkbox),o.updateDisplay(),o}return j(t,z),P(t,[{key:"setValue",value:function(e){var n=D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,e);return this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue()),this.__prev=this.getValue(),n}},{key:"updateDisplay",value:function(){return!0===this.getValue()?(this.__checkbox.setAttribute("checked","checked"),this.__checkbox.checked=!0,this.__prev=!0):(this.__checkbox.checked=!1,this.__prev=!1),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),Y=function(e){function t(e,n,o){F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=o,s=i;if(i.__select=document.createElement("select"),S.isArray(r)){var a={};S.each(r,function(e){a[e]=e}),r=a}return S.each(r,function(e,t){var n=document.createElement("option");n.innerHTML=t,n.setAttribute("value",e),s.__select.appendChild(n)}),i.updateDisplay(),X.bind(i.__select,"change",function(){var e=this.options[this.selectedIndex].value;s.setValue(e)}),i.domElement.appendChild(i.__select),i}return j(t,z),P(t,[{key:"setValue",value:function(e){var n=D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,e);return this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue()),n}},{key:"updateDisplay",value:function(){return X.isActive(this.__select)?this:(this.__select.value=this.getValue(),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this))}}]),t}(),J=function(e){function t(e,n){function o(){r.setValue(r.__input.value)}F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=i;return i.__input=document.createElement("input"),i.__input.setAttribute("type","text"),X.bind(i.__input,"keyup",o),X.bind(i.__input,"change",o),X.bind(i.__input,"blur",function(){r.__onFinishChange&&r.__onFinishChange.call(r,r.getValue())}),X.bind(i.__input,"keydown",function(e){13===e.keyCode&&this.blur()}),i.updateDisplay(),i.domElement.appendChild(i.__input),i}return j(t,z),P(t,[{key:"updateDisplay",value:function(){return X.isActive(this.__input)||(this.__input.value=this.getValue()),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),W=function(e){function t(e,n,o){F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),s=o||{};return i.__min=s.min,i.__max=s.max,i.__step=s.step,S.isUndefined(i.__step)?0===i.initialValue?i.__impliedStep=1:i.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(i.initialValue))/Math.LN10))/10:i.__impliedStep=i.__step,i.__precision=r(i.__impliedStep),i}return j(t,z),P(t,[{key:"setValue",value:function(e){var n=e;return void 0!==this.__min&&n<this.__min?n=this.__min:void 0!==this.__max&&n>this.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!=0&&(n=Math.round(n/this.__step)*this.__step),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,n)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=r(e),this}}]),t}(),Q=function(e){function t(e,n,o){function i(){l.__onFinishChange&&l.__onFinishChange.call(l,l.getValue())}function r(e){var t=d-e.clientY;l.setValue(l.getValue()+t*l.__impliedStep),d=e.clientY}function s(){X.unbind(window,"mousemove",r),X.unbind(window,"mouseup",s),i()}F(this,t);var a=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,o));a.__truncationSuspended=!1;var l=a,d=void 0;return a.__input=document.createElement("input"),a.__input.setAttribute("type","text"),X.bind(a.__input,"change",function(){var e=parseFloat(l.__input.value);S.isNaN(e)||l.setValue(e)}),X.bind(a.__input,"blur",function(){i()}),X.bind(a.__input,"mousedown",function(e){X.bind(window,"mousemove",r),X.bind(window,"mouseup",s),d=e.clientY}),X.bind(a.__input,"keydown",function(e){13===e.keyCode&&(l.__truncationSuspended=!0,this.blur(),l.__truncationSuspended=!1,i())}),a.updateDisplay(),a.domElement.appendChild(a.__input),a}return j(t,W),P(t,[{key:"updateDisplay",value:function(){return this.__input.value=this.__truncationSuspended?this.getValue():s(this.getValue(),this.__precision),D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),q=function(e){function t(e,n,o,i,r){function s(e){e.preventDefault();var t=_.__background.getBoundingClientRect();return _.setValue(a(e.clientX,t.left,t.right,_.__min,_.__max)),!1}function l(){X.unbind(window,"mousemove",s),X.unbind(window,"mouseup",l),_.__onFinishChange&&_.__onFinishChange.call(_,_.getValue())}function d(e){var t=e.touches[0].clientX,n=_.__background.getBoundingClientRect();_.setValue(a(t,n.left,n.right,_.__min,_.__max))}function c(){X.unbind(window,"touchmove",d),X.unbind(window,"touchend",c),_.__onFinishChange&&_.__onFinishChange.call(_,_.getValue())}F(this,t);var u=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,{min:o,max:i,step:r})),_=u;return u.__background=document.createElement("div"),u.__foreground=document.createElement("div"),X.bind(u.__background,"mousedown",function(e){document.activeElement.blur(),X.bind(window,"mousemove",s),X.bind(window,"mouseup",l),s(e)}),X.bind(u.__background,"touchstart",function(e){1===e.touches.length&&(X.bind(window,"touchmove",d),X.bind(window,"touchend",c),d(e))}),X.addClass(u.__background,"slider"),X.addClass(u.__foreground,"slider-fg"),u.updateDisplay(),u.__background.appendChild(u.__foreground),u.domElement.appendChild(u.__background),u}return j(t,W),P(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",D(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),Z=function(e){function t(e,n,o){F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=i;return i.__button=document.createElement("div"),i.__button.innerHTML=void 0===o?"Fire":o,X.bind(i.__button,"click",function(e){return e.preventDefault(),r.fire(),!1}),X.addClass(i.__button,"button"),i.domElement.appendChild(i.__button),i}return j(t,z),P(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(),$=function(e){function t(e,n){function o(e){u(e),X.bind(window,"mousemove",u),X.bind(window,"touchmove",u),X.bind(window,"mouseup",r),X.bind(window,"touchend",r)}function i(e){_(e),X.bind(window,"mousemove",_),X.bind(window,"touchmove",_),X.bind(window,"mouseup",s),X.bind(window,"touchend",s)}function r(){X.unbind(window,"mousemove",u),X.unbind(window,"touchmove",u),X.unbind(window,"mouseup",r),X.unbind(window,"touchend",r),c()}function s(){X.unbind(window,"mousemove",_),X.unbind(window,"touchmove",_),X.unbind(window,"mouseup",s),X.unbind(window,"touchend",s),c()}function a(){var e=R(this.value);!1!==e?(p.__color.__state=e,p.setValue(p.__color.toOriginal())):this.value=p.__color.toString()}function c(){p.__onFinishChange&&p.__onFinishChange.call(p,p.__color.toOriginal())}function u(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__saturation_field.getBoundingClientRect(),n=e.touches&&e.touches[0]||e,o=n.clientX,i=n.clientY,r=(o-t.left)/(t.right-t.left),s=1-(i-t.top)/(t.bottom-t.top);return s>1?s=1:s<0&&(s=0),r>1?r=1:r<0&&(r=0),p.__color.v=s,p.__color.s=r,p.setValue(p.__color.toOriginal()),!1}function _(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__hue_field.getBoundingClientRect(),n=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),p.__color.h=360*n,p.setValue(p.__color.toOriginal()),!1}F(this,t);var h=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));h.__color=new I(h.getValue()),h.__temp=new I(0);var p=h;h.domElement=document.createElement("div"),X.makeSelectable(h.domElement,!1),h.__selector=document.createElement("div"),h.__selector.className="selector",h.__saturation_field=document.createElement("div"),h.__saturation_field.className="saturation-field",h.__field_knob=document.createElement("div"),h.__field_knob.className="field-knob",h.__field_knob_border="2px solid ",h.__hue_knob=document.createElement("div"),h.__hue_knob.className="hue-knob",h.__hue_field=document.createElement("div"),h.__hue_field.className="hue-field",h.__input=document.createElement("input"),h.__input.type="text",h.__input_textShadow="0 1px 1px ",X.bind(h.__input,"keydown",function(e){13===e.keyCode&&a.call(this)}),X.bind(h.__input,"blur",a),X.bind(h.__selector,"mousedown",function(){X.addClass(this,"drag").bind(window,"mouseup",function(){X.removeClass(p.__selector,"drag")})}),X.bind(h.__selector,"touchstart",function(){X.addClass(this,"drag").bind(window,"touchend",function(){X.removeClass(p.__selector,"drag")})});var f=document.createElement("div");return S.extend(h.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),S.extend(h.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:h.__field_knob_border+(h.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),S.extend(h.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),S.extend(h.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),S.extend(f.style,{width:"100%",height:"100%",background:"none"}),l(f,"top","rgba(0,0,0,0)","#000"),S.extend(h.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),d(h.__hue_field),S.extend(h.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:h.__input_textShadow+"rgba(0,0,0,0.7)"}),X.bind(h.__saturation_field,"mousedown",o),X.bind(h.__saturation_field,"touchstart",o),X.bind(h.__field_knob,"mousedown",o),X.bind(h.__field_knob,"touchstart",o),X.bind(h.__hue_field,"mousedown",i),X.bind(h.__hue_field,"touchstart",i),h.__saturation_field.appendChild(f),h.__selector.appendChild(h.__field_knob),h.__selector.appendChild(h.__saturation_field),h.__selector.appendChild(h.__hue_field),h.__hue_field.appendChild(h.__hue_knob),h.domElement.appendChild(h.__input),h.domElement.appendChild(h.__selector),h.updateDisplay(),h}return j(t,z),P(t,[{key:"updateDisplay",value:function(){var e=R(this.getValue());if(!1!==e){var t=!1;S.each(I.COMPONENTS,function(n){if(!S.isUndefined(e[n])&&!S.isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}},this),t&&S.extend(this.__color.__state,e)}S.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;S.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,l(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),S.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})}}]),t}(),ee=["-moz-","-o-","-webkit-","-ms-",""],te={load:function(e,t){var n=t||document,o=n.createElement("link");o.type="text/css",o.rel="stylesheet",o.href=e,n.getElementsByTagName("head")[0].appendChild(o)},inject:function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(e){}}},ne=function(e,t){var n=e[t];return S.isArray(arguments[2])||S.isObject(arguments[2])?new Y(e,t,arguments[2]):S.isNumber(n)?S.isNumber(arguments[2])&&S.isNumber(arguments[3])?S.isNumber(arguments[4])?new q(e,t,arguments[2],arguments[3],arguments[4]):new q(e,t,arguments[2],arguments[3]):S.isNumber(arguments[4])?new Q(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new Q(e,t,{min:arguments[2],max:arguments[3]}):S.isString(n)?new J(e,t):S.isFunction(n)?new Z(e,t,""):S.isBoolean(n)?new K(e,t):null},oe=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},ie=function(){function e(){F(this,e),this.backgroundElement=document.createElement("div"),S.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),X.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),S.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;X.bind(this.backgroundElement,"click",function(){t.hide()})}return P(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),S.defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",X.unbind(e.domElement,"webkitTransitionEnd",t),X.unbind(e.domElement,"transitionend",t),X.unbind(e.domElement,"oTransitionEnd",t)};X.bind(this.domElement,"webkitTransitionEnd",t),X.bind(this.domElement,"transitionend",t),X.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-X.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-X.getHeight(this.domElement)/2+"px"}}]),e}(),re=function(e){if(e&&"undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .cr.function .property-name{width:100%}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n");te.inject(re);var se="Default",ae=function(){try{return!!window.localStorage}catch(e){return!1}}(),le=void 0,de=!0,ce=void 0,ue=!1,_e=[],he=function e(t){var n=this,o=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),X.addClass(this.domElement,"dg"),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],o=S.defaults(o,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),o=S.defaults(o,{resizable:o.autoPlace,hideable:o.autoPlace}),S.isUndefined(o.load)?o.load={preset:se}:o.preset&&(o.load.preset=o.preset),S.isUndefined(o.parent)&&o.hideable&&_e.push(this),o.resizable=S.isUndefined(o.parent)&&o.resizable,o.autoPlace&&S.isUndefined(o.scrollable)&&(o.scrollable=!0);var i=ae&&"true"===localStorage.getItem(m(this,"isLocal")),r=void 0,s=void 0;if(Object.defineProperties(this,{parent:{get:function(){return o.parent}},scrollable:{get:function(){return o.scrollable}},autoPlace:{get:function(){return o.autoPlace}},closeOnTop:{get:function(){return o.closeOnTop}},preset:{get:function(){return n.parent?n.getRoot().preset:o.load.preset},set:function(e){n.parent?n.getRoot().preset=e:o.load.preset=e,E(this),n.revert()}},width:{get:function(){return o.width},set:function(e){o.width=e,w(n,e)}},name:{get:function(){return o.name},set:function(e){o.name=e,s&&(s.innerHTML=o.name)}},closed:{get:function(){return o.closed},set:function(t){o.closed=t,o.closed?X.addClass(n.__ul,e.CLASS_CLOSED):X.removeClass(n.__ul,e.CLASS_CLOSED),this.onResize(),n.__closeButton&&(n.__closeButton.innerHTML=t?e.TEXT_OPEN:e.TEXT_CLOSED)}},load:{get:function(){return o.load}},useLocalStorage:{get:function(){return i},set:function(e){ae&&(i=e,e?X.bind(window,"unload",r):X.unbind(window,"unload",r),localStorage.setItem(m(n,"isLocal"),e))}}}),S.isUndefined(o.parent)){if(this.closed=o.closed||!1,X.addClass(this.domElement,e.CLASS_MAIN),X.makeSelectable(this.domElement,!1),ae&&i){n.useLocalStorage=!0;var a=localStorage.getItem(m(this,"gui"));a&&(o.load=JSON.parse(a))}this.__closeButton=document.createElement("div"),this.__closeButton.innerHTML=e.TEXT_CLOSED,X.addClass(this.__closeButton,e.CLASS_CLOSE_BUTTON),o.closeOnTop?(X.addClass(this.__closeButton,e.CLASS_CLOSE_TOP),this.domElement.insertBefore(this.__closeButton,this.domElement.childNodes[0])):(X.addClass(this.__closeButton,e.CLASS_CLOSE_BOTTOM),this.domElement.appendChild(this.__closeButton)),X.bind(this.__closeButton,"click",function(){n.closed=!n.closed})}else{void 0===o.closed&&(o.closed=!0);var l=document.createTextNode(o.name);X.addClass(l,"controller-name"),s=c(n,l);X.addClass(this.__ul,e.CLASS_CLOSED),X.addClass(s,"title"),X.bind(s,"click",function(e){return e.preventDefault(),n.closed=!n.closed,!1}),o.closed||(this.closed=!1)}o.autoPlace&&(S.isUndefined(o.parent)&&(de&&(ce=document.createElement("div"),X.addClass(ce,"dg"),X.addClass(ce,e.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(ce),de=!1),ce.appendChild(this.domElement),X.addClass(this.domElement,e.CLASS_AUTO_PLACE)),this.parent||w(n,o.width)),this.__resizeHandler=function(){n.onResizeDebounced()},X.bind(window,"resize",this.__resizeHandler),X.bind(this.__ul,"webkitTransitionEnd",this.__resizeHandler),X.bind(this.__ul,"transitionend",this.__resizeHandler),X.bind(this.__ul,"oTransitionEnd",this.__resizeHandler),this.onResize(),o.resizable&&y(this),r=function(){ae&&"true"===localStorage.getItem(m(n,"isLocal"))&&localStorage.setItem(m(n,"gui"),JSON.stringify(n.getSaveObject()))},this.saveToLocalStorageIfPossible=r,o.parent||function(){var e=n.getRoot();e.width+=1,S.defer(function(){e.width-=1})}()};he.toggleHide=function(){ue=!ue,S.each(_e,function(e){e.domElement.style.display=ue?"none":""})},he.CLASS_AUTO_PLACE="a",he.CLASS_AUTO_PLACE_CONTAINER="ac",he.CLASS_MAIN="main",he.CLASS_CONTROLLER_ROW="cr",he.CLASS_TOO_TALL="taller-than-window",he.CLASS_CLOSED="closed",he.CLASS_CLOSE_BUTTON="close-button",he.CLASS_CLOSE_TOP="close-top",he.CLASS_CLOSE_BOTTOM="close-bottom",he.CLASS_DRAG="drag",he.DEFAULT_WIDTH=245,he.TEXT_CLOSED="Close Controls",he.TEXT_OPEN="Open Controls",he._keydownHandler=function(e){"text"===document.activeElement.type||72!==e.which&&72!==e.keyCode||he.toggleHide()},X.bind(window,"keydown",he._keydownHandler,!1),S.extend(he.prototype,{add:function(e,t){return f(this,e,t,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(e,t){return f(this,e,t,{color:!0})},remove:function(e){this.__ul.removeChild(e.__li),this.__controllers.splice(this.__controllers.indexOf(e),1);var t=this;S.defer(function(){t.onResize()})},destroy:function(){if(this.parent)throw new Error("Only the root GUI should be removed with .destroy(). For subfolders, use gui.removeFolder(folder) instead.");this.autoPlace&&ce.removeChild(this.domElement);var e=this;S.each(this.__folders,function(t){e.removeFolder(t)}),X.unbind(window,"keydown",he._keydownHandler,!1),u(this)},addFolder:function(e){if(void 0!==this.__folders[e])throw new Error('You already have a folder in this GUI by the name "'+e+'"');var t={name:e,parent:this};t.autoPlace=this.autoPlace,this.load&&this.load.folders&&this.load.folders[e]&&(t.closed=this.load.folders[e].closed,t.load=this.load.folders[e]);var n=new he(t);this.__folders[e]=n;var o=c(this,n.domElement);return X.addClass(o,"folder"),n},removeFolder:function(e){this.__ul.removeChild(e.domElement.parentElement),delete this.__folders[e.name],this.load&&this.load.folders&&this.load.folders[e.name]&&delete this.load.folders[e.name],u(e);var t=this;S.each(e.__folders,function(t){e.removeFolder(t)}),S.defer(function(){t.onResize()})},open:function(){this.closed=!1},close:function(){this.closed=!0},hide:function(){this.domElement.style.display="none"},show:function(){this.domElement.style.display=""},onResize:function(){var e=this.getRoot();if(e.scrollable){var t=X.getOffset(e.__ul).top,n=0;S.each(e.__ul.childNodes,function(t){e.autoPlace&&t===e.__save_row||(n+=X.getHeight(t))}),window.innerHeight-t-20<n?(X.addClass(e.domElement,he.CLASS_TOO_TALL),e.__ul.style.height=window.innerHeight-t-20+"px"):(X.removeClass(e.domElement,he.CLASS_TOO_TALL),e.__ul.style.height="auto")}e.__resize_handle&&S.defer(function(){e.__resize_handle.style.height=e.__ul.offsetHeight+"px"}),e.__closeButton&&(e.__closeButton.style.width=e.width+"px")},onResizeDebounced:S.debounce(function(){this.onResize()},50),remember:function(){if(S.isUndefined(le)&&((le=new ie).domElement.innerHTML='<div id="dg-save" class="dg dialogue">\n\n Here\'s the new load parameter for your <code>GUI</code>\'s constructor:\n\n <textarea id="dg-new-constructor"></textarea>\n\n <div id="dg-save-locally">\n\n <input id="dg-local-storage" type="checkbox"/> Automatically save\n values to <code>localStorage</code> on exit.\n\n <div id="dg-local-explain">The values saved to <code>localStorage</code> will\n override those passed to <code>dat.GUI</code>\'s constructor. This makes it\n easier to work incrementally, but <code>localStorage</code> is fragile,\n and your friends may not see the same values you do.\n\n </div>\n\n </div>\n\n</div>'),this.parent)throw new Error("You can only call remember on a top level GUI.");var e=this;S.each(Array.prototype.slice.call(arguments),function(t){0===e.__rememberedObjects.length&&v(e),-1===e.__rememberedObjects.indexOf(t)&&e.__rememberedObjects.push(t)}),this.autoPlace&&w(this,this.width)},getRoot:function(){for(var e=this;e.parent;)e=e.parent;return e},getSaveObject:function(){var e=this.load;return e.closed=this.closed,this.__rememberedObjects.length>0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=x(this)),e.folders={},S.each(this.__folders,function(t,n){e.folders[n]=t.getSaveObject()}),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=x(this),_(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[se]=x(this,!0)),this.load.remembered[e]=x(this),this.preset=e,g(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){S.each(this.__controllers,function(t){this.getRoot().load.remembered?p(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())},this),S.each(this.__folders,function(e){e.revert(e)}),e||_(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&C(this.__listening)},updateDisplay:function(){S.each(this.__controllers,function(e){e.updateDisplay()}),S.each(this.__folders,function(e){e.updateDisplay()})}});var pe={Color:I,math:N,interpret:R},fe={Controller:z,BooleanController:K,OptionController:Y,StringController:J,NumberController:W,NumberControllerBox:Q,NumberControllerSlider:q,FunctionController:Z,ColorController:$},me={dom:X},ge={GUI:he},be=he,ve={color:pe,controllers:fe,dom:me,gui:ge,GUI:be};e.color=pe,e.controllers=fe,e.dom=me,e.gui=ge,e.GUI=be,e.default=ve,Object.defineProperty(e,"__esModule",{value:!0})});
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址