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:
SomeonesShade
2025-06-14 06:04:09 +08:00
committed by GitHub
parent a186b622f6
commit 19d3e20328
3 changed files with 54 additions and 26 deletions

View File

@@ -3829,8 +3829,10 @@ public class UnitTypes{
engineSize = 4.8f;
engineOffset = 61 / 4f;
range = 4.3f * 60f * 1.4f;
abilities.add(new SuppressionFieldAbility(){{
reload = 60f * 8f;
orbRadius = 5.3f;
y = 1f;
}});
@@ -3846,36 +3848,59 @@ public class UnitTypes{
recoil = 1f;
rotationLimit = 60f;
bullet = new BulletType(){{
bullet = new BasicBulletType(4.3f, 70f, "missile-large"){{
shootEffect = Fx.shootBig;
smokeEffect = Fx.shootBigSmoke2;
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;
collidesGround = true;
collidesAir = false;
spawnUnit = new MissileUnitType("quell-missile"){{
targetAir = false;
speed = 4.3f;
maxRange = 6f;
lifetime = 60f * 1.4f;
outlineColor = Pal.darkOutline;
engineColor = trailColor = Pal.sapBulletBack;
engineLayer = Layer.effect;
health = 45;
loopSoundVolume = 0.1f;
//workaround to get the missile to behave like in spawnUnit while still spawning on death
fragRandomSpread = 0;
fragBullets = 1;
fragVelocityMin = 1f;
fragOffsetMax = 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;
}};
}});
fragBullet = new BulletType(){{
speed = 0f;
keepVelocity = false;
collidesAir = false;
spawnUnit = new MissileUnitType("quell-missile"){{
targetAir = false;
speed = 4.3f;
maxRange = 6f;
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;
abilities.add(new SuppressionFieldAbility(){{
reload = 60 * 15f;
range = 320f;
orbRadius = orbRad;
particleSize = partRad;
y = 10f;

View File

@@ -17,6 +17,7 @@ public class SuppressionFieldAbility extends Ability{
protected static Rand rand = new Rand();
public float reload = 60f * 1.5f;
public float maxDelay = 60f * 1.5f;
public float range = 200f;
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){
if(!active) return;
if((timer += Time.delta) >= reload){
if((timer += Time.delta) >= maxDelay){
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;
}
}