34 lines
1.4 KiB
GDScript
34 lines
1.4 KiB
GDScript
class_name BattleEncounter
|
|
extends Resource
|
|
|
|
#description d'une rencontre : qui est en face et sous quel format.
|
|
#a assigner dans l'inspecteur d'un AimTarget (champ "Encounter").
|
|
#exemples :
|
|
# - 1v1 sauvage : wild_pokemon = [1 entree]
|
|
# - 1 contre plusieurs sauvages : wild_pokemon = [3 entrees]
|
|
# - dresseur : trainer = un TrainerData, can_flee = false
|
|
# - combat double : player_slots = 2 et trainer_slots = 2
|
|
# - plusieurs contre 1 (boss) : player_slots = 3 et une seule entree adverse
|
|
|
|
@export_group("Adversaires")
|
|
@export var trainer : TrainerData
|
|
@export_range(1, 3) var trainer_slots : int = 1 #pokemon que le dresseur envoie en meme temps
|
|
@export var wild_pokemon : Array[TrainerPartyEntry] = [] #chaque entree = un adversaire (1 emplacement)
|
|
|
|
@export_group("Joueur")
|
|
@export_range(1, 3) var player_slots : int = 1 #pokemon du joueur envoyes en meme temps
|
|
|
|
@export_group("Regles")
|
|
@export var can_flee : bool = true #mets false pour un combat de dresseur
|
|
@export var remove_world_actor_on_win : bool = true #fait disparaitre le pokemon/dresseur du monde apres la victoire
|
|
|
|
func build_participants() -> Array[BattleParticipant]:
|
|
var result : Array[BattleParticipant] = []
|
|
if trainer != null:
|
|
result.append(BattleSetup.trainer_participant(trainer, trainer_slots))
|
|
for entry in wild_pokemon:
|
|
if entry == null: continue
|
|
var pokemon : PokemonInstance = entry.create_instance()
|
|
if pokemon != null: result.append(BattleSetup.wild_participant(pokemon))
|
|
return result
|