2022-09-04 20:53:34 +00:00
|
|
|
from files.__main__ import app
|
|
|
|
from files.helpers.wrappers import *
|
|
|
|
from files.helpers.alerts import *
|
|
|
|
from files.helpers.get import *
|
|
|
|
from files.helpers.const import *
|
|
|
|
from files.helpers.wrappers import *
|
2022-09-10 21:01:34 +00:00
|
|
|
from files.helpers.casino import *
|
2022-09-29 04:26:50 +00:00
|
|
|
from files.helpers.slots import *
|
2022-09-10 21:01:34 +00:00
|
|
|
from files.helpers.twentyone import *
|
2022-09-13 01:07:39 +00:00
|
|
|
from files.helpers.roulette import *
|
2022-09-29 04:26:50 +00:00
|
|
|
from files.helpers.lottery import *
|
2022-09-04 20:53:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
@app.get("/casino")
|
2022-09-11 02:05:50 +00:00
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-04 20:53:34 +00:00
|
|
|
def casino(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
return render_template("casino/rehab.html", v=v)
|
2022-09-10 21:01:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
return render_template("casino.html", v=v)
|
2022-09-09 23:55:13 +00:00
|
|
|
|
2022-09-04 20:53:34 +00:00
|
|
|
|
2022-09-05 20:59:42 +00:00
|
|
|
@app.get("/casino/<game>")
|
2022-09-11 02:05:50 +00:00
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-05 20:59:42 +00:00
|
|
|
def casino_game_page(v, game):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
return render_template("casino/rehab.html", v=v)
|
|
|
|
elif game not in CASINO_GAME_KINDS:
|
|
|
|
abort(404)
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
feed = json.dumps(get_game_feed(game))
|
|
|
|
leaderboard = json.dumps(get_game_leaderboard(game))
|
2022-09-10 21:01:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
game_state = ''
|
|
|
|
if game == 'blackjack':
|
|
|
|
if get_active_twentyone_game(v):
|
|
|
|
game_state = json.dumps(get_active_twentyone_game_state(v))
|
2022-09-29 04:26:50 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
return render_template(
|
|
|
|
f"casino/{game}_screen.html",
|
|
|
|
v=v,
|
|
|
|
game=game,
|
|
|
|
feed=feed,
|
|
|
|
leaderboard=leaderboard,
|
|
|
|
game_state=game_state
|
|
|
|
)
|
2022-09-10 21:01:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
@app.get("/casino/<game>/feed")
|
2022-09-11 02:05:50 +00:00
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-10 21:01:34 +00:00
|
|
|
def casino_game_feed(v, game):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
abort(403, "You are under Rehab award effect!")
|
|
|
|
elif game not in CASINO_GAME_KINDS:
|
|
|
|
abort(404)
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
feed = get_game_feed(game)
|
|
|
|
return {"feed": feed}
|
2022-09-05 20:59:42 +00:00
|
|
|
|
2022-09-04 20:53:34 +00:00
|
|
|
|
2022-09-13 01:07:39 +00:00
|
|
|
# Lottershe
|
|
|
|
@app.get("/lottershe")
|
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-13 01:07:39 +00:00
|
|
|
def lottershe(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
return render_template("casino/rehab.html", v=v)
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
participants = get_users_participating_in_lottery()
|
|
|
|
return render_template("lottery.html", v=v, participants=participants)
|
2022-09-13 01:07:39 +00:00
|
|
|
|
|
|
|
# Slots
|
2022-09-04 20:53:34 +00:00
|
|
|
@app.post("/casino/slots")
|
2022-09-11 02:05:50 +00:00
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-04 20:53:34 +00:00
|
|
|
def pull_slots(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
abort(403, "You are under Rehab award effect!")
|
2022-09-09 23:55:13 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
try:
|
|
|
|
wager = int(request.values.get("wager"))
|
|
|
|
except:
|
|
|
|
abort(400, "Invalid wager.")
|
2022-09-04 20:53:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
try:
|
|
|
|
currency = request.values.get("currency")
|
|
|
|
except:
|
|
|
|
abort(400, "Invalid currency (expected 'coin' or 'marseybux').")
|
2022-09-04 20:53:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
if (currency == "coin" and wager > v.coins) or (currency == "marseybux" and wager > v.procoins):
|
|
|
|
abort(400, f"Not enough {currency} to make that bet")
|
2022-09-04 20:53:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
success, game_state = casino_slot_pull(v, wager, currency)
|
2022-09-04 20:53:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
if success:
|
|
|
|
return {"game_state": game_state, "gambler": {"coins": v.coins, "procoins": v.procoins}}
|
|
|
|
else:
|
2022-10-29 23:53:09 +00:00
|
|
|
abort(400, f"Wager must be 5 {currency} or more")
|
2022-09-04 20:53:34 +00:00
|
|
|
|
|
|
|
|
2022-09-13 01:07:39 +00:00
|
|
|
# 21
|
2022-09-10 21:01:34 +00:00
|
|
|
@app.post("/casino/twentyone/deal")
|
2022-09-11 02:05:50 +00:00
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-10 21:01:34 +00:00
|
|
|
def blackjack_deal_to_player(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
abort(403, "You are under Rehab award effect!")
|
2022-09-09 23:55:13 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
try:
|
|
|
|
wager = int(request.values.get("wager"))
|
|
|
|
currency = request.values.get("currency")
|
|
|
|
create_new_game(v, wager, currency)
|
|
|
|
state = dispatch_action(v, BlackjackAction.DEAL)
|
|
|
|
feed = get_game_feed('blackjack')
|
2022-09-04 20:53:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
return {"success": True, "state": state, "feed": feed, "gambler": {"coins": v.coins, "procoins": v.procoins}}
|
|
|
|
except Exception as e:
|
|
|
|
abort(400, str(e))
|
2022-09-04 20:53:34 +00:00
|
|
|
|
|
|
|
|
2022-09-10 21:01:34 +00:00
|
|
|
@app.post("/casino/twentyone/hit")
|
2022-09-11 02:05:50 +00:00
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-10 21:01:34 +00:00
|
|
|
def blackjack_player_hit(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
abort(403, "You are under Rehab award effect!")
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
try:
|
|
|
|
state = dispatch_action(v, BlackjackAction.HIT)
|
|
|
|
feed = get_game_feed('blackjack')
|
|
|
|
return {"success": True, "state": state, "feed": feed, "gambler": {"coins": v.coins, "procoins": v.procoins}}
|
|
|
|
except:
|
|
|
|
abort(400, "Unable to hit.")
|
2022-09-10 21:01:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
@app.post("/casino/twentyone/stay")
|
2022-09-11 02:05:50 +00:00
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-10 21:01:34 +00:00
|
|
|
def blackjack_player_stay(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
abort(403, "You are under Rehab award effect!")
|
2022-09-10 21:01:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
try:
|
|
|
|
state = dispatch_action(v, BlackjackAction.STAY)
|
|
|
|
feed = get_game_feed('blackjack')
|
|
|
|
return {"success": True, "state": state, "feed": feed, "gambler": {"coins": v.coins, "procoins": v.procoins}}
|
|
|
|
except:
|
|
|
|
abort(400, "Unable to stay.")
|
2022-09-10 21:01:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
@app.post("/casino/twentyone/double-down")
|
2022-09-11 02:05:50 +00:00
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-10 21:01:34 +00:00
|
|
|
def blackjack_player_doubled_down(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
abort(403, "You are under Rehab award effect!")
|
2022-09-10 21:01:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
try:
|
|
|
|
state = dispatch_action(v, BlackjackAction.DOUBLE_DOWN)
|
|
|
|
feed = get_game_feed('blackjack')
|
|
|
|
return {"success": True, "state": state, "feed": feed, "gambler": {"coins": v.coins, "procoins": v.procoins}}
|
|
|
|
except:
|
|
|
|
abort(400, "Unable to double down.")
|
2022-09-10 21:01:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
@app.post("/casino/twentyone/buy-insurance")
|
2022-09-11 02:05:50 +00:00
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-10 21:01:34 +00:00
|
|
|
def blackjack_player_bought_insurance(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
abort(403, "You are under Rehab award effect!")
|
2022-09-10 21:01:34 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
try:
|
|
|
|
state = dispatch_action(v, BlackjackAction.BUY_INSURANCE)
|
|
|
|
feed = get_game_feed('blackjack')
|
|
|
|
return {"success": True, "state": state, "feed": feed, "gambler": {"coins": v.coins, "procoins": v.procoins}}
|
|
|
|
except:
|
|
|
|
abort(403, "Unable to buy insurance.")
|
2022-09-13 01:07:39 +00:00
|
|
|
|
|
|
|
# Roulette
|
|
|
|
@app.get("/casino/roulette/bets")
|
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-13 01:07:39 +00:00
|
|
|
def roulette_get_bets(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
abort(403, "You are under Rehab award effect!")
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
bets = get_roulette_bets()
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
return {"success": True, "bets": bets, "gambler": {"coins": v.coins, "procoins": v.procoins}}
|
2022-09-13 01:07:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
@app.post("/casino/roulette/place-bet")
|
|
|
|
@limiter.limit("100/minute;2000/hour;12000/day")
|
2022-09-15 22:16:35 +00:00
|
|
|
@auth_required
|
2022-10-11 07:29:24 +00:00
|
|
|
@feature_required('GAMBLING')
|
2022-09-13 01:07:39 +00:00
|
|
|
def roulette_player_placed_bet(v):
|
2022-10-28 23:39:31 +00:00
|
|
|
if v.rehab:
|
|
|
|
abort(403, "You are under Rehab award effect!")
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
try:
|
|
|
|
bet = request.values.get("bet")
|
|
|
|
which = request.values.get("which")
|
|
|
|
amount = int(request.values.get("wager"))
|
|
|
|
currency = request.values.get("currency")
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
if amount < 5:
|
|
|
|
abort(400, f"Minimum bet is 5 {currency}.")
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
gambler_placed_roulette_bet(v, bet, which, amount, currency)
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
bets = get_roulette_bets()
|
2022-09-13 01:07:39 +00:00
|
|
|
|
2022-10-28 23:39:31 +00:00
|
|
|
return {"success": True, "bets": bets, "gambler": {"coins": v.coins, "procoins": v.procoins}}
|
|
|
|
except:
|
|
|
|
abort(400, "Unable to place a bet.")
|