mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-07-11 12:32:54 +08:00
feat(游戏机制): 添加幸运值对掉落率、暴击率和穿透率的影响
在GameRule中新增幸运值影响系数,并修改相关计算逻辑: - 幸运值现在会影响苹果掉落率、暴击率和穿透率 - 更新了EntityBase和BulletBase中的相关计算逻辑 - 添加了GameRule中的相关配置参数
This commit is contained in:
@@ -54,7 +54,7 @@ func hit(target: Node):
|
|||||||
if !canDamageSelf && entity == launcher: return
|
if !canDamageSelf && entity == launcher: return
|
||||||
if !indisDamage && !GameRule.allowFriendlyFire:
|
if !indisDamage && !GameRule.allowFriendlyFire:
|
||||||
if entity.isPlayer() == launcher.isPlayer(): return
|
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()):
|
if MathTool.rate(fullPenerate()):
|
||||||
fields[FieldStore.Bullet.PENERATE] -= entity.fields[FieldStore.Entity.PENARATION_RESISTANCE]
|
fields[FieldStore.Bullet.PENERATE] -= entity.fields[FieldStore.Entity.PENARATION_RESISTANCE]
|
||||||
else:
|
else:
|
||||||
@@ -62,7 +62,7 @@ func hit(target: Node):
|
|||||||
func forward(direction: Vector2):
|
func forward(direction: Vector2):
|
||||||
position += direction.normalized() * fields.get(FieldStore.Bullet.SPEED) * GameRule.bulletSpeedMultiplier
|
position += direction.normalized() * fields.get(FieldStore.Bullet.SPEED) * GameRule.bulletSpeedMultiplier
|
||||||
func fullPenerate():
|
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():
|
func timeLived():
|
||||||
return Time.get_ticks_msec() - spawnInWhen
|
return Time.get_ticks_msec() - spawnInWhen
|
||||||
func dotLoop():
|
func dotLoop():
|
||||||
|
|||||||
@@ -198,7 +198,11 @@ func tryDie(by: BulletBase):
|
|||||||
var count = ceil(randf_range(dropCounts[drop].x, dropCounts[drop].y))
|
var count = ceil(randf_range(dropCounts[drop].x, dropCounts[drop].y))
|
||||||
for i in range(count):
|
for i in range(count):
|
||||||
ItemDropped.generate(item, count, position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset))
|
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):
|
for i in randi_range(appleCount.x, appleCount.y):
|
||||||
ItemDropped.generate(ItemStore.ItemType.APPLE, 1, position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset))
|
ItemDropped.generate(ItemStore.ItemType.APPLE, 1, position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset))
|
||||||
await die()
|
await die()
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ enum Difficulty {
|
|||||||
EXPERT,
|
EXPERT,
|
||||||
MASTER,
|
MASTER,
|
||||||
}
|
}
|
||||||
static var difficulty: Difficulty = Difficulty.NORMAL
|
static var difficulty: Difficulty = Difficulty.NORMAL # 难度倍数,可以写小数
|
||||||
static var allowFriendlyFire: bool = false # 是否允许友军伤害
|
static var allowFriendlyFire: bool = false # 是否允许友军伤害
|
||||||
static var bulletSpeedMultiplier: float = 1 # 子弹速度倍率
|
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 damageLabelSpawnOffset: float = 10 # 伤害标签生成位置的随机偏移
|
||||||
static var itemDroppedSpawnOffset: float = 30 # 掉落物生成位置的随机偏移
|
static var itemDroppedSpawnOffset: float = 30 # 掉落物生成位置的随机偏移
|
||||||
static var appleDropRate: float = 0.1 # 苹果掉落概率
|
static var appleDropRate: float = 0.1 # 苹果掉落概率
|
||||||
@@ -22,3 +22,6 @@ static var tipSpawnRateWhenGetDroppedItem: float = 0.25 # 当玩家获取到掉
|
|||||||
static var entityHealthIncreasePerWave: float = 0.05 # 每波敌人生命值增加的百分比,指数级
|
static var entityHealthIncreasePerWave: float = 0.05 # 每波敌人生命值增加的百分比,指数级
|
||||||
static var entityDamageIncreasePerWave: float = 0.025 # 每波敌人伤害增加的百分比,指数级
|
static var entityDamageIncreasePerWave: float = 0.025 # 每波敌人伤害增加的百分比,指数级
|
||||||
static var entityLevelOffsetByWave: float = 0.3 # 每波敌人等级根据当前波数随机浮动的比例
|
static var entityLevelOffsetByWave: float = 0.3 # 每波敌人等级根据当前波数随机浮动的比例
|
||||||
|
static var appleDropRateInfluenceByLuckValue: float = 0.02 # 幸运值对苹果掉率的影响
|
||||||
|
static var critRateInfluenceByLuckValue: float = 0.025 # 幸运值对暴击率的影响
|
||||||
|
static var penerateRateInfluenceByLuckValue: float = 0.03 # 幸运值对穿透率的影响
|
||||||
|
|||||||
Reference in New Issue
Block a user