mana
Diffstat (limited to 'scripts/main.js')
| -rw-r--r-- | scripts/main.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/scripts/main.js b/scripts/main.js new file mode 100644 index 0000000..5cd3c9e --- /dev/null +++ b/scripts/main.js @@ -0,0 +1,108 @@ +// jshint esversion: 6 +const vars = require("vars"); +const miningai = require("experience/miningai"); +const ui = require("ui-lib/library"); +try { + ui.addButton("toggle-playerai", "units", () => { + if (vars.playerai == null) vars.playerai = true; + else vars.playerai = null; + Vars.ui.hudfrag.showToast( + vars.playerai == true ? "enabled playerai" : "disabled playerai" + ); + }); +} catch (e) { + Log.info(e); +} + +function check_mats(check_items, maxvalue) { + let current_items = Vars.player.team().items(); + let ticks = 0; + for (let i = 0; i < check_items.length; i++) { + let current_value = current_items.get(check_items[i]); + if (current_value > maxvalue[i]) { + ticks += 1; + } + } + return ticks >= maxvalue.length; +} + +function place_graphite_presses() { + if ( + Vars.player.team() == Team.purple && + !vars.has_created_graphite && + check_mats([Items.copper, Items.lead], [12375, 4950]) + ) { + Log.info("all set to place grap"); + let placed = 0; + for (let x = 0; x < 200; x += 2) { + for (let y = 0; y < 200; y += 2) { + let tile = new Tile(x, y); + let buildplan = new BuildPlan( + tile.centerX(), + tile.centerY(), + 0, + Blocks.graphitePress + ); + if (buildplan.placeable(Vars.player.team())) { + Vars.player.unit().addBuild(buildplan); + placed++; + if (placed > 164) { + vars.has_created_graphite = true; + return; + } + } + } + } + } +} + +function check_ai() { + if (vars.playerai && Vars.player.unit() && Vars.player.unit().type) { + let base = Math.min( + Vars.player.team().items().get(Items.copper), + Vars.player.team().items().get(Items.lead) + ); + + base = Math.min(base, base, Vars.player.team().items().get(Items.coal)); + place_graphite_presses(); + if (Vars.player.unit().plans.size != 0) { + let build_plan = Vars.player.unit().plans.first(); + Vars.player.unit().approach(Tmp.v1.set(build_plan).sub(Vars.player)); + vars.playerai = "fakebuildpath"; + } else if (vars.playerai != miningai.playerMiningAI && base < 1000) { + Log.info("becoming miningai"); + vars.playerai = miningai.playerMiningAI; + } else if (!vars.playerai instanceof BuilderAI) { + vars.playerai = new BuilderAI(); + Log.info("becoming builderai"); + } + + updateunits(); + } +} + +function updateunits() { + if ( + vars.playerai == miningai.playerMiningAI || + vars.playerai instanceof BuilderAI + ) { + if (vars.playerai == miningai.playerMiningAI) { + vars.playerai.unitS(Vars.player.unit()); + } else if (vars.playerai instanceof BuilderAI) { + vars.playerai.unit(Vars.player.unit()); + } + vars.playerai.updateUnit(); + } +} + +Events.on(EventType.PlayerConnect, (event) => { + print(Strings.stripColors(event.player.name)); +}); + +Events.on(WorldLoadEvent, (event) => { + Log.info("debug: cleared all"); +}); + +Events.run(Trigger.update, () => { + check_ai(); +}); |