feat(webui): guild view #2752
@ -14,6 +14,7 @@
 | 
			
		||||
  "unlockAllFlavourItems": false,
 | 
			
		||||
  "unlockAllSkins": false,
 | 
			
		||||
  "fullyStockedVendors": false,
 | 
			
		||||
  "skipClanKeyCrafting": false,
 | 
			
		||||
  "spoofMasteryRank": -1,
 | 
			
		||||
  "relicRewardItemCountMultiplier": 1,
 | 
			
		||||
  "nightwaveStandingMultiplier": 1,
 | 
			
		||||
 | 
			
		||||
@ -47,10 +47,11 @@ export const confirmGuildInvitationGetController: RequestHandler = async (req, r
 | 
			
		||||
        // Update inventory of new member
 | 
			
		||||
        const inventory = await getInventory(account._id.toString(), "GuildId LevelKeys Recipes");
 | 
			
		||||
        inventory.GuildId = new Types.ObjectId(req.query.clanId as string);
 | 
			
		||||
        const guild = (await Guild.findById(req.query.clanId as string))!;
 | 
			
		||||
        giveClanKey(inventory, guild, inventoryChanges);
 | 
			
		||||
        giveClanKey(inventory, inventoryChanges);
 | 
			
		||||
        await inventory.save();
 | 
			
		||||
 | 
			
		||||
        const guild = (await Guild.findById(req.query.clanId as string))!;
 | 
			
		||||
 | 
			
		||||
        // Add join to clan log
 | 
			
		||||
        guild.RosterActivity ??= [];
 | 
			
		||||
        guild.RosterActivity.push({
 | 
			
		||||
@ -96,7 +97,7 @@ export const confirmGuildInvitationPostController: RequestHandler = async (req,
 | 
			
		||||
        // Update inventory of new member
 | 
			
		||||
        const inventory = await getInventory(guildMember.accountId.toString(), "GuildId LevelKeys Recipes");
 | 
			
		||||
        inventory.GuildId = new Types.ObjectId(req.query.clanId as string);
 | 
			
		||||
        giveClanKey(inventory, guild);
 | 
			
		||||
        giveClanKey(inventory);
 | 
			
		||||
        await inventory.save();
 | 
			
		||||
 | 
			
		||||
        // Add join to clan log
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,7 @@ export const createGuildController: RequestHandler = async (req, res) => {
 | 
			
		||||
    const inventory = await getInventory(account._id.toString(), "GuildId LevelKeys Recipes");
 | 
			
		||||
    inventory.GuildId = guild._id;
 | 
			
		||||
    const inventoryChanges: IInventoryChanges = {};
 | 
			
		||||
    giveClanKey(inventory, guild, inventoryChanges);
 | 
			
		||||
    giveClanKey(inventory, inventoryChanges);
 | 
			
		||||
    await inventory.save();
 | 
			
		||||
 | 
			
		||||
    res.json({
 | 
			
		||||
 | 
			
		||||
@ -202,7 +202,6 @@ goalProgressSchema.set("toJSON", {
 | 
			
		||||
const guildSchema = new Schema<IGuildDatabase>(
 | 
			
		||||
    {
 | 
			
		||||
        // SNS guild cheats
 | 
			
		||||
        skipClanKeyCrafting: Boolean,
 | 
			
		||||
        noDojoRoomBuildStage: Boolean,
 | 
			
		||||
        noDojoDecoBuildStage: Boolean,
 | 
			
		||||
        fastDojoRoomDestruction: Boolean,
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,7 @@ export interface IConfig {
 | 
			
		||||
    unlockAllFlavourItems?: boolean;
 | 
			
		||||
    unlockAllSkins?: boolean;
 | 
			
		||||
    fullyStockedVendors?: boolean;
 | 
			
		||||
    skipClanKeyCrafting?: boolean;
 | 
			
		||||
    spoofMasteryRank?: number;
 | 
			
		||||
    relicRewardItemCountMultiplier?: number;
 | 
			
		||||
    nightwaveStandingMultiplier?: number;
 | 
			
		||||
@ -120,7 +121,6 @@ export const configRemovedOptionsKeys = [
 | 
			
		||||
    "flawlessRelicsAlwaysGiveSilverReward",
 | 
			
		||||
    "radiantRelicsAlwaysGiveGoldReward",
 | 
			
		||||
    "disableDailyTribute",
 | 
			
		||||
    "skipClanKeyCrafting",
 | 
			
		||||
    "noDojoRoomBuildStage",
 | 
			
		||||
    "noDojoDecoBuildStage",
 | 
			
		||||
    "fastDojoRoomDestruction",
 | 
			
		||||
 | 
			
		||||
@ -27,6 +27,7 @@ import type { Types } from "mongoose";
 | 
			
		||||
import type { IDojoBuild, IDojoResearch } from "warframe-public-export-plus";
 | 
			
		||||
import { ExportDojoRecipes, ExportResources } from "warframe-public-export-plus";
 | 
			
		||||
import { logger } from "../utils/logger.ts";
 | 
			
		||||
import { config } from "./configService.ts";
 | 
			
		||||
import { getRandomInt } from "./rngService.ts";
 | 
			
		||||
import { Inbox } from "../models/inboxModel.ts";
 | 
			
		||||
import type { IFusionTreasure } from "../types/inventoryTypes/inventoryTypes.ts";
 | 
			
		||||
@ -688,12 +689,8 @@ export const checkClanAscensionHasRequiredContributors = async (guild: TGuildDat
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const giveClanKey = (
 | 
			
		||||
    inventory: TInventoryDatabaseDocument,
 | 
			
		||||
    guild: TGuildDatabaseDocument,
 | 
			
		||||
    inventoryChanges?: IInventoryChanges
 | 
			
		||||
): void => {
 | 
			
		||||
    if (guild.skipClanKeyCrafting) {
 | 
			
		||||
export const giveClanKey = (inventory: TInventoryDatabaseDocument, inventoryChanges?: IInventoryChanges): void => {
 | 
			
		||||
    if (config.skipClanKeyCrafting) {
 | 
			
		||||
        const levelKeyChanges = [
 | 
			
		||||
            {
 | 
			
		||||
                ItemType: "/Lotus/Types/Keys/DojoKey",
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,6 @@ export interface IGuildClient {
 | 
			
		||||
}
 | 
			
		||||
// Fields specific to SNS
 | 
			
		||||
export interface IGuildCheats {
 | 
			
		||||
    skipClanKeyCrafting?: boolean;
 | 
			
		||||
    noDojoRoomBuildStage?: boolean;
 | 
			
		||||
    noDojoDecoBuildStage?: boolean;
 | 
			
		||||
    fastDojoRoomDestruction?: boolean;
 | 
			
		||||
 | 
			
		||||
@ -611,10 +611,6 @@
 | 
			
		||||
                                    <input class="form-check-input" type="checkbox" id="fastClanAscension" />
 | 
			
		||||
                                    <label class="form-check-label" for="fastClanAscension" data-loc="cheats_fastClanAscension"></label>
 | 
			
		||||
                                </div>
 | 
			
		||||
                                <div class="form-check">
 | 
			
		||||
                                    <input class="form-check-input" type="checkbox" id="skipClanKeyCrafting" />
 | 
			
		||||
                                    <label class="form-check-label" for="skipClanKeyCrafting" data-loc="cheats_skipClanKeyCrafting"></label>
 | 
			
		||||
                                </div>
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
@ -999,6 +995,10 @@
 | 
			
		||||
                                        <input class="form-check-input" type="checkbox" id="fullyStockedVendors" />
 | 
			
		||||
                                        <label class="form-check-label" for="fullyStockedVendors" data-loc="cheats_fullyStockedVendors"></label>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <div class="form-check">
 | 
			
		||||
                                        <input class="form-check-input" type="checkbox" id="skipClanKeyCrafting" />
 | 
			
		||||
                                        <label class="form-check-label" for="skipClanKeyCrafting" data-loc="cheats_skipClanKeyCrafting"></label>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <form class="form-group mt-2" onsubmit="doSaveConfigInt('spoofMasteryRank'); return false;">
 | 
			
		||||
                                        <label class="form-label" for="spoofMasteryRank" data-loc="cheats_spoofMasteryRank"></label>
 | 
			
		||||
                                        <div class="input-group">
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user