def eat_player(g, user_id, *args): """ ex. *args = (['kill', 'maksym'], ) arg_list = target_name = args[1] user_name = u.id_dict.get(user_id) """ arg_list = args[0] if len(arg_list) < 1: # no target no good return "Have to pick a target.", None elif len(arg_list) > 2: # too many args return "Not a valid command.", None else: u = UserMap() # get usermap target_name = arg_list[1] target_id = u.get(name=target_name) # turn name into id result, message = is_valid_action(user_id, 'kill', g, target_name=target_name) if not result: # was not a valid kill return message, None else: # player is eaten # update state # changes targeted player's status to dead new_g = update_game_state(g, 'player_status', player=target_id, status='dead') # tell the players. eaten_str = "%s was eaten." % (target_name) return resolve_night_round(new_g, alert=eaten_str), None
def night_kill(game_state, user_id, *args): """Night kill the selected player.""" arg_list = args[0] print arg_list print len(arg_list) if len(arg_list) < 1: return "Have to pick a target.", None elif len(arg_list) > 2: return "Not a valid command.", None else: user_map = UserMap() target_name = arg_list[1] target_id = user_map.get(name=target_name) result, message = is_valid_action(user_id, 'night_kill', game_state, target_name=target_name) if not result: return message, None else: new_game = update_game_state(game_state, 'player_status', player=target_id, status='dead') eaten_str = "%s was night killed." % (target_name) return resolve_night_round(new_game, alert=eaten_str), None
def player_vote(g, user_id, *args): """ ex. *args = (['vote', 'maksym'], ) arg_list = args[0] target_name = arg_list[1] user_name = u.id_dict.get(user_id) """ arg_list = args[0] if len(arg_list) < 1: # didn't vote return "Have to vote FOR someone.", None elif len(arg_list) > 2: # too many args return "Not a valid command.", None else: target_name = arg_list[1] target_id = u.get(name=target_name) # turn name into id result, message = is_valid_action(user_id, 'vote', g, target_name=target_name) if not result: # was not a valid kill return message, None else: # player voted # update state # change votes to reflect their vote new_g = update_game_state(g, 'vote', voter=user_id, votee=target_id) # after each vote need to check if total # everyone has voted. if did_everyone_vote(new_g): # resolve vote round result_id = resolve_votes(new_g) if result_id: # result is id of player # set player status to dead. result_name = u.get(user_id=result_id) new_g_2 = update_game_state(new_g, 'player_status', player=result_id, status='dead') # have to reset all the votes new_g_3 = update_game_state(new_g_2, 'reset_votes') # tell the players. lynch_str = "%s was lynched." % (result_name) # pass in game state before votes reset. return resolve_day_round(new_g_2, alert=lynch_str), None else: # list votes returns a tuple ('str', None) return resolve_day_round(new_g, alert='*No one dies.*'), None else: # valid vote, but not everyone voted yet. # suggestion to list vote summary every vote. return list_votes(new_g)[0] + '\n\n' + message return message, None
def player_vote(game_state, user_id, *args): """Update the game_state with a players lynch vote.""" user_map = UserMap() arg_list = args[0] if len(arg_list) < 1: return "Have to vote FOR someone.", None elif len(arg_list) > 2: return "Not a valid command.", None else: target_name = arg_list[1] target_id = user_map.get(name=target_name) result, message = is_valid_action(user_id, 'vote', game_state, target_name=target_name) if not result: return message, None else: new_game = update_game_state(game_state, 'vote', voter=user_id, votee=target_id) if status.did_everyone_vote(new_game): result_id = resolve_votes(new_game) if result_id: result_name = user_map.get(user_id=result_id) set_deaths_in_game_state = update_game_state(new_game, 'player_status', player=result_id, status='dead') reset_game_votes = update_game_state(set_deaths_in_game_state, 'reset_votes') lynch_str = "%s was lynched." % (result_name) return resolve_day_round(set_deaths_in_game_state, alert=lynch_str), None else: return resolve_day_round(new_game, alert='*No one dies.*'), None else: return list_votes(new_game)[0] + '\n\n' + message, None return message, None
def seer_peek_player(game_state, user_id, *args): """Seer can peek a players role during the night.""" user_map = UserMap() arg_list = args[0] if len(arg_list) < 1: return "Have to pick a target.", None elif len(arg_list) > 2: return "Not a valid command.", None else: target_name = arg_list[1] target_id = user_map.get(name=target_name) result, message = is_valid_action(user_id, 'peek', game_state, target_name=target_name) if not result: return message, None else: player_channel = user_map.get(user_id=user_id, DM=True) send_message(message, channel=player_channel) return "", None