def vote(): # 1) Make sure player who made the command # is in the game if not player_in_game(g, user_id): return False, MSG['u_not_in_game'] # is alive if not is_player_alive(g, user_id): return False, MSG['u_not_alive'] # only valid during day if get_current_round(g) != 'day': return False, MSG['not_day'] # if target_name=pass is okay if target_name == 'pass': return True, user_name + ' wants to pass.' # target is in game if not player_in_game(g, target_id): return False, MSG['t_not_in_game'] # target is alive if not is_player_alive(g, target_id): return False, MSG['t_not_alive'] # voting again just changes your vote. if has_voted(g, user_id): return True, user_name + ' changed vote to ' + '*'+target_name + '.*' # after each success vote should list all votes. return True, user_name + ' voted for ' + '*' + target_name + '.*'
def vote(user_id, action, game_state, target_name): user_map = UserMap() target_id = user_map.get(name=target_name) user_name = user_map.get(user_id) if not status.player_in_game(game_state, user_id): return False, RESPONSE['u_not_in_game'] if not status.is_player_alive(game_state, user_id): return False, RESPONSE['u_not_alive'] if status.get_current_round(game_state) != 'day': return False, RESPONSE['not_day'] if target_name == 'pass': return True, user_name + RESPONSE['pass'] if not status.player_in_game(game_state, target_id): return False, RESPONSE['t_not_in_game'] if not status.is_player_alive(game_state, target_id): return False, RESPONSE['t_not_alive'] if status.has_voted(game_state, user_id): return True, user_name + ' changed vote to ' + '*' + target_name + '*' return True, user_name + ' voted for ' + '*' + target_name + '*'
def peek(user_id, action, game_state, target_name): user_map = UserMap() role_map = { 's': "the Seer", 'w': "a wolf", 'v': "a vanilla villa", 'a': "the Angel" } target_id = user_map.get(name=target_name) user_name = user_map.get(user_id) if not status.player_in_game(game_state, user_id): return False, RESPONSE['noop'] if not status.is_player_alive(game_state, user_id): return False, RESPONSE['dead_villa'] #if status.get_current_round(game_state) != 'night': # return False, RESPONSE['noop'] if status.player_role(game_state, user_id) != 's': return False, RESPONSE['not_seer'] target_role = status.player_role(game_state, target_id) target_str = RESPONSE['peek'] return True, target_name + "'s role is " + role_map[target_role]
def can_join():#idk dont want to override join() # status is WAITING_FOR_JOIN if g.get('STATUS') != 'WAITING_FOR_JOIN': return False, MSG['not_waiting'] # Not already in the game if player_in_game(g, user_id): return False, MSG['already_join'] return True, None
def should_user_join_game(user_id, action, game_state): """Check if user can join game.""" if game_state.get('STATUS') != 'WAITING_FOR_JOIN': return False, RESPONSE['not_waiting'] if status.player_in_game(game_state, user_id): return False, RESPONSE['already_joined'] return True, None
def kill(): # 1) Make sure player who made the command # is in the game if not player_in_game(g,user_id): return False, 'Not allowed.' # 1a) is a werewolf # Only werewolf can use kill. (for now) if player_role(g, user_id) != 'w': return False, 'Not allowed.' # 1c) is alive if not is_player_alive(g, user_id): return False, 'Dead wolves can not kill.' # 2) Kill command only valid at night. if get_current_round(g) != 'night': return False, 'Not allowed.' # 3) Target must be in game. if not player_in_game(g, target_id): return False, 'Not allowed.' # 4) Target must be alive. if not is_player_alive(g, target_id): return False, 'Not allowed.' return True, '' # no message
def night_kill(user_id, action, game_state, target_name): user_map = UserMap() target_id = user_map.get(name=target_name) user_name = user_map.get(user_id) if not status.player_in_game(game_state, user_id): return False, RESPONSE['noop'] #if status.player_role(game_state, user_id) != 'w': # return False, RESPONSE['noop'] if not status.is_player_alive(game_state, user_id): return False, 'Dead wolves can not kill.' #if status.get_current_round(game_state) != 'night': # return False, RESPONSE['noop'] if not status.player_in_game(game_state, target_id): return False, RESPONSE['noop'] if not status.is_player_alive(game_state, target_id): return False, RESPONSE['noop'] return True, ""