From 2e32a1b18dc6b8262493767aa926e02520fcedd0 Mon Sep 17 00:00:00 2001 From: MichaelLawrenceDee Date: Thu, 29 Dec 2016 11:09:04 +0800 Subject: [PATCH 1/2] Anime Card Fixes Anime Cards working with Summon Gate Number C106 Rank Up Check Number C6 obsolete filter removal Blackwing Silverwind Anime required Material change (db update not yet included) Binding Swords of Impact fix and cleanup D/D/D Knowledge King Tomb Conquistador OPT gain ATK check and cleanup Number 104 Required Material and cost fix Number C92 doesn't check Set Cards --- script/c511000056.lua | 106 +++++----- script/c511000276.lua | 151 ++++++------- script/c511000685.lua | 106 +++++----- script/c511001180.lua | 115 +++++----- script/c511001187.lua | 133 ++++++------ script/c511001271.lua | 106 +++++----- script/c511001334.lua | 263 +++++++++++------------ script/c511001427.lua | 161 +++++++------- script/c511001431.lua | 221 ++++++++++--------- script/c511001608.lua | 410 ++++++++++++++++++------------------ script/c511001781.lua | 479 ++++++++++++++++++++---------------------- script/c511001954.lua | 110 +++++----- script/c511002395.lua | 94 +++++---- script/c511002620.lua | 231 ++++++++++---------- script/c511002649.lua | 109 +++++----- script/c511009318.lua | 230 ++++++++++---------- script/c511009374.lua | 48 ++--- script/c511009392.lua | 23 +- script/c511010104.lua | 180 ++++++++-------- script/c511010192.lua | 303 +++++++++++++------------- 20 files changed, 1787 insertions(+), 1792 deletions(-) diff --git a/script/c511000056.lua b/script/c511000056.lua index 5de32e0f..f915fcfd 100644 --- a/script/c511000056.lua +++ b/script/c511000056.lua @@ -1,51 +1,55 @@ ---Double Ripple -function c511000056.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c511000056.target) - e1:SetOperation(c511000056.activate) - c:RegisterEffect(e1) -end -function c511000056.filter1(c,ntg) - local lv=c:GetLevel() - return c:IsFaceup() and lv>0 and c:IsType(TYPE_TUNER) and ntg:CheckWithSumEqual(Card.GetLevel,7-lv,1,99) -end -function c511000056.filter2(c) - return c:IsFaceup() and c:GetLevel()>0 and not c:IsType(TYPE_TUNER) -end -function c511000056.spfilter(c,e,tp,code) - return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c511000056.target(e,tp,eg,ep,ev,re,r,rp,chk) - local nt=Duel.GetMatchingGroup(c511000056.filter2,tp,LOCATION_MZONE,0,nil) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 - and Duel.IsExistingMatchingCard(c511000056.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,2403771) - and Duel.IsExistingMatchingCard(c511000056.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,25862681) - and Duel.IsExistingMatchingCard(c511000056.filter1,tp,LOCATION_MZONE,0,1,nil,nt) - end - Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,0,0) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) -end -function c511000056.activate(e,tp,eg,ep,ev,re,r,rp) - local nt=Duel.GetMatchingGroup(c511000056.filter2,tp,LOCATION_MZONE,0,nil) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c511000056.filter1,tp,LOCATION_MZONE,0,1,1,nil,nt) - local tc=g:GetFirst() - if tc then - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local sg=nt:SelectWithSumEqual(tp,Card.GetLevel,7-tc:GetLevel(),1,99) - g:Merge(sg) - Duel.SendtoGrave(g,REASON_EFFECT) - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sp1=Duel.SelectMatchingCard(tp,c511000056.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,2403771):GetFirst() - Duel.SpecialSummonStep(sp1,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sp2=Duel.SelectMatchingCard(tp,c511000056.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,25862681):GetFirst() - Duel.SpecialSummonStep(sp2,0,tp,tp,false,false,POS_FACEUP_DEFENSE) - Duel.SpecialSummonComplete() - end -end +--Double Ripple +function c511000056.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000056.target) + e1:SetOperation(c511000056.activate) + c:RegisterEffect(e1) +end +function c511000056.filter1(c,ntg) + local lv=c:GetLevel() + return c:IsFaceup() and lv>0 and c:IsType(TYPE_TUNER) and ntg:CheckWithSumEqual(Card.GetLevel,7-lv,1,99) +end +function c511000056.filter2(c) + return c:IsFaceup() and c:GetLevel()>0 and not c:IsType(TYPE_TUNER) +end +function c511000056.spfilter(c,e,tp,code) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000056.target(e,tp,eg,ep,ev,re,r,rp,chk) + local nt=Duel.GetMatchingGroup(c511000056.filter2,tp,LOCATION_MZONE,0,nil) + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and (not ect or ect>=2) and Duel.IsExistingMatchingCard(c511000056.filter1,tp,LOCATION_MZONE,0,1,nil,nt) + and Duel.IsExistingMatchingCard(c511000056.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,2403771) + and Duel.IsExistingMatchingCard(c511000056.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,25862681) + end + Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,2,0,0) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511000056.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil and ect<2 then return end + local nt=Duel.GetMatchingGroup(c511000056.filter2,tp,LOCATION_MZONE,0,nil) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511000056.filter1,tp,LOCATION_MZONE,0,1,1,nil,nt) + local tc=g:GetFirst() + if tc then + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local sg=nt:SelectWithSumEqual(tp,Card.GetLevel,7-tc:GetLevel(),1,99) + g:Merge(sg) + Duel.SendtoGrave(g,REASON_EFFECT) + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp1=Duel.SelectMatchingCard(tp,c511000056.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,2403771):GetFirst() + Duel.SpecialSummonStep(sp1,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sp2=Duel.SelectMatchingCard(tp,c511000056.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,25862681):GetFirst() + Duel.SpecialSummonStep(sp2,0,tp,tp,false,false,POS_FACEUP_DEFENSE) + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511000276.lua b/script/c511000276.lua index 843253cc..f7b4a3e2 100644 --- a/script/c511000276.lua +++ b/script/c511000276.lua @@ -1,74 +1,77 @@ ---Numeron Direct -function c511000276.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c511000276.con) - e1:SetTarget(c511000276.tg) - e1:SetOperation(c511000276.op) - c:RegisterEffect(e1) -end -function c511000276.cfilter(c) - return c:IsFaceup() and c:IsCode(511000275) -end -function c511000276.con(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c511000276.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) - or Duel.IsEnvironment(511000275) -end -function c511000276.filter(c,e,tp) - return c:IsAttackBelow(1000) and c:IsSetCard(0x1ff) and c:IsType(TYPE_XYZ) - and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c511000276.tg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.IsExistingMatchingCard(c511000276.filter,tp,LOCATION_EXTRA,0,4,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c511000276.op(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local g=Duel.GetMatchingGroup(c511000276.filter,tp,LOCATION_EXTRA,0,nil,e,tp) - if g:GetCount()<=3 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,4,4,nil) - if sg:GetCount()>0 then - local fid=e:GetHandler():GetFieldID() - local tc=sg:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - tc:RegisterFlagEffect(51100276,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) - tc=sg:GetNext() - end - Duel.SpecialSummonComplete() - sg:KeepAlive() - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_PHASE+PHASE_END) - e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetCountLimit(1) - e1:SetLabel(fid) - e1:SetLabelObject(sg) - e1:SetCondition(c511000276.rmcon) - e1:SetOperation(c511000276.rmop) - Duel.RegisterEffect(e1,tp) - end -end -function c511000276.rmfilter(c,fid) - return c:GetFlagEffectLabel(51100276)==fid -end -function c511000276.rmcon(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - if not g:IsExists(c511000276.rmfilter,1,nil,e:GetLabel()) then - g:DeleteGroup() - e:Reset() - return false - else return true end -end -function c511000276.rmop(e,tp,eg,ep,ev,re,r,rp) - local g=e:GetLabelObject() - local tg=g:Filter(c511000276.rmfilter,nil,e:GetLabel()) - g:DeleteGroup() - Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) -end +--Numeron Direct +function c511000276.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511000276.con) + e1:SetTarget(c511000276.tg) + e1:SetOperation(c511000276.op) + c:RegisterEffect(e1) +end +function c511000276.cfilter(c) + return c:IsFaceup() and c:IsCode(511000275) +end +function c511000276.con(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511000276.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) + or Duel.IsEnvironment(511000275) +end +function c511000276.filter(c,e,tp) + return c:IsAttackBelow(1000) and c:IsSetCard(0x1ff) and c:IsType(TYPE_XYZ) + and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511000276.tg(e,tp,eg,ep,ev,re,r,rp,chk) + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>3 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511000276.filter,tp,LOCATION_EXTRA,0,4,nil,e,tp) and (not ect or ect>=4) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511000276.op(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil and ect<4 then return end + local g=Duel.GetMatchingGroup(c511000276.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()<=3 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,4,4,nil) + if sg:GetCount()>0 then + local fid=e:GetHandler():GetFieldID() + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + tc:RegisterFlagEffect(51100276,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,fid) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() + sg:KeepAlive() + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_PHASE+PHASE_END) + e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetCountLimit(1) + e1:SetLabel(fid) + e1:SetLabelObject(sg) + e1:SetCondition(c511000276.rmcon) + e1:SetOperation(c511000276.rmop) + Duel.RegisterEffect(e1,tp) + end +end +function c511000276.rmfilter(c,fid) + return c:GetFlagEffectLabel(51100276)==fid +end +function c511000276.rmcon(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + if not g:IsExists(c511000276.rmfilter,1,nil,e:GetLabel()) then + g:DeleteGroup() + e:Reset() + return false + else return true end +end +function c511000276.rmop(e,tp,eg,ep,ev,re,r,rp) + local g=e:GetLabelObject() + local tg=g:Filter(c511000276.rmfilter,nil,e:GetLabel()) + g:DeleteGroup() + Duel.Remove(tg,POS_FACEUP,REASON_EFFECT) +end diff --git a/script/c511000685.lua b/script/c511000685.lua index cefaff36..61f49da4 100644 --- a/script/c511000685.lua +++ b/script/c511000685.lua @@ -1,50 +1,56 @@ ---WRUM-ホープ・フォース -function c511000685.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c511000685.target) - e1:SetOperation(c511000685.activate) - c:RegisterEffect(e1) -end -function c511000685.filter1(c,e,tp) - local rk=c:GetRank() - return rk>0 and c:IsFaceup() and Duel.IsExistingMatchingCard(c511000685.filter2,tp,LOCATION_EXTRA,0,2,nil,rk,e,tp) - and c:IsCode(84013237) and c:GetOverlayGroup():GetCount()>=2 -end -function c511000685.filter2(c,rk,e,tp) - return (c:GetRank()==rk+1 or c:GetRank()==rk+2) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) -end -function c511000685.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511000685.filter1(chkc,e,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 - and Duel.IsExistingTarget(c511000685.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) - local g=Duel.SelectTarget(tp,c511000685.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) -end -function c511000685.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 then return end - local tc=Duel.GetFirstTarget() - local ou=tc:GetOverlayGroup() - if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) or ou:GetCount()<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c511000685.filter2,tp,LOCATION_EXTRA,0,2,2,nil,tc:GetRank(),e,tp) - if Duel.SpecialSummonStep(g:GetFirst(),SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP)~=0 and - Duel.SpecialSummonStep(g:GetNext(),SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP)~=0 then - Duel.BreakEffect() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local ou1=ou:Select(tp,1,1,nil) - Duel.Overlay(g:GetFirst(),ou1) - ou=tc:GetOverlayGroup() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) - local ou2=ou:Select(tp,1,1,ou1:GetFirst()) - Duel.Overlay(g:GetNext(),ou2) - g:GetFirst():CompleteProcedure() - g:GetNext():CompleteProcedure() - end - Duel.SpecialSummonComplete() -end +--WRUM-ホープ・フォース +function c511000685.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000685.target) + e1:SetOperation(c511000685.activate) + c:RegisterEffect(e1) +end +function c511000685.filter1(c,e,tp) + local rk=c:GetRank() + return rk>0 and c:IsFaceup() and Duel.IsExistingMatchingCard(c511000685.filter2,tp,LOCATION_EXTRA,0,2,nil,rk,e,tp,c,c:GetCode()) + and c:IsCode(84013237) and c:GetOverlayGroup():GetCount()>=2 +end +function c511000685.filter2(c,rk,e,tp,mc,code) + if c:GetOriginalCode()==6165656 and code~=48995978 then return false end + return (c:GetRank()==rk+1 or c:GetRank()==rk+2) and mc:IsCanBeXyzMaterial(c) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false) +end +function c511000685.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c511000685.filter1(chkc,e,tp) end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingTarget(c511000685.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) and (not ect or math.min(ect,2)>=2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) + local g=Duel.SelectTarget(tp,c511000685.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp) + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) +end +function c511000685.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<1 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil and ect<2 then return end + local tc=Duel.GetFirstTarget() + if not tc or tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end + local ou=tc:GetOverlayGroup() + if ou:GetCount()<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511000685.filter2,tp,LOCATION_EXTRA,0,2,2,nil,tc:GetRank(),e,tp,tc,tc:GetCode()) + if Duel.SpecialSummonStep(g:GetFirst(),SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP)~=0 and + Duel.SpecialSummonStep(g:GetNext(),SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP)~=0 then + Duel.BreakEffect() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local ou1=ou:Select(tp,1,1,nil) + Duel.Overlay(g:GetFirst(),ou1) + ou=tc:GetOverlayGroup() + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) + local ou2=ou:Select(tp,1,1,ou1:GetFirst()) + Duel.Overlay(g:GetNext(),ou2) + g:GetFirst():CompleteProcedure() + g:GetNext():CompleteProcedure() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001180.lua b/script/c511001180.lua index a614ace6..254c169b 100644 --- a/script/c511001180.lua +++ b/script/c511001180.lua @@ -1,56 +1,59 @@ ---The Greatest Duo of the Seven Emperors -function c511001180.initial_effect(c) ---Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_BATTLE_DAMAGE) - e1:SetCondition(c511001180.atkcon) - e1:SetTarget(c511001180.tgtg) - e1:SetOperation(c511001180.tgop) - c:RegisterEffect(e1) -end -function c511001180.atkcon(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - local att=Duel.GetAttackTarget() - return ep==tp and - (a:IsSetCard(0x1048) or (att and att:IsSetCard(0x1048))) -end -function c511001180.tgfilter(c,code,e,tp) - return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c511001180.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,nil,20785975,e,tp) - and Duel.IsExistingMatchingCard(c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,nil,67173574,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) -end -function c511001180.tgop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tc1=Duel.SelectMatchingCard(tp,c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,1,nil,20785975,e,tp):GetFirst() - local tc2=Duel.SelectMatchingCard(tp,c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,1,nil,67173574,e,tp):GetFirst() - if tc1 and tc2 then - Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc1:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc1:RegisterEffect(e2,true) - Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DISABLE) - e3:SetReset(RESET_EVENT+0x1fe0000) - tc2:RegisterEffect(e3,true) - local e4=Effect.CreateEffect(e:GetHandler()) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetCode(EFFECT_DISABLE_EFFECT) - e4:SetReset(RESET_EVENT+0x1fe0000) - tc2:RegisterEffect(e4,true) - end - Duel.SpecialSummonComplete() -end +--The Greatest Duo of the Seven Emperors +function c511001180.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_BATTLE_DAMAGE) + e1:SetCondition(c511001180.atkcon) + e1:SetTarget(c511001180.tgtg) + e1:SetOperation(c511001180.tgop) + c:RegisterEffect(e1) +end +function c511001180.atkcon(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + local att=Duel.GetAttackTarget() + return ep==tp and (a:IsSetCard(0x1048) or (att and att:IsSetCard(0x1048))) +end +function c511001180.tgfilter(c,code,e,tp) + return c:IsCode(code) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001180.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return (not ect or ect>=2) and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,nil,20785975,e,tp) + and Duel.IsExistingMatchingCard(c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,nil,67173574,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,0,0) +end +function c511001180.tgop(e,tp,eg,ep,ev,re,r,rp) + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if Duel.IsPlayerAffectedByEffect(tp,59822133) or (ect and ect<2) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tc1=Duel.SelectMatchingCard(tp,c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,1,nil,20785975,e,tp):GetFirst() + local tc2=Duel.SelectMatchingCard(tp,c511001180.tgfilter,tp,LOCATION_EXTRA,0,1,1,nil,67173574,e,tp):GetFirst() + if tc1 and tc2 then + Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc1:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc1:RegisterEffect(e2,true) + Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e3,true) + local e4=Effect.CreateEffect(e:GetHandler()) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetCode(EFFECT_DISABLE_EFFECT) + e4:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e4,true) + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001187.lua b/script/c511001187.lua index 8b1c6f99..899bdaa9 100644 --- a/script/c511001187.lua +++ b/script/c511001187.lua @@ -1,65 +1,68 @@ ---カオス狂宴 -function c511001187.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c511001187.exscon) - e1:SetCost(c511001187.cost) - e1:SetTarget(c511001187.target) - e1:SetOperation(c511001187.activate) - c:RegisterEffect(e1) -end -function c511001187.cfilter(c) - return c:IsFaceup() and c:IsSetCard(0x1048) -end -function c511001187.exscon(e,tp,eg,ep,ev,re,r,rp) - return Duel.IsExistingMatchingCard(c511001187.cfilter,tp,LOCATION_MZONE,0,1,nil) -end -function c511001187.filter(c) - return c:IsCode(511001186) and c:IsAbleToGraveAsCost() -end -function c511001187.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511001187.filter,tp,LOCATION_SZONE,0,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c511001187.filter,tp,LOCATION_SZONE,0,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c511001187.spfilter(c,e,tp) - local code=c:GetCode() - local class=_G["c"..code] - if class==nil then return false end - local no=class.xyz_number - return c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,true,false) - and no and no>=101 and no<=107 and c:IsSetCard(0x1048) -end -function c511001187.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.IsExistingMatchingCard(c511001187.spfilter,tp,LOCATION_EXTRA,0,3,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_EXTRA) -end -function c511001187.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local g=Duel.GetMatchingGroup(c511001187.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) - if g:GetCount()<3 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,3,3,nil) - local tc=sg:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,SUMMON_TYPE_XYZ,tp,tp,true,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - tc:CompleteProcedure() - tc=sg:GetNext() - end - Duel.SpecialSummonComplete() -end +--カオス狂宴 +function c511001187.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511001187.exscon) + e1:SetCost(c511001187.cost) + e1:SetTarget(c511001187.target) + e1:SetOperation(c511001187.activate) + c:RegisterEffect(e1) +end +function c511001187.cfilter(c) + return c:IsFaceup() and c:IsSetCard(0x1048) +end +function c511001187.exscon(e,tp,eg,ep,ev,re,r,rp) + return Duel.IsExistingMatchingCard(c511001187.cfilter,tp,LOCATION_MZONE,0,1,nil) +end +function c511001187.filter(c) + return c:IsCode(511001186) and c:IsAbleToGraveAsCost() +end +function c511001187.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001187.filter,tp,LOCATION_SZONE,0,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=Duel.SelectMatchingCard(tp,c511001187.filter,tp,LOCATION_SZONE,0,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001187.spfilter(c,e,tp) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,true,false) + and no and no>=101 and no<=107 and c:IsSetCard(0x1048) +end +function c511001187.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511001187.spfilter,tp,LOCATION_EXTRA,0,3,nil,e,tp) and (not ect or ect>=3) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,tp,LOCATION_EXTRA) +end +function c511001187.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<3 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil and ect<3 then return end + local g=Duel.GetMatchingGroup(c511001187.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()<3 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,3,3,nil) + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,SUMMON_TYPE_XYZ,tp,tp,true,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + tc:CompleteProcedure() + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001271.lua b/script/c511001271.lua index 14aae74c..05157722 100644 --- a/script/c511001271.lua +++ b/script/c511001271.lua @@ -1,52 +1,54 @@ ---Soul Arena -function c511001271.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --sp summon - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e2:SetCategory(CATEGORY_SPECIAL_SUMMON) - e2:SetCode(EVENT_DESTROYED) - e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c511001271.condition) - e2:SetCost(c511001271.cost) - e2:SetTarget(c511001271.target) - e2:SetOperation(c511001271.operation) - c:RegisterEffect(e2) -end -function c511001271.cfilter(c) - return c:IsType(TYPE_MONSTER) and c:GetRank()>=8 and c:IsSetCard(0x48) -end -function c511001271.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(c511001271.cfilter,1,nil) -end -function c511001271.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() - end - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) -end -function c511001271.spfilter(c,e,tp) - return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c511001271.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c511001271.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c511001271.operation(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c511001271.spfilter,tp,LOCATION_EXTRA,0,ft,ft,nil,e,tp) - if g:GetCount()>0 then - Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) - end -end +--Soul Arena +function c511001271.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --sp summon + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) + e2:SetCode(EVENT_DESTROYED) + e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511001271.condition) + e2:SetCost(c511001271.cost) + e2:SetTarget(c511001271.target) + e2:SetOperation(c511001271.operation) + c:RegisterEffect(e2) +end +function c511001271.cfilter(c) + return c:IsType(TYPE_MONSTER) and c:GetRank()>=8 and c:IsSetCard(0x48) +end +function c511001271.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(c511001271.cfilter,1,nil) +end +function c511001271.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + return g:GetCount()>0 and g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c511001271.spfilter(c,e,tp) + return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001271.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511001271.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001271.operation(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil then ft=math.min(ft,ect) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001271.spfilter,tp,LOCATION_EXTRA,0,ft,ft,nil,e,tp) + if g:GetCount()>0 then + Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) + end +end diff --git a/script/c511001334.lua b/script/c511001334.lua index 50bb598f..00bf2bf3 100644 --- a/script/c511001334.lua +++ b/script/c511001334.lua @@ -1,141 +1,122 @@ ---Double Fusion -function c511001334.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c511001334.cost) - e1:SetTarget(c511001334.target) - e1:SetOperation(c511001334.activate) - c:RegisterEffect(e1) -end -function c511001334.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.CheckLPCost(tp,500) end - Duel.PayLPCost(tp,500) -end -function c511001334.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c511001334.filter2(c,e,tp,m,f,chkf) - return c:IsType(TYPE_FUSION) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) -end -function c511001334.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) - end - end - return res - end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c511001334.activate(e,tp,eg,ep,ev,re,r,rp) - if true then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c511001334.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummonStep(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - tc:SetStatus(STATUS_SPSUMMON_STEP,false) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - else - local cg1=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_MZONE,0) - local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) - if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) - and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then - Duel.ConfirmCards(1-tp,cg1) - Duel.ConfirmCards(1-tp,cg2) - Duel.ShuffleHand(tp) - end - end - end - local tchkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local tmg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) - local res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,tmg1,nil,tchkf) - if not res then - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - local mg2=fgroup(tce,e,tp) - local mf=ce:GetValue() - res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,tchkf) - end - end - if res and not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.SelectYesNo(tp,aux.Stringid(33550694,0)) then - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c511001334.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - local mg2=nil - local sg2=nil - local ce=Duel.GetChainMaterial(tp) - if ce~=nil then - local fgroup=ce:GetTarget() - mg2=fgroup(ce,e,tp) - local mf=ce:GetValue() - sg2=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) - end - if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then - local sg=sg1:Clone() - if sg2 then sg:Merge(sg2) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local tg=sg:Select(tp,1,1,nil) - local tc=tg:GetFirst() - if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then - local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) - Duel.BreakEffect() - Duel.SpecialSummonStep(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - else - local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) - local fop=ce:GetOperation() - fop(ce,e,tp,tc,mat2) - end - tc:CompleteProcedure() - else - local cg1=Duel.GetFieldGroup(tp,LOCATION_HAND+LOCATION_MZONE,0) - local cg2=Duel.GetFieldGroup(tp,LOCATION_EXTRA,0) - if cg1:GetCount()>1 and cg2:IsExists(Card.IsFacedown,1,nil) - and Duel.IsPlayerCanSpecialSummon(tp) and not Duel.IsPlayerAffectedByEffect(tp,27581098) then - Duel.ConfirmCards(1-tp,cg1) - Duel.ConfirmCards(1-tp,cg2) - Duel.ShuffleHand(tp) - end - end - end - Duel.SpecialSummonComplete() -end +--Double Fusion +function c511001334.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001334.cost) + e1:SetTarget(c511001334.target) + e1:SetOperation(c511001334.activate) + c:RegisterEffect(e1) +end +function c511001334.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.CheckLPCost(tp,500) end + Duel.PayLPCost(tp,500) +end +function c511001334.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511001334.filter2(c,e,tp,m,f,chkf) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf) +end +function c511001334.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf) + end + end + return res + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511001334.activate(e,tp,eg,ep,ev,re,r,rp) + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001334.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummonStep(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + tc:SetStatus(STATUS_SPSUMMON_STEP,false) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end + local tchkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local tmg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) + local res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,tmg1,nil,tchkf) + if not res then + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + local mg2=fgroup(tce,e,tp) + local mf=ce:GetValue() + res=Duel.IsExistingMatchingCard(c511001334.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,tchkf) + end + end + if res and not Duel.IsPlayerAffectedByEffect(tp,59822133) and (not ect or ect>=2) and Duel.SelectYesNo(tp,aux.Stringid(33550694,0)) then + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511001334.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + local mg2=nil + local sg2=nil + local ce=Duel.GetChainMaterial(tp) + if ce~=nil then + local fgroup=ce:GetTarget() + mg2=fgroup(ce,e,tp) + local mf=ce:GetValue() + sg2=Duel.GetMatchingGroup(c511001334.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg2,mf,chkf) + end + if sg1:GetCount()>0 or (sg2~=nil and sg2:GetCount()>0) then + local sg=sg1:Clone() + if sg2 then sg:Merge(sg2) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local tg=sg:Select(tp,1,1,nil) + local tc=tg:GetFirst() + if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then + local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) + Duel.BreakEffect() + Duel.SpecialSummonStep(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + else + local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf) + local fop=ce:GetOperation() + fop(ce,e,tp,tc,mat2) + end + tc:CompleteProcedure() + end + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511001427.lua b/script/c511001427.lua index 42138394..12cc58ed 100644 --- a/script/c511001427.lua +++ b/script/c511001427.lua @@ -1,78 +1,83 @@ ---Chaos Hundred Universe -function c511001427.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c511001427.target) - e1:SetOperation(c511001427.activate) - c:RegisterEffect(e1) -end -function c511001427.filter(c,tp,tid) - local code=c:GetCode() - local class=_G["c"..code] - if class==nil then return false end - local no=class.xyz_number - return no and no>=101 and no<=107 and c:IsSetCard(0x1048) and c:IsReason(REASON_DESTROY) and c:GetTurnID()==tid - and c:GetPreviousControler()==tp -end -function c511001427.spfilter(c,e,tp) - local code=c:GetCode() - local class=_G["c"..code] - if class==nil then return false end - local no=class.xyz_number - return no and no>=101 and no<=107 and c:IsSetCard(0x1048) and c:IsCanBeSpecialSummoned(e,0,1-tp,false,false) -end -function c511001427.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local tid=Duel.GetTurnCount() - local g=Duel.GetMatchingGroup(c511001427.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tp,tid) - local ct=g:GetCount() - if chk==0 then return ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>=ct - and g:IsExists(Card.IsCanBeSpecialSummoned,ct,nil,e,0,tp,false,false) - and Duel.IsExistingMatchingCard(c511001427.spfilter,tp,LOCATION_EXTRA,0,ct,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,ct,0,0) -end -function c511001427.activate(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local g=Duel.GetMatchingGroup(c511001427.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tp,Duel.GetTurnCount()) - local ct=g:GetCount() - if Duel.GetLocationCount(tp,LOCATION_MZONE)0 then - local tc=g:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - tc=g:GetNext() - end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g2=Duel.SelectMatchingCard(tp,c511001427.spfilter,tp,LOCATION_EXTRA,0,ct,ct,nil,e,tp) - local tc2=g2:GetFirst() - while tc2 do - Duel.SpecialSummonStep(tc2,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc2:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc2:RegisterEffect(e2) - tc2=g2:GetNext() - end - Duel.SpecialSummonComplete() - end -end +--Chaos Hundred Universe +function c511001427.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001427.target) + e1:SetOperation(c511001427.activate) + c:RegisterEffect(e1) +end +function c511001427.filter(c,tp,tid) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return no and no>=101 and no<=107 and c:IsSetCard(0x1048) and c:IsReason(REASON_DESTROY) and c:GetTurnID()==tid + and c:GetPreviousControler()==tp +end +function c511001427.spfilter(c,e,tp) + local code=c:GetCode() + local class=_G["c"..code] + if class==nil then return false end + local no=class.xyz_number + return no and no>=101 and no<=107 and c:IsSetCard(0x1048) and c:IsCanBeSpecialSummoned(e,0,1-tp,false,false) +end +function c511001427.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local tid=Duel.GetTurnCount() + local g=Duel.GetMatchingGroup(c511001427.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tp,tid) + local ct=g:GetCount() + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return ct>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>=ct + and g:IsExists(Card.IsCanBeSpecialSummoned,ct,nil,e,0,tp,false,false) and (not ect or ect>=ct) + and Duel.IsExistingMatchingCard(c511001427.spfilter,tp,LOCATION_EXTRA,0,ct,nil,e,tp) + and (not Duel.IsPlayerAffectedByEffect(tp,59822133) or ct<2) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,ct,0,0) +end +function c511001427.activate(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(c511001427.filter,tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,tp,Duel.GetTurnCount()) + local ct=g:GetCount() + if Duel.GetLocationCount(tp,LOCATION_MZONE)1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil and ct>ect then return end + if ct>0 then + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g2=Duel.SelectMatchingCard(tp,c511001427.spfilter,tp,LOCATION_EXTRA,0,ct,ct,nil,e,tp) + local tc2=g2:GetFirst() + while tc2 do + Duel.SpecialSummonStep(tc2,0,tp,1-tp,false,false,POS_FACEUP_DEFENSE) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc2:RegisterEffect(e2) + tc2=g2:GetNext() + end + Duel.SpecialSummonComplete() + end +end diff --git a/script/c511001431.lua b/script/c511001431.lua index d0d3f1f5..e89409d4 100644 --- a/script/c511001431.lua +++ b/script/c511001431.lua @@ -1,112 +1,109 @@ ---CNo.106 溶岩掌ジャイアント・ハンド・レッド -function c511001431.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,nil,5,3) - c:EnableReviveLimit() - --Rank Up Check - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c511001431.rankupregcon) - e1:SetOperation(c511001431.rankupregop) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_CHANGE_DAMAGE) - e2:SetRange(LOCATION_MZONE) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetTargetRange(1,0) - e2:SetValue(c511001431.damval) - c:RegisterEffect(e2) - if not c511001431.global_check then - c511001431.global_check=true - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_ADJUST) - ge2:SetCountLimit(1) - ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - ge2:SetOperation(c511001431.numchk) - Duel.RegisterEffect(ge2,0) - end - --battle indestructable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e3:SetValue(c511001431.indes) - c:RegisterEffect(e3) - if not c511001431.global_check then - c511001431.global_check=true - local ge3=Effect.CreateEffect(c) - ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge3:SetCode(EVENT_ADJUST) - ge3:SetCountLimit(1) - ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - ge3:SetOperation(c511001431.numchk) - Duel.RegisterEffect(ge3,0) - end -end -c511001431.xyz_number=106 - -function c511001431.rumfilter(c) - return c:IsCode(88177324) and not c:IsPreviousLocation(LOCATION_OVERLAY) -end -function c511001431.rankupregcon(e,tp,eg,ep,ev,re,r,rp) - local rc=re:GetHandler() - return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001431.rumfilter,1,nil) -end -function c511001431.rankupregop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - --Negate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(55888045,0)) - e1:SetCategory(CATEGORY_DISABLE) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCondition(c511001431.discon) - e1:SetCost(c511001431.discost) - e1:SetTarget(c511001431.distg) - e1:SetOperation(c511001431.disop) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) -end -function c511001431.damval(e,re,val,r,rp,rc) - if e:GetHandler():IsPosition(POS_FACEUP_ATTACK) and bit.band(r,REASON_EFFECT)~=0 then return 0 - else return val end -end -function c511001431.discon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetOverlayGroup():IsExists(Card.IsCode,1,nil,63746411) -end -function c511001431.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end - e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) -end -function c511001431.filter(c) - return c:IsFaceup() and not c:IsDisabled() -end -function c511001431.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511001431.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end -end -function c511001431.disop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c511001431.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) - local tc=g:GetFirst() - while tc do - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - tc=g:GetNext() - end -end -function c511001431.numchk(e,tp,eg,ep,ev,re,r,rp) - Duel.CreateToken(tp,55888045) - Duel.CreateToken(1-tp,55888045) -end -function c511001431.indes(e,c) - return not c:IsSetCard(0x48) -end \ No newline at end of file +--CNo.106 溶岩掌ジャイアント・ハンド・レッド +function c511001431.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,5,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001431.rankupregcon) + e1:SetOperation(c511001431.rankupregop) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_CHANGE_DAMAGE) + e2:SetRange(LOCATION_MZONE) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetTargetRange(1,0) + e2:SetValue(c511001431.damval) + c:RegisterEffect(e2) + if not c511001431.global_check then + c511001431.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001431.numchk) + Duel.RegisterEffect(ge2,0) + end + --battle indestructable + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e3:SetValue(c511001431.indes) + c:RegisterEffect(e3) + if not c511001431.global_check then + c511001431.global_check=true + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511001431.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511001431.xyz_number=106 +function c511001431.rumfilter(c) + return c:IsCode(63746411) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001431.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and re + and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) + and e:GetHandler():GetMaterial():IsExists(c511001431.rumfilter,1,nil) +end +function c511001431.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --Negate + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(55888045,0)) + e1:SetCategory(CATEGORY_DISABLE) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCost(c511001431.discost) + e1:SetTarget(c511001431.distg) + e1:SetOperation(c511001431.disop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) +end +function c511001431.damval(e,re,val,r,rp,rc) + if e:GetHandler():IsPosition(POS_FACEUP_ATTACK) and bit.band(r,REASON_EFFECT)~=0 then return 0 + else return val end +end +function c511001431.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511001431.filter(c) + return c:IsFaceup() and not c:IsDisabled() +end +function c511001431.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001431.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end +end +function c511001431.disop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(c511001431.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + tc=g:GetNext() + end +end +function c511001431.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,55888045) + Duel.CreateToken(1-tp,55888045) +end +function c511001431.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001608.lua b/script/c511001608.lua index 3000fb9c..8570f17a 100644 --- a/script/c511001608.lua +++ b/script/c511001608.lua @@ -1,202 +1,208 @@ ---No.93 希望皇ホープ・カイザー -function c511001608.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,nil,12,2) - c:EnableReviveLimit() - --spsummon - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(511001608,0)) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetCountLimit(1) - e1:SetRange(LOCATION_MZONE) - e1:SetTarget(c511001608.sptg) - e1:SetOperation(c511001608.spop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e2:SetRange(LOCATION_MZONE) - e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e2:SetCondition(c511001608.indcon) - e2:SetValue(1) - c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) - c:RegisterEffect(e3) - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_SINGLE) - e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e4:SetRange(LOCATION_MZONE) - e4:SetCode(EFFECT_IMMUNE_EFFECT) - e4:SetCondition(c511001608.indcon) - e4:SetValue(c511001608.efilter) - c:RegisterEffect(e4) - --no damage - local e5=Effect.CreateEffect(c) - e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CHANGE_DAMAGE) - e5:SetRange(LOCATION_MZONE) - e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e5:SetTargetRange(1,0) - e5:SetCondition(c511001608.indcon) - e5:SetValue(c511001608.damval) - c:RegisterEffect(e5) - --destroy - local e6=Effect.CreateEffect(c) - e6:SetCategory(CATEGORY_DESTROY) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e6:SetCode(EVENT_PHASE+PHASE_END) - e6:SetRange(LOCATION_MZONE) - e6:SetCountLimit(1) - e6:SetCondition(c511001608.descon) - e6:SetTarget(c511001608.destg) - e6:SetOperation(c511001608.desop) - c:RegisterEffect(e6) - --control - local e7=Effect.CreateEffect(c) - e7:SetDescription(aux.Stringid(511001608,1)) - e7:SetCategory(CATEGORY_CONTROL) - e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e7:SetCode(EVENT_DESTROYED) - e7:SetCondition(c511001608.ctcon) - e7:SetTarget(c511001608.cttg) - e7:SetOperation(c511001608.ctop) - c:RegisterEffect(e7) - --battle indestructable - local e8=Effect.CreateEffect(c) - e8:SetType(EFFECT_TYPE_SINGLE) - e8:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e8:SetValue(c511001608.indes) - c:RegisterEffect(e8) - if not c511001608.global_check then - c511001608.global_check=true - c511001608[0]=0 - c511001608[1]=0 - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - ge1:SetCode(EVENT_DESTROY) - ge1:SetOperation(c511001608.regop) - Duel.RegisterEffect(ge1,0) - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_ADJUST) - ge2:SetCountLimit(1) - ge2:SetOperation(c511001608.clear) - Duel.RegisterEffect(ge2,0) - local ge3=Effect.CreateEffect(c) - ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge3:SetCode(EVENT_ADJUST) - ge3:SetCountLimit(1) - ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - ge3:SetOperation(c511001608.numchk) - Duel.RegisterEffect(ge3,0) - end -end -c511001608.xyz_number=93 -function c511001608.chkfilter(c,tp,re) - return c:IsSetCard(0x48) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp -end -function c511001608.regop(e,tp,eg,ep,ev,re,r,rp) - local g1=eg:Filter(c511001608.chkfilter,nil,tp) - local g2=eg:Filter(c511001608.chkfilter,nil,1-tp) - c511001608[tp]=c511001608[tp]+g1:GetCount() - c511001608[1-tp]=c511001608[1-tp]+g2:GetCount() -end -function c511001608.clear(e,tp,eg,ep,ev,re,r,rp) - c511001608[0]=0 - c511001608[1]=0 -end -function c511001608.filter(c,e,tp) - return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c511001608.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - local ct=e:GetHandler():GetOverlayCount() - if chk==0 then return ct>0 and e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct - and Duel.IsExistingMatchingCard(c511001608.filter,tp,LOCATION_EXTRA,0,ct,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,tp,LOCATION_EXTRA) -end -function c511001608.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local ct=c:GetOverlayCount() - if Duel.GetLocationCount(tp,LOCATION_MZONE)0 then - Duel.HintSelection(g) - Duel.Destroy(g,REASON_EFFECT) - end -end -function c511001608.ctcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return c:IsReason(REASON_EFFECT) and rp~=tp and c:GetPreviousControler()==tp and re - and re:GetHandler():IsType(TYPE_MONSTER) -end -function c511001608.cttg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - local tc=re:GetHandler() - if re and tc:IsLocation(LOCATION_MZONE) and tc:IsControlerCanBeChanged() then - Duel.SetTargetCard(tc) - Duel.SetOperationInfo(0,CATEGORY_CONTROL,tc,1,0,0) - end -end -function c511001608.ctop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if tc and tc:IsRelateToEffect(e) then - Duel.GetControl(tc,tp) - end -end -function c511001608.numchk(e,tp,eg,ep,ev,re,r,rp) - Duel.CreateToken(tp,23187256) - Duel.CreateToken(1-tp,23187256) -end -function c511001608.indes(e,c) - return not c:IsSetCard(0x48) -end +--No.93 希望皇ホープ・カイザー +function c511001608.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,12,2) + c:EnableReviveLimit() + --spsummon + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(511001608,0)) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetCountLimit(1) + e1:SetRange(LOCATION_MZONE) + e1:SetTarget(c511001608.sptg) + e1:SetOperation(c511001608.spop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e2:SetRange(LOCATION_MZONE) + e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e2:SetCondition(c511001608.indcon) + e2:SetValue(1) + c:RegisterEffect(e2) + local e3=e2:Clone() + e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) + c:RegisterEffect(e3) + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_SINGLE) + e4:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e4:SetRange(LOCATION_MZONE) + e4:SetCode(EFFECT_IMMUNE_EFFECT) + e4:SetCondition(c511001608.indcon) + e4:SetValue(c511001608.efilter) + c:RegisterEffect(e4) + --no damage + local e5=Effect.CreateEffect(c) + e5:SetType(EFFECT_TYPE_FIELD) + e5:SetCode(EFFECT_CHANGE_DAMAGE) + e5:SetRange(LOCATION_MZONE) + e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e5:SetTargetRange(1,0) + e5:SetCondition(c511001608.indcon) + e5:SetValue(c511001608.damval) + c:RegisterEffect(e5) + --destroy + local e6=Effect.CreateEffect(c) + e6:SetCategory(CATEGORY_DESTROY) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e6:SetCode(EVENT_PHASE+PHASE_END) + e6:SetRange(LOCATION_MZONE) + e6:SetCountLimit(1) + e6:SetCondition(c511001608.descon) + e6:SetTarget(c511001608.destg) + e6:SetOperation(c511001608.desop) + c:RegisterEffect(e6) + --control + local e7=Effect.CreateEffect(c) + e7:SetDescription(aux.Stringid(511001608,1)) + e7:SetCategory(CATEGORY_CONTROL) + e7:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) + e7:SetCode(EVENT_DESTROYED) + e7:SetCondition(c511001608.ctcon) + e7:SetTarget(c511001608.cttg) + e7:SetOperation(c511001608.ctop) + c:RegisterEffect(e7) + --battle indestructable + local e8=Effect.CreateEffect(c) + e8:SetType(EFFECT_TYPE_SINGLE) + e8:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e8:SetValue(c511001608.indes) + c:RegisterEffect(e8) + if not c511001608.global_check then + c511001608.global_check=true + c511001608[0]=0 + c511001608[1]=0 + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + ge1:SetCode(EVENT_DESTROY) + ge1:SetOperation(c511001608.regop) + Duel.RegisterEffect(ge1,0) + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetOperation(c511001608.clear) + Duel.RegisterEffect(ge2,0) + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_ADJUST) + ge3:SetCountLimit(1) + ge3:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge3:SetOperation(c511001608.numchk) + Duel.RegisterEffect(ge3,0) + end +end +c511001608.xyz_number=93 +function c511001608.chkfilter(c,tp,re) + return c:IsSetCard(0x48) and c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp +end +function c511001608.regop(e,tp,eg,ep,ev,re,r,rp) + local g1=eg:Filter(c511001608.chkfilter,nil,tp) + local g2=eg:Filter(c511001608.chkfilter,nil,1-tp) + c511001608[tp]=c511001608[tp]+g1:GetCount() + c511001608[1-tp]=c511001608[1-tp]+g2:GetCount() +end +function c511001608.clear(e,tp,eg,ep,ev,re,r,rp) + c511001608[0]=0 + c511001608[1]=0 +end +function c511001608.filter(c,e,tp) + return c:IsSetCard(0x48) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511001608.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + local ct=e:GetHandler():GetOverlayCount() + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return (not ect or ect>=ct) and ct>0 and e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_EFFECT) + and Duel.GetLocationCount(tp,LOCATION_MZONE)>=ct and Duel.IsExistingMatchingCard(c511001608.filter,tp,LOCATION_EXTRA,0,ct,nil,e,tp) + and (not Duel.IsPlayerAffectedByEffect(tp,59822133) or ct<2) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,ct,tp,LOCATION_EXTRA) +end +function c511001608.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local ct=c:GetOverlayCount() + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ct>ft then return end + if ct>1 and Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil and ct>ect then return end + local g=Duel.GetMatchingGroup(c511001608.filter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end +function c511001608.ctcon(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + return c:IsReason(REASON_EFFECT) and rp~=tp and c:GetPreviousControler()==tp and re + and re:GetHandler():IsType(TYPE_MONSTER) +end +function c511001608.cttg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + local tc=re:GetHandler() + if re and tc:IsLocation(LOCATION_MZONE) and tc:IsControlerCanBeChanged() then + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_CONTROL,tc,1,0,0) + end +end +function c511001608.ctop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + Duel.GetControl(tc,tp) + end +end +function c511001608.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,23187256) + Duel.CreateToken(1-tp,23187256) +end +function c511001608.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001781.lua b/script/c511001781.lua index c6d2ee0c..9b5d9d47 100644 --- a/script/c511001781.lua +++ b/script/c511001781.lua @@ -1,247 +1,232 @@ ---Number C6: Chronomaly Chaos Atlandis (Anime) -function c511001781.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,nil,7,3) - c:EnableReviveLimit() - --Rank Up Check - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c511001781.rankupregcon) - e1:SetOperation(c511001781.rankupregop) - c:RegisterEffect(e1) - --battle indestructable - local e7=Effect.CreateEffect(c) - e7:SetType(EFFECT_TYPE_SINGLE) - e7:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e7:SetValue(c511001781.indes) - c:RegisterEffect(e7) - if not c511001781.global_check then - c511001781.global_check=true - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_ADJUST) - ge2:SetCountLimit(1) - ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - ge2:SetOperation(c511001781.numchk) - Duel.RegisterEffect(ge2,0) - end -end -c511001781.xyz_number=6 -function c511001781.rumfilter(c) - return c:IsCode(9161357) and not c:IsPreviousLocation(LOCATION_OVERLAY) -end -function c511001781.rankupregcon(e,tp,eg,ep,ev,re,r,rp) - local rc=re:GetHandler() - return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) and e:GetHandler():GetMaterial():IsExists(c511001781.rumfilter,1,nil) -end -function c511001781.rankupregop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - --equip - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(876330,0)) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetTarget(c511001781.eqtg) - e1:SetOperation(c511001781.eqop) - e1:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e1) - --equip 2 - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(32559361,0)) - e2:SetCategory(CATEGORY_EQUIP) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) - e2:SetCode(EVENT_BATTLED) - e2:SetTarget(c511001781.eqtg2) - e2:SetOperation(c511001781.eqop) - e2:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e2) - --atkup - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) - e3:SetCode(EFFECT_UPDATE_ATTACK) - e3:SetRange(LOCATION_MZONE) - e3:SetValue(c511001781.val) - e3:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e3) - -- - local e4=Effect.CreateEffect(c) - e4:SetDescription(aux.Stringid(16037007,0)) - e4:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) - e4:SetType(EFFECT_TYPE_QUICK_O) - e4:SetRange(LOCATION_MZONE) - e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e4:SetCode(EVENT_CHAINING) - e4:SetCondition(c511001781.discon) - e4:SetCost(c511001781.discost) - e4:SetTarget(c511001781.distg) - e4:SetOperation(c511001781.disop) - e4:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e4) - --lp 1 - local e5=Effect.CreateEffect(c) - e5:SetDescription(aux.Stringid(84926738,1)) - e5:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND) - e5:SetType(EFFECT_TYPE_QUICK_O) - e5:SetCode(EVENT_FREE_CHAIN) - e5:SetRange(LOCATION_MZONE) - e5:SetCondition(c511001781.lpcon) - e5:SetCost(c511001781.lpcost) - e5:SetTarget(c511001781.lptg) - e5:SetOperation(c511001781.lpop) - e5:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e5) - --spsummon - local e6=Effect.CreateEffect(c) - e6:SetDescription(aux.Stringid(38107923,1)) - e6:SetCategory(CATEGORY_SPECIAL_SUMMON) - e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e6:SetRange(LOCATION_MZONE) - e6:SetCode(EVENT_PHASE+PHASE_STANDBY) - e6:SetCondition(c511001781.spcon) - e6:SetTarget(c511001781.sptg) - e6:SetOperation(c511001781.spop) - e6:SetReset(RESET_EVENT+0x1fe0000) - c:RegisterEffect(e6) -end -function c511001781.eqfilter(c,tp) - return c:IsSetCard(0x7f) and (c:IsAbleToChangeControler() or c:IsControler(tp)) -end -function c511001781.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001781.eqfilter(chkc,tp) end - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and Duel.IsExistingTarget(c511001781.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - local g=Duel.SelectTarget(tp,c511001781.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) -end -function c511001781.eqop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - local tc=Duel.GetFirstTarget() - if tc:IsRelateToEffect(e) then - if c:IsFaceup() and c:IsRelateToEffect(e) and tc~=c then - if not Duel.Equip(tp,tc,c,false) then return end - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) - e1:SetCode(EFFECT_EQUIP_LIMIT) - e1:SetReset(RESET_EVENT+0x1fe0000) - e1:SetValue(c511001781.eqlimit) - tc:RegisterEffect(e1) - tc:RegisterFlagEffect(511001781,RESET_EVENT+0x1fe0000,0,0) - else Duel.SendtoGrave(tc,REASON_EFFECT) end - end -end -function c511001781.eqlimit(e,c) - return e:GetOwner()==c -end -function c511001781.eqtg2(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - local tc=c:GetBattleTarget() - if chk==0 then return tc and not tc:IsType(TYPE_TOKEN) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and tc:IsAbleToChangeControler() and not c:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsOnField() end - Duel.SetTargetCard(tc) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,tc,1,0,0) -end -function c511001781.eqtc(c) - return c:GetFlagEffect(511001781)>0 -end -function c511001781.val(e,c) - return c:GetEquipGroup():FilterCount(c511001781.eqtc,nil)*1000 -end -function c511001781.discon(e,tp,eg,ep,ev,re,r,rp) - if not c511001781.eqcon(e,tp,eg,ep,ev,re,r,rp) then return false end - if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end - if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end - local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) - return tg and tg:IsContains(e:GetHandler()) and Duel.IsChainDisablable(ev) -end -function c511001781.discost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(Card.IsAbleToGraveAsCost,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil) - Duel.SendtoGrave(g,REASON_COST) -end -function c511001781.distg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) - if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) - end -end -function c511001781.disop(e,tp,eg,ep,ev,re,r,rp) - Duel.NegateEffect(ev) - if re:GetHandler():IsRelateToEffect(re) then - Duel.Destroy(eg,REASON_EFFECT) - end -end -function c511001781.lpcon(e,tp,eg,ep,ev,re,r,rp) - if not c511001781.eqcon(e,tp,eg,ep,ev,re,r,rp) then return false end - local res,teg,tep,tev,tre,tr,trp=Duel.CheckEvent(EVENT_CHAINING,true) - if res and tre then - if tre==e then return false end - end - return Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()==PHASE_MAIN1 -end -function c511001781.lptg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLP(1-tp)~=1 end -end -function c511001781.lpcost(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return c:CheckRemoveOverlayCard(tp,3,REASON_COST) end - local ov=c:GetOverlayGroup() - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ) - local sg=ov:Select(tp,3,3,nil) - Duel.SendtoGrave(sg,REASON_COST) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetTargetRange(1,0) - e1:SetCode(EFFECT_CANNOT_BP) - e1:SetReset(RESET_PHASE+PHASE_END) - Duel.RegisterEffect(e1,tp) -end -function c511001781.lpop(e,tp,eg,ep,ev,re,r,rp) - Duel.SetLP(1-tp,1) -end -function c511001781.spcon(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - return tp==Duel.GetTurnPlayer() and c:GetOverlayCount()==0 -end -function c511001781.spfilter(c,e,tp,mc) - return c:IsCode(9161357) and mc:IsCanBeXyzMaterial(c) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,true) -end -function c511001781.sptg(e,tp,eg,ep,ev,re,r,rp,chk) - local c=e:GetHandler() - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 - and Duel.IsExistingMatchingCard(c511001781.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,c) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) -end -function c511001781.spop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsControler(1-tp) or c:IsImmuneToEffect(e) then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c511001781.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,c) - local sc=g:GetFirst() - if sc then - local mg=c:GetOverlayGroup() - if mg:GetCount()~=0 then - Duel.Overlay(sc,mg) - end - sc:SetMaterial(Group.FromCards(c)) - Duel.Overlay(sc,Group.FromCards(c)) - Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,true,POS_FACEUP) - sc:CompleteProcedure() - end -end -function c511001781.numchk(e,tp,eg,ep,ev,re,r,rp) - Duel.CreateToken(tp,6387204) - Duel.CreateToken(1-tp,6387204) -end -function c511001781.indes(e,c) - return not c:IsSetCard(0x48) -end +--CNo.6 先史遺産カオス・アトランタル +function c511001781.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,7,3) + c:EnableReviveLimit() + --Rank Up Check + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c511001781.rankupregcon) + e1:SetOperation(c511001781.rankupregop) + c:RegisterEffect(e1) + --battle indestructable + local e7=Effect.CreateEffect(c) + e7:SetType(EFFECT_TYPE_SINGLE) + e7:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) + e7:SetValue(c511001781.indes) + c:RegisterEffect(e7) + if not c511001781.global_check then + c511001781.global_check=true + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge2:SetCode(EVENT_ADJUST) + ge2:SetCountLimit(1) + ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) + ge2:SetOperation(c511001781.numchk) + Duel.RegisterEffect(ge2,0) + end +end +c511001781.xyz_number=6 +function c511001781.rumfilter(c) + return c:IsCode(9161357) and not c:IsPreviousLocation(LOCATION_OVERLAY) +end +function c511001781.rankupregcon(e,tp,eg,ep,ev,re,r,rp) + local rc=re:GetHandler() + return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) and re + and (rc:IsSetCard(0x95) or rc:IsCode(100000581) or rc:IsCode(111011002) or rc:IsCode(511000580) or rc:IsCode(511002068) or rc:IsCode(511002164) or rc:IsCode(93238626)) + and e:GetHandler():GetMaterial():IsExists(c511001781.rumfilter,1,nil) +end +function c511001781.rankupregop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + --equip + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(876330,0)) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetTarget(c511001781.eqtg) + e1:SetOperation(c511001781.eqop) + e1:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e1) + --equip 2 + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(32559361,0)) + e2:SetCategory(CATEGORY_EQUIP) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) + e2:SetCode(EVENT_BATTLED) + e2:SetTarget(c511001781.eqtg2) + e2:SetOperation(c511001781.eqop) + e2:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e2) + --atkup + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) + e3:SetCode(EFFECT_UPDATE_ATTACK) + e3:SetRange(LOCATION_MZONE) + e3:SetValue(c511001781.val) + e3:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e3) + -- + local e4=Effect.CreateEffect(c) + e4:SetDescription(aux.Stringid(16037007,0)) + e4:SetCategory(CATEGORY_DISABLE+CATEGORY_DESTROY) + e4:SetType(EFFECT_TYPE_QUICK_O) + e4:SetRange(LOCATION_MZONE) + e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) + e4:SetCode(EVENT_CHAINING) + e4:SetCondition(c511001781.discon) + e4:SetCost(c511001781.discost) + e4:SetTarget(c511001781.distg) + e4:SetOperation(c511001781.disop) + e4:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e4) + --lp 1 + local e5=Effect.CreateEffect(c) + e5:SetDescription(aux.Stringid(84926738,1)) + e5:SetType(EFFECT_TYPE_IGNITION) + e5:SetRange(LOCATION_MZONE) + e5:SetCost(c511001781.lpcost) + e5:SetTarget(c511001781.lptg) + e5:SetOperation(c511001781.lpop) + e5:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e5) + --spsummon + local e6=Effect.CreateEffect(c) + e6:SetDescription(aux.Stringid(38107923,1)) + e6:SetCategory(CATEGORY_SPECIAL_SUMMON) + e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e6:SetRange(LOCATION_MZONE) + e6:SetCode(EVENT_PHASE+PHASE_STANDBY) + e6:SetCondition(c511001781.spcon) + e6:SetTarget(c511001781.sptg) + e6:SetOperation(c511001781.spop) + e6:SetReset(RESET_EVENT+0x1fe0000) + c:RegisterEffect(e6) +end +function c511001781.eqfilter(c,tp) + return c:IsSetCard(0x7f) and (c:IsAbleToChangeControler() or c:IsControler(tp)) +end +function c511001781.eqtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c511001781.eqfilter(chkc,tp) end + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and Duel.IsExistingTarget(c511001781.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + local g=Duel.SelectTarget(tp,c511001781.eqfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,g,1,0,0) +end +function c511001781.eqop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local tc=Duel.GetFirstTarget() + if tc and tc:IsRelateToEffect(e) then + if c:IsFaceup() and c:IsRelateToEffect(e) and tc~=c then + if not Duel.Equip(tp,tc,c,false) then return end + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) + e1:SetCode(EFFECT_EQUIP_LIMIT) + e1:SetReset(RESET_EVENT+0x1fe0000) + e1:SetValue(c511001781.eqlimit) + tc:RegisterEffect(e1) + tc:RegisterFlagEffect(511001781,RESET_EVENT+0x1fe0000,0,0) + else Duel.SendtoGrave(tc,REASON_EFFECT) end + end +end +function c511001781.eqlimit(e,c) + return e:GetOwner()==c +end +function c511001781.eqtg2(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + local tc=c:GetBattleTarget() + if chk==0 then return tc and not tc:IsType(TYPE_TOKEN) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and tc:IsAbleToChangeControler() and not c:IsStatus(STATUS_BATTLE_DESTROYED) and c:IsOnField() end + Duel.SetTargetCard(tc) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,tc,1,0,0) +end +function c511001781.eqtc(c) + return c:GetFlagEffect(511001781)>0 +end +function c511001781.val(e,c) + return c:GetEquipGroup():FilterCount(c511001781.eqtc,nil)*1000 +end +function c511001781.discon(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) then return false end + if not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end + local tg=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS) + return tg and tg:IsContains(e:GetHandler()) and Duel.IsChainDisablable(ev) +end +function c511001781.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetEquipGroup():IsExists(Card.IsAbleToGraveAsCost,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) + local g=e:GetHandler():GetEquipGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil) + Duel.SendtoGrave(g,REASON_COST) +end +function c511001781.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0) + if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then + Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) + end +end +function c511001781.disop(e,tp,eg,ep,ev,re,r,rp) + Duel.NegateEffect(ev) + if re:GetHandler():IsRelateToEffect(re) then + Duel.Destroy(eg,REASON_EFFECT) + end +end +function c511001781.lpcost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,3,REASON_COST) and Duel.GetActivityCount(tp,ACTIVITY_ATTACK)==0 end + e:GetHandler():RemoveOverlayCard(tp,3,3,REASON_COST) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetTargetRange(1,0) + e1:SetReset(RESET_PHASE+PHASE_END) + Duel.RegisterEffect(e1,tp) +end +function c511001781.lptg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLP(1-tp)~=1 end +end +function c511001781.lpop(e,tp,eg,ep,ev,re,r,rp) + Duel.SetLP(1-tp,1) +end +function c511001781.spcon(e,tp,eg,ep,ev,re,r,rp) + return tp==Duel.GetTurnPlayer() and e:GetHandler():GetOverlayCount()==0 +end +function c511001781.spfilter(c,e,tp,mc) + return c:IsCode(9161357) and mc:IsCanBeXyzMaterial(c) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,true) +end +function c511001781.sptg(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1 + and Duel.IsExistingMatchingCard(c511001781.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,c) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) +end +function c511001781.spop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsControler(1-tp) or c:IsImmuneToEffect(e) then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511001781.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,c) + local sc=g:GetFirst() + if sc then + local mg=c:GetOverlayGroup() + if mg:GetCount()~=0 then + Duel.Overlay(sc,mg) + end + sc:SetMaterial(Group.FromCards(c)) + Duel.Overlay(sc,Group.FromCards(c)) + Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,true,POS_FACEUP) + sc:CompleteProcedure() + end +end +function c511001781.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,6387204) + Duel.CreateToken(1-tp,6387204) +end +function c511001781.indes(e,c) + return not c:IsSetCard(0x48) +end diff --git a/script/c511001954.lua b/script/c511001954.lua index d24b0128..333ff551 100644 --- a/script/c511001954.lua +++ b/script/c511001954.lua @@ -1,55 +1,55 @@ ---BF-孤高のシルバー・ウィンド -function c511001954.initial_effect(c) - --synchro summon - aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x33),aux.NonTuner(nil),1) - c:EnableReviveLimit() - --destroy - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(95100014,0)) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetType(EFFECT_TYPE_IGNITION) - e1:SetRange(LOCATION_MZONE) - e1:SetCountLimit(1) - e1:SetCost(c511001954.descost) - e1:SetTarget(c511001954.destg) - e1:SetOperation(c511001954.desop) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD) - e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) - e2:SetRange(LOCATION_MZONE) - e2:SetTargetRange(LOCATION_MZONE,0) - e2:SetTarget(c511001954.indtg) - e2:SetCountLimit(1) - e2:SetValue(aux.TRUE) - c:RegisterEffect(e2) -end -function c511001954.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - e:GetHandler():RegisterEffect(e1) -end -function c511001954.filter(c,atk) - return c:IsFaceup() and c:GetDefense()<=atk and c:IsDestructable() -end -function c511001954.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511001954.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) end - local g=Duel.GetMatchingGroup(c511001954.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e:GetHandler():GetAttack()) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) -end -function c511001954.desop(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) - local g=Duel.SelectMatchingCard(tp,c511001954.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,2,nil,e:GetHandler():GetAttack()) - if g:GetCount()>0 then - Duel.HintSelection(g) - Duel.Destroy(g,REASON_EFFECT) - end -end -function c511001954.indtg(e,c) - return c:IsFaceup() and c:IsSetCard(0x33) -end +--BF-孤高のシルバー・ウィンド +function c511001954.initial_effect(c) + --synchro summon + aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x33),aux.NonTuner(nil),2) + c:EnableReviveLimit() + --destroy + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(95100014,0)) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetType(EFFECT_TYPE_IGNITION) + e1:SetRange(LOCATION_MZONE) + e1:SetCountLimit(1) + e1:SetCost(c511001954.descost) + e1:SetTarget(c511001954.destg) + e1:SetOperation(c511001954.desop) + c:RegisterEffect(e1) + -- + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD) + e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT) + e2:SetRange(LOCATION_MZONE) + e2:SetTargetRange(LOCATION_MZONE,0) + e2:SetTarget(c511001954.indtg) + e2:SetCountLimit(1) + e2:SetValue(aux.TRUE) + c:RegisterEffect(e2) +end +function c511001954.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():GetAttackAnnouncedCount()==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + e:GetHandler():RegisterEffect(e1) +end +function c511001954.filter(c,atk) + return c:IsFaceup() and c:GetDefense()<=atk and c:IsDestructable() +end +function c511001954.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001954.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,e:GetHandler():GetAttack()) end + local g=Duel.GetMatchingGroup(c511001954.filter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,e:GetHandler():GetAttack()) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,1,0,0) +end +function c511001954.desop(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) + local g=Duel.SelectMatchingCard(tp,c511001954.filter,tp,LOCATION_MZONE,LOCATION_MZONE,1,2,nil,e:GetHandler():GetAttack()) + if g:GetCount()>0 then + Duel.HintSelection(g) + Duel.Destroy(g,REASON_EFFECT) + end +end +function c511001954.indtg(e,c) + return c:IsFaceup() and c:IsSetCard(0x33) +end diff --git a/script/c511002395.lua b/script/c511002395.lua index 4de3d05b..258aae6e 100644 --- a/script/c511002395.lua +++ b/script/c511002395.lua @@ -1,45 +1,49 @@ ---Construct Element -function c511002395.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c511002395.target) - e1:SetOperation(c511002395.activate) - c:RegisterEffect(e1) -end -function c511002395.filter(c) - return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsAbleToExtra() and c:IsSetCard(0x3008) -end -function c511002395.spfilter(c,e,tp,lv) - return c:IsType(TYPE_FUSION) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) -end -function c511002395.lvfilter(c,lv) - return c:GetLevel()==lv -end -function c511002395.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511002395.filter,tp,LOCATION_MZONE,0,1,nil) end - local sg=Duel.GetMatchingGroup(c511002395.filter,tp,LOCATION_MZONE,0,nil) - Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) -end -function c511002395.activate(e,tp,eg,ep,ev,re,r,rp) - local sg=Duel.GetMatchingGroup(c511002395.filter,tp,LOCATION_MZONE,0,nil) - if Duel.SendtoDeck(sg,nil,0,REASON_EFFECT)>0 then - local spg=Group.CreateGroup() - local tc=sg:GetFirst() - while tc do - local sumg=Duel.GetMatchingGroup(c511002395.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) - sumg:Sub(spg) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local gc=sumg:FilterSelect(tp,c511002395.lvfilter,1,1,nil,tc:GetPreviousLevelOnField()):GetFirst() - if gc then - spg:AddCard(gc) - end - tc=sg:GetNext() - end - if spg:GetCount()>0 then - Duel.SpecialSummon(spg,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - end - end -end +--Construct Element +function c511002395.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_TODECK+CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002395.target) + e1:SetOperation(c511002395.activate) + c:RegisterEffect(e1) +end +function c511002395.filter(c) + return c:IsFaceup() and c:IsType(TYPE_FUSION) and c:IsAbleToExtra() and c:IsSetCard(0x3008) +end +function c511002395.spfilter(c,e,tp,lv) + return c:IsType(TYPE_FUSION) and c:IsSetCard(0x3008) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) +end +function c511002395.lvfilter(c,lv) + return c:GetLevel()==lv +end +function c511002395.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511002395.filter,tp,LOCATION_MZONE,0,1,nil) end + local sg=Duel.GetMatchingGroup(c511002395.filter,tp,LOCATION_MZONE,0,nil) + Duel.SetOperationInfo(0,CATEGORY_TODECK,sg,sg:GetCount(),0,0) +end +function c511002395.activate(e,tp,eg,ep,ev,re,r,rp) + local sg=Duel.GetMatchingGroup(c511002395.filter,tp,LOCATION_MZONE,0,nil) + local ct=Duel.SendtoDeck(sg,nil,0,REASON_EFFECT) + if ct>0 then + if Duel.IsPlayerAffectedByEffect(tp,59822133) and ct>1 then return end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil and ct>ect then return end + local spg=Group.CreateGroup() + local tc=sg:GetFirst() + while tc do + local sumg=Duel.GetMatchingGroup(c511002395.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + sumg:Sub(spg) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local gc=sumg:FilterSelect(tp,c511002395.lvfilter,1,1,nil,tc:GetPreviousLevelOnField()):GetFirst() + if gc then + spg:AddCard(gc) + end + tc=sg:GetNext() + end + if spg:GetCount()>0 then + Duel.SpecialSummon(spg,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + end + end +end diff --git a/script/c511002620.lua b/script/c511002620.lua index 23bf772d..9b1bb0fe 100644 --- a/script/c511002620.lua +++ b/script/c511002620.lua @@ -1,114 +1,117 @@ ---Underworld Resonance - Synchro Fusion -function c511002620.initial_effect(c) - --synchro effect - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c511002620.target) - e1:SetOperation(c511002620.activate) - c:RegisterEffect(e1) -end -function c511002620.chk(e,tp) - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - for i=0,4 do - for j=0,4 do - local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,i) - local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,j) - local g=Group.FromCards(c1,c2) - if c1 and c2 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() then - if Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) - and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) then - return true - end - end - end - end - for i=0,4 do - for j=0,4 do - for k=0,4 do - local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,i) - local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,j) - local c3=Duel.GetFieldCard(tp,LOCATION_MZONE,k) - local g=Group.FromCards(c1,c2,c3) - if c1 and c2 and c3 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() - and c3:IsCanBeFusionMaterial() then - if Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) - and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) then - return true - end - end - end - end - end - for i=0,4 do - for j=0,4 do - for k=0,4 do - for l=0,4 do - local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,i) - local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,j) - local c3=Duel.GetFieldCard(tp,LOCATION_MZONE,k) - local c4=Duel.GetFieldCard(tp,LOCATION_MZONE,l) - local g=Group.FromCards(c1,c2,c3,c4) - if c1 and c2 and c3 and c4 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() - and c3:IsCanBeFusionMaterial() and c4:IsCanBeFusionMaterial() then - if Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) - and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) then - return true - end - end - end - end - end - end - local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,0) - local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,1) - local c3=Duel.GetFieldCard(tp,LOCATION_MZONE,2) - local c4=Duel.GetFieldCard(tp,LOCATION_MZONE,3) - local c5=Duel.GetFieldCard(tp,LOCATION_MZONE,4) - local g=Group.FromCards(c1,c2,c3,c4,c5) - return c1 and c2 and c3 and c4 and c5 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() and c3:IsCanBeFusionMaterial() - and c4:IsCanBeFusionMaterial() and c5:IsCanBeFusionMaterial() - and Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) - and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) -end -function c511002620.filter1(c,e) - return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) -end -function c511002620.filter2(c,e,tp,m,f) - return c:IsType(TYPE_FUSION) and (not f or f(c)) - and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil) -end -function c511002620.synfilter(c,mg) - return c:IsSynchroSummonable(nil,mg) and mg:CheckWithSumEqual(Card.GetSynchroLevel,c:GetLevel(),mg:GetCount(),mg:GetCount(),c) -end -function c511002620.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return c511002620.chk(e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) -end -function c511002620.activate(e,tp,eg,ep,ev,re,r,rp) - if not c511002620.chk(e,tp) then return end - local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp - local mg1=Duel.GetMatchingGroup(c511002620.filter1,tp,LOCATION_MZONE,0,nil,e) - local sg1=Duel.GetMatchingGroup(c511002620.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) - if sg1:GetCount()>0 then - local sg=sg1:Clone() - local tc2=nil - local tc=nil - local mat1=Group.CreateGroup() - while not tc or not tc2 do - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - tc=sg:Select(tp,1,1,nil):GetFirst() - mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) - tc2=Duel.SelectMatchingCard(tp,c511002620.synfilter,tp,LOCATION_EXTRA,0,1,1,nil,mat1):GetFirst() - end - tc:SetMaterial(mat1) - tc2:SetMaterial(mat1) - Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION+REASON_SYNCHRO) - Duel.BreakEffect() - Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) - Duel.SpecialSummon(tc2,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) - tc:CompleteProcedure() - tc2:CompleteProcedure() - end -end +--Underworld Resonance - Synchro Fusion +function c511002620.initial_effect(c) + --synchro effect + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511002620.target) + e1:SetOperation(c511002620.activate) + c:RegisterEffect(e1) +end +function c511002620.chk(e,tp) + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + for i=0,4 do + for j=0,4 do + local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,j) + local g=Group.FromCards(c1,c2) + if c1 and c2 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() then + if Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) + and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) then + return true + end + end + end + end + for i=0,4 do + for j=0,4 do + for k=0,4 do + local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,j) + local c3=Duel.GetFieldCard(tp,LOCATION_MZONE,k) + local g=Group.FromCards(c1,c2,c3) + if c1 and c2 and c3 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() + and c3:IsCanBeFusionMaterial() then + if Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) + and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) then + return true + end + end + end + end + end + for i=0,4 do + for j=0,4 do + for k=0,4 do + for l=0,4 do + local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,i) + local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,j) + local c3=Duel.GetFieldCard(tp,LOCATION_MZONE,k) + local c4=Duel.GetFieldCard(tp,LOCATION_MZONE,l) + local g=Group.FromCards(c1,c2,c3,c4) + if c1 and c2 and c3 and c4 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() + and c3:IsCanBeFusionMaterial() and c4:IsCanBeFusionMaterial() then + if Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) + and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) then + return true + end + end + end + end + end + end + local c1=Duel.GetFieldCard(tp,LOCATION_MZONE,0) + local c2=Duel.GetFieldCard(tp,LOCATION_MZONE,1) + local c3=Duel.GetFieldCard(tp,LOCATION_MZONE,2) + local c4=Duel.GetFieldCard(tp,LOCATION_MZONE,3) + local c5=Duel.GetFieldCard(tp,LOCATION_MZONE,4) + local g=Group.FromCards(c1,c2,c3,c4,c5) + return c1 and c2 and c3 and c4 and c5 and c1:IsCanBeFusionMaterial() and c2:IsCanBeFusionMaterial() and c3:IsCanBeFusionMaterial() + and c4:IsCanBeFusionMaterial() and c5:IsCanBeFusionMaterial() + and Duel.IsExistingMatchingCard(c511002620.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,g,nil,chkf) + and Duel.IsExistingMatchingCard(c511002620.synfilter,tp,LOCATION_EXTRA,0,1,nil,g) +end +function c511002620.filter1(c,e) + return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e) +end +function c511002620.filter2(c,e,tp,m,f) + return c:IsType(TYPE_FUSION) and (not f or f(c)) + and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil) +end +function c511002620.synfilter(c,mg) + return c:IsSynchroSummonable(nil,mg) and mg:CheckWithSumEqual(Card.GetSynchroLevel,c:GetLevel(),mg:GetCount(),mg:GetCount(),c) +end +function c511002620.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return (not ect or ect>=2) and c511002620.chk(e,tp) and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and (not ect or ect>=2) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) +end +function c511002620.activate(e,tp,eg,ep,ev,re,r,rp) + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if not c511002620.chk(e,tp) or Duel.IsPlayerAffectedByEffect(tp,29724053) or (ect and ect<2) then return end + local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp + local mg1=Duel.GetMatchingGroup(c511002620.filter1,tp,LOCATION_MZONE,0,nil,e) + local sg1=Duel.GetMatchingGroup(c511002620.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf) + if sg1:GetCount()>0 then + local sg=sg1:Clone() + local tc2=nil + local tc=nil + local mat1=Group.CreateGroup() + while not tc or not tc2 do + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + tc=sg:Select(tp,1,1,nil):GetFirst() + mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf) + tc2=Duel.SelectMatchingCard(tp,c511002620.synfilter,tp,LOCATION_EXTRA,0,1,1,nil,mat1):GetFirst() + end + tc:SetMaterial(mat1) + tc2:SetMaterial(mat1) + Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION+REASON_SYNCHRO) + Duel.BreakEffect() + Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP) + Duel.SpecialSummon(tc2,SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) + tc:CompleteProcedure() + tc2:CompleteProcedure() + end +end diff --git a/script/c511002649.lua b/script/c511002649.lua index 8559456b..a0044ca8 100644 --- a/script/c511002649.lua +++ b/script/c511002649.lua @@ -1,53 +1,56 @@ ---Enshrined Force of Duality -function c511002649.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_DESTROYED) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) - e1:SetCondition(c511002649.condition) - e1:SetTarget(c511002649.target) - e1:SetOperation(c511002649.operation) - c:RegisterEffect(e1) -end -function c511002649.condition(e,tp,eg,ep,ev,re,r,rp) - return eg:IsExists(Card.IsCode,1,nil,1686814) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c511002649.spfilter(c,e,tp) - return c:GetLevel()==10 and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c511002649.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) - and Duel.IsExistingMatchingCard(c511002649.spfilter,tp,LOCATION_EXTRA,0,2,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) -end -function c511002649.operation(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end - local g=Duel.GetMatchingGroup(c511002649.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) - if g:GetCount()<2 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local sg=g:Select(tp,2,2,nil) - local tc=sg:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1,true) - local e2=Effect.CreateEffect(e:GetHandler()) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2,true) - local e3=Effect.CreateEffect(e:GetHandler()) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_SET_ATTACK_FINAL) - e3:SetValue(0) - e3:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e3,true) - tc=sg:GetNext() - end - Duel.SpecialSummonComplete() -end +--Enshrined Force of Duality +function c511002649.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_DESTROYED) + e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY) + e1:SetCondition(c511002649.condition) + e1:SetTarget(c511002649.target) + e1:SetOperation(c511002649.operation) + c:RegisterEffect(e1) +end +function c511002649.condition(e,tp,eg,ep,ev,re,r,rp) + return eg:IsExists(Card.IsCode,1,nil,1686814) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511002649.spfilter(c,e,tp) + return c:GetLevel()==10 and c:IsRace(RACE_DRAGON) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511002649.target(e,tp,eg,ep,ev,re,r,rp,chk) + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) + and Duel.IsExistingMatchingCard(c511002649.spfilter,tp,LOCATION_EXTRA,0,2,nil,e,tp) and (not ect or ect>=2) end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_EXTRA) +end +function c511002649.operation(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil and ect<2 then return end + local g=Duel.GetMatchingGroup(c511002649.spfilter,tp,LOCATION_EXTRA,0,nil,e,tp) + if g:GetCount()<2 then return end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local sg=g:Select(tp,2,2,nil) + local tc=sg:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1,true) + local e2=Effect.CreateEffect(e:GetHandler()) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2,true) + local e3=Effect.CreateEffect(e:GetHandler()) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_SET_ATTACK_FINAL) + e3:SetValue(0) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3,true) + tc=sg:GetNext() + end + Duel.SpecialSummonComplete() +end diff --git a/script/c511009318.lua b/script/c511009318.lua index cf1af3e3..962344f3 100644 --- a/script/c511009318.lua +++ b/script/c511009318.lua @@ -1,120 +1,110 @@ ---Performapal Pendulum Art and Clean -function c511009318.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCategory(CATEGORY_SPECIAL_SUMMON) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCondition(c511009318.condition) - e1:SetCost(c511009318.cost) - e1:SetTarget(c511009318.tg) - e1:SetOperation(c511009318.op) - c:RegisterEffect(e1) - --to grave - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetOperation(c511009318.regop) - c:RegisterEffect(e2) -end -function c511009318.condition(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 -end -function c511009318.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end - local e1=Effect.CreateEffect(e:GetHandler()) - e1:SetType(EFFECT_TYPE_FIELD) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) - e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) - e1:SetReset(RESET_PHASE+PHASE_END) - e1:SetTargetRange(1,0) - e1:SetLabelObject(e) - e1:SetTarget(c511009318.sumlimit) - Duel.RegisterEffect(e1,tp) - e:GetHandler():RegisterFlagEffect(511009318,RESET_PHASE+PHASE_END,0,1) -end -function c511009318.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) - return e:GetLabelObject()~=se -end -function c511009318.filter(c,e,tp) - return c:IsSetCard(0x9f) and c:IsType(TYPE_PENDULUM) and c:IsFaceup() and c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) -end -function c511009318.tg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 - and Duel.IsExistingMatchingCard(c511009318.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end - Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) -end -function c511009318.op(e,tp,eg,ep,ev,re,r,rp) - local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) - if ft<=0 then return end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) - local g=Duel.SelectMatchingCard(tp,c511009318.filter,tp,LOCATION_EXTRA,0,ft,ft,nil,e,tp) - local c=e:GetHandler() - local tc=g:GetFirst() - while tc do - Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_SINGLE) - e1:SetCode(EFFECT_DISABLE) - e1:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_SINGLE) - e2:SetCode(EFFECT_DISABLE_EFFECT) - e2:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e2) - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_DIRECT_ATTACK) - e3:SetReset(RESET_EVENT+0x1fe0000) - tc:RegisterEffect(e3) - tc=g:GetNext() - end - Duel.SpecialSummonComplete() -end - -function c511009318.regop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetFlagEffect(511009318)>0 then - - - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(24919805,1)) - e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e1:SetCode(EVENT_PHASE+PHASE_BATTLE) - e1:SetCategory(CATEGORY_DESTROY) - e1:SetRange(LOCATION_GRAVE) - e1:SetCountLimit(1) - e1:SetCost(c511009318.descost) - e1:SetTarget(c511009318.destg) - e1:SetOperation(c511009318.desop) - e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) - c:RegisterEffect(e1) - - end -end -function c511009318.descon(e) - local c=e:GetHandler() - return not c:GetFlagEffect(511009318)==0 -end -function c511009318.cfilter(c) - return c:IsSetCard(0x9f) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeckAsCost() -end -function c511009318.descost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511009318.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) - local g=Duel.SelectMatchingCard(tp,c511009318.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SendtoDeck(g,nil,2,REASON_COST) -end -function c511009318.desfilter(c) - return c:IsStatus(STATUS_SPSUMMON_TURN) -end -function c511009318.destg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511009318.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - local g=Duel.GetMatchingGroup(c511009318.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) -end -function c511009318.desop(e,tp,eg,ep,ev,re,r,rp) - local g=Duel.GetMatchingGroup(c511009318.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) - Duel.Destroy(g,REASON_EFFECT) -end \ No newline at end of file +--Performapal Pendulum Art and Clean +--fixed by MLD +function c511009318.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCategory(CATEGORY_SPECIAL_SUMMON) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCondition(c511009318.condition) + e1:SetCost(c511009318.cost) + e1:SetTarget(c511009318.target) + e1:SetOperation(c511009318.activate) + c:RegisterEffect(e1) +end +function c511009318.condition(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 +end +function c511009318.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetActivityCount(tp,ACTIVITY_SPSUMMON)==0 end + local e1=Effect.CreateEffect(e:GetHandler()) + e1:SetType(EFFECT_TYPE_FIELD) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) + e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) + e1:SetReset(RESET_PHASE+PHASE_END) + e1:SetTargetRange(1,0) + e1:SetLabelObject(e) + e1:SetTarget(c511009318.sumlimit) + Duel.RegisterEffect(e1,tp) + e:GetHandler():RegisterFlagEffect(511009318,RESET_PHASE+PHASE_END,0,1) +end +function c511009318.sumlimit(e,c,sump,sumtype,sumpos,targetp,se) + return e:GetLabelObject()~=se +end +function c511009318.filter(c,e,tp) + return c:IsSetCard(0x9f) and c:IsType(TYPE_PENDULUM) and c:IsFaceup() and c:GetLevel()==1 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) +end +function c511009318.target(e,tp,eg,ep,ev,re,r,rp,chk) + local c=e:GetHandler() + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 + and Duel.IsExistingMatchingCard(c511009318.filter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end + if e:IsHasType(EFFECT_TYPE_ACTIVATE) then + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(24919805,1)) + e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e1:SetCode(EVENT_PHASE+PHASE_BATTLE) + e1:SetCategory(CATEGORY_DESTROY) + e1:SetRange(LOCATION_GRAVE) + e1:SetCountLimit(1) + e1:SetCondition(c511009318.descon) + e1:SetCost(c511009318.descost) + e1:SetTarget(c511009318.destg) + e1:SetOperation(c511009318.desop) + e1:SetReset(RESET_EVENT+0x17a0000+RESET_PHASE+PHASE_END) + c:RegisterEffect(e1) + end + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) +end +function c511009318.activate(e,tp,eg,ep,ev,re,r,rp) + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) + if ft<=0 then return end + if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end + local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] + if ect~=nil then ft=math.min(ft,ect) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) + local g=Duel.SelectMatchingCard(tp,c511009318.filter,tp,LOCATION_EXTRA,0,ft,ft,nil,e,tp) + local c=e:GetHandler() + local tc=g:GetFirst() + while tc do + Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e2) + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DIRECT_ATTACK) + e3:SetReset(RESET_EVENT+0x1fe0000) + tc:RegisterEffect(e3) + tc=g:GetNext() + end + Duel.SpecialSummonComplete() +end +function c511009318.descon(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():IsReason(REASON_RULE) +end +function c511009318.cfilter(c) + return c:IsSetCard(0x9f) and c:IsAbleToDeckAsCost() + and Duel.IsExistingMatchingCard(Card.IsStatus,0,LOCATION_MZONE,LOCATION_MZONE,1,c,STATUS_SPSUMMON_TURN) +end +function c511009318.descost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511009318.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) + local g=Duel.SelectMatchingCard(tp,c511009318.cfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SendtoDeck(g,nil,2,REASON_COST) +end +function c511009318.destg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(Card.IsStatus,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,STATUS_SPSUMMON_TURN) end + local g=Duel.GetMatchingGroup(Card.IsStatus,tp,LOCATION_MZONE,LOCATION_MZONE,nil,STATUS_SPSUMMON_TURN) + Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0) +end +function c511009318.desop(e,tp,eg,ep,ev,re,r,rp) + local g=Duel.GetMatchingGroup(Card.IsStatus,tp,LOCATION_MZONE,LOCATION_MZONE,nil,STATUS_SPSUMMON_TURN) + Duel.Destroy(g,REASON_EFFECT) +end diff --git a/script/c511009374.lua b/script/c511009374.lua index 7da1e833..5f5bdb1c 100644 --- a/script/c511009374.lua +++ b/script/c511009374.lua @@ -1,36 +1,28 @@ --Binding Swords of Impact +--fixed by MLD function c511009374.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c511009374.cost) e1:SetCondition(c511009374.condition) + e1:SetCost(c511009374.cost) e1:SetTarget(c511009374.target) - e1:SetOperation(c511009374.operation) c:RegisterEffect(e1) --destroy local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(40854197,0)) - e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) - e2:SetCode(EVENT_TO_GRAVE) - e2:SetCondition(c511009374.leavecon) + e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_LEAVE_FIELD_P) e2:SetOperation(c511009374.leaveop) c:RegisterEffect(e2) - local e3=e2:Clone() - e3:SetCode(EVENT_REMOVE) - c:RegisterEffect(e3) - local e4=e2:Clone() - e4:SetCode(EVENT_TO_DECK) - c:RegisterEffect(e4) --cannot attack local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_FIELD) - e5:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) + e5:SetCode(EFFECT_CANNOT_ATTACK) e5:SetRange(LOCATION_SZONE) e5:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) c:RegisterEffect(e5) - --damage reduce + --damage reduce local e6=Effect.CreateEffect(c) e6:SetType(EFFECT_TYPE_FIELD) e6:SetCode(EFFECT_CHANGE_DAMAGE) @@ -43,7 +35,6 @@ function c511009374.initial_effect(c) local e7=Effect.CreateEffect(c) e7:SetType(EFFECT_TYPE_SINGLE) e7:SetCode(EFFECT_TRAP_ACT_IN_HAND) - e7:SetCondition(c511009374.handcon) c:RegisterEffect(e7) end function c511009374.condition(e,tp,eg,ep,ev,re,r,rp) @@ -51,14 +42,13 @@ function c511009374.condition(e,tp,eg,ep,ev,re,r,rp) end function c511009374.cost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)>1 end - local g=Duel.GetFieldGroup(p,LOCATION_HAND,0) - Debug.Message(g:GetCount()) - e:SetLabel(count) + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + e:SetLabel(g:GetCount()) Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD) end function c511009374.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end - -- Debug.Message(e:GetLabel()) + e:GetHandler():SetTurnCounter(0) --destroy local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) @@ -66,14 +56,13 @@ function c511009374.target(e,tp,eg,ep,ev,re,r,rp,chk) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetCountLimit(1) e1:SetRange(LOCATION_SZONE) - e1:SetCondition(c511009374.descon) e1:SetLabel(e:GetLabel()) + e1:SetCondition(c511009374.descon) e1:SetOperation(c511009374.desop) e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END+RESET_OPPO_TURN,e:GetLabel()) e:GetHandler():RegisterEffect(e1) -end -function c511009374.operation(e,tp,eg,ep,ev,re,r,rp) - e:GetHandler():SetTurnCounter(0) + e:GetHandler():RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_OPPO_TURN,0,e:GetLabel()) + c511009374[e:GetHandler()]=e1 end function c511009374.descon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()~=tp @@ -83,27 +72,22 @@ function c511009374.desop(e,tp,eg,ep,ev,re,r,rp) local ct=c:GetTurnCounter() ct=ct+1 c:SetTurnCounter(ct) - Debug.Message(e:GetLabel()) if ct==e:GetLabel() then Duel.Destroy(c,REASON_RULE) + c:ResetFlagEffect(1082946) end end function c511009374.damval(e,re,val,r,rp,rc) if bit.band(r,REASON_EFFECT)~=0 then return 0 end return val end -function c511009374.leavecon(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) -end function c511009374.leaveop(e,tp,eg,ep,ev,re,r,rp) + if e:GetHandler():IsFacedown() then return end local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EFFECT_SKIP_DP) e1:SetTargetRange(1,0) - e1:SetReset(RESET_PHASE+PHASE_END,3) + e1:SetCode(EFFECT_SKIP_DP) + e1:SetReset(RESET_PHASE+PHASE_DRAW+RESET_SELF_TURN) Duel.RegisterEffect(e1,tp) end -function c511009374.handcon(e) - return true -end diff --git a/script/c511009392.lua b/script/c511009392.lua index 95665d52..e994ce07 100644 --- a/script/c511009392.lua +++ b/script/c511009392.lua @@ -1,8 +1,8 @@ --D/D/D Knowledge King Tomb Conquistador +--fixed by MLD function c511009392.initial_effect(c) --pendulum summon aux.EnablePendulumAttribute(c) - -- Peffect --activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) @@ -18,8 +18,9 @@ function c511009392.initial_effect(c) e2:SetCategory(CATEGORY_ATKCHANGE) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetRange(LOCATION_MZONE) + e2:SetCountLimit(1) e2:SetCost(c511009392.cost) - e2:SetOperation(c511009392.operation) + e2:SetOperation(c511009392.op) c:RegisterEffect(e2) --actlimit local e3=Effect.CreateEffect(c) @@ -38,13 +39,9 @@ function c511009392.initial_effect(c) e4:SetOperation(c511009392.thop) c:RegisterEffect(e4) end --- REGEN LP function c511009392.damcon(e,tp,eg,ep,ev,re,r,rp) - if tp~=Duel.GetTurnPlayer() then return false end - local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) - if ex and (cp==tp or cp==PLAYER_ALL) then return true end - ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) - return re:IsSetCard(0xae) and ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) + return aux.damcon1(e,tp,eg,ep,ev,re,r,rp) and ep==tp and re:GetHandler():IsSetCard(0xae) + and Duel.GetCurrentPhase()==PHASE_STANDBY and Duel.GetTurnPlayer()==tp end function c511009392.damop(e,tp,eg,ep,ev,re,r,rp) local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) @@ -64,16 +61,13 @@ function c511009392.refcon(e,re,r,rp,rc) local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) return cid==e:GetLabel() end - - ---ATK UP function c511009392.cfilter(c) - return c:IsSetCard(0xae) and c:IsAbleToGraveAsCost() + return (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsSetCard(0xae) and c:IsAbleToGraveAsCost() end function c511009392.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511009392.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,nil) end + if chk==0 then return Duel.IsExistingMatchingCard(c511009392.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) - local g=Duel.SelectMatchingCard(tp,c511009392.cfilter,tp,LOCATION_SZONE+LOCATION_HAND,0,1,1,nil) + local g=Duel.SelectMatchingCard(tp,c511009392.cfilter,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,1,nil) Duel.SendtoGrave(g,REASON_COST) end function c511009392.operation(e,tp,eg,ep,ev,re,r,rp) @@ -87,7 +81,6 @@ function c511009392.operation(e,tp,eg,ep,ev,re,r,rp) c:RegisterEffect(e1) end end - function c511009392.atkop(e,tp,eg,ep,ev,re,r,rp) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) diff --git a/script/c511010104.lua b/script/c511010104.lua index d9e1d9cc..f313aa2a 100644 --- a/script/c511010104.lua +++ b/script/c511010104.lua @@ -1,83 +1,97 @@ ---No.104 仮面魔踏士シャイニング -function c511010104.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsAttribute,ATTRIBUTE_LIGHT),4,3) - c:EnableReviveLimit() - --negate activate - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(2061963,0)) - e1:SetCategory(CATEGORY_NEGATE+CATEGORY_DAMAGE) - e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) - e1:SetType(EFFECT_TYPE_QUICK_O) - e1:SetRange(LOCATION_MZONE) - e1:SetCode(EVENT_CHAINING) - e1:SetCondition(c511010104.condition) - e1:SetCost(c511010104.cost) - e1:SetTarget(c511010104.target) - e1:SetOperation(c511010104.operation) - c:RegisterEffect(e1) - -- - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(2061963,1)) - e2:SetCategory(CATEGORY_DECKDES) - e2:SetType(EFFECT_TYPE_IGNITION) - e2:SetCountLimit(1) - e2:SetRange(LOCATION_MZONE) - e2:SetTarget(c511010104.decktg) - e2:SetOperation(c511010104.deckop) - c:RegisterEffect(e2) - --battle indestructable - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) - e3:SetValue(c511010104.indes) - c:RegisterEffect(e3) - if not c511010104.global_check then - c511010104.global_check=true - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge2:SetCode(EVENT_ADJUST) - ge2:SetCountLimit(1) - ge2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) - ge2:SetOperation(c511010104.numchk) - Duel.RegisterEffect(ge2,0) - end -end -c511010104.xyz_number=104 -function c511010104.condition(e,tp,eg,ep,ev,re,r,rp,chk) - local ph=Duel.GetCurrentPhase() - return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and ep~=tp - and (ph>PHASE_MAIN1 and phPHASE_MAIN1 and ph0 end + Duel.SetTargetPlayer(tp) + Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,c511010192[1-tp]) +end +function c511010192.recop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) + Duel.Recover(p,c511010192[1-tp],REASON_EFFECT) +end +function c511010192.discost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c511010192.distg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(aux.disfilter1,tp,0,LOCATION_ONFIELD,1,nil) + or Duel.IsExistingMatchingCard(Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end +end +function c511010192.disop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + local g=Duel.GetMatchingGroup(aux.disfilter1,tp,0,LOCATION_ONFIELD,nil) + local tc=g:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_DISABLE) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_SINGLE) + e2:SetCode(EFFECT_DISABLE_EFFECT) + e2:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e2) + if tc:IsType(TYPE_TRAPMONSTER) then + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_DISABLE_TRAPMONSTER) + e3:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e3) + end + tc=g:GetNext() + end + local g2=Duel.GetMatchingGroup(Card.IsFacedown,tp,LOCATION_SZONE,LOCATION_SZONE,nil) + tc=g2:GetFirst() + while tc do + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_SINGLE) + e1:SetCode(EFFECT_CANNOT_TRIGGER) + e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) + tc:RegisterEffect(e1) + tc=g2:GetNext() + end +end +function c511010192.numchk(e,tp,eg,ep,ev,re,r,rp) + Duel.CreateToken(tp,47017574) + Duel.CreateToken(1-tp,47017574) +end +function c511010192.indes(e,c) + return not c:IsSetCard(0x48) +end From 317584cb3d683ed4b12dd32c66d662749f2f6a96 Mon Sep 17 00:00:00 2001 From: MichaelLawrenceDee Date: Thu, 29 Dec 2016 19:37:46 +0800 Subject: [PATCH 2/2] Anime Cards that Activate Trap Card (moving to field issues) --- script/c111011904.lua | 254 ++++++++++++++++++++-------------------- script/c511000440.lua | 220 +++++++++++++++++------------------ script/c511000467.lua | 160 +++++++++++++------------- script/c511000786.lua | 182 ++++++++++++++--------------- script/c511000847.lua | 194 +++++++++++++++++-------------- script/c511000984.lua | 262 +++++++++++++++++++++--------------------- script/c511001122.lua | 2 +- script/c511001145.lua | 204 ++++++++++++++++---------------- script/c511001499.lua | 180 ++++++++++++++++------------- script/c511002473.lua | 170 ++++++++++++++++----------- script/c511009338.lua | 2 +- 11 files changed, 955 insertions(+), 875 deletions(-) diff --git a/script/c111011904.lua b/script/c111011904.lua index e1410d03..b02594f0 100644 --- a/script/c111011904.lua +++ b/script/c111011904.lua @@ -1,128 +1,128 @@ ---NO8 エーテリック・セベク -function c111011904.initial_effect(c) - --xyz summon - aux.AddXyzProcedure(c,nil,8,2) - c:EnableReviveLimit() - --サーチ - local e1=Effect.CreateEffect(c) - e1:SetDescription(aux.Stringid(111011904,0)) - e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) - e1:SetCode(EVENT_SPSUMMON_SUCCESS) - e1:SetCondition(c111011904.con) - e1:SetTarget(c111011904.target) - e1:SetOperation(c111011904.operation) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(111011904,1)) - e2:SetType(EFFECT_TYPE_QUICK_O) - e2:SetCode(EVENT_FREE_CHAIN) - e2:SetHintTiming(0,TIMING_STANDBY_PHASE+0x1c0) - e2:SetRange(LOCATION_MZONE) - e2:SetCost(c111011904.cost) - e2:SetCountLimit(1) - e2:SetTarget(c111011904.target2) - e2:SetOperation(c111011904.operation2) - c:RegisterEffect(e2) - if not c111011904.global_check then - c111011904.global_check=true - --check obsolete ruling - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_DRAW) - ge1:SetOperation(c111011904.checkop) - Duel.RegisterEffect(ge1,0) - end -end -function c111011904.checkop(e,tp,eg,ep,ev,re,r,rp) - if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then - --obsolete - Duel.RegisterFlagEffect(tp,62765383,0,0,1) - Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) - end -end -function c111011904.con(e,tp,eg,ep,ev,re,r,rp) - return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ -end -function c111011904.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsExistingMatchingCard(c111011904.filter,tp,LOCATION_DECK,0,1,nil) end - Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) -end -function c111011904.filter(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() -end -function c111011904.operation(e,tp,eg,ep,ev,re,r,rp) - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) - local g=Duel.SelectMatchingCard(tp,c111011904.filter,tp,LOCATION_DECK,0,1,1,nil) - if g:GetCount()>0 then - Duel.SendtoHand(g,nil,REASON_EFFECT) - Duel.ConfirmCards(1-tp,g) - end -end -function c111011904.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end - e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) -end -function c111011904.target2(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c111011904.filter1,tp,LOCATION_HAND,0,1,nil) - and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end -end -function c111011904.filter1(c) - return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:CheckActivateEffect(false,false,false)~=nil -end -function c111011904.operation2(e,tp,eg,ep,ev,re,r,rp,chk) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local g=Duel.SelectMatchingCard(tp,c111011904.filter1,tp,LOCATION_HAND,0,1,1,nil,e,tp) - if g:GetCount()>0 then - local tc=g:GetFirst() - local tpe=tc:GetType() - local te=tc:GetActivateEffect() - local tg=te:GetTarget() - local co=te:GetCost() - local op=te:GetOperation() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - Duel.ClearTargetCard() - if bit.band(tpe,TYPE_FIELD)~=0 then - local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) - if Duel.GetFlagEffect(tp,62765383)>0 then - if fc then Duel.Destroy(fc,REASON_RULE) end - of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - else - Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - end - end - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)~=0 then - Duel.MoveSequence(tc,5) - end - Duel.Hint(HINT_CARD,0,tc:GetCode()) - tc:CreateEffectRelation(te) - if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then - tc:CancelToGrave(false) - end - if co then co(te,tp,eg,ep,ev,re,r,rp,1) end - if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end - Duel.BreakEffect() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - if g then - local etc=g:GetFirst() - while etc do - etc:CreateEffectRelation(te) - etc=g:GetNext() - end - end - if op then op(te,tp,eg,ep,ev,re,r,rp) end - tc:ReleaseEffectRelation(te) - if etc then - etc=g:GetFirst() - while etc do - etc:ReleaseEffectRelation(te) - etc=g:GetNext() - end - end - end +--NO8 エーテリック・セベク +function c111011904.initial_effect(c) + --xyz summon + aux.AddXyzProcedure(c,nil,8,2) + c:EnableReviveLimit() + --サーチ + local e1=Effect.CreateEffect(c) + e1:SetDescription(aux.Stringid(111011904,0)) + e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) + e1:SetCode(EVENT_SPSUMMON_SUCCESS) + e1:SetCondition(c111011904.con) + e1:SetTarget(c111011904.target) + e1:SetOperation(c111011904.operation) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(111011904,1)) + e2:SetType(EFFECT_TYPE_QUICK_O) + e2:SetCode(EVENT_FREE_CHAIN) + e2:SetHintTiming(0,TIMING_STANDBY_PHASE+0x1c0) + e2:SetRange(LOCATION_MZONE) + e2:SetCost(c111011904.cost) + e2:SetCountLimit(1) + e2:SetTarget(c111011904.target2) + e2:SetOperation(c111011904.operation2) + c:RegisterEffect(e2) + if not c111011904.global_check then + c111011904.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c111011904.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c111011904.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c111011904.con(e,tp,eg,ep,ev,re,r,rp) + return e:GetHandler():GetSummonType()==SUMMON_TYPE_XYZ +end +function c111011904.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsExistingMatchingCard(c111011904.filter,tp,LOCATION_DECK,0,1,nil) end + Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) +end +function c111011904.filter(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand() +end +function c111011904.operation(e,tp,eg,ep,ev,re,r,rp) + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) + local g=Duel.SelectMatchingCard(tp,c111011904.filter,tp,LOCATION_DECK,0,1,1,nil) + if g:GetCount()>0 then + Duel.SendtoHand(g,nil,REASON_EFFECT) + Duel.ConfirmCards(1-tp,g) + end +end +function c111011904.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end + e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) +end +function c111011904.target2(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c111011904.filter1,tp,LOCATION_HAND,0,1,nil) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end +end +function c111011904.filter1(c) + return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:CheckActivateEffect(false,false,false)~=nil +end +function c111011904.operation2(e,tp,eg,ep,ev,re,r,rp,chk) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local g=Duel.SelectMatchingCard(tp,c111011904.filter1,tp,LOCATION_HAND,0,1,1,nil,e,tp) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)==TYPE_TRAP+TYPE_FIELD then + Duel.MoveSequence(tc,5) + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end end \ No newline at end of file diff --git a/script/c511000440.lua b/script/c511000440.lua index 1d6c431e..9348ecd9 100644 --- a/script/c511000440.lua +++ b/script/c511000440.lua @@ -1,110 +1,110 @@ ---Guardian Formation -function c511000440.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_POSITION) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_BE_BATTLE_TARGET) - e1:SetCondition(c511000440.condition) - e1:SetTarget(c511000440.target) - e1:SetOperation(c511000440.activate) - c:RegisterEffect(e1) - if not c511000440.global_check then - c511000440.global_check=true - --check obsolete ruling - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_DRAW) - ge1:SetOperation(c511000440.checkop) - Duel.RegisterEffect(ge1,0) - end -end -function c511000440.checkop(e,tp,eg,ep,ev,re,r,rp) - if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then - --obsolete - Duel.RegisterFlagEffect(tp,62765383,0,0,1) - Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) - end -end -function c511000440.condition(e,tp,eg,ep,ev,re,r,rp) - local d=Duel.GetAttackTarget() - local seq=d:GetSequence() - return d:IsControler(tp) and d:IsFaceup() and d:IsSetCard(0x52) and (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) - or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) -end -function c511000440.filter(c,e,tp,eg,ep,ev,re,r,rp) - local te=c:GetActivateEffect() - if not te or not te:IsActivatable(tp) then return false end - local condition=te:GetCondition() - local cost=te:GetCost() - local target=te:GetTarget() - return c:IsType(TYPE_SPELL) and (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) - and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) and (c:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) -end -function c511000440.target(e,tp,eg,ep,ev,re,r,rp,chk) - local td=Duel.GetAttackTarget() - if chk==0 then return td:IsOnField() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end - Duel.SetTargetCard(td) -end -function c511000440.activate(e,tp,eg,ep,ev,re,r,rp) - local td=Duel.GetAttackTarget() - if td and Duel.NegateAttack() and td:IsFaceup() and td:IsRelateToEffect(e) then - local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0) - local nseq=0 - if s==1 then nseq=0 - elseif s==2 then nseq=1 - elseif s==4 then nseq=2 - elseif s==8 then nseq=3 - else nseq=4 end - Duel.MoveSequence(td,nseq) - local acg=Duel.GetMatchingGroup(c511000440.filter,tp,LOCATION_DECK+LOCATION_HAND,0,nil,e,tp,eg,ep,ev,re,r,rp) - if acg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(28265983,0)) then - local tc=acg:Select(tp,1,1,nil):GetFirst() - local tpe=tc:GetType() - local te=tc:GetActivateEffect() - local tg=te:GetTarget() - local co=te:GetCost() - local op=te:GetOperation() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - Duel.ClearTargetCard() - if bit.band(tpe,TYPE_FIELD)~=0 then - local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) - if Duel.GetFlagEffect(tp,62765383)>0 then - if fc then Duel.Destroy(fc,REASON_RULE) end - of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - else - Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - end - end - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) - tc:CreateEffectRelation(te) - if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then - tc:CancelToGrave(false) - end - if co then co(te,tp,eg,ep,ev,re,r,rp,1) end - if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end - Duel.BreakEffect() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - if g then - local etc=g:GetFirst() - while etc do - etc:CreateEffectRelation(te) - etc=g:GetNext() - end - end - if op then op(te,tp,eg,ep,ev,re,r,rp) end - tc:ReleaseEffectRelation(te) - if etc then - etc=g:GetFirst() - while etc do - etc:ReleaseEffectRelation(te) - etc=g:GetNext() - end - end - end - end -end +--Guardian Formation +function c511000440.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_POSITION) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_BE_BATTLE_TARGET) + e1:SetCondition(c511000440.condition) + e1:SetTarget(c511000440.target) + e1:SetOperation(c511000440.activate) + c:RegisterEffect(e1) + if not c511000440.global_check then + c511000440.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000440.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000440.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000440.condition(e,tp,eg,ep,ev,re,r,rp) + local d=Duel.GetAttackTarget() + local seq=d:GetSequence() + return d:IsControler(tp) and d:IsFaceup() and d:IsSetCard(0x52) and (seq>0 and Duel.CheckLocation(tp,LOCATION_MZONE,seq-1)) + or (seq<4 and Duel.CheckLocation(tp,LOCATION_MZONE,seq+1)) +end +function c511000440.filter(c,e,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te or not te:IsActivatable(tp) then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return c:IsType(TYPE_SPELL) and (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) and (c:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) +end +function c511000440.target(e,tp,eg,ep,ev,re,r,rp,chk) + local td=Duel.GetAttackTarget() + if chk==0 then return td:IsOnField() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end + Duel.SetTargetCard(td) +end +function c511000440.activate(e,tp,eg,ep,ev,re,r,rp) + local td=Duel.GetAttackTarget() + if td and Duel.NegateAttack() and td:IsFaceup() and td:IsRelateToEffect(e) then + local s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,0) + local nseq=0 + if s==1 then nseq=0 + elseif s==2 then nseq=1 + elseif s==4 then nseq=2 + elseif s==8 then nseq=3 + else nseq=4 end + Duel.MoveSequence(td,nseq) + local acg=Duel.GetMatchingGroup(c511000440.filter,tp,LOCATION_DECK+LOCATION_HAND,0,nil,e,tp,eg,ep,ev,re,r,rp) + if acg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(28265983,0)) then + local tc=acg:Select(tp,1,1,nil):GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end + end +end diff --git a/script/c511000467.lua b/script/c511000467.lua index 1694c6bc..e012356c 100644 --- a/script/c511000467.lua +++ b/script/c511000467.lua @@ -1,80 +1,80 @@ ---Sand Fortress -function c511000467.initial_effect(c) - --activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) - e2:SetRange(LOCATION_SZONE) - e2:SetCondition(c511000467.atkcon) - e2:SetOperation(c511000467.atkop) - c:RegisterEffect(e2) - if not c511000467.global_check then - c511000467.global_check=true - --move - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - ge1:SetCode(EVENT_SSET) - ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IMMEDIATELY_APPLY) - ge1:SetOperation(c511000467.setop) - Duel.RegisterEffect(ge1,0) - --move - local ge2=Effect.CreateEffect(c) - ge2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) - ge2:SetCode(EVENT_CHAINING) - ge2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IMMEDIATELY_APPLY) - ge2:SetOperation(c511000467.setop) - Duel.RegisterEffect(ge2,0) - --check obsolete ruling - local ge3=Effect.CreateEffect(c) - ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge3:SetCode(EVENT_DRAW) - ge3:SetOperation(c511000467.checkop) - Duel.RegisterEffect(ge3,0) - end -end -function c511000467.checkop(e,tp,eg,ep,ev,re,r,rp) - if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then - --obsolete - Duel.RegisterFlagEffect(tp,62765383,0,0,1) - Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) - end -end -function c511000467.setop(e,tp,eg,ep,ev,re,r,rp) - local g - if not eg then g=Group.FromCards(re:GetHandler()):Filter(Card.IsCode,nil,511000467) - else g=eg:Filter(Card.IsCode,nil,511000467) end - local tc=g:GetFirst() - while tc do - local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) - if Duel.GetFlagEffect(tp,62765383)>0 then - if fc then Duel.Destroy(fc,REASON_RULE) end - of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - else - Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - end - Duel.MoveSequence(tc,5) - tc=g:GetNext() - end -end -function c511000467.atkcon(e,tp,eg,ep,ev,re,r,rp) - return Duel.GetAttackTarget()==nil and ep==tp -end -function c511000467.atkop(e,tp,eg,ep,ev,re,r,rp) - local c=e:GetHandler() - if c:GetFlagEffect(51100467)==0 then - c:RegisterFlagEffect(51100467,RESET_EVENT+0x1fe0000,0,0) - e:SetLabel(0) - end - local dam=e:GetLabel() - Duel.ChangeBattleDamage(tp,0) - e:SetLabel(dam+ev) - if e:GetLabel()>=3000 then - Duel.Destroy(c,REASON_EFFECT) - end -end +--Sand Fortress +function c511000467.initial_effect(c) + --activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + e2:SetCode(EVENT_PRE_BATTLE_DAMAGE) + e2:SetRange(LOCATION_SZONE) + e2:SetCondition(c511000467.atkcon) + e2:SetOperation(c511000467.atkop) + c:RegisterEffect(e2) + if not c511000467.global_check then + c511000467.global_check=true + --move + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge1:SetCode(EVENT_SSET) + ge1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IMMEDIATELY_APPLY) + ge1:SetOperation(c511000467.setop) + Duel.RegisterEffect(ge1,0) + --move + local ge2=Effect.CreateEffect(c) + ge2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) + ge2:SetCode(EVENT_CHAINING) + ge2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_IMMEDIATELY_APPLY) + ge2:SetOperation(c511000467.setop) + Duel.RegisterEffect(ge2,0) + --check obsolete ruling + local ge3=Effect.CreateEffect(c) + ge3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge3:SetCode(EVENT_DRAW) + ge3:SetOperation(c511000467.checkop) + Duel.RegisterEffect(ge3,0) + end +end +function c511000467.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000467.setop(e,tp,eg,ep,ev,re,r,rp) + local g + if not eg then g=Group.FromCards(re:GetHandler()):Filter(Card.IsCode,nil,511000467) + else g=eg:Filter(Card.IsCode,nil,511000467) end + local tc=g:GetFirst() + while tc do + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + Duel.MoveSequence(tc,5) + tc=g:GetNext() + end +end +function c511000467.atkcon(e,tp,eg,ep,ev,re,r,rp) + return Duel.GetAttackTarget()==nil and ep==tp +end +function c511000467.atkop(e,tp,eg,ep,ev,re,r,rp) + local c=e:GetHandler() + if c:GetFlagEffect(51100467)==0 then + c:RegisterFlagEffect(51100467,RESET_EVENT+0x1fe0000,0,0) + e:SetLabel(0) + end + local dam=e:GetLabel() + Duel.ChangeBattleDamage(tp,0) + e:SetLabel(dam+ev) + if e:GetLabel()>=3000 then + Duel.Destroy(c,REASON_EFFECT) + end +end diff --git a/script/c511000786.lua b/script/c511000786.lua index bb738c56..fba15b67 100644 --- a/script/c511000786.lua +++ b/script/c511000786.lua @@ -1,91 +1,91 @@ ---Forest Spring -function c511000786.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c511000786.target) - e1:SetOperation(c511000786.activate) - c:RegisterEffect(e1) - if not c511000786.global_check then - c511000786.global_check=true - --check obsolete ruling - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_DRAW) - ge1:SetOperation(c511000786.checkop) - Duel.RegisterEffect(ge1,0) - end -end -function c511000786.checkop(e,tp,eg,ep,ev,re,r,rp) - if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then - --obsolete - Duel.RegisterFlagEffect(tp,62765383,0,0,1) - Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) - end -end -function c511000786.filter(c) - return c:IsType(TYPE_TRAP) and c:CheckActivateEffect(false,false,false)~=nil -end -function c511000786.cfilter(tc) - return tc and tc:IsFaceup() -end -function c511000786.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511000786.filter,tp,LOCATION_GRAVE,0,1,nil) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 - and (c511000786.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511000786.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5))) end -end -function c511000786.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local g=Duel.SelectMatchingCard(tp,c511000786.filter,tp,LOCATION_GRAVE,0,1,1,nil) - if g:GetCount()>0 then - local tc=g:GetFirst() - local tpe=tc:GetType() - local te=tc:GetActivateEffect() - local tg=te:GetTarget() - local co=te:GetCost() - local op=te:GetOperation() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - Duel.ClearTargetCard() - if bit.band(tpe,TYPE_FIELD)~=0 then - local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) - if Duel.GetFlagEffect(tp,62765383)>0 then - if fc then Duel.Destroy(fc,REASON_RULE) end - of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - else - Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - end - end - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)~=0 then - Duel.MoveSequence(tc,5) - end - Duel.Hint(HINT_CARD,0,tc:GetCode()) - tc:CreateEffectRelation(te) - if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then - tc:CancelToGrave(false) - end - if co then co(te,tp,eg,ep,ev,re,r,rp,1) end - if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end - Duel.BreakEffect() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - if g then - local etc=g:GetFirst() - while etc do - etc:CreateEffectRelation(te) - etc=g:GetNext() - end - end - if op then op(te,tp,eg,ep,ev,re,r,rp) end - tc:ReleaseEffectRelation(te) - if etc then - etc=g:GetFirst() - while etc do - etc:ReleaseEffectRelation(te) - etc=g:GetNext() - end - end - end -end +--Forest Spring +function c511000786.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511000786.target) + e1:SetOperation(c511000786.activate) + c:RegisterEffect(e1) + if not c511000786.global_check then + c511000786.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000786.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000786.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000786.filter(c) + return c:IsType(TYPE_TRAP) and c:CheckActivateEffect(false,false,false)~=nil +end +function c511000786.cfilter(tc) + return tc and tc:IsFaceup() +end +function c511000786.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511000786.filter,tp,LOCATION_GRAVE,0,1,nil) and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 + and (c511000786.cfilter(Duel.GetFieldCard(tp,LOCATION_SZONE,5)) or c511000786.cfilter(Duel.GetFieldCard(1-tp,LOCATION_SZONE,5))) end +end +function c511000786.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local g=Duel.SelectMatchingCard(tp,c511000786.filter,tp,LOCATION_GRAVE,0,1,1,nil) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)==TYPE_TRAP+TYPE_FIELD then + Duel.MoveSequence(tc,5) + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511000847.lua b/script/c511000847.lua index 4fa2b47d..c5901c25 100644 --- a/script/c511000847.lua +++ b/script/c511000847.lua @@ -1,85 +1,109 @@ ---Shard of Hope -function c511000847.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - c:RegisterEffect(e1) - --draw - local e2=Effect.CreateEffect(c) - e2:SetDescription(aux.Stringid(511000847,0)) - e2:SetCategory(CATEGORY_DRAW) - e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) - e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e2:SetRange(LOCATION_SZONE) - e2:SetCode(EVENT_BATTLE_DAMAGE) - e2:SetCondition(c511000847.drcon) - e2:SetTarget(c511000847.drtg) - e2:SetOperation(c511000847.drop) - c:RegisterEffect(e2) -end -function c511000847.drcon(e,tp,eg,ep,ev,re,r,rp) - return ep~=tp -end -function c511000847.drtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c511000847.drop(e,tp,eg,ep,ev,re,r,rp) - if not e:GetHandler():IsRelateToEffect(e) then return end - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - local h=Duel.GetDecktopGroup(tp,1) - local tc=h:GetFirst() - Duel.Draw(p,d,REASON_EFFECT) - if tc then - Duel.ConfirmCards(1-tp,tc) - if tc:IsType(TYPE_TRAP) and tc:CheckActivateEffect(false,false,false)~=nil and e:GetHandler():IsDestructable() then - Duel.Destroy(e:GetHandler(),REASON_EFFECT) - local tpe=tc:GetType() - local te=tc:GetActivateEffect() - local tg=te:GetTarget() - local co=te:GetCost() - local op=te:GetOperation() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - Duel.ClearTargetCard() - if bit.band(tpe,TYPE_FIELD)~=0 then - local of=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) - if of then Duel.Destroy(of,REASON_RULE) end - of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - end - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - Duel.Hint(HINT_CARD,0,tc:GetCode()) - tc:CreateEffectRelation(te) - if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then - tc:CancelToGrave(false) - end - if co then co(te,tp,eg,ep,ev,re,r,rp,1) end - if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end - Duel.BreakEffect() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - if g then - local etc=g:GetFirst() - while etc do - etc:CreateEffectRelation(te) - etc=g:GetNext() - end - end - if op then op(te,tp,eg,ep,ev,re,r,rp) end - tc:ReleaseEffectRelation(te) - if etc then - etc=g:GetFirst() - while etc do - etc:ReleaseEffectRelation(te) - etc=g:GetNext() - end - end - else - Duel.Destroy(tc,REASON_EFFECT) - Duel.SendtoGrave(tc,REASON_EFFECT) - end - end -end +--Shard of Hope +function c511000847.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + c:RegisterEffect(e1) + --draw + local e2=Effect.CreateEffect(c) + e2:SetDescription(aux.Stringid(511000847,0)) + e2:SetCategory(CATEGORY_DRAW) + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) + e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e2:SetRange(LOCATION_SZONE) + e2:SetCode(EVENT_BATTLE_DAMAGE) + e2:SetCondition(c511000847.drcon) + e2:SetTarget(c511000847.drtg) + e2:SetOperation(c511000847.drop) + c:RegisterEffect(e2) + if not c511000847.global_check then + c511000847.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000847.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000847.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000847.drcon(e,tp,eg,ep,ev,re,r,rp) + return ep~=tp +end +function c511000847.drtg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return true end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511000847.drop(e,tp,eg,ep,ev,re,r,rp) + if not e:GetHandler():IsRelateToEffect(e) then return end + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local h=Duel.GetDecktopGroup(tp,1) + local tc=h:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + if tc then + Duel.ConfirmCards(1-tp,tc) + if tc:IsType(TYPE_TRAP) and tc:CheckActivateEffect(false,false,false)~=nil and e:GetHandler():IsDestructable() then + Duel.Destroy(e:GetHandler(),REASON_EFFECT) + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)==TYPE_TRAP+TYPE_FIELD then + Duel.MoveSequence(tc,5) + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + else + Duel.Destroy(tc,REASON_EFFECT) + Duel.SendtoGrave(tc,REASON_EFFECT) + end + end +end diff --git a/script/c511000984.lua b/script/c511000984.lua index 01b53fe3..b0f53082 100644 --- a/script/c511000984.lua +++ b/script/c511000984.lua @@ -1,131 +1,131 @@ ---Miracle Sword -function c511000984.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_EQUIP) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetProperty(EFFECT_FLAG_CARD_TARGET) - e1:SetTarget(c511000984.target) - e1:SetOperation(c511000984.operation) - c:RegisterEffect(e1) - --Atk up - local e2=Effect.CreateEffect(c) - e2:SetType(EFFECT_TYPE_EQUIP) - e2:SetCode(EFFECT_UPDATE_ATTACK) - e2:SetValue(500) - c:RegisterEffect(e2) - --Equip limit - local e3=Effect.CreateEffect(c) - e3:SetType(EFFECT_TYPE_SINGLE) - e3:SetCode(EFFECT_EQUIP_LIMIT) - e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) - e3:SetValue(1) - c:RegisterEffect(e3) - --Activate - local e4=Effect.CreateEffect(c) - e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) - e4:SetCode(EVENT_DAMAGE_STEP_END) - e4:SetRange(LOCATION_SZONE) - e4:SetCondition(c511000984.accon) - e4:SetCost(c511000984.accost) - e4:SetTarget(c511000984.actg) - e4:SetOperation(c511000984.acop) - c:RegisterEffect(e4) - if not c511000984.global_check then - c511000984.global_check=true - --check obsolete ruling - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_DRAW) - ge1:SetOperation(c511000984.checkop) - Duel.RegisterEffect(ge1,0) - end -end -function c511000984.checkop(e,tp,eg,ep,ev,re,r,rp) - if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then - --obsolete - Duel.RegisterFlagEffect(tp,62765383,0,0,1) - Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) - end -end -function c511000984.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end - if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end - Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) - Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) - Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) -end -function c511000984.operation(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.GetFirstTarget() - if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then - Duel.Equip(tp,e:GetHandler(),tc) - end -end -function c511000984.accon(e,tp,eg,ep,ev,re,r,rp) - local at=Duel.GetAttacker() - local eq=e:GetHandler():GetEquipTarget() - if eq:IsControler(1-tp) then return false end - if not at then return false end - if eq==at then at=Duel.GetAttackTarget() end - return at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) -end -function c511000984.accost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end - Duel.SendtoGrave(e:GetHandler(),REASON_COST) -end -function c511000984.filter(c) - return c:IsType(TYPE_SPELL) and c:CheckActivateEffect(false,false,false)~=nil -end -function c511000984.actg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>-1 - and Duel.IsExistingMatchingCard(c511000984.filter,tp,LOCATION_HAND,0,1,nil) end -end -function c511000984.acop(e,tp,eg,ep,ev,re,r,rp) - local tc=Duel.SelectMatchingCard(tp,c511000984.filter,tp,LOCATION_HAND,0,1,1,nil):GetFirst() - local tpe=tc:GetType() - local te=tc:GetActivateEffect() - local tg=te:GetTarget() - local co=te:GetCost() - local op=te:GetOperation() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - Duel.ClearTargetCard() - if bit.band(tpe,TYPE_FIELD)~=0 then - local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) - if Duel.GetFlagEffect(tp,62765383)>0 then - if fc then Duel.Destroy(fc,REASON_RULE) end - of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - else - Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - end - end - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - Duel.Hint(HINT_CARD,0,tc:GetCode()) - tc:CreateEffectRelation(te) - if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then - tc:CancelToGrave(false) - end - if co then co(te,tp,eg,ep,ev,re,r,rp,1) end - if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end - Duel.BreakEffect() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - if g then - local etc=g:GetFirst() - while etc do - etc:CreateEffectRelation(te) - etc=g:GetNext() - end - end - if op then op(te,tp,eg,ep,ev,re,r,rp) end - tc:ReleaseEffectRelation(te) - if etc then - etc=g:GetFirst() - while etc do - etc:ReleaseEffectRelation(te) - etc=g:GetNext() - end - end -end +--Miracle Sword +function c511000984.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_EQUIP) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) + e1:SetTarget(c511000984.target) + e1:SetOperation(c511000984.operation) + c:RegisterEffect(e1) + --Atk up + local e2=Effect.CreateEffect(c) + e2:SetType(EFFECT_TYPE_EQUIP) + e2:SetCode(EFFECT_UPDATE_ATTACK) + e2:SetValue(500) + c:RegisterEffect(e2) + --Equip limit + local e3=Effect.CreateEffect(c) + e3:SetType(EFFECT_TYPE_SINGLE) + e3:SetCode(EFFECT_EQUIP_LIMIT) + e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) + e3:SetValue(1) + c:RegisterEffect(e3) + --Activate + local e4=Effect.CreateEffect(c) + e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) + e4:SetCode(EVENT_DAMAGE_STEP_END) + e4:SetRange(LOCATION_SZONE) + e4:SetCondition(c511000984.accon) + e4:SetCost(c511000984.accost) + e4:SetTarget(c511000984.actg) + e4:SetOperation(c511000984.acop) + c:RegisterEffect(e4) + if not c511000984.global_check then + c511000984.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511000984.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511000984.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511000984.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end + if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP) + Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) + Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0) +end +function c511000984.operation(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.GetFirstTarget() + if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then + Duel.Equip(tp,e:GetHandler(),tc) + end +end +function c511000984.accon(e,tp,eg,ep,ev,re,r,rp) + local at=Duel.GetAttacker() + local eq=e:GetHandler():GetEquipTarget() + if eq:IsControler(1-tp) then return false end + if not at then return false end + if eq==at then at=Duel.GetAttackTarget() end + return at and at:IsRelateToBattle() and not at:IsStatus(STATUS_BATTLE_DESTROYED) +end +function c511000984.accost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end + Duel.SendtoGrave(e:GetHandler(),REASON_COST) +end +function c511000984.filter(c) + return c:IsType(TYPE_SPELL) and c:CheckActivateEffect(false,false,false)~=nil +end +function c511000984.actg(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>-1 + and Duel.IsExistingMatchingCard(c511000984.filter,tp,LOCATION_HAND,0,1,nil) end +end +function c511000984.acop(e,tp,eg,ep,ev,re,r,rp) + local tc=Duel.SelectMatchingCard(tp,c511000984.filter,tp,LOCATION_HAND,0,1,1,nil):GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end +end diff --git a/script/c511001122.lua b/script/c511001122.lua index 6f54dd56..711e4474 100644 --- a/script/c511001122.lua +++ b/script/c511001122.lua @@ -100,7 +100,7 @@ function c511001122.operation(e,tp,eg,ep,ev,re,r,rp) of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end else - Duel.GetFieldCard(tp,LOCATION_SZONE,5) + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end end end diff --git a/script/c511001145.lua b/script/c511001145.lua index 35f5a8dd..7e522b14 100644 --- a/script/c511001145.lua +++ b/script/c511001145.lua @@ -1,102 +1,102 @@ ---Spell Textbook -function c511001145.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetCost(c511001145.cost) - e1:SetTarget(c511001145.target) - e1:SetOperation(c511001145.activate) - c:RegisterEffect(e1) - if not c511001145.global_check then - c511001145.global_check=true - --check obsolete ruling - local ge1=Effect.CreateEffect(c) - ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) - ge1:SetCode(EVENT_DRAW) - ge1:SetOperation(c511001145.checkop) - Duel.RegisterEffect(ge1,0) - end -end -function c511001145.checkop(e,tp,eg,ep,ev,re,r,rp) - if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then - --obsolete - Duel.RegisterFlagEffect(tp,62765383,0,0,1) - Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) - end -end -function c511001145.cost(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - g:RemoveCard(e:GetHandler()) - return g:GetCount()==0 or g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() - end - local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) - Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) -end -function c511001145.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c511001145.activate(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - Duel.ShuffleDeck(p) - Duel.BreakEffect() - local g=Duel.GetDecktopGroup(p,1) - local tc=g:GetFirst() - Duel.Draw(p,d,REASON_EFFECT) - Duel.ConfirmCards(1-p,tc) - Duel.ShuffleHand(p) - if (Duel.GetLocationCount(tp,LOCATION_SZONE)>0 or tc:IsType(TYPE_FIELD)) and tc:IsType(TYPE_SPELL) - and tc:CheckActivateEffect(false,false,false)~=nil then - local tpe=tc:GetType() - local te=tc:GetActivateEffect() - local tg=te:GetTarget() - local co=te:GetCost() - local op=te:GetOperation() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - Duel.ClearTargetCard() - if bit.band(tpe,TYPE_FIELD)~=0 then - local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) - if Duel.GetFlagEffect(tp,62765383)>0 then - if fc then Duel.Destroy(fc,REASON_RULE) end - of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - else - Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - end - end - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) - tc:CreateEffectRelation(te) - if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 and not tc:IsHasEffect(EFFECT_REMAIN_FIELD) then - tc:CancelToGrave(false) - end - if co then co(te,tp,eg,ep,ev,re,r,rp,1) end - if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end - Duel.BreakEffect() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - if g then - local etc=g:GetFirst() - while etc do - etc:CreateEffectRelation(te) - etc=g:GetNext() - end - end - if op then op(te,tp,eg,ep,ev,re,r,rp) end - tc:ReleaseEffectRelation(te) - if etc then - etc=g:GetFirst() - while etc do - etc:ReleaseEffectRelation(te) - etc=g:GetNext() - end - end - end -end +--Spell Textbook +function c511001145.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetCost(c511001145.cost) + e1:SetTarget(c511001145.target) + e1:SetOperation(c511001145.activate) + c:RegisterEffect(e1) + if not c511001145.global_check then + c511001145.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511001145.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511001145.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511001145.cost(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + g:RemoveCard(e:GetHandler()) + return g:GetCount()==0 or g:FilterCount(Card.IsDiscardable,nil)==g:GetCount() + end + local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) + Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD) +end +function c511001145.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511001145.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + Duel.ShuffleDeck(p) + Duel.BreakEffect() + local g=Duel.GetDecktopGroup(p,1) + local tc=g:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + Duel.ConfirmCards(1-p,tc) + Duel.ShuffleHand(p) + if (Duel.GetLocationCount(tp,LOCATION_SZONE)>0 or tc:IsType(TYPE_FIELD)) and tc:IsType(TYPE_SPELL) + and tc:CheckActivateEffect(false,false,false)~=nil then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + Duel.Hint(HINT_CARD,0,tc:GetOriginalCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 and not tc:IsHasEffect(EFFECT_REMAIN_FIELD) then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511001499.lua b/script/c511001499.lua index 8a579729..6754345a 100644 --- a/script/c511001499.lua +++ b/script/c511001499.lua @@ -1,77 +1,103 @@ ---Take One Chance -function c511001499.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetCode(EVENT_FREE_CHAIN) - e1:SetTarget(c511001499.target) - e1:SetOperation(c511001499.activate) - c:RegisterEffect(e1) -end -function c511001499.filter(c,tp,eg,ep,ev,re,r,rp) - local te=c:GetActivateEffect() - if not te then return false end - local condition=te:GetCondition() - local cost=te:GetCost() - local target=te:GetTarget() - return (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) - and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) -end -function c511001499.target(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return Duel.IsExistingMatchingCard(c511001499.filter,tp,LOCATION_GRAVE,0,1,nil,tp,eg,ep,ev,re,r,rp) - and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end -end -function c511001499.activate(e,tp,eg,ep,ev,re,r,rp) - if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end - local sg=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE,0,nil) - local g=sg:RandomSelect(tp,1) - if g:GetCount()>0 then - local tc=g:GetFirst() - local tpe=tc:GetType() - local te=tc:GetActivateEffect() - if not te then return end - local con=te:GetCondition() - local co=te:GetCost() - local tg=te:GetTarget() - local op=te:GetOperation() - if (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) - and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) then - Duel.ClearTargetCard() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - if bit.band(tpe,TYPE_FIELD)~=0 then - local of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) - if of and Duel.Destroy(of,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end - end - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - Duel.Hint(HINT_CARD,0,tc:GetCode()) - tc:CreateEffectRelation(te) - if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then - tc:CancelToGrave(false) - end - if co then co(te,tp,eg,ep,ev,re,r,rp,1) end - if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - if g then - local etc=g:GetFirst() - while etc do - etc:CreateEffectRelation(te) - etc=g:GetNext() - end - end - Duel.BreakEffect() - if op then op(te,tp,eg,ep,ev,re,r,rp) end - tc:ReleaseEffectRelation(te) - if etc then - etc=g:GetFirst() - while etc do - etc:ReleaseEffectRelation(te) - etc=g:GetNext() - end - end - else - Duel.ConfirmCards(1-tp,g) - Duel.ConfirmCards(tp,g) - end - end -end +--Take One Chance +function c511001499.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetCode(EVENT_FREE_CHAIN) + e1:SetTarget(c511001499.target) + e1:SetOperation(c511001499.activate) + c:RegisterEffect(e1) + if not c511009338.global_check then + c511009338.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511001499.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511001499.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511001499.filter(c,tp,eg,ep,ev,re,r,rp) + local te=c:GetActivateEffect() + if not te then return false end + local condition=te:GetCondition() + local cost=te:GetCost() + local target=te:GetTarget() + return (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) +end +function c511001499.target(e,tp,eg,ep,ev,re,r,rp,chk) + if chk==0 then return Duel.IsExistingMatchingCard(c511001499.filter,tp,LOCATION_GRAVE,0,1,nil,tp,eg,ep,ev,re,r,rp) + and Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end +end +function c511001499.activate(e,tp,eg,ep,ev,re,r,rp) + if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end + local sg=Duel.GetMatchingGroup(nil,tp,LOCATION_GRAVE,0,nil) + local g=sg:RandomSelect(tp,1) + if g:GetCount()>0 then + local tc=g:GetFirst() + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + if not te then return end + local con=te:GetCondition() + local co=te:GetCost() + local tg=te:GetTarget() + local op=te:GetOperation() + if (not condition or condition(te,tp,eg,ep,ev,re,r,rp)) and (not cost or cost(te,tp,eg,ep,ev,re,r,rp,0)) + and (not target or target(te,tp,eg,ep,ev,re,r,rp,0)) then + Duel.ClearTargetCard() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)==TYPE_TRAP+TYPE_FIELD then + Duel.MoveSequence(tc,5) + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + Duel.BreakEffect() + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + else + Duel.ConfirmCards(1-tp,g) + Duel.ConfirmCards(tp,g) + end + end +end diff --git a/script/c511002473.lua b/script/c511002473.lua index d2c18ec2..5287130c 100644 --- a/script/c511002473.lua +++ b/script/c511002473.lua @@ -1,70 +1,100 @@ ---Danger Draw -function c511002473.initial_effect(c) - --Activate - local e1=Effect.CreateEffect(c) - e1:SetCategory(CATEGORY_DRAW) - e1:SetType(EFFECT_TYPE_ACTIVATE) - e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) - e1:SetCode(EVENT_ATTACK_ANNOUNCE) - e1:SetCondition(c511002473.condition) - e1:SetTarget(c511002473.target) - e1:SetOperation(c511002473.activate) - c:RegisterEffect(e1) -end -function c511002473.condition(e,tp,eg,ep,ev,re,r,rp) - local a=Duel.GetAttacker() - return a:IsControler(1-tp) and a:GetAttack()>Duel.GetLP(tp) and Duel.GetAttackTarget()==nil -end -function c511002473.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) - if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end - Duel.SetTargetPlayer(tp) - Duel.SetTargetParam(1) - Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) -end -function c511002473.activate(e,tp,eg,ep,ev,re,r,rp) - local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) - local g=Duel.GetDecktopGroup(p,1) - local tc=g:GetFirst() - Duel.Draw(p,d,REASON_EFFECT) - Duel.ConfirmCards(1-p,tc) - Duel.ShuffleHand(p) - if not tc:IsType(TYPE_TRAP) then return end - Duel.NegateAttack() - if Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and tc:CheckActivateEffect(false,false,false)~=nil - and Duel.SelectYesNo(tp,aux.Stringid(28265983,0)) then - local tpe=tc:GetType() - local te=tc:GetActivateEffect() - local tg=te:GetTarget() - local co=te:GetCost() - local op=te:GetOperation() - e:SetCategory(te:GetCategory()) - e:SetProperty(te:GetProperty()) - Duel.ClearTargetCard() - Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) - Duel.Hint(HINT_CARD,0,tc:GetCode()) - tc:CreateEffectRelation(te) - if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then - tc:CancelToGrave(false) - end - if co then co(te,tp,eg,ep,ev,re,r,rp,1) end - if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end - Duel.BreakEffect() - local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) - if g then - local etc=g:GetFirst() - while etc do - etc:CreateEffectRelation(te) - etc=g:GetNext() - end - end - if op then op(te,tp,eg,ep,ev,re,r,rp) end - tc:ReleaseEffectRelation(te) - if etc then - etc=g:GetFirst() - while etc do - etc:ReleaseEffectRelation(te) - etc=g:GetNext() - end - end - end -end +--Danger Draw +function c511002473.initial_effect(c) + --Activate + local e1=Effect.CreateEffect(c) + e1:SetCategory(CATEGORY_DRAW) + e1:SetType(EFFECT_TYPE_ACTIVATE) + e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) + e1:SetCode(EVENT_ATTACK_ANNOUNCE) + e1:SetCondition(c511002473.condition) + e1:SetTarget(c511002473.target) + e1:SetOperation(c511002473.activate) + c:RegisterEffect(e1) + if not c511002473.global_check then + c511002473.global_check=true + --check obsolete ruling + local ge1=Effect.CreateEffect(c) + ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) + ge1:SetCode(EVENT_DRAW) + ge1:SetOperation(c511002473.checkop) + Duel.RegisterEffect(ge1,0) + end +end +function c511002473.checkop(e,tp,eg,ep,ev,re,r,rp) + if bit.band(r,REASON_RULE)~=0 and Duel.GetTurnCount()==1 then + --obsolete + Duel.RegisterFlagEffect(tp,62765383,0,0,1) + Duel.RegisterFlagEffect(1-tp,62765383,0,0,1) + end +end +function c511002473.condition(e,tp,eg,ep,ev,re,r,rp) + local a=Duel.GetAttacker() + return a:IsControler(1-tp) and a:GetAttack()>Duel.GetLP(tp) and Duel.GetAttackTarget()==nil +end +function c511002473.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) + if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end + Duel.SetTargetPlayer(tp) + Duel.SetTargetParam(1) + Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) +end +function c511002473.activate(e,tp,eg,ep,ev,re,r,rp) + local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) + local g=Duel.GetDecktopGroup(p,1) + local tc=g:GetFirst() + Duel.Draw(p,d,REASON_EFFECT) + Duel.ConfirmCards(1-p,tc) + Duel.ShuffleHand(p) + if not tc:IsType(TYPE_TRAP) then return end + Duel.NegateAttack() + if Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and tc:CheckActivateEffect(false,false,false)~=nil + and Duel.SelectYesNo(tp,aux.Stringid(28265983,0)) then + local tpe=tc:GetType() + local te=tc:GetActivateEffect() + local tg=te:GetTarget() + local co=te:GetCost() + local op=te:GetOperation() + e:SetCategory(te:GetCategory()) + e:SetProperty(te:GetProperty()) + Duel.ClearTargetCard() + if bit.band(tpe,TYPE_FIELD)~=0 then + local fc=Duel.GetFieldCard(1-tp,LOCATION_SZONE,5) + if Duel.GetFlagEffect(tp,62765383)>0 then + if fc then Duel.Destroy(fc,REASON_RULE) end + of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + else + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) + if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end + end + end + Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEUP,true) + if bit.band(tpe,TYPE_TRAP+TYPE_FIELD)==TYPE_TRAP+TYPE_FIELD then + Duel.MoveSequence(tc,5) + end + Duel.Hint(HINT_CARD,0,tc:GetCode()) + tc:CreateEffectRelation(te) + if bit.band(tpe,TYPE_EQUIP+TYPE_CONTINUOUS+TYPE_FIELD)==0 then + tc:CancelToGrave(false) + end + if co then co(te,tp,eg,ep,ev,re,r,rp,1) end + if tg then tg(te,tp,eg,ep,ev,re,r,rp,1) end + Duel.BreakEffect() + local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) + if g then + local etc=g:GetFirst() + while etc do + etc:CreateEffectRelation(te) + etc=g:GetNext() + end + end + if op then op(te,tp,eg,ep,ev,re,r,rp) end + tc:ReleaseEffectRelation(te) + if etc then + etc=g:GetFirst() + while etc do + etc:ReleaseEffectRelation(te) + etc=g:GetNext() + end + end + end +end diff --git a/script/c511009338.lua b/script/c511009338.lua index f2e2a115..dba03427 100644 --- a/script/c511009338.lua +++ b/script/c511009338.lua @@ -67,7 +67,7 @@ function c511009338.activate(e,tp,eg,ep,ev,re,r,rp) of=Duel.GetFieldCard(tp,LOCATION_SZONE,5) if fc and Duel.Destroy(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end else - Duel.GetFieldCard(tp,LOCATION_SZONE,5) + fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5) if fc and Duel.SendtoGrave(fc,REASON_RULE)==0 then Duel.SendtoGrave(tc,REASON_RULE) end end end