1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-06-01 00:41:54 +08:00

feat: 添加新武器彩虹旗和紫水晶簇,调整饲料属性和数值

refactor: 重构子弹生成逻辑,支持分裂和折射效果

fix: 修复掉落物拾取范围和碰撞检测问题

style: 优化UI显示,添加武器品质和类型标签

docs: 更新字段描述,调整部分饲料名称和分类

perf: 优化数学工具函数,添加随机数处理工具

test: 调整波次生成逻辑,添加新敌人类型

build: 添加新资源文件和相关导入配置
This commit is contained in:
2025-09-05 22:23:41 +08:00
parent bb279c99b0
commit d4501ae45d
54 changed files with 974 additions and 109 deletions
+17 -1
View File
@@ -7,4 +7,20 @@ static func fromHurtbox(node: Node) -> EntityBase:
var entity = texture.get_parent()
if entity is EntityBase:
return entity as EntityBase
return null
return null
static func findClosetEntity(to: Vector2, fromTree: SceneTree, player: bool = false, mob: bool = false, excludes: Array[EntityBase] = []) -> EntityBase:
var result = null
var lastDistance = INF
var nodes = []
if player:
nodes += fromTree.get_nodes_in_group("players")
if mob:
nodes += fromTree.get_nodes_in_group("mobs")
for entity in nodes:
if entity is EntityBase and entity not in excludes:
if to.distance_to(entity.position) < lastDistance:
lastDistance = to.distance_to(entity.position)
result = entity
return result
static func findClosetPlayer(to: Vector2, fromTree: SceneTree, excludes: Array[EntityBase] = []) -> EntityBase:
return findClosetEntity(to, fromTree, true, false, excludes)
+9 -3
View File
@@ -28,7 +28,9 @@ enum Entity {
LUCK_VALUE,
SAVE_ENERGY,
ENERGY_REGENERATION,
DROPPED_ITEM_COLLECT_RADIUS
DROPPED_ITEM_COLLECT_RADIUS,
BULLET_SPLIT,
BULLET_REFRACTION
}
static var entityMap = {
Entity.MAX_HEALTH: "生命上限",
@@ -44,7 +46,7 @@ static var entityMap = {
Entity.ENERGY_MULTIPILER: "储能倍率",
Entity.PENARATION_RESISTANCE: "穿透抗性",
Entity.PRICE_REDUCTION: "饲料降价",
Entity.EXTRA_BULLET_COUNT: "额外子弹",
Entity.EXTRA_BULLET_COUNT: "多重射击",
Entity.DROP_APPLE_RATE: "苹果掉落率",
Entity.FEED_COUNT_SHOW: "饲料列表",
Entity.FEED_COUNT_CAN_MADE: "可制作饲料",
@@ -53,6 +55,8 @@ static var entityMap = {
Entity.SAVE_ENERGY: "节能",
Entity.ENERGY_REGENERATION: "能量再生效率",
Entity.DROPPED_ITEM_COLLECT_RADIUS: "掉落物拾取距离",
Entity.BULLET_SPLIT: "分裂",
Entity.BULLET_REFRACTION: "折射",
}
static var entityMapType = {
Entity.MAX_HEALTH: DataType.VALUE,
@@ -77,6 +81,8 @@ static var entityMapType = {
Entity.SAVE_ENERGY: DataType.PERCENT,
Entity.ENERGY_REGENERATION: DataType.PERCENT,
Entity.DROPPED_ITEM_COLLECT_RADIUS: DataType.VALUE,
Entity.BULLET_SPLIT: DataType.VALUE,
Entity.BULLET_REFRACTION: DataType.VALUE,
}
static var entityMaxValueMap = {
Entity.CRIT_RATE: 0.8,
@@ -96,7 +102,7 @@ static var entityApplier = {
return true
,
Entity.EXTRA_BULLET_COUNT: func(entity, value):
entity.fields[Entity.OFFSET_SHOOT] += value * 5
entity.fields[Entity.OFFSET_SHOOT] += value * 3
return true
,
}
+3 -1
View File
@@ -1,6 +1,6 @@
class_name MathTool
static func rate(value: float):
static func rate(value: float) -> bool:
return randf() < value
static func randv2_range(offset: float):
return Vector2(
@@ -13,3 +13,5 @@ static func signBeforeStr(value: float):
return ("+" if value > 0 else "-" if value < 0 else "") + str(abs(value))
static func percent(value: float):
return value / 100
static func shrimpRate(value: float):
return floor(value) + int(rate(value - floor(value)))
+9
View File
@@ -7,3 +7,12 @@ static func smallText(text: String, center: bool = true):
if center:
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
return label
static func graySmallText(text: String, center: bool = true):
var label = Label.new()
label.text = text
label.label_settings = LabelSettings.new()
label.label_settings.font_size = 12
label.label_settings.font_color = Color(0.6, 0.6, 0.6, 1)
if center:
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
return label