1
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 属性 - 数据
|
||||
/// </summary>
|
||||
public class DataAttribute {
|
||||
/// <summary> 力量(strength) </summary>
|
||||
public int Str;
|
||||
/// <summary> 敏捷(dexterity) </summary>
|
||||
public int Dex;
|
||||
/// <summary> 体质(constitution) </summary>
|
||||
public int Con;
|
||||
/// <summary> 智力(intelligence) </summary>
|
||||
public int Int;
|
||||
/// <summary> 感知(wisdom) </summary>
|
||||
public int Wis;
|
||||
/// <summary> 魅力(charisma) </summary>
|
||||
public int Cha;
|
||||
|
||||
/// <summary> 创建初始属性 </summary>
|
||||
public static DataAttribute Initial() {
|
||||
DataAttribute attribute = new DataAttribute();
|
||||
attribute.Str = Dice.RollAttribute();
|
||||
attribute.Dex = Dice.RollAttribute();
|
||||
attribute.Con = Dice.RollAttribute();
|
||||
attribute.Int = Dice.RollAttribute();
|
||||
attribute.Wis = Dice.RollAttribute();
|
||||
attribute.Cha = Dice.RollAttribute();
|
||||
return attribute;
|
||||
}
|
||||
// 计算属性调整值(属性值-10)/2 向下取整
|
||||
public int Modifier(int value) {
|
||||
return (int)System.Math.Floor((value - 10) / 2.0);
|
||||
}
|
||||
/// <summary> 添加属性 </summary>
|
||||
public void Add(DataAttribute value) {
|
||||
Str += value.Str;
|
||||
Dex += value.Dex;
|
||||
Con += value.Con;
|
||||
Int += value.Int;
|
||||
Wis += value.Wis;
|
||||
Cha += value.Cha;
|
||||
}
|
||||
/// <summary> 减少属性 </summary>
|
||||
public void Sub(DataAttribute value) {
|
||||
Str -= value.Str;
|
||||
Dex -= value.Dex;
|
||||
Con -= value.Con;
|
||||
Int -= value.Int;
|
||||
Wis -= value.Wis;
|
||||
Cha -= value.Cha;
|
||||
}
|
||||
/// <summary> 覆盖属性 </summary>
|
||||
public void Cover(DataAttribute value) {
|
||||
Str = value.Str;
|
||||
Dex = value.Dex;
|
||||
Con = value.Con;
|
||||
Int = value.Int;
|
||||
Wis = value.Wis;
|
||||
Cha = value.Cha;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fb070bc540efae048ae79c8319c0c0e2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,87 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 角色 - 数据
|
||||
/// </summary>
|
||||
public class DataCharacter : DataAttribute {
|
||||
/// <summary> 角色名字 </summary>
|
||||
public string name;
|
||||
/// <summary> 战斗等级 </summary>
|
||||
public int level = 0;
|
||||
/// <summary> 护甲等级 </summary>
|
||||
public int armorClass = 0;
|
||||
/// <summary> 经验点 </summary>
|
||||
public Vector2Int expPoint;
|
||||
/// <summary> 生命点 </summary>
|
||||
public Vector2Int hitPoint;
|
||||
|
||||
/// <summary> 基础属性 </summary>
|
||||
public DataAttribute basic = Initial();
|
||||
/// <summary> 种族 </summary>
|
||||
public DataRace race = DataRace.None();
|
||||
/// <summary> 职业 </summary>
|
||||
public DataProfession profession = DataProfession.None();
|
||||
/// <summary> 装备栏 </summary>
|
||||
public DataEquipmentSlot equipmentSlot = new DataEquipmentSlot();
|
||||
|
||||
/// <summary> 力量调整值(strength) </summary>
|
||||
public int StrModifier => Modifier(Str);
|
||||
/// <summary> 敏捷调整值(dexterity) </summary>
|
||||
public int DexModifier => Modifier(Dex);
|
||||
/// <summary> 体质调整值(constitution) </summary>
|
||||
public int ConModifier => Modifier(Con);
|
||||
/// <summary> 智力调整值(intelligence) </summary>
|
||||
public int IntModifier => Modifier(Int);
|
||||
/// <summary> 感知调整值(wisdom) </summary>
|
||||
public int WisModifier => Modifier(Wis);
|
||||
/// <summary> 魅力调整值(charisma) </summary>
|
||||
public int ChaModifier => Modifier(Cha);
|
||||
|
||||
/// <summary> 更新角色状态 </summary>
|
||||
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})");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3ae234ab6cd19bf46983ee5f38afd957
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,73 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 职业 - 数据
|
||||
/// </summary>
|
||||
public class DataProfession : DataAttribute {
|
||||
/// <summary> 职业名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 职业等级 </summary>
|
||||
public int level = 0;
|
||||
/// <summary> 生命骰子 </summary>
|
||||
public int hitDice = 0;
|
||||
/// <summary> 累计生命点 </summary>
|
||||
public List<int> hitPoints = new List<int>();
|
||||
|
||||
/// <summary> 升级:骰生命骰子+体质调整值 </summary>
|
||||
public void Upgrade(int modifier) {
|
||||
level++;
|
||||
int hitPoint = Dice.Roll(hitDice) + modifier;
|
||||
hitPoints.Add(hitPoint);
|
||||
}
|
||||
/// <summary> 生命点:每级生命点总和 </summary>
|
||||
public int HitPoint() {
|
||||
return hitPoints.Sum();
|
||||
}
|
||||
|
||||
/// <summary> 无职业 </summary>
|
||||
public static DataProfession None() {
|
||||
return new DataProfession() { name = "无" };
|
||||
}
|
||||
/// <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 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> 牧师职业 </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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9fd9942ce333fa94aa2297f3569a4939
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,24 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 种族 - 数据
|
||||
/// </summary>
|
||||
public class DataRace : DataAttribute {
|
||||
/// <summary> 种族名称 </summary>
|
||||
public string name;
|
||||
/// <summary> 基础生命点 </summary>
|
||||
public int hitPoint = 10;
|
||||
|
||||
/// <summary> 生命点:每级生命点总和 </summary>
|
||||
public int HitPoint() {
|
||||
return hitPoint;
|
||||
}
|
||||
|
||||
/// <summary> 无种族 </summary>
|
||||
public static DataRace None() {
|
||||
// 初始生命值10点
|
||||
return new DataRace() { name = "无" };
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e444293bdefc67346a3d80901305e4c7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user