Commit 297c3822 authored by nanahira's avatar nanahira

updpre

parent 5d8ede5d
...@@ -2,8 +2,15 @@ ...@@ -2,8 +2,15 @@
--Odd-Eyes Revolution Dragon --Odd-Eyes Revolution Dragon
--Scripted by Eerie Code --Scripted by Eerie Code
function c100221001.initial_effect(c) function c100221001.initial_effect(c)
c:EnableReviveLimit()
aux.EnablePendulumAttribute(c) aux.EnablePendulumAttribute(c)
--revive limit
c:EnableUnsummonable()
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e0:SetCode(EFFECT_REVIVE_LIMIT)
e0:SetCondition(c100221001.rvlimit)
c:RegisterEffect(e0)
--splimit --splimit
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
...@@ -71,6 +78,9 @@ function c100221001.initial_effect(c) ...@@ -71,6 +78,9 @@ function c100221001.initial_effect(c)
e8:SetOperation(c100221001.tdop) e8:SetOperation(c100221001.tdop)
c:RegisterEffect(e8) c:RegisterEffect(e8)
end end
function c100221001.rvlimit(e)
return not e:GetHandler():IsLocation(LOCATION_HAND)
end
function c100221001.psplimit(e,c,tp,sumtp,sumpos) function c100221001.psplimit(e,c,tp,sumtp,sumpos)
return not c:IsRace(RACE_DRAGON) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM return not c:IsRace(RACE_DRAGON) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end end
......
...@@ -39,7 +39,7 @@ function c100222001.initial_effect(c) ...@@ -39,7 +39,7 @@ function c100222001.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c100222001.tkcon(e,tp,eg,ep,ev,re,r,rp) function c100222001.tkcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp and c:IsSummonType(SUMMON_TYPE_SYNCHRO) return Duel.GetTurnPlayer()==tp and e:GetHandler():IsSummonType(SUMMON_TYPE_SYNCHRO)
end end
function c100222001.tktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c100222001.tktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
......
...@@ -113,9 +113,11 @@ function c100407004.eqop(e,tp,eg,ep,ev,re,r,rp) ...@@ -113,9 +113,11 @@ function c100407004.eqop(e,tp,eg,ep,ev,re,r,rp)
local tc1=Duel.GetFirstTarget() local tc1=Duel.GetFirstTarget()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
local g=Duel.SelectMatchingCard(tp,c100407004.eqfilter,tp,LOCATION_MZONE,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c100407004.eqfilter,tp,LOCATION_MZONE,0,1,1,nil)
local tc2=g:GetFirst() if g:GetCount()>0 then
local m=_G["c"..tc2:GetCode()] local tc2=g:GetFirst()
if tc1:IsFaceup() and tc1:IsRelateToEffect(e) and tc1:IsControler(1-tp) and tc2 then local m=_G["c"..tc2:GetCode()]
m.EquipMonster(tc2,tp,tc1) if tc1:IsFaceup() and tc1:IsRelateToEffect(e) and tc1:IsControler(1-tp) and tc2 then
m.EquipMonster(tc2,tp,tc1)
end
end end
end end
...@@ -50,7 +50,7 @@ function c100407008.initial_effect(c) ...@@ -50,7 +50,7 @@ function c100407008.initial_effect(c)
e5:SetCountLimit(1) e5:SetCountLimit(1)
e5:SetTarget(c100407008.sptg) e5:SetTarget(c100407008.sptg)
e5:SetOperation(c100407008.spop) e5:SetOperation(c100407008.spop)
c:RegisterEffect(e4) c:RegisterEffect(e5)
end end
function c100407008.splimit(e,se,sp,st) function c100407008.splimit(e,se,sp,st)
return se:IsHasType(EFFECT_TYPE_ACTIONS) return se:IsHasType(EFFECT_TYPE_ACTIONS)
......
...@@ -61,6 +61,7 @@ function c100407014.damfilter1(c,tp) ...@@ -61,6 +61,7 @@ function c100407014.damfilter1(c,tp)
return c:IsReason(REASON_EFFECT) and c:IsReason(REASON_DESTROY) and c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()~=tp return c:IsReason(REASON_EFFECT) and c:IsReason(REASON_DESTROY) and c:IsLocation(LOCATION_GRAVE) and c:GetPreviousControler()~=tp
end end
function c100407014.damcon2(e,tp,eg,ep,ev,re,r,rp) function c100407014.damcon2(e,tp,eg,ep,ev,re,r,rp)
if not re then return false end
local rc=re:GetHandler() local rc=re:GetHandler()
return rc:IsControler(tp) and rc:GetOriginalAttribute()==ATTRIBUTE_DARK return rc:IsControler(tp) and rc:GetOriginalAttribute()==ATTRIBUTE_DARK
and rc:GetOriginalRace()==RACE_MACHINE and rc:GetOriginalRace()==RACE_MACHINE
......
...@@ -76,6 +76,7 @@ function c100407032.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -76,6 +76,7 @@ function c100407032.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tg=sg:Select(tp,1,1,nil) local tg=sg:Select(tp,1,1,nil)
local tc=tg:GetFirst() local tc=tg:GetFirst()
if not tc then return end
if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then
aux.FCheckAdditional=c100407032.fcheck aux.FCheckAdditional=c100407032.fcheck
local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf)
......
...@@ -65,6 +65,7 @@ function c101003002.disfilter(c,e) ...@@ -65,6 +65,7 @@ function c101003002.disfilter(c,e)
return c:IsFaceup() and c:IsRelateToEffect(e) return c:IsFaceup() and c:IsRelateToEffect(e)
end end
function c101003002.disop(e,tp,eg,ep,ev,re,r,rp) function c101003002.disop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c101003002.disfilter,nil,e) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(c101003002.disfilter,nil,e)
local tc=g:GetFirst() local tc=g:GetFirst()
while tc do while tc do
......
...@@ -55,7 +55,7 @@ function c101003007.desop(e,tp,eg,ep,ev,re,r,rp) ...@@ -55,7 +55,7 @@ function c101003007.desop(e,tp,eg,ep,ev,re,r,rp)
tc=g:GetFirst() tc=g:GetFirst()
else else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
tc=g:Select(tp,1,1,nil) tc=g:Select(tp,1,1,nil):GetFirst()
end end
local seq=tc:GetSequence() local seq=tc:GetSequence()
local dg=Group.CreateGroup() local dg=Group.CreateGroup()
......
...@@ -31,24 +31,27 @@ end ...@@ -31,24 +31,27 @@ end
function c101003014.cfilter(c) function c101003014.cfilter(c)
return c:GetColumnGroupCount()>0 return c:GetColumnGroupCount()>0
end end
function c101003014.hspcon(e,c) function c101003014.getzone(tp)
if c==nil then return true end
local tp=c:GetControler()
local zone=0 local zone=0
local lg=Duel.GetMatchingGroup(c101003014.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) local lg=Duel.GetMatchingGroup(c101003014.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE)) if tc:IsControler(tp) then
zone=bit.bor(zone,bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff))
else
zone=bit.bor(zone,bit.rshift(bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff0000),16))
end
end end
return zone
end
function c101003014.hspcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local zone=c101003014.getzone(tp)
return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0
end end
function c101003014.hspval(e,c) function c101003014.hspval(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local zone=0 return 0,c101003014.getzone(tp)
local lg=Duel.GetMatchingGroup(c101003014.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE))
end
return 0,zone
end end
function c101003014.thcon(e,tp,eg,ep,ev,re,r,rp) function c101003014.thcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPreviousLocation(LOCATION_HAND) return e:GetHandler():IsPreviousLocation(LOCATION_HAND)
......
...@@ -28,24 +28,27 @@ end ...@@ -28,24 +28,27 @@ end
function c101003015.cfilter(c) function c101003015.cfilter(c)
return c:GetColumnGroupCount()>0 return c:GetColumnGroupCount()>0
end end
function c101003015.hspcon(e,c) function c101003015.getzone(tp)
if c==nil then return true end
local tp=c:GetControler()
local zone=0 local zone=0
local lg=Duel.GetMatchingGroup(c101003015.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) local lg=Duel.GetMatchingGroup(c101003015.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE)) if tc:IsControler(tp) then
zone=bit.bor(zone,bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff))
else
zone=bit.bor(zone,bit.rshift(bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff0000),16))
end
end end
return zone
end
function c101003015.hspcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local zone=c101003015.getzone(tp)
return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0
end end
function c101003015.hspval(e,c) function c101003015.hspval(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local zone=0 return 0,c101003015.getzone(tp)
local lg=Duel.GetMatchingGroup(c101003015.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE))
end
return 0,zone
end end
function c101003015.thcon(e,tp,eg,ep,ev,re,r,rp) function c101003015.thcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -28,24 +28,27 @@ end ...@@ -28,24 +28,27 @@ end
function c101003016.cfilter(c) function c101003016.cfilter(c)
return c:GetColumnGroupCount()>0 return c:GetColumnGroupCount()>0
end end
function c101003016.hspcon(e,c) function c101003016.getzone(tp)
if c==nil then return true end
local tp=c:GetControler()
local zone=0 local zone=0
local lg=Duel.GetMatchingGroup(c101003016.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) local lg=Duel.GetMatchingGroup(c101003016.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE)) if tc:IsControler(tp) then
zone=bit.bor(zone,bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff))
else
zone=bit.bor(zone,bit.rshift(bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff0000),16))
end
end end
return zone
end
function c101003016.hspcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local zone=c101003016.getzone(tp)
return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0
end end
function c101003016.hspval(e,c) function c101003016.hspval(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local zone=0 return 0,c101003016.getzone(tp)
local lg=Duel.GetMatchingGroup(c101003016.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE))
end
return 0,zone
end end
function c101003016.spcfilter(c,tp,mc) function c101003016.spcfilter(c,tp,mc)
if c:GetPreviousControler()==tp then return false end if c:GetPreviousControler()==tp then return false end
......
...@@ -27,24 +27,27 @@ end ...@@ -27,24 +27,27 @@ end
function c101003017.cfilter(c) function c101003017.cfilter(c)
return c:GetColumnGroupCount()>0 return c:GetColumnGroupCount()>0
end end
function c101003017.hspcon(e,c) function c101003017.getzone(tp)
if c==nil then return true end
local tp=c:GetControler()
local zone=0 local zone=0
local lg=Duel.GetMatchingGroup(c101003017.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) local lg=Duel.GetMatchingGroup(c101003017.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE)) if tc:IsControler(tp) then
zone=bit.bor(zone,bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff))
else
zone=bit.bor(zone,bit.rshift(bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff0000),16))
end
end end
return zone
end
function c101003017.hspcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local zone=c101003017.getzone(tp)
return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0
end end
function c101003017.hspval(e,c) function c101003017.hspval(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local zone=0 return 0,c101003017.getzone(tp)
local lg=Duel.GetMatchingGroup(c101003017.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE))
end
return 0,zone
end end
function c101003017.costfilter(c) function c101003017.costfilter(c)
return c:IsSetCard(0x20c) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() return c:IsSetCard(0x20c) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost()
......
...@@ -27,24 +27,27 @@ end ...@@ -27,24 +27,27 @@ end
function c101003018.cfilter(c) function c101003018.cfilter(c)
return c:GetColumnGroupCount()>0 return c:GetColumnGroupCount()>0
end end
function c101003018.hspcon(e,c) function c101003018.getzone(tp)
if c==nil then return true end
local tp=c:GetControler()
local zone=0 local zone=0
local lg=Duel.GetMatchingGroup(c101003018.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) local lg=Duel.GetMatchingGroup(c101003018.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE)) if tc:IsControler(tp) then
zone=bit.bor(zone,bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff))
else
zone=bit.bor(zone,bit.rshift(bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff0000),16))
end
end end
return zone
end
function c101003018.hspcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local zone=c101003018.getzone(tp)
return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0
end end
function c101003018.hspval(e,c) function c101003018.hspval(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local zone=0 return 0,c101003018.getzone(tp)
local lg=Duel.GetMatchingGroup(c101003018.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE))
end
return 0,zone
end end
function c101003018.costfilter(c) function c101003018.costfilter(c)
return c:IsSetCard(0x20c) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() return c:IsSetCard(0x20c) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost()
......
...@@ -27,24 +27,27 @@ end ...@@ -27,24 +27,27 @@ end
function c101003019.cfilter(c) function c101003019.cfilter(c)
return c:GetColumnGroupCount()>0 return c:GetColumnGroupCount()>0
end end
function c101003019.hspcon(e,c) function c101003019.getzone(tp)
if c==nil then return true end
local tp=c:GetControler()
local zone=0 local zone=0
local lg=Duel.GetMatchingGroup(c101003019.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) local lg=Duel.GetMatchingGroup(c101003019.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE)) if tc:IsControler(tp) then
zone=bit.bor(zone,bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff))
else
zone=bit.bor(zone,bit.rshift(bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff0000),16))
end
end end
return zone
end
function c101003019.hspcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local zone=c101003019.getzone(tp)
return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0
end end
function c101003019.hspval(e,c) function c101003019.hspval(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local zone=0 return 0,c101003019.getzone(tp)
local lg=Duel.GetMatchingGroup(c101003019.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE))
end
return 0,zone
end end
function c101003019.seqfilter(c) function c101003019.seqfilter(c)
return c:IsFaceup() and c:IsSetCard(0x20c) return c:IsFaceup() and c:IsSetCard(0x20c)
...@@ -64,6 +67,7 @@ function c101003019.seqop(e,tp,eg,ep,ev,re,r,rp) ...@@ -64,6 +67,7 @@ function c101003019.seqop(e,tp,eg,ep,ev,re,r,rp)
for i=0,4 do for i=0,4 do
if Duel.CheckLocation(tp,LOCATION_MZONE,i) then flag=bit.bor(flag,math.pow(2,i)) end if Duel.CheckLocation(tp,LOCATION_MZONE,i) then flag=bit.bor(flag,math.pow(2,i)) end
end end
flag=bit.bxor(flag,0xff)
if flag==0 then return end if flag==0 then return end
Duel.Hint(HINT_SELECTMSG,tp,571) Duel.Hint(HINT_SELECTMSG,tp,571)
local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag) local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag)
......
...@@ -28,24 +28,27 @@ end ...@@ -28,24 +28,27 @@ end
function c101003020.cfilter(c) function c101003020.cfilter(c)
return c:GetColumnGroupCount()>0 return c:GetColumnGroupCount()>0
end end
function c101003020.hspcon(e,c) function c101003020.getzone(tp)
if c==nil then return true end
local tp=c:GetControler()
local zone=0 local zone=0
local lg=Duel.GetMatchingGroup(c101003020.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) local lg=Duel.GetMatchingGroup(c101003020.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE)) if tc:IsControler(tp) then
zone=bit.bor(zone,bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff))
else
zone=bit.bor(zone,bit.rshift(bit.band(tc:GetColumnZone(LOCATION_MZONE),0xff0000),16))
end
end end
return zone
end
function c101003020.hspcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local zone=c101003020.getzone(tp)
return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0
end end
function c101003020.hspval(e,c) function c101003020.hspval(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local zone=0 return 0,c101003020.getzone(tp)
local lg=Duel.GetMatchingGroup(c101003020.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
for tc in aux.Next(lg) do
zone=bit.bor(zone,tc:GetColumnZone(LOCATION_MZONE))
end
return 0,zone
end end
function c101003020.rmfilter(c) function c101003020.rmfilter(c)
return c:IsFaceup() and c:IsSetCard(0x20c) and c:IsAbleToRemove() return c:IsFaceup() and c:IsSetCard(0x20c) and c:IsAbleToRemove()
......
--魔導獣 ガルーダ
--Mythical Beast Garuda
--Scripted by Eerie Code
function c101003023.initial_effect(c)
aux.EnablePendulumAttribute(c)
c:EnableCounterPermit(0x1)
--destroy & counter
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(101003023,0))
e1:SetCategory(CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_PZONE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCountLimit(1,101003023)
e1:SetCondition(c101003023.descon)
e1:SetTarget(c101003023.destg)
e1:SetOperation(c101003023.desop)
c:RegisterEffect(e1)
--add counter
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e2:SetCode(EVENT_CHAINING)
e2:SetRange(LOCATION_MZONE)
e2:SetOperation(aux.chainreg)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e3:SetCode(EVENT_CHAIN_SOLVING)
e3:SetProperty(EFFECT_FLAG_DELAY)
e3:SetRange(LOCATION_MZONE)
e3:SetOperation(c101003023.acop)
c:RegisterEffect(e3)
--special summon
local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(101003023,1))
e4:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOHAND)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e4:SetCode(EVENT_SUMMON_SUCCESS)
e4:SetRange(LOCATION_HAND)
e4:SetCountLimit(1,101003023+100)
e4:SetCondition(c101003023.spcon)
e4:SetCost(c101003023.spcost)
e4:SetTarget(c101003023.sptg)
e4:SetOperation(c101003023.spop)
c:RegisterEffect(e4)
local e5=e4:Clone()
e5:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e5)
end
c101003023.spell_counter_permit=99
function c101003023.descon(e,tp,eg,ep,ev,re,r,rp)
return Duel.CheckLocation(tp,LOCATION_PZONE,0) or Duel.CheckLocation(tp,LOCATION_PZONE,1)
end
function c101003023.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local c=e:GetHandler()
if chkc then return chkc:IsOnField() and chkc~=c and chkc:IsType(TYPE_SPELL+TYPE_TRAP) end
if chk==0 then return c:IsDestructable() and Duel.IsExistingTarget(Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,TYPE_SPELL+TYPE_TRAP) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,TYPE_SPELL+TYPE_TRAP)
g:AddCard(c)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
end
function c101003023.desop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) then
local g=Group.FromCards(c,tc)
Duel.Destroy(g,REASON_EFFECT)
end
end
function c101003023.acop(e,tp,eg,ep,ev,re,r,rp)
if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and e:GetHandler():GetFlagEffect(1)>0 then
e:GetHandler():AddCounter(0x1,1)
end
end
function c101003023.spcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(Card.IsControler,1,nil,1-tp)
end
function c101003023.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x1,3,REASON_COST) end
Duel.RemoveCounter(tp,1,0,0x1,3,REASON_COST)
end
function c101003023.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local g=eg:Filter(Card.IsControler,nil,1-tp):Filter(Card.IsAbleToHand,nil)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and g:GetCount()>0 end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,g:GetCount(),0,0)
end
function c101003023.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 then
local g=eg:Filter(Card.IsControler,nil,1-tp):Filter(Card.IsAbleToHand,nil)
if g:GetCount()>0 then
Duel.BreakEffect()
Duel.SendtoHand(g,nil,REASON_EFFECT)
end
end
end
...@@ -61,7 +61,7 @@ function c101003047.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -61,7 +61,7 @@ function c101003047.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c101003047.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end if chk==0 then return Duel.IsExistingMatchingCard(c101003047.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK)
end end
function c101003047.operation(e,tp,eg,ep,ev,re,r,rp) function c101003047.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c101003047.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,c101003047.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp)
......
...@@ -23,15 +23,9 @@ function c101003064.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -23,15 +23,9 @@ function c101003064.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
end end
function c101003064.activate(e,tp,eg,ep,ev,re,r,rp) function c101003064.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) then return end if not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end
local seq=tc:GetSequence()
local flag=0
for i=0,4 do
if Duel.CheckLocation(tp,LOCATION_MZONE,i) then flag=bit.bor(flag,math.pow(2,i)) end
end
if flag==0 then return end
Duel.Hint(HINT_SELECTMSG,tp,571) Duel.Hint(HINT_SELECTMSG,tp,571)
local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag) local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0)
local nseq=math.sqrt(s) local nseq=math.sqrt(s)
Duel.MoveSequence(tc,nseq) Duel.MoveSequence(tc,nseq)
end end
...@@ -75,14 +75,14 @@ function c101003070.thfilter(c) ...@@ -75,14 +75,14 @@ function c101003070.thfilter(c)
end end
function c101003070.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c101003070.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c101003070.thfilter(chkc) end if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c101003070.thfilter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c101003070.thfilter,tp,LOCATION_GRAVE,0,1,nil) end if chk==0 then return Duel.IsExistingTarget(c101003070.thfilter,tp,LOCATION_GRAVE,0,1,e:GetHandler()) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectTarget(tp,c101003070.thfilter,tp,LOCATION_GRAVE,0,1,1,nil) local g=Duel.SelectTarget(tp,c101003070.thfilter,tp,LOCATION_GRAVE,0,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0) Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0)
end end
function c101003070.thop(e,tp,eg,ep,ev,re,r,rp) function c101003070.thop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then if tc and tc:IsRelateToEffect(e) then
Duel.SendtoHand(tc,nil,REASON_EFFECT) Duel.SendtoHand(tc,nil,REASON_EFFECT)
end end
end end
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