def instant_death(user_id, role, deathType, answer=Mailbox().log(''), recursive=''): """Eliminate the given user.""" # If the user was reporter or mayor, get rid of that. if dy.get_mayor() == user_id: dy.kill_mayor() answer.remove_proms(user_id) if dy.get_reporter() == user_id: dy.kill_reporter() answer.remove_proms(user_id) for channel_id in db.get_secret_channels("Graveyard"): answer.edit_cc(channel_id, user_id, 1) # Change all channel settings for channel_id in db.channel_change_all(user_id, 1, 4): answer.edit_cc(channel_id, user_id, 4) for channel_id in db.channel_change_all(user_id, 2, 4): answer.edit_cc(channel_id, user_id, 4) for channel_id in db.channel_change_all(user_id, 5, 4): answer.edit_cc(channel_id, user_id, 4) # Change abducted settings for channel_id in db.channel_change_all(user_id, 3, 7): answer.edit_cc(channel_id, user_id, 7) for channel_id in db.channel_change_all(user_id, 6, 7): answer.edit_cc(channel_id, user_id, 7) for channel_id in db.get_secret_channels("Market"): answer.edit_cc(channel_id, user_id, 4) for channel_id in db.get_secret_channels("Reporter"): if int(db_get(user_id, 'undead')) == 1: answer.msg( "{} - <@{}> had the role of the `Undead`!".format( db_get(user_id, 'emoji'), user_id), channel_id) else: answer.msg( "{} - <@{}> had the role of the `{}`!".format( db_get(user_id, 'emoji'), user_id, db_get(user_id, 'role')), channel_id) # Kill that user already! db_set(user_id, 'role', 'Dead') db_set(user_id, 'fakerole', 'Dead') answer.spam(unip + 'kill <@{}>'.format(user_id)) if int(db_get(user_id, 'abducted')) != 1 and role not in ["Barber"]: db.insert_deadie(user_id, deathType) # Kill all standoffs for taker in db.get_standoff(user_id): answer = attack(taker[1], taker[2], taker[3], answer, recursive) return answer
def day(): """Start the second part of the day. The function assumes all polls have been evaluated, and that looking after attacks can begin. The function returns a Mailbox.""" threat = db.get_kill() answer = Mailbox().log("**Results from night attacks:**") if dy.get_stage() == "Day": return Mailbox().respond("Sure, man. Whatever.") while threat != None: answer = roles.attack(threat[1], threat[2], threat[3], answer) threat = db.get_kill() for player in db.player_list(True): # Give potential day uses user_role = db_get(player, 'role') for i in range(len(roles.day_users)): if user_role in roles.day_users[i]: # Give one-time users their one-time power if i == 0: if dy.day_number() == 0: db_set(player, 'uses', 1) break db_set(player, 'uses', i) answer.msg(power.power(user_role), db_get(player, 'channel')) break answer.story(morning.story_time(db.get_deadies())) db.delete_deadies() db.delete_hookers() # Add polls if dy.day_number() != 0: answer.new_poll(dy.voting_booth(), 'lynch', '', story_text('lynch')) if dy.get_mayor() == 0: answer.new_poll(dy.voting_booth(), 'Mayor', '', story_text('Mayor')) elif dy.get_reporter() == 0: answer.new_poll(dy.voting_booth(), 'Reporter', '', story_text('Reporter')) dy.next_day() dy.set_stage('Day') answer.log("```Day {}```".format(dy.day_number())) return answer