New alpha drone mechanics
This commit is contained in:
@@ -37,7 +37,7 @@ public class Mechs implements ContentList{
|
|||||||
|
|
||||||
alpha = new Mech("alpha-mech", false){
|
alpha = new Mech("alpha-mech", false){
|
||||||
int maxDrones = 3;
|
int maxDrones = 3;
|
||||||
float buildTime = 200f;
|
float buildTime = 20f;
|
||||||
|
|
||||||
{
|
{
|
||||||
drillPower = 1;
|
drillPower = 1;
|
||||||
@@ -53,7 +53,7 @@ public class Mechs implements ContentList{
|
|||||||
@Override
|
@Override
|
||||||
public void updateAlt(Player player){
|
public void updateAlt(Player player){
|
||||||
|
|
||||||
if(getDrones(player) < maxDrones && !TutorialSector.supressDrone() && player.timer.get(Player.timerAbility, buildTime)){
|
if(player.isShooting && player.timer.get(Player.timerAbility, buildTime) && getDrones(player) < maxDrones && !TutorialSector.supressDrone()){
|
||||||
if(!Net.client()) {
|
if(!Net.client()) {
|
||||||
AlphaDrone drone = (AlphaDrone) UnitTypes.alphaDrone.create(player.getTeam());
|
AlphaDrone drone = (AlphaDrone) UnitTypes.alphaDrone.create(player.getTeam());
|
||||||
drone.leader = player;
|
drone.leader = player;
|
||||||
|
|||||||
@@ -1,15 +1,21 @@
|
|||||||
package io.anuke.mindustry.entities.units.types;
|
package io.anuke.mindustry.entities.units.types;
|
||||||
|
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
import io.anuke.annotations.Annotations.Loc;
|
||||||
|
import io.anuke.annotations.Annotations.Remote;
|
||||||
import io.anuke.mindustry.Vars;
|
import io.anuke.mindustry.Vars;
|
||||||
|
import io.anuke.mindustry.content.fx.UnitFx;
|
||||||
|
import io.anuke.mindustry.entities.Player;
|
||||||
import io.anuke.mindustry.entities.Predict;
|
import io.anuke.mindustry.entities.Predict;
|
||||||
import io.anuke.mindustry.entities.Unit;
|
|
||||||
import io.anuke.mindustry.entities.traits.TargetTrait;
|
import io.anuke.mindustry.entities.traits.TargetTrait;
|
||||||
|
import io.anuke.mindustry.entities.units.BaseUnit;
|
||||||
import io.anuke.mindustry.entities.units.FlyingUnit;
|
import io.anuke.mindustry.entities.units.FlyingUnit;
|
||||||
import io.anuke.mindustry.entities.units.UnitCommand;
|
import io.anuke.mindustry.entities.units.UnitCommand;
|
||||||
import io.anuke.mindustry.entities.units.UnitState;
|
import io.anuke.mindustry.entities.units.UnitState;
|
||||||
|
import io.anuke.mindustry.gen.Call;
|
||||||
import io.anuke.mindustry.net.Net;
|
import io.anuke.mindustry.net.Net;
|
||||||
import io.anuke.mindustry.type.AmmoType;
|
import io.anuke.mindustry.type.AmmoType;
|
||||||
|
import io.anuke.ucore.core.Effects;
|
||||||
import io.anuke.ucore.util.Mathf;
|
import io.anuke.ucore.util.Mathf;
|
||||||
|
|
||||||
import java.io.DataInput;
|
import java.io.DataInput;
|
||||||
@@ -22,7 +28,8 @@ import static io.anuke.mindustry.Vars.players;
|
|||||||
public class AlphaDrone extends FlyingUnit {
|
public class AlphaDrone extends FlyingUnit {
|
||||||
static final float followDistance = 80f;
|
static final float followDistance = 80f;
|
||||||
|
|
||||||
public Unit leader;
|
public Player leader;
|
||||||
|
|
||||||
public final UnitState attack = new UnitState() {
|
public final UnitState attack = new UnitState() {
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
@@ -32,15 +39,18 @@ public class AlphaDrone extends FlyingUnit {
|
|||||||
}
|
}
|
||||||
TargetTrait last = target;
|
TargetTrait last = target;
|
||||||
target = leader;
|
target = leader;
|
||||||
|
|
||||||
if(last == null){
|
if(last == null){
|
||||||
circle(50f);
|
circle(leader.isShooting ? 50f : 0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
target = last;
|
target = last;
|
||||||
if(distanceTo(leader) < followDistance){
|
if(distanceTo(leader) < followDistance){
|
||||||
targetClosest();
|
targetClosest();
|
||||||
}else{
|
}else{
|
||||||
target = null;
|
target = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(target != null){
|
if(target != null){
|
||||||
attack(50f);
|
attack(50f);
|
||||||
|
|
||||||
@@ -51,9 +61,20 @@ public class AlphaDrone extends FlyingUnit {
|
|||||||
getWeapon().update(AlphaDrone.this, to.x, to.y);
|
getWeapon().update(AlphaDrone.this, to.x, to.y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!leader.isShooting && distanceTo(leader) < 8f){
|
||||||
|
Call.onAlphaDroneFade(AlphaDrone.this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Remote(called = Loc.server)
|
||||||
|
public static void onAlphaDroneFade(BaseUnit drone){
|
||||||
|
if(drone == null) return;
|
||||||
|
drone.remove();
|
||||||
|
Effects.effect(UnitFx.pickup, drone);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCommand(UnitCommand command){
|
public void onCommand(UnitCommand command){
|
||||||
//nuh
|
//nuh
|
||||||
|
|||||||
Reference in New Issue
Block a user