2026-05-09 19:43:44 +08:00
|
|
|
extends BulletBase
|
|
|
|
|
class_name InternalDamageBullet
|
|
|
|
|
|
|
|
|
|
var hoster: EntityBase
|
|
|
|
|
|
|
|
|
|
func spawn():
|
|
|
|
|
if is_instance_valid(hoster):
|
|
|
|
|
hoster.died.connect(tryDestroy)
|
|
|
|
|
hoster.hit.connect(
|
|
|
|
|
func(_damage, bullet: BulletBase, _crit):
|
|
|
|
|
if bullet.motionType == BulletBase.MotionType.EXPLOSION:
|
|
|
|
|
hitbox.set_deferred("disabled", false)
|
|
|
|
|
)
|
2026-05-09 20:09:58 +08:00
|
|
|
|
|
|
|
|
static func generateBall(by: EntityBase, who: EntityBase, atk: float):
|
|
|
|
|
var internalDamages = who.getOrCreateCycleTimer("internalDamages", 3000, 150)
|
|
|
|
|
for bullet in BulletBase.generate(
|
|
|
|
|
ComponentManager.getBullet("InternalDamage"),
|
|
|
|
|
by,
|
|
|
|
|
Vector2.ZERO,
|
|
|
|
|
0
|
|
|
|
|
):
|
|
|
|
|
if bullet is InternalDamageBullet:
|
|
|
|
|
bullet.baseDamage = atk
|
|
|
|
|
bullet.hoster = who
|
|
|
|
|
internalDamages.host(bullet)
|