87 lines
3.6 KiB
TypeScript
Raw Normal View History

2022-05-27 23:13:35 +01:00
import { DependencyContainer, Lifecycle } from "tsyringe";
2022-06-02 00:58:26 +01:00
import type { StaticRouterModService } from "@spt-aki/services/mod/staticRouter/StaticRouterModService";
import type { IMod } from "@spt-aki/models/external/mod";
import type { ILogger } from "@spt-aki/models/spt/utils/ILogger";
2022-05-27 23:13:35 +01:00
import { Other } from "./other";
import { Items } from "./items";
import { Raids } from "./raids";
import { Traders } from "./traders";
import { Player } from "./player";
import { Notifications } from "./Notifications";
import { Fixes } from "./fixes";
import { AIOConfigHandler } from "./AIOConfigHandler";
class AIOMod implements IMod
{
private logger: ILogger;
private pkg;
public load(container: DependencyContainer): void
{
container.register<AIOConfigHandler>("AIOConfigHandler", AIOConfigHandler, {lifecycle:Lifecycle.Singleton});
container.register<Other>("AIOOther", Other, {lifecycle:Lifecycle.Singleton});
container.register<Fixes>("AIOFixes", Fixes);
container.register<Raids>("AIORaids", Raids);
container.register<Items>("AIOItems", Items);
container.register<Traders>("AIOTraders", Traders);
container.register<Player>("AIOPlayer", Player);
container.register<Notifications>("AIONotifications", Notifications);
const staticRoute = container.resolve<StaticRouterModService>("StaticRouterModService");
2022-06-02 00:58:26 +01:00
this.logger = container.resolve<ILogger>("WinstonLogger");
2022-05-27 23:13:35 +01:00
if (container.resolve<AIOConfigHandler>("AIOConfigHandler").getConfig().player.allSkillsMaster)
{
staticRoute.registerStaticRouter(
"AIOModGameVersion",
[
{
url: "/client/game/version/validate",
2022-06-02 00:58:26 +01:00
action: (url: string, info: any, sessionID: string, output: string): any =>
{
this.logger.info(sessionID);
2022-05-27 23:13:35 +01:00
return container.resolve<Player>("AIOPlayer").maxSkills(sessionID);
}
}
],
2022-06-02 00:58:26 +01:00
"aki"
2022-05-27 23:13:35 +01:00
)
}
if (container.resolve<AIOConfigHandler>("AIOConfigHandler").getConfig().other.preWipeEvents.raidersOnAllMaps)
{
staticRoute.registerStaticRouter(
"AIOModBotGen",
[
{
url: "/client/game/bot/generate",
2022-06-02 00:58:26 +01:00
action: (url: string, info: any, sessionID: string, output: string): any =>
2022-05-27 23:13:35 +01:00
{
return container.resolve<Other>("AIOOther").spawnRaidersEverywhere(info);
}
}
],
2022-06-02 00:58:26 +01:00
"aki"
2022-05-27 23:13:35 +01:00
)
}
this.pkg = require("../package.json");
this.logger.info(`Loading: ${this.pkg.name} ${this.pkg.version}`);
}
public delayedLoad(container: DependencyContainer): void
{
container.resolve<Other>("AIOOther").applyChanges();
container.resolve<Fixes>("AIOFixes").applyChanges();
container.resolve<Raids>("AIORaids").applyChanges();
container.resolve<Items>("AIOItems").applyChanges();
2022-06-02 00:58:26 +01:00
container.resolve<Traders>("AIOTraders").applyChanges();
2022-05-27 23:13:35 +01:00
container.resolve<Player>("AIOPlayer").applyChanges();
if (container.resolve<AIOConfigHandler>("AIOConfigHandler").getConfig().other.showModLogs)
{
container.resolve<Notifications>("AIONotifications").sendNotifications()
}
}
}
module.exports = { mod: new AIOMod() };