From 62aa9995a9a79b79131c28113b7aeab823f60b28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Thu, 28 Aug 2025 13:19:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=B8=B8=E6=88=8F=E6=9C=BA=E5=88=B6):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=B8=E8=BF=90=E5=80=BC=E5=AF=B9=E6=8E=89?= =?UTF-8?q?=E8=90=BD=E7=8E=87=E3=80=81=E6=9A=B4=E5=87=BB=E7=8E=87=E5=92=8C?= =?UTF-8?q?=E7=A9=BF=E9=80=8F=E7=8E=87=E7=9A=84=E5=BD=B1=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在GameRule中新增幸运值影响系数,并修改相关计算逻辑: - 幸运值现在会影响苹果掉落率、暴击率和穿透率 - 更新了EntityBase和BulletBase中的相关计算逻辑 - 添加了GameRule中的相关配置参数 --- scripts/Statemachine/BulletBase.gd | 4 ++-- scripts/Statemachine/EntityBase.gd | 6 +++++- scripts/Tools/GameRule.gd | 9 ++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/scripts/Statemachine/BulletBase.gd b/scripts/Statemachine/BulletBase.gd index 2bbc9b3..acc65b3 100644 --- a/scripts/Statemachine/BulletBase.gd +++ b/scripts/Statemachine/BulletBase.gd @@ -54,7 +54,7 @@ func hit(target: Node): if !canDamageSelf && entity == launcher: return if !indisDamage && !GameRule.allowFriendlyFire: if entity.isPlayer() == launcher.isPlayer(): return - entity.takeDamage(self, MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE))) + entity.takeDamage(self, MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE) + GameRule.critRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE])) if MathTool.rate(fullPenerate()): fields[FieldStore.Bullet.PENERATE] -= entity.fields[FieldStore.Entity.PENARATION_RESISTANCE] else: @@ -62,7 +62,7 @@ func hit(target: Node): func forward(direction: Vector2): position += direction.normalized() * fields.get(FieldStore.Bullet.SPEED) * GameRule.bulletSpeedMultiplier func fullPenerate(): - return fields.get(FieldStore.Bullet.PENERATE) + launcher.fields.get(FieldStore.Entity.PENERATE) + return fields.get(FieldStore.Bullet.PENERATE) + launcher.fields.get(FieldStore.Entity.PENERATE) + GameRule.penerateRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE] func timeLived(): return Time.get_ticks_msec() - spawnInWhen func dotLoop(): diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 9f9d44d..34fa3ae 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -198,7 +198,11 @@ func tryDie(by: BulletBase): var count = ceil(randf_range(dropCounts[drop].x, dropCounts[drop].y)) for i in range(count): ItemDropped.generate(item, count, position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset)) - if MathTool.rate(GameRule.appleDropRate + by.launcher.fields.get(FieldStore.Entity.DROP_APPLE_RATE)) or isBoss: + if MathTool.rate( + GameRule.appleDropRate + + by.launcher.fields.get(FieldStore.Entity.DROP_APPLE_RATE) + + GameRule.appleDropRateInfluenceByLuckValue * by.launcher.fields[FieldStore.Entity.LUCK_VALUE] + ) or isBoss: for i in randi_range(appleCount.x, appleCount.y): ItemDropped.generate(ItemStore.ItemType.APPLE, 1, position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset)) await die() diff --git a/scripts/Tools/GameRule.gd b/scripts/Tools/GameRule.gd index 5bf4a02..0c58088 100644 --- a/scripts/Tools/GameRule.gd +++ b/scripts/Tools/GameRule.gd @@ -8,10 +8,10 @@ enum Difficulty { EXPERT, MASTER, } -static var difficulty: Difficulty = Difficulty.NORMAL +static var difficulty: Difficulty = Difficulty.NORMAL # 难度倍数,可以写小数 static var allowFriendlyFire: bool = false # 是否允许友军伤害 static var bulletSpeedMultiplier: float = 1 # 子弹速度倍率 -static var damageOffset: float = 0.2 # 伤害随机浮动比例,默认20%,即10的基础伤害会应用为8~12 +static var damageOffset: float = 0.2 # 伤害随机浮动比例,如20%即10的基础伤害会应用为8~12 static var damageLabelSpawnOffset: float = 10 # 伤害标签生成位置的随机偏移 static var itemDroppedSpawnOffset: float = 30 # 掉落物生成位置的随机偏移 static var appleDropRate: float = 0.1 # 苹果掉落概率 @@ -21,4 +21,7 @@ static var itemShowStayTime: int = 1500 # 物品展示组件如果设置了自 static var tipSpawnRateWhenGetDroppedItem: float = 0.25 # 当玩家获取到掉落物时,提示的概率 static var entityHealthIncreasePerWave: float = 0.05 # 每波敌人生命值增加的百分比,指数级 static var entityDamageIncreasePerWave: float = 0.025 # 每波敌人伤害增加的百分比,指数级 -static var entityLevelOffsetByWave: float = 0.3 # 每波敌人等级根据当前波数随机浮动的比例 \ No newline at end of file +static var entityLevelOffsetByWave: float = 0.3 # 每波敌人等级根据当前波数随机浮动的比例 +static var appleDropRateInfluenceByLuckValue: float = 0.02 # 幸运值对苹果掉率的影响 +static var critRateInfluenceByLuckValue: float = 0.025 # 幸运值对暴击率的影响 +static var penerateRateInfluenceByLuckValue: float = 0.03 # 幸运值对穿透率的影响