Commit c9dd8183 authored by Nemo Ma's avatar Nemo Ma

fix

parent cb05e2d3
......@@ -17,11 +17,13 @@ function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local ph=Duel.GetTurnCount()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAINING)
e1:SetCondition(cm.regcon)
e1:SetOperation(cm.regop1)
e1:SetLabel(ph)
e1:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
local e2=Effect.CreateEffect(c)
......@@ -29,6 +31,7 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
e2:SetCode(EVENT_CHAIN_NEGATED)
e2:SetCondition(cm.regcon)
e2:SetOperation(cm.regop2)
e2:SetLabel(ph)
e2:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e2,tp)
local e3=Effect.CreateEffect(c)
......@@ -41,35 +44,37 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterEffect(e3,tp)
e1:SetLabelObject(e3)
e2:SetLabelObject(e3)
e:GetHandler():RegisterFlagEffect(m+1,RESET_PHASE+PHASE_END,0,1)
end
function cm.regcon(e,tp,eg,ep,ev,re,r,rp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE)
and re:IsActiveType(TYPE_TRAP)
and e:GetHandler():GetFlagEffect(m+1)>0
and Duel.GetTurnCount()==e:GetLabel()
end
function cm.regop1(e,tp,eg,ep,ev,re,r,rp)
local pt=e:GetLabel()
local ct=e:GetLabelObject():GetLabel()
e:GetLabelObject():SetLabel(ct+1)
e:GetLabelObject():SetLabel(ct+1,pt)
end
function cm.regop2(e,tp,eg,ep,ev,re,r,rp)
local pt=e:GetLabel()
local ct=e:GetLabelObject():GetLabel()
if ct==0 then ct=1 end
e:GetLabelObject():SetLabel(ct-1)
e:GetLabelObject():SetLabel(ct-1,pt)
end
function cm.effcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetLabel()>0 and e:GetHandler():GetFlagEffect(m+1)==0
local ct,pt=e:GetLabel()
return e:GetLabel()>0 and Duel.GetTurnCount()~=pt
end
function cm.sfilter(c)
return c:IsType(TYPE_TRAP) and c:IsAbleToHand()
end
function cm.effop(e,tp,eg,ep,ev,re,r,rp)
local ct,pt=e:GetLabel()
Duel.Hint(HINT_CARD,0,m)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(cm.sfilter),tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_ONFIELD,0,1,e:GetLabel(),nil)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(cm.sfilter),tp,LOCATION_DECK+LOCATION_GRAVE+LOCATION_ONFIELD,0,1,ct,nil)
if g:GetCount()>0 then
Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
end
end
......@@ -73,24 +73,21 @@ function c33200002.desop(e,tp,eg,ep,ev,re,r,rp)
end
--e4
function c33200002.pffilter0(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
end
function c33200002.filter0(c)
return (c:IsLocation(LOCATION_ONFIELD+LOCATION_GRAVE) or c:IsFaceup()) and c:IsCanBeFusionMaterial() and c:IsAbleToDeck()
function c33200002.filter0(c,e)
return c:IsCanBeFusionMaterial() and c:IsAbleToDeck() and not c:IsImmuneToEffect(e)
end
function c33200002.filter1(c,e)
return (c:IsLocation(LOCATION_ONFIELD+LOCATION_GRAVE) or c:IsFaceup()) and c:IsCanBeFusionMaterial() and c:IsAbleToDeck() and not c:IsImmuneToEffect(e)
return c:IsCanBeFusionMaterial() and c:IsFusionType(TYPE_MONSTER) and c:IsAbleToDeck() and not c:IsImmuneToEffect(e)
end
function c33200002.filter2(c,e,tp,m,f,chkf)
function c33200002.filter2(c,e,tp,m,f,chkf)
if c:IsSetCard(0x321) then m=Duel.GetMatchingGroup(c33200002.filter0,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,e:GetHandler(),e) end
return c:IsType(TYPE_FUSION) and c:IsRace(RACE_PSYCHO) and c:IsAttribute(ATTRIBUTE_FIRE) and (not f or f(c))
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:CheckFusionMaterial(m,nil,chkf)
end
function c33200002.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=tp
local mg=Duel.GetMatchingGroup(c33200002.filter0,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,e:GetHandler())
mg:Merge(Duel.GetMatchingGroup(c33200002.pffilter0,tp,LOCATION_PZONE+LOCATION_SZONE,0,e:GetHandler(),e))
local mg=Duel.GetMatchingGroup(c33200002.filter1,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,e:GetHandler(),e)
local res=Duel.IsExistingMatchingCard(c33200002.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -109,7 +106,6 @@ end
function c33200002.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=tp
local mg=Duel.GetMatchingGroup(aux.NecroValleyFilter(c33200002.filter1),tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,e:GetHandler(),e)
mg:Merge(Duel.GetMatchingGroup(c33200002.pffilter0,tp,LOCATION_PZONE+LOCATION_SZONE,0,e:GetHandler(),e))
local sg1=Duel.GetMatchingGroup(c33200002.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg,nil,chkf)
local mg3=nil
local sg2=nil
......@@ -126,6 +122,7 @@ function c33200002.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tg=sg:Select(tp,1,1,nil)
local tc=tg:GetFirst()
if tc:IsSetCard(0x321) then mg=Duel.GetMatchingGroup(c33200002.filter0,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,e:GetHandler(),e) end
if sg1:IsContains(tc) and (sg2==nil or not sg2:IsContains(tc) or not Duel.SelectYesNo(tp,ce:GetDescription())) then
local mat=Duel.SelectFusionMaterial(tp,tc,mg,nil,chkf)
tc:SetMaterial(mat)
......
......@@ -61,6 +61,5 @@ function c33200014.negop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then
Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc)
end
end
\ No newline at end of file
......@@ -52,17 +52,21 @@ function c64800123.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end
end
function c64800123.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g1=Duel.SelectMatchingCard(tp,c64800123.spfilter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil,e,tp)
local tc=g1:GetFirst()
if tc then
local lv=tc:GetLevel()
if Duel.GetFieldGroupCount(tp,LOCATION_HAND,0)~=0 then
Duel.DiscardHand(tp,aux.TRUE,1,1,REASON_EFFECT+REASON_DISCARD)
else
if Duel.GetLocationCount(tp,LOCATION_MZONE)<2 or Duel.IsPlayerAffectedByEffect(tp,59822133) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g2=Duel.SelectMatchingCard(tp,c64800123.spfilter2,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,tc,e,tp,lv)
g1:Merge(g2)
if g1:GetCount()==2 then
Duel.SpecialSummon(g1,0,tp,tp,true,false,POS_FACEUP)
local g1=Duel.SelectMatchingCard(tp,c64800123.spfilter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,nil,e,tp)
local tc=g1:GetFirst()
if tc then
local lv=tc:GetLevel()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g2=Duel.SelectMatchingCard(tp,c64800123.spfilter2,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,1,tc,e,tp,lv)
g1:Merge(g2)
if g1:GetCount()==2 then
Duel.SpecialSummon(g1,0,tp,tp,true,false,POS_FACEUP)
end
end
end
end
\ No newline at end of file
......@@ -872,4 +872,5 @@
!setname 0x6977 烬羽
!setname 0x6f31 虚实写笔Vireal-AI
!setname 0xa74 绚丽狂欢
!setname 0x5977 弹珠使
\ No newline at end of file
!setname 0x5977 弹珠使
!setname 0x541a 燃煤
\ 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