more nil
This commit is contained in:
parent
a812af8d97
commit
0e8005601f
|
@ -267,7 +267,7 @@ fk.client_callback["AddPlayer"] = function(jsonData)
|
||||||
-- jsonData: [ int id, string screenName, string avatar ]
|
-- jsonData: [ int id, string screenName, string avatar ]
|
||||||
-- when other player enter the room, we create clientplayer(C and lua) for them
|
-- when other player enter the room, we create clientplayer(C and lua) for them
|
||||||
local data = json.decode(jsonData)
|
local data = json.decode(jsonData)
|
||||||
local id, name, avatar, gameData = data[1], data[2], data[3]
|
local id, name, avatar = data[1], data[2], data[3]
|
||||||
local player = fk.ClientInstance:addPlayer(id, name, avatar)
|
local player = fk.ClientInstance:addPlayer(id, name, avatar)
|
||||||
local p = ClientPlayer:new(player)
|
local p = ClientPlayer:new(player)
|
||||||
table.insert(ClientInstance.players, p)
|
table.insert(ClientInstance.players, p)
|
||||||
|
|
|
@ -140,7 +140,7 @@ FreeKill使用的是libgit2的C API,与此同时使用Git完成拓展包的下
|
||||||
["OK"] = "确定",
|
["OK"] = "确定",
|
||||||
["Cancel"] = "取消",
|
["Cancel"] = "取消",
|
||||||
["End"] = "结束",
|
["End"] = "结束",
|
||||||
["Quit"] = "退出",
|
-- ["Quit"] = "退出",
|
||||||
["BanGeneral"] = "禁将",
|
["BanGeneral"] = "禁将",
|
||||||
["ResumeGeneral"] = "解禁",
|
["ResumeGeneral"] = "解禁",
|
||||||
["Death audio"] = "阵亡",
|
["Death audio"] = "阵亡",
|
||||||
|
|
|
@ -136,8 +136,8 @@ end
|
||||||
--- 克隆特定卡牌并赋予花色与点数。
|
--- 克隆特定卡牌并赋予花色与点数。
|
||||||
---
|
---
|
||||||
--- 会将skill/special_skills/equip_skill继承到克隆牌中。
|
--- 会将skill/special_skills/equip_skill继承到克隆牌中。
|
||||||
---@param suit Suit @ 克隆后的牌的花色
|
---@param suit Suit|nil @ 克隆后的牌的花色
|
||||||
---@param number integer @ 克隆后的牌的点数
|
---@param number integer|nil @ 克隆后的牌的点数
|
||||||
---@return Card @ 产品
|
---@return Card @ 产品
|
||||||
function Card:clone(suit, number)
|
function Card:clone(suit, number)
|
||||||
local newCard = self.class:new(self.name, suit, number)
|
local newCard = self.class:new(self.name, suit, number)
|
||||||
|
@ -402,7 +402,7 @@ end
|
||||||
|
|
||||||
--- 获取卡牌对应Mark的数量。
|
--- 获取卡牌对应Mark的数量。
|
||||||
---@param mark string @ 标记
|
---@param mark string @ 标记
|
||||||
---@return integer
|
---@return any
|
||||||
function Card:getMark(mark)
|
function Card:getMark(mark)
|
||||||
local ret = (self.mark[mark] or 0)
|
local ret = (self.mark[mark] or 0)
|
||||||
if (not self:isVirtual()) and next(self.mark) == nil then
|
if (not self:isVirtual()) and next(self.mark) == nil then
|
||||||
|
@ -430,7 +430,7 @@ end
|
||||||
|
|
||||||
--- 比较两张卡牌的花色是否相同
|
--- 比较两张卡牌的花色是否相同
|
||||||
---@param anotherCard Card @ 另一张卡牌
|
---@param anotherCard Card @ 另一张卡牌
|
||||||
---@param diff boolean @ 比较二者相同还是不同
|
---@param diff boolean|nil @ 比较二者相同还是不同
|
||||||
---@return boolean 返回比较结果
|
---@return boolean 返回比较结果
|
||||||
function Card:compareSuitWith(anotherCard, diff)
|
function Card:compareSuitWith(anotherCard, diff)
|
||||||
if self ~= anotherCard and table.contains({ self.suit, anotherCard.suit }, Card.NoSuit) then
|
if self ~= anotherCard and table.contains({ self.suit, anotherCard.suit }, Card.NoSuit) then
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
---@field public maxPlayer integer @ 最大玩家数
|
---@field public maxPlayer integer @ 最大玩家数
|
||||||
---@field public rule TriggerSkill @ 规则(通过技能完成,通常用来为特定角色及特定时机提供触发事件)
|
---@field public rule TriggerSkill @ 规则(通过技能完成,通常用来为特定角色及特定时机提供触发事件)
|
||||||
---@field public logic fun() @ 逻辑(通过function完成,通常用来初始化、分配身份及座次)
|
---@field public logic fun() @ 逻辑(通过function完成,通常用来初始化、分配身份及座次)
|
||||||
---@field public surrenderFunc fun()
|
|
||||||
---@field public whitelist string[]|nil @ 白名单
|
---@field public whitelist string[]|nil @ 白名单
|
||||||
---@field public blacklist string[]|nil @ 黑名单
|
---@field public blacklist string[]|nil @ 黑名单
|
||||||
local GameMode = class("GameMode")
|
local GameMode = class("GameMode")
|
||||||
|
@ -19,7 +18,6 @@ local GameMode = class("GameMode")
|
||||||
---@param name string @ 游戏模式名
|
---@param name string @ 游戏模式名
|
||||||
---@param min integer @ 最小玩家数
|
---@param min integer @ 最小玩家数
|
||||||
---@param max integer @ 最大玩家数
|
---@param max integer @ 最大玩家数
|
||||||
---@param filter string @ 过滤卡包,格式参考exppattern
|
|
||||||
function GameMode:initialize(name, min, max)
|
function GameMode:initialize(name, min, max)
|
||||||
self.name = name
|
self.name = name
|
||||||
self.minPlayer = math.max(min, 2)
|
self.minPlayer = math.max(min, 2)
|
||||||
|
|
|
@ -103,10 +103,10 @@ end
|
||||||
|
|
||||||
--- 设置角色、体力、技能。
|
--- 设置角色、体力、技能。
|
||||||
---@param general General @ 角色类型
|
---@param general General @ 角色类型
|
||||||
---@param setHp boolean @ 是否设置体力
|
---@param setHp boolean|nil @ 是否设置体力
|
||||||
---@param addSkills boolean @ 是否增加技能
|
---@param addSkills boolean|nil @ 是否增加技能
|
||||||
function Player:setGeneral(general, setHp, addSkills)
|
function Player:setGeneral(general, setHp, addSkills)
|
||||||
self.general = general
|
self.general = general.name
|
||||||
if setHp then
|
if setHp then
|
||||||
self.maxHp = general.maxHp
|
self.maxHp = general.maxHp
|
||||||
self.hp = general.hp
|
self.hp = general.hp
|
||||||
|
@ -182,7 +182,7 @@ end
|
||||||
|
|
||||||
--- 为角色设置Mark至指定数量。
|
--- 为角色设置Mark至指定数量。
|
||||||
---@param mark string @ 标记
|
---@param mark string @ 标记
|
||||||
---@param count integer @ 为标记删除的数量
|
---@param count integer|nil @ 为标记删除的数量
|
||||||
function Player:setMark(mark, count)
|
function Player:setMark(mark, count)
|
||||||
if count == 0 then count = nil end
|
if count == 0 then count = nil end
|
||||||
if self.mark[mark] ~= count then
|
if self.mark[mark] ~= count then
|
||||||
|
@ -192,7 +192,7 @@ end
|
||||||
|
|
||||||
--- 获取角色对应Mark的数量。
|
--- 获取角色对应Mark的数量。
|
||||||
---@param mark string @ 标记
|
---@param mark string @ 标记
|
||||||
---@return integer
|
---@return any
|
||||||
function Player:getMark(mark)
|
function Player:getMark(mark)
|
||||||
return (self.mark[mark] or 0)
|
return (self.mark[mark] or 0)
|
||||||
end
|
end
|
||||||
|
@ -217,7 +217,7 @@ end
|
||||||
--- 将指定数量的牌加入玩家的对应区域。
|
--- 将指定数量的牌加入玩家的对应区域。
|
||||||
---@param playerArea PlayerCardArea @ 玩家牌所在的区域
|
---@param playerArea PlayerCardArea @ 玩家牌所在的区域
|
||||||
---@param cardIds integer[] @ 牌的ID,返回唯一牌
|
---@param cardIds integer[] @ 牌的ID,返回唯一牌
|
||||||
---@param specialName string @ 私人牌堆名
|
---@param specialName string|nil @ 私人牌堆名
|
||||||
function Player:addCards(playerArea, cardIds, specialName)
|
function Player:addCards(playerArea, cardIds, specialName)
|
||||||
assert(table.contains({ Player.Hand, Player.Equip, Player.Judge, Player.Special }, playerArea))
|
assert(table.contains({ Player.Hand, Player.Equip, Player.Judge, Player.Special }, playerArea))
|
||||||
assert(playerArea ~= Player.Special or type(specialName) == "string")
|
assert(playerArea ~= Player.Special or type(specialName) == "string")
|
||||||
|
@ -233,7 +233,7 @@ end
|
||||||
--- 将指定数量的牌移除出玩家的对应区域。
|
--- 将指定数量的牌移除出玩家的对应区域。
|
||||||
---@param playerArea PlayerCardArea @ 玩家牌所在的区域
|
---@param playerArea PlayerCardArea @ 玩家牌所在的区域
|
||||||
---@param cardIds integer[] @ 牌的ID,返回唯一牌
|
---@param cardIds integer[] @ 牌的ID,返回唯一牌
|
||||||
---@param specialName string @ 私人牌堆名
|
---@param specialName string|nil @ 私人牌堆名
|
||||||
function Player:removeCards(playerArea, cardIds, specialName)
|
function Player:removeCards(playerArea, cardIds, specialName)
|
||||||
assert(table.contains({ Player.Hand, Player.Equip, Player.Judge, Player.Special }, playerArea))
|
assert(table.contains({ Player.Hand, Player.Equip, Player.Judge, Player.Special }, playerArea))
|
||||||
assert(playerArea ~= Player.Special or type(specialName) == "string")
|
assert(playerArea ~= Player.Special or type(specialName) == "string")
|
||||||
|
@ -303,12 +303,25 @@ function Player:hasDelayedTrick(card_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- 获取玩家特定区域所有牌的ID。
|
--- 获取玩家特定区域所有牌的ID。
|
||||||
---@param playerAreas PlayerCardArea|nil @ 玩家牌所在的区域
|
---@param playerAreas PlayerCardArea|PlayerCardArea[]|string|nil @ 玩家牌所在的区域
|
||||||
---@param specialName string|nil @私人牌堆名
|
---@param specialName string|nil @私人牌堆名
|
||||||
---@return integer[] @ 返回对应区域的所有牌对应的ID
|
---@return integer[] @ 返回对应区域的所有牌对应的ID
|
||||||
function Player:getCardIds(playerAreas, specialName)
|
function Player:getCardIds(playerAreas, specialName)
|
||||||
local rightAreas = { Player.Hand, Player.Equip, Player.Judge }
|
local rightAreas = { Player.Hand, Player.Equip, Player.Judge }
|
||||||
playerAreas = playerAreas or rightAreas
|
playerAreas = playerAreas or rightAreas
|
||||||
|
if type(playerAreas) == "string" then
|
||||||
|
local str = playerAreas
|
||||||
|
playerAreas = {}
|
||||||
|
if str:find("h") then
|
||||||
|
table.insert(playerAreas, Player.Hand)
|
||||||
|
end
|
||||||
|
if str:find("e") then
|
||||||
|
table.insert(playerAreas, Player.Equip)
|
||||||
|
end
|
||||||
|
if str:find("j") then
|
||||||
|
table.insert(playerAreas, Player.Judge)
|
||||||
|
end
|
||||||
|
end
|
||||||
assert(type(playerAreas) == "number" or type(playerAreas) == "table")
|
assert(type(playerAreas) == "number" or type(playerAreas) == "table")
|
||||||
local areas = type(playerAreas) == "table" and playerAreas or { playerAreas }
|
local areas = type(playerAreas) == "table" and playerAreas or { playerAreas }
|
||||||
|
|
||||||
|
@ -404,14 +417,14 @@ end
|
||||||
---@param other Player @ 其他玩家
|
---@param other Player @ 其他玩家
|
||||||
---@param num integer @ 距离数
|
---@param num integer @ 距离数
|
||||||
function Player:setFixedDistance(other, num)
|
function Player:setFixedDistance(other, num)
|
||||||
print(self.name .. ": fixedDistance is deprecated. Use fixed_func instead.")
|
--print(self.name .. ": fixedDistance is deprecated. Use fixed_func instead.")
|
||||||
self.fixedDistance[other] = num
|
self.fixedDistance[other] = num
|
||||||
end
|
end
|
||||||
|
|
||||||
--- 移除玩家与其他角色的固定距离。
|
--- 移除玩家与其他角色的固定距离。
|
||||||
---@param other Player @ 其他玩家
|
---@param other Player @ 其他玩家
|
||||||
function Player:removeFixedDistance(other)
|
function Player:removeFixedDistance(other)
|
||||||
print(self.name .. ": fixedDistance is deprecated. Use fixed_func instead.")
|
--print(self.name .. ": fixedDistance is deprecated. Use fixed_func instead.")
|
||||||
self.fixedDistance[other] = nil
|
self.fixedDistance[other] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -506,7 +519,7 @@ end
|
||||||
|
|
||||||
--- 增加玩家使用特定牌的历史次数。
|
--- 增加玩家使用特定牌的历史次数。
|
||||||
---@param cardName string @ 牌名
|
---@param cardName string @ 牌名
|
||||||
---@param num integer @ 次数
|
---@param num integer|nil @ 次数
|
||||||
function Player:addCardUseHistory(cardName, num)
|
function Player:addCardUseHistory(cardName, num)
|
||||||
num = num or 1
|
num = num or 1
|
||||||
assert(type(num) == "number" and num ~= 0)
|
assert(type(num) == "number" and num ~= 0)
|
||||||
|
@ -521,7 +534,7 @@ end
|
||||||
--- 设定玩家使用特定牌的历史次数。
|
--- 设定玩家使用特定牌的历史次数。
|
||||||
---@param cardName string @ 牌名
|
---@param cardName string @ 牌名
|
||||||
---@param num integer @ 次数
|
---@param num integer @ 次数
|
||||||
---@param scope integer @ 查询历史范围
|
---@param scope integer|nil @ 查询历史范围
|
||||||
function Player:setCardUseHistory(cardName, num, scope)
|
function Player:setCardUseHistory(cardName, num, scope)
|
||||||
if cardName == "" and num == nil and scope == nil then
|
if cardName == "" and num == nil and scope == nil then
|
||||||
self.cardUsedHistory = {}
|
self.cardUsedHistory = {}
|
||||||
|
@ -543,7 +556,7 @@ end
|
||||||
|
|
||||||
--- 增加玩家使用特定技能的历史次数。
|
--- 增加玩家使用特定技能的历史次数。
|
||||||
---@param skill_name string @ 技能名
|
---@param skill_name string @ 技能名
|
||||||
---@param num integer @ 次数
|
---@param num integer|nil @ 次数
|
||||||
function Player:addSkillUseHistory(skill_name, num)
|
function Player:addSkillUseHistory(skill_name, num)
|
||||||
num = num or 1
|
num = num or 1
|
||||||
assert(type(num) == "number" and num ~= 0)
|
assert(type(num) == "number" and num ~= 0)
|
||||||
|
@ -557,8 +570,8 @@ end
|
||||||
|
|
||||||
--- 设定玩家使用特定技能的历史次数。
|
--- 设定玩家使用特定技能的历史次数。
|
||||||
---@param skill_name string @ 技能名
|
---@param skill_name string @ 技能名
|
||||||
---@param num integer @ 次数
|
---@param num integer|nil @ 次数
|
||||||
---@param scope integer @ 查询历史范围
|
---@param scope integer|nil @ 查询历史范围
|
||||||
function Player:setSkillUseHistory(skill_name, num, scope)
|
function Player:setSkillUseHistory(skill_name, num, scope)
|
||||||
if skill_name == "" and num == nil and scope == nil then
|
if skill_name == "" and num == nil and scope == nil then
|
||||||
self.skillUsedHistory = {}
|
self.skillUsedHistory = {}
|
||||||
|
@ -590,7 +603,7 @@ end
|
||||||
|
|
||||||
--- 获取玩家使用特定技能的历史次数。
|
--- 获取玩家使用特定技能的历史次数。
|
||||||
---@param skill_name string @ 技能名
|
---@param skill_name string @ 技能名
|
||||||
---@param scope integer @ 查询历史范围
|
---@param scope integer|nil @ 查询历史范围
|
||||||
function Player:usedSkillTimes(skill_name, scope)
|
function Player:usedSkillTimes(skill_name, scope)
|
||||||
if not self.skillUsedHistory[skill_name] then
|
if not self.skillUsedHistory[skill_name] then
|
||||||
return 0
|
return 0
|
||||||
|
@ -808,16 +821,16 @@ function Player:prohibitDiscard(card)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
---@field SwitchYang number @ 转换技状态阳
|
--转换技状态阳
|
||||||
fk.SwitchYang = 0
|
fk.SwitchYang = 0
|
||||||
---@field SwitchYin number @ 转换技状态阴
|
--转换技状态阴
|
||||||
fk.SwitchYin = 1
|
fk.SwitchYin = 1
|
||||||
|
|
||||||
--- 获取转换技状态
|
--- 获取转换技状态
|
||||||
---@param skillName string @ 技能名
|
---@param skillName string @ 技能名
|
||||||
---@param afterUse boolean|nil @ 是否提前计算转换后状态
|
---@param afterUse boolean|nil @ 是否提前计算转换后状态
|
||||||
---@param inWord boolean|nil @ 是否返回文字
|
---@param inWord boolean|nil @ 是否返回文字
|
||||||
---@return number @ 转换技状态
|
---@return number|string @ 转换技状态
|
||||||
function Player:getSwitchSkillState(skillName, afterUse, inWord)
|
function Player:getSwitchSkillState(skillName, afterUse, inWord)
|
||||||
if afterUse then
|
if afterUse then
|
||||||
return self:getMark(MarkEnum.SwithSkillPreName .. skillName) < 1 and (inWord and "yin" or fk.SwitchYin) or (inWord and "yang" or fk.SwitchYang)
|
return self:getMark(MarkEnum.SwithSkillPreName .. skillName) < 1 and (inWord and "yin" or fk.SwitchYin) or (inWord and "yang" or fk.SwitchYang)
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
local AttackRangeSkill = StatusSkill:subclass("AttackRangeSkill")
|
local AttackRangeSkill = StatusSkill:subclass("AttackRangeSkill")
|
||||||
|
|
||||||
---@param from Player
|
---@param from Player
|
||||||
---@param to Player
|
|
||||||
---@return integer
|
---@return integer
|
||||||
function AttackRangeSkill:getCorrect(from)
|
function AttackRangeSkill:getCorrect(from)
|
||||||
return 0
|
return 0
|
||||||
|
|
|
@ -3,19 +3,16 @@
|
||||||
---@class MaxCardsSkill : StatusSkill
|
---@class MaxCardsSkill : StatusSkill
|
||||||
local MaxCardsSkill = StatusSkill:subclass("MaxCardsSkill")
|
local MaxCardsSkill = StatusSkill:subclass("MaxCardsSkill")
|
||||||
|
|
||||||
---@param from Player
|
---@return integer|nil
|
||||||
---@return integer
|
|
||||||
function MaxCardsSkill:getFixed(player)
|
function MaxCardsSkill:getFixed(player)
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param from Player
|
|
||||||
---@return integer
|
---@return integer
|
||||||
function MaxCardsSkill:getCorrect(player)
|
function MaxCardsSkill:getCorrect(player)
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param from Player
|
|
||||||
---@param card Card
|
---@param card Card
|
||||||
---@return boolean
|
---@return boolean
|
||||||
function MaxCardsSkill:excludeFrom(player, card)
|
function MaxCardsSkill:excludeFrom(player, card)
|
||||||
|
|
|
@ -18,7 +18,7 @@ function ViewAsSkill:cardFilter(to_select, selected)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param cards integer[] @ ids of cards
|
---@param cards integer[] @ ids of cards
|
||||||
---@return card
|
---@return Card|nil
|
||||||
function ViewAsSkill:viewAs(cards)
|
function ViewAsSkill:viewAs(cards)
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
|
@ -48,7 +48,7 @@ function table:forEach(func)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param func fun(element, index, array)
|
---@param func fun(element, index, array): any
|
||||||
function table:every(func)
|
function table:every(func)
|
||||||
for i, v in ipairs(self) do
|
for i, v in ipairs(self) do
|
||||||
if not func(v, i, self) then
|
if not func(v, i, self) then
|
||||||
|
@ -58,7 +58,7 @@ function table:every(func)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param func fun(element, index, array)
|
---@param func fun(element, index, array): any
|
||||||
function table:find(func)
|
function table:find(func)
|
||||||
for i, v in ipairs(self) do
|
for i, v in ipairs(self) do
|
||||||
if func(v, i, self) then
|
if func(v, i, self) then
|
||||||
|
@ -70,7 +70,7 @@ end
|
||||||
|
|
||||||
---@generic T
|
---@generic T
|
||||||
---@param self T[]
|
---@param self T[]
|
||||||
---@param func fun(element, index, array)
|
---@param func fun(element, index, array): any
|
||||||
---@return T[]
|
---@return T[]
|
||||||
function table.filter(self, func)
|
function table.filter(self, func)
|
||||||
local ret = {}
|
local ret = {}
|
||||||
|
@ -82,7 +82,7 @@ function table.filter(self, func)
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param func fun(element, index, array)
|
---@param func fun(element, index, array): any
|
||||||
function table:map(func)
|
function table:map(func)
|
||||||
local ret = {}
|
local ret = {}
|
||||||
for i, v in ipairs(self) do
|
for i, v in ipairs(self) do
|
||||||
|
|
|
@ -162,14 +162,14 @@ function fk.CreateTriggerSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class ActiveSkillSpec: UsableSkillSpec
|
---@class ActiveSkillSpec: UsableSkillSpec
|
||||||
---@field public can_use fun(self: ActiveSkill, player: Player, card: Card): boolean
|
---@field public can_use fun(self: ActiveSkill, player: Player, card: Card): boolean|nil
|
||||||
---@field public card_filter fun(self: ActiveSkill, to_select: integer, selected: integer[], selected_targets: integer[]): boolean
|
---@field public card_filter fun(self: ActiveSkill, to_select: integer, selected: integer[], selected_targets: integer[]): boolean|nil
|
||||||
---@field public target_filter fun(self: ActiveSkill, to_select: integer, selected: integer[], selected_cards: integer[], card: Card): boolean
|
---@field public target_filter fun(self: ActiveSkill, to_select: integer, selected: integer[], selected_cards: integer[], card: Card): boolean|nil
|
||||||
---@field public feasible fun(self: ActiveSkill, selected: integer[], selected_cards: integer[]): boolean
|
---@field public feasible fun(self: ActiveSkill, selected: integer[], selected_cards: integer[]): boolean|nil
|
||||||
---@field public on_use fun(self: ActiveSkill, room: Room, cardUseEvent: CardUseStruct): boolean|nil
|
---@field public on_use fun(self: ActiveSkill, room: Room, cardUseEvent: CardUseStruct): boolean|nil
|
||||||
---@field public about_to_effect fun(self: ActiveSkill, room: Room, cardEffectEvent: CardEffectEvent): boolean
|
---@field public about_to_effect fun(self: ActiveSkill, room: Room, cardEffectEvent: CardEffectEvent): boolean|nil
|
||||||
---@field public on_effect fun(self: ActiveSkill, room: Room, cardEffectEvent: CardEffectEvent): boolean|nil
|
---@field public on_effect fun(self: ActiveSkill, room: Room, cardEffectEvent: CardEffectEvent): boolean|nil
|
||||||
---@field public on_nullified fun(self: ActiveSkill, room: Room, cardEffectEvent: CardEffectEvent): boolean
|
---@field public on_nullified fun(self: ActiveSkill, room: Room, cardEffectEvent: CardEffectEvent): boolean|nil
|
||||||
---@field public prompt fun(self: ActiveSkill, selected: integer[], selected_cards: integer[]): string
|
---@field public prompt fun(self: ActiveSkill, selected: integer[], selected_cards: integer[]): string
|
||||||
|
|
||||||
---@param spec ActiveSkillSpec
|
---@param spec ActiveSkillSpec
|
||||||
|
@ -211,12 +211,12 @@ function fk.CreateActiveSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class ViewAsSkillSpec: UsableSkillSpec
|
---@class ViewAsSkillSpec: UsableSkillSpec
|
||||||
---@field public card_filter fun(self: ViewAsSkill, to_select: integer, selected: integer[]): boolean
|
---@field public card_filter fun(self: ViewAsSkill, to_select: integer, selected: integer[]): boolean|nil
|
||||||
---@field public view_as fun(self: ViewAsSkill, cards: integer[])
|
---@field public view_as fun(self: ViewAsSkill, cards: integer[]): Card|nil
|
||||||
---@field public pattern string
|
---@field public pattern string
|
||||||
---@field public enabled_at_play fun(self: ViewAsSkill, player: Player): boolean
|
---@field public enabled_at_play fun(self: ViewAsSkill, player: Player): boolean|nil
|
||||||
---@field public enabled_at_response fun(self: ViewAsSkill, player: Player): boolean
|
---@field public enabled_at_response fun(self: ViewAsSkill, player: Player, response: boolean): boolean|nil
|
||||||
---@field public before_use fun(self: ViewAsSkill, player: ServerPlayer)
|
---@field public before_use fun(self: ViewAsSkill, player: ServerPlayer, use: CardUseStruct)
|
||||||
---@field public prompt fun(self: ActiveSkill, selected: integer[], selected_cards: integer[]): string
|
---@field public prompt fun(self: ActiveSkill, selected: integer[], selected_cards: integer[]): string
|
||||||
|
|
||||||
---@param spec ViewAsSkillSpec
|
---@param spec ViewAsSkillSpec
|
||||||
|
@ -267,8 +267,8 @@ function fk.CreateViewAsSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class DistanceSpec: StatusSkillSpec
|
---@class DistanceSpec: StatusSkillSpec
|
||||||
---@field public correct_func fun(self: DistanceSkill, from: Player, to: Player)
|
---@field public correct_func fun(self: DistanceSkill, from: Player, to: Player): integer|nil
|
||||||
---@field public fixed_func fun(self: DistanceSkill, from: Player, to: Player)
|
---@field public fixed_func fun(self: DistanceSkill, from: Player, to: Player): integer|nil
|
||||||
|
|
||||||
---@param spec DistanceSpec
|
---@param spec DistanceSpec
|
||||||
---@return DistanceSkill
|
---@return DistanceSkill
|
||||||
|
@ -285,10 +285,10 @@ function fk.CreateDistanceSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class ProhibitSpec: StatusSkillSpec
|
---@class ProhibitSpec: StatusSkillSpec
|
||||||
---@field public is_prohibited fun(self: ProhibitSkill, from: Player, to: Player, card: Card)
|
---@field public is_prohibited fun(self: ProhibitSkill, from: Player, to: Player, card: Card): boolean|nil
|
||||||
---@field public prohibit_use fun(self: ProhibitSkill, player: Player, card: Card)
|
---@field public prohibit_use fun(self: ProhibitSkill, player: Player, card: Card): boolean|nil
|
||||||
---@field public prohibit_response fun(self: ProhibitSkill, player: Player, card: Card)
|
---@field public prohibit_response fun(self: ProhibitSkill, player: Player, card: Card): boolean|nil
|
||||||
---@field public prohibit_discard fun(self: ProhibitSkill, player: Player, card: Card)
|
---@field public prohibit_discard fun(self: ProhibitSkill, player: Player, card: Card): boolean|nil
|
||||||
|
|
||||||
---@param spec ProhibitSpec
|
---@param spec ProhibitSpec
|
||||||
---@return ProhibitSkill
|
---@return ProhibitSkill
|
||||||
|
@ -306,8 +306,8 @@ function fk.CreateProhibitSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class AttackRangeSpec: StatusSkillSpec
|
---@class AttackRangeSpec: StatusSkillSpec
|
||||||
---@field public correct_func fun(self: AttackRangeSkill, from: Player)
|
---@field public correct_func fun(self: AttackRangeSkill, from: Player, to: Player): number|nil
|
||||||
---@field public within_func fun(self: AttackRangeSkill, from: Player, to: Player)
|
---@field public within_func fun(self: AttackRangeSkill, from: Player, to: Player): boolean|nil
|
||||||
|
|
||||||
---@param spec AttackRangeSpec
|
---@param spec AttackRangeSpec
|
||||||
---@return AttackRangeSkill
|
---@return AttackRangeSkill
|
||||||
|
@ -328,9 +328,9 @@ function fk.CreateAttackRangeSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class MaxCardsSpec: StatusSkillSpec
|
---@class MaxCardsSpec: StatusSkillSpec
|
||||||
---@field public correct_func fun(self: MaxCardsSkill, player: Player)
|
---@field public correct_func fun(self: MaxCardsSkill, player: Player): number|nil
|
||||||
---@field public fixed_func fun(self: MaxCardsSkill, player: Player)
|
---@field public fixed_func fun(self: MaxCardsSkill, player: Player): number|nil
|
||||||
---@field public exclude_from fun(self: MaxCardsSkill, player: Player, card: Card)
|
---@field public exclude_from fun(self: MaxCardsSkill, player: Player, card: Card): boolean|nil
|
||||||
|
|
||||||
---@param spec MaxCardsSpec
|
---@param spec MaxCardsSpec
|
||||||
---@return MaxCardsSkill
|
---@return MaxCardsSkill
|
||||||
|
@ -352,11 +352,11 @@ function fk.CreateMaxCardsSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class TargetModSpec: StatusSkillSpec
|
---@class TargetModSpec: StatusSkillSpec
|
||||||
---@field public bypass_times fun(self: TargetModSkill, player: Player, skill: ActiveSkill, scope: integer, card: Card, to: Player)
|
---@field public bypass_times fun(self: TargetModSkill, player: Player, skill: ActiveSkill, scope: integer, card: Card, to: Player): boolean|nil
|
||||||
---@field public residue_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, scope: integer, card: Card, to: Player)
|
---@field public residue_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, scope: integer, card: Card, to: Player): number|nil
|
||||||
---@field public bypass_distances fun(self: TargetModSkill, player: Player, skill: ActiveSkill, card: Card, to: Player)
|
---@field public bypass_distances fun(self: TargetModSkill, player: Player, skill: ActiveSkill, card: Card, to: Player): boolean|nil
|
||||||
---@field public distance_limit_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, card: Card, to: Player)
|
---@field public distance_limit_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, card: Card, to: Player): number|nil
|
||||||
---@field public extra_target_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, card: Card)
|
---@field public extra_target_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, card: Card): number|nil
|
||||||
|
|
||||||
---@param spec TargetModSpec
|
---@param spec TargetModSpec
|
||||||
---@return TargetModSkill
|
---@return TargetModSkill
|
||||||
|
@ -385,8 +385,8 @@ function fk.CreateTargetModSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class FilterSpec: StatusSkillSpec
|
---@class FilterSpec: StatusSkillSpec
|
||||||
---@field public card_filter fun(self: FilterSkill, card: Card, player: Player)
|
---@field public card_filter fun(self: FilterSkill, card: Card, player: Player): boolean|nil
|
||||||
---@field public view_as fun(self: FilterSkill, card: Card, player: Player)
|
---@field public view_as fun(self: FilterSkill, card: Card, player: Player): Card|nil
|
||||||
|
|
||||||
---@param spec FilterSpec
|
---@param spec FilterSpec
|
||||||
---@return FilterSkill
|
---@return FilterSkill
|
||||||
|
@ -402,7 +402,7 @@ function fk.CreateFilterSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class InvaliditySpec: StatusSkillSpec
|
---@class InvaliditySpec: StatusSkillSpec
|
||||||
---@field public invalidity_func fun(self: InvaliditySkill, from: Player, skill: Skill)
|
---@field public invalidity_func fun(self: InvaliditySkill, from: Player, skill: Skill): boolean|nil
|
||||||
|
|
||||||
---@param spec InvaliditySpec
|
---@param spec InvaliditySpec
|
||||||
---@return InvaliditySkill
|
---@return InvaliditySkill
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
* Properly handle being reentrant due to coroutines.
|
* Properly handle being reentrant due to coroutines.
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
---@diagnostic disable
|
||||||
-- notify 汉化 并根据fk/lua 5.4实际情况魔改
|
-- notify 汉化 并根据fk/lua 5.4实际情况魔改
|
||||||
|
|
||||||
local dbg
|
local dbg
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
local _tl_compat; if (tonumber((_VERSION or ''):match('[%d.]*$')) or 0) < 5.3 then local p, m = pcall(require, 'compat53.module'); if p then _tl_compat = m end end; local math = _tl_compat and _tl_compat.math or math; local string = _tl_compat and _tl_compat.string or string; local table = _tl_compat and _tl_compat.table or table
|
local _tl_compat; if (tonumber((_VERSION or ''):match('[%d.]*$')) or 0) < 5.3 then local p, m = pcall(require, 'compat53.module'); if p then _tl_compat = m end end; local math = _tl_compat and _tl_compat.math or math; local string = _tl_compat and _tl_compat.string or string; local table = _tl_compat and _tl_compat.table or table
|
||||||
local inspect = {Options = {}, }
|
local inspect = {Options = {}, }
|
||||||
|
---@diagnostic disable
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
---@field public player ServerPlayer
|
---@field public player ServerPlayer
|
||||||
---@field public command string
|
---@field public command string
|
||||||
---@field public jsonData string
|
---@field public jsonData string
|
||||||
---@field public cb_table table<string, fun(jsonData: string)>
|
---@field public cb_table table<string, fun(self: AI, jsonData: string)>
|
||||||
local AI = class("AI")
|
local AI = class("AI")
|
||||||
|
|
||||||
function AI:initialize(player)
|
function AI:initialize(player)
|
||||||
|
|
|
@ -15,13 +15,13 @@
|
||||||
---@field public interrupted boolean @ 事件是否是因为被强行中断而结束的
|
---@field public interrupted boolean @ 事件是否是因为被强行中断而结束的
|
||||||
local GameEvent = class("GameEvent")
|
local GameEvent = class("GameEvent")
|
||||||
|
|
||||||
---@type fun(self: GameEvent)[]
|
---@type (fun(self: GameEvent): boolean|nil)[]
|
||||||
GameEvent.functions = {}
|
GameEvent.functions = {}
|
||||||
|
|
||||||
---@type fun(self: GameEvent)[]
|
---@type (fun(self: GameEvent): boolean|nil)[]
|
||||||
GameEvent.cleaners = {}
|
GameEvent.cleaners = {}
|
||||||
|
|
||||||
---@type fun(self: GameEvent)[]
|
---@type (fun(self: GameEvent): boolean|nil)[]
|
||||||
GameEvent.exit_funcs = {}
|
GameEvent.exit_funcs = {}
|
||||||
|
|
||||||
local function wrapCoFunc(f, ...)
|
local function wrapCoFunc(f, ...)
|
||||||
|
@ -45,6 +45,11 @@ function GameEvent:initialize(event, ...)
|
||||||
self.interrupted = false
|
self.interrupted = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- 静态函数,实际定义在events/init.lua
|
||||||
|
function GameEvent:translate(id)
|
||||||
|
error('static')
|
||||||
|
end
|
||||||
|
|
||||||
function GameEvent:__tostring()
|
function GameEvent:__tostring()
|
||||||
return string.format("<%s #%d>", GameEvent:translate(self.event), self.id)
|
return string.format("<%s #%d>", GameEvent:translate(self.event), self.id)
|
||||||
end
|
end
|
||||||
|
@ -159,7 +164,7 @@ function GameEvent:clear()
|
||||||
-- handle error, then break
|
-- handle error, then break
|
||||||
if not string.find(yield_result, "__manuallyBreak") then
|
if not string.find(yield_result, "__manuallyBreak") then
|
||||||
fk.qCritical(yield_result)
|
fk.qCritical(yield_result)
|
||||||
print(debug.traceback(co))
|
print(debug.traceback(clear_co))
|
||||||
end
|
end
|
||||||
coroutine.close(clear_co)
|
coroutine.close(clear_co)
|
||||||
break
|
break
|
||||||
|
|
|
@ -2,36 +2,36 @@
|
||||||
|
|
||||||
MarkEnum = {}
|
MarkEnum = {}
|
||||||
|
|
||||||
---@field StraightToWake string @ 跳过觉醒标记(值为技能名通过+连接)
|
-- 跳过觉醒标记(值为技能名通过+连接)
|
||||||
MarkEnum.StraightToWake = "_straight_to_wake"
|
MarkEnum.StraightToWake = "_straight_to_wake"
|
||||||
|
|
||||||
---@field SwithSkillPreName string @ 转换技状态标记前缀(整体为前缀+转换技技能)
|
--转换技状态标记前缀(整体为前缀+转换技技能)
|
||||||
MarkEnum.SwithSkillPreName = "__switcher_"
|
MarkEnum.SwithSkillPreName = "__switcher_"
|
||||||
---@field QuestSkillPreName string @ 使命技状态标记前缀(整体为前缀+使命技技能)
|
--使命技状态标记前缀(整体为前缀+使命技技能)
|
||||||
MarkEnum.QuestSkillPreName = "__questPre_"
|
MarkEnum.QuestSkillPreName = "__questPre_"
|
||||||
|
|
||||||
---@field AddMaxCards string @ 增加标记值数量的手牌上限
|
--增加标记值数量的手牌上限
|
||||||
MarkEnum.AddMaxCards = "AddMaxCards"
|
MarkEnum.AddMaxCards = "AddMaxCards"
|
||||||
---@field AddMaxCardsInTurn string @ 于本回合内增加标记值数量的手牌上限
|
--于本回合内增加标记值数量的手牌上限
|
||||||
MarkEnum.AddMaxCardsInTurn = "AddMaxCards-turn"
|
MarkEnum.AddMaxCardsInTurn = "AddMaxCards-turn"
|
||||||
---@field MinusMaxCards string @ 减少标记值数量的手牌上限
|
--减少标记值数量的手牌上限
|
||||||
MarkEnum.MinusMaxCards = "MinusMaxCards"
|
MarkEnum.MinusMaxCards = "MinusMaxCards"
|
||||||
---@field AddMaxCards string @ 于本回合内减少标记值数量的手牌上限
|
--于本回合内减少标记值数量的手牌上限
|
||||||
MarkEnum.MinusMaxCardsInTurn = "MinusMaxCards-turn"
|
MarkEnum.MinusMaxCardsInTurn = "MinusMaxCards-turn"
|
||||||
|
|
||||||
---@field BypassTimesLimit string @ 使用牌无次数限制,可带清除标记后缀
|
--使用牌无次数限制,可带清除标记后缀
|
||||||
MarkEnum.BypassTimesLimit = "BypassTimesLimit"
|
MarkEnum.BypassTimesLimit = "BypassTimesLimit"
|
||||||
---@field BypassDistancesLimit string @ 使用牌无距离限制,可带清除标记后缀
|
--使用牌无距离限制,可带清除标记后缀
|
||||||
MarkEnum.BypassDistancesLimit = "BypassDistancesLimit"
|
MarkEnum.BypassDistancesLimit = "BypassDistancesLimit"
|
||||||
---@field BypassTimesLimitTo string @ 对其使用牌无次数限制,可带清除标记后缀
|
--对其使用牌无次数限制,可带清除标记后缀
|
||||||
MarkEnum.BypassTimesLimitTo = "BypassTimesLimitTo"
|
MarkEnum.BypassTimesLimitTo = "BypassTimesLimitTo"
|
||||||
---@field BypassDistancesLimitTo string @ 对其使用牌无距离限制,可带清除标记后缀
|
--对其使用牌无距离限制,可带清除标记后缀
|
||||||
MarkEnum.BypassDistancesLimitTo = "BypassDistancesLimitTo"
|
MarkEnum.BypassDistancesLimitTo = "BypassDistancesLimitTo"
|
||||||
---@field UncompulsoryInvalidity string @ 非锁定技失效,可带清除标记后缀
|
--非锁定技失效,可带清除标记后缀
|
||||||
MarkEnum.UncompulsoryInvalidity = "UncompulsoryInvalidity"
|
MarkEnum.UncompulsoryInvalidity = "UncompulsoryInvalidity"
|
||||||
|
|
||||||
---@field TempMarkSuffix string[] @ 各种清除标记后缀
|
--各种清除标记后缀
|
||||||
MarkEnum.TempMarkSuffix = { "-phase", "-turn", "-round" }
|
MarkEnum.TempMarkSuffix = { "-phase", "-turn", "-round" }
|
||||||
|
|
||||||
---@field CardTempMarkSuffix string[] @ 卡牌标记版本的清除标记后缀
|
---卡牌标记版本的清除标记后缀
|
||||||
MarkEnum.CardTempMarkSuffix = { "-phase", "-turn", "-round", "-inhand" }
|
MarkEnum.CardTempMarkSuffix = { "-phase", "-turn", "-round", "-inhand" }
|
||||||
|
|
|
@ -230,7 +230,7 @@ end
|
||||||
--- 基本算是私有函数,别去用
|
--- 基本算是私有函数,别去用
|
||||||
---@param cardId integer
|
---@param cardId integer
|
||||||
---@param cardArea CardArea
|
---@param cardArea CardArea
|
||||||
---@param integer owner
|
---@param owner integer
|
||||||
function Room:setCardArea(cardId, cardArea, owner)
|
function Room:setCardArea(cardId, cardArea, owner)
|
||||||
self.card_place[cardId] = cardArea
|
self.card_place[cardId] = cardArea
|
||||||
self.owner_map[cardId] = owner
|
self.owner_map[cardId] = owner
|
||||||
|
@ -311,7 +311,7 @@ end
|
||||||
--- 获得当前房间中的所有玩家。
|
--- 获得当前房间中的所有玩家。
|
||||||
---
|
---
|
||||||
--- 返回的数组的第一个元素是当前回合玩家,并且按行动顺序进行排序。
|
--- 返回的数组的第一个元素是当前回合玩家,并且按行动顺序进行排序。
|
||||||
---@param sortBySeat boolean @ 是否无视按座位排序直接返回
|
---@param sortBySeat boolean|nil @ 是否无视按座位排序直接返回
|
||||||
---@return ServerPlayer[] @ 房间中玩家的数组
|
---@return ServerPlayer[] @ 房间中玩家的数组
|
||||||
function Room:getAllPlayers(sortBySeat)
|
function Room:getAllPlayers(sortBySeat)
|
||||||
if not self.game_started then
|
if not self.game_started then
|
||||||
|
@ -431,7 +431,7 @@ end
|
||||||
--- 在设置之后,会通知所有客户端也更新一下标记的值。之后的两个相同
|
--- 在设置之后,会通知所有客户端也更新一下标记的值。之后的两个相同
|
||||||
---@param player ServerPlayer @ 要被更新标记的那个玩家
|
---@param player ServerPlayer @ 要被更新标记的那个玩家
|
||||||
---@param mark string @ 标记的名称
|
---@param mark string @ 标记的名称
|
||||||
---@param value integer @ 要设为的值,其实也可以设为字符串
|
---@param value any @ 要设为的值,其实也可以设为字符串
|
||||||
function Room:setPlayerMark(player, mark, value)
|
function Room:setPlayerMark(player, mark, value)
|
||||||
player:setMark(mark, value)
|
player:setMark(mark, value)
|
||||||
self:doBroadcastNotify("SetPlayerMark", json.encode{
|
self:doBroadcastNotify("SetPlayerMark", json.encode{
|
||||||
|
@ -468,7 +468,7 @@ end
|
||||||
--- 在设置之后,会通知所有客户端也更新一下标记的值。之后的两个相同
|
--- 在设置之后,会通知所有客户端也更新一下标记的值。之后的两个相同
|
||||||
---@param card Card @ 要被更新标记的那张牌
|
---@param card Card @ 要被更新标记的那张牌
|
||||||
---@param mark string @ 标记的名称
|
---@param mark string @ 标记的名称
|
||||||
---@param value integer @ 要设为的值,其实也可以设为字符串
|
---@param value any @ 要设为的值,其实也可以设为字符串
|
||||||
function Room:setCardMark(card, mark, value)
|
function Room:setCardMark(card, mark, value)
|
||||||
card:setMark(mark, value)
|
card:setMark(mark, value)
|
||||||
if not card:isVirtual() then
|
if not card:isVirtual() then
|
||||||
|
@ -531,7 +531,7 @@ end
|
||||||
|
|
||||||
---@param player ServerPlayer
|
---@param player ServerPlayer
|
||||||
---@param general string
|
---@param general string
|
||||||
---@param changeKingdom boolean
|
---@param changeKingdom boolean|nil
|
||||||
---@param noBroadcast boolean|null
|
---@param noBroadcast boolean|null
|
||||||
function Room:setPlayerGeneral(player, general, changeKingdom, noBroadcast)
|
function Room:setPlayerGeneral(player, general, changeKingdom, noBroadcast)
|
||||||
if Fk.generals[general] == nil then return end
|
if Fk.generals[general] == nil then return end
|
||||||
|
@ -559,7 +559,7 @@ function Room:setDeputyGeneral(player, general)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param player ServerPlayer @ 要换将的玩家
|
---@param player ServerPlayer @ 要换将的玩家
|
||||||
---@param new_general string|nil @ 要变更的武将,若不存在则变身为孙策,孙策也不存在则nil错
|
---@param new_general string @ 要变更的武将,若不存在则变身为孙策,孙策也不存在则nil错
|
||||||
---@param full boolean|nil @ 是否血量满状态变身
|
---@param full boolean|nil @ 是否血量满状态变身
|
||||||
---@param isDeputy boolean|nil @ 是否变的是副将
|
---@param isDeputy boolean|nil @ 是否变的是副将
|
||||||
---@param sendLog boolean|nil @ 是否发Log
|
---@param sendLog boolean|nil @ 是否发Log
|
||||||
|
@ -1376,7 +1376,7 @@ end
|
||||||
---@param top_limit integer[]|nil @ 置于牌堆顶的牌的限制(下限,上限),不填写则不限
|
---@param top_limit integer[]|nil @ 置于牌堆顶的牌的限制(下限,上限),不填写则不限
|
||||||
---@param bottom_limit integer[]|nil @ 置于牌堆底的牌的限制(下限,上限),不填写则不限
|
---@param bottom_limit integer[]|nil @ 置于牌堆底的牌的限制(下限,上限),不填写则不限
|
||||||
---@param customNotify string|null @ 自定义读条操作提示
|
---@param customNotify string|null @ 自定义读条操作提示
|
||||||
---@param prompt string|null @ 观星框的标题(暂时雪藏)
|
--@param prompt string|null @ 观星框的标题(暂时雪藏)
|
||||||
---@param noPut boolean|null @ 是否进行放置牌操作
|
---@param noPut boolean|null @ 是否进行放置牌操作
|
||||||
---@param areaNames string[]|null @ 左侧提示信息
|
---@param areaNames string[]|null @ 左侧提示信息
|
||||||
---@return table<"top"|"bottom", integer[]>
|
---@return table<"top"|"bottom", integer[]>
|
||||||
|
@ -1716,8 +1716,8 @@ end
|
||||||
--- 询问玩家从AG中选择一张牌。
|
--- 询问玩家从AG中选择一张牌。
|
||||||
---@param player ServerPlayer @ 要询问的玩家
|
---@param player ServerPlayer @ 要询问的玩家
|
||||||
---@param id_list integer[] | Card[] @ 可选的卡牌列表
|
---@param id_list integer[] | Card[] @ 可选的卡牌列表
|
||||||
---@param cancelable boolean @ 能否点取消
|
---@param cancelable boolean|nil @ 能否点取消
|
||||||
---@param reason string @ 原因
|
---@param reason string|nil @ 原因
|
||||||
---@return integer @ 选择的卡牌
|
---@return integer @ 选择的卡牌
|
||||||
function Room:askForAG(player, id_list, cancelable, reason)
|
function Room:askForAG(player, id_list, cancelable, reason)
|
||||||
id_list = Card:getIdList(id_list)
|
id_list = Card:getIdList(id_list)
|
||||||
|
@ -1748,7 +1748,7 @@ end
|
||||||
--- 告诉一些玩家,AG中的牌被taker取走了。
|
--- 告诉一些玩家,AG中的牌被taker取走了。
|
||||||
---@param taker ServerPlayer @ 拿走牌的玩家
|
---@param taker ServerPlayer @ 拿走牌的玩家
|
||||||
---@param id integer @ 被拿走的牌
|
---@param id integer @ 被拿走的牌
|
||||||
---@param notify_list ServerPlayer[] @ 要告知的玩家,默认为全员
|
---@param notify_list ServerPlayer[]|nil @ 要告知的玩家,默认为全员
|
||||||
function Room:takeAG(taker, id, notify_list)
|
function Room:takeAG(taker, id, notify_list)
|
||||||
self:doBroadcastNotify("TakeAG", json.encode{ taker.id, id }, notify_list)
|
self:doBroadcastNotify("TakeAG", json.encode{ taker.id, id }, notify_list)
|
||||||
end
|
end
|
||||||
|
@ -1756,7 +1756,7 @@ end
|
||||||
--- 关闭player那侧显示的AG。
|
--- 关闭player那侧显示的AG。
|
||||||
---
|
---
|
||||||
--- 若不传参(即player为nil),那么关闭所有玩家的AG。
|
--- 若不传参(即player为nil),那么关闭所有玩家的AG。
|
||||||
---@param player ServerPlayer @ 要关闭AG的玩家
|
---@param player ServerPlayer|nil @ 要关闭AG的玩家
|
||||||
function Room:closeAG(player)
|
function Room:closeAG(player)
|
||||||
if player then player:doNotify("CloseAG", "")
|
if player then player:doNotify("CloseAG", "")
|
||||||
else self:doBroadcastNotify("CloseAG", "") end
|
else self:doBroadcastNotify("CloseAG", "") end
|
||||||
|
@ -1880,7 +1880,7 @@ end
|
||||||
---@param skillName string @ 技能名
|
---@param skillName string @ 技能名
|
||||||
---@param cancelable boolean|null @ 是否可以取消选择
|
---@param cancelable boolean|null @ 是否可以取消选择
|
||||||
---@param flag string|null @ 限定可移动的区域,值为nil(装备区和判定区)、‘e’或‘j’
|
---@param flag string|null @ 限定可移动的区域,值为nil(装备区和判定区)、‘e’或‘j’
|
||||||
---@param no_indicate boolean @ 是否不显示指示线
|
---@param no_indicate boolean|nil @ 是否不显示指示线
|
||||||
---@return integer[] @ 选择的玩家id列表,可能为空
|
---@return integer[] @ 选择的玩家id列表,可能为空
|
||||||
function Room:askForChooseToMoveCardInBoard(player, prompt, skillName, cancelable, flag, no_indicate)
|
function Room:askForChooseToMoveCardInBoard(player, prompt, skillName, cancelable, flag, no_indicate)
|
||||||
if flag then
|
if flag then
|
||||||
|
@ -2337,11 +2337,11 @@ function Room:responseCard(cardResponseEvent)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param card_name string @ 想要视为使用的牌名
|
---@param card_name string @ 想要视为使用的牌名
|
||||||
---@param subcards integer[] @ 子卡,可以留空或者直接nil
|
---@param subcards integer[]|nil @ 子卡,可以留空或者直接nil
|
||||||
---@param from ServerPlayer @ 使用来源
|
---@param from ServerPlayer @ 使用来源
|
||||||
---@param tos ServerPlayer | ServerPlayer[] @ 目标角色(列表)
|
---@param tos ServerPlayer | ServerPlayer[] @ 目标角色(列表)
|
||||||
---@param skillName string @ 技能名
|
---@param skillName string|nil @ 技能名
|
||||||
---@param extra boolean @ 是否不计入次数
|
---@param extra boolean|nil @ 是否不计入次数
|
||||||
function Room:useVirtualCard(card_name, subcards, from, tos, skillName, extra)
|
function Room:useVirtualCard(card_name, subcards, from, tos, skillName, extra)
|
||||||
local card = Fk:cloneCard(card_name)
|
local card = Fk:cloneCard(card_name)
|
||||||
card.skillName = skillName
|
card.skillName = skillName
|
||||||
|
@ -2383,8 +2383,8 @@ end
|
||||||
--- 让一名玩家获得一张牌
|
--- 让一名玩家获得一张牌
|
||||||
---@param player integer|ServerPlayer @ 要拿牌的玩家
|
---@param player integer|ServerPlayer @ 要拿牌的玩家
|
||||||
---@param cid integer|Card @ 要拿到的卡牌
|
---@param cid integer|Card @ 要拿到的卡牌
|
||||||
---@param unhide boolean @ 是否明着拿
|
---@param unhide boolean|nil @ 是否明着拿
|
||||||
---@param reason CardMoveReason @ 卡牌移动的原因
|
---@param reason CardMoveReason|nil @ 卡牌移动的原因
|
||||||
function Room:obtainCard(player, cid, unhide, reason)
|
function Room:obtainCard(player, cid, unhide, reason)
|
||||||
if type(cid) ~= "number" then
|
if type(cid) ~= "number" then
|
||||||
assert(cid and cid:isInstanceOf(Card))
|
assert(cid and cid:isInstanceOf(Card))
|
||||||
|
@ -2503,7 +2503,7 @@ end
|
||||||
--- 令一名玩家失去体力。
|
--- 令一名玩家失去体力。
|
||||||
---@param player ServerPlayer @ 玩家
|
---@param player ServerPlayer @ 玩家
|
||||||
---@param num integer @ 失去的数量
|
---@param num integer @ 失去的数量
|
||||||
---@param skillName string @ 技能名
|
---@param skillName string|nil @ 技能名
|
||||||
---@return boolean
|
---@return boolean
|
||||||
function Room:loseHp(player, num, skillName)
|
function Room:loseHp(player, num, skillName)
|
||||||
return execGameEvent(GameEvent.LoseHp, player, num, skillName)
|
return execGameEvent(GameEvent.LoseHp, player, num, skillName)
|
||||||
|
|
|
@ -561,7 +561,7 @@ end
|
||||||
---@param pile_name string
|
---@param pile_name string
|
||||||
---@param card integer|Card
|
---@param card integer|Card
|
||||||
---@param visible boolean
|
---@param visible boolean
|
||||||
---@param skillName string
|
---@param skillName string|nil
|
||||||
function ServerPlayer:addToPile(pile_name, card, visible, skillName)
|
function ServerPlayer:addToPile(pile_name, card, visible, skillName)
|
||||||
local room = self.room
|
local room = self.room
|
||||||
room:moveCardTo(card, Card.PlayerSpecial, self, fk.ReasonJustMove, skillName, pile_name, visible)
|
room:moveCardTo(card, Card.PlayerSpecial, self, fk.ReasonJustMove, skillName, pile_name, visible)
|
||||||
|
@ -668,10 +668,10 @@ function ServerPlayer:reset()
|
||||||
if not self.faceup then self:turnOver() end
|
if not self.faceup then self:turnOver() end
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param from ServerPlayer
|
--@param from ServerPlayer
|
||||||
---@param tos ServerPlayer[]
|
---@param tos ServerPlayer[]
|
||||||
---@param skillName string
|
---@param skillName string
|
||||||
---@param initialCard Card
|
---@param initialCard Card|nil
|
||||||
---@return PindianStruct
|
---@return PindianStruct
|
||||||
function ServerPlayer:pindian(tos, skillName, initialCard)
|
function ServerPlayer:pindian(tos, skillName, initialCard)
|
||||||
local pindianData = { from = self, tos = tos, reason = skillName, fromCard = initialCard, results = {} }
|
local pindianData = { from = self, tos = tos, reason = skillName, fromCard = initialCard, results = {} }
|
||||||
|
@ -759,6 +759,7 @@ end
|
||||||
|
|
||||||
-- 神貂蝉
|
-- 神貂蝉
|
||||||
|
|
||||||
|
---@param p ServerPlayer
|
||||||
function ServerPlayer:control(p)
|
function ServerPlayer:control(p)
|
||||||
if self == p then
|
if self == p then
|
||||||
self.room:setPlayerMark(p, "@ControledBy", 0)
|
self.room:setPlayerMark(p, "@ControledBy", 0)
|
||||||
|
|
|
@ -8,6 +8,7 @@ Based on initial work of Ryu, Gwang (http://www.gpgstudy.com/gpgiki/LuaUnit)
|
||||||
License: BSD License, see LICENSE.txt
|
License: BSD License, see LICENSE.txt
|
||||||
]]--
|
]]--
|
||||||
|
|
||||||
|
---@diagnostic disable
|
||||||
local os, io = os, io
|
local os, io = os, io
|
||||||
require("math")
|
require("math")
|
||||||
local M={}
|
local M={}
|
||||||
|
|
Loading…
Reference in New Issue