Added LiquidExplodeAbility
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package mindustry.entities.abilities;
|
||||
|
||||
import arc.math.*;
|
||||
import arc.util.noise.*;
|
||||
import mindustry.content.*;
|
||||
import mindustry.entities.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class LiquidExplodeAbility extends Ability{
|
||||
public Liquid liquid = Liquids.water;
|
||||
public float amount = 120f;
|
||||
public float radAmountScale = 5f, radScale = 1f;
|
||||
public float noiseMag = 6.5f, noiseScl = 5f;
|
||||
|
||||
@Override
|
||||
public void death(Unit unit){
|
||||
int tx = unit.tileX(), ty = unit.tileY();
|
||||
int rad = (int)(unit.hitSize / tilesize * radScale);
|
||||
float realNoise = unit.hitSize / noiseMag;
|
||||
for(int x = -rad; x <= rad; x++){
|
||||
for(int y = -rad; y <= rad; y++){
|
||||
if(x*x + y*y <= rad*rad - Simplex.noise2d(0, 2, 0.5f, 1f / noiseScl, x + tx, y + ty) * realNoise * realNoise){
|
||||
float scaling = (1f - Mathf.dst(x, y) / rad) * radAmountScale;
|
||||
|
||||
Tile tile = world.tile(tx + x, ty + y);
|
||||
if(tile != null){
|
||||
Puddles.deposit(tile, liquid, amount * scaling);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,6 @@ import static mindustry.entities.Puddles.*;
|
||||
@Component(base = true)
|
||||
abstract class PuddleComp implements Posc, Puddlec, Drawc{
|
||||
private static final Rect rect = new Rect(), rect2 = new Rect();
|
||||
private static int seeds;
|
||||
|
||||
private static Puddle paramPuddle;
|
||||
private static Cons<Unit> unitCons = unit -> {
|
||||
@@ -70,7 +69,9 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{
|
||||
amount -= deposited * targets;
|
||||
}
|
||||
|
||||
amount = Mathf.clamp(amount, 0, maxLiquid);
|
||||
if(liquid.capPuddles){
|
||||
amount = Mathf.clamp(amount, 0, maxLiquid);
|
||||
}
|
||||
|
||||
if(amount <= 0f){
|
||||
remove();
|
||||
@@ -108,6 +109,8 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{
|
||||
}
|
||||
|
||||
updateTime -= Time.delta;
|
||||
|
||||
liquid.update(self());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user