diff --git a/audio/death/quyi.mp3 b/audio/death/quyi.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9a3ca64d69f1c3400070e3644cf150a386c25c52 Binary files /dev/null and b/audio/death/quyi.mp3 differ diff --git a/audio/death/wangji.mp3 b/audio/death/wangji.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1f47d8002f013b25ab5bc103c049410d5536c602 Binary files /dev/null and b/audio/death/wangji.mp3 differ diff --git a/audio/skill/fuji1.mp3 b/audio/skill/fuji1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5f4d9e8c457a14c987475369327451ac59f013b9 Binary files /dev/null and b/audio/skill/fuji1.mp3 differ diff --git a/audio/skill/fuji2.mp3 b/audio/skill/fuji2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..0d6e6e360f02df0c54a09164bec4f47767a56f15 Binary files /dev/null and b/audio/skill/fuji2.mp3 differ diff --git a/audio/skill/jiaozi1.mp3 b/audio/skill/jiaozi1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..edf5f788aaf4364b3bba6e2c0d5b455ed964f950 Binary files /dev/null and b/audio/skill/jiaozi1.mp3 differ diff --git a/audio/skill/jiaozi2.mp3 b/audio/skill/jiaozi2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a27f49ca9e2cafd29105bcb96f3908e7362abb32 Binary files /dev/null and b/audio/skill/jiaozi2.mp3 differ diff --git a/audio/skill/jinqu1.mp3 b/audio/skill/jinqu1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6f057b31d2f443f95650d020c2c07a1a9bf4b2c4 Binary files /dev/null and b/audio/skill/jinqu1.mp3 differ diff --git a/audio/skill/jinqu2.mp3 b/audio/skill/jinqu2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b082d780629184bd6da1db3fb10db1556db39213 Binary files /dev/null and b/audio/skill/jinqu2.mp3 differ diff --git a/audio/skill/qizhi1.mp3 b/audio/skill/qizhi1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..82b77b54755d1171c99048be49774ee60efd0b8e Binary files /dev/null and b/audio/skill/qizhi1.mp3 differ diff --git a/audio/skill/qizhi2.mp3 b/audio/skill/qizhi2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4a1e77edd7f0db4f286da1c983a7f71c73a19d1f Binary files /dev/null and b/audio/skill/qizhi2.mp3 differ diff --git a/image/generals/quyi.jpg b/image/generals/quyi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..314c3f2006bc1bfbbce59d175012ba1214a6181c Binary files /dev/null and b/image/generals/quyi.jpg differ diff --git a/image/generals/wangji.jpg b/image/generals/wangji.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6fff7d27cb2474c985a07d03d57bc2c2999de3e9 Binary files /dev/null and b/image/generals/wangji.jpg differ diff --git a/init.lua b/init.lua index 2a513c5c25f3a7302e039a47ddaa96e6aad825b9..d3397eb647187770b109e2a41c397c4117c1e462 100644 --- a/init.lua +++ b/init.lua @@ -4,17 +4,18 @@ local liuyan = General(extension, "liuyan", "qun", 3) local tushe = fk.CreateTriggerSkill{ name = "tushe", anim_type = "drawcard", - events = {fk.CardUsing}, + events = {fk.TargetSpecified}, can_trigger = function(self, event, target, player, data) return target == player and player:hasSkill(self.name) and data.card.type ~= Card.TypeEquip and + data.firstTarget and #table.filter(player:getCardIds(Player.Hand), function(cid) return Fk:getCardById(cid).type == Card.TypeBasic end) == 0 and - #TargetGroup:getRealTargets(data.tos) > 0 + #AimGroup:getAllTargets(data.tos) > 0 end, on_use = function(self, event, target, player, data) - player:drawCards(#TargetGroup:getRealTargets(data.tos), self.name) + player:drawCards(#AimGroup:getAllTargets(data.tos), self.name) end, } liuyan:addSkill(tushe) @@ -110,6 +111,152 @@ Fk:loadTranslationTable{ ["@fenyin"] = "奋音", } +local wangji = General(extension, "wangji", "wei", 3) +Fk:loadTranslationTable{ + ["wangji"] = "王基", +} + +local qizhi = fk.CreateTriggerSkill{ + name = "qizhi", + anim_type = "control", + events = { fk.TargetSpecified }, + can_trigger = function(self, event, target, player, data) + return + target == player and + player:hasSkill(self.name) and + player.phase < Player.NotActive and + data.firstTarget and + table.contains({ Card.TypeBasic, Card.TypeTrick }, data.card.type) + end, + on_cost = function(self, event, target, player, data) + local room = player.room + local alivePlayers = room:getAlivePlayers() + local availableTargets = {} + for _, p in ipairs(alivePlayers) do + if not p:isNude() and not table.contains(AimGroup:getAllTargets(data.tos), p.id) then + table.insert(availableTargets, p.id) + end + end + + if #availableTargets == 0 then + return false + end + + local result = room:askForChoosePlayers(player, availableTargets, 1, 1, "#qizhi-ask", self.name) + if #result > 0 then + self.cost_data = result + return true + end + end, + on_use = function(self, event, target, player, data) + local room = player.room + local skillTarget = room:getPlayerById(self.cost_data[1]) + local card = room:askForCardChosen(player, skillTarget, "he", self.name) + room:throwCard(card, self.name, skillTarget, skillTarget) + skillTarget:drawCards(1, self.name) + room:addPlayerMark(player, "@" .. self.name) + end, + + refresh_events = {fk.EventPhaseStart}, + can_refresh = function(self, event, target, player, data) + if not (target == player and player:hasSkill(self.name)) then return end + return player.phase == Player.NotActive + end, + on_refresh = function(self, event, target, player, data) + player.room:setPlayerMark(player, "@" .. self.name, 0) + end, +} +Fk:loadTranslationTable{ + ["qizhi"] = "奇制", + [":qizhi"] = "当你使用基本牌或锦囊牌指定第一个目标后,你可以弃置一名不为目标的角色的一张牌,然后令其摸一张牌。", + ["@qizhi"] = "奇制", + ["#qizhi-ask"] = "奇制:你可以弃置一名非目标角色的一张牌,然后令其摸一张牌", +} +wangji:addSkill(qizhi) + +local jinqu = fk.CreateTriggerSkill{ + name = "jinqu", + anim_type = "drawcard", + events = { fk.EventPhaseStart }, + can_trigger = function(self, event, target, player, data) + return target == player and player:hasSkill(self.name) and player.phase == Player.Finish + end, + on_use = function(self, event, target, player, data) + player:drawCards(2, self.name) + local diff = #player:getCardIds(Player.Hand) - player:getMark("@" .. qizhi.name) + if diff > 0 then + player.room:askForDiscard(player, diff, diff, false, self.name) + end + end, +} +Fk:loadTranslationTable{ + ["jinqu"] = "进趋", + [":jinqu"] = "结束阶段开始时,你可以摸两张牌,然后将手牌弃置至X张(X为你于本回合内发动过“奇制”的次数。", +} +wangji:addSkill(jinqu) + +local quyi = General(extension, "quyi", "qun", 4) +Fk:loadTranslationTable{ + ["quyi"] = "麴义", +} + +local fuji = fk.CreateTriggerSkill{ + name = "fuji", + anim_type = "offensive", + events = { fk.CardUsing }, + frequency = Skill.Compulsory, + can_trigger = function(self, event, target, player, data) + return + target == player and + player:hasSkill(self.name) and + (data.card.name == "slash" or (data.card.type == Card.TypeTrick and data.card.sub_type ~= Card.SubtypeDelayedTrick)) and + #table.filter(player.room:getOtherPlayers(player), function(curPlayer) + return curPlayer:distanceTo(player) == 1 + end) > 0 + end, + on_use = function(self, event, target, player, data) + local room = player.room + local availableTargets = table.filter(room:getOtherPlayers(player), function(curPlayer) + return curPlayer:distanceTo(player) == 1 + end) + + if #availableTargets > 0 then + data.disresponsiveList = data.disresponsiveList or {} + for _, target in ipairs(availableTargets) do + table.insertIfNeed(data.disresponsiveList, target.id) + end + end + end, +} +Fk:loadTranslationTable{ + ["fuji"] = "伏骑", + [":fuji"] = "锁定技,当你使用【杀】或普通锦囊牌时,你令所有至你距离为1的角色不能响应此牌。", +} +quyi:addSkill(fuji) + +local jiaozi = fk.CreateTriggerSkill{ + name = "jiaozi", + anim_type = "offensive", + events = { fk.DamageCaused, fk.DamageInflicted }, + frequency = Skill.Compulsory, + can_trigger = function(self, event, target, player, data) + return + target == player and + player:hasSkill(self.name) and + table.every(player.room:getOtherPlayers(player), function(curPlayer) + return #player:getCardIds(Player.Hand) > #curPlayer:getCardIds(Player.Hand) + end) + end, + on_use = function(self, event, target, player, data) + data.damage = data.damage + 1 + end, +} +Fk:loadTranslationTable{ + ["jiaozi"] = "骄恣", + [":jiaozi"] = "锁定技,当你造成或受到伤害时,若你的手牌为全场唯一最多,则此伤害+1。", +} +quyi:addSkill(jiaozi) + local m_ex__xusheng = General(extension, "m_ex__xusheng", "wu", 4) local m_ex__pojun_clean = fk.CreateTriggerSkill{ name = "#m_ex__pojun_clean",