2019-04-14 11:08:10 +02:00
|
|
|
import { Factions } from "../../Faction/Factions";
|
2021-09-23 19:30:13 +02:00
|
|
|
import { Faction } from "../../Faction/Faction";
|
2021-06-17 00:38:29 +02:00
|
|
|
import { Gang } from "../../Gang/Gang";
|
2022-09-20 06:14:17 +02:00
|
|
|
import { PlayerObject } from "./PlayerObject";
|
2022-04-26 14:49:12 +02:00
|
|
|
import { GangConstants } from "../../Gang/data/Constants";
|
2019-04-14 11:08:10 +02:00
|
|
|
|
2022-09-20 06:14:17 +02:00
|
|
|
export function canAccessGang(this: PlayerObject): boolean {
|
2021-09-05 01:09:30 +02:00
|
|
|
if (this.bitNodeN === 2) {
|
|
|
|
return true;
|
|
|
|
}
|
2022-04-14 07:22:50 +02:00
|
|
|
if (this.sourceFileLvl(2) <= 0) {
|
2021-09-05 01:09:30 +02:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-04-23 15:55:15 +02:00
|
|
|
return this.karma <= GangConstants.GangKarmaRequirement;
|
2019-04-14 11:08:10 +02:00
|
|
|
}
|
|
|
|
|
2022-09-20 06:14:17 +02:00
|
|
|
export function isAwareOfGang(this: PlayerObject): boolean {
|
2022-04-23 15:39:19 +02:00
|
|
|
return this.bitNodeN === 2 || this.sourceFileLvl(2) >= 1;
|
2022-04-20 23:03:25 +02:00
|
|
|
}
|
|
|
|
|
2022-09-20 06:14:17 +02:00
|
|
|
export function getGangFaction(this: PlayerObject): Faction {
|
2021-09-24 00:47:43 +02:00
|
|
|
const gang = this.gang;
|
|
|
|
if (gang === null) {
|
|
|
|
throw new Error("Cannot get gang faction because player is not in a gang.");
|
|
|
|
}
|
|
|
|
const fac = Factions[gang.facName];
|
2021-09-05 01:09:30 +02:00
|
|
|
if (fac == null) {
|
2021-09-24 00:47:43 +02:00
|
|
|
throw new Error(`Gang has invalid faction name: ${gang.facName}`);
|
2021-09-05 01:09:30 +02:00
|
|
|
}
|
2019-04-30 05:54:20 +02:00
|
|
|
|
2021-09-05 01:09:30 +02:00
|
|
|
return fac;
|
2019-04-30 05:54:20 +02:00
|
|
|
}
|
|
|
|
|
2022-09-20 06:14:17 +02:00
|
|
|
export function getGangName(this: PlayerObject): string {
|
2021-09-24 00:47:43 +02:00
|
|
|
if (!this.inGang()) return "";
|
|
|
|
const gang = this.gang;
|
|
|
|
if (gang === null) {
|
|
|
|
throw new Error("Cannot get gang faction because player is not in a gang.");
|
|
|
|
}
|
|
|
|
return gang.facName;
|
2019-05-02 00:20:14 +02:00
|
|
|
}
|
|
|
|
|
2022-09-20 06:14:17 +02:00
|
|
|
export function hasGangWith(this: PlayerObject, facName: string): boolean {
|
2021-09-24 00:47:43 +02:00
|
|
|
if (!this.inGang()) return false;
|
|
|
|
const gang = this.gang;
|
|
|
|
if (gang === null) {
|
|
|
|
throw new Error("Cannot get gang faction because player is not in a gang.");
|
|
|
|
}
|
|
|
|
return gang.facName === facName;
|
2019-04-14 11:08:10 +02:00
|
|
|
}
|
|
|
|
|
2022-09-20 06:14:17 +02:00
|
|
|
export function inGang(this: PlayerObject): boolean {
|
2021-09-05 01:09:30 +02:00
|
|
|
if (this.gang == null || this.gang == undefined) {
|
|
|
|
return false;
|
|
|
|
}
|
2019-04-14 11:08:10 +02:00
|
|
|
|
2021-09-05 01:09:30 +02:00
|
|
|
return this.gang instanceof Gang;
|
2019-04-14 11:08:10 +02:00
|
|
|
}
|
|
|
|
|
2022-09-20 06:14:17 +02:00
|
|
|
export function startGang(this: PlayerObject, factionName: string, hacking: boolean): void {
|
2021-09-05 01:09:30 +02:00
|
|
|
this.gang = new Gang(factionName, hacking);
|
2019-04-14 11:08:10 +02:00
|
|
|
|
2021-09-05 01:09:30 +02:00
|
|
|
const fac = Factions[factionName];
|
|
|
|
if (fac == null) {
|
|
|
|
throw new Error(`Invalid faction name when creating gang: ${factionName}`);
|
|
|
|
}
|
|
|
|
fac.playerReputation = 0;
|
2019-04-14 11:08:10 +02:00
|
|
|
}
|