From 0dfa5b68d55d2b396d0babae1b2d45e11defed79 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Mon, 15 May 2023 18:25:50 +0800 Subject: [PATCH] feat: :sparkles: add a new parameter of activeskills --- docs/版本更新说明.md | 2 +- logic/Gaming/ActionManager.cs | 10 ++++++---- logic/Gaming/AttackManager.cs | 4 ++++ logic/Gaming/Game.cs | 4 ++-- logic/Gaming/SkillManager/SkillManager.cs | 2 +- logic/Server/RpcServices.cs | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/docs/版本更新说明.md b/docs/版本更新说明.md index 6a1d393..206dc81 100644 --- a/docs/版本更新说明.md +++ b/docs/版本更新说明.md @@ -34,6 +34,6 @@ - docs:更新了 游戏机制与平衡性调整更新草案.pdf - feat:更新了下载器 -# 最新更新 +# 5月15日更新 - feat:Robot可用 - hotfix: 修复了移动相关的bug \ No newline at end of file diff --git a/logic/Gaming/ActionManager.cs b/logic/Gaming/ActionManager.cs index a80cdbf..bbec6e2 100644 --- a/logic/Gaming/ActionManager.cs +++ b/logic/Gaming/ActionManager.cs @@ -392,11 +392,8 @@ namespace Gaming public bool LockOrOpenDoor(Character player) { if (player.CharacterType == CharacterType.Robot) return false; - if (!(player.Commandable()) || player.PlayerState == PlayerStateType.LockingOrOpeningTheDoor) - return false; Door? doorToLock = (Door?)gameMap.OneForInteract(player.Position, GameObjType.Door); - if (doorToLock == null || doorToLock.OpenOrLockDegree > 0 || gameMap.PartInTheSameCell(doorToLock.Position, GameObjType.Character) != null) - return false; + if (doorToLock == null) return false; bool flag = false; foreach (Prop prop in player.PropInventory) { @@ -421,6 +418,11 @@ namespace Gaming } if (!flag) return false; + if (doorToLock.OpenOrLockDegree > 0 || gameMap.PartInTheSameCell(doorToLock.Position, GameObjType.Character) != null) + return false; + if (!(player.Commandable()) || player.PlayerState == PlayerStateType.LockingOrOpeningTheDoor) + return false; + player.SetPlayerState(PlayerStateType.LockingOrOpeningTheDoor); long threadNum = player.StateNum; new Thread diff --git a/logic/Gaming/AttackManager.cs b/logic/Gaming/AttackManager.cs index e551bad..36add52 100644 --- a/logic/Gaming/AttackManager.cs +++ b/logic/Gaming/AttackManager.cs @@ -70,6 +70,10 @@ namespace Gaming if (bullet.CanBeBombed(GameObjType.Generator)) ((Generator)objBeingShot).Repair(-bullet.AP * GameData.factorDamageGenerator, (Character)bullet.Parent!); break; + case GameObjType.Door: + if (bullet.CanBeBombed(GameObjType.Door)) + ; + break; default: break; } diff --git a/logic/Gaming/Game.cs b/logic/Gaming/Game.cs index 8a0dd98..b585a17 100644 --- a/logic/Gaming/Game.cs +++ b/logic/Gaming/Game.cs @@ -253,7 +253,7 @@ namespace Gaming return false; } - public bool UseActiveSkill(long playerID, int skillNum) + public bool UseActiveSkill(long playerID, int skillNum, int parameter) { if (!gameMap.Timer.IsGaming) return false; @@ -261,7 +261,7 @@ namespace Gaming if (player != null) { if (player.Occupation.ListOfIActiveSkill.Count <= skillNum) return false; - return skillManager.UseActiveSkill(player, player.Occupation.ListOfIActiveSkill[skillNum]); + return skillManager.UseActiveSkill(player, player.Occupation.ListOfIActiveSkill[skillNum], parameter); } else return false; diff --git a/logic/Gaming/SkillManager/SkillManager.cs b/logic/Gaming/SkillManager/SkillManager.cs index 59fc7e3..754785d 100644 --- a/logic/Gaming/SkillManager/SkillManager.cs +++ b/logic/Gaming/SkillManager/SkillManager.cs @@ -11,7 +11,7 @@ namespace Gaming readonly SkillManager skillManager; private partial class SkillManager { - public bool UseActiveSkill(Character character, ActiveSkillType activeSkillType) + public bool UseActiveSkill(Character character, ActiveSkillType activeSkillType, int parameter) { if (character.Occupation.ListOfIActiveSkill.Contains(activeSkillType)) switch (activeSkillType) diff --git a/logic/Server/RpcServices.cs b/logic/Server/RpcServices.cs index 30563d5..40624c6 100644 --- a/logic/Server/RpcServices.cs +++ b/logic/Server/RpcServices.cs @@ -346,7 +346,7 @@ namespace Server return Task.FromResult(boolRes); } var gameID = communicationToGameID[request.PlayerId]; - boolRes.ActSuccess = game.UseActiveSkill(gameID, request.SkillId); + boolRes.ActSuccess = game.UseActiveSkill(gameID, request.SkillId, 0); return Task.FromResult(boolRes); }