MainHud/SessionStatModifiers.cs

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; }
	}


}