From 875ad668aa7598d54291f6be63ba8a5c5593d40c Mon Sep 17 00:00:00 2001 From: xinian Date: Sat, 28 Mar 2026 21:57:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E6=88=98=E6=96=97?= =?UTF-8?q?=E6=95=88=E6=9E=9C=E9=80=BB=E8=BE=91=E5=92=8C=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 93 +++++ docs/effect-refactor-summary-2026-03-28.md | 219 +++++++++++ logic/service/common/fight.go | 2 - logic/service/fight/boss/NewSeIdx_401.go | 27 +- logic/service/fight/boss/NewSeIdx_410.go | 25 +- logic/service/fight/boss/NewSeIdx_43.go | 24 +- logic/service/fight/boss/NewSeIdx_47.go | 27 +- logic/service/fight/boss/NewSeIdx_51.go | 17 +- logic/service/fight/boss/NewSeIdx_58.go | 54 ++- logic/service/fight/boss/NewSeIdx_66.go | 7 - logic/service/fight/boss/NewSeIdx_67.go | 7 - logic/service/fight/boss/NewSeIdx_68.go | 24 +- logic/service/fight/effect/1044.go | 2 +- logic/service/fight/effect/1146.go | 1 + logic/service/fight/effect/137.go | 2 +- logic/service/fight/effect/138.go | 9 +- logic/service/fight/effect/142.go | 2 +- logic/service/fight/effect/143.go | 1 + logic/service/fight/effect/146.go | 9 +- logic/service/fight/effect/149.go | 2 +- logic/service/fight/effect/150.go | 10 +- logic/service/fight/effect/155.go | 2 +- logic/service/fight/effect/156.go | 4 +- logic/service/fight/effect/157.go | 9 +- logic/service/fight/effect/165.go | 10 +- logic/service/fight/effect/166.go | 9 +- logic/service/fight/effect/169.go | 9 +- logic/service/fight/effect/170.go | 2 +- logic/service/fight/effect/171.go | 9 +- logic/service/fight/effect/173.go | 2 +- logic/service/fight/effect/175.go | 2 +- logic/service/fight/effect/176.go | 6 +- logic/service/fight/effect/177.go | 9 +- logic/service/fight/effect/178.go | 2 +- logic/service/fight/effect/179.go | 2 +- logic/service/fight/effect/184.go | 2 +- logic/service/fight/effect/188.go | 2 +- logic/service/fight/effect/190.go | 13 +- logic/service/fight/effect/193.go | 2 +- logic/service/fight/effect/194.go | 2 +- logic/service/fight/effect/196.go | 2 +- logic/service/fight/effect/197.go | 9 +- logic/service/fight/effect/198.go | 2 +- logic/service/fight/effect/199.go | 9 +- logic/service/fight/effect/200.go | 2 +- .../effect/400_480_586_599_610_611_613.go | 166 ++++++++ logic/service/fight/effect/403.go | 2 +- logic/service/fight/effect/407.go | 4 +- logic/service/fight/effect/410.go | 2 +- logic/service/fight/effect/412.go | 2 +- logic/service/fight/effect/417.go | 9 +- logic/service/fight/effect/418.go | 2 +- logic/service/fight/effect/420.go | 9 +- logic/service/fight/effect/422.go | 2 +- logic/service/fight/effect/424.go | 9 +- logic/service/fight/effect/425.go | 2 +- logic/service/fight/effect/427.go | 9 +- logic/service/fight/effect/428.go | 2 +- logic/service/fight/effect/430.go | 2 +- logic/service/fight/effect/432.go | 14 +- logic/service/fight/effect/434.go | 2 +- logic/service/fight/effect/437.go | 2 +- logic/service/fight/effect/440.go | 6 +- logic/service/fight/effect/442.go | 2 +- logic/service/fight/effect/443.go | 9 +- logic/service/fight/effect/444.go | 2 +- logic/service/fight/effect/446_626.go | 12 +- logic/service/fight/effect/449.go | 2 +- logic/service/fight/effect/453.go | 2 +- logic/service/fight/effect/454.go | 2 +- logic/service/fight/effect/456.go | 2 +- logic/service/fight/effect/458.go | 2 +- logic/service/fight/effect/460.go | 2 +- logic/service/fight/effect/461.go | 9 +- logic/service/fight/effect/462.go | 9 +- logic/service/fight/effect/464.go | 2 +- logic/service/fight/effect/468.go | 2 +- logic/service/fight/effect/469.go | 24 +- logic/service/fight/effect/470.go | 9 +- logic/service/fight/effect/471.go | 18 +- logic/service/fight/effect/473.go | 2 +- logic/service/fight/effect/474.go | 2 +- logic/service/fight/effect/475.go | 4 +- logic/service/fight/effect/476.go | 2 +- logic/service/fight/effect/477.go | 9 +- logic/service/fight/effect/483.go | 2 +- logic/service/fight/effect/485.go | 2 +- logic/service/fight/effect/486.go | 10 +- logic/service/fight/effect/488.go | 2 +- logic/service/fight/effect/489.go | 2 +- logic/service/fight/effect/491.go | 9 +- logic/service/fight/effect/492.go | 9 +- logic/service/fight/effect/493.go | 10 +- logic/service/fight/effect/494.go | 2 +- logic/service/fight/effect/495.go | 2 +- logic/service/fight/effect/496.go | 2 +- logic/service/fight/effect/497.go | 2 +- logic/service/fight/effect/498.go | 9 +- logic/service/fight/effect/500.go | 2 +- logic/service/fight/effect/501.go | 2 +- logic/service/fight/effect/503.go | 2 +- logic/service/fight/effect/504.go | 6 +- logic/service/fight/effect/505.go | 2 +- logic/service/fight/effect/506.go | 2 +- logic/service/fight/effect/507.go | 2 +- logic/service/fight/effect/511.go | 2 +- logic/service/fight/effect/512.go | 6 +- logic/service/fight/effect/513.go | 3 +- logic/service/fight/effect/516.go | 2 +- logic/service/fight/effect/518.go | 2 +- logic/service/fight/effect/521.go | 2 +- logic/service/fight/effect/522.go | 9 +- logic/service/fight/effect/523.go | 2 +- logic/service/fight/effect/524.go | 12 +- logic/service/fight/effect/525.go | 9 +- logic/service/fight/effect/527.go | 15 +- logic/service/fight/effect/528.go | 14 +- logic/service/fight/effect/529.go | 52 +++ logic/service/fight/effect/530.go | 6 +- logic/service/fight/effect/531.go | 6 +- logic/service/fight/effect/532.go | 14 +- logic/service/fight/effect/533.go | 4 +- logic/service/fight/effect/534.go | 12 +- logic/service/fight/effect/535.go | 15 +- logic/service/fight/effect/536.go | 6 +- logic/service/fight/effect/537.go | 6 +- logic/service/fight/effect/538.go | 1 + logic/service/fight/effect/539.go | 4 +- logic/service/fight/effect/540.go | 14 +- logic/service/fight/effect/541.go | 16 +- logic/service/fight/effect/542.go | 8 +- logic/service/fight/effect/543.go | 29 ++ logic/service/fight/effect/546.go | 4 +- logic/service/fight/effect/547.go | 8 +- logic/service/fight/effect/548.go | 6 +- logic/service/fight/effect/549.go | 6 +- logic/service/fight/effect/550.go | 2 +- logic/service/fight/effect/551.go | 8 +- logic/service/fight/effect/552.go | 2 +- logic/service/fight/effect/553.go | 6 +- logic/service/fight/effect/554.go | 25 ++ logic/service/fight/effect/555.go | 6 +- logic/service/fight/effect/556.go | 6 +- logic/service/fight/effect/557.go | 15 +- logic/service/fight/effect/558.go | 2 +- logic/service/fight/effect/559.go | 5 +- logic/service/fight/effect/560.go | 14 +- logic/service/fight/effect/561.go | 2 +- logic/service/fight/effect/562.go | 6 +- logic/service/fight/effect/563_564.go | 16 +- logic/service/fight/effect/565.go | 2 +- logic/service/fight/effect/567.go | 6 +- logic/service/fight/effect/568.go | 6 +- logic/service/fight/effect/569.go | 28 ++ logic/service/fight/effect/570.go | 7 +- logic/service/fight/effect/571.go | 60 +-- logic/service/fight/effect/572.go | 4 +- logic/service/fight/effect/575.go | 2 +- logic/service/fight/effect/576.go | 14 +- logic/service/fight/effect/577.go | 2 +- logic/service/fight/effect/578.go | 6 +- logic/service/fight/effect/579.go | 6 +- logic/service/fight/effect/580.go | 10 +- logic/service/fight/effect/581.go | 28 ++ logic/service/fight/effect/582.go | 42 ++ logic/service/fight/effect/583.go | 45 +++ logic/service/fight/effect/584.go | 35 ++ logic/service/fight/effect/620.go | 9 +- logic/service/fight/effect/63.go | 1 + logic/service/fight/effect/85.go | 3 +- .../service/fight/effect/EffectAttackMiss.go | 10 +- .../fight/effect/EffectDefeatTrigger.go | 7 +- .../effect/EffectPhysicalAttackAddStatus.go | 7 +- .../service/fight/effect/EffectRandomPower.go | 11 +- logic/service/fight/effect/effct_122.go | 4 +- logic/service/fight/effect/effect509.go | 2 +- logic/service/fight/effect/effect_1.go | 8 +- logic/service/fight/effect/effect_100.go | 2 +- logic/service/fight/effect/effect_101.go | 4 +- logic/service/fight/effect/effect_104_109.go | 18 +- logic/service/fight/effect/effect_105.go | 4 +- logic/service/fight/effect/effect_107.go | 5 +- logic/service/fight/effect/effect_110.go | 10 +- logic/service/fight/effect/effect_111.go | 3 +- logic/service/fight/effect/effect_113.go | 3 +- logic/service/fight/effect/effect_115.go | 5 +- logic/service/fight/effect/effect_116.go | 13 +- logic/service/fight/effect/effect_117.go | 19 +- logic/service/fight/effect/effect_119_123.go | 28 +- logic/service/fight/effect/effect_124_126.go | 19 +- logic/service/fight/effect/effect_125.go | 13 +- logic/service/fight/effect/effect_127.go | 15 +- logic/service/fight/effect/effect_128.go | 13 +- logic/service/fight/effect/effect_13.go | 4 +- logic/service/fight/effect/effect_130.go | 1 + logic/service/fight/effect/effect_131.go | 2 +- logic/service/fight/effect/effect_134.go | 1 + logic/service/fight/effect/effect_135.go | 1 + logic/service/fight/effect/effect_136.go | 4 +- logic/service/fight/effect/effect_140.go | 2 +- logic/service/fight/effect/effect_145.go | 2 +- logic/service/fight/effect/effect_147_159.go | 12 +- logic/service/fight/effect/effect_151.go | 2 +- logic/service/fight/effect/effect_152.go | 10 +- logic/service/fight/effect/effect_153.go | 9 +- logic/service/fight/effect/effect_154.go | 1 + logic/service/fight/effect/effect_160.go | 9 +- logic/service/fight/effect/effect_1605.go | 4 +- logic/service/fight/effect/effect_161.go | 2 +- logic/service/fight/effect/effect_163.go | 13 +- logic/service/fight/effect/effect_164.go | 10 +- logic/service/fight/effect/effect_172.go | 2 +- logic/service/fight/effect/effect_174.go | 9 +- logic/service/fight/effect/effect_180.go | 4 +- logic/service/fight/effect/effect_182.go | 1 + logic/service/fight/effect/effect_183.go | 10 +- logic/service/fight/effect/effect_187.go | 10 +- logic/service/fight/effect/effect_189.go | 9 +- logic/service/fight/effect/effect_192.go | 2 +- logic/service/fight/effect/effect_195.go | 4 +- logic/service/fight/effect/effect_20.go | 1 + logic/service/fight/effect/effect_21.go | 4 +- logic/service/fight/effect/effect_28.go | 5 +- logic/service/fight/effect/effect_29.go | 5 +- logic/service/fight/effect/effect_31.go | 8 +- logic/service/fight/effect/effect_32.go | 14 +- logic/service/fight/effect/effect_34.go | 3 +- logic/service/fight/effect/effect_35.go | 2 +- logic/service/fight/effect/effect_36.go | 1 + logic/service/fight/effect/effect_37.go | 2 +- logic/service/fight/effect/effect_39.go | 5 +- logic/service/fight/effect/effect_404.go | 2 +- logic/service/fight/effect/effect_405_402.go | 1 + logic/service/fight/effect/effect_406.go | 9 +- logic/service/fight/effect/effect_408_463.go | 10 +- logic/service/fight/effect/effect_409.go | 9 +- logic/service/fight/effect/effect_41.go | 9 +- logic/service/fight/effect/effect_413.go | 5 +- logic/service/fight/effect/effect_414.go | 1 + logic/service/fight/effect/effect_415.go | 2 +- logic/service/fight/effect/effect_416.go | 9 +- logic/service/fight/effect/effect_419.go | 9 +- logic/service/fight/effect/effect_42.go | 3 +- logic/service/fight/effect/effect_423.go | 2 +- logic/service/fight/effect/effect_426.go | 14 +- logic/service/fight/effect/effect_43.go | 1 + logic/service/fight/effect/effect_436.go | 5 +- logic/service/fight/effect/effect_438.go | 1 + logic/service/fight/effect/effect_439.go | 10 +- logic/service/fight/effect/effect_44.go | 12 +- logic/service/fight/effect/effect_447.go | 2 +- logic/service/fight/effect/effect_448.go | 8 +- logic/service/fight/effect/effect_450.go | 11 +- logic/service/fight/effect/effect_452.go | 12 +- logic/service/fight/effect/effect_455.go | 2 +- logic/service/fight/effect/effect_459.go | 2 +- logic/service/fight/effect/effect_46.go | 3 +- logic/service/fight/effect/effect_466.go | 1 + logic/service/fight/effect/effect_467.go | 1 + logic/service/fight/effect/effect_47.go | 3 +- logic/service/fight/effect/effect_472.go | 2 +- logic/service/fight/effect/effect_478.go | 13 +- logic/service/fight/effect/effect_479.go | 2 +- logic/service/fight/effect/effect_48.go | 3 +- logic/service/fight/effect/effect_481.go | 2 +- logic/service/fight/effect/effect_482.go | 2 +- logic/service/fight/effect/effect_487.go | 2 +- logic/service/fight/effect/effect_49.go | 3 +- logic/service/fight/effect/effect_490.go | 2 +- logic/service/fight/effect/effect_499.go | 5 +- logic/service/fight/effect/effect_4_5.go | 9 +- logic/service/fight/effect/effect_50.go | 12 +- logic/service/fight/effect/effect_502.go | 9 +- logic/service/fight/effect/effect_508.go | 10 +- logic/service/fight/effect/effect_510.go | 2 +- logic/service/fight/effect/effect_514.go | 2 +- logic/service/fight/effect/effect_515.go | 2 +- logic/service/fight/effect/effect_517.go | 2 +- logic/service/fight/effect/effect_519.go | 10 +- logic/service/fight/effect/effect_52.go | 16 +- logic/service/fight/effect/effect_520.go | 2 +- logic/service/fight/effect/effect_53_90.go | 10 +- logic/service/fight/effect/effect_54.go | 12 +- logic/service/fight/effect/effect_545.go | 9 +- logic/service/fight/effect/effect_566.go | 4 +- logic/service/fight/effect/effect_57.go | 9 +- logic/service/fight/effect/effect_58.go | 10 +- logic/service/fight/effect/effect_6.go | 1 + logic/service/fight/effect/effect_60.go | 1 + logic/service/fight/effect/effect_62.go | 13 +- logic/service/fight/effect/effect_65.go | 12 +- logic/service/fight/effect/effect_68.go | 3 +- logic/service/fight/effect/effect_680_690.go | 50 +-- logic/service/fight/effect/effect_69.go | 12 +- logic/service/fight/effect/effect_7.go | 5 +- logic/service/fight/effect/effect_72.go | 5 +- logic/service/fight/effect/effect_73.go | 15 +- logic/service/fight/effect/effect_74_75.go | 4 +- logic/service/fight/effect/effect_76.go | 14 +- logic/service/fight/effect/effect_77.go | 9 +- logic/service/fight/effect/effect_776.go | 11 +- logic/service/fight/effect/effect_79.go | 4 +- logic/service/fight/effect/effect_8.go | 1 + logic/service/fight/effect/effect_80.go | 4 +- logic/service/fight/effect/effect_81.go | 10 +- logic/service/fight/effect/effect_82.go | 1 + logic/service/fight/effect/effect_83.go | 11 +- logic/service/fight/effect/effect_87.go | 1 + logic/service/fight/effect/effect_88.go | 5 +- logic/service/fight/effect/effect_89.go | 13 +- logic/service/fight/effect/effect_91.go | 13 +- logic/service/fight/effect/effect_93.go | 1 + logic/service/fight/effect/effect_95.go | 1 + logic/service/fight/effect/effect_98.go | 14 +- logic/service/fight/effect/effect_addlevel.go | 15 +- logic/service/fight/effect/effect_info_map.go | 363 ++++++++++++++++++ .../fight/effect/effect_power_doblue.go | 4 +- logic/service/fight/effect/effect_prop.go | 4 +- logic/service/fight/effect/none.go | 4 +- logic/service/fight/effect/register.go | 7 + logic/service/fight/effect/selfkill.go | 27 +- .../service/fight/effect/sterStatusEffects.go | 36 +- .../service/fight/effect/sub_effect_helper.go | 139 +++++++ logic/service/fight/fightc.go | 3 +- logic/service/fight/info/BattlePetEntity.go | 8 +- logic/service/fight/info/BattleSkillEntity.go | 7 +- logic/service/fight/info/ctx.go | 12 +- logic/service/fight/input.go | 11 +- logic/service/fight/input/ai.go | 9 +- logic/service/fight/new.go | 3 - logic/service/player/base.go | 6 - modules/player/model/pet.go | 6 +- 332 files changed, 2062 insertions(+), 1442 deletions(-) create mode 100644 AGENTS.md create mode 100644 docs/effect-refactor-summary-2026-03-28.md create mode 100644 logic/service/fight/effect/400_480_586_599_610_611_613.go create mode 100644 logic/service/fight/effect/529.go create mode 100644 logic/service/fight/effect/543.go create mode 100644 logic/service/fight/effect/554.go create mode 100644 logic/service/fight/effect/569.go create mode 100644 logic/service/fight/effect/581.go create mode 100644 logic/service/fight/effect/582.go create mode 100644 logic/service/fight/effect/583.go create mode 100644 logic/service/fight/effect/584.go create mode 100644 logic/service/fight/effect/effect_info_map.go create mode 100644 logic/service/fight/effect/register.go create mode 100644 logic/service/fight/effect/sub_effect_helper.go diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..16d8bf3b0 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,93 @@ +# Repository Guidelines + +## Project Structure & Module Organization +This repository is split into multiple Go modules: + +- `logic/`: main game logic and fight system (`logic/service/fight/...`) +- `login/`: login service +- `common/`: shared utilities, data, RPC helpers, socket code +- `modules/`: domain modules such as `player`, `task`, `space` +- `public/`: runtime data and configs, including `public/config/*.json` +- `docs/`: engineering notes and feature-specific summaries + +Keep changes scoped to the owning module. For example, fight effect work belongs under `logic/service/fight/effect/`. + +## Build, Test, and Development Commands +- `cd logic && go test ./service/fight/effect` + Validates effect package changes quickly. +- `cd logic && go test ./...` + Runs all tests in the `logic` module. +- `cd common && go test ./...` + Runs shared utility tests. +- `cd logic && go build ./...` + Checks compile health for the logic module. + +CI currently builds Go artifacts through GitHub Actions in `.github/workflows/logic_CI.yml`. + +## Coding Style & Naming Conventions +Use standard Go formatting and idioms: + +- Run `gofmt -w .go` on edited Go files. +- Use tabs as produced by `gofmt`; do not hand-align spacing. +- Keep package names lowercase. +- Follow existing effect naming: `Effect` structs in files like `effect_123.go` or grouped files such as `400_480_...go`. +- Keep comments short and descriptive, e.g. `// Effect 400: 若和对手属性相同,则技能威力翻倍`. + +## Testing Guidelines +The repo uses Go’s built-in `testing` package. Existing tests are sparse, so at minimum: + +- run package-level tests for the module you changed +- prefer targeted verification first, then broader `go test ./...` when practical +- name tests with Go conventions, e.g. `TestSqrt`, `TestEffect400` + +If no automated test exists, document the package-level command you used to validate the change. + +## Commit & Pull Request Guidelines +Recent history is inconsistent (`fix: ...`, `编辑文件 ...`, and short placeholder commits). Prefer clear messages: + +- `fix: correct Effect599 damage reduction category handling` +- `docs: update effect refactor summary` + +For pull requests, include: + +- what changed +- affected module(s) +- validation commands run +- linked issue/task if available + +## Contributor Notes +Do not overwrite unrelated local changes. This repo often has a dirty worktree. Prefer additive edits, and update `docs/` when continuing long-running refactors such as fight effects. + +## Battle System Notes +Most combat work lives under `logic/service/fight/`. Use the existing split before adding code: + +- `action/`: battle action types and turn execution helpers +- `input/`: runtime battle state, effect registration, skill parsing +- `info/`: core battle entities such as pets, skills, damage zones, enums +- `effect/`: skill effects and status logic; most day-to-day fight changes land here +- `node/`: shared effect node behavior and default hooks +- `boss/`: boss-only passive/index effects +- `rule/`, `itemover/`, `top/`: rules, item settlement, ranking-related battle logic + +When adding a new skill effect: + +- prefer `logic/service/fight/effect/` +- follow existing naming such as `Effect400` or grouped files like `400_480_...go` +- register via `input.InitEffect(...)` or existing helper registration paths +- update `effect_info_map.go` if the effect should appear in local effect descriptions + +When investigating missing effects, do not rely only on direct `InitEffect(...)` grep results. This repo also uses shared registration files such as: + +- `sterStatusEffects.go` +- `effect_power_doblue.go` +- `EffectAttackMiss.go` +- `EffectPhysicalAttackAddStatus.go` +- `EffectDefeatTrigger.go` +- `effect_attr.go` + +Recommended validation for fight changes: + +- `cd logic && go test ./service/fight/effect` +- `cd logic && go build ./...` + +If you continue long-running effect work, update the matching summary in `docs/` so the next pass can resume without re-scanning the whole package. diff --git a/docs/effect-refactor-summary-2026-03-28.md b/docs/effect-refactor-summary-2026-03-28.md new file mode 100644 index 000000000..72ea156c0 --- /dev/null +++ b/docs/effect-refactor-summary-2026-03-28.md @@ -0,0 +1,219 @@ +# Effect 重构会话总结(2026-03-28) + +## 1. 本次会话完成内容 + +### 1.1 注释与说明统一 +- 已将 `logic/service/fight/effect` 下效果注释统一为: + - `// Effect : ` +- 说明来源: + - `public/config/effectInfo.json` + +### 1.2 结构整理与公共能力抽取 +- 新增并使用了子效果统一挂载 helper: + - `addSubEffect(...)` +- 已清理 `effect` 目录中的 `GenSub(...)` 直接调用残留,统一走 helper。 + +### 1.3 回合类基类(组合继承)已落地 +- 当前已引入的 base(位于 `logic/service/fight/effect/sub_effect_helper.go`): + - `RoundEffectArg0Base` + - `RoundEffectSideArg0Base` + - `FixedDuration1Base` + - `FixedDurationNeg1Base` + - `FixedDuration2Base` + - `RoundEffectArg1Base` + - `RoundEffectSideArg1Base` + - `RoundEffectSideArg0Minus1Base` + - `RoundEffectSideArg0Minus1CanStackBase` + +- 已有大量效果结构体改为嵌入上述 base,删除重复 `SetArgs` 模板代码。 + +### 1.4 编译状态 +- 已多轮执行并通过: + - `go test ./logic/service/fight/effect` + +### 1.5 本轮新增 effect 实现 +- 新增缺失效果实现: + - `400` 若和对手属性相同,则技能威力翻倍 + - `480` `{0}`回合内自身所有攻击威力为两倍 + - `586` `{0}`回合内自己的属性攻击必中 + - `599` `{0}`回合内受到`{1}`伤害减少`{2}%` + - `610` 遇到天敌时先制+`{0}` + - `611` 下`{0}`回合自身使用攻击技能则附加`{1}`点固定伤害 + - `613` `{0}`回合内自身令对手使用的`{1}`系攻击技能无效 + +- 已同步更新: + - `logic/service/fight/effect/effect_info_map.go` + +### 1.6 本轮新增文件 +- `logic/service/fight/effect/400_480_586_599_610_611_613.go` +- `logic/service/fight/effect/effect_info_map.go` + +### 1.7 本轮验证 +- 已执行: + - `go test ./service/fight/effect` +- 结果: + - 通过 + +### 1.8 本轮结论 +- 当前这轮更适合按“低风险、可复用现有模式”的 effect 小批次推进,而不是一次性追求 `effectInfo.json` 全量覆盖。 +- 现有 `effect` 目录里已经有不少“共享实现 + 批量注册”的写法,后续判断缺失项时不能只靠 grep `InitEffect(...)`。 +- 文档第 3 节里的“未实现”列表目前仍是历史扫描快照,只能作为候选列表,不能直接当最终事实使用。 + +--- + +## 2. 当前仍保留自定义 `SetArgs` 的效果(建议下一轮重点) + +以下属于“非纯模板”或“仍待抽象”的 SetArgs: + +- `Effect570`(`570.go`) +- `Effect123`(`effect_119_123.go`) +- `Effect41`(`effect_41.go`) +- `Effect42`(`effect_42.go`) +- `Effect46`(`effect_46.go`) +- `Effect47`(`effect_47.go`) +- `Effect48`(`effect_48.go`) +- `Effect60`(`effect_60.go`) +- `EffectPropSyncReverse`(`effect_attr.go`) +- `SelfKill`(`selfkill.go`) + +建议分三类继续抽 base: +- 随机回合/随机次数类(如 41、42) +- 次数型常驻类(如 46、47、48、SelfKill、570) +- “SetArgs + 额外上下文初始化”类(如 Effect123、EffectPropSyncReverse) + +--- + +## 3. 未实现(或疑似未实现)效果清单 + +### 3.0 从 `effectInfo.json` 提取的“未实现”总览(自动扫描) +- JSON 配置总效果数:`2112` +- 代码已注册效果数(Skill):`338` +- JSON 中存在但代码未注册:`1779` +- 代码中注册但 JSON 无对应条目:`5`(`21, 31, 41, 42, 174`) + +说明: +- 这个口径是“配置覆盖率”,不是“bug 数量”。 +- 其中大量属于未来版本/未迁移内容,不建议一次性全补;建议按战斗系统实际启用范围分批实现。 +- 以下列表为上一轮扫描快照,未随本轮新增实现实时回算。 +- 此外,扫描脚本若未把“共享实现中的批量注册”统计进去,也会把已实现效果误判成缺失。 + +JSON 中存在但代码未注册(示例前 60 项): +- 2, 10, 11, 12, 14, 15, 16, 17, 22, 30 +- 38, 40, 45, 51, 55, 56, 61, 64, 66, 67 +- 70, 78, 84, 86, 92, 94, 96, 97, 99, 102 +- 103, 104, 106, 108, 109, 114, 118, 132, 133, 139 +- 141, 158, 162, 167, 168, 185, 401, 421, 431, 529 +- 543, 554, 569, 573, 581, 582, 583, 584, 585, 586 + +### 3.1 明确标记未实装 +- 文件存在明确标记: + - `logic/service/fight/effect/529.go未实装` + +### 3.2 已注册但缺少同名 `Effect{id}` 结构体(需人工确认是否由合并实现覆盖) +- `53` +- `74` +- `75` +- `186` +- `402` +- `433` +- `446` +- `451` +- `463` +- `497` +- `564` +- `588` + +说明: +- 这类通常可能是“多个 id 共用一个结构体实现”或“命名与 id 不一致”,需要逐个确认是否真正缺失行为。 + +### 3.3 疑似未实现(扫描规则:存在 `Effect{id}` 类型,但没有核心战斗 Hook) +- `519`(`effect_519.go`) +- `532`(`532.go`) +- `552`(`552.go`) +- `560`(`560.go`) +- `576`(`576.go`) + +说明: +- 这批是“高优先级人工复查项”,不一定真的没实现,可能通过组合/间接机制生效。 + +### 3.4 当前更可信的“下一批候选” +这一组是结合本轮人工核对后,仍然值得优先继续补的缺失 effect 候选: + +- `401` +- `573` +- `585` +- `587` +- `589` +- `590` +- `591` +- `592` +- `593` +- `594` +- `595` +- `596` +- `597` +- `598` + +说明: +- 这批大多是 58x/59x 段的新效果,和当前目录中已有实现重叠较少。 +- 相比继续深挖旧扫描误差,这批更适合直接新增文件推进。 + +--- + +## 4. 下次继续的建议顺序 + +建议严格按下面顺序继续,不要重新从全量扫描开始: + +1. 先复核文档 3.4 里的候选项是否仍未实现。 +2. 优先补“单次触发、命中附加、固定伤害、恢复、概率状态”这类低风险逻辑。 +3. 再处理“复制对手状态 / 多分支条件 / 触发链式子效果”的 58x/59x 复杂效果。 +4. 最后再回头处理文档 2 中那些仍保留自定义 `SetArgs` 的结构整理。 + +本轮更推荐的下一批实现顺序: + +- 第一组:`587 / 591 / 592 / 597 / 598` +- 第二组:`573 / 585 / 594 / 595 / 596` +- 第三组:`589 / 590 / 593` + +--- + +## 5. 下一次继续让我实现时可直接复制的指令 + +可直接用下面这句发起: + +`继续处理 effect,按 docs/effect-refactor-summary-2026-03-28.md 的 3.4 和 4 执行:先补 587/591/592/597/598,再补 573/585/594/595/596,每实现一批就更新同一文档和 effect_info_map.go,并跑 go test ./service/fight/effect。` + +如果你希望按 JSON 覆盖率推进,可用这句: + +`继续处理 effect,按 docs/effect-refactor-summary-2026-03-28.md 的 3.0 从低风险效果开始补实现:先补状态附加类(10/11/12/14/15/16/94/99/103/114),每实现一批就更新文档中的“已实现列表”和“剩余列表”。` + +--- + +## 6. 扫描口径说明(供后续排查) + +- 已注册效果 ID 扫描来源: + - `InitEffect(input.EffectType.Skill, , ...)` + - `initskill(, ...)` +- 但这还不够,后续扫描必须额外统计这些“共享实现/批量注册”文件: + - `sterStatusEffects.go` + - `effect_power_doblue.go` + - `EffectAttackMiss.go` + - `EffectPhysicalAttackAddStatus.go` + - `EffectDefeatTrigger.go` + - `effect_attr.go` + - `effect_EffectConditionalAddDamage.go` + - `effect_74_75.go` + - `effect_104_109.go` +- `Effect{id}` 结构体与方法扫描来源: + - `logic/service/fight/effect/*.go` +- “疑似未实现”判断是启发式,不是最终结论,仍需代码级确认。 + +--- + +## 7. 这次改动涉及的关键文件 + +- `public/config/effectInfo.json` +- `logic/service/fight/effect/400_480_586_599_610_611_613.go` +- `logic/service/fight/effect/effect_info_map.go` +- `logic/service/fight/effect/sub_effect_helper.go` +- `docs/effect-refactor-summary-2026-03-28.md` diff --git a/logic/service/common/fight.go b/logic/service/common/fight.go index 670c3f72a..511248e2b 100644 --- a/logic/service/common/fight.go +++ b/logic/service/common/fight.go @@ -3,7 +3,6 @@ package common import ( "blazing/logic/service/fight/info" "blazing/modules/player/model" - "math/rand" ) type FightI interface { @@ -15,7 +14,6 @@ type FightI interface { ReadyFight(c PlayerI) //是否准备战斗 ChangePet(c PlayerI, id uint32) Capture(c PlayerI, id uint32) - GetRand() *rand.Rand LoadPercent(c PlayerI, percent int32) UseItem(c PlayerI, cacthid, itemid uint32) diff --git a/logic/service/fight/boss/NewSeIdx_401.go b/logic/service/fight/boss/NewSeIdx_401.go index 25d3d6d71..8c34077c7 100644 --- a/logic/service/fight/boss/NewSeIdx_401.go +++ b/logic/service/fight/boss/NewSeIdx_401.go @@ -1,15 +1,40 @@ package effect import ( + "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" + + "github.com/alpacahq/alpacadecimal" ) // 401. n%几率攻击技能的伤害翻倍(a1: n) -// TODO: 实现n%几率攻击技能的伤害翻倍(a1: n)的核心逻辑 type NewSel401 struct { NewSel0 } +func (e *NewSel401) DamageAdd(t *info.DamageZone) bool { + if !e.IsOwner() { + return true + } + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + if t.Type != info.DamageType.Red { + return true + } + + success, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) + if !success { + return true + } + + t.Damage = t.Damage.Mul(alpacadecimal.NewFromInt(2)) + return true +} + func init() { input.InitEffect(input.EffectType.NewSel, 401, &NewSel401{}) } diff --git a/logic/service/fight/boss/NewSeIdx_410.go b/logic/service/fight/boss/NewSeIdx_410.go index ba8ec637b..efae898c3 100644 --- a/logic/service/fight/boss/NewSeIdx_410.go +++ b/logic/service/fight/boss/NewSeIdx_410.go @@ -1,15 +1,38 @@ package effect import ( + "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" + + "github.com/alpacahq/alpacadecimal" ) // 410. 伤害提升n%(PVP无效)(a1: n) -// TODO: 实现伤害提升n%(PVP无效)(a1: n)的核心逻辑 type NewSel410 struct { NewSel0 } +func (e *NewSel410) DamageAdd(t *info.DamageZone) bool { + if !e.IsOwner() { + return true + } + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + if t.Type != info.DamageType.Red { + return true + } + if e.Ctx().Our.Player == nil || e.Ctx().Our.Player.Getfightinfo().Status != info.BattleMode.FIGHT_WITH_NPC { + return true + } + + t.Damage = t.Damage.Add(t.Damage.Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100))) + return true +} + func init() { input.InitEffect(input.EffectType.NewSel, 410, &NewSel410{}) } diff --git a/logic/service/fight/boss/NewSeIdx_43.go b/logic/service/fight/boss/NewSeIdx_43.go index ca44d7af7..818c752c7 100644 --- a/logic/service/fight/boss/NewSeIdx_43.go +++ b/logic/service/fight/boss/NewSeIdx_43.go @@ -1,15 +1,37 @@ package effect import ( + "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" ) // 43. 遇到天敌自身所有技能先制减少n;(a1: n) -// TODO: 实现遇到天敌自身所有技能先制减少n;(a1: n)的核心逻辑 type NewSel43 struct { NewSel0 } +func (e *NewSel43) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { + if !e.IsOwner() { + return true + } + if !e.ISNaturalEnemy() { + return true + } + if fattack == nil || sattack == nil { + return true + } + if fattack.PlayerID == e.Ctx().Our.UserID { + if fattack.SkillEntity != nil { + fattack.SkillEntity.XML.Priority -= int(e.Args()[0].IntPart()) + } + return true + } + if sattack.PlayerID == e.Ctx().Our.UserID && sattack.SkillEntity != nil { + sattack.SkillEntity.XML.Priority -= int(e.Args()[0].IntPart()) + } + return true +} + func init() { input.InitEffect(input.EffectType.NewSel, 43, &NewSel43{}) } diff --git a/logic/service/fight/boss/NewSeIdx_47.go b/logic/service/fight/boss/NewSeIdx_47.go index bb1d064ca..08cc9074e 100644 --- a/logic/service/fight/boss/NewSeIdx_47.go +++ b/logic/service/fight/boss/NewSeIdx_47.go @@ -1,15 +1,40 @@ package effect import ( + "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" + + "github.com/alpacahq/alpacadecimal" ) // 47. 敌我双方伤害降低n%(a1: n) -// TODO: 实现敌我双方伤害降低n%(a1: n)的核心逻辑 type NewSel47 struct { NewSel0 } +func (e *NewSel47) DamageAdd(t *info.DamageZone) bool { + if t.Type != info.DamageType.Red { + return true + } + + ratio := alpacadecimal.NewFromInt(100).Sub(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) + t.Damage = t.Damage.Mul(ratio) + return true +} + +func (e *NewSel47) DamageDivEx(t *info.DamageZone) bool { + if !e.IsOwner() { + return true + } + if t.Type != info.DamageType.Red { + return true + } + + ratio := alpacadecimal.NewFromInt(100).Sub(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) + t.Damage = t.Damage.Mul(ratio) + return true +} + func init() { input.InitEffect(input.EffectType.NewSel, 47, &NewSel47{}) } diff --git a/logic/service/fight/boss/NewSeIdx_51.go b/logic/service/fight/boss/NewSeIdx_51.go index 33d045684..ddf3e0f1f 100644 --- a/logic/service/fight/boss/NewSeIdx_51.go +++ b/logic/service/fight/boss/NewSeIdx_51.go @@ -5,11 +5,26 @@ import ( ) // 51. 如果mon被打到BurstRecoverHP以下, 且没有挂掉, 则马上恢复到满HP和PP值;(a1: burst_hp high-32, a2: burst_hp low-32) -// TODO: 实现如果mon被打到BurstRecoverHP以下, 且没有挂掉, 则马上恢复到满HP和PP值;(a1: burst_hp high-32, a2: burst_hp low-32)的核心逻辑 type NewSel51 struct { NewSel0 } +func (e *NewSel51) Action_end_ex() bool { + if !e.IsOwner() { + return true + } + if e.Ctx().Our.CurrentPet.GetHP().IntPart() == 0 { + return true + } + if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Args()[0]) >= 0 { + return true + } + + e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.HealPP(-1) + return true +} + func init() { input.InitEffect(input.EffectType.NewSel, 51, &NewSel51{}) } diff --git a/logic/service/fight/boss/NewSeIdx_58.go b/logic/service/fight/boss/NewSeIdx_58.go index ab0435a28..a28e2f723 100644 --- a/logic/service/fight/boss/NewSeIdx_58.go +++ b/logic/service/fight/boss/NewSeIdx_58.go @@ -1,13 +1,65 @@ package effect import ( + "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" + + "github.com/alpacahq/alpacadecimal" ) // 58. 按一定条件触发魔王的愤怒,触发时,战斗等级提升至一定状态,可以被消强化(SideEffect="33")恢复至正常状态(+6)(a1-a6: atk/def/sp_atk/sp_def/spd/accuracy,-1为不设置) -// TODO: 实现按一定条件触发魔王的愤怒,触发时,战斗等级提升至一定状态,可以被消强化(SideEffect="33")恢复至正常状态(+6)(a1-a6: atk/def/sp_atk/sp_def/spd/accuracy,-1为不设置)的核心逻辑 type NewSel58 struct { NewSel0 + active bool + used bool +} + +func (e *NewSel58) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { + if !e.IsOwner() || e.used { + return + } + + currentHP := e.Ctx().Our.CurrentPet.GetHP() + maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + if maxHP.IntPart() == 0 { + return + } + + // 当前仓库里没有更具体的触发参数,采用半血触发作为兜底实现。 + if currentHP.Mul(alpacadecimal.NewFromInt(2)).Cmp(maxHP) == 1 { + return + } + + e.used = true + e.active = true + for i, arg := range e.Args() { + if arg.IntPart() < 0 { + continue + } + target := int8(arg.IntPart()) + if target > e.Ctx().Our.AttackValue.Prop[i] { + e.Ctx().Our.SetProp(e.Ctx().Our, int8(i), target-e.Ctx().Our.AttackValue.Prop[i]) + } + } +} + +func (e *NewSel58) TurnEnd() { + if !e.IsOwner() || !e.active { + return + } + hasPositive := false + for i, arg := range e.Args() { + if arg.IntPart() < 0 { + continue + } + if e.Ctx().Our.AttackValue.Prop[i] > 0 { + hasPositive = true + break + } + } + if !hasPositive { + e.active = false + } } func init() { diff --git a/logic/service/fight/boss/NewSeIdx_66.go b/logic/service/fight/boss/NewSeIdx_66.go index 5abdb4b5d..fd25a17e0 100644 --- a/logic/service/fight/boss/NewSeIdx_66.go +++ b/logic/service/fight/boss/NewSeIdx_66.go @@ -27,13 +27,6 @@ func (e *NewSel66) Skill_Use() bool { if !success { return true } - var duration int - - // 持续回合 - - duration = int(e.Input.FightC.GetRand().Int31n(2)) // 默认随机 2~3 回合 - duration++ - // 获取状态效果 eff := e.Ctx().Our.InitEffect(input.EffectType.Status, int(e.Args()[1].IntPart())) if eff == nil { diff --git a/logic/service/fight/boss/NewSeIdx_67.go b/logic/service/fight/boss/NewSeIdx_67.go index 579f7a40a..a60154dfc 100644 --- a/logic/service/fight/boss/NewSeIdx_67.go +++ b/logic/service/fight/boss/NewSeIdx_67.go @@ -27,13 +27,6 @@ func (e *NewSel67) Skill_Use() bool { if !success { return true } - var duration int - - // 持续回合 - - duration = int(e.Input.FightC.GetRand().Int31n(2)) // 默认随机 2~3 回合 - duration++ - // 获取状态效果 eff := e.Ctx().Our.InitEffect(input.EffectType.Status, int(e.Args()[1].IntPart())) if eff == nil { diff --git a/logic/service/fight/boss/NewSeIdx_68.go b/logic/service/fight/boss/NewSeIdx_68.go index 33a4102cf..2ce0a6406 100644 --- a/logic/service/fight/boss/NewSeIdx_68.go +++ b/logic/service/fight/boss/NewSeIdx_68.go @@ -1,15 +1,37 @@ package effect import ( + "blazing/logic/service/fight/action" + "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" + + "github.com/alpacahq/alpacadecimal" ) // 68. 受到特定系的攻击会恢复自身相应体力(a1: 特定系) -// TODO: 实现受到特定系的攻击会恢复自身相应体力(a1: 特定系)的核心逻辑 type NewSel68 struct { NewSel0 } +func (e *NewSel68) DamageDivEx(t *info.DamageZone) bool { + if !e.IsOwner() { + return true + } + if e.Ctx().SkillEntity == nil { + return true + } + if t.Type != info.DamageType.Red { + return true + } + if e.Ctx().SkillEntity.XML.Type != int(e.Args()[0].IntPart()) { + return true + } + + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, t.Damage) + t.Damage = alpacadecimal.Zero + return true +} + func init() { input.InitEffect(input.EffectType.NewSel, 68, &NewSel68{}) } diff --git a/logic/service/fight/effect/1044.go b/logic/service/fight/effect/1044.go index 9d8f60ccb..312d0747e 100644 --- a/logic/service/fight/effect/1044.go +++ b/logic/service/fight/effect/1044.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 1044 - 吸取对手能力提升状态,吸取成功则下n回合造成的伤害翻倍 +// Effect 1044: 吸取对手能力提升状态,吸取成功则下{0}回合造成的伤害翻倍 type Effect1044 struct { node.EffectNode damageMultiplierActive bool diff --git a/logic/service/fight/effect/1146.go b/logic/service/fight/effect/1146.go index 4e8dfc036..1c3d015ea 100644 --- a/logic/service/fight/effect/1146.go +++ b/logic/service/fight/effect/1146.go @@ -11,6 +11,7 @@ func init() { } +// Effect 1146: 双方每处于{0}种能力提升状态则附加{1}点固定伤害 type Effect1146 struct { node.EffectNode } diff --git a/logic/service/fight/effect/137.go b/logic/service/fight/effect/137.go index c12608d97..5f0aa1679 100644 --- a/logic/service/fight/effect/137.go +++ b/logic/service/fight/effect/137.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 137 - 损失一半当前体力值,攻击和速度提升2个等级 +// Effect 137: 损失一半当前体力值,自身攻击和速度提升2个等级 type Effect137 struct { node.EffectNode } diff --git a/logic/service/fight/effect/138.go b/logic/service/fight/effect/138.go index 3979a1bcc..5515bdb1c 100644 --- a/logic/service/fight/effect/138.go +++ b/logic/service/fight/effect/138.go @@ -3,21 +3,16 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 138 - 先出手时,n回合自己不会受到对手攻击性技能伤害并反弹对手1/n造成的伤害 +// Effect 138: 先出手时,{0}回合自己不会受到对手攻击性技能伤害并反弹对手造成伤害的1/{1} type Effect138 struct { - node.EffectNode + RoundEffectArg0Base can bool } -func (e *Effect138) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func (e *Effect138) OnSkill() bool { if e.IsFirst() { // 先出手 e.can = true diff --git a/logic/service/fight/effect/142.go b/logic/service/fight/effect/142.go index 23af20f5a..1bb5f4e7d 100644 --- a/logic/service/fight/effect/142.go +++ b/logic/service/fight/effect/142.go @@ -7,7 +7,7 @@ import ( "blazing/logic/service/fight/node" ) -// 142 - 损失1/n的体力值,下回合能较快出手 +// Effect 142: 损失1/{0}的体力值,下回合能较快出手 type Effect142 struct { node.EffectNode can bool diff --git a/logic/service/fight/effect/143.go b/logic/service/fight/effect/143.go index eac737ad5..a946d88cb 100644 --- a/logic/service/fight/effect/143.go +++ b/logic/service/fight/effect/143.go @@ -5,6 +5,7 @@ import ( "blazing/logic/service/fight/node" ) +// Effect 143: 使对手的能力提升效果反转成能力下降效果 type Effect143 struct { node.EffectNode } diff --git a/logic/service/fight/effect/146.go b/logic/service/fight/effect/146.go index f6238d3a1..4782c91af 100644 --- a/logic/service/fight/effect/146.go +++ b/logic/service/fight/effect/146.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 146 - n回合内,受到物理攻击时有m%几率使对方中毒 +// Effect 146: {0}回合内受到物理攻击时有{1}%概率使对方中毒 type Effect146 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect146) Skill_Use_ex() bool { @@ -26,10 +25,6 @@ func (e *Effect146) Skill_Use_ex() bool { return true } -func (e *Effect146) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 146, &Effect146{}) diff --git a/logic/service/fight/effect/149.go b/logic/service/fight/effect/149.go index 314531ee8..67d8ecfb0 100644 --- a/logic/service/fight/effect/149.go +++ b/logic/service/fight/effect/149.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 149 - 命中后,n%令对方xx,m%令对方XX +// Effect 149: 命中后,{0}%令对方{1},{2}%令对方{3} type Effect149 struct { node.EffectNode } diff --git a/logic/service/fight/effect/150.go b/logic/service/fight/effect/150.go index b2efef1e0..ee55522db 100644 --- a/logic/service/fight/effect/150.go +++ b/logic/service/fight/effect/150.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 150 - n回合内,对手每回合防御和特防等级m +// Effect 150: {0}回合内对手每回合防御和特防等级{1} type Effect150 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect150) Skill_Use() bool { @@ -16,11 +15,6 @@ func (e *Effect150) Skill_Use() bool { e.Ctx().Opp.SetProp(e.Ctx().Opp, 3, int8(e.SideEffectArgs[1])) return true } -func (e *Effect150) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 150, &Effect150{}) diff --git a/logic/service/fight/effect/155.go b/logic/service/fight/effect/155.go index 7cbc99afd..6bad4293a 100644 --- a/logic/service/fight/effect/155.go +++ b/logic/service/fight/effect/155.go @@ -7,7 +7,7 @@ import ( "blazing/logic/service/fight/node" ) -// 155 - 恢复全部体力,消除所有能力下降,使自己进入睡眠n回合 +// Effect 155: 恢复全部体力,消除所有能力下降,使自己进入睡眠{0}回合 type Effect155 struct { node.EffectNode } diff --git a/logic/service/fight/effect/156.go b/logic/service/fight/effect/156.go index 674b33f6f..0980e0598 100644 --- a/logic/service/fight/effect/156.go +++ b/logic/service/fight/effect/156.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 156 - n回合内,使得对手所有能力增强效果失效 +// Effect 156: {0}回合内使得对手所有能力增强效果失效 type Effect156 struct { node.EffectNode } @@ -20,7 +20,7 @@ func (e *Effect156) Skill_Use() bool { } - e.Ctx().Opp.AddEffect(e.Ctx().Our, e.GenSub(&Effect156_sub{}, e.SideEffectArgs[0])) + addSubEffect(e.Ctx().Our, e.Ctx().Opp, &e.EffectNode, &Effect156_sub{}, e.SideEffectArgs[0]) return true } diff --git a/logic/service/fight/effect/157.go b/logic/service/fight/effect/157.go index 47a4722bb..446459487 100644 --- a/logic/service/fight/effect/157.go +++ b/logic/service/fight/effect/157.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 157 - n回合内,若受到攻击对手防御等级-1、特防等级-1、命中等级-1 +// Effect 157: {0}回合内若受到攻击,对手防御等级-1、特防等级-1、命中等级-1 type Effect157 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect157) Skill_Use_ex() bool { @@ -20,10 +19,6 @@ func (e *Effect157) Skill_Use_ex() bool { return true } -func (e *Effect157) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 157, &Effect157{}) diff --git a/logic/service/fight/effect/165.go b/logic/service/fight/effect/165.go index 7e5728597..b14ad4b00 100644 --- a/logic/service/fight/effect/165.go +++ b/logic/service/fight/effect/165.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 165 - n回合内,每回合防御和特防等级+m +// Effect 165: {0}回合内每回合防御和特防等级+{1} type Effect165 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect165) Skill_Use() bool { @@ -19,8 +18,3 @@ func init() { input.InitEffect(input.EffectType.Skill, 165, &Effect165{}) } - -func (e *Effect165) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续m回合 -} diff --git a/logic/service/fight/effect/166.go b/logic/service/fight/effect/166.go index beada769d..45454b966 100644 --- a/logic/service/fight/effect/166.go +++ b/logic/service/fight/effect/166.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 166 - n回合内,若对手使用属性攻击则m%对手XX等级k +// Effect 166: {0}回合内若对手使用属性攻击则{2}%对手{1}等级{3} type Effect166 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect166) Skill_Use_ex() bool { @@ -25,10 +24,6 @@ func (e *Effect166) Skill_Use_ex() bool { return true } -func (e *Effect166) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 166, &Effect166{}) diff --git a/logic/service/fight/effect/169.go b/logic/service/fight/effect/169.go index e9b83391f..f7d97146b 100644 --- a/logic/service/fight/effect/169.go +++ b/logic/service/fight/effect/169.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 169 - n回合内,每回合额外附加m%几率令对手XX +// Effect 169: {0}回合内每回合额外附加{1}%概率令对手{2} type Effect169 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect169) OnSkill() bool { @@ -24,10 +23,6 @@ func (e *Effect169) OnSkill() bool { return true } -func (e *Effect169) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 169, &Effect169{}) diff --git a/logic/service/fight/effect/170.go b/logic/service/fight/effect/170.go index 7e5e25f97..9da6be372 100644 --- a/logic/service/fight/effect/170.go +++ b/logic/service/fight/effect/170.go @@ -9,7 +9,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 170 - 若先出手,则免疫当回合伤害并回复1/n的最大体力值 +// Effect 170: 若先出手,则免疫当回合伤害并回复1/{0}的最大体力值 type Effect170 struct { node.EffectNode } diff --git a/logic/service/fight/effect/171.go b/logic/service/fight/effect/171.go index ca513cf4a..b5bab9d45 100644 --- a/logic/service/fight/effect/171.go +++ b/logic/service/fight/effect/171.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 171 - n回合内,自身使用属性技能时能较快出手 +// Effect 171: {0}回合内自身使用属性技能时能较快出手 type Effect171 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect171) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { @@ -35,10 +34,6 @@ func (e *Effect171) ComparePre(fattack *action.SelectSkillAction, sattack *actio sattack.SkillEntity.XML.Priority += 1 return true } -func (e *Effect171) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 171, &Effect171{}) diff --git a/logic/service/fight/effect/173.go b/logic/service/fight/effect/173.go index 74a7fa033..4235e7eea 100644 --- a/logic/service/fight/effect/173.go +++ b/logic/service/fight/effect/173.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 173 - 先出手时,n%概率令对方xx +// Effect 173: 先出手时,{0}%概率令对方{1} type Effect173 struct { node.EffectNode } diff --git a/logic/service/fight/effect/175.go b/logic/service/fight/effect/175.go index e8c462937..91a042486 100644 --- a/logic/service/fight/effect/175.go +++ b/logic/service/fight/effect/175.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 175 - 若对手处于异常状态,则m%自身XX等级k +// Effect 175: 若对手处于异常状态,则{1}%自身{0}等级{2} type Effect175 struct { node.EffectNode } diff --git a/logic/service/fight/effect/176.go b/logic/service/fight/effect/176.go index 9964e0949..e8a0c9df8 100644 --- a/logic/service/fight/effect/176.go +++ b/logic/service/fight/effect/176.go @@ -4,9 +4,11 @@ import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" + + "github.com/gogf/gf/v2/util/grand" ) -// 176 - n%几率令对手随机进入烧伤、冻伤、中毒、麻痹、害怕、睡眠中的一种异常状态 +// Effect 176: {0}%概率令对手随机进入烧伤、冻伤、中毒、麻痹、害怕、睡眠中的一种异常状态 type Effect176 struct { node.EffectNode } @@ -25,7 +27,7 @@ func (e *Effect176) OnSkill() bool { int(info.PetStatus.Sleep), } - randomIndex := int(e.Input.FightC.GetRand().Int31n(int32(len(statusTypes)))) + randomIndex := grand.Intn(len(statusTypes)) selectedStatus := statusTypes[randomIndex] statusEffect := e.Ctx().Our.InitEffect(input.EffectType.Status, selectedStatus) diff --git a/logic/service/fight/effect/177.go b/logic/service/fight/effect/177.go index 1fe4b2eb8..7cb6e0b1b 100644 --- a/logic/service/fight/effect/177.go +++ b/logic/service/fight/effect/177.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 177 - n回合内,若对手MISS则自身恢复1/m的最大体力值 +// Effect 177: {0}回合内若对手MISS则自身恢复1/{1}的最大体力值 type Effect177 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect177) Skill_Use_ex() bool { @@ -21,10 +20,6 @@ func (e *Effect177) Skill_Use_ex() bool { return true } -func (e *Effect177) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 177, &Effect177{}) diff --git a/logic/service/fight/effect/178.go b/logic/service/fight/effect/178.go index 025080ec9..dc78c59f3 100644 --- a/logic/service/fight/effect/178.go +++ b/logic/service/fight/effect/178.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 178 - 造成伤害的1/n回复自身体力,若属性相同则造成伤害的1/m回复自身体力 +// Effect 178: 造成伤害的1/{0}回复自身体力,若属性相同则造成伤害的1/{1}回复自身体力 type Effect178 struct { node.EffectNode } diff --git a/logic/service/fight/effect/179.go b/logic/service/fight/effect/179.go index aaefa13b1..b5ed41bee 100644 --- a/logic/service/fight/effect/179.go +++ b/logic/service/fight/effect/179.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 179 - 若属性相同则技能威力提升n +// Effect 179: 若属性相同则技能威力提升{0} type Effect179 struct { node.EffectNode } diff --git a/logic/service/fight/effect/184.go b/logic/service/fight/effect/184.go index ca4886fdc..b2b070c93 100644 --- a/logic/service/fight/effect/184.go +++ b/logic/service/fight/effect/184.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 184 - 若对手处于能力提升状态,则m%自身XX等级k +// Effect 184: 若对手处于能力提升状态,则{1}%自身{0}等级+{2} type Effect184 struct { node.EffectNode } diff --git a/logic/service/fight/effect/188.go b/logic/service/fight/effect/188.go index f608928c1..fcc2d850f 100644 --- a/logic/service/fight/effect/188.go +++ b/logic/service/fight/effect/188.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 188 - 若对手处于异常状态,则威力翻倍并消除对手相应的防御能力提升效果 +// Effect 188: 若对手处于异常状态,则威力翻倍并消除对手相应的防御能力提升效果 type Effect188 struct { node.EffectNode } diff --git a/logic/service/fight/effect/190.go b/logic/service/fight/effect/190.go index a7e935138..5ec45ba51 100644 --- a/logic/service/fight/effect/190.go +++ b/logic/service/fight/effect/190.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 190 - n回合内,若受到攻击,消除对手所有能力强化状态 +// Effect 190: {0}回合内若受到攻击,消除对手能力提升状态 type Effect190 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect190) Skill_Use_ex() bool { @@ -17,19 +16,15 @@ func (e *Effect190) Skill_Use_ex() bool { // 消除对手所有能力强化状态 for i, v := range e.Ctx().Opp.Prop[:] { - if v>0 { + if v > 0 { e.Ctx().Opp.SetProp(e.Ctx().Our, int8(i), 0) } - + } return true } -func (e *Effect190) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 190, &Effect190{}) diff --git a/logic/service/fight/effect/193.go b/logic/service/fight/effect/193.go index 442847484..605c8bd8a 100644 --- a/logic/service/fight/effect/193.go +++ b/logic/service/fight/effect/193.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 193 - 若对手XX,则必定致命一击 +// Effect 193: 若对手{0},则必定造成双倍伤害 type Effect193 struct { node.EffectNode } diff --git a/logic/service/fight/effect/194.go b/logic/service/fight/effect/194.go index b645f75c5..89aea0a5c 100644 --- a/logic/service/fight/effect/194.go +++ b/logic/service/fight/effect/194.go @@ -9,7 +9,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 194 - 造成伤害的1/n回复自身体力,若对手XX,则造成伤害的1/m回复自身体力 +// Effect 194: 造成伤害的1/{0}回复自身体力,若对手{1},则造成伤害的1/{2}回复自身体力 type Effect194 struct { node.EffectNode } diff --git a/logic/service/fight/effect/196.go b/logic/service/fight/effect/196.go index 854017f46..07ccbbef0 100644 --- a/logic/service/fight/effect/196.go +++ b/logic/service/fight/effect/196.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 196 - n%令对方XX等级-m;若先出手,则j%使对方XX等级-k +// Effect 196: {1}%令对方{0}等级{2};若先出手,则{4}%使对方{3}等级{5} type Effect196 struct { node.EffectNode } diff --git a/logic/service/fight/effect/197.go b/logic/service/fight/effect/197.go index 2ebf6d2c6..80dcf8891 100644 --- a/logic/service/fight/effect/197.go +++ b/logic/service/fight/effect/197.go @@ -2,18 +2,13 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 197 - n回合内若被对方击败,则对手所有能力加强状态消失 +// Effect 197: {0}回合内若被对方击败,则对手所有能力加强状态消失 type Effect197 struct { - node.EffectNode + RoundEffectArg0Base } -func (e *Effect197) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func (e *Effect197) SwitchOut(in *input.Input) bool { if e.Input == in { if !e.Ctx().Our.CurrentPet.Alive() { // 被击败 diff --git a/logic/service/fight/effect/198.go b/logic/service/fight/effect/198.go index f97be8bde..8ef6102b2 100644 --- a/logic/service/fight/effect/198.go +++ b/logic/service/fight/effect/198.go @@ -7,7 +7,7 @@ import ( "github.com/gogf/gf/v2/util/grand" ) -// 198 - 随机使对手n种能力等级-m +// Effect 198: 随机使对手{0}种能力等级-{1} type Effect198 struct { node.EffectNode } diff --git a/logic/service/fight/effect/199.go b/logic/service/fight/effect/199.go index ea394d73d..a8473eb4a 100644 --- a/logic/service/fight/effect/199.go +++ b/logic/service/fight/effect/199.go @@ -2,18 +2,13 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 199 - 下次被击败后,下一个出场的精灵xx等级+k +// Effect 199: 下次被击败后,下一个出场的精灵{0}等级+{1} type Effect199 struct { - node.EffectNode + FixedDurationNeg1Base } -func (e *Effect199) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(-1) // 持续n回合 -} func (e *Effect199) SwitchOut(in *input.Input) bool { if e.Input == in { if !e.Ctx().Our.CurrentPet.Alive() { // 被击败 diff --git a/logic/service/fight/effect/200.go b/logic/service/fight/effect/200.go index dbe16128e..ce77216a1 100644 --- a/logic/service/fight/effect/200.go +++ b/logic/service/fight/effect/200.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 200 - 若对手处于能力提升状态,n%几率令对手XX +// Effect 200: 若对手处于能力提升状态,{0}%概率令对手{1} type Effect200 struct { node.EffectNode } diff --git a/logic/service/fight/effect/400_480_586_599_610_611_613.go b/logic/service/fight/effect/400_480_586_599_610_611_613.go new file mode 100644 index 000000000..4f9f207ad --- /dev/null +++ b/logic/service/fight/effect/400_480_586_599_610_611_613.go @@ -0,0 +1,166 @@ +package effect + +import ( + "blazing/logic/service/fight/action" + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + + "github.com/alpacahq/alpacadecimal" +) + +// Effect 400: 若和对手属性相同,则技能威力翻倍 +type Effect400 struct { + Effect567 +} + +func (e *Effect400) SkillHit() bool { + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().Our.CurrentPet.PetInfo.Type != e.Ctx().Opp.CurrentPet.PetInfo.Type { + return true + } + e.Ctx().SkillEntity.XML.Power *= 2 + return true +} + +// Effect 480: {0}回合内自身所有攻击威力为两倍 +type Effect480 struct { + RoundEffectArg0Base +} + +func (e *Effect480) SkillHit() bool { + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + e.Ctx().SkillEntity.XML.Power *= 2 + return true +} + +// Effect 586: {0}回合内自己的属性攻击必中 +type Effect586 struct { + RoundEffectArg0Base +} + +func (e *Effect586) ActionStart(a, b *action.SelectSkillAction) bool { + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() != info.Category.STATUS { + return true + } + e.Ctx().SkillEntity.XML.MustHit = 1 + return true +} + +// Effect 599: {0}回合内受到{1}伤害减少{2}% +type Effect599 struct { + RoundEffectArg0Base +} + +func (e *Effect599) DamageDivEx(zone *info.DamageZone) bool { + if zone == nil { + return true + } + if e.Ctx().SkillEntity == nil { + return true + } + + category := e.Ctx().SkillEntity.Category() + mode := e.Args()[1].IntPart() + switch mode { + case 0: + if category != info.Category.PHYSICAL { + return true + } + case 1: + if category != info.Category.SPECIAL { + return true + } + case 2: + if category != info.Category.PHYSICAL && category != info.Category.SPECIAL { + return true + } + default: + return true + } + + percent := e.Args()[2] + reduction := zone.Damage.Mul(percent).Div(alpacadecimal.NewFromInt(100)) + if zone.Damage.Cmp(reduction) > 0 { + zone.Damage = zone.Damage.Sub(reduction) + } else { + zone.Damage = alpacadecimal.Zero + } + return true +} + +// Effect 610: 遇到天敌时先制+{0} +type Effect610 struct { + Effect567 +} + +func (e *Effect610) ComparePre(fattack, sattack *action.SelectSkillAction) bool { + if !e.ISNaturalEnemy() { + return true + } + if fattack == nil || fattack.PlayerID == e.Ctx().Our.UserID { + return true + } + if sattack == nil || sattack.SkillEntity == nil { + return true + } + sattack.SkillEntity.XML.Priority += int(e.Args()[0].IntPart()) + return true +} + +// Effect 611: 下{0}回合自身使用攻击技能则附加{1}点固定伤害 +type Effect611 struct { + RoundEffectArg0Base +} + +func (e *Effect611) OnSkill() bool { + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ + Type: info.DamageType.Fixed, + Damage: e.Args()[1], + }) + return true +} + +// Effect 613: {0}回合内自身令对手使用的{1}系攻击技能无效 +type Effect613 struct { + RoundEffectArg0Base +} + +func (e *Effect613) SkillHit_ex() bool { + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + if e.Ctx().SkillEntity.XML.Type != int(e.Args()[1].IntPart()) { + return true + } + e.Ctx().SkillEntity.SetNoSide() + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 400, &Effect400{}) + input.InitEffect(input.EffectType.Skill, 480, &Effect480{}) + input.InitEffect(input.EffectType.Skill, 586, &Effect586{}) + input.InitEffect(input.EffectType.Skill, 599, &Effect599{}) + input.InitEffect(input.EffectType.Skill, 610, &Effect610{}) + input.InitEffect(input.EffectType.Skill, 611, &Effect611{}) + input.InitEffect(input.EffectType.Skill, 613, &Effect613{}) +} diff --git a/logic/service/fight/effect/403.go b/logic/service/fight/effect/403.go index 4ceeda959..be0fdc679 100644 --- a/logic/service/fight/effect/403.go +++ b/logic/service/fight/effect/403.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 403 - 技能使用成功时,n%令自身特攻和速度等级+m。若和对手属性相同,则技能效果翻倍 +// Effect 403: 技能使用成功时,{0}%令自身特攻和速度等级+{1}。若和对手属性相同,则技能效果翻倍 type Effect403 struct { node.EffectNode } diff --git a/logic/service/fight/effect/407.go b/logic/service/fight/effect/407.go index ab6a828ec..4bf3415a7 100644 --- a/logic/service/fight/effect/407.go +++ b/logic/service/fight/effect/407.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 407 - 下回合起,每回合XX等级+n,持续m回合 +// Effect 407: 下回合起,每回合{0}等级+{1},持续{2}回合 type Effect407 struct { node.EffectNode } @@ -17,7 +17,7 @@ func (e *Effect407) Skill_Use() bool { effectValue := int8(e.Args()[1].IntPart()) // 等级+n duration := int(e.Args()[2].IntPart()) // 持续m回合 - e.GenSub(&Effect407_sub{ + addSubEffect(e.Ctx().Our, e.Ctx().Our, &e.EffectNode, &Effect407_sub{ effectType: effectType, effectValue: effectValue, }, duration) diff --git a/logic/service/fight/effect/410.go b/logic/service/fight/effect/410.go index cdfc1bb5b..98a4298c5 100644 --- a/logic/service/fight/effect/410.go +++ b/logic/service/fight/effect/410.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 410 - n%回复自身1/m体力值 +// Effect 410: {0}%回复自身1/{1}体力值 type Effect410 struct { node.EffectNode } diff --git a/logic/service/fight/effect/412.go b/logic/service/fight/effect/412.go index 15132d298..e86d6b732 100644 --- a/logic/service/fight/effect/412.go +++ b/logic/service/fight/effect/412.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 412 - 若自身体力小于1/n,则每次攻击不消耗PP值 +// Effect 412: 若自身体力小于1/{0},则每次攻击不消耗PP值 type Effect412 struct { node.EffectNode } diff --git a/logic/service/fight/effect/417.go b/logic/service/fight/effect/417.go index 664ce708c..1c139c088 100644 --- a/logic/service/fight/effect/417.go +++ b/logic/service/fight/effect/417.go @@ -4,14 +4,13 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 417 - n回合内自身攻击技能造成伤害的m%会恢复自身体力 +// Effect 417: {0}回合内自身攻击技能造成伤害的{1}%会恢复自身体力 type Effect417 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect417) SkillHit_ex() bool { @@ -27,10 +26,6 @@ func (e *Effect417) SkillHit_ex() bool { return true } -func (e *Effect417) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 417, &Effect417{}) diff --git a/logic/service/fight/effect/418.go b/logic/service/fight/effect/418.go index 6c3d26c7e..bc3d2e732 100644 --- a/logic/service/fight/effect/418.go +++ b/logic/service/fight/effect/418.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 418 - 若对手处于能力提升状态则对方XX等级+/-n +// Effect 418: 若对手处于能力提升状态则对方{0}等级{1} type Effect418 struct { node.EffectNode } diff --git a/logic/service/fight/effect/420.go b/logic/service/fight/effect/420.go index 62afde5b4..57039c587 100644 --- a/logic/service/fight/effect/420.go +++ b/logic/service/fight/effect/420.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 420 - 使用了该技能后,若受到消除强化类技能攻击,则对方则对方攻击和特攻等级+/-n +// Effect 420: 使用了该技能后,若受到消除强化类技能攻击,则对方攻击和特攻等级{0} type Effect420 struct { - node.EffectNode + FixedDurationNeg1Base } func (e *Effect420) PropBefer(in *input.Input, prop int8, level int8) bool { @@ -24,10 +23,6 @@ func (e *Effect420) PropBefer(in *input.Input, prop int8, level int8) bool { } return true } -func (e *Effect420) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(-1) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 420, &Effect420{}) diff --git a/logic/service/fight/effect/422.go b/logic/service/fight/effect/422.go index 597948e56..7974c618e 100644 --- a/logic/service/fight/effect/422.go +++ b/logic/service/fight/effect/422.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 422 - 附加所造成伤害值X%的固定伤害 +// Effect 422: 附加所造成伤害值{0}%的固定伤害 type Effect422 struct { node.EffectNode } diff --git a/logic/service/fight/effect/424.go b/logic/service/fight/effect/424.go index 2128fe029..2c759e371 100644 --- a/logic/service/fight/effect/424.go +++ b/logic/service/fight/effect/424.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 424 - n回合内,对手每回合速度等级m +// Effect 424: {0}回合内对手每回合速度等级{1} type Effect424 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect424) Skill_Use() bool { @@ -15,10 +14,6 @@ func (e *Effect424) Skill_Use() bool { return true } -func (e *Effect424) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 424, &Effect424{}) diff --git a/logic/service/fight/effect/425.go b/logic/service/fight/effect/425.go index 604bfc27c..2f899be62 100644 --- a/logic/service/fight/effect/425.go +++ b/logic/service/fight/effect/425.go @@ -7,7 +7,7 @@ import ( "github.com/gogf/gf/v2/util/grand" ) -// 425 - 随机使对手n项属性m,并将该属性附加给自己 +// Effect 425: 随机吸取对手{0}项属性{1},并将该属性附加给自己 type Effect425 struct { node.EffectNode } diff --git a/logic/service/fight/effect/427.go b/logic/service/fight/effect/427.go index 4e282001b..990cf5470 100644 --- a/logic/service/fight/effect/427.go +++ b/logic/service/fight/effect/427.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 427 - n回合内每次直接攻击都会使对手防御和特防m +// Effect 427: {0}回合内每次直接攻击都会使对手防御和特防{1} type Effect427 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect427) Skill_Use() bool { @@ -25,10 +24,6 @@ func (e *Effect427) Skill_Use() bool { return true } -func (e *Effect427) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 427, &Effect427{}) diff --git a/logic/service/fight/effect/428.go b/logic/service/fight/effect/428.go index f139db19a..d1cec498f 100644 --- a/logic/service/fight/effect/428.go +++ b/logic/service/fight/effect/428.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 428 - 遇到天敌时附加m点固定伤害 +// Effect 428: 遇到天敌时附加{0}点固定伤害 type Effect428 struct { node.EffectNode } diff --git a/logic/service/fight/effect/430.go b/logic/service/fight/effect/430.go index 44df28216..b05c63577 100644 --- a/logic/service/fight/effect/430.go +++ b/logic/service/fight/effect/430.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 430 - 消除对手能力强化状态,若消除状态成功,则自身XX等级m +// Effect 430: 消除对手能力提升状态,若消除状态成功,则自身{0}等级+{1} type Effect430 struct { node.EffectNode } diff --git a/logic/service/fight/effect/432.go b/logic/service/fight/effect/432.go index 12b1525ff..c7bbcbe23 100644 --- a/logic/service/fight/effect/432.go +++ b/logic/service/fight/effect/432.go @@ -2,21 +2,18 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) func init() { - t := &Effect432{ - EffectNode: node.EffectNode{}, - } + t := &Effect432{} input.InitEffect(input.EffectType.Skill, 432, t) } -// 432 - n回合内对手所有攻击必定MISS,必中技能有效 +// Effect 432: {0}回合内对手所有攻击必定MISS,必中技能有效 type Effect432 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect432) SkillHit_ex() bool { @@ -30,8 +27,3 @@ func (e *Effect432) SkillHit_ex() bool { return true } - -func (e *Effect432) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} diff --git a/logic/service/fight/effect/434.go b/logic/service/fight/effect/434.go index 030ef37f1..f3f2ba8b0 100644 --- a/logic/service/fight/effect/434.go +++ b/logic/service/fight/effect/434.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 434 - 若自身处于能力强化状态,则n%几率令对手XX +// Effect 434: 若自身处于能力提升状态则{0}%概率令对手{1} type Effect434 struct { node.EffectNode } diff --git a/logic/service/fight/effect/437.go b/logic/service/fight/effect/437.go index cdced0fda..5cc005601 100644 --- a/logic/service/fight/effect/437.go +++ b/logic/service/fight/effect/437.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 437 - 若对手处于能力强化状态,则对手XX等级m +// Effect 437: 若对手处于能力提升状态,则对手{0}等级{1} type Effect437 struct { node.EffectNode } diff --git a/logic/service/fight/effect/440.go b/logic/service/fight/effect/440.go index c275cc383..d3cffa4bc 100644 --- a/logic/service/fight/effect/440.go +++ b/logic/service/fight/effect/440.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 440 - n回合内对手使用技能消耗的PP值变为m倍 +// Effect 440: {0}回合内对手使用技能消耗的PP值变为{1}倍 type Effect440 struct { node.EffectNode } @@ -13,9 +13,9 @@ type Effect440 struct { func (e *Effect440) Skill_Use() bool { // 创建一个延迟生效的效果,在下一回合开始生效 - e.Ctx().Opp.AddEffect(e.Ctx().Our, e.GenSub(&Effect440_sub{ + addSubEffect(e.Ctx().Our, e.Ctx().Opp, &e.EffectNode, &Effect440_sub{ m: int(e.Args()[1].IntPart()), - }, int(e.Args()[0].IntPart()))) + }, int(e.Args()[0].IntPart())) return true } diff --git a/logic/service/fight/effect/442.go b/logic/service/fight/effect/442.go index 41e0b199c..67f0d2d2a 100644 --- a/logic/service/fight/effect/442.go +++ b/logic/service/fight/effect/442.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 442 - m%令对手XX,每次造成的伤害值都将恢复自身体力 +// Effect 442: {0}%另对手{1},每次造成的伤害值都将恢复自身体力 type Effect442 struct { node.EffectNode } diff --git a/logic/service/fight/effect/443.go b/logic/service/fight/effect/443.go index e364ba461..9a8ae59a3 100644 --- a/logic/service/fight/effect/443.go +++ b/logic/service/fight/effect/443.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 443 - n回合内若受到的伤害超过m,则对手疲惫x回合 +// Effect 443: {0}回合内若受到的伤害超过{1}则对手疲惫{2}回合 type Effect443 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect443) Skill_Use_ex() bool { @@ -28,10 +27,6 @@ func (e *Effect443) Skill_Use_ex() bool { return true } -func (e *Effect443) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 443, &Effect443{}) diff --git a/logic/service/fight/effect/444.go b/logic/service/fight/effect/444.go index 5cf5289b2..7a180fa7f 100644 --- a/logic/service/fight/effect/444.go +++ b/logic/service/fight/effect/444.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 444 - 降低对手所有PP一点,并恢复自身所有PP一点 +// Effect 444: 降低对手所有PP一点,并恢复自身所有PP一点 type Effect444 struct { node.EffectNode } diff --git a/logic/service/fight/effect/446_626.go b/logic/service/fight/effect/446_626.go index bf4ea5d8f..b99c42602 100644 --- a/logic/service/fight/effect/446_626.go +++ b/logic/service/fight/effect/446_626.go @@ -7,17 +7,7 @@ import ( "github.com/gogf/gf/v2/util/grand" ) -// "id": 446, -// "argsNum": 0, -// "info": "随机自身3项属性+1" - -// { -// "id": 626, -// "argsNum": 2, -// "info": "随机使自己{0}项能力+{1}" -// }, -// -// 626 - 消除对手能力强化状态,若消除状态成功,则自身XX等级m +// Effect 626: 随机使自己{0}项能力+{1} type Effect626 struct { node.EffectNode } diff --git a/logic/service/fight/effect/449.go b/logic/service/fight/effect/449.go index 8603d65aa..44a980e9c 100644 --- a/logic/service/fight/effect/449.go +++ b/logic/service/fight/effect/449.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 449 - 若对手处于能力下降状态则N%几率XX +// Effect 449: 若对手处于能力下降状态则{0}%概率{1} type Effect449 struct { node.EffectNode } diff --git a/logic/service/fight/effect/453.go b/logic/service/fight/effect/453.go index b07439ef4..e00fc93a7 100644 --- a/logic/service/fight/effect/453.go +++ b/logic/service/fight/effect/453.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 453 - 消除对手能力强化状态,若消除成功,则对手XX +// Effect 453: 消除对手能力提升状态,若消除成功,则对手{0} type Effect453 struct { node.EffectNode } diff --git a/logic/service/fight/effect/454.go b/logic/service/fight/effect/454.go index 78420105b..d0ffe6ca5 100644 --- a/logic/service/fight/effect/454.go +++ b/logic/service/fight/effect/454.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 454 - 当自身血量少于1/n时先制+m(写死了先制只能+1) +// Effect 454: 当自身血量少于1/{0}时先制+{1} type Effect454 struct { node.EffectNode } diff --git a/logic/service/fight/effect/456.go b/logic/service/fight/effect/456.go index 9e35affbb..17866067c 100644 --- a/logic/service/fight/effect/456.go +++ b/logic/service/fight/effect/456.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 456 - 若对手体力不足n则直接秒杀 +// Effect 456: 若对手体力不足{0}则直接秒杀 type Effect456 struct { node.EffectNode } diff --git a/logic/service/fight/effect/458.go b/logic/service/fight/effect/458.go index 9a4a03d7d..5e194b99a 100644 --- a/logic/service/fight/effect/458.go +++ b/logic/service/fight/effect/458.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 458 - 若先出手则造成攻击伤害的n%恢复自身体力 +// Effect 458: 若先出手则造成攻击伤害的{0}%恢复自身体力 type Effect458 struct { node.EffectNode } diff --git a/logic/service/fight/effect/460.go b/logic/service/fight/effect/460.go index 6c3f498da..bbbeba174 100644 --- a/logic/service/fight/effect/460.go +++ b/logic/service/fight/effect/460.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 460 - m%几率令对手害怕,若对手处于能力强化状态则额外附加n%几率 +// Effect 460: {0}%概率令对手害怕,若对手处于能力提升状态则额外附加{1}%概率 type Effect460 struct { node.EffectNode } diff --git a/logic/service/fight/effect/461.go b/logic/service/fight/effect/461.go index 52bf075b8..cfdaba688 100644 --- a/logic/service/fight/effect/461.go +++ b/logic/service/fight/effect/461.go @@ -4,12 +4,11 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 461 - 使用后若自身体力低于1/m则从下回合开始必定致命一击 +// Effect 461: 若自身生命值低于1/{0}则从下回合开始必定致命一击 type Effect461 struct { - node.EffectNode + FixedDuration1Base can bool } @@ -25,10 +24,6 @@ func (e *Effect461) Skill_Use() bool { return true } -func (e *Effect461) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(1) // 持续n回合 -} func (e *Effect461) ActionStart(a, b *action.SelectSkillAction) bool { if !e.can { return true diff --git a/logic/service/fight/effect/462.go b/logic/service/fight/effect/462.go index 2651d0e97..e6b21fdfd 100644 --- a/logic/service/fight/effect/462.go +++ b/logic/service/fight/effect/462.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 462 - n回合内受攻击时反弹m点固定伤害 +// Effect 462: {0}回合内受攻击时反弹{1}点固定伤害 type Effect462 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect462) Skill_Use_ex() bool { @@ -28,10 +27,6 @@ func (e *Effect462) Skill_Use_ex() bool { return true } -func (e *Effect462) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 462, &Effect462{}) diff --git a/logic/service/fight/effect/464.go b/logic/service/fight/effect/464.go index c41c7ea45..5a857464e 100644 --- a/logic/service/fight/effect/464.go +++ b/logic/service/fight/effect/464.go @@ -7,7 +7,7 @@ import ( "blazing/logic/service/fight/node" ) -// 464 - 遇到天敌时m%令对手烧伤 +// Effect 464: 遇到天敌时{0}%令对手烧伤 type Effect464 struct { node.EffectNode } diff --git a/logic/service/fight/effect/468.go b/logic/service/fight/effect/468.go index 64b7f335a..e09cdf68b 100644 --- a/logic/service/fight/effect/468.go +++ b/logic/service/fight/effect/468.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 468 - 回合开始时,若自身处于能力下降状态,则威力翻倍,同时解除能力下降状态 +// Effect 468: 回合开始时,若自身处于能力下降状态,则威力翻倍,同时解除能力下降状态 type Effect468 struct { node.EffectNode } diff --git a/logic/service/fight/effect/469.go b/logic/service/fight/effect/469.go index ac1b0a5f1..f65362740 100644 --- a/logic/service/fight/effect/469.go +++ b/logic/service/fight/effect/469.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 469 - m回合内若对手使用属性技能则n%几率另对手XX +// Effect 469: {0}回合内若对手使用属性技能则{1}%概率令对手{2} type Effect469 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect469) Skill_Use_ex() bool { @@ -28,24 +27,14 @@ func (e *Effect469) Skill_Use_ex() bool { return true } -func (e *Effect469) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 469, &Effect469{}) input.InitEffect(input.EffectType.Skill, 526, &Effect526{}) } -// { -// "id": 526, -// "argsNum": 2, -// "info": "{0}回合内若对手成功使用属性技能则受到{1}点固定伤害" -// }, -// -// 469 - m回合内若对手使用属性技能则n%几率另对手XX +// Effect 526: {0}回合内若对手成功使用属性技能则受到{1}点固定伤害 type Effect526 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect526) Skill_Use_ex() bool { @@ -59,8 +48,3 @@ func (e *Effect526) Skill_Use_ex() bool { return true } - -func (e *Effect526) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续m回合 -} diff --git a/logic/service/fight/effect/470.go b/logic/service/fight/effect/470.go index cb8312b82..07da76b79 100644 --- a/logic/service/fight/effect/470.go +++ b/logic/service/fight/effect/470.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 470 - n回合内若自身攻击技能命中则m%令对手p +// Effect 470: {0}回合内若自身攻击技能命中则{1}%令对手{2} type Effect470 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect470) Skill_Use_ex() bool { @@ -28,10 +27,6 @@ func (e *Effect470) Skill_Use_ex() bool { return true } -func (e *Effect470) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 470, &Effect470{}) diff --git a/logic/service/fight/effect/471.go b/logic/service/fight/effect/471.go index d027aa8f2..a453ab9c6 100644 --- a/logic/service/fight/effect/471.go +++ b/logic/service/fight/effect/471.go @@ -2,20 +2,14 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 471 - 先出手时n回合内免疫异常状态 +// Effect 471: 先出手时{0}回合内免疫异常状态 type Effect471 struct { - node.EffectNode + RoundEffectArg0Base can bool } -func (e *Effect471) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续m回合 -} - func init() { input.InitEffect(input.EffectType.Skill, 471, &Effect471{}) @@ -49,15 +43,11 @@ func init() { } -// 191 - n回合内免疫并反弹所有受到的异常状态 +// Effect 191: {0}回合内免疫并反弹所有受到的异常状态 type Effect191 struct { - node.EffectNode + RoundEffectArg0Base } -func (e *Effect191) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续m回合 -} func (e *Effect191) EFFect_Befer(in *input.Input, effEffect input.Effect) bool { if in != e.Ctx().Opp { diff --git a/logic/service/fight/effect/473.go b/logic/service/fight/effect/473.go index 9e727380d..ddaaf13fd 100644 --- a/logic/service/fight/effect/473.go +++ b/logic/service/fight/effect/473.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 473 - 若造成的伤害不足m,则自身XX等级+n +// Effect 473: 若造成的伤害不足{0},则自身{1}等级+{2} type Effect473 struct { node.EffectNode } diff --git a/logic/service/fight/effect/474.go b/logic/service/fight/effect/474.go index 1475a111d..a4f222c20 100644 --- a/logic/service/fight/effect/474.go +++ b/logic/service/fight/effect/474.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 474 - 先出手时m%自身XX等级+n +// Effect 474: 先出手时{1}%自身{0}等级+{2} type Effect474 struct { node.EffectNode } diff --git a/logic/service/fight/effect/475.go b/logic/service/fight/effect/475.go index e35469f29..8aca41ffd 100644 --- a/logic/service/fight/effect/475.go +++ b/logic/service/fight/effect/475.go @@ -7,7 +7,7 @@ import ( "blazing/logic/service/fight/node" ) -// 475 - 若造成的伤害不足m,则下n回合的攻击必定致命一击 +// Effect 475: 若造成的伤害不足{0},则下{1}回合的攻击必定致命一击 type Effect475 struct { node.EffectNode damageThreshold int @@ -21,7 +21,7 @@ func (e *Effect475) Skill_Use() bool { if damageDone.IntPart() < int64(damageThreshold) { critDuration := int(e.Args()[1].IntPart()) - e.Ctx().Our.AddEffect(e.Ctx().Our, e.GenSub(&Effect475_sub{}, critDuration)) + addSubEffect(e.Ctx().Our, e.Ctx().Our, &e.EffectNode, &Effect475_sub{}, critDuration) } diff --git a/logic/service/fight/effect/476.go b/logic/service/fight/effect/476.go index 3d39c7b30..52ff98337 100644 --- a/logic/service/fight/effect/476.go +++ b/logic/service/fight/effect/476.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 476 - 后出手时恢复m点体力 +// Effect 476: 后出手时恢复{0}点体力 type Effect476 struct { node.EffectNode } diff --git a/logic/service/fight/effect/477.go b/logic/service/fight/effect/477.go index f413d3594..dea0b7b38 100644 --- a/logic/service/fight/effect/477.go +++ b/logic/service/fight/effect/477.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 477 - n回合内若受到攻击,则对手攻击,防御,特攻,特防,速度,命中等级降低 +// Effect 477: {0}回合内若受到攻击,则对手{1} type Effect477 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect477) Skill_Use_ex() bool { @@ -25,10 +24,6 @@ func (e *Effect477) Skill_Use_ex() bool { return true } -func (e *Effect477) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 477, &Effect477{}) diff --git a/logic/service/fight/effect/483.go b/logic/service/fight/effect/483.go index 3950b8c63..d124f9c30 100644 --- a/logic/service/fight/effect/483.go +++ b/logic/service/fight/effect/483.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 483 - -1 -1 -1 -1 -1 -1,后出手时弱化效果翻倍 +// Effect 483: 对手{0},后出手时弱化效果翻倍 type Effect483 struct { node.EffectNode } diff --git a/logic/service/fight/effect/485.go b/logic/service/fight/effect/485.go index a5d614e99..500940fda 100644 --- a/logic/service/fight/effect/485.go +++ b/logic/service/fight/effect/485.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 485 - 消除对手能力强化状态,若消除成功,则自身恢复所有体力 +// Effect 485: 消除对手能力提升状态,消除成功则恢复自身所有体力 type Effect485 struct { node.EffectNode } diff --git a/logic/service/fight/effect/486.go b/logic/service/fight/effect/486.go index b8312328a..83d5c09d1 100644 --- a/logic/service/fight/effect/486.go +++ b/logic/service/fight/effect/486.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 486 - 下n回合若自身选择使用技能则无视对手能力提升状态 +// Effect 486: 下{0}回合若自身选择使用技能则无视对手能力提升状态 type Effect486 struct { - node.EffectNode + RoundEffectArg0Base can bool } @@ -26,11 +25,6 @@ func (e *Effect486) CalculatePre() bool { return true } -func (e *Effect486) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 486, &Effect486{}) diff --git a/logic/service/fight/effect/488.go b/logic/service/fight/effect/488.go index d6127efc9..2ae8114ce 100644 --- a/logic/service/fight/effect/488.go +++ b/logic/service/fight/effect/488.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 488 - 若对手的体力小于400,则造成的伤害增加10% +// Effect 488: 若对手的HP小于{0},则造成的伤害增加{1}% type Effect488 struct { node.EffectNode } diff --git a/logic/service/fight/effect/489.go b/logic/service/fight/effect/489.go index 3e0696af5..f7ce5a991 100644 --- a/logic/service/fight/effect/489.go +++ b/logic/service/fight/effect/489.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 489 - 若自身处于能力提升状态,则每次攻击恢复自身体力的1/m +// Effect 489: 若自身处于能力提升状态,则每次攻击恢复自身体力的1/{0} type Effect489 struct { node.EffectNode } diff --git a/logic/service/fight/effect/491.go b/logic/service/fight/effect/491.go index c003ebe78..1e43ececb 100644 --- a/logic/service/fight/effect/491.go +++ b/logic/service/fight/effect/491.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 491 - 3回合内对手造成的伤害降低m% +// Effect 491: {0}回合内对手造成的伤害降低{1}% type Effect491 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect491) DamageDivEx(t *info.DamageZone) bool { @@ -26,10 +25,6 @@ func (e *Effect491) DamageDivEx(t *info.DamageZone) bool { return true } -func (e *Effect491) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 491, &Effect491{}) diff --git a/logic/service/fight/effect/492.go b/logic/service/fight/effect/492.go index 5a98acb44..74cd3eaf3 100644 --- a/logic/service/fight/effect/492.go +++ b/logic/service/fight/effect/492.go @@ -4,12 +4,11 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 492 - 2回合内若对手使用属性技能,自身立刻恢复1/m体力且防御+x特防+y +// Effect 492: {0}回合内对方使用属性技能,则自身立刻恢复1/{1}生命值且{2}+{3},{4}+{5} type Effect492 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect492) Skill_Use_ex() bool { @@ -26,10 +25,6 @@ func (e *Effect492) Skill_Use_ex() bool { return true } -func (e *Effect492) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续2回合 -} func init() { input.InitEffect(input.EffectType.Skill, 492, &Effect492{}) diff --git a/logic/service/fight/effect/493.go b/logic/service/fight/effect/493.go index 26be787ea..6c0fc51c1 100644 --- a/logic/service/fight/effect/493.go +++ b/logic/service/fight/effect/493.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 493 - m回合内若对手使用攻击技能则自身下n回合必定暴击 +// Effect 493: {0}回合内若对方使用攻击技能则自身下{1}回合必定暴击 type Effect493 struct { - node.EffectNode + RoundEffectArg0Base can bool } @@ -28,11 +27,6 @@ func (e *Effect493) SkillHit() bool { return true } -func (e *Effect493) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 493, &Effect493{}) diff --git a/logic/service/fight/effect/494.go b/logic/service/fight/effect/494.go index dc69a1ed3..931471b2c 100644 --- a/logic/service/fight/effect/494.go +++ b/logic/service/fight/effect/494.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 494 - 无视对手能力提升状态 +// Effect 494: 无视对手能力提升状态 type Effect494 struct { node.EffectNode } diff --git a/logic/service/fight/effect/495.go b/logic/service/fight/effect/495.go index e3cc23eef..a2da8c853 100644 --- a/logic/service/fight/effect/495.go +++ b/logic/service/fight/effect/495.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 495 - 若对手处于XX状态,则30%几率秒杀对手 +// Effect 495: 若对手处于{0}状态,则{1}%概率秒杀对手 type Effect495 struct { node.EffectNode } diff --git a/logic/service/fight/effect/496.go b/logic/service/fight/effect/496.go index 06ca46b48..0e0ae762f 100644 --- a/logic/service/fight/effect/496.go +++ b/logic/service/fight/effect/496.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 496 - 若打出致命一击则恢复自身所有体力 +// Effect 496: 若打出致命一击则恢复自身所有体力 type Effect496 struct { node.EffectNode } diff --git a/logic/service/fight/effect/497.go b/logic/service/fight/effect/497.go index 5690faf38..0a57aeafb 100644 --- a/logic/service/fight/effect/497.go +++ b/logic/service/fight/effect/497.go @@ -9,7 +9,7 @@ import ( "github.com/barkimedes/go-deepcopy" ) -// 457 - 复制对手释放的技能(组队对战时无效) +// Effect 457: 复制对手释放的技能(组队对战时无效) type Effect457 struct { node.EffectNode org *info.SkillEntity diff --git a/logic/service/fight/effect/498.go b/logic/service/fight/effect/498.go index 0a256bf39..07e24633d 100644 --- a/logic/service/fight/effect/498.go +++ b/logic/service/fight/effect/498.go @@ -4,12 +4,11 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 498 - n回合内致命一击几率上升1/m +// Effect 498: {0}回合内致命一击概率上升1/{1} type Effect498 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect498) ActionStart(a, b *action.SelectSkillAction) bool { @@ -29,10 +28,6 @@ func (e *Effect498) ActionStart(a, b *action.SelectSkillAction) bool { return true } -func (e *Effect498) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 498, &Effect498{}) diff --git a/logic/service/fight/effect/500.go b/logic/service/fight/effect/500.go index e4575b57a..3ace5032e 100644 --- a/logic/service/fight/effect/500.go +++ b/logic/service/fight/effect/500.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 500 - 若对手处于害怕状态则伤害翻倍 +// Effect 500: 若对手处于害怕状态则伤害翻倍 type Effect500 struct { node.EffectNode } diff --git a/logic/service/fight/effect/501.go b/logic/service/fight/effect/501.go index 89c256e89..a9a073d7b 100644 --- a/logic/service/fight/effect/501.go +++ b/logic/service/fight/effect/501.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 501 - 若造成的伤害不足m,则对手XX等级-n +// Effect 501: 若造成的伤害不足{0},则对手{1}等级-{2} type Effect501 struct { node.EffectNode } diff --git a/logic/service/fight/effect/503.go b/logic/service/fight/effect/503.go index 3c241809b..3a9e398b1 100644 --- a/logic/service/fight/effect/503.go +++ b/logic/service/fight/effect/503.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 503 - 若造成的伤害不足m,则回合结束时对手损失n点固定体力 +// Effect 503: 若造成的伤害不足{0},则回合结束时对手损失{1}点固定体力 type Effect503 struct { node.EffectNode triggered bool diff --git a/logic/service/fight/effect/504.go b/logic/service/fight/effect/504.go index b020edc27..c26c792b0 100644 --- a/logic/service/fight/effect/504.go +++ b/logic/service/fight/effect/504.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 504 - m%令对手害怕,若没有触发害怕效果,则对手攻击,防御,特攻,特防,速度,命中等级下降 +// Effect 504: {0}%令对手害怕,若没有触发害怕效果,则对手{1} type Effect504 struct { node.EffectNode } @@ -23,10 +23,10 @@ func (e *Effect504) OnSkill() bool { } } else { for i, effectId := range e.SideEffectArgs[1:] { - if effectId!=0 { + if effectId != 0 { e.Ctx().Opp.SetProp(e.Ctx().Our, int8(i), int8(effectId)) } - + } } diff --git a/logic/service/fight/effect/505.go b/logic/service/fight/effect/505.go index e607316cc..826b6a739 100644 --- a/logic/service/fight/effect/505.go +++ b/logic/service/fight/effect/505.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 505 - 若打出致命一击,则造成伤害值的m%恢复自身体力 +// Effect 505: 若打出致命一击,则造成伤害值的{0}%恢复自身体力 type Effect505 struct { node.EffectNode } diff --git a/logic/service/fight/effect/506.go b/logic/service/fight/effect/506.go index b85a64b8f..214c21e1f 100644 --- a/logic/service/fight/effect/506.go +++ b/logic/service/fight/effect/506.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 506 - 下回合受到致命伤害时残留m点体力 +// Effect 506: 下回合受到致命伤害时残留{0}点体力 type Effect506 struct { node.EffectNode triggered bool diff --git a/logic/service/fight/effect/507.go b/logic/service/fight/effect/507.go index 334f828d5..e0bc3c472 100644 --- a/logic/service/fight/effect/507.go +++ b/logic/service/fight/effect/507.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 507 - 下回合若受到的伤害大于m,则恢复自身所有体力 +// Effect 507: 下回合若受到的伤害大于{0},则恢复自身所有体力 type Effect507 struct { node.EffectNode threshold int diff --git a/logic/service/fight/effect/511.go b/logic/service/fight/effect/511.go index 502a3d23f..c9aaf9a99 100644 --- a/logic/service/fight/effect/511.go +++ b/logic/service/fight/effect/511.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 511 - n%概率威力翻倍 体力低于1/m时概率增加k% +// Effect 511: {0}%概率威力翻倍 体力低于1/{1}时概率增加{2}% type Effect511 struct { node.EffectNode } diff --git a/logic/service/fight/effect/512.go b/logic/service/fight/effect/512.go index 552c2db4a..e73bd1807 100644 --- a/logic/service/fight/effect/512.go +++ b/logic/service/fight/effect/512.go @@ -5,11 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 512, -// "argsNum": 1, -// "info": "自身{0},40%概率强化翻倍" -// }, +// Effect 512: 自身{0},40%概率强化翻倍 type Effect512 struct { node.EffectNode } diff --git a/logic/service/fight/effect/513.go b/logic/service/fight/effect/513.go index c56bce22c..dd1921cb2 100644 --- a/logic/service/fight/effect/513.go +++ b/logic/service/fight/effect/513.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 513 - 处在烧伤、中毒、冻伤状态时威力翻倍,命中后解除这些异常状态 +// Effect 513: 处在烧伤、中毒、冻伤状态时威力翻倍,命中后解除这些异常状态 type Effect513 struct { node.EffectNode } @@ -41,6 +41,7 @@ func init() { input.InitEffect(input.EffectType.Skill, 544, &Effect544{}) } +// Effect 544: 解除自身的烧伤、冻伤、中毒状态 type Effect544 struct { node.EffectNode } diff --git a/logic/service/fight/effect/516.go b/logic/service/fight/effect/516.go index 2e5e8b005..84cefe1c9 100644 --- a/logic/service/fight/effect/516.go +++ b/logic/service/fight/effect/516.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 516 - 1 1 1 1 1 1 1 体力低于1/n时强化效果翻倍 +// Effect 516: {0},体力值低于1/{6}时强化效果翻倍 type Effect516 struct { node.EffectNode } diff --git a/logic/service/fight/effect/518.go b/logic/service/fight/effect/518.go index 83e94105d..bbfe7375c 100644 --- a/logic/service/fight/effect/518.go +++ b/logic/service/fight/effect/518.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 518 - 若伤害高于m,则自身XX等级+n +// Effect 518: 若伤害高于{0},则自身{1}+{2} type Effect518 struct { node.EffectNode } diff --git a/logic/service/fight/effect/521.go b/logic/service/fight/effect/521.go index 17f97eac6..051f48c6e 100644 --- a/logic/service/fight/effect/521.go +++ b/logic/service/fight/effect/521.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 521 - 反转自身能力下降状态 +// Effect 521: 反转自身能力下降状态 type Effect521 struct { node.EffectNode } diff --git a/logic/service/fight/effect/522.go b/logic/service/fight/effect/522.go index cf608e75c..3d9b9acc3 100644 --- a/logic/service/fight/effect/522.go +++ b/logic/service/fight/effect/522.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 522 - n回合内若处于异常状态则受到伤害减少m点 +// Effect 522: {0}回合内若自身处于异常状态则受到伤害减少{1}点 type Effect522 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect522) DamageSubEx(t *info.DamageZone) bool { @@ -28,10 +27,6 @@ func (e *Effect522) DamageSubEx(t *info.DamageZone) bool { return true } -func (e *Effect522) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 522, &Effect522{}) diff --git a/logic/service/fight/effect/523.go b/logic/service/fight/effect/523.go index 1c6e7cb6c..a7c5e1bcf 100644 --- a/logic/service/fight/effect/523.go +++ b/logic/service/fight/effect/523.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 523 - 若当回合未击败对手,则自身1 1 1 1 1 1能力+1 +// Effect 523: 攻击结束时自身{0} type Effect523 struct { node.EffectNode } diff --git a/logic/service/fight/effect/524.go b/logic/service/fight/effect/524.go index 630563622..a0ce5a117 100644 --- a/logic/service/fight/effect/524.go +++ b/logic/service/fight/effect/524.go @@ -3,17 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 524 - {0}回合内若被对手击败则对手疲惫{1}回合 +// Effect 524: {0}回合内若被对手击败则对手疲惫{1}回合 type Effect524 struct { - node.EffectNode -} - -func (e *Effect524) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 + RoundEffectArg0Base } func (e *Effect524) SwitchOut(in *input.Input) bool { @@ -33,4 +27,4 @@ func (e *Effect524) SwitchOut(in *input.Input) bool { func init() { input.InitEffect(input.EffectType.Skill, 524, &Effect524{}) -} \ No newline at end of file +} diff --git a/logic/service/fight/effect/525.go b/logic/service/fight/effect/525.go index 592bd2c0b..bcc8e0e28 100644 --- a/logic/service/fight/effect/525.go +++ b/logic/service/fight/effect/525.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 525 - {0}回合内有{1}%概率免疫对手的攻击伤害 +// Effect 525: {0}回合内有{1}%概率免疫对手的攻击伤害 type Effect525 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect525) DamageLockEx(t *info.DamageZone) bool { @@ -21,10 +20,6 @@ func (e *Effect525) DamageLockEx(t *info.DamageZone) bool { return true } -func (e *Effect525) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 525, &Effect525{}) diff --git a/logic/service/fight/effect/527.go b/logic/service/fight/effect/527.go index 3f9526782..2e8fb1085 100644 --- a/logic/service/fight/effect/527.go +++ b/logic/service/fight/effect/527.go @@ -2,18 +2,13 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 527, -// "argsNum": 2, -// "info": "使用技能时体力低于1/{0},则{1}回合内免疫异常状态" -// }, +// Effect 527: 使用技能时体力低于1/{0},则{1}回合内免疫异常状态 type Effect527 struct { - node.EffectNode + RoundEffectArg0Base can bool } @@ -49,12 +44,6 @@ func (e *Effect527) OnSkill() bool { return true } -func (e *Effect527) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} - func init() { input.InitEffect(input.EffectType.Skill, 527, &Effect527{}) } diff --git a/logic/service/fight/effect/528.go b/logic/service/fight/effect/528.go index fbd06cc9c..8daf23311 100644 --- a/logic/service/fight/effect/528.go +++ b/logic/service/fight/effect/528.go @@ -2,16 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// { -// "id": 528, -// "argsNum": 1, -// "info": "先出手时{0}回合内不受能力下降技能影响" -// }, +// Effect 528: 先出手时{0}回合内不受能力下降技能影响 type Effect528 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect528) OnSkill() bool { @@ -39,11 +34,6 @@ func (e *Effect528) PropBefer(in *input.Input, prop int8, level int8) bool { return true } -func (e *Effect528) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 528, &Effect528{}) } diff --git a/logic/service/fight/effect/529.go b/logic/service/fight/effect/529.go new file mode 100644 index 000000000..d7b396b33 --- /dev/null +++ b/logic/service/fight/effect/529.go @@ -0,0 +1,52 @@ +package effect + +import ( + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" + + "github.com/alpacahq/alpacadecimal" +) + +// Effect 529: 使自身体力百分比与对手体力百分比对调 +type Effect529 struct { + node.EffectNode +} + +func (e *Effect529) OnSkill() bool { + ourMaxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + oppMaxHP := e.Ctx().Opp.CurrentPet.GetMaxHP() + if ourMaxHP.IsZero() || oppMaxHP.IsZero() { + return true + } + + ourRatio := e.Ctx().Our.CurrentPet.GetHP().Div(ourMaxHP) + oppRatio := e.Ctx().Opp.CurrentPet.GetHP().Div(oppMaxHP) + + newOurHP := oppRatio.Mul(ourMaxHP).IntPart() + newOppHP := ourRatio.Mul(oppMaxHP).IntPart() + + if newOurHP < 0 { + newOurHP = 0 + } + if newOppHP < 0 { + newOppHP = 0 + } + + ourMax := ourMaxHP.IntPart() + oppMax := oppMaxHP.IntPart() + if newOurHP > ourMax { + newOurHP = ourMax + } + if newOppHP > oppMax { + newOppHP = oppMax + } + + e.Ctx().Our.CurrentPet.Info.Hp = uint32(alpacadecimal.NewFromInt(newOurHP).IntPart()) + e.Ctx().Opp.CurrentPet.Info.Hp = uint32(alpacadecimal.NewFromInt(newOppHP).IntPart()) + + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 529, &Effect529{}) +} diff --git a/logic/service/fight/effect/530.go b/logic/service/fight/effect/530.go index fb5fcce2c..16d6f2b6a 100644 --- a/logic/service/fight/effect/530.go +++ b/logic/service/fight/effect/530.go @@ -6,15 +6,15 @@ import ( "blazing/logic/service/fight/node" ) -// 530 - +// Effect 530: 使用时若自身体力低于1/{0}则恢复所有体力值 type Effect530 struct { node.EffectNode } func (e *Effect530) Skill_Use() bool { maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() - healAmount := maxHp.Div(e.Args()[0]) // 1/n - if e.Ctx().Our.CurrentPet.GetHP().Cmp(healAmount) < 0{ // 先出手 + healAmount := maxHp.Div(e.Args()[0]) // 1/n + if e.Ctx().Our.CurrentPet.GetHP().Cmp(healAmount) < 0 { // 先出手 // 回复1/n的最大体力值 diff --git a/logic/service/fight/effect/531.go b/logic/service/fight/effect/531.go index c94f6f5f3..4c43807ef 100644 --- a/logic/service/fight/effect/531.go +++ b/logic/service/fight/effect/531.go @@ -8,11 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 531, -// "argsNum": 0, -// "info": "造成的伤害低于280时每相差2点有1%的概率使对手害怕完成这些effect" -// }, +// Effect 531: 造成的伤害低于280时每相差2点有1%的概率使对手害怕 type Effect531 struct { node.EffectNode } diff --git a/logic/service/fight/effect/532.go b/logic/service/fight/effect/532.go index 0b3771b2c..808532831 100644 --- a/logic/service/fight/effect/532.go +++ b/logic/service/fight/effect/532.go @@ -4,16 +4,11 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// { -// "id": 532, -// "argsNum": 2, -// "info": "{0}回合内每回合使用技能恢复自身最大体力的1/{1}并造成等量百分比伤害" -// }, +// Effect 532: {0}回合内每回合使用技能恢复自身最大体力的1/{1}并造成等量百分比伤害 type Effect532 struct { - node.EffectNode + RoundEffectArg0Base } func (h *Effect532) OnSkill() bool { @@ -30,11 +25,6 @@ func (h *Effect532) OnSkill() bool { } // SetArgs 设置参数 -func (e *Effect532) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 532, &Effect532{}) diff --git a/logic/service/fight/effect/533.go b/logic/service/fight/effect/533.go index 278903338..04d3da8e0 100644 --- a/logic/service/fight/effect/533.go +++ b/logic/service/fight/effect/533.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 533 - 消除双方能力提升、下降状态 +// Effect 533: 消除双方能力提升、下降状态 type Effect533 struct { node.EffectNode } @@ -24,4 +24,4 @@ func (e *Effect533) OnSkill() bool { func init() { input.InitEffect(input.EffectType.Skill, 533, &Effect533{}) -} \ No newline at end of file +} diff --git a/logic/service/fight/effect/534.go b/logic/service/fight/effect/534.go index 4b04d219f..f3d668d76 100644 --- a/logic/service/fight/effect/534.go +++ b/logic/service/fight/effect/534.go @@ -8,19 +8,15 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 534, -// "argsNum": 0, -// "info": "附加防御、特防总和10%的百分比伤害" -// }, +// Effect 534: 附加防御、特防总和10%的百分比伤害 type Effect534 struct { node.EffectNode } func (e *Effect534) Skill_Use() bool { // 获取防御和特防的值 - defense := alpacadecimal.NewFromInt(int64(e.Ctx().Our.Prop[1])) // 防御值 - spDef := alpacadecimal.NewFromInt(int64(e.Ctx().Our.Prop[2])) // 特防值 + defense := alpacadecimal.NewFromInt(int64(e.Ctx().Our.Prop[1])) // 防御值 + spDef := alpacadecimal.NewFromInt(int64(e.Ctx().Our.Prop[2])) // 特防值 // 计算防御和特防的总和 totalDefSpDef := defense.Add(spDef) @@ -39,4 +35,4 @@ func (e *Effect534) Skill_Use() bool { func init() { input.InitEffect(input.EffectType.Skill, 534, &Effect534{}) -} \ No newline at end of file +} diff --git a/logic/service/fight/effect/535.go b/logic/service/fight/effect/535.go index aec48a412..bd0030b0a 100644 --- a/logic/service/fight/effect/535.go +++ b/logic/service/fight/effect/535.go @@ -2,16 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// { -// "id": 535, -// "argsNum": 0, -// "info": "{0}回合内若受到攻击则自身防御+1 特防+1" -// }, +// Effect 535: {0}回合内若受到攻击则自身防御+1 特防+1 type Effect535 struct { - node.EffectNode + RoundEffectArg0Base duration int } @@ -26,12 +21,6 @@ func (e *Effect535) Skill_Use_ex() bool { return true } -func (e *Effect535) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} - func init() { input.InitEffect(input.EffectType.Skill, 535, &Effect535{}) } diff --git a/logic/service/fight/effect/536.go b/logic/service/fight/effect/536.go index ef156f461..e61b84d2b 100644 --- a/logic/service/fight/effect/536.go +++ b/logic/service/fight/effect/536.go @@ -6,11 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 536, -// "argsNum": 1, -// "info": "若当次攻击击败对手,恢复对手体力上限1/{0}的体力" -// }, +// Effect 536: 若当次攻击击败对手,恢复对手体力上限1/{0}的体力 type Effect536 struct { node.EffectNode } diff --git a/logic/service/fight/effect/537.go b/logic/service/fight/effect/537.go index fff5f3f2e..5b53a6ef0 100644 --- a/logic/service/fight/effect/537.go +++ b/logic/service/fight/effect/537.go @@ -5,11 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 537, -// "argsNum": 1, -// "info": "自身攻击{0},若对手处于能力提升状态则强化效果翻倍" -// }, +// Effect 537: 自身攻击{0},若对手处于能力提升状态则强化效果翻倍 type Effect537 struct { node.EffectNode } diff --git a/logic/service/fight/effect/538.go b/logic/service/fight/effect/538.go index cffe19537..a6f398851 100644 --- a/logic/service/fight/effect/538.go +++ b/logic/service/fight/effect/538.go @@ -5,6 +5,7 @@ import ( "blazing/logic/service/fight/node" ) +// Effect 538: 消除对手能力提升状态,若消除成功则自身{0} type Effect538 struct { node.EffectNode } diff --git a/logic/service/fight/effect/539.go b/logic/service/fight/effect/539.go index 622b29243..09836fda6 100644 --- a/logic/service/fight/effect/539.go +++ b/logic/service/fight/effect/539.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 539 - 对手处于能力提升状态时先制额外+1且威力翻倍 +// Effect 539: 对手处于能力提升状态时先制额外+1且威力翻倍 type Effect539 struct { node.EffectNode } @@ -33,4 +33,4 @@ func (e *Effect539) SkillHit() bool { func init() { input.InitEffect(input.EffectType.Skill, 539, &Effect539{}) -} \ No newline at end of file +} diff --git a/logic/service/fight/effect/540.go b/logic/service/fight/effect/540.go index d7a644bb1..d1172130a 100644 --- a/logic/service/fight/effect/540.go +++ b/logic/service/fight/effect/540.go @@ -4,16 +4,11 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// { -// "id": 540, -// "argsNum": 1, -// "info": "若后出手则下{0}回合攻击必定致命一击" -// }, +// Effect 540: 若后出手则下{0}回合攻击必定致命一击 type Effect540 struct { - node.EffectNode + RoundEffectArg0Base can bool } @@ -42,11 +37,6 @@ func (e *Effect540) OnSkill() bool { return true } -func (e *Effect540) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 540, &Effect540{}) } diff --git a/logic/service/fight/effect/541.go b/logic/service/fight/effect/541.go index 854c1b565..c5e4d8de2 100644 --- a/logic/service/fight/effect/541.go +++ b/logic/service/fight/effect/541.go @@ -8,25 +8,21 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 541, -// "argsNum": 2, -// "info": "造成的攻击伤害若低于{0}则恢复自身{1}点体力" -// }, +// Effect 541: 造成的攻击伤害若低于{0}则恢复自身{1}点体力 type Effect541 struct { node.EffectNode } func (e *Effect541) Skill_Use() bool { - damageThreshold := int(e.Args()[0].IntPart()) // 伤害阈值 - healAmount := int(e.Args()[1].IntPart()) // 恢复体力值 + damageThreshold := int(e.Args()[0].IntPart()) // 伤害阈值 + healAmount := int(e.Args()[1].IntPart()) // 恢复体力值 // 检查造成的伤害是否低于阈值 if e.Ctx().Our.SumDamage.Cmp(alpacadecimal.NewFromInt(int64(damageThreshold))) < 0 { // 恢复指定数值的体力 e.Ctx().Our.Heal( - e.Ctx().Our, - &action.SelectSkillAction{}, + e.Ctx().Our, + &action.SelectSkillAction{}, alpacadecimal.NewFromInt(int64(healAmount)), ) } @@ -36,4 +32,4 @@ func (e *Effect541) Skill_Use() bool { func init() { input.InitEffect(input.EffectType.Skill, 541, &Effect541{}) -} \ No newline at end of file +} diff --git a/logic/service/fight/effect/542.go b/logic/service/fight/effect/542.go index 736dd57a7..c1e1c014d 100644 --- a/logic/service/fight/effect/542.go +++ b/logic/service/fight/effect/542.go @@ -8,11 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 542, -// "argsNum": 1, -// "info": "对手每处于一种能力下降状态时附加{0}点固定伤害" -// }, +// Effect 542: 对手每处于一种能力下降状态时附加{0}点固定伤害 type Effect542 struct { node.EffectNode } @@ -28,7 +24,7 @@ func (e *Effect542) Skill_Use() bool { } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ - Type: info.DamageType.Fixed, + Type: info.DamageType.Fixed, Damage: e.Args()[0].Mul(r), }) diff --git a/logic/service/fight/effect/543.go b/logic/service/fight/effect/543.go new file mode 100644 index 000000000..97e0cacad --- /dev/null +++ b/logic/service/fight/effect/543.go @@ -0,0 +1,29 @@ +package effect + +import ( + "blazing/logic/service/fight/action" + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +// Effect 543: 增加致命一击的概率 +type Effect543 struct { + node.EffectNode +} + +func (e *Effect543) ActionStart(a, b *action.SelectSkillAction) bool { + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + + e.Ctx().SkillEntity.XML.CritRate += int(e.Args()[0].IntPart()) + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 543, &Effect543{}) +} diff --git a/logic/service/fight/effect/546.go b/logic/service/fight/effect/546.go index 59c0136e9..334506221 100644 --- a/logic/service/fight/effect/546.go +++ b/logic/service/fight/effect/546.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 546 - 若对手处于{0}状态则对手{1} +// Effect 546: 若对手处于{0}状态则对手{1} type Effect546 struct { node.EffectNode } @@ -25,4 +25,4 @@ func (e *Effect546) OnSkill() bool { func init() { input.InitEffect(input.EffectType.Skill, 546, &Effect546{}) -} \ No newline at end of file +} diff --git a/logic/service/fight/effect/547.go b/logic/service/fight/effect/547.go index 112d4bb36..d849dd382 100644 --- a/logic/service/fight/effect/547.go +++ b/logic/service/fight/effect/547.go @@ -2,11 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) +// Effect 547: 使敌我双方同时{0}{1}回合 type Effect547 struct { - node.EffectNode + RoundEffectArg1Base } func (e *Effect547) Skill_Use() bool { @@ -17,10 +17,6 @@ func (e *Effect547) Skill_Use() bool { } return true } -func (e *Effect547) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[1]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 547, &Effect547{}) diff --git a/logic/service/fight/effect/548.go b/logic/service/fight/effect/548.go index 900bd29af..903de8ca0 100644 --- a/logic/service/fight/effect/548.go +++ b/logic/service/fight/effect/548.go @@ -6,11 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 548, -// "argsNum": 1, -// "info": "消除对手能力提升状态,消除成功后恢复{0}点体力" -// }, +// Effect 548: 消除对手能力提升状态,消除成功后恢复{0}点体力 type Effect548 struct { node.EffectNode } diff --git a/logic/service/fight/effect/549.go b/logic/service/fight/effect/549.go index f3064f240..72f4c3642 100644 --- a/logic/service/fight/effect/549.go +++ b/logic/service/fight/effect/549.go @@ -8,11 +8,7 @@ import ( "github.com/gogf/gf/v2/util/grand" ) -// { -// "id": 549, -// "argsNum": 1, -// "info": "使对手随机进入烧伤、冻伤、中毒、害怕、疲惫、麻痹其中{0}种异常状态" -// }, +// Effect 549: 使对手随机进入烧伤、冻伤、中毒、害怕、疲惫、麻痹其中{0}种异常状态 type Effect549 struct { node.EffectNode } diff --git a/logic/service/fight/effect/550.go b/logic/service/fight/effect/550.go index a2d081896..adb54148f 100644 --- a/logic/service/fight/effect/550.go +++ b/logic/service/fight/effect/550.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 550 - +// Effect 550: 若自身处于异常状态则恢复所有体力 type Effect550 struct { node.EffectNode } diff --git a/logic/service/fight/effect/551.go b/logic/service/fight/effect/551.go index 5372cf8c8..111b61af9 100644 --- a/logic/service/fight/effect/551.go +++ b/logic/service/fight/effect/551.go @@ -8,18 +8,14 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 551, -// "argsNum": 0, -// "info": "使对手下回合受到其他技能的伤害翻倍" -// }, +// Effect 551: 使对手下回合受到其他技能的伤害翻倍 type Effect551 struct { node.EffectNode } func (e *Effect551) OnSkill() bool { - e.Ctx().Opp.AddEffect(e.Ctx().Our, e.GenSub(&DamageDoubleEffect{}, 1)) + addSubEffect(e.Ctx().Our, e.Ctx().Opp, &e.EffectNode, &DamageDoubleEffect{}, 1) return true } diff --git a/logic/service/fight/effect/552.go b/logic/service/fight/effect/552.go index 523d10452..d5e63b5a1 100644 --- a/logic/service/fight/effect/552.go +++ b/logic/service/fight/effect/552.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 552 - 若对手处于异常状态,则{0}%概率附加{1}点伤害 +// Effect 552: 若对手处于异常状态,则{0}%概率附加{1}点伤害 type Effect552 struct { node.EffectNode } diff --git a/logic/service/fight/effect/553.go b/logic/service/fight/effect/553.go index fe65d46dd..ce98eaa5e 100644 --- a/logic/service/fight/effect/553.go +++ b/logic/service/fight/effect/553.go @@ -5,11 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 553, -// "argsNum": 2, -// "info": "若打出致命一击则对手{0}%概率{1}" -// }, +// Effect 553: 若打出致命一击则对手{0}%概率{1} type Effect553 struct { node.EffectNode } diff --git a/logic/service/fight/effect/554.go b/logic/service/fight/effect/554.go new file mode 100644 index 000000000..557df593c --- /dev/null +++ b/logic/service/fight/effect/554.go @@ -0,0 +1,25 @@ +package effect + +import ( + "blazing/logic/service/fight/action" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +// Effect 554: 自身处于能力下降状态时恢复所有体力 +type Effect554 struct { + node.EffectNode +} + +func (e *Effect554) Skill_Use() bool { + if !e.Ctx().Our.HasPropSub() { + return true + } + + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 554, &Effect554{}) +} diff --git a/logic/service/fight/effect/555.go b/logic/service/fight/effect/555.go index b00e4effb..43e7a24f9 100644 --- a/logic/service/fight/effect/555.go +++ b/logic/service/fight/effect/555.go @@ -5,11 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 555, -// "argsNum": 1, -// "info": "若打出致命一击则自身{0}回合内免疫异常状态" -// }, +// Effect 555: 若打出致命一击则自身{0}回合内免疫异常状态 type Effect555 struct { node.EffectNode can bool diff --git a/logic/service/fight/effect/556.go b/logic/service/fight/effect/556.go index ce2d29276..49d4a2af2 100644 --- a/logic/service/fight/effect/556.go +++ b/logic/service/fight/effect/556.go @@ -8,11 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 556, -// "argsNum": 0, -// "info": "命中后使自身体力降为1" -// }, +// Effect 556: 命中后使自身体力降为1 type Effect556 struct { node.EffectNode } diff --git a/logic/service/fight/effect/557.go b/logic/service/fight/effect/557.go index a3232489e..16c0a0558 100644 --- a/logic/service/fight/effect/557.go +++ b/logic/service/fight/effect/557.go @@ -2,16 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// { -// "id": 557, -// "argsNum": 3, -// "info": "{0}回合内对手使用正先制的技能时{1}%令对手{2}" -// }, +// Effect 557: {0}回合内对手使用正先制的技能时{1}%令对手{2} type Effect557 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect557) Skill_Use_ex() bool { @@ -36,12 +31,6 @@ func (e *Effect557) Skill_Use_ex() bool { return true } -func (e *Effect557) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} - func init() { input.InitEffect(input.EffectType.Skill, 557, &Effect557{}) } diff --git a/logic/service/fight/effect/558.go b/logic/service/fight/effect/558.go index 98a74bec1..0270f84c0 100644 --- a/logic/service/fight/effect/558.go +++ b/logic/service/fight/effect/558.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 558 - +// Effect 558: 若自身不处于能力提升或下降状态时则恢复{0}点体力 type Effect558 struct { node.EffectNode } diff --git a/logic/service/fight/effect/559.go b/logic/service/fight/effect/559.go index 8a170a9b2..840035f1e 100644 --- a/logic/service/fight/effect/559.go +++ b/logic/service/fight/effect/559.go @@ -8,10 +8,7 @@ import ( "github.com/gogf/gf/v2/util/grand" ) -// "id": 559, -// "argsNum": 1, -// "info": "{0}回合内若对手使用攻击技能则随机进入烧伤、冻伤、中毒、麻痹、害怕、睡眠中的一种异常状态" -// }, +// Effect 559: {0}回合内若对手使用攻击技能则随机进入烧伤、冻伤、中毒、麻痹、害怕、睡眠中的一种异常状态 type Effect559 struct { node.EffectNode } diff --git a/logic/service/fight/effect/560.go b/logic/service/fight/effect/560.go index 0341e6e6b..f7ef41abb 100644 --- a/logic/service/fight/effect/560.go +++ b/logic/service/fight/effect/560.go @@ -3,16 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// { -// "id": 560, -// "argsNum": 1, -// "info": "下回合其他攻击技能附加{0}点固定伤害" -// }, +// Effect 560: 下回合其他攻击技能附加{0}点固定伤害 type Effect560 struct { - node.EffectNode + RoundEffectArg0Base triggered bool } @@ -36,11 +31,6 @@ func (n *Effect560) OnSkill() bool { } // SetArgs 设置参数 -func (e *Effect560) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 560, &Effect560{}) } diff --git a/logic/service/fight/effect/561.go b/logic/service/fight/effect/561.go index aa2a87ed8..af60e0059 100644 --- a/logic/service/fight/effect/561.go +++ b/logic/service/fight/effect/561.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 561 - 先出手时当回合对手使用技能后若自身体力为0,则令自身体力等于最大体力 +// Effect 561: 先出手时当回合对手使用技能后若自身体力为0,则令自身体力等于最大体力 type Effect561 struct { node.EffectNode can bool diff --git a/logic/service/fight/effect/562.go b/logic/service/fight/effect/562.go index 010fa4104..c21e1a4df 100644 --- a/logic/service/fight/effect/562.go +++ b/logic/service/fight/effect/562.go @@ -6,11 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 562, -// "argsNum": 2, -// "info": "自身{0},对手{6}时强化效果翻倍" -// }, +// Effect 562: 自身{0},对手{6}时强化效果翻倍 type Effect562 struct { node.EffectNode } diff --git a/logic/service/fight/effect/563_564.go b/logic/service/fight/effect/563_564.go index 256618b09..649c28ea9 100644 --- a/logic/service/fight/effect/563_564.go +++ b/logic/service/fight/effect/563_564.go @@ -6,17 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 563, -// "argsNum": 1, -// "info": "命中后{0}回合内若对手受到特攻伤害则100%烧伤" -// }, -// -// { -// "id": 564, -// "argsNum": 1, -// "info": "命中后{0}回合内若对手受到攻击伤害则100%烧伤" -// }, +// Effect 563: 命中后{0}回合内若对手受到特攻伤害则100%烧伤 type Effect563 struct { node.EffectNode ptype info.EnumCategory @@ -26,9 +16,9 @@ func (e *Effect563) OnSkill() bool { rounds := int(e.Args()[0].IntPart()) - e.Ctx().Opp.AddEffect(e.Ctx().Our, e.GenSub(&Effect563_sub{ + addSubEffect(e.Ctx().Our, e.Ctx().Opp, &e.EffectNode, &Effect563_sub{ ptype: e.ptype, - }, rounds)) + }, rounds) return true } diff --git a/logic/service/fight/effect/565.go b/logic/service/fight/effect/565.go index 7f203ee25..01ce0a6ce 100644 --- a/logic/service/fight/effect/565.go +++ b/logic/service/fight/effect/565.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 565 - +// Effect 565: 先出手时恢复1/{0}体力 type Effect565 struct { node.EffectNode } diff --git a/logic/service/fight/effect/567.go b/logic/service/fight/effect/567.go index 28670bbcc..eecc29034 100644 --- a/logic/service/fight/effect/567.go +++ b/logic/service/fight/effect/567.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 567 - 对手为自身天敌时造成的伤害翻倍 +// Effect 567: 对手为自身天敌时造成的伤害翻倍 type Effect567 struct { node.EffectNode } @@ -15,7 +15,7 @@ func (e *Effect567) SkillHit() bool { return true } // 判断对手是否为自身天敌(即对手属性克制自己) - if e.ISNaturalEnemy() { + if e.ISNaturalEnemy() { e.Ctx().SkillEntity.XML.Power *= 2 } return true @@ -23,4 +23,4 @@ func (e *Effect567) SkillHit() bool { func init() { input.InitEffect(input.EffectType.Skill, 567, &Effect567{}) -} \ No newline at end of file +} diff --git a/logic/service/fight/effect/568.go b/logic/service/fight/effect/568.go index b2760138a..1822749a9 100644 --- a/logic/service/fight/effect/568.go +++ b/logic/service/fight/effect/568.go @@ -8,11 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 568, -// "argsNum": 1, -// "info": "解除自身能力下降状态,若解除成功则{0}回合内躲避所有攻击" -// }, +// Effect 568: 解除自身能力下降状态,若解除成功则{0}回合内躲避所有攻击 type Effect568 struct { node.EffectNode can bool diff --git a/logic/service/fight/effect/569.go b/logic/service/fight/effect/569.go new file mode 100644 index 000000000..e4a7778d2 --- /dev/null +++ b/logic/service/fight/effect/569.go @@ -0,0 +1,28 @@ +package effect + +import ( + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +// Effect 569: 吞噬对手的能力提升效果并双倍转移到自己身上 +type Effect569 struct { + node.EffectNode +} + +func (e *Effect569) OnSkill() bool { + for i, v := range e.Ctx().Opp.Prop[:] { + if v <= 0 { + continue + } + + e.Ctx().Our.SetProp(e.Ctx().Our, int8(i), int8(v*2)) + e.Ctx().Opp.SetProp(e.Ctx().Our, int8(i), 0) + } + + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 569, &Effect569{}) +} diff --git a/logic/service/fight/effect/570.go b/logic/service/fight/effect/570.go index ff1c7837c..b96028da7 100644 --- a/logic/service/fight/effect/570.go +++ b/logic/service/fight/effect/570.go @@ -8,15 +8,18 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 570 - 免疫下{0}次受到的攻击 +// 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) - // 持续次数,不是回合,用Duration可能不合适,但可以用次数。我们通过子效果计数 + if len(a) > 0 { + e.remaining = a[0] + } } func (e *Effect570) DamageLockEx(t *info.DamageZone) bool { diff --git a/logic/service/fight/effect/571.go b/logic/service/fight/effect/571.go index 0095e5800..5cea89b24 100644 --- a/logic/service/fight/effect/571.go +++ b/logic/service/fight/effect/571.go @@ -6,39 +6,47 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 571, -// "argsNum": 2, -// "info": "{0}回合后对对手造成{1}点固定伤害 重复使用无法叠加" -// }, +// Effect 571: {0}回合后对对手造成{1}点固定伤害 重复使用无法叠加 type Effect571 struct { node.EffectNode - duy int } -func (e *Effect571) TurnEnd() { - - e.duy-- - -} - -// 这个实际上在对方回合执行的 -func (e *Effect571) Skill_Use() bool { - //fmt.Println("镇魂歌剩余回合", e.duy) - //defer e.Alive(false) - damage := e.Args()[1] // 固定伤害值 - - if e.duy <= 0 { //说明对方没有切换精灵 - // 如果回合数为0或负数,立即造成伤害 - e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ - Type: info.DamageType.Fixed, - Damage: damage, - }) - e.Alive(false) - } +func (e *Effect571) OnSkill() bool { + addSubEffect(e.Ctx().Our, e.Ctx().Opp, &e.EffectNode, &Effect571Sub{}, -1) return true } +type Effect571Sub struct { + node.EffectNode + delay int +} + +func (e *Effect571Sub) SetArgs(t *input.Input, a ...int) { + e.EffectNode.SetArgs(t, a...) + e.Duration(-1) + if len(a) > 0 { + e.delay = a[0] + } +} + +func (e *Effect571Sub) TurnEnd() { + if e.delay > 0 { + e.delay-- + return + } + + if len(e.Args()) < 2 { + e.Alive(false) + return + } + + e.Ctx().Our.Damage(e.Ctx().Opp, &info.DamageZone{ + Type: info.DamageType.Fixed, + Damage: e.Args()[1], + }) + e.Alive(false) +} + func init() { input.InitEffect(input.EffectType.Skill, 571, &Effect571{}) } diff --git a/logic/service/fight/effect/572.go b/logic/service/fight/effect/572.go index 486df86e2..95f6b79fc 100644 --- a/logic/service/fight/effect/572.go +++ b/logic/service/fight/effect/572.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 572 - 攻击对手时若对手处于{0}状态,则{1}%使对手{2} +// Effect 572: 攻击对手时若对手处于{0}状态,则{1}%使对手{2} type Effect572 struct { node.EffectNode } @@ -29,4 +29,4 @@ func (e *Effect572) OnSkill() bool { func init() { input.InitEffect(input.EffectType.Skill, 572, &Effect572{}) -} \ No newline at end of file +} diff --git a/logic/service/fight/effect/575.go b/logic/service/fight/effect/575.go index 707ab0e3a..273d7a3e5 100644 --- a/logic/service/fight/effect/575.go +++ b/logic/service/fight/effect/575.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 575 - 对手处于任意异常状态时造成的伤害将全额恢复体力 +// Effect 575: 对手处于任意异常状态时造成的伤害将全额恢复体力 type Effect575 struct { node.EffectNode } diff --git a/logic/service/fight/effect/576.go b/logic/service/fight/effect/576.go index 4db496499..2afced093 100644 --- a/logic/service/fight/effect/576.go +++ b/logic/service/fight/effect/576.go @@ -3,18 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 576, -// "argsNum": 2, -// "info": "{0}回合内免疫低于{1}的攻击伤害" -// }, +// Effect 576: {0}回合内免疫低于{1}的攻击伤害 type Effect576 struct { - node.EffectNode + RoundEffectArg0Base } // DamageFloor 在计算伤害时触发,减少低于阈值的伤害至0 @@ -29,11 +24,6 @@ func (d *Effect576) DamageFloor(zone *info.DamageZone) bool { } // SetArgs 设置参数 -func (e *Effect576) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 576, &Effect576{}) diff --git a/logic/service/fight/effect/577.go b/logic/service/fight/effect/577.go index 4a6bad463..022220e7e 100644 --- a/logic/service/fight/effect/577.go +++ b/logic/service/fight/effect/577.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 577 - 自身处于能力提升状态时,使对手{0}能力{1} +// Effect 577: 自身处于能力提升状态时,使对手{0}能力{1} type Effect577 struct { node.EffectNode } diff --git a/logic/service/fight/effect/578.go b/logic/service/fight/effect/578.go index a6cdcf948..8f87257c0 100644 --- a/logic/service/fight/effect/578.go +++ b/logic/service/fight/effect/578.go @@ -8,11 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// { -// "id": 578, -// "argsNum": 2, -// "info": "{0}回合内对手所有属性技能命中率减少{1}%" -// }, +// Effect 578: {0}回合内对手所有属性技能命中率减少{1}% type Effect578 struct { node.EffectNode } diff --git a/logic/service/fight/effect/579.go b/logic/service/fight/effect/579.go index ee9f5bd02..7e54b4d4e 100644 --- a/logic/service/fight/effect/579.go +++ b/logic/service/fight/effect/579.go @@ -6,11 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// { -// "id": 579, -// "argsNum": 1, -// "info": "若当回合未击败对手,则恢复自身最大体力的1/{0}" -// }, +// Effect 579: 若当回合未击败对手,则恢复自身最大体力的1/{0} type Effect579 struct { node.EffectNode } diff --git a/logic/service/fight/effect/580.go b/logic/service/fight/effect/580.go index ac204cc4e..4af6c9728 100644 --- a/logic/service/fight/effect/580.go +++ b/logic/service/fight/effect/580.go @@ -3,19 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 580 - {0}回合内自身受到直接攻击伤害的{1}%反馈给对手 +// Effect 580: {0}回合内自身受到直接攻击伤害的{1}%反馈给对手 type Effect580 struct { - node.EffectNode -} - -func (e *Effect580) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 + RoundEffectArg0Base } func (e *Effect580) Skill_Use_ex() bool { diff --git a/logic/service/fight/effect/581.go b/logic/service/fight/effect/581.go new file mode 100644 index 000000000..2ba6cabb4 --- /dev/null +++ b/logic/service/fight/effect/581.go @@ -0,0 +1,28 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +// Effect 581: 属性相同时,额外附加{0}点固定伤害 +type Effect581 struct { + node.EffectNode +} + +func (e *Effect581) OnSkill() bool { + if e.Ctx().Our.CurrentPet.PetInfo.Type != e.Ctx().Opp.CurrentPet.PetInfo.Type { + return true + } + + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ + Type: info.DamageType.Fixed, + Damage: e.Args()[0], + }) + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 581, &Effect581{}) +} diff --git a/logic/service/fight/effect/582.go b/logic/service/fight/effect/582.go new file mode 100644 index 000000000..22b439c13 --- /dev/null +++ b/logic/service/fight/effect/582.go @@ -0,0 +1,42 @@ +package effect + +import ( + "blazing/logic/service/fight/action" + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +// Effect 582: 若未击败对手则下{0}回合攻击必定致命一击 +type Effect582 struct { + node.EffectNode +} + +func (e *Effect582) Skill_Use() bool { + if e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + return true + } + + addSubEffect(e.Ctx().Our, e.Ctx().Our, &e.EffectNode, &Effect582Sub{}, -1) + return true +} + +type Effect582Sub struct { + RoundEffectArg0Base +} + +func (e *Effect582Sub) ActionStart(a, b *action.SelectSkillAction) bool { + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + + e.Ctx().SkillEntity.XML.CritRate = 16 + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 582, &Effect582{}) +} diff --git a/logic/service/fight/effect/583.go b/logic/service/fight/effect/583.go new file mode 100644 index 000000000..e5a887155 --- /dev/null +++ b/logic/service/fight/effect/583.go @@ -0,0 +1,45 @@ +package effect + +import ( + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" + + "github.com/gogf/gf/v2/util/grand" +) + +// Effect 583: 使对手随机{0}项技能的PP值归零 +type Effect583 struct { + node.EffectNode +} + +func (e *Effect583) OnSkill() bool { + skills := e.Ctx().Opp.CurrentPet.Info.SkillList + if len(skills) == 0 { + return true + } + + count := int(e.Args()[0].IntPart()) + if count <= 0 { + return true + } + if count > len(skills) { + count = len(skills) + } + + indexes := make([]int, len(skills)) + for i := range indexes { + indexes[i] = i + } + + for i := 0; i < count; i++ { + j := i + grand.Intn(len(indexes)-i) + indexes[i], indexes[j] = indexes[j], indexes[i] + e.Ctx().Opp.CurrentPet.Info.SkillList[indexes[i]].PP = 0 + } + + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 583, &Effect583{}) +} diff --git a/logic/service/fight/effect/584.go b/logic/service/fight/effect/584.go new file mode 100644 index 000000000..009e2f566 --- /dev/null +++ b/logic/service/fight/effect/584.go @@ -0,0 +1,35 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" +) + +// Effect 584: {0}回合内自己的所有攻击技能都附有{1}%的秒杀概率 +type Effect584 struct { + RoundEffectArg0Base +} + +func (e *Effect584) DamageFloor(t *info.DamageZone) bool { + if e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + if t.Type != info.DamageType.Red { + return true + } + + ok, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) + if !ok { + return true + } + + t.Damage = e.Ctx().Opp.CurrentPet.GetMaxHP() + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 584, &Effect584{}) +} diff --git a/logic/service/fight/effect/620.go b/logic/service/fight/effect/620.go index 9b91e0ac2..9f47c80be 100644 --- a/logic/service/fight/effect/620.go +++ b/logic/service/fight/effect/620.go @@ -4,12 +4,11 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 620 - n回合内致命一击率上升m/16 +// Effect 620: {0}回合内致命一击率上升{1}/16 type Effect620 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect620) ActionStart(a, b *action.SelectSkillAction) bool { @@ -30,10 +29,6 @@ func (e *Effect620) ActionStart(a, b *action.SelectSkillAction) bool { return true } -func (e *Effect620) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 620, &Effect620{}) diff --git a/logic/service/fight/effect/63.go b/logic/service/fight/effect/63.go index 0d641e9f8..559b736e7 100644 --- a/logic/service/fight/effect/63.go +++ b/logic/service/fight/effect/63.go @@ -5,6 +5,7 @@ import ( "blazing/logic/service/fight/node" ) +// Effect 63: 将能力下降状态反馈给对手 type Effect63 struct { node.EffectNode } diff --git a/logic/service/fight/effect/85.go b/logic/service/fight/effect/85.go index cdbabbf52..5e7b39ecd 100644 --- a/logic/service/fight/effect/85.go +++ b/logic/service/fight/effect/85.go @@ -5,6 +5,7 @@ import ( "blazing/logic/service/fight/node" ) +// Effect 85: 使对手的能力提升效果转化到自己身上 type Effect85 struct { node.EffectNode } @@ -17,7 +18,7 @@ func (e *Effect85) OnSkill() bool { for i, v := range e.Ctx().Opp.Prop[:] { if v > 0 { e.Ctx().Our.SetProp(e.Ctx().Our, int8(i), v) - e.Ctx().Opp.SetProp(e.Ctx().Our,int8(i),0) + e.Ctx().Opp.SetProp(e.Ctx().Our, int8(i), 0) } } diff --git a/logic/service/fight/effect/EffectAttackMiss.go b/logic/service/fight/effect/EffectAttackMiss.go index 987d6bfcd..0491128c7 100644 --- a/logic/service/fight/effect/EffectAttackMiss.go +++ b/logic/service/fight/effect/EffectAttackMiss.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) // ----------------------------------------------------------- // 通用效果:n回合内,指定类型的攻击对自身必定miss // ----------------------------------------------------------- type EffectAttackMiss struct { - node.EffectNode + RoundEffectSideArg0Minus1CanStackBase targetCategory info.EnumCategory // 差异化:目标攻击类型(物理/特殊等) can bool } @@ -61,10 +60,3 @@ func (e *EffectAttackMiss) SkillHit_ex() bool { return true } - -// 设置参数:复用父类逻辑,设置持续回合 -func (e *EffectAttackMiss) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.CanStack(true) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0] - 1) // 持续回合由SideEffectArgs[0]指定 -} diff --git a/logic/service/fight/effect/EffectDefeatTrigger.go b/logic/service/fight/effect/EffectDefeatTrigger.go index 830456fe8..1e227ff93 100644 --- a/logic/service/fight/effect/EffectDefeatTrigger.go +++ b/logic/service/fight/effect/EffectDefeatTrigger.go @@ -4,7 +4,6 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "blazing/modules/player/model" "github.com/alpacahq/alpacadecimal" @@ -14,7 +13,7 @@ import ( // 通用效果:当次攻击击败对方精灵时,触发指定行为 // ----------------------------------------------------------- type EffectDefeatTrigger struct { - node.EffectNode + FixedDuration1Base can bool // 标记技能是否生效(当次攻击有效) effectID int // 效果ID,用于区分不同触发行为 isd bool @@ -80,10 +79,6 @@ func (e *EffectDefeatTrigger) SwitchIn(in *input.Input) bool { } // SetArgs:统一设置持续时间为1回合 -func (e *EffectDefeatTrigger) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(1) -} // ----------------------------------------------------------- // 根据effectID触发对应行为 diff --git a/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go b/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go index 121027578..81d39822d 100644 --- a/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go +++ b/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) // ----------------------------------------------------------- // 通用效果:受物理攻击时概率附加指定状态(如麻痹、冰冻等) // ----------------------------------------------------------- type EffectPhysicalAttackAddStatus struct { - node.EffectNode + RoundEffectSideArg0Base targetStatus info.EnumPetStatus // 差异化:要附加的目标状态 } @@ -72,7 +71,3 @@ func (e *EffectPhysicalAttackAddStatus) Skill_Use_ex() bool { } // 设置参数(复用父类逻辑) -func (e *EffectPhysicalAttackAddStatus) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) -} diff --git a/logic/service/fight/effect/EffectRandomPower.go b/logic/service/fight/effect/EffectRandomPower.go index 8d9d8b7eb..0181de2e0 100644 --- a/logic/service/fight/effect/EffectRandomPower.go +++ b/logic/service/fight/effect/EffectRandomPower.go @@ -22,8 +22,8 @@ type EffectRandomPower struct { // ----------------------------------------------------------- func init() { registerRandomPower(61, 50, 150) - registerRandomPower(70, 140, 220) - registerRandomPower(118, 140, 180) + registerRandomPower(70, 150, 220) + registerRandomPower(118, 150, 220) } // ----------------------------------------------------------- @@ -45,13 +45,6 @@ func (e *EffectRandomPower) SkillHit() bool { return true } - // 如果 FightC 没提供随机器,使用 math/rand 兜底 - // var n int - // if e.Input != nil && e.Input.FightC != nil { - // n = int(e.Input.FightC.GetRand().Int31n(int32(e.Max-e.Min+1))) + e.Min - // } else { - // n = grand.Intn(e.Max-e.Min+1) + e.Min - // } n := grand.N(e.Min, e.Max) e.Ctx().SkillEntity.XML.Power = n return true diff --git a/logic/service/fight/effect/effct_122.go b/logic/service/fight/effect/effct_122.go index 745aa6e60..d911abffd 100644 --- a/logic/service/fight/effect/effct_122.go +++ b/logic/service/fight/effect/effct_122.go @@ -25,9 +25,7 @@ func init() { }) } -// ----------------------------------------------------------- -// 效果122:先出手时,{1}%改变对方{0}等级{2} -// ----------------------------------------------------------- +// Effect 122: 先出手时,{1}%改变对方{0}等级{2} type Effect122 struct { node.EffectNode isfrist bool diff --git a/logic/service/fight/effect/effect509.go b/logic/service/fight/effect/effect509.go index 751315091..1cd3d01d4 100644 --- a/logic/service/fight/effect/effect509.go +++ b/logic/service/fight/effect/effect509.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 509 - 恢复当前受损体力值1/m的体力 +// Effect 509: 恢复自身已损失体力值的1/{0} type Effect509 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_1.go b/logic/service/fight/effect/effect_1.go index 9c907da7d..15e984b5d 100644 --- a/logic/service/fight/effect/effect_1.go +++ b/logic/service/fight/effect/effect_1.go @@ -2,22 +2,16 @@ package effect import ( "blazing/logic/service/fight/action" - "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -/** - * 给予对象损伤一半,会回复自己的体力 - */ +// Effect 1: 给予对方损伤的一半会回复自己的体力 type Effect1 struct { node.EffectNode } -func initskill(id int, e input.Effect) { - input.InitEffect(input.EffectType.Skill, id, e) -} func init() { initskill(1, &Effect1{}) diff --git a/logic/service/fight/effect/effect_100.go b/logic/service/fight/effect/effect_100.go index 8484301b4..209d1e3bd 100644 --- a/logic/service/fight/effect/effect_100.go +++ b/logic/service/fight/effect/effect_100.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 自身体力越少则威力越大 +// Effect 100: 自身体力越少则威力越大 type Effect100 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_101.go b/logic/service/fight/effect/effect_101.go index c1da83d47..ee45f0d76 100644 --- a/logic/service/fight/effect/effect_101.go +++ b/logic/service/fight/effect/effect_101.go @@ -8,9 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -/** - * 给对手造成伤害时,伤害数值的 n%恢复自身体力 - */ +// Effect 101: 给对手造成伤害时,伤害数值的{0}%恢复自身体力 type Effect101 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_104_109.go b/logic/service/fight/effect/effect_104_109.go index 212102fbc..59e514bb4 100644 --- a/logic/service/fight/effect/effect_104_109.go +++ b/logic/service/fight/effect/effect_104_109.go @@ -3,14 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// ----------------------------------------------------------- -// n回合内,每次直接攻击都有m%几率附带衰弱效果 -// ----------------------------------------------------------- +// Effect 104: {0}回合内每次直接攻击都有{1}%概率附带衰弱效果 type Effect104 struct { - node.EffectNode + RoundEffectSideArg0Base Status info.EnumPetStatus // 要施加的状态类型 can bool } @@ -40,12 +37,6 @@ func registerStatusEffectsn() { } // 默认添加回合 -func (e *Effect104) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} // ----------------------------------------------------------- // 技能触发时调用 @@ -65,11 +56,6 @@ func (e *Effect104) Skill_Use() bool { return true } - // 持续回合 - - duration := int(e.Input.FightC.GetRand().Int31n(2)) // 默认随机 2~3 回合 - duration++ - // 获取状态效果 eff := e.Ctx().Our.InitEffect(input.EffectType.Status, int(e.Status)) if eff == nil { diff --git a/logic/service/fight/effect/effect_105.go b/logic/service/fight/effect/effect_105.go index 77b16f3a7..bfc2abe26 100644 --- a/logic/service/fight/effect/effect_105.go +++ b/logic/service/fight/effect/effect_105.go @@ -6,9 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -/** - * 给予对象损伤1/n,会回复自己的体力 - */ +// Effect 105: 给予对象损伤的1/{0},会回复自己的HP type Effect105 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_107.go b/logic/service/fight/effect/effect_107.go index 15b0c5680..f706913da 100644 --- a/logic/service/fight/effect/effect_107.go +++ b/logic/service/fight/effect/effect_107.go @@ -10,12 +10,11 @@ import ( //若本次攻击造成的伤害小于n 则自身xx等级提升1个等级 func init() { - input.InitEffect(input.EffectType.Skill, 107, &Effect107{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 107, &Effect107{}) } +// Effect 107: 若本次攻击造成的伤害小于{0},则自身{1}提升1个等级 type Effect107 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_110.go b/logic/service/fight/effect/effect_110.go index d61f5f52e..31466a3e2 100644 --- a/logic/service/fight/effect/effect_110.go +++ b/logic/service/fight/effect/effect_110.go @@ -2,21 +2,15 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// n 回合内,每次躲避攻击都有m%几率使自身XX等级提升1个等级 +// Effect 110: {0}回合内每次躲避攻击都有{1}%概率使自身{2}提升1个等级 type Effect110 struct { - node.EffectNode + RoundEffectSideArg0Base } // 默认添加回合 -func (e *Effect110) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect110) Skill_Use_ex() bool { if e.Ctx().SkillEntity != nil { diff --git a/logic/service/fight/effect/effect_111.go b/logic/service/fight/effect/effect_111.go index 6f282ad32..412a2e599 100644 --- a/logic/service/fight/effect/effect_111.go +++ b/logic/service/fight/effect/effect_111.go @@ -8,8 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 附加额外伤害,自身等级越高,附加的伤害越高 -// 固定伤害∈[100%,200%]*精灵等级 +// Effect 111: 附加额外伤害,自身等级越高,附加的伤害越高 type Effect111 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_113.go b/logic/service/fight/effect/effect_113.go index 8682bd3c8..594ae4c85 100644 --- a/logic/service/fight/effect/effect_113.go +++ b/logic/service/fight/effect/effect_113.go @@ -6,8 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 个体越高,威力越大 -// 26+精灵个体值*4(有待验证) +// Effect 113: 个体越高,威力越大 type Effect113 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_115.go b/logic/service/fight/effect/effect_115.go index 185c456af..23ade1429 100644 --- a/logic/service/fight/effect/effect_115.go +++ b/logic/service/fight/effect/effect_115.go @@ -13,12 +13,11 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 115, &Effect115{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 115, &Effect115{}) } +// Effect 115: {0}%概率附加速度的1/{1}伤害 type Effect115 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_116.go b/logic/service/fight/effect/effect_116.go index f2ee7a28d..b5ee2608d 100644 --- a/logic/service/fight/effect/effect_116.go +++ b/logic/service/fight/effect/effect_116.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) @@ -13,25 +12,19 @@ import ( */ func init() { - t := &Effect116{ - EffectNode: node.EffectNode{}, - } + t := &Effect116{} input.InitEffect(input.EffectType.Skill, 116, t) } +// Effect 116: 3回合内如果先出手,伤害的20%恢复体力 type Effect116 struct { - node.EffectNode + RoundEffectSideArg0Base } // 默认添加回合 -func (e *Effect116) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect116) Skill_Use() bool { if e.Input.FightC.IsFirst(e.Input.Player) { diff --git a/logic/service/fight/effect/effect_117.go b/logic/service/fight/effect/effect_117.go index 5bc87e52b..c6110ed87 100644 --- a/logic/service/fight/effect/effect_117.go +++ b/logic/service/fight/effect/effect_117.go @@ -3,7 +3,8 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" + + "github.com/gogf/gf/v2/util/grand" ) /** @@ -11,25 +12,19 @@ import ( */ func init() { - t := &Effect117{ - EffectNode: node.EffectNode{}, - } + t := &Effect117{} input.InitEffect(input.EffectType.Skill, 117, t) } +// Effect 117: 5回合内如果先出手,50%概率对手害怕1到3回合 type Effect117 struct { - node.EffectNode + RoundEffectSideArg0Base } // 默认添加回合 -func (e *Effect117) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect117) OnSkill() bool { if e.Input.FightC.IsFirst(e.Input.Player) { @@ -43,9 +38,7 @@ func (e *Effect117) OnSkill() bool { if eff == nil { return true } - duration := int(e.Input.FightC.GetRand().Int31n(3)) // 默认随机 1~3 回合 - - eff.Duration(duration) + eff.Duration(grand.Intn(3)) e.Ctx().Opp.AddEffect(e.Ctx().Our, eff) } diff --git a/logic/service/fight/effect/effect_119_123.go b/logic/service/fight/effect/effect_119_123.go index ecbfc06cf..a4811907a 100644 --- a/logic/service/fight/effect/effect_119_123.go +++ b/logic/service/fight/effect/effect_119_123.go @@ -7,13 +7,12 @@ import ( "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" + "github.com/gogf/gf/v2/util/grand" ) -// ----------------------------------------------------------- -// 效果119:若伤害为奇数,30%对手疲惫1回合;若为偶数,30%速度+1 -// ----------------------------------------------------------- +// Effect 119: 若伤害为奇数,30%对手疲惫1回合;若为偶数,30%速度+1 type Effect119 struct { - node.EffectNode + FixedDuration1Base can bool } @@ -52,14 +51,7 @@ func (e *Effect119) DamageLock(damageValue *info.DamageZone) bool { return true } -func (e *Effect119) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(1) -} - -// ----------------------------------------------------------- -// 效果120:50%概率对方减血1/{0},50%概率自己减血1/{0} -// ----------------------------------------------------------- +// Effect 120: 50%概率对方减血1/{0},50%概率自己减血1/{0} type Effect120 struct { node.EffectNode } @@ -92,9 +84,7 @@ func (e *Effect120) Skill_Use() bool { return true } -// ----------------------------------------------------------- -// 效果121:属性相同时,{0}%概率让对方麻痹 -// ----------------------------------------------------------- +// Effect 121: 属性相同时,{0}%概率让对方麻痹 type Effect121 struct { node.EffectNode } @@ -110,18 +100,14 @@ func (e *Effect121) Skill_Use() bool { if eff == nil { return true } - duration := int(e.Input.FightC.GetRand().Int31n(2)) - duration++ - eff.Duration(duration) + eff.Duration(grand.N(1, 2)) e.Ctx().Opp.AddEffect(e.Ctx().Our, eff) } } return true } -// ----------------------------------------------------------- -// 效果123:{0}回合内受到任何伤害,自身{1}提高{2}个等级 -// ----------------------------------------------------------- +// Effect 123: {0}回合内受到任何伤害,自身{1}提高{2}个等级 type Effect123 struct { node.EffectNode roundCount int diff --git a/logic/service/fight/effect/effect_124_126.go b/logic/service/fight/effect/effect_124_126.go index fbc0b4b7f..12cfc2dd9 100644 --- a/logic/service/fight/effect/effect_124_126.go +++ b/logic/service/fight/effect/effect_124_126.go @@ -3,11 +3,11 @@ package effect import ( "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" + + "github.com/gogf/gf/v2/util/grand" ) -// ----------------------------------------------------------- -// 效果124:命中后,{0}%概率随机对方一个属性{1}个等级 -// ----------------------------------------------------------- +// Effect 124: 命中后,{0}%概率随机对方一个属性{1}个等级 type Effect124 struct { node.EffectNode } @@ -23,23 +23,16 @@ func (e *Effect124) OnSkill() bool { } // 随机选择一个属性(0-5,包含攻击、防御、特攻、特防、速度、命中) - propIndex := int(e.Input.FightC.GetRand().Int31n(6)) + propIndex := grand.Intn(6) e.Ctx().Opp.SetProp(e.Ctx().Our, int8(propIndex), int8(changeAmount)) return true } -// ----------------------------------------------------------- -// 效果126:{0}回合内每回合自身攻击和速度提高{1}个等级 -// ----------------------------------------------------------- +// Effect 126: {0}回合内每回合自身攻击和速度提高{1}个等级 type Effect126 struct { - node.EffectNode -} - -func (e *Effect126) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) + RoundEffectSideArg0Base } func (e *Effect126) Skill_Use() bool { diff --git a/logic/service/fight/effect/effect_125.go b/logic/service/fight/effect/effect_125.go index 51def0314..454d07786 100644 --- a/logic/service/fight/effect/effect_125.go +++ b/logic/service/fight/effect/effect_125.go @@ -3,29 +3,22 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) func init() { - t := &Effect125{ - EffectNode: node.EffectNode{}, - } + t := &Effect125{} input.InitEffect(input.EffectType.Skill, 125, t) } +// Effect 125: {0}回合内每回合被攻击所受到的伤害不超过{1} type Effect125 struct { - node.EffectNode + RoundEffectSideArg0Base } // 默认添加回合 -func (e *Effect125) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect125) DamageLockEx(t *info.DamageZone) bool { if t.Type != info.DamageType.Red { diff --git a/logic/service/fight/effect/effect_127.go b/logic/service/fight/effect/effect_127.go index 9fcf9ce16..95757886c 100644 --- a/logic/service/fight/effect/effect_127.go +++ b/logic/service/fight/effect/effect_127.go @@ -3,31 +3,22 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) func init() { - t := &Effect127{ - EffectNode: node.EffectNode{}, - } + t := &Effect127{} input.InitEffect(input.EffectType.Skill, 127, t) } +// Effect 127: {0}%的概率,{1}回合内受到的伤害减半 type Effect127 struct { - node.EffectNode + RoundEffectSideArg1Base } -// 默认添加回合 -func (e *Effect127) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[1]) - -} func (e *Effect127) DamageDivEx(t *info.DamageZone) bool { if t.Type != info.DamageType.Red { diff --git a/logic/service/fight/effect/effect_128.go b/logic/service/fight/effect/effect_128.go index 5d57390c9..d08354ea2 100644 --- a/logic/service/fight/effect/effect_128.go +++ b/logic/service/fight/effect/effect_128.go @@ -4,31 +4,24 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) func init() { - t := &Effect128{ - EffectNode: node.EffectNode{}, - } + t := &Effect128{} input.InitEffect(input.EffectType.Skill, 128, t) } +// Effect 128: {0}回合内将受到的攻击伤害转化为自身体力 type Effect128 struct { - node.EffectNode + RoundEffectSideArg0Base } // 默认添加回合 -func (e *Effect128) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect128) DamageLockEx(t *info.DamageZone) bool { if t.Type != info.DamageType.Red { diff --git a/logic/service/fight/effect/effect_13.go b/logic/service/fight/effect/effect_13.go index d5d2df4b1..25169c76f 100644 --- a/logic/service/fight/effect/effect_13.go +++ b/logic/service/fight/effect/effect_13.go @@ -9,9 +9,7 @@ import ( "github.com/gogf/gf/v2/util/gconv" ) -// ----------------------------------------------------------- -// 通用状态效果(例如 麻痹 / 中毒 / 疲惫 / 混乱 等) -// ----------------------------------------------------------- +// Effect 13: {0}回合吸取对方最大体力的1/8(对草系无效) type Effect13 struct { node.EffectNode Status info.EnumPetStatus // 要施加的状态类型 diff --git a/logic/service/fight/effect/effect_130.go b/logic/service/fight/effect/effect_130.go index c310ee878..142dae1f3 100644 --- a/logic/service/fight/effect/effect_130.go +++ b/logic/service/fight/effect/effect_130.go @@ -8,6 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) +// Effect 130: 对方为{0}则附加{1}点伤害 type Effect130 struct { node.EffectNode // 仅继承基础效果节点,不嵌入条件函数 } diff --git a/logic/service/fight/effect/effect_131.go b/logic/service/fight/effect/effect_131.go index 951ca3b4e..e5a252418 100644 --- a/logic/service/fight/effect/effect_131.go +++ b/logic/service/fight/effect/effect_131.go @@ -20,7 +20,7 @@ func init() { input.InitEffect(input.EffectType.Skill, 131, &Effect131{}) } -// Effect131 效果131的结构体,嵌入基类获取通用能力 +// Effect 131: 对方为{0}则免疫当前回合伤害 type Effect131 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_134.go b/logic/service/fight/effect/effect_134.go index 574ed3af8..75e4d1478 100644 --- a/logic/service/fight/effect/effect_134.go +++ b/logic/service/fight/effect/effect_134.go @@ -15,6 +15,7 @@ func init() { } +// Effect 134: 若造成的伤害低于{0},则所有技能的PP值恢复{1}点 type Effect134 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_135.go b/logic/service/fight/effect/effect_135.go index 235aa3fdb..54e433de5 100644 --- a/logic/service/fight/effect/effect_135.go +++ b/logic/service/fight/effect/effect_135.go @@ -17,6 +17,7 @@ func init() { } +// Effect 135: 造成的伤害不会低于{0} type Effect135 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_136.go b/logic/service/fight/effect/effect_136.go index 803ca2825..88df76bd0 100644 --- a/logic/service/fight/effect/effect_136.go +++ b/logic/service/fight/effect/effect_136.go @@ -6,9 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -/** - * 若Miss则自己恢复1/n体力 - */ +// Effect 136: 若Miss则自己恢复1/{0}体力 type Effect136 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_140.go b/logic/service/fight/effect/effect_140.go index 103194445..7093c2393 100644 --- a/logic/service/fight/effect/effect_140.go +++ b/logic/service/fight/effect/effect_140.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 140 - 降低对手1/n至1/m体力 +// Effect 140: 随机降低对手1/{0}至1/{1}的当前体力值 type Effect140 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_145.go b/logic/service/fight/effect/effect_145.go index 50caaa8f4..638fed6a9 100644 --- a/logic/service/fight/effect/effect_145.go +++ b/logic/service/fight/effect/effect_145.go @@ -7,7 +7,7 @@ import ( "blazing/logic/service/fight/node" ) -// 攻击中毒的对手时,自身回复1/n最大体力值 +// Effect 145: 攻击中毒的对手时,自身回复1/{0}最大体力值 type Effect145 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_147_159.go b/logic/service/fight/effect/effect_147_159.go index 95070904e..75b060261 100644 --- a/logic/service/fight/effect/effect_147_159.go +++ b/logic/service/fight/effect/effect_147_159.go @@ -5,9 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// ----------------------------------------------------------- -// 效果147:后出手时,{0}%概率使对方{1} -// ----------------------------------------------------------- +// Effect 147: 后出手时,{0}%概率使对方{1} type Effect147 struct { node.EffectNode can bool @@ -34,9 +32,7 @@ func (e *Effect147) Skill_Use() bool { return true } -// ----------------------------------------------------------- -// 效果148:后出手时,{1}%改变对方{0}等级{2} -// ----------------------------------------------------------- +// Effect 148: 后出手时,{1}%改变对方{0}等级{2} type Effect148 struct { node.EffectNode can bool @@ -60,9 +56,7 @@ func (e *Effect148) Skill_Use() bool { return true } -// ----------------------------------------------------------- -// 效果159:自身体力小于最大值的1/{0}时,{1}%概率令对方{2} -// ----------------------------------------------------------- +// Effect 159: 自身体力小于最大值的1/{0}时,{1}%概率令对方{2} type Effect159 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_151.go b/logic/service/fight/effect/effect_151.go index b93b84d33..53dcadf29 100644 --- a/logic/service/fight/effect/effect_151.go +++ b/logic/service/fight/effect/effect_151.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 攻击中毒的对手时,自身回复1/n最大体力值 +// Effect 151: 对手烧伤时,{0}%对方疲惫1回合;对手未烧伤时,{1}%对方疲惫1回合 type Effect151 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_152.go b/logic/service/fight/effect/effect_152.go index 4aec6ff62..67ebb9bc5 100644 --- a/logic/service/fight/effect/effect_152.go +++ b/logic/service/fight/effect/effect_152.go @@ -2,7 +2,6 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) func init() { @@ -11,16 +10,11 @@ func init() { } +// Effect 152: {0}回合内若对方使用属性技能,则{1}%使对方{2} type Effect152 struct { - node.EffectNode + RoundEffectSideArg0Base } -func (e *Effect152) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect152) Skill_Use_ex() bool { if e.Ctx().SkillEntity == nil { return true diff --git a/logic/service/fight/effect/effect_153.go b/logic/service/fight/effect/effect_153.go index 0571e7453..92bf5ae1a 100644 --- a/logic/service/fight/effect/effect_153.go +++ b/logic/service/fight/effect/effect_153.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 153 - n回合内,每回合对对方造成伤害的1/m恢复自身体力 +// Effect 153: {0}回合内每回合对对方造成伤害的1/{1}恢复自身体力 type Effect153 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect153) Skill_Use() bool { @@ -20,10 +19,6 @@ func (e *Effect153) Skill_Use() bool { return true } -func (e *Effect153) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 153, &Effect153{}) diff --git a/logic/service/fight/effect/effect_154.go b/logic/service/fight/effect/effect_154.go index 08f64835f..c3a042037 100644 --- a/logic/service/fight/effect/effect_154.go +++ b/logic/service/fight/effect/effect_154.go @@ -6,6 +6,7 @@ import ( "blazing/logic/service/fight/node" ) +// Effect 154: 若对手{0},则对对方造成伤害的1/{1}恢复自身体力 type Effect154 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_160.go b/logic/service/fight/effect/effect_160.go index 7fdf9861d..9e8ed0c3e 100644 --- a/logic/service/fight/effect/effect_160.go +++ b/logic/service/fight/effect/effect_160.go @@ -4,12 +4,11 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 160 - n回合内,若对手MISS则下回合自身必定致命一击 +// Effect 160: {0}回合内若对手MISS则下回合自身必定致命一击 type Effect160 struct { - node.EffectNode + RoundEffectArg0Base can bool } @@ -45,10 +44,6 @@ func (e *Effect160) SkillHit_ex() bool { return true } -func (e *Effect160) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 160, &Effect160{}) diff --git a/logic/service/fight/effect/effect_1605.go b/logic/service/fight/effect/effect_1605.go index 3243f6272..8063893ef 100644 --- a/logic/service/fight/effect/effect_1605.go +++ b/logic/service/fight/effect/effect_1605.go @@ -6,9 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// ----------------------------------------------------------- -// 通用状态效果(例如 麻痹 / 中毒 / 疲惫 / 混乱 等) -// ----------------------------------------------------------- +// Effect 1605: {0}%令对手{1} type Effect1605 struct { node.EffectNode Status info.EnumPetStatus // 要施加的状态类型 diff --git a/logic/service/fight/effect/effect_161.go b/logic/service/fight/effect/effect_161.go index 04d91d224..984832410 100644 --- a/logic/service/fight/effect/effect_161.go +++ b/logic/service/fight/effect/effect_161.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 161 - n%降低自身当前体力值的1/m +// Effect 161: {0}%降低自身当前体力值的1/{1} type Effect161 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_163.go b/logic/service/fight/effect/effect_163.go index 3bf97cd2e..c9d22c46a 100644 --- a/logic/service/fight/effect/effect_163.go +++ b/logic/service/fight/effect/effect_163.go @@ -3,12 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" + + "github.com/gogf/gf/v2/util/grand" ) -// 163 - n回合内,若对手使用属性技能则随机进入烧伤、冻伤、中毒、麻痹、害怕、睡眠中的一种异常状态 +// Effect 163: {0}回合内若对手使用属性技能则对手随机进入烧伤、冻伤、中毒、麻痹、害怕、睡眠中的一种异常状态 type Effect163 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect163) Skill_Use_ex() bool { @@ -23,7 +24,7 @@ func (e *Effect163) Skill_Use_ex() bool { int(info.PetStatus.Sleep), } - randomIndex := int(e.Input.FightC.GetRand().Int31n(int32(len(statusTypes)))) + randomIndex := grand.Intn(len(statusTypes)) selectedStatus := statusTypes[randomIndex] statusEffect := e.Ctx().Our.InitEffect(input.EffectType.Status, selectedStatus) @@ -34,10 +35,6 @@ func (e *Effect163) Skill_Use_ex() bool { return true } -func (e *Effect163) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 163, &Effect163{}) } diff --git a/logic/service/fight/effect/effect_164.go b/logic/service/fight/effect/effect_164.go index b629457d3..d931a459c 100644 --- a/logic/service/fight/effect/effect_164.go +++ b/logic/service/fight/effect/effect_164.go @@ -2,19 +2,13 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) +// Effect 164: {0}回合内若受到攻击则有{1}%概率令对手{2} type Effect164 struct { - node.EffectNode + RoundEffectSideArg0Base } -func (e *Effect164) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect164) Action_end_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { diff --git a/logic/service/fight/effect/effect_172.go b/logic/service/fight/effect/effect_172.go index ea4e570f4..df245abd7 100644 --- a/logic/service/fight/effect/effect_172.go +++ b/logic/service/fight/effect/effect_172.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 172 - 2 若后出手,则给予对方损伤的1/n会回复自己的体力 +// Effect 172: 若后出手,则给予对方损伤的1/{0}会回复自己的体力 type Effect172 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_174.go b/logic/service/fight/effect/effect_174.go index fce28a99d..cc3a3589b 100644 --- a/logic/service/fight/effect/effect_174.go +++ b/logic/service/fight/effect/effect_174.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 174 - n回合内,若对手使用属性攻击则m%自身XX等级k +// Effect 174: 未在 effectInfo.json 配置说明 type Effect174 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect174) Skill_Use_ex() bool { @@ -30,10 +29,6 @@ func (e *Effect174) Skill_Use_ex() bool { return true } -func (e *Effect174) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 174, &Effect174{}) } diff --git a/logic/service/fight/effect/effect_180.go b/logic/service/fight/effect/effect_180.go index 61c33510c..7ad6443bf 100644 --- a/logic/service/fight/effect/effect_180.go +++ b/logic/service/fight/effect/effect_180.go @@ -5,9 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -/** - * 消除对手回合类效果 - */ +// Effect 180: 消除对手回合类效果 type Effect180 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_182.go b/logic/service/fight/effect/effect_182.go index 43aeb6a9e..b3cbdc0c0 100644 --- a/logic/service/fight/effect/effect_182.go +++ b/logic/service/fight/effect/effect_182.go @@ -16,6 +16,7 @@ func init() { } +// Effect 182: 若对手处于{0}状态,{2}%自身{1}等级+{3} type Effect182 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_183.go b/logic/service/fight/effect/effect_183.go index cbed81c77..71a748623 100644 --- a/logic/service/fight/effect/effect_183.go +++ b/logic/service/fight/effect/effect_183.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) @@ -22,16 +21,11 @@ func init() { } +// Effect 183: {0}回合内免疫并反弹{1}伤害 type Effect183 struct { - node.EffectNode + RoundEffectSideArg0Base } -func (e *Effect183) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect183) DamageLockEx(t *info.DamageZone) bool { if t.Type != info.DamageType.Red { return true diff --git a/logic/service/fight/effect/effect_187.go b/logic/service/fight/effect/effect_187.go index c35d61b71..fa764ad38 100644 --- a/logic/service/fight/effect/effect_187.go +++ b/logic/service/fight/effect/effect_187.go @@ -4,12 +4,11 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 187 - n回合内,若对手使用属性技能,则自身恢复1/m最大体力值 +// Effect 187: {0}回合内若对手使用属性技能,则自身恢复1/{1}最大体力值 type Effect187 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect187) Skill_Use_ex() bool { @@ -23,11 +22,6 @@ func (e *Effect187) Skill_Use_ex() bool { return true } -func (e *Effect187) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} - func init() { input.InitEffect(input.EffectType.Skill, 187, &Effect187{}) } diff --git a/logic/service/fight/effect/effect_189.go b/logic/service/fight/effect/effect_189.go index db4689bde..acc3a6116 100644 --- a/logic/service/fight/effect/effect_189.go +++ b/logic/service/fight/effect/effect_189.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 189 - n回合内,若受到攻击,对手攻击等级-1、特攻等级-1 +// Effect 189: {0}回合内若受到攻击,对手攻击等级-1、特攻等级-1 type Effect189 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect189) Skill_Use_ex() bool { @@ -20,10 +19,6 @@ func (e *Effect189) Skill_Use_ex() bool { return true } -func (e *Effect189) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 189, &Effect189{}) } diff --git a/logic/service/fight/effect/effect_192.go b/logic/service/fight/effect/effect_192.go index 6573daaa9..e368397f4 100644 --- a/logic/service/fight/effect/effect_192.go +++ b/logic/service/fight/effect/effect_192.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 192 - 附加n%当前体力值的伤害 +// Effect 192: 附加{0}%当前体力值的伤害 type Effect192 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_195.go b/logic/service/fight/effect/effect_195.go index 8eb639bcc..882fa9a16 100644 --- a/logic/service/fight/effect/effect_195.go +++ b/logic/service/fight/effect/effect_195.go @@ -6,9 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -/** - * 无视对手双防能力提升状态 - */ +// Effect 195: 无视对手双防能力提升状态 type Effect195 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_20.go b/logic/service/fight/effect/effect_20.go index 83fd990f8..ab033390a 100644 --- a/logic/service/fight/effect/effect_20.go +++ b/logic/service/fight/effect/effect_20.go @@ -15,6 +15,7 @@ func init() { } +// Effect 20: {0}%令本方疲惫,{1}回合无法攻击 type Effect20 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_21.go b/logic/service/fight/effect/effect_21.go index 733f66142..fadf5db01 100644 --- a/logic/service/fight/effect/effect_21.go +++ b/logic/service/fight/effect/effect_21.go @@ -7,6 +7,7 @@ import ( "sync" "github.com/alpacahq/alpacadecimal" + "github.com/gogf/gf/v2/util/grand" ) /** @@ -18,6 +19,7 @@ func init() { } +// Effect 21: 未在 effectInfo.json 配置说明 type Effect21 struct { node.EffectNode @@ -32,7 +34,7 @@ func (e *Effect21) OnSkill() bool { statIndex := e.SideEffectArgs[0] endindex := e.SideEffectArgs[1] //回合产生 - n := int(e.Input.FightC.GetRand().Int31n(int32(endindex-statIndex+1))) + statIndex + n := grand.Intn(endindex-statIndex+1) + statIndex e.Duration(n) //产生回合收益 //e.Input.AddEffect(input.Geteffect(input.EffectType.Status, int(info.PetStatus.Tired))) }) diff --git a/logic/service/fight/effect/effect_28.go b/logic/service/fight/effect/effect_28.go index 2d74df40b..65caa96b4 100644 --- a/logic/service/fight/effect/effect_28.go +++ b/logic/service/fight/effect/effect_28.go @@ -11,12 +11,11 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 28, &Effect28{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 28, &Effect28{}) } +// Effect 28: 降低对方1/{0}的hp type Effect28 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_29.go b/logic/service/fight/effect/effect_29.go index 597a13d69..05ff08698 100644 --- a/logic/service/fight/effect/effect_29.go +++ b/logic/service/fight/effect/effect_29.go @@ -13,12 +13,11 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 29, &Effect29{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 29, &Effect29{}) } +// Effect 29: 额外附加{0}点固定伤害 type Effect29 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_31.go b/logic/service/fight/effect/effect_31.go index a6f5cc55c..14260fce5 100644 --- a/logic/service/fight/effect/effect_31.go +++ b/logic/service/fight/effect/effect_31.go @@ -6,6 +6,7 @@ import ( "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" + "github.com/gogf/gf/v2/util/grand" ) /** @@ -13,12 +14,11 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 31, &Effect31{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 31, &Effect31{}) } +// Effect 31: 未在 effectInfo.json 配置说明 type Effect31 struct { node.EffectNode } @@ -26,7 +26,7 @@ type Effect31 struct { func (e *Effect31) Damage_Mul(t *info.DamageZone) bool { if t.Type == info.DamageType.Red { - n := int(e.Input.FightC.GetRand().Int31n(int32(e.SideEffectArgs[1]-e.SideEffectArgs[0]+1))) + e.SideEffectArgs[0] + n := grand.Intn(e.SideEffectArgs[1]-e.SideEffectArgs[0]+1) + e.SideEffectArgs[0] t.Damage = t.Damage.Mul(alpacadecimal.NewFromInt(int64(n))) } diff --git a/logic/service/fight/effect/effect_32.go b/logic/service/fight/effect/effect_32.go index 61a9a01ce..3d8d96323 100644 --- a/logic/service/fight/effect/effect_32.go +++ b/logic/service/fight/effect/effect_32.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) /** @@ -11,14 +10,13 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 32, &Effect32{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 32, &Effect32{}) } +// Effect 32: 使用后{0}回合攻击击中对象要害概率增加1/16 type Effect32 struct { - node.EffectNode + RoundEffectSideArg0Base } func (e *Effect32) ActionStart(a, b *action.SelectSkillAction) bool { @@ -30,9 +28,3 @@ func (e *Effect32) ActionStart(a, b *action.SelectSkillAction) bool { return true } -func (e *Effect32) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} diff --git a/logic/service/fight/effect/effect_34.go b/logic/service/fight/effect/effect_34.go index 32d850f2f..3480a2ab8 100644 --- a/logic/service/fight/effect/effect_34.go +++ b/logic/service/fight/effect/effect_34.go @@ -17,6 +17,7 @@ func init() { } +// Effect 34: 将所受的伤害{0}倍反馈给对手 type Effect34 struct { node.EffectNode can bool @@ -24,7 +25,7 @@ type Effect34 struct { // 使用技能时,不可被继承,继承Miss和Hit就行 func (e *Effect34) OnSkill() bool { - + e.can = true return true } diff --git a/logic/service/fight/effect/effect_35.go b/logic/service/fight/effect/effect_35.go index ead22e640..ab8d7722b 100644 --- a/logic/service/fight/effect/effect_35.go +++ b/logic/service/fight/effect/effect_35.go @@ -7,7 +7,7 @@ import ( "blazing/logic/service/fight/node" ) -// 惩罚,对方能力等级越高,此技能威力越大 +// Effect 35: 惩罚,对方能力等级越高,此技能威力越大 type Effect35 struct { node.EffectNode can bool diff --git a/logic/service/fight/effect/effect_36.go b/logic/service/fight/effect/effect_36.go index 80a3a7f32..4ad538613 100644 --- a/logic/service/fight/effect/effect_36.go +++ b/logic/service/fight/effect/effect_36.go @@ -17,6 +17,7 @@ func init() { } +// Effect 36: 命中时{0}%的概率秒杀对方 type Effect36 struct { node.EffectNode can bool diff --git a/logic/service/fight/effect/effect_37.go b/logic/service/fight/effect/effect_37.go index 9104cb95e..cf73986cc 100644 --- a/logic/service/fight/effect/effect_37.go +++ b/logic/service/fight/effect/effect_37.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 自身体力小于1/n时威力为m倍 +// Effect 37: 自身HP小于1/{0}时威力为{1}倍 type Effect37 struct { node.EffectNode can bool diff --git a/logic/service/fight/effect/effect_39.go b/logic/service/fight/effect/effect_39.go index f1143805b..c2a141a2c 100644 --- a/logic/service/fight/effect/effect_39.go +++ b/logic/service/fight/effect/effect_39.go @@ -10,12 +10,11 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 39, &Effect39{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 39, &Effect39{}) } +// Effect 39: {0}%降低对手所有技能{1}点PP值,然后若对手所选择的技能PP值为0则当回合对手无法行动 type Effect39 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_404.go b/logic/service/fight/effect/effect_404.go index 7f7f2cc0a..1c16a5433 100644 --- a/logic/service/fight/effect/effect_404.go +++ b/logic/service/fight/effect/effect_404.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 404 - 恢复双方所有体力 +// Effect 404: 恢复双方所有体力 type Effect404 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_405_402.go b/logic/service/fight/effect/effect_405_402.go index ca644aa06..2c8311f45 100644 --- a/logic/service/fight/effect/effect_405_402.go +++ b/logic/service/fight/effect/effect_405_402.go @@ -18,6 +18,7 @@ func init() { }) } +// Effect 405: 先出手时,额外附加{0}点固定伤害 type Effect405 struct { node.EffectNode isfrist bool diff --git a/logic/service/fight/effect/effect_406.go b/logic/service/fight/effect/effect_406.go index f39def917..90e1b5553 100644 --- a/logic/service/fight/effect/effect_406.go +++ b/logic/service/fight/effect/effect_406.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 406 - 2 n回合内受到攻击m%几率回复k点体力 +// Effect 406: {0}回合内受到攻击{1}%概率回复{2}点体力 type Effect406 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect406) Skill_Use_ex() bool { @@ -24,10 +23,6 @@ func (e *Effect406) Skill_Use_ex() bool { return true } -func (e *Effect406) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 406, &Effect406{}) diff --git a/logic/service/fight/effect/effect_408_463.go b/logic/service/fight/effect/effect_408_463.go index 7fbda38db..044079a54 100644 --- a/logic/service/fight/effect/effect_408_463.go +++ b/logic/service/fight/effect/effect_408_463.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) @@ -13,8 +12,9 @@ func init() { input.InitEffect(input.EffectType.Skill, 463, &Effect408{}) } +// Effect 408: {0}回合内每回合所受的伤害减少{1} type Effect408 struct { - node.EffectNode + RoundEffectSideArg0Base } func (e *Effect408) DamageSubEx(t *info.DamageZone) bool { @@ -30,9 +30,3 @@ func (e *Effect408) DamageSubEx(t *info.DamageZone) bool { } return true } -func (e *Effect408) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} diff --git a/logic/service/fight/effect/effect_409.go b/logic/service/fight/effect/effect_409.go index a11420938..5480506e5 100644 --- a/logic/service/fight/effect/effect_409.go +++ b/logic/service/fight/effect/effect_409.go @@ -2,18 +2,13 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 409 - n回合内,对手每回合速度等级m +// Effect 409: {0}回合内对手每回合速度和命中等级{1} type Effect409 struct { - node.EffectNode + RoundEffectArg0Base } -func (e *Effect409) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func (e *Effect409) Skill_Use() bool { e.Ctx().Opp.SetProp(e.Ctx().Our, 4, int8(int(e.Args()[1].IntPart()))) diff --git a/logic/service/fight/effect/effect_41.go b/logic/service/fight/effect/effect_41.go index f44faa399..051944d92 100644 --- a/logic/service/fight/effect/effect_41.go +++ b/logic/service/fight/effect/effect_41.go @@ -7,6 +7,7 @@ import ( "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" + "github.com/gogf/gf/v2/util/grand" ) /** @@ -18,18 +19,14 @@ 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...) - t1 := e.Input.FightC - t2 := t1.GetRand() - - n := t2.Int31n(int32(e.Args()[1].Sub(e.Args()[0]).Add(alpacadecimal.NewFromInt(1)).IntPart())) - - e.EffectNode.Duration(int(e.Args()[0].Add(alpacadecimal.NewFromInt(int64(n))).IntPart())) + e.EffectNode.Duration(grand.N(int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart()))) } diff --git a/logic/service/fight/effect/effect_413.go b/logic/service/fight/effect/effect_413.go index db3228ea0..7688c871f 100644 --- a/logic/service/fight/effect/effect_413.go +++ b/logic/service/fight/effect/effect_413.go @@ -8,12 +8,11 @@ import ( func init() { - input.InitEffect(input.EffectType.Skill, 413, &Effect413{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 413, &Effect413{}) } +// Effect 413: 若对手处于能力提升状态则附加{0}点固定伤害 type Effect413 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_414.go b/logic/service/fight/effect/effect_414.go index ce73e2649..da8e6912c 100644 --- a/logic/service/fight/effect/effect_414.go +++ b/logic/service/fight/effect/effect_414.go @@ -11,6 +11,7 @@ func init() { } +// Effect 414: 对手{0}等级{1},若对手处于{2}状态,则弱化效果翻倍 type Effect414 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_415.go b/logic/service/fight/effect/effect_415.go index 40d13077f..0911402c9 100644 --- a/logic/service/fight/effect/effect_415.go +++ b/logic/service/fight/effect/effect_415.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 415 - 若造成的伤害大于m点,则自身恢复n点体力 +// Effect 415: 若造成的伤害大于{0}点,则自身恢复{1}点生命值 type Effect415 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_416.go b/logic/service/fight/effect/effect_416.go index 6e3bcf1f7..8406dd8bf 100644 --- a/logic/service/fight/effect/effect_416.go +++ b/logic/service/fight/effect/effect_416.go @@ -2,12 +2,11 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 416 - n回合内,受到任何伤害,对手XX降低m个等级 +// Effect 416: {0}回合内受到任何伤害,对手{1}降低{2}个等级 type Effect416 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect416) Skill_Use_ex() bool { @@ -19,10 +18,6 @@ func (e *Effect416) Skill_Use_ex() bool { return true } -func (e *Effect416) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 416, &Effect416{}) diff --git a/logic/service/fight/effect/effect_419.go b/logic/service/fight/effect/effect_419.go index 1e9ef3a72..1449f4662 100644 --- a/logic/service/fight/effect/effect_419.go +++ b/logic/service/fight/effect/effect_419.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 419 - m回合内,若对手处于能力强化状态,则每回合都会受到k点固定伤害 +// Effect 419: {0}回合内若对手处于能力提升状态,则每回合都会受到{1}点固定伤害 type Effect419 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect419) Skill_Use() bool { @@ -29,10 +28,6 @@ func (e *Effect419) Skill_Use() bool { return true } -func (e *Effect419) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续m回合 -} func init() { input.InitEffect(input.EffectType.Skill, 419, &Effect419{}) diff --git a/logic/service/fight/effect/effect_42.go b/logic/service/fight/effect/effect_42.go index 2b79d0d35..27a6ad46f 100644 --- a/logic/service/fight/effect/effect_42.go +++ b/logic/service/fight/effect/effect_42.go @@ -10,8 +10,7 @@ import ( "github.com/gogf/gf/v2/util/grand" ) -// n回合提示m翻倍 -// ---- Effect42 ---- +// Effect 42: 未在 effectInfo.json 配置说明 type Effect42 struct { node.EffectNode StatusID int diff --git a/logic/service/fight/effect/effect_423.go b/logic/service/fight/effect/effect_423.go index 5b2ca096d..1fc463fae 100644 --- a/logic/service/fight/effect/effect_423.go +++ b/logic/service/fight/effect/effect_423.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 423 - 直接造成等同于对手防御值的固定伤害 +// Effect 423: 直接造成等同于对手防御值的固定伤害 type Effect423 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_426.go b/logic/service/fight/effect/effect_426.go index 2015c61f3..042e70df4 100644 --- a/logic/service/fight/effect/effect_426.go +++ b/logic/service/fight/effect/effect_426.go @@ -2,29 +2,21 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) func init() { - t := &Effect426{ - EffectNode: node.EffectNode{}, - } + t := &Effect426{} input.InitEffect(input.EffectType.Skill, 426, t) } +// Effect 426: {0}回合内每回合{1}%闪避对手攻击 type Effect426 struct { - node.EffectNode + RoundEffectSideArg0Base } // 默认添加回合 -func (e *Effect426) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect426) SkillHit_ex() bool { diff --git a/logic/service/fight/effect/effect_43.go b/logic/service/fight/effect/effect_43.go index bc97c01fe..ccc1431d1 100644 --- a/logic/service/fight/effect/effect_43.go +++ b/logic/service/fight/effect/effect_43.go @@ -15,6 +15,7 @@ func init() { } +// Effect 43: 恢复自身最大体力的1/{0} type Effect43 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_436.go b/logic/service/fight/effect/effect_436.go index 07a42f973..c14f14f31 100644 --- a/logic/service/fight/effect/effect_436.go +++ b/logic/service/fight/effect/effect_436.go @@ -9,12 +9,11 @@ import ( ) func init() { - input.InitEffect(input.EffectType.Skill, 436, &Effect436{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 436, &Effect436{}) } +// Effect 436: 附加已损失体力值{0}%的百分比伤害 type Effect436 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_438.go b/logic/service/fight/effect/effect_438.go index 916fbf5d1..2eb8e907a 100644 --- a/logic/service/fight/effect/effect_438.go +++ b/logic/service/fight/effect/effect_438.go @@ -16,6 +16,7 @@ func init() { } +// Effect 438: {0}%的概率恢复自身体力的1/{1} type Effect438 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_439.go b/logic/service/fight/effect/effect_439.go index cd0d5e650..e7e4f41b6 100644 --- a/logic/service/fight/effect/effect_439.go +++ b/logic/service/fight/effect/effect_439.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) /** @@ -16,16 +15,11 @@ func init() { } +// Effect 439: {0}回合内若自身处于能力下降或异常状态,则对手每回合受到{1}点固定伤害 type Effect439 struct { - node.EffectNode + RoundEffectSideArg0Base } -func (e *Effect439) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect439) Skill_Use() bool { var isprop bool for _, v := range e.Ctx().Our.Prop { diff --git a/logic/service/fight/effect/effect_44.go b/logic/service/fight/effect/effect_44.go index e4365b70e..6b9fe8dd9 100644 --- a/logic/service/fight/effect/effect_44.go +++ b/logic/service/fight/effect/effect_44.go @@ -3,15 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// n回合自己受到特殊攻击伤害减半 -// ---- Effect44 ---- +// Effect 44: {0}回合自己受到特殊攻击伤害减半 type Effect44 struct { - node.EffectNode + RoundEffectSideArg0Base StatusID int } @@ -33,12 +31,6 @@ func (e *Effect44) DamageDivEx(t *info.DamageZone) bool { //fmt.Println("Effect44_n", t.Damage) return true } -func (e *Effect44) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} // ---- 注册所有效果 ---- func init() { diff --git a/logic/service/fight/effect/effect_447.go b/logic/service/fight/effect/effect_447.go index 18d51b8e0..1fe665ffc 100644 --- a/logic/service/fight/effect/effect_447.go +++ b/logic/service/fight/effect/effect_447.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 447 - 造成的伤害不少于m +// Effect 447: 造成的伤害不少于{0} type Effect447 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_448.go b/logic/service/fight/effect/effect_448.go index 65102b476..14123cc16 100644 --- a/logic/service/fight/effect/effect_448.go +++ b/logic/service/fight/effect/effect_448.go @@ -2,18 +2,14 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) +// Effect 448: {0}回合内每回合对手{1} type Effect448 struct { - node.EffectNode + RoundEffectSideArg0Base rev bool } -func (e *Effect448) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) -} func (e *Effect448) OnSkill() bool { for i, v := range e.SideEffectArgs[1:] { diff --git a/logic/service/fight/effect/effect_450.go b/logic/service/fight/effect/effect_450.go index e65634bee..6c7277960 100644 --- a/logic/service/fight/effect/effect_450.go +++ b/logic/service/fight/effect/effect_450.go @@ -6,9 +6,10 @@ import ( "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" + "github.com/gogf/gf/v2/util/grand" ) -// 450 - 随机恢复m到n点体力 +// Effect 450: 随机恢复{0}到{1}点生命值 type Effect450 struct { node.EffectNode } @@ -17,9 +18,11 @@ func (e *Effect450) OnSkill() bool { minHeal := e.Args()[0].IntPart() maxHeal := e.Args()[1].IntPart() - // 随机值在m到n之间 - rangeVal := maxHeal - minHeal - randomVal := int64(e.Input.FightC.GetRand().Int31n(int32(rangeVal)) + int32(minHeal)) + randomVal := minHeal + rangeVal := int(maxHeal - minHeal) + if rangeVal > 0 { + randomVal += int64(grand.Intn(rangeVal)) + } healAmount := alpacadecimal.NewFromInt(randomVal) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) diff --git a/logic/service/fight/effect/effect_452.go b/logic/service/fight/effect/effect_452.go index b1adf6abb..9382976ae 100644 --- a/logic/service/fight/effect/effect_452.go +++ b/logic/service/fight/effect/effect_452.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 452 - n回合内自身所有攻击造成的伤害都将为自己恢复体力 +// Effect 452: {0}合内自身所有攻击造成的伤害都将为自己恢复体力 type Effect452 struct { - node.EffectNode + RoundEffectSideArg0Base } func (e *Effect452) Skill_Use() bool { @@ -18,13 +17,6 @@ func (e *Effect452) Skill_Use() bool { return true } -func (e *Effect452) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} - func init() { input.InitEffect(input.EffectType.Skill, 452, &Effect452{}) } diff --git a/logic/service/fight/effect/effect_455.go b/logic/service/fight/effect/effect_455.go index 25c077883..3d0fc8835 100644 --- a/logic/service/fight/effect/effect_455.go +++ b/logic/service/fight/effect/effect_455.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 455 - 当损失n点体力时,额外附加m点固定伤害 +// Effect 455: 每损失{0}点体力则额外附加{1}点固定伤害 type Effect455 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_459.go b/logic/service/fight/effect/effect_459.go index 8347e6098..61e6bf1dd 100644 --- a/logic/service/fight/effect/effect_459.go +++ b/logic/service/fight/effect/effect_459.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 459 - 附加对手防御值m%的固定伤害 +// Effect 459: 附加对手防御值{0}%的百分比伤害 type Effect459 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_46.go b/logic/service/fight/effect/effect_46.go index ead5dc115..ece4d29cd 100644 --- a/logic/service/fight/effect/effect_46.go +++ b/logic/service/fight/effect/effect_46.go @@ -8,8 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// "可完全抵挡n次攻击伤害 百分百减伤 ,后面还有锁伤 -// ---- Effect46 ---- +// Effect 46: 抵挡下{0}次对手的攻击 type Effect46 struct { node.EffectNode //StatusID int diff --git a/logic/service/fight/effect/effect_466.go b/logic/service/fight/effect/effect_466.go index 95ed96edc..1d7427474 100644 --- a/logic/service/fight/effect/effect_466.go +++ b/logic/service/fight/effect/effect_466.go @@ -16,6 +16,7 @@ func init() { } +// Effect 466: 恢复{0}点体力 type Effect466 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_467.go b/logic/service/fight/effect/effect_467.go index e0b7085be..d97cd8171 100644 --- a/logic/service/fight/effect/effect_467.go +++ b/logic/service/fight/effect/effect_467.go @@ -16,6 +16,7 @@ func init() { } +// Effect 467: 若对手处于{0}状态则附加{1}点固定伤害 type Effect467 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_47.go b/logic/service/fight/effect/effect_47.go index af644be44..9d9a11eb6 100644 --- a/logic/service/fight/effect/effect_47.go +++ b/logic/service/fight/effect/effect_47.go @@ -5,8 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// n回合内免疫能力下降状态 -// ---- Effect47 ---- +// Effect 47: {0}回合内免疫能力下降状态 type Effect47 struct { node.EffectNode //StatusID int diff --git a/logic/service/fight/effect/effect_472.go b/logic/service/fight/effect/effect_472.go index d52adf58c..892c32803 100644 --- a/logic/service/fight/effect/effect_472.go +++ b/logic/service/fight/effect/effect_472.go @@ -7,7 +7,7 @@ import ( "blazing/logic/service/fight/node" ) -// 472 - 若对手处于XX状态则每次攻击造成的伤害都将恢复自身体力 +// Effect 472: 若对手处于{0}状态则每次攻击造成的伤害都将恢复自身体力 type Effect472 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_478.go b/logic/service/fight/effect/effect_478.go index 3433be456..6f89d41f7 100644 --- a/logic/service/fight/effect/effect_478.go +++ b/logic/service/fight/effect/effect_478.go @@ -3,14 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -/** - * n回合内令对手使用的属性技能无效 - */ +// Effect 478: {0}回合内令对手使用的属性技能无效 type Effect478 struct { - node.EffectNode + RoundEffectSideArg0Base can bool } @@ -40,9 +37,3 @@ func (e *Effect478) SkillHit_ex() bool { return true } -func (e *Effect478) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} diff --git a/logic/service/fight/effect/effect_479.go b/logic/service/fight/effect/effect_479.go index 727dc71db..fe8c652d4 100644 --- a/logic/service/fight/effect/effect_479.go +++ b/logic/service/fight/effect/effect_479.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 479 - 损失自身n点体力,给对手造成m点固定伤害 +// Effect 479: 损失自身{0}点体力,给对手造成{1}点固定伤害,若自身体力不足{2}则剩下{3}点体力 type Effect479 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_48.go b/logic/service/fight/effect/effect_48.go index 5fc685fbf..cd5ea12da 100644 --- a/logic/service/fight/effect/effect_48.go +++ b/logic/service/fight/effect/effect_48.go @@ -5,8 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// nn回合内免疫所有受到的异常状态 -// ---- Effect48 ---- +// Effect 48: {0}回合内免疫所有受到的异常状态 type Effect48 struct { node.EffectNode //StatusID int diff --git a/logic/service/fight/effect/effect_481.go b/logic/service/fight/effect/effect_481.go index 016180e06..6f81626d7 100644 --- a/logic/service/fight/effect/effect_481.go +++ b/logic/service/fight/effect/effect_481.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// / +// Effect 481: 下{0}回合自身攻击先制+{1} type Effect481 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_482.go b/logic/service/fight/effect/effect_482.go index 131176b7d..d14684862 100644 --- a/logic/service/fight/effect/effect_482.go +++ b/logic/service/fight/effect/effect_482.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 482 - m%几率先制+n +// Effect 482: {0}%概率先制+{1} type Effect482 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_487.go b/logic/service/fight/effect/effect_487.go index 6bd2aa092..1d60aff45 100644 --- a/logic/service/fight/effect/effect_487.go +++ b/logic/service/fight/effect/effect_487.go @@ -7,7 +7,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 487 - 若对手的体力大于400,则每次使用自身攻击+1 +// Effect 487: 若对手的体力大于{0},则每次使用自身攻击+{1} type Effect487 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_49.go b/logic/service/fight/effect/effect_49.go index daf91c3b0..3df1c6d71 100644 --- a/logic/service/fight/effect/effect_49.go +++ b/logic/service/fight/effect/effect_49.go @@ -8,8 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 可以抵挡n点伤害 -// ---- Effect49 ---- +// Effect 49: 可以抵挡{0}点伤害 type Effect49 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_490.go b/logic/service/fight/effect/effect_490.go index 571fdcaba..3c3a6d760 100644 --- a/logic/service/fight/effect/effect_490.go +++ b/logic/service/fight/effect/effect_490.go @@ -7,7 +7,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 490 - 造成的伤害大于m,则对自身速度+n +// Effect 490: 造成的伤害大于{0},则对自身{1}+{2} type Effect490 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_499.go b/logic/service/fight/effect/effect_499.go index 124609f45..25f5eff22 100644 --- a/logic/service/fight/effect/effect_499.go +++ b/logic/service/fight/effect/effect_499.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 499 - 后出手时下回合所有技能先制+m +// Effect 499: 后出手时下回合所有技能先制+{0} type Effect499 struct { node.EffectNode can bool @@ -37,8 +37,7 @@ func (e *Effect499) Skill_Use() bool { } func (e *Effect104) Effect499(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(1) + setArgsWithFixedDuration(&e.EffectNode, t, 1, a...) } func init() { diff --git a/logic/service/fight/effect/effect_4_5.go b/logic/service/fight/effect/effect_4_5.go index 8939b3966..7a50add21 100644 --- a/logic/service/fight/effect/effect_4_5.go +++ b/logic/service/fight/effect/effect_4_5.go @@ -13,13 +13,7 @@ func init() { } -// ----------------------------------------------------------- -// 构造 -// ----------------------------------------------------------- - -// ----------------------------------------------------------- -// 主体结构 -// ----------------------------------------------------------- +// Effect 4: 技能使用成功时,{1}%改变自身{0}等级{2} type Effect4 struct { node.EffectNode } @@ -38,6 +32,7 @@ func (e *Effect4) Skill_Use() bool { return true } +// Effect 5: 技能使用成功时,{1}%改变对手{0}等级{2} type Effect5 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_50.go b/logic/service/fight/effect/effect_50.go index c77244073..d94575520 100644 --- a/logic/service/fight/effect/effect_50.go +++ b/logic/service/fight/effect/effect_50.go @@ -3,15 +3,13 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// n回合自身受到物理攻击伤害减半 -// ---- Effect50 ---- +// Effect 50: {0}回合自身受到物理攻击伤害减半 type Effect50 struct { - node.EffectNode + RoundEffectSideArg0Base StatusID int } @@ -33,12 +31,6 @@ func (e *Effect50) DamageDivEx(t *info.DamageZone) bool { //fmt.Println("Effect50_n", t.Damage) return true } -func (e *Effect50) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} // ---- 注册所有效果 ---- func init() { diff --git a/logic/service/fight/effect/effect_502.go b/logic/service/fight/effect/effect_502.go index bf8309e30..f9d4497dd 100644 --- a/logic/service/fight/effect/effect_502.go +++ b/logic/service/fight/effect/effect_502.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// 502 - n回合内所有直接攻击都将降低对手1/m的体力 +// Effect 502: {0}回合内所有直接攻击都将降低对手1/{1}的HP type Effect502 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect502) OnSkill() bool { @@ -31,10 +30,6 @@ func (e *Effect502) OnSkill() bool { return true } -func (e *Effect502) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 502, &Effect502{}) } diff --git a/logic/service/fight/effect/effect_508.go b/logic/service/fight/effect/effect_508.go index 0e5e74d16..b6548c82a 100644 --- a/logic/service/fight/effect/effect_508.go +++ b/logic/service/fight/effect/effect_508.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) @@ -13,8 +12,9 @@ func init() { } +// Effect 508: 减少{0}点下回合所受的伤害 type Effect508 struct { - node.EffectNode + FixedDuration1Base Can bool } @@ -42,9 +42,3 @@ func (e *Effect508) DamageSubEx(t *info.DamageZone) bool { } return true } -func (e *Effect508) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(1) - -} diff --git a/logic/service/fight/effect/effect_510.go b/logic/service/fight/effect/effect_510.go index fe641c6a0..4f7adbb1d 100644 --- a/logic/service/fight/effect/effect_510.go +++ b/logic/service/fight/effect/effect_510.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 510 - 1 当对手处于防御能力提升时,恢复n点体力值 +// Effect 510: 当对手处于防御能力提升时,恢复{0}点体力值 type Effect510 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_514.go b/logic/service/fight/effect/effect_514.go index 0d02c3595..1c8490409 100644 --- a/logic/service/fight/effect/effect_514.go +++ b/logic/service/fight/effect/effect_514.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 514 - 附加对手已损失体力n%的固定伤害 +// Effect 514: 附加对手已损失生命值{0}%的百分比伤害 type Effect514 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_515.go b/logic/service/fight/effect/effect_515.go index 3710fbc83..4bd243ba3 100644 --- a/logic/service/fight/effect/effect_515.go +++ b/logic/service/fight/effect/effect_515.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 515 - 自身处于能力下降状态时附加n点固定伤害,并解除这些能力下降状态 +// Effect 515: 自身处于能力下降状态时附加{0}点固定伤害,并解除这些能力下降状态 type Effect515 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_517.go b/logic/service/fight/effect/effect_517.go index 75e51caeb..28035b3b6 100644 --- a/logic/service/fight/effect/effect_517.go +++ b/logic/service/fight/effect/effect_517.go @@ -8,7 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 517 - n%概率使对手害怕,每损失m%体力,害怕几率提升k% +// Effect 517: {0}%概率使对手害怕,每损失{1}%体力,害怕概率提升{2}% type Effect517 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_519.go b/logic/service/fight/effect/effect_519.go index 4fc832258..f52a4fc4c 100644 --- a/logic/service/fight/effect/effect_519.go +++ b/logic/service/fight/effect/effect_519.go @@ -3,14 +3,13 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 519 - n回合内自身每处于一种能力强化或弱化状态时都会回复m点体力 +// Effect 519: {0}回合内自身每处于一种能力提升或下降状态时都会回复{1}点体力 type Effect519 struct { - node.EffectNode + RoundEffectArg0Base } func init() { @@ -37,8 +36,3 @@ func (e *Effect519) Action_start() bool { return true } - -func (e *Effect519) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} diff --git a/logic/service/fight/effect/effect_52.go b/logic/service/fight/effect/effect_52.go index 9eaf4aa63..56a825a67 100644 --- a/logic/service/fight/effect/effect_52.go +++ b/logic/service/fight/effect/effect_52.go @@ -2,7 +2,6 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) /** @@ -10,24 +9,15 @@ import ( */ func init() { - t := &Effect52{ - EffectNode: node.EffectNode{}, - } + t := &Effect52{} input.InitEffect(input.EffectType.Skill, 52, t) } +// Effect 52: {0}回合若本方先手攻击,使得对方的技能失效 type Effect52 struct { - node.EffectNode -} - -// 默认添加回合 -func (e *Effect52) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0] - 1) - + RoundEffectSideArg0Minus1Base } func (e *Effect52) SkillHit_ex() bool { diff --git a/logic/service/fight/effect/effect_520.go b/logic/service/fight/effect/effect_520.go index f1ca7c20e..637367483 100644 --- a/logic/service/fight/effect/effect_520.go +++ b/logic/service/fight/effect/effect_520.go @@ -6,7 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// 520 - 有n%的几率使自己害怕 +// Effect 520: 有{0}%的概率使自己害怕 type Effect520 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_53_90.go b/logic/service/fight/effect/effect_53_90.go index 8fe8ce2ec..d10256e50 100644 --- a/logic/service/fight/effect/effect_53_90.go +++ b/logic/service/fight/effect/effect_53_90.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) @@ -17,8 +16,9 @@ func init() { input.InitEffect(input.EffectType.Skill, 53, &Effect90{}) } +// Effect 90: {0}回合内自身造成的伤害为{1}倍 type Effect90 struct { - node.EffectNode + RoundEffectSideArg0Base } func (e *Effect90) Damage_Mul(t *info.DamageZone) bool { @@ -31,9 +31,3 @@ func (e *Effect90) Damage_Mul(t *info.DamageZone) bool { return true } -func (e *Effect90) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} diff --git a/logic/service/fight/effect/effect_54.go b/logic/service/fight/effect/effect_54.go index 02720a364..0ba7da81f 100644 --- a/logic/service/fight/effect/effect_54.go +++ b/logic/service/fight/effect/effect_54.go @@ -3,13 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// Effect54 n 回合使对方攻击伤害是正常状态下的 1/m -// ---- Effect54 ---- +// Effect 54: {0}回合使对方攻击伤害是正常状态下的1/{1}倍 type Effect54 struct { - node.EffectNode + RoundEffectSideArg0Base StatusID int } @@ -31,12 +29,6 @@ func (e *Effect54) DamageDivEx(t *info.DamageZone) bool { //fmt.Println("Effect54_n", t.Damage) return true } -func (e *Effect54) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} // ---- 注册所有效果 ---- func init() { diff --git a/logic/service/fight/effect/effect_545.go b/logic/service/fight/effect/effect_545.go index decc1c0d5..4e81d7b3b 100644 --- a/logic/service/fight/effect/effect_545.go +++ b/logic/service/fight/effect/effect_545.go @@ -2,14 +2,13 @@ package effect import ( "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) -// 545 - n回合内若受到伤害高于m则对手XX +// Effect 545: {0}回合内若受到伤害高于{1}则对手{2} type Effect545 struct { - node.EffectNode + RoundEffectArg0Base } func (e *Effect545) Skill_Use_ex() bool { @@ -22,10 +21,6 @@ func (e *Effect545) Skill_Use_ex() bool { return true } -func (e *Effect545) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(a[0]) // 持续n回合 -} func init() { input.InitEffect(input.EffectType.Skill, 545, &Effect545{}) } diff --git a/logic/service/fight/effect/effect_566.go b/logic/service/fight/effect/effect_566.go index 6073a93a4..d0a8d93d1 100644 --- a/logic/service/fight/effect/effect_566.go +++ b/logic/service/fight/effect/effect_566.go @@ -6,9 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -/** - * 无视对手双防能力提升状态 - */ +// Effect 566: 攻击时忽略对手{0}%的防御值 type Effect566 struct { node.EffectNode can bool diff --git a/logic/service/fight/effect/effect_57.go b/logic/service/fight/effect/effect_57.go index 22a55457a..14867a427 100644 --- a/logic/service/fight/effect/effect_57.go +++ b/logic/service/fight/effect/effect_57.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) /** @@ -16,17 +15,13 @@ func init() { } +// Effect 57: {0}回合内每回合使用技能恢复自身最大体力的1/{1} type Effect57 struct { - node.EffectNode + RoundEffectSideArg0Base } // 默认添加回合 -func (e *Effect57) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect57) OnSkill() bool { heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) diff --git a/logic/service/fight/effect/effect_58.go b/logic/service/fight/effect/effect_58.go index 24cb7dcf1..f701613a7 100644 --- a/logic/service/fight/effect/effect_58.go +++ b/logic/service/fight/effect/effect_58.go @@ -4,7 +4,6 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) /** @@ -16,8 +15,9 @@ func init() { } +// Effect 58: 下{0}回合自身攻击技能必定打出致命一击 type Effect58 struct { - node.EffectNode + RoundEffectSideArg0Base Can bool } @@ -44,9 +44,3 @@ func (e *Effect58) ActionStart(a, b *action.SelectSkillAction) bool { return true } -func (e *Effect58) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} diff --git a/logic/service/fight/effect/effect_6.go b/logic/service/fight/effect/effect_6.go index 672b8916b..26c4494cf 100644 --- a/logic/service/fight/effect/effect_6.go +++ b/logic/service/fight/effect/effect_6.go @@ -16,6 +16,7 @@ func init() { } +// Effect 6: 对方所受伤害的1/{0}会反弹给自己 type Effect6 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_60.go b/logic/service/fight/effect/effect_60.go index 26368973c..5be05b39f 100644 --- a/logic/service/fight/effect/effect_60.go +++ b/logic/service/fight/effect/effect_60.go @@ -16,6 +16,7 @@ func init() { } +// Effect 60: {0}回合内每回合都能附加{1}点固定伤害 type Effect60 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_62.go b/logic/service/fight/effect/effect_62.go index 2208b4282..1c5a0a29d 100644 --- a/logic/service/fight/effect/effect_62.go +++ b/logic/service/fight/effect/effect_62.go @@ -4,17 +4,13 @@ import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" - "math" "github.com/alpacahq/alpacadecimal" ) -/** - * n回合内没有击败,则对方死亡 - */ +// Effect 62: {0}回合后若对方没有将自己击败,则对方死亡 type Effect62 struct { node.EffectNode - } type Effect62_sub struct { node.EffectNode @@ -48,9 +44,7 @@ func (e *Effect62_sub) OnSkill() bool { return true } func init() { - t := &Effect62{ - EffectNode: node.EffectNode{}, - } + t := &Effect62{} input.InitEffect(input.EffectType.Skill, 62, t) @@ -68,7 +62,6 @@ func (e *Effect62) OnSkill() bool { } ee.duy = e.EffectNode.SideEffectArgs[0] - e.GenSub(ee, math.MaxInt) - e.Ctx().Opp.AddEffect(e.Ctx().Our, ee) + addSubEffect(e.Ctx().Our, e.Ctx().Opp, &e.EffectNode, ee, -1) return true } diff --git a/logic/service/fight/effect/effect_65.go b/logic/service/fight/effect/effect_65.go index 7d1c68ef8..b34c724c6 100644 --- a/logic/service/fight/effect/effect_65.go +++ b/logic/service/fight/effect/effect_65.go @@ -3,13 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// n回合内,elemtype系技能威力为m倍 - +// Effect 65: {0}回合内{1}系技能威力为{2}倍 type Effect65 struct { - node.EffectNode + RoundEffectSideArg0Base can bool } @@ -37,9 +35,3 @@ func (e *Effect65) SkillHit() bool { func init() { input.InitEffect(input.EffectType.Skill, 65, &Effect65{}) } -func (e *Effect65) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} diff --git a/logic/service/fight/effect/effect_68.go b/logic/service/fight/effect/effect_68.go index 350d4f521..e793b96ed 100644 --- a/logic/service/fight/effect/effect_68.go +++ b/logic/service/fight/effect/effect_68.go @@ -8,8 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -// 1回合内,受到致死攻击时则余下1点体力 -// ---- Effect68 ---- +// Effect 68: {0}回合内受到致死攻击时则余下1点体力 type Effect68 struct { node.EffectNode StatusID int diff --git a/logic/service/fight/effect/effect_680_690.go b/logic/service/fight/effect/effect_680_690.go index 85e67c792..300d2445f 100644 --- a/logic/service/fight/effect/effect_680_690.go +++ b/logic/service/fight/effect/effect_680_690.go @@ -10,7 +10,7 @@ import ( "github.com/gogf/gf/v2/util/grand" ) -// 680 - 先出手时{0}%使对手{1}{2}回合 +// Effect 680: 先出手时{0}%使对手{1}{2}回合 type Effect680 struct { node.EffectNode } @@ -33,14 +33,9 @@ func (e *Effect680) Skill_Use() bool { return true } -// 681 - 下{0}回合自身攻击技能必定致命、必定命中 +// Effect 681: 下{0}回合自身攻击技能必定致命、必定命中 type Effect681 struct { - node.EffectNode -} - -func (e *Effect681) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) + RoundEffectSideArg0Base } func (e *Effect681) SkillHit() bool { @@ -55,17 +50,12 @@ func (e *Effect681) SkillHit() bool { return true } -// 682 - 受到的伤害超过{0},自身{1} +// Effect 682: 受到的伤害超过{0},自身{1} type Effect682 struct { - node.EffectNode + FixedDurationNeg1Base can bool } -func (e *Effect682) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(-1) -} - func (e *Effect682) DamageLockEx(t *info.DamageZone) bool { if t.Type != info.DamageType.Red { return true @@ -82,7 +72,7 @@ func (e *Effect682) DamageLockEx(t *info.DamageZone) bool { return true } -// 683 - 随机附加{0}~{1}点固定伤害 +// Effect 683: 随机附加{0}~{1}点固定伤害 type Effect683 struct { node.EffectNode } @@ -98,7 +88,7 @@ func (e *Effect683) Skill_Use() bool { return true } -// 684 - 双方任意一方处于能力下降状态均会附加{0}点固定伤害,同时解除自身能力下降状态 +// Effect 684: 双方任意一方处于能力下降状态均会附加{0}点固定伤害,同时解除自身能力下降状态 type Effect684 struct { node.EffectNode } @@ -119,7 +109,7 @@ func (e *Effect684) Skill_Use() bool { return true } -// 685 - 若自身处于能力提升状态,附加{0}点固定伤害 +// Effect 685: 若自身处于能力提升状态,附加{0}点固定伤害 type Effect685 struct { node.EffectNode } @@ -134,7 +124,7 @@ func (e *Effect685) Skill_Use() bool { return true } -// 686 - 若对手{0}则使对手下{1}回合攻击必定MISS +// Effect 686: 若对手{0}则使对手下{1}回合攻击必定MISS type Effect686 struct { node.EffectNode } @@ -166,7 +156,7 @@ func (e *SubEffect686) SkillHit_ex() bool { return true } -// 687 - 若对手{0},则对对方造成伤害的{1}%恢复自身体力 +// Effect 687: 若对手{0},则对对方造成伤害的{1}%恢复自身体力 type Effect687 struct { node.EffectNode } @@ -181,17 +171,12 @@ func (e *Effect687) Skill_Use() bool { return true } -// 688 - {0}回合内抵挡受到的攻击 +// Effect 688: {0}回合内抵挡受到的攻击 type Effect688 struct { - node.EffectNode + FixedDurationNeg1Base conut int } -func (e *Effect688) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(-1) -} - func (e *Effect688) Damage_Shield(t *info.DamageZone) bool { if e.Ctx().SkillEntity == nil { return true @@ -209,7 +194,7 @@ func (e *Effect688) Damage_Shield(t *info.DamageZone) bool { return true } -// 689 - 若造成的伤害高于{0},则恢复自身1/{1}最大体力 +// Effect 689: 若造成的伤害高于{0},则恢复自身1/{1}最大体力 type Effect689 struct { node.EffectNode } @@ -223,14 +208,9 @@ func (e *Effect689) Skill_Use() bool { return true } -// 690 - 下{0}回合,能力提升状态消失则对手使用属性技能失效 +// Effect 690: 下{0}回合,能力提升状态消失则对手使用属性技能失效 type Effect690 struct { - node.EffectNode -} - -func (e *Effect690) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) + RoundEffectSideArg0Base } func (e *Effect690) PropBefer(in *input.Input, prop int8, level int8) bool { diff --git a/logic/service/fight/effect/effect_69.go b/logic/service/fight/effect/effect_69.go index b0761ea73..9e89207c9 100644 --- a/logic/service/fight/effect/effect_69.go +++ b/logic/service/fight/effect/effect_69.go @@ -6,9 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -/** - * 下n回合对手使用体力药剂时效果变成减少相应的体力 - */ +// Effect 69: 下{0}回合对手使用体力药剂时效果变成减少相应的体力 type Effect69 struct { node.EffectNode } @@ -17,9 +15,7 @@ type Effect69_sub struct { } func init() { - t := &Effect69{ - EffectNode: node.EffectNode{}, - } + t := &Effect69{} //t.Owner(true) //t.Duration(5) input.InitEffect(input.EffectType.Skill, 69, t) @@ -28,9 +24,7 @@ func init() { func (e *Effect69) OnSkill() bool { - e.Ctx().Opp.AddEffect(e.Ctx().Our, e.GenSub(&Effect69_sub{ - EffectNode: node.EffectNode{}, - }, e.SideEffectArgs[0])) + addSubEffect(e.Ctx().Our, e.Ctx().Opp, &e.EffectNode, &Effect69_sub{}, e.SideEffectArgs[0]) return true } diff --git a/logic/service/fight/effect/effect_7.go b/logic/service/fight/effect/effect_7.go index 3ffd44a05..07a04b072 100644 --- a/logic/service/fight/effect/effect_7.go +++ b/logic/service/fight/effect/effect_7.go @@ -13,12 +13,11 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 7, &Effect7{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 7, &Effect7{}) } +// Effect 7: 对方体力高于自己时才能命中,将对方体力减到和自己相同 type Effect7 struct { node.EffectNode max alpacadecimal.Decimal diff --git a/logic/service/fight/effect/effect_72.go b/logic/service/fight/effect/effect_72.go index 6df15ae91..927bac6a2 100644 --- a/logic/service/fight/effect/effect_72.go +++ b/logic/service/fight/effect/effect_72.go @@ -8,9 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -/** - * 如果此回合miss,则立即死亡 - */ +// Effect 72: 若没有命中对手则自己失去全部体力 type Effect72 struct { node.EffectNode } @@ -37,7 +35,6 @@ func (e *Effect72) SkillHit() bool { Type: info.DamageType.True, Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.Hp)), }) - return true } diff --git a/logic/service/fight/effect/effect_73.go b/logic/service/fight/effect/effect_73.go index 468fb3f02..2626cf42b 100644 --- a/logic/service/fight/effect/effect_73.go +++ b/logic/service/fight/effect/effect_73.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) @@ -13,25 +12,17 @@ import ( */ func init() { - t := &Effect73{ - EffectNode: node.EffectNode{}, - } + t := &Effect73{} input.InitEffect(input.EffectType.Skill, 73, t) } +// Effect 73: 若先手攻击,则将所受伤害2倍反击给对手 type Effect73 struct { - node.EffectNode + RoundEffectSideArg0Minus1Base } -// 默认添加回合 -func (e *Effect73) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0] - 1) - -} func (e *Effect73) Action_end_ex() bool { if !e.IsFirst() { diff --git a/logic/service/fight/effect/effect_74_75.go b/logic/service/fight/effect/effect_74_75.go index 5c8902def..8460ab901 100644 --- a/logic/service/fight/effect/effect_74_75.go +++ b/logic/service/fight/effect/effect_74_75.go @@ -4,6 +4,8 @@ import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" + + "github.com/gogf/gf/v2/util/grand" ) // 定义状态区间配置:包含概率上限(0-100)和对应的状态 @@ -29,7 +31,7 @@ func newEffectRandomStatus(ranges []statusRange) *EffectRandomStatus { func (e *EffectRandomStatus) OnSkill() bool { // 生成0-99的随机数(100种可能) - randVal := int(e.Input.FightC.GetRand().Int31n(100)) + randVal := grand.Intn(100) targetStatus := info.PetStatus.NULL // 根据配置匹配对应的状态 diff --git a/logic/service/fight/effect/effect_76.go b/logic/service/fight/effect/effect_76.go index af90be05c..19651076b 100644 --- a/logic/service/fight/effect/effect_76.go +++ b/logic/service/fight/effect/effect_76.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) @@ -13,14 +12,13 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 76, &Effect76{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 76, &Effect76{}) } +// Effect 76: {0}%概率令对手在{1}回合内每回合受到{2}点固定伤害 type Effect76 struct { - node.EffectNode + RoundEffectSideArg1Base } func (e *Effect76) OnSkill() bool { @@ -36,9 +34,3 @@ func (e *Effect76) OnSkill() bool { }) return true } -func (e *Effect76) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[1]) - -} diff --git a/logic/service/fight/effect/effect_77.go b/logic/service/fight/effect/effect_77.go index 35740f8d6..34335c34a 100644 --- a/logic/service/fight/effect/effect_77.go +++ b/logic/service/fight/effect/effect_77.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) /** @@ -16,17 +15,13 @@ func init() { } +// Effect 77: {0}回合内若使用技能则恢复{1}点体力值 type Effect77 struct { - node.EffectNode + RoundEffectSideArg0Base } // 默认添加回合 -func (e *Effect77) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect77) OnSkill() bool { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Args()[1]) diff --git a/logic/service/fight/effect/effect_776.go b/logic/service/fight/effect/effect_776.go index 6e3b87668..bc022e13f 100644 --- a/logic/service/fight/effect/effect_776.go +++ b/logic/service/fight/effect/effect_776.go @@ -3,12 +3,11 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) -// ---- Effect776 ---- +// Effect 776: 下{0}回合自身造成的攻击伤害翻倍 type Effect776 struct { - node.EffectNode + RoundEffectSideArg0Base StatusID int } @@ -22,12 +21,6 @@ func (e *Effect776) Damage_Mul(t *info.DamageZone) bool { return true } -func (e *Effect776) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} // ---- 注册所有效果 ---- func init() { diff --git a/logic/service/fight/effect/effect_79.go b/logic/service/fight/effect/effect_79.go index 206c94fbf..4f12f0013 100644 --- a/logic/service/fight/effect/effect_79.go +++ b/logic/service/fight/effect/effect_79.go @@ -8,9 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -/** - * 损失1/2的体力,提升自身的能力 - */ +// Effect 79: 损失1/2的体力,提升自身的能力 type Effect79 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_8.go b/logic/service/fight/effect/effect_8.go index 791b41a1c..7ad02e34d 100644 --- a/logic/service/fight/effect/effect_8.go +++ b/logic/service/fight/effect/effect_8.go @@ -17,6 +17,7 @@ func init() { } +// Effect 8: 伤害大于对方体力时,对方会余下1体力 type Effect8 struct { node.EffectNode max alpacadecimal.Decimal diff --git a/logic/service/fight/effect/effect_80.go b/logic/service/fight/effect/effect_80.go index 76a51d8ff..3969ddc61 100644 --- a/logic/service/fight/effect/effect_80.go +++ b/logic/service/fight/effect/effect_80.go @@ -8,9 +8,7 @@ import ( "github.com/alpacahq/alpacadecimal" ) -/** - * 损失1/2的体力,给于对手同等的伤害 - */ +// Effect 80: 损失1/2的体力,给予对手同等的伤害 type Effect80 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_81.go b/logic/service/fight/effect/effect_81.go index 587614f76..e9268dd38 100644 --- a/logic/service/fight/effect/effect_81.go +++ b/logic/service/fight/effect/effect_81.go @@ -4,7 +4,6 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) //下n回合自身攻击技能必定命中 @@ -14,8 +13,9 @@ func init() { } +// Effect 81: 下{0}回合自身攻击技能必定命中 type Effect81 struct { - node.EffectNode + RoundEffectSideArg0Base can bool } @@ -41,9 +41,3 @@ func (e *Effect81) ActionStart(a, b *action.SelectSkillAction) bool { e.Ctx().SkillEntity.XML.MustHit = 1 return true } -func (e *Effect81) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} diff --git a/logic/service/fight/effect/effect_82.go b/logic/service/fight/effect/effect_82.go index 7bba9c999..38c047e84 100644 --- a/logic/service/fight/effect/effect_82.go +++ b/logic/service/fight/effect/effect_82.go @@ -13,6 +13,7 @@ func init() { } +// Effect 82: 目标为雄性,伤害为200%;目标为雌性,伤害为50% type Effect82 struct { node.EffectNode can bool diff --git a/logic/service/fight/effect/effect_83.go b/logic/service/fight/effect/effect_83.go index c6d463546..db2bf489c 100644 --- a/logic/service/fight/effect/effect_83.go +++ b/logic/service/fight/effect/effect_83.go @@ -4,7 +4,6 @@ import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "math" ) @@ -17,8 +16,9 @@ func init() { } +// Effect 83: 自身雄性,下两回合必定先手;自身雌性,下两回合必定致命一击 type Effect83 struct { - node.EffectNode + FixedDuration2Base can bool } @@ -78,10 +78,3 @@ func (e *Effect83) ActionStart(a, b *action.SelectSkillAction) bool { return true } -func (e *Effect83) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - - e.EffectNode.Duration(2) - -} diff --git a/logic/service/fight/effect/effect_87.go b/logic/service/fight/effect/effect_87.go index e04603ecf..1aa654612 100644 --- a/logic/service/fight/effect/effect_87.go +++ b/logic/service/fight/effect/effect_87.go @@ -14,6 +14,7 @@ func init() { } +// Effect 87: 恢复自身所有PP值 type Effect87 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_88.go b/logic/service/fight/effect/effect_88.go index 1dffd8373..2b1bf9a03 100644 --- a/logic/service/fight/effect/effect_88.go +++ b/logic/service/fight/effect/effect_88.go @@ -11,12 +11,11 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 88, &Effect88{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 88, &Effect88{}) } +// Effect 88: {0}%概率伤害为{1}倍 type Effect88 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_89.go b/logic/service/fight/effect/effect_89.go index edc939636..e3f80d951 100644 --- a/logic/service/fight/effect/effect_89.go +++ b/logic/service/fight/effect/effect_89.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) /** @@ -11,25 +10,19 @@ import ( */ func init() { - t := &Effect89{ - EffectNode: node.EffectNode{}, - } + t := &Effect89{} input.InitEffect(input.EffectType.Skill, 89, t) } +// Effect 89: {0}回合内每次造成伤害的1/{1}会恢复自己的HP type Effect89 struct { - node.EffectNode + RoundEffectSideArg0Base } // 默认添加回合 -func (e *Effect89) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect89) Skill_Use() bool { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.SumDamage.Div(e.Args()[1])) diff --git a/logic/service/fight/effect/effect_91.go b/logic/service/fight/effect/effect_91.go index 839f4f1bb..fc6f94041 100644 --- a/logic/service/fight/effect/effect_91.go +++ b/logic/service/fight/effect/effect_91.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" ) /** @@ -11,26 +10,20 @@ import ( */ func init() { - t := &Effect91{ - EffectNode: node.EffectNode{}, - } + t := &Effect91{} input.InitEffect(input.EffectType.Skill, 91, t) } +// Effect 91: {0}回合内对手的状态变化会同时作用在自己身上 type Effect91 struct { - node.EffectNode + RoundEffectSideArg0Base can bool } // 默认添加回合 -func (e *Effect91) SetArgs(t *input.Input, a ...int) { - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} func (e *Effect91) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { for i, v := range e.Ctx().Opp.Prop[:] { diff --git a/logic/service/fight/effect/effect_93.go b/logic/service/fight/effect/effect_93.go index 3c06152a3..baddeddeb 100644 --- a/logic/service/fight/effect/effect_93.go +++ b/logic/service/fight/effect/effect_93.go @@ -15,6 +15,7 @@ func init() { } +// Effect 93: {0}%概率额外附加{1}点固定伤害 type Effect93 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_95.go b/logic/service/fight/effect/effect_95.go index e12cac5de..78b30d7f7 100644 --- a/logic/service/fight/effect/effect_95.go +++ b/logic/service/fight/effect/effect_95.go @@ -16,6 +16,7 @@ func init() { } +// Effect 95: 对手处于睡眠状态时,致命一击率提升{0}% type Effect95 struct { node.EffectNode } diff --git a/logic/service/fight/effect/effect_98.go b/logic/service/fight/effect/effect_98.go index 7dc5939c7..5f1419872 100644 --- a/logic/service/fight/effect/effect_98.go +++ b/logic/service/fight/effect/effect_98.go @@ -3,7 +3,6 @@ package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" - "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) @@ -13,14 +12,13 @@ import ( */ func init() { - input.InitEffect(input.EffectType.Skill, 98, &Effect98{ - EffectNode: node.EffectNode{}, - }) + input.InitEffect(input.EffectType.Skill, 98, &Effect98{}) } +// Effect 98: {0}回合内对雄性精灵的伤害为{1}倍 type Effect98 struct { - node.EffectNode + RoundEffectSideArg0Base } func (e *Effect98) Damage_Mul(t *info.DamageZone) bool { @@ -37,9 +35,3 @@ func (e *Effect98) Damage_Mul(t *info.DamageZone) bool { return true } -func (e *Effect98) SetArgs(t *input.Input, a ...int) { - - e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) - -} diff --git a/logic/service/fight/effect/effect_addlevel.go b/logic/service/fight/effect/effect_addlevel.go index 67193d381..9d901c138 100644 --- a/logic/service/fight/effect/effect_addlevel.go +++ b/logic/service/fight/effect/effect_addlevel.go @@ -48,6 +48,7 @@ func init() { } +// Effect 9: 连续使用每次威力增加{0},最高威力{1} type Effect9 struct { AddLvelEffect } @@ -62,7 +63,7 @@ func init() { input.InitEffect(input.EffectType.Skill, 484, &Effect484{}) } -// 484 - 连击n次,每次命中后连击数+m,最高连击p次 +// Effect 484: 连击{0}次,每次命中后连击数+{1},最高连击{2}次 type Effect484 struct { AddLvelEffect } @@ -78,7 +79,7 @@ func (e *Effect484) Damage_Mul(t *info.DamageZone) bool { return true } -// 411 - 附加对手当前体力值n%的百分比伤害,连续使用每次增加m%,最高k% +// Effect 411: 附加对手当前体力值{0}%的百分比伤害,连续使用每次增加{1}%,最高{2}% type Effect411 struct { AddLvelEffect } @@ -105,9 +106,7 @@ func init() { input.InitEffect(input.EffectType.Skill, 429, &Effect429{}) } -// 497 - 附加m点固定伤害,每次使用额外附加n点,最高k点,遇到天敌时效果翻倍 - -// 429 - 附加m点固定伤害,连续使用每次增加n点固定伤害,最高附加k点固定伤害 +// Effect 429: 附加{0}点固定伤害,连续使用每次增加{1}点固定伤害,最高附加{2}点固定伤害 type Effect429 struct { AddLvelEffect ispower bool @@ -132,7 +131,7 @@ func init() { input.InitEffect(input.EffectType.Skill, 181, &Effect181{}) } -// 181 - n%几率令对手XX,连续攻击每次提高m%几率最高提高k% +// Effect 181: {0}%概率令对手{1},连续攻击每次提高{2}%概率,最多提高{3}% type Effect181 struct { AddLvelEffect } @@ -155,7 +154,7 @@ func init() { input.InitEffect(input.EffectType.Skill, 441, &Effect441{}) } -// 441 - 每次攻击提升n%的致命几率,最高提升m% +// Effect 441: 每次攻击提升{0}%的致命概率,最高提升{1}% type Effect441 struct { AddLvelEffect } @@ -180,7 +179,7 @@ func init() { input.InitEffect(input.EffectType.Skill, 465, &Effect465{}) } -// 465 - m%令对手疲惫n回合,每次使用几率提升x%,最高y% +// Effect 465: {0}%令对手疲惫{1}回合,每次使用概率提升{2}%,最高{3}% type Effect465 struct { AddLvelEffect } diff --git a/logic/service/fight/effect/effect_info_map.go b/logic/service/fight/effect/effect_info_map.go new file mode 100644 index 000000000..0931e4e80 --- /dev/null +++ b/logic/service/fight/effect/effect_info_map.go @@ -0,0 +1,363 @@ +package effect + +// effectInfoByID 来源: public/config/effectInfo.json +// 仅收录当前 effect 包中已注册的技能效果ID。 +var effectInfoByID = map[int]string{ + 1: "给予对方损伤的一半会回复自己的体力", + 3: "解除自身的能力下降状态", + 4: "技能使用成功时,{1}%改变自身{0}等级{2}", + 5: "技能使用成功时,{1}%改变对手{0}等级{2}", + 6: "对方所受伤害的1/{0}会反弹给自己", + 7: "对方体力高于自己时才能命中,将对方体力减到和自己相同", + 8: "伤害大于对方体力时,对方会余下1体力", + 9: "连续使用每次威力增加{0},最高威力{1}", + 13: "{0}回合吸取对方最大体力的1/8(对草系无效)", + 20: "{0}%令本方疲惫,{1}回合无法攻击", + 21: "", + 28: "降低对方1/{0}的hp", + 29: "额外附加{0}点固定伤害", + 31: "", + 32: "使用后{0}回合攻击击中对象要害概率增加1/16", + 33: "消除对手能力提升状态", + 34: "将所受的伤害{0}倍反馈给对手", + 35: "惩罚,对方能力等级越高,此技能威力越大", + 36: "命中时{0}%的概率秒杀对方", + 37: "自身HP小于1/{0}时威力为{1}倍", + 39: "{0}%降低对手所有技能{1}点PP值,然后若对手所选择的技能PP值为0则当回合对手无法行动", + 41: "", + 42: "", + 43: "恢复自身最大体力的1/{0}", + 44: "{0}回合自己受到特殊攻击伤害减半", + 46: "抵挡下{0}次对手的攻击", + 47: "{0}回合内免疫能力下降状态", + 48: "{0}回合内免疫所有受到的异常状态", + 49: "可以抵挡{0}点伤害", + 50: "{0}回合自身受到物理攻击伤害减半", + 52: "{0}回合若本方先手攻击,使得对方的技能失效", + 53: "{0}回合攻击伤害是正常状态下的{1}倍", + 54: "{0}回合使对方攻击伤害是正常状态下的1/{1}倍", + 57: "{0}回合内每回合使用技能恢复自身最大体力的1/{1}", + 58: "下{0}回合自身攻击技能必定打出致命一击", + 59: "消耗自身全部体力(体力降到0),使下一只出战精灵的{0}和{1}能力提升1个等级", + 60: "{0}回合内每回合都能附加{1}点固定伤害", + 62: "{0}回合后若对方没有将自己击败,则对方死亡", + 63: "将能力下降状态反馈给对手", + 65: "{0}回合内{1}系技能威力为{2}倍", + 68: "{0}回合内受到致死攻击时则余下1点体力", + 69: "下{0}回合对手使用体力药剂时效果变成减少相应的体力", + 71: "消耗自身全部体力,己方下2次攻击技能必定打出致命一击", + 72: "若没有命中对手则自己失去全部体力", + 73: "若先手攻击,则将所受伤害2倍反击给对手", + 74: "命中时有30%概率令对手中毒、烧伤或冻伤", + 75: "命中时有30%概率令对手麻痹、睡眠或害怕", + 76: "{0}%概率令对手在{1}回合内每回合受到{2}点固定伤害", + 77: "{0}回合内若使用技能则恢复{1}点体力值", + 79: "损失1/2的体力,提升自身的能力", + 80: "损失1/2的体力,给予对手同等的伤害", + 81: "下{0}回合自身攻击技能必定命中", + 82: "目标为雄性,伤害为200%;目标为雌性,伤害为50%", + 83: " 自身雄性,下两回合必定先手;自身雌性,下两回合必定致命一击", + 85: "使对手的能力提升效果转化到自己身上", + 87: "恢复自身所有PP值", + 88: "{0}%概率伤害为{1}倍", + 89: "{0}回合内每次造成伤害的1/{1}会恢复自己的HP", + 90: "{0}回合内自身造成的伤害为{1}倍 ", + 91: "{0}回合内对手的状态变化会同时作用在自己身上", + 93: "{0}%概率额外附加{1}点固定伤害", + 95: "对手处于睡眠状态时,致命一击率提升{0}%", + 98: "{0}回合内对雄性精灵的伤害为{1}倍", + 100: "自身体力越少则威力越大", + 101: "给对手造成伤害时,伤害数值的{0}%恢复自身体力", + 105: "给予对象损伤的1/{0},会回复自己的HP", + 107: "若本次攻击造成的伤害小于{0},则自身{1}提升1个等级", + 110: "{0}回合内每次躲避攻击都有{1}%概率使自身{2}提升1个等级", + 111: "附加额外伤害,自身等级越高,附加的伤害越高", + 112: "牺牲全部体力给对手造成250~300点伤害,造成致命伤害时,对手剩下1点体力", + 113: "个体越高,威力越大", + 115: "{0}%概率附加速度的1/{1}伤害", + 116: "3回合内如果先出手,伤害的20%恢复体力", + 117: "5回合内如果先出手,50%概率对手害怕1到3回合", + 119: "若伤害为奇数,30%对手疲惫1回合;若为偶数,30%速度+1", + 120: "50%概率对方减血1/{0},50%概率自己减血1/{0}", + 121: "属性相同时,{0}%概率让对方麻痹", + 122: "先出手时,{1}%改变对方{0}等级{2}", + 123: "{0}回合内受到任何伤害,自身{1}提高{2}个等级", + 124: "命中后,{0}%概率随机对方一个属性{1}个等级", + 125: "{0}回合内每回合被攻击所受到的伤害不超过{1}", + 126: "{0}回合内每回合自身攻击和速度提高{1}个等级", + 127: "{0}%的概率,{1}回合内受到的伤害减半", + 128: "{0}回合内将受到的攻击伤害转化为自身体力", + 129: "对方为{0}则技能威力翻倍", + 130: "对方为{0}则附加{1}点伤害", + 131: "对方为{0}则免疫当前回合伤害", + 134: "若造成的伤害低于{0},则所有技能的PP值恢复{1}点", + 135: "造成的伤害不会低于{0}", + 136: "若Miss则自己恢复1/{0}体力", + 137: "损失一半当前体力值,自身攻击和速度提升2个等级", + 138: "先出手时,{0}回合自己不会受到对手攻击性技能伤害并反弹对手造成伤害的1/{1}", + 140: "随机降低对手1/{0}至1/{1}的当前体力值", + 142: "损失1/{0}的体力值,下回合能较快出手", + 143: "使对手的能力提升效果反转成能力下降效果", + 144: "消耗自己所有体力,使下一个出战的精灵{0}回合免疫异常状态", + 145: "攻击中毒的对手时,自身回复1/{0}最大体力值", + 146: "{0}回合内受到物理攻击时有{1}%概率使对方中毒", + 147: "后出手时,{0}%概率使对方{1}", + 148: "后出手时,{1}%改变对方{0}等级{2}", + 149: "命中后,{0}%令对方{1},{2}%令对方{3}", + 150: "{0}回合内对手每回合防御和特防等级{1}", + 151: "对手烧伤时,{0}%对方疲惫1回合;对手未烧伤时,{1}%对方疲惫1回合", + 152: "{0}回合内若对方使用属性技能,则{1}%使对方{2}", + 153: "{0}回合内每回合对对方造成伤害的1/{1}恢复自身体力", + 154: "若对手{0},则对对方造成伤害的1/{1}恢复自身体力", + 155: "恢复全部体力,消除所有能力下降,使自己进入睡眠{0}回合", + 156: "{0}回合内使得对手所有能力增强效果失效", + 157: "{0}回合内若受到攻击,对手防御等级-1、特防等级-1、命中等级-1", + 159: "自身体力小于最大值的1/{0}时,{1}%概率令对方{2}", + 160: "{0}回合内若对手MISS则下回合自身必定致命一击", + 161: "{0}%降低自身当前体力值的1/{1}", + 163: "{0}回合内若对手使用属性技能则对手随机进入烧伤、冻伤、中毒、麻痹、害怕、睡眠中的一种异常状态", + 164: "{0}回合内若受到攻击则有{1}%概率令对手{2}", + 165: "{0}回合内每回合防御和特防等级+{1}", + 166: "{0}回合内若对手使用属性攻击则{2}%对手{1}等级{3}", + 169: "{0}回合内每回合额外附加{1}%概率令对手{2}", + 170: "若先出手,则免疫当回合伤害并回复1/{0}的最大体力值", + 171: "{0}回合内自身使用属性技能时能较快出手", + 172: "若后出手,则给予对方损伤的1/{0}会回复自己的体力", + 173: "先出手时,{0}%概率令对方{1}", + 174: "", + 175: "若对手处于异常状态,则{1}%自身{0}等级{2}", + 176: "{0}%概率令对手随机进入烧伤、冻伤、中毒、麻痹、害怕、睡眠中的一种异常状态", + 177: "{0}回合内若对手MISS则自身恢复1/{1}的最大体力值", + 178: "造成伤害的1/{0}回复自身体力,若属性相同则造成伤害的1/{1}回复自身体力", + 179: "若属性相同则技能威力提升{0}", + 180: "消除对手回合类效果", + 181: "{0}%概率令对手{1},连续攻击每次提高{2}%概率,最多提高{3}%", + 182: "若对手处于{0}状态,{2}%自身{1}等级+{3}", + 183: "{0}回合内免疫并反弹{1}伤害", + 184: "若对手处于能力提升状态,则{1}%自身{0}等级+{2}", + 186: "后出手时,{1}%使自身{0}提升{2}个等级", + 187: "{0}回合内若对手使用属性技能,则自身恢复1/{1}最大体力值", + 188: "若对手处于异常状态,则威力翻倍并消除对手相应的防御能力提升效果", + 189: "{0}回合内若受到攻击,对手攻击等级-1、特攻等级-1", + 190: "{0}回合内若受到攻击,消除对手能力提升状态", + 191: "{0}回合内免疫并反弹所有受到的异常状态", + 192: "附加{0}%当前体力值的伤害", + 193: "若对手{0},则必定造成双倍伤害", + 194: "造成伤害的1/{0}回复自身体力,若对手{1},则造成伤害的1/{2}回复自身体力", + 195: "无视对手双防能力提升状态", + 196: "{1}%令对方{0}等级{2};若先出手,则{4}%使对方{3}等级{5}", + 197: "{0}回合内若被对方击败,则对手所有能力加强状态消失", + 198: "随机使对手{0}种能力等级-{1}", + 199: "下次被击败后,下一个出场的精灵{0}等级+{1}", + 200: "若对手处于能力提升状态,{0}%概率令对手{1}", + 201: "对选中对象或本方全体恢复1/{1}的体力", + 402: "后出手时,额外附加{0}点固定伤害", + 403: "技能使用成功时,{0}%令自身特攻和速度等级+{1}。若和对手属性相同,则技能效果翻倍", + 404: "恢复双方所有体力", + 405: "先出手时,额外附加{0}点固定伤害", + 406: "{0}回合内受到攻击{1}%概率回复{2}点体力", + 407: "下回合起,每回合{0}等级+{1},持续{2}回合", + 408: "{0}回合内每回合所受的伤害减少{1}", + 409: "{0}回合内对手每回合速度和命中等级{1}", + 410: "{0}%回复自身1/{1}体力值", + 411: "附加对手当前体力值{0}%的百分比伤害,连续使用每次增加{1}%,最高{2}%", + 412: "若自身体力小于1/{0},则每次攻击不消耗PP值", + 413: "若对手处于能力提升状态则附加{0}点固定伤害", + 414: "对手{0}等级{1},若对手处于{2}状态,则弱化效果翻倍", + 415: "若造成的伤害大于{0}点,则自身恢复{1}点生命值", + 416: "{0}回合内受到任何伤害,对手{1}降低{2}个等级", + 417: "{0}回合内自身攻击技能造成伤害的{1}%会恢复自身体力", + 418: "若对手处于能力提升状态则对方{0}等级{1}", + 419: "{0}回合内若对手处于能力提升状态,则每回合都会受到{1}点固定伤害", + 420: "使用了该技能后,若受到消除强化类技能攻击,则对方攻击和特攻等级{0}", + 422: "附加所造成伤害值{0}%的固定伤害", + 423: "直接造成等同于对手防御值的固定伤害", + 424: "{0}回合内对手每回合速度等级{1}", + 425: "随机吸取对手{0}项属性{1},并将该属性附加给自己", + 426: "{0}回合内每回合{1}%闪避对手攻击", + 427: "{0}回合内每次直接攻击都会使对手防御和特防{1}", + 428: "遇到天敌时附加{0}点固定伤害", + 429: "附加{0}点固定伤害,连续使用每次增加{1}点固定伤害,最高附加{2}点固定伤害", + 430: "消除对手能力提升状态,若消除状态成功,则自身{0}等级+{1}", + 432: "{0}回合内对手所有攻击必定MISS,必中技能有效", + 433: "{0}回合内每回合{1}", + 434: "若自身处于能力提升状态则{0}%概率令对手{1}", + 435: "牺牲自己,使下回合出场的精灵首次攻击必定命中,必定先手", + 436: "附加已损失体力值{0}%的百分比伤害", + 437: "若对手处于能力提升状态,则对手{0}等级{1}", + 438: "{0}%的概率恢复自身体力的1/{1}", + 439: "{0}回合内若自身处于能力下降或异常状态,则对手每回合受到{1}点固定伤害", + 440: "{0}回合内对手使用技能消耗的PP值变为{1}倍", + 441: "每次攻击提升{0}%的致命概率,最高提升{1}%", + 442: "{0}%另对手{1},每次造成的伤害值都将恢复自身体力", + 443: "{0}回合内若受到的伤害超过{1}则对手疲惫{2}回合", + 444: "降低对手所有PP一点,并恢复自身所有PP一点", + 445: "使用后在战斗结束时可以获得500赛尔豆,每日上限5000", + 446: "随机自身3项属性+1", + 447: "造成的伤害不少于{0}", + 448: "{0}回合内每回合对手{1}", + 449: "若对手处于能力下降状态则{0}%概率{1}", + 450: "随机恢复{0}到{1}点生命值", + 451: "命中后{0}%随机令对手进入烧伤,冻伤,中毒中的{1}种", + 452: "{0}合内自身所有攻击造成的伤害都将为自己恢复体力", + 453: "消除对手能力提升状态,若消除成功,则对手{0}", + 454: "当自身血量少于1/{0}时先制+{1}", + 455: "每损失{0}点体力则额外附加{1}点固定伤害", + 456: "若对手体力不足{0}则直接秒杀", + 457: "复制对手释放的技能(组队对战时无效)", + 458: "若先出手则造成攻击伤害的{0}%恢复自身体力", + 459: "附加对手防御值{0}%的百分比伤害", + 460: "{0}%概率令对手害怕,若对手处于能力提升状态则额外附加{1}%概率", + 461: "若自身生命值低于1/{0}则从下回合开始必定致命一击", + 462: "{0}回合内受攻击时反弹{1}点固定伤害", + 463: "{0}回合内每回合所受的伤害减少{1}点", + 464: "遇到天敌时{0}%令对手烧伤", + 465: "{0}%令对手疲惫{1}回合,每次使用概率提升{2}%,最高{3}%", + 466: "恢复{0}点体力", + 467: "若对手处于{0}状态则附加{1}点固定伤害 ", + 468: "回合开始时,若自身处于能力下降状态,则威力翻倍,同时解除能力下降状态", + 469: "{0}回合内若对手使用属性技能则{1}%概率令对手{2}", + 470: "{0}回合内若自身攻击技能命中则{1}%令对手{2}", + 471: "先出手时{0}回合内免疫异常状态", + 472: "若对手处于{0}状态则每次攻击造成的伤害都将恢复自身体力", + 473: "若造成的伤害不足{0},则自身{1}等级+{2}", + 474: "先出手时{1}%自身{0}等级+{2}", + 475: "若造成的伤害不足{0},则下{1}回合的攻击必定致命一击 ", + 476: "后出手时恢复{0}点体力", + 477: "{0}回合内若受到攻击,则对手{1}", + 478: "{0}回合内令对手使用的属性技能无效", + 479: "损失自身{0}点体力,给对手造成{1}点固定伤害,若自身体力不足{2}则剩下{3}点体力", + 481: "下{0}回合自身攻击先制+{1}", + 482: "{0}%概率先制+{1}", + 483: "对手{0},后出手时弱化效果翻倍", + 484: "连击{0}次,每次命中后连击数+{1},最高连击{2}次 ", + 485: "消除对手能力提升状态,消除成功则恢复自身所有体力", + 486: "下{0}回合若自身选择使用技能则无视对手能力提升状态", + 487: "若对手的体力大于{0},则每次使用自身攻击+{1}", + 488: "若对手的HP小于{0},则造成的伤害增加{1}%", + 489: "若自身处于能力提升状态,则每次攻击恢复自身体力的1/{0}", + 490: "造成的伤害大于{0},则对自身{1}+{2}", + 491: "{0}回合内对手造成的伤害降低{1}%", + 492: "{0}回合内对方使用属性技能,则自身立刻恢复1/{1}生命值且{2}+{3},{4}+{5}", + 493: "{0}回合内若对方使用攻击技能则自身下{1}回合必定暴击 ", + 494: "无视对手能力提升状态", + 495: "若对手处于{0}状态,则{1}%概率秒杀对手", + 496: "若打出致命一击则恢复自身所有体力", + 497: "附加{0}点固定伤害,每次使用额外附加{1}点,最高{2}点,遇到天敌时效果翻倍", + 498: "{0}回合内致命一击概率上升1/{1}", + 499: "后出手时下回合所有技能先制+{0}", + 500: "若对手处于害怕状态则伤害翻倍", + 501: "若造成的伤害不足{0},则对手{1}等级-{2}", + 502: "{0}回合内所有直接攻击都将降低对手1/{1}的HP", + 503: "若造成的伤害不足{0},则回合结束时对手损失{1}点固定体力", + 504: "{0}%令对手害怕,若没有触发害怕效果,则对手{1}", + 505: "若打出致命一击,则造成伤害值的{0}%恢复自身体力 ", + 506: "下回合受到致命伤害时残留{0}点体力 ", + 507: "下回合若受到的伤害大于{0},则恢复自身所有体力 ", + 508: "减少{0}点下回合所受的伤害 ", + 509: "恢复自身已损失体力值的1/{0}", + 510: "当对手处于防御能力提升时,恢复{0}点体力值 ", + 511: "{0}%概率威力翻倍 体力低于1/{1}时概率增加{2}%", + 512: "自身{0},40%概率强化翻倍", + 513: "处在烧伤、中毒、冻伤状态时威力翻倍,命中后解除这些异常状态 ", + 514: "附加对手已损失生命值{0}%的百分比伤害 ", + 515: "自身处于能力下降状态时附加{0}点固定伤害,并解除这些能力下降状态", + 516: "{0},体力值低于1/{6}时强化效果翻倍", + 517: "{0}%概率使对手害怕,每损失{1}%体力,害怕概率提升{2}%", + 518: "若伤害高于{0},则自身{1}+{2}", + 519: "{0}回合内自身每处于一种能力提升或下降状态时都会回复{1}点体力", + 520: "有{0}%的概率使自己害怕", + 521: "反转自身能力下降状态", + 522: "{0}回合内若自身处于异常状态则受到伤害减少{1}点", + 523: "攻击结束时自身{0}", + 524: "{0}回合内若被对手击败则对手疲惫{1}回合 ", + 525: "{0}回合内有{1}%概率免疫对手的攻击伤害", + 526: "{0}回合内若对手成功使用属性技能则受到{1}点固定伤害", + 527: "使用技能时体力低于1/{0},则{1}回合内免疫异常状态", + 528: "先出手时{0}回合内不受能力下降技能影响", + 529: "使自身体力百分比与对手体力百分比对调", + 530: "使用时若自身体力低于1/{0}则恢复所有体力值", + 531: "造成的伤害低于280时每相差2点有1%的概率使对手害怕", + 532: "{0}回合内每回合使用技能恢复自身最大体力的1/{1}并造成等量百分比伤害", + 533: "消除双方能力提升、下降状态", + 534: "附加防御、特防总和10%的百分比伤害", + 535: "{0}回合内若受到攻击则自身防御+1 特防+1", + 536: "若当次攻击击败对手,恢复对手体力上限1/{0}的体力 ", + 537: "自身攻击{0},若对手处于能力提升状态则强化效果翻倍", + 538: "消除对手能力提升状态,若消除成功则自身{0}", + 539: "对手处于能力提升状态时先制额外+1且威力翻倍", + 540: "若后出手则下{0}回合攻击必定致命一击", + 541: "造成的攻击伤害若低于{0}则恢复自身{1}点体力", + 542: "对手每处于一种能力下降状态时附加{0}点固定伤害", + 544: "解除自身的烧伤、冻伤、中毒状态", + 545: "{0}回合内若受到伤害高于{1}则对手{2}", + 546: "若对手处于{0}状态则对手{1}", + 547: "使敌我双方同时{0}{1}回合", + 548: "消除对手能力提升状态,消除成功后恢复{0}点体力", + 549: "使对手随机进入烧伤、冻伤、中毒、害怕、疲惫、麻痹其中{0}种异常状态", + 550: "若自身处于异常状态则恢复所有体力", + 551: "使对手下回合受到其他技能的伤害翻倍 ", + 552: "若对手处于异常状态,则{0}%概率附加{1}点伤害", + 553: "若打出致命一击则对手{0}%概率{1}", + 555: "若打出致命一击则自身{0}回合内免疫异常状态", + 556: "命中后使自身体力降为1", + 557: "{0}回合内对手使用正先制的技能时{1}%令对手{2}", + 558: "若自身不处于能力提升或下降状态时则恢复{0}点体力", + 559: "{0}回合内若对手使用攻击技能则随机进入烧伤、冻伤、中毒、麻痹、害怕、睡眠中的一种异常状态", + 560: "下回合其他攻击技能附加{0}点固定伤害", + 561: "先出手时当回合对手使用技能后若自身体力为0,则令自身体力等于最大体力", + 562: "自身{0},对手{6}时强化效果翻倍", + 563: "命中后{0}回合内若对手受到特攻伤害则100%烧伤", + 564: "命中后{0}回合内若对手受到攻击伤害则100%烧伤", + 565: "先出手时恢复1/{0}体力", + 566: "攻击时忽略对手{0}%的防御值", + 567: "对手为自身天敌时造成的伤害翻倍", + 568: "解除自身能力下降状态,若解除成功则{0}回合内躲避所有攻击 ", + 570: "免疫下{0}次受到的攻击", + 571: "{0}回合后对对手造成{1}点固定伤害 重复使用无法叠加", + 572: "攻击对手时若对手处于{0}状态,则{1}%使对手{2}", + 574: "消耗自身全部体力,令己方下次使用的技能必定先手、必定命中,下次命中的攻击技能必定打出致命一击", + 575: "对手处于任意异常状态时造成的伤害将全额恢复体力", + 576: "{0}回合内免疫低于{1}的攻击伤害", + 577: "自身处于能力提升状态时,使对手{0}能力{1}", + 578: "{0}回合内对手所有属性技能命中率减少{1}%", + 579: "若当回合未击败对手,则恢复自身最大体力的1/{0}", + 580: "{0}回合内自身受到直接攻击伤害的{1}%反馈给对手", + 588: "先出手时,{0}%概率使自己{1}+{2}", + 400: "若和对手属性相同,则技能威力翻倍", + 480: "{0}回合内自身所有攻击威力为两倍", + 586: "{0}回合内自己的属性攻击必中", + 599: "{0}回合内受到{1}伤害减少{2}%", + 610: "遇到天敌时先制+{0}", + 611: "下{0}回合自身使用攻击技能则附加{1}点固定伤害", + 613: "{0}回合内自身令对手使用的{1}系攻击技能无效", + 609: "若对手{0},技能威力翻倍", + 620: "{0}回合内致命一击率上升{1}/16", + 626: "随机使自己{0}项能力+{1}", + 680: "先出手时{0}%使对手{1}{2}回合", + 681: "下{0}回合自身攻击技能必定致命、必定命中", + 682: "受到的伤害超过{0},自身{1}", + 683: "随机附加{0}~{1}点固定伤害", + 684: "双方任意一方处于能力下降状态均会附加{0}点固定伤害,同时解除自身能力下降状态", + 685: "若自身处于能力提升状态,附加{0}点固定伤害", + 686: "若对手{0}则使对手下{1}回合攻击必定MISS", + 687: "若对手{0},则对对方造成伤害的{1}%恢复自身体力", + 688: "{0}回合内抵挡受到的攻击", + 689: "若造成的伤害高于{0},则恢复自身1/{1}最大体力", + 690: "下{0}回合,能力提升状态消失则对手使用属性技能失效", + 776: "下{0}回合自身造成的攻击伤害翻倍", + 1044: "吸取对手能力提升状态,吸取成功则下{0}回合造成的伤害翻倍", + 1146: "双方每处于{0}种能力提升状态则附加{1}点固定伤害", + 1605: "{0}%令对手{1}", +} + +func EffectInfo(id int) string { + return effectInfoByID[id] +} + +func EffectInfoOrDefault(id int) string { + if info, ok := effectInfoByID[id]; ok && info != "" { + return info + } + return "未配置效果说明" +} diff --git a/logic/service/fight/effect/effect_power_doblue.go b/logic/service/fight/effect/effect_power_doblue.go index e1b83ddd6..f12659f6d 100644 --- a/logic/service/fight/effect/effect_power_doblue.go +++ b/logic/service/fight/effect/effect_power_doblue.go @@ -25,7 +25,7 @@ func (r *statusFuncRegistryType) Get(id int) func(*input.Input, *input.Input) bo return r.funcs[id] } -// ---- Effect96 ---- +// Effect 96: 对手处于烧伤状态时,威力翻倍 type Effect96 struct { node.EffectNode StatusID int @@ -88,6 +88,7 @@ func init() { initskill(609, &Effect609{}) } +// Effect 129: 对方为{0}则技能威力翻倍 type Effect129 struct { node.EffectNode StatusID int @@ -107,6 +108,7 @@ func registerStatusFunc(id int, fn func(*input.Input, *input.Input) bool) { input.InitEffect(input.EffectType.Skill, id, &Effect96{StatusID: id}) } +// Effect 609: 若对手{0},技能威力翻倍 type Effect609 struct { node.EffectNode StatusID int diff --git a/logic/service/fight/effect/effect_prop.go b/logic/service/fight/effect/effect_prop.go index d8edc66ab..3eb59a472 100644 --- a/logic/service/fight/effect/effect_prop.go +++ b/logic/service/fight/effect/effect_prop.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// Effect3:能力操作类效果(重置/反转/偷取等) +// Effect 3: 解除自身的能力下降状态 type Effect3 struct { node.EffectNode Reverse bool @@ -27,7 +27,7 @@ func (e *Effect3) Skill_Use() bool { return true } -// Effect3:能力操作类效果(重置/反转/偷取等) +// Effect 33: 消除对手能力提升状态 type Effect33 struct { node.EffectNode Reverse bool diff --git a/logic/service/fight/effect/none.go b/logic/service/fight/effect/none.go index 23c8b0e9f..3ee834181 100644 --- a/logic/service/fight/effect/none.go +++ b/logic/service/fight/effect/none.go @@ -5,7 +5,7 @@ import ( "blazing/logic/service/fight/node" ) -// 445 - 使用后在战斗结束时可以获得500赛尔豆,每日上限5000 +// Effect 445: 使用后在战斗结束时可以获得500赛尔豆,每日上限5000 type Effect445 struct { node.EffectNode } @@ -20,7 +20,7 @@ func init() { } -// 201 - 组队时恢复己方1/n的体力 +// Effect 201: 对选中对象或本方全体恢复1/{1}的体力 type Effect201 struct { node.EffectNode } diff --git a/logic/service/fight/effect/register.go b/logic/service/fight/effect/register.go new file mode 100644 index 000000000..a70471aaa --- /dev/null +++ b/logic/service/fight/effect/register.go @@ -0,0 +1,7 @@ +package effect + +import "blazing/logic/service/fight/input" + +func initskill(id int, e input.Effect) { + input.InitEffect(input.EffectType.Skill, id, e) +} diff --git a/logic/service/fight/effect/selfkill.go b/logic/service/fight/effect/selfkill.go index 41f015cc9..bd2c9b264 100644 --- a/logic/service/fight/effect/selfkill.go +++ b/logic/service/fight/effect/selfkill.go @@ -7,6 +7,7 @@ import ( "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" + "github.com/gogf/gf/v2/util/grand" ) type SelfKill struct { @@ -40,9 +41,7 @@ func (e *SelfKill) SwitchOut(in *input.Input) bool { return true } -/** - * 消耗自身全部体力(体力降到0), 使下一只出战精灵的 battle_lv1 和 battle_lv2 能力提升1个等级 - */ +// Effect 59: 消耗自身全部体力(体力降到0),使下一只出战精灵的{0}和{1}能力提升1个等级 type Effect59 struct { SelfKill } @@ -71,9 +70,7 @@ func init() { } -/** - * 自己牺牲(体力降到0), 使下一只出战精灵在前两回合内必定致命一击 - */ +// Effect 71: 消耗自身全部体力,己方下2次攻击技能必定打出致命一击 type Effect71 struct { SelfKill count int @@ -105,7 +102,7 @@ func init() { } -// 144 - 消耗自己所有体力,使下一个出战的精灵n回合免疫异常状态 +// Effect 144: 消耗自己所有体力,使下一个出战的精灵{0}回合免疫异常状态 type Effect144 struct { SelfKill count int @@ -135,7 +132,7 @@ func (e *Effect144) EFFect_Befer(in *input.Input, effEffect input.Effect) bool { return true } -// 435 - 牺牲自己,使下回合出场的精灵首次攻击必定命中,必定先手 +// Effect 435: 牺牲自己,使下回合出场的精灵首次攻击必定命中,必定先手 type Effect435 struct { SelfKill } @@ -185,9 +182,7 @@ func init() { } -/** - * 牺牲全部体力造成对手250~300点伤害,造成致命伤害时,对手剩下1点体力 - */ +// Effect 112: 牺牲全部体力给对手造成250~300点伤害,造成致命伤害时,对手剩下1点体力 type Effect112 struct { node.EffectNode } @@ -205,7 +200,7 @@ func (e *Effect112) Skill_Use() bool { Type: info.DamageType.Fixed, Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)), }) - n := int64(e.Input.FightC.GetRand().Int31n(int32(50+1))) + 250 + n := int64(grand.N(250, 300)) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: alpacadecimal.Min(alpacadecimal.NewFromInt(n), e.Ctx().Opp.CurrentPet.GetHP().Sub(alpacadecimal.NewFromInt(1))), @@ -214,13 +209,7 @@ func (e *Effect112) Skill_Use() bool { return true } -// { -// "id": 574, -// "argsNum": 0, -// "info": "消耗自身全部体力,令己方下次使用的技能必定先手、必定命中,下次命中的攻击技能必定打出致命一击" -// }, -// - +// Effect 574: 消耗自身全部体力,令己方下次使用的技能必定先手、必定命中,下次命中的攻击技能必定打出致命一击 type Effect574 struct { SelfKill } diff --git a/logic/service/fight/effect/sterStatusEffects.go b/logic/service/fight/effect/sterStatusEffects.go index 8861871ad..ead569fed 100644 --- a/logic/service/fight/effect/sterStatusEffects.go +++ b/logic/service/fight/effect/sterStatusEffects.go @@ -6,9 +6,7 @@ import ( "blazing/logic/service/fight/node" ) -// ----------------------------------------------------------- -// 通用状态效果(例如 麻痹 / 中毒 / 疲惫 / 混乱 等) -// ----------------------------------------------------------- +// Effect 10: 命中后{0}%令对方麻痹 type Effect10 struct { node.EffectNode Status info.EnumPetStatus // 要施加的状态类型 @@ -28,23 +26,25 @@ func init() { } func registerStatusEffects() { - statusList := map[int]info.EnumPetStatus{ - 10: info.PetStatus.Paralysis, - 11: info.PetStatus.Poisoned, - 12: info.PetStatus.Burned, - - 14: info.PetStatus.Frozen, - 15: info.PetStatus.Fear, - 16: info.PetStatus.Sleep, - 22: info.PetStatus.Tired, - 94: info.PetStatus.Petrified, - 99: info.PetStatus.Confused, - 103: info.PetStatus.Weakened, - 114: info.PetStatus.Flammable, + statusList := []struct { + id int + status info.EnumPetStatus + }{ + {id: 10, status: info.PetStatus.Paralysis}, + {id: 11, status: info.PetStatus.Poisoned}, + {id: 12, status: info.PetStatus.Burned}, + {id: 14, status: info.PetStatus.Frozen}, + {id: 15, status: info.PetStatus.Fear}, + {id: 16, status: info.PetStatus.Sleep}, + {id: 22, status: info.PetStatus.Tired}, + {id: 94, status: info.PetStatus.Petrified}, + {id: 99, status: info.PetStatus.Confused}, + {id: 103, status: info.PetStatus.Weakened}, + {id: 114, status: info.PetStatus.Flammable}, } - for id, status := range statusList { - input.InitEffect(input.EffectType.Skill, id, newEffectStatus(status)) + for _, item := range statusList { + input.InitEffect(input.EffectType.Skill, item.id, newEffectStatus(item.status)) } } diff --git a/logic/service/fight/effect/sub_effect_helper.go b/logic/service/fight/effect/sub_effect_helper.go new file mode 100644 index 000000000..c8804146b --- /dev/null +++ b/logic/service/fight/effect/sub_effect_helper.go @@ -0,0 +1,139 @@ +package effect + +import ( + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +type RoundEffectArg0Base struct { + node.EffectNode +} + +func (e *RoundEffectArg0Base) SetArgs(t *input.Input, a ...int) { + setArgsWithDuration0(&e.EffectNode, t, a...) +} + +type RoundEffectSideArg0Base struct { + node.EffectNode +} + +func (e *RoundEffectSideArg0Base) SetArgs(t *input.Input, a ...int) { + setArgsWithSideEffectDuration0(&e.EffectNode, t, a...) +} + +type FixedDuration1Base struct { + node.EffectNode +} + +func (e *FixedDuration1Base) SetArgs(t *input.Input, a ...int) { + setArgsWithFixedDuration(&e.EffectNode, t, 1, a...) +} + +type FixedDurationNeg1Base struct { + node.EffectNode +} + +func (e *FixedDurationNeg1Base) SetArgs(t *input.Input, a ...int) { + setArgsWithFixedDuration(&e.EffectNode, t, -1, a...) +} + +type FixedDuration2Base struct { + node.EffectNode +} + +func (e *FixedDuration2Base) SetArgs(t *input.Input, a ...int) { + setArgsWithFixedDuration(&e.EffectNode, t, 2, a...) +} + +type RoundEffectArg1Base struct { + node.EffectNode +} + +func (e *RoundEffectArg1Base) SetArgs(t *input.Input, a ...int) { + setArgsWithDuration1(&e.EffectNode, t, a...) +} + +type RoundEffectSideArg1Base struct { + node.EffectNode +} + +func (e *RoundEffectSideArg1Base) SetArgs(t *input.Input, a ...int) { + setArgsWithSideEffectDuration1(&e.EffectNode, t, a...) +} + +type RoundEffectSideArg0Minus1Base struct { + node.EffectNode +} + +func (e *RoundEffectSideArg0Minus1Base) SetArgs(t *input.Input, a ...int) { + setArgsWithSideEffectDuration0Minus1(&e.EffectNode, t, a...) +} + +type RoundEffectSideArg0Minus1CanStackBase struct { + node.EffectNode +} + +func (e *RoundEffectSideArg0Minus1CanStackBase) SetArgs(t *input.Input, a ...int) { + e.SetArgsWithCanStack(t, true, a...) + setArgsWithSideEffectDuration0Minus1(&e.EffectNode, t, a...) +} + +func (e *RoundEffectSideArg0Minus1CanStackBase) SetArgsWithCanStack(t *input.Input, canStack bool, a ...int) { + e.EffectNode.SetArgs(t, a...) + e.CanStack(canStack) +} + +func addSubEffect( + owner *input.Input, + target *input.Input, + parent *node.EffectNode, + sub input.Effect, + duration int, +) input.Effect { + parentID := parent.ID() + parentID.SetEffectType(input.EffectType.Sub) + sub.ID(parentID) + sub.SetArgs(owner, parent.SideEffectArgs...) + _ = duration // 与旧版 GenSub 行为一致:仅透传参数,不在这里设置 Duration + return target.AddEffect(owner, sub) +} + +func setArgsWithDuration0(e *node.EffectNode, t *input.Input, a ...int) { + e.SetArgs(t, a...) + if len(a) > 0 { + e.Duration(a[0]) + } +} + +func setArgsWithFixedDuration(e *node.EffectNode, t *input.Input, duration int, a ...int) { + e.SetArgs(t, a...) + e.Duration(duration) +} + +func setArgsWithDuration1(e *node.EffectNode, t *input.Input, a ...int) { + e.SetArgs(t, a...) + if len(a) > 1 { + e.Duration(a[1]) + } +} + +func setArgsWithSideEffectDuration0(e *node.EffectNode, t *input.Input, a ...int) { + e.SetArgs(t, a...) + if len(e.SideEffectArgs) > 0 { + e.Duration(e.SideEffectArgs[0]) + } +} + +func setArgsWithSideEffectDuration1(e *node.EffectNode, t *input.Input, a ...int) { + e.SetArgs(t, a...) + if len(e.SideEffectArgs) > 1 { + e.Duration(e.SideEffectArgs[1]) + } +} + +func setArgsWithSideEffectDuration0Minus1(e *node.EffectNode, t *input.Input, a ...int) { + e.SetArgs(t, a...) + if len(e.SideEffectArgs) > 0 { + e.Duration(e.SideEffectArgs[0] - 1) + } +} diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index 4c2242e52..9cbab90e1 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -116,7 +116,6 @@ func (f *FightC) copySkill(action *action.SelectSkillAction) *info.SkillEntity { } originalSkill, _ := deepcopy.Anything(action.SkillEntity) //备份技能 - originalSkill.(*info.SkillEntity).Rand = f.rand //拷贝后随机数丢失 originalSkill.(*info.SkillEntity).Accuracy = action.SkillEntity.Accuracy //拷贝后命中丢失 return originalSkill.(*info.SkillEntity) } @@ -355,7 +354,7 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) } func (f *FightC) TURNOVER(cur *input.Input) { - + f.Broadcast(func(ff *input.Input) { ff.Exec(func(t input.Effect) bool { diff --git a/logic/service/fight/info/BattlePetEntity.go b/logic/service/fight/info/BattlePetEntity.go index 96a7d50da..2977b454d 100644 --- a/logic/service/fight/info/BattlePetEntity.go +++ b/logic/service/fight/info/BattlePetEntity.go @@ -5,8 +5,6 @@ import ( "blazing/common/data/xmlres" "blazing/modules/player/model" - "math/rand" - "github.com/alpacahq/alpacadecimal" ) @@ -33,7 +31,7 @@ func (t *BattlePetEntity) Alive() bool { } // 创建精灵实例 -func CreateBattlePetEntity(info model.PetInfo, rand *rand.Rand) *BattlePetEntity { +func CreateBattlePetEntity(info model.PetInfo) *BattlePetEntity { ret := &BattlePetEntity{} ret.PetInfo = xmlres.PetMAP[int(info.ID)] //注入精灵信息 @@ -43,8 +41,8 @@ func CreateBattlePetEntity(info model.PetInfo, rand *rand.Rand) *BattlePetEntity for i := 0; i < len(info.SkillList); i++ { //todo 技能信息应该每回合进行深拷贝,保证每次的技能效果都是不一样的 - // ret.Skills[info.SkillList[i].ID] = CreateSkill(&info.SkillList[i], rand, ret) - ret.Skills = append(ret.Skills, CreateSkill(&info.SkillList[i], rand, ret)) + // ret.Skills[info.SkillList[i].ID] = CreateSkill(&info.SkillList[i], ret) + ret.Skills = append(ret.Skills, CreateSkill(&info.SkillList[i], ret)) } return ret diff --git a/logic/service/fight/info/BattleSkillEntity.go b/logic/service/fight/info/BattleSkillEntity.go index db42a9296..9f96e6a4d 100644 --- a/logic/service/fight/info/BattleSkillEntity.go +++ b/logic/service/fight/info/BattleSkillEntity.go @@ -4,7 +4,6 @@ import ( element "blazing/common/data/Element" "blazing/common/data/xmlres" "blazing/modules/player/model" - "math/rand" "fmt" "strconv" @@ -57,7 +56,6 @@ type SkillEntity struct { Info *model.SkillInfo Accuracy alpacadecimal.Decimal // 伤害值 DamageValue alpacadecimal.Decimal // 伤害值 - Rand *rand.Rand Pet *BattlePetEntity //MaxValue func(ahp, bhp uint32) decimal.Decimal Crit uint32 //记录是否实际暴击 @@ -66,10 +64,9 @@ type SkillEntity struct { } // CreateSkill 创建战斗技能实例(可指定是否无限PP) -func CreateSkill(skill *model.SkillInfo, rand *rand.Rand, pet *BattlePetEntity) *SkillEntity { +func CreateSkill(skill *model.SkillInfo, pet *BattlePetEntity) *SkillEntity { var ret SkillEntity - ret.Rand = rand ret.Pet = pet // 从资源仓库获取技能数据 move, ok := xmlres.SkillMap[int(skill.ID)] @@ -182,7 +179,7 @@ func (s *SkillEntity) AttackTimeC(level int8) uint32 { } a := int64(s.GetAccuracy(level).IntPart()) - r := s.Rand.Int63n(100) + r := int64(grand.Intn(100)) if a >= r { s.Hit = true s.AttackTime = 1 diff --git a/logic/service/fight/info/ctx.go b/logic/service/fight/info/ctx.go index a938950c6..7c7c3f433 100644 --- a/logic/service/fight/info/ctx.go +++ b/logic/service/fight/info/ctx.go @@ -1,10 +1,9 @@ package info -import "math/rand" +import "github.com/gogf/gf/v2/util/grand" // PlayerCaptureContext 用户捕捉上下文(每次登录创建) type PlayerCaptureContext struct { - Random *rand.Rand Denominator int // 统一分母=1000 DecayFactor float64 // 衰减系数 MinDecayNum int // 衰减分子最小值 @@ -18,13 +17,18 @@ func (c *PlayerCaptureContext) Roll(numerator, denominator int) (bool, float64, } base := float64(numerator) / float64(denominator) - bonus := float64(c.getGuaranteeNumerator(denominator)) / float64(denominator) + bonusNumerator := c.getGuaranteeNumerator(denominator) + bonus := float64(bonusNumerator) / float64(denominator) total := base + bonus if total > 1.0 { total = 1.0 } - success := c.Random.Float64() < total + totalNumerator := numerator + bonusNumerator + if totalNumerator > denominator { + totalNumerator = denominator + } + success := grand.Intn(denominator) < totalNumerator if success { c.resetGuarantee(denominator) diff --git a/logic/service/fight/input.go b/logic/service/fight/input.go index 6673342d9..a88e434ff 100644 --- a/logic/service/fight/input.go +++ b/logic/service/fight/input.go @@ -10,7 +10,6 @@ import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/user" - "math/rand" "sync" "time" @@ -31,7 +30,6 @@ type FightC struct { Switch map[uint32]*action.ActiveSwitchAction startl sync.Once - rand *rand.Rand StartTime time.Time actionChan chan action.BattleActionI // 所有操作统一从这里进入 @@ -87,13 +85,6 @@ func (f *FightC) GetOpp(c common.PlayerI) *input.Input { return f.GetInputByPlayer(c, true) } -// 获取随机数 -func (f *FightC) GetRand() *rand.Rand { - - return f.rand - -} - // // 获取随机数 func (f *FightC) IsFirst(play common.PlayerI) bool { @@ -136,7 +127,7 @@ func (f *FightC) initplayer(c common.PlayerI, b []model.PetInfo) (*input.Input, //玩家精灵重置到100等级 pet := b[i] - in.AllPet = append(in.AllPet, info.CreateBattlePetEntity(pet, f.rand)) + in.AllPet = append(in.AllPet, info.CreateBattlePetEntity(pet)) } diff --git a/logic/service/fight/input/ai.go b/logic/service/fight/input/ai.go index aa758090a..f875adf21 100644 --- a/logic/service/fight/input/ai.go +++ b/logic/service/fight/input/ai.go @@ -2,19 +2,16 @@ package input import ( "blazing/logic/service/fight/info" - "math/rand" - "time" + + "github.com/gogf/gf/v2/util/grand" ) // Shuffle 打乱切片顺序,使用 Fisher-Yates 洗牌算法,泛型支持任意类型 func Shuffle[T any](slice []T) { - // 初始化随机数生成器,用当前时间作为种子,避免每次打乱结果相同 - r := rand.New(rand.NewSource(time.Now().UnixNano())) - // 从后往前遍历,逐个交换 for i := len(slice) - 1; i > 0; i-- { // 生成 0 到 i 之间的随机索引 - j := r.Intn(i + 1) + j := grand.Intn(i + 1) // 交换 i 和 j 位置的元素 slice[i], slice[j] = slice[j], slice[i] } diff --git a/logic/service/fight/new.go b/logic/service/fight/new.go index c1dfb9c5c..cdbb6c06c 100644 --- a/logic/service/fight/new.go +++ b/logic/service/fight/new.go @@ -9,7 +9,6 @@ import ( "blazing/logic/service/fight/input" "blazing/logic/service/player" "blazing/modules/player/model" - "math/rand" "time" ) @@ -25,8 +24,6 @@ func NewFight(p1, p2 common.PlayerI, b1, b2 []model.PetInfo, fn func(model.Fight f.quit = make(chan struct{}) f.over = make(chan struct{}) f.StartTime = time.Now() - seed := f.StartTime.UnixNano() ^ int64(p1.GetInfo().UserID) ^ int64(p2.GetInfo().UserID) // ^ int64(f.Round) // 用异或运算混合多维度信息 - f.rand = rand.New(rand.NewSource(seed)) f.Info = p1.Getfightinfo() //这里应该挪到玩家初始化执行 diff --git a/logic/service/player/base.go b/logic/service/player/base.go index c61e8f5ac..d9107e51a 100644 --- a/logic/service/player/base.go +++ b/logic/service/player/base.go @@ -6,10 +6,6 @@ import ( "blazing/logic/service/common" "blazing/logic/service/fight/info" "blazing/modules/player/model" - "math/rand" - "time" - - "github.com/gogf/gf/v2/util/grand" ) type baseplayer struct { @@ -22,10 +18,8 @@ type baseplayer struct { // NewPlayerCaptureContext 创建用户捕捉上下文(每次登录调用) func newbaseplayer() baseplayer { - rng := rand.New(rand.NewSource(time.Now().UnixNano() + int64(grand.Intn(1000000)))) ret := baseplayer{} ret.PlayerCaptureContext = &info.PlayerCaptureContext{ - Random: rng, Denominator: 1000, DecayFactor: 0.10, // 15%衰减率 MinDecayNum: 1, diff --git a/modules/player/model/pet.go b/modules/player/model/pet.go index 60467a6cb..61a736232 100644 --- a/modules/player/model/pet.go +++ b/modules/player/model/pet.go @@ -501,9 +501,9 @@ func calculateExperience(level uint32, baseValue uint32) int64 { // // type PetEffectInfo struct { - ItemID uint32 `struc:"uint32" json:"item_id"` //如果是能量珠,就显示 - Idx uint16 `struc:"skip" json:"new_se_idx"` - Type byte `struc:"skip" json:"type"` //pvp pve特性区分,待前端修改实现 + ItemID uint32 `struc:"uint32" json:"item_id"` //如果是能量珠,就显示 + Idx uint16 `struc:"skip" json:"new_se_idx"` + //Type byte `struc:"skip" json:"type"` //pvp pve特性区分,通过具体effect实现 Status byte `struc:"byte" json:"status"` //特性为1,能量珠为2 LeftCount byte `struc:"byte" json:"left_count"` //剩余次数 EID uint16 `struc:"uint16" json:"effect_id"` //特效ID