Balancing
This commit is contained in:
@@ -44,7 +44,7 @@ public class Bullets implements ContentList{
|
|||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
|
|
||||||
artilleryDense = new ArtilleryBulletType(3f, 0, "shell"){{
|
artilleryDense = new ArtilleryBulletType(3f, 12, "shell"){{
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
knockback = 0.8f;
|
knockback = 0.8f;
|
||||||
lifetime = 50f;
|
lifetime = 50f;
|
||||||
@@ -64,7 +64,7 @@ public class Bullets implements ContentList{
|
|||||||
despawnEffect = Fx.none;
|
despawnEffect = Fx.none;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
artilleryPlastic = new ArtilleryBulletType(3.4f, 0, "shell"){{
|
artilleryPlastic = new ArtilleryBulletType(3.4f, 12, "shell"){{
|
||||||
hitEffect = Fx.plasticExplosion;
|
hitEffect = Fx.plasticExplosion;
|
||||||
knockback = 1f;
|
knockback = 1f;
|
||||||
lifetime = 55f;
|
lifetime = 55f;
|
||||||
@@ -78,7 +78,7 @@ public class Bullets implements ContentList{
|
|||||||
frontColor = Pal.plastaniumFront;
|
frontColor = Pal.plastaniumFront;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
artilleryHoming = new ArtilleryBulletType(3f, 0, "shell"){{
|
artilleryHoming = new ArtilleryBulletType(3f, 12, "shell"){{
|
||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
knockback = 0.8f;
|
knockback = 0.8f;
|
||||||
lifetime = 45f;
|
lifetime = 45f;
|
||||||
@@ -90,7 +90,7 @@ public class Bullets implements ContentList{
|
|||||||
homingRange = 50f;
|
homingRange = 50f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
artilleryIncendiary = new ArtilleryBulletType(3f, 0, "shell"){{
|
artilleryIncendiary = new ArtilleryBulletType(3f, 12, "shell"){{
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
knockback = 0.8f;
|
knockback = 0.8f;
|
||||||
lifetime = 60f;
|
lifetime = 60f;
|
||||||
@@ -104,7 +104,7 @@ public class Bullets implements ContentList{
|
|||||||
trailEffect = Fx.incendTrail;
|
trailEffect = Fx.incendTrail;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
artilleryExplosive = new ArtilleryBulletType(2f, 0, "shell"){{
|
artilleryExplosive = new ArtilleryBulletType(2f, 12, "shell"){{
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
knockback = 0.8f;
|
knockback = 0.8f;
|
||||||
lifetime = 70f;
|
lifetime = 70f;
|
||||||
@@ -115,6 +115,9 @@ public class Bullets implements ContentList{
|
|||||||
splashDamage = 50f;
|
splashDamage = 50f;
|
||||||
backColor = Pal.missileYellowBack;
|
backColor = Pal.missileYellowBack;
|
||||||
frontColor = Pal.missileYellow;
|
frontColor = Pal.missileYellow;
|
||||||
|
|
||||||
|
status = StatusEffects.blasted;
|
||||||
|
statusDuration = 60f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
artilleryUnit = new ArtilleryBulletType(2f, 8, "shell"){{
|
artilleryUnit = new ArtilleryBulletType(2f, 8, "shell"){{
|
||||||
@@ -192,6 +195,9 @@ public class Bullets implements ContentList{
|
|||||||
//default bullet type, no changes
|
//default bullet type, no changes
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
ammoMultiplier = 4f;
|
ammoMultiplier = 4f;
|
||||||
|
|
||||||
|
status = StatusEffects.blasted;
|
||||||
|
statusDuration = 60f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
flakSurge = new FlakBulletType(4f, 7){{
|
flakSurge = new FlakBulletType(4f, 7){{
|
||||||
@@ -212,6 +218,9 @@ public class Bullets implements ContentList{
|
|||||||
lifetime = 150f;
|
lifetime = 150f;
|
||||||
hitEffect = Fx.blastExplosion;
|
hitEffect = Fx.blastExplosion;
|
||||||
despawnEffect = Fx.blastExplosion;
|
despawnEffect = Fx.blastExplosion;
|
||||||
|
|
||||||
|
status = StatusEffects.blasted;
|
||||||
|
statusDuration = 60f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
missileIncendiary = new MissileBulletType(2.9f, 12, "missile"){{
|
missileIncendiary = new MissileBulletType(2.9f, 12, "missile"){{
|
||||||
@@ -361,19 +370,19 @@ public class Bullets implements ContentList{
|
|||||||
despawnEffect = Fx.hitBulletSmall;
|
despawnEffect = Fx.hitBulletSmall;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
standardDenseBig = new BasicBulletType(7f, 42, "bullet"){{
|
standardDenseBig = new BasicBulletType(7f, 44, "bullet"){{
|
||||||
bulletWidth = 15f;
|
bulletWidth = 15f;
|
||||||
bulletHeight = 21f;
|
bulletHeight = 21f;
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
standardThoriumBig = new BasicBulletType(8f, 65, "bullet"){{
|
standardThoriumBig = new BasicBulletType(8f, 67, "bullet"){{
|
||||||
bulletWidth = 16f;
|
bulletWidth = 16f;
|
||||||
bulletHeight = 23f;
|
bulletHeight = 23f;
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
standardIncendiaryBig = new BasicBulletType(7f, 38, "bullet"){{
|
standardIncendiaryBig = new BasicBulletType(7f, 44, "bullet"){{
|
||||||
bulletWidth = 16f;
|
bulletWidth = 16f;
|
||||||
bulletHeight = 21f;
|
bulletHeight = 21f;
|
||||||
frontColor = Pal.lightishOrange;
|
frontColor = Pal.lightishOrange;
|
||||||
@@ -591,8 +600,7 @@ public class Bullets implements ContentList{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(Bulletc b){
|
public void init(Bulletc b){
|
||||||
//TODO owners are never players...
|
Lightning.create(b.team(), Pal.lancerLaser, damage * (b.owner().isLocal() ? state.rules.playerDamageMultiplier : 1f), b.x(), b.y(), b.rotation(), 30);
|
||||||
Lightning.create(b.team(), Pal.lancerLaser, damage * (b.owner() instanceof Playerc ? state.rules.playerDamageMultiplier : 1f), b.x(), b.y(), b.rotation(), 30);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -617,6 +625,9 @@ public class Bullets implements ContentList{
|
|||||||
hitEffect = Fx.flakExplosion;
|
hitEffect = Fx.flakExplosion;
|
||||||
shootEffect = Fx.none;
|
shootEffect = Fx.none;
|
||||||
smokeEffect = Fx.none;
|
smokeEffect = Fx.none;
|
||||||
|
|
||||||
|
status = StatusEffects.blasted;
|
||||||
|
statusDuration = 60f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
bombIncendiary = new BombBulletType(7f, 10f, "shell"){{
|
bombIncendiary = new BombBulletType(7f, 10f, "shell"){{
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import mindustry.type.StatusEffect;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class StatusEffects implements ContentList{
|
public class StatusEffects implements ContentList{
|
||||||
public static StatusEffect none, burning, freezing, wet, melting, tarred, overdrive, shielded, shocked, corroded, boss;
|
public static StatusEffect none, burning, freezing, wet, melting, tarred, overdrive, shielded, shocked, blasted, corroded, boss;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
@@ -17,13 +17,13 @@ public class StatusEffects implements ContentList{
|
|||||||
none = new StatusEffect("none");
|
none = new StatusEffect("none");
|
||||||
|
|
||||||
burning = new StatusEffect("burning"){{
|
burning = new StatusEffect("burning"){{
|
||||||
damage = 0.06f;
|
damage = 0.075f;
|
||||||
effect = Fx.burning;
|
effect = Fx.burning;
|
||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
opposite(wet,freezing);
|
opposite(wet,freezing);
|
||||||
trans(tarred, ((unit, time, newTime, result) -> {
|
trans(tarred, ((unit, time, newTime, result) -> {
|
||||||
unit.damage(1f);
|
unit.damage(8f);
|
||||||
Fx.burning.at(unit.x() + Mathf.range(unit.bounds() / 2f), unit.y() + Mathf.range(unit.bounds() / 2f));
|
Fx.burning.at(unit.x() + Mathf.range(unit.bounds() / 2f), unit.y() + Mathf.range(unit.bounds() / 2f));
|
||||||
result.set(this, Math.min(time + newTime, 300f));
|
result.set(this, Math.min(time + newTime, 300f));
|
||||||
}));
|
}));
|
||||||
@@ -37,6 +37,11 @@ public class StatusEffects implements ContentList{
|
|||||||
|
|
||||||
init(() -> {
|
init(() -> {
|
||||||
opposite(melting, burning);
|
opposite(melting, burning);
|
||||||
|
|
||||||
|
trans(blasted, ((unit, time, newTime, result) -> {
|
||||||
|
unit.damage(18f);
|
||||||
|
result.set(this, time);
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -98,6 +103,8 @@ public class StatusEffects implements ContentList{
|
|||||||
|
|
||||||
shocked = new StatusEffect("shocked");
|
shocked = new StatusEffect("shocked");
|
||||||
|
|
||||||
|
blasted = new StatusEffect("blasted");
|
||||||
|
|
||||||
//no effects, just small amounts of damage.
|
//no effects, just small amounts of damage.
|
||||||
corroded = new StatusEffect("corroded"){{
|
corroded = new StatusEffect("corroded"){{
|
||||||
damage = 0.1f;
|
damage = 0.1f;
|
||||||
|
|||||||
@@ -299,7 +299,6 @@ public class UnitTypes implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
chaosArray = new UnitType("chaos-array", GroundUnit::new){{
|
chaosArray = new UnitType("chaos-array", GroundUnit::new){{
|
||||||
maxVelocity = 0.68f;
|
maxVelocity = 0.68f;
|
||||||
speed = 0.12f;
|
speed = 0.12f;
|
||||||
|
|||||||
@@ -114,8 +114,8 @@ public class Logic implements ApplicationListener{
|
|||||||
|
|
||||||
//disable new waves after the boss spawns
|
//disable new waves after the boss spawns
|
||||||
Events.on(WaveEvent.class, e -> {
|
Events.on(WaveEvent.class, e -> {
|
||||||
//only works for preset sectors so far
|
//only works for non-attack sectors
|
||||||
if(state.isCampaign() && state.boss() != null && state.rules.sector.preset != null){
|
if(state.isCampaign() && state.boss() != null && !state.rules.attackMode){
|
||||||
state.rules.waitEnemies = true;
|
state.rules.waitEnemies = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -188,7 +188,7 @@ public class Logic implements ApplicationListener{
|
|||||||
//check if there is a boss present
|
//check if there is a boss present
|
||||||
Unitc boss = state.boss();
|
Unitc boss = state.boss();
|
||||||
//if this was a boss wave and there is no boss anymore, then it's a victory
|
//if this was a boss wave and there is no boss anymore, then it's a victory
|
||||||
if(state.rules.sector.preset != null && boss == null && state.rules.waves && state.rules.waitEnemies){
|
if(boss == null && state.rules.waves && state.rules.waitEnemies){
|
||||||
//the sector has been conquered - waves get disabled
|
//the sector has been conquered - waves get disabled
|
||||||
state.rules.waves = false;
|
state.rules.waves = false;
|
||||||
|
|
||||||
@@ -253,7 +253,7 @@ public class Logic implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(state.isCampaign()){
|
if(state.isCampaign()){
|
||||||
//TODO implement
|
//TODO implement?
|
||||||
//state.getSector().setLaunched();
|
//state.getSector().setLaunched();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ public class Stats{
|
|||||||
|
|
||||||
//weigh used fractions
|
//weigh used fractions
|
||||||
float frac = 0f;
|
float frac = 0f;
|
||||||
Array<Item> obtainable = Array.with(zone.data.resources).select(i -> i instanceof Item && ((Item)i).type == ItemType.material).as(Item.class);
|
Array<Item> obtainable = Array.select(zone.data.resources, i -> i instanceof Item && ((Item)i).type == ItemType.material).as(Item.class);
|
||||||
for(Item item : obtainable){
|
for(Item item : obtainable){
|
||||||
frac += Mathf.clamp((float)itemsDelivered.get(item, 0) / capacity) / (float)obtainable.size;
|
frac += Mathf.clamp((float)itemsDelivered.get(item, 0) / capacity) / (float)obtainable.size;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ public class TODOPlanetGenerator extends PlanetGenerator{
|
|||||||
|
|
||||||
Block[][] arr =
|
Block[][] arr =
|
||||||
{
|
{
|
||||||
{Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.snow, Blocks.ice},
|
{Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.stone, Blocks.stone},
|
||||||
{Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.snow, Blocks.snow, Blocks.ice},
|
{Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.stone, Blocks.stone, Blocks.stone},
|
||||||
{Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.sand, Blocks.salt, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.snow, Blocks.ice, Blocks.ice},
|
{Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.sand, Blocks.salt, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.stone, Blocks.stone, Blocks.stone},
|
||||||
{Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.salt, Blocks.salt, Blocks.salt, Blocks.sand, Blocks.sand, Blocks.iceSnow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice},
|
{Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.salt, Blocks.salt, Blocks.salt, Blocks.sand, Blocks.stone, Blocks.stone, Blocks.stone, Blocks.snow, Blocks.iceSnow, Blocks.ice},
|
||||||
{Blocks.deepwater, Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.salt, Blocks.sand, Blocks.sand, Blocks.ignarock, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice},
|
{Blocks.deepwater, Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.salt, Blocks.sand, Blocks.sand, Blocks.ignarock, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice},
|
||||||
{Blocks.deepwater, Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.moss, Blocks.iceSnow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.snow, Blocks.ice},
|
{Blocks.deepwater, Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.moss, Blocks.iceSnow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.snow, Blocks.ice},
|
||||||
{Blocks.deepwater, Blocks.sandWater, Blocks.sand, Blocks.sand, Blocks.moss, Blocks.moss, Blocks.moss, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice, Blocks.snow, Blocks.ice},
|
{Blocks.deepwater, Blocks.sandWater, Blocks.sand, Blocks.sand, Blocks.moss, Blocks.moss, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice, Blocks.snow, Blocks.ice},
|
||||||
{Blocks.taintedWater, Blocks.darksandTaintedWater, Blocks.darksand, Blocks.darksand, Blocks.ignarock, Blocks.moss, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.snow, Blocks.ice, Blocks.ice},
|
{Blocks.taintedWater, Blocks.darksandTaintedWater, Blocks.darksand, Blocks.darksand, Blocks.ignarock, Blocks.moss, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.snow, Blocks.ice, Blocks.ice},
|
||||||
{Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.moss, Blocks.sporeMoss, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice},
|
{Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.moss, Blocks.sporeMoss, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice},
|
||||||
{Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.sporeMoss, Blocks.ice, Blocks.ice, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice, Blocks.ice},
|
{Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.sporeMoss, Blocks.ice, Blocks.ice, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice, Blocks.ice},
|
||||||
|
|||||||
@@ -93,8 +93,7 @@ public class SectorPreset extends UnlockableContent{
|
|||||||
public void updateObjectives(Runnable closure){
|
public void updateObjectives(Runnable closure){
|
||||||
Array<SectorObjective> incomplete = content.sectors()
|
Array<SectorObjective> incomplete = content.sectors()
|
||||||
.flatMap(z -> z.requirements)
|
.flatMap(z -> z.requirements)
|
||||||
.select(o -> o.zone() == this && !o.complete())
|
.filter(o -> o.zone() == this && !o.complete()).as();
|
||||||
.as(SectorObjective.class);
|
|
||||||
|
|
||||||
closure.run();
|
closure.run();
|
||||||
for(SectorObjective objective : incomplete){
|
for(SectorObjective objective : incomplete){
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ public class ZoneInfoDialog extends FloatingDialog{
|
|||||||
}
|
}
|
||||||
|
|
||||||
req.row();
|
req.row();
|
||||||
Array<Unlock> blocks = zone.requirements.select(o -> o instanceof Unlock).as(Unlock.class);
|
Array<Unlock> blocks = zone.requirements.select(o -> o instanceof Unlock).as();
|
||||||
|
|
||||||
if(!blocks.isEmpty()){
|
if(!blocks.isEmpty()){
|
||||||
req.table(r -> {
|
req.table(r -> {
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public class AmmoListValue<T extends UnlockableContent> implements StatValue{
|
|||||||
table.table(Tex.underline, bt -> {
|
table.table(Tex.underline, bt -> {
|
||||||
bt.left().defaults().padRight(3).left();
|
bt.left().defaults().padRight(3).left();
|
||||||
|
|
||||||
if(type.damage > 0){
|
if(type.damage > 0 && type.collides){
|
||||||
bt.add(Core.bundle.format("bullet.damage", type.damage));
|
bt.add(Core.bundle.format("bullet.damage", type.damage));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
org.gradle.daemon=true
|
org.gradle.daemon=true
|
||||||
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
||||||
archash=1cfb465e0113f6eeb17a831d561885ca0b34fa68
|
archash=6f712c9333d9415f0184c7d0eb72eec2db095126
|
||||||
|
|||||||
Reference in New Issue
Block a user