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

feat(武器): 新增道教石像武器及无为子弹

添加道教石像武器资源文件、脚本和场景配置
实现无为子弹的碰撞检测和动画效果
调整树武器的伤害计算方式,现在基于格挡率
优化游戏波次配置,调整敌人数量和出现时机
修复初始选择面板在发布模式下的逻辑问题
This commit is contained in:
2026-04-02 22:39:29 +08:00
parent 4727e26218
commit 01ab16ed9f
16 changed files with 275 additions and 19 deletions
+2 -2
View File
@@ -21,13 +21,13 @@ func spawn():
eff.texture.sprite_frames = frames
eff.shot()
func succeedToHit(_dmg: float, entity: EntityBase):
if parryiedTimes < maxParryTimes:
if parryiedTimes < maxParryTimes && MathTool.rate(parryRate):
parryiedTimes += 1
var effSpawn = entity.texture.global_position
var eff = EffectController.create(ComponentManager.getEffect("ParryEntity"), effSpawn)
eff.rotation = position.angle_to_point(effSpawn)
eff.shot()
entity.impluse((effSpawn - position).normalized() * 600)
entity.impluse((effSpawn - position).normalized() * 450)
func hitBullet(bullet: BulletBase): # 当前子弹与其他子弹相撞
if BulletTool.canDamage(bullet, launcher): # 其他子弹可以使当前子弹的发射者受伤吗?
if parryiedTimes < maxParryTimes && MathTool.rate(parryRate): # 一个刀光最多格挡多少个敌方子弹?
+2
View File
@@ -0,0 +1,2 @@
extends BulletBase
class_name WuweiBullet
+1 -1
View File
@@ -2,4 +2,4 @@ extends ParryEffect
class_name ParryEntityEffect
func beforeShot():
CameraManager.shake(100, 200)
CameraManager.shake(50, 200)
+6 -4
View File
@@ -21,15 +21,17 @@ func beforeOpen(_args: Array = []):
initialWeaponSelection.add_child(card)
card.selected.connect(
func(_x):
clearWeapons()
title2.hide()
if WorldManager.isRelease():
clearWeapons()
title2.hide()
)
else:
initialFeedSelection.add_child(card)
card.selected.connect(
func(_x):
clearFeeds()
title1.hide()
if WorldManager.isRelease():
clearFeeds()
title1.hide()
)
func clearFeeds():
+5 -5
View File
@@ -23,13 +23,13 @@ func duplicate() -> Wave:
return wave
static var WAVE_NORMAL = [
Wave.create("Hen", 1, 3, false, 0, INF, 1),
Wave.create("Hen", 1, 3, false, 0, INF, 3),
Wave.create("Cat", 1, 5, false, 0, INF, 1),
Wave.create("Dog", 1, 2, false, 0, INF, 1),
Wave.create("MTY", 0, 1, false, 4, INF, 4),
Wave.create("Dog", 1, 2, false, 0, INF, 5),
Wave.create("MTY", 0, 1, false, 4, INF, 7),
Wave.create("Chick", 0, 0, true, 9, INF, 20),
Wave.create("KukeMC", 0, 0, true, 19, INF, 20),
Wave.create("Bear", 0, 0, true, 29, INF, 20),
Wave.create("Bear", 0, 0, true, 29, INF, 23),
]
static var WAVE_TESTBOSS_ALL = [
Wave.create("Chick", 0, 0, true, 0, INF, 3),
@@ -49,7 +49,7 @@ static var WAVE_JUSTJOKE = [
Wave.create("Kernyr", 0, 0, true, 0, INF, 1),
]
static var WAVE_EMPTY = []
static var waveConfig = [WAVE_JUSTJOKE, 1]
static var waveConfig = [WAVE_NORMAL, 1]
static var current: int = startWith(1) if WorldManager.isRelease() else startWith(waveConfig[1])
static var data = WAVE_NORMAL if WorldManager.isRelease() else waveConfig[0]
+1 -1
View File
@@ -19,5 +19,5 @@ func attack(entity: EntityBase):
bullet.maxParryTimes = readStore("count")
bullet.maxBallCount = readStore("max")
bullet.reflectRate = readStore("rate")
bullet.baseDamage = readStore("atk")
bullet.baseDamage = readStore("atk") * readStore("rate")
return true
+5 -4
View File
@@ -41,10 +41,11 @@ func allHad(entity: EntityBase) -> bool:
func apply(entity: EntityBase):
var allHave = allHad(entity)
if allHave:
for i in range(min(costs.size(), costCounts.size())):
var item = costs[i]
var count = countOf(i)
entity.inventory[item] -= count
if !freeToBuy:
for i in range(min(costs.size(), costCounts.size())):
var item = costs[i]
var count = countOf(i)
entity.inventory[item] -= count
for i in range(min(fields.size(), fieldValues.size())):
var field = fields[i]
var value = fieldValues[i]