@page "/" @using SlaySharp.Core.Run @using SlaySharp.Core.Combat @using SlaySharp.Core.Models @using SlaySharp.Core.Catalogs @using SlaySharp.Core.Relics @using SlaySharp.Web.Components @inject IJSRuntime JS SlaySharp - Visual Studio Code Edition @if (_showIntroBoot) {
● ● ● pwsh -- SlaySharp Roslyn CLR v8.0 Bootstrapper
x64-wasm
> Microsoft (R) .NET Core CLR 8.0.0-rtm (WebAssembly)
> [OK] Roslyn C# AST & JIT Tier-1 Optimization Engine loaded
> [OK] Allocated 64MB managed memory with GC Generation 0/1/2
> [ALERT] 3 Incident Branches detected on CI/CD pipeline!
> [READY] Principal .NET Architect credentials authenticated.
Click anywhere or press Enter to launch IDE Dashboard
} else { @switch (_run.CurrentScreen) { case RunScreen.Title:
@if (_isDeploying) {

DEPLOYING TO STAGING...

Compiling Roslyn IL modules & building Git topology graph...
✓ 0 Errors | ✓ 0 Warnings | Production SLA 100%
}
C#

SlaySharp v1.3

C# & .NET Runtime Roguelike Deckbuilder
RUNTIME ENVIRONMENT
🟢 .NET 8.0 CLR [AggressiveTieredOpt]
🗺️

START CAMPAIGN: ACT 1

CI/CD Pipeline & Legacy Monolith Boss
Launch Run (F5) ➔

Navigate the 7-floor procedural Git branch graph. Patch production bugs, resolve StackOverflow dilemmas, refactor modules at coffee breaks, and face the Legacy Monolith Boss!

⚡ Quick Incident Sandboxes (Single Encounters)

💥 [SEV-1] NullReference & Off-By-One Quick Battle ➔

Patch NullReferenceException (45 HP) and Off-By-One Bug (22 HP).

👻 [SEV-2] Memory Leak Spectre Quick Battle ➔

Dispose unmanaged memory from Memory Leak Spectre (34 HP) with Shield gain.

👑 [ACT-BOSS] Legacy Monolith (90 HP) Boss Battle ➔

Battle the 90 HP Legacy Monolith Boss with spaghetti code and thread locks.

⚙️ Active Profile

👨‍💻
Principal .NET Architect
3 CPU Cycles / 70 SLA HP
STARTER NUGET PACKAGES:
📜 Newtonsoft.Json +1 Card T1
⚡ BenchmarkDotNet +1 CPU / 2T
📊 Serilog +2 Shield on Attack
MECHANICS HIGHLIGHTS
Branch Prediction Crit 25% chance for 2x DMG
Git Procedural Map 7-Floor Branching Paths
Post-Battle PR Review Merge 1 of 3 Cards
break; case RunScreen.Map: break; case RunScreen.Combat: @if (_run.ActiveCombat != null) { } break; case RunScreen.Event: break; case RunScreen.RestSite: break; case RunScreen.Shop: break; case RunScreen.RunVictory:
🏆

ACT 1 DEPLOYMENT SUCCESSFUL!

The Legacy Monolith Boss Has Been Decoupled & Microserviced.

FINAL SLA HEALTH
@_run.Player.CurrentHp / @_run.Player.MaxHp HP
DEV CREDITS EARNED
@_run.DevCredits Credits
FINAL DECK SIZE
@_run.Player.MasterDeck.Count Cards
break; case RunScreen.RunDefeat:
💥

PRODUCTION OUTAGE

SLA dropped to 0%. The deployment was rolled back by SRE.

break; } } @code { private readonly GameRun _run = new(); private bool _showIntroBoot = true; private bool _isGlitchTransitioning = false; private bool _isSandboxMode = false; private bool _isDeploying = false; protected override void OnInitialized() { _run.OnRunStateChanged += StateHasChanged; } private async Task EnterTitleScreenAsync() { if (_isGlitchTransitioning) return; _isGlitchTransitioning = true; StateHasChanged(); _ = JS.InvokeVoidAsync("slayAudio.playIntroChime"); await Task.Delay(400); _showIntroBoot = false; _isGlitchTransitioning = false; StateHasChanged(); } private async Task TriggerCampaignLaunchAsync() { _isDeploying = true; StateHasChanged(); _ = JS.InvokeVoidAsync("slayAudio.playBootSound"); await Task.Delay(900); _isDeploying = false; _isSandboxMode = false; _run.StartNewRun(); StateHasChanged(); } private void StartSandboxEncounter(int type) { _isSandboxMode = true; _run.Player = new Player("Senior Dev", 70, maxEnergy: 3); _run.Player.MasterDeck.AddRange(StarterDecks.CreateCsharpArchitectDeck()); _run.Player.Relics.Add(new NewtonsoftJsonRelic()); _run.Player.Relics.Add(new BenchmarkDotNetRelic()); _run.Player.Relics.Add(new SerilogRelic()); List enemies = type switch { 1 => new List { new NullReferenceExceptionEnemy(), new OffByOneBugEnemy() }, 2 => new List { new MemoryLeakSpectreEnemy(), new OffByOneBugEnemy() }, 3 => new List { new LegacyMonolithBossEnemy() }, _ => new List { new NullReferenceExceptionEnemy() } }; _run.ActiveCombat = new CombatEngine(); _run.ActiveCombat.StartCombat(_run.Player, enemies); _run.CurrentScreen = RunScreen.Combat; _ = JS.InvokeVoidAsync("slayAudio.playCardSound"); } private void HandleCombatVictory() { if (_isSandboxMode) { _run.CurrentScreen = RunScreen.Title; StateHasChanged(); } else { _run.CompleteCombatAndClaimRewards(25); } } private void HandleCombatDefeat() { if (_isSandboxMode) { _run.CurrentScreen = RunScreen.Title; StateHasChanged(); } else { _run.ReturnToMap(); } } }