From 065eace167bd96e4fb56d41c7f90459213a5771f Mon Sep 17 00:00:00 2001 From: xxyheaven <1433191064@qq.com> Date: Sun, 5 May 2024 11:26:25 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=A3=85=E5=A4=87=E7=89=8C=E5=92=8C?= =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E9=94=A6=E5=9B=8A=E8=80=83=E8=99=91=E6=97=A0?= =?UTF-8?q?=E6=95=88=EF=BC=9B=202=E3=80=81move=E7=9A=84player=E6=94=AF?= =?UTF-8?q?=E6=8C=81id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/server/room.lua | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/lua/server/room.lua b/lua/server/room.lua index 9610fb9..2414028 100644 --- a/lua/server/room.lua +++ b/lua/server/room.lua @@ -2748,14 +2748,8 @@ function Room:doCardUseEffect(cardUseEvent) return end - if self:getPlayerById(TargetGroup:getRealTargets(cardUseEvent.tos)[1]).dead then - self:moveCards({ - ids = realCardIds, - toArea = Card.DiscardPile, - moveReason = fk.ReasonPutIntoDiscardPile, - }) - else - local target = TargetGroup:getRealTargets(cardUseEvent.tos)[1] + local target = TargetGroup:getRealTargets(cardUseEvent.tos)[1] + if not (self:getPlayerById(target).dead or table.contains((cardUseEvent.nullifiedTargets or Util.DummyTable), target)) then local existingEquipId = self:getPlayerById(target):getEquipment(cardUseEvent.card.sub_type) if existingEquipId then self:moveCards( @@ -2789,7 +2783,7 @@ function Room:doCardUseEffect(cardUseEvent) end local target = TargetGroup:getRealTargets(cardUseEvent.tos)[1] - if not self:getPlayerById(target).dead then + if not (self:getPlayerById(target).dead or table.contains((cardUseEvent.nullifiedTargets or Util.DummyTable), target)) then local findSameCard = false for _, cardId in ipairs(self:getPlayerById(target):getCardIds(Player.Judge)) do if Fk:getCardById(cardId).trueName == cardUseEvent.card.trueName then @@ -2820,12 +2814,6 @@ function Room:doCardUseEffect(cardUseEvent) end end - self:moveCards({ - ids = realCardIds, - toArea = Card.DiscardPile, - moveReason = fk.ReasonPutIntoDiscardPile, - }) - return end @@ -3123,10 +3111,8 @@ end ---@param moveMark? table|string @ 移动后自动赋予标记,格式:{标记名(支持-inarea后缀,移出值代表区域后清除), 值} ---@param visiblePlayers? integer|integer[] @ 控制移动对特定角色可见(在moveVisible为false时生效) function Room:obtainCard(player, card, unhide, reason, proposer, skill_name, moveMark, visiblePlayers) - if type(player) == "number" then - player = self:getPlayerById(player) - end - self:moveCardTo(card, Card.PlayerHand, player, reason, skill_name, nil, unhide, proposer or player.id, moveMark, visiblePlayers) + local pid = type(player) == "number" and player or player.id + self:moveCardTo(card, Card.PlayerHand, player, reason, skill_name, nil, unhide, proposer or pid, moveMark, visiblePlayers) end --- 让玩家摸牌 @@ -3168,7 +3154,7 @@ end --- 将一张或多张牌移动到某处 ---@param card integer | integer[] | Card | Card[] @ 要移动的牌 ---@param to_place integer @ 移动的目标位置 ----@param target? ServerPlayer @ 移动的目标角色 +---@param target? ServerPlayer|integer @ 移动的目标角色 ---@param reason? integer @ 移动时使用的移牌原因 ---@param skill_name? string @ 技能名 ---@param special_name? string @ 私人牌堆名 @@ -3186,7 +3172,12 @@ function Room:moveCardTo(card, to_place, target, reason, skill_name, special_nam if table.contains( {Card.PlayerEquip, Card.PlayerHand, Card.PlayerJudge, Card.PlayerSpecial}, to_place) then - to = target.id + assert(target) + if type(target) == "number" then + to = target + else + to = target.id + end end local movesSplitedByOwner = {} -- Gitee