From e3631d3e1590b5d955a21257a00ec661a5877eb1 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 04 十一月 2025 16:31:41 +0800
Subject: [PATCH] 0312 装备拾取调整:单武将攻击先掉落装备,不管中间发生几次攻击,几次技能 几次掉落都不弹装备,待下一个武将(含敌我)开始攻击前处理装备
---
Main/System/Equip/EquipModel.cs | 81 ++++++++++++++++++++++++++++++++++------
1 files changed, 68 insertions(+), 13 deletions(-)
diff --git a/Main/System/Equip/EquipModel.cs b/Main/System/Equip/EquipModel.cs
index 97ec59d..a0f8ec5 100644
--- a/Main/System/Equip/EquipModel.cs
+++ b/Main/System/Equip/EquipModel.cs
@@ -27,12 +27,15 @@
public List<int> lastDropIndexs = new List<int>(); //涓婁竴娆℃帀钀界墿鍝佺储寮�
+ int lastAttackHeroID = 0;
+
public override void Init()
{
DTCA814_tagMCMakeItemAnswer.MakeItemAnswerEvent += OnEquipResult;
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += BeforePlayerDataInitialize;
- EventBroadcast.Instance.RemoveListener<string, BattleDrops, Action>(EventName.BATTLE_DROP_ITEMS, OnDropEvent);
EventBroadcast.Instance.AddListener<string, BattleDrops, Action>(EventName.BATTLE_DROP_ITEMS, OnDropEvent);
+ EventBroadcast.Instance.AddListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+ EventBroadcast.Instance.AddListener<string>(EventName.RECORDPLAYER_END, RecordPlayerEnd);
ParseConfig();
}
@@ -41,6 +44,8 @@
DTCA814_tagMCMakeItemAnswer.MakeItemAnswerEvent -= OnEquipResult;
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= BeforePlayerDataInitialize;
EventBroadcast.Instance.RemoveListener<string, BattleDrops, Action>(EventName.BATTLE_DROP_ITEMS, OnDropEvent);
+ EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+ EventBroadcast.Instance.RemoveListener<string>(EventName.RECORDPLAYER_END, RecordPlayerEnd);
}
@@ -82,6 +87,7 @@
return -1;
}
+ //琛ㄧ幇鎺夎惤鍜屾嬀鍙栧垎绂诲紑锛屽厛鎺夎惤绛夋湰姝﹀皢鍥炲悎瀹屽叏缁撴潫鍐嶆嬀鍙�
void OnDropEvent(string guid, BattleDrops drops, Action action)
{
if (!string.IsNullOrEmpty(guid))
@@ -93,21 +99,57 @@
action?.Invoke();
}
+ //鎷惧彇鏃舵満涓轰笅涓�姝﹀皢锛堝惈鏁屾垜锛夋敾鍑� 鎴栬�� 鏈疆缁撶畻锛圡ainFightRequest 鍓嶏級
+ void OnSkillCast(string guid, SkillConfig skillConfig, TeamHero teamHero)
+ {
+ bool checkDrop = false;
+ if (!string.IsNullOrEmpty(guid))
+ return;
+
+ //闃茶寖鍥炴敹鎶ラ敊
+ if (teamHero == null)
+ checkDrop = true;
+ //鍙�氱煡鐜╁姝﹀皢鐨勬垬鏂�
+ else if (teamHero.NPCID != 0)
+ checkDrop = true;
+ else if (teamHero.heroId != lastAttackHeroID)
+ {
+ lastAttackHeroID = teamHero.heroId;
+ checkDrop = true;
+ }
+
+ if (checkDrop)
+ {
+ CalcAllFloorItems();
+ }
+ }
+
+
+ void RecordPlayerEnd(string guid)
+ {
+ if (!string.IsNullOrEmpty(guid))
+ return;
+
+ CalcAllFloorItems();
+ }
+
+
//鎺夎惤閫氱煡
public void NotifyItemDrop(List<int> indexs, RectTransform rect)
{
// 鐣岄潰涓嶆樉绀哄垯绔嬪嵆澶勭悊
- if (!UIManager.Instance.IsOpened<HomeWin>())
- {
- for (int i = 0; i < indexs.Count; i++)
- {
- CalcFloorEquip(indexs[i]);
- }
- }
- else
- {
- OnItemDropEvent?.Invoke(indexs, rect);
- }
+ // if (!UIManager.Instance.IsOpened<HomeWin>())
+ // {
+ // for (int i = 0; i < indexs.Count; i++)
+ // {
+ // CalcFloorEquip(indexs[i]);
+ // }
+ // }
+ // else
+ // {
+ // OnItemDropEvent?.Invoke(indexs, rect);
+ // }
+ OnItemDropEvent?.Invoke(indexs, rect);
}
public void CalcFloorEquip(int itemIndex)
@@ -119,7 +161,6 @@
if (item == null)
return;
-
//闈炶嚜鍔ㄦā寮忎笅锛岀瓫閫夎澶囨墦寮�瑁呭鎿嶄綔鐣岄潰
if (IsEquip(item))
{
@@ -131,6 +172,20 @@
}
}
+ //澶勭悊鎵�鏈夋帀钀界殑鐗╁搧
+ public void CalcAllFloorItems()
+ {
+ if (PackManager.Instance.GetSinglePack(PackType.DropItem).GetItems().Count == 0)
+ {
+ return;
+ }
+ //鏋勫缓鎵�鏈夌墿鍝�
+ foreach (var item in PackManager.Instance.GetSinglePack(PackType.DropItem).GetItems())
+ {
+ CalcFloorEquip(item.gridIndex);
+ }
+ }
+
private void OnEquipResult(HA814_tagMCMakeItemAnswer info)
{
if (info.MakeType != (int)MakeType.EquipOP)
--
Gitblit v1.8.0