Bugfixes / Negative knockback / Unit progress

This commit is contained in:
Anuken
2020-07-11 23:35:58 -04:00
parent 430eef02e2
commit dad5b186db
16 changed files with 39 additions and 12 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

View File

@@ -632,6 +632,15 @@ public class Fx{
}), }),
sapped = new Effect(40f, e -> {
color(Pal.sap);
randLenVectors(e.id, 2, 1f + e.fin() * 2f, (x, y) -> {
Fill.square(e.x + x, e.y + y, e.fslope() * 1.1f, 45f);
});
}),
oily = new Effect(42f, e -> { oily = new Effect(42f, e -> {
color(Liquids.oil.color); color(Liquids.oil.color);

View File

@@ -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, blasted, corroded, boss; public static StatusEffect none, burning, freezing, wet, melting, sapped, tarred, overdrive, shielded, shocked, blasted, corroded, boss;
@Override @Override
public void load(){ public void load(){
@@ -74,6 +74,13 @@ public class StatusEffects implements ContentList{
}); });
}}; }};
sapped = new StatusEffect("sapped"){{
speedMultiplier = 0.7f;
armorMultiplier = 0.8f;
effect = Fx.sapped;
effectChance = 0.1f;
}};
tarred = new StatusEffect("tarred"){{ tarred = new StatusEffect("tarred"){{
speedMultiplier = 0.6f; speedMultiplier = 0.6f;
effect = Fx.oily; effect = Fx.oily;

View File

@@ -71,7 +71,7 @@ public class UnitTypes implements ContentList{
hitsize = 9f; hitsize = 9f;
range = 10f; range = 10f;
health = 500; health = 500;
armor = 1f; armor = 2f;
immunities.add(StatusEffects.burning); immunities.add(StatusEffects.burning);
@@ -91,7 +91,7 @@ public class UnitTypes implements ContentList{
rotateSpeed = 3f; rotateSpeed = 3f;
targetAir = false; targetAir = false;
health = 790; health = 790;
armor = 4f; armor = 5f;
weapons.add(new Weapon("artillery"){{ weapons.add(new Weapon("artillery"){{
y = 1f; y = 1f;
@@ -267,6 +267,7 @@ public class UnitTypes implements ContentList{
legTrns = 0.6f; legTrns = 0.6f;
legMoveSpace = 1.4f; legMoveSpace = 1.4f;
hovering = true; hovering = true;
armor = 3f;
weapons.add(new Weapon("eruption"){{ weapons.add(new Weapon("eruption"){{
shootY = 3f; shootY = 3f;
@@ -290,7 +291,7 @@ public class UnitTypes implements ContentList{
spiroct = new UnitType("spiroct"){{ spiroct = new UnitType("spiroct"){{
speed = 0.4f; speed = 0.4f;
drag = 0.4f; drag = 0.4f;
hitsize = 10f; hitsize = 12f;
rotateSpeed = 3f; rotateSpeed = 3f;
health = 600; health = 600;
immunities = ObjectSet.with(StatusEffects.burning, StatusEffects.melting); immunities = ObjectSet.with(StatusEffects.burning, StatusEffects.melting);
@@ -300,6 +301,7 @@ public class UnitTypes implements ContentList{
legMoveSpace = 1.4f; legMoveSpace = 1.4f;
legBaseOffset = 2f; legBaseOffset = 2f;
hovering = true; hovering = true;
armor = 3f;
weapons.add(new Weapon("spiroct-weapon"){{ weapons.add(new Weapon("spiroct-weapon"){{
shootY = 4f; shootY = 4f;
@@ -314,12 +316,13 @@ public class UnitTypes implements ContentList{
bullet = new SapBulletType(){{ bullet = new SapBulletType(){{
length = 75f; length = 75f;
damage = 14; damage = 15;
shootEffect = Fx.shootSmall; shootEffect = Fx.shootSmall;
hitColor = color = Color.valueOf("bf92f9"); hitColor = color = Color.valueOf("bf92f9");
despawnEffect = Fx.none; despawnEffect = Fx.none;
width = 0.54f; width = 0.54f;
lifetime = 35f; lifetime = 35f;
knockback = -1f;
}}; }};
}}); }});
@@ -331,12 +334,13 @@ public class UnitTypes implements ContentList{
bullet = new SapBulletType(){{ bullet = new SapBulletType(){{
length = 40f; length = 40f;
damage = 9; damage = 10;
shootEffect = Fx.shootSmall; shootEffect = Fx.shootSmall;
hitColor = color = Color.valueOf("bf92f9"); hitColor = color = Color.valueOf("bf92f9");
despawnEffect = Fx.none; despawnEffect = Fx.none;
width = 0.4f; width = 0.4f;
lifetime = 25f; lifetime = 25f;
knockback = -0.5f;
}}; }};
}}); }});
}}; }};

View File

@@ -23,6 +23,8 @@ public class SapBulletType extends BulletType{
hitSize = 0f; hitSize = 0f;
hittable = false; hittable = false;
hitEffect = Fx.hitLiquid; hitEffect = Fx.hitLiquid;
status = StatusEffects.sapped;
statusDuration = 60f * 3f;
} }
@Override @Override

View File

@@ -19,6 +19,7 @@ import static mindustry.Vars.*;
abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Drawc, Shielderc, Ownerc, Velc, Bulletc, Timerc{ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Drawc, Shielderc, Ownerc, Velc, Bulletc, Timerc{
@Import Team team; @Import Team team;
@Import Entityc owner; @Import Entityc owner;
@Import float x,y;
IntSeq collided = new IntSeq(6); IntSeq collided = new IntSeq(6);
Object data; Object data;
@@ -91,7 +92,7 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw
if(other instanceof Unit){ if(other instanceof Unit){
Unit unit = (Unit)other; Unit unit = (Unit)other;
unit.vel.add(Tmp.v3.set(unit).sub(x, y).setLength(type.knockback / unit.mass())); unit.impulse(Tmp.v3.set(unit).sub(this.x, this.y).nor().scl(type.knockback * 80f));
unit.apply(type.status, type.statusDuration); unit.apply(type.status, type.statusDuration);
} }

View File

@@ -68,7 +68,7 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{
//effects-only code //effects-only code
if(amount >= maxLiquid / 2f && updateTime <= 0f){ if(amount >= maxLiquid / 2f && updateTime <= 0f){
Units.nearby(rect.setSize(Mathf.clamp(amount / (maxLiquid / 1.5f)) * 10f).setCenter(x, y), unit -> { Units.nearby(rect.setSize(Mathf.clamp(amount / (maxLiquid / 1.5f)) * 10f).setCenter(x, y), unit -> {
if(unit.isGrounded()){ if(unit.isGrounded() && !unit.hovering){
unit.hitbox(rect2); unit.hitbox(rect2);
if(rect.overlaps(rect2)){ if(rect.overlaps(rect2)){
unit.apply(liquid.effect, 60 * 2); unit.apply(liquid.effect, 60 * 2);
@@ -80,11 +80,11 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{
} }
}); });
if(liquid.temperature > 0.7f && (tile.build != null) && Mathf.chance(0.3 * Time.delta())){ if(liquid.temperature > 0.7f && (tile.build != null) && Mathf.chance(0.5)){
Fires.create(tile); Fires.create(tile);
} }
updateTime = 20f; updateTime = 40f;
} }
updateTime -= Time.delta(); updateTime -= Time.delta();

View File

@@ -8,6 +8,8 @@ public class Pal{
items = Color.valueOf("2ea756"), items = Color.valueOf("2ea756"),
command = Color.valueOf("eab678"), command = Color.valueOf("eab678"),
sap = Color.valueOf("665c9f"),
shield = Color.valueOf("ffd37f").a(0.7f), shield = Color.valueOf("ffd37f").a(0.7f),
shieldIn = Color.black.cpy().a(0f), shieldIn = Color.black.cpy().a(0f),

View File

@@ -19,6 +19,8 @@ public class StatusEffect extends MappableContent{
public float speedMultiplier = 1f; public float speedMultiplier = 1f;
/** Damage per frame. */ /** Damage per frame. */
public float damage; public float damage;
/** Chance of effect appearing. */
public float effectChance = 0.15f;
/** If true, the effect never disappears. */ /** If true, the effect never disappears. */
public boolean permanent; public boolean permanent;
/** Tint color of effect. */ /** Tint color of effect. */
@@ -51,8 +53,8 @@ public class StatusEffect extends MappableContent{
unit.heal(damage * Time.delta()); unit.heal(damage * Time.delta());
} }
if(effect != Fx.none && Mathf.chanceDelta(0.15f)){ if(effect != Fx.none && Mathf.chanceDelta(effectChance)){
effect.at(unit.x() + Mathf.range(unit.bounds() / 2f), unit.y() + Mathf.range(unit.bounds() / 2f)); effect.at(unit.x + Mathf.range(unit.bounds() / 2f), unit.y + Mathf.range(unit.bounds() / 2f));
} }
} }