Tales-of-PKMN/game/pokemon/pokemon_nature.gd

28 lines
1,007 B
GDScript

class_name PokemonNature
extends RefCounted
enum Stat { HP, ATTACK, DEFENSE, SP_ATTACK, SP_DEFENSE, SPEED }
#meme ordre que dans les jeux officiels (25 natures)
enum Nature {
HARDY, LONELY, BRAVE, ADAMANT, NAUGHTY,
BOLD, DOCILE, RELAXED, IMPISH, LAX,
TIMID, HASTY, SERIOUS, JOLLY, NAIVE,
MODEST, MILD, QUIET, BASHFUL, RASH,
CALM, GENTLE, SASSY, CAREFUL, QUIRKY,
}
#ordre des stats dans la table des natures : index // 5 = stat augmentee, index % 5 = stat diminuee
#(si les deux sont identiques, la nature est neutre)
const _STAT_ORDER : Array[int] = [Stat.ATTACK, Stat.DEFENSE, Stat.SPEED, Stat.SP_ATTACK, Stat.SP_DEFENSE]
static func get_multiplier(nature : Nature, stat : Stat) -> float:
var up_idx : int = floori(int(nature) / 5.0)
var down_idx : int = int(nature) % 5
if up_idx == down_idx: return 1.0
if stat == _STAT_ORDER[up_idx]: return 1.1
if stat == _STAT_ORDER[down_idx]: return 0.9
return 1.0
static func random_nature() -> Nature:
return Nature.values().pick_random() as Nature