各位大神好,我修改了一个“奉印”技能,添加了1点伤害,并且去掉了“目标体力大于你”的限制,代码如下,人手发动技能一切正常:
LuaFengyinCard = sgs.CreateSkillCard{
name = "LuaFengyinCard" ,
target_fixed = true ,
will_throw = false,
handling_method = sgs.Card_MethodNone ,
on_use = function(self, room, source, targets)
local target = room:getCurrent()
target:obtainCard(self)
local thedamage = sgs.DamageStruct()
thedamage.from = source
thedamage.to= target
thedamage.damage=1
thedamage.nature = sgs.DamageStruct_Normal
room:damage(thedamage)
room:setPlayerFlag(target, "LuaFengyin_target")
end
}
LuaFengyinVS = sgs.CreateViewAsSkill{
name = "LuaFengyin" ,
n = 1 ,
view_filter = function(self, selected, to_select)
return (#selected == 0) and to_select:isKindOf("Slash")
end ,
view_as = function(self, cards)
if #cards ~= 1 then return nil end
local card = LuaFengyinCard:clone()
card:addSubcard(cards[1])
return card
end ,
enabled_at_play = function()
return false
end ,
enabled_at_response = function(self, player, pattern)
return pattern == "@@LuaFengyin"
end
}
LuaFengyin = sgs.CreateTriggerSkill{
name = "LuaFengyin" ,
events = {sgs.EventPhaseChanging, sgs.EventPhaseStart} ,
view_as_skill = LuaFengyinVS ,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
local splayer = room:findPlayerBySkillName(self:objectName())
if not splayer or splayer:objectName() == player:objectName() then return false end
if (event == sgs.EventPhaseChanging) and (data:toPhaseChange().to == sgs.Player_Start) then
room:askForUseCard(splayer, "@@LuaFengyin", "@fengyin-test", -1, sgs.Card_MethodNone)
end
if (event == sgs.EventPhaseStart) and player:hasFlag("LuaFengyin_target") then
player:skip(sgs.Player_Play)
player:skip(sgs.Player_Discard)
end
return false
end ,
can_trigger = function(self, target)
return target
end ,
}
然后根据原版奉印的代码,改出了一个AI,条件是只要伏完手中有杀,而且目标是敌人就发动:
sgs.ai_skill_cardask["@fengyin-test"] = function(self, data)
local cards = self.player:getHandcards()
local card
cards = sgs.QList2Table(cards)
for _,acard in ipairs(cards) do
if acard:isKindOf("Slash") then
card = acard
break
end
end
if not card then
return "."
end
local target = self.room:getCurrent()
local card_id = card:getEffectiveId()
if self:isEnemy(target) then
return "$" .. card_id
end
return "."
end
但实测AI在满足发动条件时,仍不会发动技能,请大神帮忙看看是哪里出错,谢谢!
LuaFengyinCard = sgs.CreateSkillCard{
name = "LuaFengyinCard" ,
target_fixed = true ,
will_throw = false,
handling_method = sgs.Card_MethodNone ,
on_use = function(self, room, source, targets)
local target = room:getCurrent()
target:obtainCard(self)
local thedamage = sgs.DamageStruct()
thedamage.from = source
thedamage.to= target
thedamage.damage=1
thedamage.nature = sgs.DamageStruct_Normal
room:damage(thedamage)
room:setPlayerFlag(target, "LuaFengyin_target")
end
}
LuaFengyinVS = sgs.CreateViewAsSkill{
name = "LuaFengyin" ,
n = 1 ,
view_filter = function(self, selected, to_select)
return (#selected == 0) and to_select:isKindOf("Slash")
end ,
view_as = function(self, cards)
if #cards ~= 1 then return nil end
local card = LuaFengyinCard:clone()
card:addSubcard(cards[1])
return card
end ,
enabled_at_play = function()
return false
end ,
enabled_at_response = function(self, player, pattern)
return pattern == "@@LuaFengyin"
end
}
LuaFengyin = sgs.CreateTriggerSkill{
name = "LuaFengyin" ,
events = {sgs.EventPhaseChanging, sgs.EventPhaseStart} ,
view_as_skill = LuaFengyinVS ,
on_trigger = function(self, event, player, data)
local room = player:getRoom()
local splayer = room:findPlayerBySkillName(self:objectName())
if not splayer or splayer:objectName() == player:objectName() then return false end
if (event == sgs.EventPhaseChanging) and (data:toPhaseChange().to == sgs.Player_Start) then
room:askForUseCard(splayer, "@@LuaFengyin", "@fengyin-test", -1, sgs.Card_MethodNone)
end
if (event == sgs.EventPhaseStart) and player:hasFlag("LuaFengyin_target") then
player:skip(sgs.Player_Play)
player:skip(sgs.Player_Discard)
end
return false
end ,
can_trigger = function(self, target)
return target
end ,
}
然后根据原版奉印的代码,改出了一个AI,条件是只要伏完手中有杀,而且目标是敌人就发动:
sgs.ai_skill_cardask["@fengyin-test"] = function(self, data)
local cards = self.player:getHandcards()
local card
cards = sgs.QList2Table(cards)
for _,acard in ipairs(cards) do
if acard:isKindOf("Slash") then
card = acard
break
end
end
if not card then
return "."
end
local target = self.room:getCurrent()
local card_id = card:getEffectiveId()
if self:isEnemy(target) then
return "$" .. card_id
end
return "."
end
但实测AI在满足发动条件时,仍不会发动技能,请大神帮忙看看是哪里出错,谢谢!