forked from Nekojimi/JackIt
40 lines
1.5 KiB
GDScript
40 lines
1.5 KiB
GDScript
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)
|