Skip to content

Instantly share code, notes, and snippets.

@gutenye
Created July 21, 2012 01:50
Show Gist options
  • Save gutenye/3154220 to your computer and use it in GitHub Desktop.
Save gutenye/3154220 to your computer and use it in GitHub Desktop.
神杀-迷当.lua
module("extensions.midang", package.seeall)
extension = sgs.Package("midang")
midang = sgs.General(extension, "midang", "qun", "4", true)
--借兵:出牌阶段,你可以指定另一角色装备区里的一张牌并弃一张与之相同花色的手牌,令目标角色对你攻击范围内一名角色(可以是你)使用一张杀,否则交给你这张装备牌。每回合限一次。
-- TODO: 少SkilCard#target_assigned Lua接口.
-- ViewAsSkill => jiebing_card
-- SkillCard
jiebing = sgs.CreateViewAsSkill{
name = "jiebing",
n = 1,
view_filter = function(self, selected, to_select)
return not to_select:isEquipped()
end,
view_as = function(self, cards)
if #cards == 1 then
local card = cards[1]
local acard = jiebing_card:clone()
acard:setSuit(card:getSuit())
acard:setNumber(card:getNumber())
acard:addSubcard(card)
acard:setSkillName("jiebing")
return acard
end
end,
enabled_at_play = function(self, player)
return not player:hasFlag("jiebing_used")
end,
}
jiebing_card = sgs.CreateSkillCard{
name = "jiebing_card",
target_fixed = false,
will_throw = true,
filter = function(self, targets, to_select, player)
if #targets >= 1 then return end
if to_select:objectName() == player:objectName() then return end
for _,e in sgs.qlist(to_select:getEquips()) do
if e:getSuit() == self:getSuit() then
return true
end
end
end,
on_effect = function(self, effect)
local from = effect.from
local to = effect.to
local room = to:getRoom()
room:playSkillEffect("jiebing")
local card_id = room:askForCardChosen(from, to, "e", "jiebing")
local card = sgs.Sanguosha:getCard(card_id)
local targets = sgs.SPlayerList()
for _, p in sgs.qlist(room:getOtherPlayers(to)) do
if from:inMyAttackRange(p) then
targets:append(p)
end
end
if targets:isEmpty() then return end
local target = room:askForPlayerChosen(from, targets, "jiebing")
local log = sgs.LogMessage()
log.type = "#Jiebing"
log.from = from
log.to:append(to)
log.arg = card:objectName()
log.arg2 = target:getGeneralName()
room:sendLog(log)
local prompt = string.format("@jiebing-collateral:%s:%s", from:objectName(), target:objectName())
if not room:askForUseSlashTo(to, target, prompt) then
from:obtainCard(card)
end
room:setPlayerFlag(from, "jiebing_used")
end,
}
--羌笛:觉醒技:当你的装备区已满时,你须立即弃掉一匹装备着的马,然后永久获得【义从】技能
-- TriggerSkill{Phase-Start}
qiangdi = sgs.CreateTriggerSkill{
name = "qiangdi",
events = {sgs.PhaseChange},
frequency = sgs.Skill_Wake,
can_trigger = function(self, target)
return target and target:getPhase() == sgs.Player_Start and
target:hasSkill("qiangdi") and
target:isAlive() and
target:getMark("qiangdi") == 0
end,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
if player:getEquips():length() == 4 then
room:playSkillEffect("qiangdi")
local log = sgs.LogMessage()
log.type = "#QiangdiWake"
log.from = player
log.arg = self:objectName()
room:sendLog(log)
room:setPlayerMark(player, "qiangdi", 1)
player:gainMark("@waked")
room:acquireSkill(player, "yicong")
end
end,
}
midang:addSkill(jiebing)
midang:addSkill(qiangdi)
--[[
midang:addSkill("testshenshou") -- 神手
midang:addSkill("testshelie") -- 涉猎
midang:addSkill("testguhuo") -- 蛊惑
midang:addSkill("kurou") -- 苦肉
midang:addSkill("testnalai") --拿来
midang:addSkill("rende") -- 仁德
midang:addSkill("zhijian") -- 直谏
midang:addSkill("qicai") -- 奇才
midang:addSkill("paoxiao") -- 咆哮
midang:addSkill("testqingnang") -- 青囊
--]]
sgs.LoadTranslationTable{
["midang"] = "迷当",
["jiebing"] = "借兵",
[":jiebing"] = "出牌阶段,你可以指定另一角色装备区里的一张牌并弃一张与之相同花色的手牌,令目标角色对你攻击范围内一名角色(可以是你)使用一张杀,否则交给你这张装备牌。每回合限一次。",
["#Jiebing"] = "%from 指定了 %to 装备区里的 【%arg】,令他对 %arg2 使用一张杀。 ",
["@jiebing-collateral"] = "%src 使用了【借兵】,令你砍 %dest,请你使用一张【杀】进行响应",
["qiangdi"] = "羌笛",
[":qiangdi"] = "觉醒技:当你的装备区已满时,你须立即弃掉一匹装备着的马,然后永久获得【义从】技能",
["#QiangdiWake"] = "%from 当你的装备区已满时, 触发【%arg】。"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment