1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-31 08:21:54 +08:00

feat(召唤系统): 实现彩虹旗召唤物及相关功能

添加SummonBase作为召唤物基类,实现LGBTFlag召唤物
修改LGBTWeapon从发射子弹改为召唤彩虹旗
在ComponentManager中添加召唤物管理功能
更新公鸡角色预设使用彩虹旗武器
This commit is contained in:
2025-11-06 22:26:15 +08:00
parent 5efa92f5df
commit a273f644d2
11 changed files with 81 additions and 33 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ class_name LGBTBullet
var tracer: EntityBase = null
var maxTraceTime: float = 0
var tracePower: float
var tracePower: float = 0
func register():
speed = 1
+22
View File
@@ -0,0 +1,22 @@
extends SummonBase
var atk: float = 0
var maxTraceTime: float = 0
var tracePower: float = 0
func register():
fields[FieldStore.Entity.MAX_HEALTH] = 100
attackCooldownMap[0] = 500
func ai():
tryAttack(0)
func attack(type):
if type == 0:
for bullet in BulletBase.generate(
ComponentManager.getBullet("LGBTBullet"),
self,
findWeaponAnchor("normal"),
position.angle_to_point(EntityTool.findClosetEntity(position, get_tree(), false, true).position)
):
bullet.damage = atk
bullet.maxTraceTime = maxTraceTime
bullet.tracePower = tracePower
+1
View File
@@ -0,0 +1 @@
uid://11fi3jjdm810
+4 -12
View File
@@ -4,20 +4,12 @@ class_name LGBTWeapon
func update(to: int, origin: Dictionary, _entity: EntityBase):
origin["atk"] += 5 * to * soulLevel
origin["count"] += to * soulLevel
origin["power"] += 0.05 * to * soulLevel
origin["trace"] += 0.25 * to * soulLevel
origin["angle"] /= 1 + 0.05 * to * soulLevel
return origin
func attack(entity: EntityBase):
var weaponPos = entity.findWeaponAnchor("normal")
var facingAngle = (get_global_mouse_position() - weaponPos).angle()
var startAngle = facingAngle - deg_to_rad(readStore("angle") * (readStore("count") / 2))
for i in range(int(readStore("count"))):
for j in BulletBase.generate(ComponentManager.getBullet("LGBTBullet"), entity, weaponPos, startAngle + deg_to_rad(readStore("angle") * i)):
var bullet: LGBTBullet = j
bullet.damage = readStore("atk")
bullet.tracer = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer())
bullet.maxTraceTime = readStore("trace") * 1000
bullet.tracePower = readStore("power")
var summon = entity.summon(ComponentManager.getSummon("LGBTFlag"))
summon.atk = readStore("atk")
summon.maxTraceTime = readStore("trace") * 1000
summon.tracePower = readStore("power")
return true