From f3ae8542aee4b5de78fc20d9543bb424b315708f Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 10 九月 2025 14:23:47 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/HeroUI/HeroUIManager.Reborn.cs |  129 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 126 insertions(+), 3 deletions(-)

diff --git a/Main/System/HeroUI/HeroUIManager.Reborn.cs b/Main/System/HeroUI/HeroUIManager.Reborn.cs
index 23064e3..18aee2a 100644
--- a/Main/System/HeroUI/HeroUIManager.Reborn.cs
+++ b/Main/System/HeroUI/HeroUIManager.Reborn.cs
@@ -1,17 +1,20 @@
 锘縰sing System;
 using System.Collections;
 using System.Collections.Generic;
+using System.Linq;
 
 using UnityEngine;
 
+//閲嶇敓 閬f暎
 public partial class HeroUIManager : GameSystemManager<HeroUIManager>
 {
 
-
-    #region 閲嶇敓 閬f暎
     public int awakeRebirthCnt { get; private set; }
     public int payBackMoneyType;
     public int rebornAwakeHeroMaxCount; //瑙夐啋姝﹀皢姣忔棩鐨勬渶澶ч噸鐢熸鏁�
+    public string rebornFormula;    //閲嶇敓绛夌骇閲嶇疆鐨勬秷鑰楋紝鍙傛暟 heroLV姝﹀皢绛夌骇锛屾渶缁堟秷鑰椾负鍏紡+瑙夐啋娑堣��
+    public int rebornPayBackPer;    //閲嶇敓杩旇繕鐨勭櫨鍒嗘瘮
+    public int deletePayBackPer;    //閬f暎杩旇繕鐨勭櫨鍒嗘瘮
 
     public List<string> heroDeleteSortList { get; private set; } = new List<string>();
     public int selectHeroDeleteListJob = 0;    //绛涢�夎亴涓�
@@ -143,7 +146,127 @@
     }
 
 
-    #endregion
+    public void ResetBtnClick(HeroInfo hero)
+    {
+        //鍗囩骇銆佺獊鐮淬�佽閱�
+        if (hero.heroLevel == 1 && hero.breakLevel == 0 && hero.awakeLevel == 0)
+        {
+            SysNotifyMgr.Instance.ShowTip("HeroCanNotReset");
+            return;
+        }
 
+        //娲楃偧鍜岃閱掔殑澶╄祴鏈鐞嗕笉鍙悶鍣�
+        if (hero.talentRandomIDList.Count > 0)
+        {
+            SysNotifyMgr.Instance.ShowTip("HeroGift4");
+            return;
+        }
+
+        if (hero.talentAwakeRandomIDList.Count > 0)
+        {
+            SysNotifyMgr.Instance.ShowTip("HeroGift5");
+            return;
+        }
+
+
+        List<Item> items = new List<Item>();
+        var payBack1 = CommonFunc.AddDict(GetHeroLVPayBack(hero.Quality, hero.heroLevel), GetHeroBreakPayBack(hero.Quality, hero.breakLevel));
+
+        Dictionary<string, double> rebornParam = new Dictionary<string, double>();  //閲嶇敓娑堣�楀叕寮忓弬鏁�
+        //鍏堣绠楁湁娌℃秷鑰�
+        rebornParam.Add("heroLV", hero.heroLevel);
+        int costCnt = (int)JaceCalculator.Calculate(rebornFormula, rebornParam);
+        
+        //閲嶇敓绛夌骇閲嶇疆鐨勬秷鑰楋紝鍙傛暟 heroLV姝﹀皢绛夌骇锛屾渶缁堟秷鑰椾负鍏紡+瑙夐啋娑堣��
+        if (hero.awakeLevel == 0)
+        {
+            //璁$畻杩旇繕姣斾緥
+            var _list = payBack1.Keys.ToList();
+            foreach (var key in _list)
+            {
+                payBack1[key] = Math.Max((long)(payBack1[key] * rebornPayBackPer / 100.0), 1);
+            }
+
+            items = CommonFunc.ChangeToItemList(payBack1);
+
+            if (costCnt == 0)
+            {
+                //鏃犳秷鑰楁樉绀�
+                ConfirmCancel.ShowItemsConfirm(items, Language.Get("herocard42"), Language.Get("herocard43"), (bool isOk) =>
+                {
+                    if (isOk)
+                    {
+                        //鍙戝寘
+                        SendReborn(hero);
+                    }
+                }, itemName:$"( {rebornPayBackPer}% )");
+            }
+            else
+            {
+                //鏈夋秷鑰楁樉绀�
+                ConfirmCancel.ShowItemsConfirm(items, Language.Get("herocard42"), Language.Get("herocard43"), (bool isOk) =>
+                {
+                    if (isOk)
+                    {
+                        if (UIHelper.GetMoneyCnt(payBackMoneyType) < costCnt)
+                        {
+                            ItemTipUtility.ShowMoneyTip(payBackMoneyType);
+                            return;
+                        }
+                        //鍙戝寘
+                        SendReborn(hero);
+                    }
+                }, "", "", costCnt, payBackMoneyType, $"( {rebornPayBackPer}% )");
+            }
+        }
+        else
+        {
+
+            if (awakeRebirthCnt >= rebornAwakeHeroMaxCount)
+            {
+                SysNotifyMgr.Instance.ShowTip("HeroRebornAwakeMax");
+                return;
+            }
+
+            payBack1 = CommonFunc.AddDict(payBack1, GetHeroQualityAwakePayBack(hero.Quality, hero.awakeLevel));
+
+            //璁$畻杩旇繕姣斾緥
+            var _list = payBack1.Keys.ToList();
+            foreach (var key in _list)
+            {
+                payBack1[key] = Math.Max((long)(payBack1[key] * rebornPayBackPer / 100.0), 1);
+            }
+
+
+            items = CommonFunc.ChangeToItemList(payBack1);
+            var info2 = Language.Get("herocard44", rebornAwakeHeroMaxCount - awakeRebirthCnt);
+            var payBackMoney = HeroQualityAwakeConfig.GetQualityAwakeConfig(hero.Quality, hero.awakeLevel).RebirthCostMoney + costCnt;
+            ConfirmCancel.ShowItemsConfirm(items, Language.Get("herocard42"), Language.Get("herocard43"), (bool isOk) =>
+            {
+                if (isOk)
+                {
+                    if (UIHelper.GetMoneyCnt(payBackMoneyType) < payBackMoney)
+                    {
+                        ItemTipUtility.ShowMoneyTip(payBackMoneyType);
+                        return;
+                    }
+                    //鍙戝寘
+                    SendReborn(hero);
+                }
+            }, info2, "", payBackMoney, payBackMoneyType, $"( {rebornPayBackPer}% )");
+
+        }
+
+    }
+
+    void SendReborn(HeroInfo hero)
+    {
+        var pack = new CB239_tagCSHeroRebirth();
+        pack.ItemIndex = (ushort)hero.itemHero.gridIndex;
+        GameNetSystem.Instance.SendInfo(pack);
+
+        lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculatePower(false));
+
+    }
 }
 

--
Gitblit v1.8.0