Merge branch 'master' of https://github.com/Anuken/Mindustry into 7.0-features

 Conflicts:
	core/assets/icons/icons.properties
	core/assets/logicids.dat
	core/src/mindustry/ui/dialogs/PlanetDialog.java
	core/src/mindustry/world/blocks/distribution/ItemBridge.java
	core/src/mindustry/world/blocks/liquid/LiquidExtendingBridge.java
	core/src/mindustry/world/blocks/storage/StorageBlock.java
	gradle.properties
This commit is contained in:
Anuken
2021-08-10 15:15:07 -04:00
196 changed files with 2485 additions and 1664 deletions
+32 -29
View File
@@ -93,7 +93,7 @@ public class Blocks implements ContentList{
commandCenter,
groundFactory, airFactory, navalFactory,
additiveReconstructor, multiplicativeReconstructor, exponentialReconstructor, tetrativeReconstructor,
repairPoint, repairTurret, resupplyPoint,
repairPoint, repairTurret,
//payloads
payloadConveyor, payloadRouter, payloadPropulsionTower, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader,
@@ -131,7 +131,7 @@ public class Blocks implements ContentList{
new ConstructBlock(i);
}
deepwater = new Floor("deepwater"){{
deepwater = new Floor("deep-water"){{
speedMultiplier = 0.2f;
variants = 0;
liquidDrop = Liquids.water;
@@ -144,7 +144,7 @@ public class Blocks implements ContentList{
albedo = 0.5f;
}};
water = new Floor("water"){{
water = new Floor("shallow-water"){{
speedMultiplier = 0.5f;
variants = 0;
status = StatusEffects.wet;
@@ -198,7 +198,7 @@ public class Blocks implements ContentList{
cacheLayer = CacheLayer.tar;
}};
slag = new Floor("slag"){{
slag = new Floor("molten-slag"){{
drownTime = 150f;
status = StatusEffects.melting;
statusDuration = 240f;
@@ -223,7 +223,7 @@ public class Blocks implements ContentList{
stone = new Floor("stone");
craters = new Floor("craters"){{
craters = new Floor("crater-stone"){{
variants = 3;
blendGroup = stone;
}};
@@ -806,8 +806,8 @@ public class Blocks implements ContentList{
craftTime = 35f;
size = 2;
consumes.power(1f);
consumes.liquid(Liquids.slag, 0.07f);
consumes.power(1.1f);
consumes.liquid(Liquids.slag, 4f / 60f);
}};
disassembler = new Separator("disassembler"){{
@@ -851,7 +851,9 @@ public class Blocks implements ContentList{
craftTime = 40f;
updateEffect = Fx.pulverizeSmall;
hasItems = hasPower = true;
drawer = new DrawRotator();
drawer = new DrawRotator(){{
drawSpinSprite = true;
}};
ambientSound = Sounds.grinding;
ambientSoundVolume = 0.025f;
@@ -1142,15 +1144,20 @@ public class Blocks implements ContentList{
itemBridge = new BufferedItemBridge("bridge-conveyor"){{
requirements(Category.distribution, with(Items.lead, 6, Items.copper, 6));
fadeIn = moveArrows = false;
range = 4;
speed = 74f;
arrowSpacing = 6f;
bufferCapacity = 14;
}};
phaseConveyor = new ItemBridge("phase-conveyor"){{
requirements(Category.distribution, with(Items.phaseFabric, 5, Items.silicon, 7, Items.lead, 10, Items.graphite, 10));
range = 12;
arrowPeriod = 0.9f;
arrowTimeScl = 2.75f;
hasPower = true;
pulse = true;
consumes.power(0.30f);
}};
@@ -1217,7 +1224,7 @@ public class Blocks implements ContentList{
mechanicalPump = new Pump("mechanical-pump"){{
requirements(Category.liquid, with(Items.copper, 15, Items.metaglass, 10));
pumpAmount = 0.11f;
pumpAmount = 7f / 60f;
}};
rotaryPump = new Pump("rotary-pump"){{
@@ -1273,8 +1280,10 @@ public class Blocks implements ContentList{
requirements(Category.liquid, with(Items.graphite, 2, Items.metaglass, 2));
}};
bridgeConduit = new LiquidExtendingBridge("bridge-conduit"){{
bridgeConduit = new LiquidBridge("bridge-conduit"){{
requirements(Category.liquid, with(Items.graphite, 4, Items.metaglass, 8));
fadeIn = moveArrows = false;
arrowSpacing = 6f;
range = 4;
hasPower = false;
}};
@@ -1282,8 +1291,11 @@ public class Blocks implements ContentList{
phaseConduit = new LiquidBridge("phase-conduit"){{
requirements(Category.liquid, with(Items.phaseFabric, 5, Items.silicon, 7, Items.metaglass, 20, Items.titanium, 10));
range = 12;
arrowPeriod = 0.9f;
arrowTimeScl = 2.75f;
hasPower = true;
canOverdrive = false;
pulse = true;
consumes.power(0.30f);
}};
@@ -1463,6 +1475,7 @@ public class Blocks implements ContentList{
drillEffect = Fx.mineHuge;
rotateSpeed = 6f;
warmupSpeed = 0.01f;
itemCapacity = 20;
//more than the laser drill
liquidBoostIntensity = 1.8f;
@@ -1502,14 +1515,13 @@ public class Blocks implements ContentList{
maxBoost = 2f;
consumes.power(80f / 60f);
consumes.liquid(Liquids.water, 20f / 60f);
consumes.liquid(Liquids.water, 18f / 60f);
}};
oilExtractor = new Fracker("oil-extractor"){{
requirements(Category.production, with(Items.copper, 150, Items.graphite, 175, Items.lead, 115, Items.thorium, 115, Items.silicon, 75));
result = Liquids.oil;
updateEffect = Fx.pulverize;
liquidCapacity = 50f;
updateEffectChance = 0.05f;
pumpAmount = 0.25f;
size = 3;
@@ -1563,6 +1575,7 @@ public class Blocks implements ContentList{
health = 3500;
itemCapacity = 9000;
size = 4;
thrusterLength = 34/4f;
unitCapModifier = 16;
researchCostMultiplier = 0.07f;
@@ -1575,6 +1588,7 @@ public class Blocks implements ContentList{
health = 6000;
itemCapacity = 13000;
size = 5;
thrusterLength = 40/4f;
unitCapModifier = 24;
researchCostMultiplier = 0.11f;
@@ -1584,14 +1598,14 @@ public class Blocks implements ContentList{
requirements(Category.effect, with(Items.titanium, 250, Items.thorium, 125));
size = 3;
itemCapacity = 1000;
health = size * size * 60;
health = size * size * 55;
}};
container = new StorageBlock("container"){{
requirements(Category.effect, with(Items.titanium, 100));
size = 2;
itemCapacity = 300;
health = size * size * 60;
health = size * size * 55;
}};
unloader = new Unloader("unloader"){{
@@ -1788,7 +1802,7 @@ public class Blocks implements ContentList{
shots = 4;
burstSpacing = 5;
inaccuracy = 10f;
range = 215f;
range = 235f;
xRand = 6f;
size = 2;
health = 300 * size * size;
@@ -2029,13 +2043,13 @@ public class Blocks implements ContentList{
range = 195f;
reloadTime = 90f;
firingMoveFract = 0.5f;
shootDuration = 220f;
shootDuration = 230f;
powerUse = 17f;
shootSound = Sounds.laserbig;
loopSound = Sounds.beam;
loopSoundVolume = 2f;
shootType = new ContinuousLaserBulletType(70){{
shootType = new ContinuousLaserBulletType(75){{
length = 200f;
hitEffect = Fx.hitMeltdown;
hitColor = Pal.meltdownHit;
@@ -2200,17 +2214,6 @@ public class Blocks implements ContentList{
acceptCoolant = true;
}};
resupplyPoint = new ResupplyPoint("resupply-point"){{
requirements(Category.units, BuildVisibility.ammoOnly, with(Items.lead, 20, Items.copper, 15, Items.silicon, 15));
size = 2;
range = 80f;
itemCapacity = 20;
ammoAmount = 5;
consumes.item(Items.copper, 1);
}};
//endregion
//region payloads
@@ -2229,7 +2232,7 @@ public class Blocks implements ContentList{
size = 5;
reloadTime = 140f;
chargeTime = 100f;
range = 500f;
range = 600f;
maxPayloadSize = 3.5f;
consumes.power(6f);
}};
+15 -57
View File
@@ -1,17 +1,9 @@
package mindustry.content;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.util.*;
import mindustry.ctype.*;
import mindustry.entities.*;
import mindustry.entities.bullet.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.world.*;
import static mindustry.Vars.*;
public class Bullets implements ContentList{
public static BulletType
@@ -113,6 +105,7 @@ public class Bullets implements ContentList{
splashDamageRadius = 25f * 0.75f;
splashDamage = 35f;
status = StatusEffects.burning;
statusDuration = 60f * 12f;
frontColor = Pal.lightishOrange;
backColor = Pal.lightOrange;
makeFire = true;
@@ -132,7 +125,6 @@ public class Bullets implements ContentList{
frontColor = Pal.missileYellow;
status = StatusEffects.blasted;
statusDuration = 60f;
}};
flakGlassFrag = new BasicBulletType(3f, 5, "bullet"){{
@@ -177,7 +169,7 @@ public class Bullets implements ContentList{
width = 6f;
height = 8f;
hitEffect = Fx.flakExplosion;
splashDamage = 22f * 1.5f;
splashDamage = 25f * 1.5f;
splashDamageRadius = 20f;
fragBullet = flakGlassFrag;
fragBullets = 6;
@@ -342,11 +334,14 @@ public class Bullets implements ContentList{
lifetime = 60f;
}};
standardDenseBig = new BasicBulletType(7f, 55, "bullet"){{
hitSize = 5;
standardDenseBig = new BasicBulletType(7.5f, 50, "bullet"){{
hitSize = 4.8f;
width = 15f;
height = 21f;
shootEffect = Fx.shootBig;
ammoMultiplier = 4;
reloadMultiplier = 1.7f;
knockback = 0.3f;
}};
standardThoriumBig = new BasicBulletType(8f, 80, "bullet"){{
@@ -359,7 +354,7 @@ public class Bullets implements ContentList{
knockback = 0.7f;
}};
standardIncendiaryBig = new BasicBulletType(7f, 60, "bullet"){{
standardIncendiaryBig = new BasicBulletType(7f, 70, "bullet"){{
hitSize = 5;
width = 16f;
height = 21f;
@@ -370,50 +365,13 @@ public class Bullets implements ContentList{
makeFire = true;
pierceCap = 2;
pierceBuilding = true;
knockback = 0.7f;
knockback = 0.7f;
ammoMultiplier = 3;
}};
fireball = new BulletType(1f, 4){
{
pierce = true;
collidesTiles = false;
collides = false;
drag = 0.03f;
hitEffect = despawnEffect = Fx.none;
}
fireball = new FireBulletType(1f, 4);
@Override
public void init(Bullet b){
b.vel.setLength(0.6f + Mathf.random(2f));
}
@Override
public void draw(Bullet b){
Draw.color(Pal.lightFlame, Pal.darkFlame, Color.gray, b.fin());
Fill.circle(b.x, b.y, 3f * b.fout());
Draw.reset();
}
@Override
public void update(Bullet b){
if(Mathf.chance(0.04 * Time.delta)){
Tile tile = world.tileWorld(b.x, b.y);
if(tile != null){
Fires.create(tile);
}
}
if(Mathf.chance(0.1 * Time.delta)){
Fx.fireballsmoke.at(b.x, b.y);
}
if(Mathf.chance(0.1 * Time.delta)){
Fx.ballfire.at(b.x, b.y);
}
}
};
basicFlame = new BulletType(3.35f, 16f){{
basicFlame = new BulletType(3.35f, 17f){{
ammoMultiplier = 3f;
hitSize = 7f;
lifetime = 18f;
@@ -428,13 +386,13 @@ public class Bullets implements ContentList{
hittable = false;
}};
pyraFlame = new BulletType(3.35f, 25f){{
ammoMultiplier = 4f;
pyraFlame = new BulletType(4f, 50f){{
ammoMultiplier = 6f;
hitSize = 7f;
lifetime = 18f;
pierce = true;
collidesAir = false;
statusDuration = 60f * 6;
statusDuration = 60f * 10;
shootEffect = Fx.shootPyraFlame;
hitEffect = Fx.hitFlameSmall;
despawnEffect = Fx.none;
+20 -6
View File
@@ -130,7 +130,7 @@ public class Fx{
Fill.circle(x, y, e.fslope() * 1.5f * size);
}),
pointBeam = new Effect(25f, e -> {
pointBeam = new Effect(25f, 300f, e -> {
if(!(e.data instanceof Position)) return;
Position pos = e.data();
@@ -184,6 +184,16 @@ public class Fx{
Lines.square(e.x, e.y, tilesize / 2f * e.rotation + e.fin() * 3f);
}),
coreLaunchConstruct = new Effect(35, e -> {
color(Pal.accent);
stroke(4f - e.fin() * 3f);
Lines.square(e.x, e.y, tilesize / 2f * e.rotation * 1.2f + e.fin() * 5f);
randLenVectors(e.id, 5 + (int)(e.rotation * 5), e.rotation * 3f + (tilesize * e.rotation) * e.finpow() * 1.5f, (x, y) -> {
Lines.lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), 1f + e.fout() * (4f + e.rotation));
});
}),
tapBlock = new Effect(12, e -> {
color(Pal.accent);
stroke(3f - e.fin() * 2f);
@@ -1628,7 +1638,7 @@ public class Fx{
coalSmeltsmoke = new Effect(40f, e -> {
randLenVectors(e.id, 0.2f + e.fin(), 4, 6.3f, (x, y, fin, out) -> {
color(Color.darkGray, Pal.coalBlack, e.finpowdown());
Fill.circle(e.x + x, e.y + y, out * 2f + 0.25f);
Fill.circle(e.x + x, e.y + y, out * 2f + 0.35f);
});
}),
@@ -1869,6 +1879,13 @@ public class Fx{
Lines.poly(e.x, e.y, 6, e.rotation + e.fin());
}),
coreLandDust = new Effect(100f, e -> {
color(e.color, e.fout(0.1f));
rand.setSeed(e.id);
Tmp.v1.trns(e.rotation, e.finpow() * 90f * rand.random(0.2f, 1f));
Fill.circle(e.x + Tmp.v1.x, e.y + Tmp.v1.y, 8f * rand.random(0.6f, 1f) * e.fout(0.2f));
}).layer(Layer.block + 1f),
unitShieldBreak = new Effect(35, e -> {
if(!(e.data instanceof Unitc)) return;
@@ -1962,8 +1979,5 @@ public class Fx{
}
Lines.endLine();
}).followParent(false),
coreLand = new Effect(120f, e -> {
});
}).followParent(false);
}
+2
View File
@@ -7,6 +7,7 @@ import arc.math.geom.*;
import arc.struct.*;
import arc.util.*;
import mindustry.ctype.*;
import mindustry.graphics.*;
import mindustry.graphics.g3d.*;
import mindustry.graphics.g3d.PlanetGrid.*;
import mindustry.maps.planet.*;
@@ -85,6 +86,7 @@ public class Planets implements ContentList{
atmosphereRadOut = 0.3f;
startSector = 15;
alwaysUnlocked = true;
landCloudColor = Pal.spore.cpy().a(0.5f);
}};
makeAsteroid("verlius", sun, Blocks.stoneWall, Blocks.iceWall, 0.5f, 12, 2f, gen -> {
@@ -69,12 +69,12 @@ public class StatusEffects implements ContentList{
transitionDamage = 14;
init(() -> {
affinity(shocked, ((unit, result, time) -> {
affinity(shocked, (unit, result, time) -> {
unit.damagePierce(transitionDamage);
if(unit.team == state.rules.waveTeam){
Events.fire(Trigger.shock);
}
}));
});
opposite(burning, melting);
});
}};
@@ -96,11 +96,11 @@ public class StatusEffects implements ContentList{
init(() -> {
opposite(wet, freezing);
affinity(tarred, ((unit, result, time) -> {
affinity(tarred, (unit, result, time) -> {
unit.damagePierce(8f);
Fx.burning.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
result.set(melting, Math.min(time + result.time, 200f));
}));
});
});
}};
@@ -133,8 +133,8 @@ public class StatusEffects implements ContentList{
effect = Fx.oily;
init(() -> {
affinity(melting, ((unit, result, time) -> result.set(melting, result.time + time)));
affinity(burning, ((unit, result, time) -> result.set(burning, result.time + time)));
affinity(melting, (unit, result, time) -> result.set(melting, result.time + time));
affinity(burning, (unit, result, time) -> result.set(burning, result.time + time));
});
}};
+57 -30
View File
@@ -14,6 +14,7 @@ import mindustry.entities.effect.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.type.*;
import mindustry.type.ammo.*;
import mindustry.type.weapons.*;
import mindustry.world.meta.*;
@@ -52,8 +53,8 @@ public class UnitTypes implements ContentList{
//air + payload, legacy
public static @EntityDef(value = {Unitc.class, Payloadc.class}, legacy = true) UnitType quad;
//air + payload + ammo distribution
public static @EntityDef({Unitc.class, Payloadc.class, AmmoDistributec.class}) UnitType oct;
//air + payload + legacy (different branch)
public static @EntityDef(value = {Unitc.class, Payloadc.class}, legacy = true) UnitType oct;
//air, legacy
public static @EntityDef(value = {Unitc.class}, legacy = true) UnitType alpha, beta, gamma;
@@ -89,6 +90,7 @@ public class UnitTypes implements ContentList{
hitSize = 10f;
health = 540;
armor = 4f;
ammoType = new ItemAmmoType(Items.coal);
immunities.add(StatusEffects.burning);
@@ -99,10 +101,10 @@ public class UnitTypes implements ContentList{
reload = 11f;
recoil = 1f;
ejectEffect = Fx.none;
bullet = new BulletType(4.1f, 32f){{
bullet = new BulletType(4.1f, 35f){{
ammoMultiplier = 3f;
hitSize = 7f;
lifetime = 12f;
lifetime = 13f;
pierce = true;
statusDuration = 60f * 4;
shootEffect = Fx.shootSmallFlame;
@@ -123,6 +125,7 @@ public class UnitTypes implements ContentList{
health = 900;
armor = 9f;
mechFrontSway = 0.55f;
ammoType = new ItemAmmoType(Items.graphite);
weapons.add(new Weapon("artillery"){{
top = false;
@@ -156,6 +159,7 @@ public class UnitTypes implements ContentList{
armor = 10f;
canDrown = false;
mechFrontSway = 1f;
ammoType = new ItemAmmoType(Items.thorium);
mechStepParticles = true;
mechStepShake = 0.15f;
@@ -220,6 +224,7 @@ public class UnitTypes implements ContentList{
canDrown = false;
mechFrontSway = 1.9f;
mechSideSway = 0.6f;
ammoType = new ItemAmmoType(Items.thorium);
weapons.add(
new Weapon("reign-weapon"){{
@@ -282,7 +287,7 @@ public class UnitTypes implements ContentList{
commandLimit = 8;
abilities.add(new RepairFieldAbility(10f, 60f * 4, 60f));
ammoType = AmmoTypes.power;
ammoType = new PowerAmmoType(1000);
weapons.add(new Weapon("heal-weapon"){{
top = false;
@@ -319,7 +324,7 @@ public class UnitTypes implements ContentList{
commandLimit = 9;
abilities.add(new ShieldRegenFieldAbility(20f, 40f, 60f * 5, 60f));
ammoType = AmmoTypes.power;
ammoType = new PowerAmmoType(1300);
weapons.add(new Weapon("heal-shotgun-weapon"){{
top = false;
@@ -339,7 +344,7 @@ public class UnitTypes implements ContentList{
bullet = new LightningBulletType(){{
lightningColor = hitColor = Pal.heal;
damage = 12f;
damage = 14f;
lightningLength = 7;
lightningLengthRand = 7;
shootEffect = Fx.shootHeal;
@@ -372,7 +377,7 @@ public class UnitTypes implements ContentList{
commandLimit = 10;
mechFrontSway = 0.55f;
ammoType = AmmoTypes.power;
ammoType = new PowerAmmoType(1500);
speed = 0.4f;
hitSize = 13f;
@@ -408,23 +413,23 @@ public class UnitTypes implements ContentList{
vela = new UnitType("vela"){{
hitSize = 24f;
rotateSpeed = 1.6f;
rotateSpeed = 1.7f;
canDrown = false;
mechFrontSway = 1f;
buildSpeed = 3f;
mechStepParticles = true;
mechStepShake = 0.15f;
ammoType = AmmoTypes.powerHigh;
ammoType = new PowerAmmoType(2500);
speed = 0.39f;
speed = 0.44f;
boostMultiplier = 2.2f;
engineOffset = 12f;
engineSize = 6f;
lowAltitude = true;
riseSpeed = 0.02f;
health = 7500f;
health = 8200f;
armor = 9f;
canBoost = true;
landShake = 4f;
@@ -449,8 +454,8 @@ public class UnitTypes implements ContentList{
cooldownTime = 200f;
bullet = new ContinuousLaserBulletType(){{
damage = 30f;
length = 175f;
damage = 35f;
length = 180f;
hitEffect = Fx.hitMeltHeal;
drawSize = 420f;
lifetime = 160f;
@@ -493,7 +498,7 @@ public class UnitTypes implements ContentList{
hovering = true;
visualElevation = 0.2f;
allowLegStep = true;
ammoType = AmmoTypes.powerHigh;
ammoType = new PowerAmmoType(4000);
groundLayer = Layer.legUnit;
speed = 0.3f;
@@ -558,6 +563,7 @@ public class UnitTypes implements ContentList{
health = 200;
mechSideSway = 0.25f;
range = 40f;
ammoType = new ItemAmmoType(Items.coal);
weapons.add(new Weapon(){{
reload = 24f;
@@ -595,6 +601,7 @@ public class UnitTypes implements ContentList{
legMoveSpace = 1.4f;
hovering = true;
armor = 3f;
ammoType = new ItemAmmoType(Items.coal);
allowLegStep = true;
visualElevation = 0.2f;
@@ -634,7 +641,7 @@ public class UnitTypes implements ContentList{
legBaseOffset = 2f;
hovering = true;
armor = 5f;
ammoType = AmmoTypes.power;
ammoType = new PowerAmmoType(1000);
buildSpeed = 0.75f;
@@ -706,7 +713,7 @@ public class UnitTypes implements ContentList{
legLengthScl = 0.96f;
rippleScale = 2f;
legSpeed = 0.2f;
ammoType = AmmoTypes.power;
ammoType = new PowerAmmoType(2000);
buildSpeed = 1f;
legSplashDamage = 32;
@@ -810,7 +817,7 @@ public class UnitTypes implements ContentList{
legLengthScl = 0.93f;
rippleScale = 3f;
legSpeed = 0.19f;
ammoType = AmmoTypes.powerHigh;
ammoType = new ItemAmmoType(Items.graphite, 8);
buildSpeed = 1f;
legSplashDamage = 80;
@@ -928,6 +935,9 @@ public class UnitTypes implements ContentList{
engineOffset = 5.5f;
range = 140f;
targetAir = false;
//as default AI, flares are not very useful in core rushes, they attack nothing in the way
playerTargetFlags = new BlockFlag[]{null};
targetFlags = new BlockFlag[]{BlockFlag.generator, null};
commandLimit = 4;
circleTarget = true;
hitSize = 7;
@@ -961,9 +971,12 @@ public class UnitTypes implements ContentList{
range = 140f;
faceTarget = false;
armor = 3f;
targetFlag = BlockFlag.factory;
//do not rush core, attack closest
playerTargetFlags = new BlockFlag[]{null};
targetFlags = new BlockFlag[]{BlockFlag.factory, null};
commandLimit = 5;
circleTarget = true;
ammoType = new ItemAmmoType(Items.graphite);
weapons.add(new Weapon(){{
minShootVelocity = 0.75f;
@@ -997,10 +1010,13 @@ public class UnitTypes implements ContentList{
range = 140f;
hitSize = 20f;
lowAltitude = true;
forceMultiTarget = true;
armor = 5f;
targetFlags = new BlockFlag[]{BlockFlag.launchPad, BlockFlag.storage, BlockFlag.battery, null};
engineOffset = 12f;
engineSize = 3f;
ammoType = new ItemAmmoType(Items.graphite);
weapons.add(new Weapon("zenith-missiles"){{
reload = 40f;
@@ -1045,7 +1061,8 @@ public class UnitTypes implements ContentList{
engineOffset = 21;
engineSize = 5.3f;
hitSize = 46f;
targetFlag = BlockFlag.battery;
targetFlags = new BlockFlag[]{BlockFlag.generator, BlockFlag.core, null};
ammoType = new ItemAmmoType(Items.thorium);
BulletType missiles = new MissileBulletType(2.7f, 14){{
width = 8f;
@@ -1120,7 +1137,8 @@ public class UnitTypes implements ContentList{
hitSize = 58f;
destructibleWreck = false;
armor = 13f;
targetFlag = BlockFlag.reactor;
targetFlags = new BlockFlag[]{BlockFlag.reactor, BlockFlag.core, null};
ammoType = new ItemAmmoType(Items.thorium);
BulletType fragBullet = new FlakBulletType(4f, 5){{
shootEffect = Fx.shootBig;
@@ -1200,7 +1218,7 @@ public class UnitTypes implements ContentList{
range = 50f;
isCounted = false;
ammoType = AmmoTypes.powerLow;
ammoType = new PowerAmmoType(500);
mineTier = 1;
mineSpeed = 2.5f;
@@ -1221,7 +1239,7 @@ public class UnitTypes implements ContentList{
hitSize = 9f;
lowAltitude = true;
ammoType = AmmoTypes.power;
ammoType = new PowerAmmoType(900);
mineTier = 2;
mineSpeed = 3.5f;
@@ -1281,7 +1299,7 @@ public class UnitTypes implements ContentList{
buildSpeed = 2.6f;
isCounted = false;
ammoType = AmmoTypes.power;
ammoType = new PowerAmmoType(1100);
weapons.add(
new Weapon("heal-weapon-mount"){{
@@ -1317,7 +1335,7 @@ public class UnitTypes implements ContentList{
quad = new UnitType("quad"){{
armor = 8f;
health = 6000;
speed = 1.4f;
speed = 1.3f;
rotateSpeed = 2f;
accel = 0.05f;
drag = 0.017f;
@@ -1333,9 +1351,9 @@ public class UnitTypes implements ContentList{
buildBeamOffset = 23;
range = 140f;
targetAir = false;
targetFlag = BlockFlag.battery;
targetFlags = new BlockFlag[]{BlockFlag.battery, BlockFlag.factory, null};
ammoType = AmmoTypes.powerHigh;
ammoType = new PowerAmmoType(3000);
weapons.add(
new Weapon(){{
@@ -1405,9 +1423,7 @@ public class UnitTypes implements ContentList{
commandLimit = 6;
lowAltitude = true;
buildBeamOffset = 43;
ammoCapacity = 1300;
ammoResupplyAmount = 20;
ammoCapacity = 1;
abilities.add(new ForceFieldAbility(140f, 4f, 7000f, 60f * 8), new RepairFieldAbility(130f, 60f * 2, 140f));
}};
@@ -1475,6 +1491,7 @@ public class UnitTypes implements ContentList{
accel = 0.3f;
rotateSpeed = 2.6f;
rotateShooting = false;
ammoType = new ItemAmmoType(Items.graphite);
trailLength = 20;
trailX = 5.5f;
@@ -1518,6 +1535,7 @@ public class UnitTypes implements ContentList{
hitSize = 20f;
armor = 7f;
rotateShooting = false;
ammoType = new ItemAmmoType(Items.graphite);
trailLength = 22;
trailX = 7f;
@@ -1581,6 +1599,7 @@ public class UnitTypes implements ContentList{
inaccuracy = 5f;
velocityRnd = 0.1f;
shootSound = Sounds.missile;
ammoType = new ItemAmmoType(Items.thorium);
ejectEffect = Fx.none;
bullet = new MissileBulletType(2.7f, 12){{
@@ -1614,6 +1633,7 @@ public class UnitTypes implements ContentList{
accel = 0.2f;
rotateSpeed = 1.3f;
rotateShooting = false;
ammoType = new ItemAmmoType(Items.thorium);
trailLength = 50;
trailX = 18f;
@@ -1699,6 +1719,7 @@ public class UnitTypes implements ContentList{
accel = 0.19f;
rotateSpeed = 0.9f;
rotateShooting = false;
ammoType = new PowerAmmoType(4000);
float spawnTime = 60f * 15f;
@@ -1756,6 +1777,7 @@ public class UnitTypes implements ContentList{
trailScl = 1.3f;
rotateShooting = false;
range = 100f;
ammoType = new PowerAmmoType(900);
armor = 3f;
@@ -1833,6 +1855,7 @@ public class UnitTypes implements ContentList{
trailX = 5.5f;
trailY = -4f;
trailScl = 1.9f;
ammoType = new ItemAmmoType(Items.coal);
buildSpeed = 2f;
@@ -1901,6 +1924,7 @@ public class UnitTypes implements ContentList{
hitSize = 20f;
armor = 6f;
rotateShooting = false;
ammoType = new ItemAmmoType(Items.graphite);
trailLength = 23;
trailX = 9f;
@@ -2036,6 +2060,8 @@ public class UnitTypes implements ContentList{
accel = 0.2f;
rotateSpeed = 1.4f;
rotateShooting = false;
ammoType = new PowerAmmoType(3500);
ammoCapacity = 40;
//clip size is massive due to energy field
clipSize = 250f;
@@ -2079,6 +2105,7 @@ public class UnitTypes implements ContentList{
accel = 0.2f;
rotateSpeed = 1.1f;
rotateShooting = false;
ammoType = new PowerAmmoType(4500);
trailLength = 70;
trailX = 23f;