diff --git a/docs/effect-unimplemented-tasks/task-194-effects-1583-1587.md b/docs/effect-unimplemented-tasks/task-194-effects-1583-1587.md deleted file mode 100644 index d25746614..000000000 --- a/docs/effect-unimplemented-tasks/task-194-effects-1583-1587.md +++ /dev/null @@ -1,36 +0,0 @@ -# Task 194: Effects 1583-1587 - -## 目标 - -- 补齐以下 5 个(或最后一组不足 5 个)当前判定未实现的 skill effect。 -- 实现位置优先放在 `logic/service/fight/effect/`。 -- 如 effect 需要展示说明,同步更新 `logic/service/fight/effect/effect_info_map.go`。 -- 完成后至少执行:`cd /workspace/logic && go test ./service/fight/effect`。 - -## Effect 列表 - -### Effect 1583 -- `argsNum`: `1` -- `info`: `后出手时附加当前战斗回合数×{0}的固定伤害` - -### Effect 1584 -- `argsNum`: `1` -- `info`: `出手时若自身未满体力则下回合自身受到的攻击伤害减少{0}%` - -### Effect 1585 -- `argsNum`: `2` -- `info`: `{0}回合内若对手使用攻击技能则自身下{1}回合必定暴击` - -### Effect 1586 -- `argsNum`: `4` -- `info`: `{0}%令对手{1},若对手已处于{2}状态则将此状态刷新至{3}回合` -- `param`: `1,1,1|1,2,2` - -### Effect 1587 -- `argsNum`: `1` -- `info`: `当回合击败对手则下回合自身攻击先制+{0}` - -## 备注 - -- 该清单按当前仓库静态注册结果生成;如果某个 effect 实际通过其他模块或运行时路径实现,需要先复核后再落代码。 -- 对 `201`、`445` 这类占位 effect,优先补核心逻辑或补充明确的不可实现说明。 diff --git a/docs/effect-unimplemented-tasks/task-195-effects-1588-1592.md b/docs/effect-unimplemented-tasks/task-195-effects-1588-1592.md deleted file mode 100644 index 806e3334d..000000000 --- a/docs/effect-unimplemented-tasks/task-195-effects-1588-1592.md +++ /dev/null @@ -1,35 +0,0 @@ -# Task 195: Effects 1588-1592 - -## 目标 - -- 补齐以下 5 个(或最后一组不足 5 个)当前判定未实现的 skill effect。 -- 实现位置优先放在 `logic/service/fight/effect/`。 -- 如 effect 需要展示说明,同步更新 `logic/service/fight/effect/effect_info_map.go`。 -- 完成后至少执行:`cd /workspace/logic && go test ./service/fight/effect`。 - -## Effect 列表 - -### Effect 1588 -- `argsNum`: `1` -- `info`: `自身体力低于对手则为自身附加{0}点护盾且附加等量的固定伤害` - -### Effect 1589 -- `argsNum`: `1` -- `info`: `若对手处于异常状态则令对手随机{0}项技能PP值归零` - -### Effect 1590 -- `argsNum`: `0` -- `info`: `自身体力低于对手时100%的概率打出致命一击` - -### Effect 1591 -- `argsNum`: `2` -- `info`: `{0}%秒杀对手,未触发则自身全属性+{1}` - -### Effect 1592 -- `argsNum`: `1` -- `info`: `风之力量觉醒,使自身下{0}次攻击获得蚀骨之风效果` - -## 备注 - -- 该清单按当前仓库静态注册结果生成;如果某个 effect 实际通过其他模块或运行时路径实现,需要先复核后再落代码。 -- 对 `201`、`445` 这类占位 effect,优先补核心逻辑或补充明确的不可实现说明。 diff --git a/docs/effect-unimplemented-tasks/task-196-effects-1593-1597.md b/docs/effect-unimplemented-tasks/task-196-effects-1593-1597.md deleted file mode 100644 index 1aa6f49d9..000000000 --- a/docs/effect-unimplemented-tasks/task-196-effects-1593-1597.md +++ /dev/null @@ -1,35 +0,0 @@ -# Task 196: Effects 1593-1597 - -## 目标 - -- 补齐以下 5 个(或最后一组不足 5 个)当前判定未实现的 skill effect。 -- 实现位置优先放在 `logic/service/fight/effect/`。 -- 如 effect 需要展示说明,同步更新 `logic/service/fight/effect/effect_info_map.go`。 -- 完成后至少执行:`cd /workspace/logic && go test ./service/fight/effect`。 - -## Effect 列表 - -### Effect 1593 -- `argsNum`: `3` -- `info`: `1回合做{0}-{1}次攻击,自身体力低于对手时连击上限为{2}` - -### Effect 1594 -- `argsNum`: `5` -- `info`: `{0}回合内受到攻击则{1}%使自身全属性+{2},未触发则{3}%使对手全属性-{4}` - -### Effect 1595 -- `argsNum`: `0` -- `info`: `若对手为咸咸粽则100%打出致命一击` - -### Effect 1596 -- `argsNum`: `0` -- `info`: `若对手为甜甜粽则100%打出致命一击` - -### Effect 1597 -- `argsNum`: `0` -- `info`: `命中后50%令对手睡眠,若对手为咸咸粽则概率翻倍` - -## 备注 - -- 该清单按当前仓库静态注册结果生成;如果某个 effect 实际通过其他模块或运行时路径实现,需要先复核后再落代码。 -- 对 `201`、`445` 这类占位 effect,优先补核心逻辑或补充明确的不可实现说明。 diff --git a/docs/effect-unimplemented-tasks/task-197-effects-1598-1602.md b/docs/effect-unimplemented-tasks/task-197-effects-1598-1602.md deleted file mode 100644 index 020aa7f5b..000000000 --- a/docs/effect-unimplemented-tasks/task-197-effects-1598-1602.md +++ /dev/null @@ -1,37 +0,0 @@ -# Task 197: Effects 1598-1602 - -## 目标 - -- 补齐以下 5 个(或最后一组不足 5 个)当前判定未实现的 skill effect。 -- 实现位置优先放在 `logic/service/fight/effect/`。 -- 如 effect 需要展示说明,同步更新 `logic/service/fight/effect/effect_info_map.go`。 -- 完成后至少执行:`cd /workspace/logic && go test ./service/fight/effect`。 - -## Effect 列表 - -### Effect 1598 -- `argsNum`: `0` -- `info`: `命中后50%令对手害怕,若对手为甜甜粽则概率翻倍` - -### Effect 1599 -- `argsNum`: `5` -- `info`: `{0}回合内受到攻击则{1}%令对手{2},未触发则{3}%令对手{4}` -- `param`: `1,2,2|1,4,4` - -### Effect 1600 -- `argsNum`: `6` -- `info`: `命中后{0}%令对手{1},未触发则自身下{2}回合攻击必定致命一击,触发后{3}回合内对手主动切换精灵则登场精灵{4}%进入{5}状态` -- `param`: `1,1,1|1,5,5` - -### Effect 1601 -- `argsNum`: `1` -- `info`: `命中后附加自身最大体力{0}%的百分比伤害,若打出的攻击伤害为奇数则额外恢复等量体力值` - -### Effect 1602 -- `argsNum`: `3` -- `info`: `{0}回合内每回合使用技能恢复自身最大体力的1/{1},恢复体力时若自身为满体力则恢复己方所有不在场精灵{2}点体力` - -## 备注 - -- 该清单按当前仓库静态注册结果生成;如果某个 effect 实际通过其他模块或运行时路径实现,需要先复核后再落代码。 -- 对 `201`、`445` 这类占位 effect,优先补核心逻辑或补充明确的不可实现说明。 diff --git a/docs/effect-unimplemented-tasks/task-198-effects-1603-1608.md b/docs/effect-unimplemented-tasks/task-198-effects-1603-1608.md deleted file mode 100644 index 4f4fdeefe..000000000 --- a/docs/effect-unimplemented-tasks/task-198-effects-1603-1608.md +++ /dev/null @@ -1,35 +0,0 @@ -# Task 198: Effects 1603-1608 - -## 目标 - -- 补齐以下 5 个(或最后一组不足 5 个)当前判定未实现的 skill effect。 -- 实现位置优先放在 `logic/service/fight/effect/`。 -- 如 effect 需要展示说明,同步更新 `logic/service/fight/effect/effect_info_map.go`。 -- 完成后至少执行:`cd /workspace/logic && go test ./service/fight/effect`。 - -## Effect 列表 - -### Effect 1603 -- `argsNum`: `2` -- `info`: `{0}%降低对手所有PP值{1}点` - -### Effect 1604 -- `argsNum`: `2` -- `info`: `{0}%恢复自身所有PP值{1}点` - -### Effect 1606 -- `argsNum`: `1` -- `info`: `反转自身能力下降状态,反转成功则吸取对手最大体力的1/{0}` - -### Effect 1607 -- `argsNum`: `1` -- `info`: `当回合未击败对手则附加自身最大体力1/{0}的百分比伤害` - -### Effect 1608 -- `argsNum`: `0` -- `info`: `召唤自己的伙伴进行5-10次攻击,布布鸟发起时可额外令自身下回合所有技能先制+3` - -## 备注 - -- 该清单按当前仓库静态注册结果生成;如果某个 effect 实际通过其他模块或运行时路径实现,需要先复核后再落代码。 -- 对 `201`、`445` 这类占位 effect,优先补核心逻辑或补充明确的不可实现说明。 diff --git a/logic/service/fight/action.go b/logic/service/fight/action.go index bf4f906a8..968820d23 100644 --- a/logic/service/fight/action.go +++ b/logic/service/fight/action.go @@ -141,13 +141,21 @@ func (f *FightC) Over(c common.PlayerI, res model.EnumBattleOverReason) { // 切换精灵 主动和被驱逐 func (f *FightC) ChangePet(c common.PlayerI, id uint32) { + f.ChangePetAt(c, id, 0) +} + +func (f *FightC) ChangePetAt(c common.PlayerI, id uint32, actorIndex int) { if f.closefight { return } - ii, _ := f.GetInputByPlayer(c, false).GetPet(id) + self := f.getInputByUserID(c.GetInfo().UserID, actorIndex, false) + if self == nil { + return + } + ii, _ := self.GetPet(id) if ii == nil { //无法切换不允许切换的精灵 return @@ -157,12 +165,17 @@ func (f *FightC) ChangePet(c common.PlayerI, id uint32) { BaseAction: action.NewBaseAction(c.GetInfo().UserID), Cid: id, } + ret.ActorIndex = actorIndex f.submitAction(ret) } // 玩家使用技能 func (f *FightC) UseSkill(c common.PlayerI, id uint32) { + f.UseSkillAt(c, id, 0, 0) +} + +func (f *FightC) UseSkillAt(c common.PlayerI, id uint32, actorIndex, targetIndex int) { if f.closefight { return @@ -170,19 +183,26 @@ func (f *FightC) UseSkill(c common.PlayerI, id uint32) { ret := &action.SelectSkillAction{ BaseAction: action.NewBaseAction(c.GetInfo().UserID), } + ret.ActorIndex = actorIndex + ret.TargetIndex = targetIndex - if f.GetInputByPlayer(c, false).CurrentPet == nil { + self := f.getInputByUserID(c.GetInfo().UserID, actorIndex, false) + if self == nil { return } - if f.GetInputByPlayer(c, false).CurrentPet.Info.Hp <= 0 { + currentPet := self.PrimaryCurrentPet() + if currentPet == nil { return } - // t, ok := f.GetInputByPlayer(c, false).CurrentPet.Skills[id] + if currentPet.Info.Hp <= 0 { + return + } + // t, ok := f.GetInputByPlayer(c, false).CurrentPet[0].Skills[id] // if ok { // ret.SkillEntity = t // } - for _, v := range f.GetInputByPlayer(c, false).CurrentPet.Skills { + for _, v := range currentPet.Skills { if v.XML.ID == int(id) { ret.SkillEntity = v @@ -204,6 +224,10 @@ func (f *FightC) Capture(c common.PlayerI, id uint32) { } func (f *FightC) UseItem(c common.PlayerI, cacthid, itemid uint32) { + f.UseItemAt(c, cacthid, itemid, 0, 0) +} + +func (f *FightC) UseItemAt(c common.PlayerI, cacthid, itemid uint32, actorIndex, targetIndex int) { if f.closefight { return @@ -212,7 +236,10 @@ func (f *FightC) UseItem(c common.PlayerI, cacthid, itemid uint32) { go f.UseSkill(c, 0) return } - f.submitAction(&action.UseItemAction{BaseAction: action.NewBaseAction(c.GetInfo().UserID), ItemID: itemid, CacthTime: cacthid}) + actionInfo := &action.UseItemAction{BaseAction: action.NewBaseAction(c.GetInfo().UserID), ItemID: itemid, CacthTime: cacthid} + actionInfo.ActorIndex = actorIndex + actionInfo.TargetIndex = targetIndex + f.submitAction(actionInfo) } // ReadyFight 处理玩家战斗准备逻辑,当满足条件时启动战斗循环 diff --git a/logic/service/fight/action/BattleAction.go b/logic/service/fight/action/BattleAction.go index 3ba6f0e09..435bd480a 100644 --- a/logic/service/fight/action/BattleAction.go +++ b/logic/service/fight/action/BattleAction.go @@ -24,6 +24,8 @@ var PlayerOperations = enum.New[struct { // BattleActionI 战斗动作接口 type BattleActionI interface { GetPlayerID() uint32 + GetActorIndex() int + GetTargetIndex() int GetRound() uint32 SetRound(uint32) Priority() int // 优先级 @@ -43,8 +45,10 @@ func (*SelectSkillAction) Priority() int { } type BaseAction struct { - PlayerID uint32 // 玩家ID - Round uint32 // 所属回合 + PlayerID uint32 // 玩家ID + ActorIndex int // 当前由该玩家操作的我方战斗位,下标默认0 + TargetIndex int // 当前动作选中的敌方战斗位,下标默认0 + Round uint32 // 所属回合 } func NewBaseAction(t uint32) BaseAction { @@ -56,7 +60,15 @@ func NewBaseAction(t uint32) BaseAction { func (a *BaseAction) GetPlayerID() uint32 { return a.PlayerID // fmt.Printf("玩家[%d]主动切换宠物:从%s切换到%s(原因:%s)\n", - // // a.PlayerID, a.CurrentPet.Name, a.TargetPet.Name, a.SwitchReason) + // // a.PlayerID, a.CurrentPet[0].Name, a.TargetPet.Name, a.SwitchReason) +} + +func (a *BaseAction) GetActorIndex() int { + return a.ActorIndex +} + +func (a *BaseAction) GetTargetIndex() int { + return a.TargetIndex } func (a *BaseAction) GetRound() uint32 { diff --git a/logic/service/fight/boss/NewSeIdx_1.go b/logic/service/fight/boss/NewSeIdx_1.go index 73a934f30..3ce388025 100644 --- a/logic/service/fight/boss/NewSeIdx_1.go +++ b/logic/service/fight/boss/NewSeIdx_1.go @@ -24,10 +24,10 @@ func (e *NewSel0) IsOwner() bool { if e.Ctx().Our == nil { return false } - if e.Ctx().Our.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil { return false } - return e.ID().GetCatchTime() == e.Ctx().Our.CurrentPet.Info.CatchTime + return e.ID().GetCatchTime() == e.Ctx().Our.CurrentPet[0].Info.CatchTime } // 免疫"能力(battle_lv)下降" diff --git a/logic/service/fight/boss/NewSeIdx_10.go b/logic/service/fight/boss/NewSeIdx_10.go index 9056163ea..a3a967bec 100644 --- a/logic/service/fight/boss/NewSeIdx_10.go +++ b/logic/service/fight/boss/NewSeIdx_10.go @@ -11,8 +11,9 @@ type NewSel10 struct { NewSel0 can bool } + func (e *NewSel10) SwitchOut(in *input.Input) bool { - e.can=false + e.can = false return true } func (e *NewSel10) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { @@ -24,7 +25,7 @@ func (e *NewSel10) TurnStart(fattack *action.SelectSkillAction, sattack *action. } func (e *NewSel10) OnSkill() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_11.go b/logic/service/fight/boss/NewSeIdx_11.go index baa839c6c..38851c748 100644 --- a/logic/service/fight/boss/NewSeIdx_11.go +++ b/logic/service/fight/boss/NewSeIdx_11.go @@ -13,7 +13,7 @@ type NewSel11 struct { func (e *NewSel11) Skill_Use_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_112.go b/logic/service/fight/boss/NewSeIdx_112.go index fef2ad868..91258c8ae 100644 --- a/logic/service/fight/boss/NewSeIdx_112.go +++ b/logic/service/fight/boss/NewSeIdx_112.go @@ -14,8 +14,8 @@ type NewSel112 struct { func (e *NewSel112) DamageDivEx(t *info.DamageZone) bool { - // fmt.Println(e.ID().GetCatchTime(), e.Ctx().Our.CurrentPet.Info.CatchTime) - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + // fmt.Println(e.ID().GetCatchTime(), e.Ctx().Our.CurrentPet[0].Info.CatchTime) + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // 2. 技能为空或非物理攻击,不触发 diff --git a/logic/service/fight/boss/NewSeIdx_113.go b/logic/service/fight/boss/NewSeIdx_113.go index a4f92977a..5d67c36c9 100644 --- a/logic/service/fight/boss/NewSeIdx_113.go +++ b/logic/service/fight/boss/NewSeIdx_113.go @@ -15,7 +15,7 @@ type NewSel113 struct { func (e *NewSel113) DamageLockEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if t.Type != info.DamageType.Red { diff --git a/logic/service/fight/boss/NewSeIdx_114.go b/logic/service/fight/boss/NewSeIdx_114.go index 3d766e668..52a1b1fdf 100644 --- a/logic/service/fight/boss/NewSeIdx_114.go +++ b/logic/service/fight/boss/NewSeIdx_114.go @@ -13,7 +13,7 @@ type NewSel114 struct { func (e *NewSel114) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { // TODO: 实现若遇到天敌, 则战斗开始时连续害怕 n 回合;(a1: n)的核心逻辑 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } diff --git a/logic/service/fight/boss/NewSeIdx_116.go b/logic/service/fight/boss/NewSeIdx_116.go index 17020e740..798062f76 100644 --- a/logic/service/fight/boss/NewSeIdx_116.go +++ b/logic/service/fight/boss/NewSeIdx_116.go @@ -12,7 +12,7 @@ type NewSel116 struct { } func (e *NewSel116) Skill_Use() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_12.go b/logic/service/fight/boss/NewSeIdx_12.go index 465f6cb8a..2662b974b 100644 --- a/logic/service/fight/boss/NewSeIdx_12.go +++ b/logic/service/fight/boss/NewSeIdx_12.go @@ -14,8 +14,8 @@ type NewSel12 struct { func (e *NewSel12) DamageDivEx(t *info.DamageZone) bool { - // fmt.Println(e.ID().GetCatchTime(), e.Ctx().Our.CurrentPet.Info.CatchTime) - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + // fmt.Println(e.ID().GetCatchTime(), e.Ctx().Our.CurrentPet[0].Info.CatchTime) + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // 2. 技能为空或非物理攻击,不触发 diff --git a/logic/service/fight/boss/NewSeIdx_126.go b/logic/service/fight/boss/NewSeIdx_126.go index 571854256..43b2b6e4d 100644 --- a/logic/service/fight/boss/NewSeIdx_126.go +++ b/logic/service/fight/boss/NewSeIdx_126.go @@ -13,12 +13,12 @@ type NewSel126 struct { } func (e *NewSel126) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { - p := e.Ctx().Our.CurrentPet.Info.Prop[int(e.Args()[0].IntPart())] - e.Ctx().Our.CurrentPet.Info.Prop[int(e.Args()[0].IntPart())] += uint32(e.Args()[1].Div(alpacadecimal.NewFromInt(100).Mul(alpacadecimal.NewFromInt(int64(p)))).IntPart()) + p := e.Ctx().Our.CurrentPet[0].Info.Prop[int(e.Args()[0].IntPart())] + e.Ctx().Our.CurrentPet[0].Info.Prop[int(e.Args()[0].IntPart())] += uint32(e.Args()[1].Div(alpacadecimal.NewFromInt(100).Mul(alpacadecimal.NewFromInt(int64(p)))).IntPart()) } func (e *NewSel126) TurnEnd() { - p := e.Ctx().Our.CurrentPet.Info.Prop[int(e.Args()[0].IntPart())] - e.Ctx().Our.CurrentPet.Info.Prop[int(e.Args()[0].IntPart())] -= uint32(e.Args()[1].Div(alpacadecimal.NewFromInt(100).Mul(alpacadecimal.NewFromInt(int64(p)))).IntPart()) + p := e.Ctx().Our.CurrentPet[0].Info.Prop[int(e.Args()[0].IntPart())] + e.Ctx().Our.CurrentPet[0].Info.Prop[int(e.Args()[0].IntPart())] -= uint32(e.Args()[1].Div(alpacadecimal.NewFromInt(100).Mul(alpacadecimal.NewFromInt(int64(p)))).IntPart()) } func init() { input.InitEffect(input.EffectType.NewSel, 126, &NewSel126{}) diff --git a/logic/service/fight/boss/NewSeIdx_13.go b/logic/service/fight/boss/NewSeIdx_13.go index 2a1daa679..f34565061 100644 --- a/logic/service/fight/boss/NewSeIdx_13.go +++ b/logic/service/fight/boss/NewSeIdx_13.go @@ -12,7 +12,7 @@ type NewSel13 struct { } func (e *NewSel13) HookAction() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } r := e.Ctx().Our.FightC.GetOverInfo() diff --git a/logic/service/fight/boss/NewSeIdx_14.go b/logic/service/fight/boss/NewSeIdx_14.go index 1bd47675b..07e995784 100644 --- a/logic/service/fight/boss/NewSeIdx_14.go +++ b/logic/service/fight/boss/NewSeIdx_14.go @@ -15,7 +15,7 @@ type NewSel14 struct { func (e *NewSel14) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { // TODO: 实现若遇到天敌, 则战斗开始时连续害怕 n 回合;(a1: n)的核心逻辑 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime || !e.ISNaturalEnemy() { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime || !e.ISNaturalEnemy() { return } diff --git a/logic/service/fight/boss/NewSeIdx_144.go b/logic/service/fight/boss/NewSeIdx_144.go index a4be545df..d8f88c3cd 100644 --- a/logic/service/fight/boss/NewSeIdx_144.go +++ b/logic/service/fight/boss/NewSeIdx_144.go @@ -12,18 +12,18 @@ type NewSel144 struct { } func (e *NewSel144) Action_end_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } - if e.Ctx().Our.CurrentPet.Info.Hp == 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp == 0 { if e.count >= int(e.Args()[0].IntPart()) { return true } e.count++ - e.Ctx().Our.CurrentPet.Info.Hp = e.Ctx().Our.CurrentPet.Info.MaxHp + e.Ctx().Our.CurrentPet[0].Info.Hp = e.Ctx().Our.CurrentPet[0].Info.MaxHp e.Ctx().Our.HealPP(-1) for i := 0; i < 6; i++ { e.Ctx().Our.SetProp(e.Ctx().Our, int8(i), 6) diff --git a/logic/service/fight/boss/NewSeIdx_148.go b/logic/service/fight/boss/NewSeIdx_148.go index 11c41e298..d3a0f85a1 100644 --- a/logic/service/fight/boss/NewSeIdx_148.go +++ b/logic/service/fight/boss/NewSeIdx_148.go @@ -15,7 +15,7 @@ type NewSel148 struct { func (e *NewSel148) DamageDivEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_15.go b/logic/service/fight/boss/NewSeIdx_15.go index 1efd47fe4..4486a4de1 100644 --- a/logic/service/fight/boss/NewSeIdx_15.go +++ b/logic/service/fight/boss/NewSeIdx_15.go @@ -19,12 +19,12 @@ type NewSel15 struct { func (e *NewSel15) Damage_Mul(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } - evs := gconv.Uint32s(strings.Split(xmlres.PetMAP[int(e.Ctx().Our.CurrentPet.ID)].NaturalEnemy, " ")) + evs := gconv.Uint32s(strings.Split(xmlres.PetMAP[int(e.Ctx().Our.CurrentPet[0].ID)].NaturalEnemy, " ")) _, ok := lo.Find(evs, func(t uint32) bool { - return t == uint32(e.Ctx().Opp.CurrentPet.ID) + return t == uint32(e.Ctx().Opp.CurrentPet[0].ID) }) if !ok { return true diff --git a/logic/service/fight/boss/NewSeIdx_16.go b/logic/service/fight/boss/NewSeIdx_16.go index 2b3b4be20..6c62dfaa5 100644 --- a/logic/service/fight/boss/NewSeIdx_16.go +++ b/logic/service/fight/boss/NewSeIdx_16.go @@ -16,23 +16,23 @@ type NewSel16 struct { func (e *NewSel16) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { - // fmt.Println(e.ID().GetCatchTime(), e.Ctx().Our.CurrentPet.Info.CatchTime) - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + // fmt.Println(e.ID().GetCatchTime(), e.Ctx().Our.CurrentPet[0].Info.CatchTime) + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() if e.curhp.IntPart() == 0 { e.curhp = maxHP } //如果当前被扣除的血量少于当前血,说明我方回血 - if e.curhp.Cmp(e.Ctx().Our.CurrentPet.GetHP()) == -1 { - e.curhp = e.Ctx().Our.CurrentPet.GetHP() + if e.curhp.Cmp(e.Ctx().Our.CurrentPet[0].GetHP()) == -1 { + e.curhp = e.Ctx().Our.CurrentPet[0].GetHP() return } - if e.curhp.Sub(e.Ctx().Our.CurrentPet.GetHP()).Cmp(maxHP.Div(alpacadecimal.NewFromInt(8))) == 1 { - e.curhp = e.Ctx().Our.CurrentPet.GetHP() + if e.curhp.Sub(e.Ctx().Our.CurrentPet[0].GetHP()).Cmp(maxHP.Div(alpacadecimal.NewFromInt(8))) == 1 { + e.curhp = e.Ctx().Our.CurrentPet[0].GetHP() e.Ctx().Our.SetProp(e.Ctx().Our, int8(e.Args()[0].IntPart()), 1) } diff --git a/logic/service/fight/boss/NewSeIdx_17.go b/logic/service/fight/boss/NewSeIdx_17.go index cf83834df..f3a8b69b3 100644 --- a/logic/service/fight/boss/NewSeIdx_17.go +++ b/logic/service/fight/boss/NewSeIdx_17.go @@ -13,7 +13,7 @@ type NewSel17 struct { } func (e *NewSel17) ActionStart(a, b *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } //fmt.Println(e.Ctx().SkillEntity) @@ -24,7 +24,7 @@ func (e *NewSel17) ActionStart(a, b *action.SelectSkillAction) bool { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Args()[0]) == -1 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Args()[0]) == -1 { e.Ctx().SkillEntity.XML.CritRate = 16 } diff --git a/logic/service/fight/boss/NewSeIdx_18.go b/logic/service/fight/boss/NewSeIdx_18.go index 37fd6dc52..3f4dfc3ea 100644 --- a/logic/service/fight/boss/NewSeIdx_18.go +++ b/logic/service/fight/boss/NewSeIdx_18.go @@ -13,7 +13,7 @@ type NewSel18 struct { } func (e *NewSel18) ActionStart(a, b *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } //fmt.Println(e.Ctx().SkillEntity) diff --git a/logic/service/fight/boss/NewSeIdx_183.go b/logic/service/fight/boss/NewSeIdx_183.go index 9644dd313..436e3f912 100644 --- a/logic/service/fight/boss/NewSeIdx_183.go +++ b/logic/service/fight/boss/NewSeIdx_183.go @@ -11,7 +11,7 @@ type NewSel183 struct { func (e *NewSel183) Skill_Use() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -19,7 +19,7 @@ func (e *NewSel183) Skill_Use() bool { if e.Ctx().Our.SumDamage.Cmp(e.Args()[0]) > 0 { //这里不是通过技能回血的 - e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet[0].GetMaxHP()) } return true diff --git a/logic/service/fight/boss/NewSeIdx_184.go b/logic/service/fight/boss/NewSeIdx_184.go index 8a371cbcc..952f37d41 100644 --- a/logic/service/fight/boss/NewSeIdx_184.go +++ b/logic/service/fight/boss/NewSeIdx_184.go @@ -13,7 +13,7 @@ type NewSel184 struct { } func (e *NewSel184) DamageDivEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_19.go b/logic/service/fight/boss/NewSeIdx_19.go index 9c6fd5900..dab9adf2c 100644 --- a/logic/service/fight/boss/NewSeIdx_19.go +++ b/logic/service/fight/boss/NewSeIdx_19.go @@ -14,7 +14,7 @@ type NewSel19 struct { func (e *NewSel19) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_20.go b/logic/service/fight/boss/NewSeIdx_20.go index 7a39bfb9f..dd9858a1c 100644 --- a/logic/service/fight/boss/NewSeIdx_20.go +++ b/logic/service/fight/boss/NewSeIdx_20.go @@ -17,7 +17,7 @@ type NewSel20 struct { func (e *NewSel20) DamageLockEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_21.go b/logic/service/fight/boss/NewSeIdx_21.go index a6a5d03dc..835760d2e 100644 --- a/logic/service/fight/boss/NewSeIdx_21.go +++ b/logic/service/fight/boss/NewSeIdx_21.go @@ -16,7 +16,7 @@ type NewSel21 struct { func (e *NewSel21) DamageLockEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { @@ -29,7 +29,7 @@ func (e *NewSel21) DamageLockEx(t *info.DamageZone) bool { return sid == e.Ctx().SkillEntity.XML.ID }) if !ok { - t.Damage = alpacadecimal.Min(t.Damage, e.Ctx().Opp.CurrentPet.GetHP().Sub(alpacadecimal.NewFromInt(1))) + t.Damage = alpacadecimal.Min(t.Damage, e.Ctx().Opp.CurrentPet[0].GetHP().Sub(alpacadecimal.NewFromInt(1))) } return true diff --git a/logic/service/fight/boss/NewSeIdx_22.go b/logic/service/fight/boss/NewSeIdx_22.go index 3727c5ae0..e9ebc6853 100644 --- a/logic/service/fight/boss/NewSeIdx_22.go +++ b/logic/service/fight/boss/NewSeIdx_22.go @@ -13,7 +13,7 @@ type NewSel22 struct { func (e *NewSel22) DamageDivEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if t.Type != info.DamageType.Red { diff --git a/logic/service/fight/boss/NewSeIdx_223.go b/logic/service/fight/boss/NewSeIdx_223.go index 2232fc906..a7bdf2bdb 100644 --- a/logic/service/fight/boss/NewSeIdx_223.go +++ b/logic/service/fight/boss/NewSeIdx_223.go @@ -13,11 +13,11 @@ type NewSel223 struct { } func (e *NewSel223) Skill_Use() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } - if int(e.Ctx().Opp.CurrentPet.Type) == int(e.Args()[0].IntPart()) { + if int(e.Ctx().Opp.CurrentPet[0].Type) == int(e.Args()[0].IntPart()) { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Opp.GetPetInfo().Info.MaxHp))}) diff --git a/logic/service/fight/boss/NewSeIdx_224.go b/logic/service/fight/boss/NewSeIdx_224.go index 86158827f..f8f762cfe 100644 --- a/logic/service/fight/boss/NewSeIdx_224.go +++ b/logic/service/fight/boss/NewSeIdx_224.go @@ -15,7 +15,7 @@ type NewSel224 struct { } func (e *NewSel224) Skill_Use() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // 技能为空时不处理 @@ -34,7 +34,7 @@ func (e *NewSel224) Skill_Use() bool { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, - Damage: e.Ctx().Opp.CurrentPet.GetHP().Div(alpacadecimal.NewFromInt(3)), + Damage: e.Ctx().Opp.CurrentPet[0].GetHP().Div(alpacadecimal.NewFromInt(3)), }) return true diff --git a/logic/service/fight/boss/NewSeIdx_23.go b/logic/service/fight/boss/NewSeIdx_23.go index bb94238d1..343ddf359 100644 --- a/logic/service/fight/boss/NewSeIdx_23.go +++ b/logic/service/fight/boss/NewSeIdx_23.go @@ -16,7 +16,7 @@ type NewSel23 struct { func (e *NewSel23) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -35,7 +35,7 @@ func (e *NewSel23) ComparePre(fattack *action.SelectSkillAction, sattack *action } //full32 := int(e.Args()[0])<<16 | int(e.Args()[1]) - if int(e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Args()[0])) == -1 { + if int(e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Args()[0])) == -1 { sattack.SkillEntity.XML.Priority = math.MaxInt } @@ -48,7 +48,7 @@ func (e *NewSel23) DamageFloor(t *info.DamageZone) bool { } - if int(e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Args()[0])) == -1 { + if int(e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Args()[0])) == -1 { // e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ diff --git a/logic/service/fight/boss/NewSeIdx_24.go b/logic/service/fight/boss/NewSeIdx_24.go index 73ae8e376..4bdbde9b5 100644 --- a/logic/service/fight/boss/NewSeIdx_24.go +++ b/logic/service/fight/boss/NewSeIdx_24.go @@ -14,7 +14,7 @@ type NewSel24 struct { } func (e *NewSel24) SkillHit_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // 技能为空时不处理 diff --git a/logic/service/fight/boss/NewSeIdx_25.go b/logic/service/fight/boss/NewSeIdx_25.go index e70284538..4d618ebba 100644 --- a/logic/service/fight/boss/NewSeIdx_25.go +++ b/logic/service/fight/boss/NewSeIdx_25.go @@ -13,10 +13,10 @@ type NewSel25 struct { } func (e *NewSel25) Action_end_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } - if e.Ctx().Our.CurrentPet.Info.Hp == 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp == 0 { e.Ctx().Our.Heal(e.Ctx().Our, nil, alpacadecimal.NewFromInt(1)) diff --git a/logic/service/fight/boss/NewSeIdx_26.go b/logic/service/fight/boss/NewSeIdx_26.go index 549a0fc04..1bb50682f 100644 --- a/logic/service/fight/boss/NewSeIdx_26.go +++ b/logic/service/fight/boss/NewSeIdx_26.go @@ -11,10 +11,10 @@ type NewSel26 struct { } func (e *NewSel26) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { - e.Ctx().Our.CurrentPet.Info.Prop[int(e.Args()[0].IntPart())] += uint32(e.Args()[1].IntPart()) + e.Ctx().Our.CurrentPet[0].Info.Prop[int(e.Args()[0].IntPart())] += uint32(e.Args()[1].IntPart()) } func (e *NewSel26) TurnEnd() { - e.Ctx().Our.CurrentPet.Info.Prop[int(e.Args()[0].IntPart())] -= uint32(e.Args()[1].IntPart()) + e.Ctx().Our.CurrentPet[0].Info.Prop[int(e.Args()[0].IntPart())] -= uint32(e.Args()[1].IntPart()) } func init() { input.InitEffect(input.EffectType.NewSel, 26, &NewSel26{}) diff --git a/logic/service/fight/boss/NewSeIdx_27.go b/logic/service/fight/boss/NewSeIdx_27.go index 3067d5ca1..05c9fe2a6 100644 --- a/logic/service/fight/boss/NewSeIdx_27.go +++ b/logic/service/fight/boss/NewSeIdx_27.go @@ -17,7 +17,7 @@ type NewSel27 struct { func (e *NewSel27) DamageDivEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_28.go b/logic/service/fight/boss/NewSeIdx_28.go index be952b99e..51b20d293 100644 --- a/logic/service/fight/boss/NewSeIdx_28.go +++ b/logic/service/fight/boss/NewSeIdx_28.go @@ -14,7 +14,7 @@ type NewSel28 struct { } func (e *NewSel28) DamageAdd(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_283.go b/logic/service/fight/boss/NewSeIdx_283.go index 3dfe8cc17..26a90287d 100644 --- a/logic/service/fight/boss/NewSeIdx_283.go +++ b/logic/service/fight/boss/NewSeIdx_283.go @@ -11,7 +11,7 @@ type NewSel283 struct { func (e *NewSel283) Skill_Use() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_284.go b/logic/service/fight/boss/NewSeIdx_284.go index 8c85abebc..0c80d638d 100644 --- a/logic/service/fight/boss/NewSeIdx_284.go +++ b/logic/service/fight/boss/NewSeIdx_284.go @@ -13,7 +13,7 @@ type NewSel284 struct { } func (e *NewSel284) DamageDivEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_29.go b/logic/service/fight/boss/NewSeIdx_29.go index 470412373..6a794084f 100644 --- a/logic/service/fight/boss/NewSeIdx_29.go +++ b/logic/service/fight/boss/NewSeIdx_29.go @@ -15,7 +15,7 @@ type NewSel29 struct { } func (e *NewSel29) ActionStart(a, b *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } //fmt.Println(e.Ctx().SkillEntity) diff --git a/logic/service/fight/boss/NewSeIdx_3.go b/logic/service/fight/boss/NewSeIdx_3.go index 5b06675cc..43d2bbd77 100644 --- a/logic/service/fight/boss/NewSeIdx_3.go +++ b/logic/service/fight/boss/NewSeIdx_3.go @@ -15,7 +15,7 @@ type NewSel3 struct { func (e *NewSel3) DamageDivEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_31.go b/logic/service/fight/boss/NewSeIdx_31.go index aaa0780b1..f73b4e886 100644 --- a/logic/service/fight/boss/NewSeIdx_31.go +++ b/logic/service/fight/boss/NewSeIdx_31.go @@ -11,7 +11,7 @@ type NewSel31 struct { } func (e *NewSel31) Action_end_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // 3. 概率判定(Args()[1]为触发概率) @@ -20,9 +20,9 @@ func (e *NewSel31) Action_end_ex() bool { return true } - if e.Ctx().Our.CurrentPet.Info.Hp == 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp == 0 { - e.Ctx().Our.CurrentPet.Info.Hp = uint32(e.Args()[1].IntPart()) + e.Ctx().Our.CurrentPet[0].Info.Hp = uint32(e.Args()[1].IntPart()) } diff --git a/logic/service/fight/boss/NewSeIdx_32.go b/logic/service/fight/boss/NewSeIdx_32.go index e50c06ec1..1afa0911a 100644 --- a/logic/service/fight/boss/NewSeIdx_32.go +++ b/logic/service/fight/boss/NewSeIdx_32.go @@ -14,7 +14,7 @@ type NewSel32 struct { } func (e *NewSel32) Skill_Use() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { @@ -37,7 +37,7 @@ func (e *NewSel32) Skill_Use() bool { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Opp.CurrentPet.GetHP(), + Damage: e.Ctx().Opp.CurrentPet[0].GetHP(), }) return true } diff --git a/logic/service/fight/boss/NewSeIdx_323.go b/logic/service/fight/boss/NewSeIdx_323.go index cfdf96ecb..ce7676623 100644 --- a/logic/service/fight/boss/NewSeIdx_323.go +++ b/logic/service/fight/boss/NewSeIdx_323.go @@ -13,10 +13,10 @@ type NewSel323 struct { } func (e *NewSel323) Skill_Use() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } - r := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()).Div(alpacadecimal.NewFromInt(100)) + r := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()).Div(alpacadecimal.NewFromInt(100)) dug := r.Mul(e.Args()[1]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: dug}) diff --git a/logic/service/fight/boss/NewSeIdx_33.go b/logic/service/fight/boss/NewSeIdx_33.go index f7d03207c..32d7da039 100644 --- a/logic/service/fight/boss/NewSeIdx_33.go +++ b/logic/service/fight/boss/NewSeIdx_33.go @@ -11,13 +11,13 @@ type NewSel33 struct { } func (e *NewSel33) Action_end_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // 3. 概率判定(Args()[1]为触发概率) - cmp := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(cmp) == -1 { + cmp := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(cmp) == -1 { success, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) if !success { return true diff --git a/logic/service/fight/boss/NewSeIdx_34.go b/logic/service/fight/boss/NewSeIdx_34.go index f944fb330..856f341be 100644 --- a/logic/service/fight/boss/NewSeIdx_34.go +++ b/logic/service/fight/boss/NewSeIdx_34.go @@ -12,7 +12,7 @@ type NewSel34 struct { } func (e *NewSel34) DamageDivEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // 2. 技能为空或非物理攻击,不触发 diff --git a/logic/service/fight/boss/NewSeIdx_35.go b/logic/service/fight/boss/NewSeIdx_35.go index 333b4e4ec..f501c270c 100644 --- a/logic/service/fight/boss/NewSeIdx_35.go +++ b/logic/service/fight/boss/NewSeIdx_35.go @@ -13,8 +13,8 @@ type NewSel35 struct { func (e *NewSel35) DamageDivEx(t *info.DamageZone) bool { - // fmt.Println(e.ID().GetCatchTime(), e.Ctx().Our.CurrentPet.Info.CatchTime) - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + // fmt.Println(e.ID().GetCatchTime(), e.Ctx().Our.CurrentPet[0].Info.CatchTime) + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // 2. 技能为空或非物理攻击,不触发 diff --git a/logic/service/fight/boss/NewSeIdx_36.go b/logic/service/fight/boss/NewSeIdx_36.go index 38f7b5eb6..e562dcbb8 100644 --- a/logic/service/fight/boss/NewSeIdx_36.go +++ b/logic/service/fight/boss/NewSeIdx_36.go @@ -32,7 +32,7 @@ func (e *NewSel36) DamageDivEx(t *info.DamageZone) bool { e.Ctx().Our.AttackValue.State = uint32(e.Args()[e.index].IntPart()) //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_37.go b/logic/service/fight/boss/NewSeIdx_37.go index 7e814a146..ccb196fe3 100644 --- a/logic/service/fight/boss/NewSeIdx_37.go +++ b/logic/service/fight/boss/NewSeIdx_37.go @@ -11,7 +11,7 @@ type NewSel37 struct { } func (e *NewSel37) DamageLockEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -21,7 +21,7 @@ func (e *NewSel37) DamageLockEx(t *info.DamageZone) bool { if t.Damage.IntPart() > int64(e.Args()[0].IntPart()) { - e.Ctx().Opp.CurrentPet.Info.Hp = 0 + e.Ctx().Opp.CurrentPet[0].Info.Hp = 0 } diff --git a/logic/service/fight/boss/NewSeIdx_38.go b/logic/service/fight/boss/NewSeIdx_38.go index 71c74cb79..30075ed7f 100644 --- a/logic/service/fight/boss/NewSeIdx_38.go +++ b/logic/service/fight/boss/NewSeIdx_38.go @@ -15,7 +15,7 @@ type NewSel38 struct { func (e *NewSel39) DamageAdd(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_39.go b/logic/service/fight/boss/NewSeIdx_39.go index e16bdde3b..07db3e2f9 100644 --- a/logic/service/fight/boss/NewSeIdx_39.go +++ b/logic/service/fight/boss/NewSeIdx_39.go @@ -13,7 +13,7 @@ type NewSel39 struct { } func (e *NewSel39) Damage_Mul(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -28,7 +28,7 @@ func (e *NewSel39) Damage_Mul(t *info.DamageZone) bool { func (e *NewSel39) Skill_Use_ex() bool { //fmt.Println("NewSel39", t.Damage.IntPart()) - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().Opp.SumDamage.IntPart() == 0 { diff --git a/logic/service/fight/boss/NewSeIdx_4.go b/logic/service/fight/boss/NewSeIdx_4.go index c8a959228..bedc86e31 100644 --- a/logic/service/fight/boss/NewSeIdx_4.go +++ b/logic/service/fight/boss/NewSeIdx_4.go @@ -14,7 +14,7 @@ type NewSel4 struct { func (e *NewSel4) Skill_Use_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -22,7 +22,7 @@ func (e *NewSel4) Skill_Use_ex() bool { return true } - if e.Ctx().SkillEntity.XML.Type == e.Ctx().Our.CurrentPet.Type { + if e.Ctx().SkillEntity.XML.Type == e.Ctx().Our.CurrentPet[0].Type { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Opp.SumDamage) diff --git a/logic/service/fight/boss/NewSeIdx_40.go b/logic/service/fight/boss/NewSeIdx_40.go index da5a56e50..efb229198 100644 --- a/logic/service/fight/boss/NewSeIdx_40.go +++ b/logic/service/fight/boss/NewSeIdx_40.go @@ -15,7 +15,7 @@ type NewSel40 struct { } func (e *NewSel40) DamageDivEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -30,7 +30,7 @@ func (e *NewSel40) DamageDivEx(t *info.DamageZone) bool { func (e *NewSel40) Skill_Use_ex() bool { //fmt.Println("NewSel39", t.Damage.IntPart()) - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_402.go b/logic/service/fight/boss/NewSeIdx_402.go index e5f203bf4..f83ca854e 100644 --- a/logic/service/fight/boss/NewSeIdx_402.go +++ b/logic/service/fight/boss/NewSeIdx_402.go @@ -12,7 +12,7 @@ type NewSel402 struct { func (e *NewSel402) DamageAdd(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_403.go b/logic/service/fight/boss/NewSeIdx_403.go index db0ceb1c4..339362594 100644 --- a/logic/service/fight/boss/NewSeIdx_403.go +++ b/logic/service/fight/boss/NewSeIdx_403.go @@ -15,7 +15,7 @@ type NewSel403 struct { func (e *NewSel403) Action_end_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.remainingTurns > 0 { diff --git a/logic/service/fight/boss/NewSeIdx_404.go b/logic/service/fight/boss/NewSeIdx_404.go index 2064d2fc2..7be0a3123 100644 --- a/logic/service/fight/boss/NewSeIdx_404.go +++ b/logic/service/fight/boss/NewSeIdx_404.go @@ -14,7 +14,7 @@ type NewSel404 struct { func (e *NewSel404) DamageDivEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_405.go b/logic/service/fight/boss/NewSeIdx_405.go index ef6dccbdb..a70b42231 100644 --- a/logic/service/fight/boss/NewSeIdx_405.go +++ b/logic/service/fight/boss/NewSeIdx_405.go @@ -12,7 +12,7 @@ type NewSel405 struct { func (e *NewSel405) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_406.go b/logic/service/fight/boss/NewSeIdx_406.go index 3497094bd..c6fb75a68 100644 --- a/logic/service/fight/boss/NewSeIdx_406.go +++ b/logic/service/fight/boss/NewSeIdx_406.go @@ -14,7 +14,7 @@ type NewSel406 struct { func (e *NewSel406) DamageDivEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_407.go b/logic/service/fight/boss/NewSeIdx_407.go index 5952bc411..aeb1966cf 100644 --- a/logic/service/fight/boss/NewSeIdx_407.go +++ b/logic/service/fight/boss/NewSeIdx_407.go @@ -14,7 +14,7 @@ type NewSel407 struct { func (e *NewSel407) DamageAdd(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_409.go b/logic/service/fight/boss/NewSeIdx_409.go index a84378a80..968fad704 100644 --- a/logic/service/fight/boss/NewSeIdx_409.go +++ b/logic/service/fight/boss/NewSeIdx_409.go @@ -12,7 +12,7 @@ type NewSel409 struct { func (e *NewSel409) Skill_Use_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_41.go b/logic/service/fight/boss/NewSeIdx_41.go index b4fd6f497..8594f911b 100644 --- a/logic/service/fight/boss/NewSeIdx_41.go +++ b/logic/service/fight/boss/NewSeIdx_41.go @@ -11,7 +11,7 @@ type NewSel41 struct { } func (e *NewSel41) Skill_Use_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_42.go b/logic/service/fight/boss/NewSeIdx_42.go index 33f0661e0..a5d3b8f37 100644 --- a/logic/service/fight/boss/NewSeIdx_42.go +++ b/logic/service/fight/boss/NewSeIdx_42.go @@ -13,7 +13,7 @@ type NewSel42 struct { func (e *NewSel42) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_44.go b/logic/service/fight/boss/NewSeIdx_44.go index 01845cbcd..8aa68033f 100644 --- a/logic/service/fight/boss/NewSeIdx_44.go +++ b/logic/service/fight/boss/NewSeIdx_44.go @@ -12,18 +12,18 @@ type NewSel44 struct { } func (e *NewSel44) Action_end_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } - if e.Ctx().Our.CurrentPet.Info.Hp == 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp == 0 { if e.count >= int(e.Args()[0].IntPart()) { return true } e.count++ - e.Ctx().Our.CurrentPet.Info.Hp = e.Ctx().Our.CurrentPet.Info.MaxHp + e.Ctx().Our.CurrentPet[0].Info.Hp = e.Ctx().Our.CurrentPet[0].Info.MaxHp e.Ctx().Our.HealPP(-1) } diff --git a/logic/service/fight/boss/NewSeIdx_45.go b/logic/service/fight/boss/NewSeIdx_45.go index b2ae31d95..e2350fad2 100644 --- a/logic/service/fight/boss/NewSeIdx_45.go +++ b/logic/service/fight/boss/NewSeIdx_45.go @@ -13,7 +13,7 @@ type NewSel45 struct { } func (e *NewSel45) ActionStart(a, b *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } //fmt.Println(e.Ctx().SkillEntity) diff --git a/logic/service/fight/boss/NewSeIdx_46.go b/logic/service/fight/boss/NewSeIdx_46.go index 4afd3e301..61b5da62f 100644 --- a/logic/service/fight/boss/NewSeIdx_46.go +++ b/logic/service/fight/boss/NewSeIdx_46.go @@ -17,7 +17,7 @@ type NewSel46 struct { func (e *NewSel46) Action_end_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -27,10 +27,10 @@ func (e *NewSel46) Action_end_ex() bool { // 检查是否在5回合内 if r.Round-e.lastRecoveryRound <= 5 { // 检查体力是否被降到0 - if e.Ctx().Our.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp <= 0 { // 体力降到0,保留1点体力,恢复满 e.Ctx().Our.Heal(e.Ctx().Our, nil, alpacadecimal.NewFromInt(1)) - e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet.GetMaxHP().Sub(alpacadecimal.NewFromInt(1))) + e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(alpacadecimal.NewFromInt(1))) // 更新恢复后的回合数 e.lastRecoveryRound = r.Round diff --git a/logic/service/fight/boss/NewSeIdx_48.go b/logic/service/fight/boss/NewSeIdx_48.go index 5535ae9e3..73441e321 100644 --- a/logic/service/fight/boss/NewSeIdx_48.go +++ b/logic/service/fight/boss/NewSeIdx_48.go @@ -14,7 +14,7 @@ type NewSel48 struct { func (e *NewSel48) DamageDivEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_49.go b/logic/service/fight/boss/NewSeIdx_49.go index 10a07f0f2..36f5037f3 100644 --- a/logic/service/fight/boss/NewSeIdx_49.go +++ b/logic/service/fight/boss/NewSeIdx_49.go @@ -20,7 +20,7 @@ type NewSel49 struct { func (e *NewSel49) Action_end_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -42,7 +42,7 @@ func (e *NewSel49) Action_end_ex() bool { func (e *NewSel49) DamageDivEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_50.go b/logic/service/fight/boss/NewSeIdx_50.go index fd1615ff2..9de52852c 100644 --- a/logic/service/fight/boss/NewSeIdx_50.go +++ b/logic/service/fight/boss/NewSeIdx_50.go @@ -16,7 +16,7 @@ type NewSel50 struct { func (e *NewSel50) EFFect_Befer(in *input.Input, effEffect input.Effect) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_501.go b/logic/service/fight/boss/NewSeIdx_501.go index 3d3acf6ce..af1dd6320 100644 --- a/logic/service/fight/boss/NewSeIdx_501.go +++ b/logic/service/fight/boss/NewSeIdx_501.go @@ -12,13 +12,13 @@ type NewSel501 struct { func (e *NewSel501) SwitchOut(in *input.Input) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // TODO: 检查是否有队友还活着 // 如果有队友活着,恢复自身HP和PP - // e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet.GetMaxHP()) + // e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet[0].GetMaxHP()) // TODO: 恢复PP值的方法 return true diff --git a/logic/service/fight/boss/NewSeIdx_502.go b/logic/service/fight/boss/NewSeIdx_502.go index 987fe1624..b3da815e9 100644 --- a/logic/service/fight/boss/NewSeIdx_502.go +++ b/logic/service/fight/boss/NewSeIdx_502.go @@ -13,7 +13,7 @@ type NewSel502 struct { // TODO: 需要找到精灵死亡时的回调接口 func (e *NewSel502) SwitchOut(in *input.Input) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_503.go b/logic/service/fight/boss/NewSeIdx_503.go index fdf160971..e500e2d8a 100644 --- a/logic/service/fight/boss/NewSeIdx_503.go +++ b/logic/service/fight/boss/NewSeIdx_503.go @@ -13,7 +13,7 @@ type NewSel503 struct { func (e *NewSel503) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } diff --git a/logic/service/fight/boss/NewSeIdx_51.go b/logic/service/fight/boss/NewSeIdx_51.go index ddf3e0f1f..53d9e360a 100644 --- a/logic/service/fight/boss/NewSeIdx_51.go +++ b/logic/service/fight/boss/NewSeIdx_51.go @@ -13,14 +13,14 @@ func (e *NewSel51) Action_end_ex() bool { if !e.IsOwner() { return true } - if e.Ctx().Our.CurrentPet.GetHP().IntPart() == 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().IntPart() == 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Args()[0]) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Args()[0]) >= 0 { return true } - e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet[0].GetMaxHP()) e.Ctx().Our.HealPP(-1) return true } diff --git a/logic/service/fight/boss/NewSeIdx_52.go b/logic/service/fight/boss/NewSeIdx_52.go index 3fecfb030..271359483 100644 --- a/logic/service/fight/boss/NewSeIdx_52.go +++ b/logic/service/fight/boss/NewSeIdx_52.go @@ -14,7 +14,7 @@ type NewSel52 struct { func (e *NewSel52) DamageDivEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_53.go b/logic/service/fight/boss/NewSeIdx_53.go index cef1f2055..0dced1343 100644 --- a/logic/service/fight/boss/NewSeIdx_53.go +++ b/logic/service/fight/boss/NewSeIdx_53.go @@ -14,19 +14,19 @@ type NewSel53 struct { func (e *NewSel53) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } // 计算恢复的HP量 - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() healAmount := maxHP.Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) // 恢复我方HP e.Ctx().Our.Heal(e.Ctx().Our, nil, healAmount) // 恢复敌方HP - oppMaxHP := e.Ctx().Opp.CurrentPet.GetMaxHP() + oppMaxHP := e.Ctx().Opp.CurrentPet[0].GetMaxHP() oppHealAmount := oppMaxHP.Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Opp.Heal(e.Ctx().Opp, nil, oppHealAmount) } diff --git a/logic/service/fight/boss/NewSeIdx_54.go b/logic/service/fight/boss/NewSeIdx_54.go index 377db1529..f0f075ff5 100644 --- a/logic/service/fight/boss/NewSeIdx_54.go +++ b/logic/service/fight/boss/NewSeIdx_54.go @@ -12,7 +12,7 @@ type NewSel54 struct { func (e *NewSel54) Skill_Use_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_55.go b/logic/service/fight/boss/NewSeIdx_55.go index ffce7861a..bb6961e8e 100644 --- a/logic/service/fight/boss/NewSeIdx_55.go +++ b/logic/service/fight/boss/NewSeIdx_55.go @@ -12,7 +12,7 @@ type NewSel55 struct { func (e *NewSel55) DamageAdd(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_56.go b/logic/service/fight/boss/NewSeIdx_56.go index e4a155243..4fcc01dca 100644 --- a/logic/service/fight/boss/NewSeIdx_56.go +++ b/logic/service/fight/boss/NewSeIdx_56.go @@ -12,7 +12,7 @@ type NewSel56 struct { func (e *NewSel56) TurnEnd() { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } @@ -22,7 +22,7 @@ func (e *NewSel56) TurnEnd() { // 秒杀对方,将其体力降为0 e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Opp.CurrentPet.GetHP(), + Damage: e.Ctx().Opp.CurrentPet[0].GetHP(), }) } } diff --git a/logic/service/fight/boss/NewSeIdx_57.go b/logic/service/fight/boss/NewSeIdx_57.go index 01389a1d4..676da2794 100644 --- a/logic/service/fight/boss/NewSeIdx_57.go +++ b/logic/service/fight/boss/NewSeIdx_57.go @@ -12,7 +12,7 @@ type NewSel57 struct { func (e *NewSel57) DamageAdd(*info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_58.go b/logic/service/fight/boss/NewSeIdx_58.go index a28e2f723..ab82c88b7 100644 --- a/logic/service/fight/boss/NewSeIdx_58.go +++ b/logic/service/fight/boss/NewSeIdx_58.go @@ -19,8 +19,8 @@ func (e *NewSel58) TurnStart(fattack *action.SelectSkillAction, sattack *action. return } - currentHP := e.Ctx().Our.CurrentPet.GetHP() - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() if maxHP.IntPart() == 0 { return } diff --git a/logic/service/fight/boss/NewSeIdx_59.go b/logic/service/fight/boss/NewSeIdx_59.go index 60b3f2885..0d11f3a8a 100644 --- a/logic/service/fight/boss/NewSeIdx_59.go +++ b/logic/service/fight/boss/NewSeIdx_59.go @@ -18,7 +18,7 @@ type NewSel59 struct { // TODO: 需要了解魔王的附身触发条件 func (e *NewSel59) Action_end_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -31,7 +31,7 @@ func (e *NewSel59) Action_end_ex() bool { func (e *NewSel59) DamageSubEx(t *info.DamageZone) bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -50,7 +50,7 @@ func (e *NewSel59) DamageSubEx(t *info.DamageZone) bool { func (e *NewSel59) TurnEnd() { // 魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } diff --git a/logic/service/fight/boss/NewSeIdx_6.go b/logic/service/fight/boss/NewSeIdx_6.go index 2ee2ef354..50af9226d 100644 --- a/logic/service/fight/boss/NewSeIdx_6.go +++ b/logic/service/fight/boss/NewSeIdx_6.go @@ -13,7 +13,7 @@ type NewSel6 struct { func (e *NewSel6) Action_end_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_60.go b/logic/service/fight/boss/NewSeIdx_60.go index 03994cf11..f0dd67e9b 100644 --- a/logic/service/fight/boss/NewSeIdx_60.go +++ b/logic/service/fight/boss/NewSeIdx_60.go @@ -14,7 +14,7 @@ type NewSel60 struct { } func (e *NewSel60) DamageSubEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_61.go b/logic/service/fight/boss/NewSeIdx_61.go index 15648ae4b..e1ea00f52 100644 --- a/logic/service/fight/boss/NewSeIdx_61.go +++ b/logic/service/fight/boss/NewSeIdx_61.go @@ -14,7 +14,7 @@ type NewSel61 struct { } func (e *NewSel61) DamageDivEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_62.go b/logic/service/fight/boss/NewSeIdx_62.go index 077969c6c..ddb659b99 100644 --- a/logic/service/fight/boss/NewSeIdx_62.go +++ b/logic/service/fight/boss/NewSeIdx_62.go @@ -14,7 +14,7 @@ type NewSel62 struct { } func (e *NewSel62) DamageAdd(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_63.go b/logic/service/fight/boss/NewSeIdx_63.go index de9065667..a6e0c2f5a 100644 --- a/logic/service/fight/boss/NewSeIdx_63.go +++ b/logic/service/fight/boss/NewSeIdx_63.go @@ -12,7 +12,7 @@ type NewSel63 struct { } func (e *NewSel63) DamageAdd(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_64.go b/logic/service/fight/boss/NewSeIdx_64.go index f4b6af306..656850101 100644 --- a/logic/service/fight/boss/NewSeIdx_64.go +++ b/logic/service/fight/boss/NewSeIdx_64.go @@ -14,7 +14,7 @@ type NewSel64 struct { } func (e *NewSel64) DamageLockEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } // 技能为空时不处理 diff --git a/logic/service/fight/boss/NewSeIdx_66.go b/logic/service/fight/boss/NewSeIdx_66.go index fd25a17e0..0c89f4d8e 100644 --- a/logic/service/fight/boss/NewSeIdx_66.go +++ b/logic/service/fight/boss/NewSeIdx_66.go @@ -12,7 +12,7 @@ type NewSel66 struct { } func (e *NewSel66) Skill_Use() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_67.go b/logic/service/fight/boss/NewSeIdx_67.go index a60154dfc..59e2db73b 100644 --- a/logic/service/fight/boss/NewSeIdx_67.go +++ b/logic/service/fight/boss/NewSeIdx_67.go @@ -12,7 +12,7 @@ type NewSel67 struct { } func (e *NewSel67) Skill_Use() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_69.go b/logic/service/fight/boss/NewSeIdx_69.go index 5bff53e1e..61071a4d0 100644 --- a/logic/service/fight/boss/NewSeIdx_69.go +++ b/logic/service/fight/boss/NewSeIdx_69.go @@ -13,7 +13,7 @@ type NewSel69 struct { } func (e *NewSel69) DamageAdd(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { @@ -21,7 +21,7 @@ func (e *NewSel69) DamageAdd(t *info.DamageZone) bool { } // 检查对手性别 - if e.Ctx().Opp.CurrentPet.Info.Gender != int(e.Args()[0].IntPart()) { + if e.Ctx().Opp.CurrentPet[0].Info.Gender != int(e.Args()[0].IntPart()) { return true } diff --git a/logic/service/fight/boss/NewSeIdx_699.go b/logic/service/fight/boss/NewSeIdx_699.go index 4dcf93427..26956793f 100644 --- a/logic/service/fight/boss/NewSeIdx_699.go +++ b/logic/service/fight/boss/NewSeIdx_699.go @@ -12,7 +12,7 @@ type NewSel699 struct { } func (e *NewSel699) Skill_Use_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_700.go b/logic/service/fight/boss/NewSeIdx_700.go index acc6b0fbc..dcf16b402 100644 --- a/logic/service/fight/boss/NewSeIdx_700.go +++ b/logic/service/fight/boss/NewSeIdx_700.go @@ -14,7 +14,7 @@ type NewSel700 struct { } func (e *NewSel700) Skill_Use() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_71.go b/logic/service/fight/boss/NewSeIdx_71.go index a71c5328e..31d635c14 100644 --- a/logic/service/fight/boss/NewSeIdx_71.go +++ b/logic/service/fight/boss/NewSeIdx_71.go @@ -11,7 +11,7 @@ type NewSel71 struct { } func (e *NewSel71) Skill_Use_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_72.go b/logic/service/fight/boss/NewSeIdx_72.go index c13b5d2aa..5ec82cf87 100644 --- a/logic/service/fight/boss/NewSeIdx_72.go +++ b/logic/service/fight/boss/NewSeIdx_72.go @@ -12,7 +12,7 @@ type NewSel72 struct { func (e *NewSel72) Skill_Use() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_73.go b/logic/service/fight/boss/NewSeIdx_73.go index c6b359f9d..923a4a510 100644 --- a/logic/service/fight/boss/NewSeIdx_73.go +++ b/logic/service/fight/boss/NewSeIdx_73.go @@ -14,7 +14,7 @@ type NewSel73 struct { func (e *NewSel73) Skill_Use() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_74.go b/logic/service/fight/boss/NewSeIdx_74.go index 64b8b798c..9fba9b8f2 100644 --- a/logic/service/fight/boss/NewSeIdx_74.go +++ b/logic/service/fight/boss/NewSeIdx_74.go @@ -12,7 +12,7 @@ type NewSel74 struct { func (e *NewSel74) Action_end_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_75.go b/logic/service/fight/boss/NewSeIdx_75.go index 41fe5814e..9d075f7b4 100644 --- a/logic/service/fight/boss/NewSeIdx_75.go +++ b/logic/service/fight/boss/NewSeIdx_75.go @@ -12,17 +12,17 @@ type NewSel75 struct { } func (e *NewSel75) TurnEnd() { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } // 敌方恢复m%HP - oppMaxHP := e.Ctx().Opp.CurrentPet.GetMaxHP() + oppMaxHP := e.Ctx().Opp.CurrentPet[0].GetMaxHP() oppHealAmount := oppMaxHP.Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Opp.Heal(e.Ctx().Opp, nil, oppHealAmount) // 我方恢复n%HP - ourMaxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + ourMaxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() ourHealAmount := ourMaxHP.Mul(e.Args()[1]).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Our.Heal(e.Ctx().Our, nil, ourHealAmount) } diff --git a/logic/service/fight/boss/NewSeIdx_76.go b/logic/service/fight/boss/NewSeIdx_76.go index 3d8a4603e..81f4ab7f3 100644 --- a/logic/service/fight/boss/NewSeIdx_76.go +++ b/logic/service/fight/boss/NewSeIdx_76.go @@ -13,7 +13,7 @@ type NewSel76 struct { } func (e *NewSel76) Damage_SUB(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_77.go b/logic/service/fight/boss/NewSeIdx_77.go index 3f51c6e74..1012ed2ae 100644 --- a/logic/service/fight/boss/NewSeIdx_77.go +++ b/logic/service/fight/boss/NewSeIdx_77.go @@ -12,7 +12,7 @@ type NewSel77 struct { } func (e *NewSel77) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } diff --git a/logic/service/fight/boss/NewSeIdx_78.go b/logic/service/fight/boss/NewSeIdx_78.go index e5a6cc169..ef14a1446 100644 --- a/logic/service/fight/boss/NewSeIdx_78.go +++ b/logic/service/fight/boss/NewSeIdx_78.go @@ -12,7 +12,7 @@ type NewSel78 struct { func (e *NewSel78) Action_end_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_79.go b/logic/service/fight/boss/NewSeIdx_79.go index 9c6b99ef5..6a0261bf5 100644 --- a/logic/service/fight/boss/NewSeIdx_79.go +++ b/logic/service/fight/boss/NewSeIdx_79.go @@ -13,7 +13,7 @@ type NewSel79 struct { } func (e *NewSel79) DamageDivEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -27,7 +27,7 @@ func (e *NewSel79) DamageDivEx(t *info.DamageZone) bool { } func (e *NewSel79) ActionStart(a, b *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/boss/NewSeIdx_80.go b/logic/service/fight/boss/NewSeIdx_80.go index 4ee94af5b..4af3638a8 100644 --- a/logic/service/fight/boss/NewSeIdx_80.go +++ b/logic/service/fight/boss/NewSeIdx_80.go @@ -12,7 +12,7 @@ type NewSel80 struct { func (e *NewSel80) Skill_Use() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_81.go b/logic/service/fight/boss/NewSeIdx_81.go index 29800c847..6ef52591e 100644 --- a/logic/service/fight/boss/NewSeIdx_81.go +++ b/logic/service/fight/boss/NewSeIdx_81.go @@ -14,7 +14,7 @@ type NewSel81 struct { } func (e *NewSel81) DamageDivEx(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } @@ -27,8 +27,8 @@ func (e *NewSel81) DamageDivEx(t *info.DamageZone) bool { } // 计算当前体力百分比 - currentHP := e.Ctx().Our.CurrentPet.GetHP() - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() hpPercent := currentHP.Mul(alpacadecimal.NewFromInt(100)).Div(maxHP) // 检查是否低于阈值 @@ -42,7 +42,7 @@ func (e *NewSel81) DamageDivEx(t *info.DamageZone) bool { func (e *NewSel81) TurnEnd() { // 魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } diff --git a/logic/service/fight/boss/NewSeIdx_82.go b/logic/service/fight/boss/NewSeIdx_82.go index 4cb009472..9373fc86b 100644 --- a/logic/service/fight/boss/NewSeIdx_82.go +++ b/logic/service/fight/boss/NewSeIdx_82.go @@ -12,7 +12,7 @@ type NewSel82 struct { func (e *NewSel82) Miss() { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } @@ -22,7 +22,7 @@ func (e *NewSel82) Miss() { func (e *NewSel82) TurnEnd() { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return } diff --git a/logic/service/fight/boss/NewSeIdx_83.go b/logic/service/fight/boss/NewSeIdx_83.go index c8c740719..83e6ee717 100644 --- a/logic/service/fight/boss/NewSeIdx_83.go +++ b/logic/service/fight/boss/NewSeIdx_83.go @@ -14,7 +14,7 @@ type NewSel83 struct { func (e *NewSel83) Skill_Use() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_84.go b/logic/service/fight/boss/NewSeIdx_84.go index c95e191b2..3053b3075 100644 --- a/logic/service/fight/boss/NewSeIdx_84.go +++ b/logic/service/fight/boss/NewSeIdx_84.go @@ -11,7 +11,7 @@ type NewSel84 struct { } func (e *NewSel84) SkillHit_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/NewSeIdx_8_30.go b/logic/service/fight/boss/NewSeIdx_8_30.go index 98163e6e2..c4387e4a2 100644 --- a/logic/service/fight/boss/NewSeIdx_8_30.go +++ b/logic/service/fight/boss/NewSeIdx_8_30.go @@ -13,7 +13,7 @@ type NewSel30 struct { } func (e *NewSel30) ActionStart(a, b *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } //fmt.Println(e.Ctx().SkillEntity) diff --git a/logic/service/fight/boss/NewSeIdx_9.go b/logic/service/fight/boss/NewSeIdx_9.go index a56abb019..da8f10fd4 100644 --- a/logic/service/fight/boss/NewSeIdx_9.go +++ b/logic/service/fight/boss/NewSeIdx_9.go @@ -11,18 +11,18 @@ type NewSel9 struct { } func (e *NewSel9) Action_end_ex() bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } - if e.Ctx().Our.CurrentPet.GetHP().IntPart() == 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().IntPart() == 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Args()[0]) == -1 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Args()[0]) == -1 { - e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Ctx().Our.CurrentPet[0].GetMaxHP()) } diff --git a/logic/service/fight/boss/NewSeIdx_92.go b/logic/service/fight/boss/NewSeIdx_92.go index c9737def5..b93b0cbe6 100644 --- a/logic/service/fight/boss/NewSeIdx_92.go +++ b/logic/service/fight/boss/NewSeIdx_92.go @@ -31,23 +31,23 @@ func init() { input.InitEffect(input.EffectType.NewSel, 92, &NewSel92{}) } func (e *NewSel92) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { e.n2, e.n1 = alpacadecimal.Zero, alpacadecimal.Zero return } - e.n1 = e.Ctx().Our.CurrentPet.GetHP() + e.n1 = e.Ctx().Our.CurrentPet[0].GetHP() } func (e *NewSel92) TurnEnd() { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { e.n2, e.n1 = alpacadecimal.Zero, alpacadecimal.Zero return } - e.n2 = e.Ctx().Our.CurrentPet.GetHP() + e.n2 = e.Ctx().Our.CurrentPet[0].GetHP() } func (e *NewSel92) DamageFloor(t *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/boss/json_eid_advanced.go b/logic/service/fight/boss/json_eid_advanced.go index 83073dc87..0408f8009 100644 --- a/logic/service/fight/boss/json_eid_advanced.go +++ b/logic/service/fight/boss/json_eid_advanced.go @@ -153,11 +153,11 @@ type BossJsonEid224 struct { } func (e *BossJsonEid224) revive() bool { - if !e.ownerActive() || e.used || e.Ctx().Our.CurrentPet.Info.Hp != 0 { + if !e.ownerActive() || e.used || e.Ctx().Our.CurrentPet[0].Info.Hp != 0 { return true } e.used = true - e.Ctx().Our.CurrentPet.Info.Hp = e.Ctx().Our.CurrentPet.Info.MaxHp + e.Ctx().Our.CurrentPet[0].Info.Hp = e.Ctx().Our.CurrentPet[0].Info.MaxHp e.Ctx().Our.HealPP(-1) stageSeed := bossJsonIntArg(e.Args(), len(e.Args())-1, 6) stage := int8(stageSeed - 6) @@ -200,12 +200,12 @@ func (e *BossJsonEid2104) TurnStart(fattack, sattack *action.SelectSkillAction) if growPercent <= 0 { return } - add := int(e.Ctx().Our.CurrentPet.Info.MaxHp) * growPercent / 100 + add := int(e.Ctx().Our.CurrentPet[0].Info.MaxHp) * growPercent / 100 if add <= 0 { return } - e.Ctx().Our.CurrentPet.Info.MaxHp += uint32(add) - e.Ctx().Our.CurrentPet.Info.Hp += uint32(add) + e.Ctx().Our.CurrentPet[0].Info.MaxHp += uint32(add) + e.Ctx().Our.CurrentPet[0].Info.Hp += uint32(add) } func (e *BossJsonEid2104) TurnEnd() { @@ -213,10 +213,10 @@ func (e *BossJsonEid2104) TurnEnd() { return } recoverPercent := bossJsonIntArg(e.Args(), 0, 0) - if recoverPercent <= 0 || e.Ctx().Our.CurrentPet.Info.MaxHp <= e.Ctx().Our.CurrentPet.Info.Hp { + if recoverPercent <= 0 || e.Ctx().Our.CurrentPet[0].Info.MaxHp <= e.Ctx().Our.CurrentPet[0].Info.Hp { return } - missing := int(e.Ctx().Our.CurrentPet.Info.MaxHp - e.Ctx().Our.CurrentPet.Info.Hp) + missing := int(e.Ctx().Our.CurrentPet[0].Info.MaxHp - e.Ctx().Our.CurrentPet[0].Info.Hp) heal := missing * recoverPercent / 100 if heal > 0 { e.Ctx().Our.Heal(e.Ctx().Our, nil, alpacadecimal.NewFromInt(int64(heal))) @@ -284,10 +284,10 @@ func (e *BossJsonEid2105) TurnEnd() { } threshold := bossJsonIntArg(e.Args(), 0, 0) grant := bossJsonIntArg(e.Args(), 1, 0) - if threshold <= 0 || grant <= 0 || e.Ctx().Our.CurrentPet.Info.MaxHp == 0 { + if threshold <= 0 || grant <= 0 || e.Ctx().Our.CurrentPet[0].Info.MaxHp == 0 { return } - if int(e.Ctx().Our.CurrentPet.Info.Hp)*100 < int(e.Ctx().Our.CurrentPet.Info.MaxHp)*threshold && e.rounds < grant { + if int(e.Ctx().Our.CurrentPet[0].Info.Hp)*100 < int(e.Ctx().Our.CurrentPet[0].Info.MaxHp)*threshold && e.rounds < grant { e.rounds = grant } } diff --git a/logic/service/fight/boss/json_eid_basic.go b/logic/service/fight/boss/json_eid_basic.go index 6acc51a23..6b2cfdbbb 100644 --- a/logic/service/fight/boss/json_eid_basic.go +++ b/logic/service/fight/boss/json_eid_basic.go @@ -203,14 +203,14 @@ type BossJsonEid805 struct { } func (e *BossJsonEid805) revive() bool { - if !e.ownerActive() || e.used || e.Ctx().Our.CurrentPet.Info.Hp != 0 { + if !e.ownerActive() || e.used || e.Ctx().Our.CurrentPet[0].Info.Hp != 0 { return true } e.used = true if !grand.Meet(bossJsonFirstPositiveArg(e.Args(), 0), 100) { return true } - e.Ctx().Our.CurrentPet.Info.Hp = e.Ctx().Our.CurrentPet.Info.MaxHp + e.Ctx().Our.CurrentPet[0].Info.Hp = e.Ctx().Our.CurrentPet[0].Info.MaxHp e.Ctx().Our.HealPP(-1) return true } @@ -257,11 +257,11 @@ type BossJsonEid377 struct { } func (e *BossJsonEid377) Fight_Start() bool { - if !e.ownerActive() || e.used || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if !e.ownerActive() || e.used || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } e.used = true - e.Ctx().Our.CurrentPet.Type, e.Ctx().Opp.CurrentPet.Type = e.Ctx().Opp.CurrentPet.Type, e.Ctx().Our.CurrentPet.Type + e.Ctx().Our.CurrentPet[0].Type, e.Ctx().Opp.CurrentPet[0].Type = e.Ctx().Opp.CurrentPet[0].Type, e.Ctx().Our.CurrentPet[0].Type return true } @@ -303,7 +303,7 @@ func (e *BossJsonEid261) TurnStart(fattack, sattack *action.SelectSkillAction) { if num <= 0 || den <= 0 { return } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(alpacadecimal.NewFromInt(int64(num))).Div(alpacadecimal.NewFromInt(int64(den))) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(alpacadecimal.NewFromInt(int64(num))).Div(alpacadecimal.NewFromInt(int64(den))) e.Ctx().Our.Heal(e.Ctx().Our, nil, heal) } diff --git a/logic/service/fight/effect/1011_1015.go b/logic/service/fight/effect/1011_1015.go index 1aa18681b..94056a5eb 100644 --- a/logic/service/fight/effect/1011_1015.go +++ b/logic/service/fight/effect/1011_1015.go @@ -92,8 +92,8 @@ type Effect1014 struct { func (e *Effect1014) OnSkill() bool { boostValue := int8(e.Args()[0].IntPart()) - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) > 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) > 0 { boostValue *= 2 } @@ -109,14 +109,14 @@ type Effect1015 struct { } func (e *Effect1015) OnSkill() bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } e.Ctx().Our.Heal( e.Ctx().Our, &action.SelectSkillAction{}, - e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]), + e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]), ) return true } diff --git a/logic/service/fight/effect/1021_1025.go b/logic/service/fight/effect/1021_1025.go index b306a5257..85464b8f4 100644 --- a/logic/service/fight/effect/1021_1025.go +++ b/logic/service/fight/effect/1021_1025.go @@ -79,7 +79,7 @@ func (e *Effect1023) SkillHit_ex() bool { e.Ctx().Our.Heal( e.Ctx().Our, &action.SelectSkillAction{}, - e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]), + e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]), ) return true } @@ -152,7 +152,7 @@ func (e *Effect1025) OnSkill() bool { e.Ctx().Our.Heal( e.Ctx().Our, &action.SelectSkillAction{}, - e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]), + e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]), ) return true } diff --git a/logic/service/fight/effect/1026_1030.go b/logic/service/fight/effect/1026_1030.go index 37cd6770f..f88fca774 100644 --- a/logic/service/fight/effect/1026_1030.go +++ b/logic/service/fight/effect/1026_1030.go @@ -98,7 +98,7 @@ func (e *Effect1028Sub) TurnEnd() { if !triggered && len(e.SideEffectArgs) > 7 { divisor := alpacadecimal.NewFromInt(int64(e.SideEffectArgs[7])) if divisor.Cmp(alpacadecimal.Zero) > 0 { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(divisor) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(divisor) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/1036_1040.go b/logic/service/fight/effect/1036_1040.go index 9a66c6a61..52de26bcf 100644 --- a/logic/service/fight/effect/1036_1040.go +++ b/logic/service/fight/effect/1036_1040.go @@ -170,15 +170,15 @@ type Effect1039 struct { } func (e *Effect1039) OnSkill() bool { - if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } if e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 || e.Args()[2].Cmp(alpacadecimal.Zero) <= 0 { return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() - currentHP := e.Ctx().Our.CurrentPet.GetHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() heal := maxHP.Div(e.Args()[1]) if currentHP.Cmp(maxHP.Div(e.Args()[2])) < 0 { heal = maxHP.Sub(currentHP) @@ -196,7 +196,7 @@ type Effect1040 struct { } func (e *Effect1040) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) < 3 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } diff --git a/logic/service/fight/effect/1041_1046.go b/logic/service/fight/effect/1041_1046.go index 82e1c8cbc..68fa90891 100644 --- a/logic/service/fight/effect/1041_1046.go +++ b/logic/service/fight/effect/1041_1046.go @@ -141,14 +141,14 @@ type Effect1045 struct { } func (e *Effect1045) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } if e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -172,7 +172,7 @@ func (e *Effect1046) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1047_1051.go b/logic/service/fight/effect/1047_1051.go index 130b14b6d..24946db9f 100644 --- a/logic/service/fight/effect/1047_1051.go +++ b/logic/service/fight/effect/1047_1051.go @@ -28,7 +28,7 @@ func (e *Effect1047) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -60,7 +60,7 @@ type Effect1049 struct { } func (e *Effect1049) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -77,7 +77,7 @@ type Effect1050 struct { } func (e *Effect1050) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -112,7 +112,7 @@ type Effect1051 struct { } func (e *Effect1051) Skill_Use() bool { - currentHP := e.Ctx().Opp.CurrentPet.GetHP() + currentHP := e.Ctx().Opp.CurrentPet[0].GetHP() if currentHP.Cmp(e.Args()[0]) <= 0 { return true } @@ -125,7 +125,7 @@ func (e *Effect1051) Skill_Use() bool { return true } - e.Ctx().Opp.CurrentPet.Info.Hp = uint32(targetHP.IntPart()) + e.Ctx().Opp.CurrentPet[0].Info.Hp = uint32(targetHP.IntPart()) return true } diff --git a/logic/service/fight/effect/1052_1056.go b/logic/service/fight/effect/1052_1056.go index 3c68d1358..07a4e9aed 100644 --- a/logic/service/fight/effect/1052_1056.go +++ b/logic/service/fight/effect/1052_1056.go @@ -72,7 +72,7 @@ func (e *Effect1053Sub) Skill_Use_ex() bool { func (e *Effect1053Sub) TurnEnd() { if !e.triggered && len(e.Args()) >= 3 && e.Duration() == 1 && e.Args()[2].IntPart() > 0 { - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } e.EffectNode.TurnEnd() diff --git a/logic/service/fight/effect/1057_1061.go b/logic/service/fight/effect/1057_1061.go index afbaa96ae..6ea27a8fc 100644 --- a/logic/service/fight/effect/1057_1061.go +++ b/logic/service/fight/effect/1057_1061.go @@ -82,7 +82,7 @@ func (e *Effect1059) Skill_Use() bool { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) success, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) diff --git a/logic/service/fight/effect/1062_1066.go b/logic/service/fight/effect/1062_1066.go index 17b26ed60..e0f667833 100644 --- a/logic/service/fight/effect/1062_1066.go +++ b/logic/service/fight/effect/1062_1066.go @@ -31,7 +31,7 @@ func (e *Effect1062) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -41,10 +41,10 @@ func (e *Effect1062) OnSkill() bool { } func effect106xMatchesOpp(target *input.Input, name string) bool { - if target == nil || target.CurrentPet == nil { + if target == nil || target.CurrentPet[0] == nil { return false } - return strings.TrimSpace(target.CurrentPet.PetInfo.DefName) == name + return strings.TrimSpace(target.CurrentPet[0].PetInfo.DefName) == name } type Effect1063 struct{ node.EffectNode } @@ -86,8 +86,8 @@ func (e *Effect1065Sub) Skill_Use() bool { if len(e.Args()) < 3 || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { return true } - value := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Args()[2].Cmp(alpacadecimal.Zero) > 0 && e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) < 0 { + value := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Args()[2].Cmp(alpacadecimal.Zero) > 0 && e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) < 0 { value = value.Mul(alpacadecimal.NewFromInt(2)) } if value.Cmp(alpacadecimal.Zero) <= 0 { diff --git a/logic/service/fight/effect/1067_1071.go b/logic/service/fight/effect/1067_1071.go index 4815759dd..899647e46 100644 --- a/logic/service/fight/effect/1067_1071.go +++ b/logic/service/fight/effect/1067_1071.go @@ -29,15 +29,15 @@ func (e *Effect1067Sub) Skill_Use() bool { if len(e.Args()) < 4 || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Args()[2].Cmp(alpacadecimal.Zero) > 0 && e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[2]).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 && e.Args()[3].Cmp(alpacadecimal.Zero) > 0 { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[3]) + if e.Args()[2].Cmp(alpacadecimal.Zero) > 0 && e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[2]).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 && e.Args()[3].Cmp(alpacadecimal.Zero) > 0 { + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[3]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) } return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } @@ -71,10 +71,10 @@ func (e *Effect1068Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect1068Sub) DamageLockEx(zone *info.DamageZone) bool { - if zone == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if zone == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - currentHP := e.Ctx().Our.CurrentPet.GetHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() if currentHP.Cmp(e.remainHP) <= 0 || zone.Damage.Cmp(currentHP) < 0 { return true } diff --git a/logic/service/fight/effect/1072_1076.go b/logic/service/fight/effect/1072_1076.go index b443626bb..2db43cab8 100644 --- a/logic/service/fight/effect/1072_1076.go +++ b/logic/service/fight/effect/1072_1076.go @@ -28,7 +28,7 @@ func (e *Effect1072) OnSkill() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(int64(percent))).Div(hundred) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(int64(percent))).Div(hundred) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } @@ -71,7 +71,7 @@ func (e *Effect1073Sub) Action_end_ex() bool { return true } e.pending = false - missing := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + missing := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) if missing.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -121,10 +121,10 @@ func (e *Effect1075) OnSkill() bool { if len(e.Args()) < 2 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { return true } - currentHP := e.Ctx().Our.CurrentPet.GetHP() - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if currentHP.Mul(e.Args()[1]).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { - heal = e.Ctx().Our.CurrentPet.GetMaxHP().Sub(currentHP) + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if currentHP.Mul(e.Args()[1]).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { + heal = e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(currentHP) } if heal.Cmp(alpacadecimal.Zero) <= 0 { return true diff --git a/logic/service/fight/effect/1082_1086.go b/logic/service/fight/effect/1082_1086.go index 22c03b4cb..f421740a2 100644 --- a/logic/service/fight/effect/1082_1086.go +++ b/logic/service/fight/effect/1082_1086.go @@ -19,7 +19,7 @@ func (e *Effect1082) Skill_Use() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[1]).Div(hundred) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[1]).Div(hundred) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -90,7 +90,7 @@ func (e *Effect1086) Damage_Mul(zone *info.DamageZone) bool { if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } diff --git a/logic/service/fight/effect/1087_1091.go b/logic/service/fight/effect/1087_1091.go index 4f7a83487..47ea700a9 100644 --- a/logic/service/fight/effect/1087_1091.go +++ b/logic/service/fight/effect/1087_1091.go @@ -58,7 +58,7 @@ func (e *Effect1088) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) @@ -81,7 +81,7 @@ func (e *Effect1089) Skill_Use_ex() bool { type Effect1090 struct{ node.EffectNode } func (e *Effect1090) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -107,7 +107,7 @@ func (e *Effect1090Sub) ActionStart(a, b *action.SelectSkillAction) bool { type Effect1091 struct{ node.EffectNode } func (e *Effect1091) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } diff --git a/logic/service/fight/effect/1092_1096.go b/logic/service/fight/effect/1092_1096.go index 4a7cfa8b7..3ffd0ff56 100644 --- a/logic/service/fight/effect/1092_1096.go +++ b/logic/service/fight/effect/1092_1096.go @@ -26,7 +26,7 @@ func (e *Effect1092) Skill_Use() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetHP().Div(e.Args()[1]) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -43,11 +43,11 @@ func (e *Effect1093) Skill_Use() bool { if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } @@ -94,7 +94,7 @@ func (e *Effect1094) Skill_Use() bool { if e.starFuryActive { if !e.Ctx().Opp.HasPropADD() { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -104,7 +104,7 @@ func (e *Effect1094) Skill_Use() bool { } return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -163,7 +163,7 @@ func (e *Effect1095) Skill_Use() bool { } return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -202,7 +202,7 @@ func (e *Effect1095Sub) Skill_Use_ex() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -256,7 +256,7 @@ func (e *Effect1096) Skill_Use() bool { } boost := int8(1) - if e.Ctx().Our.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { boost = 2 } applyAllPropUp(e.Ctx().Our, boost) @@ -278,7 +278,7 @@ func (e *Effect1096) Skill_Use() bool { } return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -304,8 +304,8 @@ func (e *Effect1096) Skill_Use() bool { type Effect1096DrainSub struct{ RoundEffectArg0Base } func (e *Effect1096DrainSub) OnSkill() bool { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3)) - if e.Ctx().Our.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { damage = damage.Mul(alpacadecimal.NewFromInt(2)) } if damage.Cmp(alpacadecimal.Zero) <= 0 { diff --git a/logic/service/fight/effect/1097_1101.go b/logic/service/fight/effect/1097_1101.go index d155a2010..e9b4ea52f 100644 --- a/logic/service/fight/effect/1097_1101.go +++ b/logic/service/fight/effect/1097_1101.go @@ -34,7 +34,7 @@ func (e *Effect1097) Skill_Use() bool { } } - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { disableAttack := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1097, 1, 0) if disableAttack != nil { e.Ctx().Opp.AddEffect(e.Ctx().Our, disableAttack) @@ -42,7 +42,7 @@ func (e *Effect1097) Skill_Use() bool { } if e.starFuryActive { - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -62,7 +62,7 @@ func (e *Effect1097) Skill_Use() bool { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -188,7 +188,7 @@ func (e *Effect1098) Skill_Use() bool { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -376,13 +376,13 @@ func (e *Effect1101) DamageFloor(zone *info.DamageZone) bool { return true } - zone.Damage = e.Ctx().Opp.CurrentPet.GetMaxHP() + zone.Damage = e.Ctx().Opp.CurrentPet[0].GetMaxHP() return true } func (e *Effect1101) Skill_Use() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.AttackTime == 0 { - e.Ctx().Our.CurrentPet.Info.Hp = 0 + e.Ctx().Our.CurrentPet[0].Info.Hp = 0 } zeroRandomSkillPP(e.Ctx().Opp, int(e.Args()[1].IntPart())) @@ -391,7 +391,7 @@ func (e *Effect1101) Skill_Use() bool { } func executeExtraSkill(attacker, defender *input.Input, skill *info.SkillEntity) { - if attacker == nil || defender == nil || skill == nil || attacker.CurrentPet.Info.Hp == 0 { + if attacker == nil || defender == nil || skill == nil || attacker.CurrentPet[0].Info.Hp == 0 { return } @@ -413,7 +413,7 @@ func executeExtraSkill(attacker, defender *input.Input, skill *info.SkillEntity) var originalProps [2][6]int8 var originalPetInfo [2]model.PetInfo originalProps[0], originalProps[1] = attacker.Prop, defender.Prop - originalPetInfo[0], originalPetInfo[1] = attacker.CurrentPet.Info, defender.CurrentPet.Info + originalPetInfo[0], originalPetInfo[1] = attacker.CurrentPet[0].Info, defender.CurrentPet[0].Info attacker.Exec(func(effect input.Effect) bool { effect.Ctx().SkillEntity = skill @@ -429,7 +429,7 @@ func executeExtraSkill(attacker, defender *input.Input, skill *info.SkillEntity) } attacker.Prop, defender.Prop = originalProps[0], originalProps[1] - attacker.CurrentPet.Info, defender.CurrentPet.Info = originalPetInfo[0], originalPetInfo[1] + attacker.CurrentPet[0].Info, defender.CurrentPet[0].Info = originalPetInfo[0], originalPetInfo[1] if attacker.IsCritical == 1 { if skill.Category() == info.Category.PHYSICAL && defender.Prop[1] > 0 { @@ -451,7 +451,7 @@ func executeExtraSkill(attacker, defender *input.Input, skill *info.SkillEntity) Damage: sumDamage, }) - if defender.CurrentPet.Info.Hp > 0 { + if defender.CurrentPet[0].Info.Hp > 0 { defender.Exec(func(effect input.Effect) bool { effect.Ctx().SkillEntity = skill effect.Skill_Use_ex() @@ -459,7 +459,7 @@ func executeExtraSkill(attacker, defender *input.Input, skill *info.SkillEntity) }) } - if attacker.CurrentPet.Info.Hp > 0 { + if attacker.CurrentPet[0].Info.Hp > 0 { attacker.Exec(func(effect input.Effect) bool { effect.Ctx().SkillEntity = skill effect.Skill_Use() @@ -516,7 +516,7 @@ func zeroRandomSkillPP(target *input.Input, count int) { if target == nil || count <= 0 { return } - skills := target.CurrentPet.Info.SkillList + skills := target.CurrentPet[0].Info.SkillList if len(skills) == 0 { return } @@ -526,7 +526,7 @@ func zeroRandomSkillPP(target *input.Input, count int) { indexes := grand.Perm(len(skills)) for _, idx := range indexes[:count] { - target.CurrentPet.Info.SkillList[idx].PP = 0 + target.CurrentPet[0].Info.SkillList[idx].PP = 0 } } diff --git a/logic/service/fight/effect/1102_1106.go b/logic/service/fight/effect/1102_1106.go index 0b36f6b94..6bcc365c3 100644 --- a/logic/service/fight/effect/1102_1106.go +++ b/logic/service/fight/effect/1102_1106.go @@ -30,7 +30,7 @@ func (e *Effect1102) Skill_Use_ex() bool { func (e *Effect1102) TurnEnd() { if !e.triggered && e.Duration() == 1 && e.Args()[2].Cmp(alpacadecimal.Zero) > 0 { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -70,7 +70,7 @@ func (e *Effect1104) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/1107_1111.go b/logic/service/fight/effect/1107_1111.go index 0ad1e8f93..641ab3175 100644 --- a/logic/service/fight/effect/1107_1111.go +++ b/logic/service/fight/effect/1107_1111.go @@ -14,7 +14,7 @@ type Effect1107 struct { } func (e *Effect1107) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -83,7 +83,7 @@ func (e *Effect1109) PropBefer(source *input.Input, prop int8, level int8) bool return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/1117_1121.go b/logic/service/fight/effect/1117_1121.go index f316f4418..5637b10d8 100644 --- a/logic/service/fight/effect/1117_1121.go +++ b/logic/service/fight/effect/1117_1121.go @@ -13,7 +13,7 @@ import ( type Effect1117 struct{ node.EffectNode } func (e *Effect1117) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { return true } current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) diff --git a/logic/service/fight/effect/1127_1131.go b/logic/service/fight/effect/1127_1131.go index c701fe920..7b126030a 100644 --- a/logic/service/fight/effect/1127_1131.go +++ b/logic/service/fight/effect/1127_1131.go @@ -44,7 +44,7 @@ type Effect1128 struct { } func (e *Effect1128) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -116,7 +116,7 @@ func (e *Effect1130) Skill_Use() bool { } level := int8(e.Args()[0].IntPart()) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { level *= 2 } applyAllPropDown(e.Ctx().Our, e.Ctx().Opp, level) diff --git a/logic/service/fight/effect/1132_1136.go b/logic/service/fight/effect/1132_1136.go index 14b5f54df..2806c7d21 100644 --- a/logic/service/fight/effect/1132_1136.go +++ b/logic/service/fight/effect/1132_1136.go @@ -114,12 +114,12 @@ func (e *Effect1135) OnSkill() bool { return true } - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) >= 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) >= 0 { return true } - missing := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + missing := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) if missing.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -141,12 +141,12 @@ func (e *Effect1136) Skill_Use() bool { return true } - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) <= 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) <= 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetHP().Div(e.Args()[1]) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1137_1141.go b/logic/service/fight/effect/1137_1141.go index d1432a6ef..597b930de 100644 --- a/logic/service/fight/effect/1137_1141.go +++ b/logic/service/fight/effect/1137_1141.go @@ -20,12 +20,12 @@ func (e *Effect1137) OnSkill() bool { return true } - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) >= 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) >= 0 { return true } - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if drain.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -105,7 +105,7 @@ func (e *Effect1139Sub) SetArgs(t *input.Input, a ...int) { func (e *Effect1139Sub) TurnEnd() { if e.statusID > 0 && !e.Ctx().Our.StatEffect_Exist(info.EnumPetStatus(e.statusID)) { - missing := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + missing := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) if missing.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, missing) } diff --git a/logic/service/fight/effect/1142_1145_1147.go b/logic/service/fight/effect/1142_1145_1147.go index 29fa7acd4..5526c3c18 100644 --- a/logic/service/fight/effect/1142_1145_1147.go +++ b/logic/service/fight/effect/1142_1145_1147.go @@ -67,7 +67,7 @@ func (e *Effect1142Sub) TurnEnd() { } targetHP := alpacadecimal.NewFromInt(int64(e.Args()[0].IntPart())) - currentHP := e.Ctx().Our.CurrentPet.GetHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() if currentHP.Cmp(targetHP) <= 0 { e.EffectNode.TurnEnd() return @@ -177,7 +177,7 @@ type Effect1147 struct { } func (e *Effect1147) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } diff --git a/logic/service/fight/effect/1148_1152.go b/logic/service/fight/effect/1148_1152.go index 20f2b5e29..c9aeb3d59 100644 --- a/logic/service/fight/effect/1148_1152.go +++ b/logic/service/fight/effect/1148_1152.go @@ -73,7 +73,7 @@ func (e *Effect1149Sub) TurnEnd() { if len(e.Args()) == 0 || e.damage.Cmp(alpacadecimal.Zero) <= 0 { return } - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return } @@ -82,8 +82,8 @@ func (e *Effect1149Sub) TurnEnd() { return } - if e.Ctx().Our != nil && e.Ctx().Our.CurrentPet != nil && e.Ctx().Our.CurrentPet.Info.Hp == 0 { - cap := e.Ctx().Opp.CurrentPet.GetHP().Sub(oneDecimal) + if e.Ctx().Our != nil && e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].Info.Hp == 0 { + cap := e.Ctx().Opp.CurrentPet[0].GetHP().Sub(oneDecimal) if cap.Cmp(alpacadecimal.Zero) < 0 { cap = alpacadecimal.Zero } diff --git a/logic/service/fight/effect/1153_1157.go b/logic/service/fight/effect/1153_1157.go index 6d6f42369..03f27073c 100644 --- a/logic/service/fight/effect/1153_1157.go +++ b/logic/service/fight/effect/1153_1157.go @@ -65,7 +65,7 @@ func (e *Effect1154) Skill_Use() bool { } damage := e.Args()[1] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { damage = damage.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ @@ -95,7 +95,7 @@ func (e *Effect1155) OnSkill() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(alpacadecimal.NewFromInt(int64(percent))).Div(hundred) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(alpacadecimal.NewFromInt(int64(percent))).Div(hundred) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -112,11 +112,11 @@ type Effect1156 struct { } func (e *Effect1156) OnSkill() bool { - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.Zero) > 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.Zero) > 0 { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) e.Ctx().Our.HealPP(-1) return true } diff --git a/logic/service/fight/effect/1163_1167.go b/logic/service/fight/effect/1163_1167.go index 751be868d..0a47d7b86 100644 --- a/logic/service/fight/effect/1163_1167.go +++ b/logic/service/fight/effect/1163_1167.go @@ -150,7 +150,7 @@ func (e *Effect1167) Skill_Use() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } diff --git a/logic/service/fight/effect/1168_1172.go b/logic/service/fight/effect/1168_1172.go index 9403a7685..0c4b7ca4c 100644 --- a/logic/service/fight/effect/1168_1172.go +++ b/logic/service/fight/effect/1168_1172.go @@ -71,7 +71,7 @@ func (e *Effect1170) OnSkill() bool { type Effect1171 struct{ node.EffectNode } func (e *Effect1171) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1171, int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart())) diff --git a/logic/service/fight/effect/1173_1177.go b/logic/service/fight/effect/1173_1177.go index e75851afc..6ab75f10c 100644 --- a/logic/service/fight/effect/1173_1177.go +++ b/logic/service/fight/effect/1173_1177.go @@ -13,7 +13,7 @@ import ( type Effect1173 struct{ node.EffectNode } func (e *Effect1173) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -28,7 +28,7 @@ type Effect1173Sub struct{ FixedDuration1Base } func (e *Effect1173Sub) TurnEnd() { defer e.Alive(false) - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return } @@ -37,7 +37,7 @@ func (e *Effect1173Sub) TurnEnd() { return } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(divisor) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(divisor) if damage.Cmp(alpacadecimal.Zero) <= 0 { return } @@ -66,7 +66,7 @@ func (e *Effect1174) ComparePre(fattack, sattack *action.SelectSkillAction) bool type Effect1175 struct{ node.EffectNode } func (e *Effect1175) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) < 2 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } if e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { @@ -90,7 +90,7 @@ func (e *Effect1175Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect1175Sub) ShieldChange(before, after alpacadecimal.Decimal) bool { - if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } if before.Cmp(alpacadecimal.Zero) <= 0 || after.Cmp(alpacadecimal.Zero) > 0 { @@ -100,7 +100,7 @@ func (e *Effect1175Sub) ShieldChange(before, after alpacadecimal.Decimal) bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } @@ -134,7 +134,7 @@ func (e *Effect1176) Damage_Mul(zone *info.DamageZone) bool { } func (e *Effect1176) OnSkill() bool { - if e.multiplied || len(e.Args()) < 3 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if e.multiplied || len(e.Args()) < 3 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } if e.Args()[2].Cmp(alpacadecimal.Zero) <= 0 { diff --git a/logic/service/fight/effect/1178_1182.go b/logic/service/fight/effect/1178_1182.go index 68da98487..7c7eef0aa 100644 --- a/logic/service/fight/effect/1178_1182.go +++ b/logic/service/fight/effect/1178_1182.go @@ -140,21 +140,21 @@ func (e *Effect1181) OnSkill() bool { type Effect1182 struct{ node.EffectNode } func (e *Effect1182) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 2 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) targetHP := e.Args()[0] if targetHP.Cmp(alpacadecimal.Zero) < 0 { targetHP = alpacadecimal.Zero } - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(targetHP) > 0 { - e.Ctx().Opp.CurrentPet.Info.Hp = uint32(targetHP.IntPart()) + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(targetHP) > 0 { + e.Ctx().Opp.CurrentPet[0].Info.Hp = uint32(targetHP.IntPart()) } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1182, int(e.Args()[1].IntPart())) @@ -216,7 +216,7 @@ func (e *Effect1182Sub) OnSkill() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, diff --git a/logic/service/fight/effect/1183_1187.go b/logic/service/fight/effect/1183_1187.go index e8425699b..18b962bc7 100644 --- a/logic/service/fight/effect/1183_1187.go +++ b/logic/service/fight/effect/1183_1187.go @@ -114,7 +114,7 @@ func (e *Effect1184Sub) OnSkill() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, @@ -144,7 +144,7 @@ func (e *Effect1185) Skill_Use() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1188_1192.go b/logic/service/fight/effect/1188_1192.go index e7a6e76ee..086bf89ec 100644 --- a/logic/service/fight/effect/1188_1192.go +++ b/logic/service/fight/effect/1188_1192.go @@ -30,7 +30,7 @@ func (e *Effect1188) DamageSubEx(zone *info.DamageZone) bool { func (e *Effect1188) TurnEnd() { if !e.triggered && e.Duration() == 1 && len(e.Args()) >= 3 && e.Args()[2].Cmp(alpacadecimal.Zero) > 0 { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, diff --git a/logic/service/fight/effect/1193_1197.go b/logic/service/fight/effect/1193_1197.go index e1d45638c..595aa8af0 100644 --- a/logic/service/fight/effect/1193_1197.go +++ b/logic/service/fight/effect/1193_1197.go @@ -13,7 +13,7 @@ import ( type Effect1193 struct{ node.EffectNode } func (e *Effect1193) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { return true } current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) diff --git a/logic/service/fight/effect/1203_1207.go b/logic/service/fight/effect/1203_1207.go index b67784006..b64edcad2 100644 --- a/logic/service/fight/effect/1203_1207.go +++ b/logic/service/fight/effect/1203_1207.go @@ -137,7 +137,7 @@ func (e *Effect1206) OnSkill() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(alpacadecimal.NewFromInt(int64(percent))).Div(hundred) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(alpacadecimal.NewFromInt(int64(percent))).Div(hundred) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, diff --git a/logic/service/fight/effect/1208_1212.go b/logic/service/fight/effect/1208_1212.go index 85235b2c0..5d1197319 100644 --- a/logic/service/fight/effect/1208_1212.go +++ b/logic/service/fight/effect/1208_1212.go @@ -95,7 +95,7 @@ func (e *Effect1210) Skill_Use() bool { } chance := int(e.Args()[0].IntPart()) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { chance *= 2 } if chance > 100 { @@ -130,7 +130,7 @@ func (e *Effect1212) Skill_Use() bool { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1212, int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart()), int(e.Args()[2].IntPart())) if sub != nil { diff --git a/logic/service/fight/effect/1213_1217.go b/logic/service/fight/effect/1213_1217.go index d1ccba17b..49bd8ffe2 100644 --- a/logic/service/fight/effect/1213_1217.go +++ b/logic/service/fight/effect/1213_1217.go @@ -19,7 +19,7 @@ func (e *Effect1213) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -69,7 +69,7 @@ func (e *Effect1215) Skill_Use() bool { e.Ctx().Opp.ConsumeAllShield() debuffLevel := int(e.Args()[0].IntPart()) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { debuffLevel *= 2 } if debuffLevel <= 0 { @@ -102,7 +102,7 @@ func (e *Effect1216) Skill_Use() bool { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) e.Ctx().Our.HealPP(-1) return true } diff --git a/logic/service/fight/effect/1218_1222.go b/logic/service/fight/effect/1218_1222.go index 31274c4b8..11de655c2 100644 --- a/logic/service/fight/effect/1218_1222.go +++ b/logic/service/fight/effect/1218_1222.go @@ -15,7 +15,7 @@ type Effect1218 struct { } func (e *Effect1218) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } diff --git a/logic/service/fight/effect/1223_1227.go b/logic/service/fight/effect/1223_1227.go index 7c3aa7802..64b0fe2b1 100644 --- a/logic/service/fight/effect/1223_1227.go +++ b/logic/service/fight/effect/1223_1227.go @@ -86,7 +86,7 @@ func (e *Effect1225) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1228_1232.go b/logic/service/fight/effect/1228_1232.go index 049751cef..ebede3119 100644 --- a/logic/service/fight/effect/1228_1232.go +++ b/logic/service/fight/effect/1228_1232.go @@ -65,11 +65,11 @@ func (e *Effect1229) Skill_Use() bool { if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetHP().Div(e.Args()[0]) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -90,7 +90,7 @@ func (e *Effect1230) Skill_Use() bool { if len(e.Args()) < 2 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } @@ -160,7 +160,7 @@ func (e *Effect1231) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1233_1237.go b/logic/service/fight/effect/1233_1237.go index 0d495bc24..384f7c22b 100644 --- a/logic/service/fight/effect/1233_1237.go +++ b/logic/service/fight/effect/1233_1237.go @@ -25,7 +25,7 @@ func (e *Effect1233) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -94,7 +94,7 @@ func (e *Effect1236) SkillHit_ex() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -112,11 +112,11 @@ type Effect1237 struct { } func (e *Effect1237) OnSkill() bool { - for i := range e.Ctx().Our.CurrentPet.Info.SkillList { - e.Ctx().Our.CurrentPet.Info.SkillList[i].PP = 0 + for i := range e.Ctx().Our.CurrentPet[0].Info.SkillList { + e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP = 0 } - for i := range e.Ctx().Opp.CurrentPet.Info.SkillList { - e.Ctx().Opp.CurrentPet.Info.SkillList[i].PP = 0 + for i := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { + e.Ctx().Opp.CurrentPet[0].Info.SkillList[i].PP = 0 } for i := range e.Ctx().Our.Prop { diff --git a/logic/service/fight/effect/1238_1242.go b/logic/service/fight/effect/1238_1242.go index 25a70d6ae..11c713c62 100644 --- a/logic/service/fight/effect/1238_1242.go +++ b/logic/service/fight/effect/1238_1242.go @@ -19,7 +19,7 @@ func (e *Effect1238) OnSkill() bool { } boostValue := int8(e.Args()[0].IntPart()) - if e.Ctx().Opp.CurrentPet.PetInfo.Type != int(e.Args()[1].IntPart()) { + if e.Ctx().Opp.CurrentPet[0].PetInfo.Type != int(e.Args()[1].IntPart()) { boostValue *= 2 } @@ -39,15 +39,15 @@ func (e *Effect1239) Skill_Use() bool { return true } - healAmount := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + healAmount := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if healAmount.Cmp(alpacadecimal.Zero) <= 0 { return true } lowHP := false if e.Args()[1].Cmp(alpacadecimal.Zero) > 0 { - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - lowHP = e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + lowHP = e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 } e.Ctx().Our.Heal(e.Ctx().Our, nil, healAmount) @@ -66,7 +66,7 @@ type Effect1240 struct { } func (e *Effect1240) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } @@ -100,7 +100,7 @@ func (e *Effect1240Sub) OnSkill() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(int64(e.divisor))) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(int64(e.divisor))) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -127,8 +127,8 @@ func (e *Effect1241) Skill_Use() bool { drain := e.Args()[0] if e.Args()[1].Cmp(alpacadecimal.Zero) > 0 { - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { drain = drain.Mul(alpacadecimal.NewFromInt(2)) } } diff --git a/logic/service/fight/effect/1248_1252.go b/logic/service/fight/effect/1248_1252.go index 7423dde01..48fd5dcdb 100644 --- a/logic/service/fight/effect/1248_1252.go +++ b/logic/service/fight/effect/1248_1252.go @@ -97,7 +97,7 @@ type Effect1251 struct { } func (e *Effect1251) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().IntPart() >= 200 { + if e.Ctx().Our.CurrentPet[0].GetHP().IntPart() >= 200 { return true } @@ -120,8 +120,8 @@ func (e *Effect1252) Damage_Mul(zone *info.DamageZone) bool { return true } - currentHP := e.Ctx().Our.CurrentPet.GetHP() - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() if e.Args()[2].Cmp(alpacadecimal.Zero) > 0 { threshold := maxHP.Div(e.Args()[2]) diff --git a/logic/service/fight/effect/1253_1257.go b/logic/service/fight/effect/1253_1257.go index eb885afef..343122370 100644 --- a/logic/service/fight/effect/1253_1257.go +++ b/logic/service/fight/effect/1253_1257.go @@ -14,7 +14,7 @@ type Effect1253 struct { } func (e *Effect1253) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -61,7 +61,7 @@ func (e *Effect1255) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[3]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[3]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -141,7 +141,7 @@ func (e *Effect1257) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1263_1287.go b/logic/service/fight/effect/1263_1287.go index 6faf59fd6..730634956 100644 --- a/logic/service/fight/effect/1263_1287.go +++ b/logic/service/fight/effect/1263_1287.go @@ -63,11 +63,11 @@ func (e *Effect1263) Skill_Use() bool { } divisor := e.Args()[0] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { divisor = e.Args()[1] } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(divisor) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(divisor) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -208,7 +208,7 @@ type Effect1268 struct { } func (e *Effect1268) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } effect := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1268, int(e.Args()[0].IntPart())) @@ -246,7 +246,7 @@ func (e *Effect1269) SkillHit_ex() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -383,10 +383,10 @@ func (e *Effect1273) OnSkill() bool { if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) != 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) != 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -423,7 +423,7 @@ func (e *Effect1275) Skill_Use() bool { if len(e.Args()) == 0 { return true } - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) effect := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1275, int(e.Args()[0].IntPart())) if effect != nil { e.Ctx().Our.AddEffect(e.Ctx().Our, effect) @@ -468,8 +468,8 @@ func (e *Effect1276) Skill_Use() bool { if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetHP().Div(e.Args()[0]) - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Div(e.Args()[0]) + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } @@ -482,16 +482,16 @@ type Effect1277 struct { } func (e *Effect1277) Skill_Use() bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) > 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) > 0 { leave := alpacadecimal.NewFromInt(1) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(leave) > 0 { - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP().Sub(leave)}) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(leave) > 0 { + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP().Sub(leave)}) } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: alpacadecimal.NewFromInt(int64(grand.N(350, 550)))}) return true } - lost := e.Ctx().Our.CurrentPet.GetHP() + lost := e.Ctx().Our.CurrentPet[0].GetHP() e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: lost}) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: lost}) applyStatusByID(e.Ctx().Our, e.Ctx().Opp, int(info.PetStatus.Paralysis)) @@ -614,7 +614,7 @@ func (e *Effect1280) OnSkill() bool { if percent > max { percent = max } - damage := e.Ctx().Our.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(int64(percent))).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(int64(percent))).Div(alpacadecimal.NewFromInt(100)) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } @@ -634,12 +634,12 @@ func (e *Effect1281) Skill_Use() bool { } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: shield}) if shield.Cmp(alpacadecimal.NewFromInt(300)) > 0 { - dmg := e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + dmg := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: dmg}) return true } if shield.Cmp(alpacadecimal.NewFromInt(300)) < 0 { - val := e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + val := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, val) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: val}) } @@ -729,7 +729,7 @@ type Effect1285 struct { } func (e *Effect1285) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } zeroRandomSkillPP(e.Ctx().Opp, int(e.Args()[0].IntPart())) diff --git a/logic/service/fight/effect/1288_1312.go b/logic/service/fight/effect/1288_1312.go index 5926f5980..0de0240b8 100644 --- a/logic/service/fight/effect/1288_1312.go +++ b/logic/service/fight/effect/1288_1312.go @@ -65,7 +65,7 @@ func healBench(owner *input.Input, amount alpacadecimal.Decimal) { return } for _, pet := range owner.AllPet { - if pet == nil || !pet.Alive() || pet == owner.CurrentPet { + if pet == nil || !pet.Alive() || pet == owner.CurrentPet[0] { continue } pet.Info.ModelHP(amount.IntPart()) @@ -173,14 +173,14 @@ func (e *Effect1290) Skill_Use() bool { if len(e.Args()) < 2 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if heal.Cmp(alpacadecimal.Zero) <= 0 { return true } low := false if e.Args()[1].Cmp(alpacadecimal.Zero) > 0 { - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - low = e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + low = e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 } e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) if low { @@ -210,7 +210,7 @@ func (e *Effect1291) Skill_Use() bool { type Effect1292 struct{ node.EffectNode } func (e *Effect1292) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) @@ -289,7 +289,7 @@ func (e *Effect1294) Skill_Use() bool { type Effect1294Sub struct{ node.EffectNode } func (e *Effect1294Sub) TurnEnd() { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } @@ -347,7 +347,7 @@ func (e *Effect1297) Skill_Use() bool { applyAnyStatus(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[0].IntPart())) return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) @@ -364,7 +364,7 @@ func (e *Effect1298) Skill_Use() bool { return true } for _, pet := range e.Ctx().Opp.AllPet { - if pet == nil || !pet.Alive() || pet == e.Ctx().Opp.CurrentPet { + if pet == nil || !pet.Alive() || pet == e.Ctx().Opp.CurrentPet[0] { continue } damage := pet.GetMaxHP().Div(alpacadecimal.NewFromInt(4)) @@ -387,7 +387,7 @@ func (e *Effect1299) SkillHit_ex() bool { return true } for _, pet := range e.Ctx().Opp.AllPet { - if pet == nil || !pet.Alive() || pet == e.Ctx().Opp.CurrentPet { + if pet == nil || !pet.Alive() || pet == e.Ctx().Opp.CurrentPet[0] { continue } pet.Info.ModelHP(-100) @@ -422,12 +422,12 @@ func (e *Effect1300) DamageDivEx(zone *info.DamageZone) bool { type Effect1301 struct{ node.EffectNode } func (e *Effect1301) Skill_Use() bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(alpacadecimal.NewFromInt(300)) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(alpacadecimal.NewFromInt(300)) >= 0 { return true } - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) for _, pet := range e.Ctx().Opp.AllPet { - if pet == nil || !pet.Alive() || pet == e.Ctx().Opp.CurrentPet { + if pet == nil || !pet.Alive() || pet == e.Ctx().Opp.CurrentPet[0] { continue } damage := pet.GetMaxHP().Div(alpacadecimal.NewFromInt(2)) @@ -462,13 +462,13 @@ func (e *Effect1302) OnSkill() bool { type Effect1303 struct{ RoundEffectArg0Base } func (e *Effect1303) OnSkill() bool { - base := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3)) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(2))) < 0 { + base := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3)) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(2))) < 0 { base = base.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: base}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, base) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) == 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) == 0 { healBench(e.Ctx().Our, alpacadecimal.NewFromInt(100)) } return true @@ -519,7 +519,7 @@ func (e *Effect1306) Skill_Use() bool { return true } for _, pet := range e.Ctx().Opp.AllPet { - if pet == nil || !pet.Alive() || pet == e.Ctx().Opp.CurrentPet { + if pet == nil || !pet.Alive() || pet == e.Ctx().Opp.CurrentPet[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.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } healBench(e.Ctx().Our, alpacadecimal.NewFromInt(100)) diff --git a/logic/service/fight/effect/1313_1317.go b/logic/service/fight/effect/1313_1317.go index e88e6d5e4..8a54c7967 100644 --- a/logic/service/fight/effect/1313_1317.go +++ b/logic/service/fight/effect/1313_1317.go @@ -20,7 +20,7 @@ func (e *Effect1313) Skill_Use() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.AttackTime == 0 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1313, 1) if sub != nil { @@ -161,7 +161,7 @@ func (e *Effect1317) Skill_Use() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if heal.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1318_1322.go b/logic/service/fight/effect/1318_1322.go index a5b2adfff..a25688ea7 100644 --- a/logic/service/fight/effect/1318_1322.go +++ b/logic/service/fight/effect/1318_1322.go @@ -29,7 +29,7 @@ func (e *Effect1318) DamageFloor(zone *info.DamageZone) bool { return true } - zone.Damage = e.Ctx().Opp.CurrentPet.GetMaxHP() + zone.Damage = e.Ctx().Opp.CurrentPet[0].GetMaxHP() e.success = true return true } @@ -78,7 +78,7 @@ func (e *Effect1319Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect1319Sub) SwitchOut(in *input.Input) bool { - if in != e.Ctx().Our || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Our.CurrentPet.Alive() { + if in != e.Ctx().Our || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Our.CurrentPet[0].Alive() { return true } e.pending = true @@ -118,7 +118,7 @@ func (e *Effect1320) Skill_Use_ex() bool { func (e *Effect1320) TurnEnd() { if e.triggered && len(e.Args()) >= 2 && e.Args()[1].Cmp(alpacadecimal.Zero) > 0 { - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if drain.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, diff --git a/logic/service/fight/effect/1323_1327.go b/logic/service/fight/effect/1323_1327.go index cc9ba7095..10dcf74f6 100644 --- a/logic/service/fight/effect/1323_1327.go +++ b/logic/service/fight/effect/1323_1327.go @@ -33,16 +33,16 @@ func (e *Effect1323) Skill_Use() bool { type Effect1324 struct{ node.EffectNode } func (e *Effect1324) Skill_Use() bool { - if e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - selfHP := e.Ctx().Our.CurrentPet.GetHP() + selfHP := e.Ctx().Our.CurrentPet[0].GetHP() if selfHP.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: selfHP}) } - damage := e.Ctx().Our.CurrentPet.GetMaxHP() + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP() if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } @@ -98,7 +98,7 @@ func (e *Effect1327) Skill_Use() bool { return true } - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if drain.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1328_1332.go b/logic/service/fight/effect/1328_1332.go index c9c6b838a..539643ae6 100644 --- a/logic/service/fight/effect/1328_1332.go +++ b/logic/service/fight/effect/1328_1332.go @@ -10,7 +10,7 @@ import ( ) func applyEvilDragonBite(owner *input.Input) { - if owner == nil || owner.CurrentPet == nil || owner.Opp == nil || owner.Opp.CurrentPet == nil { + if owner == nil || owner.CurrentPet[0] == nil || owner.Opp == nil || owner.Opp.CurrentPet[0] == nil { return } @@ -167,7 +167,7 @@ func (e *Effect1330Sub) Skill_Use() bool { type Effect1331 struct{ node.EffectNode } func (e *Effect1331) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } diff --git a/logic/service/fight/effect/1333_1337.go b/logic/service/fight/effect/1333_1337.go index 7ff20850d..420d6841a 100644 --- a/logic/service/fight/effect/1333_1337.go +++ b/logic/service/fight/effect/1333_1337.go @@ -133,7 +133,7 @@ func (e *Effect1336) OnSkill() bool { return true } - base := e.Ctx().Our.CurrentPet.GetMaxHP().Add(e.Ctx().Our.GetProp(0)) + base := e.Ctx().Our.CurrentPet[0].GetMaxHP().Add(e.Ctx().Our.GetProp(0)) damage := base.Mul(e.Args()[1]).Div(hundred) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true @@ -154,7 +154,7 @@ func (e *Effect1337) Skill_Use() bool { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) > 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) > 0 { ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) if ok && addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[1].IntPart())) { return true diff --git a/logic/service/fight/effect/1338_1342.go b/logic/service/fight/effect/1338_1342.go index 89573f639..221a3bb26 100644 --- a/logic/service/fight/effect/1338_1342.go +++ b/logic/service/fight/effect/1338_1342.go @@ -70,7 +70,7 @@ func (e *Effect1340) Skill_Use() bool { if e.Ctx().SkillEntity.AttackTime == 0 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1340) if sub != nil { @@ -79,7 +79,7 @@ func (e *Effect1340) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(2)) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(2)) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -149,7 +149,7 @@ func (e *Effect1341) Skill_Use() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if heal.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1343_1347.go b/logic/service/fight/effect/1343_1347.go index 8719873de..ed00bb0d8 100644 --- a/logic/service/fight/effect/1343_1347.go +++ b/logic/service/fight/effect/1343_1347.go @@ -113,10 +113,10 @@ func (e *Effect1345) Skill_Use() bool { return true } - if e.Ctx().Our.CurrentPet != nil { + if e.Ctx().Our.CurrentPet[0] != nil { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) } @@ -129,7 +129,7 @@ func (e *Effect1345) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1353_1357.go b/logic/service/fight/effect/1353_1357.go index 4f5c2a0b6..4000fb856 100644 --- a/logic/service/fight/effect/1353_1357.go +++ b/logic/service/fight/effect/1353_1357.go @@ -87,14 +87,14 @@ func (e *Effect1355) SkillHit_ex() bool { type Effect1356 struct{ node.EffectNode } func (e *Effect1356) OnSkill() bool { - if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Crit == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Crit == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } if e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1358_1362.go b/logic/service/fight/effect/1358_1362.go index 308605bff..1a57fac8b 100644 --- a/logic/service/fight/effect/1358_1362.go +++ b/logic/service/fight/effect/1358_1362.go @@ -74,7 +74,7 @@ func (e *Effect1360) SkillHit() bool { if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } @@ -98,8 +98,8 @@ func (e *Effect1361) Skill_Use() bool { } } if cleared { - if e.Ctx().Our.CurrentPet != nil { - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + if e.Ctx().Our.CurrentPet[0] != nil { + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) } return true } diff --git a/logic/service/fight/effect/1363_1367.go b/logic/service/fight/effect/1363_1367.go index 517a68ecc..44c8d1967 100644 --- a/logic/service/fight/effect/1363_1367.go +++ b/logic/service/fight/effect/1363_1367.go @@ -109,8 +109,8 @@ func (e *Effect1365) OnSkill() bool { return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() - curHP := e.Ctx().Our.CurrentPet.GetHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() + curHP := e.Ctx().Our.CurrentPet[0].GetHP() lostHPPercent := maxHP.Sub(curHP).Mul(hundred).Div(maxHP).IntPart() additionalStacks := lostHPPercent / e.Args()[2].IntPart() chance := int(e.Args()[0].IntPart() + additionalStacks*e.Args()[3].IntPart()) diff --git a/logic/service/fight/effect/1368_1372.go b/logic/service/fight/effect/1368_1372.go index a2cbcf22c..35d327c6b 100644 --- a/logic/service/fight/effect/1368_1372.go +++ b/logic/service/fight/effect/1368_1372.go @@ -89,11 +89,11 @@ func (e *Effect1371) OnSkill() bool { if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1373_1377.go b/logic/service/fight/effect/1373_1377.go index a39d40269..78802c16f 100644 --- a/logic/service/fight/effect/1373_1377.go +++ b/logic/service/fight/effect/1373_1377.go @@ -44,13 +44,13 @@ func (e *Effect1374) DamageFloor(zone *info.DamageZone) bool { return true } - zone.Damage = e.Ctx().Opp.CurrentPet.GetMaxHP() + zone.Damage = e.Ctx().Opp.CurrentPet[0].GetMaxHP() return true } func (e *Effect1374) Skill_Use() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.AttackTime == 0 { - e.Ctx().Our.CurrentPet.Info.Hp = 0 + e.Ctx().Our.CurrentPet[0].Info.Hp = 0 } e.Ctx().Opp.CancelTurn(e.Ctx().Our) @@ -147,7 +147,7 @@ func (e *Effect1376) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[3]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[3]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1378.go b/logic/service/fight/effect/1378.go index 4b25c23c5..ca345179e 100644 --- a/logic/service/fight/effect/1378.go +++ b/logic/service/fight/effect/1378.go @@ -46,7 +46,7 @@ func (e *Effect1378) OnSkill() bool { type Effect1378Sub struct{ RoundEffectArg0Base } func (e *Effect1378Sub) TurnEnd() { - if len(e.Args()) >= 7 && e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if len(e.Args()) >= 7 && e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { changes := []int{ int(e.Args()[1].IntPart()), int(e.Args()[2].IntPart()), diff --git a/logic/service/fight/effect/1386.go b/logic/service/fight/effect/1386.go index 0c7de7340..53c79e93e 100644 --- a/logic/service/fight/effect/1386.go +++ b/logic/service/fight/effect/1386.go @@ -9,10 +9,10 @@ import ( type Effect1386 struct{ node.EffectNode } func (e *Effect1386) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } remove := int(e.Args()[0].IntPart()) diff --git a/logic/service/fight/effect/1393_1397.go b/logic/service/fight/effect/1393_1397.go index 96b34eb89..cc16ac337 100644 --- a/logic/service/fight/effect/1393_1397.go +++ b/logic/service/fight/effect/1393_1397.go @@ -59,7 +59,7 @@ func (e *Effect1393) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[3]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[3]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -108,18 +108,18 @@ type Effect1396 struct { } func (e *Effect1396) TurnEnd() { - if e.Ctx().Our.CurrentPet.Info.Hp > 0 && e.Ctx().Opp.CurrentPet.Info.Hp > 0 && len(e.Args()) >= 4 { + if e.Ctx().Our.CurrentPet[0].Info.Hp > 0 && e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 && len(e.Args()) >= 4 { divisor := e.Args()[1] thresholdDivisor := e.Args()[2] if thresholdDivisor.Cmp(alpacadecimal.Zero) > 0 { - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(thresholdDivisor) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(thresholdDivisor) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { divisor = e.Args()[3] } } if divisor.Cmp(alpacadecimal.Zero) > 0 { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(divisor) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(divisor) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -145,8 +145,8 @@ func (e *Effect1397) OnSkill() bool { boostValue := int8(e.Args()[0].IntPart()) if len(e.Args()) > 1 && e.Args()[1].Cmp(alpacadecimal.Zero) > 0 { - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { boostValue *= 2 } } diff --git a/logic/service/fight/effect/1398_1402.go b/logic/service/fight/effect/1398_1402.go index 143b8b2f8..1822d4ef9 100644 --- a/logic/service/fight/effect/1398_1402.go +++ b/logic/service/fight/effect/1398_1402.go @@ -149,7 +149,7 @@ type Effect1400Sub struct { } func (e *Effect1400Sub) Alive(t ...bool) bool { - if len(t) > 0 && !t[0] && !e.triggered && e.Duration() > 0 && e.Ctx().Opp != nil && e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(t) > 0 && !t[0] && !e.triggered && e.Duration() > 0 && e.Ctx().Opp != nil && e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { e.triggered = true success, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) if success { diff --git a/logic/service/fight/effect/1403_1412.go b/logic/service/fight/effect/1403_1412.go index f763d71c3..c855b9a65 100644 --- a/logic/service/fight/effect/1403_1412.go +++ b/logic/service/fight/effect/1403_1412.go @@ -50,7 +50,7 @@ type Effect1412 struct { } func (e *Effect1412) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().IntPart() >= 300 { + if e.Ctx().Our.CurrentPet[0].GetHP().IntPart() >= 300 { return true } diff --git a/logic/service/fight/effect/1413_1417.go b/logic/service/fight/effect/1413_1417.go index 406a46fbe..86f1022d8 100644 --- a/logic/service/fight/effect/1413_1417.go +++ b/logic/service/fight/effect/1413_1417.go @@ -76,7 +76,7 @@ func (e *Effect1415) Skill_Use() bool { } percent := e.Args()[0] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { percent = e.Args()[1] } heal := e.Ctx().Our.SumDamage.Mul(percent).Div(hundred) @@ -91,12 +91,12 @@ func (e *Effect1415) Skill_Use() bool { type Effect1416 struct{ node.EffectNode } func (e *Effect1416) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { + if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() - selfHP := e.Ctx().Our.CurrentPet.GetHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() + selfHP := e.Ctx().Our.CurrentPet[0].GetHP() if selfHP.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: selfHP}) } diff --git a/logic/service/fight/effect/1423_1427.go b/logic/service/fight/effect/1423_1427.go index 6e6eaf8f6..ba79b6df9 100644 --- a/logic/service/fight/effect/1423_1427.go +++ b/logic/service/fight/effect/1423_1427.go @@ -13,7 +13,7 @@ import ( type Effect1423 struct{ node.EffectNode } func (e *Effect1423) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet == nil || e.Args()[2].Cmp(alpacadecimal.Zero) <= 0 { + if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet[0] == nil || e.Args()[2].Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -27,7 +27,7 @@ func (e *Effect1423) Skill_Use() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } diff --git a/logic/service/fight/effect/1433_1437.go b/logic/service/fight/effect/1433_1437.go index 5a78cac73..eaa39fdd8 100644 --- a/logic/service/fight/effect/1433_1437.go +++ b/logic/service/fight/effect/1433_1437.go @@ -14,14 +14,14 @@ func effectOwnerPetByCatchTime(our *input.Input, catchTime uint32) *info.BattleP return nil } if catchTime == 0 { - return our.CurrentPet + return our.CurrentPet[0] } for _, pet := range our.AllPet { if pet != nil && pet.Info.CatchTime == catchTime { return pet } } - return our.CurrentPet + return our.CurrentPet[0] } func effectOwnerAliveByCatchTime(our *input.Input, catchTime uint32) bool { @@ -43,7 +43,7 @@ func (e *Effect1433) Skill_Use() bool { return true } - if ownerPet == e.Ctx().Our.CurrentPet { + if ownerPet == e.Ctx().Our.CurrentPet[0] { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: lost, @@ -139,9 +139,9 @@ func (e *Effect1436) Skill_Use() bool { if len(e.Args()) < 2 { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } } diff --git a/logic/service/fight/effect/1443_1447.go b/logic/service/fight/effect/1443_1447.go index 0f1d7631f..0e966b168 100644 --- a/logic/service/fight/effect/1443_1447.go +++ b/logic/service/fight/effect/1443_1447.go @@ -29,16 +29,16 @@ func (e *Effect1443) SkillHit() bool { type Effect1444 struct{ node.EffectNode } func (e *Effect1444) SkillHit() bool { - if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().Our.CurrentPet == nil { + if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().Our.CurrentPet[0] == nil { return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() if maxHP.Cmp(alpacadecimal.Zero) <= 0 { return true } - power := alpacadecimal.NewFromInt(165).Sub(e.Ctx().Our.CurrentPet.GetHP().Div(maxHP).Mul(alpacadecimal.NewFromInt(65))) + power := alpacadecimal.NewFromInt(165).Sub(e.Ctx().Our.CurrentPet[0].GetHP().Div(maxHP).Mul(alpacadecimal.NewFromInt(65))) if power.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().SkillEntity.XML.Power = int(power.IntPart()) } @@ -140,15 +140,15 @@ func (e *Effect1446Sub) ShieldChange(before, after alpacadecimal.Decimal) bool { type Effect1447 struct{ node.EffectNode } func (e *Effect1447) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet == nil || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { + if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet[0] == nil || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() if maxHP.Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[0]).Cmp(maxHP) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[0]).Cmp(maxHP) <= 0 { return true } diff --git a/logic/service/fight/effect/1448_1472.go b/logic/service/fight/effect/1448_1472.go index a571d2709..e5bb8ca26 100644 --- a/logic/service/fight/effect/1448_1472.go +++ b/logic/service/fight/effect/1448_1472.go @@ -46,11 +46,11 @@ func randomSkillPPZero(target *input.Input, count int) { type Effect1448 struct{ node.EffectNode } func (e *Effect1448) Damage_Mul(zone *info.DamageZone) bool { - if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 2 || e.Ctx().Our.CurrentPet == nil { + if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 2 || e.Ctx().Our.CurrentPet[0] == nil { return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() - curHP := e.Ctx().Our.CurrentPet.GetHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() + curHP := e.Ctx().Our.CurrentPet[0].GetHP() if curHP.Mul(e.Args()[0]).Cmp(maxHP) >= 0 { return true } @@ -96,7 +96,7 @@ func (e *Effect1450) Skill_Use() bool { return true } drain := e.Args()[0] - for _, s := range e.Ctx().Opp.CurrentPet.Info.SkillList { + for _, s := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { if s.PP < uint32(e.Args()[1].IntPart()) { drain = drain.Mul(alpacadecimal.NewFromInt(2)) break @@ -114,11 +114,11 @@ func (e *Effect1451) Skill_Use() bool { if len(e.Args()) < 2 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) > 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) > 0 { e.Ctx().Our.AddShield(e.Args()[0]) return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) return true } @@ -196,7 +196,7 @@ func (e *Effect1455) Damage_Mul(zone *info.DamageZone) bool { maxHits := int(e.Args()[1].IntPart()) zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(int64(maxHits))) if maxHits > 0 { - e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Opp.CurrentPet.GetHP()}) + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Opp.CurrentPet[0].GetHP()}) } return true } @@ -208,8 +208,8 @@ func (e *Effect1456) Skill_Use() bool { if len(e.Args()) < 2 { return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: maxHP.Div(e.Args()[0])}) eff := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1456, e.SideEffectArgs...) if eff != nil { @@ -322,9 +322,9 @@ func (e *Effect1461) Skill_Use() bool { if len(e.Args()) == 0 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: heal}) } return true @@ -382,11 +382,11 @@ func (e *Effect1463Sub) DamageLock(zone *info.DamageZone) bool { if zone == nil || zone.Damage.Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(zone.Damage) > 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(zone.Damage) > 0 { return true } zone.Damage = alpacadecimal.Zero - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } @@ -394,7 +394,7 @@ func (e *Effect1463Sub) DamageLock(zone *info.DamageZone) bool { type Effect1464 struct{ node.EffectNode } func (e *Effect1464) OnSkill() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 || len(e.Args()) < 3 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 || len(e.Args()) < 3 { return true } if !e.Ctx().Opp.StatEffect_Exist(info.EnumPetStatus(e.Args()[0].IntPart())) { @@ -521,7 +521,7 @@ func (e *Effect1470) SkillHit() bool { if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - e.Ctx().SkillEntity.XML.Power += int(e.Ctx().Our.CurrentPet.Info.Dv) + e.Ctx().SkillEntity.XML.Power += int(e.Ctx().Our.CurrentPet[0].Info.Dv) return true } @@ -545,7 +545,7 @@ func (e *Effect1471) Skill_Use() bool { } return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) return true } diff --git a/logic/service/fight/effect/1473_1497.go b/logic/service/fight/effect/1473_1497.go index 34738ae7b..dc08a8eb1 100644 --- a/logic/service/fight/effect/1473_1497.go +++ b/logic/service/fight/effect/1473_1497.go @@ -87,7 +87,7 @@ func (e *Effect1476) Skill_Use() bool { return true } delta := int8(-e.Args()[0].IntPart()) - if e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[1]).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[1]).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { delta *= 2 } for i := range e.Ctx().Opp.Prop[:] { @@ -114,7 +114,7 @@ func (e *Effect1477) Skill_Use() bool { } } if cleared { - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: drain}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, drain) } @@ -148,7 +148,7 @@ func (e *Effect1479) Skill_Use() bool { if len(e.Args()) == 0 { return true } - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) eff := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1479, e.SideEffectArgs...) if eff != nil { e.Ctx().Opp.AddEffect(e.Ctx().Our, eff) @@ -262,7 +262,7 @@ func (e *Effect1483Sub) SkillHit_ex() bool { type Effect1484 struct{ node.EffectNode } func (e *Effect1484) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { return true } current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) @@ -442,7 +442,7 @@ func (e *Effect1492) OnSkill() bool { type Effect1493 struct{ node.EffectNode } func (e *Effect1493) Skill_Use() bool { - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) eff := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1493) if eff != nil { e.Ctx().Our.AddEffect(e.Ctx().Our, eff) @@ -464,7 +464,7 @@ func (e *Effect1493Sub) SwitchIn(in *input.Input) bool { type Effect1494 struct{ node.EffectNode } func (e *Effect1494) OnSkill() bool { - if len(e.Args()) < 2 || e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) != 0 { + if len(e.Args()) < 2 || e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) != 0 { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { @@ -503,7 +503,7 @@ func (e *Effect1496) Skill_Use() bool { if len(e.Args()) < 3 { return true } - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) e.Ctx().Our.AddShield(e.Args()[0]) eff := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1496, e.SideEffectArgs...) if eff != nil { diff --git a/logic/service/fight/effect/1498_1502.go b/logic/service/fight/effect/1498_1502.go index 93abd3e4a..bb6ca9a83 100644 --- a/logic/service/fight/effect/1498_1502.go +++ b/logic/service/fight/effect/1498_1502.go @@ -49,7 +49,7 @@ func reduceRandomSkillPP(target *input.Input) { return } - skills := target.CurrentPet.Info.SkillList + skills := target.CurrentPet[0].Info.SkillList if len(skills) == 0 { return } @@ -130,8 +130,8 @@ func (e *Effect1499) ComparePre(fattack, sattack *action.SelectSkillAction) bool return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() - if e.Ctx().Our.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(3)).Cmp(maxHP) >= 0 { + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(3)).Cmp(maxHP) >= 0 { return true } @@ -190,7 +190,7 @@ func (e *Effect1501) Skill_Use() bool { if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.AttackTime == 0 { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -220,7 +220,7 @@ func (e *Effect1501Sub) SwitchOut(in *input.Input) bool { } func (e *Effect1501Sub) TurnEnd() { - if e.Ctx().Our.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp <= 0 { return } diff --git a/logic/service/fight/effect/1503_1507.go b/logic/service/fight/effect/1503_1507.go index 7127c26eb..f0f0d7e38 100644 --- a/logic/service/fight/effect/1503_1507.go +++ b/logic/service/fight/effect/1503_1507.go @@ -60,11 +60,11 @@ func darkSeedStage(target *input.Input) int { } func hasDragonType(target *input.Input) bool { - if target == nil || target.CurrentPet == nil { + if target == nil || target.CurrentPet[0] == nil { return false } - petType := target.CurrentPet.GetType() + petType := target.CurrentPet[0].GetType() if petType == nil { return false } diff --git a/logic/service/fight/effect/1508_1512.go b/logic/service/fight/effect/1508_1512.go index d58685fdb..9bc7288ca 100644 --- a/logic/service/fight/effect/1508_1512.go +++ b/logic/service/fight/effect/1508_1512.go @@ -103,7 +103,7 @@ func (e *Effect1509) Skill_Use() bool { if skill != nil && skill.AttackTime == 0 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetMaxHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetMaxHP(), }) applyAllPropDown(e.Ctx().Our, e.Ctx().Opp, 1) @@ -175,10 +175,10 @@ func (e *Effect1510Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect1510Sub) SwitchOut(in *input.Input) bool { - if in != e.Ctx().Our || e.Ctx().Our.CurrentPet == nil { + if in != e.Ctx().Our || e.Ctx().Our.CurrentPet[0] == nil { return true } - if e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { e.pending = true } return true diff --git a/logic/service/fight/effect/1513_1517.go b/logic/service/fight/effect/1513_1517.go index 103db0ffd..d8891f016 100644 --- a/logic/service/fight/effect/1513_1517.go +++ b/logic/service/fight/effect/1513_1517.go @@ -14,11 +14,11 @@ const effect1514SpecialPetName = "混元天尊" var effect151xBahuangMaxHPLoss = alpacadecimal.NewFromInt(20) func reduceCurrentPetMaxHPFlat(target *input.Input, loss alpacadecimal.Decimal) bool { - if target == nil || target.CurrentPet == nil || loss.Cmp(alpacadecimal.Zero) <= 0 { + if target == nil || target.CurrentPet[0] == nil || loss.Cmp(alpacadecimal.Zero) <= 0 { return false } - currentMax := target.CurrentPet.GetMaxHP() + currentMax := target.CurrentPet[0].GetMaxHP() if currentMax.Cmp(alpacadecimal.Zero) <= 0 { return false } @@ -31,9 +31,9 @@ func reduceCurrentPetMaxHPFlat(target *input.Input, loss alpacadecimal.Decimal) return false } - target.CurrentPet.Info.MaxHp = uint32(newMax.IntPart()) - if target.CurrentPet.Info.Hp > target.CurrentPet.Info.MaxHp { - target.CurrentPet.Info.Hp = target.CurrentPet.Info.MaxHp + target.CurrentPet[0].Info.MaxHp = uint32(newMax.IntPart()) + if target.CurrentPet[0].Info.Hp > target.CurrentPet[0].Info.MaxHp { + target.CurrentPet[0].Info.Hp = target.CurrentPet[0].Info.MaxHp } return true } @@ -62,11 +62,11 @@ func (e *Effect1513) OnSkill() bool { type Effect1514 struct{ node.EffectNode } func (e *Effect1514) Skill_Use() bool { - if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1514) if sub != nil { e.Ctx().Our.AddEffect(e.Ctx().Our, sub) @@ -83,12 +83,12 @@ func (e *Effect1514PendingSub) SetArgs(t *input.Input, a ...int) { } func (e *Effect1514PendingSub) SwitchIn(in *input.Input) bool { - if in != e.Ctx().Our || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if in != e.Ctx().Our || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } remaining := 2 - if e.Ctx().Our.CurrentPet.Info.Name == effect1514SpecialPetName { + if e.Ctx().Our.CurrentPet[0].Info.Name == effect1514SpecialPetName { remaining = 3 } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 15141, remaining) @@ -110,14 +110,14 @@ func (e *Effect1514BahuangSub) SetArgs(t *input.Input, a ...int) { e.EffectNode.SetArgs(t, a...) e.Duration(-1) e.CanStack(false) - e.trackedPet = t.CurrentPet + e.trackedPet = t.CurrentPet[0] if len(a) > 0 { e.remaining = a[0] } } func (e *Effect1514BahuangSub) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.trackedPet == nil || e.Ctx().Our.CurrentPet != e.trackedPet || e.remaining <= 0 { + if e.trackedPet == nil || e.Ctx().Our.CurrentPet[0] != e.trackedPet || e.remaining <= 0 { e.Alive(false) return true } @@ -177,10 +177,10 @@ func (e *Effect1514BahuangSub) SwitchOut(in *input.Input) bool { type Effect1515 struct{ node.EffectNode } func (e *Effect1515) Damage_Mul(zone *info.DamageZone) bool { - if len(e.Args()) < 5 || zone == nil || zone.Type != info.DamageType.Red || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 5 || zone == nil || zone.Type != info.DamageType.Red || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Opp.CurrentPet.GetMaxHP().Cmp(e.Args()[0]) <= 0 { + if e.Ctx().Opp.CurrentPet[0].GetMaxHP().Cmp(e.Args()[0]) <= 0 { return true } @@ -189,10 +189,10 @@ func (e *Effect1515) Damage_Mul(zone *info.DamageZone) bool { } func (e *Effect1515) OnSkill() bool { - if len(e.Args()) < 5 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 5 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Opp.CurrentPet.GetMaxHP().Cmp(e.Args()[2]) >= 0 { + if e.Ctx().Opp.CurrentPet[0].GetMaxHP().Cmp(e.Args()[2]) >= 0 { return true } @@ -231,11 +231,11 @@ func (e *Effect1516Sub) SetArgs(t *input.Input, a ...int) { e.EffectNode.SetArgs(t, a...) e.Duration(3) e.CanStack(false) - e.trackedPet = t.CurrentPet + e.trackedPet = t.CurrentPet[0] } func (e *Effect1516Sub) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.trackedPet == nil || e.Ctx().Our.CurrentPet != e.trackedPet { + if e.trackedPet == nil || e.Ctx().Our.CurrentPet[0] != e.trackedPet { e.Alive(false) return true } @@ -289,7 +289,7 @@ func (e *Effect1516Sub) SwitchOut(in *input.Input) bool { type Effect1517 struct{ node.EffectNode } func (e *Effect1517) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1518_1522.go b/logic/service/fight/effect/1518_1522.go index 18396f512..54e64bdf0 100644 --- a/logic/service/fight/effect/1518_1522.go +++ b/logic/service/fight/effect/1518_1522.go @@ -13,14 +13,14 @@ import ( type Effect1518 struct{ node.EffectNode } func (e *Effect1518) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(alpacadecimal.Zero) > 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) } @@ -80,10 +80,10 @@ func (e *Effect1519) Skill_Use() bool { type Effect1520 struct{ node.EffectNode } func (e *Effect1520) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - if e.Ctx().Opp.CurrentPet.Info.Gender != 1 { + if e.Ctx().Opp.CurrentPet[0].Info.Gender != 1 { return true } @@ -92,7 +92,7 @@ func (e *Effect1520) Skill_Use() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(denom) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(denom) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -131,10 +131,10 @@ func (e *Effect1520Sub) ComparePre(fattack, sattack *action.SelectSkillAction) b type Effect1521 struct{ node.EffectNode } func (e *Effect1521) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - if e.Ctx().Opp.CurrentPet.Info.Gender != 2 { + if e.Ctx().Opp.CurrentPet[0].Info.Gender != 2 { return true } @@ -143,7 +143,7 @@ func (e *Effect1521) Skill_Use() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(denom) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(denom) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } diff --git a/logic/service/fight/effect/1523_1527.go b/logic/service/fight/effect/1523_1527.go index 5d2cf53b2..f02b37731 100644 --- a/logic/service/fight/effect/1523_1527.go +++ b/logic/service/fight/effect/1523_1527.go @@ -73,8 +73,8 @@ func (e *Effect1524) Skill_Use() bool { } if transferSelfStatDowns(e.Ctx().Our, e.Ctx().Opp) { - if e.Ctx().Our.CurrentPet != nil { - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + if e.Ctx().Our.CurrentPet[0] != nil { + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) } return true } @@ -95,7 +95,7 @@ func (e *Effect1525) SkillHit() bool { } chance := int(e.Args()[0].IntPart()) - if e.Ctx().Our.CurrentPet != nil && e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { chance *= 2 if chance > 100 { chance = 100 @@ -162,12 +162,12 @@ func (e *Effect1526) Skill_Use_ex() bool { if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.AttackTime != 0 { return true } - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - for idx := range e.Ctx().Opp.CurrentPet.Info.SkillList { - skill := &e.Ctx().Opp.CurrentPet.Info.SkillList[idx] + for idx := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { + skill := &e.Ctx().Opp.CurrentPet[0].Info.SkillList[idx] if skill.PP > 0 { skill.PP-- } diff --git a/logic/service/fight/effect/1528_1532.go b/logic/service/fight/effect/1528_1532.go index e2e1c9f69..1d90d06ff 100644 --- a/logic/service/fight/effect/1528_1532.go +++ b/logic/service/fight/effect/1528_1532.go @@ -13,9 +13,9 @@ func dealFixedDamage(target *input.Input, owner *input.Input, value alpacadecima return alpacadecimal.Zero } - before := target.CurrentPet.GetHP() + before := target.CurrentPet[0].GetHP() target.Damage(owner, &info.DamageZone{Type: info.DamageType.Fixed, Damage: value}) - after := target.CurrentPet.GetHP() + after := target.CurrentPet[0].GetHP() return before.Sub(after) } diff --git a/logic/service/fight/effect/1533_1537.go b/logic/service/fight/effect/1533_1537.go index ce1713412..b4a26d5ec 100644 --- a/logic/service/fight/effect/1533_1537.go +++ b/logic/service/fight/effect/1533_1537.go @@ -89,7 +89,7 @@ func (e *Effect1534) Skill_Use() bool { return true } - reducePetSkillPP(e.Ctx().Opp.CurrentPet, 1) + reducePetSkillPP(e.Ctx().Opp.CurrentPet[0], 1) return true } diff --git a/logic/service/fight/effect/1538_1542.go b/logic/service/fight/effect/1538_1542.go index ba5961202..d258ba65a 100644 --- a/logic/service/fight/effect/1538_1542.go +++ b/logic/service/fight/effect/1538_1542.go @@ -63,12 +63,12 @@ func (e *Effect1540) Skill_Use() bool { if len(e.Args()) < 2 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) <= 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) <= 0 { return true } diff --git a/logic/service/fight/effect/1543_1547.go b/logic/service/fight/effect/1543_1547.go index 6628226ec..b8714bccb 100644 --- a/logic/service/fight/effect/1543_1547.go +++ b/logic/service/fight/effect/1543_1547.go @@ -51,7 +51,7 @@ func (c *chargeRecord) setSkipConsume(skip bool) { type Effect1543 struct{ node.EffectNode } func (e *Effect1543) Skill_Use() bool { - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } if rec := getChargeRecord(e.Ctx().Our); rec != nil { diff --git a/logic/service/fight/effect/1548_1552.go b/logic/service/fight/effect/1548_1552.go index eb675410e..3659695f8 100644 --- a/logic/service/fight/effect/1548_1552.go +++ b/logic/service/fight/effect/1548_1552.go @@ -15,7 +15,7 @@ import ( type Effect1548 struct{ node.EffectNode } func (e *Effect1548) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1548, int(e.Args()[0].IntPart())) @@ -92,7 +92,7 @@ func (e *Effect1549Sub) ComparePre(fattack, sattack *action.SelectSkillAction) b type Effect1550 struct{ node.EffectNode } func (e *Effect1550) Skill_Use() bool { - if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } @@ -104,7 +104,7 @@ func (e *Effect1550) Skill_Use() bool { return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() loss := maxHP.Div(alpacadecimal.NewFromInt(2)) if loss.Cmp(alpacadecimal.Zero) <= 0 { return true @@ -118,9 +118,9 @@ func (e *Effect1550) Skill_Use() bool { return true } - e.Ctx().Our.CurrentPet.Info.MaxHp = uint32(newMax.IntPart()) - if e.Ctx().Our.CurrentPet.Info.Hp > e.Ctx().Our.CurrentPet.Info.MaxHp { - e.Ctx().Our.CurrentPet.Info.Hp = e.Ctx().Our.CurrentPet.Info.MaxHp + e.Ctx().Our.CurrentPet[0].Info.MaxHp = uint32(newMax.IntPart()) + if e.Ctx().Our.CurrentPet[0].Info.Hp > e.Ctx().Our.CurrentPet[0].Info.MaxHp { + e.Ctx().Our.CurrentPet[0].Info.Hp = e.Ctx().Our.CurrentPet[0].Info.MaxHp } damage := loss.Mul(alpacadecimal.NewFromInt(2)).Div(alpacadecimal.NewFromInt(3)) @@ -137,7 +137,7 @@ func (e *Effect1550) Skill_Use() bool { type Effect1551 struct{ node.EffectNode } func (e *Effect1551) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 2 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } @@ -145,7 +145,7 @@ func (e *Effect1551) Skill_Use() bool { oppTriggered, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) if selfTriggered { - damage := e.Ctx().Our.CurrentPet.GetHP() + damage := e.Ctx().Our.CurrentPet[0].GetHP() if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: damage}) } @@ -153,7 +153,7 @@ func (e *Effect1551) Skill_Use() bool { } if oppTriggered { - damage := e.Ctx().Opp.CurrentPet.GetHP() + damage := e.Ctx().Opp.CurrentPet[0].GetHP() if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: damage}) } @@ -167,7 +167,7 @@ func (e *Effect1551) Skill_Use() bool { e.Ctx().Our.Heal( e.Ctx().Our, &action.SelectSkillAction{BaseAction: action.BaseAction{PlayerID: e.Ctx().Our.UserID}}, - e.Ctx().Our.CurrentPet.GetMaxHP(), + e.Ctx().Our.CurrentPet[0].GetMaxHP(), ) return true } diff --git a/logic/service/fight/effect/155.go b/logic/service/fight/effect/155.go index 6bad4293a..b09a88b55 100644 --- a/logic/service/fight/effect/155.go +++ b/logic/service/fight/effect/155.go @@ -14,7 +14,7 @@ type Effect155 struct { func (e *Effect155) OnSkill() bool { // 恢复全部体力 - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, maxHp) // 消除所有能力下降 diff --git a/logic/service/fight/effect/1553_1557.go b/logic/service/fight/effect/1553_1557.go index ec6a67ae7..428c5856d 100644 --- a/logic/service/fight/effect/1553_1557.go +++ b/logic/service/fight/effect/1553_1557.go @@ -22,8 +22,8 @@ func (e *Effect1553) Skill_Use() bool { return true } - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) <= 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) <= 0 { return true } @@ -49,8 +49,8 @@ func (e *Effect1554) Skill_Use() bool { return true } - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) >= 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) >= 0 { return true } diff --git a/logic/service/fight/effect/1558_1562.go b/logic/service/fight/effect/1558_1562.go index e9384ad66..ebae567ce 100644 --- a/logic/service/fight/effect/1558_1562.go +++ b/logic/service/fight/effect/1558_1562.go @@ -127,8 +127,8 @@ func (e *Effect1561) Skill_Use() bool { return true } - ourMaxHP := e.Ctx().Our.CurrentPet.GetMaxHP() - oppMaxHP := e.Ctx().Opp.CurrentPet.GetMaxHP() + ourMaxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() + oppMaxHP := e.Ctx().Opp.CurrentPet[0].GetMaxHP() shieldValue := ourMaxHP.Sub(oppMaxHP) if shieldValue.Cmp(alpacadecimal.Zero) < 0 { shieldValue = shieldValue.Mul(alpacadecimal.NewFromInt(-1)) @@ -165,7 +165,7 @@ func (e *Effect1561Sub) SetArgs(t *input.Input, a ...int) { e.EffectNode.SetArgs(t, a...) e.Duration(-1) e.CanStack(false) - e.trackedPet = t.CurrentPet + e.trackedPet = t.CurrentPet[0] if len(a) > 0 { e.shieldValue = alpacadecimal.NewFromInt(int64(a[0])) } @@ -175,7 +175,7 @@ func (e *Effect1561Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect1561Sub) Damage_Shield(zone *info.DamageZone) bool { - if e.trackedPet == nil || e.Ctx().Our.CurrentPet != e.trackedPet { + if e.trackedPet == nil || e.Ctx().Our.CurrentPet[0] != e.trackedPet { return true } if zone == nil || zone.Damage.Cmp(alpacadecimal.Zero) <= 0 || e.shieldValue.Cmp(alpacadecimal.Zero) <= 0 { @@ -231,7 +231,7 @@ func (e *Effect1561PowerSub) SetArgs(t *input.Input, a ...int) { e.EffectNode.SetArgs(t, a...) e.Duration(-1) e.CanStack(false) - e.trackedPet = t.CurrentPet + e.trackedPet = t.CurrentPet[0] if len(a) > 0 { e.bonusPower = a[0] } @@ -241,7 +241,7 @@ func (e *Effect1561PowerSub) SetArgs(t *input.Input, a ...int) { } func (e *Effect1561PowerSub) SkillHit() bool { - if e.trackedPet == nil || e.Ctx().Our.CurrentPet != e.trackedPet || e.remaining <= 0 { + if e.trackedPet == nil || e.Ctx().Our.CurrentPet[0] != e.trackedPet || e.remaining <= 0 { return true } if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { @@ -309,10 +309,10 @@ func (e *Effect1562Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect1562Sub) SwitchOut(in *input.Input) bool { - if in != e.Ctx().Our || e.Ctx().Our.CurrentPet == nil { + if in != e.Ctx().Our || e.Ctx().Our.CurrentPet[0] == nil { return true } - if e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { e.pending = true } return true diff --git a/logic/service/fight/effect/1563_1567.go b/logic/service/fight/effect/1563_1567.go index 85b0d3e36..302423935 100644 --- a/logic/service/fight/effect/1563_1567.go +++ b/logic/service/fight/effect/1563_1567.go @@ -21,8 +21,8 @@ func (e *Effect1563) Skill_Use() bool { selfDamage := e.Args()[0] oppDamage := e.Args()[1] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Args()[2]) < 0 { - selfDamage = e.Ctx().Our.CurrentPet.GetHP() + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Args()[2]) < 0 { + selfDamage = e.Ctx().Our.CurrentPet[0].GetHP() oppDamage = oppDamage.Mul(alpacadecimal.NewFromInt(2)) } @@ -53,7 +53,7 @@ func (e *Effect1564) Skill_Use() bool { healAmount := e.Args()[0] e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) - if e.Ctx().Our.CurrentPet.Info.Dv != 31 { + if e.Ctx().Our.CurrentPet[0].Info.Dv != 31 { return true } diff --git a/logic/service/fight/effect/1568_1572.go b/logic/service/fight/effect/1568_1572.go index bf8dd64ef..e1eca6fdb 100644 --- a/logic/service/fight/effect/1568_1572.go +++ b/logic/service/fight/effect/1568_1572.go @@ -106,10 +106,10 @@ func (e *Effect1569Sub) Damage_Mul(zone *info.DamageZone) bool { type Effect1570 struct{ node.EffectNode } func (e *Effect1570) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) @@ -120,7 +120,7 @@ func (e *Effect1570) Skill_Use() bool { if e.Args()[2].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1573_1577.go b/logic/service/fight/effect/1573_1577.go index 3a184d74c..f30e20e3f 100644 --- a/logic/service/fight/effect/1573_1577.go +++ b/logic/service/fight/effect/1573_1577.go @@ -136,10 +136,10 @@ func (e *Effect1575Sub) ComparePre(fattack, sattack *action.SelectSkillAction) b type Effect1576 struct{ node.EffectNode } func (e *Effect1576) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil { return true } - damage := e.Ctx().Our.CurrentPet.GetHP() + damage := e.Ctx().Our.CurrentPet[0].GetHP() if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: damage}) } diff --git a/logic/service/fight/effect/1578_1582.go b/logic/service/fight/effect/1578_1582.go index 677ce487a..6060f61ce 100644 --- a/logic/service/fight/effect/1578_1582.go +++ b/logic/service/fight/effect/1578_1582.go @@ -111,14 +111,14 @@ type Effect1580 struct { func (e *Effect1580) SkillHit() bool { e.active = false - if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { return true } if e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - threshold := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) - e.active = e.Ctx().Opp.CurrentPet.GetHP().Cmp(threshold) > 0 + threshold := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + e.active = e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(threshold) > 0 return true } @@ -142,14 +142,14 @@ func (e *Effect1580) Skill_Use() bool { type Effect1581 struct{ node.EffectNode } func (e *Effect1581) Damage_Mul(zone *info.DamageZone) bool { - if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { return true } if e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - threshold := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(threshold) >= 0 { + threshold := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(threshold) >= 0 { return true } zone.Damage = zone.Damage.Mul(hundred.Add(e.Args()[1])).Div(hundred) diff --git a/logic/service/fight/effect/1583_1587.go b/logic/service/fight/effect/1583_1587.go new file mode 100644 index 000000000..c9207cbd8 --- /dev/null +++ b/logic/service/fight/effect/1583_1587.go @@ -0,0 +1,202 @@ +package effect + +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" +) + +// Effect 1583: 后出手时附加当前战斗回合数×{0}的固定伤害 +type Effect1583 struct{ node.EffectNode } + +func (e *Effect1583) Skill_Use() bool { + if len(e.Args()) == 0 || e.IsFirst() || e.Ctx().Our == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Our.FightC == nil { + return true + } + round := int64(e.Ctx().Our.FightC.GetOverInfo().Round) + if round <= 0 { + round = 1 + } + damage := alpacadecimal.NewFromInt(round).Mul(e.Args()[0]) + if damage.Cmp(alpacadecimal.Zero) <= 0 { + return true + } + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: damage}) + return true +} + +// Effect 1584: 出手时若自身未满体力则下回合自身受到的攻击伤害减少{0}% +type Effect1584 struct{ node.EffectNode } + +func (e *Effect1584) Skill_Use() bool { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { + return true + } + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { + return true + } + sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1584, int(e.Args()[0].IntPart())) + if sub != nil { + e.Ctx().Our.AddEffect(e.Ctx().Our, sub) + } + return true +} + +type Effect1584Sub struct{ node.EffectNode } + +func (e *Effect1584Sub) SetArgs(t *input.Input, a ...int) { + e.EffectNode.SetArgs(t, a...) + e.Duration(1) + e.CanStack(false) +} + +func (e *Effect1584Sub) DamageDivEx(zone *info.DamageZone) bool { + if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) == 0 { + return true + } + zone.Damage = zone.Damage.Mul(hundred.Sub(e.Args()[0])).Div(hundred) + return true +} + +// Effect 1585: {0}回合内若对手使用攻击技能则自身下{1}回合必定暴击 +type Effect1585 struct{ node.EffectNode } + +func (e *Effect1585) Skill_Use() bool { + if len(e.Args()) < 2 || e.Ctx().Opp == nil { + return true + } + sub := e.Ctx().Opp.InitEffect(input.EffectType.Sub, 1585, int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart())) + if sub != nil { + if wired, ok := sub.(*Effect1585Sub); ok { + wired.owner = e.Ctx().Our + } + e.Ctx().Opp.AddEffect(e.Ctx().Our, sub) + } + return true +} + +type Effect1585Sub struct { + RoundEffectArg0Base + owner *input.Input + buffDuration int + triggered bool +} + +func (e *Effect1585Sub) SetArgs(t *input.Input, a ...int) { + e.RoundEffectArg0Base.SetArgs(t, a...) + e.CanStack(false) + if len(a) > 1 { + e.buffDuration = a[1] + } +} + +func (e *Effect1585Sub) Action_end() bool { + if e.triggered || e.owner == nil || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + return true + } + e.triggered = true + sub := e.owner.InitEffect(input.EffectType.Sub, 15851, e.buffDuration) + if sub != nil { + e.owner.AddEffect(e.owner, sub) + } + e.Alive(false) + return true +} + +type Effect1585CritSub struct{ RoundEffectArg0Base } + +func (e *Effect1585CritSub) SetArgs(t *input.Input, a ...int) { + e.RoundEffectArg0Base.SetArgs(t, a...) + e.CanStack(false) +} + +func (e *Effect1585CritSub) ActionStart(a, b *action.SelectSkillAction) bool { + if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + e.Ctx().SkillEntity.XML.CritRate = 16 + return true +} + +// Effect 1586: {0}%令对手{1},若对手已处于{2}状态则将此状态刷新至{3}回合 +type Effect1586 struct{ node.EffectNode } + +func (e *Effect1586) Skill_Use() bool { + if len(e.Args()) < 4 || e.Ctx().Our == nil || e.Ctx().Opp == nil { + return true + } + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); !ok { + return true + } + + refreshStatusID := int(e.Args()[2].IntPart()) + if eff := getAliveStatusEffect(e.Ctx().Opp, refreshStatusID); eff != nil { + eff.Duration(int(e.Args()[3].IntPart())) + return true + } + + addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[1].IntPart())) + return true +} + +// Effect 1587: 当回合击败对手则下回合自身攻击先制+{0} +type Effect1587 struct{ node.EffectNode } + +func (e *Effect1587) Skill_Use() bool { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { + return true + } + sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1587, int(e.Args()[0].IntPart())) + if sub != nil { + e.Ctx().Our.AddEffect(e.Ctx().Our, sub) + } + return true +} + +type Effect1587Sub struct { + node.EffectNode + remaining int + priority int +} + +func (e *Effect1587Sub) SetArgs(t *input.Input, a ...int) { + e.EffectNode.SetArgs(t, a...) + e.Duration(-1) + e.CanStack(false) + e.remaining = 1 + if len(a) > 0 { + e.priority = a[0] + } +} + +func (e *Effect1587Sub) ComparePre(fattack, sattack *action.SelectSkillAction) bool { + if e.remaining <= 0 { + e.Alive(false) + return true + } + current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) + if current == nil || current.SkillEntity == nil || current.SkillEntity.Category() == info.Category.STATUS { + return true + } + current.SkillEntity.XML.Priority += e.priority + e.remaining-- + if e.remaining <= 0 { + e.Alive(false) + } + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 1583, &Effect1583{}) + input.InitEffect(input.EffectType.Skill, 1584, &Effect1584{}) + input.InitEffect(input.EffectType.Sub, 1584, &Effect1584Sub{}) + input.InitEffect(input.EffectType.Skill, 1585, &Effect1585{}) + input.InitEffect(input.EffectType.Sub, 1585, &Effect1585Sub{}) + input.InitEffect(input.EffectType.Sub, 15851, &Effect1585CritSub{}) + input.InitEffect(input.EffectType.Skill, 1586, &Effect1586{}) + input.InitEffect(input.EffectType.Skill, 1587, &Effect1587{}) + input.InitEffect(input.EffectType.Sub, 1587, &Effect1587Sub{}) +} diff --git a/logic/service/fight/effect/1588_1592.go b/logic/service/fight/effect/1588_1592.go new file mode 100644 index 000000000..e1af39ac2 --- /dev/null +++ b/logic/service/fight/effect/1588_1592.go @@ -0,0 +1,152 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" + + "github.com/alpacahq/alpacadecimal" + "github.com/gogf/gf/v2/util/grand" +) + +// Effect 1588: 自身体力低于对手则为自身附加{0}点护盾且附加等量的固定伤害 +type Effect1588 struct{ node.EffectNode } + +func (e *Effect1588) Skill_Use() bool { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Opp == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { + return true + } + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { + return true + } + shield := e.Args()[0] + if shield.Cmp(alpacadecimal.Zero) <= 0 { + return true + } + e.Ctx().Our.AddShield(shield) + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: shield}) + return true +} + +// Effect 1589: 若对手处于异常状态则令对手随机{0}项技能PP值归零 +type Effect1589 struct{ node.EffectNode } + +func (e *Effect1589) Skill_Use() bool { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || !e.Ctx().Opp.StatEffect_Exist_all() { + return true + } + zeroRandomSkillPP(e.Ctx().Opp, int(e.Args()[0].IntPart())) + return true +} + +// Effect 1590: 自身体力低于对手时100%的概率打出致命一击 +type Effect1590 struct{ node.EffectNode } + +func (e *Effect1590) SkillHit() bool { + if e.Ctx().Our == nil || e.Ctx().Opp == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().SkillEntity == nil { + return true + } + if e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { + return true + } + e.Ctx().SkillEntity.XML.CritRate = 16 + return true +} + +// Effect 1591: {0}%秒杀对手,未触发则自身全属性+{1} +type Effect1591 struct{ node.EffectNode } + +func (e *Effect1591) Skill_Use() bool { + if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { + return true + } + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP() + if damage.Cmp(alpacadecimal.Zero) > 0 { + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.True, Damage: damage}) + } + return true + } + applyAllPropUp(e.Ctx().Our, int8(e.Args()[1].IntPart())) + return true +} + +// Effect 1592: 风之力量觉醒,使自身下{0}次攻击获得蚀骨之风效果 +type Effect1592 struct{ node.EffectNode } + +func (e *Effect1592) Skill_Use() bool { + if len(e.Args()) == 0 { + return true + } + sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1592, int(e.Args()[0].IntPart())) + if sub != nil { + e.Ctx().Our.AddEffect(e.Ctx().Our, sub) + } + return true +} + +type Effect1592Sub struct { + node.EffectNode + remaining int +} + +func (e *Effect1592Sub) SetArgs(t *input.Input, a ...int) { + e.EffectNode.SetArgs(t, a...) + e.Duration(-1) + e.CanStack(false) + if len(a) > 0 { + e.remaining = a[0] + } +} + +func (e *Effect1592Sub) DamageAdd(zone *info.DamageZone) bool { + if e.remaining <= 0 || zone == nil || zone.Type != info.DamageType.Red || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { + return true + } + if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + return true + } + + extra := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(4)) + if extra.Cmp(alpacadecimal.Zero) > 0 { + zone.Damage = zone.Damage.Add(extra) + } + if ok, _, _ := e.Input.Player.Roll(50, 100); ok { + addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(info.PetStatus.IceBound)) + } + e.absorbRandomProps(2) + + e.remaining-- + if e.remaining <= 0 { + e.Alive(false) + } + return true +} + +func (e *Effect1592Sub) absorbRandomProps(count int) { + if e.Ctx().Our == nil || e.Ctx().Opp == nil || count <= 0 { + return + } + if count > 6 { + count = 6 + } + for _, idx := range grand.Perm(6)[:count] { + prop := int8(idx) + if !e.Ctx().Opp.SetProp(e.Ctx().Our, prop, -1) { + continue + } + e.Ctx().Our.SetProp(e.Ctx().Our, prop, 1) + } +} + +func init() { + input.InitEffect(input.EffectType.Skill, 1588, &Effect1588{}) + input.InitEffect(input.EffectType.Skill, 1589, &Effect1589{}) + input.InitEffect(input.EffectType.Skill, 1590, &Effect1590{}) + input.InitEffect(input.EffectType.Skill, 1591, &Effect1591{}) + input.InitEffect(input.EffectType.Skill, 1592, &Effect1592{}) + input.InitEffect(input.EffectType.Sub, 1592, &Effect1592Sub{}) +} diff --git a/logic/service/fight/effect/1593_1597.go b/logic/service/fight/effect/1593_1597.go new file mode 100644 index 000000000..14edad0f6 --- /dev/null +++ b/logic/service/fight/effect/1593_1597.go @@ -0,0 +1,140 @@ +package effect + +import ( + "strings" + + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" + + "github.com/alpacahq/alpacadecimal" + "github.com/gogf/gf/v2/util/grand" +) + +// Effect 1593: 1回合做{0}-{1}次攻击,自身体力低于对手时连击上限为{2} +type Effect1593 struct{ node.EffectNode } + +func (e *Effect1593) SkillHit() bool { + if len(e.Args()) < 3 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + return true + } + + minHits := int(e.Args()[0].IntPart()) + maxHits := int(e.Args()[1].IntPart()) + if minHits <= 0 { + minHits = 1 + } + if maxHits < minHits { + maxHits = minHits + } + + if e.Ctx().Our != nil && e.Ctx().Opp != nil && e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { + limit := int(e.Args()[2].IntPart()) + if limit > 0 { + maxHits = limit + if maxHits < minHits { + maxHits = minHits + } + } + } + + hits := minHits + if maxHits > minHits { + hits += grand.Intn(maxHits - minHits + 1) + } + if hits <= 1 { + return true + } + e.Ctx().SkillEntity.AttackTime += uint32(hits - 1) + return true +} + +// Effect 1594: {0}回合内受到攻击则{1}%使自身全属性+{2},未触发则{3}%使对手全属性-{4} +type Effect1594 struct{ node.EffectNode } + +func (e *Effect1594) Skill_Use() bool { + if len(e.Args()) < 5 { + return true + } + sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1594, e.SideEffectArgs...) + if sub != nil { + e.Ctx().Our.AddEffect(e.Ctx().Our, sub) + } + return true +} + +type Effect1594Sub struct{ RoundEffectArg0Base } + +func (e *Effect1594Sub) SetArgs(t *input.Input, a ...int) { + e.RoundEffectArg0Base.SetArgs(t, a...) + e.CanStack(false) +} + +func (e *Effect1594Sub) DamageLockEx(zone *info.DamageZone) bool { + if zone == nil || zone.Type != info.DamageType.Red || zone.Damage.Cmp(alpacadecimal.Zero) <= 0 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 || len(e.Args()) < 5 { + return true + } + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100); ok { + applyAllPropUp(e.Ctx().Our, int8(e.Args()[2].IntPart())) + return true + } + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[3].IntPart()), 100); ok { + applyAllPropDown(e.Ctx().Our, e.Ctx().Opp, int8(e.Args()[4].IntPart())) + } + return true +} + +// Effect 1595: 若对手为咸咸粽则100%打出致命一击 +type Effect1595 struct{ node.EffectNode } + +func (e *Effect1595) SkillHit() bool { + if !isOpponentPet159x(e.Ctx().Opp, "咸咸粽") || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + e.Ctx().SkillEntity.XML.CritRate = 16 + return true +} + +// Effect 1596: 若对手为甜甜粽则100%打出致命一击 +type Effect1596 struct{ node.EffectNode } + +func (e *Effect1596) SkillHit() bool { + if !isOpponentPet159x(e.Ctx().Opp, "甜甜粽") || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { + return true + } + e.Ctx().SkillEntity.XML.CritRate = 16 + return true +} + +// Effect 1597: 命中后50%令对手睡眠,若对手为咸咸粽则概率翻倍 +type Effect1597 struct{ node.EffectNode } + +func (e *Effect1597) OnSkill() bool { + if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + return true + } + chance := 50 + if isOpponentPet159x(e.Ctx().Opp, "咸咸粽") { + chance = 100 + } + if ok, _, _ := e.Input.Player.Roll(chance, 100); ok { + addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(info.PetStatus.Sleep)) + } + return true +} + +func isOpponentPet159x(target *input.Input, name string) bool { + if target == nil || target.CurrentPet[0] == nil { + return false + } + return strings.TrimSpace(target.CurrentPet[0].PetInfo.DefName) == name +} + +func init() { + input.InitEffect(input.EffectType.Skill, 1593, &Effect1593{}) + input.InitEffect(input.EffectType.Skill, 1594, &Effect1594{}) + input.InitEffect(input.EffectType.Sub, 1594, &Effect1594Sub{}) + input.InitEffect(input.EffectType.Skill, 1595, &Effect1595{}) + input.InitEffect(input.EffectType.Skill, 1596, &Effect1596{}) + input.InitEffect(input.EffectType.Skill, 1597, &Effect1597{}) +} diff --git a/logic/service/fight/effect/1598_1602.go b/logic/service/fight/effect/1598_1602.go new file mode 100644 index 000000000..4968fcee9 --- /dev/null +++ b/logic/service/fight/effect/1598_1602.go @@ -0,0 +1,191 @@ +package effect + +import ( + "strings" + + "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 isPetNamed160x(target *input.Input, name string) bool { + if target == nil || target.CurrentPet[0] == nil { + return false + } + return strings.TrimSpace(target.CurrentPet[0].PetInfo.DefName) == name +} + +// Effect 1598: 命中后50%令对手害怕,若对手为甜甜粽则概率翻倍 +type Effect1598 struct{ node.EffectNode } + +func (e *Effect1598) OnSkill() bool { + if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + return true + } + chance := 50 + if isPetNamed160x(e.Ctx().Opp, "甜甜粽") { + chance = 100 + } + if ok, _, _ := e.Input.Player.Roll(chance, 100); ok { + addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(info.PetStatus.Fear)) + } + return true +} + +// Effect 1599: {0}回合内受到攻击则{1}%令对手{2},未触发则{3}%令对手{4} +type Effect1599 struct{ node.EffectNode } + +func (e *Effect1599) Skill_Use() bool { + if len(e.Args()) < 5 { + return true + } + sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1599, e.SideEffectArgs...) + if sub != nil { + e.Ctx().Our.AddEffect(e.Ctx().Our, sub) + } + return true +} + +type Effect1599Sub struct { + RoundEffectArg0Base + triggered bool +} + +func (e *Effect1599Sub) DamageLockEx(zone *info.DamageZone) bool { + if e.triggered || zone == nil || zone.Type != info.DamageType.Red || zone.Damage.Cmp(alpacadecimal.Zero) <= 0 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 || len(e.Args()) < 5 { + return true + } + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100); ok { + addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[2].IntPart())) + e.triggered = true + e.Alive(false) + } + return true +} + +func (e *Effect1599Sub) TurnEnd() { + if !e.triggered && len(e.Args()) >= 5 && e.Duration() <= 1 { + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[3].IntPart()), 100); ok { + addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[4].IntPart())) + } + e.triggered = true + } + e.EffectNode.TurnEnd() +} + +// Effect 1600: 命中后{0}%令对手{1},未触发则自身下{2}回合攻击必定致命一击,触发后{3}回合内对手主动切换精灵则登场精灵{4}%进入{5}状态 +type Effect1600 struct{ node.EffectNode } + +func (e *Effect1600) OnSkill() bool { + if len(e.Args()) < 6 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + return true + } + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { + if addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[1].IntPart())) { + sub := e.Ctx().Opp.InitEffect(input.EffectType.Sub, 16002, int(e.Args()[3].IntPart()), int(e.Args()[4].IntPart()), int(e.Args()[5].IntPart())) + if sub != nil { + e.Ctx().Opp.AddEffect(e.Ctx().Our, sub) + } + } + return true + } + sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 16001, int(e.Args()[2].IntPart())) + if sub != nil { + e.Ctx().Our.AddEffect(e.Ctx().Our, sub) + } + return true +} + +type Effect1600MustCritSub struct{ RoundEffectArg0Base } + +func (e *Effect1600MustCritSub) ComparePre(fattack, sattack *action.SelectSkillAction) bool { + current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) + if current == nil || current.SkillEntity == nil || current.SkillEntity.Category() == info.Category.STATUS { + return true + } + current.SkillEntity.XML.CritRate = 16 + return true +} + +type Effect1600SwitchSub struct{ RoundEffectArg0Base } + +func (e *Effect1600SwitchSub) SwitchIn(in *input.Input) bool { + if len(e.Args()) < 3 || in == nil || in.CurrentPet[0] == nil { + return true + } + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100); ok { + addStatusByID(e.Ctx().Opp, in, int(e.Args()[2].IntPart())) + } + return true +} + +// Effect 1601: 命中后附加自身最大体力{0}%的百分比伤害,若打出的攻击伤害为奇数则额外恢复等量体力值 +type Effect1601 struct{ node.EffectNode } + +func (e *Effect1601) Skill_Use() bool { + if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + return true + } + if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil { + return true + } + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred) + if damage.Cmp(alpacadecimal.Zero) <= 0 { + return true + } + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) + if e.Ctx().Our.SumDamage.IntPart()%2 != 0 { + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) + } + return true +} + +// Effect 1602: {0}回合内每回合使用技能恢复自身最大体力的1/{1},恢复体力时若自身为满体力则恢复己方所有不在场精灵{2}点体力 +type Effect1602 struct{ node.EffectNode } + +func (e *Effect1602) Skill_Use() bool { + if len(e.Args()) < 3 { + return true + } + sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1602, e.SideEffectArgs...) + if sub != nil { + e.Ctx().Our.AddEffect(e.Ctx().Our, sub) + } + return true +} + +type Effect1602Sub struct{ RoundEffectArg0Base } + +func (e *Effect1602Sub) Skill_Use() bool { + if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { + return true + } + if e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { + return true + } + fullHP := e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 + healAmount := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if healAmount.Cmp(alpacadecimal.Zero) <= 0 { + return true + } + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) + if fullHP { + healBench(e.Ctx().Our, e.Args()[2]) + } + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 1598, &Effect1598{}) + input.InitEffect(input.EffectType.Skill, 1599, &Effect1599{}) + input.InitEffect(input.EffectType.Sub, 1599, &Effect1599Sub{}) + input.InitEffect(input.EffectType.Skill, 1600, &Effect1600{}) + input.InitEffect(input.EffectType.Sub, 16001, &Effect1600MustCritSub{}) + input.InitEffect(input.EffectType.Sub, 16002, &Effect1600SwitchSub{}) + input.InitEffect(input.EffectType.Skill, 1601, &Effect1601{}) + input.InitEffect(input.EffectType.Skill, 1602, &Effect1602{}) + input.InitEffect(input.EffectType.Sub, 1602, &Effect1602Sub{}) +} diff --git a/logic/service/fight/effect/1603_1608.go b/logic/service/fight/effect/1603_1608.go new file mode 100644 index 000000000..3afa495f3 --- /dev/null +++ b/logic/service/fight/effect/1603_1608.go @@ -0,0 +1,141 @@ +package effect + +import ( + "strings" + + "blazing/logic/service/fight/action" + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" + + "github.com/alpacahq/alpacadecimal" + "github.com/gogf/gf/v2/util/grand" +) + +// Effect 1603: {0}%降低对手所有PP值{1}点 +type Effect1603 struct{ node.EffectNode } + +func (e *Effect1603) Skill_Use() bool { + if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { + return true + } + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { + e.Ctx().Opp.DelPP(int(e.Args()[1].IntPart())) + } + return true +} + +// Effect 1604: {0}%恢复自身所有PP值{1}点 +type Effect1604 struct{ node.EffectNode } + +func (e *Effect1604) Skill_Use() bool { + if len(e.Args()) < 2 { + return true + } + if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { + e.Ctx().Our.HealPP(int(e.Args()[1].IntPart())) + } + return true +} + +// Effect 1606: 反转自身能力下降状态,反转成功则吸取对手最大体力的1/{0} +type Effect1606 struct{ node.EffectNode } + +func (e *Effect1606) Skill_Use() bool { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { + return true + } + reversed := false + for i, v := range e.Ctx().Our.Prop[:] { + if v >= 0 { + continue + } + if e.Ctx().Our.SetProp(e.Ctx().Our, int8(i), -2*v) { + reversed = true + } + } + if !reversed || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { + return true + } + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if damage.Cmp(alpacadecimal.Zero) > 0 { + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) + } + return true +} + +// Effect 1607: 当回合未击败对手则附加自身最大体力1/{0}的百分比伤害 +type Effect1607 struct{ node.EffectNode } + +func (e *Effect1607) Skill_Use() bool { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { + return true + } + if e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { + return true + } + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if damage.Cmp(alpacadecimal.Zero) > 0 { + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) + } + return true +} + +// Effect 1608: 召唤自己的伙伴进行5-10次攻击,布布鸟发起时可额外令自身下回合所有技能先制+3 +type Effect1608 struct{ node.EffectNode } + +func (e *Effect1608) SkillHit() bool { + if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { + return true + } + hits := 5 + grand.Intn(6) + if hits > 1 { + e.Ctx().SkillEntity.AttackTime += uint32(hits - 1) + } + return true +} + +func (e *Effect1608) Skill_Use() bool { + if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { + return true + } + if strings.TrimSpace(e.Ctx().Our.CurrentPet[0].PetInfo.DefName) == "布布鸟" { + sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1608, 3) + if sub != nil { + e.Ctx().Our.AddEffect(e.Ctx().Our, sub) + } + } + return true +} + +type Effect1608Sub struct { + node.EffectNode + priority int +} + +func (e *Effect1608Sub) SetArgs(t *input.Input, a ...int) { + e.EffectNode.SetArgs(t, a...) + e.Duration(1) + e.CanStack(false) + if len(a) > 0 { + e.priority = a[0] + } +} + +func (e *Effect1608Sub) ComparePre(fattack, sattack *action.SelectSkillAction) bool { + current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) + if current == nil || current.SkillEntity == nil { + return true + } + current.SkillEntity.XML.Priority += e.priority + return true +} + +func init() { + input.InitEffect(input.EffectType.Skill, 1603, &Effect1603{}) + input.InitEffect(input.EffectType.Skill, 1604, &Effect1604{}) + input.InitEffect(input.EffectType.Skill, 1606, &Effect1606{}) + input.InitEffect(input.EffectType.Skill, 1607, &Effect1607{}) + input.InitEffect(input.EffectType.Skill, 1608, &Effect1608{}) + input.InitEffect(input.EffectType.Sub, 1608, &Effect1608Sub{}) +} diff --git a/logic/service/fight/effect/1660_1664.go b/logic/service/fight/effect/1660_1664.go index 2f2e0766d..ebd990876 100644 --- a/logic/service/fight/effect/1660_1664.go +++ b/logic/service/fight/effect/1660_1664.go @@ -84,16 +84,16 @@ type Effect1662 struct { func (e *Effect1662) Skill_Use() bool { shield := e.Ctx().Our.ConsumeAllShield() - if shield.Cmp(alpacadecimal.Zero) <= 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if shield.Cmp(alpacadecimal.Zero) <= 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - before := e.Ctx().Opp.CurrentPet.GetHP() + before := e.Ctx().Opp.CurrentPet[0].GetHP() e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: shield, }) - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(before) == 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(before) == 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, shield) } return true @@ -105,7 +105,7 @@ type Effect1663 struct { } func (e *Effect1663) Skill_Use() bool { - if len(e.Args()) < 1 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) < 1 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -160,7 +160,7 @@ func (e *Effect1664) Skill_Use() bool { if !e.IsFirst() || len(e.Args()) < 1 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } diff --git a/logic/service/fight/effect/1665_1669.go b/logic/service/fight/effect/1665_1669.go index 0258c5e97..981dcff4a 100644 --- a/logic/service/fight/effect/1665_1669.go +++ b/logic/service/fight/effect/1665_1669.go @@ -28,7 +28,7 @@ func countPets(target *input.Input, alive bool) int { if pet == nil { continue } - if pet == target.CurrentPet { + if pet == target.CurrentPet[0] { continue } if pet.Alive() == alive { @@ -155,7 +155,7 @@ func (e *Effect1667Sub) TurnEnd() { return } - if e.Ctx().Our != nil && e.Ctx().Our.CurrentPet != nil && e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if e.Ctx().Our != nil && e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { e.Ctx().Our.CanChange = 1 } } @@ -166,11 +166,11 @@ type Effect1668 struct { } func (e *Effect1668) OnSkill() bool { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - totalLost := lostSkillPP(e.Ctx().Opp.CurrentPet) + totalLost := lostSkillPP(e.Ctx().Opp.CurrentPet[0]) if totalLost <= 0 { return true } @@ -180,12 +180,12 @@ func (e *Effect1668) OnSkill() bool { return true } - before := e.Ctx().Opp.CurrentPet.GetHP() + before := e.Ctx().Opp.CurrentPet[0].GetHP() e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: damage, }) - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(before) == 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(before) == 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.True, Damage: damage, diff --git a/logic/service/fight/effect/1670_1674.go b/logic/service/fight/effect/1670_1674.go index adada24aa..4164b1430 100644 --- a/logic/service/fight/effect/1670_1674.go +++ b/logic/service/fight/effect/1670_1674.go @@ -75,7 +75,7 @@ func (e *Effect1672) OnSkill() bool { if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { return true } @@ -106,7 +106,7 @@ func (e *Effect1673) DamageFloor(zone *info.DamageZone) bool { success, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) if success { - zone.Damage = e.Ctx().Opp.CurrentPet.GetMaxHP() + zone.Damage = e.Ctx().Opp.CurrentPet[0].GetMaxHP() return true } @@ -126,9 +126,9 @@ func (e *Effect1674) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) > 0 { - beforeHP := e.Ctx().Opp.CurrentPet.Info.Hp + beforeHP := e.Ctx().Opp.CurrentPet[0].Info.Hp e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ @@ -136,7 +136,7 @@ func (e *Effect1674) OnSkill() bool { Damage: damage, }) - if e.Ctx().Opp.CurrentPet.Info.Hp < beforeHP { + if e.Ctx().Opp.CurrentPet[0].Info.Hp < beforeHP { return true } } diff --git a/logic/service/fight/effect/1675_1679.go b/logic/service/fight/effect/1675_1679.go index 29826f0a1..fa3970c6d 100644 --- a/logic/service/fight/effect/1675_1679.go +++ b/logic/service/fight/effect/1675_1679.go @@ -89,7 +89,7 @@ func (e *Effect1677) Skill_Use() bool { selfDamage := e.Args()[0] if selfDamage.Cmp(alpacadecimal.Zero) > 0 { - currentHP := e.Ctx().Our.CurrentPet.GetHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() if currentHP.Cmp(alpacadecimal.NewFromInt(1)) > 0 { maxSelfDamage := currentHP.Sub(alpacadecimal.NewFromInt(1)) if selfDamage.Cmp(maxSelfDamage) > 0 { @@ -207,7 +207,7 @@ func (e *Effect1679) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[3]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[3]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/1685_1689.go b/logic/service/fight/effect/1685_1689.go index c1b1b6b73..16c48b4f6 100644 --- a/logic/service/fight/effect/1685_1689.go +++ b/logic/service/fight/effect/1685_1689.go @@ -65,7 +65,7 @@ func (e *Effect1686) Damage_Mul(zone *info.DamageZone) bool { } percent := e.Args()[0] - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetHP()) > 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetHP()) > 0 { percent = percent.Add(e.Args()[1]) } @@ -136,7 +136,7 @@ func (e *Effect1688) Skill_Use() bool { } if e.Args()[0].Cmp(alpacadecimal.Zero) > 0 { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/1690_1694.go b/logic/service/fight/effect/1690_1694.go index 38f94a369..df5cc2d28 100644 --- a/logic/service/fight/effect/1690_1694.go +++ b/logic/service/fight/effect/1690_1694.go @@ -184,14 +184,14 @@ func (e *Effect1693) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) > 0 { - beforeHP := e.Ctx().Opp.CurrentPet.Info.Hp + beforeHP := e.Ctx().Opp.CurrentPet[0].Info.Hp e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, }) - if e.Ctx().Opp.CurrentPet.Info.Hp < beforeHP { + if e.Ctx().Opp.CurrentPet[0].Info.Hp < beforeHP { return true } } diff --git a/logic/service/fight/effect/1695_1719.go b/logic/service/fight/effect/1695_1719.go index b2fddcb06..2b23b3b1f 100644 --- a/logic/service/fight/effect/1695_1719.go +++ b/logic/service/fight/effect/1695_1719.go @@ -21,7 +21,7 @@ func addPercentDamageToOpp(e *node.EffectNode, percent alpacadecimal.Decimal) { if percent.Cmp(alpacadecimal.Zero) <= 0 { return } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) if damage.Cmp(alpacadecimal.Zero) <= 0 { return } @@ -37,13 +37,13 @@ func (e *Effect1695) OnSkill() bool { if len(e.Args()) < 3 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 { - addPercentDamageToOpp(&e.EffectNode, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { + addPercentDamageToOpp(&e.EffectNode, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) - addPercentDamageToOpp(&e.EffectNode, alpacadecimal.NewFromInt(100).Mul(heal).Div(e.Ctx().Our.CurrentPet.GetMaxHP())) + addPercentDamageToOpp(&e.EffectNode, alpacadecimal.NewFromInt(100).Mul(heal).Div(e.Ctx().Our.CurrentPet[0].GetMaxHP())) return true } @@ -70,13 +70,13 @@ func (e *Effect1697) OnSkill() bool { return true } percent := e.Args()[0] - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } - before := e.Ctx().Opp.CurrentPet.GetHP() + before := e.Ctx().Opp.CurrentPet[0].GetHP() e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(before) == 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(before) == 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.True, Damage: damage}) } return true @@ -95,7 +95,7 @@ func (e *Effect1698) OnSkill() bool { e.Ctx().Opp.SetProp(e.Ctx().Our, 0, -1) return true } - addPercentDamageToOpp(&e.EffectNode, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) + addPercentDamageToOpp(&e.EffectNode, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) return true } @@ -272,13 +272,13 @@ func (e *Effect1709) OnSkill() bool { if len(e.Args()) == 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } - before := e.Ctx().Opp.CurrentPet.GetHP() + before := e.Ctx().Opp.CurrentPet[0].GetHP() e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(before) == 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(before) == 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) } return true @@ -364,7 +364,7 @@ func (e *Effect1718) SkillHit() bool { } if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.AttackTime == 2 { addSkillPowerPercent(e.Ctx().SkillEntity, e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { addSkillPowerPercent(e.Ctx().SkillEntity, e.Args()[1]) } } @@ -380,7 +380,7 @@ func (e *Effect1719) OnSkill() bool { if len(e.Args()) < 3 { return true } - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.Zero) <= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.Zero) <= 0 { e.Ctx().Our.SetProp(e.Ctx().Our, 0, int8(e.Args()[1].IntPart())) } return true diff --git a/logic/service/fight/effect/170.go b/logic/service/fight/effect/170.go index 9da6be372..5e611be12 100644 --- a/logic/service/fight/effect/170.go +++ b/logic/service/fight/effect/170.go @@ -18,7 +18,7 @@ func (e *Effect170) Skill_Use() bool { if e.IsFirst() { // 先出手 // 回复1/n的最大体力值 - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() healAmount := maxHp.Div(e.Args()[0]) // 1/n e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) diff --git a/logic/service/fight/effect/171.go b/logic/service/fight/effect/171.go index b5bab9d45..6197f8bbf 100644 --- a/logic/service/fight/effect/171.go +++ b/logic/service/fight/effect/171.go @@ -12,7 +12,7 @@ type Effect171 struct { func (e *Effect171) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/effect/1720_1744.go b/logic/service/fight/effect/1720_1744.go index d62282b33..3e23504e7 100644 --- a/logic/service/fight/effect/1720_1744.go +++ b/logic/service/fight/effect/1720_1744.go @@ -128,7 +128,7 @@ func (e *Effect1723) OnSkill() bool { } drain := e.Args()[0] zeroCount := 0 - for _, s := range e.Ctx().Opp.CurrentPet.Info.SkillList { + for _, s := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { if s.PP == 0 { zeroCount++ } @@ -154,7 +154,7 @@ func (e *Effect1724) DamageFloor(zone *info.DamageZone) bool { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { - zone.Damage = e.Ctx().Opp.CurrentPet.GetHP() + zone.Damage = e.Ctx().Opp.CurrentPet[0].GetHP() } return true } @@ -164,7 +164,7 @@ func (e *Effect1724) Skill_Use() bool { return true } if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.AttackTime == 0 { - e.Ctx().Our.CurrentPet.Info.Hp = 0 + e.Ctx().Our.CurrentPet[0].Info.Hp = 0 eff := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1724, int(e.Args()[1].IntPart()), int(e.Args()[2].IntPart())) if eff != nil { e.Ctx().Opp.AddEffect(e.Ctx().Our, eff) @@ -390,7 +390,7 @@ func (e *Effect1730) OnSkill() bool { if e.Ctx().Our.SumDamage.IntPart()%2 == 0 { percent = e.Args()[2] } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(percent).Div(hundred) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(percent).Div(hundred) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } @@ -503,10 +503,10 @@ func (e *Effect1735) DamageLockEx(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 2 { return true } - if e.Ctx().Our.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp <= 0 { return true } - if e.Ctx().Our.CurrentPet.Info.Hp < e.Ctx().Opp.CurrentPet.Info.Hp { + if e.Ctx().Our.CurrentPet[0].Info.Hp < e.Ctx().Opp.CurrentPet[0].Info.Hp { return true } zone.Damage = alpacadecimal.Zero @@ -532,7 +532,7 @@ func (e *Effect1737) OnSkill() bool { return true } lost := 0 - for _, s := range e.Ctx().Our.CurrentPet.Info.SkillList { + for _, s := range e.Ctx().Our.CurrentPet[0].Info.SkillList { lost += int(s.PP) } if lost <= 0 { @@ -590,8 +590,8 @@ func (e *Effect1739) Skill_Use() bool { } e.Ctx().Opp.CancelTurn(e.Ctx().Our) e.Ctx().Opp.HealPP(-int(e.Args()[2].IntPart())) - if e.Ctx().Our.CurrentPet.Info.Hp > 0 { - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[3]) + if e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[3]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } return true @@ -605,7 +605,7 @@ func (e *Effect1740) OnSkill() bool { return true } count := 0 - for i, s := range e.Ctx().Our.CurrentPet.Info.SkillList { + for i, s := range e.Ctx().Our.CurrentPet[0].Info.SkillList { if i == 4 { continue } @@ -655,7 +655,7 @@ func (e *Effect1743) Skill_Use() bool { if len(e.Args()) < 2 { return true } - if len(e.Ctx().Opp.CurrentPet.Info.EffectInfo) == 0 { + if len(e.Ctx().Opp.CurrentPet[0].Info.EffectInfo) == 0 { return true } e.Ctx().Opp.DelPP(int(e.Args()[0].IntPart())) @@ -670,7 +670,7 @@ func (e *Effect1744) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) == 0 { return true } - if len(e.Ctx().Opp.CurrentPet.Info.EffectInfo) > 0 { + if len(e.Ctx().Opp.CurrentPet[0].Info.EffectInfo) > 0 { return true } zone.Damage = zone.Damage.Mul(hundred.Add(e.Args()[0])).Div(hundred) diff --git a/logic/service/fight/effect/1745_1769.go b/logic/service/fight/effect/1745_1769.go index 501911f7e..8f1d1c2d1 100644 --- a/logic/service/fight/effect/1745_1769.go +++ b/logic/service/fight/effect/1745_1769.go @@ -91,7 +91,7 @@ func (e *Effect1749) Damage_Mul(zone *info.DamageZone) bool { return true } bonus := 0 - for _, skill := range e.Ctx().Opp.CurrentPet.Info.SkillList { + for _, skill := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { if skill.PP <= 0 { bonus++ } @@ -204,7 +204,7 @@ func (e *Effect1753Sub) Damage_Shield(zone *info.DamageZone) bool { if len(e.Args()) < 2 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) e.Alive(false) return true @@ -425,7 +425,7 @@ func (e *Effect1761) Damage_Mul(zone *info.DamageZone) bool { if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } zone.Damage = zone.Damage.Mul(hundred.Add(e.Args()[0])).Div(hundred) @@ -438,7 +438,7 @@ type Effect1762 struct { } func (e *Effect1762) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -453,7 +453,7 @@ type Effect1763 struct { } func (e *Effect1763) OnSkill() bool { - if e.Ctx().Opp.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Opp.CurrentPet.GetMaxHP()) <= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(2)).Cmp(e.Ctx().Opp.CurrentPet[0].GetMaxHP()) <= 0 { return true } return true @@ -469,7 +469,7 @@ func (e *Effect1764) TurnEnd() { e.EffectNode.TurnEnd() return } - if e.Ctx().Opp.CurrentPet.GetHP().Mul(e.Args()[0]).Cmp(e.Ctx().Opp.CurrentPet.GetMaxHP()) >= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Mul(e.Args()[0]).Cmp(e.Ctx().Opp.CurrentPet[0].GetMaxHP()) >= 0 { e.EffectNode.TurnEnd() return } @@ -485,7 +485,7 @@ func (e *Effect1765) OnSkill() bool { if len(e.Args()) < 1 { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(hundred) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) return true diff --git a/logic/service/fight/effect/177.go b/logic/service/fight/effect/177.go index 7cb6e0b1b..eb49eb324 100644 --- a/logic/service/fight/effect/177.go +++ b/logic/service/fight/effect/177.go @@ -12,7 +12,7 @@ type Effect177 struct { func (e *Effect177) Skill_Use_ex() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.AttackTime == 0 { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() healAmount := maxHp.Div(e.Args()[1]) // 1/m e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) diff --git a/logic/service/fight/effect/1770_1794.go b/logic/service/fight/effect/1770_1794.go index 9600ac5cf..109a2f00d 100644 --- a/logic/service/fight/effect/1770_1794.go +++ b/logic/service/fight/effect/1770_1794.go @@ -387,7 +387,7 @@ func (e *Effect1779) SwitchIn(in *input.Input) bool { if len(e.Args()) < 2 || in != e.Ctx().Opp { return true } - heal := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } @@ -398,17 +398,17 @@ func (e *Effect1779) SwitchIn(in *input.Input) bool { type Effect1780 struct{ node.EffectNode } func (e *Effect1780) OnSkill() bool { - if len(e.Args()) < 5 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 5 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - selfHP := e.Ctx().Our.CurrentPet.GetHP() + selfHP := e.Ctx().Our.CurrentPet[0].GetHP() if selfHP.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.True, Damage: selfHP}) } if e.Args()[0].Cmp(alpacadecimal.Zero) > 0 { - damage := e.Ctx().Opp.CurrentPet.GetHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: damage}) } @@ -416,7 +416,7 @@ func (e *Effect1780) OnSkill() bool { shield := alpacadecimal.Zero if e.Args()[1].Cmp(alpacadecimal.Zero) > 0 { - shield = e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + shield = e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) } if shield.Cmp(alpacadecimal.Zero) > 0 { if capShield := e.Args()[4]; capShield.Cmp(alpacadecimal.Zero) > 0 { @@ -598,7 +598,7 @@ func (e *Effect1783Sub) TurnEnd() { e.Alive(false) return } - if e.Ctx().Our != nil && e.Ctx().Our.CurrentPet != nil && e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if e.Ctx().Our != nil && e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { e.Ctx().Our.CanChange = 1 } } @@ -631,10 +631,10 @@ type Effect1784Sub struct { } func (e *Effect1784Sub) DamageLockEx(zone *info.DamageZone) bool { - if zone == nil || zone.Type != info.DamageType.Red || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if zone == nil || zone.Type != info.DamageType.Red || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - currentHP := e.Ctx().Our.CurrentPet.GetHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() if zone.Damage.Cmp(currentHP) >= 0 { return true } @@ -666,15 +666,15 @@ type Effect1785Sub struct { } func (e *Effect1785Sub) OnSkill() bool { - if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } if e.Ctx().SkillEntity == nil || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { return true } - fullHP := e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 - amount := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + fullHP := e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 + amount := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if amount.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -811,7 +811,7 @@ func (e *Effect1788) Skill_Use() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[2]).Div(hundred) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[2]).Div(hundred) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -848,7 +848,7 @@ func (e *Effect1791) OnSkill() bool { if total.Cmp(e.Args()[1]) > 0 { percent = e.Args()[2] } - damage := e.Ctx().Opp.CurrentPet.GetHP().Mul(percent).Div(hundred) + damage := e.Ctx().Opp.CurrentPet[0].GetHP().Mul(percent).Div(hundred) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -920,7 +920,7 @@ func (e *Effect1793Sub) DamageLockEx(zone *info.DamageZone) bool { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) e.Alive(false) return true } @@ -935,7 +935,7 @@ func (e *Effect1794) Skill_Use() bool { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(2))) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(2))) sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1794, int(e.Args()[1].IntPart()), int(e.Args()[2].IntPart())) if sub != nil { e.Ctx().Our.AddEffect(e.Ctx().Our, sub) diff --git a/logic/service/fight/effect/178.go b/logic/service/fight/effect/178.go index dc78c59f3..200eea726 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.Ctx().Our.SumDamage var healAmount alpacadecimal.Decimal - if e.Ctx().Our.CurrentPet.Type == e.Ctx().Opp.CurrentPet.Type { + if e.Ctx().Our.CurrentPet[0].Type == e.Ctx().Opp.CurrentPet[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 b5ed41bee..9bf6c8743 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.Ctx().Our.CurrentPet.Type == e.Ctx().Opp.CurrentPet.Type { + if e.Ctx().Our.CurrentPet[0].Type == e.Ctx().Opp.CurrentPet[0].Type { // 属性相同,技能威力提升n e.Ctx().SkillEntity.XML.Power += int(e.Args()[0].IntPart()) } diff --git a/logic/service/fight/effect/1795_1819.go b/logic/service/fight/effect/1795_1819.go index b0bf93bf4..ee7a02e32 100644 --- a/logic/service/fight/effect/1795_1819.go +++ b/logic/service/fight/effect/1795_1819.go @@ -60,10 +60,10 @@ func (e *Effect1796) Damage_Mul(zone *info.DamageZone) bool { percent := e.Args()[0] if stacks := hasCurseStack(e.Ctx().Our); stacks >= int(e.Args()[1].IntPart()) { zone.Type = info.DamageType.True - zone.Damage = e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(percent).Div(hundred) + zone.Damage = e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(percent).Div(hundred) return true } - zone.Damage = zone.Damage.Add(e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(percent).Div(hundred)) + zone.Damage = zone.Damage.Add(e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(percent).Div(hundred)) return true } @@ -121,7 +121,7 @@ func (e *Effect1800) DamageDivEx(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 4 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { return true } zone.Damage = zone.Damage.Mul(hundred.Sub(e.Args()[0])).Div(hundred) @@ -151,7 +151,7 @@ func (e *Effect1801) Damage_Mul(zone *info.DamageZone) bool { return true } if e.Ctx().Our.SumDamage.Cmp(alpacadecimal.Zero) == 0 { - zone.Damage = zone.Damage.Add(e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0])) + zone.Damage = zone.Damage.Add(e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0])) } return true } @@ -174,7 +174,7 @@ type Effect1803 struct{ node.EffectNode } func (e *Effect1803) Skill_Use_ex() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.AttackTime == 0 { - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(3))) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(3))) e.Ctx().Our.CancelTurn(e.Ctx().Our) } return true @@ -207,13 +207,13 @@ func (e *Effect1805) Damage_Mul(zone *info.DamageZone) bool { type Effect1806 struct{ node.EffectNode } func (e *Effect1806) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet == nil || e.Ctx().Our.CurrentPet == nil { + if e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - if e.Ctx().Opp.CurrentPet.Info.Gender == 1 { + if e.Ctx().Opp.CurrentPet[0].Info.Gender == 1 { addStatusByID1795(e.Ctx().Our, e.Ctx().Opp, int(info.PetStatus.Fear)) } else { - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) } return true } @@ -275,7 +275,7 @@ func (e *Effect1810) ComparePre(fattack, sattack *action.SelectSkillAction) bool type Effect1811 struct{ node.EffectNode } func (e *Effect1811) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } e.Ctx().Our.AddShield(alpacadecimal.NewFromInt(0)) @@ -301,7 +301,7 @@ func (e *Effect1813) Skill_Use() bool { } e.Ctx().Our.AddShield(e.Args()[0]) e.Ctx().Our.AddShield(e.Args()[1]) - if e.Ctx().Our.CurrentPet != nil && e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Args()[2]}) } return true @@ -314,7 +314,7 @@ func (e *Effect1814) Skill_Use() bool { if len(e.Args()) < 4 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[3])}) + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[3])}) return true } @@ -326,7 +326,7 @@ func (e *Effect1815) Skill_Use_ex() bool { return true } if e.Ctx().Opp.AttackTime == 0 { - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1])) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1])) } return true } @@ -339,7 +339,7 @@ func (e *Effect1816) Damage_Mul(zone *info.DamageZone) bool { return true } percent := e.Args()[0] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) > 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) > 0 { percent = e.Args()[1] } zone.Damage = zone.Damage.Mul(hundred.Add(percent)).Div(hundred) diff --git a/logic/service/fight/effect/1820_1844.go b/logic/service/fight/effect/1820_1844.go index ddbfeb62d..5d5197f1d 100644 --- a/logic/service/fight/effect/1820_1844.go +++ b/logic/service/fight/effect/1820_1844.go @@ -38,12 +38,12 @@ func (e *Effect1820) OnSkill() bool { type Effect1821 struct{ node.EffectNode } func (e *Effect1821) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.Zero) <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.Zero) <= 0 { return true } amount := int(e.Args()[0].IntPart()) - for i := range e.Ctx().Our.CurrentPet.Info.SkillList { - e.Ctx().Our.CurrentPet.Info.SkillList[i].PP += uint32(amount) + for i := range e.Ctx().Our.CurrentPet[0].Info.SkillList { + e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP += uint32(amount) } return true } @@ -56,11 +56,11 @@ func (e *Effect1822) Skill_Use() bool { return true } consumed := uint32(0) - for i := range e.Ctx().Our.CurrentPet.Info.SkillList { - consumed += e.Ctx().Our.CurrentPet.Info.SkillList[i].PP - e.Ctx().Our.CurrentPet.Info.SkillList[i].PP = 0 + for i := range e.Ctx().Our.CurrentPet[0].Info.SkillList { + consumed += e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP + e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP = 0 } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) if consumed < uint32(e.Args()[1].IntPart()) { damage = damage.Mul(alpacadecimal.NewFromInt(2)) effect := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1822, int(e.Args()[2].IntPart())) @@ -74,7 +74,10 @@ func (e *Effect1822) Skill_Use() bool { return true } -type Effect1822Sub struct{ node.EffectNode; remaining int } +type Effect1822Sub struct { + node.EffectNode + remaining int +} func (e *Effect1822Sub) SetArgs(t *input.Input, a ...int) { e.EffectNode.SetArgs(t, a...) @@ -137,7 +140,10 @@ func (e *Effect1824) Skill_Use() bool { return true } -type Effect1824Sub struct{ node.EffectNode; remaining int } +type Effect1824Sub struct { + node.EffectNode + remaining int +} func (e *Effect1824Sub) SetArgs(t *input.Input, a ...int) { e.EffectNode.SetArgs(t, a...) @@ -179,7 +185,10 @@ func (e *Effect1827) Skill_Use() bool { return true } -type Effect1827Sub struct{ node.EffectNode; remaining int } +type Effect1827Sub struct { + node.EffectNode + remaining int +} func (e *Effect1827Sub) SetArgs(t *input.Input, a ...int) { e.EffectNode.SetArgs(t, a...) @@ -277,7 +286,7 @@ func (e *Effect1841) Skill_Use() bool { if len(e.Args()) == 0 { return true } - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) zeroRandomSkillPP(e.Ctx().Opp, int(e.Args()[0].IntPart())) return true } @@ -299,7 +308,7 @@ func (e *Effect1844) OnSkill() bool { if len(e.Args()) == 0 { return true } - lost := e.Ctx().Opp.CurrentPet.GetMaxHP().Sub(e.Ctx().Opp.CurrentPet.GetHP()) + lost := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Opp.CurrentPet[0].GetHP()) if lost.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/1845_1869.go b/logic/service/fight/effect/1845_1869.go index 1d4299b77..3fed96c9a 100644 --- a/logic/service/fight/effect/1845_1869.go +++ b/logic/service/fight/effect/1845_1869.go @@ -56,7 +56,7 @@ func (e *Effect1845) OnSkill() bool { if len(e.Args()) < 2 { return true } - lost := e.Ctx().Opp.CurrentPet.GetMaxHP().Sub(e.Ctx().Opp.CurrentPet.GetHP()) + lost := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Opp.CurrentPet[0].GetHP()) if lost.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -165,10 +165,10 @@ func (e *Effect1855) OnSkill() bool { if len(e.Args()) < 3 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) if !e.Ctx().Our.HasPropADD() { - addPercentDamageToOpp(&e.EffectNode, e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2])) + addPercentDamageToOpp(&e.EffectNode, e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) } return true } diff --git a/logic/service/fight/effect/1870_1894.go b/logic/service/fight/effect/1870_1894.go index 418272880..3aaa3bc86 100644 --- a/logic/service/fight/effect/1870_1894.go +++ b/logic/service/fight/effect/1870_1894.go @@ -27,14 +27,14 @@ func (e *Effect1870) Damage_Mul(zone *info.DamageZone) bool { type Effect1871 struct{ node.EffectNode } func (e *Effect1871) Skill_Use() bool { - if e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } - ourMax := e.Ctx().Our.CurrentPet.GetMaxHP() - oppMax := e.Ctx().Opp.CurrentPet.GetMaxHP() + ourMax := e.Ctx().Our.CurrentPet[0].GetMaxHP() + oppMax := e.Ctx().Opp.CurrentPet[0].GetMaxHP() diff := oppMax.Sub(ourMax) if diff.Cmp(alpacadecimal.Zero) <= 0 { return true @@ -81,17 +81,17 @@ func (e *Effect1872Sub) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 3 { return true } - if e.Ctx().Our.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1])) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1])) <= 0 { zone.Damage = zone.Damage.Add(e.Args()[2]) } return true } func (e *Effect1872Sub) TurnEnd() { - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { e.Alive(false) } e.EffectNode.TurnEnd() @@ -105,10 +105,10 @@ func (e *Effect1873) Skill_Use() bool { return true } boost := int8(e.Args()[0].IntPart()) - if e.Ctx().Our.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil { return true } - if len(e.Ctx().Our.CurrentPet.Info.EffectInfo) <= int(e.Args()[1].IntPart()) { + if len(e.Ctx().Our.CurrentPet[0].Info.EffectInfo) <= int(e.Args()[1].IntPart()) { boost *= 2 } for i := range e.Ctx().Our.Prop[:] { @@ -149,8 +149,8 @@ func (e *Effect1875Sub) Skill_Use() bool { if len(e.Args()) < 3 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) < 0 { + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) < 0 { heal = heal.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) @@ -239,7 +239,7 @@ func (e *Effect1878) Skill_Use() bool { if cleared { return true } - heal := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: heal}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) return true @@ -402,7 +402,7 @@ func (e *Effect1883) Skill_Use() bool { if len(e.Args()) < 2 { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { eff := e.Ctx().Our.InitEffect(input.EffectType.Sub, 1883, int(e.Args()[1].IntPart())) if eff != nil { e.Ctx().Opp.AddEffect(e.Ctx().Our, eff) @@ -417,7 +417,7 @@ func (e *Effect1883Sub) TurnEnd() { if len(e.Args()) == 0 { return } - e.Ctx().Opp.Heal(e.Ctx().Opp, &action.SelectSkillAction{}, e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0])) + e.Ctx().Opp.Heal(e.Ctx().Opp, &action.SelectSkillAction{}, e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0])) e.EffectNode.TurnEnd() } @@ -452,7 +452,7 @@ func (e *Effect1885) OnSkill() bool { if len(e.Args()) < 3 { return true } - heal := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: heal}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) if ok, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100); ok { @@ -481,10 +481,10 @@ func (e *Effect1886Sub) Skill_Use_ex() bool { if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } - if e.Ctx().Our.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Our.CurrentPet[0].Info.Hp <= 0 { e.Ctx().Opp.AddEffect(e.Ctx().Our, e.Ctx().Opp.InitEffect(input.EffectType.Sub, 1886, int(e.Args()[1].IntPart()), int(e.Args()[2].IntPart()))) } return true @@ -603,7 +603,7 @@ func (e *Effect1892Sub) Skill_Use() bool { return true } drain := e.Args()[1] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) < 0 { drain = drain.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: drain}) @@ -640,7 +640,7 @@ func (e *Effect1894) Skill_Use() bool { } else { e.Ctx().Our.HealPP(-1) } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } diff --git a/logic/service/fight/effect/1895_1919.go b/logic/service/fight/effect/1895_1919.go index fcaeb92ba..a18bf6ed1 100644 --- a/logic/service/fight/effect/1895_1919.go +++ b/logic/service/fight/effect/1895_1919.go @@ -32,8 +32,8 @@ type Effect1896 struct { } func (e *Effect1896) Skill_Use() bool { - for i := range e.Ctx().Opp.CurrentPet.Info.SkillList { - e.Ctx().Opp.CurrentPet.Info.SkillList[i].PP = 0 + for i := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { + e.Ctx().Opp.CurrentPet[0].Info.SkillList[i].PP = 0 } return true } @@ -199,7 +199,7 @@ func (e *Effect1908) OnSkill() bool { if len(e.Args()) < 4 { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -216,7 +216,7 @@ func (e *Effect1909) ComparePre(fattack, sattack *action.SelectSkillAction) bool if len(e.Args()) < 2 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Mul(alpacadecimal.NewFromInt(100)).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0])) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(alpacadecimal.NewFromInt(100)).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0])) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -256,7 +256,7 @@ type Effect1912 struct { } func (e *Effect1912) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(alpacadecimal.NewFromInt(150)) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(alpacadecimal.NewFromInt(150)) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -271,7 +271,7 @@ type Effect1913 struct { } func (e *Effect1913) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(alpacadecimal.NewFromInt(120)) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(alpacadecimal.NewFromInt(120)) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -286,7 +286,7 @@ type Effect1914 struct { } func (e *Effect1914) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(alpacadecimal.NewFromInt(90)) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(alpacadecimal.NewFromInt(90)) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -301,7 +301,7 @@ type Effect1915 struct { } func (e *Effect1915) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(alpacadecimal.NewFromInt(60)) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(alpacadecimal.NewFromInt(60)) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -316,7 +316,7 @@ type Effect1916 struct { } func (e *Effect1916) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(alpacadecimal.NewFromInt(30)) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(alpacadecimal.NewFromInt(30)) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -331,7 +331,7 @@ type Effect1917 struct { } func (e *Effect1917) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.NewFromInt(150)) >= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.NewFromInt(150)) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -346,7 +346,7 @@ type Effect1918 struct { } func (e *Effect1918) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.NewFromInt(120)) >= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.NewFromInt(120)) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -361,7 +361,7 @@ type Effect1919 struct { } func (e *Effect1919) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.NewFromInt(90)) >= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.NewFromInt(90)) >= 0 { return true } if fattack != nil && fattack.SkillEntity != nil { @@ -397,4 +397,3 @@ func init() { input.InitEffect(input.EffectType.Skill, 1918, &Effect1918{}) input.InitEffect(input.EffectType.Skill, 1919, &Effect1919{}) } - diff --git a/logic/service/fight/effect/1920_1944.go b/logic/service/fight/effect/1920_1944.go index 0ef621c00..9414e0400 100644 --- a/logic/service/fight/effect/1920_1944.go +++ b/logic/service/fight/effect/1920_1944.go @@ -18,7 +18,7 @@ func (e *Effect1920) ComparePre(fattack, sattack *action.SelectSkillAction) bool if current == nil || current.SkillEntity == nil { return true } - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(alpacadecimal.NewFromInt(60)).Div(hundred)) >= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(alpacadecimal.NewFromInt(60)).Div(hundred)) >= 0 { return true } current.SkillEntity.XML.Priority += 1 @@ -33,7 +33,7 @@ func (e *Effect1921) ComparePre(fattack, sattack *action.SelectSkillAction) bool if current == nil || current.SkillEntity == nil { return true } - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(alpacadecimal.NewFromInt(30)).Div(hundred)) >= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(alpacadecimal.NewFromInt(30)).Div(hundred)) >= 0 { return true } current.SkillEntity.XML.Priority += 1 @@ -133,7 +133,7 @@ func (e *Effect1925) OnSkill() bool { if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -188,7 +188,7 @@ func (e *Effect1928) OnSkill() bool { return true } if !e.Ctx().Opp.HasPropADD() { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) @@ -207,7 +207,7 @@ func (e *Effect1928) OnSkill() bool { } } if absorbed { - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0])) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0])) } return true } @@ -247,11 +247,11 @@ func (e *Effect1929) Skill_Use() bool { type Effect1927 struct{ node.EffectNode } func (e *Effect1927) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - heal := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) < 0 { + heal := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) < 0 { heal = heal.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) @@ -279,7 +279,7 @@ func (e *Effect1931) OnSkill() bool { if len(e.Args()) < 3 { return true } - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetHP()) < 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetHP()) < 0 { addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[2].IntPart())) } return true @@ -317,7 +317,7 @@ func (e *Effect1933) OnSkill() bool { if len(e.Args()) < 2 { return true } - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.Zero) <= 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.Zero) <= 0 { addStatusByID(e.Ctx().Our, e.Ctx().Our, int(e.Args()[1].IntPart())) } return true @@ -388,11 +388,11 @@ func (e *Effect1935Sub) EFFect_Befer(in *input.Input, effEffect input.Effect) bo type Effect1936 struct{ node.EffectNode } func (e *Effect1936) OnSkill() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetMaxHP()) < 0 { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetMaxHP()) < 0 { + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) } return true diff --git a/logic/service/fight/effect/1945_1969.go b/logic/service/fight/effect/1945_1969.go index 7b8254ff2..d0de32b80 100644 --- a/logic/service/fight/effect/1945_1969.go +++ b/logic/service/fight/effect/1945_1969.go @@ -55,7 +55,7 @@ func (e *Effect1946) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 2 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { zone.Damage = zone.Damage.Mul(hundred.Add(e.Args()[0])).Div(hundred) } return true @@ -76,7 +76,7 @@ func (e *Effect1947) Skill_Use() bool { if len(e.Args()) == 0 { return true } - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Args()[0]) } return true @@ -100,7 +100,7 @@ func (e *Effect1949) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) == 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(2))) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(2))) < 0 { zone.Damage = zone.Damage.Mul(hundred.Add(e.Args()[0])).Div(hundred) } return true @@ -113,7 +113,7 @@ func (e *Effect1950) OnSkill() bool { if len(e.Args()) == 0 { return true } - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(hundred) + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: drain}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, drain) return true @@ -200,8 +200,8 @@ func (e *Effect1956) ComparePre(fattack, sattack *action.SelectSkillAction) bool type Effect1957 struct{ node.EffectNode } func (e *Effect1957) Skill_Use() bool { - if e.Ctx().Our.CurrentPet != nil { - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + if e.Ctx().Our.CurrentPet[0] != nil { + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) } return true } @@ -213,7 +213,7 @@ func (e *Effect1958) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red { return true } - if e.Ctx().Our.CurrentPet != nil && e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(2)) } return true @@ -241,7 +241,7 @@ func (e *Effect1960) Skill_Use() bool { if len(e.Args()) == 0 { return true } - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { e.Ctx().Our.AddShield(e.Args()[0]) } return true @@ -269,7 +269,7 @@ func (e *Effect1961) DamageLockEx(zone *info.DamageZone) bool { type Effect1962 struct{ node.EffectNode } func (e *Effect1962) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { e.Ctx().Opp.CancelTurn(e.Ctx().Our) } return true @@ -303,7 +303,7 @@ func (e *Effect1965) OnSkill() bool { if len(e.Args()) == 0 { return true } - loss := e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(hundred) + loss := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: loss}) return true } diff --git a/logic/service/fight/effect/197.go b/logic/service/fight/effect/197.go index 80dcf8891..6d46025a7 100644 --- a/logic/service/fight/effect/197.go +++ b/logic/service/fight/effect/197.go @@ -11,7 +11,7 @@ type Effect197 struct { func (e *Effect197) SwitchOut(in *input.Input) bool { if e.Input == in { - if !e.Ctx().Our.CurrentPet.Alive() { // 被击败 + if !e.Ctx().Our.CurrentPet[0].Alive() { // 被击败 for i, v := range e.Ctx().Opp.Prop[:] { if v > 0 { e.Ctx().Opp.SetProp(e.Ctx().Opp, int8(i), 0) diff --git a/logic/service/fight/effect/1970_1994.go b/logic/service/fight/effect/1970_1994.go index 45579bdbd..9a9d2fc94 100644 --- a/logic/service/fight/effect/1970_1994.go +++ b/logic/service/fight/effect/1970_1994.go @@ -137,9 +137,9 @@ func (e *Effect1974) Skill_Use() bool { if !removed { return true } - for i := range e.Ctx().Our.CurrentPet.Info.SkillList { - if skill, ok := xmlres.SkillMap[int(e.Ctx().Our.CurrentPet.Info.SkillList[i].ID)]; ok { - e.Ctx().Our.CurrentPet.Info.SkillList[i].PP = uint32(skill.MaxPP) + for i := range e.Ctx().Our.CurrentPet[0].Info.SkillList { + if skill, ok := xmlres.SkillMap[int(e.Ctx().Our.CurrentPet[0].Info.SkillList[i].ID)]; ok { + e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP = uint32(skill.MaxPP) } } return true @@ -193,7 +193,7 @@ func (e *Effect1977) OnSkill() bool { if len(e.Args()) == 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } @@ -212,7 +212,7 @@ func (e *Effect1978) Skill_Use() bool { addStatus(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[1].IntPart())) return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } @@ -223,7 +223,7 @@ func (e *Effect1978) Skill_Use() bool { type Effect1979 struct{ node.EffectNode } func (e *Effect1979) Skill_Use() bool { - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) if !clearOppTurnEffects(e.Ctx().Our, e.Ctx().Opp) { return true } @@ -315,7 +315,7 @@ func (e *Effect1984) DamageDivEx(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 2 { return true } - zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(100-int64(e.Args()[1].IntPart()))).Div(alpacadecimal.NewFromInt(100)) + zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(100 - int64(e.Args()[1].IntPart()))).Div(alpacadecimal.NewFromInt(100)) return true } @@ -326,7 +326,7 @@ func (e *Effect1985) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) == 0 { return true } - zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(100+int64(e.Args()[0].IntPart()))).Div(alpacadecimal.NewFromInt(100)) + zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(100 + int64(e.Args()[0].IntPart()))).Div(alpacadecimal.NewFromInt(100)) return true } @@ -348,7 +348,7 @@ func (e *Effect1987) OnSkill() bool { if len(e.Args()) == 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } diff --git a/logic/service/fight/effect/199.go b/logic/service/fight/effect/199.go index a8473eb4a..4c79849ac 100644 --- a/logic/service/fight/effect/199.go +++ b/logic/service/fight/effect/199.go @@ -11,7 +11,7 @@ type Effect199 struct { func (e *Effect199) SwitchOut(in *input.Input) bool { if e.Input == in { - if !e.Ctx().Our.CurrentPet.Alive() { // 被击败 + if !e.Ctx().Our.CurrentPet[0].Alive() { // 被击败 // 设置下一个出场精灵的增益效果 effectType := int8(e.Args()[0].IntPart()) // xx类型 effectValue := int8(e.Args()[1].IntPart()) // 等级+k diff --git a/logic/service/fight/effect/1995_2019.go b/logic/service/fight/effect/1995_2019.go index fd73f7cdf..a43aba761 100644 --- a/logic/service/fight/effect/1995_2019.go +++ b/logic/service/fight/effect/1995_2019.go @@ -62,7 +62,7 @@ func (e *Effect1998) SkillHit() bool { if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { addSkillPowerPercent(e.Ctx().SkillEntity, e.Args()[0]) } return true @@ -142,7 +142,7 @@ func (e *Effect2005) SkillHit() bool { if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil { return true } - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetHP()) > 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetHP()) > 0 { addSkillPowerPercent(e.Ctx().SkillEntity, e.Args()[0]) } return true @@ -208,7 +208,7 @@ func (e *Effect2011) OnSkill() bool { if len(e.Args()) == 0 { return true } - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetHP()) > 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetHP()) > 0 { addFixedDamageToOpp(&e.EffectNode, e.Args()[0]) } return true @@ -221,7 +221,7 @@ func (e *Effect2012) SkillHit() bool { if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(2))) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(2))) < 0 { addSkillPowerPercent(e.Ctx().SkillEntity, e.Args()[0]) } return true @@ -245,7 +245,7 @@ func (e *Effect2014) OnSkill() bool { if len(e.Args()) == 0 { return true } - heal := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) return true } diff --git a/logic/service/fight/effect/2020_2044.go b/logic/service/fight/effect/2020_2044.go index 014780c8c..9d5cf2134 100644 --- a/logic/service/fight/effect/2020_2044.go +++ b/logic/service/fight/effect/2020_2044.go @@ -11,11 +11,11 @@ import ( ) func totalLostPP(in *input.Input) int64 { - if in == nil || in.CurrentPet == nil { + if in == nil || in.CurrentPet[0] == nil { return 0 } total := int64(0) - for _, s := range in.CurrentPet.Info.SkillList { + for _, s := range in.CurrentPet[0].Info.SkillList { if skill, ok := xmlres.SkillMap[int(s.ID)]; ok { total += int64(skill.MaxPP) - int64(s.PP) } @@ -41,11 +41,11 @@ func (e *Effect2020) ComparePre(fattack, sattack *action.SelectSkillAction) bool type Effect2021 struct{ node.EffectNode } func (e *Effect2021) Skill_Use() bool { - if len(e.Args()) < 4 || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 4 || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } heal := e.Args()[1] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) < 0 { heal = e.Args()[3] } e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) @@ -147,7 +147,7 @@ func (e *Effect2026) Skill_Use() bool { type Effect2027 struct{ node.EffectNode } func (e *Effect2027) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } e.Ctx().Opp.DelPP(int(e.Args()[0].IntPart())) @@ -194,8 +194,8 @@ type Effect2030 struct{ node.EffectNode } func (e *Effect2030) ComparePre(fattack, sattack *action.SelectSkillAction) bool { current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) - if current != nil && current.SkillEntity != nil && e.Ctx().Opp.CurrentPet != nil && e.Ctx().Our.CurrentPet != nil { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) > 0 { + if current != nil && current.SkillEntity != nil && e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0] != nil { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) > 0 { current.SkillEntity.XML.Priority += 1 } } @@ -209,8 +209,8 @@ func (e *Effect2031) Skill_Use() bool { if len(e.Args()) < 4 { return true } - oppPP := e.Ctx().Opp.CurrentPet.Info.SkillList - ourPP := e.Ctx().Our.CurrentPet.Info.SkillList + oppPP := e.Ctx().Opp.CurrentPet[0].Info.SkillList + ourPP := e.Ctx().Our.CurrentPet[0].Info.SkillList if len(oppPP) > 0 && int(oppPP[0].PP) == int(e.Ctx().SkillEntity.Info.PP) { addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[1].IntPart())) } @@ -251,7 +251,7 @@ func (e *Effect2032) Skill_Use() bool { type Effect2033 struct{ node.EffectNode } func (e *Effect2033) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } e.Ctx().Opp.DelPP(int(e.Args()[0].IntPart())) @@ -365,7 +365,7 @@ func (e *Effect2038) Skill_Use() bool { return true } addStatusByID(e.Ctx().Our, e.Ctx().Our, int(e.Args()[1].IntPart())) - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } diff --git a/logic/service/fight/effect/2045_2069.go b/logic/service/fight/effect/2045_2069.go index 3e8c9e8cf..9ff03638c 100644 --- a/logic/service/fight/effect/2045_2069.go +++ b/logic/service/fight/effect/2045_2069.go @@ -12,11 +12,11 @@ import ( ) func totalLostPP2045(in *input.Input) int64 { - if in == nil || in.CurrentPet == nil { + if in == nil || in.CurrentPet[0] == nil { return 0 } total := int64(0) - for _, s := range in.CurrentPet.Info.SkillList { + for _, s := range in.CurrentPet[0].Info.SkillList { if skill, ok := xmlres.SkillMap[int(s.ID)]; ok { total += int64(skill.MaxPP) - int64(s.PP) } @@ -55,7 +55,7 @@ func (e *Effect2046) SkillHit() bool { if len(e.Args()) < 2 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Crit == 0 { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1])) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1])) return true } @@ -207,10 +207,10 @@ func (e *Effect2055) Skill_Use() bool { return true } type Effect2056 struct{ node.EffectNode } func (e *Effect2056) OnSkill() bool { - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.Zero) > 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.Zero) > 0 { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } @@ -290,8 +290,8 @@ func (e *Effect2060) Skill_Use() bool { if len(e.Args()) < 4 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() != info.Category.STATUS { return true } - e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[3])}) - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[3])) + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[3])}) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[3])) return true } @@ -324,7 +324,7 @@ func (e *Effect2062) Skill_Use() bool { return true } type Effect2063 struct{ node.EffectNode } func (e *Effect2063) Skill_Use() bool { - e.Ctx().Our.CurrentPet.PetInfo.Type = 0 + e.Ctx().Our.CurrentPet[0].PetInfo.Type = 0 return true } @@ -332,7 +332,7 @@ func (e *Effect2063) Skill_Use() bool { type Effect2064 struct{ node.EffectNode } func (e *Effect2064) Skill_Use() bool { - e.Ctx().Our.CurrentPet.PetInfo.Type = 1 + e.Ctx().Our.CurrentPet[0].PetInfo.Type = 1 return true } @@ -340,10 +340,10 @@ func (e *Effect2064) Skill_Use() bool { type Effect2065 struct{ node.EffectNode } func (e *Effect2065) Skill_Use() bool { - if e.Ctx().Our.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil { return true } - if e.Ctx().Our.CurrentPet.PetInfo.Type == 0 { + if e.Ctx().Our.CurrentPet[0].PetInfo.Type == 0 { zeroRandomSkillPP(e.Ctx().Opp, 1) } return true diff --git a/logic/service/fight/effect/2070_2094.go b/logic/service/fight/effect/2070_2094.go index 2430c4b98..c07f141ba 100644 --- a/logic/service/fight/effect/2070_2094.go +++ b/logic/service/fight/effect/2070_2094.go @@ -44,12 +44,12 @@ func isControlStatus2087(statusID int) bool { } func countNotFullSkillPP2088(target *input.Input) int { - if target == nil || target.CurrentPet == nil { + if target == nil || target.CurrentPet[0] == nil { return 0 } count := 0 - for _, skillInfo := range target.CurrentPet.Info.SkillList { + for _, skillInfo := range target.CurrentPet[0].Info.SkillList { skill, ok := xmlres.SkillMap[int(skillInfo.ID)] if !ok || skill.MaxPP <= 0 { continue @@ -62,7 +62,7 @@ func countNotFullSkillPP2088(target *input.Input) int { } func restoreAllSkillPP2089(target *input.Input) { - if target == nil || target.CurrentPet == nil { + if target == nil || target.CurrentPet[0] == nil { return } target.HealPP(-1) @@ -128,7 +128,7 @@ type Effect2071 struct { } func (e *Effect2071) SwitchOut(in *input.Input) bool { - if in != e.Ctx().Our || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Our.CurrentPet.Alive() { + if in != e.Ctx().Our || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Our.CurrentPet[0].Alive() { return true } if len(e.Args()) < 2 { @@ -269,7 +269,7 @@ type Effect2075 struct { } func (e *Effect2075) Action_end() bool { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -313,32 +313,32 @@ type Effect2076 struct { } func (e *Effect2076) Skill_Use() bool { - if len(e.Args()) < 4 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) < 4 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } if e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { return true } - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if drain.Cmp(alpacadecimal.Zero) <= 0 { return true } if e.Args()[2].Cmp(alpacadecimal.Zero) > 0 { - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { drain = drain.Mul(alpacadecimal.NewFromInt(2)) } } - beforeHP := e.Ctx().Opp.CurrentPet.Info.Hp + beforeHP := e.Ctx().Opp.CurrentPet[0].Info.Hp e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: drain, }) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, drain) - if beforeHP == e.Ctx().Opp.CurrentPet.Info.Hp && e.Args()[3].Cmp(alpacadecimal.Zero) > 0 { + if beforeHP == e.Ctx().Opp.CurrentPet[0].Info.Hp && e.Args()[3].Cmp(alpacadecimal.Zero) > 0 { healBench(e.Ctx().Our, e.Args()[3]) } return true @@ -350,7 +350,7 @@ type Effect2077 struct { } func (e *Effect2077) Skill_Use() bool { - if len(e.Args()) < 4 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) < 4 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } if e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { @@ -359,8 +359,8 @@ func (e *Effect2077) Skill_Use() bool { drain := e.Args()[1] if e.Args()[2].Cmp(alpacadecimal.Zero) > 0 { - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { drain = drain.Mul(alpacadecimal.NewFromInt(2)) } } @@ -368,22 +368,22 @@ func (e *Effect2077) Skill_Use() bool { return true } - beforeHP := e.Ctx().Opp.CurrentPet.Info.Hp + beforeHP := e.Ctx().Opp.CurrentPet[0].Info.Hp e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: drain, }) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, drain) - if int64(beforeHP)-int64(e.Ctx().Opp.CurrentPet.Info.Hp) < 180 { + if int64(beforeHP)-int64(e.Ctx().Opp.CurrentPet[0].Info.Hp) < 180 { if e.Args()[3].Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.True, Damage: e.Args()[3], }) } - if e.Ctx().Our.CurrentPet != nil { - addStatusEffect(e.Ctx().Our, e.Ctx().Opp, effect2077StatusID(e.Ctx().Our.CurrentPet.PetInfo.Type, false)) + if e.Ctx().Our.CurrentPet[0] != nil { + addStatusEffect(e.Ctx().Our, e.Ctx().Opp, effect2077StatusID(e.Ctx().Our.CurrentPet[0].PetInfo.Type, false)) } } return true @@ -395,7 +395,7 @@ type Effect2078 struct { } func (e *Effect2078) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } if e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { @@ -403,15 +403,15 @@ func (e *Effect2078) Skill_Use() bool { } drain := e.Args()[0] - beforeHP := e.Ctx().Opp.CurrentPet.Info.Hp + beforeHP := e.Ctx().Opp.CurrentPet[0].Info.Hp e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: drain, }) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, drain) - if int64(beforeHP)-int64(e.Ctx().Opp.CurrentPet.Info.Hp) < 180 && e.Ctx().Our.CurrentPet != nil { - addStatusEffect(e.Ctx().Our, e.Ctx().Opp, effect2077StatusID(e.Ctx().Our.CurrentPet.PetInfo.Type, true)) + if int64(beforeHP)-int64(e.Ctx().Opp.CurrentPet[0].Info.Hp) < 180 && e.Ctx().Our.CurrentPet[0] != nil { + addStatusEffect(e.Ctx().Our, e.Ctx().Opp, effect2077StatusID(e.Ctx().Our.CurrentPet[0].PetInfo.Type, true)) } return true } @@ -446,7 +446,7 @@ func (e *Effect2079Sub) Damage_Shield(zone *info.DamageZone) bool { if zone == nil || zone.Damage.Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Our.CurrentShield().Cmp(alpacadecimal.Zero) <= 0 { + if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Our.CurrentShield().Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -487,7 +487,7 @@ type Effect2081 struct { } func (e *Effect2081) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } if e.Ctx().Opp.StatEffect_Exist_all() { @@ -504,7 +504,7 @@ type Effect2082 struct { } func (e *Effect2082) Skill_Use() bool { - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } if eff := e.Ctx().Opp.GetEffect(input.EffectType.Sub, 2082); eff != nil { @@ -812,11 +812,11 @@ func (e *Effect2089Sub) Action_end() bool { if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || e.Ctx().SkillEntity.AttackTime == 0 { return true } - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) restoreAllSkillPP2089(e.Ctx().Our) e.Alive(false) return true @@ -850,29 +850,29 @@ func getPoemState2091(owner *input.Input, create bool) *Effect2091 { type Effect2090 struct{ node.EffectNode } func (e *Effect2090) Skill_Use() bool { - if e.Ctx().Our == nil || e.Ctx().Opp == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Our == nil || e.Ctx().Opp == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Our.CurrentPet.GetMaxHP().Cmp(e.Ctx().Opp.CurrentPet.GetMaxHP()) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetMaxHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetMaxHP()) <= 0 { return true } - if len(e.Ctx().Opp.CurrentPet.Info.SkillList) < 5 { + if len(e.Ctx().Opp.CurrentPet[0].Info.SkillList) < 5 { return true } - pp := e.Ctx().Opp.CurrentPet.Info.SkillList[4].PP + pp := e.Ctx().Opp.CurrentPet[0].Info.SkillList[4].PP if pp <= 0 { return true } - e.Ctx().Opp.CurrentPet.Info.SkillList[4].PP = 0 + e.Ctx().Opp.CurrentPet[0].Info.SkillList[4].PP = 0 return true } func (e *Effect2090) Damage_Mul(zone *info.DamageZone) bool { - if zone == nil || zone.Type != info.DamageType.Red || e.Ctx().Our == nil || e.Ctx().Opp == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if zone == nil || zone.Type != info.DamageType.Red || e.Ctx().Our == nil || e.Ctx().Opp == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - ourMax := e.Ctx().Our.CurrentPet.GetMaxHP() - oppMax := e.Ctx().Opp.CurrentPet.GetMaxHP() + ourMax := e.Ctx().Our.CurrentPet[0].GetMaxHP() + oppMax := e.Ctx().Opp.CurrentPet[0].GetMaxHP() diff := ourMax.Sub(oppMax).Abs() if diff.Cmp(alpacadecimal.Zero) <= 0 { return true @@ -950,20 +950,20 @@ type Effect2093Sub struct { } func (e *Effect2093Sub) Skill_Use() bool { - if len(e.Args()) < 5 || e.Ctx().Our == nil || e.Ctx().Opp == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 5 || e.Ctx().Our == nil || e.Ctx().Opp == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) < 0 { + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) < 0 { drain = drain.Mul(alpacadecimal.NewFromInt(2)) } if drain.Cmp(alpacadecimal.Zero) <= 0 { return true } - before := e.Ctx().Opp.CurrentPet.Info.Hp + before := e.Ctx().Opp.CurrentPet[0].Info.Hp e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: drain}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, drain) - if e.Ctx().Opp.CurrentPet.Info.Hp >= before { + if e.Ctx().Opp.CurrentPet[0].Info.Hp >= before { return true } return true diff --git a/logic/service/fight/effect/2095_2119.go b/logic/service/fight/effect/2095_2119.go index a225dd999..613f9dfce 100644 --- a/logic/service/fight/effect/2095_2119.go +++ b/logic/service/fight/effect/2095_2119.go @@ -36,7 +36,7 @@ func (e *Effect2095) Skill_Use() bool { if len(e.Args()) < 4 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { return true } if ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100); ok { @@ -71,7 +71,7 @@ func (e *Effect2097) Skill_Use_ex() bool { if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { e.Ctx().Opp.CancelTurn(e.Ctx().Our) } return true @@ -105,7 +105,7 @@ func (e *Effect2099) Skill_Use() bool { if len(e.Args()) < 2 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: heal}) return true @@ -182,7 +182,7 @@ func (e *Effect2104) Skill_Use() bool { type Effect2105 struct{ node.EffectNode } func (e *Effect2105) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } if e.Ctx().Opp.AllPet != nil { @@ -204,8 +204,8 @@ func (e *Effect2106) Skill_Use() bool { return true } e.Ctx().Our.AddShield(alpacadecimal.NewFromInt(1)) - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0])) - e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0])}) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0])) + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0])}) return true } @@ -260,7 +260,7 @@ func (e *Effect2110) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Our.CurrentPet.GetType().Primary == e.Ctx().Opp.CurrentPet.GetType().Primary { + if e.Ctx().Our.CurrentPet[0].GetType().Primary == e.Ctx().Opp.CurrentPet[0].GetType().Primary { zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromFloat(1.5)) } return true @@ -304,7 +304,7 @@ func (e *Effect2115) Skill_Use() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.Category() != info.Category.STATUS { e.Ctx().Opp.CancelTurn(e.Ctx().Our) } - e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.True, Damage: e.Ctx().Opp.CurrentPet.GetMaxHP()}) + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.True, Damage: e.Ctx().Opp.CurrentPet[0].GetMaxHP()}) return true } @@ -342,7 +342,7 @@ func (e *Effect2118) Skill_Use_ex() bool { return true } if e.Ctx().Opp.StatEffect_Exist(info.PetStatus.Burned) { - e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1])}) + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1])}) } return true } diff --git a/logic/service/fight/effect/2120_2144.go b/logic/service/fight/effect/2120_2144.go index 08da73474..91fc9f1c0 100644 --- a/logic/service/fight/effect/2120_2144.go +++ b/logic/service/fight/effect/2120_2144.go @@ -15,7 +15,7 @@ func healBench2121(owner *input.Input, amount alpacadecimal.Decimal) { return } for _, pet := range owner.AllPet { - if pet == nil || !pet.Alive() || pet == owner.CurrentPet { + if pet == nil || !pet.Alive() || pet == owner.CurrentPet[0] { continue } pet.Info.ModelHP(amount.IntPart()) @@ -190,7 +190,7 @@ type Effect2120Sub struct{ RoundEffectArg0Base } type Effect2121 struct{ node.EffectNode } func (e *Effect2121) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } eff := e.Ctx().Our.InitEffect(input.EffectType.Sub, 2121, int(e.Args()[0].IntPart())) @@ -210,17 +210,17 @@ func (e *Effect2121Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect2121Sub) TurnEnd() { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return } - heal := e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) + heal := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) if heal.Cmp(alpacadecimal.Zero) <= 0 { return } - before := e.Ctx().Opp.CurrentPet.Info.Hp + before := e.Ctx().Opp.CurrentPet[0].Info.Hp e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: heal}) healBench2121(e.Ctx().Our, heal) - if e.Ctx().Opp.CurrentPet.Info.Hp < before { + if e.Ctx().Opp.CurrentPet[0].Info.Hp < before { e.Alive(false) } } @@ -254,11 +254,11 @@ func (e *Effect2122Sub) ShieldChange(before, after alpacadecimal.Decimal) bool { return true } restore := uint32(e.Args()[0].IntPart()) - if restore == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if restore == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - for i := range e.Ctx().Our.CurrentPet.Info.SkillList { - skillInfo := &e.Ctx().Our.CurrentPet.Info.SkillList[i] + for i := range e.Ctx().Our.CurrentPet[0].Info.SkillList { + skillInfo := &e.Ctx().Our.CurrentPet[0].Info.SkillList[i] skill, ok := xmlres.SkillMap[int(skillInfo.ID)] if !ok || skill.MaxPP <= 0 { continue @@ -281,7 +281,7 @@ func (e *Effect2123) Skill_Use() bool { return true } if !clearTargetEffects(e.Ctx().Our, e.Ctx().Opp) { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) } @@ -453,7 +453,7 @@ func (e *Effect2131) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) == 0 || !e.Ctx().Our.StatEffect_Exist(info.PetStatus.DrainedHP) { return true } - zone.Damage = zone.Damage.Add(e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0])) + zone.Damage = zone.Damage.Add(e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0])) return true } @@ -505,7 +505,7 @@ func (e *Effect2134) OnSkill() bool { if !reversed { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) e.Ctx().Our.HealPP(-1) return true } @@ -604,21 +604,21 @@ func (e *Effect2139) Damage_Mul(zone *info.DamageZone) bool { type Effect2140 struct{ node.EffectNode } func (e *Effect2140) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) < 3 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } - beforeHP := e.Ctx().Opp.CurrentPet.GetHP() + beforeHP := e.Ctx().Opp.CurrentPet[0].GetHP() percent := e.Args()[0] if seed := getAliveStatusEffect(e.Ctx().Opp, status2138ShadowSeed); seed != nil && seed.Stack() > 0 { percent = percent.Add(e.Args()[1].Mul(alpacadecimal.NewFromInt(int64(seed.Stack())))) } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) } - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(beforeHP) >= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(beforeHP) >= 0 { if eff := e.Ctx().Our.InitEffect(input.EffectType.Sub, 2144, int(e.Args()[2].IntPart())); eff != nil { e.Ctx().Opp.AddEffect(e.Ctx().Our, eff) e.Ctx().Opp.CanChange = 1 @@ -631,7 +631,7 @@ func (e *Effect2140) Skill_Use() bool { type Effect2141 struct{ node.EffectNode } func (e *Effect2141) Skill_Use() bool { - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } if !hasShadowSeed(e.Ctx().Opp) { @@ -715,7 +715,7 @@ func (e *Effect2144Sub) TurnEnd() { e.Alive(false) return } - if e.Ctx().Our != nil && e.Ctx().Our.CurrentPet != nil && e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if e.Ctx().Our != nil && e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { e.Ctx().Our.CanChange = 1 } } diff --git a/logic/service/fight/effect/2145_2169.go b/logic/service/fight/effect/2145_2169.go index 8540bdfc6..f6caca809 100644 --- a/logic/service/fight/effect/2145_2169.go +++ b/logic/service/fight/effect/2145_2169.go @@ -144,10 +144,10 @@ func (e *Effect2155) OnSkill() bool { if len(e.Args()) < 3 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) if !e.Ctx().Our.HasPropADD() { - e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2])}) + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2])}) } return true } @@ -173,8 +173,8 @@ func (e *Effect2157) SkillHit() bool { return true } boost := e.Args()[0] - if e.Ctx().Opp.CurrentPet != nil { - for _, s := range e.Ctx().Opp.CurrentPet.Info.SkillList { + if e.Ctx().Opp.CurrentPet[0] != nil { + for _, s := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { if int(s.PP) < int(e.Args()[1].IntPart()) { boost = boost.Mul(alpacadecimal.NewFromInt(2)) break @@ -203,7 +203,7 @@ func (e *Effect2159) SkillHit() bool { if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { addSkillPowerPercent(e.Ctx().SkillEntity, e.Args()[0]) } return true diff --git a/logic/service/fight/effect/2170_2194.go b/logic/service/fight/effect/2170_2194.go index 153813d10..edf74c9b0 100644 --- a/logic/service/fight/effect/2170_2194.go +++ b/logic/service/fight/effect/2170_2194.go @@ -50,10 +50,10 @@ func (e *Effect2171) SkillHit() bool { type Effect2172 struct{ node.EffectNode } func (e *Effect2172) OnSkill() bool { - if len(e.Args()) < 2 || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) < 2 || e.Ctx().Our.CurrentPet[0] == nil { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(e.Args()[1].IntPart())) } return true @@ -88,8 +88,8 @@ func (e *Effect2174) OnSkill() bool { return true } zeros := 0 - if e.Ctx().Our.CurrentPet != nil { - for _, s := range e.Ctx().Our.CurrentPet.Info.SkillList { + if e.Ctx().Our.CurrentPet[0] != nil { + for _, s := range e.Ctx().Our.CurrentPet[0].Info.SkillList { if s.PP <= 0 { zeros++ } @@ -100,7 +100,7 @@ func (e *Effect2174) OnSkill() bool { } heal := alpacadecimal.NewFromInt(int64(zeros)).Mul(e.Args()[0]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.Zero) > 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.True, Damage: heal}) } return true @@ -153,7 +153,7 @@ func (e *Effect2178) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) == 0 || e.Ctx().SkillEntity == nil { return true } - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(100 + int64(e.Args()[0].IntPart()))).Div(alpacadecimal.NewFromInt(100)) } return true @@ -166,7 +166,7 @@ func (e *Effect2179) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) == 0 || e.Ctx().SkillEntity == nil { return true } - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(100 + int64(e.Args()[0].IntPart()))).Div(alpacadecimal.NewFromInt(100)) } return true @@ -179,7 +179,7 @@ func (e *Effect2180) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) == 0 || e.Ctx().SkillEntity == nil { return true } - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(100 + int64(e.Args()[0].IntPart()))).Div(alpacadecimal.NewFromInt(100)) } return true @@ -308,7 +308,7 @@ func (e *Effect2193) Skill_Use() bool { type Effect2194 struct{ node.EffectNode } func (e *Effect2194) OnSkill() bool { - if e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Opp.CurrentPet[0] == nil { return true } addStatusByID(e.Ctx().Our, e.Ctx().Opp, int(info.PetStatus.DrainedHP)) diff --git a/logic/service/fight/effect/2195_2219.go b/logic/service/fight/effect/2195_2219.go index a56b246c0..a321fdd22 100644 --- a/logic/service/fight/effect/2195_2219.go +++ b/logic/service/fight/effect/2195_2219.go @@ -59,10 +59,10 @@ func tryAddStatusByID(owner, target *input.Input, statusID int) bool { } func countLightDarkSkills(target *input.Input) (light, dark int) { - if target == nil || target.CurrentPet == nil { + if target == nil || target.CurrentPet[0] == nil { return 0, 0 } - for _, skillInfo := range target.CurrentPet.Info.SkillList { + for _, skillInfo := range target.CurrentPet[0].Info.SkillList { skill, ok := xmlres.SkillMap[int(skillInfo.ID)] if !ok { continue @@ -78,22 +78,22 @@ func countLightDarkSkills(target *input.Input) (light, dark int) { } func currentNewSelEffect(our *input.Input, id int) bool { - if our == nil || our.CurrentPet == nil { + if our == nil || our.CurrentPet[0] == nil { return false } eff := our.GetEffect(input.EffectType.NewSel, id) if eff == nil || !eff.Alive() { return false } - return eff.ID().GetCatchTime() == our.CurrentPet.Info.CatchTime + return eff.ID().GetCatchTime() == our.CurrentPet[0].Info.CatchTime } func attackSkillPPCount(target *input.Input) int { - if target == nil || target.CurrentPet == nil { + if target == nil || target.CurrentPet[0] == nil { return 0 } count := 0 - for _, skillInfo := range target.CurrentPet.Info.SkillList { + for _, skillInfo := range target.CurrentPet[0].Info.SkillList { skill, ok := xmlres.SkillMap[int(skillInfo.ID)] if !ok || skill.Category == int(info.Category.STATUS) || skillInfo.PP == 0 { continue @@ -104,14 +104,14 @@ func attackSkillPPCount(target *input.Input) int { } func zeroRandomAttackSkillPP(target *input.Input, count int) int { - if target == nil || target.CurrentPet == nil || count <= 0 { + if target == nil || target.CurrentPet[0] == nil || count <= 0 { return 0 } zeroed := 0 for zeroed < count { - candidates := make([]int, 0, len(target.CurrentPet.Info.SkillList)) - for i, skillInfo := range target.CurrentPet.Info.SkillList { + candidates := make([]int, 0, len(target.CurrentPet[0].Info.SkillList)) + for i, skillInfo := range target.CurrentPet[0].Info.SkillList { skill, ok := xmlres.SkillMap[int(skillInfo.ID)] if !ok || skill.Category == int(info.Category.STATUS) || skillInfo.PP == 0 { continue @@ -123,7 +123,7 @@ func zeroRandomAttackSkillPP(target *input.Input, count int) int { } idx := candidates[grand.Intn(len(candidates))] - target.CurrentPet.Info.SkillList[idx].PP = 0 + target.CurrentPet[0].Info.SkillList[idx].PP = 0 zeroed++ } @@ -290,14 +290,14 @@ func (e *Effect2202) Skill_Use() bool { if dark < light { return true } - if e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } divisor := e.Args()[0] if divisor.Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(divisor) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(divisor) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -389,14 +389,14 @@ func (e *Effect2205) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || e.Ctx().SkillEntity == nil || !e.Ctx().Our.StatEffect_Exist_all() { return true } - if e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - attackMul, err := element.Calculator.GetOffensiveMultiplier(e.Ctx().SkillEntity.GetType().ID, e.Ctx().Opp.CurrentPet.GetType().ID) + attackMul, err := element.Calculator.GetOffensiveMultiplier(e.Ctx().SkillEntity.GetType().ID, e.Ctx().Opp.CurrentPet[0].GetType().ID) if err != nil || attackMul <= 0 { return true } - counterMul, err := element.Calculator.GetOffensiveMultiplier(e.Ctx().Opp.CurrentPet.GetType().ID, e.Ctx().Our.CurrentPet.GetType().ID) + counterMul, err := element.Calculator.GetOffensiveMultiplier(e.Ctx().Opp.CurrentPet[0].GetType().ID, e.Ctx().Our.CurrentPet[0].GetType().ID) if err != nil || counterMul <= 0 || counterMul <= attackMul { return true } @@ -489,7 +489,7 @@ func (e *Effect2209) OnSkill() bool { if len(e.Args()) == 0 { return true } - if e.Ctx().SkillEntity != nil && e.Ctx().Our.CurrentPet != nil && e.Ctx().Opp.CurrentPet != nil { + if e.Ctx().SkillEntity != nil && e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0] != nil { drain := alpacadecimal.NewFromInt(int64(e.Args()[0].IntPart())) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, @@ -507,7 +507,7 @@ type Effect2210 struct { func (e *Effect2210) Skill_Use() bool { skill := e.Ctx().SkillEntity - if skill == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if skill == nil || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } if skill.Category() == info.Category.STATUS { @@ -525,8 +525,8 @@ func (e *Effect2210) Skill_Use() bool { } else { skill.XML.Category = int(info.Category.SPECIAL) } - skill.XML.Type = e.Ctx().Our.CurrentPet.PetInfo.Type - skill.XML.Power += int(e.Ctx().Our.CurrentPet.Info.Dv) + skill.XML.Type = e.Ctx().Our.CurrentPet[0].PetInfo.Type + skill.XML.Power += int(e.Ctx().Our.CurrentPet[0].Info.Dv) return true } @@ -539,7 +539,7 @@ func (e *Effect2211) Skill_Use() bool { if len(e.Args()) < 3 { return true } - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } @@ -608,7 +608,7 @@ type Effect2212 struct { } func (e *Effect2212) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } @@ -645,11 +645,11 @@ type Effect2213 struct { } func (e *Effect2213) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - currentHP := e.Ctx().Our.CurrentPet.GetHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() if currentHP.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -704,7 +704,7 @@ type Effect2214 struct { func (e *Effect2214) Skill_Use() bool { e.boost = false - if len(e.Args()) < 1 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 1 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } @@ -791,12 +791,12 @@ type Effect2218 struct { } func (e *Effect2218) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } targetType := int(e.Args()[1].IntPart()) - if e.Ctx().Our.CurrentPet.PetInfo.Type == targetType { + if e.Ctx().Our.CurrentPet[0].PetInfo.Type == targetType { for i := 0; i < 6; i++ { e.Ctx().Our.SetProp(e.Ctx().Our, int8(i), int8(e.Args()[2].IntPart())) } @@ -805,7 +805,7 @@ func (e *Effect2218) Skill_Use() bool { sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 2218, int(e.Args()[0].IntPart()), targetType) if sub != nil { - e.Ctx().Our.CurrentPet.PetInfo.Type = targetType + e.Ctx().Our.CurrentPet[0].PetInfo.Type = targetType e.Ctx().Our.AddEffect(e.Ctx().Our, sub) } return true @@ -819,8 +819,8 @@ type Effect2218Sub struct { func (e *Effect2218Sub) SetArgs(t *input.Input, a ...int) { e.EffectNode.SetArgs(t, a...) - if e.Ctx() != nil && e.Ctx().Our != nil && e.Ctx().Our.CurrentPet != nil { - e.oldType = e.Ctx().Our.CurrentPet.PetInfo.Type + if e.Ctx() != nil && e.Ctx().Our != nil && e.Ctx().Our.CurrentPet[0] != nil { + e.oldType = e.Ctx().Our.CurrentPet[0].PetInfo.Type } if len(a) > 0 { e.Duration(a[0]) @@ -831,8 +831,8 @@ func (e *Effect2218Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect2218Sub) Alive(t ...bool) bool { - if len(t) > 0 && !t[0] && e.Ctx() != nil && e.Ctx().Our != nil && e.Ctx().Our.CurrentPet != nil && e.Ctx().Our.CurrentPet.PetInfo.Type == e.targetType { - e.Ctx().Our.CurrentPet.PetInfo.Type = e.oldType + if len(t) > 0 && !t[0] && e.Ctx() != nil && e.Ctx().Our != nil && e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].PetInfo.Type == e.targetType { + e.Ctx().Our.CurrentPet[0].PetInfo.Type = e.oldType } return e.EffectNode.Alive(t...) } @@ -843,10 +843,10 @@ type Effect2219 struct { } func (e *Effect2219) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - target := int(e.Ctx().Our.CurrentPet.Info.MaxHp) * int(e.Args()[0].IntPart()) / 100 + target := int(e.Ctx().Our.CurrentPet[0].Info.MaxHp) * int(e.Args()[0].IntPart()) / 100 current := e.Ctx().Our.CurrentDivineEnergy() if target <= current { return true diff --git a/logic/service/fight/effect/2220_2244.go b/logic/service/fight/effect/2220_2244.go index 2c6e5dc4f..444eaadeb 100644 --- a/logic/service/fight/effect/2220_2244.go +++ b/logic/service/fight/effect/2220_2244.go @@ -89,10 +89,10 @@ func (e *Effect2222) Damage_Mul(zone *info.DamageZone) bool { if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) == 0 { return true } - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetMaxHP()) >= 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetMaxHP()) >= 0 { zone.Damage = zone.Damage.Mul(hundred.Add(e.Args()[0])).Div(hundred) } return true @@ -157,11 +157,11 @@ func (e *Effect2224) Damage_Mul(zone *info.DamageZone) bool { type Effect2225 struct{ node.EffectNode } func (e *Effect2225) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - maxHP := e.Ctx().Opp.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Opp.CurrentPet[0].GetMaxHP() if e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -174,9 +174,9 @@ func (e *Effect2225) Skill_Use() bool { if newMax.Cmp(alpacadecimal.NewFromInt(1)) < 0 { newMax = alpacadecimal.NewFromInt(1) } - e.Ctx().Opp.CurrentPet.Info.MaxHp = uint32(newMax.IntPart()) - if e.Ctx().Opp.CurrentPet.Info.Hp > e.Ctx().Opp.CurrentPet.Info.MaxHp { - e.Ctx().Opp.CurrentPet.Info.Hp = e.Ctx().Opp.CurrentPet.Info.MaxHp + e.Ctx().Opp.CurrentPet[0].Info.MaxHp = uint32(newMax.IntPart()) + if e.Ctx().Opp.CurrentPet[0].Info.Hp > e.Ctx().Opp.CurrentPet[0].Info.MaxHp { + e.Ctx().Opp.CurrentPet[0].Info.Hp = e.Ctx().Opp.CurrentPet[0].Info.MaxHp } return true } @@ -334,7 +334,7 @@ func (e *Effect2227Sub) ActionStart(a, b *action.SelectSkillAction) bool { type Effect2229 struct{ node.EffectNode } func (e *Effect2229) OnSkill() bool { - if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } clearRoundEffects2229(e.Ctx().Our) @@ -362,13 +362,13 @@ func (e *Effect2230) Skill_Use() bool { type Effect2230Sub struct{ RoundEffectArg0Base } func (e *Effect2230Sub) OnSkill() bool { - if len(e.Args()) < 4 || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 4 || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - fullHP := e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 + fullHP := e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 if !fullHP { - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } @@ -398,11 +398,11 @@ func (e *Effect2231) Skill_Use() bool { type Effect2231Sub struct{ RoundEffectArg0Base } func (e *Effect2231Sub) OnSkill() bool { - if len(e.Args()) < 2 || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 2 || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - lost := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + lost := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if lost.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -762,12 +762,12 @@ func (e *Effect2243Sub) DamageLock(zone *info.DamageZone) bool { if zone == nil || zone.Damage.Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(zone.Damage) > 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(zone.Damage) > 0 { return true } zone.Damage = alpacadecimal.Zero - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } diff --git a/logic/service/fight/effect/2245_2269.go b/logic/service/fight/effect/2245_2269.go index 3c340f8d7..a792b2404 100644 --- a/logic/service/fight/effect/2245_2269.go +++ b/logic/service/fight/effect/2245_2269.go @@ -87,12 +87,12 @@ func (e *Effect2247) ComparePre(fattack, sattack *action.SelectSkillAction) bool type Effect2248 struct{ node.EffectNode } func (e *Effect2248) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Our.CurrentPet[0] == nil { return true } restore := uint32(e.Args()[0].IntPart()) - for i := range e.Ctx().Our.CurrentPet.Info.SkillList { - e.Ctx().Our.CurrentPet.Info.SkillList[i].PP += restore + for i := range e.Ctx().Our.CurrentPet[0].Info.SkillList { + e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP += restore } return true } @@ -103,8 +103,8 @@ type Effect2249 struct{ node.EffectNode } func (e *Effect2249) Skill_Use() bool { if e.Ctx().Our.HasPropADD() { e.Ctx().Our.SetProp(e.Ctx().Our, 0, 0) - for i := range e.Ctx().Our.CurrentPet.Info.SkillList { - e.Ctx().Our.CurrentPet.Info.SkillList[i].PP = e.Ctx().Our.CurrentPet.Info.SkillList[i].PP + for i := range e.Ctx().Our.CurrentPet[0].Info.SkillList { + e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP = e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP } } return true @@ -133,7 +133,7 @@ func (e *Effect2251) Skill_Use() bool { return true } if e.Ctx().Our.Prop[0] == e.Ctx().Our.Prop[1] && e.Ctx().Our.Prop[1] == e.Ctx().Our.Prop[2] && e.Ctx().Our.Prop[2] == e.Ctx().Our.Prop[3] && e.Ctx().Our.Prop[3] == e.Ctx().Our.Prop[4] && e.Ctx().Our.Prop[4] == e.Ctx().Our.Prop[5] { - e.Ctx().Our.AddShield(e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(hundred)) + e.Ctx().Our.AddShield(e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred)) } return true } @@ -145,7 +145,7 @@ func (e *Effect2252) Skill_Use() bool { if len(e.Args()) == 0 { return true } - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { e.Ctx().Our.AddShield(e.Args()[0]) } return true @@ -158,7 +158,7 @@ func (e *Effect2253) Skill_Use() bool { if len(e.Args()) < 2 { return true } - diff := e.Ctx().Our.CurrentPet.GetHP().Sub(e.Ctx().Opp.CurrentPet.GetHP()) + diff := e.Ctx().Our.CurrentPet[0].GetHP().Sub(e.Ctx().Opp.CurrentPet[0].GetHP()) if diff.Cmp(alpacadecimal.Zero) < 0 { diff = diff.Mul(alpacadecimal.NewFromInt(-1)) } @@ -181,8 +181,8 @@ func (e *Effect2254) Damage_Mul(zone *info.DamageZone) bool { type Effect2255 struct{ node.EffectNode } func (e *Effect2255) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet != nil { - e.Ctx().Opp.CurrentPet.PetInfo.Type = 8 + if e.Ctx().Opp.CurrentPet[0] != nil { + e.Ctx().Opp.CurrentPet[0].PetInfo.Type = 8 } return true } @@ -199,7 +199,7 @@ func (e *Effect2257) Skill_Use() bool { if len(e.Args()) < 2 { return true } - if e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { e.Ctx().Our.CancelTurn(e.Ctx().Our) e.Ctx().Our.AddShield(e.Args()[0]) } @@ -242,7 +242,7 @@ func (e *Effect2261) OnSkill() bool { if len(e.Args()) == 0 { return true } - lost := e.Ctx().Opp.CurrentPet.GetMaxHP().Sub(e.Ctx().Opp.CurrentPet.GetHP()) + lost := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Opp.CurrentPet[0].GetHP()) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: lost.Mul(e.Args()[0]).Div(hundred)}) return true } diff --git a/logic/service/fight/effect/2270_2294.go b/logic/service/fight/effect/2270_2294.go index 29c713bfe..8d0015568 100644 --- a/logic/service/fight/effect/2270_2294.go +++ b/logic/service/fight/effect/2270_2294.go @@ -89,10 +89,10 @@ func isCatchTimeMarked227x(target *input.Input, catchTime uint32) bool { } func currentIsMarked227x(target *input.Input) bool { - if target == nil || target.CurrentPet == nil { + if target == nil || target.CurrentPet[0] == nil { return false } - return isCatchTimeMarked227x(target, target.CurrentPet.Info.CatchTime) + return isCatchTimeMarked227x(target, target.CurrentPet[0].Info.CatchTime) } func markedPet227x(target *input.Input) *info.BattlePetEntity { @@ -104,8 +104,8 @@ func markedPet227x(target *input.Input) *info.BattlePetEntity { if markedCatch == 0 { continue } - if target.CurrentPet != nil && target.CurrentPet.Info.CatchTime == markedCatch && target.CurrentPet.Alive() { - return target.CurrentPet + if target.CurrentPet[0] != nil && target.CurrentPet[0].Info.CatchTime == markedCatch && target.CurrentPet[0].Alive() { + return target.CurrentPet[0] } for _, pet := range target.AllPet { if pet != nil && pet.Info.CatchTime == markedCatch && pet.Alive() { @@ -117,20 +117,20 @@ func markedPet227x(target *input.Input) *info.BattlePetEntity { } func pickBenchByCounter227x(our, opp *input.Input, pickHighest bool) *info.BattlePetEntity { - if our == nil || opp == nil || our.CurrentPet == nil { + if our == nil || opp == nil || our.CurrentPet[0] == nil { return nil } var chosen *info.BattlePetEntity var chosenMul float64 for _, pet := range opp.AllPet { - if pet == nil || !pet.Alive() || pet == opp.CurrentPet { + if pet == nil || !pet.Alive() || pet == opp.CurrentPet[0] { continue } if isCatchTimeMarked227x(opp, pet.Info.CatchTime) { continue } - mul, err := element.Calculator.GetOffensiveMultiplier(pet.GetType().ID, our.CurrentPet.GetType().ID) + mul, err := element.Calculator.GetOffensiveMultiplier(pet.GetType().ID, our.CurrentPet[0].GetType().ID) if err != nil { continue } @@ -292,7 +292,7 @@ func (e *Effect2272) Damage_Mul(zone *info.DamageZone) bool { return true } for _, pet := range e.Ctx().Our.AllPet { - if pet != nil && pet.Alive() && pet != e.Ctx().Our.CurrentPet { + if pet != nil && pet.Alive() && pet != e.Ctx().Our.CurrentPet[0] { zone.Damage = zone.Damage.Mul(alpacadecimal.NewFromInt(100 + int64(e.Args()[0].IntPart()))).Div(alpacadecimal.NewFromInt(100)) break } @@ -326,7 +326,7 @@ func (e *Effect2273) ComparePre(fattack, sattack *action.SelectSkillAction) bool type Effect2274 struct{ node.EffectNode } func (e *Effect2274) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } restored := totalLostPP(e.Ctx().Our) @@ -344,10 +344,10 @@ func (e *Effect2274) Skill_Use() bool { type Effect2275 struct{ node.EffectNode } func (e *Effect2275) Skill_Use() bool { - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || !e.Ctx().Opp.CurrentPet.Alive() { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || !e.Ctx().Opp.CurrentPet[0].Alive() { return true } - applyHuntMark227x(e.Ctx().Our, e.Ctx().Opp, 2275, e.Ctx().Opp.CurrentPet.Info.CatchTime) + applyHuntMark227x(e.Ctx().Our, e.Ctx().Opp, 2275, e.Ctx().Opp.CurrentPet[0].Info.CatchTime) return true } @@ -438,7 +438,7 @@ func (e *Effect2278) Skill_Use() bool { marked := markedPet227x(e.Ctx().Opp) if marked == nil { - marked = e.Ctx().Opp.CurrentPet + marked = e.Ctx().Opp.CurrentPet[0] } if marked == nil { return true @@ -509,10 +509,10 @@ func (e *Effect2279Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect2279Sub) SwitchOut(in *input.Input) bool { - if in != e.Ctx().Opp || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Alive() { + if in != e.Ctx().Opp || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Alive() { return true } - if !isCatchTimeMarked227x(e.Ctx().Opp, e.Ctx().Opp.CurrentPet.Info.CatchTime) { + if !isCatchTimeMarked227x(e.Ctx().Opp, e.Ctx().Opp.CurrentPet[0].Info.CatchTime) { return true } e.pendingMark = true @@ -521,10 +521,10 @@ func (e *Effect2279Sub) SwitchOut(in *input.Input) bool { } func (e *Effect2279Sub) SwitchIn(in *input.Input) bool { - if !e.pendingMark || in != e.Ctx().Opp || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || !e.Ctx().Opp.CurrentPet.Alive() { + if !e.pendingMark || in != e.Ctx().Opp || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || !e.Ctx().Opp.CurrentPet[0].Alive() { return true } - applyHuntMark227x(e.Ctx().Our, e.Ctx().Opp, 2275, e.Ctx().Opp.CurrentPet.Info.CatchTime) + applyHuntMark227x(e.Ctx().Our, e.Ctx().Opp, 2275, e.Ctx().Opp.CurrentPet[0].Info.CatchTime) e.pendingMark = false return true } @@ -582,10 +582,10 @@ func (e *Effect2281) Skill_Use() bool { type Effect2281Sub struct{ FixedDurationNeg1Base } func (e *Effect2281Sub) DamageLockEx(zone *info.DamageZone) bool { - if zone == nil || zone.Type != info.DamageType.Red || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if zone == nil || zone.Type != info.DamageType.Red || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - currentHP := e.Ctx().Our.CurrentPet.GetHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() if zone.Damage.Cmp(currentHP) < 0 { return true } @@ -598,23 +598,23 @@ func (e *Effect2281Sub) DamageLockEx(zone *info.DamageZone) bool { type Effect2282 struct{ node.EffectNode } func applyEffect2282(owner, target *input.Input, divisor, truePercent int) { - if owner == nil || target == nil || owner.CurrentPet == nil || target.CurrentPet == nil || divisor <= 0 { + if owner == nil || target == nil || owner.CurrentPet[0] == nil || target.CurrentPet[0] == nil || divisor <= 0 { return } - heal := owner.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(int64(divisor))) + heal := owner.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(int64(divisor))) if heal.Cmp(alpacadecimal.Zero) <= 0 { return } owner.Heal(owner, &action.SelectSkillAction{}, heal) - beforeHP := target.CurrentPet.GetHP() + beforeHP := target.CurrentPet[0].GetHP() target.Damage(owner, &info.DamageZone{Type: info.DamageType.Percent, Damage: heal}) - if truePercent <= 0 || beforeHP.Cmp(target.CurrentPet.GetHP()) != 0 { + if truePercent <= 0 || beforeHP.Cmp(target.CurrentPet[0].GetHP()) != 0 { return } - trueDamage := owner.CurrentPet.GetMaxHP().Mul(alpacadecimal.NewFromInt(int64(truePercent))).Div(hundred) + trueDamage := owner.CurrentPet[0].GetMaxHP().Mul(alpacadecimal.NewFromInt(int64(truePercent))).Div(hundred) if trueDamage.Cmp(alpacadecimal.Zero) > 0 { target.Damage(owner, &info.DamageZone{Type: info.DamageType.True, Damage: trueDamage}) } @@ -655,7 +655,7 @@ func (e *Effect2282Sub) Skill_Use() bool { type Effect2283 struct{ node.EffectNode } func (e *Effect2283) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } @@ -671,7 +671,7 @@ func (e *Effect2283) Skill_Use() bool { benchCount := 0 for _, pet := range e.Ctx().Our.AllPet { - if pet == nil || pet == e.Ctx().Our.CurrentPet || pet.Info.Hp == 0 { + if pet == nil || pet == e.Ctx().Our.CurrentPet[0] || pet.Info.Hp == 0 { continue } benchCount++ @@ -680,7 +680,7 @@ func (e *Effect2283) Skill_Use() bool { healEach := consumed.Div(alpacadecimal.NewFromInt(int64(benchCount))) if healEach.Cmp(alpacadecimal.Zero) > 0 { for _, pet := range e.Ctx().Our.AllPet { - if pet == nil || pet == e.Ctx().Our.CurrentPet || pet.Info.Hp == 0 { + if pet == nil || pet == e.Ctx().Our.CurrentPet[0] || pet.Info.Hp == 0 { continue } pet.Info.ModelHP(healEach.IntPart()) @@ -702,7 +702,7 @@ func (e *Effect2283) Skill_Use() bool { return true } if e.Args()[2].Cmp(alpacadecimal.Zero) > 0 { - maxBonus := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[2]).Div(hundred) + maxBonus := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[2]).Div(hundred) if maxBonus.Cmp(alpacadecimal.Zero) > 0 && bonusShield.Cmp(maxBonus) > 0 { bonusShield = maxBonus } @@ -736,14 +736,14 @@ func addRandomControlStatus2284(owner, target *input.Input, count int) { } func (e *Effect2284) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 2 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Opp.CurrentPet.PetInfo.Type == int(element.ElementTypeNormal) { + if e.Ctx().Opp.CurrentPet[0].PetInfo.Type == int(element.ElementTypeNormal) { return true } - e.Ctx().Opp.CurrentPet.PetInfo.Type = int(element.ElementTypeNormal) + e.Ctx().Opp.CurrentPet[0].PetInfo.Type = int(element.ElementTypeNormal) addRandomControlStatus2284(e.Ctx().Our, e.Ctx().Opp, 1) rounds := int(e.Args()[0].IntPart()) @@ -762,7 +762,7 @@ func (e *Effect2284) Skill_Use() bool { type Effect2284Sub struct{ RoundEffectArg0Base } func (e *Effect2284Sub) Action_end() bool { - if len(e.Args()) < 2 || e.Ctx().SkillEntity == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 2 || e.Ctx().SkillEntity == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } @@ -874,7 +874,7 @@ func (e *Effect2286Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect2286Sub) PropBefer(_ *input.Input, prop, level int8) bool { - if e.remaining <= 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if e.remaining <= 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { e.Alive(false) return true } @@ -882,15 +882,15 @@ func (e *Effect2286Sub) PropBefer(_ *input.Input, prop, level int8) bool { return true } if e.reduceMax > 0 { - oldMax := int(e.Ctx().Our.CurrentPet.Info.MaxHp) + oldMax := int(e.Ctx().Our.CurrentPet[0].Info.MaxHp) if oldMax > 1 { newMax := oldMax - e.reduceMax if newMax < 1 { newMax = 1 } - e.Ctx().Our.CurrentPet.Info.MaxHp = uint32(newMax) - if e.Ctx().Our.CurrentPet.Info.Hp > e.Ctx().Our.CurrentPet.Info.MaxHp { - e.Ctx().Our.CurrentPet.Info.Hp = e.Ctx().Our.CurrentPet.Info.MaxHp + e.Ctx().Our.CurrentPet[0].Info.MaxHp = uint32(newMax) + if e.Ctx().Our.CurrentPet[0].Info.Hp > e.Ctx().Our.CurrentPet[0].Info.MaxHp { + e.Ctx().Our.CurrentPet[0].Info.Hp = e.Ctx().Our.CurrentPet[0].Info.MaxHp } } } @@ -905,18 +905,18 @@ func (e *Effect2286Sub) PropBefer(_ *input.Input, prop, level int8) bool { type Effect2287 struct{ node.EffectNode } func applyEffect2287(owner, target *input.Input, divisor int) { - if owner == nil || owner.CurrentPet == nil || target == nil || target.CurrentPet == nil || divisor <= 0 { + if owner == nil || owner.CurrentPet[0] == nil || target == nil || target.CurrentPet[0] == nil || divisor <= 0 { return } - heal := owner.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(int64(divisor))) + heal := owner.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(int64(divisor))) if heal.Cmp(alpacadecimal.Zero) <= 0 { return } - before := owner.CurrentPet.GetHP() + before := owner.CurrentPet[0].GetHP() owner.Heal(owner, &action.SelectSkillAction{}, heal) - after := owner.CurrentPet.GetHP() + after := owner.CurrentPet[0].GetHP() actual := after.Sub(before) if actual.Cmp(alpacadecimal.Zero) < 0 { actual = alpacadecimal.Zero @@ -975,10 +975,10 @@ func (e *Effect2288) Skill_Use_ex() bool { type Effect2288Sub struct{ RoundEffectArg0Base } func (e *Effect2288Sub) ActionStartEx(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(6)) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(6)) if damage.Cmp(alpacadecimal.Zero) > 0 { source := e.Ctx().Opp if source == nil { @@ -1213,7 +1213,7 @@ func (e *Effect2292) OnSkill() bool { return true } state.track = -1 - capDamage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) + capDamage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) if capDamage.Cmp(alpacadecimal.Zero) > 0 { damage := state.blockedDamage if damage.Cmp(capDamage) > 0 { diff --git a/logic/service/fight/effect/2295_2304.go b/logic/service/fight/effect/2295_2304.go index c6ecdc7c6..e3b753ef5 100644 --- a/logic/service/fight/effect/2295_2304.go +++ b/logic/service/fight/effect/2295_2304.go @@ -41,12 +41,12 @@ func (e *Effect2295) Skill_Use() bool { if e.Ctx().Opp == nil || e.Ctx().Our == nil { return true } - for i := range e.Ctx().Our.CurrentPet.Info.SkillList { - e.Ctx().Our.CurrentPet.Info.SkillList[i].PP = 0 + for i := range e.Ctx().Our.CurrentPet[0].Info.SkillList { + e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP = 0 } - e.Ctx().Opp.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Opp.CurrentPet.GetMaxHP()) - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(alpacadecimal.Zero) > 0 { - e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.True, Damage: e.Ctx().Opp.CurrentPet.GetHP()}) + e.Ctx().Opp.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Opp.CurrentPet[0].GetMaxHP()) + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(alpacadecimal.Zero) > 0 { + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.True, Damage: e.Ctx().Opp.CurrentPet[0].GetHP()}) } return true } @@ -58,8 +58,8 @@ func (e *Effect2296) Skill_Use() bool { if e.Ctx().Opp == nil || e.Ctx().Our == nil { return true } - targetMax := e.Ctx().Our.CurrentPet.GetMaxHP() - e.Ctx().Opp.CurrentPet.Info.MaxHp = uint32(targetMax.IntPart()) + targetMax := e.Ctx().Our.CurrentPet[0].GetMaxHP() + e.Ctx().Opp.CurrentPet[0].Info.MaxHp = uint32(targetMax.IntPart()) e.Ctx().Opp.Heal(e.Ctx().Our, &action.SelectSkillAction{}, targetMax) for i, v := range e.Ctx().Opp.Prop[:] { if i == 0 || v <= 0 { @@ -101,10 +101,10 @@ type Effect2299 struct{ node.EffectNode } func (e *Effect2299) Skill_Use() bool { clearTargetEffects(e.Ctx().Our, e.Ctx().Opp) - for i := range e.Ctx().Opp.CurrentPet.Info.SkillList { - if skill, ok := xmlres.SkillMap[int(e.Ctx().Opp.CurrentPet.Info.SkillList[i].ID)]; ok { + for i := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { + if skill, ok := xmlres.SkillMap[int(e.Ctx().Opp.CurrentPet[0].Info.SkillList[i].ID)]; ok { if skill.Category == int(info.Category.PHYSICAL) || skill.Category == int(info.Category.SPECIAL) { - e.Ctx().Opp.CurrentPet.Info.SkillList[i].PP = 0 + e.Ctx().Opp.CurrentPet[0].Info.SkillList[i].PP = 0 } } } @@ -145,7 +145,7 @@ func (e *Effect2302) ComparePre(fattack, sattack *action.SelectSkillAction) bool return true } count := 0 - for _, s := range e.Ctx().Opp.CurrentPet.Info.SkillList { + for _, s := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { if s.PP <= 0 { count++ } @@ -161,16 +161,16 @@ func (e *Effect2303) Skill_Use() bool { if len(e.Args()) < 4 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) >= 0 { - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) >= 0 { + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) addRandomControlStatus2295(e.Ctx().Our, e.Ctx().Opp, 1) return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) - for i := range e.Ctx().Opp.CurrentPet.Info.SkillList { - e.Ctx().Opp.CurrentPet.Info.SkillList[i].PP = uint32(e.Args()[3].IntPart()) + for i := range e.Ctx().Opp.CurrentPet[0].Info.SkillList { + e.Ctx().Opp.CurrentPet[0].Info.SkillList[i].PP = uint32(e.Args()[3].IntPart()) } return true } diff --git a/logic/service/fight/effect/2305_2314.go b/logic/service/fight/effect/2305_2314.go index ff186ed3d..8cdcb9f42 100644 --- a/logic/service/fight/effect/2305_2314.go +++ b/logic/service/fight/effect/2305_2314.go @@ -13,13 +13,13 @@ import ( type Effect2305 struct{ node.EffectNode } func (e *Effect2305) OnSkill() bool { - if e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(alpacadecimal.Zero) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(alpacadecimal.Zero) <= 0 { return true } - e.Ctx().Our.Damage(e.Ctx().Opp, &info.DamageZone{Type: info.DamageType.True, Damage: e.Ctx().Our.CurrentPet.GetHP()}) + e.Ctx().Our.Damage(e.Ctx().Opp, &info.DamageZone{Type: info.DamageType.True, Damage: e.Ctx().Our.CurrentPet[0].GetHP()}) e.Ctx().Our.SetProp(e.Ctx().Our, 0, 1) return true } @@ -68,10 +68,10 @@ func (e *Effect2308) SkillHit() bool { type Effect2309 struct{ node.EffectNode } func (e *Effect2309) OnSkill() bool { - if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: heal}) if e.Ctx().Opp.StatEffect_Exist_all() { @@ -102,12 +102,12 @@ func (e *Effect2311) OnSkill() bool { } e.Ctx().Opp.ConsumeAllShield() cost := uint32(e.Args()[0].IntPart()) - for i := range e.Ctx().Our.CurrentPet.Info.SkillList { - if e.Ctx().Our.CurrentPet.Info.SkillList[i].PP > 0 { - if cost >= e.Ctx().Our.CurrentPet.Info.SkillList[i].PP { - e.Ctx().Our.CurrentPet.Info.SkillList[i].PP = 0 + for i := range e.Ctx().Our.CurrentPet[0].Info.SkillList { + if e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP > 0 { + if cost >= e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP { + e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP = 0 } else { - e.Ctx().Our.CurrentPet.Info.SkillList[i].PP -= cost + e.Ctx().Our.CurrentPet[0].Info.SkillList[i].PP -= cost } } } @@ -118,10 +118,10 @@ func (e *Effect2311) OnSkill() bool { type Effect2312 struct{ node.EffectNode } func (e *Effect2312) OnSkill() bool { - if len(e.Args()) < 4 || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) < 4 || e.Ctx().Our.CurrentPet[0] == nil { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) eff := e.Ctx().Our.InitEffect(input.EffectType.Sub, 2312, e.SideEffectArgs...) if eff != nil { @@ -154,10 +154,10 @@ func (e *Effect2312Sub) TurnEnd() { type Effect2313 struct{ node.EffectNode } func (e *Effect2313) SkillHit_ex() bool { - if len(e.Args()) < 1 || e.Ctx().Opp.StatEffect_Exist_all() || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 1 || e.Ctx().Opp.StatEffect_Exist_all() || e.Ctx().Opp.CurrentPet[0] == nil { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0])) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0])) return true } diff --git a/logic/service/fight/effect/2315_2324.go b/logic/service/fight/effect/2315_2324.go index 863e720d0..572337a6e 100644 --- a/logic/service/fight/effect/2315_2324.go +++ b/logic/service/fight/effect/2315_2324.go @@ -16,10 +16,10 @@ type Effect2315 struct { } func (e *Effect2315) OnSkill() bool { - if len(e.Args()) < 3 || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Opp.CurrentPet[0] == nil { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -52,7 +52,7 @@ func (e *Effect2317) OnSkill() bool { if len(e.Args()) < 1 { return true } - if e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } count := 0 @@ -69,7 +69,7 @@ func (e *Effect2317) OnSkill() bool { if count == 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(hundred) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred) damage = damage.Mul(alpacadecimal.NewFromInt(int64(count))) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: damage}) @@ -101,10 +101,10 @@ func (e *Effect2319) OnSkill() bool { if len(e.Args()) < 2 { return true } - if e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Opp.CurrentPet[0] == nil { return true } - dmg := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(hundred) + dmg := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: dmg}) return true } @@ -168,8 +168,8 @@ type Effect2323 struct { } func (e *Effect2323) Skill_Use() bool { - if e.Ctx().Our.CurrentPet != nil { - e.Ctx().Our.CurrentPet.PetInfo.Type = 2 + if e.Ctx().Our.CurrentPet[0] != nil { + e.Ctx().Our.CurrentPet[0].PetInfo.Type = 2 } return true } @@ -188,10 +188,10 @@ func (e *Effect2324) Skill_Use() bool { e.Ctx().Opp.AddShield(alpacadecimal.NewFromInt(-1).Mul(e.Ctx().Opp.CurrentShield())) cleared = true } - if cleared && e.Ctx().Opp.CurrentPet != nil { + if cleared && e.Ctx().Opp.CurrentPet[0] != nil { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, - Damage: e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(hundred), + Damage: e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred), }) } return true 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 4f9f207ad..44a649fcd 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.Ctx().Our.CurrentPet.PetInfo.Type != e.Ctx().Opp.CurrentPet.PetInfo.Type { + if e.Ctx().Our.CurrentPet[0].PetInfo.Type != e.Ctx().Opp.CurrentPet[0].PetInfo.Type { return true } e.Ctx().SkillEntity.XML.Power *= 2 diff --git a/logic/service/fight/effect/403.go b/logic/service/fight/effect/403.go index be0fdc679..7ee20940d 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.Ctx().Our.CurrentPet.Type == e.Ctx().Opp.CurrentPet.Type { + if e.Ctx().Our.CurrentPet[0].Type == e.Ctx().Opp.CurrentPet[0].Type { boostValue *= 2 } diff --git a/logic/service/fight/effect/410.go b/logic/service/fight/effect/410.go index 98a4298c5..4c68514ba 100644 --- a/logic/service/fight/effect/410.go +++ b/logic/service/fight/effect/410.go @@ -16,7 +16,7 @@ func (e *Effect410) OnSkill() bool { success, _, _ := e.Input.Player.Roll(int(chance), 100) if success { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() healAmount := maxHp.Div(e.Args()[1]) // 1/m e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) diff --git a/logic/service/fight/effect/412.go b/logic/service/fight/effect/412.go index e86d6b732..5a29f0322 100644 --- a/logic/service/fight/effect/412.go +++ b/logic/service/fight/effect/412.go @@ -11,8 +11,8 @@ type Effect412 struct { } func (e *Effect412) HookPP(count *int) bool { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() - currentHp := e.Ctx().Our.CurrentPet.GetHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() + currentHp := e.Ctx().Our.CurrentPet[0].GetHP() threshold := maxHp.Div(e.Args()[0]) // 1/n if currentHp.Cmp(threshold) < 0 { diff --git a/logic/service/fight/effect/454.go b/logic/service/fight/effect/454.go index d0ffe6ca5..aeb46ea75 100644 --- a/logic/service/fight/effect/454.go +++ b/logic/service/fight/effect/454.go @@ -27,8 +27,8 @@ func (e *Effect454) ComparePre(fattack *action.SelectSkillAction, sattack *actio if sattack.SkillEntity == nil { return true } - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() - currentHp := e.Ctx().Our.CurrentPet.GetHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() + currentHp := e.Ctx().Our.CurrentPet[0].GetHP() threshold := maxHp.Div(e.Args()[0]) // 1/n diff --git a/logic/service/fight/effect/456.go b/logic/service/fight/effect/456.go index 17866067c..c171b2140 100644 --- a/logic/service/fight/effect/456.go +++ b/logic/service/fight/effect/456.go @@ -12,7 +12,7 @@ type Effect456 struct { } func (e *Effect456) OnSkill() bool { - if e.Ctx().Opp.CurrentPet.GetHP().Cmp(e.Args()[0]) > 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().Cmp(e.Args()[0]) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, diff --git a/logic/service/fight/effect/461.go b/logic/service/fight/effect/461.go index cfdaba688..c4bf47155 100644 --- a/logic/service/fight/effect/461.go +++ b/logic/service/fight/effect/461.go @@ -13,8 +13,8 @@ type Effect461 struct { } func (e *Effect461) Skill_Use() bool { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() - currentHp := e.Ctx().Our.CurrentPet.GetHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() + currentHp := e.Ctx().Our.CurrentPet[0].GetHP() threshold := maxHp.Div(e.Args()[0]) // 1/m if currentHp.Cmp(threshold) < 0 { diff --git a/logic/service/fight/effect/464.go b/logic/service/fight/effect/464.go index 5a857464e..69efce6ad 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.Ctx().Opp.CurrentPet.Type, e.Ctx().Our.CurrentPet.Type) + t, _ := element.Calculator.GetOffensiveMultiplier(e.Ctx().Opp.CurrentPet[0].Type, e.Ctx().Our.CurrentPet[0].Type) if t <= 1 { return true diff --git a/logic/service/fight/effect/485.go b/logic/service/fight/effect/485.go index 500940fda..604c8302a 100644 --- a/logic/service/fight/effect/485.go +++ b/logic/service/fight/effect/485.go @@ -25,7 +25,7 @@ func (e *Effect485) Skill_Use() bool { if isfff { // 恢复自身所有体力 - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, maxHp) } diff --git a/logic/service/fight/effect/488.go b/logic/service/fight/effect/488.go index 2ae8114ce..4f00e5735 100644 --- a/logic/service/fight/effect/488.go +++ b/logic/service/fight/effect/488.go @@ -18,7 +18,7 @@ func (e *Effect488) Damage_Mul(t *info.DamageZone) bool { return true } - opponentHp := e.Ctx().Opp.CurrentPet.GetHP() + opponentHp := e.Ctx().Opp.CurrentPet[0].GetHP() if opponentHp.Cmp(alpacadecimal.NewFromInt(400)) < 0 { t.Damage = t.Damage.Mul(alpacadecimal.NewFromFloat(1.1)) diff --git a/logic/service/fight/effect/489.go b/logic/service/fight/effect/489.go index f7ce5a991..c6514e2e1 100644 --- a/logic/service/fight/effect/489.go +++ b/logic/service/fight/effect/489.go @@ -13,7 +13,7 @@ type Effect489 struct { func (e *Effect489) SkillHit_ex() bool { if e.Ctx().Our.HasPropADD() { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() healAmount := maxHp.Div(e.Args()[0]) // 1/m e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) diff --git a/logic/service/fight/effect/492.go b/logic/service/fight/effect/492.go index 74cd3eaf3..10e7512d5 100644 --- a/logic/service/fight/effect/492.go +++ b/logic/service/fight/effect/492.go @@ -14,7 +14,7 @@ type Effect492 struct { func (e *Effect492) Skill_Use_ex() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.Category() == info.Category.STATUS { // 恢复1/m体力 - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, maxHp.Div(e.Args()[1])) diff --git a/logic/service/fight/effect/495.go b/logic/service/fight/effect/495.go index a2da8c853..b76edc628 100644 --- a/logic/service/fight/effect/495.go +++ b/logic/service/fight/effect/495.go @@ -17,7 +17,7 @@ func (e *Effect495) OnSkill() bool { success, _, _ := e.Input.Player.Roll(chance, 100) if success { // 秒杀对手 - e.Ctx().Opp.CurrentPet.Info.Hp = 0 + e.Ctx().Opp.CurrentPet[0].Info.Hp = 0 } } diff --git a/logic/service/fight/effect/496.go b/logic/service/fight/effect/496.go index 0e0ae762f..cc6d0ab6b 100644 --- a/logic/service/fight/effect/496.go +++ b/logic/service/fight/effect/496.go @@ -14,7 +14,7 @@ type Effect496 struct { func (e *Effect496) SkillHit_ex() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.Crit != 0 { // 如果造成了致命一击,恢复所有体力 - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, maxHp) } diff --git a/logic/service/fight/effect/497.go b/logic/service/fight/effect/497.go index 0a57aeafb..c978806f5 100644 --- a/logic/service/fight/effect/497.go +++ b/logic/service/fight/effect/497.go @@ -50,7 +50,7 @@ func (e *Effect457) ComparePre(fattack *action.SelectSkillAction, sattack *actio func (e *Effect457) TurnEnd() { - for _, v := range e.Ctx().Our.CurrentPet.Skills { + for _, v := range e.Ctx().Our.CurrentPet[0].Skills { if v.XML.ID == e.reid { v = e.org diff --git a/logic/service/fight/effect/506.go b/logic/service/fight/effect/506.go index 214c21e1f..5c779ffa7 100644 --- a/logic/service/fight/effect/506.go +++ b/logic/service/fight/effect/506.go @@ -21,8 +21,8 @@ func (e *Effect506) Action_end() bool { return true } minHealth := uint32(e.Args()[0].IntPart()) // m点体力 - if e.Ctx().Our.CurrentPet.GetHP().IntPart() == 0 { - e.Ctx().Our.CurrentPet.Info.Hp = minHealth + if e.Ctx().Our.CurrentPet[0].GetHP().IntPart() == 0 { + e.Ctx().Our.CurrentPet[0].Info.Hp = minHealth } return true diff --git a/logic/service/fight/effect/507.go b/logic/service/fight/effect/507.go index e0bc3c472..d64225ff3 100644 --- a/logic/service/fight/effect/507.go +++ b/logic/service/fight/effect/507.go @@ -21,7 +21,7 @@ func (e *Effect507) OnSkill() bool { func (e *Effect507) Skill_Use_ex() bool { if e.triggered && e.Ctx().Our.SumDamage.IntPart() > int64(e.threshold) { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, maxHp) } e.triggered = false diff --git a/logic/service/fight/effect/511.go b/logic/service/fight/effect/511.go index c9aaf9a99..62afa662b 100644 --- a/logic/service/fight/effect/511.go +++ b/logic/service/fight/effect/511.go @@ -19,8 +19,8 @@ func (e *Effect511) SkillHit() bool { baseChance := e.Args()[0].IntPart() // 检查体力是否低于1/m - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() - currentHp := e.Ctx().Our.CurrentPet.GetHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() + currentHp := e.Ctx().Our.CurrentPet[0].GetHP() threshold := maxHp.Div(e.Args()[1]) // 1/m chance := baseChance diff --git a/logic/service/fight/effect/516.go b/logic/service/fight/effect/516.go index 84cefe1c9..c6e187003 100644 --- a/logic/service/fight/effect/516.go +++ b/logic/service/fight/effect/516.go @@ -11,8 +11,8 @@ type Effect516 struct { } func (e *Effect516) Skill_Use() bool { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() - currentHp := e.Ctx().Our.CurrentPet.GetHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() + currentHp := e.Ctx().Our.CurrentPet[0].GetHP() threshold := maxHp.Div(e.Args()[6]) // 1/n for i, v := range e.SideEffectArgs[:6] { if currentHp.Cmp(threshold) < 0 { diff --git a/logic/service/fight/effect/523.go b/logic/service/fight/effect/523.go index a7c5e1bcf..d19949339 100644 --- a/logic/service/fight/effect/523.go +++ b/logic/service/fight/effect/523.go @@ -12,7 +12,7 @@ type Effect523 struct { func (e *Effect523) Action_end() bool { // 检查对手是否还活着 - if e.Ctx().Opp.CurrentPet.Alive() { + if e.Ctx().Opp.CurrentPet[0].Alive() { // 提升自身的全部能力等级 for i, v := range e.SideEffectArgs { if v == 0 { diff --git a/logic/service/fight/effect/524.go b/logic/service/fight/effect/524.go index a0ce5a117..5be9bd7e0 100644 --- a/logic/service/fight/effect/524.go +++ b/logic/service/fight/effect/524.go @@ -12,7 +12,7 @@ type Effect524 struct { func (e *Effect524) SwitchOut(in *input.Input) bool { if e.Input == in { - if !e.Ctx().Our.CurrentPet.Alive() { // 被击败 + if !e.Ctx().Our.CurrentPet[0].Alive() { // 被击败 // 给对手添加疲惫状态 tiredEffect := e.Ctx().Our.InitEffect(input.EffectType.Status, int(info.PetStatus.Tired)) if tiredEffect != nil { diff --git a/logic/service/fight/effect/527.go b/logic/service/fight/effect/527.go index 2e8fb1085..598056d56 100644 --- a/logic/service/fight/effect/527.go +++ b/logic/service/fight/effect/527.go @@ -33,8 +33,8 @@ func (e *Effect527) OnSkill() bool { divisor := e.Args()[0] // 除数 // 检查当前体力是否低于最大体力的 1/divisor - currentHP := alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.Hp)) - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + currentHP := alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet[0].Info.Hp)) + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() threshold := maxHP.Div(divisor) if currentHP.Cmp(threshold) < 0 { diff --git a/logic/service/fight/effect/529.go b/logic/service/fight/effect/529.go index d7b396b33..8d62f9828 100644 --- a/logic/service/fight/effect/529.go +++ b/logic/service/fight/effect/529.go @@ -13,14 +13,14 @@ type Effect529 struct { } func (e *Effect529) OnSkill() bool { - ourMaxHP := e.Ctx().Our.CurrentPet.GetMaxHP() - oppMaxHP := e.Ctx().Opp.CurrentPet.GetMaxHP() + ourMaxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() + oppMaxHP := e.Ctx().Opp.CurrentPet[0].GetMaxHP() if ourMaxHP.IsZero() || oppMaxHP.IsZero() { return true } - ourRatio := e.Ctx().Our.CurrentPet.GetHP().Div(ourMaxHP) - oppRatio := e.Ctx().Opp.CurrentPet.GetHP().Div(oppMaxHP) + ourRatio := e.Ctx().Our.CurrentPet[0].GetHP().Div(ourMaxHP) + oppRatio := e.Ctx().Opp.CurrentPet[0].GetHP().Div(oppMaxHP) newOurHP := oppRatio.Mul(ourMaxHP).IntPart() newOppHP := ourRatio.Mul(oppMaxHP).IntPart() @@ -41,8 +41,8 @@ func (e *Effect529) OnSkill() bool { newOppHP = oppMax } - e.Ctx().Our.CurrentPet.Info.Hp = uint32(alpacadecimal.NewFromInt(newOurHP).IntPart()) - e.Ctx().Opp.CurrentPet.Info.Hp = uint32(alpacadecimal.NewFromInt(newOppHP).IntPart()) + e.Ctx().Our.CurrentPet[0].Info.Hp = uint32(alpacadecimal.NewFromInt(newOurHP).IntPart()) + e.Ctx().Opp.CurrentPet[0].Info.Hp = uint32(alpacadecimal.NewFromInt(newOppHP).IntPart()) return true } diff --git a/logic/service/fight/effect/530.go b/logic/service/fight/effect/530.go index 16d6f2b6a..843142c90 100644 --- a/logic/service/fight/effect/530.go +++ b/logic/service/fight/effect/530.go @@ -12,9 +12,9 @@ type Effect530 struct { } 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 { // 先出手 + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() + healAmount := maxHp.Div(e.Args()[0]) // 1/n + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(healAmount) < 0 { // 先出手 // 回复1/n的最大体力值 diff --git a/logic/service/fight/effect/532.go b/logic/service/fight/effect/532.go index 808532831..9ba382a8c 100644 --- a/logic/service/fight/effect/532.go +++ b/logic/service/fight/effect/532.go @@ -13,7 +13,7 @@ type Effect532 struct { func (h *Effect532) OnSkill() bool { - maxHp := h.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := h.Ctx().Our.CurrentPet[0].GetMaxHP() healAmount := maxHp.Div(h.Args()[1]) h.Ctx().Our.Heal(h.Ctx().Our, &action.SelectSkillAction{}, healAmount) diff --git a/logic/service/fight/effect/536.go b/logic/service/fight/effect/536.go index e61b84d2b..e7d317901 100644 --- a/logic/service/fight/effect/536.go +++ b/logic/service/fight/effect/536.go @@ -16,9 +16,9 @@ func (e *Effect536) OnSkill() bool { divisor := e.Args()[0] // 除数 // 检查对手是否被击败(体力值为0或以下) - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { // 获取对手原来的体力上限 - opponentMaxHP := e.Ctx().Opp.CurrentPet.GetMaxHP() + opponentMaxHP := e.Ctx().Opp.CurrentPet[0].GetMaxHP() // 计算要恢复的体力值 healAmount := opponentMaxHP.Div(divisor) diff --git a/logic/service/fight/effect/550.go b/logic/service/fight/effect/550.go index adb54148f..5cc6a95c8 100644 --- a/logic/service/fight/effect/550.go +++ b/logic/service/fight/effect/550.go @@ -12,7 +12,7 @@ type Effect550 struct { } func (e *Effect550) Skill_Use() bool { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() if e.Ctx().Our.StatEffect_Exist_all() { // 先出手 diff --git a/logic/service/fight/effect/554.go b/logic/service/fight/effect/554.go index 557df593c..75148ec8e 100644 --- a/logic/service/fight/effect/554.go +++ b/logic/service/fight/effect/554.go @@ -16,7 +16,7 @@ func (e *Effect554) Skill_Use() bool { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } diff --git a/logic/service/fight/effect/561.go b/logic/service/fight/effect/561.go index af60e0059..c44189c3a 100644 --- a/logic/service/fight/effect/561.go +++ b/logic/service/fight/effect/561.go @@ -13,8 +13,8 @@ type Effect561 struct { func (e *Effect561) Skill_Use_ex() bool { if e.IsFirst() { - if e.Ctx().Our.CurrentPet.GetHP().IntPart() == 0 { - e.Ctx().Our.CurrentPet.Info.Hp = e.Ctx().Our.CurrentPet.Info.MaxHp + if e.Ctx().Our.CurrentPet[0].GetHP().IntPart() == 0 { + e.Ctx().Our.CurrentPet[0].Info.Hp = e.Ctx().Our.CurrentPet[0].Info.MaxHp } } diff --git a/logic/service/fight/effect/565.go b/logic/service/fight/effect/565.go index 01ce0a6ce..46028cf78 100644 --- a/logic/service/fight/effect/565.go +++ b/logic/service/fight/effect/565.go @@ -15,7 +15,7 @@ func (e *Effect565) Skill_Use() bool { if e.IsFirst() { // 先出手 // 回复1/n的最大体力值 - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() healAmount := maxHp.Div(e.Args()[0]) // 1/n e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) diff --git a/logic/service/fight/effect/573_587_591_592_594_596_597_598.go b/logic/service/fight/effect/573_587_591_592_594_596_597_598.go index 797d41fbd..a10659964 100644 --- a/logic/service/fight/effect/573_587_591_592_594_596_597_598.go +++ b/logic/service/fight/effect/573_587_591_592_594_596_597_598.go @@ -53,12 +53,12 @@ func (e *Effect587) SwitchOut(in *input.Input) bool { if e.Input != in { return true } - if e.Ctx().Our.CurrentPet.Alive() { + if e.Ctx().Our.CurrentPet[0].Alive() { e.Alive(false) return true } - oppHP := e.Ctx().Opp.CurrentPet.GetHP() + oppHP := e.Ctx().Opp.CurrentPet[0].GetHP() if oppHP.Cmp(alpacadecimal.NewFromInt(1)) <= 0 { e.Alive(false) return true @@ -101,7 +101,7 @@ type Effect591Sub struct { } func (e *Effect591Sub) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if fattack == nil || fattack.PlayerID == e.Ctx().Our.UserID { @@ -203,7 +203,7 @@ type Effect597 struct { } func (e *Effect597) OnSkill() bool { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, diff --git a/logic/service/fight/effect/579.go b/logic/service/fight/effect/579.go index 7e54b4d4e..aa8b345a6 100644 --- a/logic/service/fight/effect/579.go +++ b/logic/service/fight/effect/579.go @@ -13,9 +13,9 @@ type Effect579 struct { func (e *Effect579) Action_end() bool { // 检查对手是否还活着 - if e.Ctx().Opp.CurrentPet.Alive() { + if e.Ctx().Opp.CurrentPet[0].Alive() { // 恢复自身最大体力的 1/divisor - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() // 执行治疗 e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, maxHp.Div(e.Args()[0])) diff --git a/logic/service/fight/effect/581.go b/logic/service/fight/effect/581.go index 2ba6cabb4..2dad58d9d 100644 --- a/logic/service/fight/effect/581.go +++ b/logic/service/fight/effect/581.go @@ -12,7 +12,7 @@ type Effect581 struct { } func (e *Effect581) OnSkill() bool { - if e.Ctx().Our.CurrentPet.PetInfo.Type != e.Ctx().Opp.CurrentPet.PetInfo.Type { + if e.Ctx().Our.CurrentPet[0].PetInfo.Type != e.Ctx().Opp.CurrentPet[0].PetInfo.Type { return true } diff --git a/logic/service/fight/effect/582.go b/logic/service/fight/effect/582.go index 22b439c13..3841c30c0 100644 --- a/logic/service/fight/effect/582.go +++ b/logic/service/fight/effect/582.go @@ -13,7 +13,7 @@ type Effect582 struct { } func (e *Effect582) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } diff --git a/logic/service/fight/effect/583.go b/logic/service/fight/effect/583.go index e5a887155..dc5bd96f4 100644 --- a/logic/service/fight/effect/583.go +++ b/logic/service/fight/effect/583.go @@ -13,7 +13,7 @@ type Effect583 struct { } func (e *Effect583) OnSkill() bool { - skills := e.Ctx().Opp.CurrentPet.Info.SkillList + skills := e.Ctx().Opp.CurrentPet[0].Info.SkillList if len(skills) == 0 { return true } @@ -34,7 +34,7 @@ func (e *Effect583) OnSkill() bool { 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 + e.Ctx().Opp.CurrentPet[0].Info.SkillList[indexes[i]].PP = 0 } return true diff --git a/logic/service/fight/effect/584.go b/logic/service/fight/effect/584.go index 009e2f566..4c2018e8b 100644 --- a/logic/service/fight/effect/584.go +++ b/logic/service/fight/effect/584.go @@ -26,7 +26,7 @@ func (e *Effect584) DamageFloor(t *info.DamageZone) bool { return true } - t.Damage = e.Ctx().Opp.CurrentPet.GetMaxHP() + t.Damage = e.Ctx().Opp.CurrentPet[0].GetMaxHP() return true } diff --git a/logic/service/fight/effect/600_605.go b/logic/service/fight/effect/600_605.go index 165a89861..4cc1904f6 100644 --- a/logic/service/fight/effect/600_605.go +++ b/logic/service/fight/effect/600_605.go @@ -42,7 +42,7 @@ func (e *Effect600) SkillHit() bool { return true } - if e.Ctx().Opp.CurrentPet.Info.Gender == int(e.Args()[0].IntPart()) { + if e.Ctx().Opp.CurrentPet[0].Info.Gender == int(e.Args()[0].IntPart()) { bonusPercent := e.Args()[1] e.Ctx().SkillEntity.XML.Power += int(alpacadecimal.NewFromInt(int64(e.Ctx().SkillEntity.XML.Power)).Mul(bonusPercent).Div(alpacadecimal.NewFromInt(100)).IntPart()) return true @@ -74,7 +74,7 @@ func (e *Effect601) SwitchOut(in *input.Input) bool { if in != e.Ctx().Opp { return true } - if e.Ctx().Opp.CurrentPet.Alive() { + if e.Ctx().Opp.CurrentPet[0].Alive() { return true } @@ -167,8 +167,8 @@ type Effect605 struct { } func (e *Effect605) OnSkill() bool { - ourHP := e.Ctx().Our.CurrentPet.GetHP() - oppHP := e.Ctx().Opp.CurrentPet.GetHP() + ourHP := e.Ctx().Our.CurrentPet[0].GetHP() + oppHP := e.Ctx().Opp.CurrentPet[0].GetHP() mode := int(e.Args()[0].IntPart()) if (mode == 0 && ourHP.Cmp(oppHP) <= 0) || (mode == 1 && ourHP.Cmp(oppHP) >= 0) { return true @@ -177,11 +177,11 @@ func (e *Effect605) OnSkill() bool { var base alpacadecimal.Decimal switch int(e.Args()[1].IntPart()) { case 0: - base = e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + base = e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) case 1: - base = e.Ctx().Our.CurrentPet.GetMaxHP() + base = e.Ctx().Our.CurrentPet[0].GetMaxHP() case 2: - base = e.Ctx().Our.CurrentPet.GetHP() + base = e.Ctx().Our.CurrentPet[0].GetHP() default: return true } diff --git a/logic/service/fight/effect/606_608_612_614.go b/logic/service/fight/effect/606_608_612_614.go index a137c55e3..56e5fa7bf 100644 --- a/logic/service/fight/effect/606_608_612_614.go +++ b/logic/service/fight/effect/606_608_612_614.go @@ -17,8 +17,8 @@ func (e *Effect606) SkillHit() bool { return true } - ourHP := e.Ctx().Our.CurrentPet.GetHP() - oppHP := e.Ctx().Opp.CurrentPet.GetHP() + ourHP := e.Ctx().Our.CurrentPet[0].GetHP() + oppHP := e.Ctx().Opp.CurrentPet[0].GetHP() mode := e.SideEffectArgs[0] if (mode == 0 && ourHP.Cmp(oppHP) > 0) || (mode == 1 && ourHP.Cmp(oppHP) < 0) { @@ -76,8 +76,8 @@ func (e *Effect608) ComparePre(fattack, sattack *action.SelectSkillAction) bool return true } - oppHP := e.Ctx().Opp.CurrentPet.GetHP() - oppMaxHP := e.Ctx().Opp.CurrentPet.GetMaxHP() + oppHP := e.Ctx().Opp.CurrentPet[0].GetHP() + oppMaxHP := e.Ctx().Opp.CurrentPet[0].GetMaxHP() mode := e.SideEffectArgs[0] threshold := e.Args()[1] priorityAdd := e.SideEffectArgs[2] diff --git a/logic/service/fight/effect/615_619.go b/logic/service/fight/effect/615_619.go index 5cf7cfe42..32e84b9e6 100644 --- a/logic/service/fight/effect/615_619.go +++ b/logic/service/fight/effect/615_619.go @@ -20,9 +20,9 @@ func (e *Effect615) OnSkill() bool { healAmount := e.Args()[1] if len(e.Args()) > 2 && e.Args()[2].Cmp(alpacadecimal.Zero) > 0 { - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() threshold := maxHP.Div(e.Args()[2]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { healAmount = maxHP } } @@ -46,8 +46,8 @@ func (e *Effect616) ComparePre(fattack, sattack *action.SelectSkillAction) bool return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() - if e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[0]).Cmp(maxHP) >= 0 { + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[0]).Cmp(maxHP) >= 0 { return true } diff --git a/logic/service/fight/effect/621_625.go b/logic/service/fight/effect/621_625.go index b1269795d..d8d2606ef 100644 --- a/logic/service/fight/effect/621_625.go +++ b/logic/service/fight/effect/621_625.go @@ -89,7 +89,7 @@ type Effect623Sub struct { } func (e *Effect623Sub) ActionStart(a, b *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { @@ -122,7 +122,7 @@ type Effect624Sub struct { } func (e *Effect624Sub) DamageSubEx(zone *info.DamageZone) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if zone == nil || zone.Type != info.DamageType.Red || len(e.Args()) < 2 { diff --git a/logic/service/fight/effect/627_631.go b/logic/service/fight/effect/627_631.go index 08121265e..35ec5f0bc 100644 --- a/logic/service/fight/effect/627_631.go +++ b/logic/service/fight/effect/627_631.go @@ -26,7 +26,7 @@ func clearStatusEffects(target *input.Input, statusID int) bool { } func shouldAdjustNextAttackPriority(e input.Effect, fattack, sattack *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return false } if fattack == nil || fattack.PlayerID == e.Ctx().Our.UserID { diff --git a/logic/service/fight/effect/632_636.go b/logic/service/fight/effect/632_636.go index e3239074f..e2808a1ba 100644 --- a/logic/service/fight/effect/632_636.go +++ b/logic/service/fight/effect/632_636.go @@ -46,7 +46,7 @@ func (e *Effect632Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect632Sub) ActionStart(a, b *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { @@ -85,7 +85,7 @@ type Effect634 struct { } func (e *Effect634) Skill_Use() bool { - if !effectCompareByMode(int(e.Args()[0].IntPart()), e.Ctx().Our.CurrentPet.GetHP(), e.Ctx().Opp.CurrentPet.GetHP()) { + if !effectCompareByMode(int(e.Args()[0].IntPart()), e.Ctx().Our.CurrentPet[0].GetHP(), e.Ctx().Opp.CurrentPet[0].GetHP()) { return true } if e.Ctx().Our.SumDamage.Cmp(alpacadecimal.Zero) <= 0 { diff --git a/logic/service/fight/effect/642_646.go b/logic/service/fight/effect/642_646.go index e059503a2..00ac7b76b 100644 --- a/logic/service/fight/effect/642_646.go +++ b/logic/service/fight/effect/642_646.go @@ -97,11 +97,11 @@ func (e *Effect644) Action_end() bool { if skill == nil || skill.AttackTime == 0 { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -123,8 +123,8 @@ func (e *Effect645) SkillHit() bool { return true } - threshold := e.GetInput().CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.GetInput().CurrentPet.GetHP().Cmp(threshold) < 0 { + threshold := e.GetInput().CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.GetInput().CurrentPet[0].GetHP().Cmp(threshold) < 0 { e.Ctx().SkillEntity.XML.Power *= int(e.Args()[1].IntPart()) } return true @@ -140,7 +140,7 @@ func (e *Effect646) Skill_Use() bool { if skill == nil || skill.AttackTime == 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } diff --git a/logic/service/fight/effect/648_652.go b/logic/service/fight/effect/648_652.go index 319b48c62..c89b2e3aa 100644 --- a/logic/service/fight/effect/648_652.go +++ b/logic/service/fight/effect/648_652.go @@ -76,7 +76,7 @@ type Effect650 struct { } func (e *Effect650) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } diff --git a/logic/service/fight/effect/658_662.go b/logic/service/fight/effect/658_662.go index 7477bcc47..3e42b80f1 100644 --- a/logic/service/fight/effect/658_662.go +++ b/logic/service/fight/effect/658_662.go @@ -86,7 +86,7 @@ func (e *Effect660) Skill_Use() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[1]).Div(alpacadecimal.NewFromInt(100)) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[1]).Div(alpacadecimal.NewFromInt(100)) if heal.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/663_667.go b/logic/service/fight/effect/663_667.go index ea5c16753..bb6cc078f 100644 --- a/logic/service/fight/effect/663_667.go +++ b/logic/service/fight/effect/663_667.go @@ -136,7 +136,7 @@ type Effect667 struct { } func (e *Effect667) Skill_Use() bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) != 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) != 0 { return true } diff --git a/logic/service/fight/effect/668_672.go b/logic/service/fight/effect/668_672.go index 79f8ac90c..879c7c2cb 100644 --- a/logic/service/fight/effect/668_672.go +++ b/logic/service/fight/effect/668_672.go @@ -40,7 +40,7 @@ func (e *Effect669) SwitchOut(in *input.Input) bool { if in != e.Ctx().Opp { return true } - if e.Ctx().Opp.CurrentPet.Alive() { + if e.Ctx().Opp.CurrentPet[0].Alive() { e.Alive(false) return true } @@ -124,12 +124,12 @@ func (e *Effect672) SwitchOut(in *input.Input) bool { if in != e.Ctx().Opp { return true } - if e.Ctx().Opp.CurrentPet.Alive() { + if e.Ctx().Opp.CurrentPet[0].Alive() { e.Alive(false) return true } - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, maxHp) e.Alive(false) return true diff --git a/logic/service/fight/effect/673_677.go b/logic/service/fight/effect/673_677.go index 8003ece19..91ea80701 100644 --- a/logic/service/fight/effect/673_677.go +++ b/logic/service/fight/effect/673_677.go @@ -20,7 +20,7 @@ func (e *Effect673) OnSkill() bool { return true } - lostHP := e.Ctx().Opp.CurrentPet.GetMaxHP().Sub(e.Ctx().Opp.CurrentPet.GetHP()) + lostHP := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Opp.CurrentPet[0].GetHP()) if lostHP.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/678_703.go b/logic/service/fight/effect/678_703.go index 57fc6a8ee..5ff08eb8a 100644 --- a/logic/service/fight/effect/678_703.go +++ b/logic/service/fight/effect/678_703.go @@ -31,7 +31,7 @@ type Effect678 struct { } func (e *Effect678) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if len(e.Args()) < 3 || e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } @@ -117,7 +117,7 @@ func (e *Effect691) DamageFloor(zone *info.DamageZone) bool { return true } - zone.Damage = e.Ctx().Opp.CurrentPet.GetMaxHP() + zone.Damage = e.Ctx().Opp.CurrentPet[0].GetMaxHP() return true } @@ -378,7 +378,7 @@ func (e *Effect698) SwitchOut(in *input.Input) bool { e.Alive(false) return true } - if in != e.Ctx().Opp || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if in != e.Ctx().Opp || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -511,7 +511,7 @@ func (e *Effect702Sub) Skill_Use() bool { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } @@ -549,7 +549,7 @@ func (e *Effect703Sub) Skill_Use_ex() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/704_708.go b/logic/service/fight/effect/704_708.go index 79dd726f8..2ea600bbb 100644 --- a/logic/service/fight/effect/704_708.go +++ b/logic/service/fight/effect/704_708.go @@ -19,9 +19,9 @@ func (e *Effect704) OnSkill() bool { } healAmount := e.Args()[0] - currentHP := e.Ctx().Our.CurrentPet.GetHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() if currentHP.Cmp(e.Args()[1]) < 0 { - healAmount = e.Ctx().Our.CurrentPet.GetMaxHP().Sub(currentHP) + healAmount = e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(currentHP) } if healAmount.Cmp(alpacadecimal.Zero) <= 0 { return true @@ -37,13 +37,13 @@ type Effect705 struct { } func (e *Effect705) OnSkill() bool { - ourHP := e.Ctx().Our.CurrentPet.Info.Hp - oppHP := e.Ctx().Opp.CurrentPet.Info.Hp + ourHP := e.Ctx().Our.CurrentPet[0].Info.Hp + oppHP := e.Ctx().Opp.CurrentPet[0].Info.Hp - e.Ctx().Our.CurrentPet.Info.Hp = 0 - e.Ctx().Our.CurrentPet.Info.ModelHP(int64(oppHP)) - e.Ctx().Opp.CurrentPet.Info.Hp = 0 - e.Ctx().Opp.CurrentPet.Info.ModelHP(int64(ourHP)) + e.Ctx().Our.CurrentPet[0].Info.Hp = 0 + e.Ctx().Our.CurrentPet[0].Info.ModelHP(int64(oppHP)) + e.Ctx().Opp.CurrentPet[0].Info.Hp = 0 + e.Ctx().Opp.CurrentPet[0].Info.ModelHP(int64(ourHP)) return true } @@ -93,9 +93,9 @@ func (e *Effect707Sub) Skill_Use() bool { return true } - healAmount := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + healAmount := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if e.Args()[2].IntPart() > 0 && - e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[2]).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[2]).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { healAmount = healAmount.Mul(alpacadecimal.NewFromInt(2)) } if healAmount.Cmp(alpacadecimal.Zero) <= 0 { @@ -118,7 +118,7 @@ func (e *Effect708) OnSkill() bool { healAmount := e.Args()[0] if e.Args()[1].IntPart() > 0 && - e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[1]).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[1]).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { healAmount = healAmount.Mul(alpacadecimal.NewFromInt(2)) } if healAmount.Cmp(alpacadecimal.Zero) <= 0 { diff --git a/logic/service/fight/effect/709_713.go b/logic/service/fight/effect/709_713.go index 535e67174..97fe6cbd3 100644 --- a/logic/service/fight/effect/709_713.go +++ b/logic/service/fight/effect/709_713.go @@ -19,7 +19,7 @@ func (e *Effect709) SwitchOut(in *input.Input) bool { e.Alive(false) return true } - if in != e.Ctx().Opp || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if in != e.Ctx().Opp || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -102,7 +102,7 @@ type Effect712 struct { func (e *Effect712) OnSkill() bool { sub := &Effect712Sub{} addSubEffect(e.Ctx().Our, e.Ctx().Opp, &e.EffectNode, sub, -1) - sub.applyToTarget(e.Ctx().Opp.CurrentPet) + sub.applyToTarget(e.Ctx().Opp.CurrentPet[0]) return true } diff --git a/logic/service/fight/effect/714_718.go b/logic/service/fight/effect/714_718.go index 223670395..15b42a5e9 100644 --- a/logic/service/fight/effect/714_718.go +++ b/logic/service/fight/effect/714_718.go @@ -131,7 +131,7 @@ func (e *Effect717) Skill_Use() bool { if len(e.Args()) < 3 || e.Ctx().SkillEntity == nil { return true } - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if drain.IntPart() <= 0 { return true } @@ -143,8 +143,8 @@ func (e *Effect717) Skill_Use() bool { heal := drain if e.Args()[2].IntPart() > 0 { - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { heal = heal.Mul(alpacadecimal.NewFromInt(2)) } } diff --git a/logic/service/fight/effect/719_723.go b/logic/service/fight/effect/719_723.go index af2e22fdf..ab4b6b6c0 100644 --- a/logic/service/fight/effect/719_723.go +++ b/logic/service/fight/effect/719_723.go @@ -13,7 +13,7 @@ type Effect719 struct { } func (e *Effect719) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } diff --git a/logic/service/fight/effect/729_733.go b/logic/service/fight/effect/729_733.go index faa6e777c..ec9fd94e4 100644 --- a/logic/service/fight/effect/729_733.go +++ b/logic/service/fight/effect/729_733.go @@ -17,7 +17,7 @@ func (e *Effect729) Skill_Use() bool { if skill == nil || skill.Category() == info.Category.STATUS || len(e.Args()) < 4 { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } if e.Ctx().Our.SumDamage.Cmp(e.Args()[1]) <= 0 { diff --git a/logic/service/fight/effect/734_738.go b/logic/service/fight/effect/734_738.go index 8fc023ad3..55454f260 100644 --- a/logic/service/fight/effect/734_738.go +++ b/logic/service/fight/effect/734_738.go @@ -139,7 +139,7 @@ func (e *Effect737Sub) TurnEnd() { return } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/739_743.go b/logic/service/fight/effect/739_743.go index a4e11e850..fe138f912 100644 --- a/logic/service/fight/effect/739_743.go +++ b/logic/service/fight/effect/739_743.go @@ -10,11 +10,11 @@ import ( ) func zeroAllSkillPP(target *input.Input) { - if target == nil || target.CurrentPet == nil { + if target == nil || target.CurrentPet[0] == nil { return } - for i := range target.CurrentPet.Info.SkillList { - target.CurrentPet.Info.SkillList[i].PP = 0 + for i := range target.CurrentPet[0].Info.SkillList { + target.CurrentPet[0].Info.SkillList[i].PP = 0 } } @@ -24,7 +24,7 @@ type Effect739 struct { } func (e *Effect739) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } diff --git a/logic/service/fight/effect/744_748.go b/logic/service/fight/effect/744_748.go index 96c2c61a4..15f301db2 100644 --- a/logic/service/fight/effect/744_748.go +++ b/logic/service/fight/effect/744_748.go @@ -17,7 +17,7 @@ type Effect744 struct { } func (e *Effect744) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if len(e.Args()) == 0 || e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } diff --git a/logic/service/fight/effect/749_753.go b/logic/service/fight/effect/749_753.go index 571055a44..ade96129e 100644 --- a/logic/service/fight/effect/749_753.go +++ b/logic/service/fight/effect/749_753.go @@ -75,7 +75,7 @@ func (e *Effect751) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetHP().Mul(e.Args()[0]).Div(hundred) + damage := e.Ctx().Opp.CurrentPet[0].GetHP().Mul(e.Args()[0]).Div(hundred) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -114,7 +114,7 @@ func (e *Effect752Sub) TurnEnd() { return } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -139,7 +139,7 @@ func (e *Effect753) OnSkill() bool { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)), + Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet[0].Info.MaxHp)), }) return true } diff --git a/logic/service/fight/effect/754_758.go b/logic/service/fight/effect/754_758.go index af15ae871..3ecfdb77c 100644 --- a/logic/service/fight/effect/754_758.go +++ b/logic/service/fight/effect/754_758.go @@ -35,7 +35,7 @@ func (e *Effect754) OnSkill() bool { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetMaxHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetMaxHP(), }) e.armed = true return true @@ -90,10 +90,10 @@ func (e *Effect755) OnSkill() bool { return true } - ourHP := e.Ctx().Our.CurrentPet.GetHP() - oppHP := e.Ctx().Opp.CurrentPet.GetHP() + ourHP := e.Ctx().Our.CurrentPet[0].GetHP() + oppHP := e.Ctx().Opp.CurrentPet[0].GetHP() if ourHP.Cmp(oppHP) > 0 { - e.Ctx().Our.CurrentPet.Info.Hp = 1 + e.Ctx().Our.CurrentPet[0].Info.Hp = 1 damage := randomInRange(int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart())) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, @@ -102,7 +102,7 @@ func (e *Effect755) OnSkill() bool { return true } - e.Ctx().Our.CurrentPet.Info.Hp = 0 + e.Ctx().Our.CurrentPet[0].Info.Hp = 0 damage := alpacadecimal.NewFromInt(int64(randomInRange(int(e.Args()[2].IntPart()), int(e.Args()[3].IntPart())))) cap := oppHP.Sub(oneDecimal) if cap.Cmp(alpacadecimal.Zero) < 0 { @@ -160,7 +160,7 @@ func (e *Effect757) SetArgs(t *input.Input, a ...int) { } func (e *Effect757) Skill_Use() bool { - if len(e.Args()) < 3 || e.Ctx().Opp.CurrentPet.Info.Hp > 0 || !e.Ctx().Opp.StatEffect_Exist(info.EnumPetStatus(e.Args()[0].IntPart())) { + if len(e.Args()) < 3 || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 || !e.Ctx().Opp.StatEffect_Exist(info.EnumPetStatus(e.Args()[0].IntPart())) { e.Alive(false) return true } diff --git a/logic/service/fight/effect/759_763.go b/logic/service/fight/effect/759_763.go index 7e7df6f0b..7d2e3005c 100644 --- a/logic/service/fight/effect/759_763.go +++ b/logic/service/fight/effect/759_763.go @@ -117,7 +117,7 @@ func (e *Effect762) TurnEnd() { return } - missing := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + missing := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) if missing.Cmp(alpacadecimal.Zero) > 0 { heal := missing.Mul(e.Args()[1]).Div(hundred) if heal.Cmp(alpacadecimal.Zero) > 0 { diff --git a/logic/service/fight/effect/764_768.go b/logic/service/fight/effect/764_768.go index eb613e471..5c12ce0b5 100644 --- a/logic/service/fight/effect/764_768.go +++ b/logic/service/fight/effect/764_768.go @@ -56,7 +56,7 @@ func (e *Effect764Sub) Skill_Use_ex() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/769_773.go b/logic/service/fight/effect/769_773.go index b5b568cb9..3e239c99e 100644 --- a/logic/service/fight/effect/769_773.go +++ b/logic/service/fight/effect/769_773.go @@ -57,7 +57,7 @@ func (e *Effect770) Skill_Use() bool { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } @@ -111,14 +111,14 @@ type Effect773 struct { } func (e *Effect773) OnSkill() bool { - ourHP := e.Ctx().Our.CurrentPet.GetHP().IntPart() - oppHP := e.Ctx().Opp.CurrentPet.GetHP().IntPart() + ourHP := e.Ctx().Our.CurrentPet[0].GetHP().IntPart() + oppHP := e.Ctx().Opp.CurrentPet[0].GetHP().IntPart() if ourHP >= oppHP { return true } - ourMaxHP := e.Ctx().Our.CurrentPet.GetMaxHP().IntPart() - oppMaxHP := e.Ctx().Opp.CurrentPet.GetMaxHP().IntPart() + ourMaxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP().IntPart() + oppMaxHP := e.Ctx().Opp.CurrentPet[0].GetMaxHP().IntPart() newOurHP := oppHP if newOurHP > ourMaxHP { @@ -136,8 +136,8 @@ func (e *Effect773) OnSkill() bool { newOppHP = 0 } - e.Ctx().Our.CurrentPet.Info.Hp = uint32(newOurHP) - e.Ctx().Opp.CurrentPet.Info.Hp = uint32(newOppHP) + e.Ctx().Our.CurrentPet[0].Info.Hp = uint32(newOurHP) + e.Ctx().Opp.CurrentPet[0].Info.Hp = uint32(newOppHP) return true } diff --git a/logic/service/fight/effect/774_779.go b/logic/service/fight/effect/774_779.go index ee4a829e0..8d5c7ca90 100644 --- a/logic/service/fight/effect/774_779.go +++ b/logic/service/fight/effect/774_779.go @@ -16,14 +16,14 @@ type Effect774 struct { } func (e *Effect774) OnSkill() bool { - if len(e.Args()) == 0 || e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if len(e.Args()) == 0 || e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } if e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -75,7 +75,7 @@ func (e *Effect775Sub) Action_end_ex() bool { } e.pendingHeal = false - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } @@ -129,7 +129,7 @@ func (e *Effect778) Skill_Use() bool { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } diff --git a/logic/service/fight/effect/780_784.go b/logic/service/fight/effect/780_784.go index 1a536023a..aa4ad30af 100644 --- a/logic/service/fight/effect/780_784.go +++ b/logic/service/fight/effect/780_784.go @@ -143,7 +143,7 @@ func (e *Effect783Sub) PropBefer(in *input.Input, prop int8, level int8) bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -172,7 +172,7 @@ type Effect784 struct { } func (e *Effect784) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } diff --git a/logic/service/fight/effect/785_789.go b/logic/service/fight/effect/785_789.go index 5cd3c7eda..3612e0952 100644 --- a/logic/service/fight/effect/785_789.go +++ b/logic/service/fight/effect/785_789.go @@ -17,14 +17,14 @@ type Effect785 struct { func (e *Effect785) ComparePre(fattack, sattack *action.SelectSkillAction) bool { current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) - if current == nil || current.SkillEntity == nil || e.Ctx().Opp.CurrentPet == nil { + if current == nil || current.SkillEntity == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } if current.SkillEntity.Category() == info.Category.STATUS { return true } - mul, _ := element.Calculator.GetOffensiveMultiplier(current.SkillEntity.GetType().ID, e.Ctx().Opp.CurrentPet.GetType().ID) + mul, _ := element.Calculator.GetOffensiveMultiplier(current.SkillEntity.GetType().ID, e.Ctx().Opp.CurrentPet[0].GetType().ID) if mul > 0 && mul < 1 { current.SkillEntity.XML.Priority += 2 } @@ -71,7 +71,7 @@ func (e *Effect787Sub) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/790_794.go b/logic/service/fight/effect/790_794.go index 1ee4c0663..abe4f1116 100644 --- a/logic/service/fight/effect/790_794.go +++ b/logic/service/fight/effect/790_794.go @@ -89,8 +89,8 @@ func (e *Effect791Sub) Skill_Use() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { heal = heal.Mul(alpacadecimal.NewFromInt(2)) } if heal.Cmp(alpacadecimal.Zero) <= 0 { @@ -156,7 +156,7 @@ type Effect793Sub struct { } func (e *Effect793Sub) TurnEnd() { - if len(e.Args()) >= 2 && e.Ctx().Opp.CurrentPet != nil && e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) >= 2 && e.Ctx().Opp.CurrentPet[0] != nil && e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: e.Args()[1], diff --git a/logic/service/fight/effect/795_799.go b/logic/service/fight/effect/795_799.go index 36fe261f0..29ec69370 100644 --- a/logic/service/fight/effect/795_799.go +++ b/logic/service/fight/effect/795_799.go @@ -69,9 +69,9 @@ type Effect796Sub struct { } func (e *Effect796Sub) TurnEnd() { - if e.Ctx().Our.CurrentPet.Info.Hp > 0 && e.Ctx().Opp.CurrentPet.Info.Hp > 0 && + if e.Ctx().Our.CurrentPet[0].Info.Hp > 0 && e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 && len(e.Args()) >= 2 && e.Args()[1].Cmp(alpacadecimal.Zero) > 0 { - damage := e.Ctx().Opp.CurrentPet.GetHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -169,10 +169,10 @@ func (e *Effect799) Skill_Use() bool { return true } - amount := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + amount := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if e.Args()[1].Cmp(alpacadecimal.Zero) > 0 { - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { amount = amount.Mul(alpacadecimal.NewFromInt(2)) } } diff --git a/logic/service/fight/effect/800_804.go b/logic/service/fight/effect/800_804.go index 746eff5bd..817a0eb6f 100644 --- a/logic/service/fight/effect/800_804.go +++ b/logic/service/fight/effect/800_804.go @@ -205,7 +205,7 @@ func (e *Effect803) OnSkill() bool { return true } if e.Args()[2].Cmp(alpacadecimal.Zero) > 0 { - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) } effect := e.Ctx().Our.InitEffect(input.EffectType.Sub, 803, int(e.Args()[3].IntPart()), int(e.Args()[4].IntPart())) diff --git a/logic/service/fight/effect/805_809.go b/logic/service/fight/effect/805_809.go index dc8717326..987feaaab 100644 --- a/logic/service/fight/effect/805_809.go +++ b/logic/service/fight/effect/805_809.go @@ -63,7 +63,7 @@ func (e *Effect807) OnSkill() bool { if e.Ctx().Opp.SumDamage.Cmp(alpacadecimal.Zero) <= 0 { return true } - + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: e.Ctx().Opp.SumDamage, @@ -94,7 +94,7 @@ func (e *Effect808) OnSkill() bool { if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } - + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: damage, @@ -128,7 +128,7 @@ func (e *Effect809Sub) ActionStart(a, b *action.SelectSkillAction) bool { if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - + e.Ctx().SkillEntity.SetMiss() e.Alive(false) return true diff --git a/logic/service/fight/effect/810_814.go b/logic/service/fight/effect/810_814.go index e957c0815..3b9e8c9d6 100644 --- a/logic/service/fight/effect/810_814.go +++ b/logic/service/fight/effect/810_814.go @@ -97,7 +97,7 @@ func (e *Effect812) TurnEnd() { return } - base := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + base := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) damage := base.Mul(alpacadecimal.NewFromInt(int64(e.Ctx().Our.Prop[4]))) if damage.Cmp(alpacadecimal.Zero) <= 0 { return diff --git a/logic/service/fight/effect/815_819.go b/logic/service/fight/effect/815_819.go index b3a9c34f0..6b65c38ba 100644 --- a/logic/service/fight/effect/815_819.go +++ b/logic/service/fight/effect/815_819.go @@ -17,7 +17,7 @@ func (e *Effect815) Skill_Use() bool { if len(e.Args()) == 0 || e.IsFirst() { return true } - damage := e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[0]).Div(hundred) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[0]).Div(hundred) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/820_824.go b/logic/service/fight/effect/820_824.go index d0fcc8a9a..0541047cc 100644 --- a/logic/service/fight/effect/820_824.go +++ b/logic/service/fight/effect/820_824.go @@ -13,7 +13,7 @@ import ( type Effect820 struct{ node.EffectNode } func (e *Effect820) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -107,7 +107,7 @@ func (e *Effect822) OnSkill() bool { type Effect823 struct{ node.EffectNode } func (e *Effect823) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -161,7 +161,7 @@ func (e *Effect824) Skill_Use() bool { return true } - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if drain.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/825_829.go b/logic/service/fight/effect/825_829.go index d4186ef52..fda7d7d2f 100644 --- a/logic/service/fight/effect/825_829.go +++ b/logic/service/fight/effect/825_829.go @@ -17,7 +17,7 @@ func (e *Effect825) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -33,7 +33,7 @@ func (e *Effect825) OnSkill() bool { type Effect826 struct{ node.EffectNode } func (e *Effect826) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -172,7 +172,7 @@ func (e *Effect829Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect829Sub) TurnEnd() { - if e.damage.Cmp(alpacadecimal.Zero) > 0 && e.Ctx().Our.CurrentPet != nil && e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if e.damage.Cmp(alpacadecimal.Zero) > 0 && e.Ctx().Our.CurrentPet[0] != nil && e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { damage := e.damage if e.Stack() > 1 { damage = damage.Mul(alpacadecimal.NewFromInt(int64(e.Stack()))) diff --git a/logic/service/fight/effect/830_835.go b/logic/service/fight/effect/830_835.go index 92339787d..e74de1199 100644 --- a/logic/service/fight/effect/830_835.go +++ b/logic/service/fight/effect/830_835.go @@ -38,7 +38,7 @@ func (e *Effect831) OnSkill() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(hundred) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -54,11 +54,11 @@ func (e *Effect831) OnSkill() bool { type Effect833 struct{ node.EffectNode } func (e *Effect833) Skill_Use() bool { - if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } - drain := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + drain := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if drain.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -133,7 +133,7 @@ func (e *Effect835) Skill_Use() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } diff --git a/logic/service/fight/effect/836_840.go b/logic/service/fight/effect/836_840.go index afccc3e78..c6a85e86b 100644 --- a/logic/service/fight/effect/836_840.go +++ b/logic/service/fight/effect/836_840.go @@ -13,7 +13,7 @@ import ( type Effect836 struct{ node.EffectNode } func (e *Effect836) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if len(e.Args()) == 0 || e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if len(e.Args()) == 0 || e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } @@ -55,7 +55,7 @@ func (e *Effect837) Skill_Use() bool { type Effect838 struct{ node.EffectNode } func (e *Effect838) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } @@ -94,7 +94,7 @@ func (e *Effect839) Skill_Use() bool { return true } - amount := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(hundred) + amount := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(hundred) if amount.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -111,7 +111,7 @@ func (e *Effect839) Skill_Use() bool { type Effect840 struct{ node.EffectNode } func (e *Effect840) Skill_Use() bool { - if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -135,7 +135,7 @@ func (e *Effect840Sub) SwitchIn(in *input.Input) bool { return true } - drain := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + drain := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if drain.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Damage(e.Ctx().Opp, &info.DamageZone{ Type: info.DamageType.Percent, diff --git a/logic/service/fight/effect/841_845.go b/logic/service/fight/effect/841_845.go index aaeffe93f..069b5c267 100644 --- a/logic/service/fight/effect/841_845.go +++ b/logic/service/fight/effect/841_845.go @@ -28,13 +28,13 @@ func (e *Effect841) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, }) - selfDamage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + selfDamage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: selfDamage, @@ -99,7 +99,7 @@ func (e *Effect844) Skill_Use() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -121,8 +121,8 @@ func (e *Effect845) SkillHit() bool { return true } - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) <= 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) <= 0 { return true } diff --git a/logic/service/fight/effect/851_855.go b/logic/service/fight/effect/851_855.go index 3b6bd61ea..71ddc80ed 100644 --- a/logic/service/fight/effect/851_855.go +++ b/logic/service/fight/effect/851_855.go @@ -47,12 +47,12 @@ type Effect852 struct { } func (e *Effect852) Skill_Use() bool { - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() amount := maxHP.Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) thresholdDivisor := e.Args()[1] if thresholdDivisor.Cmp(alpacadecimal.Zero) > 0 { threshold := maxHP.Div(thresholdDivisor) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { amount = amount.Mul(alpacadecimal.NewFromInt(2)) } } @@ -75,7 +75,7 @@ type Effect853 struct { func (e *Effect853) Skill_Use() bool { percent := e.GetADD(e.Args()[0], e.Args()[1], e.Args()[2]) - base := e.Ctx().Our.CurrentPet.GetMaxHP().Add(e.Ctx().Our.GetProp(4)) + base := e.Ctx().Our.CurrentPet[0].GetMaxHP().Add(e.Ctx().Our.GetProp(4)) damage := base.Mul(percent).Div(alpacadecimal.NewFromInt(100)) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true diff --git a/logic/service/fight/effect/856_860.go b/logic/service/fight/effect/856_860.go index d25ac473b..270b0adc1 100644 --- a/logic/service/fight/effect/856_860.go +++ b/logic/service/fight/effect/856_860.go @@ -59,7 +59,7 @@ func (e *Effect856) Skill_Use() bool { e.Ctx().Our.Heal( e.Ctx().Our, &action.SelectSkillAction{}, - e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]), + e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]), ) return true } @@ -132,7 +132,7 @@ func (e *Effect859) OnSkill() bool { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/861_865.go b/logic/service/fight/effect/861_865.go index 616f504cf..d032725d8 100644 --- a/logic/service/fight/effect/861_865.go +++ b/logic/service/fight/effect/861_865.go @@ -75,7 +75,7 @@ type Effect864 struct { } func (e *Effect864) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } @@ -113,7 +113,7 @@ type Effect865 struct { } func (e *Effect865) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } diff --git a/logic/service/fight/effect/871_875.go b/logic/service/fight/effect/871_875.go index 2d070ebd8..f2b940b5d 100644 --- a/logic/service/fight/effect/871_875.go +++ b/logic/service/fight/effect/871_875.go @@ -90,7 +90,7 @@ func (e *Effect873) Skill_Use() bool { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 873) @@ -182,7 +182,7 @@ func (e *Effect875) Skill_Use() bool { applyAllPropDown(e.Ctx().Our, e.Ctx().Opp, 1) e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) return true } diff --git a/logic/service/fight/effect/876_880.go b/logic/service/fight/effect/876_880.go index 81354c3f4..c889e5e27 100644 --- a/logic/service/fight/effect/876_880.go +++ b/logic/service/fight/effect/876_880.go @@ -88,7 +88,7 @@ func (e *Effect879) Skill_Use() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) if heal.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/881_885.go b/logic/service/fight/effect/881_885.go index 8ba59a890..3c2c3d4e5 100644 --- a/logic/service/fight/effect/881_885.go +++ b/logic/service/fight/effect/881_885.go @@ -113,17 +113,17 @@ func (e *Effect883Sub) AddReduction(step, cap int) { } func (e *Effect883Sub) SwitchIn(in *input.Input) bool { - if in != e.Ctx().Our || e.reducePercent <= 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if in != e.Ctx().Our || e.reducePercent <= 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - currentMax := e.Ctx().Our.CurrentPet.GetMaxHP() + currentMax := e.Ctx().Our.CurrentPet[0].GetMaxHP() newMax := currentMax.Mul(hundred.Sub(alpacadecimal.NewFromInt(int64(e.reducePercent)))).Div(hundred) if newMax.Cmp(alpacadecimal.NewFromInt(1)) < 0 { newMax = alpacadecimal.NewFromInt(1) } - e.Ctx().Our.CurrentPet.Info.MaxHp = uint32(newMax.IntPart()) - if e.Ctx().Our.CurrentPet.Info.Hp > e.Ctx().Our.CurrentPet.Info.MaxHp { - e.Ctx().Our.CurrentPet.Info.Hp = e.Ctx().Our.CurrentPet.Info.MaxHp + e.Ctx().Our.CurrentPet[0].Info.MaxHp = uint32(newMax.IntPart()) + if e.Ctx().Our.CurrentPet[0].Info.Hp > e.Ctx().Our.CurrentPet[0].Info.MaxHp { + e.Ctx().Our.CurrentPet[0].Info.Hp = e.Ctx().Our.CurrentPet[0].Info.MaxHp } e.Alive(false) return true @@ -165,7 +165,7 @@ func (e *Effect885) OnSkill() bool { return true } boost := int8(e.Args()[0].IntPart()) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) > 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) > 0 { boost *= 2 } for i := 0; i < 6; i++ { diff --git a/logic/service/fight/effect/886_890.go b/logic/service/fight/effect/886_890.go index 54542b090..a87e7591c 100644 --- a/logic/service/fight/effect/886_890.go +++ b/logic/service/fight/effect/886_890.go @@ -27,10 +27,10 @@ func (e *Effect886Sub) CalculatePre() bool { if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } - if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } @@ -46,11 +46,11 @@ func (e *Effect886Sub) CalculatePre() bool { base := alpacadecimal.NewFromInt(100) if e.Ctx().SkillEntity.Category() == info.Category.PHYSICAL { - def := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet.Info.Prop[2])) - e.Ctx().Opp.CurrentPet.Info.Prop[2] = uint32(def.Mul(remain).Div(base).IntPart()) + def := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet[0].Info.Prop[2])) + e.Ctx().Opp.CurrentPet[0].Info.Prop[2] = uint32(def.Mul(remain).Div(base).IntPart()) } else if e.Ctx().SkillEntity.Category() == info.Category.SPECIAL { - spDef := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet.Info.Prop[4])) - e.Ctx().Opp.CurrentPet.Info.Prop[4] = uint32(spDef.Mul(remain).Div(base).IntPart()) + spDef := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet[0].Info.Prop[4])) + e.Ctx().Opp.CurrentPet[0].Info.Prop[4] = uint32(spDef.Mul(remain).Div(base).IntPart()) } return true } @@ -76,7 +76,7 @@ func (e *Effect887) Skill_Use() bool { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) addSubEffect(e.Ctx().Our, e.Ctx().Our, &e.EffectNode, &Effect887Sub{}, -1) return true } @@ -103,7 +103,7 @@ func (e *Effect888) Skill_Use() bool { if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } addSubEffect(e.Ctx().Our, e.Ctx().Our, &e.EffectNode, &Effect888Sub{}, -1) @@ -119,7 +119,7 @@ func (e *Effect888Sub) TurnEnd() { e.EffectNode.TurnEnd() return } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/891_895.go b/logic/service/fight/effect/891_895.go index f34952d78..ad1a7390f 100644 --- a/logic/service/fight/effect/891_895.go +++ b/logic/service/fight/effect/891_895.go @@ -61,7 +61,7 @@ type Effect892 struct { } func (e *Effect892) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -83,7 +83,7 @@ func (e *Effect892Sub) SetArgs(t *input.Input, a ...int) { } func (e *Effect892Sub) SwitchIn(in *input.Input) bool { - if in != e.Ctx().Our || len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if in != e.Ctx().Our || len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } @@ -97,14 +97,14 @@ func (e *Effect892Sub) SwitchIn(in *input.Input) bool { percent = alpacadecimal.NewFromInt(100) } - currentMax := e.Ctx().Our.CurrentPet.GetMaxHP() + currentMax := e.Ctx().Our.CurrentPet[0].GetMaxHP() newMax := currentMax.Mul(alpacadecimal.NewFromInt(100).Sub(percent)).Div(alpacadecimal.NewFromInt(100)) if newMax.Cmp(alpacadecimal.NewFromInt(1)) < 0 { newMax = alpacadecimal.NewFromInt(1) } - e.Ctx().Our.CurrentPet.Info.MaxHp = uint32(newMax.IntPart()) - if e.Ctx().Our.CurrentPet.Info.Hp > e.Ctx().Our.CurrentPet.Info.MaxHp { - e.Ctx().Our.CurrentPet.Info.Hp = e.Ctx().Our.CurrentPet.Info.MaxHp + e.Ctx().Our.CurrentPet[0].Info.MaxHp = uint32(newMax.IntPart()) + if e.Ctx().Our.CurrentPet[0].Info.Hp > e.Ctx().Our.CurrentPet[0].Info.MaxHp { + e.Ctx().Our.CurrentPet[0].Info.Hp = e.Ctx().Our.CurrentPet[0].Info.MaxHp } e.Alive(false) return true @@ -121,7 +121,7 @@ func (e *Effect893) OnSkill() bool { } boost := int8(e.Args()[0].IntPart()) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) == 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) == 0 { boost *= 2 } applyAllPropUp(e.Ctx().Our, boost) @@ -139,7 +139,7 @@ func (e *Effect894) OnSkill() bool { } drain := e.Args()[0] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { drain = drain.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ diff --git a/logic/service/fight/effect/896_900.go b/logic/service/fight/effect/896_900.go index 5f2423ef4..0e8882cf1 100644 --- a/logic/service/fight/effect/896_900.go +++ b/logic/service/fight/effect/896_900.go @@ -33,7 +33,7 @@ func (e *Effect897) Skill_Use() bool { if len(e.Args()) < 2 { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 897, int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart())) @@ -79,7 +79,7 @@ type Effect898 struct { } func (e *Effect898) OnSkill() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet.Info.Gender == 1 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0].Info.Gender == 1 { return true } e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Args()[0]) @@ -123,9 +123,9 @@ func (e *Effect900) OnSkill() bool { if len(e.Args()) < 2 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) < 0 { + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) < 0 { heal = heal.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) diff --git a/logic/service/fight/effect/901_905.go b/logic/service/fight/effect/901_905.go index 7061654bf..3175938dc 100644 --- a/logic/service/fight/effect/901_905.go +++ b/logic/service/fight/effect/901_905.go @@ -57,7 +57,7 @@ func (e *Effect902) Skill_Use() bool { } e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) for i, v := range e.Ctx().Opp.Prop[:] { if v <= 0 { @@ -94,10 +94,10 @@ func (e *Effect903) OnSkill() bool { if len(e.Args()) == 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[0]).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -116,7 +116,7 @@ func (e *Effect904) Skill_Use() bool { } e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) e.Ctx().Opp.CancelTurn(e.Ctx().Our) sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 904, int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart()), int(e.Args()[2].IntPart())) diff --git a/logic/service/fight/effect/906_910.go b/logic/service/fight/effect/906_910.go index 556715b30..ad2023470 100644 --- a/logic/service/fight/effect/906_910.go +++ b/logic/service/fight/effect/906_910.go @@ -19,7 +19,7 @@ func (e *Effect906) OnSkill() bool { return true } percent := e.GetADD(e.Args()[0], e.Args()[1], e.Args()[2]) - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Mul(percent).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -129,7 +129,7 @@ type Effect910 struct { } func (e *Effect910) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 910, int(e.Args()[0].IntPart())) diff --git a/logic/service/fight/effect/916_920.go b/logic/service/fight/effect/916_920.go index ebcb01438..1fd1bd51c 100644 --- a/logic/service/fight/effect/916_920.go +++ b/logic/service/fight/effect/916_920.go @@ -26,7 +26,7 @@ func (e *Effect916) OnSkill() bool { } return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP()) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP()) return true } @@ -47,7 +47,7 @@ func (e *Effect917) OnSkill() bool { } return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -137,7 +137,7 @@ type Effect920 struct { } func (e *Effect920) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 920, 1, int(e.Args()[0].IntPart())) diff --git a/logic/service/fight/effect/921_925.go b/logic/service/fight/effect/921_925.go index a1a669f94..54e451847 100644 --- a/logic/service/fight/effect/921_925.go +++ b/logic/service/fight/effect/921_925.go @@ -100,7 +100,7 @@ func (e *Effect924Sub) OnSkill() bool { if e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS || len(e.Args()) < 2 || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) return true @@ -115,7 +115,7 @@ func (e *Effect925) SkillHit() bool { if len(e.Args()) == 0 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { return true } addSkillPowerPercent(e.Ctx().SkillEntity, e.Args()[0]) diff --git a/logic/service/fight/effect/926_930.go b/logic/service/fight/effect/926_930.go index c55dda7c3..28860211a 100644 --- a/logic/service/fight/effect/926_930.go +++ b/logic/service/fight/effect/926_930.go @@ -74,19 +74,19 @@ type Effect927Sub struct { } func (e *Effect927Sub) OnSkill() bool { - if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet == nil { + if len(e.Args()) < 3 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil || e.Ctx().Opp == nil || e.Ctx().Opp.CurrentPet[0] == nil { return true } if e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 || e.Args()[2].Cmp(alpacadecimal.Zero) <= 0 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if heal.Cmp(alpacadecimal.Zero) <= 0 { return true } - lowHP := e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2])) < 0 + lowHP := e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2])) < 0 e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) if lowHP { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ diff --git a/logic/service/fight/effect/931_935.go b/logic/service/fight/effect/931_935.go index e88ef6fba..1c726cee6 100644 --- a/logic/service/fight/effect/931_935.go +++ b/logic/service/fight/effect/931_935.go @@ -67,7 +67,7 @@ type Effect933 struct { } func (e *Effect933) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp == 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp == 0 { return true } @@ -115,7 +115,7 @@ type Effect934 struct { } func (e *Effect934) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet == nil || e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet[0] == nil || e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } @@ -175,7 +175,7 @@ func (e *Effect935) OnSkill() bool { if len(e.Args()) == 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) <= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) <= 0 { return true } diff --git a/logic/service/fight/effect/936_940.go b/logic/service/fight/effect/936_940.go index d8c6e324a..32c9737c9 100644 --- a/logic/service/fight/effect/936_940.go +++ b/logic/service/fight/effect/936_940.go @@ -115,7 +115,7 @@ func (e *Effect939) OnSkill() bool { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/941_945.go b/logic/service/fight/effect/941_945.go index a3b8aad60..8945327d4 100644 --- a/logic/service/fight/effect/941_945.go +++ b/logic/service/fight/effect/941_945.go @@ -20,14 +20,14 @@ func ownDefensePairSum(in *input.Input) alpacadecimal.Decimal { type Effect941 struct{ node.EffectNode } func (e *Effect941) OnSkill() bool { - if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet == nil { + if len(e.Args()) == 0 || e.Ctx().Our == nil || e.Ctx().Our.CurrentPet[0] == nil { return true } - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() if maxHP.Cmp(alpacadecimal.Zero) <= 0 { return true } - chance := int(e.Ctx().Our.CurrentPet.GetHP().Mul(hundred).Div(maxHP).IntPart()) + chance := int(e.Ctx().Our.CurrentPet[0].GetHP().Mul(hundred).Div(maxHP).IntPart()) if chance <= 0 { return true } @@ -54,7 +54,7 @@ func (e *Effect942) Skill_Use() bool { if before <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -111,7 +111,7 @@ func (e *Effect945) Skill_Use() bool { if before <= 0 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) if heal.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/946_950.go b/logic/service/fight/effect/946_950.go index f16d4b91a..172354286 100644 --- a/logic/service/fight/effect/946_950.go +++ b/logic/service/fight/effect/946_950.go @@ -17,7 +17,7 @@ func (e *Effect946) OnSkill() bool { return true } boost := int8(e.Args()[0].IntPart()) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { boost *= 2 } applyAllPropUp(e.Ctx().Our, boost) @@ -34,7 +34,7 @@ func (e *Effect947) Skill_Use() bool { if e.Ctx().Our.SumDamage.Cmp(e.Args()[0]) >= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if damage.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -70,7 +70,7 @@ func (e *Effect949) Skill_Use() bool { if e.Ctx().Our.SumDamage.Cmp(e.Args()[0]) >= 0 { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()) if heal.Cmp(alpacadecimal.Zero) <= 0 { return true } diff --git a/logic/service/fight/effect/951_955.go b/logic/service/fight/effect/951_955.go index 3f8e735d1..2cda92e83 100644 --- a/logic/service/fight/effect/951_955.go +++ b/logic/service/fight/effect/951_955.go @@ -86,7 +86,7 @@ func (e *Effect953) TurnEnd() { e.EffectNode.TurnEnd() return } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) if heal.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } @@ -101,8 +101,8 @@ func (e *Effect953) ComparePre(fattack, sattack *action.SelectSkillAction) bool if current == nil || current.SkillEntity == nil { return true } - currentPercent := e.Ctx().Our.CurrentPet.GetHP().Mul(hundred) - thresholdPercent := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(e.Args()[2]) + currentPercent := e.Ctx().Our.CurrentPet[0].GetHP().Mul(hundred) + thresholdPercent := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(e.Args()[2]) if currentPercent.Cmp(thresholdPercent) >= 0 { return true } @@ -114,7 +114,7 @@ func (e *Effect953) ComparePre(fattack, sattack *action.SelectSkillAction) bool type Effect954 struct{ node.EffectNode } func (e *Effect954) ComparePre(fattack, sattack *action.SelectSkillAction) bool { - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } current := actionByPlayer(fattack, sattack, e.Ctx().Our.UserID) diff --git a/logic/service/fight/effect/956_980.go b/logic/service/fight/effect/956_980.go index a25f984e4..fc666b014 100644 --- a/logic/service/fight/effect/956_980.go +++ b/logic/service/fight/effect/956_980.go @@ -15,7 +15,7 @@ type Effect956 struct { } func (e *Effect956) Skill_Use() bool { - if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) == 0 || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 956, int(e.Args()[0].IntPart())) @@ -188,7 +188,7 @@ func (e *Effect963) OnSkill() bool { if e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -203,7 +203,7 @@ type Effect964 struct { } func (e *Effect964) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } for i, v := range e.Ctx().Our.Prop[:] { @@ -396,8 +396,8 @@ func (e *Effect971) OnSkill() bool { if len(e.Args()) < 3 || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[1]) - if e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[2]).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[2]).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { damage = damage.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ @@ -417,7 +417,7 @@ func (e *Effect972) Skill_Use() bool { if len(e.Args()) == 0 { return true } - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) >= 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) >= 0 { return true } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 972, int(e.Args()[0].IntPart())) @@ -501,7 +501,7 @@ func (e *Effect974) OnSkill() bool { if e.Args()[2].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetHP().Div(e.Args()[2]) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Div(e.Args()[2]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -602,8 +602,8 @@ func (e *Effect977) OnSkill() bool { if len(e.Args()) < 2 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[1]).Cmp(e.Ctx().Our.CurrentPet.GetMaxHP()) < 0 { + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[1]).Cmp(e.Ctx().Our.CurrentPet[0].GetMaxHP()) < 0 { damage = damage.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ diff --git a/logic/service/fight/effect/981_1005.go b/logic/service/fight/effect/981_1005.go index 797777dd0..800eb4621 100644 --- a/logic/service/fight/effect/981_1005.go +++ b/logic/service/fight/effect/981_1005.go @@ -67,7 +67,7 @@ type Effect983 struct { } func (e *Effect983) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } applyAllPropUp(e.Ctx().Our, int8(e.Args()[0].IntPart())) @@ -80,7 +80,7 @@ type Effect984 struct { } func (e *Effect984) Skill_Use() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 984, int(e.Args()[0].IntPart())) @@ -230,7 +230,7 @@ func (e *Effect989) Skill_Use() bool { return true } damage := e.Args()[1] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) < 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) < 0 { damage = damage.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Fixed, Damage: damage}) @@ -261,7 +261,7 @@ type Effect991 struct { } func (e *Effect991) Skill_Use() bool { - if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet.Info.Hp <= 0 { + if len(e.Args()) < 2 || e.Ctx().Opp.CurrentPet[0].Info.Hp <= 0 { return true } sub := e.Ctx().Our.InitEffect(input.EffectType.Sub, 991, int(e.Args()[0].IntPart()), int(e.Args()[1].IntPart())) @@ -309,7 +309,7 @@ func (e *Effect992) OnSkill() bool { if len(e.Args()) < 2 || e.Ctx().SkillEntity == nil || e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - damage := e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[1]).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[1]).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) return true } @@ -393,7 +393,7 @@ func (e *Effect995) Skill_Use() bool { if !cleared || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{Type: info.DamageType.Percent, Damage: damage}) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) return true diff --git a/logic/service/fight/effect/996_1005.go b/logic/service/fight/effect/996_1005.go index d2d0c25af..598afa31d 100644 --- a/logic/service/fight/effect/996_1005.go +++ b/logic/service/fight/effect/996_1005.go @@ -18,11 +18,11 @@ func (e *Effect996) OnSkill() bool { if len(e.Args()) < 2 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) <= 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) <= 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetHP().Mul(e.Args()[1]).Div(alpacadecimal.NewFromInt(100)) + damage := e.Ctx().Our.CurrentPet[0].GetHP().Mul(e.Args()[1]).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -39,11 +39,11 @@ func (e *Effect997) OnSkill() bool { if len(e.Args()) < 2 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 || e.Args()[1].Cmp(alpacadecimal.Zero) <= 0 { return true } - threshold := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.Ctx().Our.CurrentPet.GetHP().Cmp(threshold) >= 0 { + threshold := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(threshold) >= 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -196,7 +196,7 @@ func (e *Effect1004) Skill_Use() bool { return true } damage := e.Args()[1] - if e.Ctx().Our.CurrentPet.GetHP().Cmp(e.Ctx().Opp.CurrentPet.GetHP()) > 0 { + if e.Ctx().Our.CurrentPet[0].GetHP().Cmp(e.Ctx().Opp.CurrentPet[0].GetHP()) > 0 { damage = damage.Mul(alpacadecimal.NewFromInt(2)) } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ @@ -215,7 +215,7 @@ func (e *Effect1005) OnSkill() bool { if len(e.Args()) == 0 || e.Args()[0].Cmp(alpacadecimal.Zero) <= 0 { return true } - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, damage) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, diff --git a/logic/service/fight/effect/EffectDefeatTrigger.go b/logic/service/fight/effect/EffectDefeatTrigger.go index 1e227ff93..62434620a 100644 --- a/logic/service/fight/effect/EffectDefeatTrigger.go +++ b/logic/service/fight/effect/EffectDefeatTrigger.go @@ -55,7 +55,7 @@ func (e *EffectDefeatTrigger) SwitchOut(in *input.Input) bool { return true } - if e.Ctx().Opp.CurrentPet.Info.Hp > 0 { + if e.Ctx().Opp.CurrentPet[0].Info.Hp > 0 { return true } e.isd = true @@ -105,7 +105,7 @@ func (e *EffectDefeatTrigger) triggerByID(at model.AttackValue) { // triggerHealSelfOnDefeat:击败对方后,恢复自身最大体力的1/n(对应Effect66) func (e *EffectDefeatTrigger) triggerHealSelfOnDefeat(_ model.AttackValue) { // 计算恢复量:自身最大体力 / n(n=SideEffectArgs[0]) - maxHP := e.Ctx().Our.CurrentPet.Info.MaxHp + maxHP := e.Ctx().Our.CurrentPet[0].Info.MaxHp healAmount := alpacadecimal.NewFromInt(int64(maxHP)).Div(alpacadecimal.NewFromInt(int64(e.SideEffectArgs[0]))) // 执行回血 e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) @@ -114,7 +114,7 @@ func (e *EffectDefeatTrigger) triggerHealSelfOnDefeat(_ model.AttackValue) { // triggerReduceNextHPOnDefeat:击败对方后,减少对方下次出战精灵最大体力的1/n(对应Effect67) func (e *EffectDefeatTrigger) triggerReduceNextHPOnDefeat(_ model.AttackValue) { // 计算伤害量:对方下只精灵最大体力 / n(n=SideEffectArgs[0]) - nextMaxHP := e.Ctx().Opp.CurrentPet.Info.MaxHp // 假设CurrentPet为下次出战精灵 + nextMaxHP := e.Ctx().Opp.CurrentPet[0].Info.MaxHp // 假设CurrentPet为下次出战精灵 damageAmount := alpacadecimal.NewFromInt(int64(nextMaxHP)).Div(alpacadecimal.NewFromInt(int64(e.SideEffectArgs[0]))) // 执行伤害 e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ diff --git a/logic/service/fight/effect/effect509.go b/logic/service/fight/effect/effect509.go index 1cd3d01d4..f22e43b07 100644 --- a/logic/service/fight/effect/effect509.go +++ b/logic/service/fight/effect/effect509.go @@ -12,8 +12,8 @@ type Effect509 struct { } func (e *Effect509) OnSkill() bool { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() - currentHp := e.Ctx().Our.CurrentPet.GetHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() + currentHp := e.Ctx().Our.CurrentPet[0].GetHP() lostHp := maxHp.Sub(currentHp) healAmount := lostHp.Div(e.Args()[0]) // 受损体力值的1/m diff --git a/logic/service/fight/effect/effect_100.go b/logic/service/fight/effect/effect_100.go index 209d1e3bd..144edbd18 100644 --- a/logic/service/fight/effect/effect_100.go +++ b/logic/service/fight/effect/effect_100.go @@ -25,7 +25,7 @@ func (e *Effect100) SkillHit() bool { //技能威力=【165-65*【当前体力百分比】】,任意体力百分比对应的威力浮动范围∈[-10,+10] - odp := e.GetInput().CurrentPet.GetHP().Div(e.GetInput().CurrentPet.GetMaxHP()).Mul(alpacadecimal.NewFromInt(65)) + odp := e.GetInput().CurrentPet[0].GetHP().Div(e.GetInput().CurrentPet[0].GetMaxHP()).Mul(alpacadecimal.NewFromInt(65)) if odp.Cmp(alpacadecimal.NewFromInt(165)) == -1 { e.Ctx().SkillEntity.XML.Power = int(alpacadecimal.NewFromInt(165).Sub(odp).IntPart()) diff --git a/logic/service/fight/effect/effect_111.go b/logic/service/fight/effect/effect_111.go index 412a2e599..47f1701c7 100644 --- a/logic/service/fight/effect/effect_111.go +++ b/logic/service/fight/effect/effect_111.go @@ -17,7 +17,7 @@ func (e *Effect111) OnSkill() bool { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet.Info.Level)), + Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet[0].Info.Level)), }) return true } diff --git a/logic/service/fight/effect/effect_113.go b/logic/service/fight/effect/effect_113.go index 594ae4c85..a51ebc78e 100644 --- a/logic/service/fight/effect/effect_113.go +++ b/logic/service/fight/effect/effect_113.go @@ -23,7 +23,7 @@ func (e *Effect113) SkillHit() bool { //技能威力=【165-65*【当前体力百分比】】,任意体力百分比对应的威力浮动范围∈[-10,+10] - e.Ctx().SkillEntity.XML.Power = int(e.Ctx().Our.CurrentPet.Info.Dv * 5) + e.Ctx().SkillEntity.XML.Power = int(e.Ctx().Our.CurrentPet[0].Info.Dv * 5) return true } diff --git a/logic/service/fight/effect/effect_119_123.go b/logic/service/fight/effect/effect_119_123.go index a4811907a..ddf44c387 100644 --- a/logic/service/fight/effect/effect_119_123.go +++ b/logic/service/fight/effect/effect_119_123.go @@ -66,7 +66,7 @@ func (e *Effect120) Skill_Use() bool { if ok { // 对方减血1/{0} - oppMaxHP := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet.Info.MaxHp)) + oppMaxHP := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet[0].Info.MaxHp)) damage := oppMaxHP.Mul(percent).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, @@ -74,7 +74,7 @@ func (e *Effect120) Skill_Use() bool { }) } else { // 自己减血1/{0} - ourMaxHP := alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)) + ourMaxHP := alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet[0].Info.MaxHp)) damage := ourMaxHP.Mul(percent).Div(alpacadecimal.NewFromInt(100)) e.Ctx().Our.Damage(e.Ctx().Opp, &info.DamageZone{ Type: info.DamageType.Percent, @@ -92,7 +92,7 @@ type Effect121 struct { func (e *Effect121) Skill_Use() bool { // 检查属性是否相同 - if e.Ctx().Our.CurrentPet.PetInfo.Type == e.Ctx().Opp.CurrentPet.PetInfo.Type { + if e.Ctx().Our.CurrentPet[0].PetInfo.Type == e.Ctx().Opp.CurrentPet[0].PetInfo.Type { chance := int(e.Args()[0].IntPart()) ok, _, _ := e.Input.Player.Roll(chance, 100) if ok { diff --git a/logic/service/fight/effect/effect_13.go b/logic/service/fight/effect/effect_13.go index 25169c76f..1562cbfa4 100644 --- a/logic/service/fight/effect/effect_13.go +++ b/logic/service/fight/effect/effect_13.go @@ -25,7 +25,7 @@ func init() { // ----------------------------------------------------------- func (e *Effect13) OnSkill() bool { - if gconv.Int(e.Ctx().Opp.CurrentPet.PetInfo.Type) == int(element.ElementTypeGrass) { + if gconv.Int(e.Ctx().Opp.CurrentPet[0].PetInfo.Type) == int(element.ElementTypeGrass) { return true } diff --git a/logic/service/fight/effect/effect_130.go b/logic/service/fight/effect/effect_130.go index 142dae1f3..96810135f 100644 --- a/logic/service/fight/effect/effect_130.go +++ b/logic/service/fight/effect/effect_130.go @@ -19,7 +19,7 @@ type Effect130 struct { func (e *Effect130) Skill_Use() bool { // 1. 命中判定失败,不触发 - if e.Ctx().Opp.CurrentPet.Info.Gender != int(e.Args()[0].IntPart()) { + if e.Ctx().Opp.CurrentPet[0].Info.Gender != int(e.Args()[0].IntPart()) { return true } // 4. 附加固定伤害(从SideEffectArgs[0]获取伤害值) diff --git a/logic/service/fight/effect/effect_131.go b/logic/service/fight/effect/effect_131.go index e5a252418..3e0e1dd2d 100644 --- a/logic/service/fight/effect/effect_131.go +++ b/logic/service/fight/effect/effect_131.go @@ -34,7 +34,7 @@ func (e *Effect131) DamageLockEx(t *info.DamageZone) bool { // 4. 对比对手性别与目标性别,匹配则免疫伤害 // 注:需确保BattlePetEntity的Gender字段类型为int/int8,与xGender类型匹配 - if int(e.Ctx().Opp.CurrentPet.Info.Gender) == int(xGender) { + if int(e.Ctx().Opp.CurrentPet[0].Info.Gender) == int(xGender) { // 将伤害置为0,实现当前回合伤害免疫 t.Damage = alpacadecimal.Zero } diff --git a/logic/service/fight/effect/effect_136.go b/logic/service/fight/effect/effect_136.go index 88df76bd0..c55953fb9 100644 --- a/logic/service/fight/effect/effect_136.go +++ b/logic/service/fight/effect/effect_136.go @@ -29,7 +29,7 @@ func (e *Effect136) SkillHit() bool { return true } - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) return true diff --git a/logic/service/fight/effect/effect_140.go b/logic/service/fight/effect/effect_140.go index 7093c2393..ed21f615e 100644 --- a/logic/service/fight/effect/effect_140.go +++ b/logic/service/fight/effect/effect_140.go @@ -14,7 +14,7 @@ type Effect140 struct { } func (e *Effect140) Skill_Use() bool { - maxHp := e.Ctx().Opp.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Opp.CurrentPet[0].GetMaxHP() // 随机降低1/n 到 1/m 的体力 minRatio := alpacadecimal.NewFromFloat(1.0).Div(e.Args()[0]) // 1/n diff --git a/logic/service/fight/effect/effect_145.go b/logic/service/fight/effect/effect_145.go index 638fed6a9..5a78a7b6e 100644 --- a/logic/service/fight/effect/effect_145.go +++ b/logic/service/fight/effect/effect_145.go @@ -22,7 +22,7 @@ func init() { func (e *Effect145) Skill_Use() bool { if e.Ctx().Opp.StatEffect_Exist(info.PetStatus.Poisoned) { - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) } diff --git a/logic/service/fight/effect/effect_147_159.go b/logic/service/fight/effect/effect_147_159.go index 75b060261..1d5938b0b 100644 --- a/logic/service/fight/effect/effect_147_159.go +++ b/logic/service/fight/effect/effect_147_159.go @@ -64,8 +64,8 @@ type Effect159 struct { func (e *Effect159) Skill_Use() bool { // 检查自身体力是否小于最大值的1/{0} - maxHP := int64(e.Ctx().Our.CurrentPet.Info.MaxHp) - currentHP := int64(e.Ctx().Our.CurrentPet.Info.Hp) + maxHP := int64(e.Ctx().Our.CurrentPet[0].Info.MaxHp) + currentHP := int64(e.Ctx().Our.CurrentPet[0].Info.Hp) // 比较 currentHP * {0} < maxHP if currentHP*int64(e.Args()[0].IntPart()) < maxHP { diff --git a/logic/service/fight/effect/effect_161.go b/logic/service/fight/effect/effect_161.go index 984832410..9178ebc3b 100644 --- a/logic/service/fight/effect/effect_161.go +++ b/logic/service/fight/effect/effect_161.go @@ -18,7 +18,7 @@ func (e *Effect161) Skill_Use() bool { success, _, _ := e.Input.Player.Roll(int(chance), 100) if success { - currentHp := e.Ctx().Our.CurrentPet.GetHP() + currentHp := e.Ctx().Our.CurrentPet[0].GetHP() damageRatio := alpacadecimal.NewFromFloat(1.0).Div(e.Args()[1]) // 1/m damageAmount := currentHp.Mul(damageRatio) diff --git a/logic/service/fight/effect/effect_164.go b/logic/service/fight/effect/effect_164.go index d931a459c..a3821111b 100644 --- a/logic/service/fight/effect/effect_164.go +++ b/logic/service/fight/effect/effect_164.go @@ -11,7 +11,7 @@ type Effect164 struct { func (e *Effect164) Action_end_ex() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/effect/effect_187.go b/logic/service/fight/effect/effect_187.go index fa764ad38..f8fbcba88 100644 --- a/logic/service/fight/effect/effect_187.go +++ b/logic/service/fight/effect/effect_187.go @@ -13,7 +13,7 @@ type Effect187 struct { func (e *Effect187) Skill_Use_ex() bool { if e.Ctx().SkillEntity != nil && e.Ctx().SkillEntity.Category() == info.Category.STATUS { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() healAmount := maxHp.Div(e.Args()[1]) // 1/m e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) diff --git a/logic/service/fight/effect/effect_192.go b/logic/service/fight/effect/effect_192.go index e368397f4..bebe974d6 100644 --- a/logic/service/fight/effect/effect_192.go +++ b/logic/service/fight/effect/effect_192.go @@ -18,7 +18,7 @@ func (e *Effect192) OnSkill() bool { return true } - currentHp := e.Ctx().Our.CurrentPet.GetHP() + currentHp := e.Ctx().Our.CurrentPet[0].GetHP() percent := e.Args()[0].Div(alpacadecimal.NewFromInt(100)) additionalDamage := currentHp.Mul(percent) diff --git a/logic/service/fight/effect/effect_28.go b/logic/service/fight/effect/effect_28.go index 65caa96b4..c7a02adc6 100644 --- a/logic/service/fight/effect/effect_28.go +++ b/logic/service/fight/effect/effect_28.go @@ -24,7 +24,7 @@ func (e *Effect28) OnSkill() bool { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, - Damage: e.Ctx().Opp.CurrentPet.GetHP().Div(e.Args()[0]), + Damage: e.Ctx().Opp.CurrentPet[0].GetHP().Div(e.Args()[0]), }) return true } diff --git a/logic/service/fight/effect/effect_36.go b/logic/service/fight/effect/effect_36.go index 4ad538613..226790005 100644 --- a/logic/service/fight/effect/effect_36.go +++ b/logic/service/fight/effect/effect_36.go @@ -39,7 +39,7 @@ func (e *Effect36) DamageFloor(b *info.DamageZone) bool { } if b.Type == info.DamageType.Red { - b.Damage = alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet.Info.MaxHp)) + b.Damage = alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet[0].Info.MaxHp)) } return true diff --git a/logic/service/fight/effect/effect_37.go b/logic/service/fight/effect/effect_37.go index cf73986cc..26aa24130 100644 --- a/logic/service/fight/effect/effect_37.go +++ b/logic/service/fight/effect/effect_37.go @@ -13,8 +13,8 @@ type Effect37 struct { func (e *Effect37) SkillHit() bool { - cmphp := e.GetInput().CurrentPet.GetMaxHP().Div(e.Args()[0]) - if e.GetInput().CurrentPet.GetHP().Cmp(cmphp) == -1 { + cmphp := e.GetInput().CurrentPet[0].GetMaxHP().Div(e.Args()[0]) + if e.GetInput().CurrentPet[0].GetHP().Cmp(cmphp) == -1 { e.Ctx().SkillEntity.XML.Power *= int(e.Args()[1].IntPart()) } return true diff --git a/logic/service/fight/effect/effect_404.go b/logic/service/fight/effect/effect_404.go index 1c16a5433..6fc3ad0d0 100644 --- a/logic/service/fight/effect/effect_404.go +++ b/logic/service/fight/effect/effect_404.go @@ -13,11 +13,11 @@ type Effect404 struct { func (e *Effect404) OnSkill() bool { // 恢复我方所有体力 - ourMaxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + ourMaxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, ourMaxHp) // 恢复对手所有体力 - oppMaxHp := e.Ctx().Opp.CurrentPet.GetMaxHP() + oppMaxHp := e.Ctx().Opp.CurrentPet[0].GetMaxHP() e.Ctx().Opp.Heal(e.Ctx().Opp, &action.SelectSkillAction{}, oppMaxHp) return true diff --git a/logic/service/fight/effect/effect_423.go b/logic/service/fight/effect/effect_423.go index 1fc463fae..4973d06f8 100644 --- a/logic/service/fight/effect/effect_423.go +++ b/logic/service/fight/effect/effect_423.go @@ -14,7 +14,7 @@ type Effect423 struct { } func (e *Effect423) OnSkill() bool { - defenseValue := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet.Info.Prop[1])) + defenseValue := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet[0].Info.Prop[1])) damageZone := &info.DamageZone{ Type: info.DamageType.Fixed, diff --git a/logic/service/fight/effect/effect_43.go b/logic/service/fight/effect/effect_43.go index ccc1431d1..fc51e2ca9 100644 --- a/logic/service/fight/effect/effect_43.go +++ b/logic/service/fight/effect/effect_43.go @@ -23,7 +23,7 @@ type Effect43 struct { func (e *Effect43) OnSkill() bool { //fmt.Println("恢复自身最大体量的1/n", tt.IntPart()) - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0])) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[0])) return true } diff --git a/logic/service/fight/effect/effect_436.go b/logic/service/fight/effect/effect_436.go index c14f14f31..d26ebafda 100644 --- a/logic/service/fight/effect/effect_436.go +++ b/logic/service/fight/effect/effect_436.go @@ -22,7 +22,7 @@ func (e *Effect436) OnSkill() bool { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetMaxHP().Sub(e.Ctx().Our.CurrentPet.GetHP()).Mul(e.Args()[0].Div(alpacadecimal.NewFromInt(100))), + Damage: e.Ctx().Our.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Our.CurrentPet[0].GetHP()).Mul(e.Args()[0].Div(alpacadecimal.NewFromInt(100))), }) return true } diff --git a/logic/service/fight/effect/effect_438.go b/logic/service/fight/effect/effect_438.go index 2eb8e907a..d072a1c98 100644 --- a/logic/service/fight/effect/effect_438.go +++ b/logic/service/fight/effect/effect_438.go @@ -27,6 +27,6 @@ func (e *Effect438) OnSkill() bool { return true } - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1])) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1])) return true } diff --git a/logic/service/fight/effect/effect_459.go b/logic/service/fight/effect/effect_459.go index 61e6bf1dd..afd041332 100644 --- a/logic/service/fight/effect/effect_459.go +++ b/logic/service/fight/effect/effect_459.go @@ -18,7 +18,7 @@ func (e *Effect459) OnSkill() bool { return true } - opponentDef := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet.Info.Prop[1])) + opponentDef := alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet[0].Info.Prop[1])) percent := e.Args()[0].Div(alpacadecimal.NewFromInt(100)) additionalDamage := opponentDef.Mul(percent) diff --git a/logic/service/fight/effect/effect_481.go b/logic/service/fight/effect/effect_481.go index 6f81626d7..a562dcdfe 100644 --- a/logic/service/fight/effect/effect_481.go +++ b/logic/service/fight/effect/effect_481.go @@ -13,7 +13,7 @@ type Effect481 struct { func (e *Effect481) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } diff --git a/logic/service/fight/effect/effect_487.go b/logic/service/fight/effect/effect_487.go index 1d60aff45..60c655e43 100644 --- a/logic/service/fight/effect/effect_487.go +++ b/logic/service/fight/effect/effect_487.go @@ -13,7 +13,7 @@ type Effect487 struct { } func (e *Effect487) OnSkill() bool { - opponentHp := e.Ctx().Opp.CurrentPet.GetHP() + opponentHp := e.Ctx().Opp.CurrentPet[0].GetHP() if opponentHp.Cmp(alpacadecimal.NewFromInt(400)) > 0 { // 提升自身攻击等级 diff --git a/logic/service/fight/effect/effect_502.go b/logic/service/fight/effect/effect_502.go index f9d4497dd..24d662fc8 100644 --- a/logic/service/fight/effect/effect_502.go +++ b/logic/service/fight/effect/effect_502.go @@ -17,7 +17,7 @@ func (e *Effect502) OnSkill() bool { if e.Ctx().SkillEntity.Category() != info.Category.STATUS { // 非属性技能,即直接攻击 // 计算对手最大体力的1/m - maxHp := e.Ctx().Opp.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Opp.CurrentPet[0].GetMaxHP() damage := maxHp.Div(e.Args()[1]) damageZone := &info.DamageZone{ diff --git a/logic/service/fight/effect/effect_514.go b/logic/service/fight/effect/effect_514.go index 1c8490409..1f4fb2584 100644 --- a/logic/service/fight/effect/effect_514.go +++ b/logic/service/fight/effect/effect_514.go @@ -14,8 +14,8 @@ type Effect514 struct { } func (e *Effect514) OnSkill() bool { - maxHp := e.Ctx().Opp.CurrentPet.GetMaxHP() - currentHp := e.Ctx().Opp.CurrentPet.GetHP() + maxHp := e.Ctx().Opp.CurrentPet[0].GetMaxHP() + currentHp := e.Ctx().Opp.CurrentPet[0].GetHP() lostHp := maxHp.Sub(currentHp) damagePercent := e.Args()[0].Div(alpacadecimal.NewFromInt(100)) diff --git a/logic/service/fight/effect/effect_517.go b/logic/service/fight/effect/effect_517.go index 28035b3b6..312ac69c3 100644 --- a/logic/service/fight/effect/effect_517.go +++ b/logic/service/fight/effect/effect_517.go @@ -16,7 +16,7 @@ type Effect517 struct { func (e *Effect517) OnSkill() bool { baseChance := e.Args()[0].IntPart() - lostHpPercent := (e.Ctx().Opp.CurrentPet.GetMaxHP().Sub(e.Ctx().Opp.CurrentPet.GetHP())).Div(e.Ctx().Opp.CurrentPet.GetMaxHP()).Mul(alpacadecimal.NewFromInt(100)).IntPart() + lostHpPercent := (e.Ctx().Opp.CurrentPet[0].GetMaxHP().Sub(e.Ctx().Opp.CurrentPet[0].GetHP())).Div(e.Ctx().Opp.CurrentPet[0].GetMaxHP()).Mul(alpacadecimal.NewFromInt(100)).IntPart() // 计算额外几率 additionalStacks := lostHpPercent / e.Args()[1].IntPart() diff --git a/logic/service/fight/effect/effect_566.go b/logic/service/fight/effect/effect_566.go index d0a8d93d1..bfe7b1e0a 100644 --- a/logic/service/fight/effect/effect_566.go +++ b/logic/service/fight/effect/effect_566.go @@ -31,9 +31,9 @@ func (e *Effect566) CalculatePre() bool { } if e.Ctx().SkillEntity.Category() == info.Category.PHYSICAL { - e.Ctx().Opp.CurrentPet.Info.Prop[2] = 0 + e.Ctx().Opp.CurrentPet[0].Info.Prop[2] = 0 } else { - e.Ctx().Opp.CurrentPet.Info.Prop[4] = 0 + e.Ctx().Opp.CurrentPet[0].Info.Prop[4] = 0 } return true diff --git a/logic/service/fight/effect/effect_57.go b/logic/service/fight/effect/effect_57.go index 14867a427..9852943bc 100644 --- a/logic/service/fight/effect/effect_57.go +++ b/logic/service/fight/effect/effect_57.go @@ -24,7 +24,7 @@ type Effect57 struct { func (e *Effect57) OnSkill() bool { - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) + heal := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) return true } diff --git a/logic/service/fight/effect/effect_6.go b/logic/service/fight/effect/effect_6.go index 26c4494cf..6ab3a75ec 100644 --- a/logic/service/fight/effect/effect_6.go +++ b/logic/service/fight/effect/effect_6.go @@ -28,7 +28,7 @@ func (e *Effect6) Skill_Use() bool { //这个对面计算前是在他的回合,所以后手也能拿到伤害 Damage: e.Ctx().Our.SumDamage.Div(alpacadecimal.NewFromInt(int64(e.SideEffectArgs[0]))), } - t.Damage = alpacadecimal.Min(t.Damage, e.Ctx().Our.CurrentPet.GetHP().Sub(alpacadecimal.NewFromInt(1))) + t.Damage = alpacadecimal.Min(t.Damage, e.Ctx().Our.CurrentPet[0].GetHP().Sub(alpacadecimal.NewFromInt(1))) e.Ctx().Our.Damage(e.Ctx().Our, t) return true diff --git a/logic/service/fight/effect/effect_62.go b/logic/service/fight/effect/effect_62.go index 1c5a0a29d..6d93feb95 100644 --- a/logic/service/fight/effect/effect_62.go +++ b/logic/service/fight/effect/effect_62.go @@ -37,7 +37,7 @@ func (e *Effect62_sub) OnSkill() bool { //相当于对方给自己的伤害 e.Ctx().Our.Damage(e.Ctx().Opp, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)), + Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet[0].Info.MaxHp)), }) e.Alive(false) } @@ -57,7 +57,7 @@ func (e *Effect62) OnSkill() bool { // e.opp = ctx.Input ee := &Effect62_sub{ - // bindpet: ctx.CurrentPet, + // bindpet: ctx.CurrentPet[0], // bind: ctx.Input, } ee.duy = e.EffectNode.SideEffectArgs[0] diff --git a/logic/service/fight/effect/effect_68.go b/logic/service/fight/effect/effect_68.go index e793b96ed..606ab462c 100644 --- a/logic/service/fight/effect/effect_68.go +++ b/logic/service/fight/effect/effect_68.go @@ -25,11 +25,11 @@ func (e *Effect68) DamageLockEx(t *info.DamageZone) bool { if t.Type != info.DamageType.Red { return true } - if e.Ctx().Our.CurrentPet.GetHP().IntPart() <= 1 { + if e.Ctx().Our.CurrentPet[0].GetHP().IntPart() <= 1 { return true } - if t.Damage.Cmp(e.Ctx().Our.CurrentPet.GetHP()) >= 0 { - t.Damage = e.Ctx().Our.CurrentPet.GetHP().Sub(alpacadecimal.NewFromInt(1)) + if t.Damage.Cmp(e.Ctx().Our.CurrentPet[0].GetHP()) >= 0 { + t.Damage = e.Ctx().Our.CurrentPet[0].GetHP().Sub(alpacadecimal.NewFromInt(1)) } return true diff --git a/logic/service/fight/effect/effect_680_690.go b/logic/service/fight/effect/effect_680_690.go index 300d2445f..66847bb2f 100644 --- a/logic/service/fight/effect/effect_680_690.go +++ b/logic/service/fight/effect/effect_680_690.go @@ -201,7 +201,7 @@ type Effect689 struct { func (e *Effect689) Skill_Use() bool { if e.Ctx().Our.SumDamage.Cmp(e.Args()[0]) > 0 { - maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHp := e.Ctx().Our.CurrentPet[0].GetMaxHP() healAmount := maxHp.Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) } diff --git a/logic/service/fight/effect/effect_7.go b/logic/service/fight/effect/effect_7.go index 07a04b072..6ce302f99 100644 --- a/logic/service/fight/effect/effect_7.go +++ b/logic/service/fight/effect/effect_7.go @@ -24,7 +24,7 @@ type Effect7 struct { } func (e *Effect7) SkillHit() bool { - if e.Ctx().Opp.CurrentPet.Info.Hp <= e.Ctx().Our.CurrentPet.Info.Hp { + if e.Ctx().Opp.CurrentPet[0].Info.Hp <= e.Ctx().Our.CurrentPet[0].Info.Hp { e.Ctx().SkillEntity.Accuracy = alpacadecimal.Zero } @@ -34,9 +34,9 @@ func (e *Effect7) DamageFloor(t *info.DamageZone) bool { //fmt.Println("Effect7_old", t.Damage.IntPart()) if t.Type == info.DamageType.Red { - if e.Ctx().Our.CurrentPet.Info.Hp <= e.Ctx().Opp.CurrentPet.Info.Hp { + if e.Ctx().Our.CurrentPet[0].Info.Hp <= e.Ctx().Opp.CurrentPet[0].Info.Hp { - t.Damage = alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet.Info.Hp - e.Ctx().Our.CurrentPet.Info.Hp)) + t.Damage = alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet[0].Info.Hp - e.Ctx().Our.CurrentPet[0].Info.Hp)) e.max = t.Damage } diff --git a/logic/service/fight/effect/effect_724_728.go b/logic/service/fight/effect/effect_724_728.go index ff731e4ba..475df1506 100644 --- a/logic/service/fight/effect/effect_724_728.go +++ b/logic/service/fight/effect/effect_724_728.go @@ -23,7 +23,7 @@ func (e *Effect724) Skill_Use_ex() bool { return true } - healAmount := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[2]) + healAmount := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) return true } @@ -36,7 +36,7 @@ type Effect725 struct { func (e *Effect725) TurnEnd() { success, _, _ := e.Input.Player.Roll(int(e.Args()[1].IntPart()), 100) if success { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[2]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[2]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, @@ -96,7 +96,7 @@ type Effect728 struct { func (e *Effect728) TurnEnd() { if e.Ctx().Our.HasPropADD() { - damage := e.Ctx().Opp.CurrentPet.GetMaxHP().Div(e.Args()[0]) + damage := e.Ctx().Opp.CurrentPet[0].GetMaxHP().Div(e.Args()[0]) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, Damage: damage, diff --git a/logic/service/fight/effect/effect_73.go b/logic/service/fight/effect/effect_73.go index 2626cf42b..fbcf4377c 100644 --- a/logic/service/fight/effect/effect_73.go +++ b/logic/service/fight/effect/effect_73.go @@ -32,7 +32,7 @@ func (e *Effect73) Action_end_ex() bool { Type: info.DamageType.Fixed, Damage: e.Ctx().Opp.SumDamage.Mul(alpacadecimal.NewFromInt(2)), } - maxhp := e.Ctx().Our.CurrentPet.GetMaxHP().Mul(alpacadecimal.NewFromInt(30)) + maxhp := e.Ctx().Our.CurrentPet[0].GetMaxHP().Mul(alpacadecimal.NewFromInt(30)) if tt.Damage.Cmp(maxhp) == 1 { tt.Damage = maxhp } diff --git a/logic/service/fight/effect/effect_8.go b/logic/service/fight/effect/effect_8.go index 7ad02e34d..fd271cb2a 100644 --- a/logic/service/fight/effect/effect_8.go +++ b/logic/service/fight/effect/effect_8.go @@ -25,12 +25,12 @@ type Effect8 struct { // DamageFloor 伤害落实前触发,限制最大伤害 func (e *Effect8) DamageFloor(t *info.DamageZone) bool { - if e.Ctx().Opp.CurrentPet.GetHP().IntPart() <= 1 { + if e.Ctx().Opp.CurrentPet[0].GetHP().IntPart() <= 1 { return true } if t.Type == info.DamageType.Red { - t.Damage = alpacadecimal.Min(t.Damage, e.Ctx().Opp.CurrentPet.GetHP().Sub(alpacadecimal.NewFromInt(1))) + t.Damage = alpacadecimal.Min(t.Damage, e.Ctx().Opp.CurrentPet[0].GetHP().Sub(alpacadecimal.NewFromInt(1))) e.max = t.Damage diff --git a/logic/service/fight/effect/effect_82.go b/logic/service/fight/effect/effect_82.go index 38c047e84..92dfbce5c 100644 --- a/logic/service/fight/effect/effect_82.go +++ b/logic/service/fight/effect/effect_82.go @@ -23,10 +23,10 @@ func (e *Effect82) Damage_Mul(t *info.DamageZone) bool { if t.Type != info.DamageType.Red { return true } - if e.Ctx().Opp.CurrentPet.Info.Gender == 1 { + if e.Ctx().Opp.CurrentPet[0].Info.Gender == 1 { t.Damage = t.Damage.Mul(alpacadecimal.NewFromInt(2)) } - if e.Ctx().Opp.CurrentPet.Info.Gender == 2 { + if e.Ctx().Opp.CurrentPet[0].Info.Gender == 2 { t.Damage = t.Damage.Div(alpacadecimal.NewFromInt(2)) } return true diff --git a/logic/service/fight/effect/effect_83.go b/logic/service/fight/effect/effect_83.go index db2bf489c..c494931ea 100644 --- a/logic/service/fight/effect/effect_83.go +++ b/logic/service/fight/effect/effect_83.go @@ -35,7 +35,7 @@ func (e *Effect83) ComparePre(fattack *action.SelectSkillAction, sattack *action return true } - if e.Ctx().Our.CurrentPet.Info.Gender != 1 { + if e.Ctx().Our.CurrentPet[0].Info.Gender != 1 { return true } @@ -70,7 +70,7 @@ func (e *Effect83) ActionStart(a, b *action.SelectSkillAction) bool { if e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().Our.CurrentPet.Info.Gender != 2 { + if e.Ctx().Our.CurrentPet[0].Info.Gender != 2 { return true } diff --git a/logic/service/fight/effect/effect_98.go b/logic/service/fight/effect/effect_98.go index 5f1419872..0c6801030 100644 --- a/logic/service/fight/effect/effect_98.go +++ b/logic/service/fight/effect/effect_98.go @@ -23,7 +23,7 @@ type Effect98 struct { func (e *Effect98) Damage_Mul(t *info.DamageZone) bool { - if e.Ctx().Opp.CurrentPet.Info.Gender != 1 { + if e.Ctx().Opp.CurrentPet[0].Info.Gender != 1 { return true } diff --git a/logic/service/fight/effect/effect_EffectConditionalAddDamage.go b/logic/service/fight/effect/effect_EffectConditionalAddDamage.go index 0231de930..1b458f3f9 100644 --- a/logic/service/fight/effect/effect_EffectConditionalAddDamage.go +++ b/logic/service/fight/effect/effect_EffectConditionalAddDamage.go @@ -91,7 +91,7 @@ func conditionIsFrozen(e *EffectConditionalAddDamage) bool { // conditionIsTypeX:判断对方是否为X属性对方为X性则附加n点伤害 func conditionIsTypeX(e *EffectConditionalAddDamage) bool { // 示例:假设Args[0]为目标属性值,判断对方属性是否匹配 - return e.Ctx().Opp.CurrentPet.Info.Gender == int(e.Args()[0].IntPart()) + return e.Ctx().Opp.CurrentPet[0].Info.Gender == int(e.Args()[0].IntPart()) } // conditionIsAbnormal:判断对方是否处于任意异常状态 diff --git a/logic/service/fight/effect/effect_addlevel.go b/logic/service/fight/effect/effect_addlevel.go index 388a493cb..00ccdad4c 100644 --- a/logic/service/fight/effect/effect_addlevel.go +++ b/logic/service/fight/effect/effect_addlevel.go @@ -111,7 +111,7 @@ func (e *Effect411) Skill_Use() bool { // 附加百分比伤害 damageZone := &info.DamageZone{ Type: info.DamageType.Percent, - Damage: e.Ctx().Opp.CurrentPet.GetHP().Mul(e.GetADD(e.Args()[0], e.Args()[1], e.Args()[2]).Mul(alpacadecimal.NewFromInt(100))), + Damage: e.Ctx().Opp.CurrentPet[0].GetHP().Mul(e.GetADD(e.Args()[0], e.Args()[1], e.Args()[2]).Mul(alpacadecimal.NewFromInt(100))), } e.Ctx().Opp.Damage(e.Ctx().Our, damageZone) @@ -179,7 +179,7 @@ type Effect441 struct { } func (e *Effect441) ActionStart(a, b *action.SelectSkillAction) bool { - if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet[0].Info.CatchTime { return true } //fmt.Println(e.Ctx().SkillEntity) diff --git a/logic/service/fight/effect/effect_attr.go b/logic/service/fight/effect/effect_attr.go index 1b4885c07..025b0a8a8 100644 --- a/logic/service/fight/effect/effect_attr.go +++ b/logic/service/fight/effect/effect_attr.go @@ -95,8 +95,8 @@ func (e *EffectPropSyncReverse) OnSkill() bool { if e.opppet != nil { return true } - e.ourpet = e.Ctx().Our.CurrentPet - e.opppet = e.Ctx().Opp.CurrentPet + e.ourpet = e.Ctx().Our.CurrentPet[0] + e.opppet = e.Ctx().Opp.CurrentPet[0] e.can = true e.active(true) diff --git a/logic/service/fight/effect/effect_info_map.go b/logic/service/fight/effect/effect_info_map.go index 519e164d1..a445f933f 100644 --- a/logic/service/fight/effect/effect_info_map.go +++ b/logic/service/fight/effect/effect_info_map.go @@ -1037,7 +1037,32 @@ var effectInfoByID = map[int]string{ 1580: "出手时对手体力高于最大体力的1/{0}则造成伤害的{1}%恢复自身体力", 1581: "出手时对手体力低于最大体力的1/{0}则造成的伤害提升{1}%", 1582: "{0}%令对手{1},{2}%令自身{3},均未触发则为自身附加{4}点护盾", + 1583: "后出手时附加当前战斗回合数×{0}的固定伤害", + 1584: "出手时若自身未满体力则下回合自身受到的攻击伤害减少{0}%", + 1585: "{0}回合内若对手使用攻击技能则自身下{1}回合必定暴击", + 1586: "{0}%令对手{1},若对手已处于{2}状态则将此状态刷新至{3}回合", + 1587: "当回合击败对手则下回合自身攻击先制+{0}", + 1588: "自身体力低于对手则为自身附加{0}点护盾且附加等量的固定伤害", + 1589: "若对手处于异常状态则令对手随机{0}项技能PP值归零", + 1590: "自身体力低于对手时100%的概率打出致命一击", + 1591: "{0}%秒杀对手,未触发则自身全属性+{1}", + 1592: "风之力量觉醒,使自身下{0}次攻击获得蚀骨之风效果", + 1593: "1回合做{0}-{1}次攻击,自身体力低于对手时连击上限为{2}", + 1594: "{0}回合内受到攻击则{1}%使自身全属性+{2},未触发则{3}%使对手全属性-{4}", + 1595: "若对手为咸咸粽则100%打出致命一击", + 1596: "若对手为甜甜粽则100%打出致命一击", + 1597: "命中后50%令对手睡眠,若对手为咸咸粽则概率翻倍", + 1598: "命中后50%令对手害怕,若对手为甜甜粽则概率翻倍", + 1599: "{0}回合内受到攻击则{1}%令对手{2},未触发则{3}%令对手{4}", + 1600: "命中后{0}%令对手{1},未触发则自身下{2}回合攻击必定致命一击,触发后{3}回合内对手主动切换精灵则登场精灵{4}%进入{5}状态", + 1601: "命中后附加自身最大体力{0}%的百分比伤害,若打出的攻击伤害为奇数则额外恢复等量体力值", + 1602: "{0}回合内每回合使用技能恢复自身最大体力的1/{1},恢复体力时若自身为满体力则恢复己方所有不在场精灵{2}点体力", + 1603: "{0}%降低对手所有PP值{1}点", + 1604: "{0}%恢复自身所有PP值{1}点", 1605: "{0}%令对手{1}", + 1606: "反转自身能力下降状态,反转成功则吸取对手最大体力的1/{0}", + 1607: "当回合未击败对手则附加自身最大体力1/{0}的百分比伤害", + 1608: "召唤自己的伙伴进行5-10次攻击,布布鸟发起时可额外令自身下回合所有技能先制+3", 1670: "{0}%令对手{1},对手为自身天敌时概率提升{2}%,未触发则消除对手回合类效果", 1671: "造成的攻击伤害不低于{0},若对手处于能力提升状态则造成的攻击伤害不低于{1}", 1672: "出手时若自身未满体力则吸取对手{0}点体力", diff --git a/logic/service/fight/effect/effect_power_doblue.go b/logic/service/fight/effect/effect_power_doblue.go index f12659f6d..8b7af7499 100644 --- a/logic/service/fight/effect/effect_power_doblue.go +++ b/logic/service/fight/effect/effect_power_doblue.go @@ -41,7 +41,7 @@ func (e *Effect96) SkillHit() bool { // ---- 注册所有效果 ---- func init() { registerStatusFunc(2, func(i, o *input.Input) bool { - return o.CurrentPet.Info.Hp < (o.CurrentPet.Info.MaxHp / 2) + return o.CurrentPet[0].Info.Hp < (o.CurrentPet[0].Info.MaxHp / 2) }) registerStatusFunc(30, func(i, o *input.Input) bool { return !i.FightC.IsFirst(i.Player) @@ -73,13 +73,13 @@ func init() { initskill(129, &Effect129{}) registerStatusFunc(132, func(i, o *input.Input) bool { - return i.CurrentPet.Info.Hp < o.CurrentPet.Info.Hp + return i.CurrentPet[0].Info.Hp < o.CurrentPet[0].Info.Hp }) registerStatusFunc(168, func(i, o *input.Input) bool { return o.StatEffect_Exist(info.PetStatus.Sleep) }) registerStatusFunc(401, func(i, o *input.Input) bool { - return i.CurrentPet.PetInfo.Type == o.CurrentPet.PetInfo.Type + return i.CurrentPet[0].PetInfo.Type == o.CurrentPet[0].PetInfo.Type }) registerStatusFunc(431, func(i, o *input.Input) bool { @@ -95,7 +95,7 @@ type Effect129 struct { } func (e *Effect129) SkillHit() bool { - if e.Ctx().Opp.CurrentPet.Info.Gender != e.SideEffectArgs[0] { + if e.Ctx().Opp.CurrentPet[0].Info.Gender != e.SideEffectArgs[0] { return true } e.Ctx().SkillEntity.XML.Power *= 2 diff --git a/logic/service/fight/effect/effect_status.go b/logic/service/fight/effect/effect_status.go index 24ca5ea83..d13f819a8 100644 --- a/logic/service/fight/effect/effect_status.go +++ b/logic/service/fight/effect/effect_status.go @@ -82,7 +82,7 @@ func (e *ContinuousDamage) ActionStart(attacker, defender *action.SelectSkillAct Type: info.DamageType.True, Damage: damage, }) - if e.Ctx().Opp.CurrentPet.GetHP().IntPart() == 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().IntPart() == 0 { return true } @@ -93,7 +93,7 @@ func (e *ContinuousDamage) ActionStart(attacker, defender *action.SelectSkillAct // 计算伤害:最大生命值的1/8 func (e *ContinuousDamage) calculateDamage() alpacadecimal.Decimal { - return alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)). + return alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet[0].Info.MaxHp)). Div(alpacadecimal.NewFromInt(8)) } @@ -125,7 +125,7 @@ func (e *ParasiticSeed) SwitchOut(in *input.Input) bool { func (e *ParasiticSeed) ActionStartEx(attacker, defender *action.SelectSkillAction) bool { // 过滤特定类型单位(假设1是植物类型,使用枚举替代魔法数字) - damage := alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)). + damage := alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet[0].Info.MaxHp)). Div(alpacadecimal.NewFromInt(8)) // 对我方造成真实伤害 @@ -133,7 +133,7 @@ func (e *ParasiticSeed) ActionStartEx(attacker, defender *action.SelectSkillActi Type: info.DamageType.True, Damage: damage, }) - if e.Ctx().Opp.CurrentPet.GetHP().IntPart() == 0 { + if e.Ctx().Opp.CurrentPet[0].GetHP().IntPart() == 0 { return true } diff --git a/logic/service/fight/effect/none.go b/logic/service/fight/effect/none.go index 5723e94aa..a41643be7 100644 --- a/logic/service/fight/effect/none.go +++ b/logic/service/fight/effect/none.go @@ -71,7 +71,7 @@ func (e *Effect201) OnSkill() bool { e.Ctx().Our.Heal( e.Ctx().Our, &action.SelectSkillAction{}, - e.Ctx().Our.CurrentPet.GetMaxHP().Div(divisor), + e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(divisor), ) return true } @@ -82,7 +82,7 @@ func (e *Effect201) OnSkill() bool { } healAmount := pet.GetMaxHP().Div(divisor) - if pet == e.Ctx().Our.CurrentPet { + if pet == e.Ctx().Our.CurrentPet[0] { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount) continue } diff --git a/logic/service/fight/effect/selfkill.go b/logic/service/fight/effect/selfkill.go index 8d8962194..ed941eb12 100644 --- a/logic/service/fight/effect/selfkill.go +++ b/logic/service/fight/effect/selfkill.go @@ -28,7 +28,7 @@ func (e *SelfKill) OnSkill() bool { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)), + Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet[0].Info.MaxHp)), }) e.can = true @@ -151,7 +151,7 @@ func registerSelfDamageSkillHitEffects() { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.True, - Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.Hp)), + Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet[0].Info.Hp)), }) return true }, @@ -170,12 +170,12 @@ func registerSelfDamageOnSkillEffects() { e.Ctx().Our.SetProp(e.Ctx().Our, 5, 1) e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP().Div(alpacadecimal.NewFromInt(2)), + Damage: e.Ctx().Our.CurrentPet[0].GetHP().Div(alpacadecimal.NewFromInt(2)), }) return true }, 137: func(e *onSkillRegistrarEffect) bool { - currentHP := e.Ctx().Our.CurrentPet.GetHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() halfHP := currentHP.Div(alpacadecimal.NewFromInt(2)) e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, @@ -188,7 +188,7 @@ func registerSelfDamageOnSkillEffects() { 479: func(e *onSkillRegistrarEffect) bool { selfDamage := alpacadecimal.NewFromInt(int64(e.Args()[0].IntPart())) opponentDamage := alpacadecimal.NewFromInt(int64(e.Args()[1].IntPart())) - currentHP := e.Ctx().Our.CurrentPet.GetHP() + currentHP := e.Ctx().Our.CurrentPet[0].GetHP() minHP := alpacadecimal.NewFromInt(200) if currentHP.Cmp(minHP) < 0 { @@ -211,7 +211,7 @@ func registerSelfDamageOnSkillEffects() { return true }, 556: func(e *onSkillRegistrarEffect) bool { - currentHP := e.Ctx().Our.CurrentPet.Info.Hp + currentHP := e.Ctx().Our.CurrentPet[0].Info.Hp if currentHP > 1 { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, @@ -230,7 +230,7 @@ func registerSelfDamageOnSkillEffects() { func registerSelfDamageSkillUseEffects() { handlers := map[int]func(*skillUseRegistrarEffect) bool{ 80: func(e *skillUseRegistrarEffect) bool { - damage := e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(2)) + damage := e.Ctx().Our.CurrentPet[0].GetMaxHP().Div(alpacadecimal.NewFromInt(2)) e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: damage, @@ -244,12 +244,12 @@ func registerSelfDamageSkillUseEffects() { 112: func(e *skillUseRegistrarEffect) bool { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)), + Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet[0].Info.MaxHp)), }) damage := int64(grand.N(250, 300)) e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: alpacadecimal.Min(alpacadecimal.NewFromInt(damage), e.Ctx().Opp.CurrentPet.GetHP().Sub(alpacadecimal.NewFromInt(1))), + Damage: alpacadecimal.Min(alpacadecimal.NewFromInt(damage), e.Ctx().Opp.CurrentPet[0].GetHP().Sub(alpacadecimal.NewFromInt(1))), }) return true }, @@ -260,7 +260,7 @@ func registerSelfDamageSkillUseEffects() { e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetMaxHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetMaxHP(), }) minDamage := int(e.Args()[0].IntPart()) @@ -274,7 +274,7 @@ func registerSelfDamageSkillUseEffects() { randomDamage = grand.N(minDamage, maxDamage) } - remainHP := e.Ctx().Opp.CurrentPet.GetHP().Sub(alpacadecimal.NewFromInt(1)) + remainHP := e.Ctx().Opp.CurrentPet[0].GetHP().Sub(alpacadecimal.NewFromInt(1)) if remainHP.Cmp(alpacadecimal.Zero) <= 0 { return true } @@ -298,7 +298,7 @@ func registerSelfDamageSkillUseEffects() { } e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, - Damage: e.Ctx().Our.CurrentPet.GetHP(), + Damage: e.Ctx().Our.CurrentPet[0].GetHP(), }) return true }, @@ -327,7 +327,7 @@ func registerSelfDamageComparePreOnSkillEffects() { return true }, func(e *comparePreOnSkillRegistrarEffect) bool { - maxHP := e.Ctx().Our.CurrentPet.GetMaxHP() + maxHP := e.Ctx().Our.CurrentPet[0].GetMaxHP() damageAmount := maxHP.Div(e.Args()[0]) e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, @@ -515,7 +515,7 @@ type Effect618Sub struct { } func (e *Effect618Sub) TurnEnd() { - if len(e.Args()) > 1 && e.Ctx().Our.CurrentPet.Info.Hp > 0 { + if len(e.Args()) > 1 && e.Ctx().Our.CurrentPet[0].Info.Hp > 0 { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Args()[1]) } e.EffectNode.TurnEnd() diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index ae83d027d..754df81d8 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -33,8 +33,8 @@ func (f *FightC) processSkillAttack(attacker, defender *input.Input, skill *info var originalProps [2][6]int8 var originalPetInfo [2]model.PetInfo //复制属性 - originalProps[0], originalProps[1] = f.Our.Prop, f.Opp.Prop //先复制能力提升 - originalPetInfo[0], originalPetInfo[1] = f.Our.CurrentPet.Info, f.Opp.CurrentPet.Info //先复制宠物信息 + originalProps[0], originalProps[1] = f.Our[0].Prop, f.Opp[0].Prop //先复制能力提升 + originalPetInfo[0], originalPetInfo[1] = f.Our[0].CurrentPet[0].Info, f.Opp[0].CurrentPet[0].Info //先复制宠物信息 attacker.Exec(func(effect input.Effect) bool { //计算变威力 effect.Ctx().SkillEntity = skill @@ -55,8 +55,8 @@ func (f *FightC) processSkillAttack(attacker, defender *input.Input, skill *info } //还原属性 - f.Our.Prop, f.Opp.Prop = originalProps[0], originalProps[1] - f.Our.CurrentPet.Info, f.Opp.CurrentPet.Info = originalPetInfo[0], originalPetInfo[1] + f.Our[0].Prop, f.Opp[0].Prop = originalProps[0], originalProps[1] + f.Our[0].CurrentPet[0].Info, f.Opp[0].CurrentPet[0].Info = originalPetInfo[0], originalPetInfo[1] if attacker.IsCritical == 1 { //命中了才有暴击 //暴击破防 @@ -120,6 +120,13 @@ func (f *FightC) copySkill(action *action.SelectSkillAction) *info.SkillEntity { return originalSkill.(*info.SkillEntity) } +func (f *FightC) getSkillParticipants(skillAction *action.SelectSkillAction) (*input.Input, *input.Input) { + if skillAction == nil { + return nil, nil + } + return f.GetInputByAction(skillAction, false), f.GetInputByAction(skillAction, true) +} + // enterturn 处理战斗回合逻辑 // 回合有先手方和后手方,同时有攻击方和被攻击方 func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) { @@ -143,13 +150,13 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) }) if firstAttack != nil { //如果首技能是空的,说明都空过了 - if firstAttack.GetPlayerID() == f.ownerID { - //是否miss都应该施加解析effect - f.Our.Parseskill(firstAttack) //解析到临时数据 - f.Opp.Parseskill(secondAttack) //解析到临时数据 - } else { - f.Opp.Parseskill(firstAttack) - f.Our.Parseskill(secondAttack) + firstAttacker, _ := f.getSkillParticipants(firstAttack) + if firstAttacker != nil { + firstAttacker.Parseskill(firstAttack) + } + secondAttacker, _ := f.getSkillParticipants(secondAttack) + if secondAttacker != nil { + secondAttacker.Parseskill(secondAttack) } } f.Broadcast(func(fighter *input.Input) { @@ -159,11 +166,21 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) }) fighter.ResetAttackValue() }) - f.First, f.Second = f.Our, f.Opp - if firstAttack != nil { - if firstAttack.GetPlayerID() != f.ownerID { - f.First, f.Second = f.Opp, f.Our // 攻击方为对方时,主攻击方是对方 - } + f.First, f.Second = f.primaryOur(), f.primaryOpp() + switch { + case firstAttack != nil && secondAttack != nil: + f.First, _ = f.getSkillParticipants(firstAttack) + f.Second, _ = f.getSkillParticipants(secondAttack) + case firstAttack != nil: + f.First, f.Second = f.getSkillParticipants(firstAttack) + case secondAttack != nil: + f.First, f.Second = f.getSkillParticipants(secondAttack) + } + if f.First == nil { + f.First = f.primaryOur() + } + if f.Second == nil { + f.Second = f.primaryOpp() } if firstAttack != nil && secondAttack != nil { @@ -217,7 +234,7 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) return effect.ActionStart(firstAttack, secondAttack) }) - canUse := canUseSkill && action.CanUse(currentSkill) && attacker.CurrentPet.Info.Hp > 0 + canUse := canUseSkill && action.CanUse(currentSkill) && attacker.CurrentPet[0].Info.Hp > 0 if !canUse { @@ -240,7 +257,7 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) f.processSkillAttack(attacker, defender, currentSkill) currentSkill = originalSkill //还原技能 - _, skill, ok := utils.FindWithIndex(attacker.CurrentPet.Info.SkillList, func(item model.SkillInfo) bool { + _, skill, ok := utils.FindWithIndex(attacker.CurrentPet[0].Info.SkillList, func(item model.SkillInfo) bool { return item.ID == currentSkill.Info.ID }) if ok { @@ -253,7 +270,7 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) skill.Use(usecount) } } - if defender.CurrentPet.Info.Hp > 0 { + if defender.CurrentPet[0].Info.Hp > 0 { //技能使用后 defender.Exec(func(effect input.Effect) bool { //技能使用后的我方效果 effect.Ctx().SkillEntity = currentSkill @@ -262,7 +279,7 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) }) } - if attacker.CurrentPet.Info.Hp > 0 { + if attacker.CurrentPet[0].Info.Hp > 0 { //技能使用后 attacker.Exec(func(effect input.Effect) bool { //技能使用后的我方效果 effect.Ctx().SkillEntity = currentSkill @@ -283,16 +300,16 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) return true }) - if defender.CurrentPet.Info.Hp <= 0 && attacker.CurrentPet.Info.Hp <= 0 { //先手方死亡,触发反同归于尽 - attacker.CurrentPet.Info.Hp = 1 + if defender.CurrentPet[0].Info.Hp <= 0 && attacker.CurrentPet[0].Info.Hp <= 0 { //先手方死亡,触发反同归于尽 + attacker.CurrentPet[0].Info.Hp = 1 } - if defender.CurrentPet.Info.Hp <= 0 { + if defender.CurrentPet[0].Info.Hp <= 0 { f.TURNOVER(defender) break } - if attacker.CurrentPet.Info.Hp <= 0 { + if attacker.CurrentPet[0].Info.Hp <= 0 { f.TURNOVER(attacker) break diff --git a/logic/service/fight/info/BattlePetEntity.go b/logic/service/fight/info/BattlePetEntity.go index fa80d1684..0a5590602 100644 --- a/logic/service/fight/info/BattlePetEntity.go +++ b/logic/service/fight/info/BattlePetEntity.go @@ -13,9 +13,10 @@ type EnumAttrType int type BattlePetEntity struct { xmlres.PetInfo - Info model.PetInfo //通过偏移赋值 - Shield alpacadecimal.Decimal - DivineEnergy int + Info model.PetInfo //通过偏移赋值 + Shield alpacadecimal.Decimal + DivineEnergy int + ControllerUserID uint32 //*input.Input //PType int @@ -27,6 +28,13 @@ type BattlePetEntity struct { //DamageZone map[EnumCategory]map[EnumsZoneType]map[EnumsZoneType][]float64 // 三维map 伤害类型-》增还是减-》加还是乘-》值 } +func (t *BattlePetEntity) BindController(userID uint32) { + if t == nil { + return + } + t.ControllerUserID = userID +} + func (t *BattlePetEntity) Alive() bool { return t.Info.Hp > 0 diff --git a/logic/service/fight/input.go b/logic/service/fight/input.go index af3552f8f..7299c381a 100644 --- a/logic/service/fight/input.go +++ b/logic/service/fight/input.go @@ -23,12 +23,14 @@ type FightC struct { ReadyInfo model.NoteReadyToFightInfo //开始战斗信息 info.FightStartOutboundInfo - Info info.Fightinfo - IsReady bool - ownerID uint32 // 战斗发起者ID - Our *input.Input //始终等于房主ID - Opp *input.Input //对手ID - Switch map[uint32]*action.ActiveSwitchAction + Info info.Fightinfo + IsReady bool + ownerID uint32 // 战斗发起者ID + Our []*input.Input // 我方战斗位 + Opp []*input.Input // 敌方战斗位 + OurPlayers []common.PlayerI // 我方操作者 + OppPlayers []common.PlayerI // 敌方操作者 + Switch map[uint32]*action.ActiveSwitchAction startl sync.Once StartTime time.Time @@ -51,40 +53,132 @@ type FightC struct { callback func(model.FightOverInfo) } +func (f *FightC) primaryOur() *input.Input { + if len(f.Our) == 0 { + return nil + } + return f.Our[0] +} + +func (f *FightC) primaryOpp() *input.Input { + if len(f.Opp) == 0 { + return nil + } + return f.Opp[0] +} + +func (f *FightC) primaryOurPlayer() common.PlayerI { + if len(f.OurPlayers) == 0 { + return nil + } + return f.OurPlayers[0] +} + +func (f *FightC) primaryOppPlayer() common.PlayerI { + if len(f.OppPlayers) == 0 { + return nil + } + return f.OppPlayers[0] +} + +func (f *FightC) selectInput(inputs []*input.Input, index int) *input.Input { + if len(inputs) == 0 { + return nil + } + if index >= 0 && index < len(inputs) && inputs[index] != nil { + return inputs[index] + } + + for _, in := range inputs { + if in != nil { + return in + } + } + return nil +} + +func (f *FightC) isPlayerInSide(players []common.PlayerI, userID uint32) bool { + for _, player := range players { + if player != nil && player.GetInfo().UserID == userID { + return true + } + } + return false +} + +func (f *FightC) isOurPlayerID(userID uint32) bool { + if f.isPlayerInSide(f.OurPlayers, userID) { + return true + } + if f.isPlayerInSide(f.OppPlayers, userID) { + return false + } + return userID == f.ownerID +} + +func (f *FightC) findInputByUserID(userID uint32) (*input.Input, bool) { + isOur := f.isOurPlayerID(userID) + if isOur { + if in := f.selectInput(f.Our, 0); in != nil { + return in, true + } + return nil, true + } + if in := f.selectInput(f.Opp, 0); in != nil { + return in, false + } + return nil, false +} + +func (f *FightC) getInputByUserID(userID uint32, index int, isOpposite bool) *input.Input { + isOur := f.isOurPlayerID(userID) + if isOpposite { + if isOur { + return f.selectInput(f.Opp, index) + } + return f.selectInput(f.Our, index) + } + if isOur { + return f.selectInput(f.Our, index) + } + return f.selectInput(f.Opp, index) +} + func (f *FightC) Ownerid() uint32 { return f.ownerID } func (f *FightC) GetInputByPlayer(c common.PlayerI, isOpposite bool) *input.Input { - // 判断当前玩家是否为我方玩家 - isOurPlayer := c.GetInfo().UserID == f.ownerID - - // 当isOurPlayer与isOpposite值不同时返回我方,相同时返回对方 - if isOurPlayer != isOpposite { - return f.Our + if c == nil { + if isOpposite { + return f.primaryOpp() + } + return f.primaryOur() } - return f.Opp + return f.getInputByUserID(c.GetInfo().UserID, 0, isOpposite) } func (f *FightC) GetInputByAction(c action.BattleActionI, isOpposite bool) *input.Input { - // 判断动作所属玩家是否为我方 - isOurAction := c.GetPlayerID() == f.Our.Player.GetInfo().UserID - - // 根据isOpposite决定是否返回相反方向的输入 - if isOurAction == !isOpposite { - return f.Our + if c == nil { + if isOpposite { + return f.primaryOpp() + } + return f.primaryOur() } - return f.Opp + index := c.GetActorIndex() + if isOpposite { + index = c.GetTargetIndex() + } + return f.getInputByUserID(c.GetPlayerID(), index, isOpposite) } // 玩家使用技能 func (f *FightC) GetCurrPET(c common.PlayerI) *info.BattlePetEntity { - if f.Our.Player.GetInfo().UserID == c.GetInfo().UserID { - return f.Our.CurrentPet - } else { - return f.Opp.CurrentPet + in := f.GetInputByPlayer(c, false) + if in == nil { + return nil } - + return in.PrimaryCurrentPet() } func (f *FightC) GetOpp(c common.PlayerI) *input.Input { return f.GetInputByPlayer(c, true) @@ -95,6 +189,10 @@ func (f *FightC) IsFirst(play common.PlayerI) bool { return f.TrueFirst.Player == play } +func (f *FightC) GetRound() uint32 { + + return f.Round +} func (f *FightC) Chat(c common.PlayerI, msg string) { f.GetInputByPlayer(c, true).Player.SendPackCmd(50002, &user.ChatOutboundInfo{ @@ -131,8 +229,9 @@ func (f *FightC) initplayer(c common.PlayerI, b []model.PetInfo) (*input.Input, for i := 0; i < len(b); i++ { //玩家精灵重置到100等级 pet := b[i] - - in.AllPet = append(in.AllPet, info.CreateBattlePetEntity(pet)) + entity := info.CreateBattlePetEntity(pet) + entity.BindController(c.GetInfo().UserID) + in.AllPet = append(in.AllPet, entity) } @@ -147,7 +246,7 @@ func (f *FightC) initplayer(c common.PlayerI, b []model.PetInfo) (*input.Input, default: } - in.CurrentPet = in.AllPet[0] + in.SetCurrentPetAt(0, in.AllPet[0]) return in, 0 } @@ -205,9 +304,16 @@ func (f *FightC) IsWin(c *input.Input) bool { // 广播,并是否结束回合 func (f *FightC) Broadcast(t func(ff *input.Input)) { - - t(f.Our) - t(f.Opp) + for _, ff := range f.Our { + if ff != nil { + t(ff) + } + } + for _, ff := range f.Opp { + if ff != nil { + t(ff) + } + } } @@ -221,6 +327,10 @@ func (f *FightC) GetOverInfo() model.FightOverInfo { } func (f *FightC) GetAttackValue(b bool) *model.AttackValue { - return f.GetInputByPlayer(f.Our.Player, b).AttackValue + our := f.primaryOur() + if our == nil { + return nil + } + return f.GetInputByPlayer(our.Player, b).AttackValue } diff --git a/logic/service/fight/input/ai.go b/logic/service/fight/input/ai.go index f875adf21..fcb5df61a 100644 --- a/logic/service/fight/input/ai.go +++ b/logic/service/fight/input/ai.go @@ -59,7 +59,7 @@ func (our *Input) GetAction() { s.DamageValue = our.CalculatePower(our.Opp, s) // 判断是否能秒杀(伤害 >= 对方当前生命值) - if s.DamageValue.Cmp(our.Opp.CurrentPet.GetHP()) != -1 { // 假设oppPet.HP为对方当前剩余生命值 + if s.DamageValue.Cmp(our.Opp.CurrentPet[0].GetHP()) != -1 { // 假设oppPet.HP为对方当前剩余生命值 if usedskill != nil { if s.DamageValue.Cmp(usedskill.DamageValue) != -1 { diff --git a/logic/service/fight/input/divine_energy.go b/logic/service/fight/input/divine_energy.go index 0b99a5e89..8ba580d72 100644 --- a/logic/service/fight/input/divine_energy.go +++ b/logic/service/fight/input/divine_energy.go @@ -1,37 +1,41 @@ package input func (our *Input) CurrentDivineEnergy() int { - if our == nil || our.CurrentPet == nil { + currentPet := our.PrimaryCurrentPet() + if currentPet == nil { return 0 } - return our.CurrentPet.DivineEnergy + return currentPet.DivineEnergy } func (our *Input) AddDivineEnergy(value int) bool { - if our == nil || our.CurrentPet == nil || value <= 0 { + currentPet := our.PrimaryCurrentPet() + if currentPet == nil || value <= 0 { return false } - our.CurrentPet.DivineEnergy += value - if our.CurrentPet.DivineEnergy < 0 { - our.CurrentPet.DivineEnergy = 0 + currentPet.DivineEnergy += value + if currentPet.DivineEnergy < 0 { + currentPet.DivineEnergy = 0 } return true } func (our *Input) ConsumeDivineEnergy() int { - if our == nil || our.CurrentPet == nil { + currentPet := our.PrimaryCurrentPet() + if currentPet == nil { return 0 } - value := our.CurrentPet.DivineEnergy - our.CurrentPet.DivineEnergy = 0 + value := currentPet.DivineEnergy + currentPet.DivineEnergy = 0 return value } func (our *Input) ClearDivineEnergy() { - if our == nil || our.CurrentPet == nil { + currentPet := our.PrimaryCurrentPet() + if currentPet == nil { return } - our.CurrentPet.DivineEnergy = 0 + currentPet.DivineEnergy = 0 } diff --git a/logic/service/fight/input/effect.go b/logic/service/fight/input/effect.go index 0696c017b..e2fa86c29 100644 --- a/logic/service/fight/input/effect.go +++ b/logic/service/fight/input/effect.go @@ -93,7 +93,7 @@ func (our *Input) InitEffect(etype EnumEffectType, id int, a ...int) Effect { func (our *Input) GetProp(id int) alpacadecimal.Decimal { // 计算实际值(这里可以插入后续优化的函数调用) - realValue := info.CalculateRealValue(alpacadecimal.NewFromInt(int64(our.CurrentPet.Info.Prop[id])), our.AttackValue.Prop[id]) + realValue := info.CalculateRealValue(alpacadecimal.NewFromInt(int64(our.CurrentPet[0].Info.Prop[id])), our.AttackValue.Prop[id]) // todo: 插入获取后处理函数,例如: // realValue = postProcessValue(realValue, id, c) diff --git a/logic/service/fight/input/fight.go b/logic/service/fight/input/fight.go index fb3153fc0..5d0c5b32a 100644 --- a/logic/service/fight/input/fight.go +++ b/logic/service/fight/input/fight.go @@ -30,11 +30,11 @@ func (our *Input) CalculateCrit(opp *Input, skill *info.SkillEntity) { CritRate = 16 } // CritSelfHalfHp: 自身体力低于一半时必定致命一击; 默认: 0 - if skill.XML.CritSelfHalfHp != 0 && (our.CurrentPet.HP < int(our.CurrentPet.Info.MaxHp)/2) { + if skill.XML.CritSelfHalfHp != 0 && (our.CurrentPet[0].HP < int(our.CurrentPet[0].Info.MaxHp)/2) { CritRate = 16 } // CritFoeHalfHp: 对方体力低于一半时必定致命一击; 默认: 0 - if skill.XML.CritSelfHalfHp != 0 && (opp.CurrentPet.HP < int(opp.CurrentPet.Info.MaxHp)/2) { + if skill.XML.CritSelfHalfHp != 0 && (opp.CurrentPet[0].HP < int(opp.CurrentPet[0].Info.MaxHp)/2) { CritRate = 16 } @@ -67,30 +67,30 @@ func (our *Input) Heal(in *Input, ac action.BattleActionI, value alpacadecimal.D } if healValue >= 0 { - our.CurrentPet.Info.ModelHP(int64(healValue)) + our.CurrentPet[0].Info.ModelHP(int64(healValue)) return } damage := uint32(-healValue) - if damage >= our.CurrentPet.Info.Hp { - our.CurrentPet.Info.Hp = 0 + if damage >= our.CurrentPet[0].Info.Hp { + our.CurrentPet[0].Info.Hp = 0 return } - our.CurrentPet.Info.Hp -= damage + our.CurrentPet[0].Info.Hp -= damage } func (our *Input) HealPP(value int) { - our.CurrentPet.Info.HealPP(value) + our.CurrentPet[0].Info.HealPP(value) } func (our *Input) DelPP(value int) { - for i := 0; i < len(our.CurrentPet.Info.SkillList); i++ { - if uint32(value) > our.CurrentPet.Info.SkillList[i].PP { - our.CurrentPet.Info.SkillList[i].PP = 0 + for i := 0; i < len(our.CurrentPet[0].Info.SkillList); i++ { + if uint32(value) > our.CurrentPet[0].Info.SkillList[i].PP { + our.CurrentPet[0].Info.SkillList[i].PP = 0 } else { - our.CurrentPet.Info.SkillList[i].PP -= uint32(value) + our.CurrentPet[0].Info.SkillList[i].PP -= uint32(value) } } @@ -196,11 +196,11 @@ func (our *Input) Damage(in *Input, sub *info.DamageZone) { } - if uint32(sub.Damage.IntPart()) > our.CurrentPet.Info.Hp { + if uint32(sub.Damage.IntPart()) > our.CurrentPet[0].Info.Hp { - our.CurrentPet.Info.Hp = 0 + our.CurrentPet[0].Info.Hp = 0 } else { - our.CurrentPet.Info.Hp = our.CurrentPet.Info.Hp - uint32(sub.Damage.IntPart()) + our.CurrentPet[0].Info.Hp = our.CurrentPet[0].Info.Hp - uint32(sub.Damage.IntPart()) } //todo 待实现死亡effet @@ -211,7 +211,7 @@ func (our *Input) Damage(in *Input, sub *info.DamageZone) { func (our *Input) CalculatePower(deftype *Input, skill *info.SkillEntity) alpacadecimal.Decimal { // 1. 计算等级因子 (level * 0.4 + 2) - levelFactor := alpacadecimal.NewFromInt(int64(our.CurrentPet.Info.Level)). + levelFactor := alpacadecimal.NewFromInt(int64(our.CurrentPet[0].Info.Level)). Mul(alpacadecimal.NewFromFloat(0.4)).Add(alpacadecimal.NewFromInt(2)) var ( @@ -239,17 +239,17 @@ func (our *Input) CalculatePower(deftype *Input, skill *info.SkillEntity) alpaca // 11. DmgBindHpDv: 造成的伤害等于自身剩余体力*1/2+潜力(个体值); 默认: 0 if skill.XML.DmgBindLv != 0 { - skill.XML.Power = int(deftype.CurrentPet.Info.Level) + skill.XML.Power = int(deftype.CurrentPet[0].Info.Level) } if skill.XML.PwrBindDv != 0 { if skill.XML.PwrBindDv == 1 { - skill.XML.Power = int(our.CurrentPet.Info.Dv * 5) + skill.XML.Power = int(our.CurrentPet[0].Info.Dv * 5) } if skill.XML.PwrBindDv == 2 { - skill.XML.Power = int(our.CurrentPet.Info.Hp/3 + our.CurrentPet.Info.Dv) + skill.XML.Power = int(our.CurrentPet[0].Info.Hp/3 + our.CurrentPet[0].Info.Dv) } } @@ -261,7 +261,7 @@ func (our *Input) CalculatePower(deftype *Input, skill *info.SkillEntity) alpaca } if skill.XML.DmgBindHpDv != 0 { - skill.XML.Power = int(our.CurrentPet.Info.Hp/2 + our.CurrentPet.Info.Dv) + skill.XML.Power = int(our.CurrentPet[0].Info.Hp/2 + our.CurrentPet[0].Info.Dv) } // 5. 基础伤害公式:等级因子 * 威力因子 * 攻击 / 防御 / 50 + 2 @@ -272,8 +272,8 @@ func (our *Input) CalculatePower(deftype *Input, skill *info.SkillEntity) alpaca Add(alpacadecimal.NewFromInt(2)) var typeRate alpacadecimal.Decimal - //fmt.Println(skill.Type().ID, deftype.CurrentPet.Type().ID) - t, _ := element.Calculator.GetOffensiveMultiplier(skill.GetType().ID, deftype.CurrentPet.GetType().ID) + //fmt.Println(skill.Type().ID, deftype.CurrentPet[0].Type().ID) + t, _ := element.Calculator.GetOffensiveMultiplier(skill.GetType().ID, deftype.CurrentPet[0].GetType().ID) our.AttackValue.Offensive = gconv.Float32(t) typeRate = alpacadecimal.NewFromFloat(t) diff --git a/logic/service/fight/input/id.go b/logic/service/fight/input/id.go index ec2ca3e9a..45d8d518e 100644 --- a/logic/service/fight/input/id.go +++ b/logic/service/fight/input/id.go @@ -27,9 +27,11 @@ type EffectIDCombiner struct { // Combine 拼接三个字段为64位效果ID // 参数: -// prefix: 高16位(效果类型,如EffectType.Skill) -// catchTime: 中32位(核心字段:32位CatchTime) -// suffix: 低16位(扩展标识/子ID) +// +// prefix: 高16位(效果类型,如EffectType.Skill) +// catchTime: 中32位(核心字段:32位CatchTime) +// suffix: 低16位(扩展标识/子ID) +// // 返回:拼接后的int64,参数超出范围返回错误 func (c *EffectIDCombiner) Combine(prefix EnumEffectType, catchTime uint32, suffix uint16) { // // 范围校验(避免溢出) diff --git a/logic/service/fight/input/input.go b/logic/service/fight/input/input.go index 0df629bf3..a94d99c17 100644 --- a/logic/service/fight/input/input.go +++ b/logic/service/fight/input/input.go @@ -18,7 +18,7 @@ import ( type Input struct { CanChange uint32 //是否可以死亡切换CanChange // CanAction bool //是否可以行动 - CurrentPet *info.BattlePetEntity //当前精灵 + CurrentPet []*info.BattlePetEntity //当前上场精灵 AllPet []*info.BattlePetEntity Player common.PlayerI Opp *Input @@ -53,6 +53,7 @@ type Input struct { func NewInput(c common.FightI, p common.PlayerI) *Input { ret := &Input{FightC: c, Player: p} ret.Effects = make([]Effect, 0) + ret.CurrentPet = make([]*info.BattlePetEntity, 0) // t := Geteffect(EffectType.Damage, 0) // t.Effect.SetArgs(ret) @@ -63,6 +64,27 @@ func NewInput(c common.FightI, p common.PlayerI) *Input { } +func (our *Input) CurrentPetAt(index int) *info.BattlePetEntity { + if our == nil || index < 0 || index >= len(our.CurrentPet) { + return nil + } + return our.CurrentPet[index] +} + +func (our *Input) PrimaryCurrentPet() *info.BattlePetEntity { + return our.CurrentPetAt(0) +} + +func (our *Input) SetCurrentPetAt(index int, pet *info.BattlePetEntity) { + if our == nil || index < 0 { + return + } + for len(our.CurrentPet) <= index { + our.CurrentPet = append(our.CurrentPet, nil) + } + our.CurrentPet[index] = pet +} + // 非原地交换:收集非0血量精灵 + 0血量精灵,拼接后返回 func (our *Input) SortPet() { var nonZeroHP []*info.BattlePetEntity // 收集血量>0的精灵(保持原顺序) @@ -102,7 +124,7 @@ func (our *Input) SortPet() { func (our *Input) GetPetInfo() *info.BattlePetEntity { - return our.CurrentPet + return our.PrimaryCurrentPet() } func (our *Input) SetOPP(t *Input) { @@ -164,9 +186,13 @@ func (our *Input) GenSataus() { } func (our *Input) GenInfo() { + currentPet := our.PrimaryCurrentPet() + if currentPet == nil { + return + } - our.RemainHp = int32(our.CurrentPet.Info.Hp) - our.SkillList = our.CurrentPet.Info.SkillList + our.RemainHp = int32(currentPet.Info.Hp) + our.SkillList = currentPet.Info.SkillList // f.Second.SkillList = f.Second.CurrentPet.Info.SkillList // f.Second.RemainHp = int32(f.Second.CurrentPet.Info.Hp) diff --git a/logic/service/fight/input/shield.go b/logic/service/fight/input/shield.go index 503907f08..d53a7bbbf 100644 --- a/logic/service/fight/input/shield.go +++ b/logic/service/fight/input/shield.go @@ -7,10 +7,11 @@ type shieldChangeEffect interface { } func (our *Input) CurrentShield() alpacadecimal.Decimal { - if our == nil || our.CurrentPet == nil { + currentPet := our.PrimaryCurrentPet() + if currentPet == nil { return alpacadecimal.Zero } - return our.CurrentPet.Shield + return currentPet.Shield } func (our *Input) HasShield() bool { @@ -18,45 +19,48 @@ func (our *Input) HasShield() bool { } func (our *Input) AddShield(value alpacadecimal.Decimal) bool { - if our == nil || our.CurrentPet == nil { + currentPet := our.PrimaryCurrentPet() + if currentPet == nil { return false } if value.Cmp(alpacadecimal.Zero) <= 0 { return false } - before := our.CurrentPet.Shield - our.CurrentPet.Shield = our.CurrentPet.Shield.Add(value) - our.notifyShieldChange(before, our.CurrentPet.Shield) + before := currentPet.Shield + currentPet.Shield = currentPet.Shield.Add(value) + our.notifyShieldChange(before, currentPet.Shield) return true } func (our *Input) AbsorbShieldDamage(damage alpacadecimal.Decimal) alpacadecimal.Decimal { - if our == nil || our.CurrentPet == nil { + currentPet := our.PrimaryCurrentPet() + if currentPet == nil { return alpacadecimal.Zero } - if damage.Cmp(alpacadecimal.Zero) <= 0 || our.CurrentPet.Shield.Cmp(alpacadecimal.Zero) <= 0 { + if damage.Cmp(alpacadecimal.Zero) <= 0 || currentPet.Shield.Cmp(alpacadecimal.Zero) <= 0 { return alpacadecimal.Zero } - before := our.CurrentPet.Shield - absorbed := alpacadecimal.Min(our.CurrentPet.Shield, damage) - our.CurrentPet.Shield = our.CurrentPet.Shield.Sub(absorbed) - if our.CurrentPet.Shield.Cmp(alpacadecimal.Zero) < 0 { - our.CurrentPet.Shield = alpacadecimal.Zero + before := currentPet.Shield + absorbed := alpacadecimal.Min(currentPet.Shield, damage) + currentPet.Shield = currentPet.Shield.Sub(absorbed) + if currentPet.Shield.Cmp(alpacadecimal.Zero) < 0 { + currentPet.Shield = alpacadecimal.Zero } - our.notifyShieldChange(before, our.CurrentPet.Shield) + our.notifyShieldChange(before, currentPet.Shield) return absorbed } func (our *Input) ConsumeAllShield() alpacadecimal.Decimal { - if our == nil || our.CurrentPet == nil { + currentPet := our.PrimaryCurrentPet() + if currentPet == nil { return alpacadecimal.Zero } - before := our.CurrentPet.Shield - value := our.CurrentPet.Shield - our.CurrentPet.Shield = alpacadecimal.Zero - our.notifyShieldChange(before, our.CurrentPet.Shield) + before := currentPet.Shield + value := currentPet.Shield + currentPet.Shield = alpacadecimal.Zero + our.notifyShieldChange(before, currentPet.Shield) return value } diff --git a/logic/service/fight/loop.go b/logic/service/fight/loop.go index d7d569bfd..461ed7357 100644 --- a/logic/service/fight/loop.go +++ b/logic/service/fight/loop.go @@ -43,10 +43,10 @@ func (f *FightC) battleLoop() { } }() - //fmt.Println("战斗开始精灵", f.Our.Player.GetInfo().PetList[0].CatchTime) + //fmt.Println("战斗开始精灵", f.Our[0].Player.GetInfo().PetList[0].CatchTime) - ourID := f.Our.Player.GetInfo().UserID - oppID := f.Opp.Player.GetInfo().UserID + ourID := f.Our[0].Player.GetInfo().UserID + oppID := f.Opp[0].Player.GetInfo().UserID //fmt.Println("开始收集玩家动作", waitr) for !f.closefight { @@ -75,7 +75,7 @@ func (f *FightC) battleLoop() { if ff.Player.GetInfo().PetList[j].CatchTime == ff.AllPet[i].Info.CatchTime { if ff.UserID == f.WinnerId { - if ff.CurrentPet.Info.CatchTime == ff.Player.GetInfo().PetList[j].CatchTime { + if ff.CurrentPet[0].Info.CatchTime == ff.Player.GetInfo().PetList[j].CatchTime { f.Winpet = &ff.Player.GetInfo().PetList[j] } @@ -93,32 +93,32 @@ func (f *FightC) battleLoop() { }) if f.Info.Status == info.BattleMode.FIGHT_WITH_NPC { - addpet := f.Opp.Player.GetInfo().PetList[0] + addpet := f.Opp[0].Player.GetInfo().PetList[0] if f.Reason == model.BattleOverReason.Cacthok { f.WinnerId = f.ownerID addpet.EffectInfo = nil //清空特性信息 - f.Our.Player.(*player.Player).Service.Pet.PetAdd(&addpet, 0) + f.Our[0].Player.(*player.Player).Service.Pet.PetAdd(&addpet, 0) - f.Our.Player.SendPackCmd(2409, &info.CatchMonsterOutboundInfo{ + f.Our[0].Player.SendPackCmd(2409, &info.CatchMonsterOutboundInfo{ CatchTime: uint32(addpet.CatchTime), - PetId: uint32(f.Opp.CurrentPet.ID), + PetId: uint32(f.Opp[0].CurrentPet[0].ID), }) - defer f.Our.Player.(*player.Player).Service.Done.UpdatePet(addpet, 0, 1) + defer f.Our[0].Player.(*player.Player).Service.Done.UpdatePet(addpet, 0, 1) //f.Reason = 0 //清空 } if f.Reason == 0 { - defer f.Our.Player.(*player.Player).Service.Done.UpdatePet(addpet, 1, 0) + defer f.Our[0].Player.(*player.Player).Service.Done.UpdatePet(addpet, 1, 0) } - // f.Our.Player.(*player.Player).MapNPC.Reset(7 * time.Second) + // f.Our[0].Player.(*player.Player).MapNPC.Reset(7 * time.Second) - copier.Copy(&f.FightOverInfo, f.Our.Player.(*player.Player).Info) - atomic.StoreUint32(&f.Our.Player.(*player.Player).Canmon, 2) - f.Our.Player.(*player.Player).MapNPC.Reset(10 * time.Second) - // f.Our.Player.(*player.Player).Info.FightTime = f.Our.Player.(*player.Player).Info.FightTime + time.Now().Unix() - f.StartTime.Unix() + copier.Copy(&f.FightOverInfo, f.Our[0].Player.(*player.Player).Info) + atomic.StoreUint32(&f.Our[0].Player.(*player.Player).Canmon, 2) + f.Our[0].Player.(*player.Player).MapNPC.Reset(10 * time.Second) + // f.Our[0].Player.(*player.Player).Info.FightTime = f.Our[0].Player.(*player.Player).Info.FightTime + time.Now().Unix() - f.StartTime.Unix() } //大乱斗,给个延迟 @@ -151,7 +151,7 @@ func (f *FightC) collectPlayerActions(ourID, oppID uint32) map[uint32]action.Bat defer f.closeActionWindow() if f.Info.Status == info.BattleMode.FIGHT_WITH_NPC { - go f.Opp.GetAction() + go f.Opp[0].GetAction() } waitr := time.Duration(f.waittime)*time.Millisecond*10 + 30*time.Second @@ -181,7 +181,7 @@ func (f *FightC) collectPlayerActions(ourID, oppID uint32) map[uint32]action.Bat //正常结束可以切换,以及死切后还能再切一次 if selfinput.CanChange == 0 { - if selfinput.CurrentPet.Info.Hp > 0 { //非死亡切换 + if selfinput.CurrentPet[0].Info.Hp > 0 { //非死亡切换 selfinput.CanChange = 1 f.Broadcast(func(ff *input.Input) { @@ -197,9 +197,9 @@ func (f *FightC) collectPlayerActions(ourID, oppID uint32) map[uint32]action.Bat selfinput.CanChange = 2 } - // oldpet := selfinput.CurrentPet + // oldpet := selfinput.CurrentPet[0] // InitAttackValue := *selfinput.AttackValue - selfinput.CurrentPet, ret.Reason = selfinput.GetPet(ret.Cid) + selfinput.CurrentPet[0], ret.Reason = selfinput.GetPet(ret.Cid) selfinput.Player.SendPackCmd(2407, &ret.Reason) @@ -222,9 +222,9 @@ func (f *FightC) collectPlayerActions(ourID, oppID uint32) map[uint32]action.Bat selfinput.CanChange = 0 if f.Info.Status == info.BattleMode.FIGHT_WITH_NPC && pid == 0 { f.Switch = make(map[uint32]*action.ActiveSwitchAction) - f.Our.Player.SendPackCmd(2407, &ret.Reason) + f.Our[0].Player.SendPackCmd(2407, &ret.Reason) //println("AI出手死切") - go f.Opp.GetAction() //boss出手后获取出招 + go f.Opp[0].GetAction() //boss出手后获取出招 } continue @@ -235,7 +235,7 @@ func (f *FightC) collectPlayerActions(ourID, oppID uint32) map[uint32]action.Bat } else { // println("玩家执行释放技能动作:", pid, paction.(*action.SelectSkillAction).Info.ID) - if selfinput.CurrentPet.Info.Hp <= 0 { //0血执行非切换动作 + if selfinput.CurrentPet[0].Info.Hp <= 0 { //0血执行非切换动作 //todo 记录异常操作 cool.Logger.Print(context.TODO(), "玩家执行了异常操作,当前精灵血量为0,不能执行非切换动作", pid) continue @@ -267,7 +267,7 @@ func (f *FightC) handleTimeout(ourID, oppID uint32, actions map[uint32]action.Ba if f.Info.Status == info.BattleMode.FIGHT_WITH_NPC { // f.WinnerId = 0 - go f.UseSkill(f.Our.Player, 0) //boss出手后获取出招 + go f.UseSkill(f.Our[0].Player, 0) //boss出手后获取出招 return false } else { var pid uint32 @@ -327,8 +327,8 @@ func (f *FightC) handleUseItemAction(itemAction *action.UseItemAction, otherActi f.handleItemAction(itemAction) input := f.GetInputByAction(itemAction, false) - if input.CurrentPet.Info.Hp <= 0 { - input.CurrentPet.Info.Hp = 1 + if input.CurrentPet[0].Info.Hp <= 0 { + input.CurrentPet[0].Info.Hp = 1 } if skillAction, ok := otherAction.(*action.SelectSkillAction); ok { @@ -360,14 +360,14 @@ func (f *FightC) handleItemAction(a *action.UseItemAction) { switch { case gconv.Int(item.Bonus) != 0: - if f.Opp.CanCapture > 0 { //可以捕捉 - f.Opp.CurrentPet.CatchRate = f.Opp.CanCapture - ok, _ := f.Our.Capture(f.Opp.CurrentPet, a.ItemID, -1) - our := f.Our.Player.(*player.Player) + if f.Opp[0].CanCapture > 0 { //可以捕捉 + f.Opp[0].CurrentPet[0].CatchRate = f.Opp[0].CanCapture + ok, _ := f.Our[0].Capture(f.Opp[0].CurrentPet[0], a.ItemID, -1) + our := f.Our[0].Player.(*player.Player) if ok { r := input.GetFunc(int64(item.ID)) if r != nil { - r.Exec(f, &f.Opp.Player.GetInfo().PetList[0]) + r.Exec(f, &f.Opp[0].Player.GetInfo().PetList[0]) } f.Reason = model.BattleOverReason.Cacthok f.closefight = true @@ -384,7 +384,7 @@ func (f *FightC) handleItemAction(a *action.UseItemAction) { UserID: f.GetInputByAction(a, false).UserID, ChangeHp: int32(addhp), ItemID: uint32(item.ID), - UserHp: uint32(f.GetInputByAction(a, false).CurrentPet.Info.Hp), + UserHp: uint32(f.GetInputByAction(a, false).CurrentPet[0].Info.Hp), }) }) @@ -395,7 +395,7 @@ func (f *FightC) handleItemAction(a *action.UseItemAction) { UserID: f.GetInputByAction(a, false).UserID, ItemID: uint32(item.ID), - UserHp: uint32(f.GetInputByAction(a, false).CurrentPet.Info.Hp), + UserHp: uint32(f.GetInputByAction(a, false).CurrentPet[0].Info.Hp), }) }) @@ -445,8 +445,8 @@ func (f *FightC) handleSkillActions(a1, a2 action.BattleActionI) { // 根据玩家ID返回对应对象 func (f *FightC) getPlayerByID(id uint32) common.PlayerI { - if id == f.Our.Player.GetInfo().UserID { - return f.Our.Player + if id == f.Our[0].Player.GetInfo().UserID { + return f.Our[0].Player } - return f.Opp.Player + return f.Opp[0].Player } diff --git a/logic/service/fight/new.go b/logic/service/fight/new.go index 973b866f7..ba639b6ea 100644 --- a/logic/service/fight/new.go +++ b/logic/service/fight/new.go @@ -18,6 +18,8 @@ func NewFight(p1, p2 common.PlayerI, b1, b2 []model.PetInfo, fn func(model.Fight // fmt.Println("NewFight", p1.GetInfo().UserID) f := &FightC{} f.ownerID = p1.GetInfo().UserID + f.OurPlayers = []common.PlayerI{p1} + f.OppPlayers = []common.PlayerI{p2} f.Switch = make(map[uint32]*action.ActiveSwitchAction) f.callback = fn //战斗结束的回调 @@ -33,20 +35,22 @@ func NewFight(p1, p2 common.PlayerI, b1, b2 []model.PetInfo, fn func(model.Fight f.ReadyInfo.Status = f.Info.Status var err errorcode.ErrorCode - f.Our, err = f.initplayer(p1, b1) + our, err := f.initplayer(p1, b1) if err > 0 { return nil, err } + f.Our = []*input.Input{our} - f.Opp, err = f.initplayer(p2, b2) + opp, err := f.initplayer(p2, b2) if err > 0 { return nil, err } + f.Opp = []*input.Input{opp} - f.ReadyInfo.OurInfo, f.ReadyInfo.OurPetList = initfightready(f.Our) - f.ReadyInfo.OpponentInfo, f.ReadyInfo.OpponentPetList = initfightready(f.Opp) + f.ReadyInfo.OurInfo, f.ReadyInfo.OurPetList = initfightready(f.Our[0]) + f.ReadyInfo.OpponentInfo, f.ReadyInfo.OpponentPetList = initfightready(f.Opp[0]) var loadtime time.Duration = 120 * time.Second //说明是PVE @@ -57,16 +61,16 @@ func NewFight(p1, p2 common.PlayerI, b1, b2 []model.PetInfo, fn func(model.Fight f.FightStartOutboundInfo = f.buildFightStartInfo() if f.Info.Status == info.BattleMode.FIGHT_WITH_NPC { - f.Opp.Finished = true //PVE 默认boss数据直接加载完成 + f.Opp[0].Finished = true //PVE 默认boss数据直接加载完成 loadtime = 60 * time.Second //f.handleNPCFightSpecial(&fightStartInfo) - if f.Opp.Player.(*player.AI_player).CanCapture > 0 { - f.Opp.CanCapture = f.Opp.Player.(*player.AI_player).CanCapture + if f.Opp[0].Player.(*player.AI_player).CanCapture > 0 { + f.Opp[0].CanCapture = f.Opp[0].Player.(*player.AI_player).CanCapture f.FightStartOutboundInfo.Info2.Catchable = 1 //可以捕捉就置1 } - f.Opp.AttackValue.Prop = f.Opp.Player.(*player.AI_player).Prop - f.FightStartOutboundInfo.Info2.Prop = f.Opp.AttackValue.Prop + f.Opp[0].AttackValue.Prop = f.Opp[0].Player.(*player.AI_player).Prop + f.FightStartOutboundInfo.Info2.Prop = f.Opp[0].AttackValue.Prop } f.Broadcast(func(ff *input.Input) { @@ -79,14 +83,14 @@ func NewFight(p1, p2 common.PlayerI, b1, b2 []model.PetInfo, fn func(model.Fight cool.Cron.AfterFunc(loadtime, func() { //fmt.Println(f.Our.UserID, "战斗超时结算") - if !f.Our.Finished || !f.Opp.Finished { //如果有任一没有加载完成 + if !f.Our[0].Finished || !f.Opp[0].Finished { //如果有任一没有加载完成 f.closefight = true //阻止继续添加action f.Reason = model.BattleOverReason.PlayerOffline switch { - case !f.Opp.Finished: //邀请方没加载完成 先判断邀请方,如果都没加载完成,就算做房主胜利 - f.WinnerId = f.Our.Player.GetInfo().UserID - case !f.Our.Finished: //被邀请方没加载完成 - f.WinnerId = f.Opp.Player.GetInfo().UserID + case !f.Opp[0].Finished: //邀请方没加载完成 先判断邀请方,如果都没加载完成,就算做房主胜利 + f.WinnerId = f.Our[0].Player.GetInfo().UserID + case !f.Our[0].Finished: //被邀请方没加载完成 + f.WinnerId = f.Opp[0].Player.GetInfo().UserID } f.Broadcast(func(ff *input.Input) { //todo 将血量和技能pp传回enterturn diff --git a/logic/service/fight/node/node.go b/logic/service/fight/node/node.go index c603194b7..9f95d53af 100644 --- a/logic/service/fight/node/node.go +++ b/logic/service/fight/node/node.go @@ -109,10 +109,9 @@ func (e *EffectNode) Duration(t ...int) int { // 设置参数,加上设置输入源 func (e *EffectNode) SetArgs(t *input.Input, a ...int) { e.Input = t - if len(a)>0 { + if len(a) > 0 { e.SideEffectArgs = a } - } func (e *EffectNode) Args() []alpacadecimal.Decimal { @@ -138,7 +137,7 @@ func (e *EffectNode) PropBefer(in *input.Input, prop int8, level int8) bool { func (e *EffectNode) ISNaturalEnemy() bool { - t, _ := element.Calculator.GetOffensiveMultiplier(e.Ctx().Opp.CurrentPet.Type, e.Ctx().Our.CurrentPet.Type) + t, _ := element.Calculator.GetOffensiveMultiplier(e.Ctx().Opp.CurrentPet[0].Type, e.Ctx().Our.CurrentPet[0].Type) if t <= 1 { return false diff --git a/logic/service/fight/node/skill.go b/logic/service/fight/node/skill.go index 2c35ebe29..e13ed158e 100644 --- a/logic/service/fight/node/skill.go +++ b/logic/service/fight/node/skill.go @@ -39,7 +39,7 @@ func (e *EffectNode) OnSkill() bool { func (e *EffectNode) Skill_Can() bool { - return e.Input.CurrentPet.HP != 0 + return e.Input.CurrentPet[0].HP != 0 } func (e *EffectNode) GenSub(t input.Effect, Duration int) input.Effect { @@ -59,7 +59,7 @@ func (e *EffectNode) GenSub(t input.Effect, Duration int) input.Effect { // func (e *EffectNode) Skill_Use() bool { // // if e.Effect != nil { -// // if e.Input.CurrentPet.Info.Hp == 0 { +// // if e.Input.CurrentPet[0].Info.Hp == 0 { // // e.OnDefeat(ctx.Input, ctx.SkillEntity) //死亡 // // } else {