feat: handle classic syndicate alignments when trading in medals #2157
@ -10,3 +10,14 @@ export const getMaxStanding = (syndicate: ISyndicate, title: number): number =>
 | 
			
		||||
    }
 | 
			
		||||
    return syndicate.titles.find(x => x.level == title)!.maxStanding;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const getMinStanding = (syndicate: ISyndicate, title: number): number => {
 | 
			
		||||
    if (!syndicate.titles) {
 | 
			
		||||
        // LibrarySyndicate
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
    if (title == 0) {
 | 
			
		||||
        return syndicate.titles.find(x => x.level == -1)!.maxStanding;
 | 
			
		||||
    }
 | 
			
		||||
    return syndicate.titles.find(x => x.level == title)!.minStanding;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -82,7 +82,7 @@ import { handleBundleAcqusition } from "./purchaseService";
 | 
			
		||||
import libraryDailyTasks from "@/static/fixed_responses/libraryDailyTasks.json";
 | 
			
		||||
import { getRandomElement, getRandomInt, getRandomWeightedReward, SRng } from "./rngService";
 | 
			
		||||
import { createMessage } from "./inboxService";
 | 
			
		||||
import { getMaxStanding } from "@/src/helpers/syndicateStandingHelper";
 | 
			
		||||
import { getMaxStanding, getMinStanding } from "@/src/helpers/syndicateStandingHelper";
 | 
			
		||||
import { getNightwaveSyndicateTag, getWorldState } from "./worldStateService";
 | 
			
		||||
import { generateNemesisProfile, INemesisProfile } from "../helpers/nemesisHelpers";
 | 
			
		||||
import { TAccountDocument } from "./loginService";
 | 
			
		||||
@ -1217,6 +1217,10 @@ export const addStanding = (
 | 
			
		||||
    const max = getMaxStanding(syndicateMeta, syndicate.Title ?? 0);
 | 
			
		||||
    if (syndicate.Standing + gainedStanding > max) gainedStanding = max - syndicate.Standing;
 | 
			
		||||
 | 
			
		||||
    if (syndicate.Title == -2 && syndicate.Standing + gainedStanding < -71000) {
 | 
			
		||||
        gainedStanding = -71000 + syndicate.Standing;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!isMedallion || syndicateMeta.medallionsCappedByDailyLimit) {
 | 
			
		||||
        if (gainedStanding > getStandingLimit(inventory, syndicateMeta.dailyLimitBin)) {
 | 
			
		||||
            gainedStanding = getStandingLimit(inventory, syndicateMeta.dailyLimitBin);
 | 
			
		||||
@ -1225,15 +1229,26 @@ export const addStanding = (
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    syndicate.Standing += gainedStanding;
 | 
			
		||||
    affiliationMods.push({
 | 
			
		||||
    const affiliationMod: IAffiliationMods = {
 | 
			
		||||
        Tag: syndicateTag,
 | 
			
		||||
        Standing: gainedStanding
 | 
			
		||||
    });
 | 
			
		||||
    };
 | 
			
		||||
    affiliationMods.push(affiliationMod);
 | 
			
		||||
 | 
			
		||||
    if (syndicateMeta.alignments && propagateAlignments) {
 | 
			
		||||
    if (syndicateMeta.alignments) {
 | 
			
		||||
        if (propagateAlignments) {
 | 
			
		||||
            for (const [tag, factor] of Object.entries(syndicateMeta.alignments)) {
 | 
			
		||||
                addStanding(inventory, tag, gainedStanding * factor, affiliationMods, isMedallion, false);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            while (syndicate.Standing < getMinStanding(syndicateMeta, syndicate.Title ?? 0)) {
 | 
			
		||||
                syndicate.Title ??= 0;
 | 
			
		||||
                syndicate.Title -= 1;
 | 
			
		||||
                affiliationMod.Title ??= 0;
 | 
			
		||||
                affiliationMod.Title -= 1;
 | 
			
		||||
                logger.debug(`${syndicateTag} is decreasing to title ${syndicate.Title} after applying alignment`);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user