Commit 366e8449 authored by mercury233's avatar mercury233

update scripts

parent 7f7e6fcf
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100257001.initial_effect(c)
--link summon
c:EnableReviveLimit()
aux.AddLinkProcedure(c,nil,5,5)
--spsummon condition
......@@ -9,7 +10,7 @@ function c100257001.initial_effect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_SPSUMMON_CONDITION)
e1:SetValue(aux.lnklimit)
e1:SetValue(aux.linklimit)
c:RegisterEffect(e1)
--mat check
local e2=Effect.CreateEffect(c)
......@@ -24,10 +25,10 @@ function c100257001.initial_effect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e3:SetCode(EVENT_SPSUMMON_SUCCESS)
e3:SetProperty(EFFECT_FLAG_DELAY)
e3:SetLabelObject(e2)
e3:SetCondition(c100257001.descon)
e3:SetTarget(c100257001.destg)
e3:SetOperation(c100257001.desop)
e3:SetLabelObject(e2)
c:RegisterEffect(e3)
--immume
local e4=Effect.CreateEffect(c)
......@@ -55,12 +56,6 @@ function c100257001.initial_effect(c)
e6:SetOperation(c100257001.rmop)
c:RegisterEffect(e6)
end
function c100257001.efilter(e,te)
return te:GetOwner()~=e:GetOwner()
end
function c100257001.indes(e,c)
return c:IsAttribute(ATTRIBUTE_DARK+ATTRIBUTE_EARTH+ATTRIBUTE_WATER+ATTRIBUTE_FIRE+ATTRIBUTE_WIND)
end
function c100257001.matcheck(e,c)
local g=c:GetMaterial()
local att=0
......@@ -86,6 +81,12 @@ function c100257001.desop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(aux.TRUE,tp,0,LOCATION_ONFIELD,nil)
Duel.Destroy(g,REASON_EFFECT)
end
function c100257001.efilter(e,te)
return te:GetOwner()~=e:GetOwner()
end
function c100257001.indes(e,c)
return c:IsAttribute(ATTRIBUTE_DARK+ATTRIBUTE_EARTH+ATTRIBUTE_WATER+ATTRIBUTE_FIRE+ATTRIBUTE_WIND)
end
function c100257001.rmcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==1-tp
end
......@@ -96,19 +97,15 @@ function c100257001.rmtg(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c100257001.rmop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local res=true
local res=false
local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_GRAVE,0,nil)
if g:GetCount()>=5 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local sg=Duel.SelectMatchingCard(tp,Card.IsAbleToRemove,tp,LOCATION_GRAVE,0,5,5,nil)
Duel.Remove(sg,POS_FACEDOWN,REASON_EFFECT)
local tc=sg:GetFirst()
while tc do
res=res and tc:IsLocation(LOCATION_REMOVED)
tc=sg:GetNext()
end
else res=false end
if res==false and c:IsRelateToEffect(e) then
if Duel.GetOperatedGroup():FilterCount(Card.IsLocation,nil,LOCATION_REMOVED)==5 then res=true end
end
if not res and c:IsRelateToEffect(e) then
Duel.SendtoGrave(c,REASON_EFFECT)
end
end
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100257006.initial_effect(c)
--link summon
c:EnableReviveLimit()
aux.AddLinkProcedure(c,nil,2,2)
--to grave
......@@ -36,20 +37,19 @@ end
function c100257006.tgfilter(c)
return c:IsSetCard(0xd6) and c:IsAbleToGrave()
end
function c100257006.spfilter(c,e,tp)
return c:IsSetCard(0xd7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100257006.tgtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c100257006.tgfilter,tp,LOCATION_DECK,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND)
end
function c100257006.spfilter(c,e,tp)
return c:IsSetCard(0xd7) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100257006.tgop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,c100257006.tgfilter,tp,LOCATION_DECK,0,1,1,nil)
local tc=g:GetFirst()
if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c100257006.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp)
if g:GetCount()>0 and Duel.SendtoGrave(g,REASON_EFFECT)~=0 and g:GetFirst():IsLocation(LOCATION_GRAVE)
and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c100257006.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp)
and Duel.SelectYesNo(tp,aux.Stringid(100257006,2)) then
Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
......@@ -66,7 +66,7 @@ end
function c100257006.damtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c100257006.damfilter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c100257006.damfilter,tp,LOCATION_MZONE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
local g=Duel.SelectTarget(tp,c100257006.damfilter,tp,LOCATION_MZONE,0,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,g:GetFirst():GetAttack())
end
......
......@@ -29,7 +29,7 @@ function c100257011.lcheck(g,lc)
end
function c100257011.lmlimit(e)
local c=e:GetHandler()
return c:IsSummonType(SUMMON_TYPE_LINK) and c:GetTurnID()==Duel.GetTurnCount()
return c:IsStatus(STATUS_SPSUMMON_TURN) and c:IsSummonType(SUMMON_TYPE_LINK)
end
function c100257011.cfilter(c,tp)
return c:IsFaceup()
......@@ -51,16 +51,11 @@ function c100257011.eqop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if Duel.GetLocationCount(tp,LOCATION_SZONE)<=0 then return end
if tc:IsRelateToEffect(e) and tc:IsFaceup() then
local flag=0
local att=tc:GetOriginalAttribute()
local race=tc:GetOriginalRace()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP)
local g=Duel.SelectMatchingCard(tp,c100257011.eqfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,att,race,tp)
local gc=g:GetFirst()
if gc:IsLocation(LOCATION_DECK) then
flag=1
end
if not Duel.Equip(tp,gc,tc) then return end
local g=Duel.SelectMatchingCard(tp,c100257011.eqfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,tc:GetOriginalAttribute(),tc:GetOriginalRace(),tp)
local sc=g:GetFirst()
local res=sc:IsLocation(LOCATION_DECK) and true or false
if not Duel.Equip(tp,sc,tc) then return end
--equip limit
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
......@@ -69,21 +64,21 @@ function c100257011.eqop(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetLabelObject(tc)
e1:SetValue(c100257011.eqlimit)
gc:RegisterEffect(e1)
sc:RegisterEffect(e1)
--atk up
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_EQUIP)
e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetValue(1000)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
gc:RegisterEffect(e2)
if flag==1 then
sc:RegisterEffect(e2)
if res then
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e3:SetTargetRange(1,0)
e3:SetLabel(gc:GetCode())
e3:SetLabel(sc:GetCode())
e3:SetTarget(c100257011.splimit)
e3:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e3,tp)
......
......@@ -74,7 +74,7 @@ function c100257021.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c100257021.thfilter),tp,LOCATION_GRAVE,0,nil)
local sg=g:SelectSubGroup(tp,aux.dncheck,false,1,2)
if sg then
if sg and sg:GetCount()>0 then
Duel.SendtoHand(sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg)
end
......
......@@ -71,19 +71,17 @@ function c100257026.desrepop(e,tp,eg,ep,ev,re,r,rp)
Duel.Destroy(tc,REASON_EFFECT+REASON_REPLACE)
end
function c100257026.spfilter(c,e,tp,lv)
return c:IsRace(RACE_WINDBEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLevelBelow(lv)
return c:IsRace(RACE_WINDBEAST) and c:IsLevelBelow(lv) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100257026.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local ct=Duel.GetLocationCount(tp,LOCATION_SZONE)
ct=ct+Duel.GetLocationCount(1-tp,LOCATION_SZONE)
local ct=Duel.GetLocationCount(tp,LOCATION_SZONE,PLAYER_NONE,0)+Duel.GetLocationCount(1-tp,LOCATION_SZONE,PLAYER_NONE,0)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c100257026.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp,ct) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK)
end
function c100257026.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
local ct=Duel.GetLocationCount(tp,LOCATION_SZONE)
ct=ct+Duel.GetLocationCount(1-tp,LOCATION_SZONE)
local ct=Duel.GetLocationCount(tp,LOCATION_SZONE,PLAYER_NONE,0)+Duel.GetLocationCount(1-tp,LOCATION_SZONE,PLAYER_NONE,0)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c100257026.spfilter,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,e,tp,ct)
if g:GetCount()>0 then
......
......@@ -32,12 +32,6 @@ function c100257031.initial_effect(c)
c:RegisterEffect(e3)
Duel.AddCustomActivityCounter(100257031,ACTIVITY_SPSUMMON,c100257031.counterfilter)
end
function c100257031.atktg(e,c)
return e:GetHandler():GetLinkedGroup():IsContains(c) and c:IsRace(RACE_FIEND)
end
function c100257031.atkval(e,c)
return c:GetLevel()*100
end
function c100257031.counterfilter(c)
return c:IsSetCard(0x8)
end
......@@ -59,11 +53,11 @@ function c100257031.splimit(e,c)
return not c:IsSetCard(0x8)
end
function c100257031.ffilter(c,tp)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0x8)
and c.material and Duel.IsExistingMatchingCard(c100257031.thfilter,tp,LOCATION_DECK,0,1,nil,c)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0x8)
and Duel.IsExistingMatchingCard(c100257031.thfilter,tp,LOCATION_DECK,0,1,nil,c)
end
function c100257031.thfilter(c,fc)
return c:IsCode(table.unpack(fc.material)) and c:IsAbleToHand() and c:IsType(TYPE_MONSTER)
return aux.IsMaterialListCode(fc,c:GetCode()) and c:IsAbleToHand() and c:IsType(TYPE_MONSTER)
end
function c100257031.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c100257031.ffilter,tp,LOCATION_EXTRA,0,1,nil,tp) end
......@@ -71,15 +65,21 @@ function c100257031.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c100257031.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local rc=Duel.SelectMatchingCard(tp,c100257031.ffilter,tp,LOCATION_EXTRA,0,1,1,nil,tp):GetFirst()
if rc then
Duel.ConfirmCards(1-tp,rc)
local tc=Duel.SelectMatchingCard(tp,c100257031.ffilter,tp,LOCATION_EXTRA,0,1,1,nil,tp):GetFirst()
if tc then
Duel.ConfirmCards(1-tp,tc)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.GetMatchingGroup(c100257031.thfilter,tp,LOCATION_DECK,0,nil,rc)
local g=Duel.GetMatchingGroup(c100257031.thfilter,tp,LOCATION_DECK,0,nil,tc)
local sg=g:SelectSubGroup(tp,aux.dncheck,false,1,2)
if sg then
if sg and sg:GetCount()>0 then
Duel.SendtoHand(sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg)
end
end
end
function c100257031.atktg(e,c)
return e:GetHandler():GetLinkedGroup():IsContains(c) and c:IsRace(RACE_FIEND)
end
function c100257031.atkval(e,c)
return c:GetLevel()*100
end
......@@ -2,9 +2,10 @@
--Scripted by mallu11
function c100257036.initial_effect(c)
c:EnableCounterPermit(0x1)
--link summon
c:EnableReviveLimit()
aux.AddLinkProcedure(c,nil,2,3,c100257036.lcheck)
c:EnableCounterPermit(0x1)
--add counter
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(100257036,0))
......@@ -41,35 +42,34 @@ end
function c100257036.lcheck(g,lc)
return g:IsExists(Card.IsLinkRace,1,nil,RACE_SPELLCASTER)
end
function c100257036.atfilter(c)
return c:IsFaceup() and c:IsSetCard(0x12a)
end
function c100257036.atcon(e)
return Duel.IsExistingMatchingCard(c100257036.atfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
end
function c100257036.ctfilter(c)
return c:IsFaceup() and c:IsType(TYPE_SPELL)
return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsType(TYPE_SPELL)
end
function c100257036.ctcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsSummonType(SUMMON_TYPE_LINK)
end
function c100257036.ctop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local loc=LOCATION_ONFIELD+LOCATION_GRAVE
local g=Duel.GetMatchingGroup(c100257036.ctfilter,tp,loc,loc,nil)
if c:IsRelateToEffect(e) and c:IsFaceup() and g:GetCount()>0 then
local g=Duel.GetMatchingGroup(c100257036.ctfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,LOCATION_ONFIELD+LOCATION_GRAVE,nil)
if c:IsFaceup() and c:IsRelateToEffect(e) and g:GetCount()>0 then
c:AddCounter(0x1,g:GetCount())
end
end
function c100257036.spfilter(c,e,tp,zone)
return c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE,tp,zone)
function c100257036.atfilter(c)
return c:IsFaceup() and c:IsSetCard(0x12a)
end
function c100257036.atcon(e)
return Duel.IsExistingMatchingCard(c100257036.atfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil)
end
function c100257036.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2
end
function c100257036.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsCanRemoveCounter(tp,LOCATION_ONFIELD,0,0x1,3,REASON_COST) end
Duel.RemoveCounter(tp,LOCATION_ONFIELD,0,0x1,3,REASON_COST)
if chk==0 then return Duel.IsCanRemoveCounter(tp,1,0,0x1,3,REASON_COST) end
Duel.RemoveCounter(tp,1,0,0x1,3,REASON_COST)
end
function c100257036.spfilter(c,e,tp,zone)
return c:IsRace(RACE_SPELLCASTER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE,tp,zone)
end
function c100257036.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local zone=bit.band(e:GetHandler():GetLinkedZone(tp),0x1f)
......
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100257041.initial_effect(c)
--link summon
c:EnableReviveLimit()
aux.AddLinkProcedure(c,nil,2,2,c100257041.lcheck)
--spsummon1
......@@ -45,27 +46,20 @@ function c100257041.spfilter1(c,e,tp)
return c:IsType(TYPE_SYNCHRO) and (c:IsSetCard(0x123) or c:IsRace(RACE_PLANT)) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SYNCHRO,tp,false,false)
end
function c100257041.spcost1(e,tp,eg,ep,ev,re,r,rp,chk)
e:SetLabel(1)
if chk==0 then return true end
end
function c100257041.sptg1(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then
if e:GetLabel()==0 then return false end
e:SetLabel(0)
return c:IsReleasable() and Duel.CheckReleaseGroup(tp,c100257041.rfilter,1,c,e,tp,c)
and aux.MustMaterialCheck(nil,tp,EFFECT_MUST_BE_SMATERIAL)
and Duel.IsExistingMatchingCard(c100257041.spfilter1,tp,LOCATION_EXTRA,0,1,nil,e,tp)
end
e:SetLabel(0)
if chk==0 then return c:IsReleasable() and Duel.CheckReleaseGroup(tp,c100257041.rfilter,1,c,e,tp,c) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g=Duel.SelectReleaseGroup(tp,c100257041.rfilter,1,1,c,e,tp,c)
g:AddCard(c)
Duel.Release(g,REASON_COST)
end
function c100257041.sptg1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return aux.MustMaterialCheck(nil,tp,EFFECT_MUST_BE_SMATERIAL)
and Duel.IsExistingMatchingCard(c100257041.spfilter1,tp,LOCATION_EXTRA,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
end
function c100257041.spop1(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCountFromEx(tp)<=0 then return end
if Duel.GetLocationCountFromEx(tp)<=0 or not aux.MustMaterialCheck(nil,tp,EFFECT_MUST_BE_SMATERIAL) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c100257041.spfilter1,tp,LOCATION_EXTRA,0,1,1,nil,e,tp)
local tc=g:GetFirst()
......@@ -76,12 +70,12 @@ end
function c100257041.cfilter(c,tp)
return c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp and c:IsReason(REASON_EFFECT)
end
function c100257041.spfilter2(c,e,tp)
return c:IsSetCard(0x1123) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100257041.spcon2(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c100257041.cfilter,1,nil,tp) and not eg:IsContains(e:GetHandler())
end
function c100257041.spfilter2(c,e,tp)
return c:IsSetCard(0x1123) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100257041.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c100257041.spfilter2,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
......
......@@ -35,9 +35,9 @@ function c100257046.atkcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsSummonType(SUMMON_TYPE_LINK)
end
function c100257046.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and chkc:IsFaceup() and chkc:GetAttack()>0 end
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and aux.nzatk(chkc) end
if chk==0 then return Duel.IsExistingTarget(aux.nzatk,tp,0,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPPO)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
Duel.SelectTarget(tp,aux.nzatk,tp,0,LOCATION_MZONE,1,1,nil)
end
function c100257046.atkop(e,tp,eg,ep,ev,re,r,rp)
......@@ -53,29 +53,23 @@ function c100257046.atkop(e,tp,eg,ep,ev,re,r,rp)
end
end
function c100257046.cfilter(c)
return c:IsFaceup() and c:GetAttack()==0
return c:IsFaceup() and c:IsAttack(0)
end
function c100257046.thfilter(c)
return c:IsRace(RACE_REPTILE) and c:IsAbleToHand()
end
function c100257046.fselect(g)
if g:GetClassCount(Card.GetCode)==g:GetCount() then
Duel.SetSelectedCard(g)
return true
else return false end
end
function c100257046.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
local ct=Duel.GetMatchingGroupCount(c100257046.cfilter,tp,0,LOCATION_MZONE,nil)
local g=Duel.GetMatchingGroup(c100257046.thfilter,tp,LOCATION_DECK,0,nil)
if chk==0 then return ct>0 and g:GetCount()>0 end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,0,tp,LOCATION_DECK)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end
function c100257046.thop(e,tp,eg,ep,ev,re,r,rp)
local ct=Duel.GetMatchingGroupCount(c100257046.cfilter,tp,0,LOCATION_MZONE,nil)
local g=Duel.GetMatchingGroup(c100257046.thfilter,tp,LOCATION_DECK,0,nil)
if ct>0 and g:GetCount()>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg=g:SelectSubGroup(tp,c100257046.fselect,false,1,ct)
local sg=g:SelectSubGroup(tp,aux.dncheck,false,1,ct)
if sg:GetCount()>0 then
Duel.SendtoHand(sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg)
......
......@@ -31,14 +31,15 @@ function c100257051.tkcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsSummonType(SUMMON_TYPE_LINK)
end
function c100257051.tktg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) and Duel.GetLocationCount(tp,LOCATION_MZONE)>2
and Duel.IsPlayerCanSpecialSummonMonster(tp,100257151,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) end
if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133)
and Duel.GetLocationCount(tp,LOCATION_MZONE)>2
and Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,3,0,0)
Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,3,0,0)
end
function c100257051.tkop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)>2 and not Duel.IsPlayerAffectedByEffect(tp,59822133)
and Duel.IsPlayerCanSpecialSummonMonster(tp,100257151,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then
and Duel.IsPlayerCanSpecialSummonMonster(tp,31533705,0x101b,0x4011,0,0,3,RACE_MACHINE,ATTRIBUTE_WIND) then
local ct=3
while ct>0 do
local token=Duel.CreateToken(tp,100257151)
......
--幻奏の華聖ブルーム・ハーモニスト
--幻奏の華聖ブルーム・ハーモニスト
--Scripted by mallu11
function c100257066.initial_effect(c)
......@@ -30,13 +30,6 @@ function c100257066.initial_effect(c)
c:RegisterEffect(e2)
Duel.AddCustomActivityCounter(100257066,ACTIVITY_SPSUMMON,c100257066.counterfilter)
end
function c100257066.cfilter(c)
return c:IsFaceup() and c:IsSetCard(0x9b)
end
function c100257066.actcon(e)
local a=Duel.GetAttacker()
return a and c100257066.cfilter(a) and e:GetHandler():GetLinkedGroup():IsContains(a)
end
function c100257066.counterfilter(c)
return c:IsSetCard(0x9b)
end
......@@ -62,28 +55,34 @@ end
function c100257066.spfilter(c,e,tp,zone)
return c:IsSetCard(0x9b) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE,tp,zone)
end
function c100257066.fselect(g)
if g:GetClassCount(Card.GetLevel)==g:GetCount() then
Duel.SetSelectedCard(g)
return true
else return false end
end
function c100257066.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local zone=bit.band(e:GetHandler():GetLinkedZone(tp),0x1f)
local ct=Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)
local g=Duel.GetMatchingGroup(c100257066.spfilter,tp,LOCATION_DECK,0,nil,e,tp,zone)
if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133) and ct>1 and g:GetClassCount(Card.GetLevel)>=2 end
if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,59822133)
and ft>1 and g:GetClassCount(Card.GetLevel)>=2 end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_DECK)
end
function c100257066.fselect(g)
return g:GetClassCount(Card.GetLevel)==g:GetCount()
end
function c100257066.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local zone=bit.band(c:GetLinkedZone(tp),0x1f)
local ct=Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)
local g=Duel.GetMatchingGroup(c100257066.spfilter,tp,LOCATION_DECK,0,nil,e,tp,zone)
if c:IsRelateToEffect(e) and not Duel.IsPlayerAffectedByEffect(tp,59822133) and ct>1 and g:GetClassCount(Card.GetLevel)>=2 then
if c:IsRelateToEffect(e) and not Duel.IsPlayerAffectedByEffect(tp,59822133) and ft>1 and g:GetClassCount(Card.GetLevel)>=2 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local sg=g:SelectSubGroup(tp,c100257066.fselect,false,2,2)
if sg:GetCount()==2 then
if sg and sg:GetCount()==2 then
Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP_DEFENSE,zone)
end
end
end
function c100257066.cfilter(c)
return c:IsFaceup() and c:IsSetCard(0x9b)
end
function c100257066.actcon(e)
local a=Duel.GetAttacker()
return a and c100257066.cfilter(a) and e:GetHandler():GetLinkedGroup():IsContains(a)
end
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100257071.initial_effect(c)
--link summon
c:EnableReviveLimit()
aux.AddLinkProcedure(c,aux.FilterBoolFunction(Card.IsLinkType,TYPE_EFFECT),2,2)
--change attribute
......
......@@ -18,14 +18,14 @@ function c100257076.initial_effect(c)
c:RegisterEffect(e1)
end
function c100257076.mfilter(c)
return c:IsSetCard(0x10ec) and c:IsLinkType(TYPE_PENDULUM)
return c:IsLinkSetCard(0x10ec) and c:IsLinkType(TYPE_PENDULUM)
end
function c100257076.spfilter(c,e,tp)
return c:IsCanBeSpecialSummoned(e,0,tp,false,false)
and Duel.IsExistingMatchingCard(c100257076.stfilter,tp,LOCATION_EXTRA+LOCATION_DECK,0,1,nil,c:GetCode())
end
function c100257076.stfilter(c,code)
return (c:IsFaceup() or c:IsLocation(LOCATION_DECK)) and c:IsType(TYPE_PENDULUM) and c:IsSetCard(0x10ec) and not c:IsCode(code)
return (c:IsFaceup() or c:IsLocation(LOCATION_DECK)) and c:IsType(TYPE_PENDULUM) and c:IsSetCard(0x10ec) and not c:IsCode(code) and not c:IsForbidden()
end
function c100257076.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_PZONE) and chkc:IsControler(tp) and c100257076.spfilter(chkc,e,tp) end
......
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100257081.initial_effect(c)
--link summon
c:EnableReviveLimit()
aux.AddLinkProcedure(c,nil,2,2)
--spsummon condition
......
......@@ -11,7 +11,7 @@ function c100257086.initial_effect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_SPSUMMON_CONDITION)
e1:SetValue(aux.lnklimit)
e1:SetValue(aux.linklimit)
c:RegisterEffect(e1)
--remove
local e2=Effect.CreateEffect(c)
......@@ -89,7 +89,7 @@ function c100257086.retop(e,tp,eg,ep,ev,re,r,rp)
end
function c100257086.tgtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local c=e:GetHandler()
if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(tp) and chkc~=c end
if chkc then return chkc:IsOnField() and chkc:IsControler(tp) and chkc~=c end
if chk==0 then return Duel.IsExistingTarget(aux.TRUE,tp,LOCATION_ONFIELD,0,1,c) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_ONFIELD,0,1,1,c)
......
......@@ -47,18 +47,18 @@ function c100257091.atkcon(e,tp,eg,ep,ev,re,r,rp)
return re:IsActiveType(TYPE_MONSTER) and Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)==LOCATION_GRAVE
and e:GetHandler():GetFlagEffect(1)>0
end
function c100257091.atkcon2(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c100257091.spfilter,1,nil) and not eg:IsContains(e:GetHandler())
end
function c100257091.spfilter(c)
return c:GetSummonLocation()==LOCATION_GRAVE
end
function c100257091.atkcon2(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c100257091.spfilter,1,nil) and not eg:IsContains(e:GetHandler())
end
function c100257091.atkfilter(c)
return c:IsFaceup() and not (c:GetAttack()==0 and (c:IsDisabled() or (not c:IsType(TYPE_EFFECT) and c:GetOriginalType()&TYPE_EFFECT==0)))
return c:IsFaceup() and c:GetAttack()>0
end
function c100257091.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local c=e:GetHandler()
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc~=c and c100257091.atkfilter(chkc) end
if chkc then return chkc:IsLocation(LOCATION_MZONE) and c100257091.atkfilter(chkc) and chkc~=c end
if chk==0 then return Duel.IsExistingTarget(c100257091.atkfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,c) end
local g=Duel.SelectTarget(tp,c100257091.atkfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,c)
Duel.SetOperationInfo(0,CATEGORY_DISABLE,g,1,0,0)
......@@ -66,25 +66,22 @@ end
function c100257091.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and tc:IsFaceup() then
if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetAttack()>0 then
Duel.NegateRelatedChain(tc,RESET_TURN_SET)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_ATTACK_FINAL)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetValue(0)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e1)
Duel.NegateRelatedChain(tc,RESET_TURN_SET)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_DISABLE)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_DISABLE_EFFECT)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e3:SetValue(RESET_TURN_SET)
e3:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e3)
......
......@@ -52,7 +52,7 @@ function c100257096.tktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c100257096.tkfilter(chkc,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c100257096.tkfilter,tp,0,LOCATION_MZONE,1,nil,tp) end
local g=Duel.SelectTarget(tp,c100257096.tkfilter,tp,0,LOCATION_MZONE,1,1,nil,tp)
Duel.SelectTarget(tp,c100257096.tkfilter,tp,0,LOCATION_MZONE,1,1,nil,tp)
Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0)
end
......
......@@ -64,20 +64,15 @@ function c100337001.tgop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.SelectMatchingCard(tp,c100337001.tgfilter,tp,LOCATION_HAND,0,1,1,nil):GetFirst()
if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) then
local lv=tc:GetOriginalLevel()
local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_MZONE,0,nil)
local gc=g:GetFirst()
while gc do
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
e1:SetValue(lv*100)
gc:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EFFECT_UPDATE_DEFENSE)
gc:RegisterEffect(e2)
gc=g:GetNext()
end
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_PHASE+PHASE_END)
e1:SetValue(lv*100)
e1:SetTargetRange(LOCATION_MZONE,0)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EFFECT_UPDATE_DEFENSE)
Duel.RegisterEffect(e2,tp)
end
end
......@@ -47,6 +47,7 @@ function c100423001.drop(e,tp,eg,ep,ev,re,r,rp)
local dc=Duel.GetOperatedGroup():GetFirst()
if dc:IsType(TYPE_SPELL+TYPE_TRAP) and dc:IsSSetable()
and Duel.SelectYesNo(tp,aux.Stringid(100423001,0)) then
Duel.BreakEffect()
Duel.SSet(tp,dc)
if dc:IsType(TYPE_QUICKPLAY) then
local e1=Effect.CreateEffect(c)
......@@ -75,19 +76,18 @@ function c100423001.spfilter2(c,e,tp)
return c:IsCode(38033121) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423001.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local loc=LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE
if chk==0 then return Duel.IsExistingMatchingCard(c100423001.spfilter1,tp,loc,0,1,nil,e,tp)
and Duel.GetLocationCount(tp,LOCATION_MZONE)>1 and not Duel.IsPlayerAffectedByEffect(tp,59822133) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,loc)
if chk==0 then return Duel.IsExistingMatchingCard(c100423001.spfilter1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp)
and Duel.GetLocationCount(tp,LOCATION_MZONE)>1
and not Duel.IsPlayerAffectedByEffect(tp,59822133) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE)
end
function c100423001.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.IsPlayerAffectedByEffect(tp,59822133) then return end
if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 then return end
local loc=LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g1=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100423001.spfilter1),tp,loc,0,1,1,nil,e,tp)
local g1=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100423001.spfilter1),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g2=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100423001.spfilter2),tp,loc,0,1,1,g1:GetFirst(),e,tp)
local g2=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100423001.spfilter2),tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,1,g1:GetFirst(),e,tp)
g1:Merge(g2)
if g1:GetCount()==2 then
Duel.SpecialSummon(g1,0,tp,tp,false,false,POS_FACEUP)
......
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100423002.initial_effect(c)
aux.AddCodeList(c,46986414,38033121)
--spsummon
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
......@@ -79,11 +80,10 @@ function c100423002.drfilter(c)
end
function c100423002.drcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c100423002.drfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,nil) end
local gc=1
if Duel.IsPlayerCanDraw(tp,2) then gc=2 end
local g1=Duel.GetMatchingGroup(c100423002.drfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,nil)
local ct=1
if Duel.IsPlayerCanDraw(tp,2) then ct=2 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=g1:Select(tp,1,gc,nil)
local g=Duel.SelectMatchingCard(tp,c100423002.drfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,ct,nil)
e:SetLabel(Duel.SendtoGrave(g,REASON_COST))
end
function c100423002.drtg(e,tp,eg,ep,ev,re,r,rp,chk)
......
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100423004.initial_effect(c)
aux.AddCodeList(c,46986414,38033121)
--activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
......@@ -12,54 +13,38 @@ function c100423004.initial_effect(c)
e1:SetOperation(c100423004.activate)
c:RegisterEffect(e1)
end
c100423004.card_code_list={46986414,38033121}
function c100423004.filter1(c,e)
return not c:IsImmuneToEffect(e)
end
function c100423004.filter2(c,e,tp,m,f,gc,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,gc,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 c100423004.fcheck(tp,sg,fc)
return sg:IsExists(Card.IsFusionCode,1,nil,46986414,38033121)
end
function c100423004.rcheck(tp,g,c)
return g:IsExists(Card.IsCode,1,nil,46986414,38033121)
end
function c100423004.target(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local g=nil
local tc=nil
local chkf=tp
local mg1=Duel.GetFusionMaterial(tp)
local mg2=nil
g=mg1:Filter(Card.IsCode,nil,46986414,38033121)
local res1=false
gc=g:GetFirst()
while gc do
res1=res1 or Duel.IsExistingMatchingCard(c100423004.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,gc,chkf)
gc=g:GetNext()
end
aux.FCheckAdditional=c100423004.fcheck
local res1=Duel.IsExistingMatchingCard(c100423004.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res1 then
local ce=Duel.GetChainMaterial(tp)
if ce~=nil then
local fgroup=ce:GetTarget()
local mg3=fgroup(ce,e,tp)
local mg2=fgroup(ce,e,tp)
local mf=ce:GetValue()
g=mg3:Filter(Card.IsCode,nil,46986414,38033121)
gc=g:GetFirst()
while gc do
res1=res1 or Duel.IsExistingMatchingCard(c100423004.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,mf,gc,chkf)
gc=g:GetNext()
end
res1=Duel.IsExistingMatchingCard(c100423004.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg2,mf,chkf)
end
end
local mg=Duel.GetRitualMaterial(tp)
local sg=nil
g=mg:Filter(Card.IsCode,nil,46986414,38033121)
local res2=false
gc=g:GetFirst()
while gc do
res2=res2 or Duel.IsExistingMatchingCard(aux.RitualUltimateFilter,tp,LOCATION_HAND,0,1,nil,aux.TRUE,e,tp,mg,sg,Card.GetLevel,"Greater",gc)
gc=g:GetNext()
end
if chk==0 then
return res1 or res2
end
local mg3=Duel.GetRitualMaterial(tp)
aux.RCheckAdditional=c100423004.rcheck
local res2=mg3:IsExists(Card.IsCode,1,nil,46986414,38033121)
and Duel.IsExistingMatchingCard(aux.RitualUltimateFilter,tp,LOCATION_HAND,0,1,nil,aux.TRUE,e,tp,mg3,nil,Card.GetLevel,"Greater")
aux.RCheckAdditional=nil
if chk==0 then return res1 or res2 end
local s=0
if res1 and not res2 then
s=Duel.SelectOption(tp,aux.Stringid(100423004,0))
......@@ -81,40 +66,19 @@ function c100423004.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
end
function c100423004.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=nil
local gc=nil
if e:GetLabel()==0 then
local chkf=tp
local mg1=Duel.GetFusionMaterial(tp):Filter(c100423004.filter1,nil,e)
aux.FCheckAdditional=c100423004.fcheck
local sg1=Duel.GetMatchingGroup(c100423004.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
g=mg1:Filter(Card.IsCode,nil,46986414,38033121)
gc=g:GetFirst()
local sg1=Group.CreateGroup()
while gc do
sg1:Merge(Duel.GetMatchingGroup(c100423004.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,gc,chkf))
if not Duel.IsExistingMatchingCard(c100423004.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,gc,chkf) then
mg1:RemoveCard(gc)
end
gc=g:GetNext()
end
local mg3=nil
local sg2=nil
local ce=Duel.GetChainMaterial(tp)
if ce~=nil then
local fgroup=ce:GetTarget()
mg3=fgroup(ce,e,tp)
mg2=fgroup(ce,e,tp)
local mf=ce:GetValue()
g=mg3:Filter(Card.IsCode,nil,46986414,38033121)
gc=g:GetFirst()
local sg2=Group.CreateGroup()
while gc do
sg2:Merge(Duel.GetMatchingGroup(c100423004.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg3,mf,gc,chkf))
if not Duel.IsExistingMatchingCard(c100423004.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg3,nil,gc,chkf) then
mg3:RemoveCard(gc)
end
gc=g:GetNext()
end
sg2=Duel.GetMatchingGroup(c100423004.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()
......@@ -123,82 +87,45 @@ function c100423004.activate(e,tp,eg,ep,ev,re,r,rp)
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
g=mg1:Filter(Card.IsCode,nil,46986414,38033121)
gc=g:GetFirst()
local pg=Group.CreateGroup()
while gc do
if tc:CheckFusionMaterial(mg1,gc,chkf) then
pg:AddCard(gc)
end
gc=g:GetNext()
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g=pg:Select(tp,1,1,nil)
Duel.SetSelectedCard(g:GetFirst())
local mat1=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf)
tc:SetMaterial(mat1)
Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION)
local mat=Duel.SelectFusionMaterial(tp,tc,mg1,nil,chkf)
tc:SetMaterial(mat)
Duel.SendtoGrave(mat,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION)
Duel.BreakEffect()
Duel.SpecialSummon(tc,SUMMON_TYPE_FUSION,tp,tp,false,false,POS_FACEUP)
else
g=mg3:Filter(Card.IsCode,nil,46986414,38033121)
gc=g:GetFirst()
local pg=nil
while gc do
if tc:CheckFusionMaterial(mg3,gc,chkf) then
pg:AddCard(gc)
end
gc=g:GetNext()
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g=pg:Select(tp,1,1,nil)
Duel.SetSelectedCard(g:GetFirst())
local mat2=Duel.SelectFusionMaterial(tp,tc,mg3,nil,chkf)
local mat2=Duel.SelectFusionMaterial(tp,tc,mg2,nil,chkf)
local fop=ce:GetOperation()
fop(ce,e,tp,tc,mat2)
end
tc:CompleteProcedure()
end
end
if e:GetLabel()==1 then
aux.FCheckAdditional=nil
elseif e:GetLabel()==1 then
local mg=Duel.GetRitualMaterial(tp)
local sg=nil
g=mg:Filter(Card.IsCode,nil,46986414,38033121)
local sg1=Group.CreateGroup()
gc=g:GetFirst()
while gc do
sg1:Merge(Duel.GetMatchingGroup(aux.RitualUltimateFilter,tp,LOCATION_HAND,0,nil,aux.TRUE,e,tp,mg,sg,Card.GetLevel,"Greater",gc))
if not Duel.IsExistingMatchingCard(aux.RitualUltimateFilter,tp,LOCATION_HAND,0,1,nil,aux.TRUE,e,tp,mg,sg,Card.GetLevel,"Greater",gc) then
mg:RemoveCard(gc)
end
gc=g:GetNext()
end
aux.RCheckAdditional=c100423004.rcheck
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tg=sg1:Select(tp,1,1,nil)
local tg=Duel.SelectMatchingCard(tp,aux.RitualUltimateFilter,tp,LOCATION_HAND,0,1,1,nil,aux.TRUE,e,tp,mg,nil,Card.GetLevel,"Greater")
local tc=tg:GetFirst()
if tc then
mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc)
if sg then
mg:Merge(sg)
end
if tc.mat_filter then
mg=mg:Filter(tc.mat_filter,tc,tp)
else
mg:RemoveCard(tc)
end
g=mg:Filter(Card.IsCode,nil,46986414,38033121)
gc=g:Select(tp,1,1,nil):GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
Duel.SetSelectedCard(gc)
aux.GCheckAdditional=aux.RitualCheckAdditional(tc,tc:GetLevel(),"Greater")
local mat=mg:SelectSubGroup(tp,aux.RitualCheck,false,1,tc:GetLevel(),tp,tc,tc:GetLevel(),"Greater")
aux.GCheckAdditional=nil
if not mat or mat:GetCount()==0 then return end
if not mat or mat:GetCount()==0 then
aux.RCheckAdditional=nil
return
end
tc:SetMaterial(mat)
Duel.ReleaseRitualMaterial(mat)
Duel.BreakEffect()
Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP)
tc:CompleteProcedure()
end
aux.RCheckAdditional=nil
end
end
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100423005.initial_effect(c)
aux.AddCodeList(c,46986414,38033121)
--activate
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(100423005,0))
......@@ -35,7 +36,6 @@ function c100423005.initial_effect(c)
e4:SetOperation(c100423005.desop)
c:RegisterEffect(e4)
end
c100423005.card_code_list={46986414,38033121}
function c100423005.cfilter(c,e,tp)
return c:IsCode(46986414,38033121) and c:IsReleasable() and Duel.GetMZoneCount(tp,c)>0
and Duel.IsExistingMatchingCard(c100423005.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp,c:GetCode())
......@@ -68,7 +68,7 @@ end
function c100423005.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100423005.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp,e:GetLabel())
if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) then
if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0 then
Duel.NegateEffect(ev)
end
end
......
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100423012.initial_effect(c)
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcFunRep(c,c100423012.ffilter,2,true)
--spsummon condition
......@@ -62,10 +63,23 @@ function c100423012.srop(e,tp,eg,ep,ev,re,r,rp)
Duel.ConfirmCards(1-tp,g)
end
end
function c100423012.atkfilter(c)
return c:IsFaceup() and c:GetAttribute()~=0
end
function c100423012.val(e,c)
local g=Duel.GetFieldGroup(e:GetHandlerPlayer(),LOCATION_MZONE,0)
local sg=g:Filter(Card.IsFaceup,nil)
return sg:GetClassCount(Card.GetAttribute)*200
local g=Duel.GetMatchingGroup(c100423012.atkfilter,e:GetHandlerPlayer(),LOCATION_MZONE,0,nil)
local att=0
local tc=g:GetFirst()
while tc do
att=bit.bor(att,tc:GetAttribute())
tc=g:GetNext()
end
local ct=0
while att~=0 do
if bit.band(att,0x1)~=0 then ct=ct+1 end
att=bit.rshift(att,1)
end
return ct*200
end
function c100423012.descon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......
......@@ -27,7 +27,7 @@ function c100423013.initial_effect(c)
c:RegisterEffect(e2)
end
function c100423013.spfilter(c,e,tp)
return c:IsLevelBelow(4) and c:IsSetCard(0x8) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
return c:IsLevelBelow(4) and c:IsSetCard(0x8) and not c:IsCode(100423013) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423013.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_GRAVE) and c100423013.spfilter(chkc,e,tp) end
......@@ -38,7 +38,6 @@ function c100423013.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
end
function c100423013.operation(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
......
......@@ -17,75 +17,43 @@ end
function c100423014.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetLP(tp)<Duel.GetLP(1-tp)
end
function c100423014.thfilter(c)
return (c:IsSetCard(0x3008) or c:IsSetCard(0xa4) or c:IsSetCard(0x1f)) and c:IsAttackBelow(math.abs(Duel.GetLP(0)-Duel.GetLP(1))) and c:IsAbleToHand()
end
function c100423014.spfilter(c,e,tp)
return (c:IsSetCard(0x3008) or c:IsSetCard(0xa4) or c:IsSetCard(0x1f)) and c:IsAttackBelow(math.abs(Duel.GetLP(0)-Duel.GetLP(1))) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423014.cfilter(c,e,tp)
return (c:IsSetCard(0x3008) or c:IsSetCard(0xa4) or c:IsSetCard(0x1f)) and c:IsAttackBelow(math.abs(Duel.GetLP(0)-Duel.GetLP(1))) and (c:IsAbleToHand() or c:IsCanBeSpecialSummoned(e,0,tp,false,false))
function c100423014.thfilter(c,e,tp,ft,atk)
return c:IsSetCard(0x3008,0xa4,0x1f) and c:IsAttackBelow(atk) and (c:IsAbleToHand() or (ft>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false)))
end
function c100423014.target(e,tp,eg,ep,ev,re,r,rp,chk)
local loc=LOCATION_DECK+LOCATION_GRAVE
if chk==0 then return Duel.IsExistingMatchingCard(c100423014.thfilter,tp,loc,0,1,nil) or (Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c100423014.spfilter,tp,loc,0,1,nil,e,tp)) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,loc)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,loc)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local atk=math.abs(Duel.GetLP(0)-Duel.GetLP(1))
if chk==0 then return Duel.IsExistingMatchingCard(c100423014.thfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp,ft,atk) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE)
end
function c100423014.activate(e,tp,eg,ep,ev,re,r,rp)
local loc=LOCATION_DECK+LOCATION_GRAVE
local g=nil
local s=0
local flag=0
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELECT)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then
g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100423014.thfilter),tp,loc,0,1,1,nil)
if g:GetCount()>0 then
local tc=g:GetFirst()
e:SetLabelObject(tc)
s=Duel.SelectOption(tp,1190)
end
else
g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100423014.cfilter),tp,loc,0,1,1,nil,e,tp)
if g:GetCount()>0 then
local tc=g:GetFirst()
e:SetLabelObject(tc)
local b1=tc:IsAbleToHand()
local b2=tc:IsCanBeSpecialSummoned(e,0,tp,false,false)
if b1 and not b2 then
s=Duel.SelectOption(tp,1190)
end
if not b1 and b2 then
s=Duel.SelectOption(tp,1152)+1
end
if b1 and b2 then
s=Duel.SelectOption(tp,1190,1152)
end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local atk=math.abs(Duel.GetLP(0)-Duel.GetLP(1))
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100423014.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp,ft,atk)
local tc=g:GetFirst()
if tc then
local res=nil
if ft>0 and tc:IsCanBeSpecialSummoned(e,0,tp,false,false)
and (not tc:IsAbleToHand() or Duel.SelectOption(tp,1190,1152)==1) then
res=Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
else
res=Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc)
end
end
local tc=e:GetLabelObject()
if s==0 then
Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc)
if tc:IsLocation(LOCATION_HAND) then
flag=1
if res~=0 then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1,0)
e1:SetValue(c100423014.aclimit)
e1:SetLabel(tc:GetCode())
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
end
end
if s==1 then
flag=Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
end
if flag~=0 then
local gc=e:GetLabelObject()
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1,0)
e1:SetValue(c100423014.aclimit)
e1:SetLabel(gc:GetCode())
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
end
end
function c100423014.aclimit(e,re,tp)
return re:GetHandler():IsCode(e:GetLabel())
......
......@@ -38,7 +38,7 @@ function c100423015.initial_effect(c)
e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e5:SetCode(EVENT_PHASE+PHASE_BATTLE_START)
e5:SetRange(LOCATION_SZONE)
e5:SetCountLimit(1)
e5:SetCountLimit(1,100423015)
e5:SetTarget(c100423015.acttg)
e5:SetOperation(c100423015.actop)
c:RegisterEffect(e5)
......@@ -113,7 +113,7 @@ function c100423015.actop(e,tp,eg,ep,ev,re,r,rp)
end
function c100423015.chacon(e,tp,eg,ep,ev,re,r,rp)
local ec=e:GetHandler():GetEquipTarget()
return Duel.GetAttacker()==ec and ec:IsRelateToBattle() and ec:IsStatus(STATUS_OPPO_BATTLE)
return Duel.GetAttacker()==ec and ec:IsRelateToBattle() and ec:IsStatus(STATUS_OPPO_BATTLE) and ec:IsChainAttackable()
end
function c100423015.chacost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end
......@@ -121,7 +121,5 @@ function c100423015.chacost(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c100423015.chaop(e,tp,eg,ep,ev,re,r,rp)
local ec=e:GetHandler():GetPreviousEquipTarget()
if ec:IsChainAttackable() then
Duel.ChainAttack()
end
Duel.ChainAttack()
end
......@@ -19,13 +19,10 @@ function c100423016.cfilter(c,tp)
return (c:IsFaceup() or c:IsLocation(LOCATION_GRAVE)) and c:IsSetCard(0x8) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() and Duel.GetMZoneCount(tp,c)>0
end
function c100423016.spfilter(c,e,tp)
return c:IsSetCard(0x8) and c:IsCanBeSpecialSummoned(e,0,tp,true,false)
return c:IsSetCard(0x8) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,0,tp,true,false)
end
function c100423016.fselect(g,e,tp)
if Duel.IsExistingTarget(c100423016.spfilter,tp,LOCATION_GRAVE,0,1,g,e,tp) then
Duel.SetSelectedCard(g)
return true
else return false end
return Duel.IsExistingTarget(c100423016.spfilter,tp,LOCATION_GRAVE,0,1,g,e,tp)
end
function c100423016.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetMatchingGroup(c100423016.cfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil,tp)
......
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100423023.initial_effect(c)
--synchro summon
c:EnableReviveLimit()
aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsSynchroType,TYPE_SYNCHRO),1)
--destroy
......@@ -29,16 +30,16 @@ function c100423023.initial_effect(c)
e2:SetOperation(c100423023.spop)
c:RegisterEffect(e2)
end
c100423023.synmat_syn=true
c100423023.material_type=TYPE_SYNCHRO
function c100423023.descon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsSummonType(SUMMON_TYPE_SYNCHRO)
end
function c100423023.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local ct=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_SYNCHRO)
if chkc then return chkc:IsLocation(LOCATION_ONFIELD) and chkc:IsControler(1-tp) end
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SYNCHRO) and Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_ONFIELD,1,nil) end
local gc=Duel.GetMatchingGroupCount(Card.IsType,tp,LOCATION_GRAVE,0,nil,TYPE_SYNCHRO)
if chk==0 then return ct>0 and Duel.IsExistingTarget(aux.TRUE,tp,0,LOCATION_ONFIELD,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_ONFIELD,1,gc,nil)
local g=Duel.SelectTarget(tp,aux.TRUE,tp,0,LOCATION_ONFIELD,1,ct,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
end
function c100423023.desop(e,tp,eg,ep,ev,re,r,rp)
......@@ -57,26 +58,21 @@ end
function c100423023.spfilter(c,e,tp)
return c:IsLevelBelow(8) and c:IsSetCard(0x66,0x1017,0xa3) and c:IsType(TYPE_SYNCHRO) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423023.fselect(g)
if g:GetClassCount(Card.GetCode)==g:GetCount() then
Duel.SetSelectedCard(g)
return true
else return false end
end
function c100423023.spcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:IsPreviousLocation(LOCATION_MZONE) and c:IsSummonType(SUMMON_TYPE_SYNCHRO)
end
function c100423023.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c100423023.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c100423023.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,0,tp,LOCATION_GRAVE)
end
function c100423023.spop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(aux.NecroValleyFilter(c100423023.spfilter),tp,LOCATION_GRAVE,0,nil,e,tp)
local mz=Duel.GetLocationCount(tp,LOCATION_MZONE)
if mz<=0 or g:GetCount()<=0 then return end
local count=math.min(mz,3)
if Duel.IsPlayerAffectedByEffect(tp,59822133) then count=1 end
local sg=g:SelectSubGroup(tp,c100423023.fselect,false,1,count)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
if ft<=0 or g:GetCount()<=0 then return end
local ct=math.min(ft,3)
if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end
local sg=g:SelectSubGroup(tp,aux.dncheck,false,1,ct)
Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP)
end
......@@ -27,10 +27,10 @@ function c100423024.initial_effect(c)
c:RegisterEffect(e2)
end
function c100423024.dfilter(c)
return c:IsType(TYPE_TUNER) and c:IsDiscardable() and c:IsAbleToGraveAsCost()
return c:IsType(TYPE_TUNER) and c:IsDiscardable()
end
function c100423024.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsDiscardable() and e:GetHandler():IsAbleToGraveAsCost()
if chk==0 then return e:GetHandler():IsDiscardable()
and Duel.IsExistingMatchingCard(c100423024.dfilter,tp,LOCATION_HAND,0,1,e:GetHandler()) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local g=Duel.SelectMatchingCard(tp,c100423024.dfilter,tp,LOCATION_HAND,0,1,1,e:GetHandler())
......@@ -38,7 +38,7 @@ function c100423024.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD)
end
function c100423024.thfilter(c)
return c:IsSetCard(0x1017) and c:IsAbleToHand()
return c:IsSetCard(0x1017) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand()
end
function c100423024.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c100423024.thfilter,tp,LOCATION_DECK,0,1,nil) end
......
......@@ -35,7 +35,8 @@ function c100423025.spcon(e,tp,eg,ep,ev,re,r,rp)
end
function c100423025.sptg(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 c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function c100423025.spop(e,tp,eg,ep,ev,re,r,rp)
......@@ -45,7 +46,7 @@ function c100423025.spop(e,tp,eg,ep,ev,re,r,rp)
end
end
function c100423025.lvfilter(c)
return c:IsFaceup() and c:IsOriginalSetCard(0x66,0x1017,0xa3) and c:IsType(TYPE_SYNCHRO)
return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsOriginalSetCard(0x66,0x1017,0xa3) and c:IsType(TYPE_SYNCHRO)
end
function c100423025.lvcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(c100423025.lvfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil)
......
......@@ -25,12 +25,11 @@ function c100423026.initial_effect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_CHAINING)
e3:SetRange(LOCATION_SZONE)
e3:SetCondition(c100423026.ccon)
e3:SetOperation(c100423026.ccop)
c:RegisterEffect(e3)
end
function c100423026.cfilter(c)
return c:IsSummonType(SUMMON_TYPE_SYNCHRO) and c:IsType(TYPE_SYNCHRO) and (c:IsSetCard(0x66) or c:IsSetCard(0x1017) or c:IsSetCard(0xa3))
return c:IsSummonType(SUMMON_TYPE_SYNCHRO) and c:IsType(TYPE_SYNCHRO) and c:IsSetCard(0x66,0x1017,0xa3)
end
function c100423026.spfilter(c,e,tp)
return c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp) and c:IsCanBeEffectTarget(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE)
......@@ -41,7 +40,8 @@ end
function c100423026.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local mg=eg:Filter(c100423026.cfilter,nil):GetFirst():GetMaterial()
if chkc then return mg:IsContains(chkc) and c100423026.spfilter(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and mg:IsExists(c100423026.spfilter,1,nil,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and mg:IsExists(c100423026.spfilter,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=mg:FilterSelect(tp,c100423026.spfilter,1,1,nil,e,tp)
Duel.SetTargetCard(g)
......@@ -53,13 +53,12 @@ function c100423026.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE)
end
end
function c100423026.ccon(e,tp,eg,ep,ev,re,r,rp)
local tc=re:GetHandler()
return re:GetHandlerPlayer()==tp and tc:IsType(TYPE_SYNCHRO) and (tc:IsSetCard(0x66) or tc:IsSetCard(0x1017) or tc:IsSetCard(0xa3))
end
function c100423026.ccop(e,tp,eg,ep,ev,re,r,rp)
Duel.SetChainLimit(c100423026.chainlm)
local tc=re:GetHandler()
if ep==tp and tc:IsType(TYPE_SYNCHRO) and tc:IsOriginalSetCard(0x66,0x1017,0xa3) then
Duel.SetChainLimit(c100423026.chainlm)
end
end
function c100423026.chainlm(e,ep,tp)
return tp==ep
function c100423026.chainlm(e,rp,tp)
return tp==rp
end
......@@ -7,7 +7,6 @@ function c100423027.initial_effect(c)
e1:SetCategory(CATEGORY_NEGATE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_CHAINING)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetCountLimit(1,100423027+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(c100423027.condition)
e1:SetTarget(c100423027.target)
......@@ -15,10 +14,11 @@ function c100423027.initial_effect(c)
c:RegisterEffect(e1)
end
function c100423027.filter(c)
return (c.synmat_syn or c:IsCode(7841112,24696097,97489701,67030233,25165047,21123811,26268488,35952884,97836203,62242678,36857073,89907227,80896940,51447164,74892653,89474727,9753964,2743001,50954680,84305651)) and c:IsFaceup()
return c:IsType(TYPE_SYNCHRO) and aux.IsMaterialListType(c,TYPE_SYNCHRO) and c:IsFaceup()
end
function c100423027.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(c100423027.filter,tp,LOCATION_MZONE,0,1,nil) and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) and rp==1-tp
return Duel.IsExistingMatchingCard(c100423027.filter,tp,LOCATION_MZONE,0,1,nil)
and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) and rp==1-tp
end
function c100423027.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
......
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100423034.initial_effect(c)
--xyz summon
c:EnableReviveLimit()
aux.AddXyzProcedure(c,nil,4,2)
--spsummon
......@@ -28,16 +29,17 @@ function c100423034.initial_effect(c)
e2:SetOperation(c100423034.atkop)
c:RegisterEffect(e2)
end
function c100423034.spfilter(c,e,tp)
return c:IsType(TYPE_XYZ) and not c:IsCode(100423034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423034.spcost(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 c100423034.spfilter(c,e,tp)
return c:IsType(TYPE_XYZ) and not c:IsCode(100423034) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423034.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100423034.spfilter(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c100423034.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c100423034.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectTarget(tp,c100423034.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
......@@ -61,9 +63,6 @@ function c100423034.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.SpecialSummonComplete()
end
end
function c100423034.atkfilter(c)
return c:IsFaceup() and c:IsType(TYPE_XYZ) and not (c:GetAttack()==4000 and (c:IsDisabled() or not c:IsType(TYPE_EFFECT)))
end
function c100423034.atkcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:IsSetCard(0x207f) and c:IsType(TYPE_XYZ)
......@@ -72,6 +71,9 @@ function c100423034.atkcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,2,REASON_COST) end
e:GetHandler():RemoveOverlayCard(tp,2,2,REASON_COST)
end
function c100423034.atkfilter(c)
return c:IsFaceup() and c:IsType(TYPE_XYZ) and (not c:IsAttack(4000) or aux.disfilter1(c))
end
function c100423034.atktg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c100423034.atkfilter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c100423034.atkfilter,tp,LOCATION_MZONE,0,1,nil) end
......
......@@ -26,14 +26,15 @@ function c100423035.initial_effect(c)
c:RegisterEffect(e2)
end
function c100423035.cfilter(c)
return c:IsFaceup() and (c:IsSetCard(0x8f) or c:IsSetCard(0x54)) and not c:IsCode(100423035)
return c:IsFaceup() and c:IsSetCard(0x8f,0x54) and not c:IsCode(100423035)
end
function c100423035.spcon1(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetMatchingGroupCount(c100423035.cfilter,tp,LOCATION_MZONE,0,nil)>0
return Duel.IsExistingMatchingCard(c100423035.cfilter,tp,LOCATION_MZONE,0,1,nil)
end
function c100423035.sptg1(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 c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function c100423035.spop1(e,tp,eg,ep,ev,re,r,rp)
......@@ -43,11 +44,12 @@ function c100423035.spop1(e,tp,eg,ep,ev,re,r,rp)
end
end
function c100423035.spfilter(c,e,tp)
return (c:IsSetCard(0x59) or c:IsSetCard(0x82)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
return c:IsSetCard(0x59,0x82) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423035.sptg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c100423035.spfilter(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingTarget(c100423035.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingTarget(c100423035.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectTarget(tp,c100423035.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
......
......@@ -28,7 +28,8 @@ function c100423036.spfilter(c,e,tp)
return c:IsSetCard(0x8f,0x54) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423036.sptg1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(c100423036.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c100423036.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND)
end
function c100423036.spop1(e,tp,eg,ep,ev,re,r,rp)
......@@ -47,7 +48,8 @@ function c100423036.spcon2(e,tp,eg,ep,ev,re,r,rp)
end
function c100423036.sptg2(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 c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function c100423036.spop2(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -24,7 +24,7 @@ end
function c100423038.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if not (tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:IsControler(tp)) then return end
if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) then return end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_ATTACK_ALL)
......@@ -71,8 +71,7 @@ end
function c100423038.damop(e,tp,eg,ep,ev,re,r,rp)
local bc=e:GetHandler():GetBattleTarget()
if not bc then return end
local dam=bc:GetBaseAttack()
if dam<0 then dam=0 end
local dam=math.max(bc:GetBaseAttack(),0)
if dam>0 then
Duel.Hint(HINT_CARD,0,100423038)
Duel.Damage(1-tp,dam,REASON_EFFECT)
......
......@@ -2,6 +2,7 @@
--Scripted by mallu11
function c100423045.initial_effect(c)
--pendulum summon
aux.EnablePendulumAttribute(c)
--spsummon
local e1=Effect.CreateEffect(c)
......@@ -45,15 +46,23 @@ end
function c100423045.spfilter(c,tp,rp)
return (c:IsReason(REASON_BATTLE) or (c:IsReason(REASON_EFFECT) and rp==1-tp)) and c:IsPreviousLocation(LOCATION_MZONE)
and c:GetPreviousControler()==tp and c:GetSummonLocation()==LOCATION_EXTRA
and c:IsType(TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ) and c:IsFaceup()
and bit.band(c:GetPreviousTypeOnField(),TYPE_FUSION+TYPE_SYNCHRO+TYPE_XYZ)~=0 and c:IsPreviousPosition(POS_FACEUP)
end
function c100423045.spcon(e,tp,eg,ep,ev,re,r,rp)
return eg:GetCount()==1 and eg:IsExists(c100423045.spfilter,1,nil,tp,rp)
end
function c100423045.spfilter2(c,e,tp)
if c:IsLocation(LOCATION_HAND+LOCATION_DECK) or (not c:IsLocation(LOCATION_GRAVE) and c:IsFacedown())
or not c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsControler(1-tp) then return false end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
if c:IsLocation(LOCATION_EXTRA) then
ft=Duel.GetLocationCountFromEx(tp)
end
return ft>0
end
function c100423045.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local ec=eg:GetFirst()
if chk==0 then return ((ec:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0)
or (ec:IsLocation(LOCATION_EXTRA) and Duel.GetLocationCountFromEx(tp)>0)) and ec:IsCanBeSpecialSummoned(e,0,tp,false,false) end
if chk==0 then return c100423045.spfilter2(ec,e,tp) end
Duel.SetTargetCard(ec)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,ec,1,0,0)
end
......@@ -83,12 +92,15 @@ function c100423045.metg(e,tp,eg,ep,ev,re,r,rp,chk)
and Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_DECK,0,1,nil,TYPE_PENDULUM)) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end
function c100423045.cfilter(c,type)
return c:IsFaceup() and c:IsType(type)
end
function c100423045.meop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=Duel.GetMatchingGroup(c100423045.mefilter1,tp,LOCATION_MZONE,0,c)
local b1=g:IsExists(Card.IsType,1,c,TYPE_FUSION)
local b2=g:IsExists(Card.IsType,1,c,TYPE_SYNCHRO)
local b3=g:IsExists(Card.IsType,1,c,TYPE_XYZ)
local b1=c:IsRelateToEffect(e) and g:IsExists(c100423045.cfilter,1,c,TYPE_FUSION)
local b2=g:IsExists(c100423045.cfilter,1,c,TYPE_SYNCHRO)
local b3=c:IsRelateToEffect(e) and c:IsFaceup() and g:IsExists(c100423045.cfilter,1,c,TYPE_XYZ)
local b4=Duel.IsExistingMatchingCard(c100423045.mefilter2,tp,LOCATION_MZONE,0,1,e:GetHandler())
and Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_DECK,0,1,nil,TYPE_PENDULUM)
if b1 then
......
......@@ -26,14 +26,12 @@ function c100423046.initial_effect(c)
end
function c100423046.cfilter(c,tp)
return c:IsAttribute(ATTRIBUTE_DARK)
and (c:GetSequence()>4 and Duel.IsExistingMatchingCard(c100423046.filter1,tp,LOCATION_MZONE,0,1,c,tp)
or (Duel.GetMZoneCount(tp,c)>0 and Duel.IsExistingMatchingCard(c100423046.filter2,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_MZONE,0,1,c)))
and Duel.IsExistingMatchingCard(c100423046.filter1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_MZONE,0,1,c,tp,c)
end
function c100423046.filter1(c,tp)
return c:IsCode(53025096) and c:IsAbleToGrave() and c:IsFaceup() and Duel.GetMZoneCount(tp,c)>0
end
function c100423046.filter2(c)
return c:IsCode(53025096) and c:IsAbleToGrave() and (c:IsFaceup() or c:IsLocation(LOCATION_HAND+LOCATION_DECK))
function c100423046.filter1(c,tp,mc)
local g=Group.FromCards(c)
if mc then g:AddCard(mc) end
return (c:IsLocation(LOCATION_HAND+LOCATION_DECK) or c:IsFaceup()) and c:IsCode(53025096) and c:IsAbleToGrave() and Duel.GetMZoneCount(tp,g)>0
end
function c100423046.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,c100423046.cfilter,1,nil,tp) end
......@@ -47,37 +45,31 @@ function c100423046.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c100423046.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then
g=Duel.SelectMatchingCard(tp,c100423046.filter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
else
g=Duel.SelectMatchingCard(tp,c100423046.filter2,tp,LOCATION_MZONE+LOCATION_HAND+LOCATION_DECK,0,1,1,nil)
end
local tc=g:GetFirst()
if tc and Duel.SendtoGrave(tc,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_GRAVE) and c:IsRelateToEffect(e) then
local g=Duel.SelectMatchingCard(tp,c100423046.filter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
if g:GetCount()>0 and Duel.SendtoGrave(g,REASON_EFFECT)~=0 and g:GetFirst():IsLocation(LOCATION_GRAVE) and c:IsRelateToEffect(e) then
Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)
end
end
function c100423046.spfilter(c,e,tp)
return c:IsSetCard(0x99) and not c:IsCode(100423046) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423046.thfilter(c)
return c:IsCode(82768499) and c:IsAbleToHand()
end
function c100423046.thcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:GetPreviousControler()==tp and c:IsReason(REASON_DESTROY) and rp==1-tp
end
function c100423046.spfilter(c,e,tp)
return c:IsSetCard(0x99) and not c:IsCode(100423046) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c100423046.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c100423046.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end
function c100423046.thfilter(c)
return c:IsCode(82768499) and c:IsAbleToHand()
end
function c100423046.thop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then
Duel.Hint(HINT_OPSELECTED,tp,HINTMSG_SPSUMMON)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(c100423046.spfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp)
if g:GetCount()>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)~=0
and Duel.IsExistingMatchingCard(c100423046.thfilter,tp,LOCATION_DECK,0,1,nil)
......
......@@ -15,24 +15,18 @@ function c100423047.initial_effect(c)
end
function c100423047.cfilter(c,e,tp,lsc,rsc)
local lv=c:GetLevel()
return (c:IsSetCard(0x9f) or (c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM)) or c:IsSetCard(0x99)) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and lv>lsc and lv<rsc
end
function c100423047.fselect(g)
if g:GetClassCount(Card.GetCode)==g:GetCount() then
Duel.SetSelectedCard(g)
return true
else return false end
return (c:IsSetCard(0x9f,0x99) or (c:IsSetCard(0x98) and c:IsType(TYPE_PENDULUM))) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
and lv>0 and lv>lsc and lv<rsc
end
function c100423047.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local h=Duel.GetMatchingGroupCount(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,nil)
if e:GetHandler():IsLocation(LOCATION_HAND) then h=h-1 end
if chk==0 then return h>0 end
local gc=1
if Duel.IsPlayerCanDraw(tp,2) then gc=2 end
if Duel.IsPlayerCanDraw(tp,3) then gc=3 end
local g=Duel.GetMatchingGroup(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,nil)
local g=Duel.GetMatchingGroup(Card.IsAbleToGraveAsCost,tp,LOCATION_HAND,0,e:GetHandler())
if chk==0 then return g:GetCount()>0 end
local ct=1
for i=2,3 do
if Duel.IsPlayerCanDraw(tp,i) then ct=i end
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local sg=g:Select(tp,1,gc,nil)
local sg=g:Select(tp,1,ct,nil)
e:SetLabel(Duel.SendtoGrave(sg,REASON_COST))
end
function c100423047.target(e,tp,eg,ep,ev,re,r,rp,chk)
......@@ -46,23 +40,25 @@ end
function c100423047.activate(e,tp,eg,ep,ev,re,r,rp)
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
local ct=Duel.Draw(p,d,REASON_EFFECT)
local mz=Duel.GetLocationCount(tp,LOCATION_MZONE)
local flag=0
if ct>0 and mz>0 and Duel.GetFieldCard(tp,LOCATION_PZONE,0) and Duel.GetFieldCard(tp,LOCATION_PZONE,1) then
local lsc=Duel.GetFieldCard(tp,LOCATION_PZONE,0):GetLeftScale()
local rsc=Duel.GetFieldCard(tp,LOCATION_PZONE,1):GetRightScale()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local res=false
local lc=Duel.GetFieldCard(tp,LOCATION_PZONE,0)
local rc=Duel.GetFieldCard(tp,LOCATION_PZONE,1)
if ct>0 and ft>0 and lc and rc then
local lsc=lc:GetLeftScale()
local rsc=rc:GetRightScale()
if lsc>rsc then lsc,rsc=rsc,lsc end
if Duel.IsExistingMatchingCard(c100423047.cfilter,tp,LOCATION_HAND,0,1,nil,e,tp,lsc,rsc) and Duel.SelectYesNo(tp,aux.Stringid(100423047,0)) then
Duel.BreakEffect()
local count=math.min(ct,mz)
if Duel.IsPlayerAffectedByEffect(tp,59822133) then count=1 end
ct=math.min(ct,ft)
if Duel.IsPlayerAffectedByEffect(tp,59822133) then ct=1 end
local g=Duel.GetMatchingGroup(c100423047.cfilter,tp,LOCATION_HAND,0,nil,e,tp,lsc,rsc)
local sg=g:SelectSubGroup(tp,c100423047.fselect,false,1,count,tp)
flag=Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP)
local sg=g:SelectSubGroup(tp,aux.dncheck,false,1,ct)
res=Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP)
end
end
if flag==0 then
local h=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)
Duel.SetLP(tp,Duel.GetLP(tp)-h*1000)
if not res then
local lp=Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)
Duel.SetLP(tp,Duel.GetLP(tp)-lp*1000)
end
end
......@@ -7,6 +7,7 @@ function c100423048.initial_effect(c)
e1:SetCategory(CATEGORY_REMOVE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(c100423048.target)
e1:SetOperation(c100423048.activate)
c:RegisterEffect(e1)
--disable attack
......@@ -18,65 +19,87 @@ function c100423048.initial_effect(c)
e2:SetTarget(c100423048.atktg)
e2:SetOperation(c100423048.atkop)
c:RegisterEffect(e2)
e1:SetLabelObject(e2)
local ng=Group.CreateGroup()
ng:KeepAlive()
e1:SetLabelObject(ng)
e2:SetLabelObject(ng)
end
function c100423048.rmfilter(c)
return c:IsType(TYPE_SPELL) and c:IsAbleToRemove()
function c100423048.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,PLAYER_ALL,LOCATION_GRAVE)
end
function c100423048.rmfilter(c,tp)
return c:IsType(TYPE_SPELL) and c:IsAbleToRemove(tp)
end
function c100423048.activate(e,tp,eg,ep,ev,re,r,rp)
if not e:GetHandler():IsRelateToEffect(e) then return end
local g1=Duel.GetMatchingGroup(c100423048.rmfilter,tp,LOCATION_GRAVE,0,nil)
local g2=Duel.GetMatchingGroup(c100423048.rmfilter,tp,0,LOCATION_GRAVE,nil)
local sg=Group.CreateGroup()
local c=e:GetHandler()
local g=Group.CreateGroup()
local g1=Duel.GetMatchingGroup(aux.NecroValleyFilter(c100423048.rmfilter),tp,LOCATION_GRAVE,0,nil,tp)
local g2=Duel.GetMatchingGroup(aux.NecroValleyFilter(c100423048.rmfilter),tp,0,LOCATION_GRAVE,nil,1-tp)
if g1:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(100423048,0)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local sg1=g1:Select(tp,1,5,nil)
sg:Merge(sg1)
g:Merge(sg1)
end
if g2:GetCount()>0 and Duel.SelectYesNo(1-tp,aux.Stringid(100423048,0)) then
Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_REMOVE)
local sg2=g2:Select(1-tp,1,5,nil)
sg:Merge(sg2)
g:Merge(sg2)
end
if sg:GetCount()>0 then
Duel.Remove(sg,POS_FACEDOWN,REASON_EFFECT)
local rg=sg:Filter(Card.IsLocation,nil,LOCATION_REMOVED)
rg:KeepAlive()
e:GetLabelObject():SetLabelObject(rg)
local rc=rg:GetFirst()
while rc do
rc:RegisterFlagEffect(100423048,RESET_EVENT+RESETS_STANDARD,0,1)
rc=rg:GetNext()
if g:GetCount()>0 then
Duel.Remove(g,POS_FACEDOWN,REASON_EFFECT)
local og=Duel.GetOperatedGroup()
if og:GetCount()==0 then return end
local sg=e:GetLabelObject()
if c:GetFlagEffect(100423048)==0 then
sg:Clear()
c:RegisterFlagEffect(100423048,RESET_EVENT+RESETS_STANDARD,0,1)
end
local tc=og:GetFirst()
while tc do
if tc:IsLocation(LOCATION_REMOVED) then
sg:AddCard(tc)
tc:CreateRelation(c,RESET_EVENT+RESETS_STANDARD)
end
tc=og:GetNext()
end
else
local sg=e:GetLabelObject()
if sg:GetCount()>0 then
sg:Clear()
end
end
end
function c100423048.thfilter(c,p)
return c:GetFlagEffect(100423048)>0 and c:IsControler(p) and c:IsAbleToHand()
end
function c100423048.atktg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
local p=1-ep
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,p,LOCATION_REMOVED)
Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,1,p,LOCATION_HAND)
end
function c100423048.thfilter(c,rc,p)
return c:IsRelateToCard(rc) and c:IsControler(p) and c:IsAbleToHand()
end
function c100423048.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:GetFlagEffect(100423048)==0 then return end
local p=1-ep
local g=e:GetLabelObject():Filter(c100423048.thfilter,nil,p)
local g=e:GetLabelObject():Filter(c100423048.thfilter,nil,c,p)
if g:GetCount()>0 and Duel.SelectYesNo(p,aux.Stringid(100423048,1)) then
local flag=false
local res=false
local sg=g:RandomSelect(1-p,1)
local sc=sg:GetFirst()
if Duel.SendtoHand(sc,nil,REASON_EFFECT)~=0 and sc:IsLocation(LOCATION_HAND) and sc:IsControler(p) then
Duel.ConfirmCards(1-p,sc)
if sc:IsDiscardable() and Duel.SelectYesNo(p,aux.Stringid(100423048,2)) then
flag=true
local tc=sg:GetFirst()
if Duel.SendtoHand(tc,nil,REASON_EFFECT)~=0 and tc:IsLocation(LOCATION_HAND) then
Duel.ConfirmCards(1-p,tc)
if tc:IsControler(p) and tc:IsDiscardable(REASON_EFFECT) and Duel.SelectYesNo(p,aux.Stringid(100423048,2)) then
Duel.BreakEffect()
Duel.SendtoGrave(sc,REASON_EFFECT+REASON_DISCARD)
Duel.NegateAttack()
if Duel.SendtoGrave(tc,REASON_EFFECT+REASON_DISCARD)~=0 then
res=true
Duel.NegateAttack()
end
end
end
if flag==false then
local e1=Effect.CreateEffect(e:GetHandler())
if not res then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CHANGE_DAMAGE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
......
......@@ -49,7 +49,7 @@ function c100423049.valcheck(e,c)
end
end
function c100423049.effcon(e,tp,eg,ep,ev,re,r,rp)
return eg:GetCount()==1 and eg:GetFirst():IsType(e:GetLabel()) and eg:GetFirst():GetFlagEffect(100423049)~=0
return eg:GetCount()==1 and eg:GetFirst():IsFaceup() and eg:GetFirst():IsType(e:GetLabel()) and eg:GetFirst():GetFlagEffect(100423049)~=0
end
function c100423049.spfilter(c,e,tp,lv)
local lvl=c:GetOriginalLevel()
......@@ -64,7 +64,7 @@ end
function c100423049.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFlagEffect(tp,100423049)~=0 then return end
local c=e:GetHandler()
if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then
if eg:GetFirst():IsFaceup() and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then
local g=Duel.SelectMatchingCard(tp,c100423049.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp,eg:GetFirst():GetOriginalLevel())
local tc=g:GetFirst()
if tc and Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE) then
......@@ -110,7 +110,7 @@ function c100423049.thtg2(e,tp,eg,ep,ev,re,r,rp,chk)
and Duel.GetFlagEffect(tp,100423249)==0 end
end
function c100423049.thop2(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFlagEffect(tp,100423249)~=0 then return end
if Duel.GetFlagEffect(tp,100423249)~=0 or eg:GetFirst():IsFacedown() then return end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c100423049.thfilter2,tp,LOCATION_DECK,0,1,1,nil,e,tp,ft,eg:GetFirst():GetRank())
......
......@@ -60,9 +60,6 @@ function c101012001.lvop(e,tp,eg,ep,ev,re,r,rp)
e3:SetValue(c:GetBaseDefense()/2)
c:RegisterEffect(e3)
end
function c101012001.filter(c)
return c:IsFaceup() and c:IsType(TYPE_LINK)
end
function c101012001.cfilter1(c,tp)
return c:IsFaceup() and c:IsSummonType(SUMMON_TYPE_LINK) and c:GetSummonPlayer()==tp
end
......@@ -70,28 +67,21 @@ function c101012001.spcon1(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c101012001.cfilter1,1,nil,tp)
end
function c101012001.sptg1(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetMatchingGroup(c101012001.filter,tp,LOCATION_MZONE,0,nil)
if g:GetCount()<=0 then return false end
local zone=0
for tc in aux.Next(g) do
zone=bit.bor(zone,tc:GetLinkedZone(tp))
end
zone=bit.band(zone,0x1f)
if eg:GetCount()~=1 then return false end
local tc=eg:GetFirst()
local zone=bit.band(tc:GetLinkedZone(tp),0x1f)
local c=e:GetHandler()
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE,tp,LOCATION_REASON_TOFIELD,zone)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP,tp,zone) end
Duel.SetTargetCard(tc)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function c101012001.spop1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) then
local g=Duel.GetMatchingGroup(c101012001.filter,tp,LOCATION_MZONE,0,nil)
if g:GetCount()<=0 then return end
local zone=0
for tc in aux.Next(g) do
zone=bit.bor(zone,tc:GetLinkedZone(tp))
end
zone=bit.band(zone,0x1f)
local tc=Duel.GetFirstTarget()
if not tc:IsRelateToEffect(e) then return end
local zone=bit.band(tc:GetLinkedZone(tp),0x1f)
Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP,zone)
end
end
......
......@@ -28,7 +28,7 @@ function c101012049.tktg(e,tp,eg,ep,ev,re,r,rp,chk)
local mg=e:GetHandler():GetMaterial()
if mg:GetCount()~=1 then return false end
if chk==0 then return mg:IsExists(Card.IsType,1,nil,TYPE_LINK) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsPlayerCanSpecialSummonMonster(tp,101012149,0,0x4011,0,0,1,RACE_CYBERSE,ATTRIBUTE_LIGHT) end
and Duel.IsPlayerCanSpecialSummonMonster(tp,48068379,0,0x4011,0,0,1,RACE_CYBERSE,ATTRIBUTE_LIGHT) end
e:SetLabel(mg:GetFirst():GetLink())
Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,0)
......@@ -36,15 +36,16 @@ end
function c101012049.tkop(e,tp,eg,ep,ev,re,r,rp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=e:GetLabel()
if ft<=0 or ct<=0 or not Duel.IsPlayerCanSpecialSummonMonster(tp,101012149,0,0x4011,0,0,1,RACE_CYBERSE,ATTRIBUTE_LIGHT) then return end
local count=math.min(ft,ct)
if Duel.IsPlayerAffectedByEffect(tp,59822133) then count=1 end
repeat
local token=Duel.CreateToken(tp,101012149)
Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP)
count=count-1
until count==0 or not Duel.SelectYesNo(tp,210)
Duel.SpecialSummonComplete()
if ft>0 and ct>0 and Duel.IsPlayerCanSpecialSummonMonster(tp,48068379,0,0x4011,0,0,1,RACE_CYBERSE,ATTRIBUTE_LIGHT) then
local count=math.min(ft,ct)
if Duel.IsPlayerAffectedByEffect(tp,59822133) then count=1 end
repeat
local token=Duel.CreateToken(tp,101012149)
Duel.SpecialSummonStep(token,0,tp,tp,false,false,POS_FACEUP)
count=count-1
until count==0 or not Duel.SelectYesNo(tp,210)
Duel.SpecialSummonComplete()
end
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_BE_LINK_MATERIAL)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment