| | |
| | | using System; |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using UnityEngine; |
| | | using LitJson; |
| | | using Spine; |
| | | |
| | | |
| | | //!单英雄查看战力 只算自己的上阵属性 不算羁绊 总上阵属性 光环 |
| | | // 战力的计算方式 |
| | |
| | | // 所有武将战力加起来 + 技能战力汇总(公式)就是整个号的战力 |
| | | public class FightPowerManager : Singleton<FightPowerManager> |
| | | { |
| | | public string propertyFormula; |
| | | public string fightPropertyFormula; |
| | | public string fightPowerFormula; |
| | | public string skillFightPowerFormula; |
| | | // 属性变量常量 |
| | | private const string LV_VALUE = "lvValue"; |
| | | private const string EQUIP_VALUE = "equipValue"; |
| | | private const string BOOK_VALUE = "bookValue"; |
| | | private const string BOOK_PER = "bookPer"; |
| | | private const string REALM_VALUE = "realmValue"; |
| | | private const string REALM_PER = "realmPer"; |
| | | private const string GUBAO_VALUE = "gubaoValue"; |
| | | private const string GUBAO_PER = "gubaoPer"; |
| | | private const string HJG_VALUE = "hjgValue"; |
| | | private const string HJG_PER = "hjgPer"; |
| | | private const string HORSE_VALUE = "horseValue"; |
| | | private const string HORSE_PER = "horsePer"; |
| | | private const string BEAUTY_VALUE = "beautyValue"; |
| | | private const string BEAUTY_PER = "beautyPer"; |
| | | private const string LINEUP_INIT_ADD_PER = "lineupInitAddPer"; |
| | | private const string LINEUP_LV_ADD_PER = "lineupLVAddPer"; |
| | | private const string LINEUP_BREAK_LV_ADD_PER = "lineupBreakLVAddPer"; |
| | | private const string LINEUP_STAR_ADD_PER = "lineupStarAddPer"; |
| | | private const string LINEUP_HALO_VALUE = "lineupHaloValue"; |
| | | private const string LINEUP_HALO_PER = "lineupHaloPer"; |
| | | private const string INHERIT_PER = "inheritPer"; |
| | | private const string HERO_SELF_VALUE = "heroSelfValue"; |
| | | private const string HERO_SELF_PER = "heroSelfPer"; |
| | | private const string STAR_TALENT_VALUE = "starTalentValue"; |
| | | private const string STAR_TALENT_PER = "starTalentPer"; |
| | | private const string BREAK_LV_VALUE = "breakLVValue"; |
| | | private const string BREAK_LV_PER = "breakLVPer"; |
| | | private const string AWAKE_TALENT_VALUE = "awakeTalentValue"; |
| | | private const string AWAKE_TALENT_PER = "awakeTalentPer"; |
| | | private const string FETTER_VALUE = "fetterValue"; |
| | | private const string FETTER_PER = "fetterPer"; |
| | | private const string HERO_LV_VALUE = "heroLVValue"; |
| | | private const string HERO_LV_PER = "heroLVPer"; |
| | | |
| | | // 战力变量常量 |
| | | private const string ATK_RATIO = "AtkRatio"; |
| | | private const string MAX_HP_RATIO = "MaxHPRatio"; |
| | | private const string DEF_RATIO = "DefRatio"; |
| | | private const string STUN_RATE_RATIO = "StunRateRatio"; |
| | | private const string SUPER_HIT_RATE_RATIO = "SuperHitRateRatio"; |
| | | private const string COMBO_RATE_RATIO = "ComboRateRatio"; |
| | | private const string MISS_RATE_RATIO = "MissRateRatio"; |
| | | private const string PARRY_RATE_RATIO = "ParryRateRatio"; |
| | | private const string SUCK_HP_PER_RATIO = "SuckHPPerRatio"; |
| | | private const string STUN_RATE_DEF_RATIO = "StunRateDefRatio"; |
| | | private const string SUPER_HIT_RATE_DEF_RATIO = "SuperHitRateDefRatio"; |
| | | private const string COMBO_RATE_DEF_RATIO = "ComboRateDefRatio"; |
| | | private const string MISS_RATE_DEF_RATIO = "MissRateDefRatio"; |
| | | private const string PARRY_RATE_DEF_RATIO = "ParryRateDefRatio"; |
| | | private const string SUCK_HP_PER_DEF_RATIO = "SuckHPPerDefRatio"; |
| | | private const string NORMAL_SKILL_PER_RATIO = "NormalSkillPerRatio"; |
| | | private const string NORMAL_SKILL_PER_DEF_RATIO = "NormalSkillPerDefRatio"; |
| | | private const string ANGER_SKILL_PER_RATIO = "AngerSkillPerRatio"; |
| | | private const string ANGER_SKILL_PER_DEF_RATIO = "AngerSkillPerDefRatio"; |
| | | private const string SUPER_DAM_PER_RATIO = "SuperDamPerRatio"; |
| | | private const string SUPER_DAM_PER_DEF_RATIO = "SuperDamPerDefRatio"; |
| | | private const string SHIELD_PER_RATIO = "ShieldPerRatio"; |
| | | private const string SHIELD_PER_DEF_RATIO = "ShieldPerDefRatio"; |
| | | private const string DOT_PER_RATIO = "DOTPerRatio"; |
| | | private const string DOT_PER_DEF_RATIO = "DOTPerDefRatio"; |
| | | private const string WEI_FINAL_DAM_PER_RATIO = "WeiFinalDamPerRatio"; |
| | | private const string WEI_FINAL_DAM_PER_DEF_RATIO = "WeiFinalDamPerDefRatio"; |
| | | private const string SHU_FINAL_DAM_PER_RATIO = "ShuFinalDamPerRatio"; |
| | | private const string SHU_FINAL_DAM_PER_DEF_RATIO = "ShuFinalDamPerDefRatio"; |
| | | private const string WU_FINAL_DAM_PER_RATIO = "WuFinalDamPerRatio"; |
| | | private const string WU_FINAL_DAM_PER_DEF_RATIO = "WuFinalDamPerDefRatio"; |
| | | private const string QUN_FINAL_DAM_PER_RATIO = "QunFinalDamPerRatio"; |
| | | private const string QUN_FINAL_DAM_PER_DEF_RATIO = "QunFinalDamPerDefRatio"; |
| | | private const string FINAL_DAM_PER_RATIO = "FinalDamPerRatio"; |
| | | private const string FINAL_DAM_PER_DEF_RATIO = "FinalDamPerDefRatio"; |
| | | private const string PHY_DAM_PER_RATIO = "PhyDamPerRatio"; |
| | | private const string PHY_DAM_PER_DEF_RATIO = "PhyDamPerDefRatio"; |
| | | private const string MAG_DAM_PER_RATIO = "MagDamPerRatio"; |
| | | private const string MAG_DAM_PER_DEF_RATIO = "MagDamPerDefRatio"; |
| | | private const string CURE_PER_RATIO = "CurePerRatio"; |
| | | private const string CURE_PER_DEF_RATIO = "CurePerDefRatio"; |
| | | private const string PVP_DAM_PER_RATIO = "PVPDamPerRatio"; |
| | | private const string PVP_DAM_PER_DEF_RATIO = "PVPDamPerDefRatio"; |
| | | private const string PLAYER_LV = "PlayerLV"; |
| | | private const string OFFICIAL_LV = "OfficialLV"; |
| | | private const string SKILL_POWER = "SkillPower"; |
| | | |
| | | |
| | | |
| | | Dictionary<string, double> propertyVariables = new Dictionary<string, double>(); |
| | | Dictionary<string, double> fightPowerVariables = new Dictionary<string, double>(); //总战力中的单武将战力 |
| | | |
| | | |
| | | List<PlayerPropertyConfig> pConfig = new List<PlayerPropertyConfig>(); |
| | | public FightPowerManager() |
| | | { |
| | | // 数值1:基础三维属性计算公式 |
| | | // 数值2:战斗属性/战斗抗性/特殊属性计算公式 |
| | | // 数值3:属性战力计算公式,计算参数详见 S.属性条目配置 |
| | | var config = FuncConfigConfig.Get("HeroAttrFormula"); |
| | | propertyFormula = config.Numerical1; |
| | | fightPropertyFormula = config.Numerical2; |
| | | fightPowerFormula = config.Numerical3; |
| | | skillFightPowerFormula = config.Numerical4; |
| | | pConfig = PlayerPropertyConfig.GetValues(); |
| | | JaceCalculator.Init(); |
| | | } |
| | | |
| | |
| | | |
| | | dropIndexCalc = dropindex; |
| | | #if UNITY_EDITOR |
| | | Debug.Log("战力:初始化参数 dropIndex:" + dropIndexCalc + " 阵型:" + teamTypeCalc + " ispreview:" + ispreview); |
| | | // Debug.Log("战力:初始化参数 dropIndex:" + dropIndexCalc + " 阵型:" + teamTypeCalc + " ispreview:" + ispreview); |
| | | #endif |
| | | } |
| | | #endregion |
| | |
| | | lvAttrs[attrType] = GetPlayerLVValue(playerLVConfig, attrType); |
| | | } |
| | | #if UNITY_EDITOR |
| | | Debug.Log("战力:等级属性 " + JsonMapper.ToJson(lvAttrs)); |
| | | // Debug.Log("战力:等级属性 " + JsonMapper.ToJson(lvAttrs)); |
| | | #endif |
| | | |
| | | } |
| | |
| | | officialAttrs[id] = config.AddAttrNum[i]; |
| | | } |
| | | #if UNITY_EDITOR |
| | | Debug.Log("战力:官职属性 " + JsonMapper.ToJson(officialAttrs)); |
| | | // Debug.Log("战力:官职属性 " + JsonMapper.ToJson(officialAttrs)); |
| | | #endif |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | #if UNITY_EDITOR |
| | | Debug.Log("战力:装备属性 " + JsonMapper.ToJson(equipAttrs)); |
| | | // Debug.Log("战力:装备属性 " + JsonMapper.ToJson(equipAttrs)); |
| | | #endif |
| | | } |
| | | |
| | |
| | | lineUpPerDict = HeroUIManager.Instance.GetLineupPer(teamTypeCalc, isPreviewTeamPower); |
| | | |
| | | #if UNITY_EDITOR |
| | | Debug.Log("战力:上阵属性 " + JsonMapper.ToJson(lineUpPerDict)); |
| | | // Debug.Log("战力:上阵属性 " + JsonMapper.ToJson(lineUpPerDict)); |
| | | #endif |
| | | // 阵容:国家(光环)属性 |
| | | countryAttrs = HeroUIManager.Instance.GetCountryAttrs(teamTypeCalc, isPreviewTeamPower); |
| | | #if UNITY_EDITOR |
| | | Debug.Log("战力:国家(光环)属性 " + JsonMapper.ToJson(countryAttrs)); |
| | | // Debug.Log("战力:国家(光环)属性 " + JsonMapper.ToJson(countryAttrs)); |
| | | #endif |
| | | } |
| | | |
| | |
| | | |
| | | #region 属性公式 |
| | | // 单基础属性计算 |
| | | public double GetPropertyVaule(int attrType, HeroInfo hero, string formula) |
| | | public double GetPropertyVaule(int attrType, HeroInfo hero, int type) |
| | | { |
| | | propertyVariables.Clear(); |
| | | propertyVariables["lvValue"] = lvAttrs.ContainsKey(attrType) ? lvAttrs[attrType] : 0; |
| | | propertyVariables["equipValue"] = equipAttrs.ContainsKey(attrType) ? equipAttrs[attrType] : 0; |
| | | propertyVariables["bookValue"] = 0; |
| | | propertyVariables["bookPer"] = GetBookPer(attrType) / 10000.0f; |
| | | propertyVariables["realmValue"] = officialAttrs.ContainsKey(attrType) ? officialAttrs[attrType] : 0; |
| | | propertyVariables["realmPer"] = GetOfficialPer(attrType) / 10000.0f; |
| | | propertyVariables["gubaoValue"] = 0; |
| | | propertyVariables["gubaoPer"] = 0; |
| | | propertyVariables["hjgValue"] = 0; |
| | | propertyVariables["hjgPer"] = 0; |
| | | propertyVariables["horseValue"] = 0; |
| | | propertyVariables["horsePer"] = 0; |
| | | // propertyVariables.Clear(); |
| | | |
| | | propertyVariables[LV_VALUE] = lvAttrs.ContainsKey(attrType) ? lvAttrs[attrType] : 0; |
| | | propertyVariables[EQUIP_VALUE] = equipAttrs.ContainsKey(attrType) ? equipAttrs[attrType] : 0; |
| | | propertyVariables[BOOK_VALUE] = 0; |
| | | propertyVariables[REALM_VALUE] = officialAttrs.ContainsKey(attrType) ? officialAttrs[attrType] : 0; |
| | | propertyVariables[REALM_PER] = GetOfficialPer(attrType) / 10000.0f; |
| | | propertyVariables[BOOK_PER] = GetBookPer(attrType) / 10000.0f; |
| | | propertyVariables[GUBAO_VALUE] = 0; |
| | | propertyVariables[GUBAO_PER] = 0; |
| | | propertyVariables[HJG_VALUE] = PhantasmPavilionManager.Instance.GetAttrValue(attrType); |
| | | propertyVariables[HJG_PER] = PhantasmPavilionManager.Instance.GetAttrPer(attrType) / 10000.0f; |
| | | propertyVariables[HORSE_VALUE] = HorseManager.Instance.GetAttrValue(attrType); |
| | | propertyVariables[HORSE_PER] = HorseManager.Instance.GetAttrPer(attrType) / 10000.0f; |
| | | propertyVariables[BEAUTY_VALUE] = 0; |
| | | propertyVariables[BEAUTY_PER] = 0; |
| | | |
| | | //!!!单武将战力预览的话需要排除队伍影响战力,只算武将自身的上阵属性 |
| | | propertyVariables["lineupInitAddPer"] = GetLineUpPer(attrType, "lineupInitAddPer") / 10000.0f; |
| | | propertyVariables["lineupLVAddPer"] = GetLineUpPer(attrType, "lineupLVAddPer") / 10000.0f; |
| | | propertyVariables["lineupBreakLVAddPer"] = GetLineUpPer(attrType, "lineupBreakLVAddPer") / 10000.0f; |
| | | propertyVariables["lineupStarAddPer"] = GetLineUpPer(attrType, "lineupStarAddPer") / 10000.0f; |
| | | propertyVariables[LINEUP_INIT_ADD_PER] = GetLineUpPer(attrType, LINEUP_INIT_ADD_PER) / 10000.0f; |
| | | propertyVariables[LINEUP_LV_ADD_PER] = GetLineUpPer(attrType, LINEUP_LV_ADD_PER) / 10000.0f; |
| | | propertyVariables[LINEUP_BREAK_LV_ADD_PER] = GetLineUpPer(attrType, LINEUP_BREAK_LV_ADD_PER) / 10000.0f; |
| | | propertyVariables[LINEUP_STAR_ADD_PER] = GetLineUpPer(attrType, LINEUP_STAR_ADD_PER) / 10000.0f; |
| | | |
| | | //阵容光环 三围百分比加成 |
| | | propertyVariables["lineupHaloValue"] = countryAttrs.ContainsKey(attrType) ? countryAttrs[attrType] : 0; |
| | | propertyVariables["lineupHaloPer"] = GetCountryPer(attrType) / 10000.0f; |
| | | |
| | | propertyVariables[LINEUP_HALO_VALUE] = countryAttrs.ContainsKey(attrType) ? countryAttrs[attrType] : 0; |
| | | propertyVariables[LINEUP_HALO_PER] = GetCountryPer(attrType) / 10000.0f; |
| | | |
| | | //武将属性 |
| | | propertyVariables["inheritPer"] = hero.GetInheritAttrPer(attrType) / 10000.0f; |
| | | propertyVariables["heroSelfValue"] = hero.GetSelfAddValue(attrType); |
| | | propertyVariables["heroSelfPer"] = hero.GetSelfAddPer(attrType) / 10000.0f; |
| | | propertyVariables["starTalentValue"] = hero.GetTalentAttrValue(attrType); |
| | | propertyVariables["starTalentPer"] = hero.GetTalentAttrPer(attrType) / 10000.0f; |
| | | propertyVariables["breakLVValue"] = hero.GetBreakAttrValue(attrType); |
| | | propertyVariables["breakLVPer"] = hero.GetBreakAttrPer(attrType) / 10000.0f; |
| | | propertyVariables["awakeTalentValue"] = hero.GetAwakeAttrValue(attrType); |
| | | propertyVariables["awakeTalentPer"] = hero.GetAwakeAttrPer(attrType) / 10000.0f; |
| | | propertyVariables["fetterValue"] = hero.GetFetterAttrValue(attrType); |
| | | propertyVariables["fetterPer"] = hero.GetFetterAttrPer(attrType) / 10000.0f; |
| | | |
| | | propertyVariables[INHERIT_PER] = hero.GetInheritAttrPer(attrType) / 10000.0f; |
| | | propertyVariables[HERO_SELF_VALUE] = hero.GetSelfAddValue(attrType); |
| | | propertyVariables[HERO_SELF_PER] = hero.GetSelfAddPer(attrType) / 10000.0f; |
| | | propertyVariables[STAR_TALENT_VALUE] = hero.GetTalentAttrValue(attrType); |
| | | propertyVariables[STAR_TALENT_PER] = hero.GetTalentAttrPer(attrType) / 10000.0f; |
| | | propertyVariables[BREAK_LV_VALUE] = hero.GetBreakAttrValue(attrType); |
| | | propertyVariables[BREAK_LV_PER] = hero.GetBreakAttrPer(attrType) / 10000.0f; |
| | | propertyVariables[AWAKE_TALENT_VALUE] = hero.GetAwakeAttrValue(attrType); |
| | | propertyVariables[AWAKE_TALENT_PER] = hero.GetAwakeAttrPer(attrType) / 10000.0f; |
| | | propertyVariables[FETTER_VALUE] = hero.GetFetterAttrValue(attrType); |
| | | propertyVariables[FETTER_PER] = hero.GetFetterAttrPer(attrType) / 10000.0f; |
| | | propertyVariables[HERO_LV_VALUE] = hero.GetHeroLVValue(attrType); |
| | | propertyVariables[HERO_LV_PER] = hero.GetHeroLVPer(attrType) / 10000.0f; |
| | | #if UNITY_EDITOR |
| | | //排除值为0的属性输出 |
| | | var tmpPropertyVariables = propertyVariables.Where(x => x.Value > 0).ToDictionary(x => x.Key, x => x.Value); |
| | | if (!tmpPropertyVariables.IsNullOrEmpty()) |
| | | propertyStrForDebug += $"属性ID {attrType} - {JsonMapper.ToJson(tmpPropertyVariables)}"; |
| | | // var tmpPropertyVariables = propertyVariables.Where(x => x.Value > 0).ToDictionary(x => x.Key, x => x.Value); |
| | | // if (!tmpPropertyVariables.IsNullOrEmpty()) |
| | | // propertyStrForDebug += $"属性ID {attrType} - {JsonMapper.ToJson(tmpPropertyVariables)}"; |
| | | #endif |
| | | return JaceCalculator.Calculate(formula, propertyVariables); |
| | | if (type == 0) |
| | | return FightPowerFormula.GetBaseAttr(propertyVariables); |
| | | else |
| | | return FightPowerFormula.GetFightAttr(propertyVariables); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | int GetLineUpPer(int attrType, string key) |
| | |
| | | public long CalculatePower() |
| | | { |
| | | #if UNITY_EDITOR |
| | | Debug.Log("战力:开始计算"); |
| | | // Debug.Log("战力:开始计算"); |
| | | #endif |
| | | // --- 先计算所有功能的汇总属性 --- |
| | | RefreshLVAttrs(); |
| | | RefreshOfficialAttrs(); |
| | | RefrehEquipAttrs(); |
| | | RefreshTeamAttrs(); |
| | | |
| | | |
| | | // --- 算单武将功能属性战力 后相加--- |
| | | long fightPower = 0; |
| | |
| | | |
| | | } |
| | | |
| | | #if UNITY_EDITOR |
| | | Debug.Log("战力:计算完毕 " + fightPower); |
| | | #endif |
| | | // #if UNITY_EDITOR |
| | | // Debug.Log("战力:计算完毕 " + fightPower); |
| | | // #endif |
| | | return fightPower; |
| | | } |
| | | |
| | |
| | | #if UNITY_EDITOR |
| | | propertyStrForDebug = ""; |
| | | #endif |
| | | foreach (var config in PlayerPropertyConfig.GetValues()) |
| | | foreach (var config in pConfig) |
| | | { |
| | | if (config.showType < 1 || config.showType > 4) |
| | | { |
| | |
| | | } |
| | | if (config.showType == 1) |
| | | { |
| | | fightPowerVariables[config.Parameter] = Math.Round(GetPropertyVaule(config.ID, hero, propertyFormula), 3); |
| | | fightPowerVariables[config.Parameter] = Math.Round(GetPropertyVaule(config.ID, hero, 0), 3); |
| | | } |
| | | else |
| | | { |
| | | fightPowerVariables[config.Parameter] = Math.Round(GetPropertyVaule(config.ID, hero, fightPropertyFormula), 3); |
| | | fightPowerVariables[config.Parameter] = Math.Round(GetPropertyVaule(config.ID, hero, 1), 3); |
| | | } |
| | | } |
| | | |
| | | #if UNITY_EDITOR |
| | | Debug.Log($"战力:武将ID {hero.heroId} 属性信息 {propertyStrForDebug}"); |
| | | // Debug.Log($"战力:武将ID {hero.heroId} 属性信息 {propertyStrForDebug}"); |
| | | #endif |
| | | |
| | | //属性系数根据官职等级的加成 |
| | | var fightPowerRatioConfig = FightPowerRatioConfig.Get(PlayerDatas.Instance.baseData.realmLevel); |
| | | |
| | | fightPowerVariables["AtkRatio"] = fightPowerRatioConfig.AtkRatio; |
| | | fightPowerVariables["MaxHPRatio"] = fightPowerRatioConfig.MaxHPRatio; |
| | | fightPowerVariables["DefRatio"] = fightPowerRatioConfig.DefRatio; |
| | | fightPowerVariables["StunRateRatio"] = fightPowerRatioConfig.StunRateRatio; |
| | | fightPowerVariables["SuperHitRateRatio"] = fightPowerRatioConfig.SuperHitRateRatio; |
| | | fightPowerVariables["ComboRateRatio"] = fightPowerRatioConfig.ComboRateRatio; |
| | | fightPowerVariables["MissRateRatio"] = fightPowerRatioConfig.MissRateRatio; |
| | | fightPowerVariables["ParryRateRatio"] = fightPowerRatioConfig.ParryRateRatio; |
| | | fightPowerVariables["SuckHPPerRatio"] = fightPowerRatioConfig.SuckHPPerRatio; |
| | | fightPowerVariables["StunRateDefRatio"] = fightPowerRatioConfig.StunRateDefRatio; |
| | | fightPowerVariables["SuperHitRateDefRatio"] = fightPowerRatioConfig.SuperHitRateDefRatio; |
| | | fightPowerVariables["ComboRateDefRatio"] = fightPowerRatioConfig.ComboRateDefRatio; |
| | | fightPowerVariables["MissRateDefRatio"] = fightPowerRatioConfig.MissRateDefRatio; |
| | | fightPowerVariables["ParryRateDefRatio"] = fightPowerRatioConfig.ParryRateDefRatio; |
| | | fightPowerVariables["SuckHPPerDefRatio"] = fightPowerRatioConfig.SuckHPPerDefRatio; |
| | | fightPowerVariables["NormalSkillPerRatio"] = fightPowerRatioConfig.NormalSkillPerRatio; |
| | | fightPowerVariables["NormalSkillPerDefRatio"] = fightPowerRatioConfig.NormalSkillPerDefRatio; |
| | | fightPowerVariables["AngerSkillPerRatio"] = fightPowerRatioConfig.AngerSkillPerRatio; |
| | | fightPowerVariables["AngerSkillPerDefRatio"] = fightPowerRatioConfig.AngerSkillPerDefRatio; |
| | | fightPowerVariables["SuperDamPerRatio"] = fightPowerRatioConfig.SuperDamPerRatio; |
| | | fightPowerVariables["SuperDamPerDefRatio"] = fightPowerRatioConfig.SuperDamPerDefRatio; |
| | | fightPowerVariables["ShieldPerRatio"] = fightPowerRatioConfig.ShieldPerRatio; |
| | | fightPowerVariables["ShieldPerDefRatio"] = fightPowerRatioConfig.ShieldPerDefRatio; |
| | | fightPowerVariables["DOTPerRatio"] = fightPowerRatioConfig.DOTPerRatio; |
| | | fightPowerVariables["DOTPerDefRatio"] = fightPowerRatioConfig.DOTPerDefRatio; |
| | | fightPowerVariables["WeiFinalDamPerRatio"] = fightPowerRatioConfig.WeiFinalDamPerRatio; |
| | | fightPowerVariables["WeiFinalDamPerDefRatio"] = fightPowerRatioConfig.WeiFinalDamPerDefRatio; |
| | | fightPowerVariables["ShuFinalDamPerRatio"] = fightPowerRatioConfig.ShuFinalDamPerRatio; |
| | | fightPowerVariables["ShuFinalDamPerDefRatio"] = fightPowerRatioConfig.ShuFinalDamPerDefRatio; |
| | | fightPowerVariables["WuFinalDamPerRatio"] = fightPowerRatioConfig.WuFinalDamPerRatio; |
| | | fightPowerVariables["WuFinalDamPerDefRatio"] = fightPowerRatioConfig.WuFinalDamPerDefRatio; |
| | | fightPowerVariables["QunFinalDamPerRatio"] = fightPowerRatioConfig.QunFinalDamPerRatio; |
| | | fightPowerVariables["QunFinalDamPerDefRatio"] = fightPowerRatioConfig.QunFinalDamPerDefRatio; |
| | | fightPowerVariables["FinalDamPerRatio"] = fightPowerRatioConfig.FinalDamPerRatio; |
| | | fightPowerVariables["FinalDamPerDefRatio"] = fightPowerRatioConfig.FinalDamPerDefRatio; |
| | | fightPowerVariables["PhyDamPerRatio"] = fightPowerRatioConfig.PhyDamPerRatio; |
| | | fightPowerVariables["PhyDamPerDefRatio"] = fightPowerRatioConfig.PhyDamPerDefRatio; |
| | | fightPowerVariables["MagDamPerRatio"] = fightPowerRatioConfig.MagDamPerRatio; |
| | | fightPowerVariables["MagDamPerDefRatio"] = fightPowerRatioConfig.MagDamPerDefRatio; |
| | | fightPowerVariables["CurePerRatio"] = fightPowerRatioConfig.CurePerRatio; |
| | | fightPowerVariables["CurePerDefRatio"] = fightPowerRatioConfig.CurePerDefRatio; |
| | | fightPowerVariables[ATK_RATIO] = fightPowerRatioConfig.AtkRatio; |
| | | fightPowerVariables[MAX_HP_RATIO] = fightPowerRatioConfig.MaxHPRatio; |
| | | fightPowerVariables[DEF_RATIO] = fightPowerRatioConfig.DefRatio; |
| | | fightPowerVariables[STUN_RATE_RATIO] = fightPowerRatioConfig.StunRateRatio; |
| | | fightPowerVariables[SUPER_HIT_RATE_RATIO] = fightPowerRatioConfig.SuperHitRateRatio; |
| | | fightPowerVariables[COMBO_RATE_RATIO] = fightPowerRatioConfig.ComboRateRatio; |
| | | fightPowerVariables[MISS_RATE_RATIO] = fightPowerRatioConfig.MissRateRatio; |
| | | fightPowerVariables[PARRY_RATE_RATIO] = fightPowerRatioConfig.ParryRateRatio; |
| | | fightPowerVariables[SUCK_HP_PER_RATIO] = fightPowerRatioConfig.SuckHPPerRatio; |
| | | fightPowerVariables[STUN_RATE_DEF_RATIO] = fightPowerRatioConfig.StunRateDefRatio; |
| | | fightPowerVariables[SUPER_HIT_RATE_DEF_RATIO] = fightPowerRatioConfig.SuperHitRateDefRatio; |
| | | fightPowerVariables[COMBO_RATE_DEF_RATIO] = fightPowerRatioConfig.ComboRateDefRatio; |
| | | fightPowerVariables[MISS_RATE_DEF_RATIO] = fightPowerRatioConfig.MissRateDefRatio; |
| | | fightPowerVariables[PARRY_RATE_DEF_RATIO] = fightPowerRatioConfig.ParryRateDefRatio; |
| | | fightPowerVariables[SUCK_HP_PER_DEF_RATIO] = fightPowerRatioConfig.SuckHPPerDefRatio; |
| | | fightPowerVariables[NORMAL_SKILL_PER_RATIO] = fightPowerRatioConfig.NormalSkillPerRatio; |
| | | fightPowerVariables[NORMAL_SKILL_PER_DEF_RATIO] = fightPowerRatioConfig.NormalSkillPerDefRatio; |
| | | fightPowerVariables[ANGER_SKILL_PER_RATIO] = fightPowerRatioConfig.AngerSkillPerRatio; |
| | | fightPowerVariables[ANGER_SKILL_PER_DEF_RATIO] = fightPowerRatioConfig.AngerSkillPerDefRatio; |
| | | fightPowerVariables[SUPER_DAM_PER_RATIO] = fightPowerRatioConfig.SuperDamPerRatio; |
| | | fightPowerVariables[SUPER_DAM_PER_DEF_RATIO] = fightPowerRatioConfig.SuperDamPerDefRatio; |
| | | fightPowerVariables[SHIELD_PER_RATIO] = fightPowerRatioConfig.ShieldPerRatio; |
| | | fightPowerVariables[SHIELD_PER_DEF_RATIO] = fightPowerRatioConfig.ShieldPerDefRatio; |
| | | fightPowerVariables[DOT_PER_RATIO] = fightPowerRatioConfig.DOTPerRatio; |
| | | fightPowerVariables[DOT_PER_DEF_RATIO] = fightPowerRatioConfig.DOTPerDefRatio; |
| | | fightPowerVariables[WEI_FINAL_DAM_PER_RATIO] = fightPowerRatioConfig.WeiFinalDamPerRatio; |
| | | fightPowerVariables[WEI_FINAL_DAM_PER_DEF_RATIO] = fightPowerRatioConfig.WeiFinalDamPerDefRatio; |
| | | fightPowerVariables[SHU_FINAL_DAM_PER_RATIO] = fightPowerRatioConfig.ShuFinalDamPerRatio; |
| | | fightPowerVariables[SHU_FINAL_DAM_PER_DEF_RATIO] = fightPowerRatioConfig.ShuFinalDamPerDefRatio; |
| | | fightPowerVariables[WU_FINAL_DAM_PER_RATIO] = fightPowerRatioConfig.WuFinalDamPerRatio; |
| | | fightPowerVariables[WU_FINAL_DAM_PER_DEF_RATIO] = fightPowerRatioConfig.WuFinalDamPerDefRatio; |
| | | fightPowerVariables[QUN_FINAL_DAM_PER_RATIO] = fightPowerRatioConfig.QunFinalDamPerRatio; |
| | | fightPowerVariables[QUN_FINAL_DAM_PER_DEF_RATIO] = fightPowerRatioConfig.QunFinalDamPerDefRatio; |
| | | fightPowerVariables[FINAL_DAM_PER_RATIO] = fightPowerRatioConfig.FinalDamPerRatio; |
| | | fightPowerVariables[FINAL_DAM_PER_DEF_RATIO] = fightPowerRatioConfig.FinalDamPerDefRatio; |
| | | fightPowerVariables[PHY_DAM_PER_RATIO] = fightPowerRatioConfig.PhyDamPerRatio; |
| | | fightPowerVariables[PHY_DAM_PER_DEF_RATIO] = fightPowerRatioConfig.PhyDamPerDefRatio; |
| | | fightPowerVariables[MAG_DAM_PER_RATIO] = fightPowerRatioConfig.MagDamPerRatio; |
| | | fightPowerVariables[MAG_DAM_PER_DEF_RATIO] = fightPowerRatioConfig.MagDamPerDefRatio; |
| | | fightPowerVariables[CURE_PER_RATIO] = fightPowerRatioConfig.CurePerRatio; |
| | | fightPowerVariables[CURE_PER_DEF_RATIO] = fightPowerRatioConfig.CurePerDefRatio; |
| | | fightPowerVariables[PVP_DAM_PER_RATIO] = fightPowerRatioConfig.PVPDamPerRatio; |
| | | fightPowerVariables[PVP_DAM_PER_DEF_RATIO] = fightPowerRatioConfig.PVPDamPerDefRatio; |
| | | |
| | | |
| | | long fightPower = (long)JaceCalculator.Calculate(fightPowerFormula, fightPowerVariables); |
| | | long fightPower = (long)FightPowerFormula.GetFightPower(fightPowerVariables); |
| | | #if UNITY_EDITOR |
| | | //排除值为0的属性输出 |
| | | var tmpFightPowerVariables = fightPowerVariables.Where(x => x.Value > 0).ToDictionary(x => x.Key, x => x.Value); |
| | | if (!tmpFightPowerVariables.IsNullOrEmpty()) |
| | | Debug.Log($"战力:武将ID {hero.heroId} 属性战力 {fightPower} 属性战力参数 {JsonMapper.ToJson(tmpFightPowerVariables)}"); |
| | | //排除值为0的属性输出 |
| | | // var tmpFightPowerVariables = fightPowerVariables.Where(x => x.Value > 0).ToDictionary(x => x.Key, x => x.Value); |
| | | // if (!tmpFightPowerVariables.IsNullOrEmpty()) |
| | | // Debug.Log($"战力:武将ID {hero.heroId} 属性战力 {fightPower} 属性战力参数 {JsonMapper.ToJson(tmpFightPowerVariables)}"); |
| | | #endif |
| | | |
| | | //加上技能战力 |
| | | fightPowerVariables.Clear(); |
| | | fightPowerVariables["PlayerLV"] = PlayerDatas.Instance.baseData.LV; |
| | | fightPowerVariables["OfficialLV"] = PlayerDatas.Instance.baseData.realmLevel; |
| | | fightPowerVariables["SkillPower"] = hero.GetSkillsFightPower(); |
| | | fightPowerVariables[PLAYER_LV] = PlayerDatas.Instance.baseData.LV; |
| | | fightPowerVariables[OFFICIAL_LV] = PlayerDatas.Instance.baseData.realmLevel; |
| | | fightPowerVariables[SKILL_POWER] = hero.GetSkillsFightPower(); |
| | | |
| | | long skillPower = (long)JaceCalculator.Calculate(skillFightPowerFormula, fightPowerVariables); |
| | | long skillPower = (long)FightPowerFormula.GetSkillsFightPower(fightPowerVariables); |
| | | |
| | | #if UNITY_EDITOR |
| | | Debug.Log($"战力:武将ID {hero.heroId} 技能战力 {skillPower} 技能参数 {JsonMapper.ToJson(fightPowerVariables)}"); |
| | | // Debug.Log($"战力:武将ID {hero.heroId} 技能战力 {skillPower} 技能参数 {JsonMapper.ToJson(fightPowerVariables)}"); |
| | | |
| | | Debug.Log($"战力:武将ID {hero.heroId} 总战力 {fightPower + skillPower}"); |
| | | // Debug.Log($"战力:武将ID {hero.heroId} 总战力 {fightPower + skillPower}"); |
| | | #endif |
| | | |
| | | return fightPower + skillPower; |
| | | return fightPower + skillPower; |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | InitFightPowerParam(); |
| | | var fightPower = CalculatePower(); |
| | | |
| | | |
| | | InitFightPowerParam(dropindex: item.gridIndex); |
| | | var tmpFightPower = CalculatePower(); |
| | | return tmpFightPower - fightPower; |
| | | } |
| | | |
| | | |
| | | |
| | | // 单英雄查看战力 |
| | | // 1. 上阵英雄显示,在主线阵容下的战力 |
| | |
| | | propertyStrForDebug = ""; |
| | | #endif |
| | | |
| | | foreach (var config in PlayerPropertyConfig.GetValues()) |
| | | foreach (var config in pConfig) |
| | | { |
| | | if (config.showType < 1 || config.showType > 4) |
| | | { |
| | |
| | | } |
| | | if (config.showType == 1) |
| | | { |
| | | tmpAttrs[config.ID] = (long)GetPropertyVaule(config.ID, hero, propertyFormula); |
| | | tmpAttrs[config.ID] = (long)GetPropertyVaule(config.ID, hero, 0); |
| | | } |
| | | else |
| | | { |
| | | tmpAttrs[config.ID] = (long)GetPropertyVaule(config.ID, hero, fightPropertyFormula); |
| | | tmpAttrs[config.ID] = (long)GetPropertyVaule(config.ID, hero, 1); |
| | | } |
| | | } |
| | | #if UNITY_EDITOR |
| | | Debug.Log($"战力:武将ID {hero.heroId} 属性信息 {propertyStrForDebug}"); |
| | | // Debug.Log($"战力:武将ID {hero.heroId} 属性信息 {propertyStrForDebug}"); |
| | | #endif |
| | | return tmpAttrs; |
| | | } |