groundwork for Halloween zombies event

This commit is contained in:
Dev 2024-10-31 23:24:49 +00:00
parent cc782ba3d5
commit 140b4b4619
5 changed files with 773 additions and 7 deletions

View File

@ -238,6 +238,595 @@
"arenaFighterEvent": "arenaFighterEvent",
"crazyAssaultEvent": "crazyAssaultEvent"
},
"eventWaves": {
"halloweenzombies": {
"laboratory": [
{
"BossChance": 10000,
"BossDifficult": "easy",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 9999,
"TriggerId": "InfectedSpawn10",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 9999,
"TriggerId": "InfectedSpawn10",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": [],
"Supports": null,
"Time": 9999,
"TriggerId": "InfectedSpawn10",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 9999,
"TriggerId": "InfectedSpawn10",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": [],
"Supports": null,
"Time": 9999,
"TriggerId": "InfectedSpawn10",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": [],
"Supports": null,
"Time": 9999,
"TriggerId": "InfectedSpawn10",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 9999,
"TriggerId": "InfectedSpawn10",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 9999,
"TriggerId": "InfectedSpawn10",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["easy"],
"BossEscortAmount": "1"
}, {
"BossEscortType": "infectedPmc",
"BossEscortDifficult": ["hard"],
"BossEscortAmount": "1"
}
],
"Time": 9999,
"TriggerId": "InfectedSpawn20",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedPmc",
"BossEscortDifficult": ["easy"],
"BossEscortAmount": "1"
}, {
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["normal"],
"BossEscortAmount": "1"
}, {
"BossEscortType": "infectedPmc",
"BossEscortDifficult": ["hard"],
"BossEscortAmount": "1"
}
],
"Time": 9999,
"TriggerId": "InfectedSpawn30",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["easy"],
"BossEscortAmount": "1"
}
],
"Time": 9999,
"TriggerId": "InfectedSpawn40",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["normal"],
"BossEscortAmount": "1"
}
],
"Time": 9999,
"TriggerId": "InfectedSpawn50",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["normal"],
"BossEscortAmount": "1"
}
],
"Time": 9999,
"TriggerId": "InfectedSpawn60",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["normal"],
"BossEscortAmount": "1"
}
],
"Time": 9999,
"TriggerId": "InfectedSpawn70",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["normal"],
"BossEscortAmount": "1"
}
],
"Time": 9999,
"TriggerId": "InfectedSpawn80",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["normal"],
"BossEscortAmount": "1"
}
],
"Time": 9999,
"TriggerId": "InfectedSpawn90",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["normal"],
"BossEscortAmount": "1"
}
],
"Time": 9999,
"TriggerId": "InfectedSpawn100",
"TriggerName": "botEvent"
}, {
"BossChance": 10000,
"BossDifficult": "easy",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": [],
"Supports": null,
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": [],
"Supports": null,
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": [],
"Supports": null,
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": null,
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedLaborant",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["easy"],
"BossEscortAmount": "1"
}, {
"BossEscortType": "infectedPmc",
"BossEscortDifficult": ["hard"],
"BossEscortAmount": "1"
}
],
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "hard",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedPmc",
"BossEscortDifficult": ["easy"],
"BossEscortAmount": "1"
}, {
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["normal"],
"BossEscortAmount": "1"
}, {
"BossEscortType": "infectedPmc",
"BossEscortDifficult": ["hard"],
"BossEscortAmount": "1"
}
],
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["easy"],
"BossEscortAmount": "1"
}
],
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}, {
"BossChance": 10000,
"BossDifficult": "normal",
"BossEscortAmount": "0",
"BossEscortDifficult": "normal",
"BossEscortType": "infectedLaborant",
"BossName": "infectedPmc",
"BossPlayer": false,
"BossZone": "BotZoneFloor1,BotZoneFloor2,BotZoneBasement",
"Delay": 0,
"IgnoreMaxBots": false,
"RandomTimeSpawn": false,
"SpawnMode": ["regular", "pve"],
"Supports": [{
"BossEscortType": "infectedLaborant",
"BossEscortDifficult": ["normal"],
"BossEscortAmount": "1"
}
],
"Time": 960,
"TriggerId": "",
"TriggerName": ""
}
]
}
},
"eventBossSpawns": {
"halloween": {
"bigmap": [
@ -717,7 +1306,8 @@
"endDay": "4",
"endMonth": "11",
"settings": {
"enableSummoning": true
"enableSummoning": false,
"enableZombies": true
}
},
{

View File

@ -4887,6 +4887,73 @@
],
"sav_summon_seconds": 60,
"tmp_location_field_remove_me": 0,
"Events": {
"Halloween2024": {
"CrowdAttackBlockRadius": 100,
"CrowdAttackSpawnParams": [{
"Difficulty": "easy",
"Role": "infectedAssault",
"Weight": 30
}, {
"Difficulty": "normal",
"Role": "infectedAssault",
"Weight": 110
}, {
"Difficulty": "hard",
"Role": "infectedAssault",
"Weight": 60
}, {
"Difficulty": "easy",
"Role": "infectedPmc",
"Weight": 15
}, {
"Difficulty": "normal",
"Role": "infectedPmc",
"Weight": 55
}, {
"Difficulty": "hard",
"Role": "infectedPmc",
"Weight": 30
}, {
"Difficulty": "easy",
"Role": "infectedCivil",
"Weight": 0
}, {
"Difficulty": "normal",
"Role": "infectedCivil",
"Weight": 0
}, {
"Difficulty": "hard",
"Role": "infectedCivil",
"Weight": 0
}, {
"Difficulty": "easy",
"Role": "infectedLaborant",
"Weight": 0
}, {
"Difficulty": "normal",
"Role": "infectedLaborant",
"Weight": 0
}, {
"Difficulty": "hard",
"Role": "infectedLaborant",
"Weight": 0
}
],
"CrowdCooldownPerPlayerSec": 300,
"CrowdsLimit": 2,
"InfectedLookCoeff": 2,
"MaxCrowdAttackSpawnLimit": 14,
"MinInfectionPercentage": 0,
"MinSpawnDistToPlayer": 40,
"TargetPointSearchRadiusLimit": 80,
"ZombieCallDeltaRadius": 20,
"ZombieCallPeriodSec": 1,
"ZombieCallRadiusLimit": 50,
"ZombieMultiplier": 5,
"InfectionPercentage": 0
}
},
"transits": [
{
"activateAfterSec": 60,

View File

@ -565,6 +565,85 @@
"EscapeTimeLimit": 35,
"EscapeTimeLimitCoop": 30,
"EscapeTimeLimitPVE": 35,
"Events": {
"Halloween2024": {
"CrowdAttackBlockRadius": 100,
"CrowdAttackSpawnParams": [
{
"Difficulty": "easy",
"Role": "infectedAssault",
"Weight": 0
},
{
"Difficulty": "normal",
"Role": "infectedAssault",
"Weight": 0
},
{
"Difficulty": "hard",
"Role": "infectedAssault",
"Weight": 0
},
{
"Difficulty": "easy",
"Role": "infectedPmc",
"Weight": 22
},
{
"Difficulty": "normal",
"Role": "infectedPmc",
"Weight": 90
},
{
"Difficulty": "hard",
"Role": "infectedPmc",
"Weight": 90
},
{
"Difficulty": "easy",
"Role": "infectedCivil",
"Weight": 0
},
{
"Difficulty": "normal",
"Role": "infectedCivil",
"Weight": 0
},
{
"Difficulty": "hard",
"Role": "infectedCivil",
"Weight": 0
},
{
"Difficulty": "easy",
"Role": "infectedLaborant",
"Weight": 23
},
{
"Difficulty": "normal",
"Role": "infectedLaborant",
"Weight": 75
},
{
"Difficulty": "hard",
"Role": "infectedLaborant",
"Weight": 0
}
],
"CrowdCooldownPerPlayerSec": 300,
"CrowdsLimit": 2,
"InfectedLookCoeff": 2,
"InfectionPercentage": 0,
"MaxCrowdAttackSpawnLimit": 14,
"MinInfectionPercentage": 0,
"MinSpawnDistToPlayer": 40,
"TargetPointSearchRadiusLimit": 80,
"ZombieCallDeltaRadius": 20,
"ZombieCallPeriodSec": 1,
"ZombieCallRadiusLimit": 50,
"ZombieMultiplier": 5
}
},
"ForceOnlineRaidInPVE": false,
"GenerateLocalLootCache": true,
"GlobalContainerChanceModifier": 1,

View File

@ -1,4 +1,4 @@
import { IBossLocationSpawn } from "@spt/models/eft/common/ILocationBase";
import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase";
import { SeasonalEventType } from "@spt/models/enums/SeasonalEventType";
import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig";
@ -10,6 +10,7 @@ export interface ISeasonalEventConfig extends IBaseConfig {
events: ISeasonalEvent[];
eventBotMapping: Record<string, string>;
eventBossSpawns: Record<string, Record<string, IBossLocationSpawn[]>>;
eventWaves: Record<string, Record<string, IWave[]>>;
gifterSettings: IGifterSetting[];
}

View File

@ -2,7 +2,7 @@ import { BotHelper } from "@spt/helpers/BotHelper";
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import { IConfig } from "@spt/models/eft/common/IGlobals";
import { ILocation } from "@spt/models/eft/common/ILocation";
import { IBossLocationSpawn } from "@spt/models/eft/common/ILocationBase";
import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase";
import { IInventory } from "@spt/models/eft/common/tables/IBotType";
import { ConfigTypes } from "@spt/models/enums/ConfigTypes";
import { ItemTpl } from "@spt/models/enums/ItemTpl";
@ -352,6 +352,10 @@ export class SeasonalEventService {
this.enableHalloweenSummonEvent();
this.addEventBossesToMaps(event.type);
}
if (event.settings?.enableZombies) {
this.enableHalloweenZombiesEvent();
this.addEventWavesToMaps("halloweenZombies");
}
this.addPumpkinsToScavBackpacks();
this.adjustTraderIcons(event.type);
break;
@ -416,18 +420,45 @@ export class SeasonalEventService {
this.databaseService.getGlobals().config.EventSettings.EventActive = true;
}
protected enableHalloweenZombiesEvent(): void {
// TODO - expand to be more dynamic
// TODO - add zombies waves to maps
this.databaseService.getLocations().laboratory.base.Events.Halloween2024.InfectionPercentage = 100;
this.databaseService.getLocations().factory4_day.base.Events.Halloween2024.InfectionPercentage = 50;
}
protected addEventWavesToMaps(eventType: string): void {
const wavesToAddByMap = this.seasonalEventConfig.eventWaves[eventType.toLowerCase()];
if (!wavesToAddByMap) {
this.logger.warning(`Unable to add: ${eventType} waves, eventWaves is missing`);
return;
}
const mapKeys = Object.keys(wavesToAddByMap) ?? [];
const locations = this.databaseService.getLocations();
for (const mapKey of mapKeys) {
const wavesToAdd = mapKeys[mapKey];
if (!wavesToAdd) {
this.logger.warning(`Unable to add: ${eventType} wave to: ${mapKey}`);
continue;
}
locations[mapKey].base.BossLocationSpawn.push(...wavesToAdd);
}
}
/**
* Add event bosses to maps
* @param eventType Seasonal event, e.g. HALLOWEEN/CHRISTMAS
*/
protected addEventBossesToMaps(eventType: SeasonalEventType): void {
protected addEventBossesToMaps(eventType: string): 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) ?? [];
const locations = this.databaseService.getLocations();
for (const mapKey of mapKeys) {
const bossesToAdd = botsToAddPerMap[mapKey];
if (!bossesToAdd) {
@ -435,8 +466,6 @@ export class SeasonalEventService {
continue;
}
for (const boss of bossesToAdd) {
const locations = this.databaseService.getLocations();
const mapBosses: IBossLocationSpawn[] = locations[mapKey].base.BossLocationSpawn;
if (!mapBosses.some((bossSpawn) => bossSpawn.BossName === boss.BossName)) {
locations[mapKey].base.BossLocationSpawn.push(...bossesToAdd);