refactor: 合并同类 effect 实现到公共基类
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

This commit is contained in:
xinian
2026-04-03 00:26:59 +08:00
committed by cnb
parent 5204615c28
commit 7405aac82d
19 changed files with 33 additions and 475 deletions

View File

@@ -625,3 +625,24 @@ JSON 中存在但代码未注册(示例前 60 项):
### 18.3 本轮同步项
- 已补 `logic/service/fight/effect/effect_info_map.go` `1077-1081` 的说明映射
- `docs/effect-unimplemented-tasks/task-093-effects-1077-1081.md` 已删除
## 19. 2026-04-03 同类实现合并记录
### 19.1 本轮抽取的公共 base
- `RandomDurationArg01Base`封装 `args[0]/args[1]` 随机持续回合
- `FixedDurationNeg1Arg0CountBase`封装 `Duration(-1)` 且从 `args[0]` 初始化次数上限
### 19.2 本轮合并到公共实现的 effect
- `41/42`改为复用随机持续回合 base
- `47/48`改为复用 `arg0` 持续回合 base
- `60`改为复用 `SideEffectArgs[0]` 持续回合 base
- `46/570`改为复用永久持续 + arg0 次数耗尽 base
### 19.3 本轮未动的同类候选
- `SelfKill`文件 `logic/service/fight/effect/selfkill.go` 已存在本地改动本轮为避免覆盖未继续并入 `FixedDurationNeg1Base`
- `Effect123``EffectPropSyncReverse`仍包含额外上下文初始化不适合只靠 SetArgs 模板直接下沉
### 19.4 本轮验证
- 已执行 `cd /workspace/logic && go test ./service/fight/effect`
- 已执行 `cd /workspace/logic && go build ./...`

View File

@@ -1,35 +0,0 @@
# Task 167: Effects 1448-1452
## 目标
- 补齐以下 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 1448
- `argsNum`: `2`
- `info`: `自身体力低于最大体力的1/{0}时造成的伤害提升{1}%`
### Effect 1449
- `argsNum`: `2`
- `info`: `{0}回合内对手无法通过自身技能恢复体力且受到原本恢复量1/{1}的百分比伤害`
### Effect 1450
- `argsNum`: `2`
- `info`: `吸取对手{0}点体力若对手任意1项技能PP值小于{1}点则吸取效果翻倍`
### Effect 1451
- `argsNum`: `2`
- `info`: `若自身体力高于对手则获得{0}点护盾若自身体力低于对手则恢复自身最大体力的1/{1}`
### Effect 1452
- `argsNum`: `1`
- `info`: `召唤龙神,使自身下{0}回合获得战之龙魂效果`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,36 +0,0 @@
# Task 168: Effects 1453-1457
## 目标
- 补齐以下 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 1453
- `argsNum`: `1`
- `info`: `召唤龙神,使自身下{0}回合获得御之龙魂效果`
### Effect 1454
- `argsNum`: `4`
- `info`: `1回合做{0}-{1}次攻击,每次攻击有{2}%的概率附加{3}点固定伤害`
### Effect 1455
- `argsNum`: `2`
- `info`: `1回合做{0}-{1}次攻击,若本回合攻击次数达到最大则八岐大蛇进入暴怒,必定秒杀对手`
### Effect 1456
- `argsNum`: `2`
- `info`: `消耗自身全部体力使对手受到自身最大体力1/{0}的百分比伤害,同时使自身下只出场精灵前{1}回合免疫受到的攻击伤害`
### Effect 1457
- `argsNum`: `4`
- `info`: `{0}回合内攻击技能{1}%令对手{2},未触发则使对手随机{3}项技能PP值归零`
- `param`: `1,2,2`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,38 +0,0 @@
# Task 169: Effects 1458-1462
## 目标
- 补齐以下 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 1458
- `argsNum`: `4`
- `info`: `{0}回合内每回合{1}%对手属性技能无效,未触发则{2}%令对手{3}`
- `param`: `1,3,3`
### Effect 1459
- `argsNum`: `3`
- `info`: `先出手时{0}%令对手{1},未触发则对手{2}回合属性技能无效`
- `param`: `1,1,1`
### Effect 1460
- `argsNum`: `3`
- `info`: `附加{0}{1}值{2}%的百分比伤害,先出手时附加效果翻倍`
- `param`: `4,0,0|2,1,1`
### Effect 1461
- `argsNum`: `1`
- `info`: `恢复自身最大体力的1/{0},体力低于对手时附加等量百分比伤害`
### Effect 1462
- `argsNum`: `2`
- `info`: `{0}回合内每回合使用技能附加{1}点固定伤害,附加时若自身不处于能力提升状态则固定伤害翻倍`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,37 +0,0 @@
# Task 170: Effects 1463-1467
## 目标
- 补齐以下 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 1463
- `argsNum`: `0`
- `info`: `先出手时本回合自身下次死亡时恢复全部体力并解除自身的异常状态和能力下降状态`
### Effect 1464
- `argsNum`: `3`
- `info`: `当回合攻击击败对手时,若对手处于{0}状态则{1}%的概率令对手下1只出场精灵进入{2}状态`
- `param`: `1,0,0|1,2,2`
### Effect 1465
- `argsNum`: `1`
- `info`: `先出手时50%的概率打出致命一击,未触发则令对手全属性-{0}`
### Effect 1466
- `argsNum`: `3`
- `info`: `{0}回合内若对手攻击技能未命中则{1}%令对手{2}`
- `param`: `1,2,2`
### Effect 1467
- `argsNum`: `2`
- `info`: `随机使自身{0}项能力值+{1},先出手时提升效果翻倍`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,36 +0,0 @@
# Task 171: Effects 1468-1472
## 目标
- 补齐以下 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 1468
- `argsNum`: `2`
- `info`: `消除双方能力提升状态、能力下降状态和护盾效果,消除任意一项成功则附加{0}点固定伤害且令对手随机{1}个技能PP值归零`
### Effect 1469
- `argsNum`: `2`
- `info`: `{0}回合内自身造成的固定伤害、百分比伤害提升{1}%`
### Effect 1470
- `argsNum`: `0`
- `info`: `自身天赋值越高则技能威力越大`
### Effect 1471
- `argsNum`: `3`
- `info`: `消除对手能力提升状态,消除成功则{0}%令对手{1}未触发则恢复自身最大体力的1/{2}`
- `param`: `1,1,1`
### Effect 1472
- `argsNum`: `1`
- `info`: `自身处于能力提升状态时造成的伤害提升{0}%,先出手时效果翻倍`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,35 +0,0 @@
# Task 172: Effects 1473-1477
## 目标
- 补齐以下 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 1473
- `argsNum`: `1`
- `info`: `消除对手所有护盾效果,消除成功则令对手随机{0}个技能PP值归零`
### Effect 1474
- `argsNum`: `2`
- `info`: `{0}回合内若自身能力提升状态被消除每消除1项则附加{1}点固定伤害`
### Effect 1475
- `argsNum`: `2`
- `info`: `{0}回合内自身受到的固定伤害和百分比伤害减少{1}%`
### Effect 1476
- `argsNum`: `2`
- `info`: `使对手全属性-{0}自身体力低于1/{1}时弱化效果翻倍`
### Effect 1477
- `argsNum`: `1`
- `info`: `消除敌我双方能力提升状态消除任意一方成功则吸取对手最大体力的1/{0}`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,36 +0,0 @@
# Task 173: Effects 1478-1482
## 目标
- 补齐以下 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 1478
- `argsNum`: `1`
- `info`: `{0}回合令对手无法主动切换精灵`
### Effect 1479
- `argsNum`: `1`
- `info`: `牺牲自己,消除对手能力提升状态、回合类效果、护盾效果、护罩效果、神耀能量、自然祝福,同时令对手{0}回合内属性技能无效`
### Effect 1480
- `argsNum`: `3`
- `info`: `附加{0}点固定伤害,每次使用额外附加{1}点,最高{2}点`
### Effect 1481
- `argsNum`: `1`
- `info`: `{0}%的概率造成伤害翻倍,对手处于能力下降状态时概率翻倍`
### Effect 1482
- `argsNum`: `2`
- `info`: `{0}%令对手{1},未触发则吸取对手能力提升状态`
- `param`: `1,1,1`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,36 +0,0 @@
# Task 174: Effects 1483-1487
## 目标
- 补齐以下 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 1483
- `argsNum`: `1`
- `info`: `本回合打出致命一击则令对手{0}回合属性技能无效`
### Effect 1484
- `argsNum`: `0`
- `info`: `体力低于最大体力的1/2时先制+1`
### Effect 1485
- `argsNum`: `4`
- `info`: `对手处于能力提升状态则命中后{0}%令对手{1},未触发则{2}%令对手{3}`
- `param`: `1,1,1|1,3,3`
### Effect 1486
- `argsNum`: `1`
- `info`: `{0}%的概率造成伤害翻倍,自身处于护盾状态时概率翻倍`
### Effect 1487
- `argsNum`: `0`
- `info`: `自身处于护盾状态下先制+1`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,38 +0,0 @@
# Task 175: Effects 1488-1492
## 目标
- 补齐以下 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 1488
- `argsNum`: `2`
- `info`: `遇到天敌时{0}%令对手{1}`
- `param`: `1,1,1`
### Effect 1489
- `argsNum`: `4`
- `info`: `若对手为自身天敌则{0}%令对手{1},未触发则令自身{2}回合内{3}%闪避对手攻击`
- `param`: `1,1,1`
### Effect 1490
- `argsNum`: `3`
- `info`: `若对手为自身天敌则{0}%令对手{1},未触发则对手{2}回合内属性技能命中效果失效`
- `param`: `1,1,1`
### Effect 1491
- `argsNum`: `0`
- `info`: `遇到天敌时先制+1`
### Effect 1492
- `argsNum`: `1`
- `info`: `对手处于能力下降状态时随机附加{0}种异常状态`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,35 +0,0 @@
# Task 176: Effects 1493-1497
## 目标
- 补齐以下 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 1493
- `argsNum`: `0`
- `info`: `消耗自身所有体力令自身下只登场精灵3回合内免疫异常状态若自身下只登场精灵为月照星魂则转变为5回合`
### Effect 1494
- `argsNum`: `2`
- `info`: `自身满体力时{0}%令对手随机{1}个技能PP值归零`
### Effect 1495
- `argsNum`: `2`
- `info`: `反转对手能力提升状态,反转成功则{0}%令对手随机{1}个技能PP值归零`
### Effect 1496
- `argsNum`: `3`
- `info`: `消耗自身全部体力,使自身下只出场精灵获得{0}点的护盾且{1}回合内每回合结束时恢复{2}点体力`
### Effect 1497
- `argsNum`: `0`
- `info`: `恢复自身n点体力n=双方当前护盾值总和)`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -1,37 +0,0 @@
# Task 180: Effects 1513-1517
## 目标
- 补齐以下 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 1513
- `argsNum`: `4`
- `info`: `{0}回合内{1}%令对手{2},未触发则削减对手{3}点体力上限`
- `param`: `1,2,2`
### Effect 1514
- `argsNum`: `0`
- `info`: `消耗自身所有体力令自身下只登场精灵获得2次八荒之力效果若自身下只登场精灵为混元天尊则转变为3次`
### Effect 1515
- `argsNum`: `5`
- `info`: `对手体力上限高于{0}则造成的攻击伤害提升{1}%,对手体力上限低于{2}则附加自身{3}值{4}%的百分比伤害`
- `param`: `2,3,3`
### Effect 1516
- `argsNum`: `0`
- `info`: `汇聚无尽的怨气使用后下3回合自身获得八荒之力效果`
### Effect 1517
- `argsNum`: `1`
- `info`: `当回合击败对手则削减对手下只登场精灵{0}点体力上限`
## 备注
- 该清单按当前仓库静态注册结果生成如果某个 effect 实际通过其他模块或运行时路径实现需要先复核后再落代码
- `201``445` 这类占位 effect优先补核心逻辑或补充明确的不可实现说明

View File

@@ -3,23 +3,13 @@ package effect
import (
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
"github.com/alpacahq/alpacadecimal"
)
// Effect 570: 免疫下{0}次受到的攻击
type Effect570 struct {
node.EffectNode
remaining int
}
func (e *Effect570) SetArgs(t *input.Input, a ...int) {
e.EffectNode.SetArgs(t, a...)
e.EffectNode.Duration(-1)
if len(a) > 0 {
e.remaining = a[0]
}
FixedDurationNeg1Arg0CountBase
}
func (e *Effect570) DamageLockEx(t *info.DamageZone) bool {

View File

@@ -4,10 +4,8 @@ import (
element "blazing/common/data/Element"
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
"github.com/alpacahq/alpacadecimal"
"github.com/gogf/gf/v2/util/grand"
)
/**
@@ -21,13 +19,7 @@ func init() {
// Effect 41: 未在 effectInfo.json 配置说明
type Effect41 struct {
node.EffectNode
}
func (e *Effect41) SetArgs(t *input.Input, a ...int) {
e.EffectNode.SetArgs(t, a...)
e.EffectNode.Duration(grand.N(int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart())))
RandomDurationArg01Base
}
// 伤害落实前触发,限制最大伤害

View File

@@ -4,15 +4,13 @@ import (
element "blazing/common/data/Element"
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
"github.com/alpacahq/alpacadecimal"
"github.com/gogf/gf/v2/util/grand"
)
// Effect 42: 未在 effectInfo.json 配置说明
type Effect42 struct {
node.EffectNode
RandomDurationArg01Base
StatusID int
}
@@ -34,14 +32,6 @@ func (e *Effect42) Damage_Mul(t *info.DamageZone) bool {
//fmt.Println("Effect42_n", t.Damage)
return true
}
func (e *Effect42) SetArgs(t *input.Input, a ...int) {
//e.CanStack(-1)//后续的不会顶掉这个效果
e.EffectNode.SetArgs(t, a...)
e.Duration(grand.N(int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart()))) //次数类,无限回合
}
// ---- 注册所有效果 ----
func init() {

View File

@@ -3,16 +3,13 @@ package effect
import (
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
"github.com/alpacahq/alpacadecimal"
)
// Effect 46: 抵挡下{0}次对手的攻击
type Effect46 struct {
node.EffectNode
//StatusID int
conut int64
FixedDurationNeg1Arg0CountBase
}
func (e *Effect46) Damage_Shield(t *info.DamageZone) bool {
@@ -25,25 +22,16 @@ func (e *Effect46) Damage_Shield(t *info.DamageZone) bool {
}
//fmt.Println("Effect46_o", t.Damage)
if t.Type == info.DamageType.Red {
e.conut++
if t.Type == info.DamageType.Red && e.remaining > 0 {
e.remaining--
t.Damage = alpacadecimal.Zero
}
if e.Args()[0].IntPart() == e.conut {
e.Alive(false)
return true
if e.remaining <= 0 {
e.Alive(false)
}
}
//fmt.Println("Effect46_n", t.Damage)
return true
}
func (e *Effect46) SetArgs(t *input.Input, a ...int) {
//e.CanStack(-1)//后续的不会顶掉这个效果
e.EffectNode.SetArgs(t, a...)
e.Duration(-1) //次数类,无限回合
}
// ---- 注册所有效果 ----
func init() {

View File

@@ -2,12 +2,11 @@ package effect
import (
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
)
// Effect 47: {0}回合内免疫能力下降状态
type Effect47 struct {
node.EffectNode
RoundEffectArg0Base
//StatusID int
conut int
}
@@ -19,13 +18,6 @@ func (e *Effect47) PropBefer(in *input.Input, prop int8, level int8) bool {
return true
}
func (e *Effect47) SetArgs(t *input.Input, a ...int) {
//e.CanStack(-1)//后续的不会顶掉这个效果
e.EffectNode.SetArgs(t, a...)
e.Duration(int(e.Args()[0].IntPart())) //次数类,无限回合
}
// ---- 注册所有效果 ----
func init() {

View File

@@ -2,12 +2,11 @@ package effect
import (
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
)
// Effect 48: {0}回合内免疫所有受到的异常状态
type Effect48 struct {
node.EffectNode
RoundEffectArg0Base
//StatusID int
conut int
}
@@ -23,13 +22,6 @@ func (e *Effect48) EFFect_Befer(in *input.Input, effEffect input.Effect) bool {
return true
}
func (e *Effect48) SetArgs(t *input.Input, a ...int) {
//e.CanStack(-1)//后续的不会顶掉这个效果
e.EffectNode.SetArgs(t, a...)
e.Duration(int(e.Args()[0].IntPart())) //次数类,无限回合
}
// ---- 注册所有效果 ----
func init() {

View File

@@ -3,7 +3,6 @@ package effect
import (
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
)
/**
@@ -18,16 +17,9 @@ func init() {
// Effect 60: {0}回合内每回合都能附加{1}点固定伤害
type Effect60 struct {
node.EffectNode
RoundEffectSideArg0Base
}
// 默认添加回合
func (e *Effect60) SetArgs(t *input.Input, a ...int) {
e.EffectNode.SetArgs(t, a...)
e.EffectNode.Duration(e.SideEffectArgs[0])
}
func (e *Effect60) OnSkill() bool {
if e.Ctx().SkillEntity == nil {