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;
 | 
					    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 libraryDailyTasks from "@/static/fixed_responses/libraryDailyTasks.json";
 | 
				
			||||||
import { getRandomElement, getRandomInt, getRandomWeightedReward, SRng } from "./rngService";
 | 
					import { getRandomElement, getRandomInt, getRandomWeightedReward, SRng } from "./rngService";
 | 
				
			||||||
import { createMessage } from "./inboxService";
 | 
					import { createMessage } from "./inboxService";
 | 
				
			||||||
import { getMaxStanding } from "@/src/helpers/syndicateStandingHelper";
 | 
					import { getMaxStanding, getMinStanding } from "@/src/helpers/syndicateStandingHelper";
 | 
				
			||||||
import { getNightwaveSyndicateTag, getWorldState } from "./worldStateService";
 | 
					import { getNightwaveSyndicateTag, getWorldState } from "./worldStateService";
 | 
				
			||||||
import { generateNemesisProfile, INemesisProfile } from "../helpers/nemesisHelpers";
 | 
					import { generateNemesisProfile, INemesisProfile } from "../helpers/nemesisHelpers";
 | 
				
			||||||
import { TAccountDocument } from "./loginService";
 | 
					import { TAccountDocument } from "./loginService";
 | 
				
			||||||
@ -1217,6 +1217,10 @@ export const addStanding = (
 | 
				
			|||||||
    const max = getMaxStanding(syndicateMeta, syndicate.Title ?? 0);
 | 
					    const max = getMaxStanding(syndicateMeta, syndicate.Title ?? 0);
 | 
				
			||||||
    if (syndicate.Standing + gainedStanding > max) gainedStanding = max - syndicate.Standing;
 | 
					    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 (!isMedallion || syndicateMeta.medallionsCappedByDailyLimit) {
 | 
				
			||||||
        if (gainedStanding > getStandingLimit(inventory, syndicateMeta.dailyLimitBin)) {
 | 
					        if (gainedStanding > getStandingLimit(inventory, syndicateMeta.dailyLimitBin)) {
 | 
				
			||||||
            gainedStanding = getStandingLimit(inventory, syndicateMeta.dailyLimitBin);
 | 
					            gainedStanding = getStandingLimit(inventory, syndicateMeta.dailyLimitBin);
 | 
				
			||||||
@ -1225,15 +1229,26 @@ export const addStanding = (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    syndicate.Standing += gainedStanding;
 | 
					    syndicate.Standing += gainedStanding;
 | 
				
			||||||
    affiliationMods.push({
 | 
					    const affiliationMod: IAffiliationMods = {
 | 
				
			||||||
        Tag: syndicateTag,
 | 
					        Tag: syndicateTag,
 | 
				
			||||||
        Standing: gainedStanding
 | 
					        Standing: gainedStanding
 | 
				
			||||||
    });
 | 
					    };
 | 
				
			||||||
 | 
					    affiliationMods.push(affiliationMod);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (syndicateMeta.alignments && propagateAlignments) {
 | 
					    if (syndicateMeta.alignments) {
 | 
				
			||||||
 | 
					        if (propagateAlignments) {
 | 
				
			||||||
            for (const [tag, factor] of Object.entries(syndicateMeta.alignments)) {
 | 
					            for (const [tag, factor] of Object.entries(syndicateMeta.alignments)) {
 | 
				
			||||||
                addStanding(inventory, tag, gainedStanding * factor, affiliationMods, isMedallion, false);
 | 
					                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