Inital release of mod

This commit is contained in:
Kaeno 2023-03-06 19:02:20 +00:00
commit 5f4286215a
8 changed files with 2684 additions and 0 deletions

9
.eslintignore Normal file
View File

@ -0,0 +1,9 @@
# Exclude these folders from linting
node_modules
dist/
types/
# Exclude these filetypes from linting
*.json
*.txt
*.exe

75
.eslintrc.json Normal file
View File

@ -0,0 +1,75 @@
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"@typescript-eslint/no-explicit-any": 0,
"@typescript-eslint/no-unused-vars": 1,
"@typescript-eslint/no-empty-interface": 0,
"@typescript-eslint/no-namespace": 0,
"@typescript-eslint/comma-dangle": 1,
"@typescript-eslint/func-call-spacing": 2,
"@typescript-eslint/quotes": 1,
"@typescript-eslint/brace-style": [
"warn",
"allman"
],
"@typescript-eslint/naming-convention": [
"warn",
{
"selector": "default",
"format": ["camelCase"],
"leadingUnderscore": "allow"
},
{
"selector": "typeLike",
"format": ["PascalCase"]
},
{
"selector": "objectLiteralProperty",
"format": ["PascalCase", "camelCase"],
"leadingUnderscore": "allow"
},
{
"selector": "typeProperty",
"format": ["PascalCase", "camelCase"],
"leadingUnderscore": "allow"
},
{
"selector": "enumMember",
"format": ["UPPER_CASE"]
}
],
"@typescript-eslint/indent": [
"warn",
4
],
"@typescript-eslint/no-unused-expressions": [
"warn",
{
"allowShortCircuit": false,
"allowTernary": false
}
],
"@typescript-eslint/keyword-spacing": [
"warn",
{
"before": true,
"after": true
}
],
"@typescript-eslint/explicit-module-boundary-types": [
"warn",
{
"allowArgumentsExplicitlyTypedAsAny": true
}
]
}
}

12
mod.code-workspace Normal file
View File

@ -0,0 +1,12 @@
{
"folders": [
{
"path": "."
}
],
"extensions": {
"recommendations": [
"dbaeumer.vscode-eslint"
]
}
}

2310
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

20
package.json Normal file
View File

@ -0,0 +1,20 @@
{
"name": "Chomps UwUifier",
"version": "1.0.0",
"main": "src/mod.js",
"license": "See License file",
"author": "Chomp Kekw",
"akiVersion": "3.5.*",
"devDependencies": {
"@types/node": "16.18.10",
"@typescript-eslint/eslint-plugin": "5.46.1",
"@typescript-eslint/parser": "5.46.1",
"bestzip": "2.2.1",
"eslint": "8.30.0",
"fs-extra": "11.1.0",
"glob": "8.0.3",
"tsyringe": "4.7.0",
"typescript": "4.9.4"
}
}

101
src/mod.js Normal file
View File

@ -0,0 +1,101 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class Mod {
postDBLoad(container) {
const DatabaseServer = container.resolve("DatabaseServer");
const logger = container.resolve("WinstonLogger");
const database = DatabaseServer.getTables();
const enlocale = database.locales.global.en;
const bearNames = database.bots.types.bear.firstName;
const usecNames = database.bots.types.usec.firstName;
for (const index in bearNames) {
bearNames[index] += "-Chan";
}
const replacementtable = {
"\n": "\n",
"\r": "\r",
" L": " L",
"L ": "L ",
"L": "W",
"Aw": "Aw",
"Tw": "Tw",
// " W": " W",
// "W": "R",
"r ": "r ",
" R": " W",
" r": " w",
"R": "W",
"r": "w",
"Ab": "Awb",
"Ac": "Awc",
// "Ad": "Adw",
"Ae": "Aw",
"Af": "Awf",
"Ag": "Agw",
"Aj": "Awj",
"Ak": "Awk",
"Am": "Awm",
"An": "Awn",
"Ap": "Awp",
"Aq": "Awq",
// "Ar": "Awr",
"Av": "Awv",
"Ax": "Awx",
"Ue": "Uwe",
"Your": "Y-Y-Youw",
"You": "UwU",
"OO": "OwO",
"With": "Wiff"
};
for (let i in replacementtable) {
replacementtable[i.toLowerCase()] = replacementtable[i].toLowerCase();
replacementtable[i.toUpperCase()] = replacementtable[i].toUpperCase();
}
for (const index in usecNames) {
usecNames[index] = this.uwuify(usecNames[index], replacementtable, logger);
usecNames[index] += "-Chan";
}
const blacklist = [];
for (const localekey in enlocale) {
if (blacklist.includes(localekey)) {
continue;
}
const value = enlocale[localekey];
if (value.includes("/color")) {
continue;
}
if (value.includes("{onlyfoundinraid}")) {
continue;
}
if (value.includes("{durability}")) {
continue;
}
if (value.includes("CHARACTER")) {
enlocale[localekey] = "CHAWAWCTER ^-^";
continue;
}
if (value.includes("Attention! This is a Beta version of Escape from Tarkov.")) {
// SHOULD BE IMPROVED
enlocale[localekey] = "Attention?!?! *looks at you* This is a Beta vewsion of Escawpe fwom Tawkov";
continue;
}
enlocale[localekey] = this.uwuify(value, replacementtable, logger);
}
}
uwuify(stringtouwuify, replacementtable, logger) {
if (stringtouwuify === "") {
return stringtouwuify;
}
var re = new RegExp(Object.keys(replacementtable).join("|"), "gi");
const string = stringtouwuify.replace(re, function (matched) {
const replacement = replacementtable[matched];
if (!replacement) {
//logger.error(`Could not find replacement for ${matched}`); Catching Error
return matched;
}
return replacementtable[matched];
});
return string;
}
}
module.exports = { mod: new Mod() };

132
src/mod.ts Normal file
View File

@ -0,0 +1,132 @@
import type { IPostDBLoadMod } from "@spt-aki/models/external/IPostDBLoadMod";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { DependencyContainer } from "tsyringe";
class Mod implements IPostDBLoadMod
{
public postDBLoad(container: DependencyContainer): void
{
const DatabaseServer: DatabaseServer = container.resolve<DatabaseServer>("DatabaseServer");
const logger = container.resolve<ILogger>("WinstonLogger");
const database = DatabaseServer.getTables();
const enlocale = database.locales.global.en;
const bearNames = database.bots.types.bear.firstName
const usecNames = database.bots.types.usec.firstName
for (const index in bearNames)
{
bearNames[index] += "-Chan"
}
const replacementtable =
{
"\n": "\n",
"\r": "\r",
" L": " L",
"L ": "L ",
"L": "W",
"Aw": "Aw",
"Tw": "Tw",
// " W": " W",
// "W": "R",
"r ": "r ",
" R": " W",
" r": " w",
"R": "W",
"r": "w",
"Ab": "Awb",
"Ac": "Awc",
// "Ad": "Adw",
"Ae": "Aw",
"Af": "Awf",
"Ag": "Agw",
"Aj": "Awj",
"Ak": "Awk",
"Am": "Awm",
"An": "Awn",
"Ap": "Awp",
"Aq": "Awq",
// "Ar": "Awr",
"Av": "Awv",
"Ax": "Awx",
"Ue": "Uwe",
"Your": "Y-Y-Youw",
"You": "UwU",
"OO": "OwO",
"With": "Wiff"
}
for (let i in replacementtable)
{
replacementtable[i.toLowerCase()] = replacementtable[i].toLowerCase()
replacementtable[i.toUpperCase()] = replacementtable[i].toUpperCase()
}
for (const index in usecNames)
{
usecNames[index]= this.uwuify(usecNames[index], replacementtable, logger)
usecNames[index] += "-Chan"
}
const blacklist = []
for (const localekey in enlocale)
{
if (blacklist.includes(localekey))
{
continue
}
const value = enlocale[localekey];
if (value.includes("/color"))
{
continue
}
if (value.includes("{onlyfoundinraid}"))
{
continue
}
if (value.includes("{durability}"))
{
continue
}
if (value.includes("CHARACTER"))
{
enlocale[localekey] = "CHAWAWCTER ^-^"
continue
}
if (value.includes("Attention! This is a Beta version of Escape from Tarkov."))
{
// SHOULD BE IMPROVED
enlocale[localekey] = "Attention?!?! *looks at you* This is a Beta vewsion of Escawpe fwom Tawkov"
continue
}
enlocale[localekey] = this.uwuify(value, replacementtable, logger)
}
}
private uwuify(stringtouwuify: string, replacementtable, logger: ILogger): string
{
if (stringtouwuify === "")
{
return stringtouwuify
}
var re = new RegExp(Object.keys(replacementtable).join("|"),"gi");
const string = stringtouwuify.replace(re, function(matched)
{
const replacement = replacementtable[matched]
if (!replacement)
{
//logger.error(`Could not find replacement for ${matched}`); Catching Error
return matched
}
return replacementtable[matched];
})
return string
}
}
module.exports = { mod: new Mod() }

25
tsconfig.json Normal file
View File

@ -0,0 +1,25 @@
{
"compilerOptions": {
"allowJs": true,
"module": "CommonJS",
"target": "es2020",
"moduleResolution": "node",
"esModuleInterop": true,
"downlevelIteration": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"resolveJsonModule": true,
"outDir": "tmp",
"baseUrl": ".",
"paths": {
"@spt-aki/*": ["./types/*"]
}
},
"lib": [
"es2020"
],
"include": [
"src/*",
"src/**/*"
]
}