qiyaoCard = sgs.CreateSkillCard{
name = "qiyaoCard",
will_throw = false,
filter = function(self, targets, to_select, player)
local players = sgs.PlayerList()
for i = 1 , #targets do
players:append(targets[i])
end
if sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE_USE then
local card = nil
if self:getUserString() and self:getUserString() ~= "" then
card = sgs.Sanguosha:cloneCard(self:getUserString():split("+")[1])
return card and card:targetFilter(players, to_select, sgs.Self) and not sgs.Self:isProhibited(to_select, card, players)
end
elseif sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE then
return false
end
local _card = sgs.Self:getTag("qiyao"):toCard()
if _card == nil then return false end
local card = sgs.Sanguosha:cloneCard(_card)
card:deleteLater()
return card and card:targetFilter(players, to_select, sgs.Self) and not sgs.Self:isProhibited(to_select, card, players)
end,
target_fixed = function(self)
if sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE_USE then
local card = nil
if self:getUserString() and self:getUserString() ~= "" then
card = sgs.Sanguosha:cloneCard(self:getUserString():split("+")[1])
return card and card:targetFixed()
end
elseif sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE then
return true
end
local _card = sgs.Self:getTag("qiyao"):toCard()
if _card == nil then return false end
local card = sgs.Sanguosha:cloneCard(_card)
card:deleteLater()
return card and card:targetFixed()
end,
feasible = function(self, targets, player)
local players = sgs.PlayerList()
for i = 1 , #targets do
players:append(targets[i])
end
if sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE_USE then
local card = nil
if self:getUserString() and self:getUserString() ~= "" then
card = sgs.Sanguosha:cloneCard(self:getUserString():split("+")[1])
return card and card:targetsFeasible(players, sgs.Self)
end
elseif sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE then
return true
end
local _card = sgs.Self:getTag("qiyao"):toCard()
if _card == nil then return false end
local card = sgs.Sanguosha:cloneCard(_card)
card:deleteLater()
return card and card:targetsFeasible(players, sgs.Self)
end,
on_validate = function(self, card_use)
local room = card_use.from:getRoom()
local to_qiyao = self:getUserString()
if to_qiyao == "slash" and sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE_USE then
local qiyao_list = {}
table.insert(qiyao_list, "slash")
if not (Set(sgs.Sanguosha:getBanPackages()))["maneuvering"] then
table.insert(qiyao_list, "normal_slash")
table.insert(qiyao_list, "thunder_slash")
table.insert(qiyao_list, "fire_slash")
end
to_qiyao = room:askForChoice(card_use.from, "qiyao_slash", table.concat(qiyao_list, "+"))
end
room:setPlayerFlag(card_use.from, "qiyaoUsed")
local card = sgs.Sanguosha:getCard(self:getSubcards():first())
local user_str = ""
if to_qiyao == "slash" then
if card:isKindOf("Slash") then
user_str = card:objectName()
else
user_str = "slash"
end
elseif to_qiyao == "normal_slash" then
user_str = "slash"
else
user_str = to_qiyao
end
local use_card = sgs.Sanguosha:cloneCard(user_str, card:getSuit(), card:getNumber())
use_card:setSkillName("qiyao")
use_card:addSubcard(self:getSubcards():first())
return use_card
end,
on_validate_in_response = function(self, user)
local room = user:getRoom()
local to_qiyao = ""
if self:getUserString() == "peach+analeptic" then
local qiyao_list = {}
table.insert(qiyao_list, "peach")
if not (Set(sgs.Sanguosha:getBanPackages()))["maneuvering"] then
table.insert(qiyao_list, "analeptic")
end
to_qiyao = room:askForChoice(user, "qiyao_saveself", table.concat(qiyao_list, "+"))
elseif self:getUserString() == "slash" then
local qiyao_list = {}
table.insert(qiyao_list, "slash")
if not (Set(sgs.Sanguosha:getBanPackages()))["maneuvering"] then
table.insert(qiyao_list, "normal_slash")
table.insert(qiyao_list, "thunder_slash")
table.insert(qiyao_list, "fire_slash")
end
to_qiyao = room:askForChoice(user, "qiyao_slash", table.concat(qiyao_list, "+"))
else
to_qiyao = self:getUserString()
end
room:setPlayerFlag(user, "qiyaoUsed")
local card = sgs.Sanguosha:getCard(self:getSubcards():first())
local user_str = ""
if to_qiyao == "slash" then
if card:isKindOf("Slash") then
user_str = card:objectName()
else
user_str = "slash"
end
elseif to_qiyao == "normal_slash" then
user_str = "slash"
else
user_str = to_qiyao
end
local use_card = sgs.Sanguosha:cloneCard(user_str, card:getSuit(), card:getNumber())
use_card:setSkillName("qiyao")
use_card:addSubcard(self:getSubcards():first())
return use_card
end
}
qiyao = sgs.CreateOneCardViewAsSkill{
name = "qiyao",
response_or_use = true,
view_filter = function(self, to_select)
if to_select:isEquipped() then return false end
if sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_PLAY then
local c = sgs.Self:getTag("qiyao"):toCard()
if c then
if c:objectName() == "duel" then
return to_select:isRed()
else
return to_select:isKindOf("BasicCard")
end
end
elseif sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE or sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE_USE then
if sgs.Sanguosha:getCurrentCardUsePattern() == "nullification" then
return to_select:isBlack()
else
return to_select:isKindOf("BasicCard")
end
else
return false
end
end,
view_as = function(self, cards)
if sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE or sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE_USE then
local card = qiyaoCard:clone()
card:setUserString(sgs.Sanguosha:getCurrentCardUsePattern())
card:addSubcard(cards)
return card
end
local c = sgs.Self:getTag("qiyao"):toCard()
if c then
local card = qiyaoCard:clone()
card:setUserString(c:objectName())
card:addSubcard(cards)
return card
else
return nil
end
end,
enabled_at_play = function(self, player)
local current = false
local players = player:getAliveSiblings()
players:append(player)
for _, p in sgs.qlist(players) do
if p:getPhase() ~= sgs.Player_NotActive then
current = true
break
end
end
if not current then return false end
return not player:isKongcheng() and not player:hasFlag("qiyaoUsed")
end,
enabled_at_response = function(self, player, pattern)
local current = false
local players = player:getAliveSiblings()
players:append(player)
for _, p in sgs.qlist(players) do
if p:getPhase() ~= sgs.Player_NotActive then
current = true
break
end
end
if not current then return false end
if player:isKongcheng() or player:hasFlag("qiyaoUsed") or string.sub(pattern, 1, 1) == "." or string.sub(pattern, 1, 1) == "@" then return false end
if pattern == "peach" and player:getMark("Global_PreventPeach") > 0 then return false end
if string.find(pattern, "[%u%d]") then return false end
return true
end,
enabled_at_nullification = function(self, player)
local current = false
local players = player:getAliveSiblings()
players:append(player)
for _, p in sgs.qlist(players) do
if p:getPhase() ~= sgs.Player_NotActive then
current = true
break
end
end
if not current then return false end
return not player:isKongcheng() and not player:hasFlag("qiyaoUsed")
end
}
qiyao:setGuhuoDialog("lr")
qiyaoClear = sgs.CreateTriggerSkill{
name = "#qiyaoClear",
events = {sgs.EventPhaseChanging},
on_trigger = function(self, event, player, data)
local room = player:getRoom()
local change = data:toPhaseChange()
if change.to == sgs.Player_NotActive then
for _, p in sgs.qlist(room:getAlivePlayers()) do
if p:hasFlag("qiyaoUsed") then
room:setPlayerFlag(p, "-qiyaoUsed")
end
end
end
return false
end,
can_trigger = function(self, target)
return target
end
}
@array88 这是我目前写的lua(每名角色的回合限一次,你可以将一张基本牌当任意一张基本牌使用或打出,或将一张红色手牌当决斗使用,或将一张黑色手牌当黑色无懈可击使用),要怎么避开蛊惑框换成选择框(没有设置蛊惑框的话手牌会全部暗掉),还有如果要让新曹仁的解围也能响应的话该怎么改,请大神帮忙修改一下