mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-30 07:51:54 +08:00
feat(战斗系统): 添加KukeMC召唤机制及子实体管理
为KukeMC添加召唤子实体KukeChild的功能,并在血量低于25%时自动清除所有子实体并恢复血量 在EntityBase中添加tryKill方法统一处理实体销毁逻辑 在EntityTool中添加按类查找实体的工具方法
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
extends EntityBase
|
||||
class_name KukeChild
|
||||
|
||||
var masterMine: KukeMC
|
||||
|
||||
@@ -12,11 +13,12 @@ func ai():
|
||||
tryAttack(0)
|
||||
tryAttack(1)
|
||||
if timeLived() > 10000:
|
||||
masterMine.tryHeal(100)
|
||||
tryDie(null)
|
||||
tryKill()
|
||||
func attack(type):
|
||||
if type == 0:
|
||||
BulletBase.generate(preload("res://components/Bullets/PurpleCrystalSmall.tscn"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position))
|
||||
await TickTool.millseconds(randi_range(5, 25))
|
||||
elif type == 1:
|
||||
BulletBase.generate(preload("res://components/Bullets/BossAttack/KukeMC/HeavyCrystal.tscn"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position))
|
||||
func kill():
|
||||
masterMine.tryHeal(100)
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
extends EntityBase
|
||||
class_name KukeMC
|
||||
|
||||
var canSummon: bool = true
|
||||
|
||||
func register():
|
||||
fields[FieldStore.Entity.MAX_HEALTH] = 3000
|
||||
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.5
|
||||
@@ -9,6 +11,15 @@ func register():
|
||||
attackCooldownMap[2] = 20000
|
||||
attackCooldownMap[3] = 2000
|
||||
inventory[ItemStore.ItemType.APPLE] = INF
|
||||
healthChanged.connect(
|
||||
func(h):
|
||||
if h < fields[FieldStore.Entity.MAX_HEALTH] * 0.25:
|
||||
canSummon = false
|
||||
for child in EntityTool.findEntityByClass("KukeChild", get_tree()):
|
||||
if child.masterMine == self:
|
||||
child.tryKill()
|
||||
tryHeal(200)
|
||||
)
|
||||
func ai():
|
||||
PresetEntityAI.follow(self, currentFocusedBoss, 500)
|
||||
for bullet in get_tree().get_nodes_in_group("bullets"):
|
||||
@@ -25,7 +36,7 @@ func attack(type):
|
||||
fields[FieldStore.Entity.OFFSET_SHOOT] = 25
|
||||
BulletBase.generate(preload("res://components/Bullets/PurpleCrystal.tscn"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position))
|
||||
await TickTool.millseconds(randi_range(10, 50))
|
||||
elif type == 1 and health < fields[FieldStore.Entity.MAX_HEALTH] * 0.5:
|
||||
elif type == 1 and health < fields[FieldStore.Entity.MAX_HEALTH] * 0.5 and canSummon:
|
||||
for i in randi_range(1, 2):
|
||||
var child = EntityBase.generate(preload("res://components/Characters/KukeChild.tscn"), position + MathTool.randv2_range(500))
|
||||
child.currentFocusedBoss = currentFocusedBoss
|
||||
|
||||
Reference in New Issue
Block a user