From a19acb609721b89419fe55785643a0d4f1959368 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 14 十一月 2025 20:03:47 +0800
Subject: [PATCH] 0312 动态检测战力公式

---
 Main/Core/GameEngine/Launch/ConfigInitTask.cs |  155 +++++++++++++++++++
 Main/System/Main/FightPowerManager.cs         |    2 
 Main/System/Main/FightPowerFormula.cs         |  316 +++++++++++++++++++-------------------
 3 files changed, 314 insertions(+), 159 deletions(-)

diff --git a/Main/Core/GameEngine/Launch/ConfigInitTask.cs b/Main/Core/GameEngine/Launch/ConfigInitTask.cs
index 350a21b..1fe1122 100644
--- a/Main/Core/GameEngine/Launch/ConfigInitTask.cs
+++ b/Main/Core/GameEngine/Launch/ConfigInitTask.cs
@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.IO;
+using System.Linq;
 using UnityEngine;
 public class ConfigInitTask : LaunchTask
 {
@@ -30,8 +31,162 @@
         // TODO YYL
         // OperationLogCollect.Instance.RecordLauchEvent(3);
         // OperationLogCollect.Instance.RecordEvent(3);
+
+#if UNITY_EDITOR
+        var config = FuncConfigConfig.Get("HeroAttrFormula");
+        var propertyFormula = config.Numerical1;
+        var fightPropertyFormula = config.Numerical2;
+        var fightPowerFormula = config.Numerical3;
+        var skillFightPowerFormula = config.Numerical4;  
+        
+        //璇诲彇鏂囦欢 FightPowerFormula.cs鏂囦欢锛岄�氳繃鍏紡瀛楃涓茬敓鎴愪唬鐮�
+        var filePath = "Assets/Scripts/Main/System/Main/FightPowerFormula.cs";
+        var fileContent = File.ReadAllText(filePath);
+        
+        // 鐢熸垚鏂扮殑浠g爜鍐呭
+        var newContent = GenerateFightPowerFormulaCode(propertyFormula, fightPropertyFormula, fightPowerFormula, skillFightPowerFormula);
+        
+        // 濡傛灉鍐呭鏈夊彉鍖栵紝鍒欏啓鍏ユ枃浠�
+        if (newContent != fileContent)
+        {
+            File.WriteAllText(filePath, newContent);
+            Debug.LogError("鎴樻枟鍏紡鏈夊彉鏇� FightPowerFormula.cs 宸叉牴鎹厤缃叕寮忛噸鏂扮敓鎴�, 璇锋彁浜や唬鐮侊紒");
+        }
+        else
+        {
+            Debug.Log("FightPowerFormula.cs 鍐呭鏈彉鍖栵紝鏃犻渶閲嶆柊鐢熸垚");
+        }
+
+#endif
     }
 
+#if UNITY_EDITOR
+    private string GenerateFightPowerFormulaCode(string propertyFormula, string fightPropertyFormula, string fightPowerFormula, string skillFightPowerFormula)
+    {
+        // 鎻愬彇鍙橀噺鍚�
+        var propertyVariables = ExtractVariables(propertyFormula);
+        var fightPropertyVariables = ExtractVariables(fightPropertyFormula);
+        var fightPowerVariables = ExtractVariables(fightPowerFormula);
+        var skillFightPowerVariables = ExtractVariables(skillFightPowerFormula);
+        
+        // 澶勭悊鍏紡涓殑绫诲瀷杞崲鎿嶄綔绗�
+        var processedPropertyFormula = ProcessTypeConversionOperators(propertyFormula);
+        var processedFightPropertyFormula = ProcessTypeConversionOperators(fightPropertyFormula);
+        var processedFightPowerFormula = ProcessTypeConversionOperators(fightPowerFormula);
+        var processedSkillFightPowerFormula = ProcessTypeConversionOperators(skillFightPowerFormula);
+        
+        // 鐢熸垚浠g爜
+        var code = new System.Text.StringBuilder();
+        code.AppendLine("using System.Collections.Generic;");
+        code.AppendLine();
+        code.AppendLine("public class FightPowerFormula");
+        code.AppendLine("{");
+        
+        // 娣诲姞鍏紡娉ㄩ噴
+        code.AppendLine("    // 鍩虹灞炴�у叕寮�");
+        code.AppendLine($"    // {propertyFormula}");
+        code.AppendLine("    // 鎴樻枟灞炴�у叕寮�");
+        code.AppendLine($"    // {fightPropertyFormula}");
+        code.AppendLine("    // 鎴樻枟鍔涘叕寮�");
+        code.AppendLine($"    // {fightPowerFormula}");
+        code.AppendLine("    // 鎶�鑳芥垬鏂楀姏鍏紡");
+        code.AppendLine($"    // {skillFightPowerFormula}");
+        code.AppendLine();
+        
+        // 鐢熸垚鍩虹灞炴�ц绠楁柟娉�
+        code.AppendLine("    public static double GetBaseAttr(Dictionary<string, double> variables)");
+        code.AppendLine("    {");
+        foreach (var variable in propertyVariables)
+        {
+            code.AppendLine($"        double {variable} = variables[\"{variable}\"];");
+        }
+        code.AppendLine();
+        code.AppendLine($"        return {processedPropertyFormula};");
+        code.AppendLine("    }");
+        code.AppendLine();
+        
+        // 鐢熸垚鎴樻枟灞炴�ц绠楁柟娉�
+        code.AppendLine("    public static double GetFightAttr(Dictionary<string, double> variables)");
+        code.AppendLine("    {");
+        foreach (var variable in fightPropertyVariables)
+        {
+            code.AppendLine($"        double {variable} = variables[\"{variable}\"];");
+        }
+        code.AppendLine();
+        code.AppendLine($"        return {processedFightPropertyFormula};");
+        code.AppendLine("    }");
+        code.AppendLine();
+        
+        // 鐢熸垚鎴樻枟鍔涜绠楁柟娉�
+        code.AppendLine("    public static double GetFightPower(Dictionary<string, double> variables)");
+        code.AppendLine("    {");
+        foreach (var variable in fightPowerVariables)
+        {
+            code.AppendLine($"        double {variable} = variables[\"{variable}\"];");
+        }
+        code.AppendLine();
+        code.AppendLine($"        return {processedFightPowerFormula};");
+        code.AppendLine("    }");
+        code.AppendLine();
+        
+        // 鐢熸垚鎶�鑳芥垬鏂楀姏璁$畻鏂规硶
+        code.AppendLine("    public static double GetSkillsFightPower(Dictionary<string, double> variables)");
+        code.AppendLine("    {");
+        foreach (var variable in skillFightPowerVariables)
+        {
+            code.AppendLine($"        double {variable} = variables[\"{variable}\"];");
+        }
+        code.AppendLine();
+        code.AppendLine($"        return {processedSkillFightPowerFormula};");
+        code.AppendLine("    }");
+        code.AppendLine();
+        
+        code.AppendLine("}");
+        
+        return code.ToString();
+    }
+    
+    private string ProcessTypeConversionOperators(string formula)
+    {
+        // 灏嗙被鍨嬭浆鎹㈡搷浣滅杞崲涓哄姞鎷彿鐨勫舰寮�
+        var processedFormula = formula;
+        
+        // 澶勭悊 long(expression) 杞崲涓� (long)(expression)
+        processedFormula = System.Text.RegularExpressions.Regex.Replace(processedFormula, @"\b(long|int|float|double)\s*\(", "($1)(");
+        
+        return processedFormula;
+    }
+    
+    private List<string> ExtractVariables(string formula)
+    {
+        var variables = new List<string>();
+        var words = formula.Split(new char[] { ' ', '+', '-', '*', '/', '(', ')', ',', '=', '<', '>', '!', '&', '|', '%', ':' }, StringSplitOptions.RemoveEmptyEntries);
+        
+        foreach (var word in words)
+        {
+            // 杩囨护鎺夋暟瀛椼�佽繍绠楃鍜屽叧閿瓧
+            if (!double.TryParse(word, out _) && !IsOperator(word) && !IsKeyword(word) && !variables.Contains(word))
+            {
+                variables.Add(word);
+            }
+        }
+        
+        return variables;
+    }
+    
+    private bool IsOperator(string word)
+    {
+        var operators = new string[] { "if", "else", "min", "max", "long", "int", "float", "double" };
+        return operators.Contains(word);
+    }
+    
+    private bool IsKeyword(string word)
+    {
+        var keywords = new string[] { "return", "var", "class", "public", "private", "static", "void", "using", "namespace" };
+        return keywords.Contains(word);
+    }
+#endif
+
     public override void Update()
     {
         if (done)
diff --git a/Main/System/Main/FightPowerFormula.cs b/Main/System/Main/FightPowerFormula.cs
index 9aca394..57652f9 100644
--- a/Main/System/Main/FightPowerFormula.cs
+++ b/Main/System/Main/FightPowerFormula.cs
@@ -1,158 +1,158 @@
-
-using System.Collections.Generic;
-
-public class FightPowerFormula
-{
-    // 鍩虹灞炴�у叕寮�
-    // 鎴樻枟灞炴�у叕寮�
-    // (lvValue+equipValue+bookValue+realmValue+gubaoValue+hjgValue+horseValue)+(heroSelfValue+lineupHaloValue+starTalentValue+breakLVValue+awakeTalentValue)+fetterValue
-    // 鎴樻枟鍔涘叕寮�
-    // long(Atk*AtkRatio+MaxHP*MaxHPRatio+Def*DefRatio+(StunRate*StunRateRatio+SuperHitRate*SuperHitRateRatio+ComboRate*ComboRateRatio+MissRate*MissRateRatio+ParryRate*ParryRateRatio+SuckHPPer*SuckHPPerRatio+StunRateDef*StunRateDefRatio+SuperHitRateDef*SuperHitRateDefRatio+ComboRateDef*ComboRateDefRatio+MissRateDef*MissRateDefRatio+ParryRateDef*ParryRateDefRatio+SuckHPPerDef*SuckHPPerDefRatio+FinalDamPer*FinalDamPerRatio+FinalDamPerDef*FinalDamPerDefRatio+PhyDamPer*PhyDamPerRatio+PhyDamPerDef*PhyDamPerDefRatio+MagDamPer*MagDamPerRatio+MagDamPerDef*MagDamPerDefRatio+NormalSkillPer*NormalSkillPerRatio+NormalSkillPerDef*NormalSkillPerDefRatio+AngerSkillPer*AngerSkillPerRatio+AngerSkillPerDef*AngerSkillPerDefRatio+SuperDamPer*SuperDamPerRatio+SuperDamPerDef*SuperDamPerDefRatio+CurePer*CurePerRatio+CurePerDef*CurePerDefRatio+ShieldPer*ShieldPerRatio+ShieldPerDef*ShieldPerDefRatio+DOTPer*DOTPerRatio+DOTPerDef*DOTPerDefRatio+WeiFinalDamPer*WeiFinalDamPerRatio+WeiFinalDamPerDef*WeiFinalDamPerDefRatio+ShuFinalDamPer*ShuFinalDamPerRatio+ShuFinalDamPerDef*ShuFinalDamPerDefRatio+WuFinalDamPer*WuFinalDamPerRatio+WuFinalDamPerDef*WuFinalDamPerDefRatio+QunFinalDamPer*QunFinalDamPerRatio+QunFinalDamPerDef*QunFinalDamPerDefRatio)/100.0-55000)
-
-    public static double GetBaseAttr(Dictionary<string, double> variables)
-    {
-
-        double lvValue = variables["lvValue"];
-        double equipValue = variables["equipValue"];
-        double bookValue = variables["bookValue"];
-        double realmValue = variables["realmValue"];
-        double gubaoValue = variables["gubaoValue"];
-        double hjgValue = variables["hjgValue"];
-        double horseValue = variables["horseValue"];
-        double lineupHaloPer = variables["lineupHaloPer"];
-        double bookPer = variables["bookPer"];
-        double realmPer = variables["realmPer"];
-        double gubaoPer = variables["gubaoPer"];
-        double hjgPer = variables["hjgPer"];
-        double horsePer = variables["horsePer"];
-        double lineupInitAddPer = variables["lineupInitAddPer"];
-        double lineupLVAddPer = variables["lineupLVAddPer"];
-        double lineupBreakLVAddPer = variables["lineupBreakLVAddPer"];
-        double lineupStarAddPer = variables["lineupStarAddPer"];
-        double inheritPer = variables["inheritPer"];
-        double fetterPer = variables["fetterPer"];
-        double starTalentPer = variables["starTalentPer"];
-        double breakLVPer = variables["breakLVPer"];
-        double awakeTalentPer = variables["awakeTalentPer"];
-        double heroSelfValue = variables["heroSelfValue"];
-
-        return (lvValue + equipValue + bookValue + realmValue + gubaoValue + hjgValue + horseValue) * (1 + lineupHaloPer + bookPer + realmPer + gubaoPer + hjgPer + horsePer + lineupInitAddPer + lineupLVAddPer + lineupBreakLVAddPer + lineupStarAddPer) * (inheritPer + fetterPer + starTalentPer + breakLVPer + awakeTalentPer) + heroSelfValue;
-    }
-
-    public static double GetFightAttr(Dictionary<string, double> variables)
-    {
-        double lvValue = variables["lvValue"];
-        double equipValue = variables["equipValue"];
-        double bookValue = variables["bookValue"];
-        double realmValue = variables["realmValue"];
-        double gubaoValue = variables["gubaoValue"];
-        double hjgValue = variables["hjgValue"];
-        double horseValue = variables["horseValue"];
-        double heroSelfValue = variables["heroSelfValue"];
-        double lineupHaloValue = variables["lineupHaloValue"];
-        double starTalentValue = variables["starTalentValue"];
-        double breakLVValue = variables["breakLVValue"];
-        double awakeTalentValue = variables["awakeTalentValue"];
-        double fetterValue = variables["fetterValue"];
-
-        return lvValue + equipValue + bookValue + realmValue + gubaoValue + hjgValue + horseValue + (heroSelfValue + lineupHaloValue + starTalentValue + breakLVValue + awakeTalentValue) + fetterValue;
-    }
-
-    public static double GetFightPower(Dictionary<string, double> variables)
-    {
-        double Atk = variables["Atk"];
-        double AtkRatio = variables["AtkRatio"];
-        double MaxHP = variables["MaxHP"];
-        double MaxHPRatio = variables["MaxHPRatio"];
-        double Def = variables["Def"];
-        double DefRatio = variables["DefRatio"];
-        double StunRate = variables["StunRate"];
-        double StunRateRatio = variables["StunRateRatio"];
-        double SuperHitRate = variables["SuperHitRate"];
-        double SuperHitRateRatio = variables["SuperHitRateRatio"];
-        double ComboRate = variables["ComboRate"];
-        double ComboRateRatio = variables["ComboRateRatio"];
-        double MissRate = variables["MissRate"];
-        double MissRateRatio = variables["MissRateRatio"];
-        double ParryRate = variables["ParryRate"];
-        double ParryRateRatio = variables["ParryRateRatio"];
-        double SuckHPPer = variables["SuckHPPer"];
-        double SuckHPPerRatio = variables["SuckHPPerRatio"];
-        double StunRateDef = variables["StunRateDef"];
-        double StunRateDefRatio = variables["StunRateDefRatio"];
-        double SuperHitRateDef = variables["SuperHitRateDef"];
-        double SuperHitRateDefRatio = variables["SuperHitRateDefRatio"];
-        double ComboRateDef = variables["ComboRateDef"];
-        double ComboRateDefRatio = variables["ComboRateDefRatio"];
-        double MissRateDef = variables["MissRateDef"];
-        double MissRateDefRatio = variables["MissRateDefRatio"];
-        double ParryRateDef = variables["ParryRateDef"];
-        double ParryRateDefRatio = variables["ParryRateDefRatio"];
-        double SuckHPPerDef = variables["SuckHPPerDef"];
-        double SuckHPPerDefRatio = variables["SuckHPPerDefRatio"];
-        double FinalDamPer = variables["FinalDamPer"];
-        double FinalDamPerRatio = variables["FinalDamPerRatio"];
-        double FinalDamPerDef = variables["FinalDamPerDef"];
-        double FinalDamPerDefRatio = variables["FinalDamPerDefRatio"];
-        double PhyDamPer = variables["PhyDamPer"];
-        double PhyDamPerRatio = variables["PhyDamPerRatio"];
-        double PhyDamPerDef = variables["PhyDamPerDef"];
-        double PhyDamPerDefRatio = variables["PhyDamPerDefRatio"];
-        double MagDamPer = variables["MagDamPer"];
-        double MagDamPerRatio = variables["MagDamPerRatio"];
-        double MagDamPerDef = variables["MagDamPerDef"];
-        double MagDamPerDefRatio = variables["MagDamPerDefRatio"];
-        double NormalSkillPer = variables["NormalSkillPer"];
-        double NormalSkillPerRatio = variables["NormalSkillPerRatio"];
-        double NormalSkillPerDef = variables["NormalSkillPerDef"];
-        double NormalSkillPerDefRatio = variables["NormalSkillPerDefRatio"];
-        double AngerSkillPer = variables["AngerSkillPer"];
-        double AngerSkillPerRatio = variables["AngerSkillPerRatio"];
-        double AngerSkillPerDef = variables["AngerSkillPerDef"];
-        double AngerSkillPerDefRatio = variables["AngerSkillPerDefRatio"];
-        double SuperDamPer = variables["SuperDamPer"];
-        double SuperDamPerRatio = variables["SuperDamPerRatio"];
-        double SuperDamPerDef = variables["SuperDamPerDef"];
-        double SuperDamPerDefRatio = variables["SuperDamPerDefRatio"];
-        double CurePer = variables["CurePer"];
-        double CurePerRatio = variables["CurePerRatio"];
-        double CurePerDef = variables["CurePerDef"];
-        double CurePerDefRatio = variables["CurePerDefRatio"];
-        double ShieldPer = variables["ShieldPer"];
-        double ShieldPerRatio = variables["ShieldPerRatio"];
-        double ShieldPerDef = variables["ShieldPerDef"];
-        double ShieldPerDefRatio = variables["ShieldPerDefRatio"];
-        double DOTPer = variables["DOTPer"];
-        double DOTPerRatio = variables["DOTPerRatio"];
-        double DOTPerDef = variables["DOTPerDef"];
-        double DOTPerDefRatio = variables["DOTPerDefRatio"];
-        double WeiFinalDamPer = variables["WeiFinalDamPer"];
-        double WeiFinalDamPerRatio = variables["WeiFinalDamPerRatio"];
-        double WeiFinalDamPerDef = variables["WeiFinalDamPerDef"];
-        double WeiFinalDamPerDefRatio = variables["WeiFinalDamPerDefRatio"];
-        double ShuFinalDamPer = variables["ShuFinalDamPer"];
-        double ShuFinalDamPerRatio = variables["ShuFinalDamPerRatio"];
-        double ShuFinalDamPerDef = variables["ShuFinalDamPerDef"];
-        double ShuFinalDamPerDefRatio = variables["ShuFinalDamPerDefRatio"];
-        double WuFinalDamPer = variables["WuFinalDamPer"];
-        double WuFinalDamPerRatio = variables["WuFinalDamPerRatio"];
-        double WuFinalDamPerDef = variables["WuFinalDamPerDef"];
-        double WuFinalDamPerDefRatio = variables["WuFinalDamPerDefRatio"];
-        double QunFinalDamPer = variables["QunFinalDamPer"];
-        double QunFinalDamPerRatio = variables["QunFinalDamPerRatio"];
-        double QunFinalDamPerDef = variables["QunFinalDamPerDef"];
-        double QunFinalDamPerDefRatio = variables["QunFinalDamPerDefRatio"];
-
-
-
-        return Atk * AtkRatio + MaxHP * MaxHPRatio + Def * DefRatio + (StunRate * StunRateRatio + SuperHitRate * SuperHitRateRatio + ComboRate * ComboRateRatio + MissRate * MissRateRatio + ParryRate * ParryRateRatio + SuckHPPer * SuckHPPerRatio + StunRateDef * StunRateDefRatio + SuperHitRateDef * SuperHitRateDefRatio + ComboRateDef * ComboRateDefRatio + MissRateDef * MissRateDefRatio + ParryRateDef * ParryRateDefRatio + SuckHPPerDef * SuckHPPerDefRatio + FinalDamPer * FinalDamPerRatio + FinalDamPerDef * FinalDamPerDefRatio + PhyDamPer * PhyDamPerRatio + PhyDamPerDef * PhyDamPerDefRatio + MagDamPer * MagDamPerRatio + MagDamPerDef * MagDamPerDefRatio + NormalSkillPer * NormalSkillPerRatio + NormalSkillPerDef * NormalSkillPerDefRatio + AngerSkillPer * AngerSkillPerRatio + AngerSkillPerDef * AngerSkillPerDefRatio + SuperDamPer * SuperDamPerRatio + SuperDamPerDef * SuperDamPerDefRatio + CurePer * CurePerRatio + CurePerDef * CurePerDefRatio + ShieldPer * ShieldPerRatio + ShieldPerDef * ShieldPerDefRatio + DOTPer * DOTPerRatio + DOTPerDef * DOTPerDefRatio + WeiFinalDamPer * WeiFinalDamPerRatio + WeiFinalDamPerDef * WeiFinalDamPerDefRatio + ShuFinalDamPer * ShuFinalDamPerRatio + ShuFinalDamPerDef * ShuFinalDamPerDefRatio + WuFinalDamPer * WuFinalDamPerRatio + WuFinalDamPerDef * WuFinalDamPerDefRatio + QunFinalDamPer * QunFinalDamPerRatio + QunFinalDamPerDef * QunFinalDamPerDefRatio) / 100.0 - 55000;
-
-    }
-
-    public static double GetSkillsFightPower(Dictionary<string, double> variables)
-    {
-        double SkillPower = variables["SkillPower"];
-        double OfficialLV = variables["OfficialLV"];
-        return SkillPower * OfficialLV;
-    }
-}
\ No newline at end of file
+using System.Collections.Generic;
+
+public class FightPowerFormula
+{
+    // 鍩虹灞炴�у叕寮�
+    // (lvValue+equipValue+bookValue+realmValue+gubaoValue+hjgValue+horseValue)*(1+lineupHaloPer+bookPer+realmPer+gubaoPer+hjgPer+horsePer+lineupInitAddPer+lineupLVAddPer+lineupBreakLVAddPer+lineupStarAddPer)*(inheritPer+fetterPer+starTalentPer+breakLVPer+awakeTalentPer)+heroSelfValue
+    // 鎴樻枟灞炴�у叕寮�
+    // (lvValue+equipValue+bookValue+realmValue+gubaoValue+hjgValue+horseValue)+(heroSelfValue+lineupHaloValue+starTalentValue+breakLVValue+awakeTalentValue)+fetterValue
+    // 鎴樻枟鍔涘叕寮�
+    // long(Atk*AtkRatio+MaxHP*MaxHPRatio+Def*DefRatio+(StunRate*StunRateRatio+SuperHitRate*SuperHitRateRatio+ComboRate*ComboRateRatio+MissRate*MissRateRatio+ParryRate*ParryRateRatio+SuckHPPer*SuckHPPerRatio+StunRateDef*StunRateDefRatio+SuperHitRateDef*SuperHitRateDefRatio+ComboRateDef*ComboRateDefRatio+MissRateDef*MissRateDefRatio+ParryRateDef*ParryRateDefRatio+SuckHPPerDef*SuckHPPerDefRatio+FinalDamPer*FinalDamPerRatio+FinalDamPerDef*FinalDamPerDefRatio+PhyDamPer*PhyDamPerRatio+PhyDamPerDef*PhyDamPerDefRatio+MagDamPer*MagDamPerRatio+MagDamPerDef*MagDamPerDefRatio+NormalSkillPer*NormalSkillPerRatio+NormalSkillPerDef*NormalSkillPerDefRatio+AngerSkillPer*AngerSkillPerRatio+AngerSkillPerDef*AngerSkillPerDefRatio+SuperDamPer*SuperDamPerRatio+SuperDamPerDef*SuperDamPerDefRatio+CurePer*CurePerRatio+CurePerDef*CurePerDefRatio+ShieldPer*ShieldPerRatio+ShieldPerDef*ShieldPerDefRatio+DOTPer*DOTPerRatio+DOTPerDef*DOTPerDefRatio+WeiFinalDamPer*WeiFinalDamPerRatio+WeiFinalDamPerDef*WeiFinalDamPerDefRatio+ShuFinalDamPer*ShuFinalDamPerRatio+ShuFinalDamPerDef*ShuFinalDamPerDefRatio+WuFinalDamPer*WuFinalDamPerRatio+WuFinalDamPerDef*WuFinalDamPerDefRatio+QunFinalDamPer*QunFinalDamPerRatio+QunFinalDamPerDef*QunFinalDamPerDefRatio)/100.0-55000)
+    // 鎶�鑳芥垬鏂楀姏鍏紡
+    // SkillPower*OfficialLV
+
+    public static double GetBaseAttr(Dictionary<string, double> variables)
+    {
+        double lvValue = variables["lvValue"];
+        double equipValue = variables["equipValue"];
+        double bookValue = variables["bookValue"];
+        double realmValue = variables["realmValue"];
+        double gubaoValue = variables["gubaoValue"];
+        double hjgValue = variables["hjgValue"];
+        double horseValue = variables["horseValue"];
+        double lineupHaloPer = variables["lineupHaloPer"];
+        double bookPer = variables["bookPer"];
+        double realmPer = variables["realmPer"];
+        double gubaoPer = variables["gubaoPer"];
+        double hjgPer = variables["hjgPer"];
+        double horsePer = variables["horsePer"];
+        double lineupInitAddPer = variables["lineupInitAddPer"];
+        double lineupLVAddPer = variables["lineupLVAddPer"];
+        double lineupBreakLVAddPer = variables["lineupBreakLVAddPer"];
+        double lineupStarAddPer = variables["lineupStarAddPer"];
+        double inheritPer = variables["inheritPer"];
+        double fetterPer = variables["fetterPer"];
+        double starTalentPer = variables["starTalentPer"];
+        double breakLVPer = variables["breakLVPer"];
+        double awakeTalentPer = variables["awakeTalentPer"];
+        double heroSelfValue = variables["heroSelfValue"];
+
+        return (lvValue+equipValue+bookValue+realmValue+gubaoValue+hjgValue+horseValue)*(1+lineupHaloPer+bookPer+realmPer+gubaoPer+hjgPer+horsePer+lineupInitAddPer+lineupLVAddPer+lineupBreakLVAddPer+lineupStarAddPer)*(inheritPer+fetterPer+starTalentPer+breakLVPer+awakeTalentPer)+heroSelfValue;
+    }
+
+    public static double GetFightAttr(Dictionary<string, double> variables)
+    {
+        double lvValue = variables["lvValue"];
+        double equipValue = variables["equipValue"];
+        double bookValue = variables["bookValue"];
+        double realmValue = variables["realmValue"];
+        double gubaoValue = variables["gubaoValue"];
+        double hjgValue = variables["hjgValue"];
+        double horseValue = variables["horseValue"];
+        double heroSelfValue = variables["heroSelfValue"];
+        double lineupHaloValue = variables["lineupHaloValue"];
+        double starTalentValue = variables["starTalentValue"];
+        double breakLVValue = variables["breakLVValue"];
+        double awakeTalentValue = variables["awakeTalentValue"];
+        double fetterValue = variables["fetterValue"];
+
+        return (lvValue+equipValue+bookValue+realmValue+gubaoValue+hjgValue+horseValue)+(heroSelfValue+lineupHaloValue+starTalentValue+breakLVValue+awakeTalentValue)+fetterValue;
+    }
+
+    public static double GetFightPower(Dictionary<string, double> variables)
+    {
+        double Atk = variables["Atk"];
+        double AtkRatio = variables["AtkRatio"];
+        double MaxHP = variables["MaxHP"];
+        double MaxHPRatio = variables["MaxHPRatio"];
+        double Def = variables["Def"];
+        double DefRatio = variables["DefRatio"];
+        double StunRate = variables["StunRate"];
+        double StunRateRatio = variables["StunRateRatio"];
+        double SuperHitRate = variables["SuperHitRate"];
+        double SuperHitRateRatio = variables["SuperHitRateRatio"];
+        double ComboRate = variables["ComboRate"];
+        double ComboRateRatio = variables["ComboRateRatio"];
+        double MissRate = variables["MissRate"];
+        double MissRateRatio = variables["MissRateRatio"];
+        double ParryRate = variables["ParryRate"];
+        double ParryRateRatio = variables["ParryRateRatio"];
+        double SuckHPPer = variables["SuckHPPer"];
+        double SuckHPPerRatio = variables["SuckHPPerRatio"];
+        double StunRateDef = variables["StunRateDef"];
+        double StunRateDefRatio = variables["StunRateDefRatio"];
+        double SuperHitRateDef = variables["SuperHitRateDef"];
+        double SuperHitRateDefRatio = variables["SuperHitRateDefRatio"];
+        double ComboRateDef = variables["ComboRateDef"];
+        double ComboRateDefRatio = variables["ComboRateDefRatio"];
+        double MissRateDef = variables["MissRateDef"];
+        double MissRateDefRatio = variables["MissRateDefRatio"];
+        double ParryRateDef = variables["ParryRateDef"];
+        double ParryRateDefRatio = variables["ParryRateDefRatio"];
+        double SuckHPPerDef = variables["SuckHPPerDef"];
+        double SuckHPPerDefRatio = variables["SuckHPPerDefRatio"];
+        double FinalDamPer = variables["FinalDamPer"];
+        double FinalDamPerRatio = variables["FinalDamPerRatio"];
+        double FinalDamPerDef = variables["FinalDamPerDef"];
+        double FinalDamPerDefRatio = variables["FinalDamPerDefRatio"];
+        double PhyDamPer = variables["PhyDamPer"];
+        double PhyDamPerRatio = variables["PhyDamPerRatio"];
+        double PhyDamPerDef = variables["PhyDamPerDef"];
+        double PhyDamPerDefRatio = variables["PhyDamPerDefRatio"];
+        double MagDamPer = variables["MagDamPer"];
+        double MagDamPerRatio = variables["MagDamPerRatio"];
+        double MagDamPerDef = variables["MagDamPerDef"];
+        double MagDamPerDefRatio = variables["MagDamPerDefRatio"];
+        double NormalSkillPer = variables["NormalSkillPer"];
+        double NormalSkillPerRatio = variables["NormalSkillPerRatio"];
+        double NormalSkillPerDef = variables["NormalSkillPerDef"];
+        double NormalSkillPerDefRatio = variables["NormalSkillPerDefRatio"];
+        double AngerSkillPer = variables["AngerSkillPer"];
+        double AngerSkillPerRatio = variables["AngerSkillPerRatio"];
+        double AngerSkillPerDef = variables["AngerSkillPerDef"];
+        double AngerSkillPerDefRatio = variables["AngerSkillPerDefRatio"];
+        double SuperDamPer = variables["SuperDamPer"];
+        double SuperDamPerRatio = variables["SuperDamPerRatio"];
+        double SuperDamPerDef = variables["SuperDamPerDef"];
+        double SuperDamPerDefRatio = variables["SuperDamPerDefRatio"];
+        double CurePer = variables["CurePer"];
+        double CurePerRatio = variables["CurePerRatio"];
+        double CurePerDef = variables["CurePerDef"];
+        double CurePerDefRatio = variables["CurePerDefRatio"];
+        double ShieldPer = variables["ShieldPer"];
+        double ShieldPerRatio = variables["ShieldPerRatio"];
+        double ShieldPerDef = variables["ShieldPerDef"];
+        double ShieldPerDefRatio = variables["ShieldPerDefRatio"];
+        double DOTPer = variables["DOTPer"];
+        double DOTPerRatio = variables["DOTPerRatio"];
+        double DOTPerDef = variables["DOTPerDef"];
+        double DOTPerDefRatio = variables["DOTPerDefRatio"];
+        double WeiFinalDamPer = variables["WeiFinalDamPer"];
+        double WeiFinalDamPerRatio = variables["WeiFinalDamPerRatio"];
+        double WeiFinalDamPerDef = variables["WeiFinalDamPerDef"];
+        double WeiFinalDamPerDefRatio = variables["WeiFinalDamPerDefRatio"];
+        double ShuFinalDamPer = variables["ShuFinalDamPer"];
+        double ShuFinalDamPerRatio = variables["ShuFinalDamPerRatio"];
+        double ShuFinalDamPerDef = variables["ShuFinalDamPerDef"];
+        double ShuFinalDamPerDefRatio = variables["ShuFinalDamPerDefRatio"];
+        double WuFinalDamPer = variables["WuFinalDamPer"];
+        double WuFinalDamPerRatio = variables["WuFinalDamPerRatio"];
+        double WuFinalDamPerDef = variables["WuFinalDamPerDef"];
+        double WuFinalDamPerDefRatio = variables["WuFinalDamPerDefRatio"];
+        double QunFinalDamPer = variables["QunFinalDamPer"];
+        double QunFinalDamPerRatio = variables["QunFinalDamPerRatio"];
+        double QunFinalDamPerDef = variables["QunFinalDamPerDef"];
+        double QunFinalDamPerDefRatio = variables["QunFinalDamPerDefRatio"];
+
+        return (long)(Atk*AtkRatio+MaxHP*MaxHPRatio+Def*DefRatio+(StunRate*StunRateRatio+SuperHitRate*SuperHitRateRatio+ComboRate*ComboRateRatio+MissRate*MissRateRatio+ParryRate*ParryRateRatio+SuckHPPer*SuckHPPerRatio+StunRateDef*StunRateDefRatio+SuperHitRateDef*SuperHitRateDefRatio+ComboRateDef*ComboRateDefRatio+MissRateDef*MissRateDefRatio+ParryRateDef*ParryRateDefRatio+SuckHPPerDef*SuckHPPerDefRatio+FinalDamPer*FinalDamPerRatio+FinalDamPerDef*FinalDamPerDefRatio+PhyDamPer*PhyDamPerRatio+PhyDamPerDef*PhyDamPerDefRatio+MagDamPer*MagDamPerRatio+MagDamPerDef*MagDamPerDefRatio+NormalSkillPer*NormalSkillPerRatio+NormalSkillPerDef*NormalSkillPerDefRatio+AngerSkillPer*AngerSkillPerRatio+AngerSkillPerDef*AngerSkillPerDefRatio+SuperDamPer*SuperDamPerRatio+SuperDamPerDef*SuperDamPerDefRatio+CurePer*CurePerRatio+CurePerDef*CurePerDefRatio+ShieldPer*ShieldPerRatio+ShieldPerDef*ShieldPerDefRatio+DOTPer*DOTPerRatio+DOTPerDef*DOTPerDefRatio+WeiFinalDamPer*WeiFinalDamPerRatio+WeiFinalDamPerDef*WeiFinalDamPerDefRatio+ShuFinalDamPer*ShuFinalDamPerRatio+ShuFinalDamPerDef*ShuFinalDamPerDefRatio+WuFinalDamPer*WuFinalDamPerRatio+WuFinalDamPerDef*WuFinalDamPerDefRatio+QunFinalDamPer*QunFinalDamPerRatio+QunFinalDamPerDef*QunFinalDamPerDefRatio)/100.0-55000);
+    }
+
+    public static double GetSkillsFightPower(Dictionary<string, double> variables)
+    {
+        double SkillPower = variables["SkillPower"];
+        double OfficialLV = variables["OfficialLV"];
+
+        return SkillPower*OfficialLV;
+    }
+
+}
diff --git a/Main/System/Main/FightPowerManager.cs b/Main/System/Main/FightPowerManager.cs
index a73bea9..9af704d 100644
--- a/Main/System/Main/FightPowerManager.cs
+++ b/Main/System/Main/FightPowerManager.cs
@@ -413,7 +413,7 @@
         }
 
 #if UNITY_EDITOR
-        // Debug.Log("鎴樺姏锛氳绠楀畬姣� " + fightPower);
+        Debug.Log("鎴樺姏锛氳绠楀畬姣� " + fightPower);
 #endif
         return fightPower;
     }

--
Gitblit v1.8.0