Disable auto attack for workers, fix NPE in return resources

This commit is contained in:
Retera 2021-01-24 12:46:34 -05:00
parent 2d8b3e7cae
commit cacdf7f266
4 changed files with 10 additions and 7 deletions

View File

@ -342,7 +342,8 @@ public class CUnit extends CWidget {
} }
public boolean autoAcquireAttackTargets(final CSimulation game, final boolean disableMove) { public boolean autoAcquireAttackTargets(final CSimulation game, final boolean disableMove) {
if (!this.unitType.getAttacks().isEmpty()) { if (!this.unitType.getAttacks().isEmpty()
&& !this.unitType.getClassifications().contains(CUnitClassification.PEON)) {
if (this.collisionRectangle != null) { if (this.collisionRectangle != null) {
tempRect.set(this.collisionRectangle); tempRect.set(this.collisionRectangle);
} }

View File

@ -47,10 +47,8 @@ public class CBehaviorAttack extends CAbstractRangedBehavior {
if (simulation.getGameTurnTick() < this.unit.getCooldownEndTime()) { if (simulation.getGameTurnTick() < this.unit.getCooldownEndTime()) {
range += this.unitAttack.getRangeMotionBuffer(); range += this.unitAttack.getRangeMotionBuffer();
} }
final double rangeCheckDistance = this.unit.distance(this.target);
System.out.println("rangeCheckDistance=" + rangeCheckDistance);
return this.unit.canReach(this.target, range) return this.unit.canReach(this.target, range)
&& (rangeCheckDistance >= this.unit.getUnitType().getMinimumAttackRange()); && (this.unit.distance(this.target) >= this.unit.getUnitType().getMinimumAttackRange());
} }
@Override @Override

View File

@ -26,8 +26,13 @@ public class CBehaviorReturnResources extends CAbstractRangedBehavior implements
this.abilityHarvest = abilityHarvest; this.abilityHarvest = abilityHarvest;
} }
public CBehaviorReturnResources reset(final CSimulation simulation) { public CBehavior reset(final CSimulation simulation) {
innerReset(findNearestDropoffPoint(simulation)); final CUnit nearestDropoffPoint = findNearestDropoffPoint(simulation);
if (nearestDropoffPoint == null) {
// TODO it is unconventional not to return self here
return this.unit.pollNextOrderBehavior(simulation);
}
innerReset(nearestDropoffPoint);
return this; return this;
} }

View File

@ -133,7 +133,6 @@ public class CUnitAttackMissileSplash extends CUnitAttackMissile {
public boolean call(final CUnit enumUnit) { public boolean call(final CUnit enumUnit) {
if (enumUnit.canBeTargetedBy(this.simulation, this.source, this.attack.areaOfEffectTargets)) { if (enumUnit.canBeTargetedBy(this.simulation, this.source, this.attack.areaOfEffectTargets)) {
final double distance = enumUnit.distance(this.x, this.y); final double distance = enumUnit.distance(this.x, this.y);
System.out.println("enum distance=" + distance);
if (distance <= (this.attack.areaOfEffectFullDamage)) { if (distance <= (this.attack.areaOfEffectFullDamage)) {
enumUnit.damage(this.simulation, this.source, this.attack.getAttackType(), enumUnit.damage(this.simulation, this.source, this.attack.getAttackType(),
this.attack.getWeaponSound(), this.damage); this.attack.getWeaponSound(), this.damage);