0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 09:50:43 -05:00

Added system to allow adjustment of bot appearance by season

PMCs have higher weighting to wear winter clothing during Christmas
This commit is contained in:
Chomp 2025-01-01 11:21:50 +00:00
parent 615f8dfbab
commit 6628eb9bab
3 changed files with 46 additions and 1 deletions

View File

@ -1,5 +1,25 @@
{ {
"enableSeasonalEventDetection": true, "enableSeasonalEventDetection": true,
"botAppearanceChanges": {
"CHRISTMAS": {
"usec": {
"body": {
"675fd6dc7a57e0b2a00e340a": 10
},
"feet": {
"675fd71c1c153e52f1050fd6": 10
}
},
"bear": {
"body": {
"675998aba378f89a3e089b5c": 10
},
"feet": {
"67599889a378f89a3e089b5a": 10
}
}
}
},
"eventGear": { "eventGear": {
"halloween": { "halloween": {
"assault": { "assault": {
@ -8341,7 +8361,8 @@
"endDay": "31", "endDay": "31",
"endMonth": "12", "endMonth": "12",
"settings": { "settings": {
"enableSanta": true "enableSanta": true,
"adjustBotAppearances": true
} }
}, },
{ {

View File

@ -18,6 +18,8 @@ export interface ISeasonalEventConfig extends IBaseConfig {
hostilitySettingsForEvent: Record<string, Record<string, IAdditionalHostilitySettings[]>>; hostilitySettingsForEvent: Record<string, Record<string, IAdditionalHostilitySettings[]>>;
/** Ids of containers on locations that only have christmas loot */ /** Ids of containers on locations that only have christmas loot */
christmasContainerIds: string[]; christmasContainerIds: string[];
/** Season - botType - location (body/feet/hands/head) */
botAppearanceChanges: Record<SeasonalEventType, Record<string, Record<string, Record<string, number>>>>;
} }
export interface ISeasonalEvent { export interface ISeasonalEvent {

View File

@ -436,6 +436,7 @@ export class SeasonalEventService {
this.addLootItemsToGifterDropItemsList(); this.addLootItemsToGifterDropItemsList();
} }
this.enableDancingTree(); this.enableDancingTree();
this.adjustBotAppearanceValues(event.type);
break; break;
case SeasonalEventType.NEW_YEARS.toLowerCase(): case SeasonalEventType.NEW_YEARS.toLowerCase():
break; break;
@ -458,6 +459,27 @@ export class SeasonalEventService {
} }
} }
protected adjustBotAppearanceValues(season: SeasonalEventType): void {
const adjustments = this.seasonalEventConfig.botAppearanceChanges[season];
if (!adjustments) {
return;
}
for (const botTypeKey in adjustments) {
const botDb = this.databaseService.getBots().types[botTypeKey];
if (!botDb) {
continue;
}
const botAppearanceAdjustments = adjustments[botTypeKey];
for (const appearanceKey in botAppearanceAdjustments) {
const weightAdjustments = botAppearanceAdjustments[appearanceKey];
for (const itemKey in weightAdjustments) {
botDb.appearance[appearanceKey][itemKey] = weightAdjustments[itemKey];
}
}
}
}
protected replaceBotHostility(hostilitySettings: Record<string, IAdditionalHostilitySettings[]>) { protected replaceBotHostility(hostilitySettings: Record<string, IAdditionalHostilitySettings[]>) {
const locations = this.databaseService.getLocations(); const locations = this.databaseService.getLocations();
const ignoreList = this.locationConfig.nonMaps; const ignoreList = this.locationConfig.nonMaps;