From fcddd36a6d8f0bcbb52170f3597ce2874915df1a Mon Sep 17 00:00:00 2001 From: notify Date: Sat, 18 Mar 2023 23:37:21 +0800 Subject: [PATCH] Fix more bug (#81) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修更多的bug,哪来那么多bug啊 --- lua/core/player.lua | 2 +- lua/server/events/hp.lua | 8 ++++---- lua/server/room.lua | 4 ++-- lua/server/serverplayer.lua | 22 ++++++++++++++++------ qml/Pages/RoomElement/CardItem.qml | 1 + qml/Pages/RoomElement/GeneralCardItem.qml | 8 +++++--- qml/Pages/RoomElement/SkillArea.qml | 2 +- 7 files changed, 30 insertions(+), 17 deletions(-) diff --git a/lua/core/player.lua b/lua/core/player.lua index 63347f3f..522e6080 100644 --- a/lua/core/player.lua +++ b/lua/core/player.lua @@ -306,7 +306,7 @@ function Player:getMaxCards() for _, skill in ipairs(status_skills) do local c = skill:getCorrect(self) - baseValue = baseValue + c + baseValue = baseValue + (c or 0) end return math.max(baseValue, 0) diff --git a/lua/server/events/hp.lua b/lua/server/events/hp.lua index dafa0360..9002bb9b 100644 --- a/lua/server/events/hp.lua +++ b/lua/server/events/hp.lua @@ -194,6 +194,10 @@ GameEvent.functions[GameEvent.ChangeMaxHp] = function(self) player.maxHp = math.max(player.maxHp + num, 0) self:broadcastProperty(player, "maxHp") + if player.maxHp == 0 then + self:killPlayer({ who = player.id }) + end + local diff = player.hp - player.maxHp if diff > 0 then if not self:changeHp(player, -diff) then @@ -201,10 +205,6 @@ GameEvent.functions[GameEvent.ChangeMaxHp] = function(self) end end - if player.maxHp == 0 then - self:killPlayer({ who = player.id }) - end - self.logic:trigger(fk.MaxHpChanged, player, { num = num }) return true end diff --git a/lua/server/room.lua b/lua/server/room.lua index 0a552956..1df7862f 100644 --- a/lua/server/room.lua +++ b/lua/server/room.lua @@ -1808,7 +1808,7 @@ function Room:handleAddLoseSkills(player, skill_names, source_skill, sendlog, no s.name }) - if sendlog then + if sendlog and s.visible then self:sendLog{ type = "#LoseSkill", from = player.id, @@ -1833,7 +1833,7 @@ function Room:handleAddLoseSkills(player, skill_names, source_skill, sendlog, no s.name }) - if sendlog then + if sendlog and s.visible then self:sendLog{ type = "#AcquireSkill", from = player.id, diff --git a/lua/server/serverplayer.lua b/lua/server/serverplayer.lua index 1c032bb0..146544fe 100644 --- a/lua/server/serverplayer.lua +++ b/lua/server/serverplayer.lua @@ -460,13 +460,11 @@ function ServerPlayer:addToPile(pile_name, card, visible, skillName) end function ServerPlayer:bury() - -- self:clearFlags() - -- self:clearHistory() + self:setCardUseHistory("") + self:setSkillUseHistory("") self:throwAllCards() - -- self:throwAllMarks() - -- self:clearPiles() - - -- self.room:clearPlayerCardLimitation(self, false) + self:throwAllMarks() + self:clearPiles() end function ServerPlayer:throwAllCards(flag) @@ -485,6 +483,18 @@ function ServerPlayer:throwAllCards(flag) end end +function ServerPlayer:throwAllMarks() + for name, _ in pairs(self.mark) do + self.room:setPlayerMark(self, name, 0) + end +end + +function ServerPlayer:clearPiles() + for _, ids in pairs(self.special_cards) do + self.room:throwCard(ids, "", self) + end +end + function ServerPlayer:addVirtualEquip(card) Player.addVirtualEquip(self, card) self.room:doBroadcastNotify("AddVirtualEquip", json.encode{ diff --git a/qml/Pages/RoomElement/CardItem.qml b/qml/Pages/RoomElement/CardItem.qml index 5b7033f6..48dbd74c 100644 --- a/qml/Pages/RoomElement/CardItem.qml +++ b/qml/Pages/RoomElement/CardItem.qml @@ -149,6 +149,7 @@ Item { TapHandler { acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.NoButton + gesturePolicy: TapHandler.WithinBounds onTapped: (p, btn) => { if (btn === Qt.LeftButton || btn === Qt.NoButton) { diff --git a/qml/Pages/RoomElement/GeneralCardItem.qml b/qml/Pages/RoomElement/GeneralCardItem.qml index a3cbc9a2..003a8551 100644 --- a/qml/Pages/RoomElement/GeneralCardItem.qml +++ b/qml/Pages/RoomElement/GeneralCardItem.qml @@ -15,6 +15,7 @@ import "../skin-bank.js" as SkinBank CardItem { property string kingdom property int hp + property int maxHp name: "" // description: Sanguosha.getGeneralDescription(name) suit: "" @@ -36,15 +37,15 @@ CardItem { y: 4 spacing: 1 Repeater { - model: hp > 5 ? 1 : hp + model: (hp > 5 || hp !== maxHp) ? 1 : hp Image { source: SkinBank.GENERALCARD_DIR + kingdom + "-magatama" } } Text { - visible: hp > 5 - text: "x" + hp + visible: hp > 5 || hp !== maxHp + text: hp === maxHp ? ("x" + hp) : (" " + hp + "/" + maxHp) color: "white" font.pixelSize: 14 style: Text.Outline @@ -84,5 +85,6 @@ CardItem { let data = JSON.parse(Backend.callLuaFunction("GetGeneralData", [name])); kingdom = data.kingdom; hp = data.hp; + maxHp = data.maxHp; } } diff --git a/qml/Pages/RoomElement/SkillArea.qml b/qml/Pages/RoomElement/SkillArea.qml index ad97505b..dd66f396 100644 --- a/qml/Pages/RoomElement/SkillArea.qml +++ b/qml/Pages/RoomElement/SkillArea.qml @@ -87,7 +87,7 @@ Flickable { } } for (let i = 0; i < not_active_skills.count; i++) { - let item = not_active_skills.at(i); + let item = not_active_skills.get(i); if (item.orig_skill == skill_name) { not_active_skills.remove(i); }