Merge pull request #2970 from genNAowl/ground-support-heal
Allow Ground Support Units to Heal Blocks
This commit is contained in:
@@ -331,6 +331,17 @@ public class UnitTypes implements ContentList{
|
||||
lightningLength = 7;
|
||||
lightningLengthRand = 7;
|
||||
shootEffect = Fx.shootHeal;
|
||||
|
||||
lightningHitter = new BulletType(0.0001f, 0f){{
|
||||
lifetime = Fx.lightning.lifetime;
|
||||
hitEffect = Fx.hitLancer;
|
||||
despawnEffect = Fx.none;
|
||||
status = StatusEffects.shocked;
|
||||
statusDuration = 10f;
|
||||
hittable = false;
|
||||
healPercent = 5f;
|
||||
collidesTeam = true;
|
||||
}};
|
||||
}};
|
||||
}});
|
||||
}};
|
||||
@@ -372,6 +383,8 @@ public class UnitTypes implements ContentList{
|
||||
sideAngle = 45f;
|
||||
sideWidth = 1f;
|
||||
sideLength = 70f;
|
||||
healPercent = 10f;
|
||||
collidesTeam = true;
|
||||
colors = new Color[]{Pal.heal.cpy().a(0.4f), Pal.heal, Color.white};
|
||||
}};
|
||||
}});
|
||||
@@ -431,6 +444,10 @@ public class UnitTypes implements ContentList{
|
||||
incendSpread = 5f;
|
||||
incendAmount = 1;
|
||||
|
||||
//constant healing
|
||||
healPercent = 0.5f;
|
||||
collidesTeam = true;
|
||||
|
||||
colors = new Color[]{Pal.heal.cpy().a(.2f), Pal.heal.cpy().a(.5f), Pal.heal.cpy().mul(1.2f), Color.white};
|
||||
}};
|
||||
|
||||
@@ -501,6 +518,9 @@ public class UnitTypes implements ContentList{
|
||||
|
||||
shootEffect = Fx.greenLaserCharge;
|
||||
|
||||
healPercent = 20f;
|
||||
collidesTeam = true;
|
||||
|
||||
sideAngle = 15f;
|
||||
sideWidth = 0f;
|
||||
sideLength = 0f;
|
||||
|
||||
@@ -120,6 +120,10 @@ public class Damage{
|
||||
collidedBlocks.add(tile.pos());
|
||||
hitter.type.hit(hitter, tile.x, tile.y);
|
||||
}
|
||||
//can heal?
|
||||
if(tile != null && !collidedBlocks.contains(tile.pos()) && hitter.type.collides(hitter, tile)){
|
||||
hitter.type.hitTile(hitter, tile, 0f);
|
||||
}
|
||||
};
|
||||
|
||||
if(hitter.type.collidesGround){
|
||||
|
||||
@@ -37,7 +37,13 @@ public class Lightning{
|
||||
random.setSeed(seed);
|
||||
hit.clear();
|
||||
|
||||
BulletType bulletType = hitter != null && !hitter.type.collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning;
|
||||
BulletType bulletType;
|
||||
if(hitter != null && hitter.type.lightningHitter != null){
|
||||
bulletType = hitter.type.lightningHitter;
|
||||
}else{
|
||||
bulletType = hitter != null && !hitter.type.collidesAir ? Bullets.damageLightningGround : Bullets.damageLightning;
|
||||
}
|
||||
|
||||
Seq<Vec2> lines = new Seq<>();
|
||||
bhit = false;
|
||||
|
||||
|
||||
@@ -116,6 +116,8 @@ public abstract class BulletType extends Content{
|
||||
public float lightningDamage = -1;
|
||||
public float lightningCone = 360f;
|
||||
public float lightningAngle = 0f;
|
||||
/** The lighting "hitter"; Use when trying to implement special lightning. */
|
||||
public BulletType lightningHitter;
|
||||
|
||||
public float weaveScale = 1f;
|
||||
public float weaveMag = -1f;
|
||||
@@ -163,11 +165,12 @@ public abstract class BulletType extends Content{
|
||||
if(makeFire){
|
||||
Fires.create(tile.tile);
|
||||
}
|
||||
hit(b);
|
||||
|
||||
|
||||
if(healPercent > 0f && tile.team == b.team && !(tile.block instanceof ConstructBlock)){
|
||||
Fx.healBlockFull.at(tile.x, tile.y, tile.block.size, Pal.heal);
|
||||
tile.heal(healPercent / 100f * tile.maxHealth());
|
||||
}else{
|
||||
hit(b);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user