From 5ec79ee67c5f2eb5cfa8f2f4d318a73d52f1728f Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Tue, 5 Sep 2023 20:45:33 +0100 Subject: [PATCH] Add ability to force a card --- .dev.env | 1 + .prod.env | 1 + .stage.env | 1 + src/buttonEvents/Reroll.ts | 10 ++++++++++ src/commands/drop.ts | 10 ++++++++++ src/database/entities/card/Card.ts | 8 ++++++++ 6 files changed, 31 insertions(+) diff --git a/.dev.env b/.dev.env index 8b1bbfc..1635809 100644 --- a/.dev.env +++ b/.dev.env @@ -16,6 +16,7 @@ ABOUT_FUNDING= ABOUT_REPO= DROP_RARITY=-1 +DROP_CARD=-1 DB_HOST=127.0.0.1 DB_PORT=3301 diff --git a/.prod.env b/.prod.env index 4a0f69f..17fc883 100644 --- a/.prod.env +++ b/.prod.env @@ -16,6 +16,7 @@ ABOUT_FUNDING= ABOUT_REPO= DROP_RARITY=-1 +DROP_CARD=-1 DB_HOST=127.0.0.1 DB_PORT=3321 diff --git a/.stage.env b/.stage.env index cc0c28c..39afa54 100644 --- a/.stage.env +++ b/.stage.env @@ -16,6 +16,7 @@ ABOUT_FUNDING= ABOUT_REPO= DROP_RARITY=-1 +DROP_CARD=-1 DB_HOST=127.0.0.1 DB_PORT=3311 diff --git a/src/buttonEvents/Reroll.ts b/src/buttonEvents/Reroll.ts index 701434a..e5aeed9 100644 --- a/src/buttonEvents/Reroll.ts +++ b/src/buttonEvents/Reroll.ts @@ -5,6 +5,7 @@ import { readFileSync } from "fs"; import { CardRarityToColour, CardRarityToString } from "../constants/CardRarity"; import { v4 } from "uuid"; import { CoreClient } from "../client/client"; +import Card from "../database/entities/card/Card"; export default class Reroll extends ButtonEvent { public override async execute(interaction: ButtonInteraction) { @@ -14,6 +15,15 @@ export default class Reroll extends ButtonEvent { if (process.env.DROP_RARITY && Number(process.env.DROP_RARITY) > 0) { randomCard = await CardDropHelper.GetRandomCardByRarity(Number(process.env.DROP_RARITY)); + } else if (process.env.DROP_CARD && process.env.DROP_CARD != '-1') { + let card = await Card.FetchOneByCardNumber(process.env.DROP_CARD, [ "Series" ]); + + if (!card) { + await interaction.reply("Card not found"); + return; + } + + randomCard = card; } const image = readFileSync(randomCard.Path); diff --git a/src/commands/drop.ts b/src/commands/drop.ts index 483a983..5770903 100644 --- a/src/commands/drop.ts +++ b/src/commands/drop.ts @@ -5,6 +5,7 @@ import { CardRarityToColour, CardRarityToString } from "../constants/CardRarity" import { readFileSync } from "fs"; import { CoreClient } from "../client/client"; import { v4 } from "uuid"; +import Card from "../database/entities/card/Card"; export default class Drop extends Command { constructor() { @@ -20,6 +21,15 @@ export default class Drop extends Command { if (process.env.DROP_RARITY && Number(process.env.DROP_RARITY) > 0) { randomCard = await CardDropHelper.GetRandomCardByRarity(Number(process.env.DROP_RARITY)); + } else if (process.env.DROP_CARD && process.env.DROP_CARD != '-1') { + let card = await Card.FetchOneByCardNumber(process.env.DROP_CARD, [ "Series" ]); + + if (!card) { + await interaction.reply("Card not found"); + return; + } + + randomCard = card; } const image = readFileSync(randomCard.Path); diff --git a/src/database/entities/card/Card.ts b/src/database/entities/card/Card.ts index 3399695..295c310 100644 --- a/src/database/entities/card/Card.ts +++ b/src/database/entities/card/Card.ts @@ -35,6 +35,14 @@ export default class Card extends CardBaseEntity { @ManyToOne(() => Series, x => x.Cards) Series: Series; + public static async FetchOneByCardNumber(cardNumber: string, relations?: string[]): Promise { + const repository = CardDataSource.getRepository(Card); + + const single = await repository.findOne({ where: { CardNumber: cardNumber }, relations: relations || [] }); + + return single; + } + public static async FetchAllByRarity(rarity: CardRarity, relations?: string[]): Promise { const repository = CardDataSource.getRepository(Card);