Commit 90c46e32 authored by POLYMER's avatar POLYMER

fix

parent 55e3fbbc
...@@ -37,16 +37,19 @@ function cm.filter2(c,e,tp,att) ...@@ -37,16 +37,19 @@ function cm.filter2(c,e,tp,att)
return c:IsSetCard(0x97b) and c:IsType(TYPE_MONSTER) and c:GetAttribute()~=att and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK,1-tp) return c:IsSetCard(0x97b) and c:IsType(TYPE_MONSTER) and c:GetAttribute()~=att and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK,1-tp)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local act=e:IsHasType(EFFECT_TYPE_ACTIVATE)
local sp=Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON) local sp=Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)
if chk==0 then return sp<2 end if chk==0 then return not act or sp<2 end
local e1=Effect.CreateEffect(e:GetHandler()) if act then
e1:SetType(EFFECT_TYPE_FIELD) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetCode(EFFECT_SPSUMMON_COUNT_LIMIT) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) e1:SetCode(EFFECT_SPSUMMON_COUNT_LIMIT)
e1:SetTargetRange(1,0) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH)
e1:SetValue(2-sp) e1:SetTargetRange(1,0)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetValue(2-sp)
Duel.RegisterEffect(e1,tp) e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
end
end end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk) function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(cm.chkfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(cm.chkfilter1,tp,LOCATION_DECK,0,1,nil,e,tp) end
......
...@@ -114,8 +114,8 @@ function cm.xyzop(e,tp,eg,ep,ev,re,r,rp) ...@@ -114,8 +114,8 @@ function cm.xyzop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local te=e:GetLabelObject() local te=e:GetLabelObject()
local mg=Duel.GetMatchingGroup(cm.filter3,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(cm.filter3,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
cm[0]=0
if Duel.SelectYesNo(tp,aux.Stringid(m,2)) then if Duel.SelectYesNo(tp,aux.Stringid(m,2)) then
cm[0]=0
te:GetTarget()(te,tp,eg,ep,ev,re,r,rp,1,c,mg,2,2) te:GetTarget()(te,tp,eg,ep,ev,re,r,rp,1,c,mg,2,2)
te:GetOperation()(te,tp,eg,ep,ev,re,r,rp,c,mg,2,2) te:GetOperation()(te,tp,eg,ep,ev,re,r,rp,c,mg,2,2)
Duel.SpecialSummon(c,SUMMON_TYPE_XYZ,tp,tp,true,false,POS_FACEUP) Duel.SpecialSummon(c,SUMMON_TYPE_XYZ,tp,tp,true,false,POS_FACEUP)
......
...@@ -21,23 +21,42 @@ end ...@@ -21,23 +21,42 @@ end
function c33701315.spop(e,tp,eg,ep,ev,re,r,rp) function c33701315.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
Duel.SpecialSummon(tc,0,tp,tp,true,false,POS_FACEUP) if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) then
if Duel.GetControl(tc,1-tp,PHASE_END,2) then local e1=Effect.CreateEffect(e:GetHandler())
-- e1:SetType(EFFECT_TYPE_SINGLE)
local e1=Effect.CreateEffect(c) e1:SetCode(EFFECT_DISABLE)
e1:SetCategory(CATEGORY_RECOVER) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetProperty(EFFECT_FLAG_DELAY) tc:RegisterEffect(e1,true)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) local e2=Effect.CreateEffect(e:GetHandler())
e1:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetType(EFFECT_TYPE_SINGLE)
e1:SetRange(LOCATION_MZONE) e2:SetCode(EFFECT_DISABLE_EFFECT)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e2:SetValue(RESET_TURN_SET)
e1:SetLabel(1-c:GetControler()) e2:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetTarget(c33701315.retg) tc:RegisterEffect(e2,true)
e1:SetOperation(c33701315.reop) local e3=Effect.CreateEffect(e:GetHandler())
tc:RegisterEffect(e1) e3:SetType(EFFECT_TYPE_SINGLE)
local e2=e1:Clone() e3:SetCode(EFFECT_CANNOT_BE_LINK_MATERIAL)
e2:SetCode(EVENT_SUMMON_SUCCESS) e3:SetValue(1)
tc:RegisterEffect(e2) e3:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e3,true)
Duel.SpecialSummonComplete()
if Duel.GetControl(tc,1-tp,PHASE_END,2) then
--
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_RECOVER)
e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetRange(LOCATION_MZONE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetLabel(1-c:GetControler())
e1:SetTarget(c33701315.retg)
e1:SetOperation(c33701315.reop)
tc:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EVENT_SUMMON_SUCCESS)
tc:RegisterEffect(e2)
end
end end
end end
function c33701315.refil(c,e,cp) function c33701315.refil(c,e,cp)
......
...@@ -54,31 +54,30 @@ function cm.spcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -54,31 +54,30 @@ function cm.spcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.filter,1,nil,tp) return eg:IsExists(cm.filter,1,nil,tp)
end end
function cm.thfilter(c,tp,e) function cm.thfilter(c)
return c:IsFaceup() and cm.MagicCombineDemon(c) and c:IsLocation(LOCATION_REMOVED) return c:IsFaceup() and cm.MagicCombineDemon(c)
and c:IsControler(tp) and c:IsCanBeEffectTarget(e) and (c:IsAbleToDeck() or c:IsAbleToExtra()) and (c:IsAbleToDeck() or c:IsAbleToExtra())
end
function cm.spfilter(c,e,tp)
return cm.MagicCombineDemon(c) and c:IsCanBeSpecialSummoned(e,0,tp,true,false) and (c:IsLocation(LOCATION_DECK) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
or c:IsLocation(LOCATION_EXTRA) and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0)
end end
function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_REMOVED) and cm.thfilter(chkc) end
if chkc then return eg:IsContains(chkc) and cm.thfilter(chkc,tp,e) end if chk==0 then return Duel.IsExistingTarget(cm.thfilter,tp,LOCATION_REMOVED,0,1,nil) and Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,nil,e,tp) end
if chk==0 then return true end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local sg=g:FilterSelect(tp,cm.thfilter,1,1,nil,tp,e) local g=Duel.SelectTarget(tp,cm.thfilter,tp,LOCATION_REMOVED,0,1,1,nil)
Duel.SetTargetCard(sg) Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_EXTRA)
end
function cm.spfilter(c,e,tp)
return cm.MagicCombineDemon(c) and c:IsCanBeSpecialSummoned(e,0,tp,true,false)
end end
function cm.spop(e,tp,eg,ep,ev,re,r,rp) function cm.spop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 then if tc:IsRelateToEffect(e) and Duel.SendtoDeck(tc,nil,SEQ_DECKSHUFFLE,REASON_EFFECT)~=0 and (tc:IsLocation(LOCATION_EXTRA)or tc:IsLocation(LOCATION_DECK)) then
local g=Duel.GetMatchingGroup(cm.spfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,nil,e,tp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
if #g>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then local g2=Duel.SelectMatchingCard(tp,cmspfilter,tp,LOCATION_DECK+LOCATION_EXTRA,0,1,1,nil,e,tp)
if g2:GetCount()>0 then
Duel.BreakEffect() Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.SpecialSummon(g2,0,tp,tp,false,false,POS_FACEUP)
local sg=g:Select(tp,1,1,nil)
Duel.SpecialSummon(sg,0,tp,tp,true,false,POS_FACEUP)
end end
end end
end end
\ No newline at end of file
...@@ -73,12 +73,12 @@ function cm.sprcon(e,c) ...@@ -73,12 +73,12 @@ function cm.sprcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
return ft>-1 and Duel.CheckReleaseGroup(REASON_COST,tp,cm.sprfilter,1,nil,ft,tp) return ft>-1 and Duel.CheckReleaseGroup(REASON_SPSUMMON,tp,cm.sprfilter,1,nil,ft,tp)
end end
function cm.sprop(e,tp,eg,ep,ev,re,r,rp,c) function cm.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=Duel.SelectReleaseGroup(REASON_COST,tp,cm.sprfilter,1,1,nil,ft,tp) local g=Duel.SelectReleaseGroup(REASON_SPSUMMON,tp,cm.sprfilter,1,1,nil,ft,tp)
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_SPSUMMON)
end end
function cm.cfilter(c) function cm.cfilter(c)
return c:IsCode(40009599) and (c:IsFaceup() or c:IsLocation(LOCATION_HAND+LOCATION_GRAVE)) return c:IsCode(40009599) and (c:IsFaceup() or c:IsLocation(LOCATION_HAND+LOCATION_GRAVE))
......
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