1
This commit is contained in:
@@ -22,7 +22,7 @@ public class DataCharacter : DataAttribute {
|
||||
/// <summary> 种族 </summary>
|
||||
public DataRace race = DataRace.None();
|
||||
/// <summary> 职业 </summary>
|
||||
public DataProfession profession = DataProfession.None();
|
||||
public DataProfession profession;
|
||||
/// <summary> 装备栏 </summary>
|
||||
public DataEquipmentSlot equipmentSlot = new DataEquipmentSlot();
|
||||
|
||||
@@ -39,35 +39,35 @@ public class DataCharacter : DataAttribute {
|
||||
/// <summary> 魅力调整值(charisma) </summary>
|
||||
public int ChaModifier => Modifier(Cha);
|
||||
|
||||
public DataCharacter() {
|
||||
profession = DataProfession.None(this);
|
||||
}
|
||||
/// <summary> 更新角色状态 </summary>
|
||||
public void Update() {
|
||||
// 更新属性
|
||||
Cover(basic);
|
||||
// 添加种族属性
|
||||
Add(race);
|
||||
// 添加职业属性
|
||||
Add(profession);
|
||||
UpdateAttribute();
|
||||
// 战斗等级
|
||||
level = profession.level;
|
||||
// 护甲等级
|
||||
armorClass = 10 + DexModifier;
|
||||
armorClass = GetArmorClass();
|
||||
// 升级经验 = 100 * 3^level
|
||||
expPoint.y = 100 * (int)Mathf.Pow(3, level);
|
||||
// 最大生命值
|
||||
hitPoint.y = race.HitPoint() + profession.HitPoint();
|
||||
hitPoint.y = profession.HitPoint();
|
||||
}
|
||||
/// <summary> 更新角色属性 </summary>
|
||||
public void UpdateAttribute() {
|
||||
// 更新属性
|
||||
Cover(basic);
|
||||
// 添加种族属性
|
||||
if (race != null) { Add(race); }
|
||||
// 添加职业属性
|
||||
if (profession != null) { Add(profession); }
|
||||
}
|
||||
/// <summary> 计算护甲等级(AC) </summary>
|
||||
public int GetArmorClass() {
|
||||
// TODO:需要补充专长,技能,熟练之类的加值
|
||||
return equipmentSlot.GetArmorClass(DexModifier);
|
||||
}
|
||||
// 计算护甲等级(AC)
|
||||
|
||||
// 无甲基础AC = 10
|
||||
|
||||
// 护甲
|
||||
// 重甲 敏捷加值无效
|
||||
// 中甲 敏捷加值上限+2
|
||||
// 轻甲 敏捷加值全额生效
|
||||
|
||||
// 盾牌 直接增加
|
||||
|
||||
// 法术 直接增加
|
||||
|
||||
// 打印角色卡
|
||||
public void PrintCharacterSheet() {
|
||||
|
||||
@@ -7,15 +7,28 @@ using UnityEngine;
|
||||
/// 职业 - 数据
|
||||
/// </summary>
|
||||
public class DataProfession : DataAttribute {
|
||||
/// <summary> 绑定角色 </summary>
|
||||
public readonly DataCharacter character;
|
||||
/// <summary> 职业名称 </summary>
|
||||
public string name;
|
||||
public readonly string name;
|
||||
/// <summary> 生命骰子 </summary>
|
||||
public readonly int hitDice = 0;
|
||||
/// <summary> 职业等级 </summary>
|
||||
public int level = 0;
|
||||
/// <summary> 生命骰子 </summary>
|
||||
public int hitDice = 0;
|
||||
/// <summary> 累计生命点 </summary>
|
||||
public List<int> hitPoints = new List<int>();
|
||||
|
||||
public DataProfession(DataCharacter character, string name, int hitDice) {
|
||||
this.character = character;
|
||||
this.name = name;
|
||||
this.hitDice = hitDice;
|
||||
|
||||
character.UpdateAttribute();
|
||||
level = 1;
|
||||
hitPoints = new List<int>();
|
||||
// 初始生命 = 满生命骰子 + 体质调整值
|
||||
hitPoints.Add(hitDice + character.ConModifier);
|
||||
}
|
||||
/// <summary> 升级:骰生命骰子+体质调整值 </summary>
|
||||
public void Upgrade(int modifier) {
|
||||
level++;
|
||||
@@ -27,47 +40,38 @@ public class DataProfession : DataAttribute {
|
||||
return hitPoints.Sum();
|
||||
}
|
||||
|
||||
/// <summary> 无职业 </summary>
|
||||
public static DataProfession None() {
|
||||
return new DataProfession() { name = "无" };
|
||||
/// <summary> 无职业 1d4 </summary>
|
||||
public static DataProfession None(DataCharacter character) {
|
||||
return new DataProfession(character, "无", 4);
|
||||
}
|
||||
/// <summary> 战士职业 </summary>
|
||||
public static DataProfession Warrior(int modifier) {
|
||||
DataProfession profession = new DataProfession();
|
||||
// 战士,初始1级,1d10生命骰子,初始生命=满生命骰子+体质调整值
|
||||
profession.name = "战士";
|
||||
profession.level = 1;
|
||||
profession.hitDice = 10;
|
||||
profession.hitPoints.Add(profession.hitDice + modifier);
|
||||
// 职业属性加成
|
||||
profession.Str = 2;
|
||||
profession.Con = 1;
|
||||
return profession;
|
||||
/// <summary> 随机职业 </summary>
|
||||
public static DataProfession Random(DataCharacter character) {
|
||||
int index = Dice.Roll(5);
|
||||
if (index == 1) { return Warrior(character); }
|
||||
if (index == 2) { return Wizard(character); }
|
||||
if (index == 3) { return Cleric(character); }
|
||||
if (index == 4) { return Ranger(character); }
|
||||
if (index == 5) { return Chanter(character); }
|
||||
return None(character);
|
||||
}
|
||||
/// <summary> 法师职业 </summary>
|
||||
public static DataProfession Wizard(int modifier) {
|
||||
DataProfession profession = new DataProfession();
|
||||
// 法师,初始1级,1d6生命骰子,初始生命=满生命骰子+体质调整值
|
||||
profession.name = "法师";
|
||||
profession.level = 1;
|
||||
profession.hitDice = 6;
|
||||
profession.hitPoints.Add(profession.hitDice + modifier);
|
||||
// 职业属性加成
|
||||
profession.Int = 2;
|
||||
profession.Dex = 1;
|
||||
return profession;
|
||||
/// <summary> 战士 1d10 </summary>
|
||||
public static DataProfession Warrior(DataCharacter character) {
|
||||
return new DataProfession(character, "战士", 10);
|
||||
}
|
||||
/// <summary> 牧师职业 </summary>
|
||||
public static DataProfession Cleric(int modifier) {
|
||||
DataProfession profession = new DataProfession();
|
||||
// 牧师,初始1级,1d8生命骰子,初始生命=满生命骰子+体质调整值
|
||||
profession.name = "牧师";
|
||||
profession.level = 1;
|
||||
profession.hitDice = 8;
|
||||
profession.hitPoints.Add(profession.hitDice + modifier);
|
||||
// 职业属性加成
|
||||
profession.Wis = 2;
|
||||
profession.Con = 1;
|
||||
return profession;
|
||||
/// <summary> 法师 1d6 </summary>
|
||||
public static DataProfession Wizard(DataCharacter character) {
|
||||
return new DataProfession(character, "法师", 6);
|
||||
}
|
||||
/// <summary> 牧师 1d8 </summary>
|
||||
public static DataProfession Cleric(DataCharacter character) {
|
||||
return new DataProfession(character, "牧师", 8);
|
||||
}
|
||||
/// <summary> 游侠 1d8 </summary>
|
||||
public static DataProfession Ranger(DataCharacter character) {
|
||||
return new DataProfession(character, "游侠", 8);
|
||||
}
|
||||
/// <summary> 歌者 1d6 </summary>
|
||||
public static DataProfession Chanter(DataCharacter character) {
|
||||
return new DataProfession(character, "歌者", 6);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,18 +7,61 @@ using UnityEngine;
|
||||
/// </summary>
|
||||
public class DataRace : DataAttribute {
|
||||
/// <summary> 种族名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 基础生命点 </summary>
|
||||
public int hitPoint = 10;
|
||||
public readonly string name;
|
||||
|
||||
/// <summary> 生命点:每级生命点总和 </summary>
|
||||
public int HitPoint() {
|
||||
return hitPoint;
|
||||
public DataRace(string name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
// 混血人类,木精灵,丘陵矮人(Hill Dwarf),龙裔,半精灵
|
||||
/// <summary> 无种族 </summary>
|
||||
public static DataRace None() {
|
||||
// 初始生命值10点
|
||||
return new DataRace() { name = "无" };
|
||||
return new DataRace("未知");
|
||||
}
|
||||
/// <summary> 随机职业 </summary>
|
||||
public static DataRace Random() {
|
||||
int index = Dice.Roll(5);
|
||||
if (index == 1) { return Human(); }
|
||||
if (index == 2) { return Elven(); }
|
||||
if (index == 3) { return Dwarf(); }
|
||||
if (index == 4) { return Orc(); }
|
||||
if (index == 5) { return Halfling(); }
|
||||
return None();
|
||||
}
|
||||
/// <summary> 人类(Human) </summary>
|
||||
public static DataRace Human() {
|
||||
DataRace race = new DataRace("人类");
|
||||
// 种族属性加成 全属性+1
|
||||
race.Str = 1; race.Dex = 1; race.Con = 1;
|
||||
race.Int = 1; race.Wis = 1; race.Cha = 1;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 精灵(Elven) </summary>
|
||||
public static DataRace Elven() {
|
||||
DataRace race = new DataRace("精灵");
|
||||
// 种族属性加成 敏捷+2 智力+2 感知+1
|
||||
race.Dex = 2; race.Int = 2; race.Int = 1;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 矮人(Dwarf) </summary>
|
||||
public static DataRace Dwarf() {
|
||||
DataRace race = new DataRace("矮人");
|
||||
// 种族属性加成 力量+2 体质+2 感知+1
|
||||
race.Str = 2; race.Con = 2; race.Wis = 1;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 半兽人(Orc) </summary>
|
||||
public static DataRace Orc() {
|
||||
DataRace race = new DataRace("半兽人");
|
||||
// 种族属性加成 力量+3 体质+2
|
||||
race.Str = 3; race.Con = 2;
|
||||
return race;
|
||||
}
|
||||
/// <summary> 半身人(Halfling) </summary>
|
||||
public static DataRace Halfling() {
|
||||
DataRace race = new DataRace("半身人");
|
||||
// 种族属性加成 敏捷+2 魅力+2 体质+1
|
||||
race.Dex = 2; race.Cha = 2; race.Con = 1;
|
||||
return race;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user