class_name NPC extends Character enum npcDifficulties { MINION, NORMAL, ELITE, BOSS, ELITEBOSS, BBEG } enum npcTiers { I, II, III, IV, V, VI, VII, VIII, IX, X } @export var npcDifficulty: npcDifficulties @export var npcTier: npcTiers func _random_mod_health() -> void: randomize() # noise factor var noise_factor = randf_range(7, 10) self.maxHealth *= noise_factor # difficulty factor match self.npcDifficulty: npcDifficulties.MINION: self.maxHealth /= 2 npcDifficulties.ELITE: self.maxHealth *= 2 npcDifficulties.BOSS: self.maxHealth *= 4 npcDifficulties.ELITEBOSS: self.maxHealth *= 8 npcDifficulties.BBEG: self.maxHealth *= 16 # npcTier factor self.maxHealth *= exp(self.npcTier) # fun factor (just additional factor to tweak) self.maxHealth *= 10 func _init() -> void: self.npcDifficulty = npcDifficulties.NORMAL self.npcTier = npcTiers.I func _ready() -> void: # add to enemies add_to_group("enemies") # modify max health value based on the various factors _random_mod_health() func _process(delta: float) -> void: # if damageTaken > maxHealth: # self.free()? # send signal that I died to be counted, etc. pass