Commit 59246c1a authored by POLYMER's avatar POLYMER

fix

parent 3408ad9f
...@@ -18,7 +18,7 @@ function s.initial_effect(c) ...@@ -18,7 +18,7 @@ function s.initial_effect(c)
e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND) e2:SetCategory(CATEGORY_SEARCH+CATEGORY_TOHAND)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetCode(EVENT_SPSUMMON_SUCCESS)
e2:SetProperty(EFFECT_FLAG_DELAY) e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
e2:SetCountLimit(1,id) e2:SetCountLimit(1,id)
e2:SetTarget(s.thtg) e2:SetTarget(s.thtg)
e2:SetOperation(s.thop) e2:SetOperation(s.thop)
......
...@@ -6,24 +6,34 @@ function s.initial_effect(c) ...@@ -6,24 +6,34 @@ function s.initial_effect(c)
e1:SetCategory(CATEGORY_TOGRAVE + CATEGORY_SEARCH + CATEGORY_TOHAND + CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_TOGRAVE + CATEGORY_SEARCH + CATEGORY_TOHAND + CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH) e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH) -- 卡名一回合只能发动1张
e1:SetCost(s.cost) -- 添加cost函数
e1:SetTarget(s.target) e1:SetTarget(s.target)
e1:SetOperation(s.activate) e1:SetOperation(s.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--atkup
local e2=Effect.CreateEffect(c) -- 墓地存在时攻击力上升
e2:SetType(EFFECT_TYPE_FIELD) local e2=Effect.CreateEffect(c)
e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetType(EFFECT_TYPE_FIELD)
e2:SetRange(LOCATION_GRAVE) e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetTargetRange(LOCATION_MZONE,0) e2:SetRange(LOCATION_GRAVE)
e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1b)) e2:SetTargetRange(LOCATION_MZONE,0)
e2:SetValue(300) e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1b))
c:RegisterEffect(e2) e2:SetValue(300)
c:RegisterEffect(e2)
end end
-- 定义幻兽十字翼鸟的卡号 -- 定义幻兽十字翼鸟的卡号
s.crosswing_id = 71181155 s.crosswing_id = 71181155
-- 添加cost函数:将「幻兽 十字翼鸟」送墓作为cost
function s.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.tgfilter,tp,LOCATION_DECK,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,s.tgfilter,tp,LOCATION_DECK,0,1,1,nil)
Duel.SendtoGrave(g,REASON_COST)
end
-- 卡组送墓目标 -- 卡组送墓目标
function s.tgfilter(c) function s.tgfilter(c)
return c:IsCode(s.crosswing_id) and c:IsAbleToGrave() return c:IsCode(s.crosswing_id) and c:IsAbleToGrave()
...@@ -43,28 +53,21 @@ end ...@@ -43,28 +53,21 @@ end
-- 效果目标 -- 效果目标
function s.target(e,tp,eg,ep,ev,re,r,rp,chk) function s.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk == 0 then if chk == 0 then
return Duel.IsExistingMatchingCard(s.tgfilter, tp, LOCATION_DECK, 0, 1, nil) return Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_DECK, 0, 1, nil)
and Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_DECK, 0, 1, nil)
end end
Duel.SetOperationInfo(0, CATEGORY_TOGRAVE, nil, 1, tp, LOCATION_DECK)
Duel.SetOperationInfo(0, CATEGORY_TOHAND, nil, 1, tp, LOCATION_DECK) Duel.SetOperationInfo(0, CATEGORY_TOHAND, nil, 1, tp, LOCATION_DECK)
end end
-- 效果处理 -- 效果处理
function s.activate(e,tp,eg,ep,ev,re,r,rp) function s.activate(e,tp,eg,ep,ev,re,r,rp)
-- 步骤1:从卡组送墓「幻兽 十字翼鸟」 -- 步骤1:从卡组检索「幻兽」怪兽
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
local g1 = Duel.SelectMatchingCard(tp, s.tgfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
if #g1 == 0 or Duel.SendtoGrave(g1, REASON_EFFECT) == 0 then return end
-- 步骤2:从卡组检索「幻兽」怪兽
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
local g2 = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_DECK, 0, 1, 1, nil) local g2 = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
if #g2 > 0 and Duel.SendtoHand(g2, nil, REASON_EFFECT) > 0 then if #g2 > 0 and Duel.SendtoHand(g2, nil, REASON_EFFECT) > 0 then
Duel.ConfirmCards(1-tp, g2) Duel.ConfirmCards(1-tp, g2)
Duel.ShuffleHand(tp) Duel.ShuffleHand(tp)
-- 步骤3:可选特殊召唤墓地兽族/兽战士族怪兽 -- 步骤2:可选特殊召唤墓地兽族/兽战士族怪兽
local g3 = Duel.GetMatchingGroup(aux.NecroValleyFilter(s.spfilter), tp, LOCATION_GRAVE, 0, nil, e, tp) local g3 = Duel.GetMatchingGroup(aux.NecroValleyFilter(s.spfilter), tp, LOCATION_GRAVE, 0, nil, e, tp)
if #g3 > 0 and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 if #g3 > 0 and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0
and Duel.SelectYesNo(tp, aux.Stringid(id, 1)) then and Duel.SelectYesNo(tp, aux.Stringid(id, 1)) then
......
...@@ -41,7 +41,8 @@ function s.initial_effect(c) ...@@ -41,7 +41,8 @@ function s.initial_effect(c)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function s.atlimit(e,c) function s.atlimit(e,c)
return c:GetSpecialSummonInfo(SUMMON_INFO_REASON_EFFECT)~=nil and not c:IsImmuneToEffect(e) local se=c:GetSpecialSummonInfo(SUMMON_INFO_REASON_EFFECT)
return se and se:IsHasType(EFFECT_TYPE_ACTIONS) and not c:IsImmuneToEffect(e)
end end
function s.efilter(e,te) function s.efilter(e,te)
return te:GetOwner():GetSpecialSummonInfo(SUMMON_INFO_REASON_EFFECT)~=nil return te:GetOwner():GetSpecialSummonInfo(SUMMON_INFO_REASON_EFFECT)~=nil
...@@ -50,13 +51,23 @@ function s.qcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -50,13 +51,23 @@ function s.qcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return Duel.IsPlayerAffectedByEffect(tp,89490011)~=nil and c:IsOriginalSetCard(0xc30) and c:IsLocation(LOCATION_MZONE) and c:IsType(TYPE_MONSTER) return Duel.IsPlayerAffectedByEffect(tp,89490011)~=nil and c:IsOriginalSetCard(0xc30) and c:IsLocation(LOCATION_MZONE) and c:IsType(TYPE_MONSTER)
end end
function s.costfilter(c) function s.costfilter(c,tp)
return c:IsRace(RACE_WYRM) and c:IsAttribute(ATTRIBUTE_FIRE) return c:IsReleasable() and (c:IsControler(tp) and c:IsRace(RACE_WYRM) and c:IsAttribute(ATTRIBUTE_FIRE) or c:IsControler(1-tp) and c:IsFaceup())
end
function s.fselect(g,tp,fe)
local ct=fe and 1 or 0
return g:FilterCount(Card.IsControler,nil,1-tp)<=ct
end end
function s.rcost(e,tp,eg,ep,ev,re,r,rp,chk) function s.rcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,s.costfilter,1,e:GetHandler()) end local rlg=Duel.GetMatchingGroup(s.costfilter,tp,LOCATION_MZONE,LOCATION_MZONE,e:GetHandler(),tp)
local fe=Duel.IsPlayerAffectedByEffect(tp,89490080)
if chk==0 then return rlg:CheckSubGroup(s.fselect,1,#rlg,tp,fe) end
local ct=Duel.GetFieldGroup(tp,0,LOCATION_HAND):FilterCount(Card.IsAbleToRemove,nil) local ct=Duel.GetFieldGroup(tp,0,LOCATION_HAND):FilterCount(Card.IsAbleToRemove,nil)
local g=Duel.SelectReleaseGroup(tp,s.costfilter,1,ct,e:GetHandler()) local g=rlg:SelectSubGroup(tp,s.fselect,false,1,ct,tp,fe)
if g:IsExists(Card.IsControler,1,nil,1-tp) then
Duel.Hint(HINT_CARD,0,89490080)
fe:UseCountLimit(tp)
end
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
e:SetLabel(#g) e:SetLabel(#g)
if g:IsExists(Card.IsSetCard,1,nil,0xc30) then if g:IsExists(Card.IsSetCard,1,nil,0xc30) then
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment