diff --git a/CMakeLists.txt b/CMakeLists.txt index 5df080f9..2d46cec1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,8 @@ # SPDX-License-Identifier: GPL-3.0-or-later +# ------------------------------------------------------------ +# 此为新月杀的项目组织文件,采用CMake+QT +# 2022-01-24 新建文件夹 2023-02-21 发布v0.0.1版本 +# ------------------------------------------------------------ cmake_minimum_required(VERSION 3.16) diff --git a/Fk/Pages/GeneralsOverview.qml b/Fk/Pages/GeneralsOverview.qml index 2f7ee52e..51daf516 100644 --- a/Fk/Pages/GeneralsOverview.qml +++ b/Fk/Pages/GeneralsOverview.qml @@ -255,9 +255,9 @@ Item { const gdata = lcall("GetGeneralData", modelData); const pack = gdata.package; if (s.banPkg[pack]) { - if (!s.banPkg[pack].includes(modelData)) return 0.7; + if (!s.banPkg[pack].includes(modelData)) return 0.5; } else { - if (!!s.normalPkg[pack]?.includes(modelData)) return 0.7; + if (!!s.normalPkg[pack]?.includes(modelData)) return 0.5; } return 0; } diff --git a/lua/client/client.lua b/lua/client/client.lua index d5ff5d07..931f9ff9 100644 --- a/lua/client/client.lua +++ b/lua/client/client.lua @@ -768,9 +768,7 @@ fk.client_callback["AskForUseActiveSkill"] = function(jsonData) local data = json.decode(jsonData) local skill = Fk.skills[data[1]] local extra_data = data[4] - for k, v in pairs(extra_data) do - skill[k] = v - end + skill._extra_data = extra_data Fk.currentResponseReason = extra_data.skillName ClientInstance:notifyUI("AskForUseActiveSkill", jsonData) diff --git a/lua/core/card.lua b/lua/core/card.lua index 378d3c5c..10faad65 100644 --- a/lua/core/card.lua +++ b/lua/core/card.lua @@ -414,14 +414,6 @@ function Card:getMark(mark) return ret end ---- 判定卡牌是否拥有对应的Mark。 ----@param mark string @ 标记 ----@return boolean -function Card:hasMark(mark) - fk.qWarning("hasMark will be deleted in future version!") - return self:getMark(mark) ~= 0 -end - --- 获取卡牌有哪些Mark。 function Card:getMarkNames() local ret = {} diff --git a/lua/core/player.lua b/lua/core/player.lua index 5862b820..6adfa938 100644 --- a/lua/core/player.lua +++ b/lua/core/player.lua @@ -221,14 +221,6 @@ function Player:getMark(mark) return mark end ---- 判定角色是否拥有对应的Mark。 ----@param mark string @ 标记 ----@return boolean -function Player:hasMark(mark) - fk.qWarning("hasMark will be deleted in future version!") - return self:getMark(mark) ~= 0 -end - --- 获取角色有哪些Mark。 function Player:getMarkNames() local ret = {} diff --git a/lua/core/skill.lua b/lua/core/skill.lua index a3d18389..c03405e2 100644 --- a/lua/core/skill.lua +++ b/lua/core/skill.lua @@ -44,6 +44,7 @@ function Skill:initialize(name, frequency) self.anim_type = "" self.related_skills = {} self.attachedKingdom = {} + self._extra_data = {} local name_splited = name:split("__") self.trueName = name_splited[#name_splited] @@ -63,6 +64,8 @@ end function Skill:__index(k) if k == "cost_data" then return Fk:currentRoom().skill_costs[self.name] + else + return self._extra_data[k] end end diff --git a/lua/server/ai/smart_ai.lua b/lua/server/ai/smart_ai.lua index 857f4bf1..b1020034 100644 --- a/lua/server/ai/smart_ai.lua +++ b/lua/server/ai/smart_ai.lua @@ -114,9 +114,7 @@ smart_cb["AskForUseActiveSkill"] = function(self, jsonData) local skillName, prompt, cancelable, extra_data = table.unpack(data) local skill = Fk.skills[skillName] - for k, v in pairs(extra_data) do - skill[k] = v - end + skill._extra_data = extra_data local ret = self:callFromTable(fk.ai_active_skill, nil, skillName, self, prompt, cancelable, extra_data) diff --git a/lua/server/room.lua b/lua/server/room.lua index 049a2e6a..7f8bd5f8 100644 --- a/lua/server/room.lua +++ b/lua/server/room.lua @@ -3429,7 +3429,13 @@ end function Room:gameOver(winner) if not self.game_started then return end - self.logic:trigger(fk.GameFinished, nil, winner) + if table.contains( + { "running", "normal" }, + coroutine.status(self.main_co) + ) then + self.logic:trigger(fk.GameFinished, nil, winner) + end + self.game_started = false self.game_finished = true diff --git a/src/server/server.cpp b/src/server/server.cpp index e36880ac..9a62d90e 100644 --- a/src/server/server.cpp +++ b/src/server/server.cpp @@ -517,7 +517,7 @@ void Server::handleNameAndPassword(ClientSocket *client, const QString &name, void Server::onRoomAbandoned() { Room *room = qobject_cast(sender()); - room->gameOver(); + // room->gameOver(); // Lua会出手 rooms.remove(room->getId()); updateOnlineInfo(); // 按理说这时候就可以删除了,但是这里肯定比Lua先检测到。