Fixbug (#123)
【杀】的residue_func无效bug 【顺手牵羊】的distance_limit_func无效bug 重铸的moveReason调整为置入弃牌堆 --------- Signed-off-by: Mechanel <nyutanislavsky@qq.com>
This commit is contained in:
parent
9876dd15c7
commit
ba8aae852d
|
@ -210,6 +210,8 @@ Fk:loadTranslationTable{
|
||||||
["$UninstallEquip"] = "%from 卸载了 %card",
|
["$UninstallEquip"] = "%from 卸载了 %card",
|
||||||
|
|
||||||
["#ShowCard"] = "%from 展示了牌 %card",
|
["#ShowCard"] = "%from 展示了牌 %card",
|
||||||
|
["#Recast"] = "%from 重铸了 %card",
|
||||||
|
["#RecastBySkill"] = "%from 发动了 “%arg” 重铸了 %card",
|
||||||
|
|
||||||
-- phase
|
-- phase
|
||||||
["#PhaseSkipped"] = "%from 跳过了 %arg",
|
["#PhaseSkipped"] = "%from 跳过了 %arg",
|
||||||
|
|
|
@ -26,7 +26,8 @@ end
|
||||||
|
|
||||||
--- Determine whether the skill can be used in playing phase
|
--- Determine whether the skill can be used in playing phase
|
||||||
---@param player Player
|
---@param player Player
|
||||||
function ActiveSkill:canUse(player)
|
---@param card Card @ helper
|
||||||
|
function ActiveSkill:canUse(player, card)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -5,18 +5,22 @@ local TargetModSkill = StatusSkill:subclass("TargetModSkill")
|
||||||
|
|
||||||
---@param player Player
|
---@param player Player
|
||||||
---@param card_skill ActiveSkill
|
---@param card_skill ActiveSkill
|
||||||
|
---@param scope integer
|
||||||
|
---@param card Card
|
||||||
function TargetModSkill:getResidueNum(player, card_skill, scope, card)
|
function TargetModSkill:getResidueNum(player, card_skill, scope, card)
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param player Player
|
---@param player Player
|
||||||
---@param card_skill ActiveSkill
|
---@param card_skill ActiveSkill
|
||||||
|
---@param card Card
|
||||||
function TargetModSkill:getDistanceLimit(player, card_skill, card)
|
function TargetModSkill:getDistanceLimit(player, card_skill, card)
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param player Player
|
---@param player Player
|
||||||
---@param card_skill ActiveSkill
|
---@param card_skill ActiveSkill
|
||||||
|
---@param card Card
|
||||||
function TargetModSkill:getExtraTargetNum(player, card_skill, card)
|
function TargetModSkill:getExtraTargetNum(player, card_skill, card)
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
|
@ -145,9 +145,9 @@ function fk.CreateTriggerSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class ActiveSkillSpec: UsableSkillSpec
|
---@class ActiveSkillSpec: UsableSkillSpec
|
||||||
---@field public can_use fun(self: ActiveSkill, player: Player): boolean
|
---@field public can_use fun(self: ActiveSkill, player: Player, card: Card): boolean
|
||||||
---@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
|
||||||
---@field public target_filter fun(self: ActiveSkill, to_select: integer, selected: integer[], selected_cards: integer[]): boolean
|
---@field public target_filter fun(self: ActiveSkill, to_select: integer, selected: integer[], selected_cards: integer[], card: Card): boolean
|
||||||
---@field public feasible fun(self: ActiveSkill, selected: integer[], selected_cards: integer[]): boolean
|
---@field public feasible fun(self: ActiveSkill, selected: integer[], selected_cards: integer[]): boolean
|
||||||
---@field public on_use fun(self: ActiveSkill, room: Room, cardUseEvent: CardUseStruct): boolean
|
---@field public on_use fun(self: ActiveSkill, room: Room, cardUseEvent: CardUseStruct): boolean
|
||||||
---@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
|
||||||
|
@ -286,9 +286,9 @@ function fk.CreateMaxCardsSkill(spec)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@class TargetModSpec: StatusSkillSpec
|
---@class TargetModSpec: StatusSkillSpec
|
||||||
---@field public residue_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, scope: integer)
|
---@field public residue_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, scope: integer, card: Card)
|
||||||
---@field public distance_limit_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill)
|
---@field public distance_limit_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, card: Card)
|
||||||
---@field public extra_target_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill)
|
---@field public extra_target_func fun(self: TargetModSkill, player: Player, skill: ActiveSkill, card: Card)
|
||||||
|
|
||||||
---@param spec TargetModSpec
|
---@param spec TargetModSpec
|
||||||
---@return TargetModSkill
|
---@return TargetModSkill
|
||||||
|
|
|
@ -198,7 +198,18 @@ local recast = fk.CreateActiveSkill{
|
||||||
target_num = 0,
|
target_num = 0,
|
||||||
on_use = function(self, room, effect)
|
on_use = function(self, room, effect)
|
||||||
local from = room:getPlayerById(effect.from)
|
local from = room:getPlayerById(effect.from)
|
||||||
room:throwCard(effect.cards, self.name, from)
|
room:moveCards({
|
||||||
|
ids = effect.cards,
|
||||||
|
from = effect.from,
|
||||||
|
toArea = Card.DiscardPile,
|
||||||
|
skillName = "recast",
|
||||||
|
moveReason = fk.ReasonPutIntoDiscardPile,
|
||||||
|
})
|
||||||
|
room:sendLog{
|
||||||
|
type = "#Recast",
|
||||||
|
from = effect.from,
|
||||||
|
card = effect.cards,
|
||||||
|
}
|
||||||
room:drawCards(from, #effect.cards, self.name)
|
room:drawCards(from, #effect.cards, self.name)
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,8 @@ local slashSkill = fk.CreateActiveSkill{
|
||||||
name = "slash_skill",
|
name = "slash_skill",
|
||||||
max_phase_use_time = 1,
|
max_phase_use_time = 1,
|
||||||
target_num = 1,
|
target_num = 1,
|
||||||
can_use = function(self, player)
|
can_use = function(self, player, card)
|
||||||
return player:usedCardTimes("slash", Player.HistoryPhase) < self:getMaxUseTime(Self, Player.HistoryPhase)
|
return player:usedCardTimes("slash", Player.HistoryPhase) < self:getMaxUseTime(Self, Player.HistoryPhase, card)
|
||||||
end,
|
end,
|
||||||
target_filter = function(self, to_select, selected, _, card)
|
target_filter = function(self, to_select, selected, _, card)
|
||||||
if #selected < self:getMaxTargetNum(Self, card) then
|
if #selected < self:getMaxTargetNum(Self, card) then
|
||||||
|
@ -199,10 +199,10 @@ extension:addCards({
|
||||||
local snatchSkill = fk.CreateActiveSkill{
|
local snatchSkill = fk.CreateActiveSkill{
|
||||||
name = "snatch_skill",
|
name = "snatch_skill",
|
||||||
distance_limit = 1,
|
distance_limit = 1,
|
||||||
target_filter = function(self, to_select, selected)
|
target_filter = function(self, to_select, selected, _, card)
|
||||||
if #selected == 0 then
|
if #selected == 0 then
|
||||||
local player = Fk:currentRoom():getPlayerById(to_select)
|
local player = Fk:currentRoom():getPlayerById(to_select)
|
||||||
return Self ~= player and Self:distanceTo(player) <= self:getDistanceLimit(Self)
|
return Self ~= player and Self:distanceTo(player) <= self:getDistanceLimit(Self, card) -- for no distance limit for snatch
|
||||||
and not player:isAllNude()
|
and not player:isAllNude()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
Loading…
Reference in New Issue