Update move importer
This commit is contained in:
parent
35ec4a6a49
commit
8d18965c5a
|
|
@ -15,8 +15,50 @@ extends Resource
|
|||
@export var priority : int
|
||||
@export var target : String
|
||||
|
||||
@export_group("Effets")
|
||||
## Probabilite (en %) de l'effet secondaire, telle que donnee par PokeAPI (0 = non precisee).
|
||||
@export var effect_chance : int
|
||||
## Categorie d'effet PokeAPI : "damage", "ailment", "net-good-stats", "heal", "damage+ailment",
|
||||
## "swagger", "damage+lower", "damage+raise", "damage+heal", "ohko", "whole-field-effect",
|
||||
## "field-effect", "force-switch", "unique".
|
||||
@export var meta_category : String
|
||||
## Statut inflige : "none", "paralysis", "burn", "freeze", "poison", "sleep", "confusion",
|
||||
## "infatuation", "trap", "leech-seed", "yawn"...
|
||||
@export var ailment : String = "none"
|
||||
## Probabilite (en %) d'infliger le statut. 0 sur une capacite de statut = toujours (voir get_ailment_chance).
|
||||
@export var ailment_chance : int
|
||||
@export var flinch_chance : int
|
||||
## Probabilite (en %) d'appliquer stat_changes. 0 sur une capacite de statut = toujours (voir get_stat_chance).
|
||||
@export var stat_chance : int
|
||||
@export var stat_changes : Array[StatChange] = []
|
||||
## Nombre de coups (capacites multi-coups) ; 0 = non precise (un seul coup).
|
||||
@export var min_hits : int
|
||||
@export var max_hits : int
|
||||
## Duree en tours (capacites qui durent) ; 0 = non precise.
|
||||
@export var min_turns : int
|
||||
@export var max_turns : int
|
||||
## % des degats infliges rendus a l'utilisateur (positif) ou subis en contrecoup (negatif).
|
||||
@export var drain : int
|
||||
## % des PV max soignes (positif) ou perdus (negatif).
|
||||
@export var healing : int
|
||||
## Bonus de taux de critique (0 = normal ; 1 = eleve ; 6 = toujours critique).
|
||||
@export var crit_rate : int
|
||||
|
||||
func get_display_name() -> String:
|
||||
return L10n.pick(names, api_name.capitalize())
|
||||
|
||||
func get_description() -> String:
|
||||
return L10n.pick(descriptions)
|
||||
|
||||
## Le statut est-il applique avec certitude ? (capacite de statut pure : PokeAPI laisse alors 0)
|
||||
func get_ailment_chance() -> int:
|
||||
if ailment == "none": return 0
|
||||
return 100 if (ailment_chance <= 0 and category == "status") else ailment_chance
|
||||
|
||||
## Les changements de stats sont-ils appliques avec certitude ?
|
||||
func get_stat_chance() -> int:
|
||||
if stat_changes.is_empty(): return 0
|
||||
return 100 if (stat_chance <= 0 and category == "status") else stat_chance
|
||||
|
||||
func is_multi_hit() -> bool:
|
||||
return max_hits > 1
|
||||
|
|
|
|||
9
data/stat_change.gd
Normal file
9
data/stat_change.gd
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# data/stat_change.gd
|
||||
@tool
|
||||
class_name StatChange
|
||||
extends Resource
|
||||
|
||||
## Un changement de statistique provoque par une capacite (ex. Attaque +2, Vitesse -1).
|
||||
|
||||
@export var stat : String # "attack", "defense", "special-attack", "special-defense", "speed", "accuracy", "evasion"
|
||||
@export var change : int # positif = hausse, negatif = baisse
|
||||
1
data/stat_change.gd.uid
Normal file
1
data/stat_change.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://ctw1mbfnw2jcr
|
||||
|
|
@ -53,4 +53,29 @@ func _import_move(entry : Dictionary) -> void:
|
|||
m.pp = PokeApiJson.get_int(j, "pp")
|
||||
m.priority = PokeApiJson.get_int(j, "priority")
|
||||
m.target = PokeApiJson.get_dict_name(j, "target")
|
||||
m.effect_chance = PokeApiJson.get_int(j, "effect_chance")
|
||||
|
||||
# effets : PokeAPI les range dans "meta" (absent sur certaines capacites) et "stat_changes"
|
||||
var meta := PokeApiJson.get_dict(j, "meta")
|
||||
m.meta_category = PokeApiJson.get_dict_name(meta, "category")
|
||||
m.ailment = PokeApiJson.get_dict_name(meta, "ailment", "none")
|
||||
m.ailment_chance = PokeApiJson.get_int(meta, "ailment_chance")
|
||||
m.flinch_chance = PokeApiJson.get_int(meta, "flinch_chance")
|
||||
m.stat_chance = PokeApiJson.get_int(meta, "stat_chance")
|
||||
m.min_hits = PokeApiJson.get_int(meta, "min_hits")
|
||||
m.max_hits = PokeApiJson.get_int(meta, "max_hits")
|
||||
m.min_turns = PokeApiJson.get_int(meta, "min_turns")
|
||||
m.max_turns = PokeApiJson.get_int(meta, "max_turns")
|
||||
m.drain = PokeApiJson.get_int(meta, "drain")
|
||||
m.healing = PokeApiJson.get_int(meta, "healing")
|
||||
m.crit_rate = PokeApiJson.get_int(meta, "crit_rate")
|
||||
|
||||
var changes : Array[StatChange] = []
|
||||
for move_entry in PokeApiJson.get_array(j, "stat_changes"):
|
||||
var sc := StatChange.new()
|
||||
sc.stat = PokeApiJson.get_dict_name(move_entry, "stat")
|
||||
sc.change = PokeApiJson.get_int(move_entry, "change")
|
||||
if sc.stat != "" and sc.change != 0: changes.append(sc)
|
||||
m.stat_changes = changes
|
||||
|
||||
ResourceSaver.save(m, path)
|
||||
|
|
|
|||
Loading…
Reference in a new issue