using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Constant; namespace Milimoe.FunGame.Core.Model { /// /// 游戏平衡常数 /// public class EquilibriumConstant { /// /// 游戏货币名称 /// public string InGameCurrency { get; set; } = "金币"; /// /// 游戏材料名称(第二货币) /// public string InGameMaterial { get; set; } = "材料"; /// /// 游戏时间名称(如技能冷却、硬直) /// public string InGameTime { get; set; } = "时间"; /// /// 晋升点数上限 /// public Dictionary PromotionsUpperLimit { get; set; } = new() { { "X", 999 }, { "S", 998 }, { "A+", 850 }, { "A", 700 }, { "B", 550 }, { "C", 400 }, { "D", 300 }, { "E", 200 }, }; /// /// 使用的魔法类型 /// public HashSet UseMagicType { get; set; } = [ MagicType.None, MagicType.Starmark, MagicType.PurityNatural, MagicType.PurityContemporary, MagicType.Element, MagicType.Bright, MagicType.Shadow, MagicType.Aster, MagicType.SpatioTemporal ]; /// /// 初始生命值 /// public double InitialHP { get; set; } = 60; /// /// 初始魔法值 /// public double InitialMP { get; set; } = 10; /// /// 角色最高等级 /// public int MaxLevel { get; set; } = 60; /// /// 经验值上限 /// public Dictionary EXPUpperLimit { get; set; } = new() { { 1, 1000 }, { 2, 1000 }, { 3, 1000 }, { 4, 1000 }, { 5, 1000 }, { 6, 1000 }, { 7, 1000 }, { 8, 1000 }, { 9, 1000 }, { 10, 1500 }, { 11, 1500 }, { 12, 1500 }, { 13, 1500 }, { 14, 1500 }, { 15, 1500 }, { 16, 1500 }, { 17, 1500 }, { 18, 1500 }, { 19, 1500 }, { 20, 2000 }, { 21, 2000 }, { 22, 2000 }, { 23, 2000 }, { 24, 2000 }, { 25, 2000 }, { 26, 2000 }, { 27, 2000 }, { 28, 2000 }, { 29, 2000 }, { 30, 3000 }, { 31, 3000 }, { 32, 3000 }, { 33, 3000 }, { 34, 3000 }, { 35, 3000 }, { 36, 3000 }, { 37, 3000 }, { 38, 3000 }, { 39, 3000 }, { 40, 4000 }, { 41, 4000 }, { 42, 4000 }, { 43, 4000 }, { 44, 4000 }, { 45, 4000 }, { 46, 4000 }, { 47, 4000 }, { 48, 4000 }, { 49, 4000 }, { 50, 5000 }, { 51, 5000 }, { 52, 5000 }, { 53, 5000 }, { 54, 5000 }, { 55, 5000 }, { 56, 5000 }, { 57, 5000 }, { 58, 5000 }, { 59, 5000 }, { 60, 9999999999999 } }; /// /// 使用等级突破机制 /// public bool UseLevelBreak { get; set; } = true; /// /// 使用等级突破机制后,角色处于这些等级时需要突破才能继续升级 /// public HashSet LevelBreakList { get; set; } = [10, 20, 30, 40, 50, 60]; /// /// 魔法最高等级 /// public int MaxMagicLevel { get; set; } = 8; /// /// 战技最高等级 /// public int MaxSkillLevel { get; set; } = 6; /// /// 爆发技最高等级 /// public int MaxSuperSkillLevel { get; set; } = 6; /// /// 被动最高等级 /// public int MaxPassiveSkillLevel { get; set; } = 6; /// /// 普通攻击最高等级 /// public int MaxNormalAttackLevel { get; set; } = 8; /// /// 最大能量值 /// public double MaxEP { get; set; } = 200; /// /// 初始攻击力 /// public double InitialATK { get; set; } = 15; /// /// 初始物理护甲 /// public double InitialDEF { get; set; } = 5; /// /// 初始力量 /// public double InitialSTR { get; set; } = 0; /// /// 初始敏捷 /// public double InitialAGI { get; set; } = 0; /// /// 初始智力 /// public double InitialINT { get; set; } = 0; /// /// 力量成长 /// public double STRGrowth { get; set; } = 0; /// /// 敏捷成长 /// public double AGIGrowth { get; set; } = 0; /// /// 智力成长 /// public double INTGrowth { get; set; } = 0; /// /// 初始暴击率 /// public double CritRate { get; set; } = 0.05; /// /// 初始暴击伤害 /// public double CritDMG { get; set; } = 1.25; /// /// 初始闪避率 /// public double EvadeRate { get; set; } = 0.05; /// /// 每级增加基础生命值 /// public double LevelToHPFactor { get; set; } = 17; /// /// 生命值增长因子 /// public double HPGrowthFactor { get; set; } = 0.68; /// /// 每级增加基础魔法值 /// public double LevelToMPFactor { get; set; } = 1.5; /// /// 魔法值增长因子 /// public double MPGrowthFactor { get; set; } = 0.14; /// /// 每级增加基础攻击力 /// public double LevelToATKFactor { get; set; } = 0.95; /// /// 攻击力增长因子 /// public double ATKGrowthFactor { get; set; } = 0.045; /// /// 物理伤害减免因子 /// public double DEFReductionFactor { get; set; } = 240; /// /// 行动速度上限 /// public double SPDUpperLimit { get; set; } = 1500; /// /// 每 1 点力量增加生命值 /// public double STRtoHPFactor { get; set; } = 9; /// /// 每 1 点力量增加生命回复力 /// public double STRtoHRFactor { get; set; } = 0.1; /// /// 每 1 点力量增加物理护甲 /// public double STRtoDEFFactor { get; set; } = 0.75; /// /// 每 1 点力量增加暴击伤害 /// public double STRtoCritDMGMultiplier { get; set; } = 0.00575; /// /// 每 1 点智力增加魔法值 /// public double INTtoMPFactor { get; set; } = 8; /// /// 每 1 点智力增加冷却缩减 /// public double INTtoCDRMultiplier { get; set; } = 0.0025; /// /// 每 1 点智力增加魔法回复力 /// public double INTtoMRFactor { get; set; } = 0.04; /// /// 每 1 点智力减少魔法消耗 /// public double INTtoCastMPReduce { get; set; } = 0.00125; /// /// 每 1 点智力减少能量消耗 /// public double INTtoCastEPReduce { get; set; } = 0.00075; /// /// 每 1 点智力增加加速系数 /// public double INTtoAccelerationCoefficientMultiplier { get; set; } = 0.00125; /// /// 每 1 点敏捷增加行动速度 /// public double AGItoSPDMultiplier { get; set; } = 0.65; /// /// 每 1 点敏捷增加暴击率 /// public double AGItoCritRateMultiplier { get; set; } = 0.0025; /// /// 每 1 点敏捷增加闪避率 /// public double AGItoEvadeRateMultiplier { get; set; } = 0.00175; /// /// 造成伤害获得能量值因子 /// public double DamageGetEPFactor { get; set; } = 0.03; /// /// 造成伤害获得能量值上限 /// public double DamageGetEPMax { get; set; } = 30; /// /// 受到伤害获得能量值因子 /// public double TakenDamageGetEPFactor { get; set; } = 0.015; /// /// 受到伤害获得能量值上限 /// public double TakenDamageGetEPMax { get; set; } = 15; /// /// 单手剑的基础伤害倍率 /// public double OneHandedSwordBaseMultiplier { get; set; } = 1.0; /// /// 单手剑的基础伤害倍率成长 /// public double OneHandedSwordLevelBonus { get; set; } = 0.05; /// /// 双手剑的基础伤害倍率 /// public double TwoHandedSwordBaseMultiplier { get; set; } = 1.2; /// /// 双手剑的基础伤害倍率成长 /// public double TwoHandedSwordLevelBonus { get; set; } = 0.06; /// /// 弓的基础伤害倍率 /// public double BowBaseMultiplier { get; set; } = 0.9; /// /// 弓的基础伤害倍率成长 /// public double BowLevelBonus { get; set; } = 0.04; /// /// 手枪的基础伤害倍率 /// public double PistolBaseMultiplier { get; set; } = 0.9; /// /// 手枪的基础伤害倍率成长 /// public double PistolLevelBonus { get; set; } = 0.03; /// /// 步枪的基础伤害倍率 /// public double RifleBaseMultiplier { get; set; } = 1.1; /// /// 步枪的基础伤害倍率成长 /// public double RifleLevelBonus { get; set; } = 0.05; /// /// 双持短刀的基础伤害倍率 /// public double DualDaggersBaseMultiplier { get; set; } = 0.85; /// /// 双持短刀的基础伤害倍率成长 /// public double DualDaggersLevelBonus { get; set; } = 0.04; /// /// 法器的基础伤害倍率 /// public double TalismanBaseMultiplier { get; set; } = 1.0; /// /// 法器的基础伤害倍率成长 /// public double TalismanLevelBonus { get; set; } = 0.05; /// /// 法杖的基础伤害倍率 /// public double StaffBaseMultiplier { get; set; } = 1.15; /// /// 法杖的基础伤害倍率成长 /// public double StaffLevelBonus { get; set; } = 0.04; /// /// 长柄武器的基础伤害倍率 /// public double PolearmBaseMultiplier { get; set; } = 0.95; /// /// 长柄武器的基础伤害倍率成长 /// public double PolearmLevelBonus { get; set; } = 0.05; /// /// 拳套的基础伤害倍率 /// public double GauntletBaseMultiplier { get; set; } = 1.05; /// /// 拳套的基础伤害倍率成长 /// public double GauntletLevelBonus { get; set; } = 0.05; /// /// 暗器的基础伤害倍率 /// public double HiddenWeaponBaseMultiplier { get; set; } = 0.9; /// /// 暗器的基础伤害倍率成长 /// public double HiddenWeaponLevelBonus { get; set; } = 0.05; /// /// 单手剑的硬直时间 /// public double OneHandedSwordHardness { get; set; } = 8; /// /// 双手剑的硬直时间 /// public double TwoHandedSwordHardness { get; set; } = 12; /// /// 弓的硬直时间 /// public double BowHardness { get; set; } = 9; /// /// 手枪的硬直时间 /// public double PistolHardness { get; set; } = 6; /// /// 步枪的硬直时间 /// public double RifleHardness { get; set; } = 11; /// /// 双持短刀的硬直时间 /// public double DualDaggersHardness { get; set; } = 7; /// /// 法器的硬直时间 /// public double TalismanHardness { get; set; } = 10; /// /// 法杖的硬直时间 /// public double StaffHardness { get; set; } = 12; /// /// 长柄武器的硬直时间 /// public double PolearmHardness { get; set; } = 10; /// /// 拳套的硬直时间 /// public double GauntletHardness { get; set; } = 8; /// /// 暗器的硬直时间 /// public double HiddenWeaponHardness { get; set; } = 7; /// /// 单手剑的攻击距离 /// public int OneHandedSwordAttackRange { get; set; } = 1; /// /// 双手剑的攻击距离 /// public int TwoHandedSwordAttackRange { get; set; } = 2; /// /// 弓的攻击距离 /// public int BowAttackRange { get; set; } = 4; /// /// 手枪的攻击距离 /// public int PistolAttackRange { get; set; } = 3; /// /// 步枪的攻击距离 /// public int RifleAttackRange { get; set; } = 5; /// /// 双持短刀的攻击距离 /// public int DualDaggersAttackRange { get; set; } = 1; /// /// 法器的攻击距离 /// public int TalismanAttackRange { get; set; } = 5; /// /// 法杖的攻击距离 /// public int StaffAttackRange { get; set; } = 3; /// /// 长柄武器的攻击距离 /// public int PolearmAttackRange { get; set; } = 2; /// /// 拳套的攻击距离 /// public int GauntletAttackRange { get; set; } = 1; /// /// 暗器的攻击距离 /// public int HiddenWeaponAttackRange { get; set; } = 4; /// /// 核心角色的移动距离 /// public int RoleMOV_Core { get; set; } = 3; /// /// 先锋角色的移动距离 /// public int RoleMOV_Vanguard { get; set; } = 6; /// /// 近卫角色的移动距离 /// public int RoleMOV_Guardian { get; set; } = 5; /// /// 支援角色的移动距离 /// public int RoleMOV_Support { get; set; } = 4; /// /// 治疗角色的移动距离 /// public int RoleMOV_Medic { get; set; } = 3; /// /// 应用此游戏平衡常数给实体 /// /// public void SetEquilibriumConstant(params BaseEntity[] entities) { foreach (BaseEntity entity in entities) { entity.GameplayEquilibriumConstant = this; } } } }