Temporarily Invincible Missiles Quell (#10674)
* quell changes version 1 (draft) * Quell Homing Workaround and Stat Display Working * Quell, 16 close range instead of 19 * final color adjustment * quell description attempt 1 * quell desc attempt 2 * e * oop * Added Homing to Quell Plasma Shielding --------- Co-authored-by: EggleEgg <125359838+EggleEgg@users.noreply.github.com>
This commit is contained in:
@@ -2448,7 +2448,7 @@ unit.collaris.description = Fires long-range fragmenting artillery at enemy targ
|
|||||||
unit.elude.description = Fires pairs of homing bullets at enemy targets. Can float over bodies of liquid.
|
unit.elude.description = Fires pairs of homing bullets at enemy targets. Can float over bodies of liquid.
|
||||||
unit.avert.description = Fires twisting pairs of bullets at enemy targets.
|
unit.avert.description = Fires twisting pairs of bullets at enemy targets.
|
||||||
unit.obviate.description = Fires twisting pairs of lightning orbs at enemy targets.
|
unit.obviate.description = Fires twisting pairs of lightning orbs at enemy targets.
|
||||||
unit.quell.description = Fires long-range homing missiles at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets.
|
unit.quell.description = Fires long-range homing missiles with unstable plasma shielding at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets.
|
||||||
unit.disrupt.description = Fires long-range homing suppression missiles at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets.
|
unit.disrupt.description = Fires long-range homing suppression missiles at enemy targets. Suppresses enemy structure repair blocks. Only attacks ground targets.
|
||||||
unit.evoke.description = Builds structures to defend the Bastion core. Repairs structures with a beam. Capable of carrying 2x2 structures.
|
unit.evoke.description = Builds structures to defend the Bastion core. Repairs structures with a beam. Capable of carrying 2x2 structures.
|
||||||
unit.incite.description = Builds structures to defend the Citadel core. Repairs structures with a beam. Capable of carrying 2x2 structures.
|
unit.incite.description = Builds structures to defend the Citadel core. Repairs structures with a beam. Capable of carrying 2x2 structures.
|
||||||
|
|||||||
@@ -3829,8 +3829,10 @@ public class UnitTypes{
|
|||||||
|
|
||||||
engineSize = 4.8f;
|
engineSize = 4.8f;
|
||||||
engineOffset = 61 / 4f;
|
engineOffset = 61 / 4f;
|
||||||
|
range = 4.3f * 60f * 1.4f;
|
||||||
|
|
||||||
abilities.add(new SuppressionFieldAbility(){{
|
abilities.add(new SuppressionFieldAbility(){{
|
||||||
|
reload = 60f * 8f;
|
||||||
orbRadius = 5.3f;
|
orbRadius = 5.3f;
|
||||||
y = 1f;
|
y = 1f;
|
||||||
}});
|
}});
|
||||||
@@ -3846,36 +3848,59 @@ public class UnitTypes{
|
|||||||
recoil = 1f;
|
recoil = 1f;
|
||||||
rotationLimit = 60f;
|
rotationLimit = 60f;
|
||||||
|
|
||||||
bullet = new BulletType(){{
|
bullet = new BasicBulletType(4.3f, 70f, "missile-large"){{
|
||||||
shootEffect = Fx.shootBig;
|
shootEffect = Fx.shootBig;
|
||||||
smokeEffect = Fx.shootBigSmoke2;
|
smokeEffect = Fx.shootBigSmoke2;
|
||||||
shake = 1f;
|
shake = 1f;
|
||||||
speed = 0f;
|
lifetime = 60 * 0.496f;
|
||||||
|
rangeOverride = 361.2f;
|
||||||
|
followAimSpeed = 5f;
|
||||||
|
|
||||||
|
width = 12f;
|
||||||
|
height = 22f;
|
||||||
|
hitSize = 7f;
|
||||||
|
hitColor = backColor = trailColor = Pal.sapBulletBack;
|
||||||
|
trailWidth = 3f;
|
||||||
|
trailLength = 12;
|
||||||
|
hitEffect = despawnEffect = Fx.hitBulletColor;
|
||||||
|
|
||||||
keepVelocity = false;
|
keepVelocity = false;
|
||||||
|
collidesGround = true;
|
||||||
collidesAir = false;
|
collidesAir = false;
|
||||||
|
|
||||||
spawnUnit = new MissileUnitType("quell-missile"){{
|
//workaround to get the missile to behave like in spawnUnit while still spawning on death
|
||||||
targetAir = false;
|
fragRandomSpread = 0;
|
||||||
speed = 4.3f;
|
fragBullets = 1;
|
||||||
maxRange = 6f;
|
fragVelocityMin = 1f;
|
||||||
lifetime = 60f * 1.4f;
|
fragOffsetMax = 1f;
|
||||||
outlineColor = Pal.darkOutline;
|
|
||||||
engineColor = trailColor = Pal.sapBulletBack;
|
|
||||||
engineLayer = Layer.effect;
|
|
||||||
health = 45;
|
|
||||||
loopSoundVolume = 0.1f;
|
|
||||||
|
|
||||||
weapons.add(new Weapon(){{
|
fragBullet = new BulletType(){{
|
||||||
shootSound = Sounds.none;
|
speed = 0f;
|
||||||
shootCone = 360f;
|
keepVelocity = false;
|
||||||
mirror = false;
|
collidesAir = false;
|
||||||
reload = 1f;
|
spawnUnit = new MissileUnitType("quell-missile"){{
|
||||||
shootOnDeath = true;
|
targetAir = false;
|
||||||
bullet = new ExplosionBulletType(110f, 25f){{
|
speed = 4.3f;
|
||||||
shootEffect = Fx.massiveExplosion;
|
maxRange = 6f;
|
||||||
collidesAir = false;
|
lifetime = 60f * (1.4f - 0.496f);
|
||||||
}};
|
outlineColor = Pal.darkOutline;
|
||||||
}});
|
engineColor = trailColor = Pal.sapBulletBack;
|
||||||
|
engineLayer = Layer.effect;
|
||||||
|
health = 45;
|
||||||
|
loopSoundVolume = 0.1f;
|
||||||
|
|
||||||
|
weapons.add(new Weapon() {{
|
||||||
|
shootSound = Sounds.none;
|
||||||
|
shootCone = 360f;
|
||||||
|
mirror = false;
|
||||||
|
reload = 1f;
|
||||||
|
shootOnDeath = true;
|
||||||
|
bullet = new ExplosionBulletType(110f, 25f) {{
|
||||||
|
shootEffect = Fx.massiveExplosion;
|
||||||
|
collidesAir = false;
|
||||||
|
}};
|
||||||
|
}});
|
||||||
|
}};
|
||||||
}};
|
}};
|
||||||
}};
|
}};
|
||||||
}});
|
}});
|
||||||
@@ -3909,6 +3934,8 @@ public class UnitTypes{
|
|||||||
int parts = 10;
|
int parts = 10;
|
||||||
|
|
||||||
abilities.add(new SuppressionFieldAbility(){{
|
abilities.add(new SuppressionFieldAbility(){{
|
||||||
|
reload = 60 * 15f;
|
||||||
|
range = 320f;
|
||||||
orbRadius = orbRad;
|
orbRadius = orbRad;
|
||||||
particleSize = partRad;
|
particleSize = partRad;
|
||||||
y = 10f;
|
y = 10f;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ public class SuppressionFieldAbility extends Ability{
|
|||||||
protected static Rand rand = new Rand();
|
protected static Rand rand = new Rand();
|
||||||
|
|
||||||
public float reload = 60f * 1.5f;
|
public float reload = 60f * 1.5f;
|
||||||
|
public float maxDelay = 60f * 1.5f;
|
||||||
public float range = 200f;
|
public float range = 200f;
|
||||||
|
|
||||||
public float orbRadius = 4.1f, orbMidScl = 0.33f, orbSinScl = 8f, orbSinMag = 1f;
|
public float orbRadius = 4.1f, orbMidScl = 0.33f, orbSinScl = 8f, orbSinMag = 1f;
|
||||||
@@ -55,9 +56,9 @@ public class SuppressionFieldAbility extends Ability{
|
|||||||
public void update(Unit unit){
|
public void update(Unit unit){
|
||||||
if(!active) return;
|
if(!active) return;
|
||||||
|
|
||||||
if((timer += Time.delta) >= reload){
|
if((timer += Time.delta) >= maxDelay){
|
||||||
Tmp.v1.set(x, y).rotate(unit.rotation - 90f).add(unit);
|
Tmp.v1.set(x, y).rotate(unit.rotation - 90f).add(unit);
|
||||||
Damage.applySuppression(unit.team, Tmp.v1.x, Tmp.v1.y, range, reload, reload, applyParticleChance, unit, effectColor);
|
Damage.applySuppression(unit.team, Tmp.v1.x, Tmp.v1.y, range, reload, maxDelay, applyParticleChance, unit, effectColor);
|
||||||
timer = 0f;
|
timer = 0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user