diff --git a/css/styles.scss b/css/styles.scss
index ea543e3e9..b6b876b1d 100644
--- a/css/styles.scss
+++ b/css/styles.scss
@@ -359,3 +359,38 @@ a:visited {
.smallfont {
font-size: $defaultFontSize * 0.8125;
}
+
+
+.optionCheckbox {
+ filter: invert(100%) hue-rotate(0deg) brightness(1.7);
+ margin: 5px;
+ float: right;
+}
+
+.optionRange {
+ -webkit-appearance: none;
+ background: #777;
+ outline: none;
+ opacity: 0.7;
+ height: 10px;
+ -webkit-transition: .2s;
+ transition: opacity .2s;
+ margin: 3px;
+}
+
+
+.optionRange::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ appearance: none;
+ width: 10px;
+ height: 10px;
+ background: var(--my-font-color);
+ cursor: pointer;
+}
+
+.optionRange::-moz-range-thumb {
+ width: 10px;
+ height: 10px;
+ background: var(--my-font-color);
+ cursor: pointer;
+}
\ No newline at end of file
diff --git a/src/Exploits/Exploit.ts b/src/Exploits/Exploit.ts
index 9df93e339..2e687b862 100644
--- a/src/Exploits/Exploit.ts
+++ b/src/Exploits/Exploit.ts
@@ -1,10 +1,22 @@
/*
+The game cannot block every possible exploits. Specially since one of them is
+that you can just edit your save file and that's impragmatic to prevent.
+
+So instead we have source file minus 1. It is not obtained by destroying a
+BitNode but instead it is awarded when the player finds innovative ways to break
+the game, this serves 2 purpose, [one] the developpers don't have to spend time
+trying to implement anti-cheat measures and [two] finding ways to break a
+hacking game is very much in the spirit of the game.
+Source-File minus 1 is extremely weak because it can be fully level up quickly.
*/
export enum Exploit {
UndocumentedFunctionCall = 'UndocumentedFunctionCall',
- EditSaveFile = 'EditSaveFile',
- PrototypeTampering = 'PrototypeTampering'
+ PrototypeTampering = 'PrototypeTampering',
+ // To the players reading this. Yes you're supposed to add EditSaveFile by
+ // editing your save file, yes you could add them all, no we don't care
+ // that's not the point
+ EditSaveFile = 'EditSaveFile'
}
const names: {
diff --git a/src/Hacknet/HacknetHelpers.jsx b/src/Hacknet/HacknetHelpers.jsx
index 6172593e2..b16021858 100644
--- a/src/Hacknet/HacknetHelpers.jsx
+++ b/src/Hacknet/HacknetHelpers.jsx
@@ -120,7 +120,7 @@ export function getCostOfNextHacknetServer() {
const numOwned = Player.hacknetNodes.length;
const mult = HacknetServerPurchaseMult;
- if (numOwned > MaxNumberHacknetServers) { return Infinity; }
+ if (numOwned >= MaxNumberHacknetServers) { return Infinity; }
return BaseCostForHacknetServer * Math.pow(mult, numOwned) * Player.hacknet_node_purchase_cost_mult;
}
diff --git a/src/index.html b/src/index.html
index 2bf3f9991..fb7af1c5c 100644
--- a/src/index.html
+++ b/src/index.html
@@ -406,7 +406,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
@@ -467,7 +467,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
and can be viewed with the 'cat' Terminal command.
-
+
@@ -478,7 +478,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
on the screen. Your outstanding faction invites can be viewed in the 'Factions' page.
-
+
@@ -488,7 +488,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
If this is set, the confirmation message before traveling will not show up. You will automatically be deducted the travel cost as soon as you click.
-
+
@@ -499,7 +499,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
If this is set, the confirmation message before buying augmentation will not show up.
-
+
@@ -509,7 +509,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
If this is set, a popup message will no longer be shown when you are hospitalized after taking too much damage.
-
+
@@ -521,7 +521,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
and the "Save and Close (Ctrl + b)" hotkey in the Text Editor.
-
+
diff --git a/src/ui/CharacterInfo.tsx b/src/ui/CharacterInfo.tsx
index b50dc5607..4383f24ba 100644
--- a/src/ui/CharacterInfo.tsx
+++ b/src/ui/CharacterInfo.tsx
@@ -11,7 +11,6 @@ import { SourceFileFlags } from "../SourceFile/SourceFileFlags";
import { getPurchaseServerLimit } from "../Server/ServerPurchases";
import { MaxNumberHacknetServers } from "../Hacknet/HacknetServer";
-
export function CharacterInfo(p: IPlayer): React.ReactElement {
function LastEmployer(): React.ReactElement {
if (p.companyName) {
@@ -225,7 +224,7 @@ export function CharacterInfo(p: IPlayer): React.ReactElement {
Misc.