feat: clan tiers #1378
@ -171,7 +171,7 @@ export const getDojoClient = async (
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    if (newTier) {
 | 
					                    if (newTier) {
 | 
				
			||||||
                        logger.debug(`clan finished building barracks, updating to tier ${newTier}`);
 | 
					                        logger.debug(`clan finished building barracks, updating to tier ${newTier}`);
 | 
				
			||||||
                        guild.Tier = newTier;
 | 
					                        setGuildTier(guild, newTier);
 | 
				
			||||||
                        needSave = true;
 | 
					                        needSave = true;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@ -249,16 +249,16 @@ export const removeDojoRoom = (guild: TGuildDatabaseDocument, componentId: Types
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    switch (component.pf) {
 | 
					    switch (component.pf) {
 | 
				
			||||||
        case "/Lotus/Levels/ClanDojo/ClanDojoBarracksShadow.level":
 | 
					        case "/Lotus/Levels/ClanDojo/ClanDojoBarracksShadow.level":
 | 
				
			||||||
            guild.Tier = 1;
 | 
					            setGuildTier(guild, 1);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case "/Lotus/Levels/ClanDojo/ClanDojoBarracksStorm.level":
 | 
					        case "/Lotus/Levels/ClanDojo/ClanDojoBarracksStorm.level":
 | 
				
			||||||
            guild.Tier = 2;
 | 
					            setGuildTier(guild, 2);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case "/Lotus/Levels/ClanDojo/ClanDojoBarracksMountain.level":
 | 
					        case "/Lotus/Levels/ClanDojo/ClanDojoBarracksMountain.level":
 | 
				
			||||||
            guild.Tier = 3;
 | 
					            setGuildTier(guild, 3);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case "/Lotus/Levels/ClanDojo/ClanDojoBarracksMoon.level":
 | 
					        case "/Lotus/Levels/ClanDojo/ClanDojoBarracksMoon.level":
 | 
				
			||||||
            guild.Tier = 4;
 | 
					            setGuildTier(guild, 4);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -404,6 +404,38 @@ export const removePigmentsFromGuildMembers = async (guildId: string | Types.Obj
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const setGuildTier = (guild: TGuildDatabaseDocument, newTier: number): void => {
 | 
				
			||||||
 | 
					    const oldTier = guild.Tier;
 | 
				
			||||||
 | 
					    guild.Tier = newTier;
 | 
				
			||||||
 | 
					    if (guild.TechProjects) {
 | 
				
			||||||
 | 
					        for (const project of guild.TechProjects) {
 | 
				
			||||||
 | 
					            const meta = ExportDojoRecipes.research[project.ItemType];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                const numContributed = scaleRequiredCount(oldTier, meta.price) - project.ReqCredits;
 | 
				
			||||||
 | 
					                project.ReqCredits = scaleRequiredCount(newTier, meta.price) - numContributed;
 | 
				
			||||||
 | 
					                if (project.ReqCredits < 0) {
 | 
				
			||||||
 | 
					                    guild.VaultRegularCredits ??= 0;
 | 
				
			||||||
 | 
					                    guild.VaultRegularCredits += project.ReqCredits * -1;
 | 
				
			||||||
 | 
					                    project.ReqCredits = 0;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for (let i = 0; i != project.ReqItems.length; ++i) {
 | 
				
			||||||
 | 
					                const numContributed =
 | 
				
			||||||
 | 
					                    scaleRequiredCount(oldTier, meta.ingredients[i].ItemCount) - project.ReqItems[i].ItemCount;
 | 
				
			||||||
 | 
					                project.ReqItems[i].ItemCount =
 | 
				
			||||||
 | 
					                    scaleRequiredCount(newTier, meta.ingredients[i].ItemCount) - numContributed;
 | 
				
			||||||
 | 
					                if (project.ReqItems[i].ItemCount < 0) {
 | 
				
			||||||
 | 
					                    project.ReqItems[i].ItemCount *= -1;
 | 
				
			||||||
 | 
					                    addVaultMiscItems(guild, [project.ReqItems[i]]);
 | 
				
			||||||
 | 
					                    project.ReqItems[i].ItemCount = 0;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const deleteGuild = async (guildId: Types.ObjectId): Promise<void> => {
 | 
					export const deleteGuild = async (guildId: Types.ObjectId): Promise<void> => {
 | 
				
			||||||
    await Guild.deleteOne({ _id: guildId });
 | 
					    await Guild.deleteOne({ _id: guildId });
 | 
				
			||||||
    await GuildMember.deleteMany({ guildId });
 | 
					    await GuildMember.deleteMany({ guildId });
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user