From 0b0a3d366ca6f35e296e31671bb90c7157df841c Mon Sep 17 00:00:00 2001 From: Mat Jaworski Date: Mon, 3 Sep 2018 22:10:00 +1000 Subject: [PATCH 1/3] More UI updates - infiltration: added colours, updated spacing and fixed alignment - terminal prompt: added colour for the previous lines as well - Active Scripts and Hacknet Nodes: money values have a gold colour now; minor spacing updates - minor code refactoring --- css/_theme.scss | 16 +++--- css/menupages.scss | 58 ++++++++++++--------- css/styles.scss | 116 ++++++++++++++++++++++++++--------------- css/terminal.scss | 7 ++- index.html | 10 ++-- src/Infiltration.js | 64 +++++++++++------------ src/Location.js | 2 +- src/Terminal.js | 6 +-- utils/JSONReviver.d.ts | 2 +- 9 files changed, 165 insertions(+), 116 deletions(-) diff --git a/css/_theme.scss b/css/_theme.scss index 75134be78..54c868bca 100644 --- a/css/_theme.scss +++ b/css/_theme.scss @@ -2,11 +2,15 @@ $fontFamily: 'Lucida Console', 'Lucida Sans Unicode', 'Fira Mono', 'Consolas', ' $defaultFontSize: 16px; /* COLORS */ -$hacky-green: #adff2f; +$hacker-green: #adff2f; +$success-green: #3adb76; +$alert-red: #ff2929; +$money-gold: #ffd700; /* Attributes */ -$my-stat-hp-color: #dd3434; -$my-stat-money-color: #ffd700; -$my-stat-hack-color: $hacky-green; -$my-stat-cha-color: #a671d1; -$my-stat-int-color: #6495ed; +$my-stat-hp-color: #dd3434; +$my-stat-money-color: $money-gold; +$my-stat-hack-color: $hacker-green; +$my-stat-physical: #faffdf; +$my-stat-cha-color: #a671d1; +$my-stat-int-color: #6495ed; diff --git a/css/menupages.scss b/css/menupages.scss index cd35bec4a..e949b0fce 100644 --- a/css/menupages.scss +++ b/css/menupages.scss @@ -200,38 +200,37 @@ .active-scripts-script-header { background-color: #555; color: var(--my-font-color); - padding: 4px; - padding-left: 10px; + padding: 4px 25px 4px 10px; cursor: pointer; width: auto; text-align: left; border: none; outline: none; -} + position: relative; -.active-scripts-script-header:hover, -.active-scripts-script-header.active:hover { - background-color: #666; -} + &:after { + content: '\02795'; /* "plus" sign (+) */ + font-size: $defaultFontSize * 0.8125; + float: right; + margin-left: 5px; + color: transparent; + text-shadow: 0 0 0 var(--my-font-color); + position: absolute; + bottom: 4px; + } -.active-scripts-script-header.active { - background-color: #555; -} + &.active:after { + content: "\2796"; /* "minus" sign (-) */ + } -.active-scripts-script-header:after { - content: '\02795'; /* "plus" sign (+) */ - font-size: $defaultFontSize * 0.8125; - float: right; - margin-left: 5px; - color: transparent; - text-shadow: 0 0 0 var(--my-font-color); -} + &:hover, + &.active:hover { + background-color: #666; + } -.active-scripts-script-header.active:after { - content: "\2796"; /* "minus" sign (-) */ - font-size: $defaultFontSize * 0.8125; - float: right; - margin-left: 5px; + &.active { + background-color: #555; + } } .active-scripts-script-panel { @@ -405,8 +404,8 @@ #faction-container p, #faction-container pre { - padding: 6px; - margin: 6px; + padding: 4px 6px; + margin: 4px 6px; } #faction-container pre { @@ -522,6 +521,11 @@ #infiltration-container { position: fixed; padding: 6px; + + span { + margin: 0; + padding: 0; + } } #infiltration-left-panel, @@ -544,6 +548,10 @@ margin: 4px; } +#infiltration-buttons { + margin-top: 20px; +} + #infiltration-buttons .a-link-button { display: inline; width: 25%; diff --git a/css/styles.scss b/css/styles.scss index b725b4fff..d2156b3d8 100644 --- a/css/styles.scss +++ b/css/styles.scss @@ -163,14 +163,14 @@ a:visited { -ms-user-select: none; -khtml-user-select: none; -webkit-user-select: none; -} -.a-link-button:hover { - background-color: #666; -} + &:hover { + background-color: #666; + } -.a-link-button:active { - @include boxShadow(inset 0 1px 4px rgba(0, 0, 0, 0.6)); + &:active { + @include boxShadow(inset 0 1px 4px rgba(0, 0, 0, 0.6)); + } } /* Make anchor tags ("a" elements) inactive (not clickable) */ @@ -182,16 +182,18 @@ a:visited { margin: 5px; border: 1px solid #333; cursor: default; -} -.a-link-button-inactive:hover .tooltiptext, -.a-link-button-inactive:hover .tooltiptexthigh, -.a-link-button-inactive:hover .tooltiptextleft { - visibility: visible; -} + &:hover { + .tooltiptext, + .tooltiptexthigh, + .tooltiptextleft { + visibility: visible; + } + } -.a-link-button-inactive:active { - pointer-events: none; + &:active { + pointer-events: none; + } } /* Make anchor tags ("a" elements) for activated actions */ @@ -203,16 +205,18 @@ a:visited { margin: 5px; border: 1px solid #0a0; cursor: default; -} -.a-link-button-bought:hover .tooltiptext, -.a-link-button-bought:hover .tooltiptexthigh, -.a-link-button-bought:hover .tooltiptextleft { - visibility: visible; -} + &:hover { + .tooltiptext, + .tooltiptexthigh, + .tooltiptextleft { + visibility: visible; + } + } -.a-link-button-bought:active { - pointer-events: none; + &:active { + pointer-events: none; + } } .dropdown { @@ -253,22 +257,23 @@ a:visited { /* Tool tips (when hovering over an element */ .tooltip { - position: relative; display: inline-block; -} + position: relative; -.tooltip .tooltiptext { - visibility: hidden; - width: 300px; - background-color: var(--my-background-color); - border: 2px solid var(--my-highlight-color); - color: #fff; - text-align: center; - padding: 4px; - left: 101%; + .tooltiptext { + visibility: hidden; + width: 300px; + background-color: var(--my-background-color); + border: 2px solid var(--my-highlight-color); + color: #fff; + text-align: center; + padding: 4px; + left: 101%; - position: absolute; - z-index: 99; + pointer-events: none; + position: absolute; + z-index: 99; + } } /* Same thing as a normal tooltip except its a bit higher */ @@ -287,7 +292,7 @@ a:visited { z-index: 99; } -/* Similar to a normal tooltip except its positioned on the left of the elemnt +/* Similar to a normal tooltip except its positioned on the left of the element rather than the right to avoid exceeding the elements normal width */ .tooltip .tooltiptextleft { visibility: hidden; @@ -460,12 +465,12 @@ a:visited { width: auto; max-width: 280px; overflow: auto; /* Enable scroll if needed */ - background-color: #393636; /* Fallback color */ + background-color: rgba(57, 54, 54, 0.9); /* Fallback color */ z-index: 1; } #character-overview-text { - color: #faffdf; + color: $my-stat-physical; table { border-collapse: collapse; @@ -536,10 +541,10 @@ a:visited { cursor: pointer; color: #fff; text-decoration: underline; -} -.scan-analyze-link:hover { - text-decoration: none; + &:hover { + text-decoration: none; + } } /* Accordion menus (Header with collapsible panel) */ @@ -572,7 +577,7 @@ a:visited { color: transparent; text-shadow: 0 0 0 #fff; position: absolute; - bottom: 3px; + bottom: 5px; right: 6px; } @@ -603,3 +608,30 @@ a:visited { margin: 0; padding: 0; } + +/* Helper Classes */ +.hacker-green { + color: $hacker-green; +} + +.money-gold { + color: $money-gold; +} + +.failure { + color: $alert-red; + text-shadow: 0 0 0 $alert-red; +} + +.success { + color: $success-green; + text-shadow: 0 0 0 $success-green; +} + +.physical-yellow { + color: $my-stat-physical; +} + +.charisma-purple { + color: $my-stat-cha-color; +} diff --git a/css/terminal.scss b/css/terminal.scss index cbc54b782..856df717c 100644 --- a/css/terminal.scss +++ b/css/terminal.scss @@ -19,6 +19,12 @@ overflow-y: scroll; background-color: var(--my-background-color); table-layout: fixed; + + .prompt { + color: var(--my-prompt-color); + margin: 0; + padding: 0; + } } #terminal-input { @@ -51,7 +57,6 @@ } #terminal-input-header { - color: var(--my-prompt-color); white-space: pre; } diff --git a/index.html b/index.html index 66439fff0..90bcab019 100644 --- a/index.html +++ b/index.html @@ -188,9 +188,9 @@ provides information about each script's production. The scripts are categorized by the hostname of the servers on which they are running.

Total online production of - Active scripts: $0.000 / sec
- Total online production since last Aug installation: $0.000 - ($0.000 / sec)

+ Active scripts: $0.000 / sec
+ Total online production since last Aug installation: $0.000 + ($0.000 / sec)

@@ -214,8 +214,8 @@

- Money:
- Total Hacknet Node Production: + Money:
+ Total Hacknet Node Production:

x1 diff --git a/src/Infiltration.js b/src/Infiltration.js index feb8b0609..0e4a0f2cd 100644 --- a/src/Infiltration.js +++ b/src/Infiltration.js @@ -162,7 +162,7 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationKill(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY killed the security bots! Unfortunately you alerted the " + + writeInfiltrationStatusText("You SUCCESSFULLY killed the security bots! Unfortunately you alerted the " + "rest of the facility's security. The facility's security " + "level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); Player.karma -= 1; @@ -170,7 +170,7 @@ function nextInfiltrationLevel(inst) { return false; } else { var dmgTaken = Math.max(1, Math.round(1.5 * inst.securityLevel / Player.defense)); - writeInfiltrationStatusText("You FAILED to kill the security bots. The bots fight back " + + writeInfiltrationStatusText("You FAILED to kill the security bots. The bots fight back " + "and raise the alarm! You take " + dmgTaken + " damage and " + "the facility's security level increases by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); @@ -186,12 +186,12 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationAssassinate(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY assassinated the security bots without being detected!"); + writeInfiltrationStatusText("You SUCCESSFULLY assassinated the security bots without being detected!"); Player.karma -= 1; endInfiltrationLevel(inst); return false; } else { - writeInfiltrationStatusText("You FAILED to assassinate the security bots. The bots have not detected " + + writeInfiltrationStatusText("You FAILED to assassinate the security bots. The bots have not detected " + "you but are now more alert for an intruder. The facility's security level " + "has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); } @@ -209,7 +209,7 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationKill(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY killed the security guard! Unfortunately you alerted the " + + writeInfiltrationStatusText("You SUCCESSFULLY killed the security guard! Unfortunately you alerted the " + "rest of the facility's security. The facility's security " + "level has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); Player.karma -= 3; @@ -218,7 +218,7 @@ function nextInfiltrationLevel(inst) { return false; } else { var dmgTaken = Math.max(1, Math.round(inst.securityLevel / Player.defense)); - writeInfiltrationStatusText("You FAILED to kill the security guard. The guard fights back " + + writeInfiltrationStatusText("You FAILED to kill the security guard. The guard fights back " + "and raises the alarm! You take " + dmgTaken + " damage and " + "the facility's security level has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); @@ -236,13 +236,13 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationAssassinate(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY assassinated the security guard without being detected!"); + writeInfiltrationStatusText("You SUCCESSFULLY assassinated the security guard without being detected!"); Player.karma -= 3; ++Player.numPeopleKilled; endInfiltrationLevel(inst); return false; } else { - writeInfiltrationStatusText("You FAILED to assassinate the security guard. The guard has not detected " + + writeInfiltrationStatusText("You FAILED to assassinate the security guard. The guard has not detected " + "you but is now more alert for an intruder. The facility's security level " + "has increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); } @@ -259,14 +259,14 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationKnockout(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY knocked out the security guard! " + + writeInfiltrationStatusText("You SUCCESSFULLY knocked out the security guard! " + "Unfortunately you made a lot of noise and alerted other security."); writeInfiltrationStatusText("The facility's security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); endInfiltrationLevel(inst); return false; } else { var dmgTaken = Math.max(1, Math.round(inst.securityLevel / Player.defense)); - writeInfiltrationStatusText("You FAILED to knockout the security guard. The guard " + + writeInfiltrationStatusText("You FAILED to knockout the security guard. The guard " + "raises the alarm and fights back! You take " + dmgTaken + " damage and " + "the facility's security level increases by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); if (Player.takeDamage(dmgTaken)) { @@ -282,13 +282,13 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationStealthKnockout(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY knocked out the security guard without making " + + writeInfiltrationStatusText("You SUCCESSFULLY knocked out the security guard without making " + "any noise!"); endInfiltrationLevel(inst); return false; } else { var dmgTaken = Math.max(1, Math.round(inst.securityLevel / Player.defense)); - writeInfiltrationStatusText("You FAILED to stealthily knockout the security guard. The guard " + + writeInfiltrationStatusText("You FAILED to stealthily knockout the security guard. The guard " + "raises the alarm and fights back! You take " + dmgTaken + " damage and " + "the facility's security level increases by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); if (Player.takeDamage(dmgTaken)) { @@ -304,12 +304,12 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationHack(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY hacked and disabled the security system!"); + writeInfiltrationStatusText("You SUCCESSFULLY hacked and disabled the security system!"); writeInfiltrationStatusText("The facility's security level increased by " + ((res[1]*100) - 100).toString() + "%"); endInfiltrationLevel(inst); return false; } else { - writeInfiltrationStatusText("You FAILED to hack the security system. The facility's " + + writeInfiltrationStatusText("You FAILED to hack the security system. The facility's " + "security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); } updateInfiltrationButtons(inst, scenario); @@ -321,12 +321,12 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationDestroySecurity(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY and violently destroy the security system!"); + writeInfiltrationStatusText("You SUCCESSFULLY and violently destroy the security system!"); writeInfiltrationStatusText("The facility's security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); endInfiltrationLevel(inst); return false; } else { - writeInfiltrationStatusText("You FAILED to destroy the security system. The facility's " + + writeInfiltrationStatusText("You FAILED to destroy the security system. The facility's " + "security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); } updateInfiltrationButtons(inst, scenario); @@ -338,11 +338,11 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationSneak(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY sneak past the security undetected!"); + writeInfiltrationStatusText("You SUCCESSFULLY sneak past the security undetected!"); endInfiltrationLevel(inst); return false; } else { - writeInfiltrationStatusText("You FAILED and were detected while trying to sneak past security! The facility's " + + writeInfiltrationStatusText("You FAILED and were detected while trying to sneak past security! The facility's " + "security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); } updateInfiltrationButtons(inst, scenario); @@ -354,12 +354,12 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationPickLockedDoor(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY pick the locked door!"); + writeInfiltrationStatusText("You SUCCESSFULLY pick the locked door!"); writeInfiltrationStatusText("The facility's security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); endInfiltrationLevel(inst); return false; } else { - writeInfiltrationStatusText("You FAILED to pick the locked door. The facility's security level " + + writeInfiltrationStatusText("You FAILED to pick the locked door. The facility's security level " + "increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); } updateInfiltrationButtons(inst, scenario); @@ -377,13 +377,13 @@ function nextInfiltrationLevel(inst) { } var res = attemptInfiltrationBribe(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY bribed a guard to let you through " + + writeInfiltrationStatusText("You SUCCESSFULLY bribed a guard to let you through " + "to the next clearance level for $" + bribeAmt); Player.loseMoney(bribeAmt); endInfiltrationLevel(inst); return false; } else { - writeInfiltrationStatusText("You FAILED to bribe a guard! The guard is alerting " + + writeInfiltrationStatusText("You FAILED to bribe a guard! The guard is alerting " + "other security guards about your presence! The facility's " + "security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); } @@ -396,12 +396,12 @@ function nextInfiltrationLevel(inst) { if (!e.isTrusted) {return false;} var res = attemptInfiltrationEscape(inst); if (res[0]) { - writeInfiltrationStatusText("You SUCCESSFULLY escape from the facility with the stolen classified " + + writeInfiltrationStatusText("You SUCCESSFULLY escape from the facility with the stolen classified " + "documents and company secrets!"); endInfiltration(inst, true); return false; } else { - writeInfiltrationStatusText("You FAILED to escape from the facility. You took 1 damage. The facility's " + + writeInfiltrationStatusText("You FAILED to escape from the facility. You took 1 damage. The facility's " + "security level increased by " + formatNumber((res[1]*100)-100, 2).toString() + "%"); if (Player.takeDamage(1)) { endInfiltration(inst, false); @@ -469,17 +469,17 @@ function updateInfiltrationLevelText(inst) { var expMultiplier = 2 * inst.clearanceLevel / inst.maxClearanceLevel; document.getElementById("infiltration-level-text").innerHTML = - "Facility name: " + inst.companyName + "
" + + "Facility name:   " + inst.companyName + "
" + "Clearance Level: " + inst.clearanceLevel + "
" + - "Security Level: " + formatNumber(inst.securityLevel, 3) + "

" + + "Security Level:  " + formatNumber(inst.securityLevel, 3) + "

" + "Total reputation value of secrets stolen: " + formatNumber(totalValue, 3) + "
" + - "Total monetary value of secrets stolen: $" + formatNumber(totalMoneyValue, 2) + "

" + + "Total monetary value of secrets stolen:  $" + formatNumber(totalMoneyValue, 2) + "

" + "Hack exp gained: " + formatNumber(inst.hackingExpGained * expMultiplier, 3) + "
" + - "Str exp gained: " + formatNumber(inst.strExpGained * expMultiplier, 3) + "
" + - "Def exp gained: " + formatNumber(inst.defExpGained * expMultiplier, 3) + "
" + - "Dex exp gained: " + formatNumber(inst.dexExpGained * expMultiplier, 3) + "
" + - "Agi exp gained: " + formatNumber(inst.agiExpGained * expMultiplier, 3) + "
" + - "Cha exp gained: " + formatNumber(inst.chaExpGained * expMultiplier, 3); + "Str exp gained:  " + formatNumber(inst.strExpGained * expMultiplier, 3) + "
" + + "Def exp gained:  " + formatNumber(inst.defExpGained * expMultiplier, 3) + "
" + + "Dex exp gained:  " + formatNumber(inst.dexExpGained * expMultiplier, 3) + "
" + + "Agi exp gained:  " + formatNumber(inst.agiExpGained * expMultiplier, 3) + "
" + + "Cha exp gained:  " + formatNumber(inst.chaExpGained * expMultiplier, 3); } function updateInfiltrationButtons(inst, scenario) { diff --git a/src/Location.js b/src/Location.js index f7cb96f31..4abaee68f 100644 --- a/src/Location.js +++ b/src/Location.js @@ -1001,7 +1001,7 @@ function displayLocationContent() { slumsDealDrugs.innerHTML = "Deal Drugs (" + (drugsChance*100).toFixed(3) + "% chance of success)"; slumsDealDrugs.innerHTML += ' Attempt to deal drugs '; slumsBondForgery.style.display = "block"; - slumsBondForgery.innerHTML = "Bond Forgery(" + (bondChance*100).toFixed(3) + "% chance of success)"; + slumsBondForgery.innerHTML = "Bond Forgery (" + (bondChance*100).toFixed(3) + "% chance of success)"; slumsBondForgery.innerHTML += " Attempt to forge corporate bonds"; slumsTrafficArms.style.display = "block"; slumsTrafficArms.innerHTML = "Traffick Illegal Arms (" + (armsChance*100).toFixed(3) + "% chance of success)"; diff --git a/src/Terminal.js b/src/Terminal.js index d87277a60..996f84aa8 100644 --- a/src/Terminal.js +++ b/src/Terminal.js @@ -65,10 +65,10 @@ $(document).keydown(function(event) { event.preventDefault(); //Prevent newline from being entered in Script Editor var command = $('input[class=terminal-input]').val(); post( - "[" + + "[" + (FconfSettings.ENABLE_TIMESTAMPS ? getTimestamp() + " " : "") + Player.getCurrentServer().hostname + - " ~]> " + command + " ~]> " + command ); if (command.length > 0) { @@ -520,7 +520,7 @@ let Terminal = { resetTerminalInput: function() { document.getElementById("terminal-input-td").innerHTML = - "
[" + Player.getCurrentServer().hostname + " ~]" + "$
" + + "
[" + Player.getCurrentServer().hostname + " ~]" + "$
" + ''; var hdr = document.getElementById("terminal-input-header"); hdr.style.display = "inline"; diff --git a/utils/JSONReviver.d.ts b/utils/JSONReviver.d.ts index 08ff98bd4..f4405df83 100644 --- a/utils/JSONReviver.d.ts +++ b/utils/JSONReviver.d.ts @@ -7,4 +7,4 @@ export function Generic_toJSON(ctorName: string, obj: object, keys?: string[]): export function Reviver(key, value: IReviverValue); export namespace Reviver { export var constructors: any; -} \ No newline at end of file +} From 0cc6d81309ad7300bec38cdd81f13709f4e3e13c Mon Sep 17 00:00:00 2001 From: Mat Jaworski Date: Thu, 6 Sep 2018 21:58:27 +1000 Subject: [PATCH 2/3] Updated the src/index.html as per my previous PR updates in ./index --- index.html | 26 +++++++++++++------------- src/index.html | 34 +++++++++++++++++----------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/index.html b/index.html index 483f08745..2df50a3b7 100644 --- a/index.html +++ b/index.html @@ -201,19 +201,19 @@ The Hacknet is a global, decentralized network of machines. It is used by hackers all around the world to anonymously share computing power and perform distributed cyberattacks without the fear of being traced. -

+

Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its resources to the Hacknet network. This allows you to take a small percentage of profits from hacks performed on the network. Essentially, you are renting out your Node's computing power. -

+

Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded in order to increase its computing power and thereby increase the profit you earn from it.

Purchase Hacknet Node -
+

- Money:
+ Money:
Total Hacknet Node Production:

@@ -623,7 +623,7 @@

You have entered the Slums, a poverty-ridden district filled with gangs, criminals, and other shadowy entities. The city's government and police have neglected this area for years... -


+


In the Slums, you can commit crimes to earn money and experience. Crime attempts are not always successful. Your chance at successfully committing a crime is determined by your stats.

@@ -670,7 +670,7 @@

- Welcome to the World Stock Exchange (WSE)!

+ Welcome to the World Stock Exchange (WSE)!

To begin trading, you must first purchase an account. WSE accounts will persist after you 'reset' by installing Augmentations. @@ -683,7 +683,7 @@ TIX, short for Trade Information eXchange, is the communications protocol supported by the WSE. Purchasing access to the TIX API lets you write code to create your own algorithmic/automated trading strategies. -

+

If you purchase access to the TIX API, you will retain that access even after you 'reset' by installing Augmentations.

@@ -693,7 +693,7 @@

Four Sigma's (4S) Market Data Feed provides information about stocks that will help your trading strategies. -

+

If you purchase access to 4S Market Data and/or the 4S TIX API, you will retain that access even after you 'reset' by installing Augmentations.

@@ -711,7 +711,7 @@ Expand tickers Collapse tickers -

+

Update Watchlist
    @@ -753,7 +753,7 @@

    - Would you like to join?

    + Would you like to join?

    Warning: Joining this faction may prevent you from joining other factions during this run!

    Yes @@ -766,8 +766,8 @@ @@ -853,7 +853,7 @@
    ×

    Game Options

    -
    +
    diff --git a/src/index.html b/src/index.html index e3e0cf485..c1b65ec74 100644 --- a/src/index.html +++ b/src/index.html @@ -189,9 +189,9 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %> provides information about each script's production. The scripts are categorized by the hostname of the servers on which they are running.

    Total online production of - Active scripts: $0.000 / sec
    - Total online production since last Aug installation: $0.000 - ($0.000 / sec)

    + Active scripts: $0.000 / sec
    + Total online production since last Aug installation: $0.000 + ($0.000 / sec)

    @@ -203,20 +203,20 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %> The Hacknet is a global, decentralized network of machines. It is used by hackers all around the world to anonymously share computing power and perform distributed cyberattacks without the fear of being traced. -

    +

    Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its resources to the Hacknet network. This allows you to take a small percentage of profits from hacks performed on the network. Essentially, you are renting out your Node's computing power. -

    +

    Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded in order to increase its computing power and thereby increase the profit you earn from it.

    Purchase Hacknet Node -
    +

    - Money:
    - Total Hacknet Node Production: + Money:
    + Total Hacknet Node Production:

    x1 @@ -627,7 +627,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>

    You have entered the Slums, a poverty-ridden district filled with gangs, criminals, and other shadowy entities. The city's government and police have neglected this area for years... -


    +


    In the Slums, you can commit crimes to earn money and experience. Crime attempts are not always successful. Your chance at successfully committing a crime is determined by your stats.

    @@ -674,7 +674,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>

    - Welcome to the World Stock Exchange (WSE)!

    + Welcome to the World Stock Exchange (WSE)!

    To begin trading, you must first purchase an account. WSE accounts will persist after you 'reset' by installing Augmentations. @@ -687,7 +687,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %> TIX, short for Trade Information eXchange, is the communications protocol supported by the WSE. Purchasing access to the TIX API lets you write code to create your own algorithmic/automated trading strategies. -

    +

    If you purchase access to the TIX API, you will retain that access even after you 'reset' by installing Augmentations.

    @@ -697,7 +697,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>

    Four Sigma's (4S) Market Data Feed provides information about stocks that will help your trading strategies. -

    +

    If you purchase access to 4S Market Data and/or the 4S TIX API, you will retain that access even after you 'reset' by installing Augmentations.

    @@ -715,7 +715,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %> Expand tickers Collapse tickers -

    +

    Update Watchlist
      @@ -757,7 +757,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>

      - Would you like to join?

      + Would you like to join?

      Warning: Joining this faction may prevent you from joining other factions during this run!

      Yes @@ -770,8 +770,8 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %> @@ -857,7 +857,7 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %>
      ×

      Game Options

      -
      +
      From f721e21622ecf5e379ef2a5a54e2a39605fe31fa Mon Sep 17 00:00:00 2001 From: Mat Jaworski Date: Fri, 7 Sep 2018 00:15:36 +1000 Subject: [PATCH 3/3] More minor font colour and Infiltration details updates --- css/_theme.scss | 3 ++- css/popupboxes.scss | 10 ++++++++++ css/styles.scss | 4 ++++ index.html | 30 +++++++++++++++--------------- src/Faction.js | 2 +- src/Infiltration.js | 29 +++++++++++++++-------------- src/Player.js | 2 +- src/SaveObject.js | 6 +++--- src/engine.js | 6 +++--- src/index.html | 4 ++-- utils/InfiltrationBox.js | 10 +++++----- 11 files changed, 61 insertions(+), 45 deletions(-) diff --git a/css/_theme.scss b/css/_theme.scss index 54c868bca..0b727d702 100644 --- a/css/_theme.scss +++ b/css/_theme.scss @@ -6,11 +6,12 @@ $hacker-green: #adff2f; $success-green: #3adb76; $alert-red: #ff2929; $money-gold: #ffd700; +$light-yellow: #faffdf; /* Attributes */ $my-stat-hp-color: #dd3434; $my-stat-money-color: $money-gold; $my-stat-hack-color: $hacker-green; -$my-stat-physical: #faffdf; +$my-stat-physical: $light-yellow; $my-stat-cha-color: #a671d1; $my-stat-int-color: #6495ed; diff --git a/css/popupboxes.scss b/css/popupboxes.scss index 453a06e7a..d6536f2c5 100644 --- a/css/popupboxes.scss +++ b/css/popupboxes.scss @@ -87,6 +87,11 @@ z-index: 2; background-color: var(--my-background-color); padding: 10px; + + p span { + padding: 0; + margin: 0; + } } .dialog-box-close-button { @@ -138,6 +143,11 @@ margin: 8px; } +#infiltration-box-content span { + padding: 0; + margin: 0; +} + #infiltration-faction-select { background-color: #000; } diff --git a/css/styles.scss b/css/styles.scss index d2156b3d8..c0ee086e3 100644 --- a/css/styles.scss +++ b/css/styles.scss @@ -618,6 +618,10 @@ a:visited { color: $money-gold; } +.light-yellow { + color: $light-yellow; +} + .failure { color: $alert-red; text-shadow: 0 0 0 $alert-red; diff --git a/index.html b/index.html index 2df50a3b7..7c6a79b0a 100644 --- a/index.html +++ b/index.html @@ -187,9 +187,9 @@ provides information about each script's production. The scripts are categorized by the hostname of the servers on which they are running.

      Total online production of - Active scripts: $0.000 / sec
      + Active scripts: $0.000 / sec
      Total online production since last Aug installation: $0.000 - ($0.000 / sec)

      + ($0.000 / sec)

      @@ -201,19 +201,19 @@ The Hacknet is a global, decentralized network of machines. It is used by hackers all around the world to anonymously share computing power and perform distributed cyberattacks without the fear of being traced. -

      +

      Here, you can purchase a Hacknet Node, a specialized machine that can connect and contribute its resources to the Hacknet network. This allows you to take a small percentage of profits from hacks performed on the network. Essentially, you are renting out your Node's computing power. -

      +

      Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded in order to increase its computing power and thereby increase the profit you earn from it.

      Purchase Hacknet Node -
      +

      - Money:
      + Money:
      Total Hacknet Node Production:

      @@ -623,7 +623,7 @@

      You have entered the Slums, a poverty-ridden district filled with gangs, criminals, and other shadowy entities. The city's government and police have neglected this area for years... -


      +


      In the Slums, you can commit crimes to earn money and experience. Crime attempts are not always successful. Your chance at successfully committing a crime is determined by your stats.

      @@ -670,7 +670,7 @@

      - Welcome to the World Stock Exchange (WSE)!

      + Welcome to the World Stock Exchange (WSE)!

      To begin trading, you must first purchase an account. WSE accounts will persist after you 'reset' by installing Augmentations. @@ -683,7 +683,7 @@ TIX, short for Trade Information eXchange, is the communications protocol supported by the WSE. Purchasing access to the TIX API lets you write code to create your own algorithmic/automated trading strategies. -

      +

      If you purchase access to the TIX API, you will retain that access even after you 'reset' by installing Augmentations.

      @@ -693,7 +693,7 @@

      Four Sigma's (4S) Market Data Feed provides information about stocks that will help your trading strategies. -

      +

      If you purchase access to 4S Market Data and/or the 4S TIX API, you will retain that access even after you 'reset' by installing Augmentations.

      @@ -711,7 +711,7 @@ Expand tickers Collapse tickers -

      +

      Update Watchlist
        @@ -753,7 +753,7 @@

        - Would you like to join?

        + Would you like to join?

        Warning: Joining this faction may prevent you from joining other factions during this run!

        Yes @@ -766,8 +766,8 @@ @@ -853,7 +853,7 @@
        ×

        Game Options

        -
        +
        diff --git a/src/Faction.js b/src/Faction.js index 688021af9..133675548 100644 --- a/src/Faction.js +++ b/src/Faction.js @@ -115,7 +115,7 @@ function factionExists(name) { // This might change in the future for balance function initFactions() { for(const name in FactionInfos) { - resetFaction(new Faction(name)); + resetFaction(new Faction(name)); } } diff --git a/src/Infiltration.js b/src/Infiltration.js index 0e4a0f2cd..504c3407f 100644 --- a/src/Infiltration.js +++ b/src/Infiltration.js @@ -429,9 +429,9 @@ function endInfiltrationLevel(inst) { BitNodeMultipliers.InfiltrationMoney; inst.secretsStolen.push(baseSecretValue); dialogBoxCreate("You found and stole a set of classified documents from the company. " + - "These classified secrets could probably be sold for money ($" + - formatNumber(secretMoneyValue, 2) + "), or they " + - "could be given to factions for reputation (" + formatNumber(secretValue, 3) + " rep)"); + "These classified secrets could probably be sold for money ($" + + formatNumber(secretMoneyValue, 2) + "), or they " + + "could be given to factions for reputation (" + formatNumber(secretValue, 3) + " rep)"); } //Increase security level based on difficulty @@ -469,17 +469,18 @@ function updateInfiltrationLevelText(inst) { var expMultiplier = 2 * inst.clearanceLevel / inst.maxClearanceLevel; document.getElementById("infiltration-level-text").innerHTML = - "Facility name:   " + inst.companyName + "
        " + - "Clearance Level: " + inst.clearanceLevel + "
        " + - "Security Level:  " + formatNumber(inst.securityLevel, 3) + "

        " + - "Total reputation value of secrets stolen: " + formatNumber(totalValue, 3) + "
        " + - "Total monetary value of secrets stolen:  $" + formatNumber(totalMoneyValue, 2) + "

        " + - "Hack exp gained: " + formatNumber(inst.hackingExpGained * expMultiplier, 3) + "
        " + - "Str exp gained:  " + formatNumber(inst.strExpGained * expMultiplier, 3) + "
        " + - "Def exp gained:  " + formatNumber(inst.defExpGained * expMultiplier, 3) + "
        " + - "Dex exp gained:  " + formatNumber(inst.dexExpGained * expMultiplier, 3) + "
        " + - "Agi exp gained:  " + formatNumber(inst.agiExpGained * expMultiplier, 3) + "
        " + - "Cha exp gained:  " + formatNumber(inst.chaExpGained * expMultiplier, 3); + "Facility name:    " + inst.companyName + "
        " + + "Clearance Level:  " + inst.clearanceLevel + "
        " + + "Security Level:   " + formatNumber(inst.securityLevel, 3) + "

        " + + "Total value of stolen secrets
        " + + "Reputation:       " + formatNumber(totalValue, 3) + "
        " + + "Money:           $" + formatNumber(totalMoneyValue, 2) + "

        " + + "Hack exp gained:  " + formatNumber(inst.hackingExpGained * expMultiplier, 3) + "
        " + + "Str exp gained:   " + formatNumber(inst.strExpGained * expMultiplier, 3) + "
        " + + "Def exp gained:   " + formatNumber(inst.defExpGained * expMultiplier, 3) + "
        " + + "Dex exp gained:   " + formatNumber(inst.dexExpGained * expMultiplier, 3) + "
        " + + "Agi exp gained:   " + formatNumber(inst.agiExpGained * expMultiplier, 3) + "
        " + + "Cha exp gained:   " + formatNumber(inst.chaExpGained * expMultiplier, 3); } function updateInfiltrationButtons(inst, scenario) { diff --git a/src/Player.js b/src/Player.js index 27ad67086..b8236a692 100644 --- a/src/Player.js +++ b/src/Player.js @@ -1072,7 +1072,7 @@ PlayerObject.prototype.workForFaction = function(numCycles) { var txt = document.getElementById("work-in-progress-text"); txt.innerHTML = "You are currently " + this.currentWorkFactionDescription + " for your faction " + faction.name + - " (Current Faction Reputation: " + formatNumber(faction.playerReputation, 0) + "). " + + " (Current Faction Reputation: " + formatNumber(faction.playerReputation, 0) + ").
        " + "You have been doing this for " + convertTimeMsToTimeElapsedString(this.timeWorked) + "

        " + "You have earned:

        " + "$" + formatNumber(this.workMoneyGained, 2) + " (" + formatNumber(this.workMoneyGainRate * cyclesPerSec, 2) + " / sec)

        " + diff --git a/src/SaveObject.js b/src/SaveObject.js index 55db3250e..1c3eae367 100644 --- a/src/SaveObject.js +++ b/src/SaveObject.js @@ -516,9 +516,9 @@ function loadImportedGame(saveObj, saveString) { Player.lastUpdate = Engine._lastUpdate; Engine.start(); //Run main game loop and Scripts loop - dialogBoxCreate("While you were offline, your scripts generated $" + - formatNumber(offlineProductionFromScripts, 2) + " and your Hacknet Nodes generated $" + - formatNumber(offlineProductionFromHacknetNodes, 2)); + dialogBoxCreate("While you were offline, your scripts generated $" + + formatNumber(offlineProductionFromScripts, 2) + " and your Hacknet Nodes generated $" + + formatNumber(offlineProductionFromHacknetNodes, 2) + ""); return true; } diff --git a/src/engine.js b/src/engine.js index 034be3ebb..f7e20b8d1 100644 --- a/src/engine.js +++ b/src/engine.js @@ -1324,9 +1324,9 @@ let Engine = { Player.lastUpdate = Engine._lastUpdate; Engine.start(); //Run main game loop and Scripts loop removeLoadingScreen(); - dialogBoxCreate("While you were offline, your scripts generated $" + - formatNumber(offlineProductionFromScripts, 2) + " and your Hacknet Nodes generated $" + - formatNumber(offlineProductionFromHacknetNodes, 2)); + dialogBoxCreate("While you were offline, your scripts generated $" + + formatNumber(offlineProductionFromScripts, 2) + " and your Hacknet Nodes generated $" + + formatNumber(offlineProductionFromHacknetNodes, 2) + ""); //Close main menu accordions for loaded game var visibleMenuTabs = [terminal, createScript, activeScripts, stats, hacknetnodes, city, tutorial, options, dev]; diff --git a/src/index.html b/src/index.html index c1b65ec74..76cfe57d3 100644 --- a/src/index.html +++ b/src/index.html @@ -189,9 +189,9 @@ if (htmlWebpackPlugin.options.googleAnalytics.trackingId) { %> provides information about each script's production. The scripts are categorized by the hostname of the servers on which they are running.

        Total online production of - Active scripts: $0.000 / sec
        + Active scripts: $0.000 / sec
        Total online production since last Aug installation: $0.000 - ($0.000 / sec)

        + ($0.000 / sec)

        diff --git a/utils/InfiltrationBox.js b/utils/InfiltrationBox.js index efd86089b..8c1290179 100644 --- a/utils/InfiltrationBox.js +++ b/utils/InfiltrationBox.js @@ -57,9 +57,9 @@ function infiltrationBoxCreate(inst) { CONSTANTS.InfiltrationRepValue * BitNodeMultipliers.InfiltrationRep; var moneyValue = totalValue * CONSTANTS.InfiltrationMoneyValue * BitNodeMultipliers.InfiltrationMoney; infiltrationSetText("You can sell the classified documents and secrets " + - "you stole from " + inst.companyName + " for $" + - formatNumber(moneyValue, 2) + " on the black market or you can give it " + - "to a faction to gain " + formatNumber(facValue, 3) + " reputation with " + + "you stole from " + inst.companyName + " for $" + + formatNumber(moneyValue, 2) + " on the black market or you can give it " + + "to a faction to gain " + formatNumber(facValue, 3) + " reputation with " + "that faction."); var selector = document.getElementById("infiltration-faction-select"); selector.innerHTML = ""; @@ -85,7 +85,7 @@ function infiltrationBoxCreate(inst) { if (!e.isTrusted) {return false;} Player.gainMoney(moneyValue); dialogBoxCreate("You sold the classified information you stole from " + inst.companyName + - " for $" + moneyValue + " on the black market!

        " + + " for $" + formatNumber(moneyValue, 2) + " on the black market!

        " + "You gained:
        " + formatNumber(inst.hackingExpGained, 3) + " hacking exp
        " + formatNumber(inst.strExpGained, 3) + " str exp
        " + @@ -111,7 +111,7 @@ function infiltrationBoxCreate(inst) { } faction.playerReputation += facValue; dialogBoxCreate("You gave the classified information you stole from " + inst.companyName + - " to " + facName + " and gained " + formatNumber(facValue, 3) + " reputation with the faction.

        " + + " to " + facName + " and gained " + formatNumber(facValue, 3) + " reputation with the faction.

        " + "You gained:
        " + formatNumber(inst.hackingExpGained, 3) + " hacking exp
        " + formatNumber(inst.strExpGained, 3) + " str exp
        " +