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) {
if (!this.unitType.getAttacks().isEmpty()) {
if (!this.unitType.getAttacks().isEmpty()
&& !this.unitType.getClassifications().contains(CUnitClassification.PEON)) {
if (this.collisionRectangle != null) {
tempRect.set(this.collisionRectangle);
}

View File

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

View File

@ -26,8 +26,13 @@ public class CBehaviorReturnResources extends CAbstractRangedBehavior implements
this.abilityHarvest = abilityHarvest;
}
public CBehaviorReturnResources reset(final CSimulation simulation) {
innerReset(findNearestDropoffPoint(simulation));
public CBehavior reset(final CSimulation 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;
}

View File

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