法典效果实现

This commit is contained in:
daixiawu 2026-04-10 13:54:25 +08:00
parent f70a6ea985
commit 5bfc01acef
3 changed files with 14 additions and 5 deletions

View File

@ -1568,13 +1568,18 @@ namespace RuntimeData
}
//获取英雄的升级费用值
public int GetHeroFinishTaskCost(GiantType giant)
public int GetHeroFinishTaskCost(GiantType giant, float discount = 1f)
{
foreach (var heroType in HeroList)
if (heroType.GiantType == giant)
{
if(GetHeroTask(giant,out var task))
return task.GetFinishCost() * ((int)heroType.UnitLevel + 1) ;
{
var baseCost = task.GetFinishCost() * ((int)heroType.UnitLevel + 1);
if (discount < 1f && discount > 0f)
return Mathf.CeilToInt(baseCost * discount);
return baseCost;
}
}
return 0;
}

View File

@ -558,7 +558,8 @@ namespace TH1_Logic.Action
{
var player = actionParams.PlayerData;
var heroD = player.PlayerHeroData;
var cost = heroD.GetHeroFinishTaskCost(_actionId.GiantType);
player.GetHeroCostDiscount(actionParams.MapData, out var discount);
var cost = heroD.GetHeroFinishTaskCost(_actionId.GiantType, discount);
var can = heroD.ForceFinishHeroTask(_actionId.GiantType);
if (can)
{
@ -590,7 +591,8 @@ namespace TH1_Logic.Action
//Step #4 如果是玩家,检查文化值是否够
if (actionParams.PlayerData == actionParams.MapData.PlayerMap.SelfPlayerData)
{
var cost = heroD.GetHeroFinishTaskCost(_actionId.GiantType);
player.GetHeroCostDiscount(actionParams.MapData, out var discount);
var cost = heroD.GetHeroFinishTaskCost(_actionId.GiantType, discount);
if (cost > actionParams.PlayerData.PlayerCultureInfo.PlayerCulture)
return false;
}

View File

@ -193,7 +193,9 @@ namespace TH1_UI.View.Info
var taskFinishedDesc = Table.Instance.TextDataAssets.HeroTaskFinishedDesc;
var finished = task.CheckFinished(Main.MapData, Main.MapData.PlayerMap.SelfPlayerData);
var cost = task.GetFinishCost() * (giantLevel + 1);
var selfPlayer = Main.MapData.PlayerMap.SelfPlayerData;
selfPlayer.GetHeroCostDiscount(Main.MapData, out var discount);
var cost = selfPlayer.PlayerHeroData.GetHeroFinishTaskCost(giantType, discount);
ForceFinishCost.text = cost.ToString();
ForceFinishCost.color = Color.red;
ForceFinishButton.onClick.RemoveAllListeners();