/dist/dka-game.js
JavaScript | 15634 lines | 12615 code | 1017 blank | 2002 comment | 645 complexity | 58d04a1db1d903e6c1a5f9b5ffd68b33 MD5 | raw file
Large files files are truncated, but you can click here to view the full file
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- window.dka = window.dka || {};
- dka.colors = {
- darkBlue: '#003d65',
- lightBlue: '#0da0ff',
- veryLightBlue: '#70c7ff',
- shinyBlue: '#19f1f1',
- lightGreen: '#00f000',
- gold: '#f0d400',
- darkGrey: '#2C3835',
- black: '#000'
- };
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- dka.GameSettings = (function() {
- function GameSettings() {
- this._towerPill();
- this._towerAntibiotic();
- this._towerCellB();
- this._towerCellMacrophage();
- this._towerHospital();
- this._labs();
- this._diseases();
- }
- GameSettings.prototype._towerPill = function() {
- this.towers = {};
- return this.towers.pill = {
- title: 'Pill Labs',
- description: 'Pills are generic remedies to all kind of diseases.',
- buildingTime: 30,
- upgrade0: {
- cost: 70,
- reloadTime: 20,
- range: 150,
- magazineSize: 20,
- haziness: 8,
- bulletDamage: [2, 5]
- },
- upgrade1: {
- cost: 90,
- reloadTime: 17,
- range: 180,
- magazineSize: 4,
- haziness: 6,
- bulletDamage: [3, 6]
- },
- upgrade2: {
- cost: 120,
- reloadTime: 15,
- range: 200,
- magazineSize: 8,
- haziness: 2,
- bulletDamage: [5, 8]
- },
- upgrade3: {
- cost: 180,
- reloadTime: 9,
- range: 230,
- magazineSize: 8,
- haziness: 10,
- bulletDamage: [10, 15]
- }
- };
- };
- GameSettings.prototype._towerAntibiotic = function() {
- return this.towers.antibiotic = {
- title: 'Antibiotic Labs',
- description: 'Antibiotics deal area damage to all alive germs. Be carefull! Viruses are not alive. They are totally immune to antibiotics!',
- buildingTime: 50,
- upgrade0: {
- cost: 90,
- reloadTime: 60,
- range: 170,
- magazineSize: 7,
- bulletRadiusDamage: 70,
- bulletDamage: [7, 15]
- },
- upgrade1: {
- cost: 110,
- reloadTime: 65,
- range: 220,
- magazineSize: 7,
- bulletRadiusDamage: 70,
- bulletDamage: [13, 18]
- },
- upgrade2: {
- cost: 150,
- reloadTime: 65,
- range: 250,
- magazineSize: 8,
- bulletRadiusDamage: 70,
- bulletDamage: [18, 25]
- },
- upgrade3: {
- cost: 200,
- reloadTime: 91,
- range: 270,
- magazineSize: 7,
- bulletRadiusDamage: 70,
- bulletDamage: [30, 45]
- }
- };
- };
- GameSettings.prototype._towerCellB = function() {
- return this.towers.cellB = {
- title: 'B Cell',
- description: ' B cells are part of immune defense system, they create plasma cells who can prevent diseases multiplicating, brake them, or even damage them!',
- buildingTime: 30,
- upgrade0: {
- cost: 90,
- range: 200,
- cellSpeed: 3,
- cellTtl: 4
- },
- upgrade1: {
- cost: 110,
- range: 200,
- cellSpeed: 2,
- cellTtl: 5
- },
- upgrade2: {
- cost: 150,
- range: 200,
- cellSpeed: 3,
- cellTtl: 6
- },
- upgrade3: {
- cost: 230,
- range: 200,
- cellSpeed: 5,
- cellTtl: 7
- }
- };
- };
- GameSettings.prototype._towerCellMacrophage = function() {
- return this.towers.cellMacrophage = {
- title: 'Macrophage Cell',
- description: 'Macrophage cells are part of immune defense system, they directly eat diseases! but target only the ones with antibodies.',
- buildingTime: 20,
- upgrade0: {
- cost: 70,
- range: 200,
- cellSpeed: 6,
- cellTtl: 4,
- cellDamage: 1,
- respawnReload: 40
- },
- upgrade1: {
- cost: 110,
- range: 160,
- cellSpeed: 6,
- cellTtl: 4,
- cellDamage: 1.5,
- respawnReload: 40
- },
- upgrade2: {
- cost: 150,
- range: 160,
- cellSpeed: 6,
- cellTtl: 4,
- cellDamage: 2,
- respawnReload: 40
- },
- upgrade3: {
- cost: 230,
- range: 160,
- cellSpeed: 5,
- cellTtl: 4,
- cellDamage: 3,
- respawnReload: 40
- }
- };
- };
- GameSettings.prototype._towerHospital = function() {
- return this.towers.hospital = {
- abilities: {
- subsidies: {
- title: 'Subsidies',
- description: 'The city helps you a little by giving you some coins each wave.',
- cost: [60, 140],
- action: [40, 80]
- },
- supply: {
- title: 'Better supply',
- description: 'A better supply will make your pill and antibiotic towers shoot faster.',
- cost: [40, 350],
- action: [10, 15]
- },
- education: {
- img: 'Up3',
- title: 'Education',
- description: 'Educating the population about hygiene enable the reduction of the multiplication rate of diseases.',
- cost: [40, 100],
- action: [100, 200]
- }
- }
- };
- };
- GameSettings.prototype._labs = function() {
- return this.labs = {
- fever: [
- {
- duration: 45,
- reloadTime: 300,
- title: 'Fever',
- description: 'Increase duration and reduce reload time.'
- }, {
- cost: 70,
- duration: 55,
- reloadTime: 350,
- title: 'Fever',
- description: 'Increase duration and reduce reload time.'
- }, {
- cost: 90,
- duration: 75,
- reloadTime: 450,
- title: 'Fever',
- description: 'Increase duration and reduce reload time.'
- }
- ],
- vaccine: [
- {
- damage: 0.5,
- duration: 100,
- reloadTime: 450,
- title: 'Vaccine',
- description: 'Increase damage and reduce reload time.'
- }, {
- cost: 70,
- duration: 150,
- damage: 1,
- reloadTime: 350,
- title: 'Vaccine',
- description: 'Increase damage and reduce reload time.'
- }, {
- cost: 100,
- duration: 200,
- damage: 1.5,
- reloadTime: 300,
- title: 'Vaccine',
- description: 'Increase damage and reduce reload time.'
- }
- ],
- hintNxtWave: [
- {
- cost: 40,
- title: 'Next wave',
- description: 'Add informations about the next wave.'
- }, {
- cost: 60,
- title: 'Next wave',
- description: 'Add informations about the next wave.'
- }
- ]
- };
- };
- GameSettings.prototype.getLabsSetting = function(setting, prop) {
- return this.labs[setting][dka.academy.game.labs.getUpgradeLevel(setting)][prop];
- };
- GameSettings.prototype._diseases = function() {
- this.diseasesList = ['Tuberculosis', 'Plague', 'HIV', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown', 'Unknown'];
- return this.diseases = {
- Tuberculosis: {
- type: 'Bacterium',
- speed: DEBUG_MODE ? 3 : 1.3,
- life: 20,
- lifeCost: 1,
- delayToMultiplicate: 300
- },
- HIV: {
- type: 'Virus',
- speed: 1.5,
- life: 40,
- lifeCost: 3
- },
- Plague: {
- type: 'Bacterium',
- speed: 2,
- life: 25,
- lifeCost: 1,
- delayToMultiplicate: 200
- }
- };
- };
- GameSettings.prototype.isBetter = function(before, after, criteria) {
- var diff, whatIsBetter;
- if (criteria === 'damage') {
- before = (before[1] - before[0]) / 2 + before[0];
- after = (after[1] - after[0]) / 2 + after[0];
- }
- diff = after - before;
- if (diff === 0) {
- return 'equal';
- }
- whatIsBetter = (function() {
- switch (criteria) {
- case 'range':
- return 'higher';
- case 'reloadTime':
- return 'lower';
- case 'damage':
- return 'higher';
- case 'cellDamage':
- return 'higher';
- case 'magazineSize':
- return 'higher';
- case 'haziness':
- return 'lower';
- case 'cellTtl':
- return 'higher';
- case 'cellSpeed':
- return 'higher';
- }
- })();
- if (whatIsBetter === 'higher' && diff > 0 || whatIsBetter === 'lower' && diff < 0) {
- return 'better';
- }
- return 'worse';
- };
- GameSettings.prototype.getReloadString = function(reloadTime, nbPlus) {
- var i, plusString;
- if (reloadTime < 0) {
- return '';
- }
- plusString = '';
- i = 0;
- while (i < nbPlus) {
- plusString += '+';
- i++;
- }
- switch (false) {
- case !(reloadTime <= 10):
- return 'Very fast' + plusString;
- case !(reloadTime <= 20):
- return 'Fast' + plusString;
- case !(reloadTime <= 50):
- return 'Average' + plusString;
- case !(reloadTime <= 70):
- return 'Slow' + plusString;
- default:
- return 'Very slow' + plusString;
- }
- };
- GameSettings.prototype.getMoveString = function(moveSpeed) {
- switch (false) {
- case !(moveSpeed < 0):
- return '';
- case !(moveSpeed <= 1):
- return 'Very slow';
- case !(moveSpeed <= 2):
- return 'Slow';
- case !(moveSpeed <= 4):
- return 'Average';
- case !(moveSpeed <= 6):
- return 'Fast';
- default:
- return 'Very fast';
- }
- };
- GameSettings.prototype.getDiseaseSpeedString = function(speed) {
- switch (false) {
- case !(speed < 0):
- return '';
- case !(speed <= 1):
- return 'Very slow';
- case !(speed <= 1.5):
- return 'Slow';
- case !(speed <= 2):
- return 'Average';
- case !(speed <= 2.5):
- return 'Fast';
- default:
- return 'Very fast';
- }
- };
- GameSettings.prototype.getRespawnString = function(respwanTime) {
- switch (false) {
- case !(respwanTime < 0):
- return '';
- case !(respwanTime <= 20):
- return 'Very fast';
- case !(respwanTime <= 30):
- return 'Fast';
- case !(respwanTime <= 40):
- return 'Average';
- case !(respwanTime <= 50):
- return 'Slow';
- default:
- return 'Very slow';
- }
- };
- GameSettings.prototype.getPrecisionString = function(haziness) {
- switch (false) {
- case !(haziness < 0):
- return '';
- case !(haziness <= 2):
- return 'Great';
- case !(haziness <= 5):
- return 'Good';
- case !(haziness <= 7):
- return 'Average';
- default:
- return 'Poor';
- }
- };
- return GameSettings;
- })();
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- this.geom = this.geom || {};
- geom.Ellipse = (function() {
- function Ellipse(x, y, rw, rh) {
- this.x = x || 0;
- this.y = y || 0;
- this.rw = rw || 0;
- this.rh = rh || 0;
- this;
- }
- Ellipse.prototype.contains = function(x, y) {
- return (Math.pow(x - this.x, 2) / Math.pow(this.rw, 2) + (Math.pow(y - this.y, 2) / Math.pow(this.rh, 2))) <= 1;
- };
- Ellipse.prototype.containsPoint = function(p) {
- return this.contains(p.x, p.y);
- };
- Ellipse.prototype.toString = function() {
- return '[Ellipse (x:' + this.x + ' y:' + this.y + ' rw:' + this.rw + ' rh:' + this.rh + ')]';
- };
- return Ellipse;
- })();
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- window.TXT_NBR = false;
- window.DEBUG_MODE = true;
- window.LEVEL_MODE = true;
- window.TIMELINE_MODE = false;
- window.LEO_DEV_MODE = false;
- window.moveConfig = function(target) {
- target.cursor = 'move';
- target.on('pressmove', function(e) {
- target.x = e.stageX;
- return target.y = e.stageY;
- });
- return target.on('pressup', function() {
- return console.log(target.x, target.y);
- });
- };
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.Button = (function(superClass) {
- extend(Button, superClass);
- function Button(x, y, img) {
- Button.__super__.constructor.call(this);
- this.set({
- regX: 20,
- regY: 20
- });
- this.set({
- x: x,
- y: y || this.regY + 5,
- cursor: 'pointer'
- });
- if (img) {
- this.img = this.addChild(img);
- }
- this.cache(0, 0, 2 * this.regX, 2 * this.regY);
- this.on('mouseover', function() {
- this.filters = [new createjs.ColorMatrixFilter(new createjs.ColorMatrix().adjustBrightness(30))];
- this.updateCache();
- if (gameStage.cacheCanvas) {
- gameStage.updateCache();
- }
- if (createjs.Ticker.paused) {
- return gameStage.update();
- }
- });
- this.on('mouseout', function() {
- return this.removeAllFilters();
- });
- }
- Button.prototype.removeAllFilters = function() {
- this.filters = [];
- this.updateCache();
- if (gameStage.cacheCanvas) {
- gameStage.updateCache();
- }
- if (createjs.Ticker.paused) {
- return gameStage.update();
- }
- };
- return Button;
- })(createjs.Container);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.MenuButton = (function(superClass) {
- extend(MenuButton, superClass);
- function MenuButton(x, y, img) {
- MenuButton.__super__.constructor.call(this);
- this.set({
- regX: 183 / 2,
- regY: 167 / 2
- });
- this.set({
- x: x,
- y: y,
- cursor: 'pointer'
- });
- if (img) {
- this.img = this.addChild(img);
- }
- this.cache(0, 0, 2 * this.regX, 2 * this.regY);
- this.on('mouseover', function() {
- this.filters = [new createjs.ColorMatrixFilter(new createjs.ColorMatrix().adjustBrightness(30))];
- return this.updateCache();
- });
- this.on('mouseout', function() {
- return this.removeAllFilters();
- });
- }
- MenuButton.prototype.removeAllFilters = function() {
- this.filters = [];
- return this.updateCache();
- };
- return MenuButton;
- })(createjs.Container);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.ButtonBitmap = (function(superClass) {
- extend(ButtonBitmap, superClass);
- function ButtonBitmap(bmp, brightness) {
- ButtonBitmap.__super__.constructor.call(this, bmp || null);
- this.set({
- cursor: 'pointer',
- available: true,
- brightness: (brightness ? brightness : 30)
- });
- this.on('mouseover', function() {
- if (!this.available) {
- return;
- }
- return this.lighten();
- });
- this.on('mouseout', function() {
- this.filters = [];
- if (!this.available) {
- this.darken();
- }
- this.updateCache();
- if (gameStage.cacheCanvas) {
- gameStage.updateCache();
- }
- if (createjs.Ticker.paused) {
- return gameStage.update();
- }
- });
- }
- ButtonBitmap.prototype.lighten = function() {
- this.filters = [new createjs.ColorMatrixFilter(new createjs.ColorMatrix().adjustBrightness(this.brightness))];
- this.updateCache();
- if (gameStage.cacheCanvas) {
- gameStage.updateCache();
- }
- if (createjs.Ticker.paused) {
- return gameStage.update();
- }
- };
- ButtonBitmap.prototype.darken = function() {
- this.filters = [new createjs.ColorMatrixFilter(new createjs.ColorMatrix().adjustSaturation(-100))];
- this.updateCache();
- if (gameStage.cacheCanvas) {
- gameStage.updateCache();
- }
- if (createjs.Ticker.paused) {
- gameStage.update();
- }
- return this.available = false;
- };
- ButtonBitmap.prototype.removeAllFilters = function() {
- this.filters = [];
- this.updateCache();
- if (gameStage.cacheCanvas) {
- gameStage.updateCache();
- }
- if (createjs.Ticker.paused) {
- gameStage.update();
- }
- return this.available = true;
- };
- return ButtonBitmap;
- })(createjs.Bitmap);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.ButtonLabs = (function(superClass) {
- extend(ButtonLabs, superClass);
- function ButtonLabs(bmp, point, upgrade, index, screen) {
- var settings;
- this.upgrade = upgrade;
- this.index = index;
- this.screen = screen;
- ButtonLabs.__super__.constructor.call(this);
- this.addChild(new createjs.Bitmap(dka.academy.assetManager.getAsset(bmp)));
- this.set({
- x: point.x,
- y: point.y,
- regX: 50 / 2,
- regY: 62 / 2
- });
- settings = dka.academy.game.settings.labs[this.upgrade][index];
- this.cost = settings.cost;
- this.addChild(new createjs.Text(this.cost, '12px karnivoreRegular, Arial', dka.colors.gold).set({
- x: 50 / 2,
- y: 56,
- textAlign: 'center',
- textBaseline: 'alphabetic'
- }));
- this.cache(0, 0, 50, 62);
- this.hintData = {
- title: settings.title,
- description: settings.description
- };
- this.screen.on(this.screen.RESET_EVENT, (function(_this) {
- return function() {
- return _this.reset();
- };
- })(this));
- this.screen.on(this.screen.UPGRADE_BOUGHT_EVENT, (function(_this) {
- return function() {
- if (_this.bought) {
- return;
- }
- if (_this.isAvailable()) {
- if (_this.available) {
- return;
- }
- _this.removeAllFilters();
- return _this.makeBuyable();
- } else {
- _this.darken();
- return _this.cursor = 'default';
- }
- };
- })(this));
- this.reset();
- }
- ButtonLabs.prototype.reset = function() {
- this.removeAllFilters();
- this.removeAllEventListeners('click');
- this.removeAllEventListeners('mouseover');
- this.removeAllEventListeners('mouseout');
- this.on('mouseover', function() {
- return this.screen.addToolTip(this, this.hintData);
- });
- this.on('mouseout', function() {
- return this.screen.removeToolTip();
- });
- this.available = false;
- this.bought = false;
- if (this.isBought()) {
- this.setBought();
- return;
- }
- if (!this.isAvailable()) {
- this.darken();
- this.cursor = 'default';
- return;
- }
- return this.makeBuyable();
- };
- ButtonLabs.prototype.isAvailable = function() {
- if (dka.academy.game.getTotalGold() < this.cost) {
- return false;
- }
- if (dka.academy.game.labs.getUpgradeLevel(this.upgrade) + 1 >= this.index) {
- return true;
- }
- };
- ButtonLabs.prototype.isBought = function() {
- return dka.academy.game.labs.getUpgradeLevel(this.upgrade) + 1 > this.index;
- };
- ButtonLabs.prototype.makeBuyable = function() {
- this.cursor = 'pointer';
- this.on('mouseover', function() {
- if (!this.isBought()) {
- return this.lighten(30);
- }
- });
- this.on('mouseout', function() {
- if (!this.isBought()) {
- return this.removeAllFilters();
- }
- });
- this.on('click', function() {
- dka.academy.game.labs.buy(this.upgrade, this.cost);
- this.removeAllEventListeners('click');
- this.setBought();
- this.screen.dispatchEvent(new createjs.Event(this.screen.UPGRADE_BOUGHT_EVENT));
- this.screen.timeline.updateCoinScore();
- return this.screen.undoStack.push(this);
- });
- return this.available = true;
- };
- ButtonLabs.prototype.setBought = function() {
- this.lighten(60);
- this.cursor = 'default';
- return this.bought = true;
- };
- ButtonLabs.prototype.lighten = function(brightness) {
- this.filters = [new createjs.ColorMatrixFilter(new createjs.ColorMatrix().adjustBrightness(brightness))];
- return this.updateCache();
- };
- ButtonLabs.prototype.darken = function() {
- this.filters = [new createjs.ColorMatrixFilter(new createjs.ColorMatrix().adjustSaturation(-100))];
- return this.updateCache();
- };
- ButtonLabs.prototype.removeAllFilters = function() {
- this.filters = [];
- return this.updateCache();
- };
- return ButtonLabs;
- })(createjs.Container);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.ButtonSprite = (function(superClass) {
- extend(ButtonSprite, superClass);
- function ButtonSprite(sps, brightness) {
- var bounds;
- ButtonSprite.__super__.constructor.call(this, sps || null);
- this.set({
- cursor: 'pointer',
- available: true,
- brightness: (brightness ? brightness : 30)
- });
- if (sps) {
- bounds = sps.getFrameBounds(0);
- this.cache(bounds.x, bounds.y, bounds.width, bounds.height);
- }
- this.on('mouseover', function() {
- if (!this.available) {
- return;
- }
- this.filters = [new createjs.ColorMatrixFilter(new createjs.ColorMatrix().adjustBrightness(this.brightness))];
- this.updateCache();
- return gameStage.update();
- });
- this.on('mouseout', function() {
- this.filters = [];
- if (!this.available) {
- this.darken();
- }
- this.updateCache();
- return gameStage.update();
- });
- }
- ButtonSprite.prototype.darken = function() {
- this.filters = [new createjs.ColorMatrixFilter(new createjs.ColorMatrix().adjustSaturation(-100))];
- this.updateCache();
- gameStage.update();
- return this.available = false;
- };
- ButtonSprite.prototype.removeAllFilters = function() {
- this.filters = [];
- this.updateCache();
- gameStage.update();
- return this.available = true;
- };
- return ButtonSprite;
- })(createjs.Sprite);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.BulletDecal = (function(superClass) {
- extend(BulletDecal, superClass);
- function BulletDecal(x, y, level) {
- BulletDecal.__super__.constructor.call(this, dka.academy.assetManager.getAsset('spriteBulletEffect'));
- this.level = level;
- this.set({
- x: x,
- y: y
- });
- this.on('animationend', function(e) {
- this.stop();
- return createjs.Tween.get(this, {
- useTicks: true
- }).wait(20).to({
- alpha: 0
- }, 50, createjs.Ease.circIn).call(function() {
- return this.parent.removeChild(this);
- });
- });
- this.gotoAndPlay('boum');
- this.level.decalsLayer.addChild(this);
- }
- return BulletDecal;
- })(createjs.Sprite);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.TutoBubble = (function(superClass) {
- extend(TutoBubble, superClass);
- function TutoBubble(text, position, level, closeEvent, invertDirection, alternateText) {
- var ref;
- TutoBubble.__super__.constructor.call(this);
- this.text = text;
- this.position = position;
- this.level = level;
- this.closeEvent = closeEvent;
- this.invertDirection = invertDirection;
- this.alternateText = alternateText;
- this.SMALL_BUBBLE_WIDTH = 100;
- this.LARGE_BUBBLE_WIDTH = 150;
- this.set({
- x: this.position.x,
- y: this.position.y,
- alpha: 0
- });
- this.addText();
- this.addBubble();
- createjs.Tween.get(this, {
- useTicks: true
- }).to({
- alpha: 1
- }, 15, createjs.Ease.backIn);
- createjs.Tween.get(this, {
- useTicks: true,
- loop: true
- }).to({
- scaleX: 0.85
- }, 15, createjs.Ease.backIn).to({
- scaleX: 1
- }, 15, createjs.Ease.backOut);
- if ((ref = this.level) != null) {
- ref.on(this.closeEvent, (function(_this) {
- return function(e) {
- e.remove();
- return createjs.Tween.get(_this, {
- useTicks: true
- }).to({
- alpha: 0,
- scaleX: 0
- }, 3).call(function() {
- return this.parent.removeChild(this);
- });
- };
- })(this));
- }
- if (alternateText) {
- this.on('tick', this.tick);
- this.switchDelay = 1 * 30;
- this.switchCounter = 0;
- }
- }
- TutoBubble.prototype.tick = function() {
- this.switchCounter++;
- if (this.switchCounter >= this.switchDelay) {
- this.textToast.alpha = 0;
- createjs.Tween.get(this.textToast, {
- useTicks: true
- }).to({
- alpha: 1
- }, 5);
- this.switchCounter = 0;
- if (this.textToast.text === this.text) {
- return this.textToast.text = this.alternateText;
- } else {
- return this.textToast.text = this.text;
- }
- }
- };
- TutoBubble.prototype.addText = function() {
- this.textToast = new createjs.Text(this.text, '17px Arial', dka.colors.lightBlue);
- this.textToast.set({
- y: 18,
- textAlign: 'center',
- textBaseline: 'alphabetic'
- });
- return this.addChild(this.textToast);
- };
- TutoBubble.prototype.addBubble = function() {
- var bg, bubble, width;
- bg = 'tutoBubbleSmall';
- width = this.SMALL_BUBBLE_WIDTH;
- if (this.textToast.getMeasuredWidth() > 90) {
- bg = 'tutoBubbleLarge';
- width = this.LARGE_BUBBLE_WIDTH;
- }
- bubble = new createjs.Bitmap(dka.academy.assetManager.getAsset(bg));
- bubble.regX = width / 2;
- if (this.invertDirection) {
- bubble.scaleY = -1;
- bubble.y = 25;
- }
- return this.addChildAt(bubble, 0);
- };
- return TutoBubble;
- })(createjs.Container);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- *
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.TabletSmoke = (function(superClass) {
- extend(TabletSmoke, superClass);
- function TabletSmoke(x, y) {
- TabletSmoke.__super__.constructor.call(this, dka.academy.assetManager.getAsset('spriteTabletSmoke'));
- this.x = x;
- this.y = y;
- this.gotoAndPlay(0);
- this.on('animationend', this.animationend);
- }
- TabletSmoke.prototype.animationend = function() {
- return this.parent.removeChild(this);
- };
- return TabletSmoke;
- })(createjs.Sprite);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.CapsuleSmoke = (function(superClass) {
- extend(CapsuleSmoke, superClass);
- function CapsuleSmoke(x, y) {
- CapsuleSmoke.__super__.constructor.call(this, dka.academy.assetManager.getAsset('spCapsuleSmoke'));
- this.x = x;
- this.y = y;
- this.gotoAndPlay(0);
- this.on('animationend', this.animationend);
- }
- CapsuleSmoke.prototype.animationend = function() {
- return this.parent.removeChild(this);
- };
- return CapsuleSmoke;
- })(createjs.Sprite);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
- extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
- hasProp = {}.hasOwnProperty;
- dka.WaveFlag = (function(superClass) {
- extend(WaveFlag, superClass);
- function WaveFlag(level, road) {
- this.clickRemove = bind(this.clickRemove, this);
- this.update = bind(this.update, this);
- var hitCircle, newBmp, progressBar, settings;
- WaveFlag.__super__.constructor.call(this);
- this.level = level;
- this.road = road;
- settings = this.level.waves[this.level.getFresherWaveIndex() + 1].roads[road].callButton;
- this.set({
- x: settings.x,
- y: settings.y,
- regX: 20,
- regY: 20,
- scaleX: 0.7,
- scaleY: 0.7,
- cursor: 'pointer'
- });
- hitCircle = new createjs.Shape();
- hitCircle.graphics.beginFill('#000000').dc(20, 20, 20).endFill();
- this.hitArea = hitCircle;
- progressBar = new createjs.Shape();
- progressBar.set({
- x: 10,
- y: 8
- });
- if (this.level.getFresherWaveIndex() + 1 > 0) {
- progressBar.on('tick', this.update);
- }
- newBmp = new createjs.Bitmap(dka.academy.assetManager.getAsset('callWave')).set({
- x: 16,
- y: 16,
- regX: 16,
- regY: 16
- });
- if (this.level.game.labs.getUpgradeLevel('hintNxtWave') >= 0) {
- this.addHintBox();
- }
- this.addChild(progressBar, newBmp);
- this.cache(0, 0, 2 * this.regX, 2 * this.regY);
- createjs.Tween.get(this, {
- useTicks: true,
- loop: true
- }).to({
- scaleX: 1,
- scaleY: 1
- }, 15, createjs.Ease.backOut).to({
- scaleX: 0.7,
- scaleY: 0.7
- }, 15, createjs.Ease.backIn);
- this.on('click', this.clickRemove);
- this.on('mouseover', function() {
- this.filters = [new createjs.ColorMatrixFilter(new createjs.ColorMatrix().adjustBrightness(30))];
- return this.updateCache();
- });
- this.on('mouseout', function() {
- this.filters = [];
- return this.updateCache();
- });
- }
- WaveFlag.prototype.addHintBox = function() {
- var dis, disease, i, len, name, nbTypeDiseases, nxtWaveDiseases, prop, props, ref;
- nxtWaveDiseases = {};
- ref = this.level.waves[this.level.getFresherWaveIndex() + 1].roads[this.road].diseasesList;
- for (i = 0, len = ref.length; i < len; i++) {
- disease = ref[i];
- dis = disease.dis;
- if (nxtWaveDiseases[dis]) {
- nxtWaveDiseases[dis]++;
- } else {
- nxtWaveDiseases[dis] = 1;
- }
- }
- if (this.level.game.labs.getUpgradeLevel('hintNxtWave') >= 1) {
- for (name in nxtWaveDiseases) {
- nxtWaveDiseases[name] = 'x ' + nxtWaveDiseases[name];
- }
- } else {
- for (name in nxtWaveDiseases) {
- nxtWaveDiseases[name] = 'x ?';
- }
- }
- props = [];
- nbTypeDiseases = 0;
- for (name in nxtWaveDiseases) {
- prop = props[nbTypeDiseases] = {};
- prop.caption = name;
- prop.separator = ' ';
- prop.value = nxtWaveDiseases[name];
- prop.color = 'green';
- nbTypeDiseases++;
- }
- this.on('mouseover', function() {
- return this.level.addToolTip(this, {
- title: 'Wave ' + (this.level.getFresherWaveIndex() + 2),
- props: props
- });
- });
- return this.on('mouseout', function() {
- return this.level.removeToolTip();
- });
- };
- WaveFlag.prototype.update = function() {
- var ratio;
- ratio = this.level.waitForNewWave / this.level.delayForNxtWave;
- ratio = (ratio === 0 ? 1 : ratio);
- this.getChildAt(0).graphics.clear();
- this.getChildAt(0).graphics.beginFill(dka.colors.lightBlue).rect(0, 19, 19, -19 * ratio).endFill();
- return this.updateCache();
- };
- WaveFlag.prototype.remove = function() {
- this.removeAllEventListeners('click');
- createjs.Tween.get(this, {
- useTicks: true,
- override: true
- }).to({
- scaleX: 0,
- scaleY: 0
- }, 15, createjs.Ease.backIn).call(function() {
- return this.parent.removeChild(this);
- });
- if (this.level.getFresherWaveIndex() >= 0) {
- return this.level.getHospital().getAbilityResult('subsidies');
- }
- };
- WaveFlag.prototype.clickRemove = function() {
- var goldEarned, timeEco;
- this.level.towerMenu.fade();
- this.level.ui.removeWaveFlags();
- this.level.dispatchEvent(new createjs.Event(this.level.WAVE_FLAG_CLICKED_EVENT, true, false));
- if (this.level.getFresherWaveIndex() === -1) {
- dka.academy.removeStageTicker();
- this.level.addLevelTicker();
- this.level.ui.helpButtonsHolder.allow();
- }
- timeEco = this.level.delayForNxtWave - this.level.waitForNewWave;
- goldEarned = (timeEco / 10) | 0;
- if (goldEarned > 0) {
- this.level.addGold(goldEarned);
- this.level.ui.helpButtonsHolder.advanceLoading(timeEco, this.level);
- createjs.Tween.get(null, {
- useTicks: true
- }).wait(30).call((function(_this) {
- return function() {
- var reward;
- reward = new dka.BouncingText('+' + goldEarned, 'bold 12px karnivoreRegular, Arial', dka.colors.gold, new createjs.Point(_this.x, _this.y));
- return _this.level.ui.addChild(reward);
- };
- })(this));
- }
- this.level.addWave();
- return this.level.ui.hudBar.updateWaves();
- };
- return WaveFlag;
- })(createjs.Container);
- }).call(this);
- /*
- * Copyright © Romain Fouquet, 2012-2015
- * Copyright © Clément Joly, 2012-2015
- #
- * romain.fouquet18@gmail.com
- * leowzukw@vmail.me
- #
- * This file is part of Diseases Killer Academy.
- #
- * Diseases Killer Academy is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- #
- * Diseases Killer Academy is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- #
- * You should have received a copy of the GNU Affero General Public License
- * along with Diseases Killer Academy. If not, see http://www.gnu.org/licenses/agpl-3.0.html.
- */
- (function() {
- 'use strict';
- var extend = f…
Large files files are truncated, but you can click here to view the full file