66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package skill
|
||
|
||
import (
|
||
"go_dreamfactory/modules/battle/fight/core"
|
||
cfg "go_dreamfactory/sys/configure/structs"
|
||
)
|
||
|
||
func NewFightSkill(role core.IFightRole, skillConf *cfg.GameSkillAtkData, skillLv int32) *FightSkill {
|
||
return &FightSkill{
|
||
fight: role.GetFight(),
|
||
ownerRole: role,
|
||
skillConf: skillConf,
|
||
skillLv: skillLv,
|
||
childSkillsId: skillConf.ChildSkill.Id,
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 主动/队长技能
|
||
/// </summary>
|
||
type FightSkill struct {
|
||
SkillBase
|
||
fight core.IFight
|
||
/// 本技能归属于哪个Role
|
||
ownerRole core.IFightRole
|
||
/// skillAtk 技能配置
|
||
skillConf *cfg.GameSkillAtkData
|
||
/// 技能等级
|
||
skillLv int32
|
||
/// 子技能id
|
||
childSkillsId []int32
|
||
}
|
||
|
||
/// 发送技能日志
|
||
func (this *FightSkill) GetSkillConf() *cfg.GameSkillAtkData {
|
||
return this.skillConf
|
||
}
|
||
|
||
/// 触发
|
||
/// 遍历所有ChildSkills,生成对应的实例,并Emit触发
|
||
func (this *FightSkill) Emit() {
|
||
this.fight.Debugf("主技能触发:%d", this.skillConf.Id)
|
||
var (
|
||
askill core.IAfterSkill
|
||
)
|
||
for _, v := range this.childSkillsId {
|
||
askill = this.ownerRole.GetAfterAtk(v)
|
||
askill.SetSourceSkillId(this.skillConf.Id)
|
||
for i := 0; i < int(askill.GetDoVal()); i++ {
|
||
askill.Emit()
|
||
//不管有没有释放成功都需要推送日志
|
||
this.AddSkillLog(askill.GetSkillLog())
|
||
}
|
||
}
|
||
}
|
||
|
||
///添加子技能日志
|
||
func (this *FightSkill) AddSkillLog(afterAtk *core.ComSkillAfterAtk) {
|
||
this.AfterSkillList = append(this.AfterSkillList, afterAtk)
|
||
}
|
||
|
||
/// 发送技能日志
|
||
func (this *FightSkill) SendSkillLog() {
|
||
|
||
}
|