```
Some checks failed
ci/woodpecker/push/my-first-workflow Pipeline failed

fix(fight): 修复技能实体属性访问问题

- 修改所有技能实体的ID、Power、CritRate、MustHit、Priority等属性访问方式
  从直接访问改为通过XML字段访问,确保数据一致性

- 更新多个boss技能效果处理逻辑中的属性引用路径

- 移除已废弃的effect/486文件

- 在New
This commit is contained in:
昔念
2026-03-09 18:49:51 +08:00
parent 99ef152434
commit 994cbb44b8
73 changed files with 360 additions and 289 deletions

View File

@@ -16,7 +16,7 @@ import (
// processSkillAttack 处理技能攻击逻辑
func (f *FightC) processSkillAttack(attacker, defender *input.Input, skill *info.SkillEntity) {
skill.AttackTimeC(attacker.GetProp(5, true)) //计算命中
skill.AttackTimeC(int(attacker.Prop[5])) //计算命中
defender.Exec(func(effect input.Effect) bool { //计算闪避,然后修改对方命中),同时相当于计算属性无效这种
effect.Ctx().SkillEntity = skill
@@ -45,8 +45,8 @@ func (f *FightC) processSkillAttack(attacker, defender *input.Input, skill *info
//技能miss+效果生效 这里属于强制改命中效果,但是正常来说,技能miss掉后效果也应该失效
//技能失效+效果失效
attacker.AttackTime = skill.AttackTime
attacker.SkillID = uint32(skill.ID) //获取技能ID
if skill.AttackTime != 0 { //如果命中
attacker.SkillID = uint32(skill.XML.ID) //获取技能ID
if skill.AttackTime != 0 { //如果命中
attacker.CalculateCrit(defender, skill) //暴击计算
attacker.IsCritical = skill.Crit
attacker.SumDamage = attacker.CalculatePower(defender, skill)
@@ -165,15 +165,15 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction)
if firstAttack != nil && secondAttack != nil {
switch {
case firstAttack.SkillEntity.Priority < secondAttack.SkillEntity.Priority:
case firstAttack.SkillEntity.XML.Priority < secondAttack.SkillEntity.XML.Priority:
firstAttack, secondAttack = secondAttack, firstAttack //互换先手权
f.First, f.Second = f.Second, f.First
case firstAttack.SkillEntity.Priority == secondAttack.SkillEntity.Priority:
if f.Second.GetProp(4, false) > f.First.GetProp(4, false) {
case firstAttack.SkillEntity.XML.Priority == secondAttack.SkillEntity.XML.Priority:
if f.Second.GetProp(4) > f.First.GetProp(4) {
firstAttack, secondAttack = secondAttack, firstAttack //互换先手权
f.First, f.Second = f.Second, f.First
}
if f.Second.GetProp(4, false) == f.First.GetProp(4, false) {
if f.Second.GetProp(4) == f.First.GetProp(4) {
if grand.Meet(1, 2) { //随机出手
firstAttack, secondAttack = secondAttack, firstAttack //互换先手权
f.First, f.Second = f.Second, f.First