2025-11-06 22:26:15 +08:00
|
|
|
extends SummonBase
|
|
|
|
|
|
|
|
|
|
var maxTraceTime: float = 0
|
|
|
|
|
var tracePower: float = 0
|
2025-11-07 22:31:51 +08:00
|
|
|
var count: int = 0
|
|
|
|
|
var angle: float = 0
|
2025-11-06 22:26:15 +08:00
|
|
|
|
|
|
|
|
func register():
|
2025-11-08 21:02:54 +08:00
|
|
|
fields[FieldStore.Entity.MAX_HEALTH] = 200
|
2025-11-07 22:31:51 +08:00
|
|
|
attackCooldownMap[0] = 1000
|
2025-11-06 22:26:15 +08:00
|
|
|
func ai():
|
|
|
|
|
tryAttack(0)
|
|
|
|
|
func attack(type):
|
|
|
|
|
if type == 0:
|
2025-11-06 22:42:01 +08:00
|
|
|
var tracer = EntityTool.findClosetEntity(position, get_tree(), false, true)
|
2025-11-07 22:34:13 +08:00
|
|
|
var startAngle = position.angle_to_point(tracer.getTrackingAnchor()) + deg_to_rad(randf_range(-1, 1) * 45)
|
2025-11-07 22:31:51 +08:00
|
|
|
for i in count:
|
|
|
|
|
if !is_instance_valid(tracer):
|
|
|
|
|
break
|
|
|
|
|
for bullet in BulletBase.generate(
|
|
|
|
|
ComponentManager.getBullet("LGBTBullet"),
|
|
|
|
|
myMaster,
|
|
|
|
|
findWeaponAnchor("normal"),
|
|
|
|
|
startAngle + deg_to_rad(i * angle)
|
|
|
|
|
):
|
|
|
|
|
bullet.tracer = tracer
|
|
|
|
|
bullet.damage = atk
|
|
|
|
|
bullet.maxTraceTime = maxTraceTime
|
|
|
|
|
bullet.tracePower = tracePower
|
|
|
|
|
await TickTool.millseconds(50)
|