Compare commits
5 Commits
polychrome
...
main
Author | SHA1 | Date | |
---|---|---|---|
2c552f7b8a | |||
e903dce307 | |||
5aedb579aa | |||
7a2c187d54 | |||
76e40685ab |
@ -64,12 +64,7 @@ export const placeDecoInComponentController: RequestHandler = async (req, res) =
|
|||||||
}
|
}
|
||||||
if (!meta || (meta.price == 0 && meta.ingredients.length == 0)) {
|
if (!meta || (meta.price == 0 && meta.ingredients.length == 0)) {
|
||||||
deco.CompletionTime = new Date();
|
deco.CompletionTime = new Date();
|
||||||
} else if (
|
} else if (guild.AutoContributeFromVault && guild.VaultRegularCredits && guild.VaultMiscItems) {
|
||||||
guild.AutoContributeFromVault &&
|
|
||||||
guild.VaultRegularCredits &&
|
|
||||||
guild.VaultMiscItems &&
|
|
||||||
deco.Type != "/Lotus/Objects/Tenno/Props/TnoPaintBotDojoDeco"
|
|
||||||
) {
|
|
||||||
if (guild.VaultRegularCredits >= scaleRequiredCount(guild.Tier, meta.price)) {
|
if (guild.VaultRegularCredits >= scaleRequiredCount(guild.Tier, meta.price)) {
|
||||||
let enoughMiscItems = true;
|
let enoughMiscItems = true;
|
||||||
for (const ingredient of meta.ingredients) {
|
for (const ingredient of meta.ingredients) {
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
|
||||||
import { getDojoClient, getGuildForRequestEx, hasAccessToDojo, hasGuildPermission } from "@/src/services/guildService";
|
|
||||||
import { getInventory } from "@/src/services/inventoryService";
|
|
||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
|
||||||
import { GuildPermission } from "@/src/types/guildTypes";
|
|
||||||
import { RequestHandler } from "express";
|
|
||||||
|
|
||||||
export const setDojoComponentColorsController: RequestHandler = async (req, res) => {
|
|
||||||
const accountId = await getAccountIdForRequest(req);
|
|
||||||
const inventory = await getInventory(accountId, "GuildId LevelKeys");
|
|
||||||
const guild = await getGuildForRequestEx(req, inventory);
|
|
||||||
if (!hasAccessToDojo(inventory) || !(await hasGuildPermission(guild, accountId, GuildPermission.Decorator))) {
|
|
||||||
res.json({ DojoRequestStatus: -1 });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const data = getJSONfromString<ISetDojoComponentColorsRequest>(String(req.body));
|
|
||||||
const component = guild.DojoComponents.id(data.ComponentId)!;
|
|
||||||
//const deco = component.Decos!.find(x => x._id.equals(data.DecoId))!;
|
|
||||||
//deco.Pending = true;
|
|
||||||
//component.PaintBot = new Types.ObjectId(data.DecoId);
|
|
||||||
if ("lights" in req.query) {
|
|
||||||
component.PendingLights = data.Colours;
|
|
||||||
} else {
|
|
||||||
component.PendingColors = data.Colours;
|
|
||||||
}
|
|
||||||
await guild.save();
|
|
||||||
res.json(await getDojoClient(guild, 0, component._id));
|
|
||||||
};
|
|
||||||
|
|
||||||
interface ISetDojoComponentColorsRequest {
|
|
||||||
ComponentId: string;
|
|
||||||
DecoId: string;
|
|
||||||
Colours: number[];
|
|
||||||
}
|
|
@ -29,8 +29,7 @@ const dojoDecoSchema = new Schema<IDojoDecoDatabase>({
|
|||||||
MiscItems: { type: [typeCountSchema], default: undefined },
|
MiscItems: { type: [typeCountSchema], default: undefined },
|
||||||
CompletionTime: Date,
|
CompletionTime: Date,
|
||||||
RushPlatinum: Number,
|
RushPlatinum: Number,
|
||||||
PictureFrameInfo: pictureFrameInfoSchema,
|
PictureFrameInfo: pictureFrameInfoSchema
|
||||||
Pending: Boolean
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const dojoLeaderboardEntrySchema = new Schema<IDojoLeaderboardEntry>(
|
const dojoLeaderboardEntrySchema = new Schema<IDojoLeaderboardEntry>(
|
||||||
@ -58,11 +57,6 @@ const dojoComponentSchema = new Schema<IDojoComponentDatabase>({
|
|||||||
DestructionTime: Date,
|
DestructionTime: Date,
|
||||||
Decos: [dojoDecoSchema],
|
Decos: [dojoDecoSchema],
|
||||||
DecoCapacity: Number,
|
DecoCapacity: Number,
|
||||||
PaintBot: Schema.Types.ObjectId,
|
|
||||||
PendingColors: { type: [Number], default: undefined },
|
|
||||||
Colors: { type: [Number], default: undefined },
|
|
||||||
PendingLights: { type: [Number], default: undefined },
|
|
||||||
Lights: { type: [Number], default: undefined },
|
|
||||||
Leaderboard: { type: [dojoLeaderboardEntrySchema], default: undefined }
|
Leaderboard: { type: [dojoLeaderboardEntrySchema], default: undefined }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -105,7 +105,6 @@ import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestCo
|
|||||||
import { setActiveShipController } from "@/src/controllers/api/setActiveShipController";
|
import { setActiveShipController } from "@/src/controllers/api/setActiveShipController";
|
||||||
import { setAllianceGuildPermissionsController } from "@/src/controllers/api/setAllianceGuildPermissionsController";
|
import { setAllianceGuildPermissionsController } from "@/src/controllers/api/setAllianceGuildPermissionsController";
|
||||||
import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
|
import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
|
||||||
import { setDojoComponentColorsController } from "@/src/controllers/api/setDojoComponentColorsController";
|
|
||||||
import { setDojoComponentMessageController } from "@/src/controllers/api/setDojoComponentMessageController";
|
import { setDojoComponentMessageController } from "@/src/controllers/api/setDojoComponentMessageController";
|
||||||
import { setEquippedInstrumentController } from "@/src/controllers/api/setEquippedInstrumentController";
|
import { setEquippedInstrumentController } from "@/src/controllers/api/setEquippedInstrumentController";
|
||||||
import { setGuildMotdController } from "@/src/controllers/api/setGuildMotdController";
|
import { setGuildMotdController } from "@/src/controllers/api/setGuildMotdController";
|
||||||
@ -262,7 +261,6 @@ apiRouter.post("/saveLoadout.php", saveLoadoutController);
|
|||||||
apiRouter.post("/saveSettings.php", saveSettingsController);
|
apiRouter.post("/saveSettings.php", saveSettingsController);
|
||||||
apiRouter.post("/saveVaultAutoContribute.php", saveVaultAutoContributeController);
|
apiRouter.post("/saveVaultAutoContribute.php", saveVaultAutoContributeController);
|
||||||
apiRouter.post("/sell.php", sellController);
|
apiRouter.post("/sell.php", sellController);
|
||||||
apiRouter.post("/setDojoComponentColors.php", setDojoComponentColorsController);
|
|
||||||
apiRouter.post("/setDojoComponentMessage.php", setDojoComponentMessageController);
|
apiRouter.post("/setDojoComponentMessage.php", setDojoComponentMessageController);
|
||||||
apiRouter.post("/setEquippedInstrument.php", setEquippedInstrumentController);
|
apiRouter.post("/setEquippedInstrument.php", setEquippedInstrumentController);
|
||||||
apiRouter.post("/setGuildMotd.php", setGuildMotdController);
|
apiRouter.post("/setGuildMotd.php", setGuildMotdController);
|
||||||
|
@ -141,7 +141,6 @@ export const getDojoClient = async (
|
|||||||
DojoComponents: []
|
DojoComponents: []
|
||||||
};
|
};
|
||||||
const roomsToRemove: Types.ObjectId[] = [];
|
const roomsToRemove: Types.ObjectId[] = [];
|
||||||
const decosToRemoveNoRefund: { componentId: Types.ObjectId; decoId: Types.ObjectId }[] = [];
|
|
||||||
let needSave = false;
|
let needSave = false;
|
||||||
for (const dojoComponent of guild.DojoComponents) {
|
for (const dojoComponent of guild.DojoComponents) {
|
||||||
if (!componentId || dojoComponent._id.equals(componentId)) {
|
if (!componentId || dojoComponent._id.equals(componentId)) {
|
||||||
@ -213,21 +212,6 @@ export const getDojoClient = async (
|
|||||||
PictureFrameInfo: deco.PictureFrameInfo
|
PictureFrameInfo: deco.PictureFrameInfo
|
||||||
};
|
};
|
||||||
if (deco.CompletionTime) {
|
if (deco.CompletionTime) {
|
||||||
if (
|
|
||||||
deco.Type == "/Lotus/Objects/Tenno/Props/TnoPaintBotDojoDeco" &&
|
|
||||||
Date.now() >= deco.CompletionTime.getTime()
|
|
||||||
) {
|
|
||||||
if (dojoComponent.PendingColors) {
|
|
||||||
dojoComponent.Colors = dojoComponent.PendingColors;
|
|
||||||
dojoComponent.PendingColors = undefined;
|
|
||||||
}
|
|
||||||
if (dojoComponent.PendingLights) {
|
|
||||||
dojoComponent.Lights = dojoComponent.PendingLights;
|
|
||||||
dojoComponent.PendingLights = undefined;
|
|
||||||
}
|
|
||||||
decosToRemoveNoRefund.push({ componentId: dojoComponent._id, decoId: deco._id });
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
clientDeco.CompletionTime = toMongoDate(deco.CompletionTime);
|
clientDeco.CompletionTime = toMongoDate(deco.CompletionTime);
|
||||||
} else {
|
} else {
|
||||||
clientDeco.RegularCredits = deco.RegularCredits;
|
clientDeco.RegularCredits = deco.RegularCredits;
|
||||||
@ -236,10 +220,6 @@ export const getDojoClient = async (
|
|||||||
clientComponent.Decos.push(clientDeco);
|
clientComponent.Decos.push(clientDeco);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
clientComponent.PendingColors = dojoComponent.PendingColors;
|
|
||||||
clientComponent.Colors = dojoComponent.Colors;
|
|
||||||
clientComponent.PendingLights = dojoComponent.PendingLights;
|
|
||||||
clientComponent.Lights = dojoComponent.Lights;
|
|
||||||
dojo.DojoComponents.push(clientComponent);
|
dojo.DojoComponents.push(clientComponent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -250,15 +230,6 @@ export const getDojoClient = async (
|
|||||||
}
|
}
|
||||||
needSave = true;
|
needSave = true;
|
||||||
}
|
}
|
||||||
for (const deco of decosToRemoveNoRefund) {
|
|
||||||
logger.debug(`removing polychrome`, deco);
|
|
||||||
const component = guild.DojoComponents.id(deco.componentId)!;
|
|
||||||
component.Decos!.splice(
|
|
||||||
component.Decos!.findIndex(x => x._id.equals(deco.decoId)),
|
|
||||||
1
|
|
||||||
);
|
|
||||||
needSave = true;
|
|
||||||
}
|
|
||||||
if (needSave) {
|
if (needSave) {
|
||||||
await guild.save();
|
await guild.save();
|
||||||
}
|
}
|
||||||
|
@ -177,6 +177,22 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest
|
|||||||
await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
|
await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (questKey == "/Lotus/Types/Keys/OrokinMoonQuest/OrokinMoonQuestKeyChain") {
|
||||||
|
void createMessage(inventory.accountOwnerId, [
|
||||||
|
{
|
||||||
|
sndr: "/Lotus/Language/Bosses/Ordis",
|
||||||
|
msg: "/Lotus/Language/G1Quests/SecondDreamFinishInboxMessage",
|
||||||
|
att: [
|
||||||
|
"/Lotus/Weapons/Tenno/Melee/Swords/StalkerTwo/StalkerTwoSmallSword",
|
||||||
|
"/Lotus/Upgrades/Skins/Sigils/ScarSigil"
|
||||||
|
],
|
||||||
|
sub: "/Lotus/Language/G1Quests/SecondDreamFinishInboxTitle",
|
||||||
|
icon: "/Lotus/Interface/Icons/Npcs/Ordis.png",
|
||||||
|
highPriority: true
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
const questCompletionItems = getQuestCompletionItems(questKey);
|
const questCompletionItems = getQuestCompletionItems(questKey);
|
||||||
logger.debug(`quest completion items`, questCompletionItems);
|
logger.debug(`quest completion items`, questCompletionItems);
|
||||||
if (questCompletionItems) {
|
if (questCompletionItems) {
|
||||||
|
@ -161,7 +161,6 @@ export interface IDojoClient {
|
|||||||
|
|
||||||
export interface IDojoComponentClient {
|
export interface IDojoComponentClient {
|
||||||
id: IOid;
|
id: IOid;
|
||||||
SortId?: IOid;
|
|
||||||
pf: string; // Prefab (.level)
|
pf: string; // Prefab (.level)
|
||||||
ppf: string;
|
ppf: string;
|
||||||
pi?: IOid; // Parent ID. N/A to root.
|
pi?: IOid; // Parent ID. N/A to root.
|
||||||
@ -176,25 +175,16 @@ export interface IDojoComponentClient {
|
|||||||
DestructionTime?: IMongoDate;
|
DestructionTime?: IMongoDate;
|
||||||
Decos?: IDojoDecoClient[];
|
Decos?: IDojoDecoClient[];
|
||||||
DecoCapacity?: number;
|
DecoCapacity?: number;
|
||||||
PaintBot?: IOid;
|
|
||||||
PendingColors?: number[];
|
|
||||||
Colors?: number[];
|
|
||||||
PendingLights?: number[];
|
|
||||||
Lights?: number[];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IDojoComponentDatabase
|
export interface IDojoComponentDatabase
|
||||||
extends Omit<
|
extends Omit<IDojoComponentClient, "id" | "pi" | "CompletionTime" | "DestructionTime" | "Decos"> {
|
||||||
IDojoComponentClient,
|
|
||||||
"id" | "SortId" | "pi" | "CompletionTime" | "DestructionTime" | "Decos" | "PaintBot"
|
|
||||||
> {
|
|
||||||
_id: Types.ObjectId;
|
_id: Types.ObjectId;
|
||||||
pi?: Types.ObjectId;
|
pi?: Types.ObjectId;
|
||||||
CompletionTime?: Date;
|
CompletionTime?: Date;
|
||||||
CompletionLogPending?: boolean;
|
CompletionLogPending?: boolean;
|
||||||
DestructionTime?: Date;
|
DestructionTime?: Date;
|
||||||
Decos?: IDojoDecoDatabase[];
|
Decos?: IDojoDecoDatabase[];
|
||||||
PaintBot?: Types.ObjectId;
|
|
||||||
Leaderboard?: IDojoLeaderboardEntry[];
|
Leaderboard?: IDojoLeaderboardEntry[];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,7 +200,6 @@ export interface IDojoDecoClient {
|
|||||||
CompletionTime?: IMongoDate;
|
CompletionTime?: IMongoDate;
|
||||||
RushPlatinum?: number;
|
RushPlatinum?: number;
|
||||||
PictureFrameInfo?: IPictureFrameInfo;
|
PictureFrameInfo?: IPictureFrameInfo;
|
||||||
Pending?: boolean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IDojoDecoDatabase extends Omit<IDojoDecoClient, "id" | "CompletionTime"> {
|
export interface IDojoDecoDatabase extends Omit<IDojoDecoClient, "id" | "CompletionTime"> {
|
||||||
|
@ -5,5 +5,11 @@
|
|||||||
"ItemCount": 1
|
"ItemCount": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain": [{ "ItemType": "/Lotus/Types/Recipes/WarframeRecipes/BrokenFrameBlueprint", "ItemCount": 1 }]
|
"/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain": [{ "ItemType": "/Lotus/Types/Recipes/WarframeRecipes/BrokenFrameBlueprint", "ItemCount": 1 }],
|
||||||
|
"/Lotus/Types/Keys/OrokinMoonQuest/OrokinMoonQuestKeyChain": [
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestEmailItem",
|
||||||
|
"ItemCount": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user