using Milimoe.FunGame.Core.Entity;
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 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 void SetEquilibriumConstant(params BaseEntity[] entities)
{
foreach (BaseEntity entity in entities)
{
entity.GameplayEquilibriumConstant = this;
}
}
}
}