mirror of
https://github.com/cassoule/flopobot_v2.git
synced 2026-03-18 21:40:27 +01:00
feat: solitaire autocomplete
This commit is contained in:
@@ -7,7 +7,8 @@ import {getUser, insertLog, updateUserCoins} from "../database/index.js";
|
|||||||
import {client} from "../bot/client.js";
|
import {client} from "../bot/client.js";
|
||||||
import {EmbedBuilder} from "discord.js";
|
import {EmbedBuilder} from "discord.js";
|
||||||
|
|
||||||
export const RANKS = ["A","2","3","4","5","6","7","8","9","T","J","Q","K"];
|
// export const RANKS = ["A","2","3","4","5","6","7","8","9","T","J","Q","K"];
|
||||||
|
export const RANKS = ["A", "2"];
|
||||||
export const SUITS = ["d","s","c","h"];
|
export const SUITS = ["d","s","c","h"];
|
||||||
|
|
||||||
// Build a single 52-card deck like "Ad","Ts", etc.
|
// Build a single 52-card deck like "Ad","Ts", etc.
|
||||||
@@ -201,7 +202,7 @@ export function dealInitial(room) {
|
|||||||
const actives = Object.values(room.players).filter(p => p.currentBet >= room.minBet);
|
const actives = Object.values(room.players).filter(p => p.currentBet >= room.minBet);
|
||||||
for (const p of actives) {
|
for (const p of actives) {
|
||||||
p.inRound = true;
|
p.inRound = true;
|
||||||
p.hands = [ { cards: [draw(room.shoe)], stood: false, busted: false, doubled: false, surrendered: false, hasActed: false, bet: 0 } ];
|
p.hands = [ { cards: [draw(room.shoe)], stood: false, busted: false, doubled: false, surrendered: false, hasActed: false, bet: p.currentBet } ];
|
||||||
}
|
}
|
||||||
room.dealer.cards = [draw(room.shoe), draw(room.shoe)];
|
room.dealer.cards = [draw(room.shoe), draw(room.shoe)];
|
||||||
room.dealer.holeHidden = true;
|
room.dealer.holeHidden = true;
|
||||||
@@ -252,7 +253,12 @@ export async function settleAll(room) {
|
|||||||
surrendered: hand.surrendered,
|
surrendered: hand.surrendered,
|
||||||
blackjackPayout: room.settings.blackjackPayout,
|
blackjackPayout: room.settings.blackjackPayout,
|
||||||
});
|
});
|
||||||
allRes[p.id] = res;
|
if (allRes[p.id]) {
|
||||||
|
allRes[p.id].push(res);
|
||||||
|
} else {
|
||||||
|
allRes[p.id] = [res];
|
||||||
|
}
|
||||||
|
|
||||||
p.totalDelta += res.delta
|
p.totalDelta += res.delta
|
||||||
p.totalBets++
|
p.totalBets++
|
||||||
if (res.result === 'win' || res.result === 'push' || res.result === 'blackjack') {
|
if (res.result === 'win' || res.result === 'push' || res.result === 'blackjack') {
|
||||||
@@ -323,27 +329,22 @@ export function applyAction(room, playerId, action) {
|
|||||||
case "stand": {
|
case "stand": {
|
||||||
hand.stood = true;
|
hand.stood = true;
|
||||||
hand.hasActed = true;
|
hand.hasActed = true;
|
||||||
|
p.activeHand++;
|
||||||
return "stand";
|
return "stand";
|
||||||
}
|
}
|
||||||
case "double": {
|
case "double": {
|
||||||
if (!canDouble(hand)) throw new Error("Cannot double now");
|
if (!canDouble(hand)) throw new Error("Cannot double now");
|
||||||
hand.doubled = true;
|
hand.doubled = true;
|
||||||
hand.bet*=2
|
hand.bet*=2
|
||||||
p.currentBet*=2
|
p.currentBet+=hand.bet/2
|
||||||
hand.hasActed = true;
|
hand.hasActed = true;
|
||||||
// The caller (routes) must also handle additional balance lock on the bet if using real coins
|
// The caller (routes) must also handle additional balance lock on the bet if using real coins
|
||||||
hand.cards.push(draw(room.shoe));
|
hand.cards.push(draw(room.shoe));
|
||||||
if (isBust(hand.cards)) hand.busted = true;
|
if (isBust(hand.cards)) hand.busted = true;
|
||||||
else hand.stood = true;
|
else hand.stood = true;
|
||||||
|
p.activeHand++;
|
||||||
return "double";
|
return "double";
|
||||||
}
|
}
|
||||||
case "surrender": {
|
|
||||||
if (hand.cards.length !== 2 || hand.hasActed) throw new Error("Cannot surrender now");
|
|
||||||
hand.surrendered = true;
|
|
||||||
hand.stood = true;
|
|
||||||
hand.hasActed = true;
|
|
||||||
return "surrender";
|
|
||||||
}
|
|
||||||
case "split": {
|
case "split": {
|
||||||
if (hand.cards.length !== 2) throw new Error("Cannot split: not exactly 2 cards");
|
if (hand.cards.length !== 2) throw new Error("Cannot split: not exactly 2 cards");
|
||||||
const r0 = hand.cards[0][0];
|
const r0 = hand.cards[0][0];
|
||||||
|
|||||||
Reference in New Issue
Block a user