Commit c467c9ef authored by POLYMER's avatar POLYMER

fix

parent 8440a82c
......@@ -13,7 +13,7 @@ function c21185857.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(0,1)
c:RegisterEffect(e1)
if not c21185857_ then
--[[if not c21185857_ then
c21185857_=true
c21185857_tab = {}
c21185857_check_hack = Effect["IsHasProperty"]
......@@ -29,7 +29,7 @@ function c21185857.initial_effect(c)
return c21185857_check_hack(effect,p1,p2,...)
end
end
end
end]]
end
function c21185857.op(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetFieldGroup(0,0xff,0xff)
......@@ -50,7 +50,7 @@ function c21185857.op(e,tp,eg,ep,ev,re,r,rp)
do target(ne,ntp,neg,nep,nev,nre,nr,nrp,1) end
end)
end
c21185857_tab[#c21185857_tab+1] = effect
--c21185857_tab[#c21185857_tab+1] = effect
c21185857_RegisterEffect(card,effect,bool,...)
end
for tc in aux.Next(g) do
......
......@@ -44,13 +44,28 @@ function c60152903.initial_effect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY)
e3:SetCode(EVENT_RELEASE)
e3:SetCountLimit(1,602903)
e3:SetCountLimit(1,1602903)
e3:SetCondition(c60152903.con)
e3:SetTarget(c60152903.e3tg)
e3:SetOperation(c60152903.e3op)
c:RegisterEffect(e3)
end
function c60152903.check(c)
return c
end
function c60152903.checkop(e,tp,eg,ep,ev,re,r,rp)
local c0,c1=Duel.GetBattleMonster(0)
if c60152903.check(c0) then
Duel.RegisterFlagEffect(0,60152903,RESET_PHASE+PHASE_END,0,1)
Debug.Message(Duel.GetFlagEffect(tp,60152903))
end
if c60152903.check(c1) then
Duel.RegisterFlagEffect(1,60152903,RESET_PHASE+PHASE_END,0,1)
Debug.Message(Duel.GetFlagEffect(tp,60152903))
end
end
function c60152903.con(e,tp,eg,ep,ev,re,r,rp)
--local tp=e:GetHandlerPlayer()
return Duel.GetMatchingGroupCount(Card.IsFacedown,tp,LOCATION_EXTRA,0,nil)==0
end
function c60152903.e1con(e,tp,eg,ep,ev,re,r,rp)
......@@ -111,28 +126,13 @@ function c60152903.e1op(e,tp,eg,ep,ev,re,r,rp)
tc:CompleteProcedure()
end
end
function c60152903.check(c)
return c
end
function c60152903.checkop(e,tp,eg,ep,ev,re,r,rp)
local c0,c1=Duel.GetBattleMonster(0)
if c60152903.check(c0) then
Duel.RegisterFlagEffect(0,60152903,RESET_PHASE+PHASE_END,0,1)
end
if c60152903.check(c1) then
Duel.RegisterFlagEffect(1,60152903,RESET_PHASE+PHASE_END,0,1)
end
end
function c60152903.e2tg(e,tp,eg,ep,ev,re,r,rp,chk)
local p=PLAYER_ALL
if chk==0 then return not Duel.GetFlagEffect(tp,60152903)==0 and Duel.GetMatchingGroupCount(aux.NOT(Card.IsPublic),tp,0,LOCATION_HAND,nil)>0 end
if chk==0 then return Duel.GetFlagEffect(tp,60152903)>0 end
Duel.SetTargetPlayer(p)
Duel.SetTargetParam(1000)
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,p,1000)
end
function c60152903.e2opfilter(c)
return c:IsAbleToDeck()
end
function c60152903.e2op(e,tp,eg,ep,ev,re,r,rp)
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
if p==PLAYER_ALL then
......@@ -140,7 +140,7 @@ function c60152903.e2op(e,tp,eg,ep,ev,re,r,rp)
Duel.Damage(1,d,REASON_EFFECT,true)
Duel.RDComplete()
Duel.BreakEffect()
local g=Duel.GetMatchingGroup(c60152903.e2opfilter,tp,LOCATION_MZONE,0,nil)
local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil)
local tc=g:GetFirst()
while tc do
local e1=Effect.CreateEffect(e:GetHandler())
......
......@@ -313,14 +313,11 @@ function c60152913.e22902op(e,tp,eg,ep,ev,re,r,rp)
end
function c60152913.e22903tg(e,tp,eg,ep,ev,re,r,rp,chk)
local p=PLAYER_ALL
if chk==0 then return Duel.GetFlagEffect(tp,60152903)>0 and Duel.GetMatchingGroupCount(aux.NOT(Card.IsPublic),tp,0,LOCATION_HAND,nil)>0 end
if chk==0 then return Duel.GetFlagEffect(tp,60152903)>0 end
Duel.SetTargetPlayer(p)
Duel.SetTargetParam(1000)
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,p,1000)
end
function c60152913.e22903opfilter(c)
return c:IsAbleToDeck()
end
function c60152913.e22903op(e,tp,eg,ep,ev,re,r,rp)
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
if p==PLAYER_ALL then
......@@ -328,7 +325,7 @@ function c60152913.e22903op(e,tp,eg,ep,ev,re,r,rp)
Duel.Damage(1,d,REASON_EFFECT,true)
Duel.RDComplete()
Duel.BreakEffect()
local g=Duel.GetMatchingGroup(c60152913.e22903opfilter,tp,LOCATION_MZONE,0,nil)
local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil)
local tc=g:GetFirst()
while tc do
local e1=Effect.CreateEffect(e:GetHandler())
......
......@@ -39,10 +39,10 @@ end
function s.sprcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
return Duel.IsExistingMatchingCard(s.sprilter,tp,LOCATION_DECK,0,1,c)
return Duel.IsExistingMatchingCard(s.sprfilter,tp,LOCATION_DECK,0,1,c)
end
function s.sprtg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(s.sprilter,tp,LOCATION_DECK,0,c)
local g=Duel.GetMatchingGroup(s.sprfilter,tp,LOCATION_DECK,0,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local tc=g:SelectUnselect(nil,tp,false,true,1,1)
if tc then
......
......@@ -15,6 +15,7 @@ function s.initial_effect(c)
e2:SetCategory(CATEGORY_DRAW)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP)
e2:SetCost(s.drcost)
e2:SetTarget(s.drtg)
e2:SetOperation(s.dract)
c:RegisterEffect(e2)
......@@ -39,18 +40,53 @@ end
function s.thfilter(c)
return _G["c"..c:GetCode()] and _G["c"..c:GetCode()].hackclad and not c:IsCode(id) and c:IsAbleToHand()
end
function s.mvfilter(c)
return c:IsFaceup() and _G["c"..c:GetCode()] and _G["c"..c:GetCode()].hackclad
function s.mvfilter(c,tp)
return c:IsFaceup() and _G["c"..c:GetCode()] and _G["c"..c:GetCode()].hackclad and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE,PLAYER_NONE,0)>0
end
function s.mvfilter2(c,tp)
return c:IsFaceup() and _G["c"..c:GetCode()] and _G["c"..c:GetCode()].hackclad and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE,PLAYER_NONE,0)>1
end
function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>0
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE,1-tp) end
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE,1-tp) and (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or Duel.IsExistingMatchingCard(s.mvfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK)
end
function s.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local oe=e:GetLabelObject()
if not c:IsRelateToEffect(e) then return end
if Duel.SpecialSummon(c,SUMMON_VALUE_SELF,tp,1-tp,false,false,POS_FACEDOWN_DEFENSE)>0 and c:IsLocation(LOCATION_MZONE) then
Duel.AdjustAll()
local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp)
local b2=Duel.GetLocationCount(tp,LOCATION_MZONE,PLAYER_NONE,0)>0 and Duel.IsExistingMatchingCard(s.mvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
local op=aux.SelectFromOptions(tp,
{b1,aux.Stringid(id,0)},
{b2,aux.Stringid(id,1)})
if op==1 then
e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g2=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp)
if g2:GetCount()>0 then
Duel.BreakEffect()
Duel.SpecialSummon(g2,0,tp,tp,false,false,POS_FACEUP)
end
elseif op==2 then
Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(id,2))
local g3=Duel.SelectMatchingCard(tp,s.mvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
local tc=g3:GetFirst()
if not tc then return end
if tc:IsControler(tp) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOZONE)
local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0)
local nseq=math.log(s,2)
Duel.MoveSequence(g3:GetFirst(),nseq)
else
local s=Duel.SelectDisableField(tp,1,0,LOCATION_MZONE,0)
local nseq=math.log(bit.rshift(s,16),2)
Duel.MoveSequence(g3:GetFirst(),nseq)
end
end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_MAX_MZONE)
......@@ -60,46 +96,18 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
end
Duel.AdjustAll()
local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp)
local b2=Duel.GetLocationCount(tp,LOCATION_MZONE,PLAYER_NONE,0)>0 and Duel.IsExistingMatchingCard(s.mvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
local op=aux.SelectFromOptions(tp,
{b1,aux.Stringid(id,0)},
{b2,aux.Stringid(id,1)})
if op==1 then
e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g2=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp)
if g2:GetCount()>0 then
Duel.BreakEffect()
Duel.SpecialSummon(g2,0,tp,tp,false,false,POS_FACEUP)
end
elseif op==2 then
Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(id,2))
local g3=Duel.SelectMatchingCard(tp,s.mvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
local tc=g3:GetFirst()
if not tc then return end
if tc:IsControler(tp) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOZONE)
local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0)
local nseq=math.log(s,2)
Duel.MoveSequence(g3:GetFirst(),nseq)
else
local s=Duel.SelectDisableField(tp,1,0,LOCATION_MZONE,0)
local nseq=math.log(bit.rshift(s,16),2)
Duel.MoveSequence(g3:GetFirst(),nseq)
end
end
end
function s.mvalue(e,fp,rp,r)
return 1-Duel.GetFieldGroupCount(fp,LOCATION_SZONE,0)
end
function s.drtg(e,tp,eg,ep,ev,re,r,rp,chk)
function s.drcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.drcfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,2,e:GetHandler(),tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,s.drcfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,2,2,e:GetHandler(),tp)
Duel.SendtoGrave(g,REASON_RELEASE+REASON_COST)
end
function s.drtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetTargetPlayer(tp)
Duel.SetTargetParam(2)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2)
......
......@@ -37,18 +37,52 @@ function s.thfilter(c)
return _G["c"..c:GetCode()] and _G["c"..c:GetCode()].hackclad and not c:IsCode(id) and c:IsAbleToHand()
end
function s.mvfilter(c)
return c:IsFaceup() and _G["c"..c:GetCode()] and _G["c"..c:GetCode()].hackclad
return c:IsFaceup() and _G["c"..c:GetCode()] and _G["c"..c:GetCode()].hackclad and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE,PLAYER_NONE,0)>0
end
function s.mvfilter2(c,tp)
return c:IsFaceup() and _G["c"..c:GetCode()] and _G["c"..c:GetCode()].hackclad and Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE,PLAYER_NONE,0)>1
end
function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(1-tp,LOCATION_MZONE,tp)>0
and Duel.GetCustomActivityCount(m,1-tp,ACTIVITY_CHAIN)>=13
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE,1-tp) end
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE,1-tp) and (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 or Duel.IsExistingMatchingCard(s.mvfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK)
end
function s.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local oe=e:GetLabelObject()
if not c:IsRelateToEffect(e) then return end
if Duel.SpecialSummon(c,SUMMON_VALUE_SELF,tp,1-tp,false,false,POS_FACEDOWN_DEFENSE)>0 and c:IsLocation(LOCATION_MZONE) then
Duel.AdjustAll()
local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp)
local b2=Duel.GetLocationCount(tp,LOCATION_MZONE,PLAYER_NONE,0)>0 and Duel.IsExistingMatchingCard(s.mvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
local op=aux.SelectFromOptions(tp,
{b1,aux.Stringid(id,0)},
{b2,aux.Stringid(id,1)})
if op==1 then
e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g2=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp)
if g2:GetCount()>0 then
Duel.BreakEffect()
Duel.SpecialSummon(g2,0,tp,tp,false,false,POS_FACEUP)
end
elseif op==2 then
Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(id,2))
local g3=Duel.SelectMatchingCard(tp,s.mvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
local tc=g3:GetFirst()
if not tc then return end
if tc:IsControler(tp) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOZONE)
local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0)
local nseq=math.log(s,2)
Duel.MoveSequence(g3:GetFirst(),nseq)
else
local s=Duel.SelectDisableField(tp,1,0,LOCATION_MZONE,0)
local nseq=math.log(bit.rshift(s,16),2)
Duel.MoveSequence(g3:GetFirst(),nseq)
end
end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_MAX_MZONE)
......@@ -58,37 +92,6 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
end
Duel.AdjustAll()
local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp)
local b2=Duel.GetLocationCount(tp,LOCATION_MZONE,PLAYER_NONE,0)>0 and Duel.IsExistingMatchingCard(s.mvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
local op=aux.SelectFromOptions(tp,
{b1,aux.Stringid(id,0)},
{b2,aux.Stringid(id,1)})
if op==1 then
e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,1-tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g2=Duel.SelectMatchingCard(tp,s.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp)
if g2:GetCount()>0 then
Duel.BreakEffect()
Duel.SpecialSummon(g2,0,tp,tp,false,false,POS_FACEUP)
end
elseif op==2 then
Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(id,2))
local g3=Duel.SelectMatchingCard(tp,s.mvfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
local tc=g3:GetFirst()
if not tc then return end
if tc:IsControler(tp) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOZONE)
local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0)
local nseq=math.log(s,2)
Duel.MoveSequence(g3:GetFirst(),nseq)
else
local s=Duel.SelectDisableField(tp,1,0,LOCATION_MZONE,0)
local nseq=math.log(bit.rshift(s,16),2)
Duel.MoveSequence(g3:GetFirst(),nseq)
end
end
end
function s.mvalue(e,fp,rp,r)
return 1-Duel.GetFieldGroupCount(fp,LOCATION_SZONE,0)
......
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