API: Added external api which returns gainExperience (#1955)

This commit is contained in:
Adam Andreatta
2025-02-20 15:57:06 -08:00
committed by GitHub
parent 3eadb0d18c
commit a25ab3dd39
13 changed files with 186 additions and 9 deletions

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [GangMemberExpGain](./bitburner.gangmemberexpgain.md) &gt; [agi\_exp](./bitburner.gangmemberexpgain.agi_exp.md)
## GangMemberExpGain.agi\_exp property
Agi EXP gain for a member after a given task
**Signature:**
```typescript
agi_exp: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [GangMemberExpGain](./bitburner.gangmemberexpgain.md) &gt; [cha\_exp](./bitburner.gangmemberexpgain.cha_exp.md)
## GangMemberExpGain.cha\_exp property
Cha EXP gain for a member after a given task
**Signature:**
```typescript
cha_exp: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [GangMemberExpGain](./bitburner.gangmemberexpgain.md) &gt; [def\_exp](./bitburner.gangmemberexpgain.def_exp.md)
## GangMemberExpGain.def\_exp property
Def EXP gain for a member after a given task
**Signature:**
```typescript
def_exp: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [GangMemberExpGain](./bitburner.gangmemberexpgain.md) &gt; [dex\_exp](./bitburner.gangmemberexpgain.dex_exp.md)
## GangMemberExpGain.dex\_exp property
Dex EXP gain for a member after a given task
**Signature:**
```typescript
dex_exp: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [GangMemberExpGain](./bitburner.gangmemberexpgain.md) &gt; [hack\_exp](./bitburner.gangmemberexpgain.hack_exp.md)
## GangMemberExpGain.hack\_exp property
Hack EXP gain for a member after a given task
**Signature:**
```typescript
hack_exp: number;
```

View File

@@ -0,0 +1,24 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [GangMemberExpGain](./bitburner.gangmemberexpgain.md)
## GangMemberExpGain interface
**Signature:**
```typescript
interface GangMemberExpGain
```
## Properties
| Property | Modifiers | Type | Description |
| --- | --- | --- | --- |
| [agi\_exp](./bitburner.gangmemberexpgain.agi_exp.md) | | number | Agi EXP gain for a member after a given task |
| [cha\_exp](./bitburner.gangmemberexpgain.cha_exp.md) | | number | Cha EXP gain for a member after a given task |
| [def\_exp](./bitburner.gangmemberexpgain.def_exp.md) | | number | Def EXP gain for a member after a given task |
| [dex\_exp](./bitburner.gangmemberexpgain.dex_exp.md) | | number | Dex EXP gain for a member after a given task |
| [hack\_exp](./bitburner.gangmemberexpgain.hack_exp.md) | | number | Hack EXP gain for a member after a given task |
| [str\_exp](./bitburner.gangmemberexpgain.str_exp.md) | | number | Str EXP gain for a member after a given task |

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [GangMemberExpGain](./bitburner.gangmemberexpgain.md) &gt; [str\_exp](./bitburner.gangmemberexpgain.str_exp.md)
## GangMemberExpGain.str\_exp property
Str EXP gain for a member after a given task
**Signature:**
```typescript
str_exp: number;
```

View File

@@ -0,0 +1,15 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [GangMemberInfo](./bitburner.gangmemberinfo.md) &gt; [expGain](./bitburner.gangmemberinfo.expgain.md)
## GangMemberInfo.expGain property
Per Cycle Exp object for each stat for this gang member.
null in the event that the member does not have a given task.
**Signature:**
```typescript
expGain: GangMemberExpGain | null;
```

View File

@@ -37,6 +37,7 @@ interface GangMemberInfo
| [dex\_mult](./bitburner.gangmemberinfo.dex_mult.md) | | number | Dexterity multiplier from equipment |
| [dex](./bitburner.gangmemberinfo.dex.md) | | number | Dexterity skill level |
| [earnedRespect](./bitburner.gangmemberinfo.earnedrespect.md) | | number | Amount of Respect earned by member since they last Ascended |
| [expGain](./bitburner.gangmemberinfo.expgain.md) | | [GangMemberExpGain](./bitburner.gangmemberexpgain.md) \| null | <p>Per Cycle Exp object for each stat for this gang member.</p><p>null in the event that the member does not have a given task.</p> |
| [hack\_asc\_mult](./bitburner.gangmemberinfo.hack_asc_mult.md) | | number | Hack multiplier from ascensions |
| [hack\_asc\_points](./bitburner.gangmemberinfo.hack_asc_points.md) | | number | Total Hack Ascension points accumulated |
| [hack\_exp](./bitburner.gangmemberinfo.hack_exp.md) | | number | Current hack experience |

View File

@@ -79,6 +79,7 @@
| [GangFormulas](./bitburner.gangformulas.md) | Gang formulas |
| [GangGenInfo](./bitburner.ganggeninfo.md) | Gang general info. |
| [GangMemberAscension](./bitburner.gangmemberascension.md) | |
| [GangMemberExpGain](./bitburner.gangmemberexpgain.md) | |
| [GangMemberInfo](./bitburner.gangmemberinfo.md) | |
| [GangMemberInstall](./bitburner.gangmemberinstall.md) | |
| [GangOtherInfoObject](./bitburner.gangotherinfoobject.md) | |

View File

@@ -14,6 +14,7 @@ import {
calculateAscensionMult,
calculateAscensionPointsGain,
} from "./formulas/formulas";
import { GangMemberExpGain } from "@nsdefs";
interface IMults {
hack: number;
@@ -147,43 +148,80 @@ export class GangMember {
};
}
gainExperience(numCycles = 1): void {
// Calculate our gain for each stat based on each modifier of member
// if no task is assigned to that member we return null, other wise we
// return an object containing our per-cycle gains for each stat.
calculateExpGain(numCycles = 1): GangMemberExpGain | null {
const task = this.getTask();
if (task === GangMemberTasks.Unassigned) return;
if (task === GangMemberTasks.Unassigned) return null;
const expValues = {
hack_exp: 0,
str_exp: 0,
def_exp: 0,
dex_exp: 0,
agi_exp: 0,
cha_exp: 0,
};
const difficultyMult = Math.pow(task.difficulty, 0.9);
const difficultyPerCycles = difficultyMult * numCycles;
const weightDivisor = 1500;
const expMult = this.expMult();
this.hack_exp +=
expValues.hack_exp +=
(task.hackWeight / weightDivisor) *
difficultyPerCycles *
expMult.hack *
this.calculateAscensionMult(this.hack_asc_points);
this.str_exp +=
expValues.str_exp +=
(task.strWeight / weightDivisor) *
difficultyPerCycles *
expMult.str *
this.calculateAscensionMult(this.str_asc_points);
this.def_exp +=
expValues.def_exp +=
(task.defWeight / weightDivisor) *
difficultyPerCycles *
expMult.def *
this.calculateAscensionMult(this.def_asc_points);
this.dex_exp +=
expValues.dex_exp +=
(task.dexWeight / weightDivisor) *
difficultyPerCycles *
expMult.dex *
this.calculateAscensionMult(this.dex_asc_points);
this.agi_exp +=
expValues.agi_exp +=
(task.agiWeight / weightDivisor) *
difficultyPerCycles *
expMult.agi *
this.calculateAscensionMult(this.agi_asc_points);
this.cha_exp +=
expValues.cha_exp +=
(task.chaWeight / weightDivisor) *
difficultyPerCycles *
expMult.cha *
this.calculateAscensionMult(this.cha_asc_points);
return expValues;
}
gainExperience(numCycles: number): void {
// Do the calculations if our function returns null meaning no task is assigned
// then we return otherwise we add our exp gains to our total values
const gains = this.calculateExpGain(numCycles);
if (gains === null) {
return;
}
this.hack_exp += gains.hack_exp;
this.str_exp += gains.str_exp;
this.def_exp += gains.def_exp;
this.dex_exp += gains.dex_exp;
this.agi_exp += gains.agi_exp;
this.cha_exp += gains.cha_exp;
}
earnRespect(numCycles = 1, gang: Gang): number {

View File

@@ -156,6 +156,7 @@ export function NetscriptGang(): InternalAPI<IGang> {
respectGain: member.calculateRespectGain(gang),
wantedLevelGain: member.calculateWantedLevelGain(gang),
moneyGain: member.calculateMoneyGain(gang),
expGain: member.calculateExpGain(),
};
},
canRecruitMember: (ctx) => () => {

View File

@@ -1,5 +1,4 @@
/** All netscript definitions */
/** @public */
interface HP {
current: number;
@@ -918,6 +917,21 @@ interface GangTerritory {
/** Wanted gain impact on task scaling */
wanted: number;
}
/** @public */
interface GangMemberExpGain {
/** Hack EXP gain for a member after a given task*/
hack_exp: number;
/** Str EXP gain for a member after a given task*/
str_exp: number;
/** Def EXP gain for a member after a given task*/
def_exp: number;
/** Dex EXP gain for a member after a given task*/
dex_exp: number;
/** Agi EXP gain for a member after a given task*/
agi_exp: number;
/** Cha EXP gain for a member after a given task*/
cha_exp: number;
}
/** @public */
interface GangMemberInfo {
@@ -1004,6 +1018,11 @@ interface GangMemberInfo {
wantedLevelGain: number;
/** Per Cycle Income for this gang member */
moneyGain: number;
/** Per Cycle Exp object for each stat for this gang member.
*
* null in the event that the member does not have a given task.
*/
expGain: GangMemberExpGain | null;
}
/** @public */