Merge branch 'main' of https://cnb.cool/blzing/blazing
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

This commit is contained in:
昔念
2026-03-31 10:03:29 +08:00
4 changed files with 37 additions and 64 deletions

View File

@@ -261,9 +261,9 @@ JSON 中存在但代码未注册(示例前 60 项):
---
## 9. 2026-03-31 增量记录
## 16. 2026-03-31 增量记录
### 9.1 本轮补齐的 effect
### 16.1 本轮补齐的 effect
- `764` `{0}回合内若对手使用攻击技能降低对手最大体力的1/{1}`
- `765` `{0}回合对手无法使自身能力出现提升状态`
- `766` 消除对手能力提升状态消除成功则`{0}`回合内对手造成的攻击伤害不超过`{1}`
@@ -333,14 +333,14 @@ JSON 中存在但代码未注册(示例前 60 项):
## 9. 2026-03-29 增量记录
### 9.1 本轮补齐的 effect
### 16.1 本轮补齐的 effect
- `668` 若对手处于能力提升状态则先制额外+1
- `669` 当回合击败对手则下回合自身攻击先制+1
- `670` `{0}`回合每回合附加`{1}``{2}`值的`{3}%`的百分比伤害
- `671` 若对手处于异常状态则恢复造成伤害的`{0}%`的体力
- `672` 当回合击败对手则恢复自身全部体力
### 9.2 实现口径
### 16.2 实现口径
- `668` 复用 `539` 的条件先制模式 `ComparePre()` 中于对手存在能力提升状态时直接给当前技能先制+1
- `669` 当回合击败后为下回合攻击技能生效处理 `SwitchOut()` 中标记击败成立下一回合 `ComparePre()` 仅对攻击技能追加先制+1
- `670` 参照 `419` `593` 的组合语义实现为回合类附加伤害效果持续期间每次使用技能时附加一次基于指定目标属性值的固定伤害
@@ -545,3 +545,23 @@ JSON 中存在但代码未注册(示例前 60 项):
### 15.4 本轮验证
- `cd /workspace/logic && go test ./service/fight/effect`
- `cd /workspace/logic && go build ./...`
## 16. 2026-03-31 增量记录
### 9.1 本轮补齐的 effect
- `1067` `{0}回合内每回合使用技能恢复自身最大体力的1/{1}恢复体力时若自身体力低于最大体力的1/{2}则恢复效果转变为吸取对手最大体力的1/{3}`
- `1068` `{0}`回合受到致命伤害时残留`{1}`点体力
- `1069` 反转自身能力下降状态反转成功则`{0}`回合内躲避所有攻击
- `1070` 对手处于能力下降状态时自身先制+1
- `1071` `{0}`回合内若对手恢复体力药剂恢复除外`{1}`回合内自身攻击附加`{2}`点固定伤害
### 16.2 实现口径
- `1067` 复用 `707` 每回合使用技能后回复模式在低血线时改为按对手最大体力比例吸取并同步治疗自身
- `1068` 通过回合子效果在致命伤害结算前锁定剩余体力值满足{0}回合保留{1}点体力
- `1069` 先反转自身全部能力下降再在成功时挂载受击 MISS 子效果仅拦截攻击技能
- `1070` 复用现有 `1243` 同类优先级判断对手存在任一能力下降时自身先制+1
- `1071` 在对手身上挂恢复监听子效果排除药剂恢复触发后给自身挂固定伤害增益子效果
### 16.3 本轮同步项
- 已补 `logic/service/fight/effect/effect_info_map.go` `1067-1071` 的说明映射
- `docs/effect-unimplemented-tasks/task-091-effects-1067-1071.md` 已删除

View File

@@ -1,35 +0,0 @@
# Task 091: Effects 1067-1071
## 目标
- 补齐以下 5 或最后一组不足 5 当前判定未实现的 skill effect
- 实现位置优先放在 `logic/service/fight/effect/`
- effect 需要展示说明同步更新 `logic/service/fight/effect/effect_info_map.go`
- 完成后至少执行`cd /workspace/logic && go test ./service/fight/effect`
## Effect 列表
### Effect 1067
- `argsNum`: `4`
- `info`: `{0}回合内每回合使用技能恢复自身最大体力的1/{1}恢复体力时若自身体力低于最大体力的1/{2}则恢复效果转变为吸取对手最大体力的1/{3}`
### Effect 1068
- `argsNum`: `2`
- `info`: `{0}回合受到致命伤害时残留{1}点体力`
### Effect 1069
- `argsNum`: `1`
- `info`: `反转自身能力下降状态,反转成功则{0}回合内躲避所有攻击`
### Effect 1070
- `argsNum`: `0`
- `info`: `对手处于能力下降状态时自身先制+1`
### Effect 1071
- `argsNum`: `3`
- `info`: `{0}回合内若对手恢复体力(药剂恢复除外),则{1}回合内自身攻击附加{2}点固定伤害`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -25,7 +25,7 @@ func (e *Effect1067) Skill_Use() bool {
type Effect1067Sub struct{ RoundEffectArg0Base }
func (e *Effect1067Sub) OnSkill() bool {
func (e *Effect1067Sub) Skill_Use() bool {
if len(e.Args()) < 4 || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 {
return true
}
@@ -146,10 +146,13 @@ func (e *Effect1071) Skill_Use() bool {
type Effect1071Sub struct{ RoundEffectArg0Base }
func (e *Effect1071Sub) Heal_Pre(_ action.BattleActionI, value *int) bool {
func (e *Effect1071Sub) Heal_Pre(ac action.BattleActionI, value *int) bool {
if value == nil || *value <= 0 || len(e.Args()) < 3 {
return true
}
if _, ok := ac.(*action.UseItemAction); ok {
return true
}
sub := e.Ctx().Opp.InitEffect(input.EffectType.Sub, 10711, int(e.Args()[1].IntPart()), int(e.Args()[2].IntPart()))
if sub != nil {
e.Ctx().Opp.AddEffect(e.Ctx().Opp, sub)
@@ -157,36 +160,16 @@ func (e *Effect1071Sub) Heal_Pre(_ action.BattleActionI, value *int) bool {
return true
}
type Effect1071BoostSub struct {
node.EffectNode
remaining int
damage alpacadecimal.Decimal
}
func (e *Effect1071BoostSub) SetArgs(t *input.Input, a ...int) {
e.EffectNode.SetArgs(t, a...)
e.Duration(-1)
if len(a) > 0 {
e.remaining = a[0]
}
if len(a) > 1 {
e.damage = alpacadecimal.NewFromInt(int64(a[1]))
}
}
type Effect1071BoostSub struct{ RoundEffectArg0Base }
func (e *Effect1071BoostSub) OnSkill() bool {
if e.remaining <= 0 || e.damage.Cmp(alpacadecimal.Zero) <= 0 {
e.Alive(false)
if len(e.Args()) < 2 || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 {
return true
}
if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS {
return true
}
e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.damage})
e.remaining--
if e.remaining <= 0 {
e.Alive(false)
}
e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Args()[1]})
return true
}

View File

@@ -596,6 +596,11 @@ var effectInfoByID = map[int]string{
1049: "击败对手则自身全属性+{0}",
1050: "未击败对手则下{0}回合攻击使对手{1}%{2}",
1051: "对手体力高于{0}则将对手体力减少到{1}",
1067: "{0}回合内每回合使用技能恢复自身最大体力的1/{1}恢复体力时若自身体力低于最大体力的1/{2}则恢复效果转变为吸取对手最大体力的1/{3}",
1068: "下{0}回合受到致命伤害时残留{1}点体力",
1069: "反转自身能力下降状态,反转成功则{0}回合内躲避所有攻击",
1070: "对手处于能力下降状态时自身先制+1",
1071: "{0}回合内若对手恢复体力(药剂恢复除外),则{1}回合内自身攻击附加{2}点固定伤害",
1097: "造成的攻击伤害若低于280则令对手疲惫未击败对手则令对手下1回合使用的攻击技能无效;技能结束后对手体力值高于0则50%进行一次额外行动以触发星皇之怒星皇之怒50%令对手失明未触发则2回合内令对手使用的属性技能无效",
1098: "致命一击率提升20%每次使用增加20%最高100%打出致命一击后令自身下2次技能触发的星皇之怒威力不再减少;技能结束后对手体力值高于0则50%进行一次额外行动以触发星皇之怒星皇之怒下2次自身使用的攻击技能先制+2",
1099: "消除对手能力提升状态,消除成功则自身免疫下{0}次受到的异常状态",