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/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/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/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/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/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/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/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/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/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/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 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