4
0
Fork 0
WolfBox/scripts/werewolf/night_actions/pick_player_action.gd

40 lines
1.5 KiB
GDScript3
Raw Normal View History

2025-06-21 14:36:09 +01:00
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)