diff --git a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx
index b85dee8e7..e3723daea 100644
--- a/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx
+++ b/src/PersonObjects/Player/PlayerObjectGeneralMethods.tsx
@@ -654,6 +654,8 @@ export function finishWork(this: IPlayer, cancelled: boolean, sing = false): str
this.workRepGained *= this.cancelationPenalty();
}
+ const penaltyString = this.cancelationPenalty() === 0.5 ? "half" : "three-quarters";
+
const company = Companies[this.companyName];
company.playerReputation += this.workRepGained;
@@ -665,12 +667,12 @@ export function finishWork(this: IPlayer, cancelled: boolean, sing = false): str
reputation for the company
- {numeralWrapper.formatExp(this.workHackExpGained)} hacking exp
- {numeralWrapper.formatExp(this.workStrExpGained)} strength exp
- {numeralWrapper.formatExp(this.workDefExpGained)} defense exp
- {numeralWrapper.formatExp(this.workDexExpGained)} dexterity exp
- {numeralWrapper.formatExp(this.workAgiExpGained)} agility exp
- {numeralWrapper.formatExp(this.workChaExpGained)} charisma exp
+ {this.workHackExpGained > 0 && <>{numeralWrapper.formatExp(this.workHackExpGained)} hacking exp
>}
+ {this.workStrExpGained > 0 && <>{numeralWrapper.formatExp(this.workStrExpGained)} strength exp
>}
+ {this.workDefExpGained > 0 && <>{numeralWrapper.formatExp(this.workDefExpGained)} defense exp
>}
+ {this.workDexExpGained > 0 && <>{numeralWrapper.formatExp(this.workDexExpGained)} dexterity exp
>}
+ {this.workAgiExpGained > 0 && <>{numeralWrapper.formatExp(this.workAgiExpGained)} agility exp
>}
+ {this.workChaExpGained > 0 && <>{numeralWrapper.formatExp(this.workChaExpGained)} charisma exp
>}
>
);
@@ -680,7 +682,7 @@ export function finishWork(this: IPlayer, cancelled: boolean, sing = false): str
<>
You worked a short shift of {convertTimeMsToTimeElapsedString(this.timeWorked)}
- Since you cancelled your work early, you only gained half of the reputation you earned.
+ Since you cancelled your work early, you only gained {penaltyString} of the reputation you earned.
{content}
>
diff --git a/src/ui/WorkInProgressRoot.tsx b/src/ui/WorkInProgressRoot.tsx
index ef4d4b8f4..58b45ca09 100644
--- a/src/ui/WorkInProgressRoot.tsx
+++ b/src/ui/WorkInProgressRoot.tsx
@@ -62,20 +62,14 @@ export function WorkInProgressRoot(): React.ReactElement {
(
) reputation for this faction
- {numeralWrapper.formatExp(player.workHackExpGained)} (
- {numeralWrapper.formatExp(player.workHackExpGainRate * CYCLES_PER_SEC)} / sec) hacking exp
+ {player.workHackExpGained > 0 && <>{numeralWrapper.formatExp(player.workHackExpGained)} ({numeralWrapper.formatExp(player.workHackExpGainRate * CYCLES_PER_SEC)} / sec) hacking exp
>}
- {numeralWrapper.formatExp(player.workStrExpGained)} (
- {numeralWrapper.formatExp(player.workStrExpGainRate * CYCLES_PER_SEC)} / sec) strength exp
- {numeralWrapper.formatExp(player.workDefExpGained)} (
- {numeralWrapper.formatExp(player.workDefExpGainRate * CYCLES_PER_SEC)} / sec) defense exp
- {numeralWrapper.formatExp(player.workDexExpGained)} (
- {numeralWrapper.formatExp(player.workDexExpGainRate * CYCLES_PER_SEC)} / sec) dexterity exp
- {numeralWrapper.formatExp(player.workAgiExpGained)} (
- {numeralWrapper.formatExp(player.workAgiExpGainRate * CYCLES_PER_SEC)} / sec) agility exp
+ {player.workStrExpGained > 0 && <>{numeralWrapper.formatExp(player.workStrExpGained)} ({numeralWrapper.formatExp(player.workStrExpGainRate * CYCLES_PER_SEC)} / sec) strength exp
>}
+ {player.workDefExpGained > 0 && <>{numeralWrapper.formatExp(player.workDefExpGained)} ({numeralWrapper.formatExp(player.workDefExpGainRate * CYCLES_PER_SEC)} / sec) defense exp
>}
+ {player.workDexExpGained > 0 && <>{numeralWrapper.formatExp(player.workDexExpGained)} ({numeralWrapper.formatExp(player.workDexExpGainRate * CYCLES_PER_SEC)} / sec) dexterity exp
>}
+ {player.workAgiExpGained > 0 && <>{numeralWrapper.formatExp(player.workAgiExpGained)} ({numeralWrapper.formatExp(player.workAgiExpGainRate * CYCLES_PER_SEC)} / sec) agility exp
>}
- {numeralWrapper.formatExp(player.workChaExpGained)} (
- {numeralWrapper.formatExp(player.workChaExpGainRate * CYCLES_PER_SEC)} / sec) charisma exp
+ {player.workChaExpGained > 0 && <>{numeralWrapper.formatExp(player.workChaExpGained)} ({numeralWrapper.formatExp(player.workChaExpGainRate * CYCLES_PER_SEC)} / sec) charisma exp
>}
You will automatically finish after working for 20 hours. You can cancel earlier if you wish.
@@ -123,18 +117,12 @@ export function WorkInProgressRoot(): React.ReactElement {
You have gained:
- {numeralWrapper.formatExp(player.workHackExpGained)} (
- {numeralWrapper.formatExp(player.workHackExpGainRate * CYCLES_PER_SEC)} / sec) hacking exp
- {numeralWrapper.formatExp(player.workStrExpGained)} (
- {numeralWrapper.formatExp(player.workStrExpGainRate * CYCLES_PER_SEC)} / sec) strength exp
- {numeralWrapper.formatExp(player.workDefExpGained)} (
- {numeralWrapper.formatExp(player.workDefExpGainRate * CYCLES_PER_SEC)} / sec) defense exp
- {numeralWrapper.formatExp(player.workDexExpGained)} (
- {numeralWrapper.formatExp(player.workDexExpGainRate * CYCLES_PER_SEC)} / sec) dexterity exp
- {numeralWrapper.formatExp(player.workAgiExpGained)} (
- {numeralWrapper.formatExp(player.workAgiExpGainRate * CYCLES_PER_SEC)} / sec) agility exp
- {numeralWrapper.formatExp(player.workChaExpGained)} (
- {numeralWrapper.formatExp(player.workChaExpGainRate * CYCLES_PER_SEC)} / sec) charisma exp
+ {player.workHackExpGained > 0 && <>{numeralWrapper.formatExp(player.workHackExpGained)} ({numeralWrapper.formatExp(player.workHackExpGainRate * CYCLES_PER_SEC)} / sec) hacking exp
>}
+ {player.workStrExpGained > 0 && <>{numeralWrapper.formatExp(player.workStrExpGained)} ({numeralWrapper.formatExp(player.workStrExpGainRate * CYCLES_PER_SEC)} / sec) strength exp
>}
+ {player.workDefExpGained > 0 && <>{numeralWrapper.formatExp(player.workDefExpGained)} ({numeralWrapper.formatExp(player.workDefExpGainRate * CYCLES_PER_SEC)} / sec) defense exp
>}
+ {player.workDexExpGained > 0 && <>{numeralWrapper.formatExp(player.workDexExpGained)} ({numeralWrapper.formatExp(player.workDexExpGainRate * CYCLES_PER_SEC)} / sec) dexterity exp
>}
+ {player.workAgiExpGained > 0 && <>{numeralWrapper.formatExp(player.workAgiExpGained)} ({numeralWrapper.formatExp(player.workAgiExpGainRate * CYCLES_PER_SEC)} / sec) agility exp
>}
+ {player.workChaExpGained > 0 && <>{numeralWrapper.formatExp(player.workChaExpGained)} ({numeralWrapper.formatExp(player.workChaExpGainRate * CYCLES_PER_SEC)} / sec) charisma exp
>}
You may cancel at any time
@@ -185,26 +173,26 @@ export function WorkInProgressRoot(): React.ReactElement {
(
) reputation for this company
- {numeralWrapper.formatExp(player.workHackExpGained)} (
+ {player.workHackExpGained > 0 && <>{numeralWrapper.formatExp(player.workHackExpGained)} (
{`${numeralWrapper.formatExp(player.workHackExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) hacking exp
+ ) hacking exp
>}
- {numeralWrapper.formatExp(player.workStrExpGained)} (
+ {player.workStrExpGained > 0 && <>{numeralWrapper.formatExp(player.workStrExpGained)} (
{`${numeralWrapper.formatExp(player.workStrExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) strength exp
- {numeralWrapper.formatExp(player.workDefExpGained)} (
+ ) strength exp
>}
+ {player.workDefExpGained > 0 && <>{numeralWrapper.formatExp(player.workDefExpGained)} (
{`${numeralWrapper.formatExp(player.workDefExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) defense exp
- {numeralWrapper.formatExp(player.workDexExpGained)} (
+ ) defense exp
>}
+ {player.workDexExpGained > 0 && <>{numeralWrapper.formatExp(player.workDexExpGained)} (
{`${numeralWrapper.formatExp(player.workDexExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) dexterity exp
- {numeralWrapper.formatExp(player.workAgiExpGained)} (
+ ) dexterity exp
>}
+ {player.workAgiExpGained > 0 && <>{numeralWrapper.formatExp(player.workAgiExpGained)} (
{`${numeralWrapper.formatExp(player.workAgiExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) agility exp
+ ) agility exp
>}
- {numeralWrapper.formatExp(player.workChaExpGained)} (
+ {player.workChaExpGained > 0 && <>{numeralWrapper.formatExp(player.workChaExpGained)} (
{`${numeralWrapper.formatExp(player.workChaExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) charisma exp
+ ) charisma exp
>}
You will automatically finish after working for 8 hours. You can cancel earlier if you wish, but you will
only gain {penaltyString} of the reputation you've earned so far.
@@ -256,26 +244,26 @@ export function WorkInProgressRoot(): React.ReactElement {
) reputation for this company
- {numeralWrapper.formatExp(player.workHackExpGained)} (
+ {player.workHackExpGained > 0 && <>{numeralWrapper.formatExp(player.workHackExpGained)} (
{`${numeralWrapper.formatExp(player.workHackExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) hacking exp
+ ) hacking exp
>}
- {numeralWrapper.formatExp(player.workStrExpGained)} (
+ {player.workStrExpGained > 0 && <>{numeralWrapper.formatExp(player.workStrExpGained)} (
{`${numeralWrapper.formatExp(player.workStrExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) strength exp
- {numeralWrapper.formatExp(player.workDefExpGained)} (
+ ) strength exp
>}
+ {player.workDefExpGained > 0 && <>{numeralWrapper.formatExp(player.workDefExpGained)} (
{`${numeralWrapper.formatExp(player.workDefExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) defense exp
- {numeralWrapper.formatExp(player.workDexExpGained)} (
+ ) defense exp
>}
+ {player.workDexExpGained > 0 && <>{numeralWrapper.formatExp(player.workDexExpGained)} (
{`${numeralWrapper.formatExp(player.workDexExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) dexterity exp
- {numeralWrapper.formatExp(player.workAgiExpGained)} (
+ ) dexterity exp
>}
+ {player.workAgiExpGained > 0 && <>{numeralWrapper.formatExp(player.workAgiExpGained)} (
{`${numeralWrapper.formatExp(player.workAgiExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) agility exp
+ ) agility exp
>}
- {numeralWrapper.formatExp(player.workChaExpGained)} (
+ {player.workChaExpGained > 0 && <>{numeralWrapper.formatExp(player.workChaExpGained)} (
{`${numeralWrapper.formatExp(player.workChaExpGainRate * CYCLES_PER_SEC)} / sec`}
- ) charisma exp
+ ) charisma exp
>}
You will automatically finish after working for 8 hours. You can cancel earlier if you wish, and there will
be no penalty because this is a part-time job.