T4/5 support mechs
This commit is contained in:
@@ -1806,6 +1806,7 @@ public class Blocks implements ContentList{
|
||||
{UnitTypes.fortress, UnitTypes.scepter},
|
||||
{UnitTypes.bryde, UnitTypes.sei},
|
||||
{UnitTypes.mega, UnitTypes.quad},
|
||||
{UnitTypes.quasar, UnitTypes.vela},
|
||||
};
|
||||
}};
|
||||
|
||||
@@ -1825,7 +1826,8 @@ public class Blocks implements ContentList{
|
||||
{UnitTypes.arkyid, UnitTypes.toxopid},
|
||||
{UnitTypes.scepter, UnitTypes.reign},
|
||||
{UnitTypes.sei, UnitTypes.omura},
|
||||
{UnitTypes.quad, UnitTypes.oct}
|
||||
{UnitTypes.quad, UnitTypes.oct},
|
||||
{UnitTypes.vela, UnitTypes.corvus}
|
||||
};
|
||||
}};
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@ public class Fx{
|
||||
|
||||
int i = 0;
|
||||
for(Vec2 p : lines){
|
||||
Fill.square(p.x, p.y, (5f - (float)i++ / lines.size * 2f) * e.fout(), 45);
|
||||
Fill.circle(p.x, p.y, Lines.getStroke() / 2f);
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -290,7 +290,7 @@ public class Fx{
|
||||
Lines.spikes(e.x, e.y, 1f + e.fin() * 6f, e.fout() * 4f, 6);
|
||||
}),
|
||||
|
||||
healBomb = new Effect(40f, 100f, e -> {
|
||||
greenBomb = new Effect(40f, 100f, e -> {
|
||||
color(Pal.heal);
|
||||
stroke(e.fout() * 2f);
|
||||
Lines.circle(e.x, e.y, 4f + e.finpow() * 65f);
|
||||
@@ -306,6 +306,28 @@ public class Fx{
|
||||
}
|
||||
}),
|
||||
|
||||
greenLaserCharge = new Effect(80f, 100f, e -> {
|
||||
color(Pal.heal);
|
||||
stroke(e.fin() * 2f);
|
||||
Lines.circle(e.x, e.y, 4f + e.fout() * 100f);
|
||||
|
||||
Fill.circle(e.x, e.y, e.fin() * 20);
|
||||
|
||||
randLenVectors(e.id, 20, 40f * e.fout(), (x, y) -> {
|
||||
Fill.circle(e.x + x, e.y + y, e.fin() * 5f);
|
||||
});
|
||||
|
||||
color();
|
||||
|
||||
Fill.circle(e.x, e.y, e.fin() * 10);
|
||||
}),
|
||||
|
||||
greenLaserChargeSmall = new Effect(40f, 100f, e -> {
|
||||
color(Pal.heal);
|
||||
stroke(e.fin() * 2f);
|
||||
Lines.circle(e.x, e.y, e.fout() * 50f);
|
||||
}),
|
||||
|
||||
healWaveDynamic = new Effect(22, e -> {
|
||||
color(Pal.heal);
|
||||
stroke(e.fout() * 2f);
|
||||
@@ -422,6 +444,17 @@ public class Fx{
|
||||
|
||||
}),
|
||||
|
||||
hitMeltHeal = new Effect(12, e -> {
|
||||
color(Pal.heal);
|
||||
stroke(e.fout() * 2f);
|
||||
|
||||
randLenVectors(e.id, 6, e.finpow() * 18f, e.rotation, 360f, (x, y) -> {
|
||||
float ang = Mathf.angle(x, y);
|
||||
lineAngle(e.x + x, e.y + y, ang, e.fout() * 4 + 1f);
|
||||
});
|
||||
|
||||
}),
|
||||
|
||||
hitLaser = new Effect(8, e -> {
|
||||
color(Color.white, Pal.heal, e.fin());
|
||||
stroke(0.5f + e.fout());
|
||||
@@ -1251,6 +1284,14 @@ public class Fx{
|
||||
Fill.square(e.x + x, e.y + y, 1f + e.fout() * 3f, 45);
|
||||
});
|
||||
}),
|
||||
|
||||
smokeCloud = new Effect(70, e -> {
|
||||
randLenVectors(e.id, e.fin(), 30, 30f, (x, y, fin, fout) -> {
|
||||
color(Color.gray);
|
||||
alpha((0.5f - Math.abs(fin - 0.5f)) * 2f);
|
||||
Fill.circle(e.x + x, e.y + y, 0.5f + fout * 4f);
|
||||
});
|
||||
}),
|
||||
|
||||
smeltsmoke = new Effect(15, e -> {
|
||||
randLenVectors(e.id, 6, 4f + e.fin() * 5f, (x, y) -> {
|
||||
|
||||
@@ -9,7 +9,7 @@ import mindustry.type.StatusEffect;
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class StatusEffects implements ContentList{
|
||||
public static StatusEffect none, burning, freezing, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed;
|
||||
public static StatusEffect none, burning, freezing, unmoving, slow, wet, muddy, melting, sapped, tarred, overdrive, overclock, shielded, shocked, blasted, corroded, boss, sporeSlowed;
|
||||
|
||||
@Override
|
||||
public void load(){
|
||||
@@ -45,6 +45,14 @@ public class StatusEffects implements ContentList{
|
||||
});
|
||||
}};
|
||||
|
||||
unmoving = new StatusEffect("unmoving"){{
|
||||
speedMultiplier = 0.001f;
|
||||
}};
|
||||
|
||||
slow = new StatusEffect("slow"){{
|
||||
speedMultiplier = 0.4f;
|
||||
}};
|
||||
|
||||
wet = new StatusEffect("wet"){{
|
||||
color = Color.royal;
|
||||
speedMultiplier = 0.94f;
|
||||
|
||||
@@ -14,12 +14,18 @@ import mindustry.type.*;
|
||||
public class UnitTypes implements ContentList{
|
||||
//region definitions
|
||||
|
||||
//ground
|
||||
//mech
|
||||
public static @EntityDef({Unitc.class, Mechc.class}) UnitType mace, dagger, crawler, fortress, scepter, reign;
|
||||
|
||||
//ground + builder + miner + commander
|
||||
//mech + builder + miner + commander
|
||||
public static @EntityDef({Unitc.class, Mechc.class, Builderc.class, Minerc.class, Commanderc.class}) UnitType nova, pulsar, quasar;
|
||||
|
||||
//mech + commander
|
||||
public static @EntityDef({Unitc.class, Mechc.class, Commanderc.class}) UnitType vela;
|
||||
|
||||
//legs + commander
|
||||
public static @EntityDef({Unitc.class, Legsc.class, Commanderc.class}) UnitType corvus;
|
||||
|
||||
//legs
|
||||
public static @EntityDef({Unitc.class, Legsc.class}) UnitType atrax;
|
||||
|
||||
@@ -365,6 +371,134 @@ public class UnitTypes implements ContentList{
|
||||
}});
|
||||
}};
|
||||
|
||||
vela = new UnitType("vela"){{
|
||||
hitsize = 23f;
|
||||
|
||||
rotateSpeed = 1.6f;
|
||||
canDrown = false;
|
||||
mechFrontSway = 1f;
|
||||
|
||||
mechStepParticles = true;
|
||||
mechStepShake = 0.15f;
|
||||
|
||||
speed = 0.35f;
|
||||
boostMultiplier = 1.5f;
|
||||
engineOffset = 12f;
|
||||
engineSize = 6f;
|
||||
|
||||
health = 6000f;
|
||||
armor = 7f;
|
||||
canBoost = true;
|
||||
landShake = 4f;
|
||||
|
||||
commandLimit = 32;
|
||||
|
||||
weapons.add(new Weapon("vela-weapon"){{
|
||||
mirror = false;
|
||||
top = false;
|
||||
shake = 4f;
|
||||
shootY = 13f;
|
||||
x = y = 0f;
|
||||
|
||||
firstShotDelay = Fx.greenLaserChargeSmall.lifetime - 1f;
|
||||
|
||||
reload = 320f;
|
||||
recoil = 0f;
|
||||
shootSound = Sounds.laser;
|
||||
continuous = true;
|
||||
cooldownTime = 200f;
|
||||
|
||||
bullet = new ContinuousLaserBulletType(16){{
|
||||
length = 150f;
|
||||
hitEffect = Fx.hitMeltHeal;
|
||||
drawSize = 420f;
|
||||
lifetime = 160f;
|
||||
shake = 1f;
|
||||
despawnEffect = Fx.smokeCloud;
|
||||
smokeEffect = Fx.none;
|
||||
|
||||
shootEffect = Fx.greenLaserChargeSmall;
|
||||
|
||||
incendChance = 0.02f;
|
||||
incendSpread = 5f;
|
||||
incendAmount = 1;
|
||||
|
||||
colors = new Color[]{Pal.heal.cpy().a(.2f), Pal.heal.cpy().a(.5f), Pal.heal.cpy().mul(1.2f), Color.white};
|
||||
}};
|
||||
|
||||
shootStatus = StatusEffects.slow;
|
||||
shootStatusDuration = bullet.lifetime + firstShotDelay;
|
||||
}});
|
||||
}};
|
||||
|
||||
corvus = new UnitType("corvus"){{
|
||||
mineTier = 1;
|
||||
hitsize = 29f;
|
||||
itemCapacity = 80;
|
||||
health = 19000f;
|
||||
buildSpeed = 1.7f;
|
||||
armor = 9f;
|
||||
landShake = 1.5f;
|
||||
|
||||
commandLimit = 24;
|
||||
|
||||
legCount = 4;
|
||||
legLength = 14f;
|
||||
legBaseOffset = 10f;
|
||||
legMoveSpace = 1.5f;
|
||||
legTrns = 0.58f;
|
||||
hovering = true;
|
||||
visualElevation = 0.2f;
|
||||
allowLegStep = true;
|
||||
|
||||
speed = 0.3f;
|
||||
|
||||
mineTier = 2;
|
||||
mineSpeed = 7f;
|
||||
drawShields = false;
|
||||
|
||||
weapons.add(new Weapon("corvus-weapon"){{
|
||||
top = false;
|
||||
mirror = false;
|
||||
shake = 14f;
|
||||
shootY = 5f;
|
||||
x = y = 0;
|
||||
reload = 350f;
|
||||
recoil = 0f;
|
||||
shootSound = Sounds.laser;
|
||||
|
||||
cooldownTime = 350f;
|
||||
|
||||
shootStatusDuration = 60f * 2f;
|
||||
shootStatus = StatusEffects.unmoving;
|
||||
firstShotDelay = Fx.greenLaserCharge.lifetime;
|
||||
|
||||
bullet = new LaserBulletType(){{
|
||||
length = 500f;
|
||||
damage = 520f;
|
||||
width = 75f;
|
||||
|
||||
lifetime = 65f;
|
||||
|
||||
lightningSpacing = 35f;
|
||||
lightningLength = 5;
|
||||
lightningDelay = 1.1f;
|
||||
lightningLengthRand = 15;
|
||||
lightningDamage = 50;
|
||||
lightningAngleRand = 40f;
|
||||
largeHit = true;
|
||||
lightColor = lightningColor = Pal.heal;
|
||||
|
||||
shootEffect = Fx.greenLaserCharge;
|
||||
|
||||
sideAngle = 15f;
|
||||
sideWidth = 0f;
|
||||
sideLength = 0f;
|
||||
colors = new Color[]{Pal.heal.cpy().a(0.4f), Pal.heal, Color.white};
|
||||
}};
|
||||
}});
|
||||
}};
|
||||
|
||||
//endregion
|
||||
//region ground legs
|
||||
|
||||
@@ -405,6 +539,7 @@ public class UnitTypes implements ContentList{
|
||||
targetAir = false;
|
||||
health = 600;
|
||||
immunities = ObjectSet.with(StatusEffects.burning, StatusEffects.melting);
|
||||
|
||||
legCount = 4;
|
||||
legLength = 9f;
|
||||
legTrns = 0.6f;
|
||||
@@ -603,8 +738,8 @@ public class UnitTypes implements ContentList{
|
||||
drag = 0.1f;
|
||||
speed = 0.5f;
|
||||
hitsize = 21f;
|
||||
health = 23000;
|
||||
armor = 14f;
|
||||
health = 22000;
|
||||
armor = 13f;
|
||||
|
||||
rotateSpeed = 1.9f;
|
||||
|
||||
@@ -1121,7 +1256,7 @@ public class UnitTypes implements ContentList{
|
||||
|
||||
lifetime = 70f;
|
||||
|
||||
despawnEffect = Fx.healBomb;
|
||||
despawnEffect = Fx.greenBomb;
|
||||
hitEffect = Fx.massiveExplosion;
|
||||
keepVelocity = false;
|
||||
spin = 2f;
|
||||
@@ -1139,7 +1274,7 @@ public class UnitTypes implements ContentList{
|
||||
|
||||
oct = new UnitType("oct"){{
|
||||
armor = 16f;
|
||||
health = 23000;
|
||||
health = 24000;
|
||||
speed = 0.6f;
|
||||
rotateSpeed = 1f;
|
||||
accel = 0.04f;
|
||||
@@ -1149,10 +1284,11 @@ public class UnitTypes implements ContentList{
|
||||
engineSize = 7.8f;
|
||||
rotateShooting = false;
|
||||
hitsize = 60f;
|
||||
payloadCapacity = (4.5f * 4.5f) * (8 * 8);
|
||||
buildSpeed = 3.5f;
|
||||
payloadCapacity = (5.2f * 5.2f) * (8 * 8);
|
||||
buildSpeed = 4f;
|
||||
drawShields = false;
|
||||
|
||||
abilities.add(new ForceFieldAbility(140f, 4f, 6000f, 60f * 8), new HealFieldAbility(130f, 60f * 2, 140f));
|
||||
abilities.add(new ForceFieldAbility(140f, 4f, 7000f, 60f * 8), new HealFieldAbility(130f, 60f * 2, 140f));
|
||||
}};
|
||||
|
||||
//endregion
|
||||
|
||||
Reference in New Issue
Block a user