mana
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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();
});