package fight import ( "go_dreamfactory/modules/battle/fight/core" "go_dreamfactory/modules/battle/fight/skill" "go_dreamfactory/modules/battle/fight/skill/afteratk" cfg "go_dreamfactory/sys/configure/structs" ) ///战斗角色 type FightRole struct { fight core.IFight data *core.FightRoleData } ///获取战斗控制器 func (this *FightRole) GetFight() core.IFight { return this.fight } ///获取战斗控制器 func (this *FightRole) GetData() *core.FightRoleData { return this.data } /// 增加一个主技能 func (this *FightRole) AddSkill(skillId int32, skillLv int32) core.ISkill { var ( skillConf *cfg.GameSkillAtkData _skill core.ISkill ok bool ) skillConf = this.fight.GetSkillConfig(skillId, skillLv).(*cfg.GameSkillAtkData) if skillConf == nil { this.fight.Errorf("找不到技能配置 ID={%d},Lv={%d}", skillId, skillLv) return _skill } if _skill, ok = this.data.Skills[skillId]; !ok { _skill = skill.NewFightSkill(this, skillConf, skillLv) this.data.Skills[skillId] = _skill } return _skill } /// 获取一个AfterSkill,不存在时会初始化 func (this *FightRole) GetAfterAtk(skillId int32) core.IAfterSkill { var ( _skill core.IAfterSkill conf *cfg.GameSkillAfteratkData ok bool ) if _skill, ok = this.data.AfterSkills[skillId]; !ok { conf = this.fight.GetSkillConfig(skillId, 1).(*cfg.GameSkillAfteratkData) if conf == nil { this.fight.Errorf("子技能配置未null ID={%d}", skillId) return nil } switch conf.Type { /// 伤害类 case cfg.GameSkillEffectType_Dmg: case cfg.GameSkillEffectType_NowHpDps: case cfg.GameSkillEffectType_MaxDmg: //case cfg.GameSkillEffectType_FrontDmg: _skill = afteratk.NewFightDmgSkill(this, conf) break /// 治疗 case cfg.GameSkillEffectType_Tre: _skill = afteratk.NewFightTreSkill(this, conf) break case cfg.GameSkillEffectType_AveTre: _skill = afteratk.NewFightAveTreSkill(this, conf) break ///属性类 case cfg.GameSkillEffectType_RobPro: _skill = afteratk.NewFightAveTreSkill(this, conf) break ///Buff类 case cfg.GameSkillEffectType_AddBuff: _skill = afteratk.NewFightAddBuffSkill(this, conf) break case cfg.GameSkillEffectType_BuffCD: _skill = afteratk.NewFightBuffCDSkill(this, conf) break case cfg.GameSkillEffectType_RemoveDebuff: _skill = afteratk.NewFightRemoveDebuffSkill(this, conf) break case cfg.GameSkillEffectType_ShiftBuff: _skill = afteratk.NewFightShiftBuffSkill(this, conf) break ///Passive类 case cfg.GameSkillEffectType_AddPas: _skill = afteratk.NewFightAddPasSkill(this, conf) break case cfg.GameSkillEffectType_SkillCD: _skill = afteratk.NewFightSkillCDSkill(this, conf) break case cfg.GameSkillEffectType_AddActValue: _skill = afteratk.NewFightAddActValueSkill(this, conf) break case cfg.GameSkillEffectType_DrawActValue: _skill = afteratk.NewFightDrawActValueSkill(this, conf) break case cfg.GameSkillEffectType_RandBuff: _skill = afteratk.NewFightRandBuffSkill(this, conf) break case cfg.GameSkillEffectType_DpsByAddBuff: _skill = afteratk.NewFightDpsByAddBuffSkill(this, conf) break case cfg.GameSkillEffectType_Round: _skill = afteratk.NewFightRoundSkill(this, conf) break case cfg.GameSkillEffectType_TreBeyondByAddBuff: _skill = afteratk.NewFightDpsByAddBuffSkill(this, conf) break // 通用类 default: _skill = skill.NewFightAfterSkill(this, conf) break } this.data.AfterSkills[skillId] = _skill } return _skill }