Ver Fonte

提交圣遗物穿戴bug

SCFC há 10 meses atrás
pai
commit
d9165d2784

+ 2 - 0
script/core/ObjHuman.lua

@@ -100,6 +100,7 @@ local QQBigShot = require("platform.QQBigShot")
 local RebateLogic = require("platform.RebateLogic")
 local HeroPubLogic = require("hero.HeroPubLogic")
 local JjcNewLadderLogic = require("jjcnewladder.jjcNewLadderLogic")
+local WinnerRelicLogic = require("winnerRelic.WinnerRelicLogic")
 
 local Json = require("common.Json")
 
@@ -789,6 +790,7 @@ function onLogin(human, isNew)
 	HeroPubLogic.onLogin(human)
 	QQBigShot.onLogin(human)
 	JjcNewLadderLogic.onLogin(human)
+	WinnerRelicLogic.onLogin(human)
 
     HeroLogLogic.finishTaskCB(human,HeroLogLogic.HERO_LOG_TYPE_1,1)
 	-- 红点 检测   需要放在通用的onLogin 后面  保持数据的正确性 再检测红点

+ 8 - 1
script/module/hecheng/FenjieLogic.lua

@@ -24,6 +24,7 @@ local HeroDefine = require("hero.HeroDefine")
 local EquipLogic = require("equip.EquipLogic")
 local BingshuLogic = require("fuwen.BingshuLogic")
 local FuwenExcel = require("excel.fuwen")
+local WinnerRelicLogic = require("winnerRelic.WinnerRelicLogic")
 
 FENJIE_QUERY = 1		--分解查询
 FENJIE_DO = 2			--祭坛分解
@@ -316,6 +317,11 @@ local function calcHeroOuts(human, mainType, heroIDList, heroIndexList)
 		local heroIndex = heroIndexList[i]
 		local heroGrid = HeroLogic.getHeroGrid(human, heroID, heroIndex)	
 		calcHeroOut(heroGrid, mainType)
+
+		-- 处理遗物
+		if heroGrid and heroGrid.relic then
+			WinnerRelicLogic.WinnerRelic_CancelWinner(human, heroGrid, heroIndex)
+		end
 	end
 
 	-- 材料打折
@@ -364,7 +370,7 @@ function fenjie(human, mainType, heroIDList, heroIndexList, sendNotify, logType)
 	if not checkCanFenjie(human, heroIDList, heroIndexList) then
 		return
 	end
-	
+
     calcHeroOuts(human, mainType, heroIDList, heroIndexList)
 
 	-- 给东西
@@ -375,6 +381,7 @@ function fenjie(human, mainType, heroIDList, heroIndexList, sendNotify, logType)
 		-- 删除英雄
 		for i = 1, heroIndexList[0] do
 			local heroIndex = heroIndexList[i]
+
 			HeroLogic.delHeroByIndex(human, heroIndex, logType)
 
 			cnt = cnt + 1

+ 6 - 0
script/module/hero/HeroLogic.lua

@@ -71,6 +71,7 @@ local HeroExclusiveWeapon = require("hero.HeroExclusiveWeapon")
 local TriggerDefine = require("trigger.TriggerDefine")
 local TriggerLogic = require("trigger.TriggerLogic")
 local HeroPubLogic = require("hero.HeroPubLogic")
+local WinnerRelicLogic = require("winnerRelic.WinnerRelicLogic")
 
 HERO_MAX_STAR    =        15    -- 目前英雄最大星级
 
@@ -2278,6 +2279,11 @@ function resetHero(human, heroID, heroIndex)
 	FuwenLogic.putOffQuick(human, heroID, heroIndex, true)
 	XingYaoGongMing.onDelHero(human,heroGrid,heroIndex)
     heroGrid.fuwen = nil
+
+	if heroGrid.relic then
+		WinnerRelicLogic.WinnerRelic_CancelWinner(human, heroGrid, heroIndex)
+	end
+
     ObjHuman.doCalcHero(human,heroIndex)
     sendHeroBagDynamic(human, heroID, heroIndex)
 	refreshDot(human, heroGrid.uuid)

+ 62 - 0
script/module/winnerRelic/WinnerRelicLogic.lua

@@ -17,10 +17,12 @@ local Util = require("common.Util")
 local TriggerDefine = require("trigger.TriggerDefine")
 local TriggerLogic = require("trigger.TriggerLogic")
 
+
 local LOGTYPE = "WinnerRelic"
 local relicUpgradeConfig = relicModule.RelicUpgrade  -- 获取升级配置表
 local relicDataConfig = relicModule.RelicData       -- 获取遗物数据表
 local COND_TOWER_LEVEL = 500  --开启本系统需要通关恶魔之塔的层数
+local WINNERRELIC_HEROSTAR = 14     -- 需要穿戴的星级
 --[[
     DB =
     {{    	 
@@ -616,4 +618,64 @@ function WinnerRelic_GetRateSpeed(nRelicID, nStar)
         return 0
     end
     return tConfig.nSpeedBonus[nStar]
+end
+
+-- 英雄重置或转换取消圣遗物
+function WinnerRelic_CancelWinner(human, tHeroGrid, nHeroIndex)
+    local tRelicData = human.db.relicListData
+    if not tRelicData then
+        return
+    end
+
+    if not tHeroGrid.relic or nil == _G.next(tHeroGrid.relic) then
+        return
+    end
+
+    local nRelicID = tHeroGrid.relic.relicID
+
+    if not tRelicData.equipped or not tRelicData.equipped[nRelicID] then
+        return
+    end
+
+    for _, v in ipairs(tRelicData.equipped[nRelicID]) do
+        if v == nHeroIndex then
+            table.remove(tRelicData.equipped[nRelicID], nHeroIndex)
+            break
+        end
+    end
+end
+
+function onLogin(human)
+    local tRelicData = human.db.relicListData
+    if not tRelicData then
+        return
+    end
+
+    if not tRelicData.equipped then
+        return
+    end
+
+    for nRelicID, tHeroIndex in pairs(tRelicData.equipped) do
+        local nLen = #tHeroIndex
+        for i = nLen, 1, -1 do
+            local nHeroIndex = tHeroIndex[i]
+            local nHeroID = HeroLogic.getHeroIdByIndex(human, nHeroIndex)
+            local tHeroGrid = HeroLogic.getHeroGrid(human, nHeroID, nHeroIndex)
+            -- 不存在对应的 herogrid了
+            if not tHeroGrid then
+                table.remove(tRelicData.equipped[nRelicID], i)
+            else
+                local nHeroStar = tHeroGrid.star
+                if WINNERRELIC_HEROSTAR > nHeroStar then
+                    -- 先取消穿戴
+                    if tHeroGrid.relic and nil ~= _G.next(tHeroGrid.relic) then
+                        tHeroGrid.relic = {}
+                    end
+                    
+                    -- 移除记录的数据
+                    table.remove(tRelicData.equipped[nRelicID], i)
+                end
+            end
+        end
+    end
 end