diff --git a/scripts/Area.gd b/scripts/Area.gd new file mode 100644 index 0000000..96f9cc8 --- /dev/null +++ b/scripts/Area.gd @@ -0,0 +1,5 @@ +class_name Area +extends Sprite2D + + +# defines the parameters for spawning enemies within an area diff --git a/scripts/ability.gd b/scripts/ability.gd new file mode 100644 index 0000000..994015a --- /dev/null +++ b/scripts/ability.gd @@ -0,0 +1,5 @@ +class_name Ability +extends Sprite2D + + +# basis for the 6 abilities diff --git a/scripts/abilityA1.gd b/scripts/abilityA1.gd new file mode 100644 index 0000000..50a1310 --- /dev/null +++ b/scripts/abilityA1.gd @@ -0,0 +1,5 @@ +class_name AbilityA1 +extends Ability + + +# defines the unique characteristics of the A1 abilities diff --git a/scripts/enemy.gd b/scripts/enemy.gd new file mode 100644 index 0000000..3cb1f90 --- /dev/null +++ b/scripts/enemy.gd @@ -0,0 +1,50 @@ +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 diff --git a/scripts/zone.gd b/scripts/zone.gd new file mode 100644 index 0000000..9d9dc28 --- /dev/null +++ b/scripts/zone.gd @@ -0,0 +1,5 @@ +class_name Zone +extends Sprite2D + + +# zone class defines all parameters for creating areas within itself