using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 属性 - 数据 /// public class DataAttribute { /// 力量(strength) public virtual int Str { get; set; } /// 敏捷(dexterity) public virtual int Dex { get; set; } /// 体质(constitution) public virtual int Con { get; set; } /// 智力(intelligence) public virtual int Int { get; set; } /// 感知(wisdom) public virtual int Wis { get; set; } /// 魅力(charisma) public virtual int Cha { get; set; } /// 力量调整值(strength) public int StrModifier => AttributeTool.Modifier(Str); /// 敏捷调整值(dexterity) public int DexModifier => AttributeTool.Modifier(Dex); /// 体质调整值(constitution) public int ConModifier => AttributeTool.Modifier(Con); /// 智力调整值(intelligence) public int IntModifier => AttributeTool.Modifier(Int); /// 感知调整值(wisdom) public int WisModifier => AttributeTool.Modifier(Wis); /// 魅力调整值(charisma) public int ChaModifier => AttributeTool.Modifier(Cha); } /// /// 角色 - 数据 /// TODO: 补充角色的专长(Feats)、技能(Skills)、法术(Spells)等 /// public class DataCharacter : DataAttribute { /// 名字 public string name; /// 经验 public int expPoint; /// 种族 public DataRace race; /// 属性 public DataAttribute basis; /// 职业 public DataProfession profession; /// 装备 public DataEquipment equipment; /// 战斗等级 public int Level => CharacterTool.GetLevel(this); /// 生命点 public int HitPoint => CharacterTool.GetHitPoint(this); /// 护甲等级 public int ArmorClass => CharacterTool.GetArmorClass(this); /// 力量(strength) 基础值 + 种族加值 public override int Str { get => basis.Str + race.Str; } /// 敏捷(dexterity) 基础值 + 种族加值 public override int Dex { get => basis.Dex + race.Dex; } /// 体质(constitution) 基础值 + 种族加值 public override int Con { get => basis.Con + race.Con; } /// 智力(intelligence) 基础值 + 种族加值 public override int Int { get => basis.Int + race.Int; } /// 感知(wisdom) 基础值 + 种族加值 public override int Wis { get => basis.Wis + race.Wis; } /// 魅力(charisma) 基础值 + 种族加值 public override int Cha { get => basis.Cha + race.Cha; } } /// /// 种族 - 数据 /// TODO: 补充种族特殊能力 /// public class DataRace : DataAttribute { /// 种族名称 public string name; } /// /// 职业 - 数据 /// public class DataProfession { /// 职业名称 public string name; /// 生命骰子 public int hitDice = 0; /// 角色 public DataCharacter character; /// 职业等级 public int level = 0; /// 累计生命点 public List hitPoints = new List(); } /// /// 战斗角色 - 数据 /// public class DataCombatRole : DataAttribute { /// 角色数据 public readonly DataCharacter character; /// 战斗角色 public DataCombatRole(DataCharacter character) => this.character = character; /// 归属队伍 public int team; /// 角色名字 public string name; /// 战斗等级 public int level; /// 战场位置 public int position; /// 先攻顺序 public int sequence; /// 护甲等级 public int armorClass; /// 生命点 public Vector2Int hitPoint; /// 武器1 public DataWeapon weapon1; /// 武器2 public DataWeapon weapon2; }