Added new unit type / Made reactor use cryo only / Balancing

This commit is contained in:
Anuken
2019-02-01 15:55:11 -05:00
parent f00d1f9505
commit 163ecb160a
23 changed files with 1325 additions and 1268 deletions

View File

@@ -27,7 +27,7 @@ public class StatusController implements Saveable{
private float armorMultiplier;
public void handleApply(Unit unit, StatusEffect effect, float duration){
if(effect == StatusEffects.none) return; //don't apply empty effects
if(effect == StatusEffects.none || unit.isImmune(effect)) return; //don't apply empty or immune effects
if(statuses.size > 0){
//check for opposite effects

View File

@@ -184,6 +184,10 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
damage(1);
}
public boolean isImmune(StatusEffect effect){
return false;
}
public boolean isOutOfBounds(){
return x < -worldBounds || y < -worldBounds || x > world.width() * tilesize + worldBounds || y > world.height() * tilesize + worldBounds;
}

View File

@@ -66,7 +66,7 @@ public abstract class BulletType extends Content{
/**Returns maximum distance the bullet this bullet type has can travel.*/
public float range(){
return speed * lifetime;
return speed * lifetime * (1f - drag);
}
public boolean collides(Bullet bullet, Tile tile){

View File

@@ -33,6 +33,11 @@ public class LiquidBulletType extends BulletType{
knockback = 0.5f;
}
@Override
public float range(){
return speed * lifetime /2f;
}
@Override
public void update(Bullet b) {
super.update(b);

View File

@@ -152,7 +152,7 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable{
entity.damage(0.4f);
}
Damage.damageUnits(null, tile.worldx(), tile.worldy(), tilesize, 3f,
unit -> !unit.isFlying(),
unit -> !unit.isFlying() && !unit.isImmune(StatusEffects.burning),
unit -> unit.applyEffect(StatusEffects.burning, 60 * 5));
}
}

View File

@@ -212,7 +212,7 @@ public class Puddle extends SolidEntity implements SaveTrait, Poolable, DrawTrai
}
});
if(liquid.temperature > 0.7f && tile.entity != null && Mathf.chance(0.3 * Time.delta())){
if(liquid.temperature > 0.7f && (tile.target().entity != null) && Mathf.chance(0.3 * Time.delta())){
Fire.create(tile);
}

View File

@@ -29,6 +29,7 @@ import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.type.ContentType;
import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.type.StatusEffect;
import io.anuke.mindustry.type.Weapon;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.meta.BlockFlag;
@@ -205,6 +206,11 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
}
}
@Override
public boolean isImmune(StatusEffect effect){
return type.immunities.contains(effect);
}
@Override
public boolean isValid(){
return super.isValid() && isAdded();

View File

@@ -3,7 +3,6 @@ package io.anuke.mindustry.entities.units;
import io.anuke.arc.Core;
import io.anuke.arc.collection.ObjectSet;
import io.anuke.arc.function.Supplier;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Log;
@@ -15,6 +14,7 @@ import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.game.UnlockableContent;
import io.anuke.mindustry.type.ContentType;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.StatusEffect;
import io.anuke.mindustry.type.Weapon;
import io.anuke.mindustry.ui.ContentDisplay;
@@ -42,7 +42,7 @@ public class UnitType extends UnlockableContent{
public float buildPower = 0.3f, minePower = 0.7f;
public Weapon weapon = Weapons.blaster;
public float weaponOffsetX, weaponOffsetY;
public Color trailColor = Color.valueOf("ffa665");
public ObjectSet<StatusEffect> immunities = new ObjectSet<>();
public TextureRegion iconRegion, legRegion, baseRegion, region;