Merge branch 'frost' of https://github.com/Aevann1/rDrama into frost
|
@ -1,61 +1,59 @@
|
|||
/*common*/
|
||||
:root {
|
||||
--muted: #666 ;
|
||||
--black: #444;
|
||||
--primary: #b40457;
|
||||
--grey1: #888;
|
||||
--grey2: #999;
|
||||
--upvote: #ff8b60;
|
||||
--muted: #666;
|
||||
--black: #444;
|
||||
--bgc: white;
|
||||
--primary: #b40457;
|
||||
--grey: #888;
|
||||
--upvote: #ff8b60;
|
||||
--downvote: #9393ff;
|
||||
--sticky: #228822;
|
||||
}
|
||||
|
||||
body {
|
||||
background-image: url(/i/classic2.webp);
|
||||
background-image: url(/i/classic2.webp);
|
||||
background-color: var(--bgc) !important;
|
||||
}
|
||||
|
||||
* {
|
||||
border-color: var(--muted) !important;
|
||||
border-color: var(--muted) !important;
|
||||
}
|
||||
|
||||
#frontpage .container, #thread .container {
|
||||
max-width: 2160px;
|
||||
max-width: 2160px;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
background-color: white;
|
||||
border-radius: 0px;
|
||||
margin-top: 0;
|
||||
margin-right: 0;
|
||||
background-color: var(--bgc);
|
||||
border-radius: 0px;
|
||||
margin-top: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.no-gutters {
|
||||
margin-top: 1rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
background-color: white !important
|
||||
#mobile-bottom-navigation-bar, .navbar {
|
||||
background-color: var(--bgc) !important;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: var(--primary) !important;
|
||||
color:white;
|
||||
background-color: var(--primary) !important;
|
||||
color:white;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
background-color: white;
|
||||
background-color: var(--bgc);
|
||||
}
|
||||
|
||||
.dropdown-item i {
|
||||
color: var(--muted) !important;
|
||||
}
|
||||
|
||||
#mobile-bottom-navigation-bar {
|
||||
background-color: white !important;
|
||||
color: var(--muted) !important;
|
||||
}
|
||||
|
||||
input, textarea, .form-control {
|
||||
background-color:white !important;
|
||||
background-color: var(--bgc) !important;
|
||||
border: 1px solid;
|
||||
}
|
||||
|
||||
/*decoration*/
|
||||
|
@ -71,10 +69,6 @@ input, textarea, .form-control {
|
|||
color: var(--muted);
|
||||
}
|
||||
|
||||
.pronouns {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.fa-thumbtack.text-admin {
|
||||
color: var(--sticky);
|
||||
}
|
||||
|
@ -84,86 +78,82 @@ input, textarea, .form-control {
|
|||
}
|
||||
|
||||
.tooltip {
|
||||
background-color:white;
|
||||
background-color: var(--bgc);
|
||||
}
|
||||
|
||||
/*front page*/
|
||||
a.btn-block[href~="/submit"] {
|
||||
display:none;
|
||||
display:none;
|
||||
}
|
||||
|
||||
.sorting {
|
||||
float:left !important;
|
||||
padding-top: 5px !important;
|
||||
float:left !important;
|
||||
padding-top: 5px !important;
|
||||
}
|
||||
|
||||
#frontpage #main-content-col .row:first-child {
|
||||
background-image: url(/i/classic1.webp);
|
||||
background-position:center;
|
||||
background-repeat: repeat-x;
|
||||
margin-top: -12px;
|
||||
margin-bottom:-15px;
|
||||
background-image: url(/i/classic1.webp);
|
||||
background-position:center;
|
||||
background-repeat: repeat-x;
|
||||
margin-top: -12px;
|
||||
margin-bottom:-15px;
|
||||
}
|
||||
|
||||
.sorting .btn {
|
||||
color: white;
|
||||
text-shadow: -1px -1px 0 black,1px -1px 0 black,-1px 1px 0 black,1px 1px 0 black;
|
||||
border:none;
|
||||
color: white;
|
||||
text-shadow: -1px -1px 0 black,1px -1px 0 black,-1px 1px 0 black,1px 1px 0 black;
|
||||
border:none;
|
||||
}
|
||||
|
||||
#frontpage .sorting .text-primary {
|
||||
color: yellow !important;
|
||||
text-decoration: underline;
|
||||
background-color:transparent !important;
|
||||
color: yellow !important;
|
||||
text-decoration: underline;
|
||||
background-color:transparent !important;
|
||||
}
|
||||
|
||||
#frontpage #dropdownMenuButton, #frontpage #dropdownMenuButton2, .sorting .dropdown i {
|
||||
color: yellow;
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
.card {
|
||||
border-color: var(--grey2) !important;
|
||||
border-color: var(--grey) !important;
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
background-color: white
|
||||
background-color: var(--bgc);
|
||||
}
|
||||
|
||||
#frontpage .post-title a:not(:visited) {
|
||||
color: #369;
|
||||
color: #369;
|
||||
}
|
||||
|
||||
#frontpage .card.stickied .post-title a {
|
||||
color: var(--sticky);
|
||||
color: var(--sticky);
|
||||
}
|
||||
|
||||
/*posts*/
|
||||
#thread .container, #thread .card {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
@media (min-width: 992px){
|
||||
#thread #main-content-col {
|
||||
padding-left:3rem;
|
||||
padding-right: 3rem;
|
||||
}
|
||||
#thread #main-content-col {
|
||||
padding-left:3rem;
|
||||
padding-right: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
.comment-section, .comment {
|
||||
background-color: white;
|
||||
background-color: var(--bgc);
|
||||
}
|
||||
|
||||
blockquote {
|
||||
background-color: var(--grey1);
|
||||
color: white;
|
||||
background-color: var(--grey);
|
||||
color: white;
|
||||
}
|
||||
|
||||
/*userpage*/
|
||||
.jumbotron {
|
||||
color: var(--grey2);
|
||||
color: var(--grey);
|
||||
}
|
||||
|
||||
/*casino*/
|
||||
#casino-game-wrapper .row-cols-1, #casino-game-wrapper .row-cols-2 {
|
||||
background-image: none !important;
|
||||
background-image: none !important;
|
||||
}
|
||||
|
|
|
@ -1,222 +1,7 @@
|
|||
@import 'classic.css?v=4005';
|
||||
@import 'classic.css?v=4010';
|
||||
|
||||
/*navbar*/
|
||||
.navbar-light, .navbar .container-fluid, #mobile-bottom-navigation-bar {
|
||||
background-color: var(--black2) !important;
|
||||
:root {
|
||||
--muted: #999 !important;
|
||||
--black: #999 !important;
|
||||
--bgc: #222 !important;
|
||||
}
|
||||
|
||||
.form-inline.search input {
|
||||
background-color: var(--black1) !important;
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
color: var(--white) !important;
|
||||
box-shadow: inset 0 -2px 0 var(--white) !important;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
color: var(--gray) !important;
|
||||
}
|
||||
|
||||
/*common*/
|
||||
body, .card, #main-content-row {
|
||||
background-color: var(--black2) !important;
|
||||
/*background-image: var(--bg2);*/
|
||||
color: var(--white);
|
||||
}
|
||||
|
||||
.posts .card {
|
||||
border-color: var(--black3) !important;
|
||||
}
|
||||
|
||||
.arrow-up::before, .arrow-down::before, .score {
|
||||
color: var(--black1);
|
||||
}
|
||||
|
||||
.post-title a {
|
||||
color: var(--gray) !important;
|
||||
}
|
||||
|
||||
.flaggers, .flaggers a {
|
||||
background-color: var(--black2) !important;
|
||||
color: var(--black1) !important;
|
||||
border-color: var(--gray);
|
||||
}
|
||||
|
||||
.dropdown-menu, .dropdown-menu a {
|
||||
color: var(--gray);
|
||||
background-color: var(--black2);
|
||||
}
|
||||
|
||||
.popover, .pop-username, .pop-bio, .popover-user-profile, .popover-user-profile * {
|
||||
background-color: var(--black2);
|
||||
color: var(--gray);
|
||||
border-color: var(--black1) !important;
|
||||
}
|
||||
|
||||
.text-muted {
|
||||
color: var(--gray) !important;
|
||||
}
|
||||
|
||||
/*frontpage*/
|
||||
#frontpage .sidebar {
|
||||
background-color: var(--black2) !important;
|
||||
color: var(--gray);
|
||||
}
|
||||
|
||||
#frontpage .dropdown .btn {
|
||||
background-color:transparent !important;
|
||||
color:yellow;
|
||||
text-shadow: -1px -1px 0 black, 1px -1px 0 black, -1px 1px 0 black, 1px 1px 0 black !important;
|
||||
border-color: transparent;
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
#frontpage .dropdown-toggle, #frontpage i.fas.mr-1 {
|
||||
color:yellow !important;
|
||||
}
|
||||
|
||||
/*post*/
|
||||
.post-meta, .post-actions a, .post-actions button, .nav-link .fas, label, small, .comment-actions * {
|
||||
color: var(--gray) !important;
|
||||
}
|
||||
|
||||
.comment, .comment-text, .comment-section, .comment-body, .post-body {
|
||||
background-color: var(--black2);
|
||||
color: var(--gray) !important;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 2px solid #c5c1ad !important;
|
||||
background-color: var(--black3) !important;
|
||||
color: var(--gray) !important;
|
||||
}
|
||||
|
||||
.form-control, .comment-box.form-control.rounded {
|
||||
background-color: var(--black2) !important;
|
||||
color: var(--black1) !important;
|
||||
}
|
||||
|
||||
#thread #dropdownMenuButton {
|
||||
background-color: var(--red) !important;
|
||||
color: white !important;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.btn.format {
|
||||
background-color: transparent !important;
|
||||
color: var(--black1) !important;
|
||||
border-color: transparent !important;
|
||||
}
|
||||
|
||||
/*leaderboard*/
|
||||
#settings2 .bg-white {
|
||||
background-color: var(--black2) !important;
|
||||
}
|
||||
|
||||
/*submit*/
|
||||
#submit .row.fixed-bottom {
|
||||
background-color: var(--black2) !important
|
||||
}
|
||||
|
||||
/*assorted patches I don't feel like categorizing*/
|
||||
#followers-table td {
|
||||
color: var(--black1);
|
||||
}
|
||||
|
||||
#mobile-bottom-navigation-bar .text-primary {
|
||||
color: var(--red) !important;
|
||||
}
|
||||
|
||||
#mobile-bottom-navigation-bar .text-muted {
|
||||
color: var(--black1) !important;
|
||||
}
|
||||
|
||||
#settings2 .nav-link.active .fas {
|
||||
color: var(--gray) !important;
|
||||
}
|
||||
|
||||
#navbarResponsive .nav-link {
|
||||
color: var(--black1) !important;
|
||||
}
|
||||
|
||||
.mobile-nav-icon {
|
||||
color: var(--black1);
|
||||
}
|
||||
|
||||
/*patch*/
|
||||
#settings2 .text-muted {
|
||||
color: var(--black3)!important;
|
||||
}
|
||||
|
||||
.btn-primary:hover, .btn-secondary:hover {
|
||||
background-color: var(--red-hover) !important;
|
||||
color: white!important;
|
||||
border-color: var(--red-hover)
|
||||
}
|
||||
|
||||
.dropdown-menu a:hover {
|
||||
color: var(--red);
|
||||
background-color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#navbarResponsive .nav-link:hover i {
|
||||
color: var(--red) !important;
|
||||
}
|
||||
|
||||
.btn-secondary:focus, .btn-secondary.focus {
|
||||
box-shadow: none;
|
||||
background-color: white!important;
|
||||
color: var(--red)!important;
|
||||
border-color: var(--red);
|
||||
}
|
||||
|
||||
a.nav-link:hover {
|
||||
color: white !important
|
||||
}
|
||||
|
||||
.nav.settings-nav {
|
||||
border: 1px solid var(--red-hover)
|
||||
}
|
||||
|
||||
#thread .anchor.comment {
|
||||
border-left: 2px solid var(--black1)!important;
|
||||
}
|
||||
|
||||
.notifs .comment-collapse-desktop {
|
||||
border-left: 2px solid var(--black1)!important;
|
||||
}
|
||||
|
||||
.srd {
|
||||
background-color: var(--black3) !important
|
||||
}
|
||||
|
||||
#navbar .form-control.w-100 {
|
||||
color: var(--white) !important;
|
||||
}
|
||||
|
||||
/*chat*/
|
||||
.chat-message {
|
||||
color: var(--white) !important;
|
||||
}
|
||||
|
||||
.sidebar
|
||||
{
|
||||
background-color: #202020 !important;
|
||||
border-radius: 0px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
background-color: var(--black2);
|
||||
}
|
||||
|
||||
.tooltip-inner {
|
||||
color: #d8d8d8 !important;
|
||||
background-color: #313131 !important;
|
||||
}
|
||||
|
||||
h5.post-title a:visited {
|
||||
color: #6e6e6e !important;
|
||||
}
|
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 7.1 KiB |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 21 KiB |
|
@ -173,6 +173,35 @@ class User(Base):
|
|||
def __repr__(self):
|
||||
return f"<User(id={self.id}, username={self.username})>"
|
||||
|
||||
def pay_account(self, currency, amount):
|
||||
if currency == 'coins':
|
||||
g.db.query(User).filter(User.id == self.id).update({ User.coins: User.coins + amount })
|
||||
else:
|
||||
g.db.query(User).filter(User.id == self.id).update({ User.procoins: User.procoins + amount })
|
||||
|
||||
g.db.flush()
|
||||
|
||||
|
||||
def charge_account(self, currency, amount):
|
||||
in_db = g.db.query(User).filter(User.id == self.id).one()
|
||||
succeeded = False
|
||||
|
||||
if currency == 'coins':
|
||||
account_balance = in_db.coins
|
||||
|
||||
if account_balance >= amount:
|
||||
g.db.query(User).filter(User.id == self.id).update({ User.coins: User.coins - amount })
|
||||
succeeded = True
|
||||
elif currency == 'procoins':
|
||||
account_balance = in_db.procoins
|
||||
|
||||
if account_balance >= amount:
|
||||
g.db.query(User).filter(User.id == self.id).update({ User.procoins: User.procoins - amount })
|
||||
succeeded = True
|
||||
|
||||
if succeeded: g.db.flush()
|
||||
|
||||
return succeeded
|
||||
|
||||
@property
|
||||
@lazy
|
||||
|
|
|
@ -71,15 +71,11 @@ def get_active_roulette_games():
|
|||
|
||||
|
||||
def charge_gambler(gambler, amount, currency):
|
||||
currency_gambler_holds = getattr(gambler, currency)
|
||||
can_afford = currency_gambler_holds >= amount
|
||||
charged = gambler.charge_account(currency, amount)
|
||||
|
||||
if not can_afford:
|
||||
if not charged:
|
||||
raise Exception("Gambler cannot afford charge.")
|
||||
|
||||
setattr(gambler, currency, currency_gambler_holds - amount)
|
||||
g.db.add(gambler)
|
||||
|
||||
|
||||
def gambler_placed_roulette_bet(gambler, bet, which, amount, currency):
|
||||
if not bet in (
|
||||
|
@ -172,10 +168,8 @@ def spin_roulette_wheel():
|
|||
coin_winnings = gambler_payout['coins']
|
||||
procoin_winnings = gambler_payout['procoins']
|
||||
|
||||
setattr(gambler, 'coins', gambler.coins + coin_winnings)
|
||||
setattr(gambler, 'procoins', gambler.procoins + procoin_winnings)
|
||||
|
||||
g.db.add(gambler)
|
||||
gambler.pay_account('coins', coin_winnings)
|
||||
gambler.pay_account('procoins', procoin_winnings)
|
||||
|
||||
# Notify the winners.
|
||||
notification_text = f"Winning number: {number}\nCongratulations! One or more of your roulette bets paid off!\n"
|
||||
|
|
|
@ -18,22 +18,16 @@ payout_to_symbols = {
|
|||
def casino_slot_pull(gambler, wager_value, currency):
|
||||
over_min = wager_value >= minimum_bet
|
||||
under_max = wager_value <= maximum_bet
|
||||
currency_value = getattr(gambler, currency)
|
||||
has_proper_funds = currency_value >= wager_value
|
||||
|
||||
if (over_min and under_max and has_proper_funds):
|
||||
setattr(gambler, currency, currency_value - wager_value)
|
||||
gambler.winnings -= wager_value
|
||||
charged = gambler.charge_account(currency, wager_value)
|
||||
|
||||
if (over_min and under_max and charged):
|
||||
payout = determine_payout()
|
||||
reward = wager_value * payout
|
||||
|
||||
currency_value = getattr(gambler, currency, 0)
|
||||
setattr(gambler, currency, currency_value + reward)
|
||||
gambler.winnings += reward
|
||||
gambler.pay_account(currency, reward)
|
||||
|
||||
symbols = build_symbols(payout)
|
||||
text = build_text(wager_value, payout, currency)
|
||||
|
||||
game_state = {
|
||||
"symbols": symbols,
|
||||
"text": text
|
||||
|
|
|
@ -80,15 +80,11 @@ def get_active_twentyone_game_state(gambler):
|
|||
|
||||
|
||||
def charge_gambler(gambler, amount, currency):
|
||||
currency_gambler_holds = getattr(gambler, currency)
|
||||
can_afford = currency_gambler_holds >= amount
|
||||
|
||||
if not can_afford:
|
||||
charged = gambler.charge_account(currency, amount)
|
||||
|
||||
if not charged:
|
||||
raise Exception("Gambler cannot afford charge.")
|
||||
|
||||
setattr(gambler, currency, currency_gambler_holds - amount)
|
||||
g.db.add(gambler)
|
||||
|
||||
|
||||
def create_new_game(gambler, wager, currency):
|
||||
existing_game = get_active_twentyone_game(gambler)
|
||||
|
@ -245,12 +241,10 @@ def handle_payout(gambler, state, game):
|
|||
else:
|
||||
raise Exception("Attempted to payout a game that has not finished.")
|
||||
|
||||
currency_gambler_holds = getattr(gambler, game.currency)
|
||||
setattr(gambler, game.currency, currency_gambler_holds + payout)
|
||||
|
||||
gambler.pay_account(game.currency, payout)
|
||||
|
||||
game.active = False
|
||||
g.db.add(game)
|
||||
g.db.add(gambler)
|
||||
|
||||
return payout
|
||||
|
||||
|
|
|
@ -144,11 +144,10 @@ def approve_marsey(v, name):
|
|||
new_path = f'/asset_submissions/marseys/original/{name}.{i.format.lower()}'
|
||||
rename(highquality, new_path)
|
||||
|
||||
if v.id != author.id:
|
||||
author.coins += 250
|
||||
g.db.add(author)
|
||||
msg = f"@{v.username} has approved a marsey you made: :{marsey.name}:\nYou have received 250 coins as a reward!"
|
||||
send_repeatable_notification(author.id, msg)
|
||||
author.coins += 250
|
||||
g.db.add(author)
|
||||
msg = f"@{v.username} has approved a marsey you made: :{marsey.name}:\nYou have received 250 coins as a reward!"
|
||||
send_repeatable_notification(author.id, msg)
|
||||
|
||||
if v.id not in (author.id, marsey.submitter_id):
|
||||
msg = f"@{v.username} has approved a marsey you submitted: :{marsey.name}:"
|
||||
|
@ -341,4 +340,4 @@ def remove_hat(v, name):
|
|||
os.remove(f"/asset_submissions/hats/{hat.name}.webp")
|
||||
os.remove(f"/asset_submissions/hats/{hat.name}")
|
||||
|
||||
return {"message": f"'{hat.name}' removed!"}
|
||||
return {"message": f"'{hat.name}' removed!"}
|
||||
|
|
|
@ -205,4 +205,4 @@ def roulette_player_placed_bet(v):
|
|||
|
||||
return {"success": True, "bets": bets, "gambler": {"coins": v.coins, "procoins": v.procoins}}
|
||||
except:
|
||||
return {"error": "Unable to place a bet."}, 400
|
||||
return {"error": "Unable to place a bet."}, 400
|
||||
|
|
|
@ -3,8 +3,8 @@ set CACHE_VER = {
|
|||
'css/main.css': 4025,
|
||||
'css/catalog.css': 4007,
|
||||
'css/4chan.css': 4007,
|
||||
'css/classic.css': 4009,
|
||||
'css/classic_dark.css': 4007,
|
||||
'css/classic.css': 4010,
|
||||
'css/classic_dark.css': 4008,
|
||||
'css/coffee.css': 4007,
|
||||
'css/dark.css': 4007,
|
||||
'css/dramblr.css': 4007,
|
||||
|
|