Skip to content

Latest commit

 

History

History
1953 lines (1949 loc) · 66.3 KB

ChapterJ.md

File metadata and controls

1953 lines (1949 loc) · 66.3 KB

代码速查手册(J区)

#技能索引: 鸡肋激昂激将极略急救急速急袭集智集智-旧嫉恶奸雄奸雄-旧坚守将驰节命结姻竭缘解烦解烦-旧解惑解围尽瘁禁酒精策精锐酒池酒诗救援救主举荐举荐-旧巨象倨傲据守据守-旧据守-翼聚武绝策绝汲绝境绝境-旧绝情军威峻刑

返回目录 ##鸡肋 相关武将:SP·杨修
描述:每当你受到伤害后,你可以选择一种牌的类别,伤害来源不能使用、打出或弃置其该类别的手牌,直到回合结束。 引用:LuaJilei、LuaJileiClear
状态:0405验证通过

	LuaJilei = sgs.CreateTriggerSkill{
		name = "LuaJilei",
		events = {sgs.Damaged},
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local damage = data:toDamage()
			local current  = room:getCurrent()
			if not current or current:getPhase()==sgs.Player_NotActive or current:isDead() or not damage.from then
				return false
			end
			if room:askForSkillInvoke(player, self:objectName(), data) then
				local choice = room:askForChoice(player, self:objectName(), "BasicCard+EquipCard+TrickCard")
				local jileis = damage.from:getTag(self:objectName()):toString():split("+")
				if table.contains(jileis, choice) then return false end
				table.insert(jileis,choice)
				damage.from:setTag(self:objectName(), sgs.QVariant(table.concat(jileis, "+")))
				local _type = choice.."|.|.|hand" --只是手牌
				room:setPlayerCardLimitation(damage.from, "use,response,discard", _type, true)
				local typename = string.lower(string.gsub(choice,"Card",""))
				if damage.from:getMark("@jilei_"..typename) == 0 then
					room:addPlayerMark(damage.from, "@jilei_"..typename)
				end
			end
		end
	}
	LuaJileiClear = sgs.CreateTriggerSkill{
		name = "#LuaJilei-clear",
		events = {sgs.EventPhaseChanging,sgs.Death},
		priority = 5,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			if event == sgs.EventPhaseChanging then
				local change = data:toPhaseChange()
				if change.to ~= sgs.Player_NotActive then 
					return false 
				end
			elseif event == sgs.Death then
				local death = data:toDeath()
				if death.who:objectName() ~= player:objectName() or player:objectName() ~= room:getCurrent():objectName() then
					return false
				end
			end
			local players = room:getAllPlayers()
			for _,p in sgs.qlist(players) do
				local jilei_list = p:getTag("LuaJilei"):toString():split("+")
				if #jilei_list > 0 then
					for _,jileity in ipairs(jilei_list) do
						room:removePlayerCardLimitation(p, "use,response,discard", jileity.."|.|.|hand$1")
						local typename = string.lower(string.gsub(jileity,"Card",""))
						room:setPlayerMark(p, "@jilei_"..typename, 0)
					end
					p:removeTag("LuaJilei")
				end
			end
			return false
		end,
		can_trigger = function(self, target)
			return target
		end
	}

返回索引 ##激昂 相关武将:山·孙策,☆SP·吕蒙 描述:每当你指定或成为红色【杀】或【决斗】的目标后,你可以摸一张牌。
引用:LuaJiang
状态:0405验证通过

	luaJiang = sgs.CreateTriggerSkill{
		name = "LuaJiang" ,
		events = {sgs.TargetConfirmed, sgs.TargetSpecified},
		frequency = sgs.Skill_Frequent, 
		on_trigger = function(self, event, sunce, data)
			local use = data:toCardUse()
			if event == sgs.TargetSpecified or (event == sgs.TargetConfirmed and use.to:contains(sunce)) then
				if use.card:isKindOf("Duel") or (use.card:isKindOf("Slash") and use.card:isRed()) then
					if sunce:askForSkillInvoke(self:objectName(), data) then
						sunce:drawCards(1, self:objectName())
					end
				end
			end
			return false
		end
	}

返回索引 ##激将(主公技) 相关武将:标准·刘备、山·刘禅、怀旧-标准·刘备-旧
描述:当你需要使用或打出一张【杀】时,你可以令其他蜀势力角色打出一张【杀】(视为由你使用或打出)。
引用:LuaJijiang
状态:1217验证通过

	LuaJijiangCard = sgs.CreateSkillCard{
		name = "LuaJijiangCard" ,
		filter = function(self, targets, to_select)
			local slash = sgs.Sanguosha:cloneCard("slash", sgs.Card_NoSuit, 0)
			local plist = sgs.PlayerList()
			for i = 1, #targets, 1 do
				plist:append(targets[i])
			end
			return slash:targetFilter(plist, to_select, sgs.Self)
		end ,
		on_validate = function(self, cardUse) --这是0610新加的哦~~~~
			cardUse.m_isOwnerUse = false
			local liubei = cardUse.from
			local targets = cardUse.to
			room = liubei:getRoom()
			local slash = nil
			local lieges = room:getLieges("shu", liubei)
			for _, target in sgs.qlist(targets) do
				target:setFlags("LuaJijiangTarget")
			end
			for _, liege in sgs.qlist(lieges) do
				slash = room:askForCard(liege, "slash", "@jijiang-slash:" .. liubei:objectName(), sgs.QVariant(), sgs.Card_MethodResponse, liubei) --未处理胆守
				if slash then
					for _, target in sgs.qlist(targets) do
						target:setFlags("-LuaJijiangTarget")
					end
					return slash
				end
			end
			for _, target in sgs.qlist(targets) do
				target:setFlags("-LuaJijiangTarget")
			end
			room:setPlayerFlag(liubei, "Global_LuaJijiangFailed")
			return nil
		end
	}
	hasShuGenerals = function(player)
		for _, p in sgs.qlist(player:getSiblings()) do
			if p:isAlive() and (p:getKingdom() == "shu") then
				return true
			end
		end
		return false
	end
	LuaJijiangVS = sgs.CreateViewAsSkill{
		name = "LuaJijiang$" ,
		n = 0 ,
		view_as = function()
			return LuaJijiangCard:clone()
		end ,
		enabled_at_play = function(self, player)
			return hasShuGenerals(player)
			   and player:hasLordSkill("LuaJijiang")
			   and (not player:hasFlag("Global_LuaJijiangFailed"))
			   and sgs.Slash_IsAvailable(player)
		end ,
		enabled_at_response = function(self, player, pattern)
			return hasShuGenerals(player)
			   and player:hasLordSkill("LuaJijiang")
			   and ((pattern == "slash") or (pattern == "@jijiang"))
			   and (sgs.Sanguosha:getCurrentCardUseReason() == sgs.CardUseStruct_CARD_USE_REASON_RESPONSE_USE)
			   and (not player:hasFlag("Global_LuaJijiangFailed"))
		end
	}
	LuaJijiang = sgs.CreateTriggerSkill{
		name = "LuaJijiang$" ,
		events = {sgs.CardAsked} ,
		view_as_skill = LuaJijiangVS ,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local pattern = data:toStringList()[1]
			local prompt = data:toStringList()[2]
			if (pattern ~= "slash") or string.find(prompt, "@jijiang-slash") then return false end
			local lieges = room:getLieges("shu", player)
			if lieges:isEmpty() then return false end
			if not room:askForSkillInvoke(player, self:objectName(), data) then return false end
			for _, liege in sgs.qlist(lieges) do
				local slash = room:askForCard(liege, "slash", "@jijiang-slash:" .. player:objectName(), sgs.QVariant(), sgs.Card_MethodResponse, player)
				if slash then
					room:provide(slash)
					return true
				end
			end
			return false
		end ,
		can_trigger = function(self, target)
			return target and target:hasLordSkill("LuaJijiang")
		end
	}

返回索引 ##极略 相关武将:神·司马懿
描述:你可以弃一枚“忍”并发动以下技能之一:“鬼才”、“放逐”、“集智”、“制衡”、“完杀”
引用:LuaJilve、LuaJilveClear
状态:0405验证通过

	LuaJilveCard = sgs.CreateSkillCard{
		name = "LuaJilveCard",
		target_fixed = true,
		about_to_use = function(self, room, use)
			local shensimayi = use.from
			local choices = {}
			if not shensimayi:hasFlag("LuaJilveZhiheng") and shensimayi:canDiscard(shensimayi, "he") then
				table.insert(choices,"zhiheng")
			end
			if not shensimayi:hasFlag("LuaJilveWansha") then
				table.insert(choices,"wansha")
			end
			table.insert(choices,"cancel")
			if #choices == 1 then return end
			local choice = room:askForChoice(shensimayi, "LuaJilve", table.concat(choices,"+"))
			if choice == "cancel" then
				room:addPlayerHistory(shensimayi, "#LuaJilveCard", -1)
				return
			end
			shensimayi:loseMark("@bear")
			room:notifySkillInvoked(shensimayi, "LuaJilve")
			if choice == "wansha" then
				room:setPlayerFlag(shensimayi, "LuaJilveWansha")
				room:acquireSkill(shensimayi, "wansha")
			else
				room:setPlayerFlag(shensimayi, "LuaJilveZhiheng")
				room:askForUseCard(shensimayi, "@zhiheng", "@jilve-zhiheng", -1, sgs.Card_MethodDiscard)
			end
		end
	}
	LuaJilveVS = sgs.CreateZeroCardViewAsSkill{--完杀和制衡
		name = "LuaJilve",
		enabled_at_play = function(self,player)
			return player:usedTimes("#LuaJilveCard") < 2 and player:getMark("@bear") > 0
		end,
		view_as = function()
			return LuaJilveCard:clone()
		end
	}
	LuaJilve = sgs.CreateTriggerSkill{
		name = "LuaJilve",
		events = {sgs.CardUsed, sgs.AskForRetrial, sgs.Damaged},--分别为集智、鬼才、放逐
		view_as_skill = LuaJilveVS,
		can_trigger = function(self, target)
			return target and target:isAlive() and target:hasSkill(self:objectName()) and target:getMark("@bear") > 0
		end,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			player:setMark("JilveEvent",tonumber(event))
			if event == sgs.CardUsed then
				local jizhi = sgs.Sanguosha:getTriggerSkill("jizhi")
				local use = data:toCardUse()
				if jizhi and use.card and use.card:getTypeId() == sgs.Card_TypeTrick and player:askForSkillInvoke(self:objectName(), data) then
					room:notifySkillInvoked(player, self:objectName())
					player:loseMark("@bear")
					jizhi:trigger(event, room, player, data)
				end
			elseif event == sgs.AskForRetrial then
				local guicai = sgs.Sanguosha:getTriggerSkill("guicai")
				if guicai and not player:isKongcheng() and player:askForSkillInvoke(self:objectName(), data) then
					room:notifySkillInvoked(player, self:objectName())
					player:loseMark("@bear")
					guicai:trigger(event, room, player, data)
				end
			elseif event == sgs.Damaged then
				local fangzhu = sgs.Sanguosha:getTriggerSkill("fangzhu")
				if fangzhu and player:askForSkillInvoke(self:objectName(), data) then
					room:notifySkillInvoked(player, self:objectName())
					player:loseMark("@bear")
					fangzhu:trigger(event, room, player, data)
				end
			end
			player:setMark("JilveEvent", 0)
			return false
		end
	}
	LuaJilveClear = sgs.CreateTriggerSkill{
		name = "#LuaJilve-clear",
		events = {sgs.EventPhaseChanging},
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local change = data:toPhaseChange()
			if change.to ~= sgs.Player_NotActive then return false end
			room:detachSkillFromPlayer(player, "wansha", false, true)
			return false
		end,
		can_trigger = function(self, target)
			return target and target:hasFlag("LuaJilveWansha")
		end
	}

返回索引 ##急救 相关武将:标准·华佗
描述:你的回合外,你可以将一张红色牌当【桃】使用。
引用:LuaJijiu
状态:1217验证通过

	LuaJijiu = sgs.CreateViewAsSkill{
		name = "LuaJijiu",
		n = 1,
		view_filter = function(self, selected, to_select)
			if #selected == 0 then
				return to_select:isRed()
			end
			return false
		end,
		view_as = function(self, cards)
			if #cards == 1 then
				local card = cards[1]
				local suit = card:getSuit()
				local point = card:getNumber()
				local id = card:getId()
				local peach = sgs.Sanguosha:cloneCard("peach", suit, point)
				peach:setSkillName(self:objectName())
				peach:addSubcard(id)
				return peach
			end
			return nil
		end,
		enabled_at_play = function(self, player)
			return false
		end,
		enabled_at_response = function(self, player, pattern)
			local phase = player:getPhase()
			if phase == sgs.Player_NotActive then
				return string.find(pattern, "peach")
			end
			return false
		end
	}

返回索引 ##急速 相关武将:奥运·叶诗文
描述:你可以跳过你此回合的判定阶段和摸牌阶段。若如此做,视为对一名其他角色使用一张【杀】。
引用:LuaXJisu
状态:1217验证通过

	LuaXJisuCard = sgs.CreateSkillCard{
		name = "LuaXJisuCard",
		target_fixed = false,
		will_throw = true,
		filter = function(self, targets, to_select)
			if #targets == 0 then
				return sgs.Self:canSlash(to_select, nil, false)
			end
			return false
		end,
		on_use = function(self, room, source, targets)
			local slash = sgs.Sanguosha:cloneCard("slash", sgs.Card_NoSuit, 0)
			slash:setSkillName(self:objectName())
			local use = sgs.CardUseStruct()
			use.card = slash
			use.from = source
			for _,p in pairs(targets) do
				use.to:append(p)
			end
			room:useCard(use)
		end
	}
	LuaXJisuVS = sgs.CreateViewAsSkill{
		name = "LuaXJisu",
		n = 0,
		view_as = function(self, cards)
			return LuaXJisuCard:clone()
		end,
		enabled_at_play = function(self, player)
			return false
		end,
		enabled_at_response = function(self, player, pattern)
			return pattern == "@@LuaXJisu"
		end
	}
	LuaXJisu = sgs.CreateTriggerSkill{
		name = "LuaXJisu",
		frequency = sgs.Skill_NotFrequent,
		events = {sgs.EventPhaseChanging},
		view_as_skill = LuaXJisuVS,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local change = data:toPhaseChange()
			local nextphase = change.to
			if nextphase == sgs.Player_Judge then
				if not player:isSkipped(sgs.Player_Judge) then
					if not player:isSkipped(sgs.Player_Draw) then
						if room:askForUseCard(player, "@@LuaXJisu", "@LuaXJisu") then
							player:skip(sgs.Player_Judge)
							player:skip(sgs.Player_Draw)
						end
					end
				end
			end
			return false
		end
	}

返回索引 ##急袭 相关武将:山·邓艾
描述:你可以将一张“田”当【顺手牵羊】使用。
引用:LuaJixi
状态:0405验证通过(需与技能“屯田”配合使用)

	LuaJixi = sgs.CreateOneCardViewAsSkill{
		name = "LuaJixi", 
		filter_pattern = ".|.|.|field",
		expand_pile = "field",
		view_as = function(self, originalCard) 
			local snatch = sgs.Sanguosha:cloneCard("snatch", originalCard:getSuit(), originalCard:getNumber())
			snatch:addSubcard(originalCard:getId())
			snatch:setSkillName(self:objectName())
			return snatch
		end, 
		enabled_at_play = function(self, player)
			return not player:getPile("field"):isEmpty()
		end
	}

返回索引 ##集智 相关武将:标准·黄月英
描述:每当你使用锦囊牌选择目标后,你可以展示牌堆顶的一张牌。若此牌为基本牌,你选择一项:1.将之置入弃牌堆;2.用一张手牌替换之。若此牌不为基本牌,你获得之。
引用:LuaJizhi
状态:1217验证通过

	LuaJizhi = sgs.CreateTriggerSkill{
		name = "LuaJizhi" ,
		frequency = sgs.Skill_Frequent ,
		events = {sgs.CardUsed} ,
		on_trigger = function(self, event, player, data)
			local use = data:toCardUse()
			local room = player:getRoom()
			if (use.card:getTypeId() == sgs.Card_TypeTrick) then
				if not (player:getMark("JilveEvent") > 0) then
					if not room:askForSkillInvoke(player, self:objectName()) then return false end
				end
				local ids = room:getNCards(1, false)
				local move = sgs.CardsMoveStruct()
				move.card_ids = ids
				move.to = player
				move.to_place = sgs.Player_PlaceTable
				move.reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_TURNOVER, player:objectName(), self:objectName(), nil)
				room:moveCardsAtomic(move, true)
				local id = ids:first()
				local card = sgs.Sanguosha:getCard(id)
				if not card:isKindOf("BasicCard") then
					player:obtainCard(card)
				else
					local card_ex
					if not player:isKongcheng() then
						local card_data = sgs.QVariant()
						card_data:setValue(card)
						card_ex = room:askForCard(player, ".", "@jizhi-exchange:::" .. card:objectName(), card_data, sgs.Card_MethodNone)
					end
					if card_ex then
						local reason1 = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_PUT, player:objectName(), self:objectName(), nil)
						local reason2 = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_OVERRIDE, player:objectName(), self:objectName(), nil)
						local move1 = sgs.CardsMoveStruct()
						move1.card_ids:append(card_ex:getEffectiveId())
						move1.from = player
						move1.to = nil
						move1.to_place = sgs.Player_DrawPile
						move1.reason = reason1
						local move2 = sgs.CardsMoveStruct()
						move2.card_ids = ids
						move2.from = player
						move2.to = player
						move2.to_place = sgs.Player_PlaceHand
						move2.reason = reason2
						local moves = sgs.CardsMoveList()
						moves:append(move1)
						moves:append(move2)
						room:moveCardsAtomic(moves, false)
					else
						local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_NATURAL_ENTER, player:objectName(), self:objectName(), nil)
						room:throwCard(card, reason, nil)
					end
				end
			end
			return false
		end
	}

返回索引 ##集智-旧 相关武将:怀旧-标准·黄月英-旧、1v1·黄月英1v1、SP·台版黄月英
描述:每当你使用非延时类锦囊牌选择目标后,你可以摸一张牌。
引用:LuaNosJizhi
状态:0405验证通过

	LuaNosJizhi = sgs.CreateTriggerSkill{
		name = "LuaNosJizhi" ,
		frequency = sgs.Skill_Frequent ,
		events = {sgs.CardUsed} ,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local use = data:toCardUse()
			if use.card:isNDTrick() and room:askForSkillInvoke(player, self:objectName()) then
				player:drawCards(1, self:objectName())
			end
			return false
		end
	}

返回索引 ##嫉恶 相关武将:☆SP·张飞
描述:**锁定技,**你使用的红色【杀】造成的伤害+1。
引用:LuaJie
状态:1217验证通过

	LuaJie = sgs.CreateTriggerSkill{
		name = "LuaJie",
		frequency = sgs.Skill_Compulsory,
		events = {sgs.ConfirmDamage},
		on_trigger = function(self, event, player, data)
			local damage = data:toDamage()
			local card = damage.card
			if card then
				if card:isKindOf("Slash") and card:isRed() then
					local hurt = damage.damage
					damage.damage = hurt + 1
					data:setValue(damage)
				end
			end
			return false
		end
	}

返回索引 ##奸雄 相关武将:界限突破·曹操 描述:每当你受到伤害后,你可以选择一项:获得对你造成伤害的牌,或摸一张牌。
引用:LuaJianxiong
状态:0405验证通过

	LuaJianxiong = sgs.CreateMasochismSkill{
		name = "LuaJianxiong" ,
		on_damaged = function(self, player, damage)
			local room = player:getRoom()
			local data = sgs.QVariant()
			data:setValue(damage)
			local choices = {"draw+cancel"}
			local card = damage.card
			if card then
				local ids = sgs.IntList()
				if card:isVirtualCard() then
					ids = card:getSubcards()
				else
					ids:append(card:getEffectiveId())
				end
				if ids:length() > 0 then
					local all_place_table = true
					for _, id in sgs.qlist(ids) do
						if room:getCardPlace(id) ~= sgs.Player_PlaceTable then
							all_place_table = false
							break
						end
					end
					if all_place_table then
						table.insert(choices, "obtain")
					end
				end
			end
			local choice = room:askForChoice(player, self:objectName(), table.concat(choices, "+"), data)
			if choice ~= "cancel" then
				room:notifySkillInvoked(player, self:objectName())
				if choice == "obtain" then
					player:obtainCard(card)
				else
					player:drawCards(1, self:objectName())
				end
			end
		end
	}

返回索引 ##奸雄-旧 相关武将:标准·曹操、铜雀台·曹操
描述:每当你受到伤害后,你可以获得对你造成伤害的牌。 引用:LuaNosJianxiong
状态:0405验证通过

	LuaNosJianxiong = sgs.CreateMasochismSkill{
		name = "LuaNosJianxiong" ,
		on_damaged = function(self, player, damage)
			local room = player:getRoom()
			local card = damage.card
			if not card then return end
			local ids = sgs.IntList()
			if card:isVirtualCard() then
				ids = card:getSubcards()
			else
				ids:append(card:getEffectiveId())
			end
			if ids:isEmpty() then return end
			for _, id in sgs.qlist(ids) do
				if room:getCardPlace(id) ~= sgs.Player_PlaceTable then return end
			end
			local data = sgs.QVariant()
			data:setValue(damage)
			if room:askForSkillInvoke(player, self:objectName(), data) then
				player:obtainCard(card)
			end
		end
	}

返回索引 ##坚守 相关武将:测试·蹲坑曹仁
描述:回合结束阶段开始时,你可以摸五张牌,然后将你的武将牌翻面
引用:LuaXJianshou
状态:1217验证通过

	LuaXJianshou = sgs.CreateTriggerSkill{
		name = "LuaXJianshou",
		frequency = sgs.Skill_NotFrequent,
		events = {sgs.EventPhaseStart},
		on_trigger = function(self, event, player, data)
			if player:getPhase() == sgs.Player_Finish then
				if player:askForSkillInvoke(self:objectName(), data) then
					player:drawCards(5, true, self:objectName())
					player:turnOver()
				end
			end
		end
	}

返回索引 ##将驰 相关武将:二将成名·曹彰
描述:摸牌阶段,你可以选择一项:1、额外摸一张牌,若如此做,你不能使用或打出【杀】,直到回合结束。2、少摸一张牌,若如此做,出牌阶段你使用【杀】时无距离限制且你可以额外使用一张【杀】,直到回合结束。
引用:LuaJiangchi、LuaJiangchiTargetMod
状态:1217验证通过

	LuaJiangchi = sgs.CreateTriggerSkill{
		name = "LuaJiangchi" ,
		events = {sgs.DrawNCards} ,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local choice = room:askForChoice(player, self:objectName(), "jiang+chi+cancel")
			if choice == "cancel" then return false end
			if choice == "jiang" then
				room:setPlayerCardLimitation(player, "use,response", "Slash", true)
				data:setValue(data:toInt() + 1)
				return false
			else
				room:setPlayerFlag(player, "LuaJiangchiInvoke")
				data:setValue(data:toInt() - 1)
				return false
			end
		end
	}
	LuaJiangchiTargetMod = sgs.CreateTargetModSkill{
		name = "#LuaJiangchi-target" ,
		residue_func = function(self, from)
			if from:hasSkill("LuaJiangchi") and from:hasFlag("LuaJiangchiInvoke") then
				return 1
			else
				return 0
			end
		end ,
		distance_limit_func = function(self, from)
			if from:hasSkill("LuaJiangchi") and from:hasFlag("LuaJiangchiInvoke") then
				return 1000
			else
				return 0
			end
		end
	}

返回索引 ##节命 相关武将:火·荀彧
描述:每当你受到1点伤害后,你可以令一名角色将手牌补至X张(X为该角色的体力上限且至多为5)。
引用:LuaJieming
状态:1217验证通过

	LuaJieming = sgs.CreateTriggerSkill{
		name = "LuaJieming" ,
		events = {sgs.Damaged} ,
		on_trigger = function(self, event, player, data)
			local damage = data:toDamage()
			local room = player:getRoom()
			for i = 0, damage.damage - 1, 1 do
				local to = room:askForPlayerChosen(player, room:getAlivePlayers(), self:objectName(), "jieming-invoke", true, true)
				if not to then break end
				local upper = math.min(5, to:getMaxHp())
				local x = upper - to:getHandcardNum()
				if x <= 0 then
				else
					to:drawCards(x)
				end
			end
		end
	}

返回索引 ##结姻 相关武将:界限突破·孙尚香、标准·孙尚香、SP·孙尚香
描述:出牌阶段限一次,你可以弃置两张手牌并选择一名已受伤的男性角色,你和该角色各回复1点体力。
引用:LuaJieyin
状态:0405验证通过

	LuaJieyinCard = sgs.CreateSkillCard{
		name = "LuaJieyinCard" ,
		filter = function(self, targets, to_select)
			if #targets ~= 0 then return false end
			return to_select:isMale() and to_select:isWounded() and to_select:objectName() ~= sgs.Self:objectName()
		end ,
		on_effect = function(self, effect)
			local room = effect.from:getRoom()
			local recover = sgs.RecoverStruct()
			recover.card = self
			recover.who = effect.from
			room:recover(effect.from, recover, true)
			room:recover(effect.to, recover, true)
		end
	}
	LuaJieyin = sgs.CreateViewAsSkill{
		name = "LuaJieyin" ,
		n = 2 ,
		view_filter = function(self, selected, to_select)
			if #selected > 1 or sgs.Self:isJilei(to_select) then return false end
			return not to_select:isEquipped()
		end ,
		view_as = function(self, cards)
			if #cards ~= 2 then return nil end
			local jieyin_card = LuaJieyinCard:clone()
			for _,card in pairs(cards) do
				jieyin_card:addSubcard(card)
			end
			return jieyin_card
		end ,
		enabled_at_play = function(self, target)
			return target:getHandcardNum() >= 2 and not target:hasUsed("#LuaJieyinCard")
		end
	}

返回索引 ##竭缘 相关武将:铜雀台·灵雎、SP·灵雎
描述:每当你对一名其他角色造成伤害时,若其体力值大于或等于你的体力值,你可以弃置一张黑色手牌:若如此做,此伤害+1。每当你受到一名其他角色造成的伤害时,若其体力值大于或等于你的体力值,你可以弃置一张红色手牌:若如此做,此伤害-1。
引用:LuaJieyuan
状态:0405验证通过

	LuaJieyuan = sgs.CreateTriggerSkill{
		name = "LuaJieyuan" ,
		events = {sgs.DamageCaused, sgs.DamageInflicted} ,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local damage = data:toDamage()
			if event == sgs.DamageCaused then
				if damage.to and damage.to:isAlive() and damage.to:getHp() >= player:getHp() and damage.to:objectName() ~= player:objectName() and player:canDiscard(player, "h") and room:askForCard(player, ".black", "@jieyuan-increase:" .. damage.to:objectName(), data, self:objectName()) then
					damage.damage = damage.damage + 1
					data:setValue(damage)
				end
			elseif event == sgs.DamageInflicted then
				if damage.from and damage.from:isAlive() and damage.from:getHp() >= player:getHp() and damage.from:objectName() ~= player:objectName() and player:canDiscard(player, "h") and room:askForCard(player, ".red", "@jieyuan-decrease:" .. damage.from:objectName(), data, self:objectName()) then
					damage.damage = damage.damage - 1
					data:setValue(damage)
					if damage.damage < 1 then return true end
				end
			end
			return false
		end
	}

返回索引 ##解烦 相关武将:二将成名·韩当
描述:**限定技,**出牌阶段,你可以指定一名角色,攻击范围内含有该角色的所有角色须依次选择一项:弃置一张武器牌;或令该角色摸一张牌。
引用:LuaJiefan
状态:1217验证通过

	LuaJiefanCard = sgs.CreateSkillCard{
		name = "LuaJiefanCard" ,
		filter = function(self, targets, to_select)
			return #targets == 0
		end  ,
		on_use = function(self, room, source, targets)
			room:removePlayerMark(source, "@rescue")
			local target = targets[1]
			local _targetdata = sgs.QVariant()
			_targetdata:setValue(target)
			source:setTag("LuaJiefanTarget", _targetdata)
			for _, player in sgs.qlist(room:getAllPlayers()) do
				if player:isAlive() and player:inMyAttackRange(target) then
					room:cardEffect(self, source, player)
				end
			end
			source:removeTag("LuaJiefanTarget")
		end ,
		on_effect = function(self, effect)
			local room = effect.to:getRoom()
			local target = effect.from:getTag("LuaJiefanTarget"):toPlayer()
			local data = effect.from:getTag("LuaJiefanTarget")
			if target then
				if not room:askForCard(effect.to, ".Weapon", "@jiefan-discard::" .. target:objectName(), data) then
					target:drawCards(1)
				end
			end
		end
	}
	LuaJiefanVS = sgs.CreateViewAsSkill{
		name = "LuaJiefan" ,
		n = 0,
		view_as = function()
			return LuaJiefanCard:clone()
		end ,
		enabled_at_play = function(self, player)
			return player:getMark("@rescue") >= 1
		end
	}
	LuaJiefan = sgs.CreateTriggerSkill{
		name = "LuaJiefan" ,
		frequency = sgs.Skill_Limited,
		limit_mark = "@rescue",
		events = {},
		view_as_skill = LuaJiefanVS ,	
		on_trigger = function()
			return false
		end
	}

返回索引 ##解烦-旧 相关武将:怀旧·韩当
描述:你的回合外,当一名角色处于濒死状态时,你可以对当前正进行回合的角色使用一张【杀】(无距离限制),此【杀】造成伤害时,你防止此伤害,视为对该濒死角色使用一张【桃】。
引用:LuaNosJiefan
状态:1217验证通过

	LuaNosJiefanCard = sgs.CreateSkillCard{
		name = "LuaNosJiefanCard",
		target_fixed = true,
		mute = true,
		on_use = function(self,room,handang,targets)
			local current = room:getCurrent()
			if not current or current:isDead() or current:getPhase() == sgs.Player_NotActive then return end
			local who = room:getCurrentDyingPlayer()
			if not who then return end
			handang:setFlags("NosJiefanUsed")
			local data = sgs.QVariant()
			data:setValue(who)
			room:setTag("NosJiefanTarget",data)
			local use_slash = room:askForUseSlashTo(handang,current,"nosjiefan-slash:"..current:objectName(),false)
			if not use_slash then
				handang:setFlags("-NosJiefanUsed")
				room:removeTag("NosJiefanTarget")
				room:setPlayerFlag(handang,"Global_NosJiefanFailed")
			end
		end
	}
	LuaNosJiefanvs = sgs.CreateViewAsSkill{
		name = "LuaNosJiefan",
		n = 0,
		enabled_at_play = function(self,player)
			return false
		end,
		enabled_at_response = function(self,player,pattern)
			if not string.find(pattern,"peach") then return false end
			if player:hasFlag("Global_NosJiefanFailed") then return false end
			for _,p in sgs.qlist(player:getAliveSiblings()) do
				if p:getPhase() ~=sgs.Player_NotActive then
					return true
				end
			end
			return false
		end,
		view_as = function(self,cards)
			return LuaNosJiefanCard:clone()
		end
	}
	LuaNosJiefan = sgs.CreateTriggerSkill{
		name = "LuaNosJiefan",
		events = {sgs.DamageCaused,sgs.CardFinished,sgs.PreCardUsed},
		view_as_skill = LuaNosJiefanvs,
		on_trigger = function(self,event,handang,data)
			local room = handang:getRoom()
			if event == sgs.PreCardUsed then
				if not handang:hasFlag("NosJiefanUsed") then return false end
				local use = data:toCardUse()
				if use.card:isKindOf("Slash") then
					handang:setFlags("-NosJiefanUsed")
					room:setCardFlag(use.card,"nosjiefan-slash")
				end
			elseif event == sgs.DamageCaused then
				local current = room:getCurrent()
				local damage = data:toDamage()
				if damage.card and damage.card:isKindOf("Slash") and damage.card:hasFlag("nosjiefan-slash") then
					local log2 = sgs.LogMessage()
					log2.type = "#NosJiefanPrevent"
					log2.from = handang
					log2.to:append(damage.to)
					room:sendLog(log2)
					local target = room:getTag("NosJiefanTarget"):toPlayer()
					if target and target:getHp() > 0 then
						local log = sgs.LogMessage()
						log.type = "#NosJiefanNull1"
						log.from = target
						room:sendLog(log)
					elseif target and target:isDead() then
						local log = sgs.LogMessage()
						log.type = "#NosJiefanNull2"
						log.from = target					
						room:sendLog(log)
					elseif handang:hasFlag("Global_PreventPeach") then
						local log = sgs.LogMessage()
						log.type = "#NosJiefanNull3"
						log.from = current
						log.to:append(handang)
						room:sendLog(log)
					else
						local peach = sgs.Sanguosha:cloneCard("peach",sgs.Card_NoSuit,0)
						peach:setSkillName(self:objectName())
						room:setCardFlag(damage.card,"nosjiefan_success")
						room:useCard(sgs.CardUseStruct(peach,handang,target))
					end
					return true
				end
				return false
			elseif event == sgs.CardFinished and room:getTag("NosJiefanTarget"):toPlayer() then
				local use = data:toCardUse()
				if use.card:isKindOf("Slash") and use.card:hasFlag("nosjiefan-slash") then
					if not use.card:hasFlag("nosjiefan_success") then
						room:setPlayerFlag(handang,"Global_NosJiefanFailed")
					end
					room:removeTag("NosJiefanTarget")
				end
			end
			return false
		end
	}

返回索引 ##解惑 相关武将:智·司马徽
描述:**觉醒技,**当你发动“授业”目标累计超过6个时,须减去一点体力上限,将技能“授业”改为每阶段限一次,并获得技能“师恩”
引用:LuaJiehuo
状态:1217验证通过
:智水镜的三个技能均有联系,为了方便起见统一使用本LUA版本的技能,并非原版

	LuaJiehuo = sgs.CreateTriggerSkill{
		name = "LuaJiehuo" ,
		events = {sgs.CardFinished} ,
		frequency = sgs.Skill_Wake ,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			room:setPlayerMark(player, "LuaJiehuo", 1)
			player:loseAllMarks("@shouye")
			if room:changeMaxHpForAwakenSkill(player) then
				room:acquireSkill(player, "LuaShien")
			end
			return false
		end ,
		can_trigger = function(self, target)
			return target and (target:getMark("LuaJiehuo") == 0) and (target:getMark("@shouye") >= 7)
		end
	}

返回索引 ##解围 相关武将:风·曹仁
描述:每当你的武将牌翻面后,你可以摸一张牌,然后你可以使用一张锦囊牌或装备牌:若如此做,该牌结算后,你可以弃置场上一张同类型的牌。
状态:1217验证通过

	LuaJiewei = sgs.CreateTriggerSkill{
		name = "LuaJiewei",
		events = {sgs.TurnedOver} ,
		frequency = sgs.Skill_NotFrequent,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			if not room:askForSkillInvoke(player, self:objectName()) then return false end
			player:drawCards(1)
			local card = room:askForUseCard(player, "TrickCard+^Nullification,EquipCard|.|.|hand", "@Luajiewei")
			if not card then return false end
			local targets = sgs.SPlayerList()
			if card:getTypeId() == sgs.Card_TypeTrick then
				for _, p in sgs.qlist(room:getAlivePlayers()) do
					local can_discard = false
					for _, judge in sgs.qlist(p:getJudgingArea()) do
						if (judge:getTypeId() == sgs.Card_TypeTrick) and (player:canDiscard(p, judge:getEffectiveId())) then
							can_discard = true
							break
						elseif judge:getTypeId() == sgs.Card_TypeSkill then
							local real_card = Sanguosha:getEngineCard(judge:getEffectiveId())
							if (real_card:getTypeId() == sgs.Card_TypeTrick) and (player:canDiscard(p, real_card:getEffectiveId())) then
								can_discard = true
								break
							end
						end
					end
					if can_discard then targets:append(p) end
				end
			elseif (card:getTypeId() == sgs.Card_TypeEquip) then
				for _, p in sgs.qlist(room:getAlivePlayers()) do
							if (not p:getEquips():isEmpty()) and (player:canDiscard(p, "e")) then
								targets:append(p)
					else
						for _, judge in sgs.qlist(p:getJudgingArea()) do
										if judge:getTypeId() == sgs.Card_TypeSkill then
							local real_card = Sanguosha:getEngineCard(judge:getEffectiveId())
							 				if (real_card:getTypeId() == sgs.Card_TypeEquip) and (player:canDiscard(p, real_card:getEffectiveId())) then
													targets:append(p)
								   					break
								end
							end
						end
					end
				end
			end
			if targets:isEmpty() then return false end
			local to_discard = room:askForPlayerChosen(player, targets, self:objectName(), "@Luajiewei-discard", true)
			if to_discard then
				local disabled_ids = sgs.IntList()
				for _, c in sgs.qlist(to_discard:getCards("ej")) do
					local pcard = c 
					if (pcard:getTypeId() == sgs.Card_TypeSkill) then
						pcard = sgs.Sanguosha:getEngineCard(c:getEffectiveId())
					end
					if (pcard:getTypeId()~= card:getTypeId()) then
						disabled_ids:append(pcard:getEffectiveId())
					end
				end
				local id = room:askForCardChosen(player, to_discard, "ej", self:objectName(), false, sgs.Card_MethodDiscard, disabled_ids)
				room:throwCard(id, to_discard, player)
			end
			return false
		end	
	}

返回索引 ##尽瘁 相关武将:智·张昭
描述:当你死亡时,可令一名角色摸取或者弃置三张牌
引用:LuaXJincui
状态:1217验证通过

	LuaXJincui = sgs.CreateTriggerSkill{
		name = "LuaXJincui",
		events = {sgs.Death},
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local death = data:toDeath()
			local alives = room:getAlivePlayers()
			if player:objectName() == death.who:objectName() then
				if not alives:isEmpty() then
					if room:askForSkillInvoke(player, self:objectName(), data) then
						local target = room:askForPlayerChosen(player, alives, self:objectName())
						local ai_data = sgs.QVariant()
						ai_data:setValue(target)
						local choice = room:askForChoice(player, self:objectName(), "draw+throw", ai_data)
						if choice == "draw" then
							target:drawCards(3)
						else
							local count = math.min(3, target:getCardCount(true))
							room:askForDiscard(target, self:objectName(), count, count, false, true)
						end
					end
				end
			end
			return
		end,
		can_trigger = function(self, target)
			 return target and target:hasSkill(self:objectName())
		end
	}

返回索引 ##禁酒 相关武将:一将成名·高顺
描述:**锁定技,**你的【酒】均视为【杀】。
引用:LuaJinjiu
状态:1217验证通过

	LuaJinjiu = sgs.CreateFilterSkill{
		name = "LuaJinjiu" ,
		view_filter = function(self, card)
			return card:objectName() == "analeptic"
		end ,
		view_as = function(self, card)
			local slash = sgs.Sanguosha:cloneCard("slash", card:getSuit(), card:getNumber())
			slash:setSkillName(self:objectName())
			local wrap = sgs.Sanguosha:getWrappedCard(card:getId())
			wrap:takeOver(slash)
			return wrap
		end
	}

返回索引 ##精策 相关武将:一将成名2013·郭淮
描述:出牌阶段结束时,若你本回合已使用的牌数大于或等于你当前的体力值,你可以摸两张牌。
引用:LuaJingce
状态:1217验证通过

	LuaJingce = sgs.CreateTriggerSkill{
		name = "LuaJingce" ,
		events = {sgs.PreCardUsed, sgs.CardResponded, sgs.EventPhaseStart, sgs.EventPhaseEnd} ,
		frequency = sgs.Skill_Frequent ,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			if ((event == sgs.PreCardUsed) or (event == sgs.CardResponded)) and (player:getPhase() <= sgs.Player_Play) then
				local card = nil
				if event == sgs.PreCardUsed then
					card = data:toCardUse().card
				else
					local response = data:toCardResponse()
					if response.m_isUse then
						card = response.m_card
					end
				end
				if card and (card:getHandlingMethod() == sgs.Card_MethodUse) then
					player:addMark(self:objectName())
				end
			elseif (event == sgs.EventPhaseStart) and (player:getPhase() == sgs.Player_RoundStart) then
				player:setMark(self:objectName(), 0)
			elseif event == sgs.EventPhaseEnd then
				if (player:getPhase() == sgs.Player_Play) and (player:getMark(self:objectName()) >= player:getHp()) then
					if room:askForSkillInvoke(player, self:objectName()) then
						player:drawCards(2)
					end
				end
			end
			return false
		end
	}

返回索引 ##酒池 相关武将:林·董卓
描述:你可以将一张黑桃手牌当【酒】使用。
引用:LuaJiuchi
状态:1217验证通过

	LuaJiuchi = sgs.CreateViewAsSkill{
		name = "LuaJiuchi",
		n = 1,
		view_filter = function(self, selected, to_select)
			return (not to_select:isEquipped()) and (to_select:getSuit() == sgs.Card_Spade)
		end,
		view_as = function(self, cards)
			if #cards == 1 then
				local analeptic = sgs.Sanguosha:cloneCard("analeptic", cards[1]:getSuit(), cards[1]:getNumber())
				analeptic:setSkillName(self:objectName())
				analeptic:addSubcard(cards[1])
				return analeptic
			end
		end,
		enabled_at_play = function(self, player)
			local newanal = sgs.Sanguosha:cloneCard("analeptic", sgs.Card_NoSuit, 0)
			if player:isCardLimited(newanal, sgs.Card_MethodUse) or player:isProhibited(player, newanal) then return false end
			return player:usedTimes("Analeptic") <= sgs.Sanguosha:correctCardTarget(sgs.TargetModSkill_Residue, player , newanal)
		end,
		enabled_at_response = function(self, player, pattern)
			return string.find(pattern, "analeptic")
		end
	}

返回索引 ##酒诗 相关武将:一将成名·曹植
描述:若你的武将牌正面朝上,你可以将你的武将牌翻面,视为使用一张【酒】;若你的武将牌背面朝上时你受到伤害,你可以在伤害结算后将你的武将牌翻转至正面朝上。
引用:LuaJiushi
状态:1217验证通过

	LuaJiushivs = sgs.CreateViewAsSkill{
		name = "LuaJiushi",
		n = 0,
		view_as = function(self, cards)
			local analeptic = sgs.Sanguosha:cloneCard("analeptic", sgs.Card_NoSuit, 0)
			analeptic:setSkillName(self:objectName())
			return analeptic
		end,
		enabled_at_play = function(self, player)
			return sgs.Analeptic_IsAvailable(player) and player:faceUp()
		end,
		enabled_at_response = function(self, player, pattern)
			return string.find(pattern, "analeptic") and player:faceUp()
		end
	}
	LuaJiushi = sgs.CreateTriggerSkill{
		name = "LuaJiushi",
		frequency = sgs.Skill_NotFrequent,
		events = {sgs.PreCardUsed, sgs.PreDamageDone, sgs.DamageComplete},
		view_as_skill = LuaJiushivs,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			if event == sgs.PreCardUsed then
				local use = data:toCardUse()
				local card = use.card
				if card:getSkillName() == "LuaJiushi" then
					player:turnOver()
				end
			elseif event == sgs.PreDamageDone then
				room:setTag("PredamagedFace", sgs.QVariant(player:faceUp()))
			elseif event == sgs.DamageComplete then
				local faceup = room:getTag("PredamagedFace"):toBool()
				room:removeTag("PredamagedFace")
				if not (faceup or player:faceUp()) then
					if player:askForSkillInvoke("LuaJiushi", data) then
						player:turnOver()
					end
				end
			end
		end
	}

返回索引 ##救援 相关武将:标准·孙权、测试·制霸孙权
描述:**主公技,锁定技,**其他吴势力角色使用的【桃】指定你为目标后,回复的体力+1。
引用:LuaJiuyuan
状态:1217验证通过

	LuaJiuyuan = sgs.CreateTriggerSkill{
		name = "LuaJiuyuan$",
		frequency = sgs.Skill_Compulsory,
		events = {sgs.TargetConfirmed, sgs.PreHpRecover},
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			if event == sgs.TargetConfirmed then
				local use = data:toCardUse()
				if use.card:isKindOf("Peach") and use.from and (use.from:getKingdom() == "wu")
						and (player:objectName() ~= use.from:objectName()) and player:hasFlag("Global_Dying") then
					room:setCardFlag(use.card, "LuaJiuyuan")
				end
			elseif event == sgs.PreHpRecover then
				local rec = data:toRecover()
				if rec.card and rec.card:hasFlag("LuaJiuyuan") then
					rec.recover = rec.recover + 1
					data:setValue(rec)
				end
			end
		end,
		can_trigger = function(self, target)
			if target then
				return target:hasLordSkill(self:objectName())
			end
			return false
		end
	}

返回索引 ##救主 相关武将:2013-3v3·赵云
描述:每当一名其他己方角色处于濒死状态时,若你的体力值大于1,你可以失去1点体力并弃置一张牌,令该角色回复1点体力。
引用:LuaJiuzhu
状态:1217验证通过(2013-3v3模式)

	LuaJiuzhuCard = sgs.CreateSkillCard{
		name = "LuaJiuzhuCard",
		target_fixed = true,
		on_use = function(self,room,player,targets)
			local who = room:getCurrentDyingPlayer()
			if not who then return end
			room:loseHp(player)
			local recover = sgs.RecoverStruct()
			recover.who = player
			room:recover(who,recover)
		end
	}
	LuaJiuzhuvs = sgs.CreateViewAsSkill{
		name = "LuaJiuzhu",
		n = 1,
		view_filter = function(self,selected,to_select)
			return #selected == 0 
		end,
		enabled_at_play = function(self,player)
			return false
		end,
		enabled_at_response = function(self,player,pattern)
			if pattern ~= "peach" or not player:canDiscard(player,"he") or player:getHp() <= 1 then return false end
			local dyingobj = player:property("currentdying"):toString()
			local who = nil
			for _,p in sgs.qlist(player:getAliveSiblings()) do 
				if p:objectName() == dyingobj then
					who = p
					break
				end
			end
			if not who then return false end
			if player:getMark("_3v3mode") > 0 then
				return string.sub(player:getRole(),1,1) == string.sub(who:getRole(),1,1)
			else
				return true
			end
		end,
		view_as = function(self,cards)
			if #cards ~= 1 then return nil end
			local card = LuaJiuzhuCard:clone()
			card:addSubcard(cards[1])
			return card
		end
	}
	LuaJiuzhu = sgs.CreateTriggerSkill{
		name = "LuaJiuzhu",
		events = {sgs.GameStart},
		view_as_skill = LuaJiuzhuvs,
		on_trigger = function(self,event,player,data)
			local room = player:getRoom()
			if player:getGameMode():startsWith("06_") then
				room:setPlayerMark(player,"_3v3mode",1)
			end
			return false
		end
	}

返回索引 ##举荐 相关武将:一将成名·徐庶
描述:回合结束阶段开始时,你可以弃置一张非基本牌,令一名其他角色选择一项:摸两张牌,或回复1点体力,或将其武将牌翻至正面朝上并重置之。
引用:LuaJujian
状态:1217验证通过

	LuaJujianCard = sgs.CreateSkillCard{
		name = "LuaJujianCard",
		target_fixed = false,
		will_throw = true,
		filter = function(self, targets, to_select)
			return (#targets == 0) and (to_select:objectName() ~= sgs.Self:objectName())
		end,
		on_effect = function(self, effect)
			local room = effect.from:getRoom()	
			local choiceList = {"draw"}
			if effect.to:isWounded() then
				table.insert(choiceList, "recover")
			end
			if (not effect.to:faceUp()) or effect.to:isChained() then
				table.insert(choiceList, "reset")
			end
			local choice = room:askForChoice(effect.to, "LuaJujian", table.concat(choiceList, "+"))
			if choice == "draw" then
				effect.to:drawCards(2)
			elseif choice == "recover" then
				local recover = sgs.RecoverStruct()
				recover.who = effect.from
				room:recover(effect.to, recover)
			elseif choice == "reset" then
				if effect.to:isChained() then
					room:setPlayerProperty(effect.to, "chained", sgs.QVariant(false))
				end
				if not effect.to:faceUp() then
					effect.to:turnOver()
				end
			end
		end
	}
	LuaJujianVS = sgs.CreateViewAsSkill{
		name = "LuaJujian",
		n = 1,
		view_filter = function(self, selected, to_select)
			return (not to_select:isKindOf("BasicCard")) and (not sgs.Self:isJilei(to_select))
		end,
		view_as = function(self, cards)
			if #cards == 1 then
				local jujiancard = LuaJujianCard:clone()
				jujiancard:addSubcard(cards[1])
				return jujiancard
			end
		end,
		enabled_at_play = function(self, player)
			return false
		end,
		enabled_at_response = function(self, player, pattern)
			return pattern == "@@LuaJujian"
		end
	}
	LuaJujian = sgs.CreateTriggerSkill{
		name = "LuaJujian",
		frequency = sgs.Skill_NotFrequent,
		events = {sgs.EventPhaseStart},
		view_as_skill = LuaJujianVS,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			if (player:getPhase() == sgs.Player_Finish) and player:canDiscard(player, "he") then
				room:askForUseCard(player, "@@LuaJujian", "@jujian-card", -1, sgs.Card_MethodNone)
			end
			return false
		end
	}

返回索引 ##举荐-旧 相关武将:怀旧·徐庶
描述:出牌阶段,你可以弃置至多三张牌,然后令一名其他角色摸等量的牌。若你以此法弃置三张同一类别的牌,你回复1点体力。每阶段限一次。
引用:LuaNosJujian
状态:1217验证通过

	LuaNosJujianCard = sgs.CreateSkillCard{
		name = "LuaNosJujianCard" ,
		filter = function(self, selected, to_select)
			return (#selected == 0) and (to_select:objectName() ~= sgs.Self:objectName())
		end ,
		on_effect = function(self, effect)
			local n = self:subcardsLength()
			effect.to:drawCards(n)
			local room = effect.from:getRoom()
			if n == 3 then
				local thetype = nil
				for _, card_id in sgs.qlist(effect.card:getSubcards()) do
					if thetype == nil then
						thetype = sgs.Sanguosha:getCard(card_id):getTypeId()
					elseif sgs.Sanguosha:getCard(card_id):getTypeId() ~= thetype then
						return false
					end
				end
				local recover = sgs.RecoverStruct()
				recover.card = self
				recover.who = effect.from
				room:recover(effect.from, recover)
			end
		end
	}
	LuaNosJujian = sgs.CreateViewAsSkill{
		name = "LuaNosJujian" ,
		n = 3 ,
		view_filter = function(self, selected, to_select)
			return (#selected < 3) and (not sgs.Self:isJilei(to_select))
		end ,
		view_as = function(self, cards)
			if #cards == 0 then return nil end
			local card = LuaNosJujianCard:clone()
			for _, c in ipairs(cards) do
				card:addSubcard(c)
			end
			return card
		end ,
		enabled_at_play = function(self, player)
			return player:canDiscard(player, "he") and (not player:hasUsed("#LuaNosJujianCard"))
		end
	}

返回索引 ##巨象 相关武将:林·祝融
描述锁定技,【南蛮入侵】对你无效;当其他角色使用的【南蛮入侵】在结算后置入弃牌堆时,你获得之。
引用:LuaSavageAssaultAvoid(与祸首一致,注意重复技能)、LuaJuxiang
状态:1217验证通过

	LuaSavageAssaultAvoid = sgs.CreateTriggerSkill{
		name = "#LuaSavageAssaultAvoid",
		events = {sgs.CardEffected},
		on_trigger = function(self, event, player, data)
			local effect = data:toCardEffect()
			if effect.card:isKindOf("SavageAssault") then
				return true
			else
				return false
			end
		end
	}
	LuaJuxiang = sgs.CreateTriggerSkill{
		name = "LuaJuxiang",
		frequency = sgs.Skill_Compulsory,
		events = {sgs.BeforeCardsMove,sgs.CardUsed},
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			if event == sgs.CardUsed then
				local use = data:toCardUse()
				if use.card:isKindOf("SavageAssault") then
					if use.card:isVirtualCard() and (use.card:subcardsLength() ~= 1) then return false end
					if sgs.Sanguosha:getEngineCard(use.card:getEffectiveId())
							and sgs.Sanguosha:getEngineCard(use.card:getEffectiveId()):isKindOf("SavageAssault") then
						room:setCardFlag(use.card:getEffectiveId(), "real_SA")
					end
				end
			elseif player and player:isAlive() and player:hasSkill(self:objectName()) then
				local move = data:toMoveOneTime()
				if (move.card_ids:length() == 1) and move.from_places:contains(sgs.Player_PlaceTable) and (move.to_place == sgs.Player_DiscardPile)
						and (move.reason.m_reason == sgs.CardMoveReason_S_REASON_USE) then
					local card = sgs.Sanguosha:getCard(move.card_ids:first())
					if card:hasFlag("real_SA") and (player:objectName() ~= move.from:objectName()) then
						player:obtainCard(card)
						move.card_ids = sgs.IntList()
						data:setValue(move)
					end
				end
			end
		end,
		can_trigger = function(self, target)
			return target
		end
	}

返回索引 ##倨傲 相关武将:智·许攸
描述:出牌阶段,你可以选择两张手牌背面向上移出游戏,指定一名角色,被指定的角色到下个回合开始阶段时,跳过摸牌阶段,得到你所移出游戏的两张牌。每阶段限一次
引用:LuaJuao
状态:1217验证通过

	LuaJuaoCard = sgs.CreateSkillCard{
		name = "LuaJuaoCard" ,
		will_throw = false ,
		handling_method = sgs.Card_MethodNone ,
		filter = function(self, targets, to_select)
			return (#targets == 0) and (to_select:getMark("LuaJuao") == 0)
		end ,
		on_effect = function(self, effect)
			effect.to:addToPile("hautain", self, false)
			effect.to:addMark("LuaJuao")
		end
	}
	LuaJuaoVS = sgs.CreateViewAsSkill{
		name = "LuaJuao" ,
		n = 2 ,
		view_filter = function(self, selected, to_select)
			if (#selected >= 2) then return false end
			return not to_select:isEquipped()
		end ,
		view_as = function(self, cards)
			if #cards ~= 2 then return nil end
			local card = LuaJuaoCard:clone()
			for _, c in ipairs(cards) do
				card:addSubcard(c)
			end
			return card
		end ,
		enabled_at_play = function(self, player)
			return not player:hasUsed("#LuaJuaoCard")
		end
	}
	LuaJuao = sgs.CreateTriggerSkill{
		name = "LuaJuao" ,
		events = {sgs.EventPhaseStart} ,
		view_as_skill = LuaJuaoVS ,
		on_trigger = function(self, event, player, data)
			if player:getPhase() == sgs.Player_Start then
				local room = player:getRoom()
				player:setMark("LuaJuao", 0)
				local dummy = sgs.Sanguosha:cloneCard("slash", sgs.Card_NoSuit, 0)
				for _, card_id in sgs.qlist(player:getPile("hautain")) do
					dummy:addSubcard(card_id)
				end
				player:obtainCard(dummy, false)
				player:skip(sgs.Player_Draw)
			end
			return false
		end ,
		can_trigger = function(self, target)
			return target and (target:getMark("LuaJuao") > 0)
		end
	}

返回索引 ##据守 相关武将:风·曹仁
描述:结束阶段开始时,你可以摸一张牌,然后将你的武将牌翻面。
引用:LuaJushou
状态:1217验证通过

	LuaJushou = sgs.CreatePhaseChangeSkill{
		name = "LuaJushou",	
		on_phasechange = function(self,target)
			local room = target:getRoom()
			if target:getPhase() == sgs.Player_Finish then
			if room:askForSkillInvoke(target,self:objectName()) then
				target:drawCards(1)
				target:turnOver()
				end
			end
		end 
	}

返回索引 ##据守-旧 相关武将:怀旧·曹仁
描述:结束阶段开始时,你可以摸三张牌,然后将你的武将牌翻面。
引用:LuaJushou
状态:1217验证通过

	LuaNosJushou = sgs.CreatePhaseChangeSkill{
		name = "LuaNosJushou",	
		on_phasechange = function(self,target)
			local room = target:getRoom()
			if target:getPhase() == sgs.Player_Finish then
			if room:askForSkillInvoke(target,self:objectName()) then
				target:drawCards(3)
				target:turnOver()
				end
			end
		end 
	}

返回索引 ##据守-翼 相关武将:翼·曹仁
描述:回合结束阶段开始时,你可以摸2+X张牌(X为你已损失的体力值),然后将你的武将牌翻面。
引用:LuaXNeoJushou
状态:1217验证通过

	LuaXNeoJushou = sgs.CreateTriggerSkill{
		name = "LuaXNeoJushou",
		frequency = sgs.Skill_NotFrequent,
		events = {sgs.EventPhaseStart},
		on_trigger = function(self, event, player, data)
			if player:getPhase() == sgs.Player_Finish then
				local room = player:getRoom()
				if room:askForSkillInvoke(player, self:objectName()) then
					local lost = player:getLostHp()
					player:drawCards(2 + lost)
					player:turnOver()
				end
			end
			return false
		end
	}

返回索引 ##绝策 相关武将:一将成名2013·李儒
描述:你的回合内,一名体力值大于0的角色失去最后的手牌后,你可以对其造成1点伤害。
引用:LuaJuece
状态:1217验证通过

	LuaJuece = sgs.CreateTriggerSkill{
		name = "LuaJuece" ,
		events = {sgs.CardsMoveOneTime},	
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local move = data:toMoveOneTime()
			if player:getPhase() ~= sgs.Player_NotActive and move.from and move.from_places:contains(sgs.Player_PlaceHand)and move.is_last_handcard then
				local from = room:findPlayer(move.from:getGeneralName())
				if from:getHp() > 0 and room:askForSkillInvoke(player, self:objectName(), data) then
					room:damage(sgs.DamageStruct(self:objectName(),player,from))
				end
			end
		end
	}

返回索引 ##绝汲 相关武将:倚天·张儁乂
描述:出牌阶段,你可以和一名角色拼点:若你赢,你获得对方的拼点牌,并可立即再次与其拼点,如此反复,直到你没赢或不愿意继续拼点为止。每阶段限一次。
引用:LuaXJueji
状态:1217验证通过

	LuaXJuejiCard = sgs.CreateSkillCard{
		name = "LuaXJuejiCard",
		target_fixed = false,
		will_throw = true,
		filter = function(self, targets, to_select)
			if #targets == 0 then
				return not to_select:isKongcheng()
			end
			return false
		end,
		on_effect = function(self, effect)
			local source = effect.from
			local target = effect.to
			local success = source:pindian(target, "LuaXJueji", self)
			local data = sgs.QVariant()
			data:setValue(target)
			while success do
				if target:isKongcheng() then
					break
				elseif source:isKongcheng() then
					break
				elseif source:askForSkillInvoke("LuaXJueji", data) then
					success = source:pindian(target, "LuaXJueji")
				else
					break
				end
			end
		end
	}
	LuaXJuejivs = sgs.CreateViewAsSkill{
		name = "LuaXJueji",
		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 juejiCard = LuaXJuejiCard:clone()
				juejiCard:addSubcard(cards[1])
				return juejiCard
			end
		end,
		enabled_at_play = function(self, player)
			return not player:hasUsed("#LuaXJuejiCard")
		end
	}
	LuaXJueji = sgs.CreateTriggerSkill{
		name = "LuaXJueji",	
		events = {sgs.Pindian},
		view_as_skill = LuaXJuejivs,
		on_trigger = function(self, event, player, data)
			local pindian = data:toPindian()
			if pindian.reason == "LuaXJueji" then
				if pindian.from_card:getNumber() > pindian.to_card:getNumber() then
					player:obtainCard(pindian.to_card)
				end
			end
			return false
		end,
		priority = -1
	}

返回索引 ##绝境 相关武将:神·赵云
描述:**锁定技,**摸牌阶段,你额外摸X张牌。你的手牌上限+2。(X为你已损失的体力值)
引用:LuaJuejing、LuaJuejingDraw
状态:0405验证通过

	LuaJuejing = sgs.CreateMaxCardsSkill{
		name = "LuaJuejing" ,
		extra_func = function(self, target)
			if target:hasSkill(self:objectName()) then
				return 2
			else
				return 0
			end
		end
	}
	LuaJuejingDraw = sgs.CreateDrawCardsSkill{
		name = "#LuaJuejing-draw" ,
		frequency = sgs.Skill_Compulsory ,
		draw_num_func = function(self, player, n)
			if player:isWounded() then
				player:getRoom():sendCompulsoryTriggerLog(player, "LuaJuejing")
			end
			return n + player:getLostHp()
		end
	}

返回索引 ##绝境-旧 相关武将:测试·高达一号
描述:**锁定技,**摸牌阶段,你不摸牌。每当你的手牌数变化后,若你的手牌数不为4,你须将手牌补至或弃置至四张。
引用:LuaXNosJuejing
状态:1217验证通过

	LuaXNosJuejing = sgs.CreateTriggerSkill{
		name = "LuaXNosJuejing",
		frequency = sgs.Skill_Compulsory,
		events = {sgs.CardsMoveOneTime, sgs.EventPhaseChanging},
		on_trigger = function(self, event, player, data)
			if event == sgs.CardsMoveOneTime then
				local move = data:toMoveOneTime()
				local source = move.from
				local target = move.to
				if not source or source:objectName() ~= player:objectName() then
					if not target or target:objectName() ~= player:objectName() then
						return false
					end
				end
				if move.to_place ~= sgs.Player_PlaceHand then
					if not move.from_places:contains(sgs.Player_PlaceHand) then
						return false
					end
				end
				if player:getPhase() == sgs.Player_Discard then
					return false
				end
			elseif event == sgs.EventPhaseChanging then
				local change = data:toPhaseChange()
				local nextphase = change.to
				if nextphase == sgs.Player_Draw then
					player:skip(nextphase)
					return false
				elseif nextphase ~= sgs.Player_Finish then
					return false
				end
			end
			local count = player:getHandcardNum()
			if count == 4 then
				return false
			elseif count < 4 then
				player:drawCards(4 - count)
			elseif count > 4 then
				local room = player:getRoom()
				room:askForDiscard(player, self:objectName(), count - 4, count - 4)
			end
			return false
		end
	}

返回索引 ##绝情 相关武将:一将成名·张春华、怀旧·张春华
描述:**锁定技,**你即将造成的伤害均视为失去体力。
引用:LuaJueqing
状态:1217验证通过

	LuaJueqing = sgs.CreateTriggerSkill{
		name = "LuaJueqing",
		frequency = sgs.Skill_Compulsory,
		events = {sgs.Predamage},
		on_trigger = function(self, event, player, data)
			local damage = data:toDamage()
			local room = player:getRoom()
			room:loseHp(damage.to, damage.damage)
			return true
		end,
	}

返回索引 ##军威 相关武将:☆SP·甘宁
描述:结束阶段开始时,你可以将三张“锦”置入弃牌堆并选择一名角色,令该角色选择一项:1.展示一张【闪】并将该【闪】交给由你选择的一名角色;2.失去1点体力,然后你将其装备区的一张牌移出游戏,该角色的下个回合结束后,将这张装备牌移回其装备区。
引用:LuaJunwei,LuaJunweiGot
状态:1217验证通过(需与技能“银铃”配合使用)

	LuaJunwei = sgs.CreateTriggerSkill{
		name = "LuaJunwei",
		events = {sgs.EventPhaseStart},
		on_trigger = function(self, event, ganning, data)
			local room = ganning:getRoom()
			if ganning:getPhase() == sgs.Player_Finish and ganning:getPile("brocade"):length() >= 3 then
				local target = room:askForPlayerChosen(ganning,room:getAllPlayers(),self:objectName(),"junwei-invoke",true,true)
				if not target then return false end
				local brocade = ganning:getPile("brocade")
				local to_throw = sgs.IntList()
				for i = 0,2,1 do
					local card_id = 0
					room:fillAG(brocade,ganning)
					if brocade:length() == 3 - i then
						card_id = brocade:first()
					else
						card_id = room:askForAG(ganning,brocade,false,self:objectName())
					end
					room:clearAG(ganning)
					brocade:removeOne(card_id)
					to_throw:append(card_id)
				end
				local slash = sgs.Sanguosha:cloneCard("slash",sgs.Card_NoSuit,0)
				for _,id in sgs.qlist(to_throw) do
					slash:addSubcard(id)
				end
				local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_REMOVE_FROM_PILE,"",self:objectName(),"")
				room:throwCard(slash,reason,nil)
				slash:deleteLater()
				local card = room:askForCard(target,"Jink","@junwei-show",data,sgs.Card_MethodNone)
				if card then
					room:showCard(target,card:getEffectiveId())
					local receiver = room:askForPlayerChosen(ganning,room:getAllPlayers(),"junweigive","@junwei-give")
					if receiver:objectName() ~= target:objectName() then
						receiver:obtainCard(card)
					end
				else
					room:loseHp(target,1)
					if not target:isAlive() then return false end
					if target:hasEquip() then
						local card_id = room:askForCardChosen(ganning,target,"e",self:objectName())
						target:addToPile("junwei_equip",card_id)
						if target:objectName() == ganning:objectName() then
							room:setPlayerMark(target,tostring(card_id),1)
						end
					end
				end
			end
			return false
		end
	}
	LuaJunweiGot = sgs.CreateTriggerSkill{
		name = "#LuaJunweiGot",
		events = {sgs.EventPhaseChanging},
		can_trigger = function(self,target)
			return target ~= nil
		end,
		on_trigger = function(self,event,player,data)
			local room = player:getRoom()
			local change = data:toPhaseChange()
			if change.to ~= sgs.Player_NotActive or player:getPile("junwei_equip"):length() == 0 then return false end
			for _,card_id in sgs.qlist(player:getPile("junwei_equip")) do
				if player:getMark(tostring(card_id)) > 0 then
					room:setPlayerMark(player,tostring(card_id),0)
					continue
				end
				local card = sgs.Sanguosha:getCard(card_id)
				local equip_index = -1
				local equip = card:getRealCard():toEquipCard()
				equip_index = equip:location()
				local exchangeMove = sgs.CardsMoveList()
				local move1 = sgs.CardsMoveStruct(card_id,player,sgs.Player_PlaceEquip,
					sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_PUT,player:objectName()))
				exchangeMove:append(move1)
				if player:getEquip(equip_index) ~= nil then
					local move2 = sgs.CardsMoveStruct(player:getEquip(equip_index):getId(),nil,sgs.Player_DiscardPile,
						sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_CHANGE_EQUIP,player:objectName()))
					exchangeMove:append(move2)
				end
				local log = sgs.LogMessage()
				log.type = "$JunweiGot"
				log.from = player
				log.card_str = tonumber(card_id)
				room:sendLog(log)
				room:moveCardsAtomic(exchangeMove,true)
			end
			return false
		end
	}

返回索引 ##峻刑 相关武将:一将成名2013·满宠
描述:出牌阶段限一次,你可以弃置至少一张手牌并选择一名其他角色,该角色须弃置一张与你弃置的牌类型均不同的手牌,否则将其武将牌翻面并摸X张牌。(X为你弃置的牌的数量)
引用:LuaJunxing
状态:1217验证通过

	LuaJunxingCard = sgs.CreateSkillCard{
		name = "LuaJunxing" ,
		filter = function(self, targets, to_select)
			return (#targets == 0) and (to_select:objectName() ~= sgs.Self:objectName())
		end ,
		on_use = function(self, room, source, targets)
			local target = targets[1]
			if not target:isAlive() then return end
			local type_name = {"BasicCard", "TrickCard", "EquipCard"}
			local types = {"BasicCard", "TrickCard", "EquipCard"}
			for _, id in sgs.qlist(self:getSubcards()) do
				local c = sgs.Sanguosha:getCard(id)
				table.removeOne(types,type_name[c:getTypeId()])
				if #types == 0 then break end
			end
			if (not target:canDiscard(target, "h")) or #types == 0 then
				target:turnOver()
				target:drawCards(self:getSubcards():length(), "LuaJunxing")
			elseif not room:askForCard(target, table.concat(types, ",") .. "|.|.|hand", "@junxing-discard") then
				target:turnOver()
				target:drawCards(self:getSubcards():length(), "LuaJunxing")
			end
		end
	}
	LuaJunxing = sgs.CreateViewAsSkill{
		name = "LuaJunxing" ,
		n = 999 ,
		view_filter = function(self, selected, to_select)
			return (not to_select:isEquipped()) and (not sgs.Self:isJilei(to_select))
		end ,
		view_as = function(self, cards)
			if #cards == 0 then return nil end
			local card = LuaJunxingCard:clone()
			for _, c in ipairs(cards) do
				card:addSubcard(c)
			end
			card:setSkillName(self:objectName())
			return card
		end ,
		enabled_at_play = function(self, player)
			return player:canDiscard(player, "h") and (not player:hasUsed("#LuaJunxingCard"))
		end
	}

返回索引