BUGFIX: Company's job list shows wrong starting jobs (#2391)

This commit is contained in:
catloversg
2025-11-22 11:06:31 +07:00
committed by GitHub
parent 5c271eddf1
commit ce8852f3a2
3 changed files with 19 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ export interface CompanyPositionCtorParams {
applyText?: string;
hiredText?: string;
isPartTime?: boolean;
isStartingJob?: boolean;
reqdHacking?: number;
reqdStrength?: number;
@@ -42,6 +43,9 @@ export class CompanyPosition {
/** Field type of the position (software, it, business, etc) */
field: JobField;
/** Whether this position is shown in the job list even when the player does not satisfy its requirements */
isStartingJob: boolean;
/** Title of next position to be promoted to */
nextPosition: JobName | null;
@@ -93,6 +97,7 @@ export class CompanyPosition {
constructor(name: JobName, p: CompanyPositionCtorParams) {
this.name = name;
this.field = p.field;
this.isStartingJob = p.isStartingJob ?? false;
this.nextPosition = p.nextPosition;
this.baseSalary = p.baseSalary;
this.repMultiplier = p.repMultiplier;

View File

@@ -7,6 +7,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.software0]: {
nextPosition: JobName.software1, // Junior Software Engineer
field: JobField.software,
isStartingJob: true,
baseSalary: 33,
charismaEffectiveness: 15,
charismaExpGain: 0.02,
@@ -112,6 +113,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.IT0]: {
nextPosition: JobName.IT1, // IT Analyst
field: JobField.it,
isStartingJob: true,
baseSalary: 26,
charismaEffectiveness: 10,
charismaExpGain: 0.01,
@@ -161,6 +163,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.securityEng]: {
nextPosition: JobName.software5, // Head of Engineering
field: JobField.securityEngineer,
isStartingJob: true,
baseSalary: 121,
charismaEffectiveness: 15,
charismaExpGain: 0.05,
@@ -174,6 +177,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.networkEng0]: {
nextPosition: JobName.networkEng1, // Network Administrator
field: JobField.networkEngineer,
isStartingJob: true,
baseSalary: 121,
charismaEffectiveness: 15,
charismaExpGain: 0.05,
@@ -200,6 +204,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.business0]: {
nextPosition: JobName.business1, // Business Analyst
field: JobField.business,
isStartingJob: true,
baseSalary: 46,
charismaEffectiveness: 90,
charismaExpGain: 0.08,
@@ -279,6 +284,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.security0]: {
nextPosition: JobName.security1, // Security Officer
field: JobField.security,
isStartingJob: true,
baseSalary: 50,
hackingEffectiveness: 5,
strengthEffectiveness: 20,
@@ -377,6 +383,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.agent0]: {
nextPosition: JobName.agent1, // Secret Agent
field: JobField.agent,
isStartingJob: true,
baseSalary: 330,
hackingEffectiveness: 10,
strengthEffectiveness: 15,
@@ -452,6 +459,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.waiter]: {
nextPosition: null,
field: JobField.waiter,
isStartingJob: true,
baseSalary: 22,
strengthEffectiveness: 10,
dexterityEffectiveness: 10,
@@ -469,6 +477,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.employee]: {
nextPosition: null,
field: JobField.employee,
isStartingJob: true,
baseSalary: 22,
strengthEffectiveness: 10,
dexterityEffectiveness: 10,
@@ -486,6 +495,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.softwareConsult0]: {
nextPosition: JobName.softwareConsult1, // Senior Software Consultant
field: JobField.softwareConsultant,
isStartingJob: true,
baseSalary: 66,
hackingEffectiveness: 80,
charismaEffectiveness: 20,
@@ -513,6 +523,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.businessConsult0]: {
nextPosition: JobName.businessConsult1, // Senior Business Consultant
field: JobField.businessConsultant,
isStartingJob: true,
baseSalary: 66,
hackingEffectiveness: 20,
charismaEffectiveness: 80,
@@ -541,6 +552,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.waiterPT]: {
nextPosition: null,
field: JobField.waiter,
isStartingJob: true,
baseSalary: 20,
strengthEffectiveness: 10,
dexterityEffectiveness: 10,
@@ -559,6 +571,7 @@ export function getCompanyPositionMetadata(): Record<JobName, CompanyPositionCto
[JobName.employeePT]: {
nextPosition: null,
field: JobField.employee,
isStartingJob: true,
baseSalary: 20,
strengthEffectiveness: 10,
dexterityEffectiveness: 10,

View File

@@ -23,7 +23,7 @@ export function JobListings({ company, currentPosition }: JobListingsProps): Rea
// Don't show a job if we already qualify for a later job offered by this company
if (nextJobName && qualifiedJobs.has(nextJobName)) continue;
// Don't show a job if we don't qualify for it, unless it's a starting job or a promotion from current job
if (!qualifiedJobs.has(jobName) && job.requiredReputation > 0 && jobName !== currentPosition?.nextPosition) {
if (!qualifiedJobs.has(jobName) && !job.isStartingJob && jobName !== currentPosition?.nextPosition) {
continue;
}
jobsToShow.push(job);