buff fedora, add elite enemies and add impact to attack

This commit is contained in:
2026-07-10 11:17:40 +02:00
parent e4db7af324
commit 37049a7c16
11 changed files with 832 additions and 114 deletions
+26 -2
View File
@@ -46,14 +46,18 @@ namespace KernelPanic.Combat
public bool LethalHitThisTurn { get; private set; }
public int PairId { get; private set; } = -1;
public int RaceEnrageStacks { get; private set; }
public int TelemetryStacks { get; private set; }
public bool SpawnedFromDeath { get; private set; }
public bool HasPendingMarker => PendingRevive || HasRevived;
public bool HasSpecialSignal => HasSplitSignal || HasSegfaultSignal || HasRaceSignal || HasRootkitSignal || HasEliteSignal || SpawnedFromDeath;
public bool HasSpecialSignal => HasSplitSignal || HasSegfaultSignal || HasRaceSignal || HasRootkitSignal || HasEliteSignal || HasRamPressureSignal || HasTelemetrySignal || HasCardLockerSignal || SpawnedFromDeath;
public bool HasSplitSignal => HasBehavior(EnemyBehaviorFlags.Split);
public bool HasSegfaultSignal => HasBehavior(EnemyBehaviorFlags.SegfaultOnDeath);
public bool HasRaceSignal => HasBehavior(EnemyBehaviorFlags.RacePair);
public bool HasRootkitSignal => HasBehavior(EnemyBehaviorFlags.RootkitMasked);
public bool HasEliteSignal => HasBehavior(EnemyBehaviorFlags.Elite);
public bool HasEliteSignal => Archetype.Tier == EnemyTier.Elite || HasBehavior(EnemyBehaviorFlags.Elite);
public bool HasRamPressureSignal => HasBehavior(EnemyBehaviorFlags.RamPressure);
public bool HasTelemetrySignal => HasBehavior(EnemyBehaviorFlags.TelemetryCollector);
public bool HasCardLockerSignal => HasBehavior(EnemyBehaviorFlags.CardLocker);
public EnemyIntent DisplayIntent => BuildDisplayIntent();
public void PickNextIntent()
@@ -93,6 +97,14 @@ namespace KernelPanic.Combat
int maxValue = UnityEngine.Mathf.Min(CurrentIntent.MaxValue + growth, EnemyArchetypeCatalog.MemoryLeakAttackCapMax);
CurrentIntent = CurrentIntent.WithValues(minValue, maxValue, "growing leak");
}
if (HasBehavior(EnemyBehaviorFlags.TelemetryCollector) && CurrentIntent.Kind == EnemyIntentKind.Attack && TelemetryStacks > 0)
{
CurrentIntent = CurrentIntent.WithValues(
CurrentIntent.MinValue + TelemetryStacks,
CurrentIntent.MaxValue + TelemetryStacks,
"profiled hit");
}
}
public bool HasBehavior(EnemyBehaviorFlags behavior)
@@ -128,6 +140,18 @@ namespace KernelPanic.Combat
RaceEnrageStacks++;
}
public void AddTelemetryStack()
{
TelemetryStacks += EnemyArchetypeCatalog.TelemetryDamageGrowthPerCard;
if (CurrentIntent.Kind == EnemyIntentKind.Attack)
{
CurrentIntent = CurrentIntent.WithValues(
CurrentIntent.MinValue + EnemyArchetypeCatalog.TelemetryDamageGrowthPerCard,
CurrentIntent.MaxValue + EnemyArchetypeCatalog.TelemetryDamageGrowthPerCard,
"profiled hit");
}
}
public void ResetTurnLethalMarker()
{
LethalHitThisTurn = false;