Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- window.opl = window.opl || {};
- if (window.opl.towerattack) window.opl.towerattack.end();
- // g_Minigame.m_CurrentScene.GetEnemy(g_Minigame.m_CurrentScene.m_rgPlayerData.current_lane, g_Minigame.m_CurrentScene.m_rgPlayerData.target)
- // g_Minigame.m_CurrentScene.m_rgGameData.lanes[g_Minigame.m_CurrentScene.m_rgPlayerData.current_lane]
- // TODO: go to lane with medics when low health
- // TODO: smart(er) target
- window.opl.towerattack = {
- init: function() {
- var $ = window.jQuery;
- $('#upgradescontainer>div').append(
- $('<span id="opl-helper-settingslabel" class="title_upgrates abilities">Helpers</span>')
- ).append(
- $('<div id="opl-helper-settings">')
- );
- for (var k in this.hooks) this.hooks[k].hook();
- for (var k in this.modules) this.addModuleToggle(this.modules[k]);
- },
- hooks: {
- doClickEffect: {
- showText: true,
- hook: function() {
- var that = this;
- this.func = this.func || g_Minigame.m_CurrentScene.DoClickEffect;
- g_Minigame.m_CurrentScene.DoClickEffect = function() {
- if (that.showText) return that.func.apply(this, arguments);
- }
- },
- unhook: function() {
- if (!this.func) return;
- g_Minigame.m_CurrentScene.DoClickEffect = this.func;
- this.func = undefined;
- }
- },
- doCritEffect: {
- listeners: [],
- showText: true,
- hook: function() {
- var that = this;
- this.func = this.func || g_Minigame.m_CurrentScene.DoCritEffect;
- g_Minigame.m_CurrentScene.DoCritEffect = function() {
- var that2 = this;
- var args = arguments;
- that.listeners.forEach(function(listener) {
- listener.apply(that2, args);
- });
- if (that.showText) return that.func.apply(this, arguments);
- }
- },
- unhook: function() {
- if (!this.func) return;
- g_Minigame.m_CurrentScene.DoCritEffect = this.func;
- this.func = undefined;
- },
- listen: function(listener) {
- this.listeners.push(listener);
- },
- stopListening: function(listener) {
- this.listeners.splice(this.listeners.indexOf(listener), 1);
- }
- },
- calculateDmg: {
- listeners: [],
- hook: function() {
- var that = this;
- this.func = this.func || g_Minigame.m_CurrentScene.CalculateDamage;
- g_Minigame.m_CurrentScene.CalculateDamage = function() {
- var dmg = that.func.apply(this, arguments);
- that.listeners.forEach(function(listener) {
- listener(dmg);
- });
- return dmg;
- }
- },
- unhook: function() {
- if (!this.func) return;
- g_Minigame.m_CurrentScene.CalculateDamage = this.func;
- this.func = undefined;
- },
- listen: function(listener) {
- this.listeners.push(listener);
- },
- stopListening: function(listener) {
- this.listeners.splice(this.listeners.indexOf(listener), 1);
- }
- }
- },
- modules: {
- autorespawn: {
- name: 'AutoRespawn',
- enable: function() {
- this.intervalID = window.setInterval(function() {
- if (g_Minigame.m_CurrentScene.m_bIsDead) RespawnPlayer();
- }, 1000);
- },
- disable: function() {
- window.clearInterval(this.intervalID);
- }
- },
- autoclicker: {
- name: 'AutoClicker',
- enable: function() {
- this.click();
- },
- disable: function() {
- window.clearTimeout(this.timeoutID);
- },
- click: function() {
- if (!g_Minigame.m_CurrentScene.m_bIsDead) g_Minigame.m_CurrentScene.DoClick({
- data: {
- getLocalPosition: function() {
- switch (g_Minigame.m_CurrentScene.m_rgPlayerData.target + (g_Minigame.m_CurrentScene.m_nCurrentLevel % 10 === 9 ? 1 : 0)) {
- case 0: return {x: 650, y: 300}
- case 1: return {x: 510, y: 450}
- case 2: return {x: 650, y: 450}
- case 3: return {x: 780, y: 450}
- }
- }
- }
- });
- var that = this;
- this.timeoutID = window.setTimeout(function() {
- that.click();
- }, 23 + ~~(Math.random() * 5));
- }
- },
- silentdamager: {
- name: 'Silent Damager',
- enable: function() {
- this.tick();
- },
- disable: function() {
- window.clearTimeout(this.timeoutID);
- },
- doLater: function(delay) {
- var that = this;
- this.timeoutID = window.setTimeout(function() {
- that.tick();
- }, delay);
- },
- tick: function() {
- if (g_Minigame.m_CurrentScene.m_rgPlayerData.hp <= 0 || !g_Minigame.m_CurrentScene.m_rgGameData) return this.doLater(2000);
- var enemy = g_Minigame.m_CurrentScene.GetEnemy(g_Minigame.m_CurrentScene.m_rgPlayerData.current_lane, g_Minigame.m_CurrentScene.m_rgPlayerData.target);
- if (!enemy || enemy.m_data.hp <= 0) return this.doLater(200);
- //g_Minigame.m_CurrentScene.m_nClicks = ~~(Math.random() * 6 + 39) - (~~(Math.random() * 1.1) * 3);
- g_Minigame.m_CurrentScene.m_nClicks = 20 - ~~(Math.random() * 1.2);
- var nClickGoldPct = g_Minigame.m_CurrentScene.m_rgGameData.lanes[g_Minigame.m_CurrentScene.m_rgPlayerData.current_lane].active_player_ability_gold_per_click;
- if (nClickGoldPct > 0 && enemy.m_data.hp > 0) {
- var nClickGold = enemy.m_data.gold * nClickGoldPct * g_Minigame.m_CurrentScene.m_nClicks;
- g_Minigame.m_CurrentScene.ClientOverride('player_data', 'gold', g_Minigame.m_CurrentScene.m_rgPlayerData.gold + nClickGold);
- g_Minigame.m_CurrentScene.ApplyClientOverrides('player_data', true);
- }
- for (var c = 0; c < g_Minigame.m_CurrentScene.m_nClicks; c++) g_Minigame.m_CurrentScene.CalculateDamage(g_Minigame.m_CurrentScene.m_rgPlayerTechTree.damage_per_click, g_Minigame.m_CurrentScene.m_rgGameData.lanes[g_Minigame.m_CurrentScene.m_rgPlayerData.current_lane].element)
- if (g_Minigame.m_CurrentScene.m_rgStoredCrits.length > 0) {
- var rgDamage = g_Minigame.m_CurrentScene.m_rgStoredCrits.splice(0,1);
- g_Minigame.m_CurrentScene.DoCritEffect(rgDamage[0], parseInt(enemy.m_HealthBar.m_nLastPositionX), parseInt(enemy.m_HealthBar.m_nLastPositionY), 'Crit!');
- }
- this.doLater(1000);
- }
- },
- playerdps: {
- name: 'Player DPS',
- dmg: 0,
- enable: function(towerattack) {
- var that = this;
- var $ = window.jQuery;
- $('head').append($('<style id="opl-helper-playerdpsstyle">').text(
- '#col_right>.playerdpscontainer{display:inline-block;width:147px;vertical-align:top;margin-left:21px}' +
- '#col_right>.playerdpscontainer>.title_playerdps{font-size:8px;color:#aaa}' +
- '#playerdps{font-size:16px;color:#fff;margin-top:6px}'
- ));
- $('<div class="playerdpscontainer">').on('click', function() {
- $('#col_right>.playerdpscontainer').hide();
- $('#col_right>.teamdpscontainer').show();
- }).append(
- $('<span class="title_playerdps">').text('Player DPS')
- ).append(
- $('<div id="playerdps">')
- ).insertAfter($('#col_right>.teamdpscontainer').hide());
- $('#col_right>.teamdpscontainer').on('click', (this.teamClickListener = function() {
- $('#col_right>.teamdpscontainer').hide();
- $('#col_right>.playerdpscontainer').show();
- }));
- towerattack.hooks.calculateDmg.listen((this.calcDmgListener = function(dmg) {
- that.dmg += dmg;
- }));
- towerattack.hooks.doCritEffect.listen((this.critEffectListener = function(dmg) {
- that.dmg += dmg;
- }));
- this.intervalID = window.setInterval(function() {
- $('#playerdps').text(FormatNumberForDisplay(that.dmg, 5));
- that.dmg = 0;
- }, 1000);
- },
- disable: function(towerattack) {
- towerattack.hooks.calculateDmg.stopListening(this.calcDmgListener);
- towerattack.hooks.doCritEffect.stopListening(this.critEffectListener);
- jQuery('#col_right>.playerdpscontainer,#opl-helper-playerdpsstyle').remove();
- jQuery('#col_right>.teamdpscontainer').off('click', this.teamClickListener);
- jQuery('#col_right>.teamdpscontainer').show();
- window.clearInterval(this.intervalID);
- }
- },
- automedics: {
- name: 'AutoMedics',
- enable: function() {
- this.intervalID = window.setInterval(function() {
- if (!g_Minigame.m_CurrentScene.m_bIsDead && !g_Minigame.m_CurrentScene.m_rgLaneData[g_Minigame.m_CurrentScene.m_rgPlayerData.current_lane].abilities[7] && g_Minigame.m_CurrentScene.GetCooldownForAbility(7) <= 0) g_Minigame.m_CurrentScene.TryAbility(jQuery('<a>').data('type',' 7'));
- }, 5000);
- },
- disable: function() {
- window.clearInterval(this.intervalID);
- }
- },
- autolane: {
- name: 'AutoLane',
- enable: function() {
- this.intervalID = window.setInterval(function() {
- for (var l = 0; l < 3; l++) if (g_Minigame.m_CurrentScene.m_rgLaneData[l].has_boss > 0) return g_Minigame.m_CurrentScene.TryChangeLane(l);
- for (var l = 0; l < 3; l++) if (g_Minigame.m_CurrentScene.m_rgLaneData[l].has_treasure_mob > 0) return g_Minigame.m_CurrentScene.TryChangeLane(l);
- var emptyLanes = [];
- laneLoop: for (var l = 0; l < 3; l++) {
- for (var j = 0; j < g_Minigame.m_CurrentScene.m_rgGameData.lanes[l].enemies.length; j++) if (g_Minigame.m_CurrentScene.m_rgGameData.lanes[l].enemies[j].hp > 0) continue laneLoop;
- emptyLanes.push(l);
- }
- for (var l = 0; l < 3; l++) if (g_Minigame.m_CurrentScene.m_rgLaneData[l].abilities[17] && emptyLanes.indexOf(l) === -1) return g_Minigame.m_CurrentScene.TryChangeLane(l);
- var elementalDmg = [];
- for (var i = 0; i < 4; i++) elementalDmg[i] = {id: i + 1, lvl: g_Minigame.m_CurrentScene.GetUpgradeLevel(i + 3)};
- elementalDmg.sort(function(a, b) {
- return a.lvl < b.lvl ? 1 : -1;
- });
- for (var l = 0; l < 3; l++) {
- for (var i = 0; i < g_Minigame.m_CurrentScene.m_rgGameData.lanes[l].enemies.length; i++) {
- if (g_Minigame.m_CurrentScene.m_rgGameData.lanes[l].enemies[i].hp > 0 && g_Minigame.m_CurrentScene.m_rgGameData.lanes[l].enemies[i].hp - g_Minigame.m_CurrentScene.m_rgLaneData[l].friendly_dps * 2 < 0) {
- return g_Minigame.m_CurrentScene.TryChangeLane(l);
- }
- }
- }
- for (var i = 0; i < elementalDmg.length; i++) for (var l = 0; l < 3; l++) {
- if (emptyLanes.indexOf(l) !== -1) continue;
- if (g_Minigame.m_CurrentScene.m_rgGameData.lanes[l].element === elementalDmg[i].id) return g_Minigame.m_CurrentScene.TryChangeLane(l);
- }
- }, 1000);
- },
- disable: function() {
- window.clearInterval(this.intervalID);
- }
- },
- noparticles: {
- name: 'No Particles',
- enable: function() {
- this.spawnEmitter = CSceneGame.prototype.SpawnEmitter;
- CSceneGame.prototype.SpawnEmitter = function() {};
- },
- disable: function() {
- CSceneGame.prototype.SpawnEmitter = this.spawnEmitter;
- }
- },
- nodmgtext: {
- name: 'No Damage Text',
- enable: function(towerattack) {
- towerattack.hooks.doClickEffect.showText = false;
- towerattack.hooks.doCritEffect.showText = false;
- },
- disable: function(towerattack) {
- towerattack.hooks.doClickEffect.showText = true;
- towerattack.hooks.doCritEffect.showText = true;
- }
- }
- },
- toggleModule: function(module) {
- if (module.enabled === true) {
- module.disable(this);
- module.enabled = false;
- module.button.addClass('cantafford').find('.upgrade_text').text('Enable');
- } else {
- module.enable(this);
- module.enabled = true;
- module.button.removeClass('cantafford').find('.upgrade_text').text('Disable');
- }
- },
- addModuleToggle: function(module) {
- if (module.button) return;
- var that = this;
- var $ = window.jQuery;
- $('#opl-helper-settings').append(
- (module.button = $('<div>').addClass(module.enabled ? '' : 'cantafford').append(
- $('<div class="upgrade purchase">').append(
- $('<div class="info">').append(
- $('<div>').append(
- $('<div class="name">').text(module.name)
- )
- )
- ).append(
- $('<a class="link" href="#">').on('click', function(e) {
- e.preventDefault();
- that.toggleModule(module);
- }).append(
- $('<span>').append(
- $('<span class="upgrade_text">').text(module.enabled ? 'Disable' : 'Enable')
- )
- )
- )
- ))
- );
- },
- end: function() {
- for (var k in this.modules) if (this.modules[k].enabled) this.modules[k].disable(this);
- for (var k in this.hooks) this.hooks[k].unhook();
- jQuery('#opl-helper-settingslabel,#opl-helper-settings').remove();
- }
- };
- window.opl.towerattack.init();
- /*
- function opl_click() {
- if (g_Minigame.m_CurrentScene.m_rgPlayerData.hp <= 0 || !g_Minigame.m_CurrentScene.m_rgGameData) {
- if (new Date().getTime() - g_Minigame.m_CurrentScene.m_rgPlayerData.time_died > 5000) RespawnPlayer();
- return setTimeout(opl_click, 2000);
- }
- var enemy = g_Minigame.m_CurrentScene.GetEnemy(g_Minigame.m_CurrentScene.m_rgPlayerData.current_lane, g_Minigame.m_CurrentScene.m_rgPlayerData.target);
- if (!enemy || enemy.m_data.hp <= 0) return setTimeout(opl_click, 200);
- g_Minigame.m_CurrentScene.m_nClicks = ~~(Math.random() * 6 + 39) - (~~(Math.random() * 1.1) * 3);
- var nClickGoldPct = g_Minigame.m_CurrentScene.m_rgGameData.lanes[g_Minigame.m_CurrentScene.m_rgPlayerData.current_lane].active_player_ability_gold_per_click;
- if (nClickGoldPct > 0 && enemy.m_data.hp > 0) {
- var nClickGold = enemy.m_data.gold * nClickGoldPct * g_Minigame.m_CurrentScene.m_nClicks;
- g_Minigame.m_CurrentScene.ClientOverride('player_data', 'gold', g_Minigame.m_CurrentScene.m_rgPlayerData.gold + nClickGold);
- g_Minigame.m_CurrentScene.ApplyClientOverrides('player_data', true);
- }
- for (var c = 0; c < g_Minigame.m_CurrentScene.m_nClicks; c++) g_Minigame.m_CurrentScene.CalculateDamage(g_Minigame.m_CurrentScene.m_rgPlayerTechTree.damage_per_click, g_Minigame.m_CurrentScene.m_rgGameData.lanes[g_Minigame.m_CurrentScene.m_rgPlayerData.current_lane].element)
- if (g_Minigame.m_CurrentScene.m_rgStoredCrits.length > 0) {
- var rgDamage = g_Minigame.m_CurrentScene.m_rgStoredCrits.splice(0,1);
- g_Minigame.m_CurrentScene.DoCritEffect(rgDamage[0], parseInt(enemy.m_HealthBar.m_nLastPositionX), parseInt(enemy.m_HealthBar.m_nLastPositionY), 'Crit!');
- }
- if (opl_c) setTimeout(opl_click, 1000)
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement