2026-04-02 22:49:34 +08:00
|
|
|
extends BulletBase
|
|
|
|
|
class_name InfinitySwordBullet
|
|
|
|
|
|
2026-04-03 18:29:14 +08:00
|
|
|
var implused: Array[EntityBase] = []
|
2026-05-08 16:31:11 +08:00
|
|
|
var rate2: float = 0
|
2026-04-03 18:29:14 +08:00
|
|
|
|
2026-04-03 20:04:30 +08:00
|
|
|
func spawn():
|
|
|
|
|
CameraManager.shake(2000, 100)
|
2026-04-02 22:49:34 +08:00
|
|
|
func ai():
|
|
|
|
|
PresetBulletAI.forward(self , rotation)
|
2026-04-03 18:29:14 +08:00
|
|
|
func succeedToHit(_dmg: float, entity: EntityBase):
|
|
|
|
|
if implused.has(entity): return
|
|
|
|
|
else:
|
|
|
|
|
implused.append(entity)
|
|
|
|
|
entity.impluse(Vector2.from_angle(rotation) * 1500)
|
2026-04-03 19:37:51 +08:00
|
|
|
var eff = EffectController.create(ComponentManager.getEffect("ShootBlood"), entity.position)
|
|
|
|
|
eff.particles.hide()
|
|
|
|
|
eff.shot()
|
2026-05-08 16:31:11 +08:00
|
|
|
func hitBullet(bullet: BulletBase):
|
|
|
|
|
if !is_instance_valid(launcher): return
|
|
|
|
|
if BulletTool.canDamage(bullet, launcher):
|
|
|
|
|
baseDamage *= rate2 ** bullet.getDamage()
|
2026-05-09 20:09:58 +08:00
|
|
|
InternalDamageBullet.generateBall(launcher, bullet.launcher, sqrt(baseDamage))
|