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, } } /// /// 主动/队长技能 /// 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() { }