mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-21 23:23:51 +01:00
BLADEBURNER: Deduct karma when successfully completing action involving killing (#1784)
This commit is contained in:
parent
99aeecbd0e
commit
fe2c98e3cf
@ -52,6 +52,7 @@ import { autoCompleteTypeShorthand } from "./utils/terminalShorthands";
|
|||||||
import { resolveTeamCasualties, type OperationTeam } from "./Actions/TeamCasualties";
|
import { resolveTeamCasualties, type OperationTeam } from "./Actions/TeamCasualties";
|
||||||
import { shuffleArray } from "../Infiltration/ui/BribeGame";
|
import { shuffleArray } from "../Infiltration/ui/BribeGame";
|
||||||
import { objectAssert } from "../utils/helpers/typeAssertion";
|
import { objectAssert } from "../utils/helpers/typeAssertion";
|
||||||
|
import { throwIfReachable } from "../utils/helpers/throwIfReachable";
|
||||||
|
|
||||||
export const BladeburnerPromise: PromisePair<number> = { promise: null, resolve: null };
|
export const BladeburnerPromise: PromisePair<number> = { promise: null, resolve: null };
|
||||||
|
|
||||||
@ -822,7 +823,7 @@ export class Bladeburner implements OperationTeam {
|
|||||||
city.changeChaosByPercentage(getRandomIntInclusive(-5, 5));
|
city.changeChaosByPercentage(getRandomIntInclusive(-5, 5));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Error("Invalid Action name in completeOperation: " + this.action.name);
|
throwIfReachable(action.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -922,6 +923,14 @@ export class Bladeburner implements OperationTeam {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
isOperation ? this.completeOperation(true) : this.completeContract(true, action);
|
isOperation ? this.completeOperation(true) : this.completeContract(true, action);
|
||||||
|
/**
|
||||||
|
* If the player successfully completes a contract/operation involving killing, we deduct their karma by 1.
|
||||||
|
* The amount of reduction must be a small, flat value because the action time of contract/operation can be
|
||||||
|
* reduced to 1 second.
|
||||||
|
*/
|
||||||
|
if (action.isKill) {
|
||||||
|
Player.karma -= 1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
retValue = this.getActionStats(action, person, false);
|
retValue = this.getActionStats(action, person, false);
|
||||||
++action.failures;
|
++action.failures;
|
||||||
@ -993,6 +1002,15 @@ export class Bladeburner implements OperationTeam {
|
|||||||
`${person.whoAmI()}: ${action.name} successful! Gained ${formatNumberNoSuffix(rankGain, 1)} rank.`,
|
`${person.whoAmI()}: ${action.name} successful! Gained ${formatNumberNoSuffix(rankGain, 1)} rank.`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* If the player successfully completes a BlackOp involving killing, we deduct their karma by 15. The amount
|
||||||
|
* of reduction is higher than contract/operation because the number of BlackOps is small. It won't affect the
|
||||||
|
* balance. -15 karma is the same amount of karma for "heist" crime, which is the crime giving the highest
|
||||||
|
* "negative karma".
|
||||||
|
*/
|
||||||
|
if (action.isKill) {
|
||||||
|
Player.karma -= 15;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
retValue = this.getActionStats(action, person, false);
|
retValue = this.getActionStats(action, person, false);
|
||||||
let rankLoss = 0;
|
let rankLoss = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user