Commit 30f618eb authored by POLYMER's avatar POLYMER

fix

parent 907fae4a
No preview for this file type
--磁石战士Σ-
function c12262394.initial_effect(c)
--to grave
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(12262394,0))
e1:SetCategory(CATEGORY_TOGRAVE)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetCountLimit(1,12262394)
e1:SetTarget(c12262394.tgtg)
e1:SetOperation(c12262394.tgop)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e2)
--special summon
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(12262394,1))
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_GRAVE)
e3:SetCountLimit(1,12262395)
e3:SetCost(c12262394.spcost)
e3:SetTarget(c12262394.sptg)
e3:SetOperation(c12262394.spop)
c:RegisterEffect(e3)
end
function c12262394.tgfilter(c)
return (c:IsSetCard(0x2066) or c:IsSetCard(0xe9)) and c:IsAbleToHand()
end
function c12262394.tgtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local dg=Duel.GetMatchingGroup(c12262394.tgfilter,tp,LOCATION_DECK,0,nil)
return dg:GetClassCount(Card.GetCode)>=3
end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end
function c12262394.tgop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(c12262394.tgfilter,tp,LOCATION_DECK,0,nil)
if g:GetClassCount(Card.GetCode)>=3 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local sg1=g:Select(tp,1,1,nil)
g:Remove(Card.IsCode,nil,sg1:GetFirst():GetCode())
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local sg2=g:Select(tp,1,1,nil)
g:Remove(Card.IsCode,nil,sg2:GetFirst():GetCode())
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local sg3=g:Select(tp,1,1,nil)
sg1:Merge(sg2)
sg1:Merge(sg3)
Duel.ConfirmCards(1-tp,sg1)
Duel.ShuffleDeck(tp)
Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_ATOHAND)
local cg=sg1:Select(1-tp,1,1,nil)
local tc=cg:GetFirst()
Duel.SendtoHand(tc,nil,REASON_EFFECT)
sg1:RemoveCard(tc)
Duel.SendtoGrave(sg1,REASON_EFFECT)
end
end
function c12262394.spfilter(c,tp)
return (c:IsSetCard(0x2066) or c:IsSetCard(0xe9)) and c:IsType(TYPE_MONSTER) and Duel.GetMZoneCount(tp,c)>0
end
function c12262394.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,c12262394.spfilter,1,nil,tp) end
local g=Duel.SelectReleaseGroup(tp,c12262394.spfilter,1,1,nil,tp)
Duel.Release(g,REASON_COST)
end
function c12262394.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function c12262394.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) then
Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)
end
end
--磁石战士Σ+
function c12262395.initial_effect(c)
--to grave
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(12262395,0))
e1:SetCategory(CATEGORY_TOGRAVE)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetCountLimit(1,12262397)
e1:SetOperation(c12262395.effop)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e2)
--special summon
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(12262395,1))
e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_GRAVE)
e3:SetCountLimit(1,12262396)
e3:SetTarget(c12262395.sptg)
e3:SetOperation(c12262395.spop)
c:RegisterEffect(e3)
end
function c12262395.filter(c)
return c:IsFaceup() and c:IsRace(RACE_ROCK)
end
function c12262395.effop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=Duel.GetMatchingGroup(c12262395.filter,tp,LOCATION_MZONE,0,nil)
local tc=g:GetFirst()
while tc do
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetValue(1)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,2)
tc:RegisterEffect(e1)
tc=g:GetNext()
end
end
function c12262395.tdfilter(c)
return c:IsFaceup() and (c:IsSetCard(0x2066) or c:IsSetCard(0xe9))
end
function c12262395.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c12262395.tdfilter(chkc) end
local c=e:GetHandler()
if chk==0 then return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE) and Duel.IsExistingTarget(c12262395.tdfilter,tp,LOCATION_REMOVED,0,3,nil) end
Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription())
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectTarget(tp,c12262395.tdfilter,tp,LOCATION_REMOVED,0,3,3,nil)
Duel.HintSelection(g)
Duel.SetOperationInfo(0,CATEGORY_TODECK,g,3,0,LOCATION_REMOVED)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function c12262395.spop(e,tp,eg,ep,ev,re,r,rp)
local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS)
if not tg or tg:FilterCount(Card.IsRelateToEffect,nil,e)~=3 then return end
Duel.SendtoDeck(tg,nil,0,REASON_EFFECT)
local g=Duel.GetOperatedGroup()
if g:IsExists(Card.IsLocation,1,nil,LOCATION_DECK) then Duel.ShuffleDeck(tp) end
local ct=g:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA)
if ct==3 then
Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP_DEFENSE)
end
end
...@@ -36,7 +36,7 @@ function cm.filter66(c) ...@@ -36,7 +36,7 @@ function cm.filter66(c)
end end
function cm.ffilter(c, fc, sub, mg, sg) function cm.ffilter(c, fc, sub, mg, sg)
return c:IsType(TYPE_EQUIP) and c:IsAbleToGraveAsCost() return c:IsAbleToGraveAsCost() and (c:GetOriginalType() & TYPE_UNION ~= 0 or c:GetOriginalType() & TYPE_EQUIP ~= 0)
end end
function cm.filter(c, c2) function cm.filter(c, c2)
...@@ -86,7 +86,7 @@ end ...@@ -86,7 +86,7 @@ end
function cm.desop(e, tp, eg, ep, ev, re, r, rp) function cm.desop(e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler() local c = e:GetHandler()
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
local g = Duel.SelectMatchingCard(tp, cm.filter, tp, LOCATION_GRAVE + LOCATION_DECK+LOCATION_REMOVED, 0, 1, 1, nil, c) local g = Duel.SelectMatchingCard(tp, cm.filter, tp, LOCATION_GRAVE + LOCATION_DECK, 0, 1, 1, nil, c)
if g:GetCount() > 0 then if g:GetCount() > 0 then
g = g:GetFirst() g = g:GetFirst()
local mg = Group.CreateGroup() local mg = Group.CreateGroup()
...@@ -94,7 +94,7 @@ function cm.desop(e, tp, eg, ep, ev, re, r, rp) ...@@ -94,7 +94,7 @@ function cm.desop(e, tp, eg, ep, ev, re, r, rp)
local g2 = Duel.GetMatchingGroup(aux.TRUE, tp, 0, LOCATION_MZONE, nil) local g2 = Duel.GetMatchingGroup(aux.TRUE, tp, 0, LOCATION_MZONE, nil)
mg:Merge(g2) mg:Merge(g2)
local tc = c local tc = c
if (g:IsLocation(LOCATION_GRAVE) or g:IsLocation(LOCATION_REMOVED)) and #mg > 1 then if g:IsLocation(LOCATION_GRAVE) and #mg > 1 then
tc = mg:Select(tp, 1, 1, nil):GetFirst() tc = mg:Select(tp, 1, 1, nil):GetFirst()
Duel.Equip(tp, g, tc, true) Duel.Equip(tp, g, tc, true)
else else
...@@ -115,8 +115,11 @@ function cm.descon(e, tp, eg, ep, ev, re, r, rp) ...@@ -115,8 +115,11 @@ function cm.descon(e, tp, eg, ep, ev, re, r, rp)
end end
function cm.sptg(e, tp, eg, ep, ev, re, r, rp, chk) function cm.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
if chk == 0 then return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 end
local c = e:GetHandler() local c = e:GetHandler()
if chk == 0 then
return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and
c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
end
Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0) Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0)
end end
......
...@@ -97,6 +97,7 @@ function s.pickable(c,tp) ...@@ -97,6 +97,7 @@ function s.pickable(c,tp)
end end
function s.cttg(e,tp,eg,ep,ev,re,r,rp,chk) function s.cttg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.pickable,tp,LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,1,nil,tp) end if chk==0 then return Duel.IsExistingMatchingCard(s.pickable,tp,LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE,1,nil,tp) end
Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription())
end end
function s.ctop(e,tp,eg,ep,ev,re,r,rp) function s.ctop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
...@@ -114,16 +115,17 @@ function s.ctop(e,tp,eg,ep,ev,re,r,rp) ...@@ -114,16 +115,17 @@ function s.ctop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function s.ctfilter(c) function s.ctfilter(c)
return c:GetOriginalType()&TYPE_MONSTER>0 and c:GetType()&TYPE_CONTINUOUS+TYPE_SPELL==TYPE_CONTINUOUS+TYPE_SPELL return c:GetOriginalType()&TYPE_MONSTER>0 and c:GetType()&TYPE_CONTINUOUS+TYPE_TRAP==TYPE_CONTINUOUS+TYPE_TRAP
and c:IsFaceup() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsFaceup() and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end end
function s.rvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function s.rvtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and s.sfilter(chkc,e,tp) end if chkc then return chkc:IsOnField() and s.ctfilter(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(s.sfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,e,tp) end and Duel.IsExistingTarget(s.ctfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectTarget(tp,s.sfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,e,tp) local g=Duel.SelectTarget(tp,s.ctfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,e,tp)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription())
end end
function s.rvop(e,tp,eg,ep,ev,re,r,rp) function s.rvop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
......
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