Skip to content

Commit 7e747d2

Browse files
author
Bytekeeper
committed
Added support for lockdown and stasis affected units.
1 parent 7c1a359 commit 7e747d2

10 files changed

+341
-264
lines changed

src/main/java/org/bk/ass/Agent.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package org.bk.ass;
22

3-
import static java.lang.Math.max;
4-
53
import java.util.Collection;
64
import java.util.function.Consumer;
75

6+
import static java.lang.Math.max;
7+
88
public class Agent {
99

1010
private final String name;
@@ -57,6 +57,9 @@ public class Agent {
5757
// Visible to the other force
5858
boolean detected;
5959

60+
boolean isStasised;
61+
boolean isLockeddown;
62+
6063
UnitSize size;
6164

6265
boolean isMelee;
@@ -108,6 +111,16 @@ public Agent setRemainingStimFrames(int remainingStimFrames) {
108111
return this;
109112
}
110113

114+
public Agent setStasised(boolean stasised) {
115+
isStasised = stasised;
116+
return this;
117+
}
118+
119+
public Agent setLockeddown(boolean lockeddown) {
120+
isLockeddown = lockeddown;
121+
return this;
122+
}
123+
111124
@Override
112125
public String toString() {
113126
return name

src/main/java/org/bk/ass/AttackerBehavior.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public boolean simUnit(
1919
if (agent.cooldown > agent.maxCooldown - agent.stopFrames) {
2020
return true;
2121
}
22+
if (agent.isLockeddown || agent.isStasised) return false;
2223

2324
Agent selectedEnemy = null;
2425
Weapon selectedWeapon = null;
@@ -37,7 +38,7 @@ public boolean simUnit(
3738
for (int i = enemies.size() - 1; i >= 0; i--) {
3839
Agent enemy = enemies.get(i);
3940
Weapon wpn = agent.weaponVs(enemy);
40-
if (enemy.healthShifted >= 1 && wpn.damageShifted != 0 && enemy.detected) {
41+
if (enemy.healthShifted >= 1 && wpn.damageShifted != 0 && enemy.detected && !enemy.isStasised) {
4142
int distanceSquared = distanceSquared(agent, enemy);
4243
if (distanceSquared >= wpn.minRangeSquared && distanceSquared < selectedDistanceSquared) {
4344
selectedDistanceSquared = distanceSquared;

src/main/java/org/bk/ass/BWAPI4JAgentFactory.java

Lines changed: 39 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,16 @@
11
package org.bk.ass;
22

3-
import static java.lang.Math.max;
3+
import org.bk.ass.info.BWAPI4JUnitInfo;
4+
import org.openbw.bwapi4j.BWMap;
5+
import org.openbw.bwapi4j.Player;
6+
import org.openbw.bwapi4j.type.*;
7+
import org.openbw.bwapi4j.unit.*;
48

59
import java.util.Collection;
610
import java.util.EnumSet;
711
import java.util.function.Consumer;
8-
import org.bk.ass.info.BWAPI4JUnitInfo;
9-
import org.openbw.bwapi4j.BWMap;
10-
import org.openbw.bwapi4j.Player;
11-
import org.openbw.bwapi4j.type.ExplosionType;
12-
import org.openbw.bwapi4j.type.Race;
13-
import org.openbw.bwapi4j.type.TechType;
14-
import org.openbw.bwapi4j.type.UnitSizeType;
15-
import org.openbw.bwapi4j.type.UnitType;
16-
import org.openbw.bwapi4j.type.UpgradeType;
17-
import org.openbw.bwapi4j.type.WeaponType;
18-
import org.openbw.bwapi4j.unit.Burrowable;
19-
import org.openbw.bwapi4j.unit.Firebat;
20-
import org.openbw.bwapi4j.unit.Marine;
21-
import org.openbw.bwapi4j.unit.PlayerUnit;
22-
import org.openbw.bwapi4j.unit.SpellCaster;
12+
13+
import static java.lang.Math.max;
2314

2415
public class BWAPI4JAgentFactory {
2516

@@ -65,13 +56,13 @@ public Agent of(
6556
boolean speedUpgrade,
6657
boolean energyUpgrade) {
6758
return fromUnitType(
68-
unitType,
69-
groundWeaponUpgrades,
70-
airWeaponUpgrades,
71-
groundWeaponRangeUpgrade,
72-
airWeaponRangeUpgrade,
73-
speedUpgrade,
74-
energyUpgrade)
59+
unitType,
60+
groundWeaponUpgrades,
61+
airWeaponUpgrades,
62+
groundWeaponRangeUpgrade,
63+
airWeaponRangeUpgrade,
64+
speedUpgrade,
65+
energyUpgrade)
7566
.setHealth(unitType.maxHitPoints())
7667
.setShields(unitType.maxShields())
7768
.setEnergy(unitType.maxEnergy());
@@ -186,13 +177,13 @@ public Agent of(
186177
}
187178

188179
return fromUnitType(
189-
unit.getType(),
190-
groundWeaponUpgrades,
191-
airWeaponUpgrades,
192-
groundWeaponRangeUpgrade,
193-
airWeaponRangeUpgrade,
194-
speedUpgrade,
195-
energyUpgrade)
180+
unit.getType(),
181+
groundWeaponUpgrades,
182+
airWeaponUpgrades,
183+
groundWeaponRangeUpgrade,
184+
airWeaponRangeUpgrade,
185+
speedUpgrade,
186+
energyUpgrade)
196187
.setHealth(unit.getHitPoints())
197188
.setShields(unit.getShields())
198189
.setEnergy(energy)
@@ -264,44 +255,44 @@ private int rangeUpgrade(WeaponType weaponType, Player player) {
264255
private boolean hasEnergyUpgrade(UnitType unitType, Player player) {
265256
return unitType == UnitType.Zerg_Queen && player.getUpgradeLevel(UpgradeType.Gamete_Meiosis) > 0
266257
|| unitType == UnitType.Zerg_Defiler
267-
&& player.getUpgradeLevel(UpgradeType.Metasynaptic_Node) > 0
258+
&& player.getUpgradeLevel(UpgradeType.Metasynaptic_Node) > 0
268259
|| unitType == UnitType.Protoss_High_Templar
269-
&& player.getUpgradeLevel(UpgradeType.Khaydarin_Amulet) > 0
260+
&& player.getUpgradeLevel(UpgradeType.Khaydarin_Amulet) > 0
270261
|| unitType == UnitType.Protoss_Dark_Archon
271-
&& player.getUpgradeLevel(UpgradeType.Argus_Talisman) > 0
262+
&& player.getUpgradeLevel(UpgradeType.Argus_Talisman) > 0
272263
|| unitType == UnitType.Protoss_Arbiter
273-
&& player.getUpgradeLevel(UpgradeType.Khaydarin_Core) > 0
264+
&& player.getUpgradeLevel(UpgradeType.Khaydarin_Core) > 0
274265
|| unitType == UnitType.Protoss_Corsair
275-
&& player.getUpgradeLevel(UpgradeType.Argus_Jewel) > 0
266+
&& player.getUpgradeLevel(UpgradeType.Argus_Jewel) > 0
276267
|| unitType == UnitType.Terran_Wraith
277-
&& player.getUpgradeLevel(UpgradeType.Apollo_Reactor) > 0
268+
&& player.getUpgradeLevel(UpgradeType.Apollo_Reactor) > 0
278269
|| unitType == UnitType.Terran_Ghost
279-
&& player.getUpgradeLevel(UpgradeType.Moebius_Reactor) > 0
270+
&& player.getUpgradeLevel(UpgradeType.Moebius_Reactor) > 0
280271
|| unitType == UnitType.Terran_Battlecruiser
281-
&& player.getUpgradeLevel(UpgradeType.Colossus_Reactor) > 0
272+
&& player.getUpgradeLevel(UpgradeType.Colossus_Reactor) > 0
282273
|| unitType == UnitType.Terran_Science_Vessel
283-
&& player.getUpgradeLevel(UpgradeType.Titan_Reactor) > 0
274+
&& player.getUpgradeLevel(UpgradeType.Titan_Reactor) > 0
284275
|| unitType == UnitType.Terran_Medic
285-
&& player.getUpgradeLevel(UpgradeType.Caduceus_Reactor) > 0;
276+
&& player.getUpgradeLevel(UpgradeType.Caduceus_Reactor) > 0;
286277
}
287278

288279
private boolean hasSpeedUpgrade(UnitType unitType, Player player) {
289280
return unitType == UnitType.Zerg_Zergling
290-
&& player.getUpgradeLevel(UpgradeType.Metabolic_Boost) > 0
281+
&& player.getUpgradeLevel(UpgradeType.Metabolic_Boost) > 0
291282
|| unitType == UnitType.Zerg_Hydralisk
292-
&& player.getUpgradeLevel(UpgradeType.Muscular_Augments) > 0
283+
&& player.getUpgradeLevel(UpgradeType.Muscular_Augments) > 0
293284
|| unitType == UnitType.Zerg_Overlord
294-
&& player.getUpgradeLevel(UpgradeType.Pneumatized_Carapace) > 0
285+
&& player.getUpgradeLevel(UpgradeType.Pneumatized_Carapace) > 0
295286
|| unitType == UnitType.Zerg_Ultralisk
296-
&& player.getUpgradeLevel(UpgradeType.Anabolic_Synthesis) > 0
287+
&& player.getUpgradeLevel(UpgradeType.Anabolic_Synthesis) > 0
297288
|| unitType == UnitType.Protoss_Shuttle
298-
&& player.getUpgradeLevel(UpgradeType.Gravitic_Thrusters) > 0
289+
&& player.getUpgradeLevel(UpgradeType.Gravitic_Thrusters) > 0
299290
|| unitType == UnitType.Protoss_Observer
300-
&& player.getUpgradeLevel(UpgradeType.Gravitic_Boosters) > 0
291+
&& player.getUpgradeLevel(UpgradeType.Gravitic_Boosters) > 0
301292
|| unitType == UnitType.Protoss_Zealot
302-
&& player.getUpgradeLevel(UpgradeType.Leg_Enhancements) > 0
293+
&& player.getUpgradeLevel(UpgradeType.Leg_Enhancements) > 0
303294
|| unitType == UnitType.Terran_Vulture
304-
&& player.getUpgradeLevel(UpgradeType.Ion_Thrusters) > 0;
295+
&& player.getUpgradeLevel(UpgradeType.Ion_Thrusters) > 0;
305296
}
306297

307298
private SplashType splashType(WeaponType weaponType) {

0 commit comments

Comments
 (0)