extends NightAction class_name PickPlayerAction #@export var action_verb: String @export var player_must_be_alive: bool = true @export var player_must_be_enemy: bool = false #@export var player_must_be_teams: Array[Team] = [] @export var can_self_target: bool = false func setup(user: Player) -> bool: if team_nightly_action and user.game_state.is_team_night_action_used(user.team): user.send_message("Another member of your team has already used your team's special nightly action.") return false var prompt: Prompt = initial_prompt #prompt.text = "Pick a player to %s:" % action_verb prompt.type = Prompt.PromptType.PLAYER prompt.options.clear() for player in Players.instance.get_players(): var wolf_player: WolfPlayer = player as WolfPlayer #if !player_must_be_teams.is_empty() and !player_must_be_teams.has(wolf_player.team): #continue if player_must_be_alive and !wolf_player.alive: continue if !can_self_target and player == user: continue prompt.options.append(wolf_player.player_name) user.send_action(Action.new(prompt, _prompt_answered)) return true func execute(user: Player) -> bool: if !super.execute(user): return false var wolf_user: WolfPlayer = user as WolfPlayer var target: WolfPlayer = Players.instance.find_player_by_name(wolf_user.night_action_answer) as WolfPlayer return execute_with_target(wolf_user, target) func execute_with_target(user: WolfPlayer, target: WolfPlayer) -> bool: user.add_message_context_dict(target.get_context_dict("target_")) return target.visit(user)