2025-11-08 20:19:24 +08:00
|
|
|
extends SummonBase
|
|
|
|
|
|
|
|
|
|
var attackTime: float = 0
|
|
|
|
|
var tracer: EntityBase = null
|
|
|
|
|
|
|
|
|
|
func register():
|
2025-11-08 21:02:54 +08:00
|
|
|
fields[FieldStore.Entity.MAX_HEALTH] = 150
|
2025-11-08 20:28:12 +08:00
|
|
|
fields[FieldStore.Entity.MOVEMENT_SPEED] = 1.5
|
2025-11-08 20:19:24 +08:00
|
|
|
await TickTool.frame()
|
|
|
|
|
attackCooldownMap[0] = attackTime
|
|
|
|
|
func spawn():
|
|
|
|
|
texture.play("walk")
|
|
|
|
|
func ai():
|
|
|
|
|
tryAttack(0)
|
|
|
|
|
if is_instance_valid(tracer):
|
2025-11-08 20:28:12 +08:00
|
|
|
PresetEntityAI.follow(self, tracer, 80)
|
2025-11-08 20:19:24 +08:00
|
|
|
else:
|
|
|
|
|
tracer = EntityTool.findClosetEntity(position, get_tree(), !isPlayer(), isPlayer())
|
|
|
|
|
func attack(type):
|
|
|
|
|
if type == 0:
|
2025-11-08 20:28:12 +08:00
|
|
|
for bullet in BulletBase.generate(
|
2025-11-08 20:19:24 +08:00
|
|
|
ComponentManager.getBullet("HJMAttack"),
|
|
|
|
|
self,
|
|
|
|
|
findWeaponAnchor("normal"),
|
|
|
|
|
0
|
2025-11-08 20:28:12 +08:00
|
|
|
):
|
|
|
|
|
bullet.damage = atk
|