using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 角色 - 数据 /// public class DataCharacter : DataAttribute { /// 角色名字 public string name; /// 战斗等级 public int level = 0; /// 护甲等级 public int armorClass = 0; /// 经验点 public Vector2Int expPoint; /// 生命点 public Vector2Int hitPoint; /// 基础属性 public DataAttribute basic = Initial(); /// 种族 public DataRace race = DataRace.None(); /// 职业 public DataProfession profession = DataProfession.None(); /// 装备栏 public DataEquipmentSlot equipmentSlot = new DataEquipmentSlot(); /// 力量调整值(strength) public int StrModifier => Modifier(Str); /// 敏捷调整值(dexterity) public int DexModifier => Modifier(Dex); /// 体质调整值(constitution) public int ConModifier => Modifier(Con); /// 智力调整值(intelligence) public int IntModifier => Modifier(Int); /// 感知调整值(wisdom) public int WisModifier => Modifier(Wis); /// 魅力调整值(charisma) public int ChaModifier => Modifier(Cha); /// 更新角色状态 public void Update() { // 更新属性 Cover(basic); // 添加种族属性 Add(race); // 添加职业属性 Add(profession); // 战斗等级 level = profession.level; // 护甲等级 armorClass = 10 + DexModifier; // 升级经验 = 100 * 3^level expPoint.y = 100 * (int)Mathf.Pow(3, level); // 最大生命值 hitPoint.y = race.HitPoint() + profession.HitPoint(); } // 计算护甲等级(AC) // 无甲基础AC = 10 // 护甲 // 重甲 敏捷加值无效‌ // 中甲 敏捷加值上限‌+2 // 轻甲 敏捷加值全额生效 // 盾牌 直接增加 // 法术 直接增加 // 打印角色卡 public void PrintCharacterSheet() { Debug.Log($"=== {name} LV{level} ==="); Debug.Log($"种族: {race.name}"); Debug.Log($"职业: {profession.name}"); Debug.Log($"力量: {Str} ({StrModifier.ToString("+#;-#;+0")})"); Debug.Log($"敏捷: {Dex} ({DexModifier.ToString("+#;-#;+0")})"); Debug.Log($"体质: {Con} ({ConModifier.ToString("+#;-#;+0")})"); Debug.Log($"智力: {Int} ({IntModifier.ToString("+#;-#;+0")})"); Debug.Log($"感知: {Wis} ({WisModifier.ToString("+#;-#;+0")})"); Debug.Log($"魅力: {Cha} ({ChaModifier.ToString("+#;-#;+0")})"); Debug.Log($"经验值: {expPoint}"); Debug.Log($"生命值: {hitPoint}"); Debug.Log($"护甲等级: {armorClass})"); } }