prototype vibe

This commit is contained in:
Marek Lenczewski
2026-04-16 17:20:57 +02:00
parent cf5979803e
commit f21e30eb55
72 changed files with 1330 additions and 70 deletions

View File

@@ -11,6 +11,8 @@ func _process_group(delta: float, data_source: Node) -> void:
if not is_instance_valid(entity) or not data_source.is_alive(entity):
continue
var data: Dictionary = data_source.entities[entity]
if entity.is_in_group("invasion"):
_force_invasion_target(entity, data)
var state: int = data["state"]
match state:
State.IDLE:
@@ -23,12 +25,22 @@ func _process_group(delta: float, data_source: Node) -> void:
State.RETURN:
_return_to_spawn(entity, data, data_source, delta)
func _force_invasion_target(entity: Node, data: Dictionary) -> void:
var tavern: Node = get_tree().get_first_node_in_group("tavern")
if not tavern:
return
data["target"] = tavern
if data["state"] == State.IDLE or data["state"] == State.RETURN:
data["state"] = State.CHASE
func _chase(entity: Node, data: Dictionary, data_source: Node) -> void:
if not is_instance_valid(data["target"]):
data["state"] = State.RETURN
return
var base: EnemyStats = data_source.get_base(entity)
var attack_range: float = base.attack_range
if data["target"].is_in_group("tavern"):
attack_range += 3.0
var dist: float = entity.global_position.distance_to(data["target"].global_position)
if dist <= attack_range:
data["state"] = State.ATTACK
@@ -49,13 +61,17 @@ func _attack(entity: Node, data: Dictionary, data_source: Node, delta: float) ->
data["state"] = State.RETURN
return
var base: EnemyStats = data_source.get_base(entity)
var attack_range: float = base.attack_range
if data["target"].is_in_group("tavern"):
attack_range += 3.0
var dist: float = entity.global_position.distance_to(data["target"].global_position)
if dist > base.attack_range:
if dist > attack_range:
data["state"] = State.CHASE
return
if data["attack_timer"] <= 0:
data["attack_timer"] = base.attack_cooldown
EventBus.damage_requested.emit(entity, data["target"], base.attack_damage)
var scale: float = data.get("scale", 1.0)
EventBus.damage_requested.emit(entity, data["target"], base.attack_damage * scale)
entity.velocity.x = 0
entity.velocity.z = 0