66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package logic
|
||
|
||
//角色可序列化数据
|
||
type FightRoleData struct {
|
||
Hp int //血量
|
||
Atk int //攻击
|
||
Def int //防御
|
||
Speed int //速度
|
||
Crit int //暴击
|
||
OperateValue float64 //行动值
|
||
Side byte //阵营 1=我 2=敌
|
||
Pos byte //站位 1~5
|
||
Rid byte //唯一标记,同时也是List FightBase.Roles的索引
|
||
ALive bool //是否活着
|
||
|
||
SkillsInfo map[int]int
|
||
Skills map[int]*FightSkill
|
||
AfterSkills map[int]*FightAfterSkill
|
||
PassiveSkills []*FightPassiveSkill
|
||
Buffs []*FightBuff
|
||
}
|
||
|
||
type FightRole struct {
|
||
Data *FightRoleData
|
||
//战斗实例
|
||
FightBase FightBase
|
||
}
|
||
|
||
/// <summary>
|
||
/// 修改行动值
|
||
/// </summary>
|
||
/// <param name="num">变化到多少</param>
|
||
/// <returns>变化后新的行动值</returns>
|
||
func (this *FightRole) ModifyOperateValue(newNum float64) float64 {
|
||
this.Data.OperateValue = newNum
|
||
//记录战报
|
||
com := new(ComModifyOperate)
|
||
com.from = this.Data.Rid
|
||
com.nv = newNum
|
||
this.FightBase.FightLog.AddCommand(com)
|
||
|
||
return this.Data.OperateValue
|
||
}
|
||
|
||
/// <summary>
|
||
/// 当前是否能进行攻击行为
|
||
/// 如果有行动类控制buff,如昏迷,冰冻等,则不能攻击
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
func (this *FightRole) CanAtk() bool {
|
||
if this.Data.ALive == false {
|
||
return false
|
||
} else {
|
||
return true
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 触发SkillId技能,选择的目标是TargetRid
|
||
/// </summary>
|
||
/// <param name="skillid">技能ID</param>
|
||
/// <param name="targetRid">选择的目标rid</param>
|
||
func (this *FightRole) EmitSkill(skillId int, targetRid string) {
|
||
|
||
}
|