way too many changes to list, oops. big rewrite.

This commit is contained in:
2025-05-27 03:38:03 +10:00
parent 16951a9beb
commit 4a21701a35
663 changed files with 7389 additions and 3283 deletions

View File

@ -0,0 +1,14 @@
class_name Affector extends Node
var damage_particle_scene: PackedScene = preload("res://Scenes/damage_particle.tscn")
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
pass
func spawn_damage_indicator(damage: int, pos: Vector3) -> void:
var marker: Sprite3D = damage_particle_scene.instantiate()
get_tree().root.add_child(marker)
marker.set_number(damage)
marker.position = pos

View File

@ -0,0 +1 @@
uid://5gl7yyrvjeow

View File

@ -0,0 +1,13 @@
class_name AreaAffector extends Affector
@export var shapecast: ShapeCast3D
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
for i: int in shapecast.get_collision_count():
var enemy: EnemyController = shapecast.get_collider(i) as EnemyController
#print(shapecast.get_collider(i))
if targets.has(enemy):
enemy.apply_effect(effect)
if Data.preferences.display_tower_damage_indicators and effect.damage > 0:
spawn_damage_indicator(effect.damage, enemy.sprite.global_position)

View File

@ -0,0 +1 @@
uid://duvfverjdqodj

View File

@ -0,0 +1,8 @@
class_name DirectAffect extends Affector
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
for enemy: EnemyController in targets:
enemy.apply_effect(effect)
if Data.preferences.display_tower_damage_indicators and effect.damage > 0:
spawn_damage_indicator(effect.damage, enemy.sprite.global_position)

View File

@ -0,0 +1 @@
uid://8d0a4uc2i0ti

View File

@ -0,0 +1,21 @@
class_name SpawnAffect extends Affector
@export var spawn_scene: PackedScene
@export var tower: Tower
var force: float = 150.0
var projectile_id: int = 0
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
for target: EnemyController in targets:
var projectile: Projectile = spawn_scene.instantiate() as Projectile
if projectile is HomingProjectile:
projectile.target = target
projectile.position = tower.yaw_model.global_position
projectile.effect = effect
projectile.direction = -tower.yaw_model.global_transform.basis.z
projectile.force = force
projectile.name = tower.base_name + str(tower.owner_id) + str(projectile_id)
get_tree().root.add_child(projectile)
projectile_id += 1

View File

@ -0,0 +1 @@
uid://ccu1u6nqkjxki