diff --git a/Fk/Pages/Room.qml b/Fk/Pages/Room.qml index b9d19dac..86adad99 100644 --- a/Fk/Pages/Room.qml +++ b/Fk/Pages/Room.qml @@ -479,8 +479,6 @@ Item { onCardSelected: function(card) { Logic.enableTargets(card); - roomScene.resetPrompt(); - if (typeof card === "number" && card !== -1 && roomScene.state === "playing" && JSON.parse(Backend.callLuaFunction("GetPlayerHandcards", [Self.id])).includes(card)) { diff --git a/Fk/RoomElement/Dashboard.qml b/Fk/RoomElement/Dashboard.qml index 9e87ab6c..53986a8f 100644 --- a/Fk/RoomElement/Dashboard.qml +++ b/Fk/RoomElement/Dashboard.qml @@ -267,6 +267,7 @@ RowLayout { } else { handcardAreaItem.unselectAll(); selected_card = -1; + roomScene.resetPrompt(); } cardSelected(selected_card); } diff --git a/lua/client/client.lua b/lua/client/client.lua index 3b79f51a..138c355a 100644 --- a/lua/client/client.lua +++ b/lua/client/client.lua @@ -109,8 +109,8 @@ function Client:moveCards(moves) pcardMax = from:getMaxCards(), id = move.from, }) - if from.id ~= Self.id and move.fromArea == Card.PlayerHand then - for i = 1, #move.ids do + if move.fromArea == Card.PlayerHand and not Self:isBuddy(self:getPlayerById(move.from)) then + for _ = 1, #move.ids do table.remove(from.player_cards[Player.Hand]) end else diff --git a/lua/client/client_util.lua b/lua/client/client_util.lua index 4e6e131a..f8e552b2 100644 --- a/lua/client/client_util.lua +++ b/lua/client/client_util.lua @@ -613,7 +613,7 @@ end function GetPlayerHandcards(pid) local c = ClientInstance local p = c:getPlayerById(pid) - return json.encode(p.player_cards[Player.Hand]) + return p and json.encode(p.player_cards[Player.Hand]) or "" end function GetPlayerEquips(pid) diff --git a/lua/core/skill_type/filter.lua b/lua/core/skill_type/filter.lua index aafe5def..2538a2a8 100644 --- a/lua/core/skill_type/filter.lua +++ b/lua/core/skill_type/filter.lua @@ -4,11 +4,14 @@ local FilterSkill = StatusSkill:subclass("FilterSkill") ---@param card Card +---@param player Player +---@param isJudgeEvent bool function FilterSkill:cardFilter(card, player, isJudgeEvent) return false end ---@param card Card +---@param player Player ---@return Card function FilterSkill:viewAs(card, player) return nil diff --git a/lua/fk_ex.lua b/lua/fk_ex.lua index dca92384..2a8dec69 100644 --- a/lua/fk_ex.lua +++ b/lua/fk_ex.lua @@ -227,7 +227,7 @@ end ---@field public pattern? string ---@field public enabled_at_play? fun(self: ViewAsSkill, player: Player): boolean? ---@field public enabled_at_response? fun(self: ViewAsSkill, player: Player, response: boolean): boolean? ----@field public before_use? fun(self: ViewAsSkill, player: ServerPlayer, use: CardUseStruct) +---@field public before_use? fun(self: ViewAsSkill, player: ServerPlayer, use: CardUseStruct): string? ---@field public prompt? string|fun(self: ActiveSkill, selected: integer[], selected_cards: integer[]): string ---@param spec ViewAsSkillSpec @@ -396,7 +396,7 @@ function fk.CreateTargetModSkill(spec) end ---@class FilterSpec: StatusSkillSpec ----@field public card_filter? fun(self: FilterSkill, card: Card, player: Player): boolean? +---@field public card_filter? fun(self: FilterSkill, card: Card, player: Player, isJudgeEvent: boolean): boolean? ---@field public view_as? fun(self: FilterSkill, card: Card, player: Player): Card? ---@param spec FilterSpec diff --git a/packages/standard_cards/i18n/en_US.lua b/packages/standard_cards/i18n/en_US.lua index db6a662d..c53ace84 100644 --- a/packages/standard_cards/i18n/en_US.lua +++ b/packages/standard_cards/i18n/en_US.lua @@ -14,7 +14,7 @@ Fk:loadTranslationTable({ -- ["club"] = "Club", -- ["diamond"] = "Diamond", ["nosuit"] = "No suit", - ["black"] = '黑色', + ["black"] = 'Black', ["red"] = 'Red', ["nocolor"] = 'NoColor', -- ["suit"] = "花色", @@ -122,6 +122,7 @@ Fk:loadTranslationTable({ ["qinggang_sword"] = "Qinggang Sword", [":qinggang_sword"] = "Qinggang Sword (equip card, weapon)
ATK range: 2
Weapon skill: Your Slash ignores the target's armor.", + ["#qinggang_sword_skill"] = "Qinggang Sword", ["ice_sword"] = "Ice Sword", [":ice_sword"] = "Ice Sword (equip card, weapon)
ATK range: 2
Weapon skill: When your used Slash is about to cause DMG to a player who has cards, you can prevent this DMG and discard him 2 cards successively.", diff --git a/packages/standard_cards/i18n/zh_CN.lua b/packages/standard_cards/i18n/zh_CN.lua index 4cda3e1a..3136ecd3 100644 --- a/packages/standard_cards/i18n/zh_CN.lua +++ b/packages/standard_cards/i18n/zh_CN.lua @@ -122,6 +122,7 @@ Fk:loadTranslationTable{ ["qinggang_sword"] = "青釭剑", [":qinggang_sword"] = "装备牌·武器
攻击范围:2
武器技能:锁定技,你的【杀】无视目标角色的防具。", + ["#qinggang_sword_skill"] = "青釭剑", ["ice_sword"] = "寒冰剑", [":ice_sword"] = "装备牌·武器
攻击范围:2
武器技能:当你使用【杀】对目标角色造成伤害时,若该角色有牌,你可以防止此伤害,然后依次弃置其两张牌。",