New alpha drone mechanics

This commit is contained in:
Anuken
2018-11-07 19:34:31 -05:00
parent 122fbbed22
commit 216433aa2d
2 changed files with 26 additions and 5 deletions

View File

@@ -37,7 +37,7 @@ public class Mechs implements ContentList{
alpha = new Mech("alpha-mech", false){
int maxDrones = 3;
float buildTime = 200f;
float buildTime = 20f;
{
drillPower = 1;
@@ -53,7 +53,7 @@ public class Mechs implements ContentList{
@Override
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()) {
AlphaDrone drone = (AlphaDrone) UnitTypes.alphaDrone.create(player.getTeam());
drone.leader = player;

View File

@@ -1,15 +1,21 @@
package io.anuke.mindustry.entities.units.types;
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.content.fx.UnitFx;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.Predict;
import io.anuke.mindustry.entities.Unit;
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.UnitCommand;
import io.anuke.mindustry.entities.units.UnitState;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.util.Mathf;
import java.io.DataInput;
@@ -22,7 +28,8 @@ import static io.anuke.mindustry.Vars.players;
public class AlphaDrone extends FlyingUnit {
static final float followDistance = 80f;
public Unit leader;
public Player leader;
public final UnitState attack = new UnitState() {
@Override
public void update() {
@@ -32,15 +39,18 @@ public class AlphaDrone extends FlyingUnit {
}
TargetTrait last = target;
target = leader;
if(last == null){
circle(50f);
circle(leader.isShooting ? 50f : 0f);
}
target = last;
if(distanceTo(leader) < followDistance){
targetClosest();
}else{
target = null;
}
if(target != null){
attack(50f);
@@ -51,9 +61,20 @@ public class AlphaDrone extends FlyingUnit {
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
public void onCommand(UnitCommand command){
//nuh