diff --git a/css/sleeves.scss b/css/sleeves.scss
index 4f85bbfc2..30cf2472d 100644
--- a/css/sleeves.scss
+++ b/css/sleeves.scss
@@ -3,14 +3,15 @@
*/
@import "theme";
-.sleeve-container {
+#sleeves-container {
+ position: fixed;
+ padding: 6px;
+}
+
+.sleeve-elem {
border: 1px solid white;
margin: 4px;
- width: 75%;
-
- p {
- font-size: $defaultFontSize * 0.875;
- }
+ display: block;
}
.sleeves-page-info {
diff --git a/src/PersonObjects/Sleeve/Sleeve.ts b/src/PersonObjects/Sleeve/Sleeve.ts
index 2424002d8..583e98029 100644
--- a/src/PersonObjects/Sleeve/Sleeve.ts
+++ b/src/PersonObjects/Sleeve/Sleeve.ts
@@ -252,6 +252,7 @@ export class Sleeve extends Person {
// Experience is first multiplied by shock. Then 'synchronization'
// is accounted for
+
const multFac = (this.shock / 100) * (this.sync / 100) * numCycles;
const pHackExp = exp.hack * multFac;
const pStrExp = exp.str * multFac;
@@ -491,7 +492,7 @@ export class Sleeve extends Person {
this.currentTaskTime += time;
// Shock gradually goes towards 100
- this.shock = Math.min(100, this.shock + 0.0001 * this.storedCycles);
+ this.shock = Math.min(100, this.shock + 0.0001 * cyclesUsed);
let retValue: ITaskTracker = createTaskTracker();
switch (this.currentTask) {
diff --git a/src/PersonObjects/Sleeve/SleeveAugmentationsUI.tsx b/src/PersonObjects/Sleeve/SleeveAugmentationsUI.tsx
deleted file mode 100644
index 4e73fa660..000000000
--- a/src/PersonObjects/Sleeve/SleeveAugmentationsUI.tsx
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * Module for handling the UI for purchasing Sleeve Augmentations
- * This UI is a popup, not a full page
- */
-import React from "react";
-import { Sleeve } from "./Sleeve";
-import { findSleevePurchasableAugs } from "./SleeveHelpers";
-
-import { IPlayer } from "../IPlayer";
-
-import { Augmentation } from "../../Augmentation/Augmentation";
-import { Augmentations } from "../../Augmentation/Augmentations";
-
-import { Money } from "../../ui/React/Money";
-
-import { dialogBoxCreate } from "../../../utils/DialogBox";
-
-import { createElement } from "../../../utils/uiHelpers/createElement";
-import { createPopup } from "../../../utils/uiHelpers/createPopup";
-import { createPopupCloseButton } from "../../../utils/uiHelpers/createPopupCloseButton";
-import { removeElementById } from "../../../utils/uiHelpers/removeElementById";
-
-import { renderToStaticMarkup } from "react-dom/server";
-
-export function createSleevePurchaseAugsPopup(sleeve: Sleeve, p: IPlayer): void {
- // Array of all owned Augmentations. Names only
- const ownedAugNames: string[] = sleeve.augmentations.map((e) => {
- return e.name;
- });
-
- // You can only purchase Augmentations that are actually available from
- // your factions. I.e. you must be in a faction that has the Augmentation
- // and you must also have enough rep in that faction in order to purchase it.
- const availableAugs = findSleevePurchasableAugs(sleeve, p);
-
- // Create popup
- const popupId = "purchase-sleeve-augs-popup";
-
- // Close popup button
- const closeBtn = createPopupCloseButton(popupId, { innerText: "Cancel" });
-
- // General info about owned Augmentations
- const ownedAugsInfo = createElement("p", {
- display: "block",
- innerHTML: "Owned Augmentations:",
- });
-
- const popupElems: HTMLElement[] = [closeBtn, ownedAugsInfo];
-
- // Show owned augmentations
- // First we'll make a div with a reduced width, so the tooltips don't go off
- // the edge of the popup
- const ownedAugsDiv = createElement("div", { width: "70%" });
- for (const ownedAug of ownedAugNames) {
- const aug: Augmentation | null = Augmentations[ownedAug];
- if (aug == null) {
- console.warn(`Invalid Augmentation: ${ownedAug}`);
- continue;
- }
-
- let tooltip = aug.info;
- if (typeof tooltip !== "string") {
- tooltip = renderToStaticMarkup(tooltip);
- }
- tooltip += "
";
- tooltip += renderToStaticMarkup(aug.stats);
-
- ownedAugsDiv.appendChild(
- createElement("div", {
- class: "gang-owned-upgrade", // Reusing a class from the Gang UI
- innerText: ownedAug,
- tooltip: tooltip,
- }),
- );
- }
- popupElems.push(ownedAugsDiv);
-
- // General info about buying Augmentations
- const info = createElement("p", {
- innerHTML: [
- `You can purchase Augmentations for your Duplicate Sleeves. These Augmentations`,
- `have the same effect as they would for you. You can only purchase Augmentations`,
- `that you have unlocked through Factions.
`,
- `When purchasing an Augmentation for a Duplicate Sleeve, they are immediately`,
- `installed. This means that the Duplicate Sleeve will immediately lose all of`,
- `its stat experience.`,
- ].join(" "),
- });
-
- popupElems.push(info);
-
- for (const aug of availableAugs) {
- const div = createElement("div", {
- class: "cmpy-mgmt-upgrade-div", // We'll reuse this CSS class
- });
-
- let info = aug.info;
- if (typeof info !== "string") {
- info = renderToStaticMarkup(info);
- }
- info += "
";
- info += renderToStaticMarkup(aug.stats);
-
- div.appendChild(
- createElement("p", {
- fontSize: "12px",
- innerHTML: [
- `
{title}+
{props.title}
HP: | - {numeralWrapper.formatHp(sleeve.hp)} / {numeralWrapper.formatHp(sleeve.max_hp)} + {numeralWrapper.formatHp(props.sleeve.hp)} / {numeralWrapper.formatHp(props.sleeve.max_hp)} | |
City: | -{sleeve.city} | +{props.sleeve.city} |
Hacking: | - {numeralWrapper.formatSkill(sleeve.hacking_skill)} + {numeralWrapper.formatSkill(props.sleeve.hacking_skill)} | |
Strength: | - {numeralWrapper.formatSkill(sleeve.strength)} + {numeralWrapper.formatSkill(props.sleeve.strength)} | |
Defense: | - {numeralWrapper.formatSkill(sleeve.defense)} + {numeralWrapper.formatSkill(props.sleeve.defense)} | |
Dexterity: | - {numeralWrapper.formatSkill(sleeve.dexterity)} + {numeralWrapper.formatSkill(props.sleeve.dexterity)} | |
Agility: | - {numeralWrapper.formatSkill(sleeve.agility)} + {numeralWrapper.formatSkill(props.sleeve.agility)} | |
Charisma: | - {numeralWrapper.formatSkill(sleeve.charisma)} + {numeralWrapper.formatSkill(props.sleeve.charisma)} | |
Shock: | - {numeralWrapper.formatSleeveShock(100 - sleeve.shock)} + {numeralWrapper.formatSleeveShock(100 - props.sleeve.shock)} | |
Sync: | - {numeralWrapper.formatSleeveSynchro(sleeve.sync)} + {numeralWrapper.formatSleeveSynchro(props.sleeve.sync)} | |
Memory: | - {numeralWrapper.formatSleeveMemory(sleeve.memory)} + {numeralWrapper.formatSleeveMemory(props.sleeve.memory)} |