Reactivity and Assorted Changes (#11245)
* Implemented turretDepositCooldown (1) * Implemented activationTime for Turrets (1) * activationTime for Turrets Fixes (2) readSync() line isn't needed, Overdrive should not make the cooldown go faster, it stays as is unless there is a good argument against it. * activationTime (3): Descriptions and SetBars() Updated arc and lancer descriptions. Added setBars() stuff for clearness. * turretDepositCooldown (2): now depositCooldown and is now on a per turret basis if needed... will potentially need further iteration * turretDepositCooldown (3): made it opt in added an internal gamerule (long name, need to reduce it later) to enable the balance (oriented for pvp) depositCooldown = 0 by def added depositCooldown entries in Blocks.java * activationTime (4): Minor Adjustments to UI * activitationTime (5): Implemented drawInactive() and inactiveColo, and arc/lancer sprite Thinking if I should set the sprites to be white, then use Color.gray... * turretDepositCooldown (4): Made the cooldown only affect turrets * Reload Turret Coolant Fixes (1) Made coolant and overdrive effects not get chopped off from Math.min when its too high * activationTime (6): activationTime is now at the Base Turret Level Also implemented the code for TractorBeamTurret thanks to the code changes Parallax can have the feature if needed for future balancing. Hopefully nothing was screwed up in the transition... * Counterbalance (1): Swarmer 8 -> 7 firerate nerf, and Cyclone 7.5 -> 6 firerate nerf [First Attempt] * Reload Turret Coolant Fixes (2): added a buffer if the excessReload exceeds more than 2 reloads. * Reload Turret Coolant Fixes (3): hotfix, the buffer actually works this time * turretDepositCooldown (5): Made the cooldown seperate from itemDepositCooldown * Implemented armorMultiplier (1) * fixing a merge * (AT:7a) Reverted Saving Capability * (AT:7b) Removed activation timer from lancer and arc as well as sprites * (AT:7c) Removed visuals for activation timer will be reimplemented via a greyscale effect if returned rather than via sprites * (AT:7aa) oops * Made the default value 0 when placed - Activation Timer (8) * (depositCooldown : 6) Moved depositCooldown to Blocks.java, cleaned up canDepositItem(), removed enableTurretDepositCooldown * armorMultiplier (2) - oops, made armorMultipler = 0 correspond to 100% armorPiercing * Update core/src/mindustry/input/InputHandler.java * Reload Turret Coolant Fixes (4): A bit too high --------- Co-authored-by: Anuken <arnukren@gmail.com>
This commit is contained in:
@@ -181,6 +181,8 @@ public class BulletType extends Content implements Cloneable{
|
||||
public boolean fragOnAbsorb = true;
|
||||
/** If true, unit armor is ignored in damage calculations. */
|
||||
public boolean pierceArmor = false;
|
||||
/** Multiplies the unit armor used in damage calculations. Used for armor weakness, armor piercing, and anti-armor. */
|
||||
public float armorMultiplier = 1f;
|
||||
/** If true, the bullet will "stick" to enemies and get deactivated on collision. */
|
||||
public boolean sticky = false;
|
||||
/** Extra time added to bullet when it sticks to something. */
|
||||
@@ -483,6 +485,8 @@ public class BulletType extends Content implements Cloneable{
|
||||
}
|
||||
if(pierceArmor){
|
||||
h.damagePierce(damage);
|
||||
}else if(armorMultiplier != 1){
|
||||
h.damageArmorMult(damage, armorMultiplier);
|
||||
}else{
|
||||
h.damage(damage);
|
||||
}
|
||||
|
||||
@@ -1727,7 +1727,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
||||
|
||||
float damage = other.type.buildingDamage(other);
|
||||
if(!other.type.pierceArmor){
|
||||
damage = Damage.applyArmor(damage, block.armor);
|
||||
damage = Damage.applyArmor(damage, block.armor * other.type.armorMultiplier);
|
||||
}
|
||||
|
||||
damage(other, other.team, damage);
|
||||
|
||||
@@ -58,6 +58,16 @@ abstract class HealthComp implements Entityc, Posc{
|
||||
damagePierce(amount, true);
|
||||
}
|
||||
|
||||
/** Damage and multiply armor received. */
|
||||
void damageArmorMult(float amount, float armorMult, boolean withEffect){
|
||||
damage(amount, withEffect);
|
||||
}
|
||||
|
||||
/** Damage and multiply armor received. */
|
||||
void damageArmorMult(float amount, float armorMult){
|
||||
damageArmorMult(amount, armorMult, true);
|
||||
}
|
||||
|
||||
void damage(float amount){
|
||||
if(Float.isNaN(health)) health = 0f;
|
||||
|
||||
@@ -86,6 +96,10 @@ abstract class HealthComp implements Entityc, Posc{
|
||||
damagePierce(amount * Time.delta, hitTime <= -20 + hitDuration);
|
||||
}
|
||||
|
||||
void damageContinuousArmorMult(float amount, float armorMult){
|
||||
damageArmorMult(amount * Time.delta, armorMult, hitTime <= -20 + hitDuration);
|
||||
}
|
||||
|
||||
void clampHealth(){
|
||||
health = Math.min(health, maxHealth);
|
||||
if(Float.isNaN(health)) health = 0f;
|
||||
|
||||
@@ -42,6 +42,18 @@ abstract class ShieldComp implements Healthc, Posc{
|
||||
}
|
||||
}
|
||||
|
||||
@Replace
|
||||
@Override
|
||||
public void damageArmorMult(float amount, float armorMult, boolean withEffect){
|
||||
float pre = hitTime;
|
||||
|
||||
rawDamage(Damage.applyArmor(amount, armorOverride >= 0f ? armorOverride * armorMult : armor * armorMult) / healthMultiplier / Vars.state.rules.unitHealth(team));
|
||||
|
||||
if(!withEffect){
|
||||
hitTime = pre;
|
||||
}
|
||||
}
|
||||
|
||||
protected void rawDamage(float amount){
|
||||
boolean hadShields = shield > 0.0001f;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user