1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-27 22:41:56 +08:00

feat(游戏内容): 添加能量方块角色和矢量核心武器

添加新的能量方块角色实体及其相关资源文件
新增矢量核心武器卡牌配置
调整彩虹糖的数值平衡
修改波次生成逻辑,允许Boss波次生成小怪
修复红水晶子弹在发射者无效时的崩溃问题
This commit is contained in:
2026-04-26 14:02:02 +08:00
parent b94a289b17
commit e2da3ec86e
8 changed files with 62 additions and 6 deletions
+11
View File
@@ -0,0 +1,11 @@
[gd_scene format=3 uid="uid://b5bsvrtu8v2f7"]
[ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_n2ng1"]
[ext_resource type="Script" uid="uid://du30qanswie6y" path="res://scripts/Contents/Characters/EnergyBlock.gd" id="2_h3ykr"]
[node name="EnergyBlock" unique_id=247617339 instance=ExtResource("1_n2ng1")]
script = ExtResource("2_h3ykr")
displayName = "稻草人"
[node name="statebar" parent="." index="4"]
position = Vector2(0, -131)
+22
View File
@@ -0,0 +1,22 @@
[gd_scene format=3 uid="uid://u6ruynxi1qs0"]
[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_mufgq"]
[ext_resource type="Texture2D" uid="uid://d2pndtow16635" path="res://resources/bullets/lgbt-bullet/造型2.svg" id="2_6fmak"]
[ext_resource type="PackedScene" uid="uid://bb1uh8k7gkhr7" path="res://components/Weapons/VectorStar.tscn" id="3_s34ql"]
[node name="VectorStar" unique_id=532465365 instance=ExtResource("1_mufgq")]
avatarTexture = ExtResource("2_6fmak")
displayName = "矢量核心"
quality = 2
topic = 8
weapons = Array[PackedScene]([ExtResource("3_s34ql")])
costs = Array[int]([0, 1])
costCounts = Array[int]([300, 500])
[node name="avatar" parent="container/info" index="0"]
texture = ExtResource("2_6fmak")
[node name="name" parent="container/info" index="1"]
displayName = "矢量核心"
quality = 2
topic = 8
+3 -3
View File
@@ -1,15 +1,15 @@
[gd_scene load_steps=3 format=3 uid="uid://bbhi7yatfmf8h"]
[gd_scene format=3 uid="uid://bbhi7yatfmf8h"]
[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_2x0kp"]
[ext_resource type="Texture2D" uid="uid://ckw0agpwxpdxv" path="res://resources/feeds/rainbow.svg" id="2_xhiuj"]
[node name="RainbowCandy" instance=ExtResource("1_2x0kp")]
[node name="RainbowCandy" unique_id=68887160 instance=ExtResource("1_2x0kp")]
avatarTexture = ExtResource("2_xhiuj")
displayName = "彩虹糖"
quality = 3
topic = 4
fields = Array[int]([1, 5, 6, 13, 7, 3])
fieldValues = Array[float]([0.5, 0.75, 0.3, 3.0, 30.0, -0.8])
fieldValues = Array[float]([0.5, 0.75, 0.3, 3.0, 30.0, -0.65])
costs = Array[int]([0, 3])
costCounts = Array[int]([700, 100])
+1
View File
@@ -13,6 +13,7 @@ func ai():
func destroy(_beacuseMap: bool):
hitbox.shape.radius = radius
EffectController.create(ComponentManager.getEffect("RedCrystalExplosion"), global_position).shot()
if !is_instance_valid(launcher):return
for i in randi_range(1, count):
for bullet in BulletBase.generate(ComponentManager.getBullet("CrystalBlock"), launcher, position, deg_to_rad(randf_range(0, 360))):
if bullet is CrystalBlockBullet:
@@ -0,0 +1,18 @@
extends EntityBase
class_name EnergyBlockEntity
func register():
fields[FieldStore.Entity.MAX_HEALTH] = 5000
hit.connect(
func(damage: float, bullet: BulletBase, _crit: bool):
bullet.launcher.storeEnergy(damage)
)
attackCooldownMap[0] = 0
func ai():
tryAttack(0)
func attack(type: int):
if type == 0:
var track = getTrackingAnchor()
var bullet = BulletTool.findClosetBulletCanDamage(track, get_tree(), self , 200)
if is_instance_valid(bullet):
BulletBase.generate(ComponentManager.getBullet("Parrier"), self , track, track.angle_to_point(bullet.position))
@@ -0,0 +1 @@
uid://du30qanswie6y
+5 -3
View File
@@ -48,10 +48,12 @@ static var WAVE_MOWING = [
Wave.create("Hen", 15, 30, false, 0, INF, 1),
Wave.create("Cat", 15, 30, false, 0, INF, 1),
Wave.create("Dog", 15, 30, false, 0, INF, 1),
Wave.create("MTY", 1, 5, false, 0, INF, 1),
Wave.create("MTY", 0, 2, false, 0, INF, 1),
Wave.create("EnergyBlock", 0, 1, true, 0, INF, 1),
]
static var WAVE_TESTMOB = [
Wave.create("MTY", 1, 1, false, 0, INF, 1)
Wave.create("EnergyBlock", 1, 1, true, 0, INF, 1),
# Wave.create("MTY", 1, 1, false, 0, INF, 1),
]
static var WAVE_EMPTY = []
static var waveReleaseConfig = [WAVE_TESTBOSS, 1]
@@ -90,7 +92,7 @@ static func entityCountOf(wave: Wave) -> int:
if canSpawn(wave):
if wave.isBoss:
return 1
elif !hasBoss():
elif !hasBoss() || GameRule.canSpawnMobWhenBossWave:
return randi_range(ceil(wave.minCount), floor(wave.maxCount * (1 + GameRule.entityCountBoostPerWave * current)))
return 0
static func getNextBossInfo() -> Array:
+1
View File
@@ -22,3 +22,4 @@ static var critRateInfluenceByLuckValue: float = MathTool.percent(2.5) # 幸运
static var penerateRateInfluenceByLuckValue: float = MathTool.percent(3) # 幸运值对穿透率的影响
static var detainTime: float = 250 # 血量如果在这个时间内没有改变才会开始播放降低动画
static var weaponUpdateCost: float = 1.1 # 武器升级后消耗的棒球数量倍数
static var canSpawnMobWhenBossWave: bool = true # Boss波次是否可生成小怪