adjust research costs based on new tier
This commit is contained in:
parent
da89f38b42
commit
03adbc2420
@ -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