mirror of
https://github.com/sp-tarkov/server.git
synced 2025-02-13 09:50:43 -05:00
Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0
# Conflicts: # project/assets/database/bots/types/assault.json # project/assets/database/bots/types/bossknight.json # project/assets/database/bots/types/bosszryachiy.json # project/assets/database/bots/types/followerzryachiy.json
This commit is contained in:
commit
fc606ee540
10
.drone.yml
10
.drone.yml
@ -27,7 +27,7 @@ steps:
|
|||||||
- cd ./project
|
- cd ./project
|
||||||
- pnpm install
|
- pnpm install
|
||||||
|
|
||||||
- name: Run Rome
|
- name: Run Biome
|
||||||
image: registry.sp-tarkov.com/spt/pnpm:7.25.1
|
image: registry.sp-tarkov.com/spt/pnpm:7.25.1
|
||||||
commands:
|
commands:
|
||||||
- cd ./project
|
- cd ./project
|
||||||
@ -84,7 +84,7 @@ steps:
|
|||||||
- cd ./project
|
- cd ./project
|
||||||
- pnpm install
|
- pnpm install
|
||||||
|
|
||||||
- name: Run Rome
|
- name: Run Biome
|
||||||
image: registry.sp-tarkov.com/spt/pnpm:7.25.1
|
image: registry.sp-tarkov.com/spt/pnpm:7.25.1
|
||||||
commands:
|
commands:
|
||||||
- cd ./project
|
- cd ./project
|
||||||
@ -102,7 +102,7 @@ steps:
|
|||||||
# - cd ./project
|
# - cd ./project
|
||||||
# - pnpm run test:coverage
|
# - pnpm run test:coverage
|
||||||
# depends_on:
|
# depends_on:
|
||||||
# - Run Rome
|
# - Run Biome
|
||||||
# when:
|
# when:
|
||||||
# event:
|
# event:
|
||||||
# - push
|
# - push
|
||||||
@ -128,7 +128,7 @@ steps:
|
|||||||
-Dsonar.javascript.lcov.reportPaths=./project/coverage/lcov.info
|
-Dsonar.javascript.lcov.reportPaths=./project/coverage/lcov.info
|
||||||
depends_on:
|
depends_on:
|
||||||
# - Jest coverage
|
# - Jest coverage
|
||||||
- Run Rome
|
- Run Biome
|
||||||
when:
|
when:
|
||||||
event:
|
event:
|
||||||
- push
|
- push
|
||||||
@ -165,7 +165,7 @@ steps:
|
|||||||
-Dsonar.projectVersion=$DRONE_TAG
|
-Dsonar.projectVersion=$DRONE_TAG
|
||||||
depends_on:
|
depends_on:
|
||||||
# - Jest coverage
|
# - Jest coverage
|
||||||
- Run Rome
|
- Run Biome
|
||||||
when:
|
when:
|
||||||
event:
|
event:
|
||||||
- tag
|
- tag
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "@parcel/config-default",
|
|
||||||
"transformers": {
|
|
||||||
"*.pjs": ["@parcel/transformer-js"]
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,7 +5,7 @@ WORKDIR /app
|
|||||||
COPY package.json .
|
COPY package.json .
|
||||||
RUN yarn
|
RUN yarn
|
||||||
|
|
||||||
COPY .parcelrc tsconfig.json tsconfig.base.json ./
|
COPY tsconfig.json tsconfig.base.json ./
|
||||||
COPY src ./src
|
COPY src ./src
|
||||||
RUN yarn test:comp-linux
|
RUN yarn test:comp-linux
|
||||||
|
|
||||||
|
@ -780,6 +780,7 @@
|
|||||||
"Backpack": 35,
|
"Backpack": 35,
|
||||||
"FaceCover": 5
|
"FaceCover": 5
|
||||||
},
|
},
|
||||||
|
"randomisedWeaponModSlots": [],
|
||||||
"mods": {
|
"mods": {
|
||||||
"mod_barrel": 20,
|
"mod_barrel": 20,
|
||||||
"mod_bipod": 10,
|
"mod_bipod": 10,
|
||||||
|
@ -747,7 +747,7 @@
|
|||||||
"Exploration": {
|
"Exploration": {
|
||||||
"maxExtracts": 10,
|
"maxExtracts": 10,
|
||||||
"specificExits": {
|
"specificExits": {
|
||||||
"probability": 0.5,
|
"probability": 0.4,
|
||||||
"passageRequirementWhitelist": [
|
"passageRequirementWhitelist": [
|
||||||
"None",
|
"None",
|
||||||
"TransferItem",
|
"TransferItem",
|
||||||
@ -846,7 +846,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"bodyPartProb": 0.2,
|
"bodyPartProb": 0.15,
|
||||||
"bodyParts": [{
|
"bodyParts": [{
|
||||||
"key": "Head",
|
"key": "Head",
|
||||||
"relativeProbability": 1,
|
"relativeProbability": 1,
|
||||||
@ -1052,8 +1052,8 @@
|
|||||||
"minDist": 10,
|
"minDist": 10,
|
||||||
"maxKills": 40,
|
"maxKills": 40,
|
||||||
"minKills": 15,
|
"minKills": 15,
|
||||||
"maxBossKills": 30,
|
"maxBossKills": 10,
|
||||||
"minBossKills": 15,
|
"minBossKills": 5,
|
||||||
"maxPmcKills": 15,
|
"maxPmcKills": 15,
|
||||||
"minPmcKills": 10,
|
"minPmcKills": 10,
|
||||||
"weaponRequirementProb": 0,
|
"weaponRequirementProb": 0,
|
||||||
@ -1206,7 +1206,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"bodyPartProb": 0.4,
|
"bodyPartProb": 0.25,
|
||||||
"bodyParts": [{
|
"bodyParts": [{
|
||||||
"key": "Head",
|
"key": "Head",
|
||||||
"relativeProbability": 1,
|
"relativeProbability": 1,
|
||||||
@ -1232,8 +1232,8 @@
|
|||||||
"minDist": 10,
|
"minDist": 10,
|
||||||
"maxKills": 40,
|
"maxKills": 40,
|
||||||
"minKills": 20,
|
"minKills": 20,
|
||||||
"maxBossKills": 20,
|
"maxBossKills": 14,
|
||||||
"minBossKills": 10,
|
"minBossKills": 7,
|
||||||
"maxPmcKills": 25,
|
"maxPmcKills": 25,
|
||||||
"minPmcKills": 10,
|
"minPmcKills": 10,
|
||||||
"weaponRequirementProb": 0,
|
"weaponRequirementProb": 0,
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
{
|
{
|
||||||
"appearance": {
|
"appearance": {
|
||||||
"body": {
|
"body": {
|
||||||
"5d5e7e7586f77427997cfb7f": 1,
|
"5d5e7e7586f77427997cfb7f": 9,
|
||||||
"5d5e7e8386f774393602d6fa": 1,
|
"5d5e7e8386f774393602d6fa": 4,
|
||||||
"5df8a10486f77412672a1e3a": 1,
|
"5df8a10486f77412672a1e3a": 10,
|
||||||
"5e4bb3ee86f77406975c934e": 1,
|
"5e4bb3ee86f77406975c934e": 4,
|
||||||
"5e9da1d086f774054a667134": 1,
|
"5e9da1d086f774054a667134": 8,
|
||||||
"5fd1eb3fbe3b7107d66cb645": 1
|
"5fd1eb3fbe3b7107d66cb645": 9
|
||||||
},
|
},
|
||||||
"feet": {
|
"feet": {
|
||||||
"5cc2e5d014c02e15d53d9c03": 1,
|
"5cc2e5d014c02e15d53d9c03": 8,
|
||||||
"5d28af7886f77429275dba25": 1,
|
"5d28af7886f77429275dba25": 9,
|
||||||
"5d5e7f4986f7746956659f8a": 1,
|
"5d5e7f4986f7746956659f8a": 8,
|
||||||
"5f5e410c6bdad616ad46d60b": 1,
|
"5f5e410c6bdad616ad46d60b": 4,
|
||||||
"5f5e41366760b4138443b343": 1,
|
"5f5e41366760b4138443b343": 10,
|
||||||
"5f5e41576760b4138443b344": 1
|
"5f5e41576760b4138443b344": 5
|
||||||
},
|
},
|
||||||
"hands": [
|
"hands": [
|
||||||
"5df8eac086f77412640e2ea7",
|
"5df8eac086f77412640e2ea7",
|
||||||
@ -2040,28 +2040,46 @@
|
|||||||
"standingForKill": 0
|
"standingForKill": 0
|
||||||
},
|
},
|
||||||
"firstName": [
|
"firstName": [
|
||||||
"Картавый",
|
|
||||||
"Сырок",
|
|
||||||
"Дальневосточный",
|
|
||||||
"Мутко",
|
|
||||||
"Базарыч",
|
|
||||||
"Кореш",
|
|
||||||
"Лобстер",
|
|
||||||
"Балкан",
|
|
||||||
"Логан",
|
|
||||||
"Подружка",
|
|
||||||
"Васек",
|
|
||||||
"Оливье",
|
|
||||||
"Хардбас",
|
|
||||||
"Шнырь",
|
|
||||||
"Ярик",
|
|
||||||
"Ден",
|
|
||||||
"Гарри",
|
|
||||||
"Кулек",
|
|
||||||
"Андрюша",
|
"Андрюша",
|
||||||
|
"Анимешник",
|
||||||
|
"Баба Яга",
|
||||||
|
"Балкан",
|
||||||
|
"Бастурма",
|
||||||
|
"Базарыч",
|
||||||
|
"Чёткий",
|
||||||
|
"Дальневосточный",
|
||||||
|
"Дементий",
|
||||||
|
"Дэн",
|
||||||
|
"Димон",
|
||||||
|
"Друг Дамирки",
|
||||||
|
"Гамлет",
|
||||||
|
"Гарри Поттер",
|
||||||
|
"Грустный",
|
||||||
|
"Хардбас",
|
||||||
|
"Картавый",
|
||||||
|
"Кел Гоблин",
|
||||||
|
"Киллада",
|
||||||
|
"Кореш",
|
||||||
|
"Кощей",
|
||||||
|
"Космонавт",
|
||||||
|
"Кроссфитер",
|
||||||
|
"Кулёк",
|
||||||
|
"Лобстер",
|
||||||
|
"Логан",
|
||||||
|
"Михалыч",
|
||||||
|
"Мутко",
|
||||||
|
"Огород",
|
||||||
|
"Пашка",
|
||||||
|
"Оливье",
|
||||||
|
"Подружка",
|
||||||
"Шмыга",
|
"Шмыга",
|
||||||
"Баба",
|
"Шнур",
|
||||||
"Михалыч"
|
"Сырок",
|
||||||
|
"Улётный",
|
||||||
|
"Васёк",
|
||||||
|
"Ярик",
|
||||||
|
"Кулек",
|
||||||
|
"Шнырь"
|
||||||
],
|
],
|
||||||
"generation": {
|
"generation": {
|
||||||
"items": {
|
"items": {
|
||||||
@ -2216,9 +2234,9 @@
|
|||||||
"56dff2ced2720bb4668b4567": 1
|
"56dff2ced2720bb4668b4567": 1
|
||||||
},
|
},
|
||||||
"Caliber556x45NATO": {
|
"Caliber556x45NATO": {
|
||||||
"54527a984bdc2d4e668b4567": 1,
|
"54527a984bdc2d4e668b4567": 6,
|
||||||
"54527ac44bdc2d36668b4567": 1,
|
"54527ac44bdc2d36668b4567": 5,
|
||||||
"59e6920f86f77411d82aa167": 1
|
"59e6920f86f77411d82aa167": 2
|
||||||
},
|
},
|
||||||
"Caliber57x28": {
|
"Caliber57x28": {
|
||||||
"5cc80f38e4a949001152b560": 1
|
"5cc80f38e4a949001152b560": 1
|
||||||
@ -2230,22 +2248,22 @@
|
|||||||
"59e0d99486f7744a32234762": 1
|
"59e0d99486f7744a32234762": 1
|
||||||
},
|
},
|
||||||
"Caliber762x51": {
|
"Caliber762x51": {
|
||||||
"58dd3ad986f77403051cba8f": 1,
|
"58dd3ad986f77403051cba8f": 2,
|
||||||
"5a6086ea4f39f99cd479502f": 1,
|
"5a6086ea4f39f99cd479502f": 3,
|
||||||
"5a608bf24f39f98ffc77720e": 1,
|
"5a608bf24f39f98ffc77720e": 2,
|
||||||
"5e023e53d4353e3302577c4c": 1
|
"5e023e53d4353e3302577c4c": 1
|
||||||
},
|
},
|
||||||
"Caliber9x18PM": {
|
"Caliber9x18PM": {
|
||||||
"573719762459775a626ccbc1": 1
|
"573719762459775a626ccbc1": 1
|
||||||
},
|
},
|
||||||
"Caliber9x19PARA": {
|
"Caliber9x19PARA": {
|
||||||
"56d59d3ad2720bdb418b4577": 1,
|
"56d59d3ad2720bdb418b4577": 53,
|
||||||
"5c925fa22e221601da359b7b": 1,
|
"5c925fa22e221601da359b7b": 16,
|
||||||
"5efb0da7a29a85116f6ea05f": 1
|
"5efb0da7a29a85116f6ea05f": 4
|
||||||
},
|
},
|
||||||
"Caliber9x21": {
|
"Caliber9x21": {
|
||||||
"5a26abfac4a28232980eabff": 1,
|
"5a26abfac4a28232980eabff": 3,
|
||||||
"5a26ac0ec4a28200741e1e18": 1
|
"5a26ac0ec4a28200741e1e18": 8
|
||||||
},
|
},
|
||||||
"Caliber9x39": {
|
"Caliber9x39": {
|
||||||
"5c0d668f86f7747ccb7f13b2": 1
|
"5c0d668f86f7747ccb7f13b2": 1
|
||||||
@ -2254,108 +2272,108 @@
|
|||||||
"equipment": {
|
"equipment": {
|
||||||
"ArmBand": {},
|
"ArmBand": {},
|
||||||
"ArmorVest": {
|
"ArmorVest": {
|
||||||
"5648a7494bdc2d9d488b4583": 1,
|
"5648a7494bdc2d9d488b4583": 4,
|
||||||
"5ab8e79e86f7742d8b372e78": 1,
|
"5ab8e79e86f7742d8b372e78": 2,
|
||||||
"5b44d22286f774172b0c9de8": 1,
|
"5b44d22286f774172b0c9de8": 3,
|
||||||
"5c0e51be86f774598e797894": 1,
|
"5c0e51be86f774598e797894": 4,
|
||||||
"5c0e53c886f7747fa54205c7": 1,
|
"5c0e53c886f7747fa54205c7": 1,
|
||||||
"5c0e57ba86f7747fa141986d": 1,
|
"5c0e57ba86f7747fa141986d": 4,
|
||||||
"5c0e5bab86f77461f55ed1f3": 1,
|
"5c0e5bab86f77461f55ed1f3": 3,
|
||||||
"5c0e625a86f7742d77340f62": 1,
|
"5c0e625a86f7742d77340f62": 1,
|
||||||
"5c0e655586f774045612eeb2": 1,
|
"5c0e655586f774045612eeb2": 1,
|
||||||
"5ca2151486f774244a3b8d30": 1,
|
"5ca2151486f774244a3b8d30": 2,
|
||||||
"5fd4c474dd870108a754b241": 1,
|
"5fd4c474dd870108a754b241": 1,
|
||||||
"609e8540d5c319764c2bc2e9": 1,
|
"609e8540d5c319764c2bc2e9": 2,
|
||||||
"63737f448b28897f2802b874": 1
|
"63737f448b28897f2802b874": 1
|
||||||
},
|
},
|
||||||
"Backpack": {
|
"Backpack": {
|
||||||
"545cdae64bdc2d39198b4568": 1,
|
"545cdae64bdc2d39198b4568": 2,
|
||||||
"5ca20d5986f774331e7c9602": 1,
|
"5ca20d5986f774331e7c9602": 2,
|
||||||
"5f5e467b0bc58666c37e7821": 1,
|
"5f5e467b0bc58666c37e7821": 3,
|
||||||
"6034d103ca006d2dca39b3f0": 1,
|
"6034d103ca006d2dca39b3f0": 1,
|
||||||
"6038d614d10cbf667352dd44": 1,
|
"6038d614d10cbf667352dd44": 4,
|
||||||
"60a272cc93ef783291411d8e": 1,
|
"60a272cc93ef783291411d8e": 2,
|
||||||
"60a2828e8689911a226117f9": 1,
|
"60a2828e8689911a226117f9": 7,
|
||||||
"618cfae774bb2d036a049e7c": 1,
|
"618cfae774bb2d036a049e7c": 5,
|
||||||
"619cf0335771dd3c390269ae": 1,
|
"619cf0335771dd3c390269ae": 3,
|
||||||
"62a1b7fbc30cfa1d366af586": 1
|
"62a1b7fbc30cfa1d366af586": 3
|
||||||
},
|
},
|
||||||
"Earpiece": {
|
"Earpiece": {
|
||||||
"5645bcc04bdc2d363b8b4572": 1,
|
"5645bcc04bdc2d363b8b4572": 5,
|
||||||
"5aa2ba71e5b5b000137b758f": 1,
|
"5aa2ba71e5b5b000137b758f": 5,
|
||||||
"5b432b965acfc47a8774094e": 1,
|
"5b432b965acfc47a8774094e": 5,
|
||||||
"5e4d34ca86f774264f758330": 1,
|
"5e4d34ca86f774264f758330": 5,
|
||||||
"6033fa48ffd42c541047f728": 1
|
"6033fa48ffd42c541047f728": 7
|
||||||
},
|
},
|
||||||
"Eyewear": {
|
"Eyewear": {
|
||||||
"557ff21e4bdc2d89578b4586": 1,
|
"557ff21e4bdc2d89578b4586": 12,
|
||||||
"59e770b986f7742cbd762754": 1,
|
"59e770b986f7742cbd762754": 13,
|
||||||
"5b432be65acfc433000ed01f": 1,
|
"5b432be65acfc433000ed01f": 10,
|
||||||
"603409c80ca681766b6a0fb2": 1,
|
"603409c80ca681766b6a0fb2": 4,
|
||||||
"61c18d83b00456371a66814b": 1
|
"61c18d83b00456371a66814b": 4
|
||||||
},
|
},
|
||||||
"FaceCover": {
|
"FaceCover": {
|
||||||
"572b7fa524597762b747ce82": 1,
|
"572b7fa524597762b747ce82": 2,
|
||||||
"5ab8f39486f7745cd93a1cca": 1,
|
"5ab8f39486f7745cd93a1cca": 3,
|
||||||
"5ab8f4ff86f77431c60d91ba": 1,
|
"5ab8f4ff86f77431c60d91ba": 6,
|
||||||
"5b432f3d5acfc4704b4a1dfb": 1,
|
"5b432f3d5acfc4704b4a1dfb": 19,
|
||||||
"5fd8d28367cb5e077335170f": 1,
|
"5fd8d28367cb5e077335170f": 2,
|
||||||
"60363c0c92ec1c31037959f5": 1
|
"60363c0c92ec1c31037959f5": 1
|
||||||
},
|
},
|
||||||
"FirstPrimaryWeapon": {
|
"FirstPrimaryWeapon": {
|
||||||
"5447a9cd4bdc2dbd208b4567": 1,
|
"5447a9cd4bdc2dbd208b4567": 2,
|
||||||
"576165642459773c7a400233": 1,
|
"576165642459773c7a400233": 3,
|
||||||
"57c44b372459772d2b39b8ce": 1,
|
"57c44b372459772d2b39b8ce": 2,
|
||||||
"587e02ff24597743df3deaeb": 1,
|
"587e02ff24597743df3deaeb": 1,
|
||||||
"59984ab886f7743e98271174": 1,
|
"59984ab886f7743e98271174": 1,
|
||||||
"5a367e5dc4a282000e49738f": 1,
|
"5a367e5dc4a282000e49738f": 3,
|
||||||
"5a7828548dc32e5a9c28b516": 1,
|
"5a7828548dc32e5a9c28b516": 1,
|
||||||
"5aafa857e5b5b00018480968": 1,
|
"5aafa857e5b5b00018480968": 2,
|
||||||
"5ac4cd105acfc40016339859": 1,
|
"5ac4cd105acfc40016339859": 2,
|
||||||
"5ac66cb05acfc40198510a10": 1,
|
"5ac66cb05acfc40198510a10": 2,
|
||||||
"5ba26383d4351e00334c93d9": 1,
|
"5ba26383d4351e00334c93d9": 1,
|
||||||
"5cc82d76e24e8d00134b4b83": 1,
|
"5cc82d76e24e8d00134b4b83": 2,
|
||||||
"5dcbd56fdbd3d91b3e5468d5": 1,
|
"5dcbd56fdbd3d91b3e5468d5": 2,
|
||||||
"5e00903ae9dc277128008b87": 1,
|
"5e00903ae9dc277128008b87": 3,
|
||||||
"5f2a9575926fd9352339381f": 1,
|
"5f2a9575926fd9352339381f": 1,
|
||||||
"5fbcc1d9016cce60e8341ab3": 1,
|
"5fbcc1d9016cce60e8341ab3": 3,
|
||||||
"5fc3f2d5900b1d5091531e57": 1,
|
"5fc3f2d5900b1d5091531e57": 3,
|
||||||
"60339954d62c9b14ed777c06": 1,
|
"60339954d62c9b14ed777c06": 1,
|
||||||
"618428466ef05c2ce828f218": 1,
|
"618428466ef05c2ce828f218": 1,
|
||||||
"623063e994fc3f7b302a9696": 1,
|
"623063e994fc3f7b302a9696": 1,
|
||||||
"628b9c37a733087d0d7fe84b": 1,
|
"628b9c37a733087d0d7fe84b": 2,
|
||||||
"62e14904c2699c0ec93adc47": 1,
|
"62e14904c2699c0ec93adc47": 4,
|
||||||
"62e7c4fba689e8c9c50dfc38": 1
|
"62e7c4fba689e8c9c50dfc38": 1
|
||||||
},
|
},
|
||||||
"Headwear": {
|
"Headwear": {
|
||||||
"5645bc214bdc2d363b8b4571": 1,
|
"5645bc214bdc2d363b8b4571": 2,
|
||||||
"5a154d5cfcdbcb001a3b00da": 1,
|
"5a154d5cfcdbcb001a3b00da": 1,
|
||||||
"5aa2b8d7e5b5b00014028f4a": 1,
|
"5aa2b8d7e5b5b00014028f4a": 5,
|
||||||
"5aa2ba19e5b5b00014028f4e": 1,
|
"5aa2ba19e5b5b00014028f4e": 6,
|
||||||
"5aa7d193e5b5b000171d063f": 1,
|
"5aa7d193e5b5b000171d063f": 3,
|
||||||
"5aa7e4a4e5b5b000137b76f2": 1,
|
"5aa7e4a4e5b5b000137b76f2": 2,
|
||||||
"5ac8d6885acfc400180ae7b0": 1,
|
"5ac8d6885acfc400180ae7b0": 2,
|
||||||
"5b40e1525acfc4771e1c6611": 1,
|
"5b40e1525acfc4771e1c6611": 3,
|
||||||
"5b40e2bc5acfc40016388216": 1,
|
"5b40e2bc5acfc40016388216": 2,
|
||||||
"5b40e3f35acfc40016388218": 1,
|
"5b40e3f35acfc40016388218": 3,
|
||||||
"5b40e4035acfc47a87740943": 1,
|
"5b40e4035acfc47a87740943": 2,
|
||||||
"5b432d215acfc4771e1c6624": 1,
|
"5b432d215acfc4771e1c6624": 2,
|
||||||
"5ea17ca01412a1425304d1c0": 1,
|
"5ea17ca01412a1425304d1c0": 1,
|
||||||
"5f60b34a41e30a4ab12a6947": 1,
|
"5f60b34a41e30a4ab12a6947": 2,
|
||||||
"60361b5a9a15b10d96792291": 1,
|
"60361b5a9a15b10d96792291": 1,
|
||||||
"6040de02647ad86262233012": 1,
|
"6040de02647ad86262233012": 1,
|
||||||
"61bca7cda0eae612383adf57": 1
|
"61bca7cda0eae612383adf57": 4
|
||||||
},
|
},
|
||||||
"Holster": {
|
"Holster": {
|
||||||
"56d59856d2720bd8418b456a": 1,
|
"56d59856d2720bd8418b456a": 3,
|
||||||
"59f98b4986f7746f546d2cef": 1,
|
"59f98b4986f7746f546d2cef": 2,
|
||||||
"5a17f98cfcdbcb0980087290": 1,
|
"5a17f98cfcdbcb0980087290": 2,
|
||||||
"5b1fa9b25acfc40018633c01": 1,
|
"5b1fa9b25acfc40018633c01": 1,
|
||||||
"5cadc190ae921500103bb3b6": 1,
|
"5cadc190ae921500103bb3b6": 3,
|
||||||
"5e81c3cbac2bb513793cdc75": 1,
|
"5e81c3cbac2bb513793cdc75": 25,
|
||||||
"602a9740da11d6478d5a06dc": 1,
|
"602a9740da11d6478d5a06dc": 2,
|
||||||
"6193a720f8ee7e52e42109ed": 1,
|
"6193a720f8ee7e52e42109ed": 1,
|
||||||
"63088377b5cd696784087147": 1
|
"63088377b5cd696784087147": 5
|
||||||
},
|
},
|
||||||
"Pockets": {
|
"Pockets": {
|
||||||
"5af99e9186f7747c447120b8": 1
|
"5af99e9186f7747c447120b8": 1
|
||||||
@ -2366,19 +2384,19 @@
|
|||||||
"5c0a794586f77461c458f892": 1
|
"5c0a794586f77461c458f892": 1
|
||||||
},
|
},
|
||||||
"TacticalVest": {
|
"TacticalVest": {
|
||||||
"544a5caa4bdc2d1a388b4568": 1,
|
"544a5caa4bdc2d1a388b4568": 2,
|
||||||
"5648a69d4bdc2ded0b8b457b": 1,
|
"5648a69d4bdc2ded0b8b457b": 1,
|
||||||
"5929a2a086f7744f4b234d43": 1,
|
"5929a2a086f7744f4b234d43": 5,
|
||||||
"5d5d85c586f774279a21cbdb": 1,
|
"5d5d85c586f774279a21cbdb": 5,
|
||||||
"5e9db13186f7742f845ee9d3": 1,
|
"5e9db13186f7742f845ee9d3": 4,
|
||||||
"5f5f41f56760b4138443b352": 1,
|
"5f5f41f56760b4138443b352": 5,
|
||||||
"5fd4c60f875c30179f5d04c2": 1,
|
"5fd4c60f875c30179f5d04c2": 2,
|
||||||
"603648ff5a45383c122086ac": 1,
|
"603648ff5a45383c122086ac": 1,
|
||||||
"6040dd4ddcf9592f401632d2": 1,
|
"6040dd4ddcf9592f401632d2": 2,
|
||||||
"60a621c49c197e4e8c4455e6": 1,
|
"60a621c49c197e4e8c4455e6": 10,
|
||||||
"60a6220e953894617404b00a": 1,
|
"60a6220e953894617404b00a": 1,
|
||||||
"61bc85697113f767765c7fe7": 1,
|
"61bc85697113f767765c7fe7": 2,
|
||||||
"61bcc89aef0f505f0c6cd0fc": 1,
|
"61bcc89aef0f505f0c6cd0fc": 3,
|
||||||
"639343fce101f4caa40a4ef3": 1
|
"639343fce101f4caa40a4ef3": 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -2678,26 +2696,32 @@
|
|||||||
"5c07dd120db834001c39092d"
|
"5c07dd120db834001c39092d"
|
||||||
],
|
],
|
||||||
"Pockets": [
|
"Pockets": [
|
||||||
"63076701a987397c0816d21b",
|
|
||||||
"5e32f56fcb6d5863cc5e5ee4",
|
|
||||||
"5a17fb03fcdbcbcae668728f",
|
|
||||||
"5aaa5e60e5b5b000140293d6",
|
|
||||||
"602286df23506e50807090c6",
|
|
||||||
"5e81c4ca763d9f754677befa",
|
"5e81c4ca763d9f754677befa",
|
||||||
|
"5e32f56fcb6d5863cc5e5ee4",
|
||||||
|
"5df8f535bb49d91fb446d6b0",
|
||||||
|
"617fd91e5539a84ec44ce155",
|
||||||
|
"5a718b548dc32e000d46d262",
|
||||||
"59e0d99486f7744a32234762",
|
"59e0d99486f7744a32234762",
|
||||||
"59f99a7d86f7745b134aa97b",
|
"59f99a7d86f7745b134aa97b",
|
||||||
"5a718da68dc32e000d46d264",
|
"5a718da68dc32e000d46d264",
|
||||||
"5cadc2e0ae9215051e1c21e7",
|
"5cadc2e0ae9215051e1c21e7",
|
||||||
"5df8f535bb49d91fb446d6b0",
|
"63076701a987397c0816d21b",
|
||||||
"617fd91e5539a84ec44ce155",
|
"5a17fb03fcdbcbcae668728f",
|
||||||
"5a718b548dc32e000d46d262",
|
"5aaa5e60e5b5b000140293d6",
|
||||||
"56d59948d2720bb7418b4582",
|
"602286df23506e50807090c6",
|
||||||
"5448be9a4bdc2dfd2f8b456a",
|
"5448be9a4bdc2dfd2f8b456a",
|
||||||
|
"56d59948d2720bb7418b4582",
|
||||||
"5d6e6911a4b9361bd5780d52",
|
"5d6e6911a4b9361bd5780d52",
|
||||||
"6193d3149fb0c665d5490e32",
|
"6193d3149fb0c665d5490e32",
|
||||||
"618a431df1eb8e24b8741deb",
|
"618a431df1eb8e24b8741deb",
|
||||||
"5b7bef1e5acfc43d82528402",
|
"5b7bef1e5acfc43d82528402",
|
||||||
"630e1adbbd357927e4007c09"
|
"630e1adbbd357927e4007c09",
|
||||||
|
"560d5e524bdc2d25448b4571",
|
||||||
|
"5c0d591486f7744c505b416f",
|
||||||
|
"5448c1d04bdc2dff2f8b4569",
|
||||||
|
"5d6e68c4a4b9361b93413f79",
|
||||||
|
"5d3eb5eca4b9363b1f22f8e4",
|
||||||
|
"5d6e6869a4b9361c140bcfde"
|
||||||
],
|
],
|
||||||
"SecuredContainer": [
|
"SecuredContainer": [
|
||||||
"56d59d3ad2720bdb418b4577",
|
"56d59d3ad2720bdb418b4577",
|
||||||
@ -4032,10 +4056,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lastName": [
|
"lastName": [],
|
||||||
"Поттер",
|
|
||||||
"Яга"
|
|
||||||
],
|
|
||||||
"skills": {
|
"skills": {
|
||||||
"Common": {
|
"Common": {
|
||||||
"BotReload": {
|
"BotReload": {
|
||||||
|
@ -1,32 +1,32 @@
|
|||||||
{
|
{
|
||||||
"appearance": {
|
"appearance": {
|
||||||
"body": {
|
"body": {
|
||||||
"5cc2e59214c02e000f16684e": 1,
|
"5cc2e59214c02e000f16684e": 697,
|
||||||
"5cde9f337d6c8b0474535da8": 1,
|
"5cde9f337d6c8b0474535da8": 714,
|
||||||
"5d28ad6986f77429275dba22": 1,
|
"5d28ad6986f77429275dba22": 708,
|
||||||
"5d28ad7286f7742926686182": 1,
|
"5d28ad7286f7742926686182": 716,
|
||||||
"5df8a10486f77412672a1e3a": 1,
|
"5df8a10486f77412672a1e3a": 756,
|
||||||
"5e4bb3ee86f77406975c934e": 1,
|
"5e4bb3ee86f77406975c934e": 735,
|
||||||
"5e9da1d086f774054a667134": 1,
|
"5e9da1d086f774054a667134": 728,
|
||||||
"5fd1eb3fbe3b7107d66cb645": 1,
|
"5fd1eb3fbe3b7107d66cb645": 702,
|
||||||
"5fd22d311add82653b5a704c": 1,
|
"5fd22d311add82653b5a704c": 711,
|
||||||
"618d1af10a5a59657e5f56f3": 1,
|
"618d1af10a5a59657e5f56f3": 691,
|
||||||
"619238266c614e6d15792bca": 1,
|
"619238266c614e6d15792bca": 700,
|
||||||
"637df28ac22da5bb8d046935": 1,
|
"637df28ac22da5bb8d046935": 742,
|
||||||
"64a2edba08d26f8d62049c06": 1
|
"64a2edba08d26f8d62049c06": 664
|
||||||
},
|
},
|
||||||
"feet": {
|
"feet": {
|
||||||
"5cc2e5d014c02e15d53d9c03": 1,
|
"5cc2e5d014c02e15d53d9c03": 213,
|
||||||
"5cde9fb87d6c8b0474535da9": 1,
|
"5cde9fb87d6c8b0474535da9": 201,
|
||||||
"5d28af3486f774292364a6e7": 1,
|
"5d28af3486f774292364a6e7": 192,
|
||||||
"5df8a15186f77412640e2e6a": 1,
|
"5df8a15186f77412640e2e6a": 213,
|
||||||
"5f5e410c6bdad616ad46d60b": 1,
|
"5f5e410c6bdad616ad46d60b": 201,
|
||||||
"5f5e41366760b4138443b343": 1,
|
"5f5e41366760b4138443b343": 200,
|
||||||
"5f5e41576760b4138443b344": 1,
|
"5f5e41576760b4138443b344": 198,
|
||||||
"61922589bb2cea6f7a22d964": 1,
|
"61922589bb2cea6f7a22d964": 195,
|
||||||
"6193be546e5968395b260157": 1,
|
"6193be546e5968395b260157": 213,
|
||||||
"637df25a1e688345e1097bd4": 1,
|
"637df25a1e688345e1097bd4": 197,
|
||||||
"64a2e970a74bb33d140e6dc5": 1
|
"64a2e970a74bb33d140e6dc5": 209
|
||||||
},
|
},
|
||||||
"hands": [
|
"hands": [
|
||||||
"5e4bb49586f77406a313ec5a",
|
"5e4bb49586f77406a313ec5a",
|
||||||
@ -2532,117 +2532,117 @@
|
|||||||
"inventory": {
|
"inventory": {
|
||||||
"Ammo": {
|
"Ammo": {
|
||||||
"Caliber1143x23ACP": {
|
"Caliber1143x23ACP": {
|
||||||
"5e81f423763d9f754677bf2e": 1,
|
"5e81f423763d9f754677bf2e": 119,
|
||||||
"5efb0d4f4bc50b58e81710f3": 1,
|
"5efb0d4f4bc50b58e81710f3": 78,
|
||||||
"5efb0fc6aeb21837e749c801": 1
|
"5efb0fc6aeb21837e749c801": 7
|
||||||
},
|
},
|
||||||
"Caliber12g": {
|
"Caliber12g": {
|
||||||
"560d5e524bdc2d25448b4571": 5,
|
"560d5e524bdc2d25448b4571": 10943,
|
||||||
"58820d1224597753c90aeb13": 2,
|
"58820d1224597753c90aeb13": 2684,
|
||||||
"5d6e6772a4b936088465b17c": 4,
|
"5d6e6772a4b936088465b17c": 101,
|
||||||
"5d6e67fba4b9361bc73bc779": 4,
|
"5d6e67fba4b9361bc73bc779": 3098,
|
||||||
"5d6e6806a4b936088465b17e": 3,
|
"5d6e6806a4b936088465b17e": 2797,
|
||||||
"5d6e6869a4b9361c140bcfde": 1,
|
"5d6e6869a4b9361c140bcfde": 1589,
|
||||||
"5d6e6891a4b9361bd473feea": 1,
|
"5d6e6891a4b9361bd473feea": 1525,
|
||||||
"5d6e689ca4b9361bc8618956": 1,
|
"5d6e689ca4b9361bc8618956": 253,
|
||||||
"5d6e68b3a4b9361bca7e50b5": 1,
|
"5d6e68b3a4b9361bca7e50b5": 631,
|
||||||
"5d6e68d1a4b93622fe60e845": 1,
|
"5d6e68d1a4b93622fe60e845": 90,
|
||||||
"5d6e68dea4b9361bcc29e659": 1,
|
"5d6e68dea4b9361bcc29e659": 465,
|
||||||
"5d6e68e6a4b9361c140bcfe0": 1,
|
"5d6e68e6a4b9361c140bcfe0": 291,
|
||||||
"5d6e6911a4b9361bd5780d52": 1
|
"5d6e6911a4b9361bd5780d52": 25
|
||||||
},
|
},
|
||||||
"Caliber20g": {
|
"Caliber20g": {
|
||||||
"5a38ebd9c4a282000d722a5b": 1,
|
"5a38ebd9c4a282000d722a5b": 5792,
|
||||||
"5d6e695fa4b936359b35d852": 1,
|
"5d6e695fa4b936359b35d852": 1622,
|
||||||
"5d6e69b9a4b9361bc8618958": 1,
|
"5d6e69b9a4b9361bc8618958": 460,
|
||||||
"5d6e69c7a4b9360b6c0d54e4": 1,
|
"5d6e69c7a4b9360b6c0d54e4": 628,
|
||||||
"5d6e6a05a4b93618084f58d0": 1,
|
"5d6e6a05a4b93618084f58d0": 451,
|
||||||
"5d6e6a42a4b9364f07165f52": 1,
|
"5d6e6a42a4b9364f07165f52": 493,
|
||||||
"5d6e6a53a4b9361bd473feec": 1,
|
"5d6e6a53a4b9361bd473feec": 1636,
|
||||||
"5d6e6a5fa4b93614ec501745": 1
|
"5d6e6a5fa4b93614ec501745": 340
|
||||||
},
|
},
|
||||||
"Caliber23x75": {
|
"Caliber23x75": {
|
||||||
"5e85a9a6eacf8c039e4e2ac1": 1
|
"5e85a9a6eacf8c039e4e2ac1": 1
|
||||||
},
|
},
|
||||||
"Caliber366TKM": {
|
"Caliber366TKM": {
|
||||||
"59e6542b86f77411dc52a77a": 44,
|
"59e6542b86f77411dc52a77a": 4600,
|
||||||
"59e655cb86f77411dc52a77b": 20,
|
"59e655cb86f77411dc52a77b": 2355,
|
||||||
"59e6658b86f77411d949b250": 31,
|
"59e6658b86f77411d949b250": 1568,
|
||||||
"5f0596629e22f464da6bbdd9": 8
|
"5f0596629e22f464da6bbdd9": 101
|
||||||
},
|
},
|
||||||
"Caliber545x39": {
|
"Caliber545x39": {
|
||||||
"56dfef82d2720bbd668b4567": 1,
|
"56dfef82d2720bbd668b4567": 132,
|
||||||
"56dff061d2720bb5668b4567": 1,
|
"56dff061d2720bb5668b4567": 30,
|
||||||
"56dff0bed2720bb0668b4567": 1,
|
"56dff0bed2720bb0668b4567": 886,
|
||||||
"56dff216d2720bbd668b4568": 1,
|
"56dff216d2720bbd668b4568": 1075,
|
||||||
"56dff2ced2720bb4668b4567": 1,
|
"56dff2ced2720bb4668b4567": 112,
|
||||||
"56dff338d2720bbd668b4569": 1,
|
"56dff338d2720bbd668b4569": 857,
|
||||||
"56dff3afd2720bba668b4567": 1,
|
"56dff3afd2720bba668b4567": 3638,
|
||||||
"56dff421d2720b5f5a8b4567": 1,
|
"56dff421d2720b5f5a8b4567": 1059,
|
||||||
"56dff4a2d2720bbd668b456a": 1,
|
"56dff4a2d2720bbd668b456a": 895,
|
||||||
"56dff4ecd2720b5f5a8b4568": 1
|
"56dff4ecd2720b5f5a8b4568": 557
|
||||||
},
|
},
|
||||||
"Caliber556x45NATO": {
|
"Caliber556x45NATO": {
|
||||||
"54527a984bdc2d4e668b4567": 4,
|
"54527a984bdc2d4e668b4567": 276,
|
||||||
"54527ac44bdc2d36668b4567": 1,
|
"54527ac44bdc2d36668b4567": 24,
|
||||||
"59e68f6f86f7746c9f75e846": 1,
|
"59e68f6f86f7746c9f75e846": 306,
|
||||||
"59e6906286f7746c9f75e847": 1,
|
"59e6906286f7746c9f75e847": 76,
|
||||||
"59e6918f86f7746c9f75e849": 1,
|
"59e6918f86f7746c9f75e849": 445,
|
||||||
"59e6920f86f77411d82aa167": 1,
|
"59e6920f86f77411d82aa167": 620,
|
||||||
"59e6927d86f77411da468256": 1,
|
"59e6927d86f77411da468256": 405,
|
||||||
"5c0d5ae286f7741e46554302": 3
|
"5c0d5ae286f7741e46554302": 140
|
||||||
},
|
},
|
||||||
"Caliber762x25TT": {
|
"Caliber762x25TT": {
|
||||||
"5735fdcd2459776445391d61": 1,
|
"5735fdcd2459776445391d61": 1165,
|
||||||
"5735ff5c245977640e39ba7e": 1,
|
"5735ff5c245977640e39ba7e": 610,
|
||||||
"573601b42459776410737435": 1,
|
"573601b42459776410737435": 677,
|
||||||
"573602322459776445391df1": 1,
|
"573602322459776445391df1": 246,
|
||||||
"5736026a245977644601dc61": 1,
|
"5736026a245977644601dc61": 1698,
|
||||||
"573603562459776430731618": 1,
|
"573603562459776430731618": 227,
|
||||||
"573603c924597764442bd9cb": 1
|
"573603c924597764442bd9cb": 642
|
||||||
},
|
},
|
||||||
"Caliber762x39": {
|
"Caliber762x39": {
|
||||||
"5656d7c34bdc2d9d198b4587": 2,
|
"5656d7c34bdc2d9d198b4587": 630,
|
||||||
"59e4cf5286f7741778269d8a": 2,
|
"59e4cf5286f7741778269d8a": 991,
|
||||||
"59e4d3d286f774176a36250a": 1,
|
"59e4d3d286f774176a36250a": 1362,
|
||||||
"64b7af5a8532cf95ee0a0dbd": 1,
|
"64b7af5a8532cf95ee0a0dbd": 1385,
|
||||||
"64b7af734b75259c590fa895": 1
|
"64b7af734b75259c590fa895": 670
|
||||||
},
|
},
|
||||||
"Caliber762x51": {
|
"Caliber762x51": {
|
||||||
"5e023e53d4353e3302577c4c": 15,
|
"5e023e53d4353e3302577c4c": 1238,
|
||||||
"5e023e6e34d52a55c3304f71": 10,
|
"5e023e6e34d52a55c3304f71": 961,
|
||||||
"5e023e88277cce2b522ff2b1": 10
|
"5e023e88277cce2b522ff2b1": 57
|
||||||
},
|
},
|
||||||
"Caliber762x54R": {
|
"Caliber762x54R": {
|
||||||
"5887431f2459777e1612938f": 1,
|
"5887431f2459777e1612938f": 21,
|
||||||
"5e023cf8186a883be655e54f": 1,
|
"5e023cf8186a883be655e54f": 10,
|
||||||
"64b8f7968532cf95ee0a0dbf": 1,
|
"64b8f7968532cf95ee0a0dbf": 202,
|
||||||
"64b8f7b5389d7ffd620ccba2": 1,
|
"64b8f7b5389d7ffd620ccba2": 130,
|
||||||
"64b8f7c241772715af0f9c3d": 1
|
"64b8f7c241772715af0f9c3d": 139
|
||||||
},
|
},
|
||||||
"Caliber9x18PM": {
|
"Caliber9x18PM": {
|
||||||
"573718ba2459775a75491131": 1,
|
"573718ba2459775a75491131": 209,
|
||||||
"573719762459775a626ccbc1": 1,
|
"573719762459775a626ccbc1": 1641,
|
||||||
"573719df2459775a626ccbc2": 1,
|
"573719df2459775a626ccbc2": 22,
|
||||||
"57371aab2459775a77142f22": 1,
|
"57371aab2459775a77142f22": 33,
|
||||||
"57371b192459775a9f58a5e0": 1,
|
"57371b192459775a9f58a5e0": 261,
|
||||||
"57371e4124597760ff7b25f1": 1,
|
"57371e4124597760ff7b25f1": 420,
|
||||||
"57371eb62459776125652ac1": 1,
|
"57371eb62459776125652ac1": 584,
|
||||||
"57371f2b24597761224311f1": 1,
|
"57371f2b24597761224311f1": 342,
|
||||||
"57371f8d24597761006c6a81": 1,
|
"57371f8d24597761006c6a81": 222,
|
||||||
"5737201124597760fc4431f1": 1,
|
"5737201124597760fc4431f1": 319,
|
||||||
"5737207f24597760ff7b25f2": 1,
|
"5737207f24597760ff7b25f2": 168,
|
||||||
"573720e02459776143012541": 1,
|
"573720e02459776143012541": 72,
|
||||||
"57372140245977611f70ee91": 1,
|
"57372140245977611f70ee91": 20,
|
||||||
"5737218f245977612125ba51": 1
|
"5737218f245977612125ba51": 272
|
||||||
},
|
},
|
||||||
"Caliber9x19PARA": {
|
"Caliber9x19PARA": {
|
||||||
"56d59d3ad2720bdb418b4577": 1,
|
"56d59d3ad2720bdb418b4577": 2877,
|
||||||
"58864a4f2459770fcc257101": 1,
|
"58864a4f2459770fcc257101": 2749,
|
||||||
"5c3df7d588a4501f290594e5": 1,
|
"5c3df7d588a4501f290594e5": 898,
|
||||||
"5efb0da7a29a85116f6ea05f": 1,
|
"5efb0da7a29a85116f6ea05f": 4,
|
||||||
"5efb0e16aeb21837e749c7ff": 1,
|
"5efb0e16aeb21837e749c7ff": 118,
|
||||||
"64b7bbb74b75259c590fa897": 1
|
"64b7bbb74b75259c590fa897": 874
|
||||||
},
|
},
|
||||||
"Caliber9x21": {
|
"Caliber9x21": {
|
||||||
"5a26abfac4a28232980eabff": 1
|
"5a26abfac4a28232980eabff": 1
|
||||||
@ -2651,191 +2651,191 @@
|
|||||||
"equipment": {
|
"equipment": {
|
||||||
"ArmBand": {},
|
"ArmBand": {},
|
||||||
"ArmorVest": {
|
"ArmorVest": {
|
||||||
"5648a7494bdc2d9d488b4583": 3,
|
"5648a7494bdc2d9d488b4583": 898,
|
||||||
"59e7635f86f7742cbf2c1095": 3,
|
"59e7635f86f7742cbf2c1095": 2334,
|
||||||
"5ab8e4ed86f7742d8e50c7fa": 2,
|
"5ab8e4ed86f7742d8e50c7fa": 731,
|
||||||
"5ab8e79e86f7742d8b372e78": 1,
|
"5ab8e79e86f7742d8b372e78": 85,
|
||||||
"5b44d22286f774172b0c9de8": 3,
|
"5b44d22286f774172b0c9de8": 191,
|
||||||
"5c0e53c886f7747fa54205c7": 2,
|
"5c0e53c886f7747fa54205c7": 352,
|
||||||
"5c0e5edb86f77461f55ed1f7": 3,
|
"5c0e5edb86f77461f55ed1f7": 795,
|
||||||
"5df8a2ca86f7740bfe6df777": 3,
|
"5df8a2ca86f7740bfe6df777": 1127,
|
||||||
"607f20859ee58b18e41ecd90": 1,
|
"607f20859ee58b18e41ecd90": 23,
|
||||||
"609e8540d5c319764c2bc2e9": 2,
|
"609e8540d5c319764c2bc2e9": 95,
|
||||||
"62a09d79de7ac81993580530": 1,
|
"62a09d79de7ac81993580530": 286,
|
||||||
"64be79e2bf8412471d0d9bcc": 1
|
"64be79e2bf8412471d0d9bcc": 279
|
||||||
},
|
},
|
||||||
"Backpack": {
|
"Backpack": {
|
||||||
"544a5cde4bdc2d39388b456b": 9,
|
"544a5cde4bdc2d39388b456b": 2054,
|
||||||
"56e335e4d2720b6c058b456d": 4,
|
"56e335e4d2720b6c058b456d": 1208,
|
||||||
"56e33634d2720bd8058b456b": 10,
|
"56e33634d2720bd8058b456b": 3015,
|
||||||
"56e33680d2720be2748b4576": 12,
|
"56e33680d2720be2748b4576": 4124,
|
||||||
"59e763f286f7742ee57895da": 5,
|
"59e763f286f7742ee57895da": 236,
|
||||||
"5ab8ee7786f7742d8f33f0b9": 5,
|
"5ab8ee7786f7742d8f33f0b9": 673,
|
||||||
"5ab8f04f86f774585f4237d8": 12,
|
"5ab8f04f86f774585f4237d8": 470,
|
||||||
"5f5e45cc5021ce62144be7aa": 4,
|
"5f5e45cc5021ce62144be7aa": 1679,
|
||||||
"60a2828e8689911a226117f9": 5
|
"60a2828e8689911a226117f9": 109
|
||||||
},
|
},
|
||||||
"Earpiece": {},
|
"Earpiece": {},
|
||||||
"Eyewear": {
|
"Eyewear": {
|
||||||
"557ff21e4bdc2d89578b4586": 3,
|
"557ff21e4bdc2d89578b4586": 1777,
|
||||||
"59e770b986f7742cbd762754": 2,
|
"59e770b986f7742cbd762754": 1469,
|
||||||
"5aa2b923e5b5b000137b7589": 2,
|
"5aa2b923e5b5b000137b7589": 540,
|
||||||
"5aa2b986e5b5b00014028f4c": 3,
|
"5aa2b986e5b5b00014028f4c": 1821,
|
||||||
"5aa2b9aee5b5b00015693121": 2,
|
"5aa2b9aee5b5b00015693121": 1169,
|
||||||
"5b432be65acfc433000ed01f": 3,
|
"5b432be65acfc433000ed01f": 747,
|
||||||
"5d6d2ef3a4b93618084f58bd": 2,
|
"5d6d2ef3a4b93618084f58bd": 323,
|
||||||
"603409c80ca681766b6a0fb2": 1,
|
"603409c80ca681766b6a0fb2": 179,
|
||||||
"61c18d83b00456371a66814b": 1,
|
"61c18d83b00456371a66814b": 117,
|
||||||
"62a09e410b9d3c46de5b6e78": 1
|
"62a09e410b9d3c46de5b6e78": 106
|
||||||
},
|
},
|
||||||
"FaceCover": {
|
"FaceCover": {
|
||||||
"572b7f1624597762ae139822": 10,
|
"572b7f1624597762ae139822": 2542,
|
||||||
"572b7fa524597762b747ce82": 10,
|
"572b7fa524597762b747ce82": 5011,
|
||||||
"59e7715586f7742ee5789605": 10,
|
"59e7715586f7742ee5789605": 4294,
|
||||||
"5ab8f39486f7745cd93a1cca": 8,
|
"5ab8f39486f7745cd93a1cca": 338,
|
||||||
"5ab8f4ff86f77431c60d91ba": 5,
|
"5ab8f4ff86f77431c60d91ba": 623,
|
||||||
"5b4326435acfc433000ed01d": 10,
|
"5b4326435acfc433000ed01d": 1493,
|
||||||
"5b432b2f5acfc4771e1c6622": 10,
|
"5b432b2f5acfc4771e1c6622": 94,
|
||||||
"5b432b6c5acfc4001a599bf0": 6,
|
"5b432b6c5acfc4001a599bf0": 206,
|
||||||
"5b432c305acfc40019478128": 10,
|
"5b432c305acfc40019478128": 596,
|
||||||
"5b432f3d5acfc4704b4a1dfb": 10,
|
"5b432f3d5acfc4704b4a1dfb": 537,
|
||||||
"5bd073a586f7747e6f135799": 7,
|
"5bd073a586f7747e6f135799": 267,
|
||||||
"5e54f76986f7740366043752": 3,
|
"5e54f76986f7740366043752": 97,
|
||||||
"5e54f79686f7744022011103": 1,
|
"5e54f79686f7744022011103": 74,
|
||||||
"5e71f6be86f77429f2683c44": 1,
|
"5e71f6be86f77429f2683c44": 16,
|
||||||
"60363c0c92ec1c31037959f5": 10,
|
"60363c0c92ec1c31037959f5": 416,
|
||||||
"62a09e08de7ac81993580532": 1,
|
"62a09e08de7ac81993580532": 66,
|
||||||
"62a5c2c98ec41a51b34739c0": 1,
|
"62a5c2c98ec41a51b34739c0": 90,
|
||||||
"62a5c333ec21e50cad3b5dc6": 1,
|
"62a5c333ec21e50cad3b5dc6": 144,
|
||||||
"62a5c41e8ec41a51b34739c3": 1
|
"62a5c41e8ec41a51b34739c3": 121
|
||||||
},
|
},
|
||||||
"FirstPrimaryWeapon": {
|
"FirstPrimaryWeapon": {
|
||||||
"5447a9cd4bdc2dbd208b4567": 1,
|
"5447a9cd4bdc2dbd208b4567": 22,
|
||||||
"54491c4f4bdc2db1078b4568": 61,
|
"54491c4f4bdc2db1078b4568": 2513,
|
||||||
"5580223e4bdc2d1c128b457f": 4,
|
"5580223e4bdc2d1c128b457f": 850,
|
||||||
"5644bd2b4bdc2d3b4c8b4572": 10,
|
"5644bd2b4bdc2d3b4c8b4572": 208,
|
||||||
"56dee2bdd2720bc8328b4567": 80,
|
"56dee2bdd2720bc8328b4567": 2569,
|
||||||
"574d967124597745970e7c94": 56,
|
"574d967124597745970e7c94": 1051,
|
||||||
"576165642459773c7a400233": 80,
|
"576165642459773c7a400233": 2099,
|
||||||
"57d14d2524597714373db789": 16,
|
"57d14d2524597714373db789": 390,
|
||||||
"57dc2fa62459775949412633": 41,
|
"57dc2fa62459775949412633": 1183,
|
||||||
"587e02ff24597743df3deaeb": 37,
|
"587e02ff24597743df3deaeb": 707,
|
||||||
"59d6088586f774275f37482f": 22,
|
"59d6088586f774275f37482f": 384,
|
||||||
"59e6152586f77473dc057aa1": 83,
|
"59e6152586f77473dc057aa1": 2202,
|
||||||
"59e6687d86f77411d949b251": 61,
|
"59e6687d86f77411d949b251": 1685,
|
||||||
"59f9cabd86f7743a10721f46": 49,
|
"59f9cabd86f7743a10721f46": 1388,
|
||||||
"59ff346386f77477562ff5e2": 12,
|
"59ff346386f77477562ff5e2": 254,
|
||||||
"5a38e6bac4a2826c6e06d79b": 78,
|
"5a38e6bac4a2826c6e06d79b": 2983,
|
||||||
"5a7828548dc32e5a9c28b516": 1,
|
"5a7828548dc32e5a9c28b516": 249,
|
||||||
"5ab8e9fcd8ce870019439434": 4,
|
"5ab8e9fcd8ce870019439434": 104,
|
||||||
"5ac4cd105acfc40016339859": 32,
|
"5ac4cd105acfc40016339859": 700,
|
||||||
"5ac66d725acfc43b321d4b60": 1,
|
"5ac66d725acfc43b321d4b60": 64,
|
||||||
"5ac66d9b5acfc4001633997a": 9,
|
"5ac66d9b5acfc4001633997a": 148,
|
||||||
"5ae08f0a5acfc408fb1398a1": 4,
|
"5ae08f0a5acfc408fb1398a1": 79,
|
||||||
"5bf3e03b0db834001d2c4a9c": 4,
|
"5bf3e03b0db834001d2c4a9c": 176,
|
||||||
"5bf3e0490db83400196199af": 7,
|
"5bf3e0490db83400196199af": 254,
|
||||||
"5bfd297f0db834001a669119": 5,
|
"5bfd297f0db834001a669119": 324,
|
||||||
"5c07c60e0db834002330051f": 33,
|
"5c07c60e0db834002330051f": 695,
|
||||||
"5c501a4d2e221602b412b540": 27,
|
"5c501a4d2e221602b412b540": 702,
|
||||||
"5d2f0d8048f0356c925bc3b0": 1,
|
"5d2f0d8048f0356c925bc3b0": 28,
|
||||||
"5de652c31b7e3716273428be": 17,
|
"5de652c31b7e3716273428be": 928,
|
||||||
"5e00903ae9dc277128008b87": 1,
|
"5e00903ae9dc277128008b87": 32,
|
||||||
"5e848cc2988a8701445df1e8": 1,
|
"5e848cc2988a8701445df1e8": 2,
|
||||||
"5e870397991fd70db46995c8": 29,
|
"5e870397991fd70db46995c8": 829,
|
||||||
"5ea03f7400685063ec28bfa8": 11,
|
"5ea03f7400685063ec28bfa8": 537,
|
||||||
"606dae0ab0e443224b421bb7": 57,
|
"606dae0ab0e443224b421bb7": 1235,
|
||||||
"60db29ce99594040e04c4a27": 4,
|
"60db29ce99594040e04c4a27": 866,
|
||||||
"61f7c9e189e6fb1a5e3ea78d": 32,
|
"61f7c9e189e6fb1a5e3ea78d": 301,
|
||||||
"6259b864ebedf17603599e88": 1,
|
"6259b864ebedf17603599e88": 51,
|
||||||
"643ea5b23db6f9f57107d9fd": 1
|
"643ea5b23db6f9f57107d9fd": 33
|
||||||
},
|
},
|
||||||
"Headwear": {
|
"Headwear": {
|
||||||
"572b7d8524597762b472f9d1": 1,
|
"572b7d8524597762b472f9d1": 2053,
|
||||||
"572b7fa124597762b472f9d2": 1,
|
"572b7fa124597762b472f9d2": 2967,
|
||||||
"59e7708286f7742cbd762753": 1,
|
"59e7708286f7742cbd762753": 2429,
|
||||||
"59e770f986f7742cbe3164ef": 1,
|
"59e770f986f7742cbe3164ef": 2492,
|
||||||
"59e7711e86f7746cae05fbe1": 1,
|
"59e7711e86f7746cae05fbe1": 807,
|
||||||
"59ef13ca86f77445fd0e2483": 1,
|
"59ef13ca86f77445fd0e2483": 5,
|
||||||
"5a43943586f77416ad2f06e2": 1,
|
"5a43943586f77416ad2f06e2": 29,
|
||||||
"5a43957686f7742a2c2f11b0": 1,
|
"5a43957686f7742a2c2f11b0": 35,
|
||||||
"5a7c4850e899ef00150be885": 1,
|
"5a7c4850e899ef00150be885": 634,
|
||||||
"5aa2a7e8e5b5b00016327c16": 1,
|
"5aa2a7e8e5b5b00016327c16": 254,
|
||||||
"5aa2b87de5b5b00016327c25": 1,
|
"5aa2b87de5b5b00016327c25": 218,
|
||||||
"5aa2b89be5b5b0001569311f": 1,
|
"5aa2b89be5b5b0001569311f": 514,
|
||||||
"5aa2b8d7e5b5b00014028f4a": 1,
|
"5aa2b8d7e5b5b00014028f4a": 1182,
|
||||||
"5aa2b9ede5b5b000137b758b": 1,
|
"5aa2b9ede5b5b000137b758b": 450,
|
||||||
"5aa2ba19e5b5b00014028f4e": 1,
|
"5aa2ba19e5b5b00014028f4e": 763,
|
||||||
"5aa2ba46e5b5b000137b758d": 1,
|
"5aa2ba46e5b5b000137b758d": 269,
|
||||||
"5aa7cfc0e5b5b00015693143": 1,
|
"5aa7cfc0e5b5b00015693143": 205,
|
||||||
"5aa7d03ae5b5b00016327db5": 1,
|
"5aa7d03ae5b5b00016327db5": 507,
|
||||||
"5ab8f20c86f7745cdb629fb2": 1,
|
"5ab8f20c86f7745cdb629fb2": 709,
|
||||||
"5b4329075acfc400153b78ff": 1,
|
"5b4329075acfc400153b78ff": 475,
|
||||||
"5bd073c986f7747f627e796c": 1,
|
"5bd073c986f7747f627e796c": 79,
|
||||||
"5c06c6a80db834001b735491": 1,
|
"5c06c6a80db834001b735491": 934,
|
||||||
"5c08f87c0db8340019124324": 1,
|
"5c08f87c0db8340019124324": 145,
|
||||||
"5c0d2727d174af02a012cf58": 1,
|
"5c0d2727d174af02a012cf58": 232,
|
||||||
"5df8a58286f77412631087ed": 1,
|
"5df8a58286f77412631087ed": 1366,
|
||||||
"5ea05cf85ad9772e6624305d": 1,
|
"5ea05cf85ad9772e6624305d": 437,
|
||||||
"5f60e6403b85f6263c14558c": 1,
|
"5f60e6403b85f6263c14558c": 105,
|
||||||
"5f60e7788adaa7100c3adb49": 1,
|
"5f60e7788adaa7100c3adb49": 210,
|
||||||
"5f60e784f2bcbb675b00dac7": 1,
|
"5f60e784f2bcbb675b00dac7": 264,
|
||||||
"603618feffd42c541047f771": 1,
|
"603618feffd42c541047f771": 179,
|
||||||
"603619720ca681766b6a0fc4": 1,
|
"603619720ca681766b6a0fc4": 430,
|
||||||
"60361a7497633951dc245eb4": 1,
|
"60361a7497633951dc245eb4": 569,
|
||||||
"60361b0b5a45383c122086a1": 1,
|
"60361b0b5a45383c122086a1": 394,
|
||||||
"60361b5a9a15b10d96792291": 1,
|
"60361b5a9a15b10d96792291": 604,
|
||||||
"6040de02647ad86262233012": 1,
|
"6040de02647ad86262233012": 300,
|
||||||
"60b52e5bc7d8103275739d67": 1,
|
"60b52e5bc7d8103275739d67": 163,
|
||||||
"60bf74184a63fc79b60c57f6": 1,
|
"60bf74184a63fc79b60c57f6": 76,
|
||||||
"61c18db6dfd64163ea78fbb4": 1
|
"61c18db6dfd64163ea78fbb4": 290
|
||||||
},
|
},
|
||||||
"Holster": {
|
"Holster": {
|
||||||
"5448bd6b4bdc2dfc2f8b4569": 1,
|
"5448bd6b4bdc2dfc2f8b4569": 526,
|
||||||
"56d59856d2720bd8418b456a": 1,
|
"56d59856d2720bd8418b456a": 125,
|
||||||
"56e0598dd2720bb5668b45a6": 1,
|
"56e0598dd2720bb5668b45a6": 96,
|
||||||
"571a12c42459771f627b58a0": 1,
|
"571a12c42459771f627b58a0": 1027,
|
||||||
"576a581d2459771e7b1bc4f1": 1,
|
"576a581d2459771e7b1bc4f1": 324,
|
||||||
"579204f224597773d619e051": 1,
|
"579204f224597773d619e051": 138,
|
||||||
"59f98b4986f7746f546d2cef": 1,
|
"59f98b4986f7746f546d2cef": 3,
|
||||||
"5a17f98cfcdbcb0980087290": 1,
|
"5a17f98cfcdbcb0980087290": 27,
|
||||||
"5e81c3cbac2bb513793cdc75": 1,
|
"5e81c3cbac2bb513793cdc75": 63,
|
||||||
"602a9740da11d6478d5a06dc": 1,
|
"602a9740da11d6478d5a06dc": 4,
|
||||||
"624c2e8614da335f1e034d8c": 1,
|
"624c2e8614da335f1e034d8c": 26,
|
||||||
"64748cb8de82c85eaf0a273a": 1
|
"64748cb8de82c85eaf0a273a": 2
|
||||||
},
|
},
|
||||||
"Pockets": {
|
"Pockets": {
|
||||||
"557ffd194bdc2d28148b457f": 1
|
"557ffd194bdc2d28148b457f": 1
|
||||||
},
|
},
|
||||||
"Scabbard": {
|
"Scabbard": {
|
||||||
"54491bb74bdc2d09088b4567": 5,
|
"54491bb74bdc2d09088b4567": 897,
|
||||||
"57e26ea924597715ca604a09": 5,
|
"57e26ea924597715ca604a09": 5906,
|
||||||
"57e26fc7245977162a14b800": 5,
|
"57e26fc7245977162a14b800": 16315,
|
||||||
"5bc9c1e2d4351e00367fbcf0": 1,
|
"5bc9c1e2d4351e00367fbcf0": 316,
|
||||||
"5c07df7f0db834001b73588a": 2
|
"5c07df7f0db834001b73588a": 303
|
||||||
},
|
},
|
||||||
"SecondPrimaryWeapon": {},
|
"SecondPrimaryWeapon": {},
|
||||||
"SecuredContainer": {
|
"SecuredContainer": {
|
||||||
"5c0a794586f77461c458f892": 1
|
"5c0a794586f77461c458f892": 1
|
||||||
},
|
},
|
||||||
"TacticalVest": {
|
"TacticalVest": {
|
||||||
"572b7adb24597762ae139821": 2,
|
"572b7adb24597762ae139821": 7097,
|
||||||
"5929a2a086f7744f4b234d43": 2,
|
"5929a2a086f7744f4b234d43": 1460,
|
||||||
"592c2d1a86f7746dbe2af32a": 2,
|
"592c2d1a86f7746dbe2af32a": 103,
|
||||||
"59e7643b86f7742cbf2c109a": 2,
|
"59e7643b86f7742cbf2c109a": 3576,
|
||||||
"5ab8dab586f77441cd04f2a2": 2,
|
"5ab8dab586f77441cd04f2a2": 757,
|
||||||
"5c0e446786f7742013381639": 1,
|
"5c0e446786f7742013381639": 909,
|
||||||
"5c0e6a1586f77404597b4965": 2,
|
"5c0e6a1586f77404597b4965": 145,
|
||||||
"5ca20abf86f77418567a43f2": 2,
|
"5ca20abf86f77418567a43f2": 1298,
|
||||||
"5d5d646386f7742797261fd9": 1,
|
"5d5d646386f7742797261fd9": 678,
|
||||||
"5e4abfed86f77406a2713cf7": 2,
|
"5e4abfed86f77406a2713cf7": 1488,
|
||||||
"5fd4c4fa16cac650092f6771": 2,
|
"5fd4c4fa16cac650092f6771": 794,
|
||||||
"5fd4c5477a8d854fa0105061": 2,
|
"5fd4c5477a8d854fa0105061": 6558,
|
||||||
"5fd4c60f875c30179f5d04c2": 2,
|
"5fd4c60f875c30179f5d04c2": 129,
|
||||||
"6034cf5fffd42c541047f72e": 2,
|
"6034cf5fffd42c541047f72e": 2147,
|
||||||
"6034d0230ca681766b6a0fb5": 2,
|
"6034d0230ca681766b6a0fb5": 495,
|
||||||
"603648ff5a45383c122086ac": 2,
|
"603648ff5a45383c122086ac": 1213,
|
||||||
"6040dd4ddcf9592f401632d2": 2,
|
"6040dd4ddcf9592f401632d2": 415,
|
||||||
"64be7110bf597ba84a0a41ea": 1
|
"64be7110bf597ba84a0a41ea": 1924
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"items": {
|
"items": {
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -386,7 +386,7 @@
|
|||||||
"DEFAULT_BEAR_BEHAVIOUR": "Attack",
|
"DEFAULT_BEAR_BEHAVIOUR": "Attack",
|
||||||
"DEFAULT_ENEMY_BEAR": true,
|
"DEFAULT_ENEMY_BEAR": true,
|
||||||
"DEFAULT_ENEMY_USEC": true,
|
"DEFAULT_ENEMY_USEC": true,
|
||||||
"DEFAULT_SAVAGE_BEHAVIOUR": "Warn",
|
"DEFAULT_SAVAGE_BEHAVIOUR": "Attack",
|
||||||
"DEFAULT_USEC_BEHAVIOUR": "Attack",
|
"DEFAULT_USEC_BEHAVIOUR": "Attack",
|
||||||
"DIST_TO_ENEMY_YO_CAN_HEAL": 130,
|
"DIST_TO_ENEMY_YO_CAN_HEAL": 130,
|
||||||
"DIST_TO_FOUND_SQRT": 400,
|
"DIST_TO_FOUND_SQRT": 400,
|
||||||
@ -897,7 +897,7 @@
|
|||||||
"DEFAULT_BEAR_BEHAVIOUR": "Attack",
|
"DEFAULT_BEAR_BEHAVIOUR": "Attack",
|
||||||
"DEFAULT_ENEMY_BEAR": true,
|
"DEFAULT_ENEMY_BEAR": true,
|
||||||
"DEFAULT_ENEMY_USEC": true,
|
"DEFAULT_ENEMY_USEC": true,
|
||||||
"DEFAULT_SAVAGE_BEHAVIOUR": "Warn",
|
"DEFAULT_SAVAGE_BEHAVIOUR": "Attack",
|
||||||
"DEFAULT_USEC_BEHAVIOUR": "Attack",
|
"DEFAULT_USEC_BEHAVIOUR": "Attack",
|
||||||
"DIST_TO_ENEMY_YO_CAN_HEAL": 130,
|
"DIST_TO_ENEMY_YO_CAN_HEAL": 130,
|
||||||
"DIST_TO_FOUND_SQRT": 400,
|
"DIST_TO_FOUND_SQRT": 400,
|
||||||
@ -1408,7 +1408,7 @@
|
|||||||
"DEFAULT_BEAR_BEHAVIOUR": "Attack",
|
"DEFAULT_BEAR_BEHAVIOUR": "Attack",
|
||||||
"DEFAULT_ENEMY_BEAR": true,
|
"DEFAULT_ENEMY_BEAR": true,
|
||||||
"DEFAULT_ENEMY_USEC": true,
|
"DEFAULT_ENEMY_USEC": true,
|
||||||
"DEFAULT_SAVAGE_BEHAVIOUR": "Warn",
|
"DEFAULT_SAVAGE_BEHAVIOUR": "Attack",
|
||||||
"DEFAULT_USEC_BEHAVIOUR": "Attack",
|
"DEFAULT_USEC_BEHAVIOUR": "Attack",
|
||||||
"DIST_TO_ENEMY_YO_CAN_HEAL": 130,
|
"DIST_TO_ENEMY_YO_CAN_HEAL": 130,
|
||||||
"DIST_TO_FOUND_SQRT": 400,
|
"DIST_TO_FOUND_SQRT": 400,
|
||||||
@ -1919,7 +1919,7 @@
|
|||||||
"DEFAULT_BEAR_BEHAVIOUR": "Attack",
|
"DEFAULT_BEAR_BEHAVIOUR": "Attack",
|
||||||
"DEFAULT_ENEMY_BEAR": true,
|
"DEFAULT_ENEMY_BEAR": true,
|
||||||
"DEFAULT_ENEMY_USEC": true,
|
"DEFAULT_ENEMY_USEC": true,
|
||||||
"DEFAULT_SAVAGE_BEHAVIOUR": "Warn",
|
"DEFAULT_SAVAGE_BEHAVIOUR": "Attack",
|
||||||
"DEFAULT_USEC_BEHAVIOUR": "Attack",
|
"DEFAULT_USEC_BEHAVIOUR": "Attack",
|
||||||
"DIST_TO_ENEMY_YO_CAN_HEAL": 130,
|
"DIST_TO_ENEMY_YO_CAN_HEAL": 130,
|
||||||
"DIST_TO_FOUND_SQRT": 400,
|
"DIST_TO_FOUND_SQRT": 400,
|
||||||
@ -2253,18 +2253,18 @@
|
|||||||
"inventory": {
|
"inventory": {
|
||||||
"Ammo": {
|
"Ammo": {
|
||||||
"Caliber762x39": {
|
"Caliber762x39": {
|
||||||
"5656d7c34bdc2d9d198b4587": 1,
|
"5656d7c34bdc2d9d198b4587": 410,
|
||||||
"59e0d99486f7744a32234762": 1,
|
"59e0d99486f7744a32234762": 165,
|
||||||
"64b7af5a8532cf95ee0a0dbd": 1
|
"64b7af5a8532cf95ee0a0dbd": 386
|
||||||
},
|
},
|
||||||
"Caliber762x51": {
|
"Caliber762x51": {
|
||||||
"5a6086ea4f39f99cd479502f": 1,
|
"5a6086ea4f39f99cd479502f": 166,
|
||||||
"5a608bf24f39f98ffc77720e": 1,
|
"5a608bf24f39f98ffc77720e": 211,
|
||||||
"5e023e53d4353e3302577c4c": 1
|
"5e023e53d4353e3302577c4c": 2440
|
||||||
},
|
},
|
||||||
"Caliber9x19PARA": {
|
"Caliber9x19PARA": {
|
||||||
"56d59d3ad2720bdb418b4577": 1,
|
"56d59d3ad2720bdb418b4577": 1891,
|
||||||
"64b7bbb74b75259c590fa897": 1
|
"64b7bbb74b75259c590fa897": 1887
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"equipment": {
|
"equipment": {
|
||||||
@ -2274,20 +2274,20 @@
|
|||||||
"Earpiece": {},
|
"Earpiece": {},
|
||||||
"Eyewear": {},
|
"Eyewear": {},
|
||||||
"FaceCover": {
|
"FaceCover": {
|
||||||
"5c1a1e3f2e221602b66cc4c2": 1,
|
"5c1a1e3f2e221602b66cc4c2": 2,
|
||||||
"62963c18dbc8ab5f0d382d0b": 1
|
"62963c18dbc8ab5f0d382d0b": 1887
|
||||||
},
|
},
|
||||||
"FirstPrimaryWeapon": {
|
"FirstPrimaryWeapon": {
|
||||||
"5dcbd56fdbd3d91b3e5468d5": 1,
|
"5dcbd56fdbd3d91b3e5468d5": 1376,
|
||||||
"606587252535c57a13424cfd": 1,
|
"606587252535c57a13424cfd": 961,
|
||||||
"6165ac306ef05c2ce828ef74": 1
|
"6165ac306ef05c2ce828ef74": 1441
|
||||||
},
|
},
|
||||||
"Headwear": {
|
"Headwear": {
|
||||||
"5a43957686f7742a2c2f11b0": 1
|
"5a43957686f7742a2c2f11b0": 1
|
||||||
},
|
},
|
||||||
"Holster": {
|
"Holster": {
|
||||||
"5a7ae0c351dfba0017554310": 1,
|
"5a7ae0c351dfba0017554310": 2369,
|
||||||
"5b1fa9b25acfc40018633c01": 1
|
"5b1fa9b25acfc40018633c01": 1409
|
||||||
},
|
},
|
||||||
"Pockets": {
|
"Pockets": {
|
||||||
"5af99e9186f7747c447120b8": 1
|
"5af99e9186f7747c447120b8": 1
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -305,7 +305,7 @@
|
|||||||
"DIST_LAY_CHECK": 11,
|
"DIST_LAY_CHECK": 11,
|
||||||
"DIST_TO_COVER_TO_LAY": 3.5,
|
"DIST_TO_COVER_TO_LAY": 3.5,
|
||||||
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
||||||
"IF_NO_ENEMY": true,
|
"IF_NO_ENEMY": false,
|
||||||
"LAY_AIM": 0.6,
|
"LAY_AIM": 0.6,
|
||||||
"LAY_CHANCE_DANGER": 40,
|
"LAY_CHANCE_DANGER": 40,
|
||||||
"MAX_CAN_LAY_DIST": 200,
|
"MAX_CAN_LAY_DIST": 200,
|
||||||
@ -786,7 +786,7 @@
|
|||||||
"DIST_LAY_CHECK": 11,
|
"DIST_LAY_CHECK": 11,
|
||||||
"DIST_TO_COVER_TO_LAY": 3.5,
|
"DIST_TO_COVER_TO_LAY": 3.5,
|
||||||
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
||||||
"IF_NO_ENEMY": true,
|
"IF_NO_ENEMY": false,
|
||||||
"LAY_AIM": 0.6,
|
"LAY_AIM": 0.6,
|
||||||
"LAY_CHANCE_DANGER": 40,
|
"LAY_CHANCE_DANGER": 40,
|
||||||
"MAX_CAN_LAY_DIST": 200,
|
"MAX_CAN_LAY_DIST": 200,
|
||||||
@ -1267,7 +1267,7 @@
|
|||||||
"DIST_LAY_CHECK": 11,
|
"DIST_LAY_CHECK": 11,
|
||||||
"DIST_TO_COVER_TO_LAY": 3.5,
|
"DIST_TO_COVER_TO_LAY": 3.5,
|
||||||
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
||||||
"IF_NO_ENEMY": true,
|
"IF_NO_ENEMY": false,
|
||||||
"LAY_AIM": 0.6,
|
"LAY_AIM": 0.6,
|
||||||
"LAY_CHANCE_DANGER": 40,
|
"LAY_CHANCE_DANGER": 40,
|
||||||
"MAX_CAN_LAY_DIST": 200,
|
"MAX_CAN_LAY_DIST": 200,
|
||||||
@ -1748,7 +1748,7 @@
|
|||||||
"DIST_LAY_CHECK": 11,
|
"DIST_LAY_CHECK": 11,
|
||||||
"DIST_TO_COVER_TO_LAY": 3.5,
|
"DIST_TO_COVER_TO_LAY": 3.5,
|
||||||
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
||||||
"IF_NO_ENEMY": true,
|
"IF_NO_ENEMY": false,
|
||||||
"LAY_AIM": 0.6,
|
"LAY_AIM": 0.6,
|
||||||
"LAY_CHANCE_DANGER": 40,
|
"LAY_CHANCE_DANGER": 40,
|
||||||
"MAX_CAN_LAY_DIST": 200,
|
"MAX_CAN_LAY_DIST": 200,
|
||||||
@ -2178,8 +2178,8 @@
|
|||||||
"5fc382a9d724d907e2077dab": 1
|
"5fc382a9d724d907e2077dab": 1
|
||||||
},
|
},
|
||||||
"Caliber9x21": {
|
"Caliber9x21": {
|
||||||
"5a269f97c4a282000b151807": 1,
|
"5a269f97c4a282000b151807": 13,
|
||||||
"5a26abfac4a28232980eabff": 1
|
"5a26abfac4a28232980eabff": 968
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"equipment": {
|
"equipment": {
|
||||||
@ -2192,8 +2192,8 @@
|
|||||||
"63626d904aa74b8fe30ab426": 1
|
"63626d904aa74b8fe30ab426": 1
|
||||||
},
|
},
|
||||||
"FirstPrimaryWeapon": {
|
"FirstPrimaryWeapon": {
|
||||||
"5c46fbd72e2216398b5a8c9c": 1,
|
"5c46fbd72e2216398b5a8c9c": 968,
|
||||||
"627e14b21713922ded6f2c15": 1
|
"627e14b21713922ded6f2c15": 13
|
||||||
},
|
},
|
||||||
"Headwear": {
|
"Headwear": {
|
||||||
"636270263f2495c26f00b007": 1
|
"636270263f2495c26f00b007": 1
|
||||||
@ -2206,8 +2206,8 @@
|
|||||||
},
|
},
|
||||||
"Scabbard": {},
|
"Scabbard": {},
|
||||||
"SecondPrimaryWeapon": {
|
"SecondPrimaryWeapon": {
|
||||||
"57dc2fa62459775949412633": 1,
|
"57dc2fa62459775949412633": 968,
|
||||||
"5ba26383d4351e00334c93d9": 1
|
"5ba26383d4351e00334c93d9": 13
|
||||||
},
|
},
|
||||||
"SecuredContainer": {
|
"SecuredContainer": {
|
||||||
"5c0a794586f77461c458f892": 1
|
"5c0a794586f77461c458f892": 1
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@
|
|||||||
"5fb53d0b7b5d1342ee24bd64": 1
|
"5fb53d0b7b5d1342ee24bd64": 1
|
||||||
},
|
},
|
||||||
"feet": {
|
"feet": {
|
||||||
"5fb535bd1c69e5198e234125": 1,
|
"5fb535bd1c69e5198e234125": 5,
|
||||||
"5fb535cf1c69e5198e234126": 1
|
"5fb535cf1c69e5198e234126": 1
|
||||||
},
|
},
|
||||||
"hands": [
|
"hands": [
|
||||||
@ -315,7 +315,7 @@
|
|||||||
"DIST_LAY_CHECK": 11,
|
"DIST_LAY_CHECK": 11,
|
||||||
"DIST_TO_COVER_TO_LAY": 3.5,
|
"DIST_TO_COVER_TO_LAY": 3.5,
|
||||||
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
||||||
"IF_NO_ENEMY": true,
|
"IF_NO_ENEMY": false,
|
||||||
"LAY_AIM": 0.6,
|
"LAY_AIM": 0.6,
|
||||||
"LAY_CHANCE_DANGER": 40,
|
"LAY_CHANCE_DANGER": 40,
|
||||||
"MAX_CAN_LAY_DIST": 200,
|
"MAX_CAN_LAY_DIST": 200,
|
||||||
@ -793,7 +793,7 @@
|
|||||||
"DIST_LAY_CHECK": 11,
|
"DIST_LAY_CHECK": 11,
|
||||||
"DIST_TO_COVER_TO_LAY": 3.5,
|
"DIST_TO_COVER_TO_LAY": 3.5,
|
||||||
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
||||||
"IF_NO_ENEMY": true,
|
"IF_NO_ENEMY": false,
|
||||||
"LAY_AIM": 0.6,
|
"LAY_AIM": 0.6,
|
||||||
"LAY_CHANCE_DANGER": 40,
|
"LAY_CHANCE_DANGER": 40,
|
||||||
"MAX_CAN_LAY_DIST": 200,
|
"MAX_CAN_LAY_DIST": 200,
|
||||||
@ -1271,7 +1271,7 @@
|
|||||||
"DIST_LAY_CHECK": 11,
|
"DIST_LAY_CHECK": 11,
|
||||||
"DIST_TO_COVER_TO_LAY": 3.5,
|
"DIST_TO_COVER_TO_LAY": 3.5,
|
||||||
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
||||||
"IF_NO_ENEMY": true,
|
"IF_NO_ENEMY": false,
|
||||||
"LAY_AIM": 0.6,
|
"LAY_AIM": 0.6,
|
||||||
"LAY_CHANCE_DANGER": 40,
|
"LAY_CHANCE_DANGER": 40,
|
||||||
"MAX_CAN_LAY_DIST": 200,
|
"MAX_CAN_LAY_DIST": 200,
|
||||||
@ -1749,7 +1749,7 @@
|
|||||||
"DIST_LAY_CHECK": 11,
|
"DIST_LAY_CHECK": 11,
|
||||||
"DIST_TO_COVER_TO_LAY": 3.5,
|
"DIST_TO_COVER_TO_LAY": 3.5,
|
||||||
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
"DIST_TO_COVER_TO_LAY_SQRT": 12.25,
|
||||||
"IF_NO_ENEMY": true,
|
"IF_NO_ENEMY": false,
|
||||||
"LAY_AIM": 0.6,
|
"LAY_AIM": 0.6,
|
||||||
"LAY_CHANCE_DANGER": 40,
|
"LAY_CHANCE_DANGER": 40,
|
||||||
"MAX_CAN_LAY_DIST": 200,
|
"MAX_CAN_LAY_DIST": 200,
|
||||||
@ -2169,12 +2169,12 @@
|
|||||||
"54527a984bdc2d4e668b4567": 1
|
"54527a984bdc2d4e668b4567": 1
|
||||||
},
|
},
|
||||||
"Caliber762x51": {
|
"Caliber762x51": {
|
||||||
"5a6086ea4f39f99cd479502f": 1,
|
"5a6086ea4f39f99cd479502f": 13,
|
||||||
"5e023e53d4353e3302577c4c": 1
|
"5e023e53d4353e3302577c4c": 45
|
||||||
},
|
},
|
||||||
"Caliber762x54R": {
|
"Caliber762x54R": {
|
||||||
"560d61e84bdc2da74d8b4571": 1,
|
"560d61e84bdc2da74d8b4571": 92,
|
||||||
"5887431f2459777e1612938f": 1
|
"5887431f2459777e1612938f": 145
|
||||||
},
|
},
|
||||||
"Caliber9x19PARA": {
|
"Caliber9x19PARA": {
|
||||||
"56d59d3ad2720bdb418b4577": 1
|
"56d59d3ad2720bdb418b4577": 1
|
||||||
@ -2183,23 +2183,23 @@
|
|||||||
"equipment": {
|
"equipment": {
|
||||||
"ArmBand": {},
|
"ArmBand": {},
|
||||||
"ArmorVest": {
|
"ArmorVest": {
|
||||||
"5e4abb5086f77406975c9342": 1,
|
"5e4abb5086f77406975c9342": 13,
|
||||||
"5fd4c474dd870108a754b241": 1
|
"5fd4c474dd870108a754b241": 9
|
||||||
},
|
},
|
||||||
"Backpack": {},
|
"Backpack": {},
|
||||||
"Earpiece": {},
|
"Earpiece": {},
|
||||||
"Eyewear": {},
|
"Eyewear": {},
|
||||||
"FaceCover": {
|
"FaceCover": {
|
||||||
"5ab8f4ff86f77431c60d91ba": 1,
|
"5ab8f4ff86f77431c60d91ba": 1506,
|
||||||
"5b432b2f5acfc4771e1c6622": 1,
|
"5b432b2f5acfc4771e1c6622": 1584,
|
||||||
"635267ab3c89e2112001f826": 1
|
"635267ab3c89e2112001f826": 997
|
||||||
},
|
},
|
||||||
"FirstPrimaryWeapon": {
|
"FirstPrimaryWeapon": {
|
||||||
"55801eed4bdc2d89578b4588": 1,
|
"55801eed4bdc2d89578b4588": 2465,
|
||||||
"5bfea6e90db834001b7347f3": 1,
|
"5bfea6e90db834001b7347f3": 20,
|
||||||
"5c46fbd72e2216398b5a8c9c": 1,
|
"5c46fbd72e2216398b5a8c9c": 1564,
|
||||||
"5df8ce05b11454561e39243b": 1,
|
"5df8ce05b11454561e39243b": 13,
|
||||||
"6176aca650224f204c1da3fb": 1
|
"6176aca650224f204c1da3fb": 25
|
||||||
},
|
},
|
||||||
"Headwear": {},
|
"Headwear": {},
|
||||||
"Holster": {},
|
"Holster": {},
|
||||||
@ -2208,17 +2208,17 @@
|
|||||||
},
|
},
|
||||||
"Scabbard": {},
|
"Scabbard": {},
|
||||||
"SecondPrimaryWeapon": {
|
"SecondPrimaryWeapon": {
|
||||||
"5447a9cd4bdc2dbd208b4567": 1,
|
"5447a9cd4bdc2dbd208b4567": 90,
|
||||||
"57dc2fa62459775949412633": 1,
|
"57dc2fa62459775949412633": 1873,
|
||||||
"59984ab886f7743e98271174": 1
|
"59984ab886f7743e98271174": 1133
|
||||||
},
|
},
|
||||||
"SecuredContainer": {
|
"SecuredContainer": {
|
||||||
"5c0a794586f77461c458f892": 1
|
"5c0a794586f77461c458f892": 1
|
||||||
},
|
},
|
||||||
"TacticalVest": {
|
"TacticalVest": {
|
||||||
"544a5caa4bdc2d1a388b4568": 1,
|
"544a5caa4bdc2d1a388b4568": 18,
|
||||||
"61bcc89aef0f505f0c6cd0fc": 1,
|
"61bcc89aef0f505f0c6cd0fc": 59,
|
||||||
"63611865ba5b90db0c0399d1": 1
|
"63611865ba5b90db0c0399d1": 4010
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"items": {
|
"items": {
|
||||||
|
@ -1,30 +1,30 @@
|
|||||||
{
|
{
|
||||||
"appearance": {
|
"appearance": {
|
||||||
"body": {
|
"body": {
|
||||||
"5cc2e59214c02e000f16684e": 1,
|
"5cc2e59214c02e000f16684e": 44,
|
||||||
"5cde9f337d6c8b0474535da8": 1,
|
"5cde9f337d6c8b0474535da8": 47,
|
||||||
"5d28ad6986f77429275dba22": 1,
|
"5d28ad6986f77429275dba22": 39,
|
||||||
"5d28ad7286f7742926686182": 1,
|
"5d28ad7286f7742926686182": 52,
|
||||||
"5df8a10486f77412672a1e3a": 1,
|
"5df8a10486f77412672a1e3a": 40,
|
||||||
"5e4bb3ee86f77406975c934e": 1,
|
"5e4bb3ee86f77406975c934e": 35,
|
||||||
"5e9da1d086f774054a667134": 1,
|
"5e9da1d086f774054a667134": 61,
|
||||||
"5fd1eb3fbe3b7107d66cb645": 1,
|
"5fd1eb3fbe3b7107d66cb645": 42,
|
||||||
"5fd22d311add82653b5a704c": 1,
|
"5fd22d311add82653b5a704c": 42,
|
||||||
"618d1af10a5a59657e5f56f3": 1,
|
"618d1af10a5a59657e5f56f3": 38,
|
||||||
"619238266c614e6d15792bca": 1,
|
"619238266c614e6d15792bca": 46,
|
||||||
"637df28ac22da5bb8d046935": 1
|
"637df28ac22da5bb8d046935": 38
|
||||||
},
|
},
|
||||||
"feet": {
|
"feet": {
|
||||||
"5cc2e5d014c02e15d53d9c03": 1,
|
"5cc2e5d014c02e15d53d9c03": 70,
|
||||||
"5cde9fb87d6c8b0474535da9": 1,
|
"5cde9fb87d6c8b0474535da9": 58,
|
||||||
"5d28af3486f774292364a6e7": 1,
|
"5d28af3486f774292364a6e7": 65,
|
||||||
"5df8a15186f77412640e2e6a": 1,
|
"5df8a15186f77412640e2e6a": 53,
|
||||||
"5f5e410c6bdad616ad46d60b": 1,
|
"5f5e410c6bdad616ad46d60b": 73,
|
||||||
"5f5e41366760b4138443b343": 1,
|
"5f5e41366760b4138443b343": 64,
|
||||||
"5f5e41576760b4138443b344": 1,
|
"5f5e41576760b4138443b344": 86,
|
||||||
"61922589bb2cea6f7a22d964": 1,
|
"61922589bb2cea6f7a22d964": 48,
|
||||||
"6193be546e5968395b260157": 1,
|
"6193be546e5968395b260157": 83,
|
||||||
"637df25a1e688345e1097bd4": 1
|
"637df25a1e688345e1097bd4": 65
|
||||||
},
|
},
|
||||||
"hands": [
|
"hands": [
|
||||||
"5fd78fe9e3bfcf6cab4c9f54",
|
"5fd78fe9e3bfcf6cab4c9f54",
|
||||||
@ -2179,26 +2179,26 @@
|
|||||||
"inventory": {
|
"inventory": {
|
||||||
"Ammo": {
|
"Ammo": {
|
||||||
"Caliber12g": {
|
"Caliber12g": {
|
||||||
"560d5e524bdc2d25448b4571": 1,
|
"560d5e524bdc2d25448b4571": 181,
|
||||||
"5d6e6806a4b936088465b17e": 1,
|
"5d6e6806a4b936088465b17e": 44,
|
||||||
"5d6e6891a4b9361bd473feea": 1,
|
"5d6e6891a4b9361bd473feea": 12,
|
||||||
"5d6e68dea4b9361bcc29e659": 1,
|
"5d6e68dea4b9361bcc29e659": 26,
|
||||||
"5d6e6911a4b9361bd5780d52": 1
|
"5d6e6911a4b9361bd5780d52": 19
|
||||||
},
|
},
|
||||||
"Caliber20g": {
|
"Caliber20g": {
|
||||||
"5a38ebd9c4a282000d722a5b": 1
|
"5a38ebd9c4a282000d722a5b": 1
|
||||||
},
|
},
|
||||||
"Caliber366TKM": {
|
"Caliber366TKM": {
|
||||||
"59e6542b86f77411dc52a77a": 1,
|
"59e6542b86f77411dc52a77a": 3,
|
||||||
"5f0596629e22f464da6bbdd9": 1
|
"5f0596629e22f464da6bbdd9": 17
|
||||||
},
|
},
|
||||||
"Caliber545x39": {
|
"Caliber545x39": {
|
||||||
"56dff3afd2720bba668b4567": 1
|
"56dff3afd2720bba668b4567": 1
|
||||||
},
|
},
|
||||||
"Caliber556x45NATO": {
|
"Caliber556x45NATO": {
|
||||||
"54527a984bdc2d4e668b4567": 1,
|
"54527a984bdc2d4e668b4567": 25,
|
||||||
"54527ac44bdc2d36668b4567": 1,
|
"54527ac44bdc2d36668b4567": 7,
|
||||||
"5c0d5ae286f7741e46554302": 1
|
"5c0d5ae286f7741e46554302": 4
|
||||||
},
|
},
|
||||||
"Caliber762x25TT": {
|
"Caliber762x25TT": {
|
||||||
"5736026a245977644601dc61": 1
|
"5736026a245977644601dc61": 1
|
||||||
@ -2207,8 +2207,8 @@
|
|||||||
"5656d7c34bdc2d9d198b4587": 1
|
"5656d7c34bdc2d9d198b4587": 1
|
||||||
},
|
},
|
||||||
"Caliber762x51": {
|
"Caliber762x51": {
|
||||||
"5e023e53d4353e3302577c4c": 1,
|
"5e023e53d4353e3302577c4c": 29,
|
||||||
"5e023e6e34d52a55c3304f71": 1
|
"5e023e6e34d52a55c3304f71": 39
|
||||||
},
|
},
|
||||||
"Caliber9x18PM": {
|
"Caliber9x18PM": {
|
||||||
"573719762459775a626ccbc1": 1
|
"573719762459775a626ccbc1": 1
|
||||||
@ -2220,86 +2220,86 @@
|
|||||||
"equipment": {
|
"equipment": {
|
||||||
"ArmBand": {},
|
"ArmBand": {},
|
||||||
"ArmorVest": {
|
"ArmorVest": {
|
||||||
"5648a7494bdc2d9d488b4583": 1,
|
"5648a7494bdc2d9d488b4583": 28,
|
||||||
"59e7635f86f7742cbf2c1095": 1,
|
"59e7635f86f7742cbf2c1095": 37,
|
||||||
"5ab8e4ed86f7742d8e50c7fa": 1,
|
"5ab8e4ed86f7742d8e50c7fa": 21,
|
||||||
"5ab8e79e86f7742d8b372e78": 1,
|
"5ab8e79e86f7742d8b372e78": 23,
|
||||||
"5b44d22286f774172b0c9de8": 1,
|
"5b44d22286f774172b0c9de8": 30,
|
||||||
"5c0e53c886f7747fa54205c7": 1,
|
"5c0e53c886f7747fa54205c7": 22,
|
||||||
"5c0e5edb86f77461f55ed1f7": 1,
|
"5c0e5edb86f77461f55ed1f7": 36,
|
||||||
"5df8a2ca86f7740bfe6df777": 1,
|
"5df8a2ca86f7740bfe6df777": 43,
|
||||||
"609e8540d5c319764c2bc2e9": 1
|
"609e8540d5c319764c2bc2e9": 28
|
||||||
},
|
},
|
||||||
"Backpack": {
|
"Backpack": {
|
||||||
"61b9e1aaef9a1b5d6a79899a": 1
|
"61b9e1aaef9a1b5d6a79899a": 1
|
||||||
},
|
},
|
||||||
"Earpiece": {},
|
"Earpiece": {},
|
||||||
"Eyewear": {
|
"Eyewear": {
|
||||||
"5aa2b923e5b5b000137b7589": 1,
|
"5aa2b923e5b5b000137b7589": 31,
|
||||||
"5aa2b9aee5b5b00015693121": 1,
|
"5aa2b9aee5b5b00015693121": 35,
|
||||||
"5c1a1cc52e221602b3136e3d": 1,
|
"5c1a1cc52e221602b3136e3d": 15,
|
||||||
"5d6d2ef3a4b93618084f58bd": 1,
|
"5d6d2ef3a4b93618084f58bd": 22,
|
||||||
"603409c80ca681766b6a0fb2": 1
|
"603409c80ca681766b6a0fb2": 20
|
||||||
},
|
},
|
||||||
"FaceCover": {
|
"FaceCover": {
|
||||||
"5c1a1e3f2e221602b66cc4c2": 1
|
"5c1a1e3f2e221602b66cc4c2": 1
|
||||||
},
|
},
|
||||||
"FirstPrimaryWeapon": {
|
"FirstPrimaryWeapon": {
|
||||||
"54491c4f4bdc2db1078b4568": 1,
|
"54491c4f4bdc2db1078b4568": 10,
|
||||||
"5644bd2b4bdc2d3b4c8b4572": 1,
|
"5644bd2b4bdc2d3b4c8b4572": 6,
|
||||||
"56dee2bdd2720bc8328b4567": 1,
|
"56dee2bdd2720bc8328b4567": 24,
|
||||||
"574d967124597745970e7c94": 1,
|
"574d967124597745970e7c94": 99,
|
||||||
"576165642459773c7a400233": 1,
|
"576165642459773c7a400233": 47,
|
||||||
"57d14d2524597714373db789": 1,
|
"57d14d2524597714373db789": 11,
|
||||||
"57dc2fa62459775949412633": 1,
|
"57dc2fa62459775949412633": 49,
|
||||||
"587e02ff24597743df3deaeb": 1,
|
"587e02ff24597743df3deaeb": 97,
|
||||||
"59d6088586f774275f37482f": 1,
|
"59d6088586f774275f37482f": 35,
|
||||||
"59e6152586f77473dc057aa1": 1,
|
"59e6152586f77473dc057aa1": 46,
|
||||||
"59e6687d86f77411d949b251": 1,
|
"59e6687d86f77411d949b251": 40,
|
||||||
"59f9cabd86f7743a10721f46": 1,
|
"59f9cabd86f7743a10721f46": 39,
|
||||||
"59ff346386f77477562ff5e2": 1,
|
"59ff346386f77477562ff5e2": 15,
|
||||||
"5a38e6bac4a2826c6e06d79b": 1,
|
"5a38e6bac4a2826c6e06d79b": 22,
|
||||||
"5ac4cd105acfc40016339859": 1,
|
"5ac4cd105acfc40016339859": 32,
|
||||||
"5ac66d9b5acfc4001633997a": 1,
|
"5ac66d9b5acfc4001633997a": 14,
|
||||||
"5c07c60e0db834002330051f": 1,
|
"5c07c60e0db834002330051f": 36,
|
||||||
"5c501a4d2e221602b412b540": 1,
|
"5c501a4d2e221602b412b540": 17,
|
||||||
"606dae0ab0e443224b421bb7": 1
|
"606dae0ab0e443224b421bb7": 26
|
||||||
},
|
},
|
||||||
"Headwear": {
|
"Headwear": {
|
||||||
"5a43943586f77416ad2f06e2": 1,
|
"5a43943586f77416ad2f06e2": 337,
|
||||||
"5a43957686f7742a2c2f11b0": 1
|
"5a43957686f7742a2c2f11b0": 328
|
||||||
},
|
},
|
||||||
"Holster": {
|
"Holster": {
|
||||||
"56d59856d2720bd8418b456a": 1,
|
"56d59856d2720bd8418b456a": 148,
|
||||||
"56e0598dd2720bb5668b45a6": 1,
|
"56e0598dd2720bb5668b45a6": 58,
|
||||||
"571a12c42459771f627b58a0": 1,
|
"571a12c42459771f627b58a0": 133,
|
||||||
"576a581d2459771e7b1bc4f1": 1,
|
"576a581d2459771e7b1bc4f1": 275,
|
||||||
"579204f224597773d619e051": 1,
|
"579204f224597773d619e051": 10,
|
||||||
"5a17f98cfcdbcb0980087290": 1
|
"5a17f98cfcdbcb0980087290": 41
|
||||||
},
|
},
|
||||||
"Pockets": {
|
"Pockets": {
|
||||||
"557ffd194bdc2d28148b457f": 1
|
"557ffd194bdc2d28148b457f": 1
|
||||||
},
|
},
|
||||||
"Scabbard": {
|
"Scabbard": {
|
||||||
"54491bb74bdc2d09088b4567": 1,
|
"54491bb74bdc2d09088b4567": 91,
|
||||||
"57e26ea924597715ca604a09": 1,
|
"57e26ea924597715ca604a09": 215,
|
||||||
"57e26fc7245977162a14b800": 1,
|
"57e26fc7245977162a14b800": 233,
|
||||||
"5bc9c1e2d4351e00367fbcf0": 1
|
"5bc9c1e2d4351e00367fbcf0": 8
|
||||||
},
|
},
|
||||||
"SecondPrimaryWeapon": {},
|
"SecondPrimaryWeapon": {},
|
||||||
"SecuredContainer": {
|
"SecuredContainer": {
|
||||||
"5c0a794586f77461c458f892": 1
|
"5c0a794586f77461c458f892": 1
|
||||||
},
|
},
|
||||||
"TacticalVest": {
|
"TacticalVest": {
|
||||||
"592c2d1a86f7746dbe2af32a": 1,
|
"592c2d1a86f7746dbe2af32a": 11,
|
||||||
"59e7643b86f7742cbf2c109a": 1,
|
"59e7643b86f7742cbf2c109a": 391,
|
||||||
"5ab8dab586f77441cd04f2a2": 1,
|
"5ab8dab586f77441cd04f2a2": 25,
|
||||||
"5c0e446786f7742013381639": 1,
|
"5c0e446786f7742013381639": 70,
|
||||||
"5c0e6a1586f77404597b4965": 1,
|
"5c0e6a1586f77404597b4965": 18,
|
||||||
"5d5d646386f7742797261fd9": 1,
|
"5d5d646386f7742797261fd9": 64,
|
||||||
"5e4abfed86f77406a2713cf7": 1,
|
"5e4abfed86f77406a2713cf7": 22,
|
||||||
"5fd4c60f875c30179f5d04c2": 1,
|
"5fd4c60f875c30179f5d04c2": 14,
|
||||||
"6040dd4ddcf9592f401632d2": 1
|
"6040dd4ddcf9592f401632d2": 50
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"items": {
|
"items": {
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,13 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
presets: [
|
|
||||||
[
|
|
||||||
"@babel/preset-env",
|
|
||||||
{
|
|
||||||
targets: {
|
|
||||||
node: "current"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"@babel/preset-typescript"
|
|
||||||
]
|
|
||||||
};
|
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "./node_modules/rome/configuration_schema.json",
|
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
|
||||||
"linter": {
|
"linter": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"rules": {
|
"rules": {
|
@ -12,7 +12,7 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"check:circular": "madge --circular --extensions ts ./src/",
|
"check:circular": "madge --circular --extensions ts ./src/",
|
||||||
"lint": "rome ci src --formatter-enabled=false --max-diagnostics=200",
|
"lint": "biome ci src --formatter-enabled=false --max-diagnostics=200",
|
||||||
"lint:fix": "eslint --fix --ext .ts src/**",
|
"lint:fix": "eslint --fix --ext .ts src/**",
|
||||||
"test:run": "jest --colors --runInBand",
|
"test:run": "jest --colors --runInBand",
|
||||||
"test:coverage": "jest --coverage --maxWorkers=1 --no-cache",
|
"test:coverage": "jest --coverage --maxWorkers=1 --no-cache",
|
||||||
@ -42,8 +42,7 @@
|
|||||||
"ws": "8.14.2"
|
"ws": "8.14.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/preset-env": "7.23.2",
|
"@biomejs/biome": "1.3.3",
|
||||||
"@babel/preset-typescript": "7.23.2",
|
|
||||||
"@jest/globals": "29.7.0",
|
"@jest/globals": "29.7.0",
|
||||||
"@pnpm/exe": "8.9.0",
|
"@pnpm/exe": "8.9.0",
|
||||||
"@swc/cli": "0.1.62",
|
"@swc/cli": "0.1.62",
|
||||||
@ -67,7 +66,6 @@
|
|||||||
"pkg": "5.8.1",
|
"pkg": "5.8.1",
|
||||||
"pkg-fetch": "3.5.2",
|
"pkg-fetch": "3.5.2",
|
||||||
"resedit": "2.0.0",
|
"resedit": "2.0.0",
|
||||||
"rome": "12.1.3",
|
|
||||||
"ts-jest": "29.1.1",
|
"ts-jest": "29.1.1",
|
||||||
"ts-node-dev": "2.0.0",
|
"ts-node-dev": "2.0.0",
|
||||||
"tsconfig-paths": "4.2.0",
|
"tsconfig-paths": "4.2.0",
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
||||||
export const TYPES: {[name:string]: symbol} = {
|
|
||||||
PROGRAM: Symbol.for("PROGRAM"),
|
|
||||||
APP: Symbol.for("APP")
|
|
||||||
};
|
|
@ -4,6 +4,7 @@ import { HideoutController } from "@spt-aki/controllers/HideoutController";
|
|||||||
import { OnUpdate } from "@spt-aki/di/OnUpdate";
|
import { OnUpdate } from "@spt-aki/di/OnUpdate";
|
||||||
import { IPmcData } from "@spt-aki/models/eft/common/IPmcData";
|
import { IPmcData } from "@spt-aki/models/eft/common/IPmcData";
|
||||||
import { IHandleQTEEventRequestData } from "@spt-aki/models/eft/hideout/IHandleQTEEventRequestData";
|
import { IHandleQTEEventRequestData } from "@spt-aki/models/eft/hideout/IHandleQTEEventRequestData";
|
||||||
|
import { IHideoutCancelProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutCancelProductionRequestData";
|
||||||
import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData";
|
import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData";
|
||||||
import { IHideoutImproveAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutImproveAreaRequestData";
|
import { IHideoutImproveAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutImproveAreaRequestData";
|
||||||
import { IHideoutPutItemInRequestData } from "@spt-aki/models/eft/hideout/IHideoutPutItemInRequestData";
|
import { IHideoutPutItemInRequestData } from "@spt-aki/models/eft/hideout/IHideoutPutItemInRequestData";
|
||||||
@ -129,6 +130,14 @@ export class HideoutCallbacks implements OnUpdate
|
|||||||
return this.hideoutController.improveArea(sessionId, pmcData, request);
|
return this.hideoutController.improveArea(sessionId, pmcData, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle client/game/profile/items/moving - HideoutCancelProductionCommand
|
||||||
|
*/
|
||||||
|
public cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse
|
||||||
|
{
|
||||||
|
return this.hideoutController.cancelProduction(sessionId, pmcData, request);
|
||||||
|
}
|
||||||
|
|
||||||
public async onUpdate(timeSinceLastRun: number): Promise<boolean>
|
public async onUpdate(timeSinceLastRun: number): Promise<boolean>
|
||||||
{
|
{
|
||||||
if (timeSinceLastRun > this.hideoutConfig.runIntervalSeconds)
|
if (timeSinceLastRun > this.hideoutConfig.runIntervalSeconds)
|
||||||
|
@ -12,6 +12,7 @@ import { Upd } from "@spt-aki/models/eft/common/tables/IItem";
|
|||||||
import { HideoutUpgradeCompleteRequestData } from "@spt-aki/models/eft/hideout/HideoutUpgradeCompleteRequestData";
|
import { HideoutUpgradeCompleteRequestData } from "@spt-aki/models/eft/hideout/HideoutUpgradeCompleteRequestData";
|
||||||
import { IHandleQTEEventRequestData } from "@spt-aki/models/eft/hideout/IHandleQTEEventRequestData";
|
import { IHandleQTEEventRequestData } from "@spt-aki/models/eft/hideout/IHandleQTEEventRequestData";
|
||||||
import { IHideoutArea, Stage } from "@spt-aki/models/eft/hideout/IHideoutArea";
|
import { IHideoutArea, Stage } from "@spt-aki/models/eft/hideout/IHideoutArea";
|
||||||
|
import { IHideoutCancelProductionRequestData } from "@spt-aki/models/eft/hideout/IHideoutCancelProductionRequestData";
|
||||||
import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData";
|
import { IHideoutContinuousProductionStartRequestData } from "@spt-aki/models/eft/hideout/IHideoutContinuousProductionStartRequestData";
|
||||||
import { IHideoutImproveAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutImproveAreaRequestData";
|
import { IHideoutImproveAreaRequestData } from "@spt-aki/models/eft/hideout/IHideoutImproveAreaRequestData";
|
||||||
import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction";
|
import { IHideoutProduction } from "@spt-aki/models/eft/hideout/IHideoutProduction";
|
||||||
@ -125,7 +126,6 @@ export class HideoutController
|
|||||||
}
|
}
|
||||||
|
|
||||||
const hideoutData = this.databaseServer.getTables().hideout.areas.find(area => area.type === request.areaType);
|
const hideoutData = this.databaseServer.getTables().hideout.areas.find(area => area.type === request.areaType);
|
||||||
|
|
||||||
if (!hideoutData)
|
if (!hideoutData)
|
||||||
{
|
{
|
||||||
this.logger.error(this.localisationService.getText("hideout-unable_to_find_area_in_database", request.areaType));
|
this.logger.error(this.localisationService.getText("hideout-unable_to_find_area_in_database", request.areaType));
|
||||||
@ -133,7 +133,6 @@ export class HideoutController
|
|||||||
}
|
}
|
||||||
|
|
||||||
const ctime = hideoutData.stages[hideoutArea.level + 1].constructionTime;
|
const ctime = hideoutData.stages[hideoutArea.level + 1].constructionTime;
|
||||||
|
|
||||||
if (ctime > 0)
|
if (ctime > 0)
|
||||||
{
|
{
|
||||||
const timestamp = this.timeUtil.getTimestamp();
|
const timestamp = this.timeUtil.getTimestamp();
|
||||||
@ -734,8 +733,8 @@ export class HideoutController
|
|||||||
area.lastRecipe = request.recipeId;
|
area.lastRecipe = request.recipeId;
|
||||||
counterHoursCrafting.value = hoursCrafting;
|
counterHoursCrafting.value = hoursCrafting;
|
||||||
|
|
||||||
// Delete production now it's complete
|
// Null production data now it's complete - will be cleaned up later by update() process
|
||||||
delete pmcData.Hideout.Production[prodId];
|
pmcData.Hideout.Production[prodId] = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Remove the old production from output object before its sent to client
|
// Remove the old production from output object before its sent to client
|
||||||
@ -814,7 +813,9 @@ export class HideoutController
|
|||||||
|
|
||||||
const callback = () =>
|
const callback = () =>
|
||||||
{
|
{
|
||||||
delete pmcData.Hideout.Production[prodId];
|
|
||||||
|
// Null production data now it's complete - will be cleaned up later by update() process
|
||||||
|
pmcData.Hideout.Production[prodId] = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.inventoryHelper.addItem(pmcData, newReq, output, sessionID, callback, true);
|
return this.inventoryHelper.addItem(pmcData, newReq, output, sessionID, callback, true);
|
||||||
@ -832,7 +833,6 @@ export class HideoutController
|
|||||||
return this.hideoutHelper.registerProduction(pmcData, request, sessionID);
|
return this.hideoutHelper.registerProduction(pmcData, request, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get quick time event list for hideout
|
* Get quick time event list for hideout
|
||||||
* // TODO - implement this
|
* // TODO - implement this
|
||||||
@ -909,8 +909,8 @@ export class HideoutController
|
|||||||
/**
|
/**
|
||||||
* Handle client/game/profile/items/moving - HideoutImproveArea
|
* Handle client/game/profile/items/moving - HideoutImproveArea
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
* @param pmcData profile to improve area in
|
* @param pmcData Profile to improve area in
|
||||||
* @param request improve area request data
|
* @param request Improve area request data
|
||||||
*/
|
*/
|
||||||
public improveArea(sessionId: string, pmcData: IPmcData, request: IHideoutImproveAreaRequestData): IItemEventRouterResponse
|
public improveArea(sessionId: string, pmcData: IPmcData, request: IHideoutImproveAreaRequestData): IItemEventRouterResponse
|
||||||
{
|
{
|
||||||
@ -980,6 +980,34 @@ export class HideoutController
|
|||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle client/game/profile/items/moving HideoutCancelProductionCommand
|
||||||
|
* @param sessionId Session id
|
||||||
|
* @param pmcData Profile with craft to cancel
|
||||||
|
* @param request Cancel production request data
|
||||||
|
* @returns IItemEventRouterResponse
|
||||||
|
*/
|
||||||
|
public cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse
|
||||||
|
{
|
||||||
|
const output = this.eventOutputHolder.getOutput(sessionId);
|
||||||
|
|
||||||
|
const craftToCancel = pmcData.Hideout.Production[request.recipeId];
|
||||||
|
if (!craftToCancel)
|
||||||
|
{
|
||||||
|
const errorMessage = `Unable to find craft ${request.recipeId} to cancel`;
|
||||||
|
this.logger.error(errorMessage);
|
||||||
|
|
||||||
|
return this.httpResponse.appendErrorToOutput(output, errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Null out production data so client gets informed when response send back
|
||||||
|
pmcData.Hideout.Production[request.recipeId] = null;
|
||||||
|
|
||||||
|
// TODO - handle timestamp somehow?
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function called every x seconds as part of onUpdate event
|
* Function called every x seconds as part of onUpdate event
|
||||||
*/
|
*/
|
||||||
|
@ -185,7 +185,6 @@ import { RagfairServer } from "@spt-aki/servers/RagfairServer";
|
|||||||
import { SaveServer } from "@spt-aki/servers/SaveServer";
|
import { SaveServer } from "@spt-aki/servers/SaveServer";
|
||||||
import { WebSocketServer } from "@spt-aki/servers/WebSocketServer";
|
import { WebSocketServer } from "@spt-aki/servers/WebSocketServer";
|
||||||
import { AkiHttpListener } from "@spt-aki/servers/http/AkiHttpListener";
|
import { AkiHttpListener } from "@spt-aki/servers/http/AkiHttpListener";
|
||||||
import { HttpBufferHandler } from "@spt-aki/servers/http/HttpBufferHandler";
|
|
||||||
import { BotEquipmentFilterService } from "@spt-aki/services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "@spt-aki/services/BotEquipmentFilterService";
|
||||||
import { BotEquipmentModPoolService } from "@spt-aki/services/BotEquipmentModPoolService";
|
import { BotEquipmentModPoolService } from "@spt-aki/services/BotEquipmentModPoolService";
|
||||||
import { BotGenerationCacheService } from "@spt-aki/services/BotGenerationCacheService";
|
import { BotGenerationCacheService } from "@spt-aki/services/BotGenerationCacheService";
|
||||||
@ -630,8 +629,6 @@ export class Container
|
|||||||
depContainer.register<RagfairServer>("RagfairServer", RagfairServer);
|
depContainer.register<RagfairServer>("RagfairServer", RagfairServer);
|
||||||
depContainer.register<SaveServer>("SaveServer", SaveServer, { lifecycle: Lifecycle.Singleton });
|
depContainer.register<SaveServer>("SaveServer", SaveServer, { lifecycle: Lifecycle.Singleton });
|
||||||
depContainer.register<ConfigServer>("ConfigServer", ConfigServer, { lifecycle: Lifecycle.Singleton });
|
depContainer.register<ConfigServer>("ConfigServer", ConfigServer, { lifecycle: Lifecycle.Singleton });
|
||||||
depContainer.register<HttpBufferHandler>("HttpBufferHandler", HttpBufferHandler, {lifecycle: Lifecycle.Singleton});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static registerControllers(depContainer: DependencyContainer): void
|
private static registerControllers(depContainer: DependencyContainer): void
|
||||||
|
@ -185,7 +185,7 @@ export class BotEquipmentModGenerator
|
|||||||
const botWeaponSightWhitelist = this.botEquipmentFilterService.getBotWeaponSightWhitelist(botEquipmentRole);
|
const botWeaponSightWhitelist = this.botEquipmentFilterService.getBotWeaponSightWhitelist(botEquipmentRole);
|
||||||
const randomisationSettings = this.botHelper.getBotRandomizationDetails(botLevel, botEquipConfig);
|
const randomisationSettings = this.botHelper.getBotRandomizationDetails(botLevel, botEquipConfig);
|
||||||
|
|
||||||
// Iterate over mod pool and choose mods to add to item
|
// Iterate over mod pool and choose mods to attach
|
||||||
const sortedModKeys = this.sortModKeys(Object.keys(compatibleModsPool));
|
const sortedModKeys = this.sortModKeys(Object.keys(compatibleModsPool));
|
||||||
for (const modSlot of sortedModKeys)
|
for (const modSlot of sortedModKeys)
|
||||||
{
|
{
|
||||||
@ -204,7 +204,7 @@ export class BotEquipmentModGenerator
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const isRandomisableSlot = randomisationSettings?.randomisedWeaponModSlots?.includes(modSlot);
|
const isRandomisableSlot = randomisationSettings?.randomisedWeaponModSlots?.includes(modSlot) ?? false;
|
||||||
const modToAdd = this.chooseModToPutIntoSlot(modSlot, isRandomisableSlot, botWeaponSightWhitelist, botEquipBlacklist, compatibleModsPool, weapon, ammoTpl, parentTemplate);
|
const modToAdd = this.chooseModToPutIntoSlot(modSlot, isRandomisableSlot, botWeaponSightWhitelist, botEquipBlacklist, compatibleModsPool, weapon, ammoTpl, parentTemplate);
|
||||||
|
|
||||||
// Compatible mod not found
|
// Compatible mod not found
|
||||||
@ -213,13 +213,12 @@ export class BotEquipmentModGenerator
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const modToAddTemplate = modToAdd[1];
|
|
||||||
|
|
||||||
if (!this.isModValidForSlot(modToAdd, modsParentSlot, modSlot, parentTemplate))
|
if (!this.isModValidForSlot(modToAdd, modsParentSlot, modSlot, parentTemplate))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const modToAddTemplate = modToAdd[1];
|
||||||
// Skip adding mod to weapon if type limit reached
|
// Skip adding mod to weapon if type limit reached
|
||||||
if (this.botWeaponModLimitService.weaponModHasReachedLimit(botEquipmentRole, modToAddTemplate, modLimits, parentTemplate, weapon))
|
if (this.botWeaponModLimitService.weaponModHasReachedLimit(botEquipmentRole, modToAddTemplate, modLimits, parentTemplate, weapon))
|
||||||
{
|
{
|
||||||
@ -386,13 +385,20 @@ export class BotEquipmentModGenerator
|
|||||||
const sortedKeys: string[] = [];
|
const sortedKeys: string[] = [];
|
||||||
const modRecieverKey = "mod_reciever";
|
const modRecieverKey = "mod_reciever";
|
||||||
const modMount001Key = "mod_mount_001";
|
const modMount001Key = "mod_mount_001";
|
||||||
const modGasBLockKey = "mod_gas_block";
|
const modGasBlockKey = "mod_gas_block";
|
||||||
const modPistolGrip = "mod_pistol_grip";
|
const modPistolGrip = "mod_pistol_grip";
|
||||||
const modStockKey = "mod_stock";
|
const modStockKey = "mod_stock";
|
||||||
const modBarrelKey = "mod_barrel";
|
const modBarrelKey = "mod_barrel";
|
||||||
|
const modHandguardKey = "mod_handguard";
|
||||||
const modMountKey = "mod_mount";
|
const modMountKey = "mod_mount";
|
||||||
const modScopeKey = "mod_scope";
|
const modScopeKey = "mod_scope";
|
||||||
|
|
||||||
|
if (unsortedKeys.includes(modHandguardKey))
|
||||||
|
{
|
||||||
|
sortedKeys.push(modHandguardKey);
|
||||||
|
unsortedKeys.splice(unsortedKeys.indexOf(modHandguardKey), 1);
|
||||||
|
}
|
||||||
|
|
||||||
if (unsortedKeys.includes(modBarrelKey))
|
if (unsortedKeys.includes(modBarrelKey))
|
||||||
{
|
{
|
||||||
sortedKeys.push(modBarrelKey);
|
sortedKeys.push(modBarrelKey);
|
||||||
@ -417,10 +423,10 @@ export class BotEquipmentModGenerator
|
|||||||
unsortedKeys.splice(unsortedKeys.indexOf(modPistolGrip), 1);
|
unsortedKeys.splice(unsortedKeys.indexOf(modPistolGrip), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unsortedKeys.includes(modGasBLockKey))
|
if (unsortedKeys.includes(modGasBlockKey))
|
||||||
{
|
{
|
||||||
sortedKeys.push(modGasBLockKey);
|
sortedKeys.push(modGasBlockKey);
|
||||||
unsortedKeys.splice(unsortedKeys.indexOf(modGasBLockKey), 1);
|
unsortedKeys.splice(unsortedKeys.indexOf(modGasBlockKey), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unsortedKeys.includes(modStockKey))
|
if (unsortedKeys.includes(modStockKey))
|
||||||
@ -555,6 +561,7 @@ export class BotEquipmentModGenerator
|
|||||||
if (!modCompatibilityResult.incompatible)
|
if (!modCompatibilityResult.incompatible)
|
||||||
{
|
{
|
||||||
found = true;
|
found = true;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -528,10 +528,11 @@ export class BotLootGenerator
|
|||||||
// only add if no upd or stack objects exist - preserves existing stack count
|
// only add if no upd or stack objects exist - preserves existing stack count
|
||||||
if (!ammoItem.upd?.StackObjectsCount)
|
if (!ammoItem.upd?.StackObjectsCount)
|
||||||
{
|
{
|
||||||
const minStackSize = itemTemplate._props.StackMinRandom;
|
const randomSize = itemTemplate._props.StackMaxSize === 1
|
||||||
const maxStackSize = itemTemplate._props.StackMaxSize;
|
? 1
|
||||||
|
: this.randomUtil.getInt(itemTemplate._props.StackMinRandom, itemTemplate._props.StackMaxRandom);
|
||||||
|
|
||||||
ammoItem.upd = { "StackObjectsCount": this.randomUtil.getInt(minStackSize, maxStackSize) };
|
ammoItem.upd = { StackObjectsCount: randomSize };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -665,7 +665,11 @@ export class LocationGenerator
|
|||||||
if (this.itemHelper.isOfBaseclass(chosenTpl, BaseClasses.MONEY) || this.itemHelper.isOfBaseclass(chosenTpl, BaseClasses.AMMO))
|
if (this.itemHelper.isOfBaseclass(chosenTpl, BaseClasses.MONEY) || this.itemHelper.isOfBaseclass(chosenTpl, BaseClasses.AMMO))
|
||||||
{
|
{
|
||||||
const itemTemplate = this.itemHelper.getItem(chosenTpl)[1];
|
const itemTemplate = this.itemHelper.getItem(chosenTpl)[1];
|
||||||
const stackCount = this.randomUtil.getInt(itemTemplate._props.StackMinRandom, itemTemplate._props.StackMaxRandom);
|
|
||||||
|
const stackCount = itemTemplate._props.StackMaxSize === 1
|
||||||
|
? 1
|
||||||
|
: this.randomUtil.getInt(itemTemplate._props.StackMinRandom, itemTemplate._props.StackMaxRandom);
|
||||||
|
|
||||||
itemWithMods.push(
|
itemWithMods.push(
|
||||||
{
|
{
|
||||||
_id: this.objectId.generate(),
|
_id: this.objectId.generate(),
|
||||||
@ -777,7 +781,10 @@ export class LocationGenerator
|
|||||||
|
|
||||||
if (this.itemHelper.isOfBaseclass(tpl, BaseClasses.MONEY) || this.itemHelper.isOfBaseclass(tpl, BaseClasses.AMMO))
|
if (this.itemHelper.isOfBaseclass(tpl, BaseClasses.MONEY) || this.itemHelper.isOfBaseclass(tpl, BaseClasses.AMMO))
|
||||||
{
|
{
|
||||||
const stackCount = this.randomUtil.getInt(itemTemplate._props.StackMinRandom, itemTemplate._props.StackMaxRandom);
|
// Edge case - some ammos e.g. flares or M406 grenades shouldn't be stacked
|
||||||
|
const stackCount = itemTemplate._props.StackMaxSize === 1
|
||||||
|
? 1
|
||||||
|
: this.randomUtil.getInt(itemTemplate._props.StackMinRandom, itemTemplate._props.StackMaxRandom);
|
||||||
items[0].upd = { StackObjectsCount: stackCount };
|
items[0].upd = { StackObjectsCount: stackCount };
|
||||||
}
|
}
|
||||||
// No spawn point, use default template
|
// No spawn point, use default template
|
||||||
|
@ -248,16 +248,17 @@ export class BotGeneratorHelper
|
|||||||
|
|
||||||
// TODO: Can probably be optimized to cache itemTemplates as items are added to inventory
|
// TODO: Can probably be optimized to cache itemTemplates as items are added to inventory
|
||||||
const equippedItems = items.map(i => this.databaseServer.getTables().templates.items[i._tpl]);
|
const equippedItems = items.map(i => this.databaseServer.getTables().templates.items[i._tpl]);
|
||||||
const itemToEquip = this.itemHelper.getItem(tplToCheck);
|
const item = this.itemHelper.getItem(tplToCheck);
|
||||||
|
const itemToCheck = item[1];
|
||||||
|
|
||||||
if (!itemToEquip[0])
|
if (!item[0])
|
||||||
{
|
{
|
||||||
this.logger.warning(this.localisationService.getText("bot-invalid_item_compatibility_check", {itemTpl: tplToCheck, slot: equipmentSlot}));
|
this.logger.warning(this.localisationService.getText("bot-invalid_item_compatibility_check", {itemTpl: tplToCheck, slot: equipmentSlot}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!itemToEquip[1]?._props)
|
if (!itemToCheck._props)
|
||||||
{
|
{
|
||||||
this.logger.warning(this.localisationService.getText("bot-compatibility_check_missing_props", {id: itemToEquip[1]._id, name: itemToEquip[1]._name, slot: equipmentSlot}));
|
this.logger.warning(this.localisationService.getText("bot-compatibility_check_missing_props", {id: itemToCheck._id, name: itemToCheck._name, slot: equipmentSlot}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Does an equipped item have a property that blocks the desired item - check for prop "BlocksX" .e.g BlocksEarpiece / BlocksFaceCover
|
// Does an equipped item have a property that blocks the desired item - check for prop "BlocksX" .e.g BlocksEarpiece / BlocksFaceCover
|
||||||
@ -265,7 +266,7 @@ export class BotGeneratorHelper
|
|||||||
if (blockingItem)
|
if (blockingItem)
|
||||||
{
|
{
|
||||||
//this.logger.warning(`1 incompatibility found between - ${itemToEquip[1]._name} and ${blockingItem._name} - ${equipmentSlot}`);
|
//this.logger.warning(`1 incompatibility found between - ${itemToEquip[1]._name} and ${blockingItem._name} - ${equipmentSlot}`);
|
||||||
return { incompatible: true, reason: `${tplToCheck} ${itemToEquip[1]._name} in slot: ${equipmentSlot} blocked by: ${blockingItem._id} ${blockingItem._name}` };
|
return { incompatible: true, reason: `${tplToCheck} ${itemToCheck._name} in slot: ${equipmentSlot} blocked by: ${blockingItem._id} ${blockingItem._name}` };
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if any of the current inventory templates have the incoming item defined as incompatible
|
// Check if any of the current inventory templates have the incoming item defined as incompatible
|
||||||
@ -273,11 +274,11 @@ export class BotGeneratorHelper
|
|||||||
if (blockingItem)
|
if (blockingItem)
|
||||||
{
|
{
|
||||||
//this.logger.warning(`2 incompatibility found between - ${itemToEquip[1]._name} and ${blockingItem._props.Name} - ${equipmentSlot}`);
|
//this.logger.warning(`2 incompatibility found between - ${itemToEquip[1]._name} and ${blockingItem._props.Name} - ${equipmentSlot}`);
|
||||||
return { incompatible: true, reason: `${tplToCheck} ${itemToEquip[1]._name} in slot: ${equipmentSlot} blocked by: ${blockingItem._id} ${blockingItem._name}` };
|
return { incompatible: true, reason: `${tplToCheck} ${itemToCheck._name} in slot: ${equipmentSlot} blocked by: ${blockingItem._id} ${blockingItem._name}` };
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the incoming item has any inventory items defined as incompatible
|
// Check if the incoming item has any inventory items defined as incompatible
|
||||||
const blockingInventoryItem = items.find(x => itemToEquip[1]._props[`Blocks${x.slotId}`] || itemToEquip[1]._props.ConflictingItems?.includes(x._tpl));
|
const blockingInventoryItem = items.find(x => itemToCheck._props.ConflictingItems?.includes(x._tpl));
|
||||||
if (blockingInventoryItem)
|
if (blockingInventoryItem)
|
||||||
{
|
{
|
||||||
//this.logger.warning(`3 incompatibility found between - ${itemToEquip[1]._name} and ${blockingInventoryItem._tpl} - ${equipmentSlot}`)
|
//this.logger.warning(`3 incompatibility found between - ${itemToEquip[1]._name} and ${blockingInventoryItem._tpl} - ${equipmentSlot}`)
|
||||||
|
@ -227,6 +227,11 @@ export class HideoutHelper
|
|||||||
for (const prodId in pmcData.Hideout.Production)
|
for (const prodId in pmcData.Hideout.Production)
|
||||||
{
|
{
|
||||||
const craft = pmcData.Hideout.Production[prodId];
|
const craft = pmcData.Hideout.Production[prodId];
|
||||||
|
if (!craft)
|
||||||
|
{
|
||||||
|
// Craft value is null, get rid of it (could be from cancelling craft that needs cleaning up)
|
||||||
|
delete pmcData.Hideout.Production[prodId];
|
||||||
|
}
|
||||||
|
|
||||||
// Craft complete, skip processing (Don't skip continious crafts like bitcoin farm)
|
// Craft complete, skip processing (Don't skip continious crafts like bitcoin farm)
|
||||||
if (craft.Progress >= craft.ProductionTime && prodId !== HideoutHelper.bitcoinFarm)
|
if (craft.Progress >= craft.ProductionTime && prodId !== HideoutHelper.bitcoinFarm)
|
||||||
|
@ -45,7 +45,7 @@ export class WeightedRandomHelper
|
|||||||
{
|
{
|
||||||
if (items.length !== weights.length)
|
if (items.length !== weights.length)
|
||||||
{
|
{
|
||||||
throw new Error("Items and weights must be of the same size");
|
throw new Error("Items and weight inputs must be of the same length");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!items.length)
|
if (!items.length)
|
||||||
|
@ -383,7 +383,7 @@ export interface Productive
|
|||||||
ProductionTime?: number
|
ProductionTime?: number
|
||||||
GivenItemsInStart?: string[]
|
GivenItemsInStart?: string[]
|
||||||
Interrupted?: boolean
|
Interrupted?: boolean
|
||||||
/** Used in hideout prodiction.json */
|
/** Used in hideout production.json */
|
||||||
needFuelForAllProductionTime?: boolean
|
needFuelForAllProductionTime?: boolean
|
||||||
/** Used when sending data to client */
|
/** Used when sending data to client */
|
||||||
NeedFuelForAllProductionTime?: boolean
|
NeedFuelForAllProductionTime?: boolean
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
export interface IHideoutCancelProductionRequestData
|
||||||
|
{
|
||||||
|
Action: "HideoutCancelProductionCommand"
|
||||||
|
recipeId: string
|
||||||
|
timestamp: number
|
||||||
|
}
|
@ -10,5 +10,6 @@ export enum HideoutEventActions
|
|||||||
HIDEOUT_CONTINUOUS_PRODUCTION_START = "HideoutContinuousProductionStart",
|
HIDEOUT_CONTINUOUS_PRODUCTION_START = "HideoutContinuousProductionStart",
|
||||||
HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction",
|
HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction",
|
||||||
HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints",
|
HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints",
|
||||||
HIDEOUT_IMPROVE_AREA = "HideoutImproveArea"
|
HIDEOUT_IMPROVE_AREA = "HideoutImproveArea",
|
||||||
|
HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand"
|
||||||
}
|
}
|
@ -153,8 +153,14 @@ export class EventOutputHolder
|
|||||||
{
|
{
|
||||||
for (const productionKey in productions)
|
for (const productionKey in productions)
|
||||||
{
|
{
|
||||||
// Skip completed
|
|
||||||
const production = productions[productionKey];
|
const production = productions[productionKey];
|
||||||
|
if (!production)
|
||||||
|
{
|
||||||
|
// Could be cancelled production, skip item to save processing
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip completed
|
||||||
if (!production.inProgress)
|
if (!production.inProgress)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -29,7 +29,8 @@ export class HideoutItemEventRouter extends ItemEventRouterDefinition
|
|||||||
new HandledRoute(HideoutEventActions.HIDEOUT_CONTINUOUS_PRODUCTION_START, false),
|
new HandledRoute(HideoutEventActions.HIDEOUT_CONTINUOUS_PRODUCTION_START, false),
|
||||||
new HandledRoute(HideoutEventActions.HIDEOUT_TAKE_PRODUCTION, false),
|
new HandledRoute(HideoutEventActions.HIDEOUT_TAKE_PRODUCTION, false),
|
||||||
new HandledRoute(HideoutEventActions.HIDEOUT_RECORD_SHOOTING_RANGE_POINTS, false),
|
new HandledRoute(HideoutEventActions.HIDEOUT_RECORD_SHOOTING_RANGE_POINTS, false),
|
||||||
new HandledRoute(HideoutEventActions.HIDEOUT_IMPROVE_AREA, false)
|
new HandledRoute(HideoutEventActions.HIDEOUT_IMPROVE_AREA, false),
|
||||||
|
new HandledRoute(HideoutEventActions.HIDEOUT_CANCEL_PRODUCTION_COMMAND, false)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,6 +60,8 @@ export class HideoutItemEventRouter extends ItemEventRouterDefinition
|
|||||||
return this.hideoutCallbacks.recordShootingRangePoints(pmcData, body, sessionID);
|
return this.hideoutCallbacks.recordShootingRangePoints(pmcData, body, sessionID);
|
||||||
case HideoutEventActions.HIDEOUT_IMPROVE_AREA:
|
case HideoutEventActions.HIDEOUT_IMPROVE_AREA:
|
||||||
return this.hideoutCallbacks.improveArea(pmcData, body, sessionID);
|
return this.hideoutCallbacks.improveArea(pmcData, body, sessionID);
|
||||||
|
case HideoutEventActions.HIDEOUT_CANCEL_PRODUCTION_COMMAND:
|
||||||
|
return this.hideoutCallbacks.cancelProduction(pmcData, body, sessionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -210,7 +210,7 @@ export class SaveServer
|
|||||||
this.saveMd5[sessionID] = String(fmd5);
|
this.saveMd5[sessionID] = String(fmd5);
|
||||||
// save profile to disk
|
// save profile to disk
|
||||||
this.vfs.writeFile(filePath, jsonProfile);
|
this.vfs.writeFile(filePath, jsonProfile);
|
||||||
this.logger.info(this.localisationService.getText("profile_saved", sessionID));
|
this.logger.debug(this.localisationService.getText("profile_saved", sessionID), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ import { inject, injectAll, injectable } from "tsyringe";
|
|||||||
import { Serializer } from "@spt-aki/di/Serializer";
|
import { Serializer } from "@spt-aki/di/Serializer";
|
||||||
import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
|
import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
|
||||||
import { HttpRouter } from "@spt-aki/routers/HttpRouter";
|
import { HttpRouter } from "@spt-aki/routers/HttpRouter";
|
||||||
import { HttpBufferHandler } from "@spt-aki/servers/http/HttpBufferHandler";
|
|
||||||
import { IHttpListener } from "@spt-aki/servers/http/IHttpListener";
|
import { IHttpListener } from "@spt-aki/servers/http/IHttpListener";
|
||||||
import { LocalisationService } from "@spt-aki/services/LocalisationService";
|
import { LocalisationService } from "@spt-aki/services/LocalisationService";
|
||||||
import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil";
|
import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil";
|
||||||
@ -22,20 +21,18 @@ export class AkiHttpListener implements IHttpListener
|
|||||||
@inject("RequestsLogger") protected requestsLogger: ILogger,
|
@inject("RequestsLogger") protected requestsLogger: ILogger,
|
||||||
@inject("JsonUtil") protected jsonUtil: JsonUtil,
|
@inject("JsonUtil") protected jsonUtil: JsonUtil,
|
||||||
@inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil,
|
@inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil,
|
||||||
@inject("LocalisationService") protected localisationService: LocalisationService,
|
@inject("LocalisationService") protected localisationService: LocalisationService
|
||||||
@inject("HttpBufferHandler") protected httpBufferHandler: HttpBufferHandler
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public canHandle(_: string, req: IncomingMessage): boolean
|
public canHandle(_: string, req: IncomingMessage): boolean
|
||||||
{
|
{
|
||||||
return req.method === "GET" || req.method === "PUT" || req.method === "POST";
|
return ["GET", "PUT", "POST"].includes(req.method);
|
||||||
}
|
}
|
||||||
|
|
||||||
public handle(sessionId: string, req: IncomingMessage, resp: ServerResponse): void
|
public handle(sessionId: string, req: IncomingMessage, resp: ServerResponse): void
|
||||||
{
|
{
|
||||||
// TODO: cleanup into interface IVerbHandler
|
|
||||||
switch (req.method)
|
switch (req.method)
|
||||||
{
|
{
|
||||||
case "GET":
|
case "GET":
|
||||||
@ -44,62 +41,67 @@ export class AkiHttpListener implements IHttpListener
|
|||||||
this.sendResponse(sessionId, req, resp, null, response);
|
this.sendResponse(sessionId, req, resp, null, response);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// these are handled almost identically.
|
||||||
case "POST":
|
case "POST":
|
||||||
{
|
|
||||||
req.on("data", (data: any) =>
|
|
||||||
{
|
|
||||||
const value = (req.headers["debug"] === "1") ? data.toString() : zlib.inflateSync(data);
|
|
||||||
const response = this.getResponse(sessionId, req, value);
|
|
||||||
this.sendResponse(sessionId, req, resp, value, response);
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "PUT":
|
case "PUT":
|
||||||
{
|
{
|
||||||
req.on("data", (data) =>
|
// Data can come in chunks. Notably, if someone saves their profile (which can be
|
||||||
{
|
// kinda big), on a slow connection. We need to re-assemble the entire http payload
|
||||||
// receive data
|
// before processing it.
|
||||||
if ("expect" in req.headers)
|
|
||||||
{
|
|
||||||
const requestLength = parseInt(req.headers["content-length"]);
|
|
||||||
|
|
||||||
if (!this.httpBufferHandler.putInBuffer(req.headers.sessionid, data, requestLength))
|
const requestLength = parseInt(req.headers["content-length"]);
|
||||||
|
const buffer = Buffer.alloc(requestLength);
|
||||||
|
let written = 0;
|
||||||
|
|
||||||
|
req.on("data", (data: any) =>
|
||||||
{
|
{
|
||||||
resp.writeContinue();
|
data.copy(buffer, written, 0);
|
||||||
}
|
written += data.length;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
req.on("end", async () =>
|
req.on("end", () =>
|
||||||
{
|
{
|
||||||
const data = this.httpBufferHandler.getFromBuffer(sessionId);
|
// Contrary to reasonable expectations, the content-encoding is _not_ actually used to
|
||||||
this.httpBufferHandler.resetBuffer(sessionId);
|
// determine if the payload is compressed. All PUT requests are, and POST requests without
|
||||||
|
// debug = 1 are as well. This should be fixed.
|
||||||
|
// let compressed = req.headers["content-encoding"] === "deflate";
|
||||||
|
const compressed = req.method === "PUT" || req.headers["debug"] !== "1";
|
||||||
|
|
||||||
let value = zlib.inflateSync(data);
|
const value = compressed ? zlib.inflateSync(buffer) : buffer;
|
||||||
if (!value)
|
if (req.headers["debug"] === "1")
|
||||||
{
|
{
|
||||||
value = data;
|
this.logger.debug(value.toString(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = this.getResponse(sessionId, req, value);
|
const response = this.getResponse(sessionId, req, value);
|
||||||
this.sendResponse(sessionId, req, resp, value, response);
|
this.sendResponse(sessionId, req, resp, value, response);
|
||||||
});
|
});
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
this.logger.warning(`${this.localisationService.getText("unknown_request")}: ${req.method}`);
|
||||||
this.logger.warning(this.localisationService.getText("unknown_request"));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send http response to the client
|
||||||
|
* @param sessionID Player id
|
||||||
|
* @param req Incoming request
|
||||||
|
* @param resp Outgoing response
|
||||||
|
* @param body Buffer
|
||||||
|
* @param output Server generated response data
|
||||||
|
*/
|
||||||
public sendResponse(sessionID: string, req: IncomingMessage, resp: ServerResponse, body: Buffer, output: string): void
|
public sendResponse(sessionID: string, req: IncomingMessage, resp: ServerResponse, body: Buffer, output: string): void
|
||||||
{
|
{
|
||||||
const info = this.getBodyInfo(body);
|
const info = this.getBodyInfo(body);
|
||||||
let handled = false;
|
let handled = false;
|
||||||
|
|
||||||
// Check if this is a debug request, if so just send the raw response without transformation.
|
// Check if this is a debug request, if so just send the raw response without transformation
|
||||||
if (req.headers["debug"] === "1")
|
if (req.headers["debug"] === "1")
|
||||||
{
|
{
|
||||||
this.sendJson(resp, output, sessionID);
|
this.sendJson(resp, output, sessionID);
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
import { injectable } from "tsyringe";
|
|
||||||
|
|
||||||
@injectable()
|
|
||||||
export class HttpBufferHandler
|
|
||||||
{
|
|
||||||
|
|
||||||
protected buffers = {};
|
|
||||||
|
|
||||||
public resetBuffer(sessionID: string): void
|
|
||||||
{
|
|
||||||
this.buffers[sessionID] = undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
public putInBuffer(sessionID: any, data: any, bufLength: number): boolean
|
|
||||||
{
|
|
||||||
if (this.buffers[sessionID] === undefined || this.buffers[sessionID].allocated !== bufLength)
|
|
||||||
{
|
|
||||||
this.buffers[sessionID] = {
|
|
||||||
written: 0,
|
|
||||||
allocated: bufLength,
|
|
||||||
buffer: Buffer.alloc(bufLength)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const buf = this.buffers[sessionID];
|
|
||||||
|
|
||||||
data.copy(buf.buffer, buf.written, 0);
|
|
||||||
buf.written += data.length;
|
|
||||||
return buf.written === buf.allocated;
|
|
||||||
}
|
|
||||||
|
|
||||||
public getFromBuffer(sessionID: string): any
|
|
||||||
{
|
|
||||||
return this.buffers[sessionID].buffer;
|
|
||||||
}
|
|
||||||
}
|
|
@ -465,7 +465,7 @@ export class FenceService
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get stack size ofr a singular item (no mods)
|
* Get stack size of a singular item (no mods)
|
||||||
* @param itemDbDetails item being added to fence
|
* @param itemDbDetails item being added to fence
|
||||||
* @returns Stack size
|
* @returns Stack size
|
||||||
*/
|
*/
|
||||||
@ -478,11 +478,12 @@ export class FenceService
|
|||||||
return this.randomUtil.getInt(overrideValues.min, overrideValues.max);
|
return this.randomUtil.getInt(overrideValues.min, overrideValues.max);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fence doesn't sell ammo by default, but handle it as players mod fence
|
|
||||||
if (this.itemHelper.isOfBaseclass(itemDbDetails._id, BaseClasses.AMMO))
|
if (this.itemHelper.isOfBaseclass(itemDbDetails._id, BaseClasses.AMMO))
|
||||||
{
|
{
|
||||||
// No override, use stack max size from item db
|
// No override, use stack max size from item db
|
||||||
return this.randomUtil.getInt(1, itemDbDetails._props.StackMaxSize);
|
return itemDbDetails._props.StackMaxSize === 1
|
||||||
|
? 1
|
||||||
|
: this.randomUtil.getInt(itemDbDetails._props.StackMinRandom, itemDbDetails._props.StackMaxRandom);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user