diff --git a/init.lua b/init.lua index 7b20257b24382ec7a1c957309d26f59ee43f41af..702a6fdcfff622e237b64d4c2e74d2d70101116c 100644 --- a/init.lua +++ b/init.lua @@ -676,4 +676,99 @@ Fk:loadTranslationTable{ "与其他角色计算距离-X且可以多使用X张杀。", } +local qinzheng = fk.CreateTriggerSkill{ + name = "qinzheng", + anim_type = "drawcard", + frequency = Skill.Compulsory, + events = {fk.AfterCardUseDeclared, fk.CardResponding}, + on_trigger = function(self, event, target, player, data) + self.cancel_cost = false + local num = player:getMark("@qinzheng") + local skillNum = 0 + + if num % 3 == 0 then skillNum = skillNum + 1 end + if num % 5 == 0 then skillNum = skillNum + 1 end + if num % 8 == 0 then skillNum = skillNum + 1 end + + for i = 1, skillNum do + self:doCost(event, target, player, data) + end + end, + can_trigger = function(self, event, target, player, data) + if player:hasSkill(self.name) and target == player then + local num = player:getMark("@qinzheng") + + return num % 3 == 0 or num % 5 == 0 or num % 8 == 0 + end + end, + on_use = function(self, event, player, target, data) + local randCard = function(cardName) + local cardNum = #player.room.draw_pile + local randNum = math.random(1, cardNum) + + for i = randNum, cardNum do + local card = Fk:getCardById(player.room.draw_pile[i]) + + if table.contains(cardName, card.name) then + return card + end + end + + for i = 1, randNum do + local card = Fk:getCardById(player.room.draw_pile[i]) + + if table.contains(cardName, card.name) then + return card + end + end + + return nil + end + local num = player:getMark("@qinzheng") + + if num % 3 == 0 then + local card = randCard({"slash", "jink"}) + + if card ~= nil then + player.room:obtainCard(player.id, card, true, fk.ReasonPrey) + end + end + + if num % 5 == 0 then + local card = randCard({"peach", "analeptic"}) + + if card ~= nil then + player.room:obtainCard(player.id, card, true, fk.ReasonPrey) + end + end + + if num % 8 == 0 then + local card = randCard({"ex_nihilo", "duel"}) + + if card ~= nil then + player.room:obtainCard(player.id, card, true, fk.ReasonPrey) + end + end + end, + + refresh_events = {fk.AfterCardUseDeclared, fk.CardResponding}, + can_refresh = function(self, event, target, player, data) + return player:hasSkill(self.name) and target == player + end, + on_refresh = function(self, event, target, player, data) + player.room:addPlayerMark(player, "@qinzheng", 1) + end, +} + +local luotong = General:new(extension, "luotong", "wu", 4) +luotong:addSkill(qinzheng) + +Fk:loadTranslationTable{ + ["luotong"] = "骆统", + ["qinzheng"] = "勤政", + [":qinzheng"] = "锁定技,你每使用或打出:三张牌时,你随机获得一张【杀】或【闪】;五张牌时,你随机获得一张【桃】或【酒】;八张牌时,你随机获得一张【无中生有】或【决斗】。", + ["@qinzheng"] = "勤政", +} + + return {extension}