1
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备 - 字典
|
||||
/// </summary>
|
||||
public static class ArmorDictionary {
|
||||
/// <summary> 武器 </summary>
|
||||
public static DataArmor Armor(string name, ArmorType armorType) {
|
||||
DataArmor armor = new DataArmor();
|
||||
armor.name = name;
|
||||
armor.itemType = ItemType.装备;
|
||||
armor.wearType = WearType.护甲;
|
||||
armor.armorType = armorType;
|
||||
return armor;
|
||||
}
|
||||
/// <summary> 法师袍 ac10 </summary>
|
||||
public static DataArmor Armor101() {
|
||||
DataArmor armor = Armor("法师袍", ArmorType.布甲);
|
||||
armor.additions.Add(new DataAddition { armorClass = 10 });
|
||||
return armor;
|
||||
}
|
||||
/// <summary> 皮甲 ac11 </summary>
|
||||
public static DataArmor Armor201() {
|
||||
DataArmor armor = Armor("皮甲", ArmorType.轻甲);
|
||||
armor.additions.Add(new DataAddition { armorClass = 11 });
|
||||
return armor;
|
||||
}
|
||||
/// <summary> 链甲 ac15 </summary>
|
||||
public static DataArmor Armor301() {
|
||||
DataArmor armor = Armor("链甲", ArmorType.中甲);
|
||||
armor.additions.Add(new DataAddition { armorClass = 15 });
|
||||
return armor;
|
||||
}
|
||||
/// <summary> 板甲 ac18 </summary>
|
||||
public static DataArmor Armor401() {
|
||||
DataArmor armor = Armor("板甲", ArmorType.重甲);
|
||||
armor.additions.Add(new DataAddition { armorClass = 18 });
|
||||
return armor;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f13627182bd77434991f32751b8c15f7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,106 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 装备栏 - 工具
|
||||
/// </summary>
|
||||
public static class EquipmentTool {
|
||||
|
||||
#region 附加
|
||||
/// <summary> 添加属性 </summary>
|
||||
public static void Add(this DataAddition a, DataAddition b) {
|
||||
a.armorClass += b.armorClass;
|
||||
a.damageDices.AddRange(b.damageDices);
|
||||
}
|
||||
/// <summary> 合并属性 </summary>
|
||||
public static DataAddition Merge(List<DataAddition> additions) {
|
||||
DataAddition addition = new DataAddition();
|
||||
additions.ForEach(obj => addition.Add(obj));
|
||||
return addition;
|
||||
}
|
||||
/// <summary> 更新附加值 </summary>
|
||||
public static void UpdateAddition(this DataEquipment equipment) {
|
||||
DataAddition addition = new DataAddition();
|
||||
if (equipment.weapon1 != null) { addition.Add(equipment.weapon1.Addition); }
|
||||
if (equipment.weapon2 != null) { addition.Add(equipment.weapon2.Addition); }
|
||||
if (equipment.armor != null) { addition.Add(equipment.armor.Addition); }
|
||||
if (equipment.helmets != null) { addition.Add(equipment.helmets.Addition); }
|
||||
if (equipment.gloves != null) { addition.Add(equipment.gloves.Addition); }
|
||||
if (equipment.shoes != null) { addition.Add(equipment.shoes.Addition); }
|
||||
equipment.addition = addition;
|
||||
}
|
||||
/// <summary> 获取护甲等级 </summary>
|
||||
public static int ArmorClass(this DataEquipment equipment, int modifier) {
|
||||
int addValue = equipment.addition.armorClass;
|
||||
// 无甲 基础AC = 10 + 调整值 + 附加值
|
||||
if (equipment.armor == null) { return 10 + modifier + addValue; }
|
||||
// 布甲/轻甲 调整值全额生效
|
||||
if (equipment.armor.armorType == ArmorType.布甲) { }
|
||||
// 调整值全额生效
|
||||
if (equipment.armor.armorType == ArmorType.轻甲) { }
|
||||
// 中甲 调整值上限=2
|
||||
if (equipment.armor.armorType == ArmorType.中甲) { modifier = Mathf.Min(modifier, 2); }
|
||||
// 重甲 调整值无效
|
||||
if (equipment.armor.armorType == ArmorType.重甲) { modifier = 0; }
|
||||
// 调整值 + 附加值
|
||||
return modifier + addValue;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 穿戴
|
||||
/// <summary> 穿戴装备 </summary>
|
||||
public static bool Wear(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = wear; bool isWear = false;
|
||||
if (wear.wearType == WearType.武器) { isWear = WearWeapon(equipment, wear, out old); }
|
||||
if (wear.wearType == WearType.护甲) { isWear = WearArmor(equipment, wear, out old); }
|
||||
if (wear.wearType == WearType.头盔) { isWear = WearHelmets(equipment, wear, out old); }
|
||||
if (wear.wearType == WearType.手套) { isWear = WearGloves(equipment, wear, out old); }
|
||||
if (wear.wearType == WearType.鞋子) { isWear = WearShoes(equipment, wear, out old); }
|
||||
equipment.UpdateAddition();
|
||||
return isWear;
|
||||
}
|
||||
/// <summary> 穿戴武器 </summary>
|
||||
public static bool WearWeapon(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = null;
|
||||
// 校验是否为武器类型
|
||||
if (!(wear is DataWeapon newWeapon)) { return false; }
|
||||
// 情况1:主手为空,直接装备主手
|
||||
if (equipment.weapon1 == null) { equipment.weapon1 = newWeapon; return true; }
|
||||
// 情况2:副手为空,直接装备副手
|
||||
if (equipment.weapon2 == null) { equipment.weapon2 = newWeapon; return true; }
|
||||
// 情况3:主手副手都不为空,默认替换主手
|
||||
old = equipment.weapon1;
|
||||
equipment.weapon1 = newWeapon;
|
||||
equipment.UpdateAddition();
|
||||
return true;
|
||||
}
|
||||
/// <summary> 穿戴护甲 </summary>
|
||||
public static bool WearArmor(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = null;
|
||||
// 校验是否为护甲类型
|
||||
if (!(wear is DataArmor newArmor)) { return false; }
|
||||
old = equipment.armor;
|
||||
equipment.armor = newArmor;
|
||||
return true;
|
||||
}
|
||||
/// <summary> 穿戴头盔 </summary>
|
||||
public static bool WearHelmets(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = equipment.helmets;
|
||||
equipment.helmets = wear;
|
||||
return true;
|
||||
}
|
||||
/// <summary> 穿戴手套 </summary>
|
||||
public static bool WearGloves(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = equipment.gloves;
|
||||
equipment.gloves = wear;
|
||||
return true;
|
||||
}
|
||||
/// <summary> 穿戴鞋子 </summary>
|
||||
public static bool WearShoes(this DataEquipment equipment, DataWear wear, out DataWear old) {
|
||||
old = equipment.shoes;
|
||||
equipment.shoes = wear;
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1fd627b70f23dd44493bf8fb1e577370
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,49 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 武器 - 字典
|
||||
/// </summary>
|
||||
public static class WeaponDictionary {
|
||||
/// <summary> 武器 </summary>
|
||||
public static DataWeapon Weapon(string name, WeaponType weaponType) {
|
||||
DataWeapon weapon = new DataWeapon();
|
||||
weapon.name = name;
|
||||
weapon.itemType = ItemType.装备;
|
||||
weapon.wearType = WearType.武器;
|
||||
weapon.weaponType = weaponType;
|
||||
return weapon;
|
||||
}
|
||||
/// <summary> 伤害骰子 </summary>
|
||||
public static DataAddition DamageDice(int value, DamageType type) {
|
||||
DataDamageDice dice = new DataDamageDice(value, type);
|
||||
DataAddition addition = new DataAddition();
|
||||
addition.damageDices.Add(dice);
|
||||
return addition;
|
||||
}
|
||||
/// <summary> 匕首 1d4 </summary>
|
||||
public static DataWeapon Weapon101() {
|
||||
DataWeapon weapon = Weapon("匕首", WeaponType.轻型武器);
|
||||
weapon.additions.Add(DamageDice(4, DamageType.穿刺));
|
||||
return weapon;
|
||||
}
|
||||
/// <summary> 木棒 1d6 </summary>
|
||||
public static DataWeapon Weapon201() {
|
||||
DataWeapon weapon = Weapon("木棒", WeaponType.中型武器);
|
||||
weapon.additions.Add(DamageDice(6, DamageType.挥砍));
|
||||
return weapon;
|
||||
}
|
||||
/// <summary> 巨棒 1d8 </summary>
|
||||
public static DataWeapon Weapon301() {
|
||||
DataWeapon weapon = Weapon("巨棒", WeaponType.重型武器);
|
||||
weapon.additions.Add(DamageDice(8, DamageType.钝击));
|
||||
return weapon;
|
||||
}
|
||||
/// <summary> 木盾 ac1 </summary>
|
||||
public static DataWeapon Weapon401() {
|
||||
DataWeapon weapon = Weapon("木盾", WeaponType.盾牌);
|
||||
weapon.additions.Add(new DataAddition { armorClass = 1 });
|
||||
return weapon;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 32522aef438403f4d9ed01fe6650243b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user