Skip to content

Latest commit

 

History

History
1340 lines (1336 loc) · 47.3 KB

ChapterQ.md

File metadata and controls

1340 lines (1336 loc) · 47.3 KB

代码速查手册(Q区)

#技能索引 七星戚乱奇才奇才-旧奇策奇袭千幻谦逊潜袭潜袭-旧枪舞强袭巧变巧说琴音青囊倾城倾国倾国-1V1清俭求援驱虎权计

返回目录 ##七星 相关武将:神·诸葛亮
描述:分发起始手牌时,共发你十一张牌,你选四张作为手牌,其余的面朝下置于一旁,称为“星”;摸牌阶段结束时,你可以用任意数量的手牌等量替换这些“星”。
引用:LuaQixing、LuaQixingStart、LuaQingxingAsk、LuaQingxingClear 状态:0405验证通过

LuaQixingCard = sgs.CreateSkillCard{
	name = "LuaQixingCard",
	will_throw = false,
	handling_method = sgs.Card_MethodNone,
	target_fixed = true,
	on_use = function(self, room, source, targets)
		local pile = source:getPile("stars")
		local subCards = self:getSubcards()
		local to_handcard = sgs.IntList()
		local to_pile = sgs.IntList()
		local set = source:getPile("stars")
		for _,id in sgs.qlist(subCards) do
			set:append(id)
		end
		for _,id in sgs.qlist(set) do
			if not subCards:contains(id) then
				to_handcard:append(id)
			elseif not pile:contains(id) then
				to_pile:append(id)
			end
		end
		assert(to_handcard:length() == to_pile:length())
		if to_pile:length() == 0 or to_handcard:length() ~= to_pile:length() then return end
		room:notifySkillInvoked(source, "LuaQixing")
		source:addToPile("stars", to_pile, false)
		local to_handcard_x = sgs.Sanguosha:cloneCard("slash", sgs.Card_NoSuit, 0)
		for _,id in sgs.qlist(to_handcard) do
			to_handcard_x:addSubcard(id)
		end
		local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_EXCHANGE_FROM_PILE, source:objectName())
		room:obtainCard(source, to_handcard_x, reason, false)
	end,
}
LuaQixingVS = sgs.CreateViewAsSkill{
	name = "LuaQixing", 
	n = 998,
	response_pattern = "@@LuaQixing",
	expand_pile = "stars",
	view_filter = function(self, selected, to_select)
		if #selected < sgs.Self:getPile("stars"):length() then
			return not to_select:isEquipped()
		end
		return false
	end,
	view_as = function(self, cards)
		if #cards == sgs.Self:getPile("stars"):length() then
			local c = LuaQixingCard:clone()
			for _,card in ipairs(cards) do
				c:addSubcard(card)
			end
			return c
		end
		return nil
	end,
}
LuaQixing = sgs.CreateTriggerSkill{
	name = "LuaQixing",
	events = {sgs.EventPhaseEnd},
	view_as_skill = LuaQixingVS,
	can_trigger = function(self, player)
		return player:isAlive() and player:hasSkill(self:objectName()) and player:getPile("stars"):length() > 0
			and player:getPhase() == sgs.Player_Draw
	end,
	on_trigger = function(self, event, player, data)
		player:getRoom():askForUseCard(player, "@@LuaQixing", "@qixing-exchange", -1, sgs.Card_MethodNone)
		return false
	end,
}
LuaQixingStart = sgs.CreateTriggerSkill{
	name = "#LuaQixingStart",
	events = {sgs.DrawInitialCards,sgs.AfterDrawInitialCards},
	on_trigger = function(self, event, player, data)
		local room = player:getRoom()
		if event == sgs.DrawInitialCards then
			room:sendCompulsoryTriggerLog(player, "LuaQixing")
			data:setValue(data:toInt() + 7)
		elseif event == sgs.AfterDrawInitialCards then
			local exchange_card = room:askForExchange(player, "LuaQixing", 7, 7)
			player:addToPile("stars", exchange_card:getSubcards(), false)
			exchange_card:deleteLater()
		end
		return false
	end,
}
LuaQixingAsk = sgs.CreateTriggerSkill{
	name = "#LuaQixingAsk",
	events = {sgs.EventPhaseStart},
	on_trigger = function(self, event, player, data)
		local room = player:getRoom()
		if player:getPhase() == sgs.Player_Finish then
			if player:getPile("stars"):length() > 0 and player:hasSkill("LuaKuangfeng") then
				room:askForUseCard(player, "@@LuaKuangfeng", "@kuangfeng-card", -1, sgs.Card_MethodNone)
			end
			if player:getPile("stars"):length() > 0 and player:hasSkill("LuaDawu") then
				room:askForUseCard(player, "@@LuaDawu", "@dawu-card", -1, sgs.Card_MethodNone)
			end
		end
		return false
	end,
}
LuaQixingClear = sgs.CreateTriggerSkill{
	name = "#LuaQixingClear",
	events = {sgs.EventPhaseStart, sgs.Death, sgs.EventLoseSkill},
	can_trigger = function(self, player)
		return player ~= nil
	end,
	on_trigger = function(self, event, player, data)
		local room = player:getRoom()
		if sgs.event == EventPhaseStart or event == sgs.Death then
			if event == sgs.Death then
				local death = data:toDeath()
				if death.who:objectName() ~= player:objectName() then
					return false
				end
			end
			if not player:getTag("LuaQixing_user"):toBool() then
				return false
			end
			local invoke = false
			if (event == sgs.EventPhaseStart and player:getPhase() == sgs.Player_RoundStart) or event == sgs.Death then
				invoke = true
			end
			if not invoke then
				return false
			end
			local players = room:getAllPlayers()
			for _,p in sgs.qlist(players) do
				p:loseAllMarks("@gale")
				p:loseAllMarks("@fog")
			end
			player:removeTag("LuaQixing_user")
		elseif event == sgs.EventLoseSkill and data:toString() == "LuaQixing" then
			player:clearOnePrivatePile("stars")
		end
		return false
	end,
}	

返回索引 ##戚乱 相关武将:阵·何太后
描述:每当一名角色的回合结束后,若你于本回合杀死至少一名角色,你可以摸三张牌。
引用:LuaQiluan
状态:1217验证通过

	LuaQiluan = sgs.CreateTriggerSkill{
		name = "LuaQiluan", 
		frequency = sgs.Skill_Frequent, --, NotFrequent, Compulsory, Limited, Wake 
		events = {sgs.Death,sgs.EventPhaseStart}, 
		on_trigger = function(self, triggerEvent, player, data)
			local room = player:getRoom()
			if (triggerEvent == sgs.Death) then
				local death = data:toDeath()
				if death.who:objectName() ~= player:objectName() then return false end
				local killer = death.damage.from
				local current = room:getCurrent();
				if killer and current and (current:isAlive() or death.who == current)
					and current:getPhase() ~= sgs.Player_NotActive then
					killer:addMark(self:objectName())
				end
			else 
				if player:getPhase() == sgs.Player_NotActive then
					local hetaihous = sgs.SPlayerList()
					for _,p in sgs.qlist(room:getAllPlayers()) do
						if p:getMark(self:objectName()) > 0 and player:hasSkill(self:objectName()) then
							hetaihous:append(p)
						end
						p:setMark(self:objectName(), 0);
					end	
					for _,p in sgs.qlist(hetaihous)do
						if room:askForSkillInvoke(p, self:objectName()) then
							p:drawCards(3)
						end
					end
				end
			end
			return false
		end,
		can_trigger = function(self, target)
			return target
		end,
	}

返回索引 ##奇才 相关武将:标准·黄月英、JSP·黄月英
描述:**锁定技,**你使用锦囊牌无距离限制。你装备区里除坐骑牌外的牌不能被其他角色弃置。
状态:尚未完成
备注:前半部分与旧版相同,后半部分被写入源码,详见Player::canDiscard

返回索引 ##奇才-旧 相关武将:怀旧-标准·黄月英-旧、SP·台版黄月英
描述:**锁定技,**你使用锦囊牌时无距离限制。
引用:LuaNosQicai
状态:0405验证通过

	LuaNosQicai = sgs.CreateTargetModSkill{
		name = "LuaNosQicai" ,
		pattern = "TrickCard" ,
		distance_limit_func = function(self, from)
			if from:hasSkill(self:objectName()) then
				return 1000
			else
				return 0
			end
		end
	}

返回索引 ##奇策 相关武将:二将成名·荀攸
描述:**出牌阶段限一次,**你可以将你的所有手牌(至少一张)当任意一张非延时锦囊牌使用。
引用:LuaQice
状态:0405验证通过

	LuaQiceCard = sgs.CreateSkillCard{
		name = "LuaQiceCard",
		will_throw = false,
		handling_method = sgs.Card_MethodNone,
		filter = function(self, targets, to_select)
			local card = sgs.Self:getTag("LuaQice"):toCard()
			card:addSubcards(sgs.Self:getHandcards())
			card:setSkillName(self:objectName())
			if card and card:targetFixed() then
				return false
			end
			local qtargets = sgs.PlayerList()
			for _, p in ipairs(targets) do
				qtargets:append(p)
			end
			return card and card:targetFilter(qtargets, to_select, sgs.Self) 
				and not sgs.Self:isProhibited(to_select, card, qtargets)
		end,
		feasible = function(self, targets)
			local card = sgs.Self:getTag("LuaQice"):toCard()
			card:addSubcards(sgs.Self:getHandcards())
			card:setSkillName(self:objectName())
			local qtargets = sgs.PlayerList()
			for _, p in ipairs(targets) do
				qtargets:append(p)
			end
			if card and card:canRecast() and #targets == 0 then
				return false
			end
			return card and card:targetsFeasible(qtargets, sgs.Self)
		end,	
		on_validate = function(self, card_use)
			local xunyou = card_use.from
			local room = xunyou:getRoom()
			local use_card = sgs.Sanguosha:cloneCard(self:getUserString())
			use_card:addSubcards(xunyou:getHandcards())
			use_card:setSkillName(self:objectName())
			local available = true
			for _,p in sgs.qlist(card_use.to) do
				if xunyou:isProhibited(p,use_card)	then
					available = false
					break
				end
			end
			available = available and use_card:isAvailable(xunyou)
			if not available then return nil end
			return use_card		
		end,
	}
	LuaQice = sgs.CreateViewAsSkill{
		name = "LuaQice",
		n = 0,
		view_filter = function(self, selected, to_select)
			return false
		end,
		view_as = function(self, cards)
			local c = sgs.Self:getTag("LuaQice"):toCard()
			if c then
				local card = LuaQiceCard:clone()
				card:setUserString(c:objectName())	
				return card
			end
			return nil
		end,
		enabled_at_play = function(self, player)
			return (not player:hasUsed("#LuaQice")) and (not player:isKongcheng())
		end,
	}
	LuaQice:setGuhuoDialog("r")

返回索引 ##千幻 相关武将:阵·于吉
描述:每当一名角色受到伤害后,该角色可以将牌堆顶的一张牌置于你的武将牌上。每当一名角色被指定为基本牌或锦囊牌的唯一目标时,若该角色同意,你可以将一张“千幻牌”置入弃牌堆:若如此做,取消该目标。
引用:LuaQianhuan
状态:1217验证通过

	LuaQianhuan = sgs.CreateTriggerSkill{
		name = "LuaQianhuan", 
		events = {sgs.Damaged,sgs.TargetConfirming}, 
		on_trigger = function(self, triggerEvent, player, data)
			local room = player:getRoom()
			if triggerEvent == sgs.Damaged and player:isAlive() then
				local yuji = room:findPlayerBySkillName(self:objectName())
				if yuji and room:askForSkillInvoke(player, self:objectName(), sgs.QVariant("choice:" .. yuji:objectName()))then
					if (yuji:objectName() ~= player:objectName()) then
						room:notifySkillInvoked(yuji, self:objectName());
					end
					local id = room:drawCard()
					local suit = sgs.Sanguosha:getCard(id):getSuit()
					local duplicate = false;
					for _,card_id in sgs.qlist(yuji:getPile("sorcery")) do
						if (sgs.Sanguosha:getCard(card_id):getSuit() == suit) then
							duplicate = true
							break
						end
					end
					yuji:addToPile("sorcery", id)
					if (duplicate) then
						local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_REMOVE_FROM_PILE,"", self:objectName(), "")
						room:throwCard(sgs.Sanguosha:getCard(id), reason, nil)
					end
				end
			elseif triggerEvent == sgs.TargetConfirming then
				local use = data:toCardUse()
				if (not use.card) or use.card:getTypeId() == sgs.Card_TypeEquip or use.card:getTypeId() == sgs.Card_TypeSkill then return false end
				if use.to:length() ~= 1 then return false end
				local yuji = room:findPlayerBySkillName(self:objectName());
				if yuji == nil or yuji:getPile("sorcery"):isEmpty() then return false end
				if room:askForSkillInvoke(yuji, self:objectName(), data) then
					if (yuji:objectName() == player:objectName() or room:askForChoice(player, self:objectName(), "accept+reject", data) == "accept") then
						local ids = yuji:getPile("sorcery")
						local id = -1
						if (ids:length() > 1) then
							room:fillAG(ids, yuji)
							id = room:askForAG(yuji, ids, false, self:objectName())
							room:clearAG(yuji)
						else
							id = ids:first()
						end
						local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_REMOVE_FROM_PILE, "", self:objectName(),"")
						room:throwCard(sgs.Sanguosha:getCard(id), reason,nil);
						use.to = sgs.SPlayerList()
						data:setValue(use)
					end
				end
			end
			return false;
		end,
		can_trigger = function(self, target)
			return target
		end,
	}

返回索引 ##奇袭 相关武将:标准·甘宁、SP·台版甘宁
描述:你可以将一张黑色牌当【过河拆桥】使用。
引用:LuaQixi
状态:1217验证通过

	LuaQixi = sgs.CreateOneCardViewAsSkill{
		name = "LuaQixi", 
		filter_pattern = ".|black",
		view_as = function(self, card) 
			local acard = sgs.Sanguosha:cloneCard("dismantlement", card:getSuit(), card:getNumber())
			acard:addSubcard(card:getId())
			acard:setSkillName(self:objectName())
			return acard
		end, 
	}

返回索引 ##谦逊 相关武将:标准·陆逊-旧、国战·陆逊
描述:**锁定技,**你不能被选择为【顺手牵羊】和【乐不思蜀】的目标。
引用:LuaNosQianxun
状态:0405验证通过

	LuaNosQianxun = sgs.CreateProhibitSkill{
		name = "LuaNosQianxun",
		is_prohibited = function(self, from, to, card)
			return to:hasSkill(self:objectName()) and (card:isKindOf("Snatch") or card:isKindOf("Indulgence"))
		end
	}

返回索引 ##潜袭 相关武将:一将成名2012·马岱
描述:准备阶段开始时,你可以进行一次判定,然后令一名距离为1的角色不能使用或打出与判定结果颜色相同的手牌,直到回合结束。
引用:LuaQianxi、LuaQianxiClear
状态:1217验证通过

	LuaQianxi = sgs.CreateTriggerSkill{
		name = "LuaQianxi" ,
		events = {sgs.EventPhaseStart,sgs.FinishJudge} ,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			if (event == sgs.EventPhaseStart) and (player and player:isAlive() and player:hasSkill(self:objectName())) and (player:getPhase() == sgs.Player_Start) then
				if room:askForSkillInvoke(player, self:objectName()) then
				local judge = sgs.JudgeStruct()
					judge.reason = self:objectName()
					judge.play_animation = false
					judge.who = player
					room:judge(judge)
				end
			elseif event == sgs.FinishJudge then
				local judge = data:toJudge()
				if (judge.reason ~= self:objectName()) or (not player:isAlive()) then return false end
				local color
				if judge.card:isRed() then
					color = "red"
				else
					color = "black"
				end
				player:setTag(self:objectName(), sgs.QVariant(color))
				local to_choose = sgs.SPlayerList()
				for _, p in sgs.qlist(room:getOtherPlayers(player)) do
					if player:distanceTo(p)  == 1 then
						to_choose:append(p)
					end
				end
				if to_choose:isEmpty() then return false end
				local victim = room:askForPlayerChosen(player, to_choose, self:objectName())
				local pattern = ".|" .. color .. "|.hand$0"
				room:setPlayerFlag(victim, "LuaQianxiTarget")
				room:addPlayerMark(victim, "@qianxi_" .. color)
				room:setPlayerCardLimitation(victim, "use,response", pattern, false)
			end
			return false
		end ,
		can_trigger = function(self,target)
			return target
		end
	}
	LuaQianxiClear = sgs.CreateTriggerSkill{
		name = "#LuaQianxi-clear" ,
		events = {sgs.EventPhaseChanging, sgs.Death} ,
		on_trigger = function(self, event, player, data)
			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() then return false end
			end
			local color = player:getTag("LuaQianxi"):toString()
			local room = player:getRoom()
			for _, p in sgs.qlist(room:getOtherPlayers(player)) do
				if p:hasFlag("LuaQianxiTarget") then
					room:removePlayerCardLimitation(p, "use,response", ".|" .. color .. ".|hand$0")
					room:setPlayerMark(p, "@qianxi_" .. color, 0)
				end
			end
			return false
		end ,
		can_trigger = function(self, target)
			return not (target:getTag("LuaQianxi"):toString() == "")
		end
	}

返回索引 ##潜袭-旧 相关武将:怀旧-一将2·马岱-旧
描述:每当你使用【杀】对距离为1的目标角色造成伤害时,你可以进行一次判定,若判定结果不为红桃,你防止此伤害,改为令其减1点体力上限。
引用:LuaNosQianxi
状态:1217验证通过

	LuaNosQianxi = sgs.CreateTriggerSkill{
		name = "LuaNosQianxi" ,
		events = {sgs.DamageCaused} ,
		on_trigger = function(self, event, player, data)
			local damage = data:toDamage()
			if (player:distanceTo(damage.to) == 1) and damage.card and damage.card:isKindOf("Slash")
					and damage.by_user and (not damage.chain) and (not damage.transfer) then
				if player:askForSkillInvoke(self:objectName(), data) then
					local room = player:getRoom()
					local judge = sgs.JudgeStruct()
					judge.pattern = ".|heart"
					judge.good = false
					judge.who = player
					judge.reason = self:objectName()
					room:judge(judge)
					if judge:isGood() then
						room:loseMaxHp(damage.to)
						return true
					end
				end
			end
			return false
		end
	}

返回索引 ##强袭 相关武将:火·典韦
描述:出牌阶段限一次,你可以失去1点体力或弃置一张武器牌,并选择攻击范围内的一名角色:若如此做,你对该角色造成1点伤害。

引用:LuaQiangxi
状态:0405验证通过

	LuaQiangxiCard = sgs.CreateSkillCard{
		name = "LuaQiangxiCard", 
		filter = function(self, targets, to_select) 
			if #targets ~= 0 or to_select:objectName() == sgs.Self:objectName() then return false end--根据规则集描述应该可以选择自己才对
			local rangefix = 0
			if not self:getSubcards():isEmpty() and sgs.Self:getWeapon() and sgs.Self:getWeapon():getId() == self:getSubcards():first() then
				local card = sgs.Self:getWeapon():getRealCard():toWeapon()
				rangefix = rangefix + card:getRange() - sgs.Self:getAttackRange(false)
			end
			return sgs.Self:inMyAttackRange(to_select, rangefix);
		end,
		on_effect = function(self, effect)
			local room = effect.to:getRoom()
			if self:getSubcards():isEmpty() then 
				room:loseHp(effect.from)
			end
			room:damage(sgs.DamageStruct(self:objectName(), effect.from, effect.to))
		end
	}
	LuaQiangxi = sgs.CreateViewAsSkill{
		name = "LuaQiangxi", 
		n = 1, 
		enabled_at_play = function(self, player)
			return not player:hasUsed("#LuaQiangxiCard")
		end,
		view_filter = function(self, selected, to_select)
			return #selected == 0 and to_select:isKindOf("Weapon") and not sgs.Self:isJilei(to_select)
		end, 
		view_as = function(self, cards) 
			if #cards == 0 then
				return LuaQiangxiCard:clone()
			elseif #cards == 1 then
				local card = LuaQiangxiCard:clone()
				card:addSubcard(cards[1])
				return card
			else 
				return nil
			end
		end
	}

返回索引 ##枪舞 相关武将:SP·星彩
描述:**出牌阶段限一次,**你可以进行判定,直到回合结束,你使用点数比结果小的【杀】无距离限制,且你使用的点数比结果大的【杀】不计入限制的使用次数。
引用:LuaQiangwu、LuaQiangwutarmod
状态:1217验证通过

	LuaQiangwucard = sgs.CreateSkillCard{
		name = "LuaQiangwu" ,
		target_fixed = true ,
		on_use = function(self, room, source)
			if source:getMark("LuaQiangwu") > 0 then
				room:askForUseCard(source, "Slash|.|"..(source:getMark("LuaQiangwu")+1).."~", "@LuaQiangwu", -1, sgs.Card_MethodUse, false)
			else
				local judge = sgs.JudgeStruct()
				judge.who = source
				judge.reason = "LuaQiangwu"
				judge.play_animation = false
				room:judge(judge)
			end
		end
	}
	LuaQiangwuvs = sgs.CreateZeroCardViewAsSkill{
		name = "LuaQiangwu" ,
		enabled_at_play = function(self, player)
			return not player:hasUsed("#LuaQiangwu") or player:getMark("LuaQiangwu") > 0
		end ,
		view_as = function()
			return LuaQiangwucard:clone()
		end
	}
	LuaQiangwu = sgs.CreateTriggerSkill{
		name = "LuaQiangwu" ,
		view_as_skill = LuaQiangwuvs ,
		events = {sgs.FinishJudge, sgs.EventPhaseStart, sgs.PreCardUsed},
		can_trigger = function(self, player)
			return player
		end ,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			if event == sgs.FinishJudge then
				local judge = data:toJudge()
				if judge.reason == "LuaQiangwu" then
					room:setPlayerMark(player, "LuaQiangwu", judge.card:getNumber())
				end
			elseif event == sgs.EventPhaseStart then
				if (player:getPhase() == sgs.Player_NotActive) and (player:getMark("LuaQiangwu") > 0) then
					room:setPlayerMark(player, "LuaQiangwu", 0)
				end
			elseif event == sgs.PreCardUsed then
				local use = data:toCardUse()
				if use.card and use.card:isKindOf("Slash") and (player:getMark("LuaQiangwu") > 0) 
						and (use.card:getNumber() > player:getMark("LuaQiangwu")) then
					if (use.m_addHistory) then
						room:addPlayerHistory(player, use.card:getClassName(), -1)
						use.m_addHistory = false
						data:setValue(use)
					end
				end
			end
			return false
		end ,
	}
	LuaQiangwutarmod = sgs.CreateTargetModSkill{
		name = "#LuaQiangwu-tarmod" ,
		distance_limit_func = function(self, player, card)
			local n = player:getMark("LuaQiangwu")
			if (n > 0) and (n > card:getNumber()) and (card:getNumber() ~= 0) then
				return 998
			end
			return 0
		end
	}

返回索引 ##巧变 相关武将:山·张郃
描述:除准备阶段和结束阶段的阶段开始前,你可以弃置一张手牌:若如此做,你跳过该阶段。若以此法跳过摸牌阶段,你可以依次获得一至两名其他角色的各一张手牌;若以此法跳过出牌阶段,你可以将场上的一张牌置于另一名角色相应的区域内。
引用:LuaQiaobian
状态:0405验证通过

	LuaQiaobianCard = sgs.CreateSkillCard{
		name = "LuaQiaobianCard",
		feasible = function(self, targets)
			local phase = sgs.Self:getMark("qiaobianPhase")
			if phase == sgs.Player_Draw then
				return #targets <= 2 and #targets > 0
			elseif phase == sgs.Player_Play then
				return #targets == 1
			end
			return false
		end,
		filter = function(self, targets, to_select)
			local phase = sgs.Self:getMark("qiaobianPhase")
			if phase == sgs.Player_Draw then
				return #targets < 2 and not to_select:isKongcheng() and to_select:objectName() ~= sgs.Self:objectName()
			elseif phase == sgs.Player_Play then
				return #targets == 0 and (to_select:getJudgingArea():length() > 0 or to_select:getEquips():length() > 0)
			end
			return false
		end,
		on_use = function(self, room, source, targets)
			local phase = source:getMark("qiaobianPhase")
			if phase == sgs.Player_Draw then
				if #targets == 0 then return end
				for _, target in pairs(targets)do
					if source:isAlive() and target:isAlive() then
						room:cardEffect(self, source, target)
					end
				end
			elseif phase == sgs.Player_Play then
				if #targets == 0 then return end
				local from = targets[1]
				if not from:hasEquip() and from:getJudgingArea():length() == 0 then return end
				local card_id = room:askForCardChosen(source, from, "ej", self:objectName())
				local card = sgs.Sanguosha:getCard(card_id)
				local place = room:getCardPlace(card_id)
				local equip_index = -1
				if place == sgs.Player_PlaceEquip then
					local equip = card:getRealCard():toEquipCard()
					equip_index = equip:location()
				end
				local tos = sgs.SPlayerList()
				local list = room:getAlivePlayers()
				for _, p in sgs.qlist(list) do
					if equip_index ~= -1 then
						if not p:getEquip(equip_index) then
							tos:append(p)
						end
					else
						if not source:isProhibited(p, card) and not p:containsTrick(card:objectName()) then
							tos:append(p)
						end
					end
				end
				local tag = sgs.QVariant()
				tag:setValue(from)
				room:setTag("QiaobianTarget", tag)
				local to = room:askForPlayerChosen(source, tos, self:objectName(), "@qiaobian-to" .. card:objectName())
				if to then
					room:moveCardTo(card, from, to, place, sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_TRANSFER, source:objectName(), self:objectName(), ""))
				end
				room:removeTag("QiaobianTarget")
			end
		end,
		on_effect = function(self, effect) 
			local room = effect.from:getRoom()
			if not effect.to:isKongcheng() then
				local card_id = room:askForCardChosen(effect.from, effect.to, "h", "LuaQiaobian")
				local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_EXTRACTION, effect.from:objectName())
				room:obtainCard(effect.from, sgs.Sanguosha:getCard(card_id), reason, false)
			end
		end,
	}
	LuaQiaobianVS = sgs.CreateZeroCardViewAsSkill{
		name = "LuaQiaobian",
		response_pattern = "@@LuaQiaobian",
		view_as = function(self, cards)
			return LuaQiaobianCard:clone()
		end
	}
	LuaQiaobian = sgs.CreateTriggerSkill{
		name = "LuaQiaobian",
		events = {sgs.EventPhaseChanging},
		view_as_skill = LuaQiaobianVS,
		can_trigger = function(self, target)
			return target and target:hasSkill(self:objectName()) and target:isAlive() and target:canDiscard(target, "h")
		end,
		on_trigger = function(self, event, player, data)
			local room = player:getRoom()
			local change = data:toPhaseChange()
			room:setPlayerMark(player, "qiaobianPhase", change.to)
			local index = 0
			if change.to == sgs.Player_Judge then
				index = 1
			elseif change.to == sgs.Player_Draw then
				index = 2
			elseif change.to == sgs.Player_Play then
				index = 3
			elseif change.to == sgs.Player_Discard then
				index = 4
			end
			local discard_prompt = string.format("#qiaobian-%d", index)
			local use_prompt = string.format("@qiaobian-%d", index)
			if index > 0 and room:askForDiscard(player, self:objectName(), 1, 1, true, false, discard_prompt) then
				if not player:isAlive() then return false end
				if not player:isSkipped(change.to) and (index == 2 or index == 3) then
					room:askForUseCard(player, "@@LuaQiaobian", use_prompt, index)
				end
				player:skip(change.to)
			end
			return false
		end
	}

返回索引 ##巧说 相关武将:一将成名2013·简雍
描述:出牌阶段开始时,你可以与一名角色拼点:若你赢,本回合你使用的下一张基本牌或非延时类锦囊牌可以增加一个额外目标(无距离限制)或减少一个目标(若原有多余一个目标);若你没赢,你不能使用锦囊牌,直到回合结束。
引用:LuaQiaoshui、LuaQiaoshuiTargetMod、LuaQiaoshuiUse
状态:1217验证通过

	---------------------Ex借刀杀人技能卡---------------------
	function targetsTable2QList(thetable)
		local theqlist = sgs.PlayerList()
		for _, p in ipairs(thetable) do
			theqlist:append(p)
		end
		return theqlist
	end
	LuaExtraCollateralCard = sgs.CreateSkillCard{
		name = "LuaExtraCollateralCard" ,
		filter = function(self, targets, to_select)
			local coll = sgs.Card_Parse(sgs.Self:property("extra_collateral"):toString())
			if (not coll) then return false end
			local tos = sgs.Self:property("extra_collateral_current_targets"):toString():split("+")
			if (#targets == 0) then
				return (not table.contains(tos, to_select:objectName())) 
						and (not sgs.Self:isProhibited(to_select, coll)) and coll:targetFilter(targetsTable2QList(targets), to_select, sgs.Self)
			else
				return coll:targetFilter(targetsTable2QList(targets), to_select, sgs.Self)
			end
		end ,
		about_to_use = function(self, room, cardUse)
			local killer = cardUse.to:first()
			local victim = cardUse.to:last()
			killer:setFlags("ExtraCollateralTarget")
			local _data = sgs.QVariant()
			_data:setValue(victim)
			killer:setTag("collateralVictim", _data)
		end
	}
	----------------------------------------------------------
	LuaQiaoshuiCard = sgs.CreateSkillCard{
		name = "LuaQiaoshuiCard" ,
		filter = function(self, targets, to_select)
			return (#targets == 0) and (not to_select:isKongcheng()) and (to_select:objectName() ~= sgs.Self:objectName())
		end ,
		on_use = function(self, room, source, targets)
			local success = source:pindian(targets[1], "LuaQiaoshui", nil)
			if (success) then
				source:setFlags("LuaQiaoshuiSuccess")
			else
				room:setPlayerCardLimitation(source, "use", "TrickCard", true)
			end
		end
	}
	LuaQiaoshuiVS = sgs.CreateZeroCardViewAsSkill{
		name = "LuaQiaoshui" ,
		enabled_at_play = function()
			return false
		end ,
		enabled_at_response = function(self, player, pattern)
			return string.find(pattern, "@@LuaQiaoshui")
		end ,
		view_as = function()
			local pattern = sgs.Sanguosha:getCurrentCardUsePattern()
			if string.find(pattern, "!") then
				return LuaExtraCollateralCard:clone()
			else
				return LuaQiaoshuiCard:clone()
			end
		end
	}
	LuaQiaoshui = sgs.CreatePhaseChangeSkill{
		name = "LuaQiaoshui" ,
		view_as_skill = LuaQiaoshuiVS ,
		on_phasechange = function(self, jianyong)
			if (jianyong:getPhase() == sgs.Player_Play) and (not jianyong:isKongcheng()) then
				local room = jianyong:getRoom()
				local can_invoke = false
				local other_players = room:getOtherPlayers(jianyong)
				for _, player in sgs.qlist(other_players) do
					if not player:isKongcheng() then
						can_invoke = true
						break
					end
				end
				if (can_invoke) then
					room:askForUseCard(jianyong, "@@LuaQiaoshui", "@qiaoshui-card", 1)
				end
			end
			return false
		end ,
	}
	LuaQiaoshuiUse = sgs.CreateTriggerSkill{
		name = "#LuaQiaoshui-use" ,
		events = {sgs.PreCardUsed} ,
		on_trigger = function(self, event, jianyong, data)
			if not jianyong:hasFlag("LuaQiaoshuiSuccess") then return false end
			local use = data:toCardUse()
			if (use.card:isNDTrick() or use.card:isKindOf("BasicCard")) then
				local room = jianyong:getRoom()
				jianyong:setFlags("-LuaQiaoshuiSuccess")
				if (sgs.Sanguosha:getCurrentCardUseReason() ~= sgs.CardUseStruct_CARD_USE_REASON_PLAY) then return false end
				local available_targets = sgs.SPlayerList()
				if (not use.card:isKindOf("AOE")) and (not use.card:isKindOf("GlobalEffect")) then
					room:setPlayerFlag(jianyong, "LuaQiaoshuiExtraTarget")
					for _, p in sgs.qlist(room:getAlivePlayers()) do
						if (use.to:contains(p) or room:isProhibited(jianyong, p, use.card)) then continue end
						if (use.card:targetFixed()) then
							if (not use.card:isKindOf("Peach")) or (p:isWounded()) then
								available_targets:append(p)
							end
						else
							if (use.card:targetFilter(sgs.PlayerList(), p, jianyong)) then
								available_targets:append(p)
							end
						end
					end
					room:setPlayerFlag(jianyong, "-LuaQiaoshuiExtraTarget")
				end
				local choices = {}
				table.insert(choices, "cancel")
				if (use.to:length() > 1) then table.insert(choices, 1, "remove") end
				if (not available_targets:isEmpty()) then table.insert(choices, 1, "add") end
				if #choices == 1 then return false end
				local choice = room:askForChoice(jianyong, "LuaQiaoshui", table.concat(choices, "+"), data)
				if (choice == "cancel") then
					return false
				elseif choice == "add" then
					local extra = nil
					if not use.card:isKindOf("Collateral") then
						extra = room:askForPlayerChosen(jianyong, available_targets, "LuaQiaoshui", "@qiaoshui-add:::" .. use.card:objectName())
					else
						local tos = {}
						for _, t in sgs.qlist(use.to) do
							table.insert(tos, t:objectName())
						end
						room:setPlayerProperty(jianyong, "extra_collateral", sgs.QVariant(use.card:toString()))
						room:setPlayerProperty(jianyong, "extra_collateral_current_targets", sgs.QVariant(table.concat(tos, "+")))
						room:askForUseCard(jianyong, "@@LuaQiaoshui!", "@qiaoshui-add:::collateral")
						room:setPlayerProperty(jianyong, "extra_collateral", sgs.QVariant(""))
						room:setPlayerProperty(jianyong, "extra_collateral_current_targets", sgs.QVariant("+"))
						for _, p in sgs.qlist(room:getOtherPlayers(jianyong)) do
							if p:hasFlag("ExtraCollateralTarget") then
								p:setFlags("-ExtraCollateralTarget")
								extra = p
								break
							end
						end
						if (extra == nil) then
							extra = available_targets:at(math.random(available_targets:length()) - 1)
							local victims = sgs.SPlayerList()
							for _, p in sgs.qlist(room:getOtherPlayers(extra)) do
								if (extra:canSlash(p) and not (p:objectName() == jianyong:objectName() and p:hasSkill("kongcheng") and p:isLastHandCard(use.card, true))) then
									victims:append(p)
								end
							end
							assert(not victims:isEmpty())
							local _data = sgs.QVariant()
							_data:setValue(victims:at(math.random(victims:length()) - 1))
							extra:setTag("collateralVictim", _data)
						end
					end
					use.to:append(extra)
					room:sortByActionOrder(use.to)
				else
					local removed = room:askForPlayerChosen(jianyong, use.to, "LuaQiaoshui", "@qiaoshui-remove:::" .. use.card:objectName())
					use.to:removeOne(removed)
				end
			end
			data:setValue(use)
			return false
		end ,
	}
	LuaQiaoshuiTargetMod = sgs.CreateTargetModSkill{
		name = "#LuaQiaoshui-target" ,
		pattern = "Slash,TrickCard+^DelayedTrick" ,
		distance_limit_func = function(self, from)
			if (from:hasFlag("LuaQiaoshuiExtraTarget")) then
				return 1000
			end
			return 0
		end
	}

返回索引 ##琴音 相关武将:神·周瑜
描述:弃牌阶段结束时,若你于本阶段内弃置了至少两张你的牌,你可以选择一项:令所有角色各回复1点体力,或令所有角色各失去1点体力。
引用:LuaQinyin
状态:0405验证通过

	LuaQinyin = sgs.CreateTriggerSkill{
		name = "LuaQinyin" ,
		events = {sgs.CardsMoveOneTime, sgs.EventPhaseEnd, sgs.EventPhaseChanging} ,
		can_trigger = function(self, target)
			return target ~= nil
		end ,
		on_trigger = function(self, event, shenzhouyu, data)
			local room = shenzhouyu:getRoom()
			if event == sgs.CardsMoveOneTime then
				local move = data:toMoveOneTime()
				if shenzhouyu:getPhase() == sgs.Player_Discard and move.from and move.from:objectName() == shenzhouyu:objectName()  and (bit32.band(move.reason.m_reason, sgs.CardMoveReason_S_MASK_BASIC_REASON) == sgs.CardMoveReason_S_REASON_DISCARD) then
					shenzhouyu:addMark("qinyin", move.card_ids:length())
				end
			elseif event == sgs.EventPhaseEnd and shenzhouyu:getPhase() == sgs.Player_Discard and shenzhouyu:getMark("qinyin") >= 2 then
				local choices = {"down+cancel"}
				local all_players = room:getAllPlayers()
				for _, player in sgs.qlist(all_players) do
					if player:isWounded() then
						table.insert(choices, "up")
						break
					end
				end
				local result = room:askForChoice(shenzhouyu, self:objectName(), table.concat(choices, "+"))
				if result == "cancel" then
					return
				else
					room:notifySkillInvoked(shenzhouyu, "qinyin")
					if result == "up" then
						for _, player in sgs.qlist(all_players) do
							room:recover(player, sgs.RecoverStruct(shenzhouyu))
						end
					elseif result == "down" then
						for _, player in sgs.qlist(all_players) do
							room:loseHp(player)
						end
					end
				end
			elseif event == sgs.EventPhaseChanging then
				shenzhouyu:setMark("qinyin", 0)
			end
			return false
		end
	}

返回索引 ##青囊 相关武将:标准·华佗
描述: 出牌阶段限一次,你可以弃置一张手牌并选择一名已受伤的角色,令该角色回复1点体力。
引用:LuaQingnang
状态:1217验证通过

	LuaQingnangCard = sgs.CreateSkillCard{
		name = "LuaQingnangCard",
		target_fixed = false,
		will_throw = true,
		filter = function(self, targets, to_select)
			return (#targets == 0) and (to_select:isWounded())
		end,
		feasible = function(self, targets)
			if #targets == 1 then
				return targets[1]:isWounded()
			end
			return #targets == 0 and sgs.Self:isWounded()
		end,
		on_use = function(self, room, source, targets)
			local target = targets[1] or source
			local effect = sgs.CardEffectStruct()
			effect.card = self
			effect.from = source
			effect.to = target
			room:cardEffect(effect)
		end,
		on_effect = function(self, effect)
			local dest = effect.to
			local room = dest:getRoom()
			local recover = sgs.RecoverStruct()
			recover.card = self
			recover.who = effect.from
			room:recover(dest, recover)
		end
	}
	LuaQingnang = sgs.CreateOneCardViewAsSkill{
		name = "LuaQingnang", 
		filter_pattern = ".|.|.|hand!",
		view_as = function(self, card) 
			local qnc = LuaQingnangCard:clone()
			qnc:addSubcard(card)
			qnc:setSkillName(self:objectName())
			return qnc
		end, 
		enabled_at_play = function(self, player)
			return player:canDiscard(player, "h") and not player:hasUsed("#LuaQingnangCard")
		end, 
	}

返回索引 ##倾城 相关武将:国战·邹氏
描述:出牌阶段,你可以弃置一张装备牌,令一名其他角色的一项武将技能无效,直到其下回合开始。
引用:LuaQingcheng
状态:1217验证通过

	local json = require ("json")
	LuaQingchengCard = sgs.CreateSkillCard{
		name = "LuaQingchengCard", 
		target_fixed = false,
		will_throw = true,
		filter = function(self, targets, to_select) 
			return #targets == 0 and to_select:objectName() ~= sgs.Self:objectName()
		end,
		about_to_use = function(self,room,card_use)
			local player,to = card_use.from,card_use.to:first()
			local log = sgs.LogMessage()
			log.from = player
			log.to = card_use.to
			log.type = "#UseCard"
			log.card_str = card_use.card:toString()
			room:sendLog(log)
			local skill_list = {}
			local Qingchenglist = to:getTag("Qingcheng"):toString():split("+") or {}
			for _,skill in sgs.qlist(to:getVisibleSkillList()) do
				if (not table.contains(skill_list,skill:objectName())) and not skill:isAttachedLordSkill() then
					table.insert(skill_list,skill:objectName())
				end
			end
			table.removeTable(skill_list,Qingchenglist)
			local skill_qc = ""
			if (#skill_list > 0) then
				skill_qc = room:askForChoice(player, "LuaQingcheng", table.concat(skill_list,"+"))
			end
			if (skill_qc ~= "") then
				table.insert(Qingchenglist,skill_qc)
				to:setTag("Qingcheng",sgs.QVariant(table.concat(Qingchenglist,"+")))
				room:addPlayerMark(to, "Qingcheng" .. skill_qc)
				for _,p in sgs.qlist(room:getAllPlayers())do
					room:filterCards(p, p:getCards("he"), true)
				end
				local jsonValue = {
					8
				}
				room:doBroadcastNotify(sgs.CommandType.S_COMMAND_LOG_EVENT, json.encode(jsonValue))
			end
			local data = sgs.QVariant()
			data:setValue(card_use)
			local thread = room:getThread()
			thread:trigger(sgs.PreCardUsed, room, player, data)
			card_use = data:toCardUse()
			local reason = sgs.CardMoveReason(sgs.CardMoveReason_S_REASON_THROW, player:objectName(), "", card_use.card:getSkillName(), "")
			room:moveCardTo(self, player, nil, sgs.Player_DiscardPile, reason, true)
			thread:trigger(sgs.CardUsed, room, player, data)
			thread:trigger(sgs.CardFinished, room, player, data)
		end,
	}
	LuaQingchengVs = sgs.CreateOneCardViewAsSkill{
		name = "LuaQingcheng", 
		filter_pattern = "EquipCard",
		view_as = function(self, card) 
			local qcc = LuaQingchengCard:clone()
			qcc:addSubcard(card)
			qcc:setSkillName(self:objectName())
			return qcc
		end, 
		enabled_at_play = function(self, player)
			return player:canDiscard(player, "he")
		end, 
	}
	LuaQingcheng = sgs.CreateTriggerSkill{
		name = "LuaQingcheng", 
		events = {sgs.EventPhaseStart},
		view_as_skill = LuaQingchengVs,
		on_trigger = function(self, event, player, data)
			if player:getPhase() == sgs.Player_RoundStart then
				local room = player:getRoom()
				local Qingchenglist = player:getTag("Qingcheng"):toString():split("+")
				if #Qingchenglist == 0 then return false end
				for _,skill_name in pairs(Qingchenglist)do
					room:setPlayerMark(player, "Qingcheng" .. skill_name, 0);
				end
				player:removeTag("Qingcheng")
				for _,p in sgs.qlist(room:getAllPlayers())do
					room:filterCards(p, p:getCards("he"), true)
				end
				local jsonValue = {
					8
				}
				room:doBroadcastNotify(sgs.CommandType.S_COMMAND_LOG_EVENT, json.encode(jsonValue))
			end
			return false
		end,
		can_trigger = function(self, target)
			return target
		end,
		priority = 6
	}

返回索引 ##倾国 相关武将:标准·甄姬、SP·甄姬、SP·台版甄姬
描述:你可以将一张黑色手牌当【闪】使用或打出。
引用:LuaQingguo
状态:0405验证通过

	LuaQingguo = sgs.CreateOneCardViewAsSkill{
		name = "LuaQingguo", 
		response_pattern = "jink",
		filter_pattern = ".|black|.|hand",
		response_or_use = true,
		view_as = function(self, card) 
			local jink = sgs.Sanguosha:cloneCard("jink",card:getSuit(),card:getNumber())
			jink:setSkillName(self:objectName())
			jink:addSubcard(card:getId())
			return jink
		end
	}

返回索引 ##倾国-1V1 相关武将:1v1·甄姬1v1
描述:你可以将一张装备区的牌当【闪】使用或打出。
引用:LuaKOFQingguo
状态:0405验证通过

	LuaKOFQingguo = sgs.CreateOneCardViewAsSkill{
		name = "LuaKOFQingguo", 
		filter_pattern = ".|.|.|equipped",
		view_as = function(self, card) 
			local jink = sgs.Sanguosha:cloneCard("jink",card:getSuit(),card:getNumber())
			jink:setSkillName(self:objectName());
			jink:addSubcard(card:getId());
			return jink
		end,
		enabled_at_play = function(self, target)
			return false
		end,
		enabled_at_response = function(self, target, pattern)
			return pattern == "jink" and target:getEquips():length() > 0
		end
	}

返回索引 ##清俭 相关武将:界限突破·夏侯惇 描述:每当你于摸牌阶段外获得手牌后,你可以将其中至少一张牌任意分配给其他角色。
引用:LuaQingjian
状态:0405验证通过

	LuaQingjian = sgs.CreateTriggerSkill{
		name = "LuaQingjian",
		events = {sgs.CardsMoveOneTime},
		on_trigger = function(self, event, player, data)
			local move = data:toMoveOneTime()
			local room = player:getRoom()
			if not room:getTag("FirstRound"):toBool() and player:getPhase() ~= sgs.Player_Draw and move.to and move.to:objectName() == player:objectName() then
				local ids = sgs.IntList()
				for _,id in sgs.qlist(move.card_ids) do
					if room:getCardOwner(id) == player and room:getCardPlace(id) == sgs.Player_PlaceHand then
						ids:append(id)
					end
				end
				if ids:isEmpty() then return false end
				player:setTag("QingjianCurrentMoveSkill", sgs.QVariant(move.reason.m_skillName))
				while room:askForYiji(player, ids, self:objectName(), false, false, true, -1, sgs.SPlayerList(), sgs.CardMoveReason(), "@LuaQingjian-distribute", true) do
					if player:isDead() then return false end
				end
			end
			return false
		end
	}

返回索引 ##求援 相关武将:一将成名2013·伏皇后
描述:每当你成为【杀】的目标时,你可以令一名除此【杀】使用者外的有手牌的其他角色正面朝上交给你一张手牌。若此牌不为【闪】,该角色也成为此【杀】的目标。
引用:LuaQiuyuan
状态:1217验证通过

	LuaQiuyuan = sgs.CreateTriggerSkill{
		name = "LuaQiuyuan" ,
		events = {sgs.TargetConfirming} ,
		on_trigger = function(self, event, player, data)
			local use = data:toCardUse()
			if use.card:isKindOf("Slash") then
				local room = player:getRoom()
				local targets = sgs.SPlayerList()
				for _, p in sgs.qlist(room:getOtherPlayers(player)) do
					if (not p:isKongcheng()) and (p:objectName() ~= use.from:objectName()) then
						targets:append(p)
					end
				end
				if targets:isEmpty() then return false end
				local target = room:askForPlayerChosen(player, targets, self:objectName(), "qiuyuan-invoke", true, true)
				if target then
					local card = nil
					if target:getHandcardNum() > 1 then
						card = room:askForCard(target, ".!", "@qiuyuan-give:" .. player:objectName(), data, sgs.Card_MethodNone)
						if not card then
							card = target:getHandcards():at(math.random(0, target:getHandcardNum() - 1))
						end
					else
						card = target:getHandcards():first()
					end
					player:obtainCard(card)
					room:showCard(player, card:getEffectiveId())
					if not card:isKindOf("Jink") then
						if use.from:canSlash(target, use.card, false) then
							use.to:append(target)
							room:sortByActionOrder(use.to)
							data:setValue(use)
							room:getThread():trigger(sgs.TargetConfirming, room, target, data)
						end
					end
				end
			end
			return false
		end
	}

返回索引 ##驱虎 相关武将:火·荀彧
描述:出牌阶段限一次,你可以与一名当前的体力值大于你的角色拼点:若你赢,其对其攻击范围内你选择的另一名角色造成1点伤害。若你没赢,其对你造成1点伤害。
引用:LuaQuhu
状态:1217验证通过

	LuaQuhuCard = sgs.CreateSkillCard{
		name = "LuaQuhuCard",
		target_fixed = false,
		will_throw = false,
		filter = function(self, targets, to_select)
			return (#targets == 0) and (to_select:getHp() > sgs.Self:getHp()) and (not to_select:isKongcheng())
		end,
		on_use = function(self, room, source, targets)
			local tiger = targets[1]
			local success = source:pindian(tiger, self:objectName(), nil)
			if success then
				local players = room:getOtherPlayers(tiger)
				local wolves = sgs.SPlayerList()
				for _,player in sgs.qlist(players) do
					if tiger:inMyAttackRange(player) then
						wolves:append(player)
					end
				end
				if wolves:isEmpty() then
					return
				end
				local wolf = room:askForPlayerChosen(source, wolves, self:objectName(), "@quhu-damage:" .. tiger:objectName())
				room:damage(sgs.DamageStruct(self:objectName(), tiger, wolf))
			else
				room:damage(sgs.DamageStruct(self:objectName(), tiger, source))
			end
		end
	}
	LuaQuhu = sgs.CreateZeroCardViewAsSkill{
		name = "LuaQuhu",
		view_as = function(self, cards) 
			return LuaQuhuCard:clone()
		end, 
		enabled_at_play = function(self, player)
			return (not player:hasUsed("#LuaQuhuCard")) and not player:isKongcheng()
		end, 
	}

返回索引 ##权计 相关武将:一将成名·钟会
描述:每当你受到1点伤害后,你可以摸一张牌,然后将一张手牌置于武将牌上,称为“权”。每有一张“权”,你的手牌上限+1。
引用:LuaQuanji、LuaQuanjiKeep
状态:0405验证通过

	LuaQuanji = sgs.CreateMasochismSkill{
		name = "LuaQuanji",
		frequency = sgs.Skill_Frequent,
		on_damaged = function(self, player, damage)
			local room = player:getRoom()
			local x = damage.damage
			for i = 0, x - 1, 1 do
				if player:askForSkillInvoke(self:objectName()) then
					room:drawCards(player, 1, self:objectName())
					if not player:isKongcheng() then
						local card_id = sgs.Sanguosha:cloneCard("slash", sgs.Card_NoSuit, 0)
						if player:getHandcardNum() == 1 then
							card_id = player:handCards():first()
							room:getThread():delay()
						else
							card_id = room:askForExchange(player, self:objectName(), 1, 1, false, "QuanjiPush"):getSubcards():first()
						end
						player:addToPile("power", card_id)
					end
				end
			end
		end
	}
	LuaQuanjiKeep = sgs.CreateMaxCardsSkill{
		name = "#LuaQuanji-keep",
		frequency = sgs.Skill_Frequent,
		extra_func = function(self, target)
			if target:hasSkill(self:objectName()) then
				return target:getPile("power"):length()
			else
				return 0
			end
		end
	}

返回索引