From c584d8957ee8dcc613d5a0f14488d4bec692545b Mon Sep 17 00:00:00 2001 From: North-West-Wind Date: Mon, 23 Sep 2024 09:52:06 +0800 Subject: [PATCH 1/3] created hardlinks and fixed package dependencies --- client/package-lock.json | 15 +++++++++++++++ client/package.json | 1 + client/src/types/data.ts | 9 ++++++++- client/src/types/math.ts | 18 +++++++++--------- client/src/types/minimized.ts | 18 ++++++++++-------- client/src/types/misc.ts | 9 +++++++++ common/types/data.ts | 15 ++++++++++++++- common/types/math.ts | 8 ++++++++ common/types/minimized.ts | 22 ++++++++++++---------- package-lock.json | 15 --------------- package.json | 1 - server/package-lock.json | 17 +++++++++++++++++ server/package.json | 1 + server/src/types/data.ts | 8 ++++---- server/src/types/math.ts | 18 +++++++++--------- server/src/types/minimized.ts | 2 -- server/src/types/misc.ts | 9 +++++++++ server/src/types/packet.ts | 6 +++--- 18 files changed, 129 insertions(+), 63 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 80abf637..76ac5cd3 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "GPL-3.0-or-later", "dependencies": { + "@damienvesper/bit-buffer": "^1.0.1", "axios": "^1.6.0", "cookies-utils": "^1.0.0", "dotenv": "^16.3.1", @@ -36,6 +37,15 @@ "uglify-js": "^3.17.4" } }, + "node_modules/@damienvesper/bit-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@damienvesper/bit-buffer/-/bit-buffer-1.0.1.tgz", + "integrity": "sha512-9sRpqNevbCxTmI05mBA3WdaAB4P467XP7aiA/zwOZtWdAS90wIuokeZz9hrUgQlUUKAC4f5+/zqrblV6XdlnLA==", + "engines": { + "node": ">=18.8.0", + "pnpm": ">=8.6.0" + } + }, "node_modules/@types/howler": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/@types/howler/-/howler-2.2.7.tgz", @@ -2503,6 +2513,11 @@ } }, "dependencies": { + "@damienvesper/bit-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@damienvesper/bit-buffer/-/bit-buffer-1.0.1.tgz", + "integrity": "sha512-9sRpqNevbCxTmI05mBA3WdaAB4P467XP7aiA/zwOZtWdAS90wIuokeZz9hrUgQlUUKAC4f5+/zqrblV6XdlnLA==" + }, "@types/howler": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/@types/howler/-/howler-2.2.7.tgz", diff --git a/client/package.json b/client/package.json index 1d40ed3d..d3c136fb 100644 --- a/client/package.json +++ b/client/package.json @@ -32,6 +32,7 @@ "uglify-js": "^3.17.4" }, "dependencies": { + "@damienvesper/bit-buffer": "^1.0.1", "axios": "^1.6.0", "cookies-utils": "^1.0.0", "dotenv": "^16.3.1", diff --git a/client/src/types/data.ts b/client/src/types/data.ts index c633d0b7..68494dff 100644 --- a/client/src/types/data.ts +++ b/client/src/types/data.ts @@ -56,6 +56,7 @@ export type GunData = { tracer: TracerData animations: string[] hasBarrelImage: boolean + particleToDisplay: string }, fistPositions?: Array } @@ -135,6 +136,7 @@ export type ObstacleData = { type: string; direction?: number[] | number; position: number[]; + special?: string; [key: string]: any; } @@ -151,7 +153,7 @@ export type BuildingData = { roofs?: ObstacleData[]; mapColor?: number; subBuildings?: { - id: "string", + id: string, position: number[], direction: number[] } @@ -183,6 +185,11 @@ export type MapBuildingData = { direction?: number[]; amount?: number; includeTerrains?: string[]; + subBuildings?: { + id: string, + position: number[], + direction: number[] + } } export type MapObstacleData = { diff --git a/client/src/types/math.ts b/client/src/types/math.ts index 608b1bc6..b7bccdde 100644 --- a/client/src/types/math.ts +++ b/client/src/types/math.ts @@ -35,6 +35,10 @@ export class Vec2 { return new Vec2(-this.x, -this.y); } + invert() { + return new Vec2(this.y, this.x); + } + unit() { const mag = this.magnitude(); if (mag === 0) return Vec2.ZERO; @@ -67,9 +71,7 @@ export class Vec2 { addVec(vec: Vec2) { return new Vec2(this.x + vec.x, this.y + vec.y); } - static addDiffVec(firstVec: Vec2, secondVec: Vec2) { - return new Vec2(firstVec.x+secondVec.x, firstVec.y+secondVec.y) - } + addX(x: number) { return new Vec2(this.x + x, this.y); } @@ -81,9 +83,6 @@ export class Vec2 { scale(x: number, y: number) { return new Vec2(this.x * x, this.y * y); } - static scaleDiffVec(vec: Vec2, x: number, y: number) { - return new Vec2(vec.x * x, vec.y * y) - } scaleAll(ratio: number) { return this.scale(ratio, ratio); @@ -101,6 +100,10 @@ export class Vec2 { return Math.sqrt(this.distanceSqrTo(vec)); } + interpolate(endVec: Vec2, factor: number) { + return this.scaleAll(1-factor).addVec(endVec.scaleAll(factor)); + } + perpendicular() { return new Vec2(this.y, -this.x); } @@ -112,9 +115,6 @@ export class Vec2 { minimize() { return { x: this.x, y: this.y }; } - static interpolate(startVec: Vec2, endVec: Vec2, factor: number) { - return Vec2.addDiffVec(Vec2.scaleDiffVec(startVec, 1-factor, 1-factor), Vec2.scaleDiffVec(endVec, factor, factor)) - } } export class Line { diff --git a/client/src/types/minimized.ts b/client/src/types/minimized.ts index af220d33..e12c3073 100644 --- a/client/src/types/minimized.ts +++ b/client/src/types/minimized.ts @@ -22,14 +22,15 @@ export interface MinCircleHitbox { export type MinHitbox = MinRectHitbox | MinCircleHitbox; -export interface MinEntity { - id: string; - type: number; - position: MinVec2; - direction: MinVec2; - hitbox: MinHitbox; - animations: string[]; - despawn: boolean; +export class MinEntity { + id!: string; + type!: number; + position!: MinVec2; + direction!: MinVec2; + hitbox!: MinHitbox; + _needsToSendAnimations!: boolean + animations!: string[]; + despawn!: boolean; } export interface MinInventory { @@ -47,6 +48,7 @@ export interface MinObstacle { hitbox: MinHitbox; despawn: boolean; animations: string[]; + _needToSendAnimations: boolean; } export interface MinMinObstacle { diff --git a/client/src/types/misc.ts b/client/src/types/misc.ts index 6f380d66..4ad6d6d7 100644 --- a/client/src/types/misc.ts +++ b/client/src/types/misc.ts @@ -26,7 +26,16 @@ export enum GunColor { RED = 1, // 12 gauge BLUE = 2, // 7.62mm GREEN = 3, // 5.56mm + BLACK = 4, // .50 AE OLIVE = 5, // .308 Subsonic + ORANGE = 6, // Flare + PURPLE = 7, // .45 ACP + TEAL = 8, // 40mm + BROWN = 9, // potato + PINK = 10, // Heart + PURE_BLACK = 11, // Rainbow + CURSED = 12, + BUGLE = 13, } export type CountableString = { diff --git a/common/types/data.ts b/common/types/data.ts index 029722f9..68494dff 100644 --- a/common/types/data.ts +++ b/common/types/data.ts @@ -56,7 +56,9 @@ export type GunData = { tracer: TracerData animations: string[] hasBarrelImage: boolean - } + particleToDisplay: string + }, + fistPositions?: Array } interface MeleeStats { @@ -134,6 +136,7 @@ export type ObstacleData = { type: string; direction?: number[] | number; position: number[]; + special?: string; [key: string]: any; } @@ -149,6 +152,11 @@ export type BuildingData = { floors?: TerrainData[]; roofs?: ObstacleData[]; mapColor?: number; + subBuildings?: { + id: string, + position: number[], + direction: number[] + } } export type RedZoneDataEntry = { @@ -177,6 +185,11 @@ export type MapBuildingData = { direction?: number[]; amount?: number; includeTerrains?: string[]; + subBuildings?: { + id: string, + position: number[], + direction: number[] + } } export type MapObstacleData = { diff --git a/common/types/math.ts b/common/types/math.ts index b2c22403..b7bccdde 100644 --- a/common/types/math.ts +++ b/common/types/math.ts @@ -35,6 +35,10 @@ export class Vec2 { return new Vec2(-this.x, -this.y); } + invert() { + return new Vec2(this.y, this.x); + } + unit() { const mag = this.magnitude(); if (mag === 0) return Vec2.ZERO; @@ -96,6 +100,10 @@ export class Vec2 { return Math.sqrt(this.distanceSqrTo(vec)); } + interpolate(endVec: Vec2, factor: number) { + return this.scaleAll(1-factor).addVec(endVec.scaleAll(factor)); + } + perpendicular() { return new Vec2(this.y, -this.x); } diff --git a/common/types/minimized.ts b/common/types/minimized.ts index fa544ff5..e12c3073 100644 --- a/common/types/minimized.ts +++ b/common/types/minimized.ts @@ -22,14 +22,15 @@ export interface MinCircleHitbox { export type MinHitbox = MinRectHitbox | MinCircleHitbox; -export interface MinEntity { - id: string; - type: string; - position: MinVec2; - direction: MinVec2; - hitbox: MinHitbox; - animations: string[]; - despawn: boolean; +export class MinEntity { + id!: string; + type!: number; + position!: MinVec2; + direction!: MinVec2; + hitbox!: MinHitbox; + _needsToSendAnimations!: boolean + animations!: string[]; + despawn!: boolean; } export interface MinInventory { @@ -41,17 +42,18 @@ export interface MinInventory { export interface MinObstacle { id: string; - type: string; + type: number; position: MinVec2; direction: MinVec2; hitbox: MinHitbox; despawn: boolean; animations: string[]; + _needToSendAnimations: boolean; } export interface MinMinObstacle { id: string; - type: string; + type: number; position: MinVec2; } diff --git a/package-lock.json b/package-lock.json index c4155f4e..c70fe89d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "1.0.0", "license": "GPL-3.0-or-later", "dependencies": { - "@damienvesper/bit-buffer": "^1.0.0", "body-parser": "^1.20.2", "csv-parser": "^3.0.0", "dotenv": "^16.3.1", @@ -53,15 +52,6 @@ "node": ">=6.9.0" } }, - "node_modules/@damienvesper/bit-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@damienvesper/bit-buffer/-/bit-buffer-1.0.0.tgz", - "integrity": "sha512-lOlCSK4wFkT2vMH4gIgoXX/n6oywqljuG5znY7VHv2hvMwA+jE8r9T5txFdqxHK7P8LVdxkXhefXLM2MCDqlbw==", - "engines": { - "node": ">=18.8.0", - "pnpm": ">=8.6.0" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -3583,11 +3573,6 @@ "regenerator-runtime": "^0.14.0" } }, - "@damienvesper/bit-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@damienvesper/bit-buffer/-/bit-buffer-1.0.0.tgz", - "integrity": "sha512-lOlCSK4wFkT2vMH4gIgoXX/n6oywqljuG5znY7VHv2hvMwA+jE8r9T5txFdqxHK7P8LVdxkXhefXLM2MCDqlbw==" - }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", diff --git a/package.json b/package.json index c717684a..381cce48 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "typescript": "^5.0.2" }, "dependencies": { - "@damienvesper/bit-buffer": "^1.0.0", "body-parser": "^1.20.2", "csv-parser": "^3.0.0", "dotenv": "^16.3.1", diff --git a/server/package-lock.json b/server/package-lock.json index 240c880a..18a45fbb 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -17,6 +17,7 @@ "ws": "^8.7.0" }, "devDependencies": { + "@damienvesper/bit-buffer": "^1.0.1", "@types/msgpack-lite": "^0.1.8", "@types/node": "^17.0.38", "@types/node-fetch": "^2.6.4", @@ -25,6 +26,16 @@ "typescript": "^4.7.2" } }, + "node_modules/@damienvesper/bit-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@damienvesper/bit-buffer/-/bit-buffer-1.0.1.tgz", + "integrity": "sha512-9sRpqNevbCxTmI05mBA3WdaAB4P467XP7aiA/zwOZtWdAS90wIuokeZz9hrUgQlUUKAC4f5+/zqrblV6XdlnLA==", + "dev": true, + "engines": { + "node": ">=18.8.0", + "pnpm": ">=8.6.0" + } + }, "node_modules/@types/msgpack-lite": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/@types/msgpack-lite/-/msgpack-lite-0.1.8.tgz", @@ -306,6 +317,12 @@ } }, "dependencies": { + "@damienvesper/bit-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@damienvesper/bit-buffer/-/bit-buffer-1.0.1.tgz", + "integrity": "sha512-9sRpqNevbCxTmI05mBA3WdaAB4P467XP7aiA/zwOZtWdAS90wIuokeZz9hrUgQlUUKAC4f5+/zqrblV6XdlnLA==", + "dev": true + }, "@types/msgpack-lite": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/@types/msgpack-lite/-/msgpack-lite-0.1.8.tgz", diff --git a/server/package.json b/server/package.json index 2bb9a741..2ff7ec96 100644 --- a/server/package.json +++ b/server/package.json @@ -19,6 +19,7 @@ }, "homepage": "https://github.com/North-West-Wind/islandr.io#readme", "devDependencies": { + "@damienvesper/bit-buffer": "^1.0.1", "@types/msgpack-lite": "^0.1.8", "@types/node": "^17.0.38", "@types/node-fetch": "^2.6.4", diff --git a/server/src/types/data.ts b/server/src/types/data.ts index 7c96f224..68494dff 100644 --- a/server/src/types/data.ts +++ b/server/src/types/data.ts @@ -57,7 +57,7 @@ export type GunData = { animations: string[] hasBarrelImage: boolean particleToDisplay: string - } + }, fistPositions?: Array } @@ -153,7 +153,7 @@ export type BuildingData = { roofs?: ObstacleData[]; mapColor?: number; subBuildings?: { - id: "string", + id: string, position: number[], direction: number[] } @@ -186,10 +186,10 @@ export type MapBuildingData = { amount?: number; includeTerrains?: string[]; subBuildings?: { - id: "string", + id: string, position: number[], direction: number[] -} + } } export type MapObstacleData = { diff --git a/server/src/types/math.ts b/server/src/types/math.ts index 2f4505f7..b7bccdde 100644 --- a/server/src/types/math.ts +++ b/server/src/types/math.ts @@ -35,6 +35,10 @@ export class Vec2 { return new Vec2(-this.x, -this.y); } + invert() { + return new Vec2(this.y, this.x); + } + unit() { const mag = this.magnitude(); if (mag === 0) return Vec2.ZERO; @@ -55,9 +59,7 @@ export class Vec2 { if (this.y > 0) return angle; else return -angle; } - inverseAngle() { - return -this.angle() - } + addAngle(radian: number) { const angle = this.angle(); if (isNaN(angle)) return new Vec2(this.x, this.y); @@ -98,6 +100,10 @@ export class Vec2 { return Math.sqrt(this.distanceSqrTo(vec)); } + interpolate(endVec: Vec2, factor: number) { + return this.scaleAll(1-factor).addVec(endVec.scaleAll(factor)); + } + perpendicular() { return new Vec2(this.y, -this.x); } @@ -109,12 +115,6 @@ export class Vec2 { minimize() { return { x: this.x, y: this.y }; } - - invert() { - const oldX = this.x - const oldY = this.y - return new Vec2(this.y, this.x) - } } export class Line { diff --git a/server/src/types/minimized.ts b/server/src/types/minimized.ts index a196e7e2..e12c3073 100644 --- a/server/src/types/minimized.ts +++ b/server/src/types/minimized.ts @@ -1,5 +1,3 @@ -import { IslandrBitStream } from "../packets"; - export interface MinVec2 { x: number; y: number; diff --git a/server/src/types/misc.ts b/server/src/types/misc.ts index 6f380d66..4ad6d6d7 100644 --- a/server/src/types/misc.ts +++ b/server/src/types/misc.ts @@ -26,7 +26,16 @@ export enum GunColor { RED = 1, // 12 gauge BLUE = 2, // 7.62mm GREEN = 3, // 5.56mm + BLACK = 4, // .50 AE OLIVE = 5, // .308 Subsonic + ORANGE = 6, // Flare + PURPLE = 7, // .45 ACP + TEAL = 8, // 40mm + BROWN = 9, // potato + PINK = 10, // Heart + PURE_BLACK = 11, // Rainbow + CURSED = 12, + BUGLE = 13, } export type CountableString = { diff --git a/server/src/types/packet.ts b/server/src/types/packet.ts index 345e1640..6a7a5e4b 100644 --- a/server/src/types/packet.ts +++ b/server/src/types/packet.ts @@ -266,9 +266,9 @@ export class AnnouncePacket extends IPacketSERVER { } serialise() { super.serialise(); - this.stream.writeASCIIString(this.weaponUsed) - this.stream.writeASCIIString(this.killer) - this.stream.writeASCIIString(this.killed) + this.stream.writeASCIIString(this.weaponUsed, this.weaponUsed.length + 1); + this.stream.writeASCIIString(this.killer, this.killed.length + 1); + this.stream.writeASCIIString(this.killed, this.killed.length + 1); } } From 49ca25139f5c7d7c16253da9f06f5cb747f644dc Mon Sep 17 00:00:00 2001 From: North-West-Wind Date: Mon, 23 Sep 2024 10:35:11 +0800 Subject: [PATCH 2/3] Vec2 in-object interpolate --- client/src/deserialisers.ts | 3 ++- client/src/store/entities/ammo.ts | 4 ++-- client/src/store/entities/player.ts | 4 ++-- client/src/types/weapon.ts | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/client/src/deserialisers.ts b/client/src/deserialisers.ts index cf23b0c8..25df39f0 100644 --- a/client/src/deserialisers.ts +++ b/client/src/deserialisers.ts @@ -136,7 +136,8 @@ export function deserialiseMinObstacles(stream: IslandrBitStream): MinObstacle[] despawn: stream.readBoolean(), animations: _getAnimations(stream), roofless: new Set(), - special: "normal" + special: "normal", + _needToSendAnimations: false, // TODO: make this actually read } if (obstacle.type == ObstacleTypes.ROOF) { const size = stream.readInt8() diff --git a/client/src/store/entities/ammo.ts b/client/src/store/entities/ammo.ts index a80bcacb..b97dd6a0 100644 --- a/client/src/store/entities/ammo.ts +++ b/client/src/store/entities/ammo.ts @@ -51,10 +51,10 @@ export default class Ammo extends Entity { } render(you: Player, canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, scale: number) { - you.position = Vec2.interpolate(you.oldPos, you.position, Math.min((Date.now() - you._lastPosChange) / getTPS())); + you.position = you.oldPos.interpolate(you.position, Math.min((Date.now() - you._lastPosChange) / getTPS())); you._lastPosChange = Date.now() you.oldPos = you.position - this.position = Vec2.interpolate(this.oldPos, this.position, Math.min((Date.now() - this._lastPosChange) / getTPS())); + this.position = this.oldPos.interpolate(this.position, Math.min((Date.now() - this._lastPosChange) / getTPS())); this._lastPosChange = Date.now() this.oldPos = this.position const relative = this.position.addVec(you.position.inverse()); diff --git a/client/src/store/entities/player.ts b/client/src/store/entities/player.ts index 1da3af36..d9357e12 100644 --- a/client/src/store/entities/player.ts +++ b/client/src/store/entities/player.ts @@ -117,10 +117,10 @@ export default class Player extends Entity { } render(you: Player, canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, scale: number) { - you.position = Vec2.interpolate(you.oldPos, you.position, Math.min((Date.now() - you._lastPosChange) / getTPS())); + you.position = you.oldPos.interpolate(you.position, Math.min((Date.now() - you._lastPosChange) / getTPS())); you._lastPosChange = Date.now() you.oldPos = you.position - this.position = Vec2.interpolate(this.oldPos, this.position, Math.min((Date.now() - this._lastPosChange) / getTPS())); + this.position = this.oldPos.interpolate(this.position, Math.min((Date.now() - this._lastPosChange) / getTPS())); this._lastPosChange = Date.now() this.oldPos = this.position /*you.direction = Vec2.interpolate(you.oldDir, you.direction, Math.min((Date.now() - you._lastPosChange) / getTPS())); diff --git a/client/src/types/weapon.ts b/client/src/types/weapon.ts index 52010ea1..9af992a5 100644 --- a/client/src/types/weapon.ts +++ b/client/src/types/weapon.ts @@ -4,10 +4,10 @@ import { Renderable } from "./extenstions"; import { roundRect } from "../utils"; import { CircleHitbox, CommonAngles, CommonNumbers, Vec2 } from "./math"; import { GunData, MeleeData } from "./data"; -import { GunColor } from "../constants"; import { DEFINED_ANIMATIONS } from "../store/animations"; import { getBarrelImagePath } from "../textures"; import { getMode } from "../homepage"; +import { GunColor } from "./misc"; export enum WeaponType { MELEE = "melee", From 682356f3745cc64e7fb5d3651c38d12f3fb09d15 Mon Sep 17 00:00:00 2001 From: North-West-Wind Date: Mon, 23 Sep 2024 11:15:27 +0800 Subject: [PATCH 3/3] fixed svg for firefox --- client/assets/classic/images/game/ammos/0.svg | 2 +- client/assets/classic/images/game/ammos/1.svg | 2 +- client/assets/classic/images/game/ammos/2.svg | 2 +- client/assets/classic/images/game/ammos/3.svg | 2 +- .../images/game/proc-items/backpack/1.svg | 2 +- .../images/game/proc-items/backpack/2.svg | 2 +- .../images/game/proc-items/backpack/3.svg | 2 +- .../images/game/proc-items/helmet/1.svg | 2 +- .../images/game/proc-items/helmet/2.svg | 2 +- .../images/game/proc-items/helmet/3.svg | 2 +- .../normal/images/game/HUD/guns/ghi_cqbr.svg | 2 +- .../normal/images/game/HUD/guns/ghi_m18.svg | 2 +- .../normal/images/game/HUD/guns/ghi_mp9.svg | 2 +- .../normal/images/game/HUD/guns/ghi_stf12.svg | 2 +- .../normal/images/game/HUD/guns/ghi_svd-m.svg | 2 +- client/assets/normal/images/game/ammos/0.svg | 2 +- client/assets/normal/images/game/ammos/1.svg | 2 +- client/assets/normal/images/game/ammos/2.svg | 2 +- client/assets/normal/images/game/ammos/3.svg | 2 +- .../normal/images/game/fists/default.svg | 2 +- .../assets/normal/images/game/guns/cqbr.svg | 2 +- .../images/game/guns/gwi_kacamg_body.svg | 2 +- .../images/game/guns/gwi_kacamg_mag.svg | 2 +- .../normal/images/game/guns/gwi_meusoc.svg | 2 +- .../normal/images/game/guns/gwi_msbs.svg | 2 +- client/assets/normal/images/game/guns/m18.svg | 2 +- client/assets/normal/images/game/guns/mp9.svg | 2 +- .../assets/normal/images/game/guns/stf_12.svg | 2 +- .../assets/normal/images/game/guns/svd-m.svg | 2 +- .../assets/normal/images/game/loot_bag1.svg | 2 +- .../assets/normal/images/game/loot_bag2.svg | 2 +- .../assets/normal/images/game/loot_bag3.svg | 2 +- .../normal/images/game/loots/backpacks/1.svg | 2 +- .../normal/images/game/loots/backpacks/2.svg | 2 +- .../normal/images/game/loots/backpacks/3.svg | 2 +- .../images/game/loots/healings/coffee.svg | 2 +- .../game/loots/healings/energy_drink.svg | 2 +- .../images/game/loots/healings/medkit.svg | 2 +- .../normal/images/game/loots/healings/pie.svg | 2 +- .../images/game/loots/healings/tourniquet.svg | 2 +- .../game/loots/proc-items/helmet-level-1.svg | 2 +- .../game/loots/proc-items/helmet-level-2.svg | 2 +- .../game/loots/proc-items/helmet-level-3.svg | 2 +- .../game/loots/proc-items/vest-level-1.svg | 2 +- .../game/loots/proc-items/vest-level-2.svg | 2 +- .../game/loots/proc-items/vest-level-3.svg | 2 +- .../images/game/loots/scopes/zoom-15x.svg | 2 +- .../images/game/loots/scopes/zoom-2x.svg | 2 +- .../images/game/loots/scopes/zoom-4x.svg | 2 +- .../images/game/loots/scopes/zoom-8x.svg | 2 +- .../normal/images/game/loots/weapons/cqbr.svg | 2 +- .../normal/images/game/loots/weapons/m18.svg | 2 +- .../normal/images/game/loots/weapons/mp9.svg | 2 +- .../game/loots/weapons/new/gli_cqbr.svg | 2 +- .../game/loots/weapons/new/gli_kacamg.svg | 2 +- .../images/game/loots/weapons/new/gli_m18.svg | 2 +- .../game/loots/weapons/new/gli_meusoc.svg | 2 +- .../images/game/loots/weapons/new/gli_mp9.svg | 2 +- .../game/loots/weapons/new/gli_msbs.svg | 2 +- .../game/loots/weapons/new/gli_stf12.svg | 2 +- .../game/loots/weapons/new/gli_svdm.svg | 2 +- .../game/loots/weapons/new/gli_vector.svg | 2 +- .../images/game/loots/weapons/stf_12.svg | 2 +- .../images/game/loots/weapons/svd-m.svg | 2 +- .../normal/images/game/objects/barrel.svg | 2 +- .../images/game/objects/barrelDirty.svg | 2 +- .../assets/normal/images/game/objects/box.svg | 2 +- .../normal/images/game/objects/bush.svg | 2 +- .../images/game/objects/concrete_pillar.svg | 2 +- .../normal/images/game/objects/crate.svg | 2 +- .../normal/images/game/objects/crate_plus.svg | 2 +- .../normal/images/game/objects/desk.svg | 2 +- .../normal/images/game/objects/log_1.svg | 2 +- .../normal/images/game/objects/log_2.svg | 2 +- .../normal/images/game/objects/log_3.svg | 2 +- .../normal/images/game/objects/log_4.svg | 2 +- .../normal/images/game/objects/log_5.svg | 2 +- .../normal/images/game/objects/log_stump.svg | 2 +- .../normal/images/game/objects/pillar.svg | 2 +- .../images/game/objects/residues/box.svg | 2 +- .../images/game/objects/residues/crate.svg | 2 +- .../game/objects/residues/crate_plus.svg | 2 +- .../images/game/objects/residues/log_1.svg | 2 +- .../images/game/objects/residues/log_2.svg | 2 +- .../images/game/objects/residues/log_3.svg | 2 +- .../images/game/objects/residues/log_4.svg | 2 +- .../images/game/objects/residues/log_5.svg | 2 +- .../images/game/objects/residues/stump.svg | 2 +- .../images/game/objects/residues/woodpile.svg | 2 +- .../normal/images/game/objects/stone.svg | 2 +- .../normal/images/game/objects/tree.svg | 2 +- .../normal/images/game/objects/woodpile.svg | 2 +- .../images/game/particles/case_12ga.svg | 2 +- .../images/game/particles/case_large.svg | 2 +- .../normal/images/game/particles/case_med.svg | 2 +- .../images/game/particles/case_small.svg | 2 +- .../images/game/proc-items/backpack/1.svg | 2 +- .../images/game/proc-items/backpack/2.svg | 2 +- .../images/game/proc-items/backpack/3.svg | 2 +- .../images/game/proc-items/helmet/1.svg | 2 +- .../images/game/proc-items/helmet/2.svg | 2 +- .../images/game/proc-items/helmet/3.svg | 2 +- .../normal/images/game/skins/default.svg | 2 +- .../images/game/textures/fixed/WS/floor.svg | 2 +- .../game/textures/fixed/WS/obs_log1.svg | 2 +- .../game/textures/fixed/WS/obs_log2.svg | 2 +- .../game/textures/fixed/WS/obs_log3.svg | 2 +- .../game/textures/fixed/WS/obs_log4.svg | 2 +- .../game/textures/fixed/WS/obs_log5.svg | 2 +- .../game/textures/fixed/WS/obs_stump.svg | 2 +- .../game/textures/fixed/WS/obs_woodpile.svg | 2 +- .../game/textures/fixed/WS/residue_log.svg | 2 +- .../game/textures/fixed/WS/residue_stump.svg | 2 +- .../textures/fixed/WS/residue_woodpile.svg | 2 +- .../images/game/textures/fixed/WS/roof.svg | 2 +- .../fixed/WS/roof_shadow_woodshack.svg | 2 +- .../game/textures/fixed/WS/wall_woodshack.svg | 2 +- .../game/textures/fixed/floor_conex_blue.svg | 2 +- .../game/textures/fixed/floor_conex_red.svg | 2 +- .../game/textures/fixed/floor_warehouse.svg | 2 +- .../game/textures/fixed/roof_warehouse.svg | 2 +- .../normal/images/menu/ilndr_logo_text.svg | 2 +- client/assets/suroi_collab/loot_bag3.svg | 2 +- client/assets/svg-fixer.ts | 32 +++++++++++++++++++ 124 files changed, 155 insertions(+), 123 deletions(-) create mode 100644 client/assets/svg-fixer.ts diff --git a/client/assets/classic/images/game/ammos/0.svg b/client/assets/classic/images/game/ammos/0.svg index 40964698..7fc38669 100644 --- a/client/assets/classic/images/game/ammos/0.svg +++ b/client/assets/classic/images/game/ammos/0.svg @@ -1,5 +1,5 @@ - +