35 lines
761 B
Go
35 lines
761 B
Go
package effect
|
||
|
||
import (
|
||
"blazing/logic/service/fight/info"
|
||
"blazing/logic/service/fight/input"
|
||
)
|
||
|
||
// forEachEnemyTargetBySkill 在普通情况下对单个目标生效;
|
||
// 当技能为 AtkType=3(仅自己)且当前目标仍在己方时,改为遍历敌方全部站位。
|
||
func forEachEnemyTargetBySkill(carrier, target *input.Input, skill *info.SkillEntity, fn func(*input.Input) bool) {
|
||
if fn == nil {
|
||
return
|
||
}
|
||
if carrier == nil {
|
||
if target != nil {
|
||
fn(target)
|
||
}
|
||
return
|
||
}
|
||
if skill == nil || skill.XML.AtkType != 3 || !isSameSideTarget(carrier, target) {
|
||
if target != nil {
|
||
fn(target)
|
||
}
|
||
return
|
||
}
|
||
for _, opponent := range carrier.OpponentSlots() {
|
||
if opponent == nil {
|
||
continue
|
||
}
|
||
if !fn(opponent) {
|
||
return
|
||
}
|
||
}
|
||
}
|