From 78a68148ce8466ff7a4727e074fabc5200b72288 Mon Sep 17 00:00:00 2001 From: xinian Date: Sun, 5 Apr 2026 02:25:44 +0800 Subject: [PATCH] chore: update fight logic and effect implementations --- common/data/xmlres/skill.go | 1 + ...oup-implementation-checklist-2026-04-04.md | 43 +++++++++++ logic/controller/fight_base.go | 34 +++++++++ logic/main.go | 1 + logic/service/fight/action.go | 20 +++++- logic/service/fight/cmd.go | 16 +++++ logic/service/fight/effect/1044.go | 4 +- logic/service/fight/effect/1097_1101.go | 10 +-- logic/service/fight/effect/1146.go | 4 +- logic/service/fight/effect/1263_1287.go | 52 +++++++------- logic/service/fight/effect/1288_1312.go | 56 +++++++-------- logic/service/fight/effect/143.go | 4 +- logic/service/fight/effect/1448_1472.go | 46 ++++++------ logic/service/fight/effect/146.go | 2 +- logic/service/fight/effect/1473_1497.go | 48 ++++++------- logic/service/fight/effect/149.go | 4 +- logic/service/fight/effect/150.go | 4 +- logic/service/fight/effect/156.go | 6 +- logic/service/fight/effect/157.go | 6 +- logic/service/fight/effect/166.go | 2 +- logic/service/fight/effect/169.go | 2 +- logic/service/fight/effect/173.go | 2 +- logic/service/fight/effect/175.go | 2 +- logic/service/fight/effect/176.go | 2 +- 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 | 4 +- logic/service/fight/effect/190.go | 4 +- logic/service/fight/effect/193.go | 2 +- logic/service/fight/effect/194.go | 2 +- logic/service/fight/effect/196.go | 4 +- logic/service/fight/effect/198.go | 2 +- logic/service/fight/effect/200.go | 4 +- .../effect/400_480_586_599_610_611_613.go | 4 +- logic/service/fight/effect/403.go | 2 +- logic/service/fight/effect/418.go | 4 +- logic/service/fight/effect/422.go | 2 +- logic/service/fight/effect/424.go | 2 +- logic/service/fight/effect/425.go | 2 +- logic/service/fight/effect/427.go | 4 +- logic/service/fight/effect/428.go | 2 +- logic/service/fight/effect/430.go | 4 +- logic/service/fight/effect/434.go | 2 +- logic/service/fight/effect/437.go | 4 +- logic/service/fight/effect/440.go | 2 +- logic/service/fight/effect/442.go | 2 +- logic/service/fight/effect/443.go | 2 +- logic/service/fight/effect/444.go | 2 +- logic/service/fight/effect/449.go | 4 +- logic/service/fight/effect/453.go | 6 +- logic/service/fight/effect/456.go | 4 +- logic/service/fight/effect/460.go | 4 +- logic/service/fight/effect/462.go | 4 +- logic/service/fight/effect/464.go | 4 +- logic/service/fight/effect/469.go | 4 +- logic/service/fight/effect/470.go | 2 +- logic/service/fight/effect/477.go | 2 +- logic/service/fight/effect/483.go | 2 +- logic/service/fight/effect/485.go | 4 +- logic/service/fight/effect/486.go | 2 +- logic/service/fight/effect/494.go | 2 +- logic/service/fight/effect/495.go | 4 +- logic/service/fight/effect/498.go | 2 +- 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 | 4 +- .../effect/EffectPhysicalAttackAddStatus.go | 2 +- logic/service/fight/effect/effect_680_690.go | 12 ++-- .../effect_EffectConditionalAddDamage.go | 2 +- logic/service/fight/effect/effect_attr.go | 2 +- logic/service/fight/effect/effect_status.go | 4 +- logic/service/fight/effect/none.go | 38 ++++++++-- logic/service/fight/fightc.go | 71 +++++++++++++++---- logic/service/fight/input.go | 29 ++------ logic/service/fight/input/effect.go | 26 ++++++- logic/service/fight/input/input.go | 3 + logic/service/fight/new.go | 1 - logic/service/fight/targeting.go | 34 +++++++++ 80 files changed, 475 insertions(+), 248 deletions(-) create mode 100644 logic/service/fight/targeting.go diff --git a/common/data/xmlres/skill.go b/common/data/xmlres/skill.go index b84d3949d..db8800358 100644 --- a/common/data/xmlres/skill.go +++ b/common/data/xmlres/skill.go @@ -67,6 +67,7 @@ type Move struct { SideEffectS []int SideEffectArgS []int AtkNum int `xml:"AtkNum,attr,omitempty"` + AtkType int `xml:"AtkType,attr,omitempty"` // 0:所有人 1:仅己方 2:仅对方 3:仅自己 Url string `xml:"Url,attr,omitempty"` Info string `xml:"info,attr,omitempty"` diff --git a/docs/fight-group-implementation-checklist-2026-04-04.md b/docs/fight-group-implementation-checklist-2026-04-04.md index 96419e024..1f52d3894 100644 --- a/docs/fight-group-implementation-checklist-2026-04-04.md +++ b/docs/fight-group-implementation-checklist-2026-04-04.md @@ -355,3 +355,46 @@ - 先完成“旧入口 -> 统一入站结构”映射。 - 再完成“统一出站结构 + phase 广播”。 - 最后做前端切换与旧包退场(或长期双通道兼容)。 + +--- + +## AtkType 目标语义补充(2026-04-05) + +来源:`flash` 端 `SkillXMLInfo.getGpFtSkillType(skillID)`,读取 `movesMap/moveStoneMap` 的 `AtkType`。 + +GBTL 规则(已确认): + +1. `AtkNum`:本技能同时攻击数量,默认 `1`(不能为 `0`) +2. `AtkType`:目标范围 + - `0`:所有人 + - `1`:仅己方 + - `2`:仅对方 + - `3`:仅自己 + - 默认:`2` + +前端目标选择行为(`SkillMouseController.attack(skillID, attackType)`): + +1. `attackType=0` -> `allPetWinList`(全体可选) +2. `attackType=1` -> `membPetWinList`(己方可选,含自己与队友) +3. `attackType=2` -> `oppPetWinList`(敌方可选) +4. `attackType=3` -> `[playerMode.petWin]`(仅自己) + +后端目标关系判定(组队/多战位必须遵循): + +1. 若协议传 `actor + target(side,pos)`: + - `target.side != actor.side` => 对方目标 + - `target.side == actor.side && target.pos == actor.pos` => 自身目标 + - `target.side == actor.side && target.pos != actor.pos` => 队友目标 +2. 若协议未显式传目标(旧 `2405`): + - 用 `AtkType` 兜底: + - `AtkType=3` => 强制自身 + - `AtkType=1` => 默认自身(无显式队友位时) + - 其他 => 维持旧行为(默认对方 `0` 位) + +实施要求(与现有清单并行): + +1. `common/data/xmlres/skill.go` 的 `Move` 需包含 `AtkType` 字段解析。 +2. 动作目标不再依赖“默认 Opp 绑定”;effect 上下文必须使用“本次动作的实际目标”。 +3. 需支持区分 `self` 与 `ally`(例如同为 `AtkType=1` 时,不能混用同一默认目标)。 +4. 保持旧协议兼容:旧入口不报错,但按上述兜底规则执行。 + diff --git a/logic/controller/fight_base.go b/logic/controller/fight_base.go index 25d74e046..db2625c86 100644 --- a/logic/controller/fight_base.go +++ b/logic/controller/fight_base.go @@ -35,6 +35,40 @@ func (h Controller) UseSkill(data *fight.UseSkillInInfo, c *player.Player) (resu return nil, 0 } +// UseSkillAt 组队/多战位技能包(cmd=7505)。 +// 目标关系:0=对方 1=自己 2=队友。 +func (h Controller) UseSkillAt(data *fight.UseSkillAtInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { + if err := h.checkFightStatus(c); err != 0 { + return nil, err + } + actorIndex := int(data.ActorIndex) + targetIndex := int(data.TargetIndex) + targetRelation := data.TargetRelation + + // 前端未显式给 relation 时,按 AtkType 兜底:3=自己,1=己方,其他按对方。 + if targetRelation > fight.SkillTargetAlly { + switch data.AtkType { + case 3: + targetRelation = fight.SkillTargetSelf + case 1: + targetRelation = fight.SkillTargetAlly + default: + targetRelation = fight.SkillTargetOpponent + } + } + + switch targetRelation { + case fight.SkillTargetSelf: + targetIndex = actorIndex + go c.FightC.UseSkillAt(c, data.SkillId, actorIndex, fight.EncodeTargetIndex(targetIndex, false)) + case fight.SkillTargetAlly: + go c.FightC.UseSkillAt(c, data.SkillId, actorIndex, fight.EncodeTargetIndex(targetIndex, false)) + default: + go c.FightC.UseSkillAt(c, data.SkillId, actorIndex, fight.EncodeTargetIndex(targetIndex, true)) + } + return nil, 0 +} + // Escape 战斗逃跑 func (h Controller) Escape(data *fight.EscapeFightInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { if err := h.checkFightStatus(c); err != 0 { diff --git a/logic/main.go b/logic/main.go index 1aa0bbb42..897bdac7c 100644 --- a/logic/main.go +++ b/logic/main.go @@ -13,6 +13,7 @@ import ( "github.com/gogf/gf/v2/os/gcmd" "github.com/gogf/gf/v2/os/gproc" + "blazing/common/data/xmlres" "blazing/logic/service/player" "blazing/cool" diff --git a/logic/service/fight/action.go b/logic/service/fight/action.go index b4b520da3..46e116a0d 100644 --- a/logic/service/fight/action.go +++ b/logic/service/fight/action.go @@ -199,7 +199,6 @@ func (f *FightC) UseSkillAt(c common.PlayerI, id uint32, actorIndex, targetIndex BaseAction: action.NewBaseAction(c.GetInfo().UserID), } ret.ActorIndex = actorIndex - ret.TargetIndex = targetIndex self := f.getInputByUserID(c.GetInfo().UserID, actorIndex, false) if self == nil { @@ -225,9 +224,28 @@ func (f *FightC) UseSkillAt(c common.PlayerI, id uint32, actorIndex, targetIndex } } + ret.TargetIndex = normalizeSkillTargetIndex(actorIndex, targetIndex, ret.SkillEntity) f.submitAction(ret) } +func normalizeSkillTargetIndex(actorIndex, targetIndex int, skill *info.SkillEntity) int { + if skill == nil { + return targetIndex + } + // 约定:非负目标位表示敌方;负值 -(index+1) 表示同侧(自己/队友) + if _, targetIsOpposite := DecodeTargetIndex(targetIndex); !targetIsOpposite { + return targetIndex + } + // GBTL.AtkType: 0=所有人 1=仅己方 2=仅对方 3=仅自己(默认2) + switch skill.XML.AtkType { + case 1, 3: + // 旧协议未传目标时,己方类技能默认作用自己;新协议可通过负编码显式指定队友。 + return EncodeTargetIndex(actorIndex, false) + default: + return targetIndex + } +} + // 玩家使用技能 func (f *FightC) Capture(c common.PlayerI, id uint32) { if f.closefight { diff --git a/logic/service/fight/cmd.go b/logic/service/fight/cmd.go index 3dc569944..75919ff1b 100644 --- a/logic/service/fight/cmd.go +++ b/logic/service/fight/cmd.go @@ -101,6 +101,22 @@ type UseSkillInInfo struct { // 技能id, SkillId uint32 } + +// UseSkillAtInboundInfo 组队/多战位技能使用包(新增)。 +// 目标关系与前端 AtkType 语义对齐: +// 0=对方 1=自己 2=队友;AtkType: 0=所有人 1=仅己方 2=仅对方 3=仅自己。 +type UseSkillAtInboundInfo struct { + Head common.TomeeHeader `cmd:"7505" struc:"skip"` + SkillId uint32 `json:"skillId"` + // 出手方槽位(我方) + ActorIndex uint8 `json:"actorIndex"` + // 目标槽位(按 TargetRelation 所属阵营解释) + TargetIndex uint8 `json:"targetIndex"` + // 0=对方 1=自己 2=队友 + TargetRelation uint8 `json:"targetRelation"` + // 前端技能目标类型(可选兜底),同 GBTL AtkType 定义 + AtkType uint8 `json:"atkType"` +} type ChangePetInboundInfo struct { Head common.TomeeHeader `cmd:"2407" struc:"skip"` // CatchTime 捕捉时间 diff --git a/logic/service/fight/effect/1044.go b/logic/service/fight/effect/1044.go index 9f711cfb5..5d35a3e59 100644 --- a/logic/service/fight/effect/1044.go +++ b/logic/service/fight/effect/1044.go @@ -17,9 +17,9 @@ type Effect1044 struct { func (e *Effect1044) OnSkill() bool { // 检查对手是否有能力提升状态可以吸取 - for i, v := range e.OpponentInput().Prop[:] { + for i, v := range e.TargetInput().Prop[:] { if v > 0 { - if e.OpponentInput().SetProp(e.CarrierInput(), int8(i), 0) { + if e.TargetInput().SetProp(e.CarrierInput(), int8(i), 0) { e.can = true e.CarrierInput().SetProp(e.CarrierInput(), int8(i), v) } diff --git a/logic/service/fight/effect/1097_1101.go b/logic/service/fight/effect/1097_1101.go index b4147dcf2..df54d622d 100644 --- a/logic/service/fight/effect/1097_1101.go +++ b/logic/service/fight/effect/1097_1101.go @@ -22,7 +22,7 @@ type Effect1097 struct { func (e *Effect1097) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } @@ -175,7 +175,7 @@ func (e *Effect1098) SkillHit() bool { func (e *Effect1098) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } @@ -273,7 +273,7 @@ type Effect1099 struct { func (e *Effect1099) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } @@ -335,7 +335,7 @@ type Effect1100 struct { func (e *Effect1100) Skill_Use_ex() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } @@ -423,7 +423,7 @@ func (e *Effect1101) DamageFloor(zone *info.DamageZone) bool { func (e *Effect1101) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } diff --git a/logic/service/fight/effect/1146.go b/logic/service/fight/effect/1146.go index 5ee51397b..c249e5ff3 100644 --- a/logic/service/fight/effect/1146.go +++ b/logic/service/fight/effect/1146.go @@ -19,7 +19,7 @@ type Effect1146 struct { func (e *Effect1146) OnSkill() bool { // 1. 命中判定失败,不触发 count := 0 - for _, v := range e.OpponentInput().Prop[:] { + for _, v := range e.TargetInput().Prop[:] { if v > 0 { count++ } @@ -29,7 +29,7 @@ func (e *Effect1146) OnSkill() bool { return true } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{ + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{ Type: info.DamageType.Fixed, Damage: e.Args()[1], }) diff --git a/logic/service/fight/effect/1263_1287.go b/logic/service/fight/effect/1263_1287.go index fc5bfebfc..e288e84f2 100644 --- a/logic/service/fight/effect/1263_1287.go +++ b/logic/service/fight/effect/1263_1287.go @@ -72,7 +72,7 @@ func (e *Effect1263) Skill_Use() bool { return true } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, damage) return true } @@ -144,7 +144,7 @@ func (e *Effect1266) Skill_Use_ex() bool { effect := e.CarrierInput().InitEffect(input.EffectType.Sub, 1266, int(e.Args()[1].IntPart())) if effect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), effect) + e.TargetInput().AddEffect(e.CarrierInput(), effect) } return true } @@ -191,7 +191,7 @@ func (e *Effect1267) Skill_Use_ex() bool { } e.triggered = true - applyOneOfStatuses(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + applyOneOfStatuses(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) return true } @@ -251,7 +251,7 @@ func (e *Effect1269) SkillHit_ex() bool { return true } e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, damage) - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) return true } @@ -266,12 +266,12 @@ func (e *Effect1270) OnSkill() bool { } success, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) if success { - applyStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + applyStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) return true } effect := e.CarrierInput().InitEffect(input.EffectType.Sub, 1270, int(e.Args()[2].IntPart())) if effect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), effect) + e.TargetInput().AddEffect(e.CarrierInput(), effect) } return true } @@ -319,7 +319,7 @@ func (e *Effect1271) OnSkill() bool { success, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) if success { - applyStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[2].IntPart())) + applyStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[2].IntPart())) e.triggered = true return true } @@ -351,7 +351,7 @@ func (e *Effect1271Sub) OnSkill() bool { } success, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) if success { - applyStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[2].IntPart())) + applyStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[2].IntPart())) } e.remaining-- if e.remaining <= 0 { @@ -370,7 +370,7 @@ func (e *Effect1272) OnSkill() bool { if shield.Cmp(alpacadecimal.Zero) <= 0 { return true } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: shield}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: shield}) return true } @@ -390,7 +390,7 @@ func (e *Effect1273) OnSkill() bool { if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) return true } @@ -404,12 +404,12 @@ func (e *Effect1274) OnSkill() bool { return true } chance := int(e.Args()[0].IntPart()) - if e.OpponentInput().HasPropSub() { + if e.TargetInput().HasPropSub() { chance *= 2 } success, _, _ := e.Input.Player.Roll(chance, 100) if success { - applyStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + applyStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) } return true } @@ -471,7 +471,7 @@ func (e *Effect1276) Skill_Use() bool { damage := e.CarrierPet().GetHP().Div(e.Args()[0]) e.CarrierInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.CarrierPet().GetHP()}) if damage.Cmp(alpacadecimal.Zero) > 0 { - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } return true } @@ -487,14 +487,14 @@ func (e *Effect1277) Skill_Use() bool { if e.CarrierPet().GetHP().Cmp(leave) > 0 { e.CarrierInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.CarrierPet().GetHP().Sub(leave)}) } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: alpacadecimal.NewFromInt(int64(grand.N(350, 550)))}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: alpacadecimal.NewFromInt(int64(grand.N(350, 550)))}) return true } lost := e.CarrierPet().GetHP() e.CarrierInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: lost}) - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: lost}) - applyStatusByID(e.CarrierInput(), e.OpponentInput(), int(info.PetStatus.Paralysis)) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: lost}) + applyStatusByID(e.CarrierInput(), e.TargetInput(), int(info.PetStatus.Paralysis)) return true } @@ -509,7 +509,7 @@ func (e *Effect1278) OnSkill() bool { } success, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) if success { - applyStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + applyStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) return true } effect := e.CarrierInput().InitEffect(input.EffectType.Sub, 1278, int(e.Args()[2].IntPart())) @@ -565,7 +565,7 @@ func (e *Effect1279) OnSkill() bool { } effect := e.CarrierInput().InitEffect(input.EffectType.Sub, 1279, int(e.Args()[0].IntPart())) if effect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), effect) + e.TargetInput().AddEffect(e.CarrierInput(), effect) } return true } @@ -616,7 +616,7 @@ func (e *Effect1280) OnSkill() bool { } damage := e.CarrierPet().GetHP().Mul(alpacadecimal.NewFromInt(int64(percent))).Div(alpacadecimal.NewFromInt(100)) if damage.Cmp(alpacadecimal.Zero) > 0 { - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } e.bonus += int(e.Args()[1].IntPart()) return true @@ -632,16 +632,16 @@ func (e *Effect1281) Skill_Use() bool { if shield.Cmp(alpacadecimal.Zero) <= 0 { return true } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: shield}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: shield}) if shield.Cmp(alpacadecimal.NewFromInt(300)) > 0 { dmg := e.CarrierPet().GetMaxHP().Div(alpacadecimal.NewFromInt(3)) - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: dmg}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: dmg}) return true } if shield.Cmp(alpacadecimal.NewFromInt(300)) < 0 { val := e.CarrierPet().GetMaxHP().Div(alpacadecimal.NewFromInt(3)) e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, val) - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: val}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: val}) } return true } @@ -655,7 +655,7 @@ func (e *Effect1282) Skill_Use() bool { if len(e.Args()) == 0 { return true } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Args()[0]}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Args()[0]}) return true } @@ -689,7 +689,7 @@ func (e *Effect1284) Skill_Use() bool { } effect := e.CarrierInput().InitEffect(input.EffectType.Sub, 1284, int(e.Args()[0].IntPart())) if effect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), effect) + e.TargetInput().AddEffect(e.CarrierInput(), effect) } return true } @@ -732,7 +732,7 @@ func (e *Effect1285) Skill_Use() bool { if len(e.Args()) == 0 || e.OpponentPet().Info.Hp == 0 { return true } - zeroRandomSkillPP(e.OpponentInput(), int(e.Args()[0].IntPart())) + zeroRandomSkillPP(e.TargetInput(), int(e.Args()[0].IntPart())) return true } @@ -754,7 +754,7 @@ func (e *Effect1287) OnSkill() bool { if len(e.Args()) < 2 { return true } - absorbed := clearPositivePropsTo(e.OpponentInput(), e.CarrierInput()) + absorbed := clearPositivePropsTo(e.TargetInput(), e.CarrierInput()) if !absorbed { return true } diff --git a/logic/service/fight/effect/1288_1312.go b/logic/service/fight/effect/1288_1312.go index 1f4ee2904..a61bfbbf4 100644 --- a/logic/service/fight/effect/1288_1312.go +++ b/logic/service/fight/effect/1288_1312.go @@ -123,7 +123,7 @@ func (e *Effect1289) OnSkill() bool { if v >= 0 { continue } - if e.OpponentInput().SetProp(e.CarrierInput(), int8(i), 2*v) { + if e.TargetInput().SetProp(e.CarrierInput(), int8(i), 2*v) { reflected = true } } @@ -132,7 +132,7 @@ func (e *Effect1289) OnSkill() bool { } effect := e.CarrierInput().InitEffect(input.EffectType.Sub, 1289, int(e.Args()[0].IntPart())) if effect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), effect) + e.TargetInput().AddEffect(e.CarrierInput(), effect) } return true } @@ -184,7 +184,7 @@ func (e *Effect1290) Skill_Use() bool { } e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, heal) if low { - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: heal}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: heal}) } return true } @@ -201,7 +201,7 @@ func (e *Effect1291) Skill_Use() bool { } success, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) if success { - applyRandomNStatuses(e.CarrierInput(), e.OpponentInput(), int(e.Args()[2].IntPart()), effect1291Statuses) + applyRandomNStatuses(e.CarrierInput(), e.TargetInput(), int(e.Args()[2].IntPart()), effect1291Statuses) } return true } @@ -271,11 +271,11 @@ func (e *Effect1293Sub) DamageLockEx(zone *info.DamageZone) bool { type Effect1294 struct{ node.EffectNode } func (e *Effect1294) Skill_Use() bool { - cleared := clearBothProps(e.CarrierInput(), e.OpponentInput()) + cleared := clearBothProps(e.CarrierInput(), e.TargetInput()) if cleared { effect := e.CarrierInput().InitEffect(input.EffectType.Status, 1294) if effect != nil { - applyRandomNStatuses(e.CarrierInput(), e.OpponentInput(), 2, effect1291Statuses) + applyRandomNStatuses(e.CarrierInput(), e.TargetInput(), 2, effect1291Statuses) } return true } @@ -341,15 +341,15 @@ func (e *Effect1297) Skill_Use() bool { if len(e.Args()) < 2 { return true } - before := activeTurnEffectCount(e.OpponentInput()) - e.OpponentInput().CancelTurn(e.CarrierInput()) + before := activeTurnEffectCount(e.TargetInput()) + e.TargetInput().CancelTurn(e.CarrierInput()) if before > 0 { - applyAnyStatus(e.CarrierInput(), e.OpponentInput(), int(e.Args()[0].IntPart())) + applyAnyStatus(e.CarrierInput(), e.TargetInput(), int(e.Args()[0].IntPart())) return true } - damage := e.OpponentInput().CurPet[0].GetMaxHP().Div(e.Args()[1]) + damage := e.TargetInput().CurPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) > 0 { - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, damage) } return true @@ -359,12 +359,12 @@ func (e *Effect1297) Skill_Use() bool { type Effect1298 struct{ node.EffectNode } func (e *Effect1298) Skill_Use() bool { - cleared := clearPositiveProps(e.OpponentInput(), e.CarrierInput()) + cleared := clearPositiveProps(e.TargetInput(), e.CarrierInput()) if !cleared { return true } - for _, pet := range e.OpponentInput().AllPet { - if pet == nil || !pet.Alive() || pet == e.OpponentInput().CurPet[0] { + for _, pet := range e.TargetInput().AllPet { + if pet == nil || !pet.Alive() || pet == e.TargetInput().CurPet[0] { continue } damage := pet.GetMaxHP().Div(alpacadecimal.NewFromInt(4)) @@ -386,8 +386,8 @@ func (e *Effect1299) SkillHit_ex() bool { if e.CarrierInput().SumDamage.Cmp(alpacadecimal.NewFromInt(300)) >= 0 { return true } - for _, pet := range e.OpponentInput().AllPet { - if pet == nil || !pet.Alive() || pet == e.OpponentInput().CurPet[0] { + for _, pet := range e.TargetInput().AllPet { + if pet == nil || !pet.Alive() || pet == e.TargetInput().CurPet[0] { continue } pet.Info.ModelHP(-100) @@ -426,8 +426,8 @@ func (e *Effect1301) Skill_Use() bool { return true } e.CarrierInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.CarrierInput().CurPet[0].GetHP()}) - for _, pet := range e.OpponentInput().AllPet { - if pet == nil || !pet.Alive() || pet == e.OpponentInput().CurPet[0] { + for _, pet := range e.TargetInput().AllPet { + if pet == nil || !pet.Alive() || pet == e.TargetInput().CurPet[0] { continue } damage := pet.GetMaxHP().Div(alpacadecimal.NewFromInt(2)) @@ -454,7 +454,7 @@ func (e *Effect1302) OnSkill() bool { if success { return true } - clearPositiveProps(e.OpponentInput(), e.CarrierInput()) + clearPositiveProps(e.TargetInput(), e.CarrierInput()) return true } @@ -462,11 +462,11 @@ func (e *Effect1302) OnSkill() bool { type Effect1303 struct{ RoundEffectArg0Base } func (e *Effect1303) OnSkill() bool { - base := e.OpponentInput().CurPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + base := e.TargetInput().CurPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) if e.CarrierInput().CurPet[0].GetHP().Cmp(e.CarrierInput().CurPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(2))) < 0 { base = base.Mul(alpacadecimal.NewFromInt(2)) } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: base}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: base}) e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, base) if e.CarrierInput().CurPet[0].GetHP().Cmp(e.CarrierInput().CurPet[0].GetMaxHP()) == 0 { healBench(e.CarrierInput(), alpacadecimal.NewFromInt(100)) @@ -506,7 +506,7 @@ func (e *Effect1305) OnSkill() bool { } e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, alpacadecimal.NewFromInt(int64(live)*e.Args()[0].IntPart())) if dead > 0 { - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: alpacadecimal.NewFromInt(int64(dead) * e.Args()[1].IntPart())}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: alpacadecimal.NewFromInt(int64(dead) * e.Args()[1].IntPart())}) } return true } @@ -518,8 +518,8 @@ func (e *Effect1306) Skill_Use() bool { if e.CarrierInput().SumDamage.Cmp(alpacadecimal.NewFromInt(350)) >= 0 { return true } - for _, pet := range e.OpponentInput().AllPet { - if pet == nil || !pet.Alive() || pet == e.OpponentInput().CurPet[0] { + for _, pet := range e.TargetInput().AllPet { + if pet == nil || !pet.Alive() || pet == e.TargetInput().CurPet[0] { continue } pet.Info.ModelHP(-100) @@ -531,7 +531,7 @@ func (e *Effect1306) Skill_Use() bool { type Effect1307 struct{ node.EffectNode } func (e *Effect1307) Skill_Use() bool { - if e.OpponentInput().CurPet[0].Info.Hp == 0 { + if e.TargetInput().CurPet[0].Info.Hp == 0 { return true } healBench(e.CarrierInput(), alpacadecimal.NewFromInt(100)) @@ -551,7 +551,7 @@ func (e *Effect1309) OnSkill() bool { return true } damage := e.Args()[0] - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: damage}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: damage}) return true } @@ -562,7 +562,7 @@ func (e *Effect1310) OnSkill() bool { if len(e.Args()) == 0 { return true } - if !clearPositiveProps(e.OpponentInput(), e.CarrierInput()) { + if !clearPositiveProps(e.TargetInput(), e.CarrierInput()) { return true } effect := e.CarrierInput().InitEffect(input.EffectType.Sub, 1310, int(e.Args()[0].IntPart())) @@ -609,7 +609,7 @@ func (e *Effect1311) Skill_Use_ex() bool { return true } for i := 0; i < 6; i++ { - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), -int8(e.Args()[1].IntPart())) + e.TargetInput().SetProp(e.CarrierInput(), int8(i), -int8(e.Args()[1].IntPart())) } return true } diff --git a/logic/service/fight/effect/143.go b/logic/service/fight/effect/143.go index 64229c102..5ddc036e1 100644 --- a/logic/service/fight/effect/143.go +++ b/logic/service/fight/effect/143.go @@ -15,9 +15,9 @@ type Effect143 struct { // ---------------------- func (e *Effect143) OnSkill() bool { - for i, v := range e.OpponentInput().Prop[:] { + for i, v := range e.TargetInput().Prop[:] { if v > 0 { - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), -2*v) + e.TargetInput().SetProp(e.CarrierInput(), int8(i), -2*v) } } diff --git a/logic/service/fight/effect/1448_1472.go b/logic/service/fight/effect/1448_1472.go index b9059a5b6..55ab8f84c 100644 --- a/logic/service/fight/effect/1448_1472.go +++ b/logic/service/fight/effect/1448_1472.go @@ -67,7 +67,7 @@ func (e *Effect1449) Skill_Use() bool { } eff := e.CarrierInput().InitEffect(input.EffectType.Sub, 1449, e.SideEffectArgs...) if eff != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), eff) + e.TargetInput().AddEffect(e.CarrierInput(), eff) } return true } @@ -96,13 +96,13 @@ func (e *Effect1450) Skill_Use() bool { return true } drain := e.Args()[0] - for _, s := range e.OpponentInput().CurPet[0].Info.SkillList { + for _, s := range e.TargetInput().CurPet[0].Info.SkillList { if s.PP < uint32(e.Args()[1].IntPart()) { drain = drain.Mul(alpacadecimal.NewFromInt(2)) break } } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: drain}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: drain}) e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, drain) return true } @@ -114,7 +114,7 @@ func (e *Effect1451) Skill_Use() bool { if len(e.Args()) < 2 { return true } - if e.CarrierInput().CurPet[0].GetHP().Cmp(e.OpponentInput().CurPet[0].GetHP()) > 0 { + if e.CarrierInput().CurPet[0].GetHP().Cmp(e.TargetInput().CurPet[0].GetHP()) > 0 { e.CarrierInput().AddShield(e.Args()[0]) return true } @@ -210,7 +210,7 @@ func (e *Effect1456) Skill_Use() bool { } maxHP := e.CarrierInput().CurPet[0].GetMaxHP() e.CarrierInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.CarrierInput().CurPet[0].GetHP()}) - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: maxHP.Div(e.Args()[0])}) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: maxHP.Div(e.Args()[0])}) eff := e.CarrierInput().InitEffect(input.EffectType.Sub, 1456, e.SideEffectArgs...) if eff != nil { e.CarrierInput().AddEffect(e.CarrierInput(), eff) @@ -236,10 +236,10 @@ func (e *Effect1457) OnSkill() bool { } success, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) if success { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[2].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[2].IntPart())) return true } - randomSkillPPZero(e.OpponentInput(), int(e.Args()[3].IntPart())) + randomSkillPPZero(e.TargetInput(), int(e.Args()[3].IntPart())) return true } @@ -267,7 +267,7 @@ func (e *Effect1458Sub) SkillHit_ex() bool { } if len(e.Args()) >= 4 { if ok, _, _ := e.Input.Player.Roll(int(e.Args()[2].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[3].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[3].IntPart())) } } return true @@ -281,12 +281,12 @@ func (e *Effect1459) ActionStart(a, b *action.SelectSkillAction) bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) return true } eff := e.CarrierInput().InitEffect(input.EffectType.Sub, 1459, e.SideEffectArgs...) if eff != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), eff) + e.TargetInput().AddEffect(e.CarrierInput(), eff) } return true } @@ -324,8 +324,8 @@ func (e *Effect1461) Skill_Use() bool { } heal := e.CarrierInput().CurPet[0].GetMaxHP().Div(e.Args()[0]) e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, heal) - if e.CarrierInput().CurPet[0].GetHP().Cmp(e.OpponentInput().CurPet[0].GetHP()) < 0 { - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: heal}) + if e.CarrierInput().CurPet[0].GetHP().Cmp(e.TargetInput().CurPet[0].GetHP()) < 0 { + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: heal}) } return true } @@ -394,14 +394,14 @@ func (e *Effect1463Sub) DamageLock(zone *info.DamageZone) bool { type Effect1464 struct{ node.EffectNode } func (e *Effect1464) OnSkill() bool { - if e.OpponentInput().CurPet[0].Info.Hp > 0 || len(e.Args()) < 3 { + if e.TargetInput().CurPet[0].Info.Hp > 0 || len(e.Args()) < 3 { return true } - if !e.OpponentInput().StatEffect_Exist(info.EnumPetStatus(e.Args()[0].IntPart())) { + if !e.TargetInput().StatEffect_Exist(info.EnumPetStatus(e.Args()[0].IntPart())) { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[2].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[2].IntPart())) } return true } @@ -419,8 +419,8 @@ func (e *Effect1465) ActionStart(a, b *action.SelectSkillAction) bool { } return true } - for i := range e.OpponentInput().Prop[:] { - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), int8(-e.Args()[0].IntPart())) + for i := range e.TargetInput().Prop[:] { + e.TargetInput().SetProp(e.CarrierInput(), int8(i), int8(-e.Args()[0].IntPart())) } return true } @@ -443,7 +443,7 @@ func (e *Effect1466Sub) SkillHit_ex() bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[2].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[2].IntPart())) } return true } @@ -478,7 +478,7 @@ func (e *Effect1468) Skill_Use() bool { return true } triggered := false - for _, target := range []*input.Input{e.CarrierInput(), e.OpponentInput()} { + for _, target := range []*input.Input{e.CarrierInput(), e.TargetInput()} { for _, eff := range target.Effects { if eff != nil && eff.Alive() { eff.Alive(false) @@ -487,8 +487,8 @@ func (e *Effect1468) Skill_Use() bool { } } if triggered { - damageByFixed(e.CarrierInput(), e.OpponentInput(), e.Args()[0].IntPart()) - randomSkillPPZero(e.OpponentInput(), int(e.Args()[1].IntPart())) + damageByFixed(e.CarrierInput(), e.TargetInput(), e.Args()[0].IntPart()) + randomSkillPPZero(e.TargetInput(), int(e.Args()[1].IntPart())) } return true } @@ -533,7 +533,7 @@ func (e *Effect1471) Skill_Use() bool { return true } removed := false - for _, eff := range e.OpponentInput().Effects { + for _, eff := range e.TargetInput().Effects { if eff != nil && eff.Alive() { eff.Alive(false) removed = true @@ -541,7 +541,7 @@ func (e *Effect1471) Skill_Use() bool { } if removed { if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) } return true } diff --git a/logic/service/fight/effect/146.go b/logic/service/fight/effect/146.go index cb438250b..03185e986 100644 --- a/logic/service/fight/effect/146.go +++ b/logic/service/fight/effect/146.go @@ -17,7 +17,7 @@ func (e *Effect146) Skill_Use_ex() bool { if success { poisonEffect := e.CarrierInput().InitEffect(input.EffectType.Status, int(info.PetStatus.Poisoned)) if poisonEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), poisonEffect) + e.TargetInput().AddEffect(e.CarrierInput(), poisonEffect) } } } diff --git a/logic/service/fight/effect/1473_1497.go b/logic/service/fight/effect/1473_1497.go index ecc1a9f7c..b631c7068 100644 --- a/logic/service/fight/effect/1473_1497.go +++ b/logic/service/fight/effect/1473_1497.go @@ -17,7 +17,7 @@ func (e *Effect1473) Skill_Use() bool { return true } cleared := false - for _, eff := range e.OpponentInput().Effects { + for _, eff := range e.TargetInput().Effects { if eff == nil || !eff.Alive() { continue } @@ -25,7 +25,7 @@ func (e *Effect1473) Skill_Use() bool { cleared = true } if cleared { - randomSkillPPZero(e.OpponentInput(), int(e.Args()[0].IntPart())) + randomSkillPPZero(e.TargetInput(), int(e.Args()[0].IntPart())) } return true } @@ -90,8 +90,8 @@ func (e *Effect1476) Skill_Use() bool { if e.CarrierInput().CurPet[0].GetHP().Mul(e.Args()[1]).Cmp(e.CarrierInput().CurPet[0].GetMaxHP()) < 0 { delta *= 2 } - for i := range e.OpponentInput().Prop[:] { - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), delta) + for i := range e.TargetInput().Prop[:] { + e.TargetInput().SetProp(e.CarrierInput(), int8(i), delta) } return true } @@ -104,7 +104,7 @@ func (e *Effect1477) Skill_Use() bool { return true } cleared := false - for _, target := range []*input.Input{e.CarrierInput(), e.OpponentInput()} { + for _, target := range []*input.Input{e.CarrierInput(), e.TargetInput()} { for _, eff := range target.Effects { if eff == nil || !eff.Alive() { continue @@ -114,8 +114,8 @@ func (e *Effect1477) Skill_Use() bool { } } if cleared { - drain := e.OpponentInput().CurPet[0].GetMaxHP().Div(e.Args()[0]) - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: drain}) + drain := e.TargetInput().CurPet[0].GetMaxHP().Div(e.Args()[0]) + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Percent, Damage: drain}) e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, drain) } return true @@ -151,7 +151,7 @@ func (e *Effect1479) Skill_Use() bool { e.CarrierInput().Damage(e.CarrierInput(), &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.CarrierInput().CurPet[0].GetHP()}) eff := e.CarrierInput().InitEffect(input.EffectType.Sub, 1479, e.SideEffectArgs...) if eff != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), eff) + e.TargetInput().AddEffect(e.CarrierInput(), eff) } return true } @@ -217,10 +217,10 @@ func (e *Effect1482) Skill_Use() bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) return true } - for _, eff := range e.OpponentInput().Effects { + for _, eff := range e.TargetInput().Effects { if eff != nil && eff.Alive() { eff.Alive(false) } @@ -245,7 +245,7 @@ func (e *Effect1483Sub) Skill_Use() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.Crit > 0 { eff := e.CarrierInput().InitEffect(input.EffectType.Sub, 1483, e.SideEffectArgs...) if eff != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), eff) + e.TargetInput().AddEffect(e.CarrierInput(), eff) } } return true @@ -280,7 +280,7 @@ func (e *Effect1485) OnSkill() bool { return true } boosted := false - for _, v := range e.OpponentInput().Prop[:] { + for _, v := range e.TargetInput().Prop[:] { if v > 0 { boosted = true break @@ -290,11 +290,11 @@ func (e *Effect1485) OnSkill() bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[2].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[3].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[3].IntPart())) } return true } @@ -341,7 +341,7 @@ func (e *Effect1488) OnSkill() bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) } return true } @@ -354,7 +354,7 @@ func (e *Effect1489) OnSkill() bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) return true } eff := e.CarrierInput().InitEffect(input.EffectType.Sub, 1489, e.SideEffectArgs...) @@ -384,12 +384,12 @@ func (e *Effect1490) OnSkill() bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - addStatusByID(e.CarrierInput(), e.OpponentInput(), int(e.Args()[1].IntPart())) + addStatusByID(e.CarrierInput(), e.TargetInput(), int(e.Args()[1].IntPart())) return true } eff := e.CarrierInput().InitEffect(input.EffectType.Sub, 1490, e.SideEffectArgs...) if eff != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), eff) + e.TargetInput().AddEffect(e.CarrierInput(), eff) } return true } @@ -425,7 +425,7 @@ func (e *Effect1492) OnSkill() bool { return true } down := false - for _, v := range e.OpponentInput().Prop[:] { + for _, v := range e.TargetInput().Prop[:] { if v < 0 { down = true break @@ -434,7 +434,7 @@ func (e *Effect1492) OnSkill() bool { if !down { return true } - applyRandomStatuses1507(e.CarrierInput(), e.OpponentInput(), int(e.Args()[0].IntPart())) + applyRandomStatuses1507(e.CarrierInput(), e.TargetInput(), int(e.Args()[0].IntPart())) return true } @@ -468,7 +468,7 @@ func (e *Effect1494) OnSkill() bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - randomSkillPPZero(e.OpponentInput(), int(e.Args()[1].IntPart())) + randomSkillPPZero(e.TargetInput(), int(e.Args()[1].IntPart())) } return true } @@ -481,7 +481,7 @@ func (e *Effect1495) Skill_Use() bool { return true } swapped := false - for _, i := range e.OpponentInput().Prop[:] { + for _, i := range e.TargetInput().Prop[:] { if i > 0 { swapped = true break @@ -491,7 +491,7 @@ func (e *Effect1495) Skill_Use() bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - randomSkillPPZero(e.OpponentInput(), int(e.Args()[1].IntPart())) + randomSkillPPZero(e.TargetInput(), int(e.Args()[1].IntPart())) } return true } @@ -525,7 +525,7 @@ func (e *Effect1496Sub) TurnEnd() { type Effect1497 struct{ node.EffectNode } func (e *Effect1497) Skill_Use() bool { - heal := e.CarrierInput().CurrentShield().Add(e.OpponentInput().CurrentShield()) + heal := e.CarrierInput().CurrentShield().Add(e.TargetInput().CurrentShield()) if heal.Cmp(alpacadecimal.Zero) > 0 { e.CarrierInput().Heal(e.CarrierInput(), &action.SelectSkillAction{}, heal) } diff --git a/logic/service/fight/effect/149.go b/logic/service/fight/effect/149.go index 97b88b489..7fb9e6379 100644 --- a/logic/service/fight/effect/149.go +++ b/logic/service/fight/effect/149.go @@ -20,7 +20,7 @@ func (e *Effect149) OnSkill() bool { statusEffect1 := e.CarrierInput().InitEffect(input.EffectType.Status, effectType1) if statusEffect1 != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect1) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect1) } } @@ -32,7 +32,7 @@ func (e *Effect149) OnSkill() bool { statusEffect2 := e.CarrierInput().InitEffect(input.EffectType.Status, effectType2) if statusEffect2 != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect2) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect2) } } diff --git a/logic/service/fight/effect/150.go b/logic/service/fight/effect/150.go index 3a0fdd86c..b6dc501d0 100644 --- a/logic/service/fight/effect/150.go +++ b/logic/service/fight/effect/150.go @@ -10,9 +10,9 @@ type Effect150 struct { } func (e *Effect150) Skill_Use() bool { - e.OpponentInput().SetProp(e.OpponentInput(), 1, int8(e.SideEffectArgs[1])) + e.TargetInput().SetProp(e.TargetInput(), 1, int8(e.SideEffectArgs[1])) - e.OpponentInput().SetProp(e.OpponentInput(), 3, int8(e.SideEffectArgs[1])) + e.TargetInput().SetProp(e.TargetInput(), 3, int8(e.SideEffectArgs[1])) return true } func init() { diff --git a/logic/service/fight/effect/156.go b/logic/service/fight/effect/156.go index 163d37e86..0a0120f12 100644 --- a/logic/service/fight/effect/156.go +++ b/logic/service/fight/effect/156.go @@ -12,15 +12,15 @@ type Effect156 struct { func (e *Effect156) Skill_Use() bool { - for i, v := range e.OpponentInput().Prop[:] { + for i, v := range e.TargetInput().Prop[:] { if v > 0 { - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), 0) + e.TargetInput().SetProp(e.CarrierInput(), int8(i), 0) } } - addSubEffect(e.CarrierInput(), e.OpponentInput(), &e.EffectNode, &Effect156_sub{}, e.SideEffectArgs[0]) + addSubEffect(e.CarrierInput(), e.TargetInput(), &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 0c45eedd3..fcc7e3e77 100644 --- a/logic/service/fight/effect/157.go +++ b/logic/service/fight/effect/157.go @@ -13,9 +13,9 @@ func (e *Effect157) Skill_Use_ex() bool { if e.Ctx().SkillEntity == nil { return true } - e.OpponentInput().SetProp(e.CarrierInput(), 1, -1) - e.OpponentInput().SetProp(e.CarrierInput(), 3, -1) - e.OpponentInput().SetProp(e.CarrierInput(), 5, -1) + e.TargetInput().SetProp(e.CarrierInput(), 1, -1) + e.TargetInput().SetProp(e.CarrierInput(), 3, -1) + e.TargetInput().SetProp(e.CarrierInput(), 5, -1) return true } diff --git a/logic/service/fight/effect/166.go b/logic/service/fight/effect/166.go index b63b81d4a..28f0213c0 100644 --- a/logic/service/fight/effect/166.go +++ b/logic/service/fight/effect/166.go @@ -17,7 +17,7 @@ func (e *Effect166) Skill_Use_ex() bool { if success { effectType := int8(e.Args()[1].IntPart()) // XX类型 effectValue := int8(e.Args()[2].IntPart()) // 等级k - e.OpponentInput().SetProp(e.CarrierInput(), effectType, effectValue) + e.TargetInput().SetProp(e.CarrierInput(), effectType, effectValue) } } diff --git a/logic/service/fight/effect/169.go b/logic/service/fight/effect/169.go index 9d9968845..234662b7d 100644 --- a/logic/service/fight/effect/169.go +++ b/logic/service/fight/effect/169.go @@ -17,7 +17,7 @@ func (e *Effect169) OnSkill() bool { // 添加异常状态 statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, int(e.Args()[2].IntPart())) // 以麻痹为例 if statusEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } return true diff --git a/logic/service/fight/effect/173.go b/logic/service/fight/effect/173.go index 87a983448..aaeb2f65c 100644 --- a/logic/service/fight/effect/173.go +++ b/logic/service/fight/effect/173.go @@ -18,7 +18,7 @@ func (e *Effect173) OnSkill() bool { if success { statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, int(e.Args()[1].IntPart())) // 以麻痹为例 if statusEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } } diff --git a/logic/service/fight/effect/175.go b/logic/service/fight/effect/175.go index 65d58759b..52bb87fd7 100644 --- a/logic/service/fight/effect/175.go +++ b/logic/service/fight/effect/175.go @@ -11,7 +11,7 @@ type Effect175 struct { } func (e *Effect175) OnSkill() bool { - if e.OpponentInput().StatEffect_Exist_all() { // 对手处于异常状态 + if e.TargetInput().StatEffect_Exist_all() { // 对手处于异常状态 chance := e.Args()[0].IntPart() success, _, _ := e.Input.Player.Roll(int(chance), 100) if success { diff --git a/logic/service/fight/effect/176.go b/logic/service/fight/effect/176.go index 3a7396991..d61e2cfb0 100644 --- a/logic/service/fight/effect/176.go +++ b/logic/service/fight/effect/176.go @@ -32,7 +32,7 @@ func (e *Effect176) OnSkill() bool { statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, selectedStatus) if statusEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } diff --git a/logic/service/fight/effect/178.go b/logic/service/fight/effect/178.go index 4d38698df..a7be2850b 100644 --- a/logic/service/fight/effect/178.go +++ b/logic/service/fight/effect/178.go @@ -17,7 +17,7 @@ func (e *Effect178) Skill_Use_ex() bool { damageDone := e.CarrierInput().SumDamage var healAmount alpacadecimal.Decimal - if e.CarrierInput().CurPet[0].Type == e.OpponentInput().CurPet[0].Type { + if e.CarrierInput().CurPet[0].Type == e.TargetInput().CurPet[0].Type { // 属性相同,1/m healAmount = damageDone.Div(e.Args()[1]) } else { diff --git a/logic/service/fight/effect/179.go b/logic/service/fight/effect/179.go index 0bb617318..2687e4cb5 100644 --- a/logic/service/fight/effect/179.go +++ b/logic/service/fight/effect/179.go @@ -15,7 +15,7 @@ func (e *Effect179) SkillHit() bool { return true } - if e.CarrierInput().CurPet[0].Type == e.OpponentInput().CurPet[0].Type { + if e.CarrierInput().CurPet[0].Type == e.TargetInput().CurPet[0].Type { // 属性相同,技能威力提升n e.Ctx().SkillEntity.XML.Power += int(e.Args()[0].IntPart()) } diff --git a/logic/service/fight/effect/184.go b/logic/service/fight/effect/184.go index fd3432377..49d86aa94 100644 --- a/logic/service/fight/effect/184.go +++ b/logic/service/fight/effect/184.go @@ -11,7 +11,7 @@ type Effect184 struct { } func (e *Effect184) OnSkill() bool { - if e.OpponentInput().HasPropADD() { // 对手处于能力提升状态 + if e.TargetInput().HasPropADD() { // 对手处于能力提升状态 chance := e.Args()[0].IntPart() success, _, _ := e.Input.Player.Roll(int(chance), 100) if success { diff --git a/logic/service/fight/effect/188.go b/logic/service/fight/effect/188.go index 8146fd78b..6b2c346ff 100644 --- a/logic/service/fight/effect/188.go +++ b/logic/service/fight/effect/188.go @@ -15,12 +15,12 @@ func (e *Effect188) SkillHit() bool { return true } - if e.OpponentInput().StatEffect_Exist_all() { // 对手处于异常状态 + if e.TargetInput().StatEffect_Exist_all() { // 对手处于异常状态 // 威力翻倍 e.Ctx().SkillEntity.XML.Power *= 2 // 消除对手相应的防御能力提升效果 - e.OpponentInput().SetProp(e.CarrierInput(), 1, 0) + e.TargetInput().SetProp(e.CarrierInput(), 1, 0) } return true diff --git a/logic/service/fight/effect/190.go b/logic/service/fight/effect/190.go index ddabe7c10..e74d0c2c8 100644 --- a/logic/service/fight/effect/190.go +++ b/logic/service/fight/effect/190.go @@ -15,9 +15,9 @@ func (e *Effect190) Skill_Use_ex() bool { } // 消除对手所有能力强化状态 - for i, v := range e.OpponentInput().Prop[:] { + for i, v := range e.TargetInput().Prop[:] { if v > 0 { - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), 0) + e.TargetInput().SetProp(e.CarrierInput(), int8(i), 0) } } diff --git a/logic/service/fight/effect/193.go b/logic/service/fight/effect/193.go index aa27e2e6c..aba5bcf2e 100644 --- a/logic/service/fight/effect/193.go +++ b/logic/service/fight/effect/193.go @@ -16,7 +16,7 @@ func (e *Effect193) SkillHit() bool { return true } - if e.OpponentInput().StatEffect_Exist(info.EnumPetStatus(e.Args()[0].IntPart())) { // 对手处于异常状态 + if e.TargetInput().StatEffect_Exist(info.EnumPetStatus(e.Args()[0].IntPart())) { // 对手处于异常状态 // 设定必定暴击 e.Ctx().SkillEntity.XML.CritRate = 16 } diff --git a/logic/service/fight/effect/194.go b/logic/service/fight/effect/194.go index 111f14c25..a46c61c82 100644 --- a/logic/service/fight/effect/194.go +++ b/logic/service/fight/effect/194.go @@ -18,7 +18,7 @@ func (e *Effect194) Skill_Use() bool { damageDone := e.CarrierInput().SumDamage var healAmount alpacadecimal.Decimal - if e.OpponentInput().StatEffect_Exist(info.EnumPetStatus(e.Args()[1].IntPart())) { // 假设有检查异常状态的方法 + if e.TargetInput().StatEffect_Exist(info.EnumPetStatus(e.Args()[1].IntPart())) { // 假设有检查异常状态的方法 healAmount = damageDone.Div(e.Args()[2]) // 1/m } else { healAmount = damageDone.Div(e.Args()[0]) // 1/n diff --git a/logic/service/fight/effect/196.go b/logic/service/fight/effect/196.go index d63b2e56e..1dbe16475 100644 --- a/logic/service/fight/effect/196.go +++ b/logic/service/fight/effect/196.go @@ -16,14 +16,14 @@ func (e *Effect196) OnSkill() bool { effectValue := e.Args()[5].IntPart() // 等级-k success, _, _ := e.Input.Player.Roll(int(chance), 100) if success { - e.OpponentInput().SetProp(e.OpponentInput(), int8(e.Args()[3].IntPart()), int8(effectValue)) + e.TargetInput().SetProp(e.TargetInput(), int8(e.Args()[3].IntPart()), int8(effectValue)) } } else { // 后出手 chance := e.Args()[1].IntPart() // j% effectValue := e.Args()[2].IntPart() // 等级-k success, _, _ := e.Input.Player.Roll(int(chance), 100) if success { - e.OpponentInput().SetProp(e.OpponentInput(), int8(e.Args()[0].IntPart()), int8(effectValue)) + e.TargetInput().SetProp(e.TargetInput(), int8(e.Args()[0].IntPart()), int8(effectValue)) } } diff --git a/logic/service/fight/effect/198.go b/logic/service/fight/effect/198.go index 742b7494e..89e7abf5a 100644 --- a/logic/service/fight/effect/198.go +++ b/logic/service/fight/effect/198.go @@ -18,7 +18,7 @@ func (e *Effect198) OnSkill() bool { // 随机选择n种能力 for i := 0; i < numStats; i++ { - e.OpponentInput().SetProp(e.CarrierInput(), int8(grand.Intn(5)), reduction) + e.TargetInput().SetProp(e.CarrierInput(), int8(grand.Intn(5)), reduction) } return true diff --git a/logic/service/fight/effect/200.go b/logic/service/fight/effect/200.go index e1fc378f7..a9c62b67e 100644 --- a/logic/service/fight/effect/200.go +++ b/logic/service/fight/effect/200.go @@ -11,7 +11,7 @@ type Effect200 struct { } func (e *Effect200) OnSkill() bool { - if e.OpponentInput().HasPropADD() { + if e.TargetInput().HasPropADD() { chance := e.Args()[0].IntPart() success, _, _ := e.Input.Player.Roll(int(chance), 100) if success { @@ -19,7 +19,7 @@ func (e *Effect200) OnSkill() bool { statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, effectType) if statusEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } 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 index bf315660b..07c2f7b8f 100644 --- 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 @@ -17,7 +17,7 @@ func (e *Effect400) SkillHit() bool { if e.Ctx().SkillEntity == nil { return true } - if e.CarrierInput().CurPet[0].PetInfo.Type != e.OpponentInput().CurPet[0].PetInfo.Type { + if e.CarrierInput().CurPet[0].PetInfo.Type != e.TargetInput().CurPet[0].PetInfo.Type { return true } e.Ctx().SkillEntity.XML.Power *= 2 @@ -129,7 +129,7 @@ func (e *Effect611) OnSkill() bool { if e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{ + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{ Type: info.DamageType.Fixed, Damage: e.Args()[1], }) diff --git a/logic/service/fight/effect/403.go b/logic/service/fight/effect/403.go index 4dd77f02b..0d226d79f 100644 --- a/logic/service/fight/effect/403.go +++ b/logic/service/fight/effect/403.go @@ -17,7 +17,7 @@ func (e *Effect403) OnSkill() bool { if success { boostValue := int8(e.Args()[1].IntPart()) // 检查属性是否相同 - if e.CarrierInput().CurPet[0].Type == e.OpponentInput().CurPet[0].Type { + if e.CarrierInput().CurPet[0].Type == e.TargetInput().CurPet[0].Type { boostValue *= 2 } diff --git a/logic/service/fight/effect/418.go b/logic/service/fight/effect/418.go index f4512fc1e..5fd49d243 100644 --- a/logic/service/fight/effect/418.go +++ b/logic/service/fight/effect/418.go @@ -11,8 +11,8 @@ type Effect418 struct { } func (e *Effect418) OnSkill() bool { - if e.OpponentInput().HasPropADD() { - e.OpponentInput().SetProp(e.CarrierInput(), int8(e.SideEffectArgs[0]), int8(e.SideEffectArgs[1])) + if e.TargetInput().HasPropADD() { + e.TargetInput().SetProp(e.CarrierInput(), int8(e.SideEffectArgs[0]), int8(e.SideEffectArgs[1])) } diff --git a/logic/service/fight/effect/422.go b/logic/service/fight/effect/422.go index 6b6bcde64..1fe81ac64 100644 --- a/logic/service/fight/effect/422.go +++ b/logic/service/fight/effect/422.go @@ -24,7 +24,7 @@ func (e *Effect422) Skill_Use() bool { Type: info.DamageType.Fixed, Damage: additionalDamage, } - e.OpponentInput().Damage(e.CarrierInput(), damageZone) + e.TargetInput().Damage(e.CarrierInput(), damageZone) } return true diff --git a/logic/service/fight/effect/424.go b/logic/service/fight/effect/424.go index d65e98591..a2ba53330 100644 --- a/logic/service/fight/effect/424.go +++ b/logic/service/fight/effect/424.go @@ -10,7 +10,7 @@ type Effect424 struct { } func (e *Effect424) Skill_Use() bool { - e.OpponentInput().SetProp(e.CarrierInput(), 4, int8(e.Args()[1].IntPart())) + e.TargetInput().SetProp(e.CarrierInput(), 4, int8(e.Args()[1].IntPart())) return true } diff --git a/logic/service/fight/effect/425.go b/logic/service/fight/effect/425.go index 1e9d98320..3b04a7f26 100644 --- a/logic/service/fight/effect/425.go +++ b/logic/service/fight/effect/425.go @@ -19,7 +19,7 @@ func (e *Effect425) Skill_Use() bool { // 随机选择n项属性 for i := 0; i < numStats; i++ { t := int8(grand.Intn(6)) - e.OpponentInput().SetProp(e.CarrierInput(), t, changeValue) + e.TargetInput().SetProp(e.CarrierInput(), t, changeValue) e.CarrierInput().SetProp(e.CarrierInput(), t, -changeValue) } diff --git a/logic/service/fight/effect/427.go b/logic/service/fight/effect/427.go index b2ff7a24f..25d612696 100644 --- a/logic/service/fight/effect/427.go +++ b/logic/service/fight/effect/427.go @@ -16,9 +16,9 @@ func (e *Effect427) Skill_Use() bool { } if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.Category() != info.Category.STATUS { // 降低对手防御 - e.OpponentInput().SetProp(e.OpponentInput(), 1, int8(e.SideEffectArgs[1])) + e.TargetInput().SetProp(e.TargetInput(), 1, int8(e.SideEffectArgs[1])) - e.OpponentInput().SetProp(e.OpponentInput(), 3, int8(e.SideEffectArgs[1])) + e.TargetInput().SetProp(e.TargetInput(), 3, int8(e.SideEffectArgs[1])) } return true diff --git a/logic/service/fight/effect/428.go b/logic/service/fight/effect/428.go index 477d0e63b..3068a3fa4 100644 --- a/logic/service/fight/effect/428.go +++ b/logic/service/fight/effect/428.go @@ -21,7 +21,7 @@ func (e *Effect428) Skill_Use() bool { Type: info.DamageType.Fixed, Damage: e.Args()[0], } - e.OpponentInput().Damage(e.CarrierInput(), damageZone) + e.TargetInput().Damage(e.CarrierInput(), damageZone) return true } diff --git a/logic/service/fight/effect/430.go b/logic/service/fight/effect/430.go index ca55bd039..c412c4d75 100644 --- a/logic/service/fight/effect/430.go +++ b/logic/service/fight/effect/430.go @@ -13,10 +13,10 @@ type Effect430 struct { func (e *Effect430) Skill_Use() bool { var isadd bool // 检查对手是否有能力强化状态 - for i, v := range e.OpponentInput().Prop[:] { + for i, v := range e.TargetInput().Prop[:] { if v > 0 { - if e.OpponentInput().SetProp(e.CarrierInput(), int8(i), 0) { + if e.TargetInput().SetProp(e.CarrierInput(), int8(i), 0) { isadd = true } return true diff --git a/logic/service/fight/effect/434.go b/logic/service/fight/effect/434.go index 0b2a3547c..d295780d5 100644 --- a/logic/service/fight/effect/434.go +++ b/logic/service/fight/effect/434.go @@ -19,7 +19,7 @@ func (e *Effect434) OnSkill() bool { statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, effectType) if statusEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } } diff --git a/logic/service/fight/effect/437.go b/logic/service/fight/effect/437.go index 8af5f551a..6e5c1042b 100644 --- a/logic/service/fight/effect/437.go +++ b/logic/service/fight/effect/437.go @@ -12,8 +12,8 @@ type Effect437 struct { func (e *Effect437) OnSkill() bool { - if e.OpponentInput().HasPropADD() { - e.OpponentInput().SetProp(e.OpponentInput(), int8(e.SideEffectArgs[0]), int8(e.SideEffectArgs[1])) + if e.TargetInput().HasPropADD() { + e.TargetInput().SetProp(e.TargetInput(), int8(e.SideEffectArgs[0]), int8(e.SideEffectArgs[1])) } diff --git a/logic/service/fight/effect/440.go b/logic/service/fight/effect/440.go index b59903366..9b0a0dc93 100644 --- a/logic/service/fight/effect/440.go +++ b/logic/service/fight/effect/440.go @@ -13,7 +13,7 @@ type Effect440 struct { func (e *Effect440) Skill_Use() bool { // 创建一个延迟生效的效果,在下一回合开始生效 - addSubEffect(e.CarrierInput(), e.OpponentInput(), &e.EffectNode, &Effect440_sub{ + addSubEffect(e.CarrierInput(), e.TargetInput(), &e.EffectNode, &Effect440_sub{ m: int(e.Args()[1].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 e91e4f9ae..54e2c8ed3 100644 --- a/logic/service/fight/effect/442.go +++ b/logic/service/fight/effect/442.go @@ -18,7 +18,7 @@ func (e *Effect442) OnSkill() bool { statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, int(e.Args()[1].IntPart())) // 以麻痹为例 if statusEffect != nil { statusEffect.SetArgs(e.CarrierInput(), 1) - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } diff --git a/logic/service/fight/effect/443.go b/logic/service/fight/effect/443.go index 74b83fa07..cd3d890cd 100644 --- a/logic/service/fight/effect/443.go +++ b/logic/service/fight/effect/443.go @@ -20,7 +20,7 @@ func (e *Effect443) Skill_Use_ex() bool { tiredEffect := e.CarrierInput().InitEffect(input.EffectType.Status, int(info.PetStatus.Tired)) if tiredEffect != nil { tiredEffect.Duration(int(e.Args()[2].IntPart())) // x回合 - e.OpponentInput().AddEffect(e.CarrierInput(), tiredEffect) + e.TargetInput().AddEffect(e.CarrierInput(), tiredEffect) } } diff --git a/logic/service/fight/effect/444.go b/logic/service/fight/effect/444.go index f3d1d43f2..936b83263 100644 --- a/logic/service/fight/effect/444.go +++ b/logic/service/fight/effect/444.go @@ -12,7 +12,7 @@ type Effect444 struct { func (e *Effect444) OnSkill() bool { // 降低对手所有技能PP - e.OpponentInput().DelPP(1) + e.TargetInput().DelPP(1) e.CarrierInput().HealPP(1) diff --git a/logic/service/fight/effect/449.go b/logic/service/fight/effect/449.go index 216427f02..36ca3bf85 100644 --- a/logic/service/fight/effect/449.go +++ b/logic/service/fight/effect/449.go @@ -11,7 +11,7 @@ type Effect449 struct { } func (e *Effect449) OnSkill() bool { - if e.OpponentInput().HasPropSub() { + if e.TargetInput().HasPropSub() { chance := e.Args()[0].IntPart() // N% success, _, _ := e.Input.Player.Roll(int(chance), 100) if success { @@ -19,7 +19,7 @@ func (e *Effect449) OnSkill() bool { statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, effectType) if statusEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } diff --git a/logic/service/fight/effect/453.go b/logic/service/fight/effect/453.go index 823aade35..f39369fe2 100644 --- a/logic/service/fight/effect/453.go +++ b/logic/service/fight/effect/453.go @@ -13,10 +13,10 @@ type Effect453 struct { func (e *Effect453) Skill_Use() bool { // 检查对手是否有能力强化状态 ispwoer := false - for i, v := range e.OpponentInput().Prop[:] { + for i, v := range e.TargetInput().Prop[:] { if v > 0 { - if e.OpponentInput().SetProp(e.OpponentInput(), int8(i), 0) { + if e.TargetInput().SetProp(e.TargetInput(), int8(i), 0) { ispwoer = true } @@ -30,7 +30,7 @@ func (e *Effect453) Skill_Use() bool { statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, effectType) if statusEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } diff --git a/logic/service/fight/effect/456.go b/logic/service/fight/effect/456.go index 632d1828b..29536ec61 100644 --- a/logic/service/fight/effect/456.go +++ b/logic/service/fight/effect/456.go @@ -12,8 +12,8 @@ type Effect456 struct { } func (e *Effect456) OnSkill() bool { - if e.OpponentInput().CurPet[0].GetHP().Cmp(e.Args()[0]) > 0 { - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{ + if e.TargetInput().CurPet[0].GetHP().Cmp(e.Args()[0]) > 0 { + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{ Type: info.DamageType.Fixed, Damage: e.Args()[0], diff --git a/logic/service/fight/effect/460.go b/logic/service/fight/effect/460.go index 11da61b99..c0b27a223 100644 --- a/logic/service/fight/effect/460.go +++ b/logic/service/fight/effect/460.go @@ -15,7 +15,7 @@ func (e *Effect460) OnSkill() bool { baseChance := e.Args()[0].IntPart() // m% totalChance := baseChance - if e.OpponentInput().HasPropADD() { + if e.TargetInput().HasPropADD() { totalChance += e.Args()[1].IntPart() } success, _, _ := e.Input.Player.Roll(int(totalChance), 100) @@ -23,7 +23,7 @@ func (e *Effect460) OnSkill() bool { if success { fearEffect := e.CarrierInput().InitEffect(input.EffectType.Status, int(info.PetStatus.Fear)) if fearEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), fearEffect) + e.TargetInput().AddEffect(e.CarrierInput(), fearEffect) } } diff --git a/logic/service/fight/effect/462.go b/logic/service/fight/effect/462.go index 12a956f43..789001ec1 100644 --- a/logic/service/fight/effect/462.go +++ b/logic/service/fight/effect/462.go @@ -20,9 +20,9 @@ func (e *Effect462) Skill_Use_ex() bool { damageZone := &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: alpacadecimal.Min(e.OpponentInput().SumDamage, bounceDamage), + Damage: alpacadecimal.Min(e.TargetInput().SumDamage, bounceDamage), } - e.OpponentInput().Damage(e.CarrierInput(), damageZone) + e.TargetInput().Damage(e.CarrierInput(), damageZone) return true } diff --git a/logic/service/fight/effect/464.go b/logic/service/fight/effect/464.go index a0da6bf42..a9fa0779b 100644 --- a/logic/service/fight/effect/464.go +++ b/logic/service/fight/effect/464.go @@ -13,7 +13,7 @@ type Effect464 struct { } func (e *Effect464) OnSkill() bool { - t, _ := element.Calculator.GetOffensiveMultiplier(e.OpponentInput().CurPet[0].Type, e.CarrierInput().CurPet[0].Type) + t, _ := element.Calculator.GetOffensiveMultiplier(e.TargetInput().CurPet[0].Type, e.CarrierInput().CurPet[0].Type) if t <= 1 { return true @@ -24,7 +24,7 @@ func (e *Effect464) OnSkill() bool { if success { burnEffect := e.CarrierInput().InitEffect(input.EffectType.Status, int(info.PetStatus.Burned)) if burnEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), burnEffect) + e.TargetInput().AddEffect(e.CarrierInput(), burnEffect) } } return true diff --git a/logic/service/fight/effect/469.go b/logic/service/fight/effect/469.go index 1105b5986..802bb7a13 100644 --- a/logic/service/fight/effect/469.go +++ b/logic/service/fight/effect/469.go @@ -19,7 +19,7 @@ func (e *Effect469) Skill_Use_ex() bool { statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, effectType) if statusEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } } @@ -40,7 +40,7 @@ type Effect526 struct { func (e *Effect526) Skill_Use_ex() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.Category() == info.Category.STATUS { - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{ + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{ Type: info.DamageType.Fixed, Damage: e.Args()[0], }) diff --git a/logic/service/fight/effect/470.go b/logic/service/fight/effect/470.go index cc53b4b4a..67e991898 100644 --- a/logic/service/fight/effect/470.go +++ b/logic/service/fight/effect/470.go @@ -19,7 +19,7 @@ func (e *Effect470) Skill_Use_ex() bool { statusEffect := e.CarrierInput().InitEffect(input.EffectType.Status, effectType) if statusEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), statusEffect) + e.TargetInput().AddEffect(e.CarrierInput(), statusEffect) } } } diff --git a/logic/service/fight/effect/477.go b/logic/service/fight/effect/477.go index 4ba6f27fd..1e514c75c 100644 --- a/logic/service/fight/effect/477.go +++ b/logic/service/fight/effect/477.go @@ -18,7 +18,7 @@ func (e *Effect477) Skill_Use_ex() bool { if effectId == 0 { continue } - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), int8(effectId)) + e.TargetInput().SetProp(e.CarrierInput(), int8(i), int8(effectId)) } return true diff --git a/logic/service/fight/effect/483.go b/logic/service/fight/effect/483.go index 5e8ceb968..4ddff470a 100644 --- a/logic/service/fight/effect/483.go +++ b/logic/service/fight/effect/483.go @@ -18,7 +18,7 @@ func (e *Effect483) OnSkill() bool { if v == 0 { continue } - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), int8(v)) + e.TargetInput().SetProp(e.CarrierInput(), int8(i), int8(v)) } diff --git a/logic/service/fight/effect/485.go b/logic/service/fight/effect/485.go index 86734c927..1b0a1e377 100644 --- a/logic/service/fight/effect/485.go +++ b/logic/service/fight/effect/485.go @@ -13,11 +13,11 @@ type Effect485 struct { func (e *Effect485) Skill_Use() bool { isfff := false - for i, v := range e.OpponentInput().Prop[:] { + for i, v := range e.TargetInput().Prop[:] { if v > 0 { isfff = true - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), 0) + e.TargetInput().SetProp(e.CarrierInput(), int8(i), 0) } diff --git a/logic/service/fight/effect/486.go b/logic/service/fight/effect/486.go index 35bf93c6d..5f3bc9135 100644 --- a/logic/service/fight/effect/486.go +++ b/logic/service/fight/effect/486.go @@ -21,7 +21,7 @@ func (e *Effect486) CalculatePre() bool { return true } - e.OpponentInput().Prop = [6]int8{} + e.TargetInput().Prop = [6]int8{} return true } diff --git a/logic/service/fight/effect/494.go b/logic/service/fight/effect/494.go index 641ac0378..d3e04fe41 100644 --- a/logic/service/fight/effect/494.go +++ b/logic/service/fight/effect/494.go @@ -12,7 +12,7 @@ type Effect494 struct { func (e *Effect494) CalculatePre() bool { - e.OpponentInput().Prop = [6]int8{} + e.TargetInput().Prop = [6]int8{} return true } diff --git a/logic/service/fight/effect/495.go b/logic/service/fight/effect/495.go index 808aec3df..f7b1a4e3d 100644 --- a/logic/service/fight/effect/495.go +++ b/logic/service/fight/effect/495.go @@ -12,12 +12,12 @@ type Effect495 struct { } func (e *Effect495) OnSkill() bool { - if e.OpponentInput().StatEffect_Exist(info.EnumPetStatus(e.Args()[0].IntPart())) { // 对手处于异常状态 + if e.TargetInput().StatEffect_Exist(info.EnumPetStatus(e.Args()[0].IntPart())) { // 对手处于异常状态 chance := 30 // 固定30% success, _, _ := e.Input.Player.Roll(chance, 100) if success { // 秒杀对手 - e.OpponentInput().CurPet[0].Info.Hp = 0 + e.TargetInput().CurPet[0].Info.Hp = 0 } } diff --git a/logic/service/fight/effect/498.go b/logic/service/fight/effect/498.go index 9cdc47814..93426fc18 100644 --- a/logic/service/fight/effect/498.go +++ b/logic/service/fight/effect/498.go @@ -21,7 +21,7 @@ func (e *Effect498) ActionStart(a, b *action.SelectSkillAction) bool { return true } - if !e.OpponentInput().StatEffect_Exist(input.StatusSleep) { + if !e.TargetInput().StatEffect_Exist(input.StatusSleep) { return true } e.Ctx().SkillEntity.XML.CritRate += int(e.Args()[1].IntPart()) diff --git a/logic/service/fight/effect/500.go b/logic/service/fight/effect/500.go index 70d0b0c94..185ab4b31 100644 --- a/logic/service/fight/effect/500.go +++ b/logic/service/fight/effect/500.go @@ -16,7 +16,7 @@ func (e *Effect500) SkillHit() bool { return true } - if e.OpponentInput().StatEffect_Exist(info.PetStatus.Fear) { + if e.TargetInput().StatEffect_Exist(info.PetStatus.Fear) { // 伤害翻倍 e.Ctx().SkillEntity.XML.Power *= 2 } diff --git a/logic/service/fight/effect/501.go b/logic/service/fight/effect/501.go index 632f51b41..6edea5f0a 100644 --- a/logic/service/fight/effect/501.go +++ b/logic/service/fight/effect/501.go @@ -17,7 +17,7 @@ func (e *Effect501) Skill_Use_ex() bool { if damageDone.IntPart() < int64(damageThreshold) { effectType := int8(e.Args()[1].IntPart()) // XX类型 effectValue := int8(e.Args()[2].IntPart()) // 等级-n - e.OpponentInput().SetProp(e.CarrierInput(), effectType, -effectValue) + e.TargetInput().SetProp(e.CarrierInput(), effectType, -effectValue) } diff --git a/logic/service/fight/effect/503.go b/logic/service/fight/effect/503.go index b56b113c9..e79441a5a 100644 --- a/logic/service/fight/effect/503.go +++ b/logic/service/fight/effect/503.go @@ -32,7 +32,7 @@ func (e *Effect503) Action_end_ex() bool { Type: info.DamageType.Fixed, Damage: fixedDamage, } - e.OpponentInput().Damage(e.CarrierInput(), damageZone) + e.TargetInput().Damage(e.CarrierInput(), damageZone) e.triggered = false } return true diff --git a/logic/service/fight/effect/504.go b/logic/service/fight/effect/504.go index 51a669db0..a6121b8f4 100644 --- a/logic/service/fight/effect/504.go +++ b/logic/service/fight/effect/504.go @@ -19,12 +19,12 @@ func (e *Effect504) OnSkill() bool { // 令对手害怕 fearEffect := e.CarrierInput().InitEffect(input.EffectType.Status, int(info.PetStatus.Fear)) if fearEffect != nil { - e.OpponentInput().AddEffect(e.CarrierInput(), fearEffect) + e.TargetInput().AddEffect(e.CarrierInput(), fearEffect) } } else { for i, effectId := range e.SideEffectArgs[1:] { if effectId != 0 { - e.OpponentInput().SetProp(e.CarrierInput(), int8(i), int8(effectId)) + e.TargetInput().SetProp(e.CarrierInput(), int8(i), int8(effectId)) } } diff --git a/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go b/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go index 4dc72192c..d4e9efaf4 100644 --- a/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go +++ b/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go @@ -47,7 +47,7 @@ func registerPhysicalAttackAddStatusEffects() { // ----------------------------------------------------------- func (e *EffectPhysicalAttackAddStatus) Skill_Use_ex() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } diff --git a/logic/service/fight/effect/effect_680_690.go b/logic/service/fight/effect/effect_680_690.go index 4dc537a0d..a74e706b5 100644 --- a/logic/service/fight/effect/effect_680_690.go +++ b/logic/service/fight/effect/effect_680_690.go @@ -17,7 +17,7 @@ type Effect680 struct { func (e *Effect680) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } @@ -85,7 +85,7 @@ type Effect683 struct { func (e *Effect683) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } @@ -106,7 +106,7 @@ type Effect684 struct { func (e *Effect684) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } @@ -132,7 +132,7 @@ type Effect685 struct { func (e *Effect685) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } @@ -152,7 +152,7 @@ type Effect686 struct { func (e *Effect686) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } @@ -189,7 +189,7 @@ type Effect687 struct { func (e *Effect687) Skill_Use() bool { source := e.SourceInput() - target := e.OpponentInput() + target := e.TargetInput() if source == nil || target == nil { return true } diff --git a/logic/service/fight/effect/effect_EffectConditionalAddDamage.go b/logic/service/fight/effect/effect_EffectConditionalAddDamage.go index 708473095..74d0979b6 100644 --- a/logic/service/fight/effect/effect_EffectConditionalAddDamage.go +++ b/logic/service/fight/effect/effect_EffectConditionalAddDamage.go @@ -66,7 +66,7 @@ func (e *EffectConditionalAddDamage) OnSkill() bool { return true } - e.OpponentInput().Damage(e.CarrierInput(), &info.DamageZone{ + e.TargetInput().Damage(e.CarrierInput(), &info.DamageZone{ Type: info.DamageType.Fixed, Damage: e.Args()[0], }) diff --git a/logic/service/fight/effect/effect_attr.go b/logic/service/fight/effect/effect_attr.go index 5b9471fcd..cff157e11 100644 --- a/logic/service/fight/effect/effect_attr.go +++ b/logic/service/fight/effect/effect_attr.go @@ -120,7 +120,7 @@ func (e *EffectPropSyncReverse) OnSkill() bool { return true } e.ourpet = e.CarrierInput().CurPet[0] - e.opppet = e.OpponentInput().CurPet[0] + e.opppet = e.TargetInput().CurPet[0] e.can = true e.active(true) diff --git a/logic/service/fight/effect/effect_status.go b/logic/service/fight/effect/effect_status.go index 1410a7a59..5dbc51285 100644 --- a/logic/service/fight/effect/effect_status.go +++ b/logic/service/fight/effect/effect_status.go @@ -70,7 +70,7 @@ type ContinuousDamage struct { func (e *ContinuousDamage) ActionStart(attacker, defender *action.SelectSkillAction) bool { carrier := e.CarrierInput() source := e.SourceInput() - opp := e.OpponentInput() + opp := e.TargetInput() if carrier == nil { return true } @@ -135,7 +135,7 @@ func (e *ParasiticSeed) SwitchOut(in *input.Input) bool { func (e *ParasiticSeed) ActionStartEx(attacker, defender *action.SelectSkillAction) bool { carrier := e.CarrierInput() source := e.SourceInput() - opp := e.OpponentInput() + opp := e.TargetInput() if carrier == nil { return true } diff --git a/logic/service/fight/effect/none.go b/logic/service/fight/effect/none.go index 5530a2a02..270b48973 100644 --- a/logic/service/fight/effect/none.go +++ b/logic/service/fight/effect/none.go @@ -51,12 +51,38 @@ type Effect201 struct { node.EffectNode } +func isSameSideTarget(carrier, target *input.Input) bool { + if carrier == nil || target == nil { + return false + } + if carrier == target { + return true + } + for _, ally := range carrier.Team { + if ally == target { + return true + } + } + if carrier.Player != nil && target.Player != nil { + return carrier.Player.GetInfo().UserID == target.Player.GetInfo().UserID + } + return false +} + func (e *Effect201) OnSkill() bool { args := e.Args() if len(args) == 0 { return true } + carrier := e.CarrierInput() + if carrier == nil { + carrier = e.Ctx().Our + } + if carrier == nil { + return true + } + divisorIndex := len(args) - 1 if len(args) > 1 { divisorIndex = 1 @@ -69,31 +95,31 @@ func (e *Effect201) OnSkill() bool { healAll := len(args) > 1 && args[0].IntPart() != 0 if !healAll { target := e.TargetInput() - if target == nil { - target = e.Ctx().Our + if !isSameSideTarget(carrier, target) { + target = carrier } current := target.CurrentPet() if current == nil { return true } target.Heal( - e.CarrierInput(), + carrier, &action.SelectSkillAction{}, current.GetMaxHP().Div(divisor), ) return true } - team := e.Ctx().Our.Team + team := carrier.Team if len(team) == 0 { - team = []*input.Input{e.Ctx().Our} + team = []*input.Input{carrier} } for _, ally := range team { if ally == nil { continue } if current := ally.CurrentPet(); current != nil && current.Alive() { - ally.Heal(e.CarrierInput(), &action.SelectSkillAction{}, current.GetMaxHP().Div(divisor)) + ally.Heal(carrier, &action.SelectSkillAction{}, current.GetMaxHP().Div(divisor)) } } diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index 2e5138bd2..6769fa87a 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -22,14 +22,14 @@ func (f *FightC) processSkillAttack(attacker, defender *input.Input, skill *info skill.AttackTimeC(attacker.Prop[5]) //计算命中 defender.ExecWithOpponent(attacker, func(effect input.Effect) bool { //计算闪避,然后修改对方命中),同时相当于计算属性无效这种 - effect.Ctx().SkillEntity = skill + f.setEffectSkillContext(effect, skill, defender) effect.SkillHit_ex() return true }) attacker.ExecWithOpponent(defender, func(effect input.Effect) bool { //计算变威力 - effect.Ctx().SkillEntity = skill + f.setEffectSkillContext(effect, skill, defender) effect.SkillHit() //相当于先调整基础命中,不光调整命中,这里还能调整技能属性,暴击率 return true }) @@ -45,7 +45,7 @@ func (f *FightC) processSkillAttack(attacker, defender *input.Input, skill *info originalPetInfo[0], originalPetInfo[1] = attackerPet.Info, defenderPet.Info attacker.ExecWithOpponent(defender, func(effect input.Effect) bool { //计算变威力 - effect.Ctx().SkillEntity = skill + f.setEffectSkillContext(effect, skill, defender) effect.CalculatePre() //相当于先调整基础命中,不光调整命中,这里还能调整技能属性,暴击率 return true }) @@ -94,7 +94,7 @@ func (f *FightC) processSkillAttack(attacker, defender *input.Input, skill *info // 扣减防御方血量 attacker.ExecWithOpponent(defender, func(effect input.Effect) bool { - effect.Ctx().SkillEntity = skill + f.setEffectSkillContext(effect, skill, defender) effect.OnSkill() //调用伤害计算 return true }) @@ -135,6 +135,47 @@ func (f *FightC) getSkillParticipants(skillAction *action.SelectSkillAction) (*i return f.GetInputByAction(skillAction, false), f.GetInputByAction(skillAction, true) } +// setEffectSkillContext 统一设置技能阶段 effect 上下文。 +// 规则: +// 1) Our/Opp 由 ExecWithOpponent 负责写入(carrier / 对位)。 +// 2) Target 统一表示“本次动作被选中的目标位”,在攻防双方 hook 中保持一致。 +func (f *FightC) setEffectSkillContext(effect input.Effect, skill *info.SkillEntity, target *input.Input) { + if effect == nil { + return + } + ctx := effect.Ctx() + ctx.SkillEntity = skill + if target != nil { + ctx.Target = target + } +} + +func (f *FightC) setEffectTarget(effect input.Effect, target *input.Input) { + if effect == nil || target == nil { + return + } + effect.Ctx().Target = target +} + +// plannedOpponentForCarrier 为旧 effect 提供“当前动作对应目标”上下文: +// 1) 若 carrier 是本回合出手方,返回其动作目标。 +// 2) 若无匹配动作,返回 nil,交给 Input 默认 OppTeam 回退。 +func (f *FightC) plannedOpponentForCarrier(carrier *input.Input, acts ...*action.SelectSkillAction) *input.Input { + if carrier == nil { + return nil + } + for _, act := range acts { + if act == nil { + continue + } + attacker, defender := f.getSkillParticipants(act) + if attacker == carrier { + return defender + } + } + return nil +} + func (f *FightC) collectAttackValues(inputs []*input.Input) []model.AttackValue { values := make([]model.AttackValue, 0, len(inputs)) for actorIndex, fighter := range inputs { @@ -172,7 +213,9 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) ff.EffectCache = make([]input.Effect, 0) //先把上一回合数据清空,但是应该把本身延续类效果集成过来 ff.EffectLost = make([]input.Effect, 0) - ff.Exec(func(effect input.Effect) bool { //回合开始前 + opponent := f.plannedOpponentForCarrier(ff, firstAttack, secondAttack) + ff.ExecWithOpponent(opponent, func(effect input.Effect) bool { //回合开始前 + f.setEffectTarget(effect, opponent) effect.TurnStart(firstAttack, secondAttack) return true }) @@ -187,7 +230,9 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) attackerInput.Parseskill(skillAction) } f.Broadcast(func(fighter *input.Input) { - fighter.Exec(func(effect input.Effect) bool { //回合开始前 + opponent := f.plannedOpponentForCarrier(fighter, firstAttack, secondAttack) + fighter.ExecWithOpponent(opponent, func(effect input.Effect) bool { //回合开始前 + f.setEffectTarget(effect, opponent) effect.ComparePre(firstAttack, secondAttack) //先结算技能的优先级 return true }) @@ -262,11 +307,11 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) currentSkill = originalSkill defender.ExecWithOpponent(attacker, func(effect input.Effect) bool { //这个是能否使用技能 - effect.Ctx().SkillEntity = currentSkill + f.setEffectSkillContext(effect, currentSkill, defender) return effect.ActionStartEx(firstAttack, secondAttack) }) canUseSkill := attacker.ExecWithOpponent(defender, func(effect input.Effect) bool { //这个是能否使用技能 - effect.Ctx().SkillEntity = currentSkill + f.setEffectSkillContext(effect, currentSkill, defender) return effect.ActionStart(firstAttack, secondAttack) }) @@ -302,7 +347,7 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) if ok { usecount := 1 attacker.ExecWithOpponent(defender, func(effect input.Effect) bool { //技能使用后的我方效果 - effect.Ctx().SkillEntity = currentSkill + f.setEffectSkillContext(effect, currentSkill, defender) effect.HookPP(&usecount) return true }) @@ -312,7 +357,7 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) if defenderPet != nil && defenderPet.Info.Hp > 0 { //技能使用后 defender.ExecWithOpponent(attacker, func(effect input.Effect) bool { //技能使用后的我方效果 - effect.Ctx().SkillEntity = currentSkill + f.setEffectSkillContext(effect, currentSkill, defender) effect.Skill_Use_ex() return true }) @@ -321,20 +366,20 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) if attackerPet != nil && attackerPet.Info.Hp > 0 { //技能使用后 attacker.ExecWithOpponent(defender, func(effect input.Effect) bool { //技能使用后的我方效果 - effect.Ctx().SkillEntity = currentSkill + f.setEffectSkillContext(effect, currentSkill, defender) effect.Skill_Use() return true }) } //技能使用后 defender.ExecWithOpponent(attacker, func(effect input.Effect) bool { //技能使用后的我方效果 - effect.Ctx().SkillEntity = currentSkill + f.setEffectSkillContext(effect, currentSkill, defender) effect.Action_end_ex() return true }) //技能使用后 attacker.ExecWithOpponent(defender, func(effect input.Effect) bool { //技能使用后的我方效果 - effect.Ctx().SkillEntity = currentSkill + f.setEffectSkillContext(effect, currentSkill, defender) effect.Action_end() return true }) diff --git a/logic/service/fight/input.go b/logic/service/fight/input.go index 3293b6bab..2887b3688 100644 --- a/logic/service/fight/input.go +++ b/logic/service/fight/input.go @@ -151,25 +151,6 @@ func (f *FightC) bindInputFightContext(inputGroups ...[]*input.Input) { } } -// linkOppInputs 仅建立“默认对手回退”关系,不参与真实目标选择。 -// 真实目标应由 action.targetIndex 决定;这里仅为旧 effect/无动作上下文链路提供默认 Opp。 -func (f *FightC) linkOppInputs() { - defaultOpp := f.selectInput(f.Opp, 0) - for _, fighter := range f.Our { - if fighter == nil { - continue - } - fighter.SetOPP(defaultOpp) - } - defaultOur := f.selectInput(f.Our, 0) - for _, fighter := range f.Opp { - if fighter == nil { - continue - } - fighter.SetOPP(defaultOur) - } -} - // linkTeamViews 建立每个输入的同阵营/对阵营视图(Team/OppTeam)。 func (f *FightC) linkTeamViews() { for _, fighter := range f.Our { @@ -263,7 +244,8 @@ func (f *FightC) setActionAttackValue(act action.BattleActionI) { return } attacker.AttackValue.ActorIndex = uint32(act.GetActorIndex()) - attacker.AttackValue.TargetIndex = uint32(act.GetTargetIndex()) + targetIndex, _ := DecodeTargetIndex(act.GetTargetIndex()) + attacker.AttackValue.TargetIndex = uint32(targetIndex) } func (f *FightC) Ownerid() uint32 { @@ -311,10 +293,11 @@ func (f *FightC) GetInputByAction(c action.BattleActionI, isOpposite bool) *inpu return f.primaryOur() } index := c.GetActorIndex() - if isOpposite { - index = c.GetTargetIndex() + if !isOpposite { + return f.getInputByUserID(c.GetPlayerID(), index, false) } - return f.getInputByUserID(c.GetPlayerID(), index, isOpposite) + targetIndex, targetIsOpposite := DecodeTargetIndex(c.GetTargetIndex()) + return f.getInputByUserID(c.GetPlayerID(), targetIndex, targetIsOpposite) } // 玩家使用技能 diff --git a/logic/service/fight/input/effect.go b/logic/service/fight/input/effect.go index 508cd1bd9..99fee5fa2 100644 --- a/logic/service/fight/input/effect.go +++ b/logic/service/fight/input/effect.go @@ -244,15 +244,39 @@ func (our *Input) AddEffect(in *Input, e Effect) Effect { // ForEachEffectBool 遍历所有 Effect,执行“无参数、返回 bool”的方法 // 参数 fn:接收单个 Effect,返回 bool(如 func(e Effect) bool { return e.OnBattleStart() }) // 返回值:所有 Effect 的方法返回值列表 +func (our *Input) defaultOpponent() *Input { + if our == nil { + return nil + } + for _, in := range our.OppTeam { + if in == nil { + continue + } + if pet := in.CurrentPet(); pet != nil && pet.Info.Hp > 0 { + return in + } + } + for _, in := range our.OppTeam { + if in != nil { + return in + } + } + return our.Opp +} + func (our *Input) Exec(fn func(Effect) bool) bool { - return our.ExecWithOpponent(our.Opp, fn) + return our.ExecWithOpponent(nil, fn) } func (our *Input) ExecWithOpponent(opponent *Input, fn func(Effect) bool) bool { + if opponent == nil { + opponent = our.defaultOpponent() + } result := true for _, value := range our.Effects { if value.Alive() { ctx := value.Ctx() + // 多战位语义:Our=当前持有效果槽位,Opp=本次结算对位/动作目标槽位。 ctx.Our = our ctx.Opp = opponent ctx.Carrier = our diff --git a/logic/service/fight/input/input.go b/logic/service/fight/input/input.go index 373515f66..1b050c94a 100644 --- a/logic/service/fight/input/input.go +++ b/logic/service/fight/input/input.go @@ -338,6 +338,9 @@ func (our *Input) Parseskill(skill *action.SelectSkillAction) { args := xmlres.EffectArgs[v] t := our.InitEffect(EffectType.Skill, v, temparg[:args]...) + + + //这里是给双方添加buff if t != nil { // t.SetArgs(our, temparg[:args]...) //设置入参,施加方永远是我方 diff --git a/logic/service/fight/new.go b/logic/service/fight/new.go index 2a21c9b45..8b58c2b4b 100644 --- a/logic/service/fight/new.go +++ b/logic/service/fight/new.go @@ -141,7 +141,6 @@ func buildFight(opts *fightBuildOptions) (*FightC, errorcode.ErrorCode) { f.bindInputControllers(f.Opp, f.OppPlayers, opts.controllerBinding) f.bindInputFightContext(f.Our, f.Opp) f.linkTeamViews() - f.linkOppInputs() f.ReadyInfo.OurInfo, f.ReadyInfo.OurPetList = initfightready(f.primaryOur()) f.ReadyInfo.OpponentInfo, f.ReadyInfo.OpponentPetList = initfightready(f.primaryOpp()) diff --git a/logic/service/fight/targeting.go b/logic/service/fight/targeting.go new file mode 100644 index 000000000..b4a1630e4 --- /dev/null +++ b/logic/service/fight/targeting.go @@ -0,0 +1,34 @@ +package fight + +// 技能目标关系(与前端可选目标范围对齐): +// 0: 对手(enemy) +// 1: 自己(self) +// 2: 队友(ally) +const ( + SkillTargetOpponent uint8 = 0 + SkillTargetSelf uint8 = 1 + SkillTargetAlly uint8 = 2 +) + +// EncodeTargetIndex 对目标下标进行编码,兼容旧 UseSkillAt(actorIndex,targetIndex) 接口: +// 1) 敌方目标:直接使用非负下标(0,1,2...) +// 2) 同侧目标(自己/队友):编码为负数 -(index+1) +func EncodeTargetIndex(targetIndex int, targetIsOpposite bool) int { + if targetIndex < 0 { + targetIndex = 0 + } + if targetIsOpposite { + return targetIndex + } + return -(targetIndex + 1) +} + +// DecodeTargetIndex 解析目标下标编码,返回: +// 1) 目标位下标 +// 2) 是否为敌方目标 +func DecodeTargetIndex(encoded int) (targetIndex int, targetIsOpposite bool) { + if encoded < 0 { + return -encoded - 1, false + } + return encoded, true +}