mirror of
https://github.com/sp-tarkov/server.git
synced 2025-02-13 09:50:43 -05:00
Improved obtainPrestige
This commit is contained in:
parent
c44e90b064
commit
99dcadefd2
@ -64,6 +64,22 @@ export class PrestigeController {
|
|||||||
* Handle /client/prestige/obtain
|
* Handle /client/prestige/obtain
|
||||||
*/
|
*/
|
||||||
public async obtainPrestige(sessionId: string, request: IObtainPrestigeRequest[]): Promise<void> {
|
public async obtainPrestige(sessionId: string, request: IObtainPrestigeRequest[]): Promise<void> {
|
||||||
|
// Going to prestige 1
|
||||||
|
|
||||||
|
// transfer
|
||||||
|
// 5% of skills should be transfered over
|
||||||
|
// 5% of mastering should be transfered over
|
||||||
|
// earned achievements should be transfered over
|
||||||
|
// profile stats should be transfered over
|
||||||
|
// prestige progress should be transfered over
|
||||||
|
|
||||||
|
// reset
|
||||||
|
// trader standing
|
||||||
|
// task progress
|
||||||
|
// character level
|
||||||
|
// stash
|
||||||
|
// hideout progress
|
||||||
|
|
||||||
const prePrestigeProfileClone = this.cloner.clone(this.profileHelper.getFullProfile(sessionId));
|
const prePrestigeProfileClone = this.cloner.clone(this.profileHelper.getFullProfile(sessionId));
|
||||||
const prePrestigePmc = prePrestigeProfileClone.characters.pmc;
|
const prePrestigePmc = prePrestigeProfileClone.characters.pmc;
|
||||||
const createRequest: IProfileCreateRequestData = {
|
const createRequest: IProfileCreateRequestData = {
|
||||||
@ -88,11 +104,10 @@ export class PrestigeController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Skill copy
|
// Skill copy
|
||||||
// TODO - Find what skills should be prestiged over
|
|
||||||
const commonSKillsToCopy = prePrestigePmc.Skills.Common;
|
const commonSKillsToCopy = prePrestigePmc.Skills.Common;
|
||||||
for (const skillToCopy of commonSKillsToCopy) {
|
for (const skillToCopy of commonSKillsToCopy) {
|
||||||
// Set progress to max level 20
|
// Set progress 5% of what it was
|
||||||
skillToCopy.Progress = Math.min(skillToCopy.Progress, 2000);
|
skillToCopy.Progress = skillToCopy.Progress * 0.05;
|
||||||
const existingSkill = newProfile.characters.pmc.Skills.Common.find((skill) => skill.Id === skillToCopy.Id);
|
const existingSkill = newProfile.characters.pmc.Skills.Common.find((skill) => skill.Id === skillToCopy.Id);
|
||||||
if (existingSkill) {
|
if (existingSkill) {
|
||||||
existingSkill.Progress = skillToCopy.Progress;
|
existingSkill.Progress = skillToCopy.Progress;
|
||||||
@ -103,8 +118,8 @@ export class PrestigeController {
|
|||||||
|
|
||||||
const masteringSkillsToCopy = prePrestigePmc.Skills.Mastering;
|
const masteringSkillsToCopy = prePrestigePmc.Skills.Mastering;
|
||||||
for (const skillToCopy of masteringSkillsToCopy) {
|
for (const skillToCopy of masteringSkillsToCopy) {
|
||||||
// Set progress to max level 20
|
// Set progress 5% of what it was
|
||||||
skillToCopy.Progress = Math.min(skillToCopy.Progress, 2000);
|
skillToCopy.Progress = skillToCopy.Progress * 0.05;
|
||||||
const existingSkill = newProfile.characters.pmc.Skills.Mastering.find(
|
const existingSkill = newProfile.characters.pmc.Skills.Mastering.find(
|
||||||
(skill) => skill.Id === skillToCopy.Id,
|
(skill) => skill.Id === skillToCopy.Id,
|
||||||
);
|
);
|
||||||
@ -116,6 +131,15 @@ export class PrestigeController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const indexOfPrestigeObtained = Math.min(createRequest.sptForcePrestigeLevel - 1, 1); // Index starts at 0
|
const indexOfPrestigeObtained = Math.min(createRequest.sptForcePrestigeLevel - 1, 1); // Index starts at 0
|
||||||
|
|
||||||
|
// Add existing completed achievements and new one for prestige
|
||||||
|
newProfile.characters.pmc.Achievements = prePrestigeProfileClone.characters.pmc.Achievements; // this *should* only contain completed ones
|
||||||
|
|
||||||
|
// Add "Prestigious" achievement
|
||||||
|
if (!newProfile.characters.pmc.Achievements["676091c0f457869a94017a23"]) {
|
||||||
|
newProfile.characters.pmc.Achievements["676091c0f457869a94017a23"] = this.timeUtil.getTimestamp();
|
||||||
|
}
|
||||||
|
|
||||||
// Assumes Prestige data is in descending order
|
// Assumes Prestige data is in descending order
|
||||||
const currentPrestigeData = this.databaseService.getTemplates().prestige.elements[indexOfPrestigeObtained];
|
const currentPrestigeData = this.databaseService.getTemplates().prestige.elements[indexOfPrestigeObtained];
|
||||||
const prestigeRewards = this.databaseService
|
const prestigeRewards = this.databaseService
|
||||||
@ -151,11 +175,6 @@ export class PrestigeController {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add "Prestigious" achievement
|
|
||||||
if (!newProfile.achievements["676091c0f457869a94017a23"]) {
|
|
||||||
newProfile.achievements["676091c0f457869a94017a23"] = this.timeUtil.getTimestamp();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Force save of above changes to disk
|
// Force save of above changes to disk
|
||||||
await this.saveServer.saveProfile(sessionId);
|
await this.saveServer.saveProfile(sessionId);
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,6 @@ export interface ISptProfile {
|
|||||||
insurance: IInsurance[];
|
insurance: IInsurance[];
|
||||||
/** Assort purchases made by player since last trader refresh */
|
/** Assort purchases made by player since last trader refresh */
|
||||||
traderPurchases?: Record<string, Record<string, ITraderPurchaseData>>;
|
traderPurchases?: Record<string, Record<string, ITraderPurchaseData>>;
|
||||||
/** Achievements earned by player */
|
|
||||||
achievements: Record<string, number>;
|
|
||||||
/** List of friend profile IDs */
|
/** List of friend profile IDs */
|
||||||
friends: string[];
|
friends: string[];
|
||||||
customisationUnlocks: ICustomisationStorage[];
|
customisationUnlocks: ICustomisationStorage[];
|
||||||
|
@ -110,7 +110,6 @@ export class CreateProfileService {
|
|||||||
inraid: {} as IInraid,
|
inraid: {} as IInraid,
|
||||||
insurance: [],
|
insurance: [],
|
||||||
traderPurchases: {},
|
traderPurchases: {},
|
||||||
achievements: {},
|
|
||||||
friends: [],
|
friends: [],
|
||||||
customisationUnlocks: [],
|
customisationUnlocks: [],
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user