added roulette

This commit is contained in:
DeSqBlocki
2026-08-18 21:03:07 +02:00
parent 0d512960a7
commit 32ce20bd72
13 changed files with 1401 additions and 22 deletions
+17
View File
@@ -0,0 +1,17 @@
const {
showRoulette
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbSaucerRoulette",
async execute(interaction) {
return showRoulette(
interaction
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
chooseRouletteBet
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteBet10",
async execute(interaction) {
return chooseRouletteBet(
interaction,
10
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
chooseRouletteBet
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteBet100",
async execute(interaction) {
return chooseRouletteBet(
interaction,
100
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
chooseRouletteBet
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteBet1000",
async execute(interaction) {
return chooseRouletteBet(
interaction,
1000
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
chooseRouletteBet
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteBet50",
async execute(interaction) {
return chooseRouletteBet(
interaction,
50
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
chooseRouletteBet
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteBet500",
async execute(interaction) {
return chooseRouletteBet(
interaction,
500
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
playRoulette
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteBlack",
async execute(interaction) {
return playRoulette(
interaction,
"Black"
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
playRoulette
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteEven",
async execute(interaction) {
return playRoulette(
interaction,
"Even"
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
playRoulette
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteOdd",
async execute(interaction) {
return playRoulette(
interaction,
"Odd"
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
playRoulette
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteRed",
async execute(interaction) {
return playRoulette(
interaction,
"Red"
);
}
};
+18
View File
@@ -0,0 +1,18 @@
const {
playRoulette
} = require(
"../../utils/crumbRoulette"
);
module.exports = {
name:
"crumbRouletteZero",
async execute(interaction) {
return playRoulette(
interaction,
"Zero"
);
}
};
File diff suppressed because it is too large Load Diff
+75 -21
View File
@@ -145,18 +145,56 @@ async function showCrumbSaucer(
}); });
} }
function getSlotsSessionOwner(
interaction
) {
const footer =
interaction.message
.embeds[0]
?.footer
?.text;
const parts =
footer?.split(":")
??
[];
/*
* Main Crumb Saucer
*/
if (
parts[0] ===
"crumbSaucer"
) {
return parts[1];
}
/*
* Slots menu/result
*/
if (
parts[0] ===
"crumbSaucerSlots"
) {
return parts[1];
}
return null;
}
/* /*
* ============================================================ * ============================================================
* SLOT MENU * SLOT MENU
* ============================================================ * ============================================================
*/ */
async function showSlots( async function showSlots(
interaction interaction
) { ) {
const ownerId = const ownerId =
getMenuOwner( getSlotsSessionOwner(
interaction interaction
); );
@@ -169,7 +207,7 @@ async function showSlots(
interaction, interaction,
{ {
content: content:
"This isn't your Crumb Saucer session. Open your own with `/crumbsaucer`." "This isn't your Crumb Saucer session."
} }
); );
} }
@@ -222,7 +260,6 @@ async function showSlots(
}); });
} }
/* /*
* ============================================================ * ============================================================
* PLAY SLOTS * PLAY SLOTS
@@ -629,7 +666,10 @@ function buildMainMenuEmbed(
"### 🃏 Blackjack", "### 🃏 Blackjack",
"Beat the dealer without going over 21.", "Beat the dealer without going over 21.",
"", "",
"*More attractions coming soon...*" "### 🎡 Roulette",
"Bet on Red, Black, Odd, Even, or Zero.",
"",
"*More attractions coming soon... make a lala offering or buy me a white monster*"
].join("\n") ].join("\n")
) )
.addFields({ .addFields({
@@ -670,20 +710,6 @@ function buildMainMenuButtons() {
ButtonStyle.Primary ButtonStyle.Primary
), ),
new ButtonBuilder()
.setCustomId(
"crumbSaucerHeist"
)
.setLabel(
"Vault Heist"
)
.setEmoji(
"🏦"
)
.setStyle(
ButtonStyle.Danger
),
new ButtonBuilder() new ButtonBuilder()
.setCustomId( .setCustomId(
"crumbSaucerBlackjack" "crumbSaucerBlackjack"
@@ -696,6 +722,34 @@ function buildMainMenuButtons() {
) )
.setStyle( .setStyle(
ButtonStyle.Success ButtonStyle.Success
),
new ButtonBuilder()
.setCustomId(
"crumbSaucerRoulette"
)
.setLabel(
"Roulette"
)
.setEmoji(
"🎡"
)
.setStyle(
ButtonStyle.Primary
),
new ButtonBuilder()
.setCustomId(
"crumbSaucerHeist"
)
.setLabel(
"Vault Heist"
)
.setEmoji(
"🏦"
)
.setStyle(
ButtonStyle.Danger
) )
) )
]; ];
@@ -1023,11 +1077,11 @@ function buildSlotDisplay(
grid grid
) { ) {
return [ return [
"╔═════════════╗", "╔═════════╗",
`║ ${grid[0][0]} │ ${grid[0][1]} │ ${grid[0][2]} ║`, `║ ${grid[0][0]} │ ${grid[0][1]} │ ${grid[0][2]} ║`,
`║ ${grid[1][0]} │ ${grid[1][1]} │ ${grid[1][2]} ║`, `║ ${grid[1][0]} │ ${grid[1][1]} │ ${grid[1][2]} ║`,
`║ ${grid[2][0]} │ ${grid[2][1]} │ ${grid[2][2]} ║`, `║ ${grid[2][0]} │ ${grid[2][1]} │ ${grid[2][2]} ║`,
"╚═════════════╝" "╚═════════╝"
].join("\n"); ].join("\n");
} }