82 lines
3.2 KiB
Python
82 lines
3.2 KiB
Python
import random
|
|
|
|
from funcs import logThis
|
|
from .loveletterDraw import DrawLove
|
|
|
|
class LoveLetter():
|
|
def __init__(self,bot):
|
|
self.bot = bot
|
|
self.draw = DrawLove(bot)
|
|
|
|
# Parses command
|
|
def parseLove(self, command, channel, user, userchannel):
|
|
commands = command.lower().split()
|
|
game = self.bot.database["loveletter games"].find_one({"_id":channel})
|
|
|
|
if command == "" or command == " ":
|
|
logThis(str(user)+" created a Love Letter game with loveStart(). ")
|
|
return self.loveStart(channel)
|
|
|
|
# If using a command with no game, return error
|
|
elif game == None:
|
|
return "There's no game in this channel", False, False
|
|
|
|
# Joining the game
|
|
elif commands[0] == "join":
|
|
if game["round"] == 0:
|
|
if user not in game["player hands"]:
|
|
# Deal cards
|
|
card = game["deck"].pop()
|
|
username = self.bot.funcs.getName(user)
|
|
game["player hands"][username] = card
|
|
game["discard piles"][username] = []
|
|
game["user channel"][username] = userchannel # Used for direct (private) messages to the users
|
|
self.bot.database["loveletter games"].replace_one({"_id":channel},game)
|
|
return username+" joined the game! Type \"!loveletter begin\" once all players have joined.", False, False
|
|
else:
|
|
return "You're already playing!", False, False
|
|
else:
|
|
return "It's too late to join", False, False
|
|
|
|
# Beginning the game
|
|
elif commands[0] == "begin":
|
|
if user in game["player hands"]:
|
|
if len(game["player hands"]) > 1:
|
|
pass
|
|
else:
|
|
return "AI functionality hasn't been implemented yet. Get another player to join!", False, False
|
|
else:
|
|
return "You can't begin a game, when you're not a player!", False, False
|
|
|
|
# Stopping the game
|
|
elif commands[0] == "stop":
|
|
if user in game["player hands"]:
|
|
return "Ending game.", False, False
|
|
else:
|
|
return "You can't end a game where you're not a player.", False, False
|
|
|
|
else:
|
|
return "I didn't get that. Use \"!loveletter\" to start a game or \"!loveletter join\" to join a game. ", False, False
|
|
|
|
# Starts the game
|
|
def loveStart(self, channel):
|
|
game = self.bot.database["loveletter games"].find_one({"_id":channel})
|
|
|
|
if game == None:
|
|
|
|
|
|
deck = [1,1,1,1,1, 2,2, 3,3, 4,4, 5,5, 6, 7, 8]
|
|
random.shuffle(deck)
|
|
cardAside = deck[0]
|
|
del deck[0] # The card that is set aside
|
|
|
|
newGame = {"_id":channel,"player hands": {},"discard piles":{},"deck":deck,"round":0,"cardAside":cardAside}
|
|
|
|
self.bot.database["loveletter games"].insert_one(newGame)
|
|
|
|
return ""
|
|
else:
|
|
logThis("There's already a Love Letter game going on in this channel",str(channel))
|
|
return "There's already a Love Letter game going on in this channel"
|
|
|