Commit bd0c9461 authored by Amiya's avatar Amiya

修复

parent 4c1bdbab
Pipeline #31758 passed with stages
in 1 minute and 40 seconds
No preview for this file type
...@@ -72,7 +72,7 @@ function s.splimit(e,c,sump,sumtype,sumpos,targetp,se) ...@@ -72,7 +72,7 @@ function s.splimit(e,c,sump,sumtype,sumpos,targetp,se)
return c:IsLocation(LOCATION_EXTRA) and bit.band(sumtype,SUMMON_TYPE_XYZ)~=SUMMON_TYPE_XYZ return c:IsLocation(LOCATION_EXTRA) and bit.band(sumtype,SUMMON_TYPE_XYZ)~=SUMMON_TYPE_XYZ
end end
function s.tlmtg(e,c) function s.tlmtg(e,c)
return not c:IsSetCard(0x76,0x48) return not c:IsOriginalSetCard(0x76,0x48)
end end
function s.sxyzfilter(e,c) function s.sxyzfilter(e,c)
return c:IsSetCard(0x48) return c:IsSetCard(0x48)
......
...@@ -49,7 +49,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -49,7 +49,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
end end
function s.spfilter(c,e,tp) function s.spfilter(c,e,tp)
return c:IsSetCard(0x76) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsSetCard(0x76) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE)
and c:IsCanBeEffectTarget(e) and c:IsCanBeEffectTarget(e)
end end
function s.fselect(g) function s.fselect(g)
...@@ -66,9 +66,6 @@ function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) ...@@ -66,9 +66,6 @@ function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
Duel.SetTargetCard(tg) Duel.SetTargetCard(tg)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tg,tg:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tg,tg:GetCount(),0,0)
end end
function s.spfilter(c,e,tp)
return c:IsRelateToEffect(e) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function s.spop(e,tp,eg,ep,ev,re,r,rp) function s.spop(e,tp,eg,ep,ev,re,r,rp)
--splimit --splimit
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
...@@ -97,11 +94,11 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -97,11 +94,11 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
g=g:Select(tp,ft,ft,nil) g=g:Select(tp,ft,ft,nil)
end end
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP,POS_FACEUP_DEFENSE)
end end
function s.splimit(e,c,sump,sumtype,sumpos,targetp,se) function s.splimit(e,c,sump,sumtype,sumpos,targetp,se)
return c:IsLocation(LOCATION_EXTRA) and bit.band(sumtype,SUMMON_TYPE_XYZ)~=SUMMON_TYPE_XYZ return c:IsLocation(LOCATION_EXTRA) and bit.band(sumtype,SUMMON_TYPE_XYZ)~=SUMMON_TYPE_XYZ
end end
function s.tlmtg(e,c) function s.tlmtg(e,c)
return not c:IsSetCard(0x76,0x48) return not c:IsOriginalSetCard(0x76,0x48)
end end
\ No newline at end of file
--No.69 纹章神 盾徽-神裂 --No.69 纹章神 盾徽-神裂
local s,id,o=GetID() local s,id,o=GetID()
function s.initial_effect(c) function s.initial_effect(c)
aux.AddCodeList(c,2407234,101208046)
--xyz summon --xyz summon
aux.AddXyzProcedure(c,nil,4,4,s.ovfilter,aux.Stringid(id,0)) aux.AddXyzProcedure(c,nil,4,4,s.ovfilter,aux.Stringid(id,0))
c:EnableReviveLimit() c:EnableReviveLimit()
--special summon --special summon
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,0)) e1:SetDescription(aux.Stringid(id,1))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_ATTACK_ANNOUNCE) e1:SetCode(EVENT_ATTACK_ANNOUNCE)
...@@ -45,6 +46,7 @@ function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -45,6 +46,7 @@ function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function s.spop(e,tp,eg,ep,ev,re,r,rp) function s.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local ac=e:GetLabelObject()
if not aux.MustMaterialCheck(c,tp,EFFECT_MUST_BE_XMATERIAL) then return end if not aux.MustMaterialCheck(c,tp,EFFECT_MUST_BE_XMATERIAL) then return end
if c:IsFaceup() and c:IsRelateToEffect(e) and c:IsControler(tp) and not c:IsImmuneToEffect(e) then if c:IsFaceup() and c:IsRelateToEffect(e) and c:IsControler(tp) and not c:IsImmuneToEffect(e) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
...@@ -71,8 +73,7 @@ function s.spcon2(e,tp,eg,ep,ev,re,r,rp) ...@@ -71,8 +73,7 @@ function s.spcon2(e,tp,eg,ep,ev,re,r,rp)
return ep==1-tp and re:GetHandler():IsOnField() and re:GetHandler():IsRelateToEffect(re) and re:IsActiveType(TYPE_MONSTER) return ep==1-tp and re:GetHandler():IsOnField() and re:GetHandler():IsRelateToEffect(re) and re:IsActiveType(TYPE_MONSTER)
end end
function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk) function s.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return re:GetHandler():IsDestructable() if chk==0 then return aux.MustMaterialCheck(c,tp,EFFECT_MUST_BE_XMATERIAL)
and aux.MustMaterialCheck(c,tp,EFFECT_MUST_BE_XMATERIAL)
and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c) end and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp,c) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0)
...@@ -94,7 +95,7 @@ function s.spop2(e,tp,eg,ep,ev,re,r,rp) ...@@ -94,7 +95,7 @@ function s.spop2(e,tp,eg,ep,ev,re,r,rp)
Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP)
sc:CompleteProcedure() sc:CompleteProcedure()
end end
if re:GetHandler():IsRelateToEffect(re) then if re:GetHandler():IsRelateToEffect(re) and re:GetHandler():IsFaceup() and re:GetHandler():IsControler(1-tp) then
Duel.BreakEffect() Duel.BreakEffect()
Duel.Destroy(eg,REASON_EFFECT) Duel.Destroy(eg,REASON_EFFECT)
end end
......
...@@ -47,7 +47,7 @@ end ...@@ -47,7 +47,7 @@ end
function s.codetg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function s.codetg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and not chkc:IsCode(id+o) end if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_MZONE) and not chkc:IsCode(id+o) end
if chk==0 then return Duel.IsExistingTarget(s.codefilter,tp,0,LOCATION_MZONE,1,nil) end if chk==0 then return Duel.IsExistingTarget(s.codefilter,tp,0,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISABLE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
local g=Duel.SelectTarget(tp,s.codefilter,tp,0,LOCATION_MZONE,1,1,nil) local g=Duel.SelectTarget(tp,s.codefilter,tp,0,LOCATION_MZONE,1,1,nil)
end end
function s.codeop(e,tp,eg,ep,ev,re,r,rp) function s.codeop(e,tp,eg,ep,ev,re,r,rp)
...@@ -64,7 +64,7 @@ function s.codeop(e,tp,eg,ep,ev,re,r,rp) ...@@ -64,7 +64,7 @@ function s.codeop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function s.discon(e,tp,eg,ep,ev,re,r,rp) function s.discon(e,tp,eg,ep,ev,re,r,rp)
return re:GetHandler():IsCode(id+o) return rp==1-tp and re:GetHandler():IsCode(id+o)
end end
function s.disop(e,tp,eg,ep,ev,re,r,rp) function s.disop(e,tp,eg,ep,ev,re,r,rp)
Duel.NegateEffect(ev) Duel.NegateEffect(ev)
......
...@@ -4,7 +4,7 @@ function s.initial_effect(c) ...@@ -4,7 +4,7 @@ function s.initial_effect(c)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCode(EVENT_BATTLE_DESTROYED) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(s.target) e1:SetTarget(s.target)
e1:SetOperation(s.activate) e1:SetOperation(s.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
......
...@@ -25,7 +25,9 @@ function s.initial_effect(c) ...@@ -25,7 +25,9 @@ function s.initial_effect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetCode(id) e2:SetCode(id)
e2:SetValue(id)
e2:SetRange(LOCATION_MZONE) e2:SetRange(LOCATION_MZONE)
e2:SetTarget(s.sxyzfilter)
e2:SetCountLimit(1,id+o) e2:SetCountLimit(1,id+o)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--material effect --material effect
...@@ -41,34 +43,72 @@ function s.initial_effect(c) ...@@ -41,34 +43,72 @@ function s.initial_effect(c)
e3:SetOperation(s.xyzop) e3:SetOperation(s.xyzop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function s.sxyzfilter(e,c)
return c:IsAttribute(ATTRIBUTE_WATER)
end
function s.Drake_shark_f(function_f,int_lv,card_c) function s.Drake_shark_f(function_f,int_lv,card_c)
return function (c) return function (c)
return c:IsXyzLevel(card_c,int_lv) and (not function_f or function_f(c)) return c:IsXyzLevel(card_c,int_lv) and (not function_f or function_f(c))
end end
end end
function s.Drake_shark_gf(int_ct,int_tp) function s.sxfilter(c,tp,xc,eid)
local te=c:IsHasEffect(id,tp)
if te and te:GetValue()==eid then
local etg=te:GetTarget()
return etg(te,xc)
end
end
function s.Drake_shark_gf(int_ct,int_tp,xc)
return function (g) return function (g)
return g:GetCount()==int_ct or g:GetCount()==int_ct-1 and g:IsExists(s.xfilter,1,nil,int_tp) local ct=g:GetCount()
if g:IsExists(s.sxfilter,1,nil,int_tp,xc,id) then
ct=ct+1
end
if g:IsExists(s.sxfilter,1,nil,int_tp,xc,101208009) then
ct=ct+1
end
return ct>=int_ct
end end
end end
function s.xfilter(c,tp) function s.xfilter(c,tp)
return c:IsHasEffect(id,tp) return c:IsHasEffect(id,tp)
end end
function s.eftfilter(c,tp)
local te=c:IsHasEffect(id,tp)
return te:GetValue()
end
function s.gcheck(g,tp)
return g:GetClassCount(s.eftfilter,tp)==g:GetCount()
end
function s.adjustop(e,tp,eg,ep,ev,re,r,rp) function s.adjustop(e,tp,eg,ep,ev,re,r,rp)
if not s.globle_check then if not s.globle_check then
s.globle_check=true s.globle_check=true
Drake_shark_AddXyzProcedure=aux.AddXyzProcedure Drake_shark_AddXyzProcedure=aux.AddXyzProcedure
function aux.AddXyzProcedure(card_c,function_f,int_lv,int_ct,function_alterf,int_dese,int_maxc,function_op) function aux.AddXyzProcedure(card_c,function_f,int_lv,int_ct,function_alterf,int_dese,int_maxc,function_op)
if card_c:IsAttribute(ATTRIBUTE_WATER) and int_ct>=3 then if int_ct>=3 then
if function_alterf then if function_alterf then
Drake_shark_XyzLevelFreeOperationAlter=Auxiliary.XyzLevelFreeOperationAlter Drake_shark_XyzLevelFreeOperationAlter=Auxiliary.XyzLevelFreeOperationAlter
function Auxiliary.XyzLevelFreeOperationAlter(f,gf,minc,maxc,alterf,alterdesc,alterop) function Auxiliary.XyzLevelFreeOperationAlter(f,gf,minc,maxc,alterf,alterdesc,alterop)
return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max)
if og and not min then if og and not min then
if og:GetCount()==minc and og:IsExists(s.xfilter,1,nil) then if og:GetCount()<=maxc and mg:GetCount()>=minc and maxc==minc+2 then
local ttc=og:Filter(s.xfilter,nil):GetFirst() local et=maxc-og:GetCount()
local tte=ttc:IsHasEffect(id,tp) local exg=og:Filter(Card.IsHasEffect,nil,id,tp)
tte:UseCountLimit(tp) local ext=exg:GetClassCount(s.eftfilter,tp)
if et==0 or 2-et==ext then
for ttc in aux.Next(og) do
local tte=ttc:IsHasEffect(id,tp)
tte:UseCountLimit(tp)
end
else
local st=2-et
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(id,3))
local reg=exg:SelectSubGroup(tp,s.gcheck,false,st,st,tp)
for ttc in aux.Next(reg) do
local tte=ttc:IsHasEffect(id,tp)
tte:UseCountLimit(tp)
end
end
end end
local sg=Group.CreateGroup() local sg=Group.CreateGroup()
local tc=og:GetFirst() local tc=og:GetFirst()
...@@ -82,11 +122,23 @@ function s.adjustop(e,tp,eg,ep,ev,re,r,rp) ...@@ -82,11 +122,23 @@ function s.adjustop(e,tp,eg,ep,ev,re,r,rp)
Duel.Overlay(c,og) Duel.Overlay(c,og)
else else
local mg=e:GetLabelObject() local mg=e:GetLabelObject()
if mg:GetCount()==minc and mg:IsExists(s.xfilter,1,nil) then if mg:GetCount()<=maxc and mg:GetCount()>=minc and maxc==minc+2 then
local ttc=mg:Filter(s.xfilter,nil):GetFirst() local et=maxc-mg:GetCount()
local tte=ttc:IsHasEffect(id,tp) local exg=mg:Filter(Card.IsHasEffect,nil,id,tp)
if tte then local ext=exg:GetClassCount(s.eftfilter,tp)
tte:UseCountLimit(tp) if et==0 or 2-et==ext then
for ttc in aux.Next(mg) do
local tte=ttc:IsHasEffect(id,tp)
tte:UseCountLimit(tp)
end
else
local st=2-et
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(id,3))
local reg=exg:SelectSubGroup(tp,s.gcheck,false,st,st,tp)
for ttc in aux.Next(reg) do
local tte=ttc:IsHasEffect(id,tp)
tte:UseCountLimit(tp)
end
end end
end end
if e:GetLabel()==1 then if e:GetLabel()==1 then
...@@ -110,17 +162,31 @@ function s.adjustop(e,tp,eg,ep,ev,re,r,rp) ...@@ -110,17 +162,31 @@ function s.adjustop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
end end
aux.AddXyzProcedureLevelFree(card_c,s.Drake_shark_f(function_f,int_lv,card_c),s.Drake_shark_gf(int_ct,card_c:GetOwner()),int_ct-1,int_ct,function_alterf,int_dese,function_op) aux.AddXyzProcedureLevelFree(card_c,s.Drake_shark_f(function_f,int_lv,card_c),s.Drake_shark_gf(int_ct,card_c:GetOwner(),card_c),int_ct-2,int_ct,function_alterf,int_dese,function_op)
Auxiliary.XyzLevelFreeOperationAlter=Drake_shark_XyzLevelFreeOperationAlter Auxiliary.XyzLevelFreeOperationAlter=Drake_shark_XyzLevelFreeOperationAlter
else else
Drake_shark_XyzLevelFreeOperation=Auxiliary.XyzLevelFreeOperation Drake_shark_XyzLevelFreeOperation=Auxiliary.XyzLevelFreeOperation
function Auxiliary.XyzLevelFreeOperation(f,gf,minct,maxct) function Auxiliary.XyzLevelFreeOperation(f,gf,minct,maxct)
return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max)
if og and not min then if og and not min then
if og:GetCount()==minct and og:IsExists(s.xfilter,1,nil) then if mg:GetCount()<=maxc and mg:GetCount()>=minc and maxc==minc+2 then
local ttc=og:Filter(s.xfilter,nil):GetFirst() local et=maxct-mg:GetCount()
local tte=ttc:IsHasEffect(id,tp) local exg=mg:Filter(Card.IsHasEffect,nil,id,tp)
tte:UseCountLimit(tp) local ext=exg:GetClassCount(s.eftfilter,tp)
if et==0 or 2-et==ext then
for ttc in aux.Next(mg) do
local tte=ttc:IsHasEffect(id,tp)
tte:UseCountLimit(tp)
end
else
local st=2-et
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(id,3))
local reg=exg:SelectSubGroup(tp,s.gcheck,false,st,st,tp)
for ttc in aux.Next(reg) do
local tte=ttc:IsHasEffect(id,tp)
tte:UseCountLimit(tp)
end
end
end end
local sg=Group.CreateGroup() local sg=Group.CreateGroup()
local tc=og:GetFirst() local tc=og:GetFirst()
...@@ -134,11 +200,23 @@ function s.adjustop(e,tp,eg,ep,ev,re,r,rp) ...@@ -134,11 +200,23 @@ function s.adjustop(e,tp,eg,ep,ev,re,r,rp)
Duel.Overlay(c,og) Duel.Overlay(c,og)
else else
local mg=e:GetLabelObject() local mg=e:GetLabelObject()
if mg:GetCount()==minct and mg:IsExists(s.xfilter,1,nil) then if mg:GetCount()<=maxct and mg:GetCount()>=minc and maxct==minct+2 then
local ttc=mg:Filter(s.xfilter,nil):GetFirst() local et=maxct-mg:GetCount()
local tte=ttc:IsHasEffect(id,tp) local exg=mg:Filter(Card.IsHasEffect,nil,id,tp)
if tte then local ext=exg:GetClassCount(s.eftfilter,tp)
tte:UseCountLimit(tp) if et==0 or 2-et==ext then
for ttc in aux.Next(mg) do
local tte=ttc:IsHasEffect(id,tp)
tte:UseCountLimit(tp)
end
else
local st=2-et
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(id,3))
local reg=exg:SelectSubGroup(tp,s.gcheck,false,st,st,tp)
for ttc in aux.Next(reg) do
local tte=ttc:IsHasEffect(id,tp)
tte:UseCountLimit(tp)
end
end end
end end
if e:GetLabel()==1 then if e:GetLabel()==1 then
...@@ -162,7 +240,7 @@ function s.adjustop(e,tp,eg,ep,ev,re,r,rp) ...@@ -162,7 +240,7 @@ function s.adjustop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
end end
aux.AddXyzProcedureLevelFree(card_c,s.Drake_shark_f(function_f,int_lv,card_c),s.Drake_shark_gf(int_ct,card_c:GetOwner()),int_ct-1,int_ct) aux.AddXyzProcedureLevelFree(card_c,s.Drake_shark_f(function_f,int_lv,card_c),s.Drake_shark_gf(int_ct,card_c:GetOwner(),card_c),int_ct-2,int_ct)
Auxiliary.XyzLevelFreeOperation=Drake_shark_XyzLevelFreeOperation Auxiliary.XyzLevelFreeOperation=Drake_shark_XyzLevelFreeOperation
end end
else else
...@@ -224,4 +302,4 @@ function s.xyzop(e,tp,eg,ep,ev,re,r,rp) ...@@ -224,4 +302,4 @@ function s.xyzop(e,tp,eg,ep,ev,re,r,rp)
tc:CancelToGrave() tc:CancelToGrave()
Duel.Overlay(c,Group.FromCards(tc)) Duel.Overlay(c,Group.FromCards(tc))
end end
end end
\ No newline at end of file
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