Fix Turret bug when cheat (#8273)

* (C/S) Fix ItemTurret ammo when `cheat`.

* (C/S) Fix `TurretBuild.updateReload` NPE when `cheat`
This commit is contained in:
WayZer
2023-02-09 22:20:06 +08:00
committed by GitHub
parent 53206e4b31
commit 53f410fee0
2 changed files with 14 additions and 3 deletions

View File

@@ -19,7 +19,7 @@ import mindustry.world.meta.*;
import static mindustry.Vars.*; import static mindustry.Vars.*;
public class ItemTurret extends Turret{ public class ItemTurret extends Turret{
public ObjectMap<Item, BulletType> ammoTypes = new ObjectMap<>(); public ObjectMap<Item, BulletType> ammoTypes = new OrderedMap<>();
public ItemTurret(String name){ public ItemTurret(String name){
super(name); super(name);
@@ -82,6 +82,17 @@ public class ItemTurret extends Turret{
} }
public class ItemTurretBuild extends TurretBuild{ public class ItemTurretBuild extends TurretBuild{
@Override
public void onProximityAdded(){
super.onProximityAdded();
//add first ammo item to cheaty blocks so they can shoot properly
if(!hasAmmo() && cheating() && ammoTypes.size > 0){
handleItem(this, ammoTypes.keys().next());
}
}
@Override @Override
public void updateTile(){ public void updateTile(){
unit.ammo((float)unit.type().ammoCapacity * totalAmmo / maxAmmo); unit.ammo((float)unit.type().ammoCapacity * totalAmmo / maxAmmo);

View File

@@ -501,7 +501,7 @@ public class Turret extends ReloadTurret{
ammo.swap(ammo.size - 1, ammo.size - 2); ammo.swap(ammo.size - 1, ammo.size - 2);
} }
return ammo.size > 0 && ammo.peek().amount >= ammoPerShot || cheating(); return ammo.size > 0 && (ammo.peek().amount >= ammoPerShot || cheating());
} }
public boolean charging(){ public boolean charging(){