DNET: Player feedback (#2545)

This commit is contained in:
Michael Ficocelli
2026-03-19 21:07:43 -07:00
committed by GitHub
parent 73b7921ef0
commit 1b6b07faae
38 changed files with 248 additions and 108 deletions
@@ -30,6 +30,7 @@ export const calculateEntropy = (stacks = 1): Multipliers => {
crime_money: Player.mults.crime_money * nerf,
crime_success: Player.mults.crime_success * nerf,
dnet_money: Player.mults.dnet_money * nerf,
hacknet_node_money: Player.mults.hacknet_node_money * nerf,
hacknet_node_purchase_cost: Player.mults.hacknet_node_purchase_cost / nerf,
+4
View File
@@ -25,6 +25,7 @@ export interface Multipliers {
work_money: number;
crime_success: number;
crime_money: number;
dnet_money: number;
bladeburner_max_stamina: number;
bladeburner_stamina_gain: number;
bladeburner_analysis: number;
@@ -59,6 +60,7 @@ export const defaultMultipliers = (): Multipliers => {
work_money: 1,
crime_success: 1,
crime_money: 1,
dnet_money: 1,
bladeburner_max_stamina: 1,
bladeburner_stamina_gain: 1,
bladeburner_analysis: 1,
@@ -94,6 +96,7 @@ export const mergeMultipliers = (m0: Multipliers, m1: Multipliers): Multipliers
work_money: m0.work_money * m1.work_money,
crime_success: m0.crime_success * m1.crime_success,
crime_money: m0.crime_money * m1.crime_money,
dnet_money: m0.dnet_money * m1.dnet_money,
bladeburner_max_stamina: m0.bladeburner_max_stamina * m1.bladeburner_max_stamina,
bladeburner_stamina_gain: m0.bladeburner_stamina_gain * m1.bladeburner_stamina_gain,
bladeburner_analysis: m0.bladeburner_analysis * m1.bladeburner_analysis,
@@ -129,6 +132,7 @@ export const scaleMultipliers = (m0: Multipliers, v: number): Multipliers => {
work_money: (m0.work_money - 1) * v + 1,
crime_success: (m0.crime_success - 1) * v + 1,
crime_money: (m0.crime_money - 1) * v + 1,
dnet_money: (m0.dnet_money - 1) * v + 1,
bladeburner_max_stamina: (m0.bladeburner_max_stamina - 1) * v + 1,
bladeburner_stamina_gain: (m0.bladeburner_stamina_gain - 1) * v + 1,
bladeburner_analysis: (m0.bladeburner_analysis - 1) * v + 1,
@@ -499,7 +499,8 @@ export function queueAugmentation(this: PlayerObject, name: AugmentationName): v
export function gainCodingContractReward(
this: PlayerObject,
reward: ICodingContractReward | null,
difficulty = 1,
difficulty: number,
rewardScaling: number,
): string {
if (!reward) {
return `No reward for this contract`;
@@ -509,20 +510,20 @@ export function gainCodingContractReward(
case CodingContractRewardType.FactionReputation: {
const factionsThatAllowHacking = Player.factions.filter((fac) => Factions[fac].getInfo().offerHackingWork);
if (factionsThatAllowHacking.length === 0) {
return this.gainCodingContractReward({ type: CodingContractRewardType.Money }, difficulty);
return this.gainCodingContractReward({ type: CodingContractRewardType.Money }, difficulty, rewardScaling);
}
const randomFaction = factionsThatAllowHacking[getRandomIntInclusive(0, factionsThatAllowHacking.length - 1)];
const repGain = CONSTANTS.CodingContractBaseFactionRepGain * difficulty;
const repGain = CONSTANTS.CodingContractBaseFactionRepGain * difficulty * rewardScaling;
Factions[randomFaction].playerReputation += repGain;
return `Gained ${repGain} faction reputation for ${randomFaction}`;
}
case CodingContractRewardType.FactionReputationAll: {
const factionsThatAllowHacking = Player.factions.filter((fac) => Factions[fac].getInfo().offerHackingWork);
if (factionsThatAllowHacking.length === 0) {
return this.gainCodingContractReward({ type: CodingContractRewardType.Money }, difficulty);
return this.gainCodingContractReward({ type: CodingContractRewardType.Money }, difficulty, rewardScaling);
}
const totalGain = CONSTANTS.CodingContractBaseFactionRepGain * difficulty;
const totalGain = CONSTANTS.CodingContractBaseFactionRepGain * difficulty * rewardScaling;
const gainPerFaction = Math.floor(totalGain / factionsThatAllowHacking.length);
for (const facName of factionsThatAllowHacking) {
Factions[facName].playerReputation += gainPerFaction;
@@ -542,15 +543,17 @@ export function gainCodingContractReward(
: CodingContractRewardType.FactionReputationAll,
},
difficulty,
rewardScaling,
);
}
const randomCompany = companies[getRandomIntInclusive(0, companies.length - 1)];
const repGain = CONSTANTS.CodingContractBaseCompanyRepGain * difficulty;
const repGain = CONSTANTS.CodingContractBaseCompanyRepGain * difficulty * rewardScaling;
Companies[randomCompany].playerReputation += repGain;
return `Gained ${repGain} company reputation for ${randomCompany}`;
}
case CodingContractRewardType.Money: {
const moneyGain = CONSTANTS.CodingContractBaseMoneyGain * difficulty * currentNodeMults.CodingContractMoney;
const moneyGain =
CONSTANTS.CodingContractBaseMoneyGain * difficulty * currentNodeMults.CodingContractMoney * rewardScaling;
this.gainMoney(moneyGain, "codingcontract");
return `Gained ${formatMoney(moneyGain)}`;
}
+3 -2
View File
@@ -15,7 +15,7 @@ function mult(favor: number): number {
export function getHackingWorkRepGain(p: IPerson, favor: number): number {
return (
((p.skills.hacking + p.skills.intelligence + getDarknetCharismaBonus(p, 0.15) / 3) / CONSTANTS.MaxSkillLevel) *
((p.skills.hacking + p.skills.intelligence / 3 + getDarknetCharismaBonus(p, 0.1)) / CONSTANTS.MaxSkillLevel) *
p.mults.faction_rep *
calculateIntelligenceBonus(p.skills.intelligence, 1) *
mult(favor) *
@@ -30,7 +30,8 @@ export function getFactionSecurityWorkRepGain(p: IPerson, favor: number): number
p.skills.defense +
p.skills.dexterity +
p.skills.agility +
(p.skills.hacking + p.skills.intelligence + getDarknetCharismaBonus(p, 0.3)) * calculateCurrentShareBonus())) /
getDarknetCharismaBonus(p, 0.3) +
(p.skills.hacking + p.skills.intelligence) * calculateCurrentShareBonus())) /
CONSTANTS.MaxSkillLevel /
4.5;
return t * p.mults.faction_rep * mult(favor) * calculateIntelligenceBonus(p.skills.intelligence, 1);