extends BulletBase class_name MagicMissleBullet var powerScale: int = 3 var speedV2: Vector2 = Vector2.ZERO var accelerating: bool = true var roundBullets: Array[MagicMissleBullet] func ai(): if accelerating: if roundBullets.count(self ) < 1: accelerating = false rotation = lerp_angle(rotation, position.angle_to_point(launcher.currentFocusedPosition), 0.1) speedV2 += (launcher.currentFocusedPosition - position).normalized() * 1 elif speed < 1 || baseDamage < 1: tryDestroy() speedV2 *= 0.995 speed = speedV2.length() PresetBulletAI.forward(self , speedV2.angle()) func succeedToHit(_dmg: float, entity: EntityBase): if !accelerating: entity.takeDamage(baseDamage, true) if powerScale > 0 && accelerating && roundBullets.count(self ) > 0: for i in randi_range(1, powerScale): for bullet in BulletBase.generate( ComponentManager.getBullet("MagicMissle"), launcher, position, entity.position.angle_to_point(position) + PI + randf_range(-1, 1) * deg_to_rad(60) ): if bullet is MagicMissleBullet: bullet.position += Vector2.from_angle(bullet.rotation) * 100 bullet.speedV2 += Vector2.from_angle(bullet.rotation) * 20 bullet.roundBullets = roundBullets bullet.powerScale = powerScale - 1 bullet.baseDamage = baseDamage roundBullets.append(bullet) powerScale = 0 animator.play("hit")