Merge branch '3.8.1-DEV' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.1-DEV

This commit is contained in:
Dev 2024-04-23 09:34:58 +01:00
commit d2cf495426
11 changed files with 45 additions and 32 deletions

View File

@ -15,7 +15,7 @@ jobs:
- name: Clone
run: |
rm -rf /workspace/SPT-AKI/Build/server
git clone https://dev.sp-tarkov.com/SPT-AKI/Server.git --branch master /workspace/SPT-AKI/Build/server
git clone https://dev.sp-tarkov.com/${GITHUB_REPOSITORY}.git --branch master /workspace/SPT-AKI/Build/server
cd /workspace/SPT-AKI/Build/server
git checkout ${GITHUB_SHA}

View File

@ -15,7 +15,7 @@ jobs:
- name: Clone
run: |
rm -rf /workspace/SPT-AKI/Build/server
git clone https://dev.sp-tarkov.com/SPT-AKI/Server.git --branch master /workspace/SPT-AKI/Build/server
git clone https://dev.sp-tarkov.com/${GITHUB_REPOSITORY}.git --branch master /workspace/SPT-AKI/Build/server
cd /workspace/SPT-AKI/Build/server
git checkout ${GITHUB_SHA}

View File

@ -15,7 +15,7 @@ jobs:
- name: Clone
run: |
rm -rf /workspace/SPT-AKI/Build/server
git clone https://dev.sp-tarkov.com/SPT-AKI/Server.git --branch master /workspace/SPT-AKI/Build/server
git clone https://dev.sp-tarkov.com/${GITHUB_REPOSITORY}.git --branch master /workspace/SPT-AKI/Build/server
cd /workspace/SPT-AKI/Build/server
git checkout ${GITHUB_SHA}

View File

@ -270,13 +270,14 @@ export class PMCLootGenerator
protected gcd(a: number, b: number): number
{
while (b !== 0)
let x = a;
let y = b;
while (y !== 0)
{
const temp = b;
b = a % b;
a = temp;
const temp = y;
y = x % y;
x = temp;
}
return a;
return x;
}
}

View File

@ -37,6 +37,8 @@ export class AssortHelper
flea = false,
): ITraderAssort
{
let strippedTraderAssorts = traderAssorts;
// Trader assort does not always contain loyal_level_items
if (!traderAssorts.loyal_level_items)
{
@ -59,11 +61,11 @@ export class AssortHelper
const questStatusInProfile = this.questHelper.getQuestStatus(pmcProfile, unlockValues.questId);
if (!unlockValues.status.includes(questStatusInProfile))
{
traderAssorts = this.removeItemFromAssort(traderAssorts, assortId, flea);
strippedTraderAssorts = this.removeItemFromAssort(traderAssorts, assortId, flea);
}
}
return traderAssorts;
return strippedTraderAssorts;
}
/**
@ -108,12 +110,14 @@ export class AssortHelper
*/
public stripLockedLoyaltyAssort(pmcProfile: IPmcData, traderId: string, assort: ITraderAssort): ITraderAssort
{
let strippedAssort = assort;
// Trader assort does not always contain loyal_level_items
if (!assort.loyal_level_items)
{
this.logger.warning(this.localisationService.getText("assort-missing_loyalty_level_object", traderId));
return assort;
return strippedAssort;
}
// Remove items restricted by loyalty levels above those reached by the player
@ -121,11 +125,11 @@ export class AssortHelper
{
if (assort.loyal_level_items[itemId] > pmcProfile.TradersInfo[traderId].loyaltyLevel)
{
assort = this.removeItemFromAssort(assort, itemId);
strippedAssort = this.removeItemFromAssort(assort, itemId);
}
}
return assort;
return strippedAssort;
}
/**

View File

@ -1472,7 +1472,6 @@ export class ItemHelper
const modItemDbDetails = this.getItem(modItemToAdd._tpl)[1];
// Include conflicting items of newly added mod in pool to be used for next mod choice
// biome-ignore lint/complexity/noForEach: <explanation>
modItemDbDetails._props.ConflictingItems.forEach(incompatibleModTpls.add, incompatibleModTpls);
}
@ -1481,7 +1480,7 @@ export class ItemHelper
/**
* Get a compatible tpl from the array provided where it is not found in the provided incompatible mod tpls parameter
* @param possibleTpls Tpls to randomply choose from
* @param possibleTpls Tpls to randomly choose from
* @param incompatibleModTpls Incompatible tpls to not allow
* @returns Chosen tpl or null
*/

View File

@ -692,12 +692,12 @@ export class QuestHelper
*/
public getQuestWithOnlyLevelRequirementStartCondition(quest: IQuest): IQuest
{
quest = this.jsonUtil.clone(quest);
quest.conditions.AvailableForStart = quest.conditions.AvailableForStart.filter((q) =>
const updatedQuest = this.jsonUtil.clone(quest);
updatedQuest.conditions.AvailableForStart = updatedQuest.conditions.AvailableForStart.filter((q) =>
q.conditionType === "Level"
);
return quest;
return updatedQuest;
}
/**
@ -714,14 +714,22 @@ export class QuestHelper
output: IItemEventRouterResponse = null,
): void
{
let updatedOutput = output;
// Prepare response to send back to client
if (!output)
if (!updatedOutput)
{
output = this.eventOutputHolder.getOutput(sessionID);
updatedOutput = this.eventOutputHolder.getOutput(sessionID);
}
this.updateQuestState(pmcData, QuestStatus.Fail, failRequest.qid);
const questRewards = this.applyQuestReward(pmcData, failRequest.qid, QuestStatus.Fail, sessionID, output);
const questRewards = this.applyQuestReward(
pmcData,
failRequest.qid,
QuestStatus.Fail,
sessionID,
updatedOutput,
);
// Create a dialog message for completing the quest.
const quest = this.getQuestFromDb(failRequest.qid, pmcData);
@ -747,7 +755,7 @@ export class QuestHelper
}
}
output.profileChanges[sessionID].quests.push(...this.failedUnlocked(failRequest.qid, sessionID));
updatedOutput.profileChanges[sessionID].quests.push(...this.failedUnlocked(failRequest.qid, sessionID));
}
/**

View File

@ -72,7 +72,7 @@ export class TradeHelper
): void
{
let offerItems: Item[] = [];
let buyCallback: { (buyCount: number); };
let buyCallback: (buyCount: number) => void;
if (buyRequestData.tid.toLocaleLowerCase() === "ragfair")
{
buyCallback = (buyCount: number) =>

View File

@ -15,7 +15,7 @@ export enum Weapons9x39
AS_VAL = "57c44b372459772d2b39b8ce",
VSS_VINTOREZ = "57838ad32459774a17445cd2",
KBP_9A_91 = "644674a13d52156624001fbc",
VSK_94 = "645e0c6b3b381ede770e1cc9",
VSK_94 = "645e0c6b3b381ede770e1cc9",
}
export enum Weapons762x54R
@ -26,9 +26,9 @@ export enum Weapons762x54R
MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
SV_98 = "55801eed4bdc2d89578b4588",
AVT_40 = "6410733d5dd49d77bd07847e",
SVT_40 = "643ea5b23db6f9f57107d9fd",
PKM = "64637076203536ad5600c990",
PKP = "64ca3d3954fc657e230529cc",
SVT_40 = "643ea5b23db6f9f57107d9fd",
PKM = "64637076203536ad5600c990",
PKP = "64ca3d3954fc657e230529cc",
}
export enum Weapons762x51
@ -68,7 +68,7 @@ export enum Weapons762x39
RD_704 = "628a60ae6b1d481ff772e9c8",
VPO_136 = "59e6152586f77473dc057aa1",
RPD = "6513ef33e06849f06c0957ca",
RPDN = "65268d8ecb944ff1e90ea385",
RPDN = "65268d8ecb944ff1e90ea385",
}
export enum Weapons762x35
@ -89,7 +89,7 @@ export enum Weapons556x45
SCARL_FDE = "618428466ef05c2ce828f218",
TX15_DML = "5d43021ca4b9362eab4b5e25",
AUG_A1 = "62e7c4fba689e8c9c50dfc38",
AUG_A3 = "63171672192e68c5460cebc5",
AUG_A3 = "63171672192e68c5460cebc5",
}
export enum Weapons545x39

View File

@ -134,7 +134,7 @@ export class DatabaseImporter implements OnLoad
try
{
const finalPath = filePathAndName.replace(this.filepath, "").replace(".json", "");
let tempObject;
let tempObject: any;
for (const prop of finalPath.split("/"))
{
if (!tempObject)

View File

@ -1020,7 +1020,8 @@ describe("InsuranceController", () =>
const attachments = parentAttachmentsMap.entries().next().value;
// Set the dynamicPrice of the first attachment to null.
vi.spyOn(insuranceController.ragfairPriceService, "getDynamicItemPrice").mockReturnValue(666).mockReturnValueOnce(null);
vi.spyOn(insuranceController.ragfairPriceService, "getDynamicItemPrice").mockReturnValue(666)
.mockReturnValueOnce(null);
// Execute the method.
const sortedAttachments = insuranceController.sortAttachmentsByPrice(attachments);