More reasonable AI behavior
This commit is contained in:
@@ -13,4 +13,5 @@ mindustry.entities.def.TileComp=8
|
|||||||
mindustry.type.Weather.WeatherComp=13
|
mindustry.type.Weather.WeatherComp=13
|
||||||
phantom=11
|
phantom=11
|
||||||
spirit=12
|
spirit=12
|
||||||
vanguard=9
|
vanguard=9
|
||||||
|
wraith=14
|
||||||
@@ -28,7 +28,7 @@ public class FlyingAI extends AIController{
|
|||||||
boolean shoot = false;
|
boolean shoot = false;
|
||||||
|
|
||||||
if(target != null){
|
if(target != null){
|
||||||
attack(40f);
|
attack(80f);
|
||||||
|
|
||||||
shoot = unit.inRange(target);
|
shoot = unit.inRange(target);
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ public class FlyingAI extends AIController{
|
|||||||
if(diff > 100f && vec.len() < circleLength){
|
if(diff > 100f && vec.len() < circleLength){
|
||||||
vec.setAngle(unit.vel().angle());
|
vec.setAngle(unit.vel().angle());
|
||||||
}else{
|
}else{
|
||||||
vec.setAngle(Mathf.slerpDelta(unit.vel().angle(), vec.angle(), 0.44f));
|
vec.setAngle(Mathf.slerpDelta(unit.vel().angle(), vec.angle(), 0.6f));
|
||||||
}
|
}
|
||||||
|
|
||||||
vec.setLength(unit.type().speed * Time.delta());
|
vec.setLength(unit.type().speed * Time.delta());
|
||||||
|
|||||||
@@ -9,12 +9,13 @@ import mindustry.type.*;
|
|||||||
public class UnitTypes implements ContentList{
|
public class UnitTypes implements ContentList{
|
||||||
//TODO reimplement
|
//TODO reimplement
|
||||||
public static UnitType
|
public static UnitType
|
||||||
wraith, ghoul, revenant, lich, reaper,
|
ghoul, revenant, lich, reaper,
|
||||||
crawler, titan, fortress, eruptor, chaosArray, eradicator;
|
crawler, titan, fortress, eruptor, chaosArray, eradicator;
|
||||||
|
|
||||||
public static @EntityDef({Unitc.class, Legsc.class}) UnitType dagger;
|
public static @EntityDef({Unitc.class, Legsc.class}) UnitType dagger;
|
||||||
public static @EntityDef({Unitc.class, WaterMovec.class}) UnitType vanguard;
|
public static @EntityDef({Unitc.class, WaterMovec.class}) UnitType vanguard;
|
||||||
public static @EntityDef({Unitc.class, Minerc.class}) UnitType draug;
|
public static @EntityDef({Unitc.class, Minerc.class}) UnitType draug;
|
||||||
|
public static @EntityDef({Unitc.class}) UnitType wraith;
|
||||||
public static @EntityDef({Unitc.class}) UnitType spirit;
|
public static @EntityDef({Unitc.class}) UnitType spirit;
|
||||||
public static @EntityDef({Unitc.class, Builderc.class}) UnitType phantom;
|
public static @EntityDef({Unitc.class, Builderc.class}) UnitType phantom;
|
||||||
|
|
||||||
@@ -27,7 +28,7 @@ public class UnitTypes implements ContentList{
|
|||||||
public void load(){
|
public void load(){
|
||||||
|
|
||||||
dagger = new UnitType("dagger"){{
|
dagger = new UnitType("dagger"){{
|
||||||
speed = 1f;
|
speed = 0.5f;
|
||||||
drag = 0.3f;
|
drag = 0.3f;
|
||||||
hitsize = 8f;
|
hitsize = 8f;
|
||||||
mass = 1.75f;
|
mass = 1.75f;
|
||||||
@@ -41,6 +42,25 @@ public class UnitTypes implements ContentList{
|
|||||||
}});
|
}});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
wraith = new UnitType("wraith"){{
|
||||||
|
speed = 3f;
|
||||||
|
accel = 0.08f;
|
||||||
|
drag = 0f;
|
||||||
|
mass = 1.5f;
|
||||||
|
flying = true;
|
||||||
|
health = 75;
|
||||||
|
engineOffset = 5.5f;
|
||||||
|
range = 140f;
|
||||||
|
weapons.add(new Weapon(){{
|
||||||
|
y = 1.5f;
|
||||||
|
reload = 28f;
|
||||||
|
alternate = true;
|
||||||
|
ejectEffect = Fx.shellEjectSmall;
|
||||||
|
bullet = Bullets.standardCopper;
|
||||||
|
shootSound = Sounds.shoot;
|
||||||
|
}});
|
||||||
|
}};
|
||||||
|
|
||||||
vanguard = new UnitType("vanguard"){{
|
vanguard = new UnitType("vanguard"){{
|
||||||
speed = 1.3f;
|
speed = 1.3f;
|
||||||
drag = 0.1f;
|
drag = 0.1f;
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ public abstract class BulletType extends Content{
|
|||||||
bullet.damage(damage < 0 ? this.damage : damage);
|
bullet.damage(damage < 0 ? this.damage : damage);
|
||||||
bullet.add();
|
bullet.add();
|
||||||
|
|
||||||
//if(keepVelocity && owner instanceof Velc) bullet.vel().add(((Velc)owner).vel());
|
if(keepVelocity && owner instanceof Velc) bullet.vel().add(((Velc)owner).vel());
|
||||||
return bullet;
|
return bullet;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,8 +79,8 @@ abstract class UnitComp implements Healthc, Velc, Statusc, Teamc, Itemsc, Hitbox
|
|||||||
Vec2 v = Geometry.overlap(Tmp.r1, Tmp.r2, true);
|
Vec2 v = Geometry.overlap(Tmp.r1, Tmp.r2, true);
|
||||||
float tm = mass() + unit.mass();
|
float tm = mass() + unit.mass();
|
||||||
float s1 = mass() / tm, s2 = unit.mass() / tm;
|
float s1 = mass() / tm, s2 = unit.mass() / tm;
|
||||||
move(v.x*s2/scale, v.y*s2/scale);
|
impulse(v.x*s2/scale, v.y*s2/scale);
|
||||||
unit.move(-v.x*s1/scale, -v.y*s1/scale);
|
unit.impulse(-v.x*s1/scale, -v.y*s1/scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ public class UnitType extends UnlockableContent{
|
|||||||
public boolean flying;
|
public boolean flying;
|
||||||
public @NonNull Prov<? extends Unitc> constructor;
|
public @NonNull Prov<? extends Unitc> constructor;
|
||||||
public @NonNull Prov<? extends UnitController> defaultController = () -> !flying ? new GroundAI() : new FlyingAI();
|
public @NonNull Prov<? extends UnitController> defaultController = () -> !flying ? new GroundAI() : new FlyingAI();
|
||||||
public float speed = 1.1f, boostSpeed = 0.75f, rotateSpeed = 6f, baseRotateSpeed = 10f;
|
public float speed = 1.1f, boostSpeed = 0.75f, rotateSpeed = 5f, baseRotateSpeed = 5f;
|
||||||
public float drag = 0.3f, mass = 1f, accel = 0.9f;
|
public float drag = 0.3f, mass = 1f, accel = 0.5f;
|
||||||
public float health = 200f, range = -1;
|
public float health = 200f, range = -1;
|
||||||
public boolean targetAir = true, targetGround = true;
|
public boolean targetAir = true, targetGround = true;
|
||||||
public boolean faceTarget = true, isCounted = true;
|
public boolean faceTarget = true, isCounted = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user