太阳神三国杀lua吧 关注:2,637贴子:73,375
  • 6回复贴,共1

【救助】回合外弃置标记并让房间提供桃

只看楼主收藏回复

LuaXuezhan = sgs.CreateTriggerSkill{
name = "#LuaXuezhan",
frequency = sgs.Skill_NotFrequent,
events = {sgs.Damaged, sgs.Damage, sgs.CardAsked},
view_as_skill = LuaXuezhanpeachVS,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
if event == sgs.Damaged or event == sgs.Damage then
local damage = data:toDamage()
player:gainMark("@xuezhan", damage.damage)
end
if event == sgs.CardAsked and player:getMark("@xuezhan") > 0 then
if data:toStringList()[1] == "jink" or data:toStringList()[1] == "slash" or data:toStringList()[1] == "peach" then
if room:askForSkillInvoke(player, self:objectName(), data) then
player:loseMark("@xuezhan")
if data:toStringList()[1] == "jink" then
sgs.Sanguosha:cloneCard("jink", sgs.Card_NoSuit, 0):setSkillName(self:objectName())
room:provide(sgs.Sanguosha:cloneCard("jink", sgs.Card_NoSuit, 0))
end
if data:toStringList()[1] == "slash" then
sgs.Sanguosha:cloneCard("slash", sgs.Card_NoSuit, 0):setSkillName(self:objectName())
room:provide(sgs.Sanguosha:cloneCard("slash", sgs.Card_NoSuit, 0))
end
if data:toStringList()[1] == "peach" then
sgs.Sanguosha:cloneCard("peach", sgs.Card_NoSuit, 0):setSkillName(self:objectName())
room:provide(sgs.Sanguosha:cloneCard("peach", sgs.Card_NoSuit, 0))
end
end
end
end
end
}
提供杀和闪都可以,然而到了桃连提示也没有


1楼2015-09-05 08:32回复
    (连提示也没有的意思就是房间不会询问发动技能)


    2楼2015-09-05 08:33
    回复
      sgs.CardAsked 这个时机不提供桃 傲才也没有在这个时机写桃啊


      IP属地:内蒙古3楼2015-09-05 08:52
      收起回复
        我以前写过的一个技能,不是太完美,但基本够用了,重点是触发技,其他可以跳过。可能有参考价值。
        描述一部分:一名角色的回合外,你可以将一张“侠”置入弃牌堆,视为其使用或打出一张基本牌。(就是下面的代码)
        LuaRenxiaBasicCard = sgs.CreateSkillCard{
        name = "luarenxia_basic",
        target_fixed = true,
        will_throw = true,
        handling_method = sgs.Card_MethodDiscard,
        on_use = function()
        return false
        end
        }
        --空技能卡
        LuaRenxiaBasicVS = sgs.CreateOneCardViewAsSkill{
        name = "luarenxia_basic",
        expand_pile = "xia",
        filter_pattern = ".|.|.|xia",
        view_as = function(self,originalcard)
        local vs_card = LuaRenxiaBasicCard:clone()
        vs_card:setSkillName("luarenxia")
        vs_card:addSubcard(originalcard)
        return vs_card
        end,
        enabled_at_play = function(self,player)
        return false
        end,
        enabled_at_response = function(self,player,pattern)
        return pattern == "@@luarenxia_basic"
        end
        }
        --视为技
        function getSuitPatternCard(liulong,pattern,card)
        local to_renxia
        local room = liulong:getRoom()
        if pattern == "peach+analeptic" then
        local renxia_list = {}
        table.insert(renxia_list, "peach")
        if not (Set(sgs.Sanguosha:getBanPackages()))["maneuvering"] then
        table.insert(renxia_list, "analeptic")
        end
        to_renxia = room:askForChoice(liulong, "renxia_saveself", table.concat(renxia_list, "+"))
        elseif pattern == "slash" then
        local renxia_list = {}
        table.insert(renxia_list, "slash")
        if not (Set(sgs.Sanguosha:getBanPackages()))["maneuvering"] then
        table.insert(renxia_list, "normal_slash")
        table.insert(renxia_list, "thunder_slash")
        table.insert(renxia_list, "fire_slash")
        end
        to_renxia = room:askForChoice(liulong, "renxia_slash", table.concat(renxia_list, "+"))
        else
        to_renxia = pattern
        end
        local subcards = card:getSubcards()
        local card = sgs.Sanguosha:getCard(subcards:first())
        local user_str
        if to_renxia == "slash" then
        if card:isKindOf("Slash") then
        user_str = card:objectName()
        else
        user_str = "slash"
        end
        elseif to_renxia == "normal_slash" then
        user_str = "slash"
        else
        user_str = to_renxia
        end
        local use_card = sgs.Sanguosha:cloneCard(user_str, card:getSuit(), card:getNumber())
        use_card:setSkillName("luarenxia")
        return use_card
        end
        --函数就是构造一张可供打出的虚拟卡,看不懂没关系。
        --重点是下面的触发技
        LuaRenxiaBasic = sgs.CreateTriggerSkill{
        name = "luarenxia_basic",
        view_as_skill = LuaRenxiaBasicVS,
        events = {sgs.CardAsked,sgs.AskForPeaches,sgs.TrickEffect},
        -AskForPeaches打出桃,TrcikEffect针对回合外借刀使用杀
        on_trigger = function(self,event,player,data)
        local pattern
        local room = player:getRoom()
        local current = room:getCurrent()
        if player:getPhase() ~= sgs.Player_NotActive then return false end
        if event == sgs.AskForPeaches and current and current:isAlive() and current:hasSkill("wansha")
        and current:objectName() ~= player:objectName() and data:toDying().who:objectName() ~= player:objectName() then
        return false
        end
        --完杀跳过询问
        if event == sgs.AskForPeaches then
        local dying = data:toDying()
        if dying.who:objectName() == player:objectName() then
        pattern = "peach+analeptic"
        else pattern = "peach"
        end
        --求桃人工制造pattern
        elseif event == sgs.CardAsked then
        pattern = data:toStringList()[1]
        elseif event == sgs.TrickEffect then
        local effect = data:toCardEffect()
        if effect.card:isKindOf("Collateral") then
        pattern = "slash"
        end
        end
        if not pattern then return false end
        local room = player:getRoom()
        local liulongs = room:findPlayersBySkillName("luarenxia")
        if string.find(pattern,"slash") or pattern == "jink" or string.find(pattern,"peach") or string.find(pattern,"analeptic") then
        for _, liulong in sgs.qlist(liulongs) do
        if liulong:getPile("xia"):length() > 0 then
        local card = room:askForCard(liulong,"@@luarenxia_basic","@luarenxia_basic:"..player:objectName().."::"..pattern)
        --弃置“侠”
        if card then
        local n_card = getSuitPatternCard(liulong,pattern,card)
        --获得相应虚拟卡牌
        if event == sgs.AskForPeaches then
        local dying = data:toDying()
        room:useCard(sgs.CardUseStruct(n_card,player,dying.who))
        if player:getHp() <= 0 then
        room:getThread():trigger(sgs.AskForPeaches,room,player,data)
        --便于连续给桃(就是可以再触发这个技能)
        end
        elseif event == sgs.CardAsked then
        room:provide(n_card)
        return false
        elseif event == sgs.TrickEffect then
        local victim = player:getTag("collateralVictim"):toPlayer()
        if not victim then return false end
        room:useCard(sgs.CardUseStruct(n_card,player,victim))
        player:removeTag("collateralVictim")
        end
        end
        end
        end
        end
        end,
        can_trigger = function(self,target)
        return target and target:isAlive()
        end
        }


        IP属地:浙江4楼2015-09-06 11:09
        收起回复