0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 08:30:44 -05:00

Merge branch '3.8.0' into testing-redux

This commit is contained in:
Refringe 2023-11-04 21:12:49 -04:00
commit 98a35f4b47
No known key found for this signature in database
GPG Key ID: 64E03E5F892C6F9E
70 changed files with 33259 additions and 24139 deletions

View File

@ -36,10 +36,14 @@
"crazyAssaultEvent": 15,
"bossBoar": 5,
"bossBoarSniper": 5,
"peacefullZryachiyEvent": 5,
"sectactPriestEvent": 20,
"ravangeZryachiyEvent": 25,
"sptUsec": 30,
"sptBear": 30
},
"bosses": ["bossbully", "bossgluhar", "bosskilla", "bosskojaniy", "bosssanitar", "bosstagilla", "bossknight", "bossZryachiy", "bossBoar", "bossBoarSniper"],
"botsToNotAddPMCsAsEnemiesTo": ["gifter", "peacefullzryachiyevent"],
"durability": {
"default": {
"armor": {
@ -432,7 +436,8 @@
"faceShieldIsActiveChancePercent": 100,
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 75,
"laserIsActiveChancePercent": 75
"laserIsActiveChancePercent": 75,
"forceStock": true
},
"bossgluhar": {
"nvgIsActiveChanceDayPercent": 10,
@ -440,13 +445,15 @@
"faceShieldIsActiveChancePercent": 100,
"lightIsActiveDayChancePercent": 45,
"lightIsActiveNightChancePercent": 95,
"laserIsActiveChancePercent": 95
"laserIsActiveChancePercent": 95,
"forceStock": true
},
"bosskilla": {
"faceShieldIsActiveChancePercent": 100,
"lightIsActiveDayChancePercent": 35,
"lightIsActiveNightChancePercent": 85,
"laserIsActiveChancePercent": 85
"laserIsActiveChancePercent": 85,
"forceStock": true
},
"bosskojaniy": {
"faceShieldIsActiveChancePercent": 100,
@ -468,7 +475,8 @@
"faceShieldIsActiveChancePercent": 100,
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 75,
"laserIsActiveChancePercent": 75
"laserIsActiveChancePercent": 75,
"forceStock": true
},
"bossknight": {
"nvgIsActiveChanceDayPercent": 10,
@ -476,21 +484,24 @@
"faceShieldIsActiveChancePercent": 100,
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 75,
"laserIsActiveChancePercent": 75
"laserIsActiveChancePercent": 75,
"forceStock": true
},
"bosszryachiy": {
"nvgIsActiveChanceDayPercent": 10,
"nvgIsActiveChanceNightPercent": 90,
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 85,
"laserIsActiveChancePercent": 85
"laserIsActiveChancePercent": 85,
"forceStock": true
},
"bossboar": {
"nvgIsActiveChanceDayPercent": 10,
"nvgIsActiveChanceNightPercent": 90,
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 85,
"laserIsActiveChancePercent": 85
"laserIsActiveChancePercent": 85,
"forceStock": true
},
"bosstest": {},
"followerbully": {
@ -547,6 +558,7 @@
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 75,
"laserIsActiveChancePercent": 75,
"forceStock": true,
"weaponModLimits": {
"scopeLimit": 1,
"lightLaserLimit": 1
@ -558,7 +570,8 @@
"faceShieldIsActiveChancePercent": 100,
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 75,
"laserIsActiveChancePercent": 75
"laserIsActiveChancePercent": 75,
"forceStock": true
},
"followerzryachiy": {
"nvgIsActiveChanceDayPercent": 10,
@ -586,6 +599,7 @@
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 75,
"laserIsActiveChancePercent": 75,
"forceStock": true,
"weaponModLimits": {
"scopeLimit": 2,
"lightLaserLimit": 1
@ -596,16 +610,16 @@
"nvgIsActiveChanceDayPercent": 10,
"nvgIsActiveChanceNightPercent": 100,
"faceShieldIsActiveChancePercent": 100,
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 85,
"lightIsActiveDayChancePercent": 5,
"lightIsActiveNightChancePercent": 5,
"laserIsActiveChancePercent": 95
},
"sectantwarrior": {
"nvgIsActiveChanceDayPercent": 10,
"nvgIsActiveChanceNightPercent": 100,
"faceShieldIsActiveChancePercent": 100,
"lightIsActiveDayChancePercent": 25,
"lightIsActiveNightChancePercent": 75,
"lightIsActiveDayChancePercent": 5,
"lightIsActiveNightChancePercent": 5,
"laserIsActiveChancePercent": 95
},
"test": {},
@ -616,6 +630,7 @@
"lightIsActiveDayChancePercent": 35,
"lightIsActiveNightChancePercent": 95,
"laserIsActiveChancePercent": 95,
"forceStock": true,
"weaponModLimits": {
"scopeLimit": 1,
"lightLaserLimit": 1
@ -780,7 +795,7 @@
"Backpack": 35,
"FaceCover": 5
},
"randomisedWeaponModSlots": [],
"randomisedWeaponModSlots": [],
"mods": {
"mod_barrel": 20,
"mod_bipod": 10,
@ -856,8 +871,7 @@
"mod_reciever": ["5d4405aaa4b9361e6a4e6bd3"],
"mod_stock": ["5cde739cd7f00c0010373bd3"],
"mod_rear_sight": ["5a0ed824fcdbcb0176308b0d"],
"mod_front_sight": ["5a0f096dfcdbcb0176308b15"],
"mod_magazine": ["6241c2c2117ad530666a5108"]
"mod_front_sight": ["5a0f096dfcdbcb0176308b15"]
},
"cartridge": {
"Caliber23x75": ["5e85a9f4add9fe03027d9bf1"],

View File

@ -1,7 +1,7 @@
{
"akiVersion": "3.8.0",
"projectName": "SPT-AKI",
"compatibleTarkovVersion": "0.13.5.26921",
"compatibleTarkovVersion": "0.13.9.26921",
"serverName": "SPT Server",
"profileSaveIntervalSeconds": 15,
"sptFriendNickname": "SPT",

View File

@ -1460,6 +1460,8 @@
"minKills": 1,
"maxBossKills": 1,
"minBossKills": 1,
"maxPmcKills": 2,
"minPmcKills": 1,
"weaponRequirementProb": 0,
"weaponCategoryRequirementProb": 0.3,
"weaponCategoryRequirements": [{
@ -1573,6 +1575,8 @@
"minKills": 3,
"maxBossKills": 3,
"minBossKills": 1,
"maxPmcKills": 5,
"minPmcKills": 2,
"weaponRequirementProb": 0,
"weaponCategoryRequirementProb": 0.3,
"weaponCategoryRequirements": [{

View File

@ -11,6 +11,13 @@
"kit": 0.6,
"trader": 0.6
},
"weaponTreatment": {
"critSuccessChance": 0.10,
"critSuccessAmount": 4,
"critFailureChance": 0.10,
"critFailureAmount": 4,
"pointGainMultiplier": 0.6
},
"repairKit": {
"armor": {
"rarityWeight": {

View File

@ -13,7 +13,7 @@
"62a5c333ec21e50cad3b5dc6": 1500,
"62a5c41e8ec41a51b34739c3": 1500,
"635267ab3c89e2112001f826": 1500,
"5e54f79686f7744022011103": 1500
"5e54f79686f7744022011103": 1500
},
"Headwear": {
"59ef13ca86f77445fd0e2483": 1500
@ -24,8 +24,8 @@
"63495c500c297e20065a08b1": 10
}
},
"bear": {
"FaceCover": {
"bear": {
"FaceCover": {
"5bd071d786f7747e707b93a3": 5,
"5bd0716d86f774171822ef4b": 5,
"5bd06f5d86f77427101ad47c": 5,
@ -35,14 +35,14 @@
"62a5c333ec21e50cad3b5dc6": 5,
"62a5c41e8ec41a51b34739c3": 5,
"635267ab3c89e2112001f826": 5,
"5e54f79686f7744022011103": 5
"5e54f79686f7744022011103": 5
},
"Headwear": {
"59ef13ca86f77445fd0e2483": 25
}
},
"usec": {
"FaceCover": {
},
"usec": {
"FaceCover": {
"5bd071d786f7747e707b93a3": 5,
"5bd0716d86f774171822ef4b": 5,
"5bd06f5d86f77427101ad47c": 5,
@ -52,12 +52,12 @@
"62a5c333ec21e50cad3b5dc6": 5,
"62a5c41e8ec41a51b34739c3": 5,
"635267ab3c89e2112001f826": 5,
"5e54f79686f7744022011103": 5
"5e54f79686f7744022011103": 5
},
"Headwear": {
"59ef13ca86f77445fd0e2483": 25
}
}
}
},
"christmas": {
"bossgluhar": {
@ -96,7 +96,7 @@
"5a43957686f7742a2c2f11b0": 3
}
},
"bossboar": {
"bossboar": {
"FaceCover": {
"5c1a1e3f2e221602b66cc4c2": 1
},
@ -132,11 +132,11 @@
"5a43957686f7742a2c2f11b0": 600
}
},
"followerboar": {
"followerboar": {
"FaceCover": {
"5c1a1e3f2e221602b66cc4c2": 250
},
"Headwear": {
"Headwear": {
"5a43943586f77416ad2f06e2": 3,
"5a43957686f7742a2c2f11b0": 3
}
@ -231,6 +231,388 @@
}
}
},
"eventBotMapping": {
"peacefullZryachiyEvent": "bossZryachiy",
"sectactPriestEvent": "sectantPriest",
"ravangeZryachiyEvent": "bossZryachiy",
"arenaFighterEvent": "arenaFighterEvent"
},
"eventBossSpawns": {
"halloween": {
"bigmap": [{
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "peacefullZryachiyEvent",
"BossName": "peacefullZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "5",
"BossEscortDifficult": "normal",
"BossEscortType": "sectactPriestEvent",
"BossName": "sectactPriestEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 25,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 999999,
"TriggerId": "ZryachiyPeaceKill",
"TriggerName": "botEvent"
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "ravangeZryachiyEvent",
"BossName": "ravangeZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 99999,
"TriggerId": "SummonComplete",
"TriggerName": "botEvent"
}
],
"interchange": [{
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "peacefullZryachiyEvent",
"BossName": "peacefullZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "5",
"BossEscortDifficult": "normal",
"BossEscortType": "sectactPriestEvent",
"BossName": "sectactPriestEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 25,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 999999,
"TriggerId": "ZryachiyPeaceKill",
"TriggerName": "botEvent"
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "ravangeZryachiyEvent",
"BossName": "ravangeZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 99999,
"TriggerId": "SummonComplete",
"TriggerName": "botEvent"
}
],
"lighthouse": [{
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "peacefullZryachiyEvent",
"BossName": "peacefullZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "5",
"BossEscortDifficult": "normal",
"BossEscortType": "sectactPriestEvent",
"BossName": "sectactPriestEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 25,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 999999,
"TriggerId": "ZryachiyPeaceKill",
"TriggerName": "botEvent"
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "ravangeZryachiyEvent",
"BossName": "ravangeZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 99999,
"TriggerId": "SummonComplete",
"TriggerName": "botEvent"
}
],
"reservbase": [{
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "peacefullZryachiyEvent",
"BossName": "peacefullZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "5",
"BossEscortDifficult": "normal",
"BossEscortType": "sectactPriestEvent",
"BossName": "sectactPriestEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 25,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 999999,
"TriggerId": "ZryachiyPeaceKill",
"TriggerName": "botEvent"
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "ravangeZryachiyEvent",
"BossName": "ravangeZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 99999,
"TriggerId": "SummonComplete",
"TriggerName": "botEvent"
}
],
"shoreline": [{
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "peacefullZryachiyEvent",
"BossName": "peacefullZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "5",
"BossEscortDifficult": "normal",
"BossEscortType": "sectactPriestEvent",
"BossName": "sectactPriestEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 25,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 999999,
"TriggerId": "ZryachiyPeaceKill",
"TriggerName": "botEvent"
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "ravangeZryachiyEvent",
"BossName": "ravangeZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 99999,
"TriggerId": "SummonComplete",
"TriggerName": "botEvent"
}
],
"tarkovstreets": [{
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "peacefullZryachiyEvent",
"BossName": "peacefullZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "5",
"BossEscortDifficult": "normal",
"BossEscortType": "sectactPriestEvent",
"BossName": "sectactPriestEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 25,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 999999,
"TriggerId": "ZryachiyPeaceKill",
"TriggerName": "botEvent"
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "ravangeZryachiyEvent",
"BossName": "ravangeZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 99999,
"TriggerId": "SummonComplete",
"TriggerName": "botEvent"
}
],
"woods": [{
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "peacefullZryachiyEvent",
"BossName": "peacefullZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "5",
"BossEscortDifficult": "normal",
"BossEscortType": "sectactPriestEvent",
"BossName": "sectactPriestEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 25,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 999999,
"TriggerId": "ZryachiyPeaceKill",
"TriggerName": "botEvent"
}, {
"BossChance": 100,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "ravangeZryachiyEvent",
"BossName": "ravangeZryachiyEvent",
"BossPlayer": false,
"BossZone": "",
"Delay": 0,
"ForceSpawn": true,
"IgnoreMaxBots": true,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 99999,
"TriggerId": "SummonComplete",
"TriggerName": "botEvent"
}
]
},
"christmas": {}
},
"gifterSettings": [{
"map": "bigmap",
"zones": "ZoneDormitory,ZoneGasStation,ZoneScavBase",
@ -271,21 +653,21 @@
],
"events": [{
"name": "halloween",
"type": "HALLOWEEN",
"type": "HALLOWEEN",
"startDay": "24",
"startMonth": "10",
"endDay": "4",
"endMonth": "11"
}, {
"name": "christmas",
"type": "CHRISTMAS",
"type": "CHRISTMAS",
"startDay": "7",
"startMonth": "12",
"endDay": "31",
"endMonth": "12"
}, {
"name": "newyears",
"type": "NEW_YEARS",
"type": "NEW_YEARS",
"startDay": "1",
"startMonth": "1",
"endDay": "7",

View File

@ -2073,7 +2073,6 @@
"Оливье",
"Подружка",
"Шмыга",
"Шнур",
"Сырок",
"Улётный",
"Васёк",

View File

@ -4895,7 +4895,8 @@
"59e89d0986f77427600d226e",
"5649b0fc4bdc2d17108b4588",
"59d6514b86f774171a068a08",
"5649b2314bdc2d79388b4576"
"5649b2314bdc2d79388b4576",
"5cf518cfd7f00c065b422214"
],
"patron_in_weapon": [
"56dff3afd2720bba668b4567",

View File

@ -2005,8 +2005,8 @@
"min": 0
},
"reward": {
"max": 1000,
"min": 1000
"max": 2500,
"min": 2500
},
"standingForKill": -0.2
},

View File

@ -2287,8 +2287,8 @@
"min": 0
},
"reward": {
"max": 1000,
"min": 1000
"max": 2650,
"min": 2650
},
"standingForKill": -0.2
},

View File

@ -1989,8 +1989,8 @@
"min": 0
},
"reward": {
"max": 1200,
"min": 1200
"max": 2000,
"min": 2000
},
"standingForKill": -0.2
},

View File

@ -2105,8 +2105,8 @@
"min": 0
},
"reward": {
"max": 1000,
"min": 1000
"max": 2300,
"min": 2300
},
"standingForKill": 0
},

View File

@ -2051,8 +2051,8 @@
"min": 0
},
"reward": {
"max": 1100,
"min": 1100
"max": 2100,
"min": 2100
},
"standingForKill": -0.2
},

View File

@ -2090,8 +2090,8 @@
"min": 0
},
"reward": {
"max": 1000,
"min": 1000
"max": 2700,
"min": 2700
},
"standingForKill": -0.2
},

View File

@ -2084,8 +2084,8 @@
"min": 0
},
"reward": {
"max": 1000,
"min": 1000
"max": 2450,
"min": 2450
},
"standingForKill": -0.2
},

View File

@ -2204,7 +2204,9 @@
"Pockets": {
"60c7272c204bc17802313365": 1
},
"Scabbard": {},
"Scabbard": {
"5fc64ea372b0dd78d51159dc": 1
},
"SecondPrimaryWeapon": {
"57dc2fa62459775949412633": 968,
"5ba26383d4351e00334c93d9": 13

View File

@ -1998,8 +1998,8 @@
"min": 0
},
"reward": {
"max": 1000,
"min": 1000
"max": 2100,
"min": 2100
},
"standingForKill": -0.05
},

View File

@ -2056,8 +2056,8 @@
"min": 0
},
"reward": {
"max": 1000,
"min": 1000
"max": 2100,
"min": 2100
},
"standingForKill": -0.05
},

View File

@ -1998,8 +1998,8 @@
"min": 0
},
"reward": {
"max": 200,
"min": 200
"max": 250,
"min": 250
},
"standingForKill": -0.05
},

View File

@ -2159,8 +2159,8 @@
"min": 0
},
"reward": {
"max": 275,
"min": 275
"max": 325,
"min": 325
},
"standingForKill": -0.05
},

View File

@ -2077,8 +2077,8 @@
"min": 0
},
"reward": {
"max": 325,
"min": 325
"max": 350,
"min": 350
},
"standingForKill": -0.05
},

View File

@ -42,7 +42,7 @@
"mod_handguard": 100,
"mod_launcher": 0,
"mod_magazine": 100,
"mod_mount": 93,
"mod_mount": 95,
"mod_mount_000": 72,
"mod_mount_001": 97,
"mod_mount_002": 98,
@ -61,7 +61,7 @@
"mod_tactical002": 0,
"mod_tactical_000": 1,
"mod_tactical_001": 0,
"mod_tactical_002": 96
"mod_tactical_002": 97
}
},
"difficulty": {

View File

@ -1997,7 +1997,7 @@
"max": -1,
"min": -1
},
"standingForKill": -0.04
"standingForKill": -0.05
},
"firstName": [
"Артур",

File diff suppressed because it is too large Load Diff

View File

@ -2031,8 +2031,8 @@
"min": 0
},
"reward": {
"max": 250,
"min": 250
"max": 275,
"min": 275
},
"standingForKill": 0
},

File diff suppressed because it is too large Load Diff

View File

@ -2072,8 +2072,8 @@
"min": 0
},
"reward": {
"max": 1200,
"min": 1200
"max": 2900,
"min": 2900
},
"standingForKill": 0
},

File diff suppressed because it is too large Load Diff

View File

@ -2079,8 +2079,8 @@
"min": 0
},
"reward": {
"max": 600,
"min": 600
"max": 800,
"min": 800
},
"standingForKill": 0
},

View File

@ -17388,56 +17388,56 @@
}
},
"DiscardLimitsEnabled": true,
"EventSettings": {
"EventActive": true,
"EventTime": 420,
"EventWeather": {
"Cloudness": 1,
"Hour": 21,
"Minute": 0,
"Rain": 0.1,
"RainRandomness": 0,
"ScaterringFogDensity": 0.02,
"TopWindDirection": {
"x": -1,
"y": 0,
"z": 0
},
"Wind": 4,
"WindDirection": 8
"EventSettings": {
"EventActive": true,
"EventTime": 390,
"EventWeather": {
"Cloudness": 1,
"Hour": 21,
"Minute": 0,
"Rain": 0.1,
"RainRandomness": 0,
"ScaterringFogDensity": 0.02,
"TopWindDirection": {
"x": -1,
"y": 0,
"z": 0
},
"ExitTimeMultiplier": 3,
"StaminaMultiplier": 3,
"SummonFailedWeather": {
"Cloudness": 0,
"Rain": 0,
"RainRandomness": 0,
"ScaterringFogDensity": 0.001,
"TopWindDirection": {
"x": -1,
"y": 0,
"z": 0
},
"Wind": 0,
"WindDirection": 8
},
"SummonSuccessWeather": {
"Cloudness": 0,
"Hour": 6,
"Minute": 10,
"Rain": 0.1,
"RainRandomness": 0,
"ScaterringFogDensity": 0.05,
"TopWindDirection": {
"x": -1,
"y": 0,
"z": 0
},
"Wind": 0.2,
"WindDirection": 8
},
"WeatherChangeTime": 20
"Wind": 4,
"WindDirection": 8
},
"ExitTimeMultiplier": 3,
"StaminaMultiplier": 3,
"SummonFailedWeather": {
"Cloudness": 0,
"Rain": 0,
"RainRandomness": 0,
"ScaterringFogDensity": 0.001,
"TopWindDirection": {
"x": -1,
"y": 0,
"z": 0
},
"Wind": 0,
"WindDirection": 8
},
"SummonSuccessWeather": {
"Cloudness": 0,
"Hour": 6,
"Minute": 10,
"Rain": 0.1,
"RainRandomness": 0,
"ScaterringFogDensity": 0.05,
"TopWindDirection": {
"x": -1,
"y": 0,
"z": 0
},
"Wind": 0.2,
"WindDirection": 8
},
"WeatherChangeTime": 20
},
"EventType": [
"None"
],

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Chef's diary",
"64f69b4267e11a7c6206e010 ShortName": "Diary",
"64f69b4267e11a7c6206e010 Description": "A diary containing valuable data belonging to a chef from the Beluga restaurant.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "复仇Zryachiy的巴拉克拉瓦",
"6530e8587cbfc1e309011e37 ShortName": "复仇巴拉克拉瓦",
"6530e8587cbfc1e309011e37 Description": "一件非常吓人的红脸面具由复仇Zryachiy佩戴。",
"6531119b9afebff7ff0a1769 Name": "复仇Zryachiy的巴拉克拉瓦帽子",
"6531119b9afebff7ff0a1769 ShortName": "复仇巴拉克拉瓦",
"6531119b9afebff7ff0a1769 Description": "一件非常吓人的红脸面具由复仇Zryachiy佩戴。被折叠成了帽子的模样。",
" V-ex_light": "通往军事基地的载具撤离点",
" Voip/DisabledForOffline": "VOIP在离线模式中不可用",
" kg": "千克",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "性能",
"EDLSSMode/Quality": "画质",
"EDLSSMode/UltraPerformance": "极致性能",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "有效射程",
"EFSR2Mode/Balanced": "均衡",
"EFSR2Mode/Off": "关闭",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Mip Streaming 缓存大小",
"Misc": "杂项",
"MiscDescription": "其他武器使用技能",
"MisfireEffect": "Primal fear",
"Missed in Action": "行动中失踪",
"Mod": "配件",
"Monitor parameters": "显示器宽高比",
@ -11653,6 +11666,7 @@
"PVE settings": "PVE设置",
"Pain": "疼痛",
"Painkiller": "止疼药生效中",
"PanicEffect": "Chilling horror",
"Paramedic": "护理人员",
"Party is ready. Starting the game...": "队伍准备完毕。正在开始游戏...",
"Penalties": "任务失败的惩罚",
@ -11979,6 +11993,7 @@
"Right Hand": "右手",
"Right Leg": "右腿",
"RightArm": "右臂",
"Ritual": "Ritual",
"Riverside": "河岸",
"Rmed": "中",
"Road to Customs": "通往海关的路",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Kuchařův diář",
"64f69b4267e11a7c6206e010 ShortName": "Diář",
"64f69b4267e11a7c6206e010 Description": "Diář obsahující cenné údaje patřící kuchaři z restaurace Beluga.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Kukla Pomstychtivého Zryachiyho",
"6530e8587cbfc1e309011e37 ShortName": "Pomstychtivý",
"6530e8587cbfc1e309011e37 Description": "Zastrašující červená maska, kterou nosí pomstychtivý Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Kukla Pomstychtivého Zryachiyho (složená)",
"6531119b9afebff7ff0a1769 ShortName": "Pomstychtivý",
"6531119b9afebff7ff0a1769 Description": "Zastrašující červená maska, kterou nosí pomstychtivý Zryachiy. Složená tak, aby se dala nosit jako čepice.",
" V-ex_light": "Auto u cesty na vojenskou základnu",
" Voip/DisabledForOffline": "VOIP není v offline režimu dostupný",
" kg": "Kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "Výkon",
"EDLSSMode/Quality": "Kvalita",
"EDLSSMode/UltraPerformance": "Vysoký výkon",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "EFEKTIVNÍ VZDÁLENOST",
"EFSR2Mode/Balanced": "Vyvážené",
"EFSR2Mode/Off": "Vypnuto",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Velikost vyrovnávací paměti pro Mip Streaming",
"Misc": "Různé",
"MiscDescription": "Schopnost manipulace s ruznorodými zbraněmi",
"MisfireEffect": "Primal fear",
"Missed in Action": "Ztracen v akci",
"Mod": "Modifikace",
"Monitor parameters": "Nastavení zobrazení",
@ -11653,6 +11666,7 @@
"PVE settings": "Nastavení PVE",
"Pain": "Bolest",
"Painkiller": "Na analgetikách",
"PanicEffect": "Chilling horror",
"Paramedic": "Paramedik",
"Party is ready. Starting the game...": "Tým je připraven. Zahajuji hru...",
"Penalties": "Sankce za selhání",
@ -11979,6 +11993,7 @@
"Right Hand": "PRAVÁ RUKA",
"Right Leg": "PRAVÁ NOHA",
"RightArm": "Pravá paže",
"Ritual": "Ritual",
"Riverside": "Břeh řeky",
"Rmed": "Střední",
"Road to Customs": "Cesta do Customs",

File diff suppressed because it is too large Load Diff

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Chef's diary",
"64f69b4267e11a7c6206e010 ShortName": "Diary",
"64f69b4267e11a7c6206e010 Description": "A diary containing valuable data belonging to a chef from the Beluga restaurant.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Pasamontañas Vengeful de Zryachiy",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "Una intimidante máscara de color rojo, usada por el vengativo Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Pasamontañas Vengeful de Zryachiy (Plegado)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "Una intimidante máscara de color rojo, usada por el vengativo Zryachiy. Plegado para ser utilizado como sombrero.",
" V-ex_light": "Ex-V - Carretera a la Base Militar",
" Voip/DisabledForOffline": "El VoIP no está disponible en el modo Offline.",
" kg": "kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "desempeño",
"EDLSSMode/Quality": "calidad",
"EDLSSMode/UltraPerformance": "ultra desempeño",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "DISTANCIA EFECTIVA",
"EFSR2Mode/Balanced": "balanceado",
"EFSR2Mode/Off": "desactivado",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Tamaño del búfer Mip Streaming",
"Misc": "Misceláneos",
"MiscDescription": "Habilidades manejando diversas armas",
"MisfireEffect": "Primal fear",
"Missed in Action": "Desaparecido En Combate",
"Mod": "Modificaciones",
"Monitor parameters": "Parámetros del Monitor",
@ -11653,6 +11666,7 @@
"PVE settings": "Configuración de PvE",
"Pain": "Dolor",
"Painkiller": "Con analgesia",
"PanicEffect": "Chilling horror",
"Paramedic": "Paramédico",
"Party is ready. Starting the game...": "El grupo está listo. Comenzando el juego...",
"Penalties": "Penalizaciones por fallar",
@ -11979,6 +11993,7 @@
"Right Hand": "MANO DERECHA",
"Right Leg": "PIERNA DER.",
"RightArm": "Brazo Derecho",
"Ritual": "Ritual",
"Riverside": "Ribera",
"Rmed": "Media",
"Road to Customs": "Carretera a Aduanas",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Chef's diary",
"64f69b4267e11a7c6206e010 ShortName": "Diary",
"64f69b4267e11a7c6206e010 Description": "A diary containing valuable data belonging to a chef from the Beluga restaurant.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Pasamontañas Vengeful de Zryachiy",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "Un pasamontañas intimidante de color rojo, llevado por el vengativo Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Pasamontañas Vengeful de Zryachiy (Plegado)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "Un pasamontañas intimidante de color rojo, llevado por el vengativo Zryachiy. Plegada para ser utilizada como sombrero.",
" V-ex_light": "V-Ex Carretera a la Base Militar",
" Voip/DisabledForOffline": "El VoIP no está disponible en el modo Offline",
" kg": "kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "desempeño",
"EDLSSMode/Quality": "calidad",
"EDLSSMode/UltraPerformance": "ultra desempeño",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "DISTANCIA EFECTIVA",
"EFSR2Mode/Balanced": "Balanceado",
"EFSR2Mode/Off": "Desactivado",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Tamaño del búfer de Mip Streaming",
"Misc": "Miscelánea",
"MiscDescription": "Habilidad en el manejo de otros tipos de armas.",
"MisfireEffect": "Primal fear",
"Missed in Action": "Desaparecido en Combate (DEC)",
"Mod": "Modificaciones",
"Monitor parameters": "Parámetros del monitor",
@ -11653,6 +11666,7 @@
"PVE settings": "Configuración de PvE",
"Pain": "Dolor",
"Painkiller": "Drogado",
"PanicEffect": "Chilling horror",
"Paramedic": "Médico de combate",
"Party is ready. Starting the game...": "El grupo está listo. Comenzando la partida...",
"Penalties": "Penalizaciones por fallar la misión",
@ -11979,6 +11993,7 @@
"Right Hand": "MANO DERECHA",
"Right Leg": "PIERNA DER.",
"RightArm": "Brazo Derecho",
"Ritual": "Ritual",
"Riverside": "Rivera del Río",
"Rmed": "Media",
"Road to Customs": "Carretera a Customs",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Journal du chef cuisinier",
"64f69b4267e11a7c6206e010 ShortName": "Journal",
"64f69b4267e11a7c6206e010 Description": "Un journal contenant des informations de valeur appartenant à un chef du restaurant Beluga.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Vengeful Zryachiy's balaclava",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "An intimidating red face mask, worn by vengeful Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Vengeful Zryachiy's balaclava (folded)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "An intimidating red face mask, worn by Zryachiy. Folded to be worn as a hat.",
" V-ex_light": "Véhicule vers la base militaire",
" Voip/DisabledForOffline": "Le VOIP est indisponible en mode hors-ligne",
" kg": "kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "Performance",
"EDLSSMode/Quality": "Qualité",
"EDLSSMode/UltraPerformance": "Ultra performance",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "PORTÉE PRATIQUE",
"EFSR2Mode/Balanced": "Équilibré",
"EFSR2Mode/Off": "Désactivé",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Taille de la mémoire tampon du Mip streaming",
"Misc": "Divers",
"MiscDescription": "Compétence en manipulation des armes diverses",
"MisfireEffect": "Primal fear",
"Missed in Action": "Disparu au combat",
"Mod": "Accessoire d'arme",
"Monitor parameters": "Paramètres de l'écran",
@ -11653,6 +11666,7 @@
"PVE settings": "Paramètres JcE",
"Pain": "Douleur",
"Painkiller": "Sous antidouleurs",
"PanicEffect": "Chilling horror",
"Paramedic": "Médecin",
"Party is ready. Starting the game...": "Groupe Prêt. Lancement de la partie...",
"Penalties": "Pénalités en cas d'échec",
@ -11979,6 +11993,7 @@
"Right Hand": "MAIN DROITE",
"Right Leg": "JAMBE DROITE",
"RightArm": "Bras Droit",
"Ritual": "Ritual",
"Riverside": "Bord rivière",
"Rmed": "Moyenne",
"Road to Customs": "Route vers les douanes",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Tagebuch des Kochs",
"64f69b4267e11a7c6206e010 ShortName": "Tagebuch",
"64f69b4267e11a7c6206e010 Description": "Tagebuch des Chefkochs vom Restaurant Beluga. Enthält wichtige Daten.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Sturmhaube des rachsüchtigen Zryachiy",
"6530e8587cbfc1e309011e37 ShortName": "Rache SH",
"6530e8587cbfc1e309011e37 Description": "Eine furchteinflößende, rote Sturmhaube, getragen vom rachsüchtigen Zyrachiy.",
"6531119b9afebff7ff0a1769 Name": "Sturmhaube des rachsüchtigen Zryachiy",
"6531119b9afebff7ff0a1769 ShortName": "Rache SH",
"6531119b9afebff7ff0a1769 Description": "Eine furchteinflößende, rote Sturmhaube, getragen vom rachsüchtigen Zyrachiy.",
" V-ex_light": "Straße zur Militärbasis V-Ex",
" Voip/DisabledForOffline": "VoIP ist im Offline-Modus nicht verfügbar",
" kg": "Kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "performance",
"EDLSSMode/Quality": "qualität",
"EDLSSMode/UltraPerformance": "ultra performance",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "EFFEKTIVE DISTANZ",
"EFSR2Mode/Balanced": "ausgeglichen",
"EFSR2Mode/Off": "aus",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Mip Streaming Puffergröße",
"Misc": "Sonstiges",
"MiscDescription": "Fähigkeit „Waffenhandhabung (sonstige)“.",
"MisfireEffect": "Primal fear",
"Missed in Action": "Im Einsatz vermisst",
"Mod": "Mod",
"Monitor parameters": "Monitoreinstellungen",
@ -11653,6 +11666,7 @@
"PVE settings": "PvE-Einstellungen",
"Pain": "Schmerzen",
"Painkiller": "Auf Schmerzmittel",
"PanicEffect": "Chilling horror",
"Paramedic": "Sanitäter",
"Party is ready. Starting the game...": "Die Gruppe ist bereit. Das Spiel wird gestartet...",
"Penalties": "Abzug für Fehlschläge",
@ -11979,6 +11993,7 @@
"Right Hand": "RECHTE HAND",
"Right Leg": "RECHTES BEIN",
"RightArm": "Rechter Arm",
"Ritual": "Ritual",
"Riverside": "Flussufer",
"Rmed": "Mittel",
"Road to Customs": "Straße zum Zollgelände",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Chef's diary",
"64f69b4267e11a7c6206e010 ShortName": "Diary",
"64f69b4267e11a7c6206e010 Description": "A diary containing valuable data belonging to a chef from the Beluga restaurant.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Vengeful Zryachiy's balaclava",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "An intimidating red face mask, worn by vengeful Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Vengeful Zryachiy's balaclava (folded)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "An intimidating red face mask, worn by Zryachiy. Folded to be worn as a hat.",
" V-ex_light": "Road to Military Base V-Ex",
" Voip/DisabledForOffline": "VOIP is unavailable in the offline mode",
" kg": "Kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "performance",
"EDLSSMode/Quality": "quality",
"EDLSSMode/UltraPerformance": "ultra performance",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "HATÉKONY TÁVOLSÁG",
"EFSR2Mode/Balanced": "balanced",
"EFSR2Mode/Off": "off",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Mip Streaming buffer size",
"Misc": "Egyéb",
"MiscDescription": "Egyéb fegyverek kezelési képességek",
"MisfireEffect": "Primal fear",
"Missed in Action": "Bevetésen közben eltűnt",
"Mod": "Kiegészítő",
"Monitor parameters": "Megjelenítő paraméterei",
@ -11653,6 +11666,7 @@
"PVE settings": "PVE settings",
"Pain": "Fájdalom",
"Painkiller": "Fájdalomcsillapítókon",
"PanicEffect": "Chilling horror",
"Paramedic": "Mentős",
"Party is ready. Starting the game...": "The party is ready. Starting the game...",
"Penalties": "Büntetések kudarc esetén",
@ -11979,6 +11993,7 @@
"Right Hand": "JOBB KÉZ",
"Right Leg": "JOBB LÁB",
"RightArm": "Jobb kar",
"Ritual": "Ritual",
"Riverside": "Riverside",
"Rmed": "Medium",
"Road to Customs": "Út a Customs-ba",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Diario dello chef",
"64f69b4267e11a7c6206e010 ShortName": "Diario",
"64f69b4267e11a7c6206e010 Description": "Un diario contenente dati preziosi di uno chef del ristorante Beluga.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Passamontagna del vendicativo Zryachiy",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "Una maschera rossa intimidatoria, indossata dal vendicativo Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Passamontagna del vendicativo Zryachiy (piegato)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "Una maschera rossa intimidatoria, indossata dal vendicativo Zryachiy. Ripiegata per essere indossata come cappello.",
" V-ex_light": "Strada per la Base Militare V-Ex",
" Voip/DisabledForOffline": "VoIP non è disponibile in modalità offline",
" kg": "Kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "prestazioni",
"EDLSSMode/Quality": "qualità",
"EDLSSMode/UltraPerformance": "prestazioni ultra",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "DISTANZA EFFETTIVA",
"EFSR2Mode/Balanced": "bilanciato",
"EFSR2Mode/Off": "off",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Dimensione del buffer Mip Streaming",
"Misc": "Vari",
"MiscDescription": "Abilità di gestione di armi varie",
"MisfireEffect": "Primal fear",
"Missed in Action": "Disperso in azione",
"Mod": "Modifica",
"Monitor parameters": "Parametri del monitor",
@ -11653,6 +11666,7 @@
"PVE settings": "Impostazioni PVE",
"Pain": "Dolore",
"Painkiller": "Sotto antidolorifici",
"PanicEffect": "Chilling horror",
"Paramedic": "Paramedico",
"Party is ready. Starting the game...": "Il gruppo è pronto. Inizio della partita...",
"Penalties": "Penalità per il fallimento",
@ -11979,6 +11993,7 @@
"Right Hand": "MANO DESTRA",
"Right Leg": "GAMBA DESTRA",
"RightArm": "Braccio Destro",
"Ritual": "Ritual",
"Riverside": "Sponda del Fiume",
"Rmed": "Medio",
"Road to Customs": "Strada per Customs",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Chef's diary",
"64f69b4267e11a7c6206e010 ShortName": "Diary",
"64f69b4267e11a7c6206e010 Description": "A diary containing valuable data belonging to a chef from the Beluga restaurant.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Vengeful Zryachiy's balaclava",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "An intimidating red face mask, worn by vengeful Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Vengeful Zryachiy's balaclava (folded)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "An intimidating red face mask, worn by Zryachiy. Folded to be worn as a hat.",
" V-ex_light": "Road to Military Base V-Ex",
" Voip/DisabledForOffline": "オフラインモードではVOIPは無効です",
" kg": "Kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "performance",
"EDLSSMode/Quality": "quality",
"EDLSSMode/UltraPerformance": "ultra performance",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "有効射程",
"EFSR2Mode/Balanced": "balanced",
"EFSR2Mode/Off": "オフ",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Mip ストリーミング バッファサイズ",
"Misc": "その他",
"MiscDescription": "その他の武器を扱うスキル",
"MisfireEffect": "Primal fear",
"Missed in Action": "Missed in Action",
"Mod": "武器パーツ",
"Monitor parameters": "モニターパラメーター",
@ -11653,6 +11666,7 @@
"PVE settings": "PvE 設定",
"Pain": "痛み",
"Painkiller": "鎮痛効果",
"PanicEffect": "Chilling horror",
"Paramedic": "パラメディック",
"Party is ready. Starting the game...": "グループの準備が完了。ゲーム開始中…",
"Penalties": "失敗時のペナルティ",
@ -11979,6 +11993,7 @@
"Right Hand": "右手",
"Right Leg": "右脚",
"RightArm": "右腕",
"Ritual": "Ritual",
"Riverside": "Riverside",
"Rmed": "普通",
"Road to Customs": "Road to Customs",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Chef's diary",
"64f69b4267e11a7c6206e010 ShortName": "Diary",
"64f69b4267e11a7c6206e010 Description": "A diary containing valuable data belonging to a chef from the Beluga restaurant.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Vengeful Zryachiy's balaclava",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "An intimidating red face mask, worn by vengeful Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Vengeful Zryachiy's balaclava (folded)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "An intimidating red face mask, worn by Zryachiy. Folded to be worn as a hat.",
" V-ex_light": "Road to Military Base V-Ex",
" Voip/DisabledForOffline": "오프라인 모드에서는 VOIP 사용이 불가능합니다",
" kg": "Kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "성능 우선",
"EDLSSMode/Quality": "화질 우선",
"EDLSSMode/UltraPerformance": "U\bltra\u00A0성능 우선",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "유효 사거리",
"EFSR2Mode/Balanced": "밸런스",
"EFSR2Mode/Off": "끄기",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Mip Streaming 버퍼 크기",
"Misc": "기타",
"MiscDescription": "기타 무기들을 다루는 기술",
"MisfireEffect": "Primal fear",
"Missed in Action": "작전 중 실종",
"Mod": "부품",
"Monitor parameters": "모니터 설정값",
@ -11653,6 +11666,7 @@
"PVE settings": "PvE 설정",
"Pain": "고통",
"Painkiller": "진통제 복용 상태",
"PanicEffect": "Chilling horror",
"Paramedic": "위생병",
"Party is ready. Starting the game...": "파티가 준비되었습니다. 게임을 시작합니다...",
"Penalties": "실패 패널티",
@ -11979,6 +11993,7 @@
"Right Hand": "오른손",
"Right Leg": "오른다리",
"RightArm": "오른팔",
"Ritual": "Ritual",
"Riverside": "Riverside",
"Rmed": "보통",
"Road to Customs": "Road to Customs",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Notatnik szefa kuchni",
"64f69b4267e11a7c6206e010 ShortName": "Notatnik",
"64f69b4267e11a7c6206e010 Description": "Notatnik zawierający cenne dane należący do szefa kuchni z restauracji Beluga.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Vengeful Zryachiy's balaclava",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "An intimidating red face mask, worn by vengeful Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Vengeful Zryachiy's balaclava (folded)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "An intimidating red face mask, worn by Zryachiy. Folded to be worn as a hat.",
" V-ex_light": "Droga do bazy wojskowej: wyjazd",
" Voip/DisabledForOffline": "VOIP jest niedostępny w trybie offline",
" kg": " kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "wydajność",
"EDLSSMode/Quality": "jakość",
"EDLSSMode/UltraPerformance": "ultra wydajność",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "ZASIĘG SKUTECZNY",
"EFSR2Mode/Balanced": "zbalansowane",
"EFSR2Mode/Off": "wyłączone",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Rozmiar buforu mip streaming:",
"Misc": "Różne",
"MiscDescription": "Posługiwanie się różną bronią.",
"MisfireEffect": "Primal fear",
"Missed in Action": "Zaginiony w akcji",
"Mod": "Akcesoria",
"Monitor parameters": "PARAMETRY MONITORA",
@ -11653,6 +11666,7 @@
"PVE settings": "Ustawienia PvE",
"Pain": "Ból",
"Painkiller": "Na lekach przeciwbólowych",
"PanicEffect": "Chilling horror",
"Paramedic": "Ratownik medyczny",
"Party is ready. Starting the game...": "Drużyna jest gotowa. Rozpoczynanie gry…",
"Penalties": "Kary za porażkę",
@ -11979,6 +11993,7 @@
"Right Hand": "PRAWA DŁOŃ",
"Right Leg": "PRAWA NOGA",
"RightArm": "Prawa ręka",
"Ritual": "Ritual",
"Riverside": "Nadrzecze",
"Rmed": "Średnia",
"Road to Customs": "Droga do składu celnego",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Chef's diary",
"64f69b4267e11a7c6206e010 ShortName": "Diary",
"64f69b4267e11a7c6206e010 Description": "A diary containing valuable data belonging to a chef from the Beluga restaurant.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Vengeful Zryachiy's balaclava",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "An intimidating red face mask, worn by vengeful Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Vengeful Zryachiy's balaclava (folded)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "An intimidating red face mask, worn by Zryachiy. Folded to be worn as a hat.",
" V-ex_light": "Road to Military Base V-Ex",
" Voip/DisabledForOffline": "VOIP está desativado no modo offline",
" kg": "Kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "performance",
"EDLSSMode/Quality": "qualidade",
"EDLSSMode/UltraPerformance": "ultra performance",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "DISTÂNCIA EFETIVA",
"EFSR2Mode/Balanced": "balanceado",
"EFSR2Mode/Off": "desligado",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Tamanho do buffer do Mip Streaming",
"Misc": "Diversos",
"MiscDescription": "Habilidade de manuseio com Armas variadas",
"MisfireEffect": "Primal fear",
"Missed in Action": "Perdido em Combate",
"Mod": "Mod",
"Monitor parameters": "Parâmetros do Monitor",
@ -11653,6 +11666,7 @@
"PVE settings": "Configurações PVE",
"Pain": "Dor",
"Painkiller": "Sob efeito de analgésicos",
"PanicEffect": "Chilling horror",
"Paramedic": "Paramédico",
"Party is ready. Starting the game...": "O grupo está pronto. Começando a partida...",
"Penalties": "Penalidades por falha",
@ -11979,6 +11993,7 @@
"Right Hand": "MÃO DIREITA",
"Right Leg": "PERNA DIREITA",
"RightArm": "Braço Direito",
"Ritual": "Ritual",
"Riverside": "Margens do rio",
"Rmed": "Médio",
"Road to Customs": "Road to Customs",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Дневник шеф-повара",
"64f69b4267e11a7c6206e010 ShortName": "Дневник",
"64f69b4267e11a7c6206e010 Description": "Дневник с записями шеф-повара из ресторана \"Белуга\".",
"64f6f4c5911bcdfe8b03b0dc Name": "Турнирный защищенный контейнер",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Турнир",
"64f6f4c5911bcdfe8b03b0dc Description": "Засекреченная разработка компании TerraGroup - Турнирный защищенный контейнер.",
"6530e8587cbfc1e309011e37 Name": "Балаклава мстящего Зрячего",
"6530e8587cbfc1e309011e37 ShortName": "Мстящий",
"6530e8587cbfc1e309011e37 Description": "Красная балаклава, принадлежащая мстящему Зрячему.",
"6531119b9afebff7ff0a1769 Name": "Балаклава мстящего Зрячего (завернутая)",
"6531119b9afebff7ff0a1769 ShortName": "Мстящий",
"6531119b9afebff7ff0a1769 Description": "Красная балаклава с рисунком черепа, принадлежащая Зрячему. Сложена для ношения в виде шапки.",
" V-ex_light": "А-Выход дорога к военной базе",
" Voip/DisabledForOffline": "VOIP недоступен в оффлайн режиме",
" kg": " кг",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "производительность",
"EDLSSMode/Quality": "качество",
"EDLSSMode/UltraPerformance": "макс. производительность",
"EEventState/SummonFailed": "провален",
"EEventState/SummonStart": "в процессе",
"EEventState/SummonSuccess": "успешен",
"EFFECTIVE DISTANCE": "ЭФФЕКТИВНАЯ ДАЛЬНОСТЬ",
"EFSR2Mode/Balanced": "баланс",
"EFSR2Mode/Off": "выкл",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Размер буфера для Mip Streaming",
"Misc": "Разное",
"MiscDescription": "Навыки обращения с прочими типами оружия",
"MisfireEffect": "Животный страх",
"Missed in Action": "Пропал без вести",
"Mod": "Моды",
"Monitor parameters": "Параметры монитора",
@ -11653,6 +11666,7 @@
"PVE settings": "Настройки PVE",
"Pain": "Боль",
"Painkiller": "На болеутоляющих",
"PanicEffect": "Леденящий душу ужас",
"Paramedic": "Фельдшер",
"Party is ready. Starting the game...": "Группа готова. Начинаем игру...",
"Penalties": "Штрафы за провал",
@ -11979,6 +11993,7 @@
"Right Hand": "ПРАВАЯ РУКА",
"Right Leg": "ПРАВАЯ НОГА",
"RightArm": "ПР.РУК",
"Ritual": "Ритуал",
"Riverside": "Берег",
"Rmed": "Средний",
"Road to Customs": "Дорога На Таможню",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Chef's diary",
"64f69b4267e11a7c6206e010 ShortName": "Diary",
"64f69b4267e11a7c6206e010 Description": "A diary containing valuable data belonging to a chef from the Beluga restaurant.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "Vengeful Zryachiy's balaclava",
"6530e8587cbfc1e309011e37 ShortName": "Vengeful",
"6530e8587cbfc1e309011e37 Description": "An intimidating red face mask, worn by vengeful Zryachiy.",
"6531119b9afebff7ff0a1769 Name": "Vengeful Zryachiy's balaclava (folded)",
"6531119b9afebff7ff0a1769 ShortName": "Vengeful",
"6531119b9afebff7ff0a1769 Description": "An intimidating red face mask, worn by Zryachiy. Folded to be worn as a hat.",
" V-ex_light": "Vozidlo na ceste k vojenskej základni",
" Voip/DisabledForOffline": "VOIP nie je v offline režime dostupné",
" kg": "Kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "performance",
"EDLSSMode/Quality": "quality",
"EDLSSMode/UltraPerformance": "ultra performance",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "ÚČINNÁ VZDIALENOSŤ",
"EFSR2Mode/Balanced": "balanced",
"EFSR2Mode/Off": "off",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Mip Streaming buffer size",
"Misc": "Rôzne",
"MiscDescription": "Zručnosť narábania s rôznymi zbraňami",
"MisfireEffect": "Primal fear",
"Missed in Action": "Stratený v akcii",
"Mod": "Mod",
"Monitor parameters": "Nastavenie monitora",
@ -11653,6 +11666,7 @@
"PVE settings": "PVE settings",
"Pain": "Bolesť",
"Painkiller": "Na analgetikách",
"PanicEffect": "Chilling horror",
"Paramedic": "Záchranár",
"Party is ready. Starting the game...": "The party is ready. Starting the game...",
"Penalties": "Pokuta za nesplnenie",
@ -11979,6 +11993,7 @@
"Right Hand": "PRAVÁ RUKA",
"Right Leg": "PRAVÁ NOHA",
"RightArm": "Pravá ruka",
"Ritual": "Ritual",
"Riverside": "Breh rieky",
"Rmed": "Medium",
"Road to Customs": "Cesta ku Customs",

View File

@ -10067,6 +10067,15 @@
"64f69b4267e11a7c6206e010 Name": "Şefin günlüğü",
"64f69b4267e11a7c6206e010 ShortName": "Günlük",
"64f69b4267e11a7c6206e010 Description": "A diary containing valuable data belonging to a chef from the Beluga restaurant.",
"64f6f4c5911bcdfe8b03b0dc Name": "Tournament secured container",
"64f6f4c5911bcdfe8b03b0dc ShortName": "Tournament",
"64f6f4c5911bcdfe8b03b0dc Description": "A secret TerraGroup invention - the tournament secured container.",
"6530e8587cbfc1e309011e37 Name": "İntikam dolu Zryachiy'nin maskesi",
"6530e8587cbfc1e309011e37 ShortName": "İntikamcı",
"6530e8587cbfc1e309011e37 Description": "İntikam peşindeki Zryachiy'nin taktığı korkutucu kırmızı yüz maskesi.",
"6531119b9afebff7ff0a1769 Name": "İntikam dolu Zryachiy'nin maskesi (katlanmış)",
"6531119b9afebff7ff0a1769 ShortName": "İntikamcı",
"6531119b9afebff7ff0a1769 Description": "İntikam peşindeki Zryachiy'nin taktığı korkutucu kırmızı yüz maskesi. Şapka olarak kullanılmak üzere katlanmıştır.",
" V-ex_light": "Askeri üs Araç çıkışına giden yol",
" Voip/DisabledForOffline": "VOIP çevrimdışı modda kullanılamaz",
" kg": "Kg",
@ -10603,6 +10612,9 @@
"EDLSSMode/Performance": "performans",
"EDLSSMode/Quality": "kalite",
"EDLSSMode/UltraPerformance": "ultra performance",
"EEventState/SummonFailed": "failed",
"EEventState/SummonStart": "in process",
"EEventState/SummonSuccess": "success",
"EFFECTIVE DISTANCE": "ETKİLİ MESAFE",
"EFSR2Mode/Balanced": "dengeli",
"EFSR2Mode/Off": "kapalı",
@ -11458,6 +11470,7 @@
"MipStreamingBufferSize:": "Mip Streaming arabellek boyutu",
"Misc": "Çeşitli",
"MiscDescription": "Çeşitli silah kullanma becerisi",
"MisfireEffect": "Primal fear",
"Missed in Action": "Çatışma Kaybı",
"Mod": "Mod",
"Monitor parameters": "Ekran Modu",
@ -11653,6 +11666,7 @@
"PVE settings": "PVE ayarları",
"Pain": "Ağrı",
"Painkiller": "Ağrı kesici etkisinde",
"PanicEffect": "Chilling horror",
"Paramedic": "Sıhhiye çavuşu",
"Party is ready. Starting the game...": "Parti hazır. Oyun başlatılıyor...",
"Penalties": "Başarısızlık cezaları",
@ -11979,6 +11993,7 @@
"Right Hand": "SAĞ EL",
"Right Leg": "SAĞ BACAK",
"RightArm": "Sağ Kol",
"Ritual": "Ritual",
"Riverside": "Nehir kıyısı",
"Rmed": "Orta",
"Road to Customs": "Gümrük Yolu",

View File

@ -275,7 +275,7 @@
"pmcresponse-victim_positive_12": "Good kill, I'll get you next time",
"pmcresponse-victim_positive_13": "You had good angles on me",
"pmcresponse-victim_positive_14": "I'll get you next time",
"pmcresponse-victim_positive_15": "You really binted my bingos",
"pmcresponse-victim_positive_15": "You really binted my bogos :alien:",
"pmcresponse-victim_positive_16": "You're a stone-cold killer. I didn't stand a chance",
"pmcresponse-victim_positive_17": "Alright fair that was a good shot",
"pmcresponse-victim_positive_18": "Enjoy my loot",

View File

@ -92,6 +92,9 @@
"BossName": "bossKnight",
"BossPlayer": false,
"BossZone": "ZoneScavBase",
"Delay": 0,
"ForceSpawn": false,
"IgnoreMaxBots": false,
"RandomTimeSpawn": true,
"Supports": [
{
@ -116,7 +119,9 @@
"BossEscortType": "followerGluharScout"
}
],
"Time": -1
"Time": -1,
"TriggerId": "",
"TriggerName": ""
},
{
"BossChance": 35,
@ -127,9 +132,14 @@
"BossName": "bossBully",
"BossPlayer": false,
"BossZone": "ZoneDormitory",
"Delay": 0,
"ForceSpawn": false,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1
"Time": -1,
"TriggerId": "",
"TriggerName": ""
},
{
"BossChance": 15,
@ -140,9 +150,14 @@
"BossName": "sectantPriest",
"BossPlayer": false,
"BossZone": "ZoneScavBase",
"Delay": 0,
"ForceSpawn": false,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1
"Time": -1,
"TriggerId": "",
"TriggerName": ""
},
{
"BossChance": 5,
@ -153,9 +168,12 @@
"BossName": "arenaFighterEvent",
"BossPlayer": false,
"BossZone": "ZoneFactoryCenter,ZoneScavBase",
"Delay": 0,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1
"Time": -1,
"TriggerId": "",
"TriggerName": ""
}
],
"BotAssault": 80,
@ -8140,7 +8158,8 @@
{
"Chance": 100,
"Count": 0,
"EntryPoints": "Boiler Tanks",
"EntryPoints": "Customs,Boiler Tanks",
"EventAvailable": true,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "",
@ -8155,6 +8174,7 @@
"Chance": 50,
"Count": 0,
"EntryPoints": "Boiler Tanks",
"EventAvailable": false,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "",
@ -8168,7 +8188,8 @@
{
"Chance": 100,
"Count": 0,
"EntryPoints": "Boiler Tanks",
"EntryPoints": "Customs,Boiler Tanks",
"EventAvailable": true,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "",
@ -8183,6 +8204,7 @@
"Chance": 50,
"Count": 0,
"EntryPoints": "Customs",
"EventAvailable": false,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "",
@ -8196,7 +8218,8 @@
{
"Chance": 100,
"Count": 0,
"EntryPoints": "Customs",
"EntryPoints": "Customs,Boiler Tanks",
"EventAvailable": true,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "",
@ -8210,7 +8233,8 @@
{
"Chance": 100,
"Count": 0,
"EntryPoints": "Boiler Tanks",
"EntryPoints": "Customs,Boiler Tanks",
"EventAvailable": true,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "",
@ -8225,6 +8249,7 @@
"Chance": 50,
"Count": 0,
"EntryPoints": "Customs",
"EventAvailable": false,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "",
@ -8239,6 +8264,7 @@
"Chance": 50,
"Count": 5000,
"EntryPoints": "Customs,Boiler Tanks",
"EventAvailable": false,
"ExfiltrationTime": 60,
"ExfiltrationType": "SharedTimer",
"Id": "5449016a4bdc2d6f028b456f",
@ -8253,6 +8279,7 @@
"Chance": 100,
"Count": 0,
"EntryPoints": "Customs,Boiler Tanks",
"EventAvailable": false,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "",

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
"AccessKeys": [],
"Area": 0.9,
"AveragePlayTime": 15,
"AveragePlayerLevel": 15,
"AveragePlayerLevel": 1,
"Banners": [
{
"id": "5464e0404bdc2d2a708b4567",
@ -70,7 +70,7 @@
],
"BossLocationSpawn": [
{
"BossChance": 23,
"BossChance": 30,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
@ -213,6 +213,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "0246436c-7d69-4036-999d-ebcb956970b5",
"Infiltration": "Factory",
@ -243,6 +244,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "02e4bb08-990a-487c-a832-5a04582891d4",
"Infiltration": "Factory",
@ -273,6 +275,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "03526917-c391-4233-ab31-89f70621c9d4",
"Infiltration": "Factory",
@ -302,6 +305,7 @@
"Radius": 35
}
},
"CorePointId": 1,
"DelayToCanSpawnSec": 4,
"Id": "03a779de-ef2d-43e3-a4f3-fdcfed474f05",
"Infiltration": "",
@ -331,6 +335,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "05e75eb3-eb43-46c6-94d3-59e1e9ba4435",
"Infiltration": "Factory",
@ -360,6 +365,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "0a92f51c-52b4-4e76-b839-f7ce82f2b36b",
"Infiltration": "Factory",
@ -390,6 +396,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "0e95dd99-d6b7-4562-9813-74d4da9aaf6f",
"Infiltration": "Factory",
@ -420,6 +427,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "105e5c93-2399-4054-b31d-ec981a66491f",
"Infiltration": "Factory",
@ -449,6 +457,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "120a0777-e825-4de7-a855-c3eaa8eba46b",
"Infiltration": "Factory",
@ -478,6 +487,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "13883982-2ab8-4dd5-a9b4-45e2c6d8e1cc",
"Infiltration": "Factory",
@ -508,6 +518,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "184cc4d8-9007-4769-9798-8e354e9229ec",
"Infiltration": "Factory",
@ -537,6 +548,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "1a5819f2-ff42-4632-af5e-fe5ea8f886fc",
"Infiltration": "Factory",
@ -567,6 +579,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "1d42b19c-7a5b-4684-9689-b801a89e041c",
"Infiltration": "Factory",
@ -596,6 +609,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "1facfcfc-9ee5-4638-83b3-117fce7b3303",
"Infiltration": "Factory",
@ -625,6 +639,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "22a7740a-5a91-4bca-af36-668342522b42",
"Infiltration": "Factory",
@ -654,6 +669,7 @@
"Radius": 41.97
}
},
"CorePointId": 5,
"DelayToCanSpawnSec": 4,
"Id": "2355be95-341b-46db-90fd-6a383e286e5c",
"Infiltration": "",
@ -684,6 +700,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "27da5013-1a81-42db-a71f-312a557af54a",
"Infiltration": "Factory",
@ -714,6 +731,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "2875ed6d-0a92-4473-b641-0616a69f6388",
"Infiltration": "Factory",
@ -744,6 +762,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "2984a7ec-f10b-42a8-b466-554f37f9ea3e",
"Infiltration": "Factory",
@ -773,6 +792,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "2a1f1b80-72be-444d-9d8d-5f645a3fc019",
"Infiltration": "Factory",
@ -802,6 +822,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "2a5aad92-b5f9-40c0-a380-460247300227",
"Infiltration": "Factory",
@ -831,6 +852,7 @@
"Radius": 21.1
}
},
"CorePointId": 3,
"DelayToCanSpawnSec": 4,
"Id": "2dcddca6-9bd7-4d57-b57d-4c013342190d",
"Infiltration": "",
@ -860,6 +882,7 @@
"Radius": 30
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "2e1843a1-fd2a-4ccd-8b38-747c1a70f228",
"Infiltration": "Factory",
@ -889,6 +912,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "2eed18b6-9fbb-40de-979f-985f203f251e",
"Infiltration": "Factory",
@ -918,6 +942,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "30edcdf0-73e0-4ab5-a9e7-4d24a9a83aa9",
"Infiltration": "Factory",
@ -947,6 +972,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "336d3c25-9f38-475f-8eb9-db6393f06b6c",
"Infiltration": "Factory",
@ -977,6 +1003,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "35e7edfa-5d6c-4512-b3f0-ebb823e076de",
"Infiltration": "Factory",
@ -1006,6 +1033,7 @@
"Radius": 30
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "38a8fe02-f871-4b79-91e5-69c2c68d1bbc",
"Infiltration": "Factory",
@ -1035,6 +1063,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "3bcd754a-b299-4d63-9d7f-e4d05c2f13e3",
"Infiltration": "Factory",
@ -1065,6 +1094,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "3dd5759f-3764-491f-be62-82f2db15a699",
"Infiltration": "Factory",
@ -1095,6 +1125,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "3eed3347-ac2d-429b-870e-6e6bc076e05e",
"Infiltration": "Factory",
@ -1125,6 +1156,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "3f0277ba-5d1f-4e3d-b763-234a33b904e3",
"Infiltration": "Factory",
@ -1155,6 +1187,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "4393a80b-14da-4321-86c4-0d45ab6afa67",
"Infiltration": "Factory",
@ -1184,6 +1217,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "4755c538-4ee5-4125-8cd3-885787da7ad5",
"Infiltration": "Factory",
@ -1214,6 +1248,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "47a23e13-9db9-4cc2-8da0-fcbc52d698d8",
"Infiltration": "Factory",
@ -1243,6 +1278,7 @@
"Radius": 30
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "4a4e5ee5-a314-4a78-939d-cf3c05818435",
"Infiltration": "Factory",
@ -1272,6 +1308,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "4bc2255b-75b0-44a3-91ed-c1b35499cbc5",
"Infiltration": "Factory",
@ -1301,6 +1338,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "503cf951-8e80-4ca0-aa2d-993f71a6a4a6",
"Infiltration": "Factory",
@ -1330,6 +1368,7 @@
"Radius": 30
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "50560c89-4136-4cfb-b155-485519110c93",
"Infiltration": "Factory",
@ -1359,6 +1398,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "57254982-c470-440d-911a-e8854f42398a",
"Infiltration": "Factory",
@ -1389,6 +1429,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "58eb6051-b050-4ce0-b608-71759c5e05b2",
"Infiltration": "Factory",
@ -1419,6 +1460,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "595f96c9-dcf7-4b89-947c-6f5538176fe2",
"Infiltration": "Factory",
@ -1448,6 +1490,7 @@
"Radius": 21.1
}
},
"CorePointId": 2,
"DelayToCanSpawnSec": 4,
"Id": "5a2aaa7e-06d3-438b-a2ee-2781ed753d2d",
"Infiltration": "",
@ -1477,6 +1520,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "5be1a535-4865-433c-b645-33c7ff65bd94",
"Infiltration": "Factory",
@ -1507,6 +1551,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "5f9f188b-8489-4c06-ae14-ba4ca2a46028",
"Infiltration": "Factory",
@ -1536,6 +1581,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "60b47eab-b2a6-4ba2-b30c-fea14a7169bf",
"Infiltration": "Factory",
@ -1565,6 +1611,7 @@
"Radius": 35
}
},
"CorePointId": 1,
"DelayToCanSpawnSec": 4,
"Id": "6670b804-5f1a-45f1-a462-585cb8619d09",
"Infiltration": "",
@ -1598,6 +1645,7 @@
}
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "67fb48f8-0359-458b-876c-2e4963cbd14e",
"Infiltration": "Factory",
@ -1627,6 +1675,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "683f2734-6398-4b77-9bab-b87f3be35938",
"Infiltration": "Factory",
@ -1656,6 +1705,7 @@
"Radius": 21.1
}
},
"CorePointId": 3,
"DelayToCanSpawnSec": 4,
"Id": "68ac9245-633b-4287-a999-2c3028fa8d45",
"Infiltration": "",
@ -1686,6 +1736,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "68f38db1-e55e-4170-9e79-1f9e34e8cdc5",
"Infiltration": "Factory",
@ -1715,6 +1766,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "6d7bf2bb-6211-4495-8509-58ceadea72e0",
"Infiltration": "Factory",
@ -1744,6 +1796,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "6d97a439-de10-42c5-99ef-6cf92e243aca",
"Infiltration": "Factory",
@ -1777,6 +1830,7 @@
}
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "6ecc9492-5fbb-43d8-a0c0-8509fa39eb1d",
"Infiltration": "Factory",
@ -1806,6 +1860,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "74059b40-4072-495f-a02c-2ffce404d728",
"Infiltration": "Factory",
@ -1836,6 +1891,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "792180b4-c67c-45f6-a5d4-f3973c7e2c9b",
"Infiltration": "Factory",
@ -1865,6 +1921,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "7ea1b4b8-a496-4bc0-bf61-e5ba4f3aa1fa",
"Infiltration": "Factory",
@ -1894,6 +1951,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "80532206-b2e1-4578-b559-99eae931a957",
"Infiltration": "Factory",
@ -1923,6 +1981,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "8128ea83-0d4f-4e64-b109-5acc9e477b33",
"Infiltration": "Factory",
@ -1953,6 +2012,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "824c7aed-9a71-4158-91e4-a153c42bbddc",
"Infiltration": "Factory",
@ -1982,6 +2042,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "8429bed9-52e2-4731-a425-4912db8529a9",
"Infiltration": "Factory",
@ -2011,6 +2072,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "867576c4-1152-48ad-80bf-a802d7318379",
"Infiltration": "Factory",
@ -2040,6 +2102,7 @@
"Radius": 41.97
}
},
"CorePointId": 3,
"DelayToCanSpawnSec": 4,
"Id": "86ff84ac-edf7-4efd-9643-4bacc59073e7",
"Infiltration": "",
@ -2069,6 +2132,7 @@
"Radius": 30
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "8df78011-1568-4e66-99b8-5c4ed736b99a",
"Infiltration": "Factory",
@ -2098,6 +2162,7 @@
"Radius": 41.97
}
},
"CorePointId": 1,
"DelayToCanSpawnSec": 4,
"Id": "90da8fb3-422a-46cd-b540-648cde8ee9f3",
"Infiltration": "",
@ -2127,6 +2192,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "91ec8f79-6cc4-422d-966f-4cd6a02d5a87",
"Infiltration": "Factory",
@ -2156,6 +2222,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "92822146-7c98-4570-8bde-8d0d042ae3cf",
"Infiltration": "Factory",
@ -2186,6 +2253,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "9507dd40-370d-4d8f-994e-c8f3b456804e",
"Infiltration": "Factory",
@ -2219,6 +2287,7 @@
}
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "990aa5a0-d549-4479-8af2-a196ddb3bb35",
"Infiltration": "Factory",
@ -2249,6 +2318,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "99840da7-52c4-4f5f-832e-c705e9d07572",
"Infiltration": "Factory",
@ -2279,6 +2349,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "99b05e61-8c54-42ad-bb6c-9bd30f38f1e6",
"Infiltration": "Factory",
@ -2308,6 +2379,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "9dd99893-91c5-4e64-b808-bbe46852022a",
"Infiltration": "Factory",
@ -2338,6 +2410,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "9e274f37-1c37-4c56-a763-f0753921744b",
"Infiltration": "Factory",
@ -2367,6 +2440,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "9f14e22f-3971-4440-8f48-c597cc7d9166",
"Infiltration": "Factory",
@ -2396,6 +2470,7 @@
"Radius": 21.1
}
},
"CorePointId": 2,
"DelayToCanSpawnSec": 4,
"Id": "a5465833-c434-44d5-9bba-1ce6d8488884",
"Infiltration": "",
@ -2425,6 +2500,7 @@
"Radius": 35
}
},
"CorePointId": 3,
"DelayToCanSpawnSec": 4,
"Id": "a5a35da1-0545-4774-b5a0-194f4903a9de",
"Infiltration": "",
@ -2454,6 +2530,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "a5c47219-1ebc-4254-90cb-934d6f9d4790",
"Infiltration": "Factory",
@ -2484,6 +2561,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "a7c5ae7b-61a6-4f62-b975-46078fd443c6",
"Infiltration": "Factory",
@ -2514,6 +2592,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "acdd7189-0c4b-4be6-9e6e-57dbca0f6212",
"Infiltration": "Factory",
@ -2543,6 +2622,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "ad0cbd99-02ee-4ff1-b799-6b50b8a3fa0f",
"Infiltration": "Factory",
@ -2572,6 +2652,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "adee9078-b5a3-4f9e-b384-e984cbea15fc",
"Infiltration": "Factory",
@ -2601,6 +2682,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "ae4693d5-a309-4cbc-85db-ce8a59cf7ff4",
"Infiltration": "Factory",
@ -2631,6 +2713,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "af54940c-1d1c-4281-a44d-cb2cf46e436b",
"Infiltration": "Factory",
@ -2660,6 +2743,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "afacfed6-7a03-418b-9fca-420590d639c0",
"Infiltration": "Factory",
@ -2689,6 +2773,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "b776e3ed-a02d-4141-8eba-35d4746547ca",
"Infiltration": "Factory",
@ -2718,6 +2803,7 @@
"Radius": 21.1
}
},
"CorePointId": 4,
"DelayToCanSpawnSec": 4,
"Id": "bbb167e6-da45-42ff-a113-20f605521b02",
"Infiltration": "",
@ -2748,6 +2834,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "bc1a8dad-c186-4238-9340-90ac952050e6",
"Infiltration": "Factory",
@ -2777,6 +2864,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "bcae7a9f-8b2f-4a4c-9cb0-589d4a227c70",
"Infiltration": "Factory",
@ -2806,6 +2894,7 @@
"Radius": 40
}
},
"CorePointId": 5,
"DelayToCanSpawnSec": 4,
"Id": "bd7f0d51-e000-4dc8-a58f-4bc9081039e3",
"Infiltration": "",
@ -2835,6 +2924,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "be7bf7f0-6892-4d55-b1af-85492250ea55",
"Infiltration": "Factory",
@ -2864,6 +2954,7 @@
"Radius": 41.97
}
},
"CorePointId": 4,
"DelayToCanSpawnSec": 4,
"Id": "c151498d-5939-4451-a992-c3998d62061a",
"Infiltration": "",
@ -2893,6 +2984,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "c249a42b-3b54-4680-ac4d-2c923ca4f530",
"Infiltration": "Factory",
@ -2922,6 +3014,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "c2d01ce0-e0e4-41af-8311-44dc5cf38a93",
"Infiltration": "Factory",
@ -2952,6 +3045,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "c3ba287a-9bea-4c28-81a5-650df99b2798",
"Infiltration": "Factory",
@ -2981,6 +3075,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "c671337f-e58f-4de6-a387-307d877954a3",
"Infiltration": "Factory",
@ -3010,6 +3105,7 @@
"Radius": 50
}
},
"CorePointId": 1,
"DelayToCanSpawnSec": 4,
"Id": "c949937b-c669-41ab-a5d6-1f93e58d4af8",
"Infiltration": "",
@ -3039,6 +3135,7 @@
"Radius": 21.1
}
},
"CorePointId": 2,
"DelayToCanSpawnSec": 4,
"Id": "cca16615-941d-4b07-a88f-4064628c1581",
"Infiltration": "",
@ -3072,6 +3169,7 @@
}
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "d2b48374-53d1-45a7-a3d2-5e1fc58a8499",
"Infiltration": "Factory",
@ -3101,6 +3199,7 @@
"Radius": 21.1
}
},
"CorePointId": 4,
"DelayToCanSpawnSec": 4,
"Id": "d2bb26d4-959f-478f-92ad-6adedf2dc512",
"Infiltration": "",
@ -3131,6 +3230,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "d2bc609f-cfaf-421a-8a02-a535e2b25d35",
"Infiltration": "Factory",
@ -3161,6 +3261,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "d2f072c1-9cdc-4d5e-9102-cd77d9edf626",
"Infiltration": "Factory",
@ -3194,6 +3295,7 @@
}
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "d6564897-4b3e-4b7e-9b56-34cb3b9a235d",
"Infiltration": "Factory",
@ -3224,6 +3326,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "d685da1e-6b1e-45fb-8e31-e3a42a382fed",
"Infiltration": "Factory",
@ -3254,6 +3357,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "d7e47ba9-1862-4070-95de-9a9b2f0e46ff",
"Infiltration": "Factory",
@ -3284,6 +3388,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "d7fc05a2-a7d9-494a-af5c-e092bb560bb9",
"Infiltration": "Factory",
@ -3314,6 +3419,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "da289682-cef5-4ae6-94bb-a2b80705906e",
"Infiltration": "Factory",
@ -3343,6 +3449,7 @@
"Radius": 27
}
},
"CorePointId": 5,
"DelayToCanSpawnSec": 4,
"Id": "de479fb9-789f-499b-ac6b-0530fab5235b",
"Infiltration": "",
@ -3372,6 +3479,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "e0f65b5b-c67b-4e15-a102-f92bbdf95f65",
"Infiltration": "Factory",
@ -3402,6 +3510,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "e33e5a4b-4c9e-46f9-b1df-5e9281746f58",
"Infiltration": "Factory",
@ -3431,6 +3540,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "e5cd7bad-0f60-4cc2-bdd9-8a8943232b01",
"Infiltration": "Factory",
@ -3460,6 +3570,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "e60d8dce-ee35-4b30-9c3a-afddf4c5445e",
"Infiltration": "Factory",
@ -3489,6 +3600,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "efb39132-1eff-4655-8fb0-d795f8f98eb3",
"Infiltration": "Factory",
@ -3518,6 +3630,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "f0864450-ffa8-4d7e-aa93-59ea6b218641",
"Infiltration": "Factory",
@ -3548,6 +3661,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "f248ad45-3889-4308-bd40-091b1f6a0492",
"Infiltration": "Factory",
@ -3577,6 +3691,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "f3c6d9ee-ca4e-44ca-abdf-0622a8249f1d",
"Infiltration": "Factory",
@ -3606,6 +3721,7 @@
"Radius": 41.97
}
},
"CorePointId": 1,
"DelayToCanSpawnSec": 4,
"Id": "f6276290-95d6-4d35-9b1a-53e1db1c08ec",
"Infiltration": "",
@ -3636,6 +3752,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "f8efba5d-56be-4091-b537-c97e88b031f2",
"Infiltration": "Factory",
@ -3666,6 +3783,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "fca84a73-902f-4c3e-b0ce-05f4348d2e12",
"Infiltration": "Factory",
@ -3696,6 +3814,7 @@
"Radius": 20
}
},
"CorePointId": 0,
"DelayToCanSpawnSec": 4,
"Id": "ff7de580-4ba2-4d00-bff0-13cb6717091c",
"Infiltration": "Factory",
@ -3725,6 +3844,7 @@
"Radius": 30.1
}
},
"CorePointId": 5,
"DelayToCanSpawnSec": 4,
"Id": "ff9c3127-2acd-48fe-a635-b1ab99d0bfa7",
"Infiltration": "",
@ -3803,12 +3923,12 @@
"BotSide": "Savage",
"SpawnPoints": "BotZone",
"WildSpawnType": "assault",
"isPlayers": true,
"isPlayers": false,
"number": 0,
"slots_max": 4,
"slots_min": 2,
"time_max": 50,
"time_min": 15
"slots_max": 2,
"slots_min": 1,
"time_max": 100,
"time_min": 40
},
{
"BotPreset": "normal",
@ -3818,12 +3938,12 @@
"isPlayers": false,
"number": 1,
"slots_max": 4,
"slots_min": 2,
"time_max": 5,
"time_min": 0
"slots_min": 1,
"time_max": -1,
"time_min": -1
},
{
"BotPreset": "normal",
"BotPreset": "hard",
"BotSide": "Savage",
"SpawnPoints": "BotZone",
"WildSpawnType": "assault",
@ -3832,10 +3952,10 @@
"slots_max": 4,
"slots_min": 2,
"time_max": 300,
"time_min": 50
"time_min": 210
},
{
"BotPreset": "hard",
"BotPreset": "normal",
"BotSide": "Savage",
"SpawnPoints": "BotZone",
"WildSpawnType": "assault",
@ -3844,10 +3964,10 @@
"slots_max": 4,
"slots_min": 2,
"time_max": 350,
"time_min": 160
"time_min": 260
},
{
"BotPreset": "hard",
"BotPreset": "normal",
"BotSide": "Savage",
"SpawnPoints": "BotZone",
"WildSpawnType": "assault",
@ -3877,10 +3997,10 @@
"WildSpawnType": "assault",
"isPlayers": false,
"number": 6,
"slots_max": 2,
"slots_max": 3,
"slots_min": 1,
"time_max": 1500,
"time_min": 1400
"time_min": 1200
},
{
"BotPreset": "hard",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -50,6 +50,9 @@
"BossName": "bossGluhar",
"BossPlayer": false,
"BossZone": "ZoneRailStrorage",
"Delay": 0,
"ForceSpawn": false,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"Supports": [
{
@ -87,6 +90,9 @@
"BossName": "pmcBot",
"BossPlayer": false,
"BossZone": "ZoneRailStrorage",
"Delay": 0,
"ForceSpawn": false,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 1470,
@ -102,6 +108,9 @@
"BossName": "pmcBot",
"BossPlayer": false,
"BossZone": "ZoneRailStrorage",
"Delay": 0,
"ForceSpawn": false,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1,
@ -117,6 +126,9 @@
"BossName": "pmcBot",
"BossPlayer": false,
"BossZone": "ZoneSubCommand",
"Delay": 0,
"ForceSpawn": false,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"Supports": null,
"Time": -1,
@ -132,6 +144,9 @@
"BossName": "pmcBot",
"BossPlayer": false,
"BossZone": "ZoneSubCommand",
"Delay": 0,
"ForceSpawn": false,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"Supports": null,
"Time": 3,
@ -430,6 +445,36 @@
"Pmc"
]
},
{
"BotZoneName": "ZoneSubCommand",
"Categories": [
"Bot",
"Boss"
],
"ColliderParams": {
"_parent": "SpawnSphereParams",
"_props": {
"Center": {
"x": 0,
"y": 0,
"z": 0
},
"Radius": 15
}
},
"DelayToCanSpawnSec": 4,
"Id": "08f2256d-4fd7-4ece-bf91-6928a0410f95",
"Infiltration": "",
"Position": {
"x": -94.91,
"y": -14.75,
"z": 3.42
},
"Rotation": 96.64535,
"Sides": [
"Savage"
]
},
{
"BotZoneName": "",
"Categories": [
@ -724,6 +769,35 @@
"Pmc"
]
},
{
"BotZoneName": "ZoneBarrack",
"Categories": [
"Bot"
],
"ColliderParams": {
"_parent": "SpawnSphereParams",
"_props": {
"Center": {
"x": 0,
"y": 0,
"z": 0
},
"Radius": 100
}
},
"DelayToCanSpawnSec": 4,
"Id": "162cd326-c355-446a-bf62-e2a76e76d743",
"Infiltration": "",
"Position": {
"x": -140.161,
"y": -6.963005,
"z": -35.536
},
"Rotation": 130.028351,
"Sides": [
"Savage"
]
},
{
"BotZoneName": "",
"Categories": [
@ -1926,6 +2000,35 @@
"All"
]
},
{
"BotZoneName": "ZoneBarrack",
"Categories": [
"Bot"
],
"ColliderParams": {
"_parent": "SpawnSphereParams",
"_props": {
"Center": {
"x": 0,
"y": 0,
"z": 0
},
"Radius": 150
}
},
"DelayToCanSpawnSec": 4,
"Id": "4b04a014-b605-46c4-905e-c5f31f652b77",
"Infiltration": "",
"Position": {
"x": -266.77,
"y": -6.24500275,
"z": 23.06
},
"Rotation": 84.70626,
"Sides": [
"Savage"
]
},
{
"BotZoneName": "ZonePTOR1",
"Categories": [
@ -5938,6 +6041,7 @@
"Chance": 100,
"Count": 420,
"EntryPoints": "Common",
"EventAvailable": true,
"ExfiltrationTime": 5,
"ExfiltrationType": "SharedTimer",
"Id": "0",
@ -5953,6 +6057,7 @@
"Chance": 100,
"Count": 0,
"EntryPoints": "Common",
"EventAvailable": false,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "Alpinist",
@ -5968,6 +6073,7 @@
"Chance": 100,
"Count": 0,
"EntryPoints": "Common",
"EventAvailable": false,
"ExfiltrationTime": 8,
"ExfiltrationType": "SharedTimer",
"Id": "",
@ -5983,6 +6089,7 @@
"Chance": 100,
"Count": 0,
"EntryPoints": "Common",
"EventAvailable": false,
"ExfiltrationTime": 18,
"ExfiltrationType": "Individual",
"Id": "",
@ -5998,6 +6105,7 @@
"Chance": 100,
"Count": 0,
"EntryPoints": "Common",
"EventAvailable": false,
"ExfiltrationTime": 10,
"ExfiltrationType": "Individual",
"Id": "",
@ -6013,6 +6121,7 @@
"Chance": 100,
"Count": 0,
"EntryPoints": "Common",
"EventAvailable": false,
"ExfiltrationTime": 8,
"ExfiltrationType": "Individual",
"Id": "",

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

View File

@ -21,6 +21,7 @@ import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { BotGenerationCacheService } from "@spt-aki/services/BotGenerationCacheService";
import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { MatchBotDetailsCacheService } from "@spt-aki/services/MatchBotDetailsCacheService";
import { SeasonalEventService } from "@spt-aki/services/SeasonalEventService";
import { JsonUtil } from "@spt-aki/utils/JsonUtil";
@injectable()
@ -28,7 +29,6 @@ export class BotController
{
protected botConfig: IBotConfig;
protected pmcConfig: IPmcConfig;
public static readonly pmcTypeLabel = "PMC";
constructor(
@inject("WinstonLogger") protected logger: ILogger,
@ -39,6 +39,7 @@ export class BotController
@inject("BotGenerationCacheService") protected botGenerationCacheService: BotGenerationCacheService,
@inject("MatchBotDetailsCacheService") protected matchBotDetailsCacheService: MatchBotDetailsCacheService,
@inject("LocalisationService") protected localisationService: LocalisationService,
@inject("SeasonalEventService") protected seasonalEventService: SeasonalEventService,
@inject("ProfileHelper") protected profileHelper: ProfileHelper,
@inject("ConfigServer") protected configServer: ConfigServer,
@inject("ApplicationContext") protected applicationContext: ApplicationContext,
@ -56,9 +57,18 @@ export class BotController
*/
public getBotPresetGenerationLimit(type: string): number
{
return this.botConfig.presetBatch[(type === "assaultGroup")
const value = this.botConfig.presetBatch[(type === "assaultGroup")
? "assault"
: type];
if (!value)
{
this.logger.warning(`No value found for bot type ${type}, defaulting to 30`);
return value;
}
return value;
}
/**
@ -106,8 +116,8 @@ export class BotController
break;
default:
difficultySettings = this.botDifficultyHelper.getBotDifficultySettings(type, difficulty);
// Don't add pmcs to gifter enemy list
if (type.toLowerCase() !== "gifter")
// Don't add pmcs to event enemies (e.g. gifter/peacefullzryachiyevent)
if (!this.botConfig.botsToNotAddPMCsAsEnemiesTo.includes(type.toLowerCase()))
{
this.botHelper.addBotToEnemyList(difficultySettings, [this.pmcConfig.bearType, this.pmcConfig.usecType], lowercasedBotType);
}
@ -142,6 +152,15 @@ export class BotController
isPlayerScav: false
};
// Event bots need special actions to occur, set data up for them
const isEventBot = condition.Role.toLowerCase().includes("event");
if (isEventBot)
{
// Add eventRole data + reassign role property to be base type
botGenerationDetails.eventRole = condition.Role;
botGenerationDetails.role = this.seasonalEventService.getBaseRoleForEventBot(botGenerationDetails.eventRole);
}
// Custom map waves can have spt roles in them
// Is bot type sptusec/sptbear, set is pmc true and set side
if (this.botHelper.botRoleIsPmc(condition.Role))
@ -155,9 +174,10 @@ export class BotController
for (let i = 0; i < botGenerationDetails.botCountToGenerate; i ++)
{
const details = this.jsonUtil.clone(botGenerationDetails);
const botRole = (isEventBot) ? details.eventRole : details.role;
// Roll chance to be pmc if type is allowed to be one
const botConvertRateMinMax = this.pmcConfig.convertIntoPmcChance[details.role.toLowerCase()];
const botConvertRateMinMax = this.pmcConfig.convertIntoPmcChance[botRole.toLowerCase()];
if (botConvertRateMinMax)
{
// Should bot become PMC
@ -171,7 +191,7 @@ export class BotController
}
}
cacheKey = `${details.role}${details.botDifficulty}`;
cacheKey = `${botRole}${details.botDifficulty}`;
// Check for bot in cache, add if not
if (!this.botGenerationCacheService.cacheHasBotOfRole(cacheKey))
{

View File

@ -273,11 +273,13 @@ export class BotEquipmentModGenerator
modSpawnChances.mod_handguard = 100;
}
// If stock mod can take a sub stock mod, force spawn chance to be 100% to ensure stock gets added
if (modSlot === "mod_stock" && modToAddTemplate._props.Slots.find(x => x._name.includes("mod_stock")))
// If stock mod can take a sub stock mod, force spawn chance to be 100% to ensure sub-stock gets added
// Or if mod_stock is configured to be forced on
if (modSlot === "mod_stock" && (modToAddTemplate._props.Slots.find(x => x._name.includes("mod_stock") || botEquipConfig.forceStock)))
{
// Stock mod can take additional stocks, could be a locking device, force 100% chance
modSpawnChances.mod_stock = 100;
const stockSlots = ["mod_stock", "mod_stock_000", "mod_stock_akms"];
this.adjustSlotSpawnChances(modSpawnChances, stockSlots, 100);
}
const modId = this.hashUtil.generate();

View File

@ -120,6 +120,8 @@ export class BotGenerator
output.push(bot);
}
this.logger.debug(`Generated ${botGenerationDetails.botCountToGenerate} ${output[0].Info.Settings.Role} (${botGenerationDetails.eventRole}) bots`);
return output;
}
@ -188,6 +190,12 @@ export class BotGenerator
// generate new inventory ID
bot = this.generateInventoryID(bot);
// Set role back to originally requested now its been generated
if (botGenerationDetails.eventRole)
{
bot.Info.Settings.Role = botGenerationDetails.eventRole;
}
return bot;
}

View File

@ -333,7 +333,7 @@ export class BotLootGenerator
{
this.itemHelper.addCartridgesToAmmoBox(itemsToAdd, itemToAddTemplate);
}
// make money a stack
// Make money a stack
else if (this.itemHelper.isOfBaseclass(itemToAddTemplate._id, BaseClasses.MONEY))
{
this.randomiseMoneyStackSize(isPmc, itemToAddTemplate, itemsToAdd[0]);
@ -374,14 +374,13 @@ export class BotLootGenerator
}
}
/**
* Add generated weapons to inventory as loot
* @param botInventory inventory to add preset to
* @param equipmentSlot slot to place the preset in (backpack)
* @param templateInventory bots template, assault.json
* @param modChances chances for mods to spawn on weapon
* @param botRole bots role, .e.g. pmcBot
* @param botRole bots role .e.g. pmcBot
* @param isPmc are we generating for a pmc
*/
protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: Inventory, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): void
@ -498,42 +497,45 @@ export class BotLootGenerator
/**
* Randomise the stack size of a money object, uses different values for pmc or scavs
* @param isPmc is this a PMC
* @param itemTemplate item details
* @param moneyItem Money stack to randomise
* @param isPmc Is money on a PMC bot
* @param itemTemplate item details from db
* @param moneyItem Money item to randomise
*/
protected randomiseMoneyStackSize(isPmc: boolean, itemTemplate: ITemplateItem, moneyItem: Item): void
{
// Only add if no upd or stack objects exist - preserves existing stack count
if (!moneyItem.upd?.StackObjectsCount)
{
// PMCs have a different stack max size
const minStackSize = itemTemplate._props.StackMinRandom;
const maxStackSize = (isPmc)
? this.pmcConfig.dynamicLoot.moneyStackLimits[itemTemplate._id]
: itemTemplate._props.StackMaxRandom;
// PMCs have a different stack max size
const minStackSize = itemTemplate._props.StackMinRandom;
const maxStackSize = (isPmc)
? this.pmcConfig.dynamicLoot.moneyStackLimits[itemTemplate._id]
: itemTemplate._props.StackMaxRandom;
const randomSize = this.randomUtil.getInt(minStackSize, maxStackSize);
moneyItem.upd = { "StackObjectsCount": this.randomUtil.getInt(minStackSize, maxStackSize) };
if (!moneyItem.upd)
{
moneyItem.upd = {};
}
moneyItem.upd.StackObjectsCount = randomSize;
}
/**
* Randomise the size of an ammo stack
* @param isPmc is this a PMC
* @param itemTemplate item details
* @param ammoItem Ammo stack to randomise
* @param isPmc Is ammo on a PMC bot
* @param itemTemplate item details from db
* @param ammoItem Ammo item to randomise
*/
protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void
{
// only add if no upd or stack objects exist - preserves existing stack count
if (!ammoItem.upd?.StackObjectsCount)
{
const randomSize = itemTemplate._props.StackMaxSize === 1
? 1
: this.randomUtil.getInt(itemTemplate._props.StackMinRandom, itemTemplate._props.StackMaxRandom);
const randomSize = itemTemplate._props.StackMaxSize === 1
? 1
: this.randomUtil.getInt(itemTemplate._props.StackMinRandom, itemTemplate._props.StackMaxRandom);
ammoItem.upd = { StackObjectsCount: randomSize };
if (!ammoItem.upd)
{
ammoItem.upd = {};
}
ammoItem.upd.StackObjectsCount = randomSize ;
}
/**

View File

@ -244,11 +244,11 @@ export class RepeatableQuestGenerator
{
// get all boss spawn information
const bossSpawns = Object.values(this.databaseServer.getTables().locations).filter(x => "base" in x && "Id" in x.base).map(
(x) => ({ "Id": x.base.Id, "BossSpawn": x.base.BossLocationSpawn })
(x) => ({ Id: x.base.Id, BossSpawn: x.base.BossLocationSpawn })
);
// filter for the current boss to spawn on map
const thisBossSpawns = bossSpawns.map(
(x) => ({ "Id": x.Id, "BossSpawn": x.BossSpawn.filter(e => e.BossName === targetKey) })
(x) => ({ Id: x.Id, BossSpawn: x.BossSpawn.filter(e => e.BossName === targetKey) })
).filter(x => x.BossSpawn.length > 0);
// remove blacklisted locations
const allowedSpawns = thisBossSpawns.filter(x => !eliminationConfig.distLocationBlacklist.includes(x.Id));
@ -315,9 +315,11 @@ export class RepeatableQuestGenerator
const availableForFinishCondition = quest.conditions.AvailableForFinish[0];
availableForFinishCondition._props.counter.id = this.objectId.generate();
availableForFinishCondition._props.counter.conditions = [];
// Only add specific location condition if specific map selected
if (locationKey !== "any")
{
availableForFinishCondition._props.counter.conditions.push(this.generateEliminationLocation(locationsConfig[locationKey], allowedWeapon, allowedWeaponsCategory));
availableForFinishCondition._props.counter.conditions.push(this.generateEliminationLocation(locationsConfig[locationKey]));
}
availableForFinishCondition._props.counter.conditions.push(this.generateEliminationCondition(targetKey, bodyPartsToClient, distance, allowedWeapon, allowedWeaponsCategory));
availableForFinishCondition._props.value = desiredKillCount;
@ -356,9 +358,9 @@ export class RepeatableQuestGenerator
* This is a helper method for GenerateEliminationQuest to create a location condition.
*
* @param {string} location the location on which to fulfill the elimination quest
* @returns {object} object of "Elimination"-location-subcondition
* @returns {IEliminationCondition} object of "Elimination"-location-subcondition
*/
protected generateEliminationLocation(location: string[], allowedWeapon: string, allowedWeaponCategory: string): IEliminationCondition
protected generateEliminationLocation(location: string[]): IEliminationCondition
{
const propsObject: IEliminationCondition = {
_props: {
@ -368,30 +370,20 @@ export class RepeatableQuestGenerator
},
_parent: "Location"
};
if (allowedWeapon)
{
propsObject._props.weapon = [allowedWeapon];
}
if (allowedWeaponCategory)
{
propsObject._props.weaponCategories = [allowedWeaponCategory];
}
return propsObject;
}
/**
* A repeatable quest, besides some more or less static components, exists of reward and condition (see assets/database/templates/repeatableQuests.json)
* This is a helper method for GenerateEliminationQuest to create a kill condition.
*
* @param {string} target array of target npcs e.g. "AnyPmc", "Savage"
* @param {array} bodyParts array of body parts with which to kill e.g. ["stomach", "thorax"]
* @param {number} distance distance from which to kill (currently only >= supported)
* @returns {object} object of "Elimination"-kill-subcondition
* Create kill condition for an elimination quest
* @param target Bot type target of elimination quest e.g. "AnyPmc", "Savage"
* @param targetedBodyParts Body parts player must hit
* @param distance Distance from which to kill (currently only >= supported
* @param allowedWeapon What weapon must be used - undefined = any
* @param allowedWeaponCategory What category of weapon must be used - undefined = any
* @returns IEliminationCondition object
*/
protected generateEliminationCondition(target: string, bodyPart: string[], distance: number, allowedWeapon: string, allowedWeaponCategory: string): IEliminationCondition
protected generateEliminationCondition(target: string, targetedBodyParts: string[], distance: number, allowedWeapon: string, allowedWeaponCategory: string): IEliminationCondition
{
const killConditionProps: IKillConditionProps = {
target: target,
@ -406,9 +398,10 @@ export class RepeatableQuestGenerator
killConditionProps.savageRole = [target];
}
if (bodyPart)
// Has specific body part hit condition
if (targetedBodyParts)
{
killConditionProps.bodyPart = bodyPart;
killConditionProps.bodyPart = targetedBodyParts;
}
// Dont allow distance + melee requirement
@ -420,11 +413,13 @@ export class RepeatableQuestGenerator
};
}
// Has specific weapon requirement
if (allowedWeapon)
{
killConditionProps.weapon = [allowedWeapon];
}
// Has specific weapon category requirement
if (allowedWeaponCategory?.length > 0)
{
killConditionProps.weaponCategories = [allowedWeaponCategory];
@ -781,7 +776,7 @@ export class RepeatableQuestGenerator
const rewardSpreadConfig = repeatableConfig.rewardScaling.rewardSpread;
const reputationConfig = repeatableConfig.rewardScaling.reputation;
if (isNaN(difficulty))
if (Number.isNaN(difficulty))
{
difficulty = 1;
this.logger.warning(this.localisationService.getText("repeatable-difficulty_was_nan"));

View File

@ -10,6 +10,7 @@ import { BaseClasses } from "@spt-aki/models/enums/BaseClasses";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemBaseClassService } from "@spt-aki/services/ItemBaseClassService";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocaleService } from "@spt-aki/services/LocaleService";
import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -41,6 +42,7 @@ class ItemHelper
@inject("DatabaseServer") protected databaseServer: DatabaseServer,
@inject("HandbookHelper") protected handbookHelper: HandbookHelper,
@inject("ItemBaseClassService") protected itemBaseClassService: ItemBaseClassService,
@inject("ItemFilterService") protected itemFilterService: ItemFilterService,
@inject("LocalisationService") protected localisationService: LocalisationService,
@inject("LocaleService") protected localeService: LocaleService
)
@ -58,11 +60,6 @@ class ItemHelper
invalidBaseTypes = this.defaultInvalidBaseTypes;
}
const blacklist = [
"5cffa483d7ad1a049e54ef1c", // mag_utes_ckib_nsv_belt_127x108_100
"6087e570b998180e9f76dc24", // weapon_hultafors_db5000 Dead Blow Hammer
"5d53f4b7a4b936793d58c780" // scope_ags_npz_pag17_2,7x
];
const itemDetails = this.getItem(tpl);
if (!itemDetails[0])
@ -75,7 +72,7 @@ class ItemHelper
&& itemDetails[1]._type === "Item"
&& invalidBaseTypes.every(x => !this.isOfBaseclass(tpl, x))
&& this.getItemPrice(tpl) > 0
&& blacklist.every(v => !this.isOfBaseclass(tpl, v));
&& !this.itemFilterService.isItemBlacklisted(tpl);
}
/**
@ -115,7 +112,7 @@ class ItemHelper
return handbookPrice;
}
const dynamicPrice = this.getDynamicItemPrice[tpl];
const dynamicPrice = this.getDynamicItemPrice(tpl);
if (dynamicPrice)
{
return dynamicPrice;

View File

@ -8,7 +8,7 @@ import { QuestConditionHelper } from "@spt-aki/helpers/QuestConditionHelper";
import { RagfairServerHelper } from "@spt-aki/helpers/RagfairServerHelper";
import { TraderHelper } from "@spt-aki/helpers/TraderHelper";
import { IPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Common, IQuestStatus } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { AvailableForConditions, AvailableForProps, IQuest, Reward } from "@spt-aki/models/eft/common/tables/IQuest";
import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse";
@ -135,7 +135,7 @@ export class QuestHelper
* @param skillName Name of skill to increase skill points of
* @param progressAmount Amount of skill points to add to skill
*/
public rewardSkillPoints(sessionID: string, pmcData: IPmcData, skillName: string, progressAmount: number): void
public rewardSkillPoints(sessionID: string, pmcData: IPmcData, skillName: string, progressAmount: number, scaleToSkillLevel: boolean = false): void
{
const indexOfSkillToUpdate = pmcData.Skills.Common.findIndex(s => s.Id === skillName);
if (indexOfSkillToUpdate === -1)
@ -153,10 +153,66 @@ export class QuestHelper
return;
}
// Tarkov has special handling of skills under level 9 to scale them to the lower XP requirement
if (scaleToSkillLevel)
{
progressAmount = this.adjustSkillExpForLowLevels(profileSkill, progressAmount);
}
profileSkill.Progress += progressAmount;
profileSkill.LastAccess = this.timeUtil.getTimestamp();
}
/**
* Adjust skill experience for low skill levels, mimicing the official client
* @param profileSkill the skill experience is being added to
* @param progressAmount the amount of experience being added to the skill
* @returns the adjusted skill progress gain
*/
public adjustSkillExpForLowLevels(profileSkill: Common, progressAmount: number): number
{
let currentLevel = Math.floor(profileSkill.Progress / 100);
// Only run this if the current level is under 9
if (currentLevel >= 9)
{
return progressAmount;
}
// This calculates how much progress we have in the skill's starting level
let startingLevelProgress = (profileSkill.Progress % 100) * ((currentLevel + 1) / 10);
// The code below assumes a 1/10th progress skill amount
let remainingProgress = progressAmount / 10;
// We have to do this loop to handle edge cases where the provided XP bumps your level up
// See "CalculateExpOnFirstLevels" in client for original logic
let adjustedSkillProgress = 0;
while (remainingProgress > 0 && currentLevel < 9)
{
// Calculate how much progress to add, limiting it to the current level max progress
const currentLevelRemainingProgress = ((currentLevel + 1) * 10) - startingLevelProgress;
this.logger.debug(`currentLevelRemainingProgress: ${currentLevelRemainingProgress}`);
const progressToAdd = Math.min(remainingProgress, currentLevelRemainingProgress);
const adjustedProgressToAdd = (10 / (currentLevel + 1)) * progressToAdd;
this.logger.debug(`Progress To Add: ${progressToAdd} Adjusted for level: ${adjustedProgressToAdd}`);
// Add the progress amount adjusted by level
adjustedSkillProgress += adjustedProgressToAdd;
remainingProgress -= progressToAdd;
startingLevelProgress = 0;
currentLevel++;
}
// If there's any remaining progress, add it. This handles if you go from level 8 -> 9
if (remainingProgress > 0)
{
adjustedSkillProgress += remainingProgress;
}
return adjustedSkillProgress;
}
/**
* Get quest name by quest id
* @param questId id to get

View File

@ -148,6 +148,8 @@ export interface BossLocationSpawn
TriggerId: string
TriggerName: string
Delay?: number
ForceSpawn?: boolean
IgnoreMaxBots?: boolean
Supports?: BossSupport[]
sptId?: string
}

View File

@ -16,4 +16,5 @@ export interface BotGenerationDetails
botDifficulty: string
/** Will the generated bot be a player scav */
isPlayerScav: boolean
eventRole?: string
}

View File

@ -8,6 +8,8 @@ export interface IBotConfig extends IBaseConfig
kind: "aki-bot"
/** How many variants of each bot should be generated on raid start */
presetBatch: PresetBatch
/** Bot roles that should not have PMC types (sptBear/sptUsec) added as enemies to */
botsToNotAddPMCsAsEnemiesTo: string[]
/** What bot types should be classified as bosses */
bosses: string[]
/** Control weapon/armor durability min/max values for each bot type */
@ -110,6 +112,8 @@ export interface EquipmentFilters
weightingAdjustmentsByBotLevel: WeightingAdjustmentDetails[]
/** Same as weightingAdjustments but based on player level instead of bot level */
weightingAdjustmentsByPlayerLevel?: WeightingAdjustmentDetails[]
/** Should the stock mod be forced to spawn on bot */
forceStock: boolean
}
export interface ModLimits

View File

@ -12,6 +12,7 @@ export interface IRepairConfig extends IBaseConfig
repairKitIntellectGainMultiplier: IIntellectGainValues
//** How much INT can be given to player per repair action */
maxIntellectGainPerRepair: IMaxIntellectGainValues;
weaponTreatment: IWeaponTreatmentRepairValues;
repairKit: RepairKit
}
@ -27,6 +28,18 @@ export interface IMaxIntellectGainValues
trader: number
}
export interface IWeaponTreatmentRepairValues
{
/** The chance to gain more weapon maintenance skill */
critSuccessChance: number
critSuccessAmount: number
/** The chance to gain less weapon maintenance skill */
critFailureChance: number
critFailureAmount: number
/** The multiplier used for calculating weapon maintenance XP */
pointGainMultiplier: number
}
export interface RepairKit
{
armor: BonusSettings

View File

@ -1,3 +1,4 @@
import { BossLocationSpawn } from "@spt-aki/models/eft/common/ILocationBase";
import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType";
import { IBaseConfig } from "@spt-aki/models/spt/config/IBaseConfig";
@ -8,6 +9,8 @@ export interface ISeasonalEventConfig extends IBaseConfig
/** event / botType / equipSlot / itemid */
eventGear: Record<string, Record<string, Record<string, Record<string, number>>>>
events: ISeasonalEvent[]
eventBotMapping: Record<string, string>;
eventBossSpawns: Record<string, Record<string, BossLocationSpawn[]>>
gifterSettings: GifterSetting[]
}

View File

@ -147,10 +147,11 @@ export class RepairService
repairDetails: RepairDetails,
pmcData: IPmcData): void
{
if (this.itemHelper.isOfBaseclass(repairDetails.repairedItem._tpl, BaseClasses.WEAPON))
if (repairDetails.repairedByKit && this.itemHelper.isOfBaseclass(repairDetails.repairedItem._tpl, BaseClasses.WEAPON))
{
const progress = this.databaseServer.getTables().globals.config.SkillsSettings.WeaponTreatment.SkillPointsPerRepair;
this.questHelper.rewardSkillPoints(sessionId, pmcData, "WeaponTreatment", progress);
const skillPoints = this.getWeaponRepairSkillPoints(repairDetails);
this.questHelper.rewardSkillPoints(sessionId, pmcData, "WeaponTreatment", skillPoints, true);
}
// Handle kit repairs of armor
@ -167,7 +168,7 @@ export class RepairService
const isHeavyArmor = itemDetails[1]._props.ArmorType === "Heavy";
const vestSkillToLevel = (isHeavyArmor) ? "HeavyVests" : "LightVests";
const pointsToAddToVestSkill = repairDetails.repairAmount * this.repairConfig.armorKitSkillPointGainPerRepairPointMultiplier;
const pointsToAddToVestSkill = repairDetails.repairPoints * this.repairConfig.armorKitSkillPointGainPerRepairPointMultiplier;
this.questHelper.rewardSkillPoints(sessionId, pmcData, vestSkillToLevel, pointsToAddToVestSkill);
}
@ -181,7 +182,7 @@ export class RepairService
: this.repairConfig.repairKitIntellectGainMultiplier.armor;
// limit gain to a max value defined in config.maxIntellectGainPerRepair
intellectGainedFromRepair = Math.min(repairDetails.repairAmount * intRepairMultiplier, this.repairConfig.maxIntellectGainPerRepair.kit);
intellectGainedFromRepair = Math.min(repairDetails.repairPoints * intRepairMultiplier, this.repairConfig.maxIntellectGainPerRepair.kit);
}
else
{
@ -191,6 +192,43 @@ export class RepairService
this.questHelper.rewardSkillPoints(sessionId, pmcData, SkillTypes.INTELLECT, intellectGainedFromRepair);
}
/**
* Return an appromixation of the amount of skill points live would return for the given repairDetails
* @param repairDetails the repair details to calculate skill points for
* @returns the number of skill points to reward the user
*/
protected getWeaponRepairSkillPoints(
repairDetails: RepairDetails): number
{
// This formula and associated configs is calculated based on 30 repairs done on live
// The points always came out 2-aligned, which is why there's a divide/multiply by 2 with ceil calls
const gainMult = this.repairConfig.weaponTreatment.pointGainMultiplier;
// First we get a baseline based on our repair amount, and gain multiplier with a bit of rounding
const step1 = Math.ceil(repairDetails.repairAmount / 2) * gainMult;
// Then we have to get the next even number
const step2 = Math.ceil(step1 / 2) * 2;
// Then multiply by 2 again to hopefully get to what live would give us
let skillPoints = step2 * 2;
// You can both crit fail and succeed at the same time, for fun (Balances out to 0 with default settings)
// Add a random chance to crit-fail
if (Math.random() <= this.repairConfig.weaponTreatment.critFailureChance)
{
skillPoints -= this.repairConfig.weaponTreatment.critFailureAmount;
}
// Add a random chance to crit-succeed
if (Math.random() <= this.repairConfig.weaponTreatment.critSuccessChance)
{
skillPoints += this.repairConfig.weaponTreatment.critSuccessAmount;
}
return skillPoints;
}
/**
*
@ -218,12 +256,13 @@ export class RepairService
const itemsDb = this.databaseServer.getTables().templates.items;
const itemToRepairDetails = itemsDb[itemToRepair._tpl];
const repairItemIsArmor = (!!itemToRepairDetails._props.ArmorMaterial);
const repairAmount = repairKits[0].count / this.getKitDivisor(itemToRepairDetails, repairItemIsArmor, pmcData);
this.repairHelper.updateItemDurability(
itemToRepair,
itemToRepairDetails,
repairItemIsArmor,
repairKits[0].count / this.getKitDivisor(itemToRepairDetails, repairItemIsArmor, pmcData),
repairAmount,
true,
1,
this.repairConfig.applyRandomizeDurabilityLoss);
@ -244,9 +283,10 @@ export class RepairService
}
return {
repairPoints: repairKits[0].count,
repairedItem: itemToRepair,
repairedItemIsArmor: repairItemIsArmor,
repairAmount: repairKits[0].count,
repairAmount: repairAmount,
repairedByKit: true
};
}
@ -414,7 +454,7 @@ export class RepairService
const skillLevel = Math.trunc((pmcData?.Skills?.Common?.find(s => s.Id === itemSkillType)?.Progress ?? 0) / 100);
const durabilityToRestorePercent = repairDetails.repairAmount / template._props.MaxDurability;
const durabilityToRestorePercent = repairDetails.repairPoints / template._props.MaxDurability;
const durabilityMultiplier = this.getDurabilityMultiplier(receivedDurabilityMaxPercent, durabilityToRestorePercent);
const doBuff = commonBuffMinChanceValue + commonBuffChanceLevelBonus * skillLevel * durabilityMultiplier;
@ -483,6 +523,7 @@ export class RepairService
export class RepairDetails
{
repairCost?: number;
repairPoints?: number;
repairedItem: Item;
repairedItemIsArmor: boolean;
repairAmount: number;

View File

@ -3,6 +3,7 @@ import { inject, injectable } from "tsyringe";
import { BotHelper } from "@spt-aki/helpers/BotHelper";
import { ProfileHelper } from "@spt-aki/helpers/ProfileHelper";
import { IConfig } from "@spt-aki/models/eft/common/IGlobals";
import { BossLocationSpawn } from "@spt-aki/models/eft/common/ILocationBase";
import { Inventory } from "@spt-aki/models/eft/common/tables/IBotType";
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
import { SeasonalEventType } from "@spt-aki/models/enums/SeasonalEventType";
@ -296,6 +297,8 @@ export class SeasonalEventService
globalConfig.EventType.push("HalloweenIllumination");
globalConfig.Health.ProfileHealthSettings.DefaultStimulatorBuff = "Buffs_Halloween";
this.addEventGearToBots(eventType);
this.adjustZryachiyMeleeChance();
this.addEventBossesToMaps(eventType);
this.addPumpkinsToScavBackpacks();
this.adjustTraderIcons(eventType);
break;
@ -318,6 +321,41 @@ export class SeasonalEventService
}
}
protected adjustZryachiyMeleeChance(): void
{
this.databaseServer.getTables().bots.types.bosszryachiy.chances.equipment.Scabbard = 100;
}
protected addEventBossesToMaps(eventType: SeasonalEventType): void
{
const botsToAddPerMap = this.seasonalEventConfig.eventBossSpawns[eventType.toLowerCase()];
if (!botsToAddPerMap)
{
this.logger.warning(`Unable to add ${eventType} bosses, eventBossSpawns is missing`);
return;
}
const mapKeys = Object.keys(botsToAddPerMap) ?? [];
for (const mapKey of mapKeys)
{
const bossesToAdd = botsToAddPerMap[mapKey];
if (!bossesToAdd)
{
this.logger.warning(`Unable to add ${eventType} bosses to ${mapKey}`);
continue;
}
for (const boss of bossesToAdd)
{
const mapBosses: BossLocationSpawn[] = this.databaseServer.getTables().locations[mapKey].base.BossLocationSpawn;
if (!mapBosses.find(x => x.BossName === boss.BossName))
{
this.databaseServer.getTables().locations[mapKey].base.BossLocationSpawn.push(...bossesToAdd);
}
}
}
}
/**
* Change trader icons to be more event themed (Halloween only so far)
* @param eventType What event is active
@ -470,4 +508,14 @@ export class SeasonalEventService
}
}
/**
* Get the underlying bot type for an event bot e.g. `peacefullZryachiyEvent` will return `bossZryachiy`
* @param eventBotRole Event bot role type
* @returns Bot role as string
*/
public getBaseRoleForEventBot(eventBotRole: string): string
{
return this.seasonalEventConfig.eventBotMapping[eventBotRole];
}
}

View File

@ -3,7 +3,13 @@
"compilerOptions": {
"emitDeclarationOnly": true,
"declaration": true,
"declarationDir": "./types"
"declarationDir": "./types",
"baseUrl": ".",
"paths": {
"@spt-aki/*": [
"src/*"
]
}
},
"exclude": [
"./types/**/*"