import os cwrl春哥庇护者
关注数: 57 粉丝数: 61 发帖数: 5,207 关注贴吧数: 261
强势水。。。。。 module("extensions.miku", package.seeall) extension = sgs.Package("miku") miku = sgs.General(extension,"miku","god","3",false) Shuaicong = sgs.CreateTriggerSkill{ name = "shuaicong", events = {sgs.EventPhaseStart}, on_trigger = function(self,event,player,data) local room = player:getRoom() local mikus = room:findPlayersBySkillName(self:objectName()) for _, miku in sgs.qlist(mikus) do local player_data = sgs.QVariant() player_data:setValue(player) if miku:askForSkillInvoke(self:objectName(),player_data) then room:broadcastSkillInvoke("shuaicong") local judge = sgs.JudgeStruct() judge.who = player judge.pattern = ".|red" judge.negative = false judge.play_animation = true judge.reason = self:objectName() room:judge(judge) if judge:isGood() then player:drawCards(1,self:objectName()) elseif miku:objectName() ~= player:objectName() and (not player:isKongcheng()) then local dummy = room:askForExchange(player,self:objectName(),1,1,false,"@shuaicong_to::"..miku:objectName()) miku:obtainCard(dummy) end end end end, can_trigger = function(self,target) return target and target:isAlive() and target:getPhase() == sgs.Player_RoundStart end } miku:addSkill(Shuaicong) GongzhuCard = sgs.CreateSkillCard{ name = "gongzhu", will_throw = false, filter = function(self,targets,to_select) return to_select:isMale() and #targets == 0 end, on_use = function(self,room,source,targets) targets[1]:obtainCard(self) end } GongzhuVS = sgs.CreateOneCardViewAsSkill{ name = "gongzhu", filter_pattern = ".", response_pattern = "@@gongzhu", view_as = function(self,originalcard) local vs_card = GongzhuCard:clone() vs_card:addSubcard(originalcard) return vs_card end } Gongzhu = sgs.CreateTriggerSkill{ name = "gongzhu", view_as_skill = GongzhuVS, events = {sgs.CardAsked}, on_trigger = function(self,event,player,data) local pattern = data:toStringList()[1] local room = player:getRoom() if pattern == "jink" and room:askForUseCard(player,"@@gongzhu","@gongzhu") then local jink = sgs.Sanguosha:cloneCard("jink",sgs.Card_NoSuit,0) jink:setSkillName("_gongzhu") room:provide(jink) end end } miku:addSkill(Gongzhu) Qianben = sgs.CreateTriggerSkill{ name = "qianben", events = {sgs.CardsMoveOneTime}, on_trigger = function(self,event,player,data) local move = data:toMoveOneTime() local room = player:getRoom() if move.to and move.to:objectName() == player:objectName() and move.reason.m_reason == sgs.CardMoveReason_S_REASON_RETRIAL then room:sendCompulsoryTriggerLog(player,self:objectName()) room:broadcastSkillInvoke("qianben") player:drawCards(2,self:objectName()) end end } miku:addSkill(Qianben) ShenhaiCard = sgs.CreateSkillCard{ name = "shenhai", target_fixed = true, will_throw = false, on_use = function(self,room,source,target) local draw_pile = room:getDrawPile() math.randomseed(tostring(os.time()):reverse():sub(1, 6)) local i = math.random(-1,draw_pile:length()-1) local dummy = sgs.Sanguosha:cloneCard("jink") for j = i,0,-1 do dummy:addSubcard(draw_pile:at(j)) end if i > -1 then room:setPlayerFlag(source,"Shenhai_InTempMoving") source:addToPile("#Shenhai",dummy, false) room:setPlayerFlag(source,"-Shenhai_InTempMoving") end local id = self:getSubcards():first() local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_PUT,source:objectName(),self:objectName(),"") room:moveCardTo(self,nil,sgs.Player_DrawPile,reason,true) local log = sgs.LogMessage() log.from = source log.type = "$Shenhai" log.card_str = sgs.Sanguosha:getCard(id):toString() room:sendLog(log) if i > -1 then room:setPlayerFlag(source,"Shenhai_InTempMoving") room:moveCardTo(dummy, nil, sgs.Player_DrawPile, false) room:setPlayerFlag(source,"-Shenhai_InTempMoving") end --room:doBroadcastNotify(sgs.CommandType.S_COMMAND_UPDATE_PILE, sgs.QVariant(room:getDrawPile():length())) local id_table = room:getTag("ShenhaiCards"):toString():split("+") or {} table.insert(id_table,tostring(id)) room:setTag("ShenhaiCards",sgs.QVariant(table.concat(id_table,"+"))) end } ShenhaiVS = sgs.CreateOneCardViewAsSkill{ name = "shenhai", filter_pattern = ".|.|.|hand", view_as = function(self,originalcard) local vs_card = ShenhaiCard:clone() vs_card:addSubcard(originalcard) return vs_card end, enabled_at_play = function(self,player) return not player:isKongcheng() end } local json = require("json") Shenhai = sgs.CreateTriggerSkill{ name = "shenhai", events = {sgs.CardsMoveOneTime}, view_as_skill = ShenhaiVS, on_trigger = function(self,event,player,data) local move = data:toMoveOneTime() local room = player:getRoom() if move.to and move.to:objectName() == player:objectName() and move.from_places:contains(sgs.Player_DrawPile) and (move.to_place == sgs.Player_PlaceHand or move.to_place == sgs.Player_PlaceEquip) then local id_table = room:getTag("ShenhaiCards"):toString():split("+") or {} local show_ids = sgs.IntList() if #id_table == 0 then return false end for _, id in sgs.qlist(move.card_ids) do if table.contains(id_table,tostring(id)) then table.removeAll(id_table,tostring(id)) show_ids:append(id) end end room:setTag("ShenhaiCards",sgs.QVariant(table.concat(id_table,"+"))) if not show_ids:isEmpty() then for _,id in sgs.qlist(show_ids) do room:showCard(player,id) end room:getThread():delay() room:sendCompulsoryTriggerLog(player,self:objectName()) --[[local jsonValue = { ".", false, sgs.QList2Table(show_ids) } room:doBroadcastNotify(room:getAlivePlayers(),sgs.CommandType.S_COMMAND_SHOW_ALL_CARDS, json.encode(jsonValue))]]-- player:drawCards(2*show_ids:length(),self:objectName()) end elseif move.to_place == sgs.Player_DiscardPile then local id_table = room:getTag("ShenhaiCards"):toString():split("+") or {} if #id_table == 0 then return false end for _, id in sgs.qlist(move.card_ids) do if table.contains(id_table,tostring(id)) then table.removeAll(id_table,tostring(id)) end end room:setTag("ShenhaiCards",sgs.QVariant(table.concat(id_table,"+"))) end end, can_trigger = function(self,target) return target and target:isAlive() end } ShenhaiFakeMove = sgs.CreateTriggerSkill{ name = "#shenhai-fake-move", events = {sgs.BeforeCardsMove,sgs.CardsMoveOneTime}, priority = 10, on_trigger = function(self, event, player, data) if player:hasFlag("Shenhai_InTempMoving") then return true end end, can_trigger = function(self, target) return target end, } extension:insertRelatedSkills("shenhai","#shenhai-fake-move") miku:addSkill(ShenhaiFakeMove) miku:addSkill(Shenhai) function isMaxHp(player) local room = player:getRoom() local hp = player:getHp() for _, p in sgs.qlist(room:getOtherPlayers(player)) do if p:getHp() > hp then return false end end return true end XiaoshiCard = sgs.CreateSkillCard{ name = "xiaoshi", filter = function(self,targets,to_select) return #targets < 3 end, on_use = function(self,room,source,targets) local damage_count = 3 local dests = sgs.SPlayerList() for _, target in ipairs(targets) do if isMaxHp(target) then room:setPlayerFlag(target,"xiaoshi_addDamage") end dests:append(target) end room:sortByActionOrder(dests) if #targets == 3 then for _, dest in sgs.qlist(dests) do room:damage(sgs.DamageStruct(self:objectName(),source,dest)) end elseif #targets == 1 then room:damage(sgs.DamageStruct(self:objectName(),source,targets[1],3)) elseif #targets == 2 then for _, dest in sgs.qlist(dests) do if damage_count == 3 then local choice = room:askForChoice(source,self:objectName(),"onePoint+twoPoint+"..dest:getGeneralName()) if choice == "twoPoint" then room:damage(sgs.DamageStruct(self:objectName(),source,dest,2)) damage_count = damage_count - 2 else room:damage(sgs.DamageStruct(self:objectName(),source,dest)) damage_count = damage_count - 1 end else room:damage(sgs.DamageStruct(self:objectName(),source,dest,damage_count)) end end end for _, target in ipairs(targets) do if target:hasFlag("xiaoshi_addDamage") then room:setPlayerFlag(target,"-xiaoshi_addDamage") end end end } XiaoshiVS = sgs.CreateZeroCardViewAsSkill{ name = "xiaoshi", response_pattern = "@@xiaoshi", view_as = function() return XiaoshiCard:clone() end } Xiaoshi = sgs.CreateTriggerSkill{ name = "xiaoshi", view_as_skill = XiaoshiVS, events = {sgs.Death,sgs.DamageCaused}, on_trigger = function(self,event,player,data) local room = player:getRoom() if event == sgs.Death then local death = data:toDeath() if death.who:objectName() == player:objectName() then room:askForUseCard(player,"@@xiaoshi","@xiaoshi") end elseif event == sgs.DamageCaused then local damage = data:toDamage() if damage.reason == self:objectName() and damage.to:hasFlag("xiaoshi_addDamage") then damage.damage = damage.damage + 1 data:setValue(damage) end end end, can_trigger = function(self,target) return target and target:hasSkill(self:objectName()) and target:isDead() end } miku:addSkill(Xiaoshi) Xiaochou = sgs.CreateTriggerSkill{ name = "xiaochou", events = {sgs.Damaged}, on_trigger = function(self,event,player,data) local damage = data:toDamage() local room = player:getRoom() if damage.from and damage.from:isAlive() then local victim_data = sgs.QVariant() victim_data:setValue(damage.from) for i = 1,damage.damage,1 do if damage.from:isAlive() and player:askForSkillInvoke(self:objectName(),victim_data) then room:broadcastSkillInvoke("xiaochou") player:throwAllHandCards() local friends = sgs.SPlayerList() for _, p in sgs.qlist(room:getOtherPlayers(damage.from)) do if p:isMale() then friends:append(p) end end if not friends:isEmpty() then room:sortByActionOrder(friends) for _, friend in sgs.qlist(friends) do if friend:isAlive() and damage.from:isAlive() then room:askForUseSlashTo(friend,damage.from,"@xiaochou_to",false) end end end end end end end } miku:addSkill(Xiaochou) sgs.LoadTranslationTable{ ["miku"] = "初音未来", ["#miku"] = "初始之音", ["shuaicong"] = "甩葱", ["$shuaicong1"] = "布拉擦擦拉哔哔拉哔哔拉嗒哔嗒叮嗒乒嗒哆~", ["$shuaicong2"] = "吧哩吧嗒吧哩吧哩吧哔哔哔哔哔哩嘶叮嗒哆~", [":shuaicong"] = "每当一名角色的回合开始时,你可令其做一次判定。若为红则令其摸一张牌,反之则需交给你一张手牌。", ["@shuaicong_to"] = "请交给 %dest 一张手牌", ["gongzhu"] = "公主", ["$gongzhu"] = "世界第一~的公主殿下", [":gongzhu"] = "每当你需要使用或打出一张“闪”时,你可将一张牌交给一名男性角色,若如此做则视为你使用或打出了一张“闪”。", ["@gongzhu"] = "你可以交给一名男性角色一张手牌,视为打出一张闪", ["~gongzhu"] = "选择一张手牌->选择一名男性角色->点击确定", ["_gongzhu"] = "公主", ["qianben"] = "千本", ["$qianben1"] = "英勇无畏维新革命,光明磊落反战国。", ["$qianben2"] = "疾行穿过环状线,东奔西走在所不辞。", [":qianben"] = "<font color=\"blue\"><b>锁定技</b></font>,你的判定区中的牌每变化一次,你摸两张牌。", ["shenhai"] = "深海", ["$shenhai1"] = "深海少女 持续下沉", ["$shenhai2"] = "深海少女 但还是想知道", [":shenhai"] = "出牌阶段,你可将一张手牌正面向上随机混入牌堆。摸到此牌的角色额外摸两张牌。", ["$Shenhai"] = "%card 被 %from 藏在摸牌堆中,<font color=\"red\"><b>找到有奖哟~</b></font>", ["xiaoshi"] = "消失", ["$xiaoshi"] = "发生了严重的系统错误---发生了严重的---", [":xiaoshi"] = "你死亡时,可以指定至多3名角色造成共3点伤害,若指定角色体力值为全场最大,此伤害+1。", ["@xiaoshi"] = "请选择“消失”的对象", ["~xiaoshi"] = "选择最多三名角色,点击确定", ["onePoint"] = "造成一点伤害", ["twoPoint"] = "造成两点伤害", ["xiaochou"] = "小丑", ["$xiaochou1"] = "啊啊 打转 打转 转到疲倦", ["$xiaochou2"] = "啊啊 呼吸 呼吸 呼吸停止", [":xiaochou"] = "每当你受到一点伤害,你可弃置全部手牌,若如此做其他男性角色可轮流对其使用一张【杀】。", ["@xiaochou_to"] = "你可以对 %dest 使用一张【杀】", ["~miku"] = "谢谢你 然后 再见吧", }
1 下一页