2024-10-13 20:43:25 -06:00
|
|
|
class_name Enemy
|
|
|
|
extends NPC
|
2024-10-13 20:42:32 -06:00
|
|
|
|
|
|
|
|
|
|
|
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
|