forked from rDrama/rDrama
1
0
Fork 0
rDrama/files/classes/slots.py

111 lines
3.2 KiB
Python
Raw Normal View History

from json.encoder import INFINITY
import random
2022-01-24 15:34:29 +00:00
def shuffle(stuff):
2022-01-25 01:59:58 +00:00
random.shuffle(stuff)
return stuff
2022-01-24 15:34:29 +00:00
class Slots:
2022-01-25 01:59:58 +00:00
command_word = "!slots"
2022-01-25 04:17:22 +00:00
casino_word = "!casino"
2022-01-27 21:26:20 +00:00
minimum_bet = 100
2022-01-25 01:59:58 +00:00
maximum_bet = INFINITY
payout_to_symbols = {
2: ["👣", "🍀", "🌈", "⭐️"],
3: ["🍎", "🔞", "⚛️", "☢️"],
5: ["✡️", "⚔️", "🍆", "🍒"],
12: ["🐱"]
}
2022-01-25 01:59:58 +00:00
def __init__(self, g):
self.db = g.db
def check_for_slots_command(self, in_text, from_user, from_comment):
if self.command_word in in_text:
for word in in_text.split():
if self.command_word in word:
try:
2022-01-25 18:56:50 +00:00
wager = word[len(self.command_word):]
wager_value = int(wager)
2022-01-25 18:36:41 +00:00
except: break
2022-01-25 18:56:50 +00:00
if (wager_value < self.minimum_bet): break
elif (wager_value > self.maximum_bet): break
elif (wager_value > from_user.coins): break
2022-01-25 04:17:22 +00:00
2022-01-25 18:56:50 +00:00
from_user.coins -= wager_value
2022-01-25 18:56:50 +00:00
payout = self.determine_payout()
symbols = self.build_symbols(payout)
text = self.build_text(wager_value, payout, from_user, "Coins")
reward = wager_value * payout
2022-01-25 18:56:50 +00:00
from_user.coins += reward
self.db.add(from_user)
2022-01-25 18:56:50 +00:00
from_comment.slots_result = f'{symbols} {text}'
self.db.add(from_comment)
2022-01-25 04:17:22 +00:00
if self.casino_word in in_text:
for word in in_text.split():
if self.casino_word in word:
try:
wager = word[len(self.casino_word):]
2022-01-25 18:56:50 +00:00
wager_value = int(wager)
2022-01-25 18:36:41 +00:00
except: break
2022-01-25 04:17:22 +00:00
2022-01-25 18:56:50 +00:00
if (wager_value < self.minimum_bet): break
elif (wager_value > self.maximum_bet): break
elif (wager_value > from_user.procoins): break
2022-01-25 04:17:22 +00:00
2022-01-25 18:56:50 +00:00
from_user.procoins -= wager_value
2022-01-25 04:17:22 +00:00
2022-01-25 18:56:50 +00:00
payout = self.determine_payout()
symbols = self.build_symbols(payout)
text = self.build_text(wager_value, payout, from_user, "Marseybux")
reward = wager_value * payout
2022-01-25 04:17:22 +00:00
2022-01-25 18:56:50 +00:00
from_user.procoins += reward
self.db.add(from_user)
2022-01-25 04:17:22 +00:00
2022-01-25 18:56:50 +00:00
from_comment.slots_result = f'{symbols} {text}'
self.db.add(from_comment)
2022-01-25 04:17:22 +00:00
2022-01-25 01:59:58 +00:00
def determine_payout(self):
2022-01-25 19:55:08 +00:00
value = random.randint(1, 100)
2022-01-25 18:33:44 +00:00
if value == 100: return 12
elif value >= 96: return 5
elif value >= 88: return 3
elif value >= 72: return 2
elif value >= 61: return 1
else: return 0
2022-01-25 01:59:58 +00:00
def build_symbols(self, for_payout):
all_symbols = []
for payout in self.payout_to_symbols:
for symbol in self.payout_to_symbols[payout]:
all_symbols.append(symbol)
shuffle(all_symbols)
2022-01-25 18:56:50 +00:00
if for_payout == 0: return "".join([all_symbols[0], all_symbols[1], all_symbols[2]])
elif for_payout == 1: return "".join([all_symbols[0], all_symbols[0], all_symbols[2]])
2022-01-25 19:55:08 +00:00
else:
relevantSymbols = shuffle(self.payout_to_symbols[for_payout])
symbol = relevantSymbols[0]
return "".join([symbol, symbol, symbol])
2022-01-25 01:59:58 +00:00
2022-01-25 04:17:22 +00:00
def build_text(self, wager_value, result, user, currency):
2022-01-25 01:59:58 +00:00
if result == 0:
user.winnings -= wager_value
2022-01-25 04:17:22 +00:00
return f'Lost {wager_value} {currency}'
2022-01-25 01:59:58 +00:00
elif result == 1:
return 'Broke Even'
elif result == 12:
2022-01-25 03:23:32 +00:00
user.winnings += wager_value * (result-1)
2022-01-25 04:17:22 +00:00
return f'Jackpot! Won {wager_value * result} {currency}'
2022-01-25 01:59:58 +00:00
else:
2022-01-25 03:23:32 +00:00
user.winnings += wager_value * (result-1)
2022-01-25 04:17:22 +00:00
return f'Won {wager_value * result} {currency}'