From 8ca9f9154c5a43db25914b2192dace7fad44d3c1 Mon Sep 17 00:00:00 2001 From: Ho-spair <62695577+Ho-spair@users.noreply.github.com> Date: Sun, 16 Jul 2023 19:18:43 +0800 Subject: [PATCH] Skip nullification (#227) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 完善移动场上一张牌移动虚拟牌及选框中显示逻辑,并增加排除特定卡牌id的参数; - 多目标锦囊牌询问无懈时新增“本轮忽略”功能; - 修复传导伤害额外传导自身的问题。 --- Fk/Pages/Room.qml | 11 ++++ Fk/Pages/RoomLogic.js | 14 +++- Fk/RoomElement/MoveCardInBoardBox.qml | 4 +- lua/client/client_util.lua | 9 ++- lua/client/i18n/zh_CN.lua | 1 + lua/core/player.lua | 7 +- lua/server/events/hp.lua | 4 +- lua/server/events/movecard.lua | 3 - lua/server/room.lua | 60 ++++++++++++++---- packages/standard/aux_skills.lua | 13 +++- packages/standard/init.lua | 20 +++++- .../test/image/generals/blank_nvshibing.jpg | Bin 0 -> 35086 bytes .../test/image/generals/blank_shibing.jpg | Bin 0 -> 32175 bytes packages/test/init.lua | 13 ++++ 14 files changed, 128 insertions(+), 31 deletions(-) create mode 100644 packages/test/image/generals/blank_nvshibing.jpg create mode 100644 packages/test/image/generals/blank_shibing.jpg diff --git a/Fk/Pages/Room.qml b/Fk/Pages/Room.qml index eee7812b..4e2bbf15 100644 --- a/Fk/Pages/Room.qml +++ b/Fk/Pages/Room.qml @@ -42,6 +42,7 @@ Item { property bool respond_play: false property bool autoPending: false property var extra_data: ({}) + property var skippedUseEventId: [] Image { source: config.roomBg @@ -571,6 +572,16 @@ Item { spacing: 20 visible: false + Button { + id: skipNullificationButton + text: Backend.translate("SkipNullification") + visible: !!extra_data.useEventId && !skippedUseEventId.find(id => id === extra_data.useEventId) + onClicked: { + skippedUseEventId.push(extra_data.useEventId); + Logic.doCancelButton(); + } + } + Button { id: okButton text: Backend.translate("OK") diff --git a/Fk/Pages/RoomLogic.js b/Fk/Pages/RoomLogic.js index b7f84964..62d460e7 100644 --- a/Fk/Pages/RoomLogic.js +++ b/Fk/Pages/RoomLogic.js @@ -999,20 +999,22 @@ callbacks["AskForCardsChosen"] = (jsonData) => { callbacks["AskForMoveCardInBoard"] = (jsonData) => { const data = JSON.parse(jsonData); - const { cards, cardsPosition, generalNames } = data; + const { cards, cardsPosition, generalNames, playerIds } = data; roomScene.state = "replying"; roomScene.popupBox.sourceComponent = Qt.createComponent("../RoomElement/MoveCardInBoardBox.qml"); const boxCards = []; cards.forEach(id => { - const d = Backend.callLuaFunction("GetCardData", [id]); + const cardPos = cardsPosition[cards.findIndex(cid => cid === id)]; + const d = Backend.callLuaFunction("GetCardData", [id, playerIds[cardPos]]); boxCards.push(JSON.parse(d)); }); const box = roomScene.popupBox.item; box.cards = boxCards; box.cardsPosition = cardsPosition; + box.playerIds = playerIds; box.generalNames = generalNames.map(name => { const namesSplited = name.split('/'); return namesSplited.length > 1 ? namesSplited.map(nameSplited => Backend.translate(nameSplited)).join('/') : Backend.translate(name) @@ -1127,7 +1129,13 @@ callbacks["AskForUseCard"] = (jsonData) => { const prompt = data[2]; const extra_data = data[4]; if (extra_data != null) { - roomScene.extra_data = extra_data; + if (extra_data.effectTo !== Self.id && roomScene.skippedUseEventId.find(id => id === extra_data.useEventId)) { + doCancelButton(); + return; + } else { + console.log(extra_data); + roomScene.extra_data = extra_data; + } } if (prompt === "") { diff --git a/Fk/RoomElement/MoveCardInBoardBox.qml b/Fk/RoomElement/MoveCardInBoardBox.qml index dac68c97..f88f3773 100644 --- a/Fk/RoomElement/MoveCardInBoardBox.qml +++ b/Fk/RoomElement/MoveCardInBoardBox.qml @@ -9,6 +9,7 @@ GraphicsBox { property var cards: [] property var cardsPosition: [] property var generalNames: [] + property var playerIds: [] property var result property int padding: 25 @@ -64,7 +65,7 @@ GraphicsBox { Text { horizontalAlignment: Text.AlignHCenter anchors.centerIn: parent - text: Backend.translate(JSON.parse(Backend.callLuaFunction("GetCardData", [modelData.cid])).subtype) + text: Backend.translate(modelData.subtype) color: "#90765F" font.family: fontLibian.name font.pixelSize: 16 @@ -100,6 +101,7 @@ GraphicsBox { name: modelData.name suit: modelData.suit number: modelData.number + virt_name: modelData.virt_name || '' selectable: !result || result.item === this onClicked: { diff --git a/lua/client/client_util.lua b/lua/client/client_util.lua index 5ca9063d..db5446a8 100644 --- a/lua/client/client_util.lua +++ b/lua/client/client_util.lua @@ -76,7 +76,7 @@ local cardSubtypeStrings = { [Card.SubtypeTreasure] = "treasure", } -function GetCardData(id) +function GetCardData(id, virtualCardForm) local card = Fk:getCardById(id) if card == nil then return json.encode{ cid = id, @@ -106,6 +106,13 @@ function GetCardData(id) ret.name = orig.name ret.virt_name = card.name end + if virtualCardForm then + local virtualCard = ClientInstance:getPlayerById(virtualCardForm):getVirualEquip(id) + if virtualCard then + ret.virt_name = virtualCard.name + ret.subtype = cardSubtypeStrings[virtualCard.sub_type] + end + end return json.encode(ret) end diff --git a/lua/client/i18n/zh_CN.lua b/lua/client/i18n/zh_CN.lua index e2667000..8d04fb5a 100644 --- a/lua/client/i18n/zh_CN.lua +++ b/lua/client/i18n/zh_CN.lua @@ -137,6 +137,7 @@ FreeKill使用的是libgit2的C API,与此同时使用Git完成拓展包的下 ["Exit Lobby"] = "退出大厅", + ["SkipNullification"] = "本轮忽略", ["OK"] = "确定", ["Cancel"] = "取消", ["End"] = "结束", diff --git a/lua/core/player.lua b/lua/core/player.lua index e6bf3398..61257d1a 100644 --- a/lua/core/player.lua +++ b/lua/core/player.lua @@ -856,7 +856,7 @@ function Player:canMoveCardInBoardTo(to, id) return false end - local card = Fk:getCardById(id) + local card = self:getVirualEquip(id) or Fk:getCardById(id) assert(card.type == Card.TypeEquip or card.sub_type == Card.SubtypeDelayedTrick) if card.type == Card.TypeEquip then @@ -868,12 +868,13 @@ function Player:canMoveCardInBoardTo(to, id) end end -function Player:canMoveCardsInBoardTo(to, flag) +function Player:canMoveCardsInBoardTo(to, flag, excludeIds) if self == to then return false end assert(flag == nil or flag == "e" or flag == "j") + excludeIds = type(excludeIds) == "table" and excludeIds or {} local areas = {} if flag == "e" then @@ -885,7 +886,7 @@ function Player:canMoveCardsInBoardTo(to, flag) end for _, cardId in ipairs(self:getCardIds(areas)) do - if self:canMoveCardInBoardTo(to, cardId) then + if not table.contains(excludeIds, cardId) and self:canMoveCardInBoardTo(to, cardId) then return true end end diff --git a/lua/server/events/hp.lua b/lua/server/events/hp.lua index ce417a70..d647d622 100644 --- a/lua/server/events/hp.lua +++ b/lua/server/events/hp.lua @@ -191,7 +191,7 @@ GameEvent.exit_funcs[GameEvent.Damage] = function(self) room.logic:trigger(fk.DamageFinished, damageStruct.to, damageStruct) if damageStruct.beginnerOfTheDamage and not damageStruct.chain then - local targets = table.filter(room:getAlivePlayers(), function(p) + local targets = table.filter(room:getOtherPlayers(damageStruct.to), function(p) return p.chained end) for _, p in ipairs(targets) do @@ -225,7 +225,7 @@ GameEvent.functions[GameEvent.LoseHp] = function(self) self.logic:breakEvent(false) end - if not self:changeHp(player, -num, "loseHp", skillName) then + if not self:changeHp(player, -data.num, "loseHp", skillName) then self.logic:breakEvent(false) end diff --git a/lua/server/events/movecard.lua b/lua/server/events/movecard.lua index 25bf9c7b..99a38102 100644 --- a/lua/server/events/movecard.lua +++ b/lua/server/events/movecard.lua @@ -62,12 +62,10 @@ GameEvent.functions[GameEvent.MoveCards] = function(self) for _, info in ipairs(data.moveInfo) do local realFromArea = self:getCardArea(info.cardId) local playerAreas = { Player.Hand, Player.Equip, Player.Judge, Player.Special } - local virtualEquip if table.contains(playerAreas, realFromArea) and data.from then local from = self:getPlayerById(data.from) from:removeCards(realFromArea, { info.cardId }, info.fromSpecialName) - virtualEquip = from:getVirualEquip(info.cardId) elseif realFromArea ~= Card.Unknown then local fromAreaIds = {} @@ -86,7 +84,6 @@ GameEvent.functions[GameEvent.MoveCards] = function(self) if table.contains(playerAreas, data.toArea) and data.to then local to = self:getPlayerById(data.to) - if virtualEquip then to:addVirtualEquip(virtualEquip) end to:addCards(data.toArea, { info.cardId }, data.specialName) else diff --git a/lua/server/room.lua b/lua/server/room.lua index d6da4487..076728b1 100644 --- a/lua/server/room.lua +++ b/lua/server/room.lua @@ -790,6 +790,20 @@ function Room:notifyMoveCards(players, card_moves, forceVisible) return false end + for _, info in ipairs(move.moveInfo) do + local realFromArea = self:getCardArea(info.cardId) + local playerAreas = { Player.Hand, Player.Equip, Player.Judge, Player.Special } + local virtualEquip + + if table.contains(playerAreas, realFromArea) and move.from then + virtualEquip = self:getPlayerById(move.from):getVirualEquip(info.cardId) + end + + if table.contains(playerAreas, move.toArea) and move.to and virtualEquip then + self:getPlayerById(move.to):addVirtualEquip(virtualEquip) + end + end + -- forceVisible make the move visible -- FIXME: move.moveInfo is an array, fix this move.moveVisible = move.moveVisible or (forceVisible) @@ -1840,26 +1854,29 @@ end ---@param skillName string @ 技能名 ---@param flag string|null @ 限定可移动的区域,值为nil(装备区和判定区)、‘e’或‘j’ ---@param moveFrom ServerPlayer|null @ 是否只是目标1移动给目标2 ----@return table<"card"|"from"|"to"> @ 选择的卡牌、起点玩家id和终点玩家id列表 -function Room:askForMoveCardInBoard(player, targetOne, targetTwo, skillName, flag, moveFrom) +---@param excludeIds CardId[]|null @ 本次不可移动的卡牌id +---@return table<"card"|"from"|"to">|null @ 选择的卡牌、起点玩家id和终点玩家id列表 +function Room:askForMoveCardInBoard(player, targetOne, targetTwo, skillName, flag, moveFrom, excludeIds) if flag then assert(flag == "e" or flag == "j") end + excludeIds = type(excludeIds) == "table" and excludeIds or {} + local cards = {} local cardsPosition = {} if not flag or flag == "e" then if not moveFrom or moveFrom == targetOne then for _, equipId in ipairs(targetOne:getCardIds(Player.Equip)) do - if targetOne:canMoveCardInBoardTo(targetTwo, equipId) then + if not table.contains(excludeIds, equipId) and targetOne:canMoveCardInBoardTo(targetTwo, equipId) then table.insert(cards, equipId) end end end if not moveFrom or moveFrom == targetTwo then for _, equipId in ipairs(targetTwo:getCardIds(Player.Equip)) do - if targetTwo:canMoveCardInBoardTo(targetOne, equipId) then + if not table.contains(excludeIds, equipId) and targetTwo:canMoveCardInBoardTo(targetOne, equipId) then table.insert(cards, equipId) end end @@ -1882,7 +1899,7 @@ function Room:askForMoveCardInBoard(player, targetOne, targetTwo, skillName, fla if not flag or flag == "j" then if not moveFrom or moveFrom == targetOne then for _, trickId in ipairs(targetOne:getCardIds(Player.Judge)) do - if targetOne:canMoveCardInBoardTo(targetTwo, trickId) then + if not table.contains(excludeIds, trickId) and targetOne:canMoveCardInBoardTo(targetTwo, trickId) then table.insert(cards, trickId) table.insert(cardsPosition, 0) end @@ -1890,7 +1907,7 @@ function Room:askForMoveCardInBoard(player, targetOne, targetTwo, skillName, fla end if not moveFrom or moveFrom == targetTwo then for _, trickId in ipairs(targetTwo:getCardIds(Player.Judge)) do - if targetTwo:canMoveCardInBoardTo(targetOne, trickId) then + if not table.contains(excludeIds, trickId) and targetTwo:canMoveCardInBoardTo(targetOne, trickId) then table.insert(cards, trickId) table.insert(cardsPosition, 1) end @@ -1905,7 +1922,12 @@ function Room:askForMoveCardInBoard(player, targetOne, targetTwo, skillName, fla local firstGeneralName = targetOne.general + (targetOne.deputyGeneral ~= "" and ("/" .. targetOne.deputyGeneral) or "") local secGeneralName = targetTwo.general + (targetTwo.deputyGeneral ~= "" and ("/" .. targetTwo.deputyGeneral) or "") - local data = { cards = cards, cardsPosition = cardsPosition, generalNames = { firstGeneralName, secGeneralName } } + local data = { + cards = cards, + cardsPosition = cardsPosition, + generalNames = { firstGeneralName, secGeneralName }, + playerIds = { targetOne.id, targetTwo.id } + } local command = "AskForMoveCardInBoard" self:notifyMoveFocus(player, command) local result = self:doRequest(player, command, json.encode(data)) @@ -1917,8 +1939,8 @@ function Room:askForMoveCardInBoard(player, targetOne, targetTwo, skillName, fla result = json.decode(result) end - local cardToMove = Fk:getCardById(result.cardId) local from, to = result.pos == 0 and targetOne, targetTwo or targetTwo, targetOne + local cardToMove = self:getCardOwner(result.cardId):getVirualEquip(result.cardId) or Fk:getCardById(result.cardId) self:moveCardTo( cardToMove, cardToMove.type == Card.TypeEquip and Player.Equip or Player.Judge, @@ -1940,16 +1962,18 @@ end ---@param flag string|null @ 限定可移动的区域,值为nil(装备区和判定区)、‘e’或‘j’ ---@param no_indicate boolean|nil @ 是否不显示指示线 ---@return integer[] @ 选择的玩家id列表,可能为空 -function Room:askForChooseToMoveCardInBoard(player, prompt, skillName, cancelable, flag, no_indicate) +function Room:askForChooseToMoveCardInBoard(player, prompt, skillName, cancelable, flag, no_indicate, excludeIds) if flag then assert(flag == "e" or flag == "j") end cancelable = (cancelable == nil) and true or cancelable no_indicate = (no_indicate == nil) and true or no_indicate + excludeIds = type(excludeIds) == "table" and excludeIds or {} local data = { flag = flag, skillName = skillName, + excludeIds = excludeIds, } local _, ret = self:askForUseActiveSkill( player, @@ -1966,7 +1990,7 @@ function Room:askForChooseToMoveCardInBoard(player, prompt, skillName, cancelabl if cancelable then return {} else - return self:canMoveCardInBoard(flag) + return self:canMoveCardInBoard(flag, excludeIds) end end end @@ -2371,7 +2395,15 @@ function Room:handleCardEffect(event, cardEffectEvent) elseif cardEffectEvent.from then prompt = "#AskForNullificationWithoutTo:" .. cardEffectEvent.from .. "::" .. cardEffectEvent.card.name end - local use = self:askForNullification(players, nil, nil, prompt) + + local extra_data + if #TargetGroup:getRealTargets(cardEffectEvent.tos) > 1 then + local parentUseEvent = self.logic:getCurrentEvent():findParent(GameEvent.UseCard) + if parentUseEvent then + extra_data = { useEventId = parentUseEvent.id, effectTo = cardEffectEvent.to } + end + end + local use = self:askForNullification(players, nil, nil, prompt, true, extra_data) if use then use.toCard = cardEffectEvent.card use.responseToEvent = cardEffectEvent @@ -3062,18 +3094,20 @@ end ---@param flag string|null ---@param players ServerPlayer[]|null +---@param excludeIds CardId[]|null ---@return PlayerId[] @ 可能为空 -function Room:canMoveCardInBoard(flag, players) +function Room:canMoveCardInBoard(flag, players, excludeIds) if flag then assert(flag == "e" or flag == "j") end players = players or self.alive_players + excludeIds = type(excludeIds) == "table" and excludeIds or {} local targets = {} table.find(players, function(p) local canMoveTo = table.find(players, function(another) - return p ~= another and p:canMoveCardsInBoardTo(another, flag) + return p ~= another and p:canMoveCardsInBoardTo(another, flag, excludeIds) end) if canMoveTo then diff --git a/packages/standard/aux_skills.lua b/packages/standard/aux_skills.lua index 587a3041..a85d6592 100644 --- a/packages/standard/aux_skills.lua +++ b/packages/standard/aux_skills.lua @@ -99,10 +99,19 @@ local choosePlayersToMoveCardInBoardSkill = fk.CreateActiveSkill{ target_filter = function(self, to_select, selected, cards) local target = Fk:currentRoom():getPlayerById(to_select) if #selected > 0 then - return Fk:currentRoom():getPlayerById(selected[1]):canMoveCardsInBoardTo(target, self.flag) + return Fk:currentRoom():getPlayerById(selected[1]):canMoveCardsInBoardTo(target, self.flag, self.excludeIds) end - return #target:getCardIds({ Player.Equip, Player.Judge }) > 0 + local fromAreas = { Player.Equip, Player.Judge } + if self.flag == "e" then + fromAreas = { Player.Equip } + elseif self.flag == "j" then + fromAreas = { Player.Judge } + end + + return #table.filter(target:getCardIds(fromAreas), function(id) + return not table.contains((type(self.excludeIds) == "table" and self.excludeIds or {}), id) + end) > 0 end, } diff --git a/packages/standard/init.lua b/packages/standard/init.lua index f0086786..6dfecee3 100644 --- a/packages/standard/init.lua +++ b/packages/standard/init.lua @@ -1092,8 +1092,22 @@ local role_mode = fk.CreateGameMode{ roleTable = roleTable[#Fk:currentRoom().players] if Self.role == "renegade" then - roleCheck = #Fk:currentRoom().alive_players == 2 - roleText = "only you and me" + local rebelNum = #table.filter(roleTable, function(role) + return role == "rebel" + end) + + for _, p in ipairs(Fk:currentRoom().players) do + if p.role == "rebel" then + if not p.dead then + break + else + rebelNum = rebelNum - 1 + end + end + end + + roleCheck = rebelNum == 0 + roleText = "left lord and loyalist alive" elseif Self.role == "rebel" then local rebelNum = #table.filter(roleTable, function(role) return role == "rebel" @@ -1162,7 +1176,7 @@ local role_mode = fk.CreateGameMode{ extension:addGameMode(role_mode) Fk:loadTranslationTable{ ["time limitation: 5 sec"] = "游戏时长达到5秒(测试用)", - ["only you and me"] = "仅剩你和主公存活", + ["left lord and loyalist alive"] = "仅剩你和主忠方存活", ["left one rebel alive"] = "反贼仅剩你存活且不存在存活内奸", ["left you alive"] = "主忠方仅剩你存活且其他阵营仅剩一方", ["loyalist never surrender"] = "忠臣永不投降!", diff --git a/packages/test/image/generals/blank_nvshibing.jpg b/packages/test/image/generals/blank_nvshibing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfe78c151f4e11db846fe517037594cab188c30c GIT binary patch literal 35086 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 E*&$P({{R30 literal 0 HcmV?d00001 diff --git a/packages/test/image/generals/blank_shibing.jpg b/packages/test/image/generals/blank_shibing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03253f3d200ab073564f5875b65c16feb3d12e22 GIT binary patch literal 32175 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 s04If-l4~Juwj*8?n;)6G