shendiaochan = sgs.General(extension, "shendiaochan", "god", 3, false) jiusecard = sgs.CreateSkillCard
{
name = "jiusecard",
filter = function(self, targets, to_select)
if #targets == 0 then
return to_select:getGeneral():isMale()
end
if #targets == 1 then
return targets[1]:inMyAttackRange(to_select)
end
end,
on_use = function(self, room, source, targets)
room:throwCard(self)
local from = targets[1]
local to = targets[2]
local slash = sgs.Sanguosha:getCard(self:getSubcards():first())
room:setPlayerFlag(to, "jiuse")
room:cardEffect(slash, from, to)
end,
} jiusevs = sgs.CreateViewAsSkill
{
name = "jiusevs",
n = 1,
view_filter = function(self, selected, to_select)
return to_select:inherits("Slash") and not to_select:isEquipped()
end,
view_as = function(self, cards)
if #cards ~= 1 then return nil end
local acard = jiusecard:clone()
acard:setSkillName("jiuse")
acard:addSubcard(cards[1])
return acard
end,
enabled_at_play = function(self, player)
return not player:hasUsed("#jiusecard")
end,
} jiuse = sgs.CreateTriggerSkill
{
name = "jiuse",
events = {sgs.SlashHit, sgs.CardFinished},
view_as_skill = jiusevs,
can_trigger = function(self, player)
return player:getRoom():findPlayerBySkillName(self:objectName())
end,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
if event == sgs.SlashHit then
local effect = data:toSlashEffect()
if effect.to:hasFlag("jiuse") then
room:setPlayerFlag(effect.to, "-jiuse")
local damage = sgs.DamageStruct()
damage.card = effect.card
damage.from = effect.from
damage.to = effect.to
damage.damage = 2
damage.nature = effect.nature
room:damage(damage)
return true
end
elseif event == sgs.CardFinished then
local use = data:toCardUse()
for _,p in sgs.qlist(room:getAllPlayers()) do
if p:hasFlag("jiuse") then
room:setPlayerFlag(p, "-jiuse")
end
end
end
end,
} manwucards = {} manwu = sgs.CreateTriggerSkill
{
name = "manwu",
events = {sgs.CardFinished, sgs.PhaseChange},
can_trigger = function(self, player)
return player:getRoom():findPlayerBySkillName(self:objectName())
end,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
local skillowner = room:findPlayerBySkillName(self:objectName())
if not skillowner then return false end
if event == sgs.PhaseChange then
if skillowner:getPhase() == sgs.Player_Finish then
if #manwucards > 0 then
for _, id in ipairs(manwucards) do
if room:getCardPlace(id) ~= sgs.Player_DiscardedPile then
local card = sgs.Sanguosha:getCard(id)
room:throwCard(card)
manwucards:removeOne(id)
end
{
name = "jiusecard",
filter = function(self, targets, to_select)
if #targets == 0 then
return to_select:getGeneral():isMale()
end
if #targets == 1 then
return targets[1]:inMyAttackRange(to_select)
end
end,
on_use = function(self, room, source, targets)
room:throwCard(self)
local from = targets[1]
local to = targets[2]
local slash = sgs.Sanguosha:getCard(self:getSubcards():first())
room:setPlayerFlag(to, "jiuse")
room:cardEffect(slash, from, to)
end,
} jiusevs = sgs.CreateViewAsSkill
{
name = "jiusevs",
n = 1,
view_filter = function(self, selected, to_select)
return to_select:inherits("Slash") and not to_select:isEquipped()
end,
view_as = function(self, cards)
if #cards ~= 1 then return nil end
local acard = jiusecard:clone()
acard:setSkillName("jiuse")
acard:addSubcard(cards[1])
return acard
end,
enabled_at_play = function(self, player)
return not player:hasUsed("#jiusecard")
end,
} jiuse = sgs.CreateTriggerSkill
{
name = "jiuse",
events = {sgs.SlashHit, sgs.CardFinished},
view_as_skill = jiusevs,
can_trigger = function(self, player)
return player:getRoom():findPlayerBySkillName(self:objectName())
end,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
if event == sgs.SlashHit then
local effect = data:toSlashEffect()
if effect.to:hasFlag("jiuse") then
room:setPlayerFlag(effect.to, "-jiuse")
local damage = sgs.DamageStruct()
damage.card = effect.card
damage.from = effect.from
damage.to = effect.to
damage.damage = 2
damage.nature = effect.nature
room:damage(damage)
return true
end
elseif event == sgs.CardFinished then
local use = data:toCardUse()
for _,p in sgs.qlist(room:getAllPlayers()) do
if p:hasFlag("jiuse") then
room:setPlayerFlag(p, "-jiuse")
end
end
end
end,
} manwucards = {} manwu = sgs.CreateTriggerSkill
{
name = "manwu",
events = {sgs.CardFinished, sgs.PhaseChange},
can_trigger = function(self, player)
return player:getRoom():findPlayerBySkillName(self:objectName())
end,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
local skillowner = room:findPlayerBySkillName(self:objectName())
if not skillowner then return false end
if event == sgs.PhaseChange then
if skillowner:getPhase() == sgs.Player_Finish then
if #manwucards > 0 then
for _, id in ipairs(manwucards) do
if room:getCardPlace(id) ~= sgs.Player_DiscardedPile then
local card = sgs.Sanguosha:getCard(id)
room:throwCard(card)
manwucards:removeOne(id)
end














