Mega repair AI
This commit is contained in:
@@ -214,8 +214,7 @@ public class Vars implements Loadable{
|
||||
|
||||
if(loadLocales){
|
||||
//load locales
|
||||
String[]
|
||||
stra = Core.files.internal("locales").readString().split("\n");
|
||||
String[] stra = Core.files.internal("locales").readString().split("\n");
|
||||
locales = new Locale[stra.length];
|
||||
for(int i = 0; i < locales.length; i++){
|
||||
String code = stra[i];
|
||||
|
||||
@@ -12,14 +12,6 @@ public class FlyingAI extends AIController{
|
||||
|
||||
@Override
|
||||
public void updateMovement(){
|
||||
if(unit.moving()){
|
||||
unit.lookAt(unit.vel.angle());
|
||||
}
|
||||
|
||||
if(unit.isFlying()){
|
||||
unit.wobble();
|
||||
}
|
||||
|
||||
if(target != null && unit.hasWeapons() && command() == UnitCommand.attack){
|
||||
if(unit.type().weapons.first().rotate){
|
||||
moveTo(target, unit.range() * 0.8f);
|
||||
|
||||
@@ -15,14 +15,6 @@ public class MinerAI extends AIController{
|
||||
|
||||
@Override
|
||||
protected void updateMovement(){
|
||||
if(unit.moving()){
|
||||
unit.lookAt(unit.vel.angle());
|
||||
}
|
||||
|
||||
if(unit.isFlying()){
|
||||
unit.wobble();
|
||||
}
|
||||
|
||||
Building core = unit.closestCore();
|
||||
|
||||
if(!(unit instanceof Minerc) || core == null) return;
|
||||
|
||||
32
core/src/mindustry/ai/types/RepairAI.java
Normal file
32
core/src/mindustry/ai/types/RepairAI.java
Normal file
@@ -0,0 +1,32 @@
|
||||
package mindustry.ai.types;
|
||||
|
||||
import mindustry.entities.*;
|
||||
import mindustry.entities.units.*;
|
||||
import mindustry.world.blocks.ConstructBlock.*;
|
||||
|
||||
//note that repair AI doesn't attack anything even if it theoretically can
|
||||
public class RepairAI extends AIController{
|
||||
|
||||
@Override
|
||||
protected void updateMovement(){
|
||||
boolean shoot = false;
|
||||
|
||||
if(target != null){
|
||||
if(!target.within(unit, unit.type().range)){
|
||||
moveTo(target, unit.type().range * 0.9f);
|
||||
}else{
|
||||
unit.aim(target);
|
||||
shoot = true;
|
||||
}
|
||||
}
|
||||
|
||||
unit.controlWeapons(shoot);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateTargeting(){
|
||||
target = Units.findDamagedTile(unit.team, unit.x, unit.y);
|
||||
|
||||
if(target instanceof ConstructBuild) target = null;
|
||||
}
|
||||
}
|
||||
@@ -1029,6 +1029,7 @@ public class UnitTypes implements ContentList{
|
||||
}};
|
||||
|
||||
mega = new UnitType("mega"){{
|
||||
defaultController = RepairAI::new;
|
||||
|
||||
mineTier = 2;
|
||||
health = 500;
|
||||
|
||||
@@ -33,6 +33,7 @@ public class AIController implements UnitController{
|
||||
|
||||
@Override
|
||||
public void updateUnit(){
|
||||
updateVisuals();
|
||||
updateTargeting();
|
||||
updateMovement();
|
||||
}
|
||||
@@ -41,13 +42,23 @@ public class AIController implements UnitController{
|
||||
return unit.team.data().command;
|
||||
}
|
||||
|
||||
protected void updateVisuals(){
|
||||
|
||||
if(unit.isFlying()){
|
||||
unit.wobble();
|
||||
|
||||
if(unit.moving()){
|
||||
unit.lookAt(unit.vel.angle());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateMovement(){
|
||||
|
||||
}
|
||||
|
||||
protected void updateTargeting(){
|
||||
if(unit.hasWeapons()){
|
||||
|
||||
updateWeapons();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,6 @@ public class LogicBlock extends Block{
|
||||
update = true;
|
||||
solid = true;
|
||||
configurable = true;
|
||||
sync = true;
|
||||
|
||||
config(byte[].class, (LogicBuild build, byte[] data) -> build.readCompressed(data, true));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user