2025-11-15 19:33:10 +08:00
|
|
|
extends BulletBase
|
|
|
|
|
class_name Volcano
|
|
|
|
|
|
2025-11-22 08:01:31 +08:00
|
|
|
@onready var textureSword: Sprite2D = $%textureSword
|
|
|
|
|
@onready var anchor: Node2D = $%anchor
|
|
|
|
|
|
2025-11-15 19:33:10 +08:00
|
|
|
var rotates: float = 0
|
2025-11-22 16:36:59 +08:00
|
|
|
var count: int = 0
|
|
|
|
|
var dmg5: float = 0
|
|
|
|
|
var splitAngle: float = 10
|
2025-11-15 19:33:10 +08:00
|
|
|
|
2026-05-11 22:11:31 +08:00
|
|
|
func spawn():
|
|
|
|
|
setupCuttable(0.2)
|
2025-11-15 19:33:10 +08:00
|
|
|
func ai():
|
2026-04-25 13:28:43 +08:00
|
|
|
PresetBulletAI.lockLauncher(self , launcher, true)
|
2025-11-16 12:43:20 +08:00
|
|
|
rotation = lerp_angle(
|
|
|
|
|
rotation,
|
2026-04-25 13:28:43 +08:00
|
|
|
position.angle_to_point(launcher.currentFocusedPosition),
|
2025-11-16 12:43:20 +08:00
|
|
|
rotates
|
|
|
|
|
)
|
2026-05-10 22:30:22 +08:00
|
|
|
func succeedToHit(_dmg: float, entity: EntityBase):
|
2026-05-11 22:11:31 +08:00
|
|
|
entity.impluse((entity.getTrackingAnchor() - position).normalized() * 400)
|
2026-05-10 22:30:22 +08:00
|
|
|
ParryEntityEffect.createEffectEntity(entity, self )
|
2025-11-22 08:01:31 +08:00
|
|
|
|
|
|
|
|
func generateShadow():
|
2025-11-22 16:36:59 +08:00
|
|
|
var startAngle = rotation - deg_to_rad(count * splitAngle / 2)
|
|
|
|
|
for i in count:
|
|
|
|
|
for bullet in BulletBase.generate(
|
|
|
|
|
ComponentManager.getBullet("VolcanoShadow"),
|
|
|
|
|
launcher,
|
|
|
|
|
position,
|
|
|
|
|
startAngle + i * deg_to_rad(splitAngle),
|
2026-01-18 14:12:34 +08:00
|
|
|
true,
|
|
|
|
|
true
|
2025-11-22 16:36:59 +08:00
|
|
|
):
|
|
|
|
|
if bullet is VolcanoShadow:
|
|
|
|
|
bullet.baseDamage = baseDamage * dmg5
|