From 37c9dcfa57f7a60f08f28914fd45517d2f28f11b Mon Sep 17 00:00:00 2001
From: Olivier Gagnon <olivier_gagnon@cable.comcast.com>
Date: Tue, 11 Jun 2024 19:34:33 -0400
Subject: [PATCH] Mechanic now properly save/load

---
 src/Myrian/Myrian.ts           | 8 +++++---
 src/Prestige.ts                | 4 ++++
 src/Sidebar/ui/SidebarRoot.tsx | 2 +-
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/Myrian/Myrian.ts b/src/Myrian/Myrian.ts
index 741ff3721..c93268562 100644
--- a/src/Myrian/Myrian.ts
+++ b/src/Myrian/Myrian.ts
@@ -1,6 +1,6 @@
 import { Device, DeviceType, Component, DeviceID, Glitch } from "@nsdefs";
 import { glitchMult } from "./formulas/glitches";
-import { pickOne } from "./utils";
+import { isDeviceISocket, pickOne } from "./utils";
 import { componentTiers } from "./formulas/components";
 import { NewBattery, NewBus, NewCache, NewISocket, NewLock, NewOSocket, NewReducer } from "./NewDevices";
 import { startRoaming } from "./glitches/roaming";
@@ -33,8 +33,10 @@ export const loadMyrian = (save: string) => {
   startRust();
   startSegmentation();
   if (!save) return;
-  //   const savedMyrian = JSON.parse(save);
-  //   Object.assign(myrian, savedMyrian);
+  const savedMyrian = JSON.parse(save);
+  Object.assign(myrian, savedMyrian);
+  myrian.devices.forEach((d) => (d.isBusy = false));
+  myrian.devices.filter(isDeviceISocket).forEach((d) => (d.content = new Array(d.maxContent).fill(d.emitting)));
 };
 
 export const inMyrianBounds = (x: number, y: number) => x >= 0 && x < myrianSize && y >= 0 && y < myrianSize;
diff --git a/src/Prestige.ts b/src/Prestige.ts
index 0ae792874..6e5df37c7 100644
--- a/src/Prestige.ts
+++ b/src/Prestige.ts
@@ -28,6 +28,7 @@ import { initCircadianModulator } from "./Augmentation/Augmentations";
 import { Go } from "./Go/Go";
 import { calculateExp } from "./PersonObjects/formulas/skill";
 import { currentNodeMults } from "./BitNode/BitNodeMultipliers";
+import { resetMyrian } from "./Myrian/Myrian";
 
 const BitNode8StartingMoney = 250e6;
 function delayedDialog(message: string) {
@@ -318,6 +319,9 @@ export function prestigeSourceFile(isFlume: boolean): void {
   }
   staneksGift.prestigeSourceFile();
 
+  Player.myrianConnection = false;
+  resetMyrian();
+
   // Gain int exp
   if (Player.sourceFileLvl(5) !== 0 && !isFlume) Player.gainIntelligenceExp(300);
 
diff --git a/src/Sidebar/ui/SidebarRoot.tsx b/src/Sidebar/ui/SidebarRoot.tsx
index 8d5e86a01..7f2772f87 100644
--- a/src/Sidebar/ui/SidebarRoot.tsx
+++ b/src/Sidebar/ui/SidebarRoot.tsx
@@ -355,7 +355,7 @@ export function SidebarRoot(props: { page: Page }): React.ReactElement {
             canCorporation && { key_: Page.Corporation, icon: BusinessIcon },
             canGang && { key_: Page.Gang, icon: SportsMmaIcon },
             canIPvGO && { key_: Page.Go, icon: BorderInnerSharp },
-            (true || Player.myrianConnection) && { key_: Page.MyrianOS, icon: SettingsInputComponentIcon },
+            Player.myrianConnection && { key_: Page.MyrianOS, icon: SettingsInputComponentIcon },
           ]}
         />
         <Divider />