diff --git a/core/src/mindustry/content/StatusEffects.java b/core/src/mindustry/content/StatusEffects.java index fffdee4018..e0de7ede42 100644 --- a/core/src/mindustry/content/StatusEffects.java +++ b/core/src/mindustry/content/StatusEffects.java @@ -12,7 +12,7 @@ import mindustry.graphics.*; import static mindustry.Vars.*; public class StatusEffects implements ContentList{ - public static StatusEffect none, burning, freezing, unmoving, slow, 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, disarmed; @Override public void load(){ @@ -173,5 +173,10 @@ public class StatusEffects implements ContentList{ color = Pal.plastanium; damage = 0.1f; }}; + + disarmed = new StatusEffect("disarmed"){{ + color = Color.valueOf("e9ead3"); + disarm = true; + }}; } } diff --git a/core/src/mindustry/entities/comp/StatusComp.java b/core/src/mindustry/entities/comp/StatusComp.java index 744da3b386..58177c5fdb 100644 --- a/core/src/mindustry/entities/comp/StatusComp.java +++ b/core/src/mindustry/entities/comp/StatusComp.java @@ -20,6 +20,7 @@ abstract class StatusComp implements Posc, Flyingc{ private transient Bits applied = new Bits(content.getBy(ContentType.status).size); @ReadOnly transient float speedMultiplier = 1, damageMultiplier = 1, healthMultiplier = 1, reloadMultiplier = 1; + @ReadOnly transient boolean disarmed = false; @Import UnitType type; @@ -111,6 +112,7 @@ abstract class StatusComp implements Posc, Flyingc{ applied.clear(); speedMultiplier = damageMultiplier = healthMultiplier = reloadMultiplier = 1f; + disarmed = false; if(statuses.isEmpty()) return; @@ -132,6 +134,9 @@ abstract class StatusComp implements Posc, Flyingc{ healthMultiplier *= entry.effect.healthMultiplier; damageMultiplier *= entry.effect.damageMultiplier; reloadMultiplier *= entry.effect.reloadMultiplier; + + disarmed |= entry.effect.disarm; + entry.effect.update(self(), entry.time); } } diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index de80519ba6..47a89e101a 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -32,7 +32,7 @@ import static mindustry.Vars.*; @Component(base = true) abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, Itemsc, Rotc, Unitc, Weaponsc, Drawc, Boundedc, Syncc, Shieldc, Commanderc, Displayable, Senseable, Ranged, Minerc, Builderc{ - @Import boolean hovering, dead; + @Import boolean hovering, dead, disarmed; @Import float x, y, rotation, elevation, maxHealth, drag, armor, hitSize, health, ammo, minFormationSpeed; @Import Team team; @Import int id; @@ -178,7 +178,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Replace public boolean canShoot(){ //cannot shoot while boosting - return !(type.canBoost && isFlying()); + return !disarmed && !(type.canBoost && isFlying()); } @Override diff --git a/core/src/mindustry/entities/comp/WeaponsComp.java b/core/src/mindustry/entities/comp/WeaponsComp.java index 9cc5f8487a..10f2d59b2f 100644 --- a/core/src/mindustry/entities/comp/WeaponsComp.java +++ b/core/src/mindustry/entities/comp/WeaponsComp.java @@ -16,6 +16,7 @@ import static mindustry.Vars.*; @Component abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{ @Import float x, y, rotation, reloadMultiplier; + @Import boolean disarmed; @Import Vec2 vel; @Import UnitType type; @@ -81,7 +82,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{ } boolean canShoot(){ - return true; + return !disarmed; } @Override diff --git a/core/src/mindustry/type/StatusEffect.java b/core/src/mindustry/type/StatusEffect.java index 19e0135960..2355cbbcaa 100644 --- a/core/src/mindustry/type/StatusEffect.java +++ b/core/src/mindustry/type/StatusEffect.java @@ -17,8 +17,10 @@ public class StatusEffect extends MappableContent{ public float healthMultiplier = 1f; /** Unit speed multiplier */ public float speedMultiplier = 1f; - /** Unit speed multiplier */ + /** Unit reload multiplier. */ public float reloadMultiplier = 1f; + /** Unit weapon(s) disabled. */ + public boolean disarm = false; /** Damage per frame. */ public float damage; /** Chance of effect appearing. */ diff --git a/servers_v6.json b/servers_v6.json index e40885d0f1..d7ecfcf0a6 100644 --- a/servers_v6.json +++ b/servers_v6.json @@ -1,4 +1,8 @@ [ + { + "name": "RCR", + "address": ["rcr.fvds.ru"] + }, { "name": "mindustry.pl", "address": ["mindustry.pl:6000", "mindustry.pl:6666", "mindustry.pl"]