太阳神三国杀lua吧 关注:2,646贴子:73,404
  • 8回复贴,共1

锁定技:你最后一张手牌均视为【桃】

只看楼主收藏回复

不知道为什么没有用……只会东拼西凑_(:з)∠)_
Luae123123 = sgs.CreateFilterSkill{
name = "Luae123123",
view_filter = function(self,to_select)
local room = sgs.Sanguosha:currentRoom()
local place = room:getCardPlace(to_select:getEffectiveId())
local splayer=room:findPlayerBySkillName(self:objectName())
return (place == sgs.Player_PlaceHand) and splayer:getHandcardNum() == 1
end,
view_as = function(self, originalCard)
local peach = sgs.Sanguosha:cloneCard("peach", originalCard:getSuit(), originalCard:getNumber())
peach:setSkillName(self:objectName())
local card = sgs.Sanguosha:getWrappedCard(originalCard:getId())
card:takeOver(peach)
return card
end
}


IP属地:广东1楼2020-04-23 22:16回复
    (o゜▽゜)o☆不要吐槽等级 我签到混的(


    IP属地:广东2楼2020-04-23 23:02
    回复
      2025-06-15 03:47:19
      广告
      萌新正在慢慢死去


      IP属地:广东3楼2020-04-23 23:02
      回复
        好像有个islasthandcard


        IP属地:福建来自Android客户端4楼2020-04-23 23:39
        收起回复
          这是因为在神杀里面,默认FilterSkill只对每张进入区域的牌进行一次改动。换句话说,在你获得了一张牌后,只要它还在手里,那就不会再次触发锁定视为技。所以要主动操作,用函数room:filterCards()在特定时机让每张手牌刷新,这里选用了sgs.CardsMoveOneTime。
          Luae123123 = sgs.CreateFilterSkill{
          name = "Luae123123",
          view_filter = function(self, to_select)
          local room = sgs.Sanguosha:currentRoom()
          return room:getCardPlace(to_select:getEffectiveId()) == sgs.Player_PlaceHand
          end,
          view_as = function(self, originalCard)
          local room = sgs.Sanguosha:currentRoom()
          local id = originalCard:getEffectiveId()
          local player = room:getCardOwner(id)
          if player:getHandcardNum() > 1 then
          return originalCard
          else
          local peach = sgs.Sanguosha:cloneCard("peach", originalCard:getSuit(), originalCard:getNumber())
          peach:setSkillName(self:objectName())
          local card = sgs.Sanguosha:getWrappedCard(id)
          card:takeOver(peach)
          return card
          end
          end
          }
          Luae123123Trig = sgs.CreateTriggerSkill{
          name = "#Luae123123Trig",
          events = sgs.CardsMoveOneTime,
          on_trigger = function(self, event, player, data)
          local move = data:toMoveOneTime()
          if move.from_places:contains(sgs.Player_PlaceHand) or move.to_place == sgs.Player_PlaceHand then
          player:getRoom():filterCards(player, player:getHandcards(), true)
          end
          end
          }
          extension:insertRelatedSkills('Luae123123', '#Luae123123Trig')
          misc_e123123:addSkill(Luae123123)
          misc_e123123:addSkill(Luae123123Trig)


          IP属地:江苏5楼2020-04-24 22:58
          收起回复
            另外我发现一种用触发技写的更简洁的写法,但不知道有没有bug:
            Luae123123 = sgs.CreateTriggerSkill{
            name = "Luae123123",
            events = sgs.CardsMoveOneTime,
            frequency = sgs.Skill_Compulsory,
            on_trigger = function(self, event, player, data)
            local move = data:toMoveOneTime()
            if move.from_places:contains(sgs.Player_PlaceHand) or move.to_place == sgs.Player_PlaceHand then
            if player:getHandcardNum() == 1 then
            local card = player:getHandcards():first()
            local peach = sgs.Sanguosha:cloneCard("peach", card:getSuit(), card:getNumber())
            peach:setSkillName(self:objectName())
            local acard = sgs.Sanguosha:getWrappedCard(card:getId())
            acard:takeOver(peach)
            player:getRoom():notifyUpdateCard(player, card:getId(), peach)
            else
            player:getRoom():filterCards(player, player:getHandcards(), true)
            end
            end
            end
            }


            IP属地:江苏6楼2020-04-25 15:59
            收起回复