Implement surface safety and powered props

This commit is contained in:
2026-05-14 10:19:21 +02:00
parent 2ad7feef96
commit 830c7aef14
9 changed files with 267 additions and 29 deletions

View File

@@ -43,11 +43,14 @@ public abstract class Balancing
if (rowCarrier == ECarrierType.Fuel && colCarrier == ECarrierType.Electricity)
return Ignite(rowBand, colBand);
if (rowCarrier == ECarrierType.Fuel && colCarrier == ECarrierType.Water)
return Dilute(rowBand, colBand);
if (rowCarrier == ECarrierType.Fuel && colCarrier is null)
return rowBand == EBand.Critical || colBand == EBand.Critical ? Ignite(rowBand, colBand) : Warm(rowBand, colBand);
if (rowCarrier == ECarrierType.Water && colCarrier == ECarrierType.Electricity)
return Short(rowBand, colBand);
return Conduct(rowBand, colBand);
if (rowCarrier == ECarrierType.Water && colCarrier is null)
return Quench(rowBand, colBand);
@@ -88,14 +91,23 @@ public abstract class Balancing
};
}
private SurfaceInteractionEffect Short(EBand rowBand, EBand colBand)
private SurfaceInteractionEffect Dilute(EBand rowBand, EBand colBand)
{
return new() {
Verb = ESurfaceInteractionVerb.Dilute,
Quantity = ESurfaceQuantity.Fuel,
Amount = Strongest(rowBand, colBand) == EBand.Critical ? DiluteCriticalAmount : DiluteCautionAmount
};
}
private SurfaceInteractionEffect Conduct(EBand rowBand, EBand colBand)
{
var critical = Strongest(rowBand, colBand) == EBand.Critical;
return new() {
Verb = ESurfaceInteractionVerb.Short,
Verb = ESurfaceInteractionVerb.Conduct,
Quantity = ESurfaceQuantity.Electricity,
Amount = critical ? ShortCriticalHeat : ShortCautionHeat,
SecondaryAmount = critical ? ShortCriticalDischarge : ShortCautionDischarge
Amount = critical ? ConductCriticalHeat : ConductCautionHeat,
SecondaryAmount = critical ? ConductCriticalDischarge : ConductCautionDischarge
};
}
@@ -157,15 +169,21 @@ public abstract class Balancing
public abstract float LeakIntensityScale { get; }
public abstract float SprinklerWaterPerStep { get; }
public abstract float SprinklerPressureDebt { get; }
public abstract float AmbientEvaporationPerStep { get; }
public abstract float HeatEvaporationScale { get; }
public abstract float EvaporationCoolingScale { get; }
public abstract float FlowTransferRatio { get; }
public abstract float WetElectricityFlowMultiplier { get; }
public abstract float WarmCautionAmount { get; }
public abstract float WarmCriticalAmount { get; }
public abstract float DiluteCautionAmount { get; }
public abstract float DiluteCriticalAmount { get; }
public abstract float QuenchCautionAmount { get; }
public abstract float QuenchCriticalAmount { get; }
public abstract float ShortCautionHeat { get; }
public abstract float ShortCautionDischarge { get; }
public abstract float ShortCriticalHeat { get; }
public abstract float ShortCriticalDischarge { get; }
public abstract float ConductCautionHeat { get; }
public abstract float ConductCautionDischarge { get; }
public abstract float ConductCriticalHeat { get; }
public abstract float ConductCriticalDischarge { get; }
public abstract float IgniteCautionHeat { get; }
public abstract float IgniteCautionFuelConsumption { get; }
public abstract float IgniteCriticalHeat { get; }