Commit 5ab10c37 authored by Nemo Ma's avatar Nemo Ma

fix

parent a41af920
......@@ -62,7 +62,7 @@ function c33700085.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function c33700085.confilter(c,ec)
return c:IsCanBeSynchroMaterial(ec) and c:IsSetCard(0x442) and c:IsFaceup() and c:IsAbleToGraveAsCost() and c:GetLevel()>0 and c:IsSummonableCard()
return c:IsSetCard(0x442) and c:IsFaceup() and c:IsAbleToGraveAsCost() and c:GetLevel()>0 and c:IsSummonableCard()
end
function c33700085.gcheck(g,tp,fc)
return Duel.GetLocationCountFromEx(tp,tp,g,fc)>0 and g:GetSum(Card.GetLevel)==4
......
--加帕里公园 - 神圣之山
function c33700103.initial_effect(c)
local e0=Effect.CreateEffect(c)
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_ACTIVATE)
e0:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e0)
......@@ -42,7 +42,7 @@ function c33700103.filter1(c,e,tp,sg)
and Duel.IsExistingMatchingCard(c33700103.filter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,sg,nil,e,tp,c:GetCode())
end
function c33700103.filter2(c,e,tp,g)
return c:GetCode()~=g and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
return c:GetCode()~=g and c:IsSetCard(0x442) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c33700103.filter3(c,e,tp,pg)
return not pg:IsExists(c33700103.filter4,1,nil,c) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
......@@ -85,7 +85,7 @@ end
end
function c33700103.filter5(c,e,tp,sg)
return c:IsAbleToDeck() and c:IsSetCard(0x442) and c:IsFaceup()
and Duel.IsExistingMatchingCard(c33700103.filter2,tp,LOCATION_HAND+LOCATION_GRAVE,0,sg,nil,e,tp,c:GetCode())
and Duel.IsExistingMatchingCard(c33700103.filter2,tp,LOCATION_DECK,0,sg,nil,e,tp,c:GetCode())
end
function c33700103.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
local sg=Duel.GetMatchingGroup(c33700103.filter0,tp,LOCATION_MZONE,0,nil)
......
......@@ -40,14 +40,17 @@ function cm.initial_effect(c)
e4:SetOperation(cm.recop2)
c:RegisterEffect(e4)
end
function cm.filter0(c,tp)
return c:GetOwner()==tp
end
function cm.reccon1(e,tp,eg,ep,ev,re,r,rp)
local g=e:GetHandler():GetMutualLinkedGroup()
return eg:IsExists(Card.IsControler,1,nil,1-tp)
return eg:IsExists(cm.filter0,1,nil,tp)
and (not re or not re:IsHasType(EFFECT_TYPE_ACTIONS) or re:IsHasType(EFFECT_TYPE_CONTINUOUS)) and g:IsExists(Card.IsCode,1,nil,m+1)
end
function cm.recop1(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_CARD,0,m)
local ct=eg:FilterCount(Card.IsControler,nil,1-tp)
local ct=eg:FilterCount(cm.filter0,nil,tp)
Duel.Recover(tp,ct*300,REASON_EFFECT)
end
function cm.regcon(e,tp,eg,ep,ev,re,r,rp)
......@@ -55,18 +58,19 @@ function cm.regcon(e,tp,eg,ep,ev,re,r,rp)
return re and re:IsHasType(EFFECT_TYPE_ACTIONS) and not re:IsHasType(EFFECT_TYPE_CONTINUOUS) and g:IsExists(Card.IsCode,1,nil,m+1)
end
function cm.regop(e,tp,eg,ep,ev,re,r,rp)
e:GetHandler():RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_CHAIN,0,1,eg:GetCount())
e:GetHandler():RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_CHAIN,0,1,eg:FilterCount(cm.filter0,nil,tp))
end
function cm.reccon2(e,tp,eg,ep,ev,re,r,rp)
local g=e:GetHandler():GetMutualLinkedGroup()
return e:GetHandler():GetFlagEffect(m)>0 and g:IsExists(Card.IsCode,1,nil,m+1)
end
function cm.recop2(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_CARD,0,m)
local labels={e:GetHandler():GetFlagEffectLabel(m)}
local ct=0
for i=1,#labels do ct=ct+labels[i] end
e:GetHandler():ResetFlagEffect(m)
if ct<=0 then return end
Duel.Hint(HINT_CARD,0,m)
Duel.Recover(tp,ct*300,REASON_EFFECT)
end
function cm.filter(c)
......
......@@ -33,6 +33,7 @@ function c33700929.initial_effect(c)
e2:SetTarget(c33700929.atktg)
e2:SetOperation(c33700929.atkop)
c:RegisterEffect(e2)
e2:SetLabelObject(e1)
--
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE)
......
......@@ -33,7 +33,7 @@ function cm.xyzop(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.ovfilter(c)
return c:IsFaceup() and not c:IsCode(m)
return c:IsFaceup() and c:IsSetCard(0x442) and not c:IsCode(m)
end
function cm.xyzcheck(g)
return g:GetClassCount(Card.GetCode)==3
......
......@@ -48,6 +48,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp,chk)
e2:SetTargetRange(LOCATION_GRAVE,LOCATION_GRAVE)
e2:SetCode(EFFECT_CHANGE_CODE)
e2:SetValue(m)
e2:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e2,tp)
end
function cm.xyzcheck(g)
......
......@@ -4,9 +4,27 @@ local m=33701009
local cm=_G["c"..m]
function cm.initial_effect(c)
rscf.SetSummonCondition(c)
aux.AddXyzProcedureLevelFree(c,cm.mfilter,aux.TRUE,40,40)
local e0=rsef.I(c,{m,0},{1,m,2},"sp",nil,LOCATION_EXTRA,nil,rscost.lpcost(true),cm.sptg,cm.spop)
local e1=rsef.I(c,{m,0},{1,m,2},"sp",nil,LOCATION_GRAVE,nil,rscost.lpcost(true),cm.sptg,cm.spop)
aux.AddXyzProcedureLevelFree(c,cm.mfilter,aux.TRUE,40,40)
--special summon
local e0=Effect.CreateEffect(c)
e0:SetCategory(CATEGORY_SPECIAL_SUMMON)
e0:SetType(EFFECT_TYPE_IGNITION)
e0:SetRange(LOCATION_EXTRA)
e0:SetCountLimit(1,m+EFFECT_COUNT_CODE_DUEL)
e0:SetCost(cm.spcost)
e0:SetTarget(cm.sptg)
e0:SetOperation(cm.spop)
c:RegisterEffect(e0)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_GRAVE)
e1:SetCountLimit(1,9910100+EFFECT_COUNT_CODE_DUEL)
e1:SetCost(cm.spcost)
e1:SetTarget(cm.sptg)
e1:SetOperation(cm.spop)
c:RegisterEffect(e1)
local e3=rsef.SV_ADD(c,"att",cm.attfilter)
local e5=rsef.SV_INDESTRUCTABLE(c,"battle",1,cm.con(ATTRIBUTE_LIGHT))
local e8=rsef.I(c,{m,2},1,"th","tg",LOCATION_MZONE,cm.con(ATTRIBUTE_WATER),nil,rstg.target({Card.IsAbleToHand,"th",LOCATION_ONFIELD,0,1,1,c}),cm.thop)
......@@ -51,7 +69,7 @@ function cm.initial_effect(c)
e15:SetCode(EFFECT_DIRECT_ATTACK)
e15:SetRange(LOCATION_MZONE)
e15:SetTargetRange(LOCATION_MZONE,0)
e15:SetCondition(cm.con(ATTRIBUTE_DEVINE))
e15:SetCondition(cm.con(ATTRIBUTE_DIVINE))
c:RegisterEffect(e15)
local e16=Effect.CreateEffect(c)
e16:SetType(EFFECT_TYPE_FIELD)
......@@ -59,7 +77,7 @@ function cm.initial_effect(c)
e16:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e16:SetRange(LOCATION_MZONE)
e16:SetTargetRange(0,1)
e16:SetCondition(cm.con(ATTRIBUTE_DEVINE))
e16:SetCondition(cm.damcon)
e16:SetValue(cm.damval)
c:RegisterEffect(e16)
local e17=Effect.CreateEffect(c)
......@@ -74,20 +92,21 @@ function cm.rcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPreviousPosition(POS_FACEUP)
end
function cm.rfilter(c,e,tp)
return c:IsLocation(LOCATION_GRAVE) and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
return (c:IsLocation(LOCATION_GRAVE) or (c:IsLocation(LOCATION_REMOVED) and c:IsFaceup()))
and c:IsType(TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function cm.rtg(e,tp,eg,ep,ev,re,r,rp,chk)
local og=e:GetLabelObject():GetLabelObject()
if chk==0 then return og and og:IsExists(cm.rfilter,1,nil,e,tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end
Duel.SetTargetCard(og)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_GRAVE)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,0,LOCATION_GRAVE+LOCATION_REMOVED)
end
function cm.rop(e,tp)
local c=e:GetHandler()
local og=rsgf.GetTargetGroup()
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tc=og:FilterSelect(tp,cm.rfilter,1,1,nil):GetFirst()
local tc=og:FilterSelect(tp,cm.rfilter,1,1,nil,e,to):GetFirst()
if tc and rssf.SpecialSummon(tc)>0 then
local e1=rsef.SV_IMMUNE_EFFECT({c,tc},rsval.imoe,nil,rsreset.est)
local e2=rsef.SV_INDESTRUCTABLE({c,tc},"battle",1,nil,rsreset.est)
......@@ -104,8 +123,11 @@ function cm.leaveop(e,tp)
e:SetLabelObject(nil)
end
end
function cm.val(e,re,dam,r,rp,rc)
return dam*2
function cm.damcon(e)
return e:GetHandler():IsAttribute(ATTRIBUTE_DIVINE)
end
function cm.damval(e,re,dam,r,rp,rc)
return dam*3
end
function cm.mfilter(c,xyzc)
return c:IsRace(RACE_PSYCHO)
......@@ -113,9 +135,16 @@ end
function cm.sumlimit(e,c,sump,sumtype,sumpos,targetp)
return c:IsLocation(LOCATION_EXTRA)
end
function cm.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
local lp=math.floor(Duel.GetLP(tp)/2)
local ct=math.floor(lp/1000)
if chk==0 then return ct>0 and Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_DECK,0,ct,nil) end
Duel.PayLPCost(tp,lp)
e:SetLabel(ct)
end
function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,true) end
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,true,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end
function cm.cfilter(c)
......@@ -124,13 +153,12 @@ end
function cm.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not c:IsRelateToEffect(e) then return end
if Duel.SpecialSummon(c,0,tp,tp,true,true,POS_FACEUP)~=0 then
if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0 then
c:CompleteProcedure()
local lp=rscost.costinfo[e]
if not lp or lp<1000 or not c:IsType(TYPE_XYZ) then return end
local ct=math.floor(lp/1000)
local ct=e:GetLabel()
local g=Duel.GetMatchingGroup(cm.cfilter,tp,LOCATION_DECK,0,nil)
if #g<ct then return end
if ct>#g then ct=#g end
if ct<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL)
local xg=g:Select(tp,ct,ct,nil)
Duel.Overlay(c,xg)
......
......@@ -10,14 +10,23 @@ function c33701323.initial_effect(c)
e1:SetValue(SUMMON_TYPE_LINK)
e1:SetCondition(c33701323.spcon)
e1:SetOperation(c33701323.spop)
c:RegisterEffect(e1)
--
c:RegisterEffect(e1)
--cannot be material
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_CANNOT_BE_LINK_MATERIAL)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetCode(EFFECT_CANNOT_BE_FUSION_MATERIAL)
e2:SetValue(c33701323.synlimit)
c:RegisterEffect(e2)
c:RegisterEffect(e2)
local e3=e2:Clone()
e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL)
c:RegisterEffect(e3)
local e4=e2:Clone()
e4:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL)
c:RegisterEffect(e4)
local e5=e2:Clone()
e5:SetCode(EFFECT_CANNOT_BE_LINK_MATERIAL)
c:RegisterEffect(e5)
end
function c33701323.spfil(c)
return c:IsCanBeLinkMaterial(nil) and (c:IsType(TYPE_SPELL+TYPE_TRAP) or c:IsRace(RACE_CYBERSE))
......
......@@ -8,6 +8,7 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_DAMAGE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,m)
e1:SetTarget(cm.damtg)
e1:SetOperation(cm.damop)
c:RegisterEffect(e1)
......@@ -33,7 +34,7 @@ end
function cm.damop(e,tp,eg,ep,ev,re,r,rp)
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
Duel.Damage(p,d,REASON_EFFECT)
if Duel.GetActivityCount(m,tp,ACTIVITY_CHAIN)==1 then
if Duel.GetActivityCount(m,tp,ACTIVITY_CHAIN)==0 then
Duel.BreakEffect()
Duel.Damage(p,1000,REASON_EFFECT)
end
......
......@@ -19,7 +19,7 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local ct=1
m[ct]=aux.Stringid(m,0) n[ct]=1 ct=ct+1
if t2 then m[ct]=aux.Stringid(m,1) n[ct]=2 ct=ct+1 end
local sp=Duel.SelectOption(tp,table.unpack(m))
local sp=Duel.SelectOption(1-tp,table.unpack(m))
op=n[sp+1]
Duel.BreakEffect()
if op==1 then
......@@ -31,7 +31,7 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
e1:SetTargetRange(0,1)
e1:SetValue(cm.damval)
Duel.RegisterEffect(e1,tp)
else op==2 then
elseif op==2 then
Duel.Draw(tp,3,REASON_EFFECT)
end
end
......
......@@ -18,7 +18,7 @@ function cm.initial_effect(c)
c:RegisterEffect(e1)
end
function cm.cfilter(c,tp)
return c:GetPreviousControler()==tp
return c:GetPreviousControler()==tp and c:IsPreviousLocation(LOCATION_MZONE)
end
function cm.spcon(e,tp,eg,ep,ev,re,r,rp)
return eg:FilterCount(cm.cfilter,nil,tp)==1 and Duel.GetTurnPlayer()~=tp
......
......@@ -19,8 +19,8 @@ function cm.initial_effect(c)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_CARD,0,m)
local ct=eg:FilterCount(cm.damfilter,nil,tp)
Duel.Recover(tp,300,REASON_EFFECT)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
......
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
--fusion summon
c:EnableReviveLimit()
aux.AddFusionProcFunRep(c,cm.ffilter,3,false)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
......@@ -74,7 +73,6 @@ function cm.initial_effect(c)
ge3:SetOperation(cm.clear)
Duel.RegisterEffect(ge3,0)
end
end
function cm.ffilter(c,fc,sub,mg,sg)
return not sg or not sg:IsExists(Card.IsFusionAttribute,1,c,c:GetFusionAttribute())
......@@ -85,15 +83,18 @@ end
function cm.fselect(g)
return g:GetClassCount(Card.GetAttribute)==g:GetCount()
end
function cm.matfilter(c)
return c:GetAttribute()>0
end
function cm.sprcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
if not Duel.CheckRemoveOverlayCard(c:GetControler(),1,1,3,REASON_COST) then return false end
if not Duel.CheckRemoveOverlayCard(tp,1,1,3,REASON_COST) then return false end
local g=Duel.GetMatchingGroup(cm.sprfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
local mg=Group.CreateGroup()
local tc=g:GetFirst()
while tc do
mg:Merge(tc:GetOverlayGroup())
mg:Merge(tc:GetOverlayGroup():Filter(cm.matfilter,nil))
tc=g:GetNext()
end
return Duel.GetLocationCountFromEx(tp,tp,nil,c)>0 and mg:CheckSubGroup(cm.fselect,3,3,tp,c)
......@@ -103,11 +104,11 @@ function cm.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local mg=Group.CreateGroup()
local tc=g:GetFirst()
while tc do
mg:Merge(tc:GetOverlayGroup())
mg:Merge(tc:GetOverlayGroup():Filter(cm.matfilter,nil))
tc=g:GetNext()
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
local sg=mg:SelectSubGroup(tp,cm.fselect,false,3,3,tp,c)
local sg=mg:SelectSubGroup(tp,cm.fselect,false,3,mg:GetCount(),tp,c)
c:SetMaterial(sg)
Duel.SendtoGrave(sg,REASON_COST+REASON_MATERIAL)
end
......
......@@ -80,7 +80,7 @@ end
function cm.spfilter(c,sc)
return c:IsCanBeLinkMaterial(sc) and c:IsAbleToRemoveAsCost()
end
function cm.spcon(e,c)
function cm.sprcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
if Duel.GetLocationCountFromEx(tp,tp,nil,c)<=0 then return false end
......
......@@ -15,7 +15,7 @@ function cm.initial_effect(c)
e2:SetOperation(cm.condition)
e2:SetOperation(cm.operation)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(e:GetHandler())
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EFFECT_DESTROY_REPLACE)
e3:SetTarget(cm.reptg)
......
--【背景音台】POP TEAM EPIC
function c33701500.initial_effect(c)
--card,code,oathcount,bgmHintID(卡片,卡号,契约回合,音乐提示)
--card,code,oathcount,bgmHintID(<cardname>,<cardID>,<contractTurn>,<BGMFileName>)
bgmhandle(c,33701500,6,1)
end
function bgmhandle(c,code,count,bgmid,con,cost,tg,op)
--Activate
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_ACTIVATE)
e0:SetCode(EVENT_FREE_CHAIN)
if con then e0:SetCondition(con) end
e0:SetCost((cost and {cost} or {function(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
if bgmid then Duel.Hint(HINT_MUSIC,0,aux.Stringid(code,bgmid)) end
end})[1])
if tg then e0:SetTarget(tg) end
if op then e0:SetOperation(op) end
--indes
local e2 = Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_FZONE)
e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT)
e2:SetValue(1)
--Cannot activate
local e3 = Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_CANNOT_ACTIVATE)
e3:SetRange(LOCATION_FZONE)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_CANNOT_NEGATE)
e3:SetTargetRange(1, 0)
e3:SetValue(function(e,re,tp)
return re:GetHandler():IsType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) end)
--cannot set
local e4 = Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD)
e4:SetCode(EFFECT_CANNOT_SSET)
e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e4:SetRange(LOCATION_FZONE)
e4:SetTargetRange(1, 0)
e4:SetTarget(function(e,c)
return c:IsType(TYPE_FIELD) end)
c:RegisterEffect(e4)
--Auto oath count
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetCountLimit(1)
e1:SetRange(LOCATION_FZONE)
e1:SetCondition(function(e,tp,eg,ep,ev,re,r,rp)
return tp~=Duel.GetTurnPlayer() end)
e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:GetFlagEffect(1082946)==0 then
c:RegisterFlagEffect(1082946,RESET_PHASE+PHASE_END+RESET_SELF_TURN,0,count)
c:SetTurnCounter(0)
end
local ct=c:GetTurnCounter()
ct=ct+1
c:SetTurnCounter(ct)
if ct>=count then
Duel.Destroy(c,REASON_RULE)
c:ResetFlagEffect(1082946)
end end)
c:RegisterEffect(e0)
c:RegisterEffect(e1)
c:RegisterEffect(e2)
c:RegisterEffect(e3)
c:RegisterEffect(e4)
_G["c"..code][c] = e1
end
\ No newline at end of file
......@@ -10,18 +10,28 @@ function c33710903.initial_effect(c)
c:RegisterEffect(e1)
if not c33710903.global_check then
c33710903.global_check=true
Count_Time_For_This_Effect={0,0,0,0}
local ge1=Effect.CreateEffect(c)
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge1:SetCode(EVENT_CHAINING)
ge1:SetOperation(c33710903.checkop)
Duel.RegisterEffect(ge1,0)
local ge2=Effect.CreateEffect(c)
ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge2:SetCode(EVENT_TURN_END)
ge2:SetOperation(c33710903.checkop2)
Duel.RegisterEffect(ge2,0)
end
end
function c33710903.checkop(e,tp,eg,ep,ev,re,r,rp)
local tc=re:GetHandler()
if tc then
Duel.RegisterFlagEffect(re:GetHandler():GetControler(),16133710903+Duel.GetTurnCount(),RESET_PHASE+PHASE_END,0,2)
end
Count_Time_For_This_Effect[re:GetHandlerPlayer()+3]=Count_Time_For_This_Effect[re:GetHandlerPlayer()+3]+1
end
function c33710903.checkop2(e,tp,eg,ep,ev,re,r,rp)
Debug.Message(0)
Count_Time_For_This_Effect[1]=Count_Time_For_This_Effect[3]
Count_Time_For_This_Effect[2]=Count_Time_For_This_Effect[4]
Count_Time_For_This_Effect[3]=0
Count_Time_For_This_Effect[4]=0
end
function c33710903.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 end
......@@ -59,12 +69,13 @@ function c33710903.actlimit(e,te,tp)
and g:GetFirst():IsFaceup()
end
function c33710903.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsRelateToEffect(e) end
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,Duel.GetFlagEffect(1-tp,16133710903+Duel.GetTurnCount()-1)*500)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,0,0,1-tp,Count_Time_For_This_Effect[2-tp]*500)
end
function c33710903.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) then
Duel.Damage(1-tp,Duel.GetFlagEffect(1-tp,16133710903+Duel.GetTurnCount()-1)*500,REASON_EFFECT)
Duel.Damage(1-tp,Count_Time_For_This_Effect[2-tp]*500,REASON_EFFECT)
if c:IsRelateToEffect(e) then
Duel.ShuffleHand(tp)
end
end
\ No newline at end of file
......@@ -27,26 +27,21 @@ function c33710904.tgop(e,tp,eg,ep,ev,re,r,rp)
local sum=(og:GetSum(Card.GetTextAttack)+og:GetSum(Card.GetTextDefense))*3
if sum==0 then sum=8000 end
Duel.SetLP(1-tp,sum)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetTargetRange(0,1)
e1:SetValue(c33710904.aclimit)
e1:SetLabelObject(og)
Duel.RegisterEffect(e1,tp)
for tc in aux.Next(og) do
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetTargetRange(0,1)
e1:SetValue(c33710904.aclimit)
e1:SetLabel(tc:GetOriginalCode())
Duel.RegisterEffect(e1,tp)
end
end
end
end
function c33710904.aclimit(e,re,tp)
local c=re:GetHandler()
local tg=e:GetLabelObject()
local flag=false
if not tg then return false end
local tc=tg:GetFirst()
while tc do
flag=c:IsCode(tc:GetCode())
tc=tg:GetNext()
end
return flag
local code=e:GetLabel()
return c:IsCode(code)
end
\ No newline at end of file
......@@ -27,6 +27,10 @@ function cm.initial_effect(c)
e2:SetTarget(cm.sptg)
e2:SetOperation(cm.spop)
c:RegisterEffect(e2)
if not cm.Decla then
cm.Decla=true
cm.Declatable={}
end
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
......@@ -54,6 +58,7 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local ac=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)
local c=e:GetHandler()
cm.Declatable[#cm.Declatable+1]=ac
--damage
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
......@@ -68,10 +73,20 @@ function cm.regop(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.rmfilter(c,code)
return c:IsAbleToRemoveAsCost() and c:IsCode(code)
local code1,code2=c:GetOriginalCodeRule()
return c:IsAbleToRemoveAsCost() and (cm.include(code1,cm.Declatable) or cm.include(code2,cm.Declatable))
end
function cm.include(value,tab)
if not value then return false end
if tab==nil then return false end
for k,v in ipairs(tab) do
if v == value then
return true
end
end
return false
end
function cm.effcost(e,tp,eg,ep,ev,re,r,rp,chk)
local code=e:GetLabelObject():GetLabel()
if chk==0 then return Duel.IsExistingMatchingCard(cm.rmfilter,tp,LOCATION_DECK,0,1,nil,code) and not e:GetHandler():IsControler(tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local rg=Duel.SelectMatchingCard(tp,cm.rmfilter,tp,LOCATION_DECK,0,1,1,nil,code)
......
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