SessionStatModifiers is a plain data model that holds per-session gameplay modifiers and boolean perks, with a ResetSession method that restores default values. PerkCard is a simple data container for perk metadata and two Action<Player> delegates for applying perks to players or AI.
using Sandbox;
namespace Keyboard_Warriors_.Models
{
public class SessionStatModifiers
{
// 🚀 PERCENTAGE MULTIPLIERS (Default 1.0f = 100% normal stock performance)
public float AttackMultiplier { get; set; } = 1.0f;
public float DefenseMultiplier { get; set; } = 1.0f;
public float HealingMultiplier { get; set; } = 1.0f;
public float SpellMultiplier { get; set; } = 1.0f;
// 🚀 STRUCTURAL HARD DATA EXPANSIONS
public int BonusMaxHP { get; set; } = 0;
public int BonusMaxArmor { get; set; } = 0;
public int BonusMaxMagic { get; set; } = 0;
public bool IgnoresEnemyArmor { get; set; } = false;
public float ElectricalDamageTakenMultiplier { get; set; } = 1.0f;// Default 100% normal damage
public float MagicDamageTakenMultiplier { get; set; } = 1.0f; // Default 100% normal damage
public bool HasBerserkerRegistry { get; set; } = false;
public bool HasKernelPlating { get; set; } = false;
public float CriticalStrikeChanceModifier { get; set; } = 0f; // Default flat adjustment modifier offset
public float ElementalDamageTakenMultiplier { get; set; } = 1.0f; // Default 100% normal damage
public bool HasNaniteRegen { get; set; } = false;
public bool HasAdaptiveBarrier { get; set; } = false;
public bool HasSingularityCore { get; set; } = false;
public bool HasStaticFeedback { get; set; } = false;
public bool HasQuarantineTrigger { get; set; } = false;
public bool HasOffensiveSpellPerkTrigger { get; set; } = false;
public bool SpellsIgnoreEnemyArmor { get; set; } = false;
public bool HasCorrosivePackage { get; set; } = false;
public bool HasNaniteBarrier { get; set; } = false;
public bool HasSpellPurge { get; set; } = false;
public bool HasOverhealCapacitor { get; set; } = false;
public bool HasEmergencyCellPurge { get; set; } = false;
public bool HasFeedbackOverload { get; set; } = false;
public bool HasDefianceProtocol { get; set; } = false;
// =========================================================================
// Resets everything back to factory baselines ONLY upon full game defeat screens
public void ResetSession()
{
AttackMultiplier = 1.0f;
DefenseMultiplier = 1.0f;
HealingMultiplier = 1.0f;
SpellMultiplier = 1.0f;
BonusMaxHP = 0;
BonusMaxArmor = 0;
BonusMaxMagic = 0;
// 🚀 THE SYSTEM RECOVERY FLUSH
IgnoresEnemyArmor = false;
ElectricalDamageTakenMultiplier = 1.0f;
MagicDamageTakenMultiplier = 1.0f;
HasBerserkerRegistry = false;
HasKernelPlating = false;
CriticalStrikeChanceModifier = 0f;
ElementalDamageTakenMultiplier = 1.0f;
HasNaniteRegen = false;
HasAdaptiveBarrier = false;
HasSingularityCore = false;
HasStaticFeedback = false;
HasQuarantineTrigger = false;
HasOffensiveSpellPerkTrigger = false;
SpellsIgnoreEnemyArmor = false;
HasCorrosivePackage = false;
HasNaniteBarrier = false;
HasSpellPurge = false;
HasOverhealCapacitor = false;
HasEmergencyCellPurge = false;
HasFeedbackOverload = false;
HasDefianceProtocol = false;
}
}
public class PerkCard
{
public string Id { get; set; }
public string Title { get; set; }
public string Icon { get; set; }
public string Description { get; set; }
public string DrawbackText { get; set; }
// Data Payload delegates to execute when clicked
public System.Action<Player> ApplyToPlayer { get; set; }
public System.Action<Player> ApplyToAI { get; set; }
}
}