From dc4f63ae5c9baaf43606544a8ff8da9142b9aa61 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Fri, 26 May 2023 20:45:38 +0800 Subject: [PATCH] fix: :ambulance: fix the bug about SparksNSplash --- logic/GameClass/GameObj/Map/Map.cs | 23 ++++++++++++++++++- logic/Gaming/Game.cs | 6 ++--- .../SkillManager/SkillManager.ActiveSkill.cs | 5 ++-- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/logic/GameClass/GameObj/Map/Map.cs b/logic/GameClass/GameObj/Map/Map.cs index 141db28..93f39da 100644 --- a/logic/GameClass/GameObj/Map/Map.cs +++ b/logic/GameClass/GameObj/Map/Map.cs @@ -173,7 +173,7 @@ namespace GameClass.GameObj return new OutOfBoundBlock(pos); } - public Character? FindPlayer(long playerID) + public Character? FindPlayerInID(long playerID) { Character? player = null; gameObjLockDict[GameObjType.Character].EnterReadLock(); @@ -194,6 +194,27 @@ namespace GameClass.GameObj } return player; } + public Character? FindPlayerInPlayerID(long playerID) + { + Character? player = null; + gameObjLockDict[GameObjType.Character].EnterReadLock(); + try + { + foreach (Character person in gameObjDict[GameObjType.Character]) + { + if (playerID == person.PlayerID) + { + player = person; + break; + } + } + } + finally + { + gameObjLockDict[GameObjType.Character].ExitReadLock(); + } + return player; + } public Ghost? ghost = null; public Character? FindPlayerToAction(long playerID) { diff --git a/logic/Gaming/Game.cs b/logic/Gaming/Game.cs index a9b5b60..0fe1706 100644 --- a/logic/Gaming/Game.cs +++ b/logic/Gaming/Game.cs @@ -102,7 +102,7 @@ namespace Gaming } else { - ICharacter? playerTreated = gameMap.FindPlayer(playerTreatedID); + ICharacter? playerTreated = gameMap.FindPlayerInID(playerTreatedID); if (player != null && playerTreated != null) { if (!playerTreated.IsGhost() && !player.IsGhost()) @@ -123,7 +123,7 @@ namespace Gaming } else { - ICharacter? playerRescued = gameMap.FindPlayer(playerRescuedID); + ICharacter? playerRescued = gameMap.FindPlayerInID(playerRescuedID); if (player != null && playerRescued != null) { if (!playerRescued.IsGhost() && !player.IsGhost()) @@ -267,7 +267,7 @@ namespace Gaming { if (!gameMap.Timer.IsGaming) return false; - Character? player = gameMap.FindPlayer(playerID); + Character? player = gameMap.FindPlayerInID(playerID); if (player != null) { if (player.Occupation.ListOfIActiveSkill.Count <= skillNum) return false; diff --git a/logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs b/logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs index 585e1a4..e6554f3 100644 --- a/logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs +++ b/logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs @@ -160,8 +160,9 @@ namespace Gaming public bool SparksNSplash(Character player, int AttackID) { - Character? whoAttacked = gameMap.FindPlayer(AttackID); - if (whoAttacked == null || whoAttacked.NoHp()) return false; + Character? whoAttacked = gameMap.FindPlayerInPlayerID(AttackID); + if (whoAttacked == null || whoAttacked.NoHp()) + return false; ActiveSkill activeSkill = player.FindActiveSkill(ActiveSkillType.SparksNSplash); return ActiveSkillEffect(activeSkill, player, () =>