diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4d0191c9d7..9cae7ab7dc 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1123,6 +1123,7 @@ rules.title.planet = Planet rules.lighting = Lighting rules.fog = Fog of War rules.fire = Fire +rules.anyenv = rules.explosions = Block/Unit Explosion Damage rules.ambientlight = Ambient Light rules.weather = Weather diff --git a/core/assets/maps/three.msav b/core/assets/maps/three.msav index cd4686c856..a9eea3e5d0 100644 Binary files a/core/assets/maps/three.msav and b/core/assets/maps/three.msav differ diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index dbaab91150..3f2d2e83bb 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -28,6 +28,7 @@ import mindustry.net.*; import mindustry.service.*; import mindustry.ui.dialogs.*; import mindustry.world.*; +import mindustry.world.meta.*; import java.io.*; import java.nio.charset.*; @@ -49,6 +50,8 @@ public class Vars implements Loadable{ public static String steamPlayerName = ""; /** Default accessible content types used for player-selectable icons. */ public static final ContentType[] defaultContentIcons = {ContentType.item, ContentType.liquid, ContentType.block, ContentType.unit}; + /** Default rule environment. */ + public static final int defaultEnv = Env.terrestrial | Env.spores | Env.groundOil | Env.groundWater | Env.oxygen; /** Wall darkness radius. */ public static final int darkRadius = 4; /** Maximum extra padding around deployment schematics. TODO 4, or 5?*/ diff --git a/core/src/mindustry/content/Planets.java b/core/src/mindustry/content/Planets.java index 6e281f177c..7bbaed0b6f 100644 --- a/core/src/mindustry/content/Planets.java +++ b/core/src/mindustry/content/Planets.java @@ -126,8 +126,7 @@ public class Planets{ allowLaunchSchematics = true; allowLaunchLoadout = true; ruleSetter = r -> { - //TODO this planet is crux, need to update all maps. - //r.waveTeam = Team.crux; + r.waveTeam = Team.crux; r.placeRangeCheck = false; r.attributes.clear(); r.showSpawns = false; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index e469e3e557..dd2a344c1e 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -2500,7 +2500,7 @@ public class UnitTypes{ treadPullOffset = 5; speed = 0.7f; rotateSpeed = 2.6f; - health = 2000; + health = 2100; armor = 8f; itemCapacity = 0; treadRects = new Rect[]{new Rect(17, 10, 19, 76)}; @@ -2527,7 +2527,7 @@ public class UnitTypes{ //TODO make this look nicer bullet = new RailBulletType(){{ length = 160f; - damage = 45f; + damage = 48f; hitColor = Color.valueOf("feb380"); hitEffect = endEffect = Fx.hitBulletColor; pierceDamageFactor = 0.8f; @@ -2878,7 +2878,7 @@ public class UnitTypes{ smoothReloadSpeed = 0.15f; recoil = 2f; - bullet = new BasicBulletType(3.5f, 40){{ + bullet = new BasicBulletType(3.5f, 27){{ backColor = trailColor = hitColor = Pal.techBlue; frontColor = Color.white; width = 7.5f; @@ -2894,7 +2894,7 @@ public class UnitTypes{ trailInterval = 6f; splashDamageRadius = 23f; - splashDamage = 36f; + splashDamage = 40f; hitEffect = despawnEffect = new MultiEffect(Fx.hitBulletColor, new WaveEffect(){{ colorFrom = colorTo = Pal.techBlue; diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index b9f5c837df..5d58e63a57 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -5,6 +5,7 @@ import arc.struct.*; import arc.util.*; import arc.util.serialization.*; import arc.util.serialization.Json.*; +import mindustry.*; import mindustry.content.*; import mindustry.game.MapObjectives.*; import mindustry.graphics.g3d.*; @@ -13,7 +14,6 @@ import mindustry.type.*; import mindustry.type.Weather.*; import mindustry.world.*; import mindustry.world.blocks.*; -import mindustry.world.meta.*; /** * Defines current rules on how the game should function. @@ -95,7 +95,7 @@ public class Rules{ /** Environment drag multiplier. */ public float dragMultiplier = 1f; /** Environmental flags that dictate visuals & how blocks function. */ - public int env = Env.terrestrial | Env.spores | Env.groundOil | Env.groundWater | Env.oxygen; + public int env = Vars.defaultEnv; /** Attributes of the environment. */ public Attributes attributes = new Attributes(); /** Sector for saves that have them. */ diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 43fde917ee..489ba0f716 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -9,6 +9,7 @@ import arc.scene.ui.ImageButton.*; import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; +import mindustry.*; import mindustry.content.*; import mindustry.ctype.*; import mindustry.game.*; @@ -228,8 +229,17 @@ public class CustomRulesDialog extends BaseDialog{ //TODO dynamic selection of planets for(Planet planet : new Planet[]{Planets.serpulo, Planets.erekir}){ - t.button(planet.localizedName, style, () -> planet.applyRules(rules)).group(group).checked(rules.env == planet.defaultEnv); + t.button(planet.localizedName, style, () -> { + rules.env = planet.defaultEnv; + rules.hiddenBuildItems.clear(); + rules.hiddenBuildItems.addAll(planet.hiddenItems); + }).group(group).checked(rules.env == planet.defaultEnv); } + + t.button("@rules.anyenv", style, () -> { + rules.env = Vars.defaultEnv; + rules.hiddenBuildItems.clear(); + }).group(group).checked(rules.hiddenBuildItems.size == 0); }).left().fill(false).expand(false, false).row(); title("@rules.title.teams");