Support for team-specific multipliers (no UI)

This commit is contained in:
Anuken
2021-08-11 21:18:48 -04:00
parent 4fc18d35ce
commit 0cac972061
7 changed files with 48 additions and 12 deletions

View File

@@ -10,7 +10,6 @@ import mindustry.entities.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.type.*;
import mindustry.ui.*;
import static mindustry.Vars.*;
@@ -33,7 +32,7 @@ public class UnitSpawnAbility extends Ability{
@Override
public void update(Unit unit){
timer += Time.delta * state.rules.unitBuildSpeedMultiplier;
timer += Time.delta * state.rules.unitBuildSpeed(unit.team);
if(timer >= spawnTime && Units.canCreate(unit.team, this.unit)){
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);

View File

@@ -124,11 +124,13 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{
return;
}
float bs = 1f / entity.buildCost * Time.delta * type.buildSpeed * buildSpeedMultiplier * state.rules.buildSpeed(team);
//otherwise, update it.
if(current.breaking){
entity.deconstruct(self(), core, 1f / entity.buildCost * Time.delta * type.buildSpeed * buildSpeedMultiplier * state.rules.buildSpeedMultiplier);
entity.deconstruct(self(), core, bs);
}else{
entity.construct(self(), core, 1f / entity.buildCost * Time.delta * type.buildSpeed * buildSpeedMultiplier * state.rules.buildSpeedMultiplier, current.config);
entity.construct(self(), core, bs, current.config);
}
current.stuck = Mathf.equal(current.progress, entity.progress);

View File

@@ -1378,10 +1378,12 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
public void damage(float damage){
if(dead()) return;
if(Mathf.zero(state.rules.blockHealthMultiplier)){
float dm = state.rules.blockHealth(team);
if(Mathf.zero(dm)){
damage = health + 1;
}else{
damage /= state.rules.blockHealthMultiplier;
damage /= dm;
}
Call.tileDamage(self(), health - handleDamage(damage));

View File

@@ -68,8 +68,8 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw
@Override
public float damageMultiplier(){
if(owner instanceof Unit u) return u.damageMultiplier() * state.rules.unitDamageMultiplier;
if(owner instanceof Building) return state.rules.blockDamageMultiplier;
if(owner instanceof Unit u) return u.damageMultiplier() * state.rules.unitDamage(team);
if(owner instanceof Building) return state.rules.blockDamage(team);
return 1f;
}