Commit 19f14918 authored by 花桃白音's avatar 花桃白音

fix #124s,128,137,161,187,231s,527s,600s,792,819s

parent 5b16214e
expansions/pics/12400114.jpg

164 KB | W: | H:

expansions/pics/12400114.jpg

249 KB | W: | H:

expansions/pics/12400114.jpg
expansions/pics/12400114.jpg
expansions/pics/12400114.jpg
expansions/pics/12400114.jpg
  • 2-up
  • Swipe
  • Onion skin
...@@ -23,8 +23,7 @@ function s.initial_effect(c) ...@@ -23,8 +23,7 @@ function s.initial_effect(c)
-- --
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetRange(LOCATION_MZONE) e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,id) e2:SetCountLimit(1,id)
e2:SetCondition(s.rtcon) e2:SetCondition(s.rtcon)
......
...@@ -18,7 +18,7 @@ function s.initial_effect(c) ...@@ -18,7 +18,7 @@ function s.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP)
e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetCode(EVENT_SPSUMMON_SUCCESS)
e2:SetRange(LOCATION_SZONE) e2:SetRange(LOCATION_SZONE)
e2:SetCountLimit(1) e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE)
e2:SetCondition(s.atkcon1) e2:SetCondition(s.atkcon1)
e2:SetOperation(s.atkop) e2:SetOperation(s.atkop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
......
...@@ -94,7 +94,7 @@ function s.cpfilter(c) ...@@ -94,7 +94,7 @@ function s.cpfilter(c)
end end
function s.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function s.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local c=e:GetHandler() local c=e:GetHandler()
if chkc then return chkc:IsControler(tp) and chkc:IsOnField() and s.thfilter(chkc) end if chkc then return chkc:IsControler(tp) and chkc:IsOnField() and s.cpfilter(chkc) end
if chk==0 then return Duel.IsExistingTarget(s.thfilter,tp,LOCATION_SZONE,0,1,nil) if chk==0 then return Duel.IsExistingTarget(s.thfilter,tp,LOCATION_SZONE,0,1,nil)
and c:IsAbleToRemove() end and c:IsAbleToRemove() end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD)
......
...@@ -87,7 +87,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -87,7 +87,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET)
local sg=Duel.SelectMatchingCard(tp,s.setfilter,tp,LOCATION_HAND,0,1,1,nil) local sg=Duel.SelectMatchingCard(tp,s.setfilter,tp,LOCATION_HAND,0,1,1,nil)
local tc=sg:GetFirst() local tc=sg:GetFirst()
Duel.SSet(tp,tc,tp,false) Duel.SSet(tp,tc)
local te,ceg,cep,cev,cre,cr,crp=tc:CheckActivateEffect(false,true,true) local te,ceg,cep,cev,cre,cr,crp=tc:CheckActivateEffect(false,true,true)
if Duel.SelectYesNo(tp,aux.Stringid(id,2)) and te and Duel.IsPlayerCanDraw(tp,1) then if Duel.SelectYesNo(tp,aux.Stringid(id,2)) and te and Duel.IsPlayerCanDraw(tp,1) then
local tg=te:GetTarget() local tg=te:GetTarget()
......
...@@ -22,6 +22,7 @@ function s.initial_effect(c) ...@@ -22,6 +22,7 @@ function s.initial_effect(c)
e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DESTROY) e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DESTROY)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_SUMMON_SUCCESS) e2:SetCode(EVENT_SUMMON_SUCCESS)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetTarget(s.atktg) e2:SetTarget(s.atktg)
e2:SetOperation(s.atkop) e2:SetOperation(s.atkop)
e2:SetCountLimit(1,id+30000) e2:SetCountLimit(1,id+30000)
...@@ -44,8 +45,9 @@ function s.spcost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -44,8 +45,9 @@ function s.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SendtoGrave(e:GetHandler(),REASON_COST) Duel.SendtoGrave(e:GetHandler(),REASON_COST)
end end
function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 local c=e:GetHandler()
and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp)
and Duel.GetMZoneCount(tp,c)>0 end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE)
end end
function s.spop(e,tp,eg,ep,ev,re,r,rp) function s.spop(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -3,7 +3,7 @@ local s,id,o=GetID() ...@@ -3,7 +3,7 @@ local s,id,o=GetID()
function s.initial_effect(c) function s.initial_effect(c)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,0)) e1:SetDescription(aux.Stringid(id,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON+CATEGORY_TODECK+CATEGORY_REMOVE) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON+CATEGORY_REMOVE+CATEGORY_TODECK)
e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
...@@ -22,20 +22,20 @@ function s.initial_effect(c) ...@@ -22,20 +22,20 @@ function s.initial_effect(c)
end end
end end
function s.checkop(e,tp,eg,ep,ev,re,r,rp) function s.checkop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler() local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)
if rc:IsLocation(LOCATION_HAND) then if bit.band(loc,LOCATION_HAND)~=0 and Duel.GetFlagEffect(rp,id)==0 then
Duel.RegisterFlagEffect(rp,id,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(rp,id,RESET_PHASE+PHASE_END,0,1)
end end
if rc:IsLocation(LOCATION_DECK) then if bit.band(loc,LOCATION_DECK)~=0 and Duel.GetFlagEffect(rp,id+1)==0 then
Duel.RegisterFlagEffect(rp,id+1,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(rp,id+1,RESET_PHASE+PHASE_END,0,1)
end end
if rc:IsLocation(LOCATION_ONFIELD) then if bit.band(loc,LOCATION_ONFIELD)~=0 and Duel.GetFlagEffect(rp,id+2)==0 then
Duel.RegisterFlagEffect(rp,id+2,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(rp,id+2,RESET_PHASE+PHASE_END,0,1)
end end
if rc:IsLocation(LOCATION_GRAVE) then if bit.band(loc,LOCATION_GRAVE)~=0 and Duel.GetFlagEffect(rp,id+3)==0 then
Duel.RegisterFlagEffect(rp,id+3,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(rp,id+3,RESET_PHASE+PHASE_END,0,1)
end end
if rc:IsLocation(LOCATION_REMOVED) then if bit.band(loc,LOCATION_REMOVED)~=0 and Duel.GetFlagEffect(rp,id+4)==0 then
Duel.RegisterFlagEffect(rp,id+4,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(rp,id+4,RESET_PHASE+PHASE_END,0,1)
end end
end end
...@@ -94,11 +94,12 @@ function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -94,11 +94,12 @@ function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if #mg7>0 and Duel.GetFlagEffect(1-tp,id+4)>0 then if #mg7>0 and Duel.GetFlagEffect(1-tp,id+4)>0 then
mg1:Merge(mg7) mg1:Merge(mg7)
end end
if not c:IsHasEffect(EFFECT_TO_GRAVE_REDIRECT) and c:IsCanBeFusionMaterial() local ge=c:IsHasEffect(EFFECT_TO_GRAVE_REDIRECT)
if not ge and c:IsCanBeFusionMaterial()
and c:IsAbleToRemove() and Duel.GetFlagEffect(1-tp,id+3)>0 then and c:IsAbleToRemove() and Duel.GetFlagEffect(1-tp,id+3)>0 then
mg1:AddCard(c) mg1:AddCard(c)
end end
if c:IsHasEffect(EFFECT_TO_GRAVE_REDIRECT) and c:IsCanBeFusionMaterial() if ge and ge:GetValue()&LOCATION_REMOVED and c:IsCanBeFusionMaterial()
and c:IsAbleToDeck() and Duel.GetFlagEffect(1-tp,id+4)>0 then and c:IsAbleToDeck() and Duel.GetFlagEffect(1-tp,id+4)>0 then
mg1:AddCard(c) mg1:AddCard(c)
end end
...@@ -171,7 +172,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -171,7 +172,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
Auxiliary.FCheckAdditional=nil Auxiliary.FCheckAdditional=nil
Auxiliary.GCheckAdditional=nil Auxiliary.GCheckAdditional=nil
tc:SetMaterial(mat1) tc:SetMaterial(mat1)
local gmat=mat1:Filter(Card.IsLocation,nil,LOCATION_HAND+LOCATION_MZONE) local gmat=mat1:Filter(Card.IsLocation,nil,LOCATION_HAND+LOCATION_MZONE+LOCATION_DECK)
local rmat=mat1:Filter(Card.IsLocation,nil,LOCATION_GRAVE) local rmat=mat1:Filter(Card.IsLocation,nil,LOCATION_GRAVE)
local dmat=mat1:Filter(Card.IsLocation,nil,LOCATION_REMOVED) local dmat=mat1:Filter(Card.IsLocation,nil,LOCATION_REMOVED)
if #gmat>0 then Duel.SendtoGrave(gmat,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) end if #gmat>0 then Duel.SendtoGrave(gmat,REASON_EFFECT+REASON_MATERIAL+REASON_FUSION) end
......
...@@ -62,9 +62,19 @@ function s.spop3(e,tp,eg,ep,ev,re,r,rp,c) ...@@ -62,9 +62,19 @@ function s.spop3(e,tp,eg,ep,ev,re,r,rp,c)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetCode(EFFECT_INDESTRUCTABLE) e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
e1:SetTargetRange(1,1) e1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD)
e1:SetValue(s.efilter) e1:SetTarget(s.efilter)
e1:SetValue(1)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT)
e1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD)
e1:SetValue(1)
e1:SetTarget(s.efilter)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp) Duel.RegisterEffect(e1,tp)
local e3=Effect.CreateEffect(e:GetHandler()) local e3=Effect.CreateEffect(e:GetHandler())
...@@ -88,7 +98,7 @@ function s.spop3(e,tp,eg,ep,ev,re,r,rp,c) ...@@ -88,7 +98,7 @@ function s.spop3(e,tp,eg,ep,ev,re,r,rp,c)
e2:SetReset(RESET_PHASE+PHASE_END) e2:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e2,tp) Duel.RegisterEffect(e2,tp)
end end
function s.efilter(e,ct) function s.efilter(e,c)
return true return true
end end
......
...@@ -149,9 +149,9 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -149,9 +149,9 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
--Effect 3 --Effect 3
function cm.chainop(e,tp,eg,ep,ev,re,r,rp) function cm.chainop(e,tp,eg,ep,ev,re,r,rp)
Duel.SetChainLimit(c62242678.chainlm(e:GetHandlerPlayer())) Duel.SetChainLimit(cm.chainlm(e:GetHandlerPlayer()))
end end
function c62242678.chainlm(ep) function cm.chainlm(ep)
return function(e,rp,tp) return function(e,rp,tp)
return tp==ep return tp==ep
end end
......
...@@ -49,21 +49,19 @@ function cm.ttop(e,tp,eg,ep,ev,re,r,rp) ...@@ -49,21 +49,19 @@ function cm.ttop(e,tp,eg,ep,ev,re,r,rp)
e1:SetCategory(CATEGORY_TOHAND) e1:SetCategory(CATEGORY_TOHAND)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_DELAY) e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCode(EVENT_TO_GRAVE) e1:SetCode(EVENT_MOVE)
e1:SetCondition(cm.spcon) e1:SetCondition(cm.spcon)
e1:SetTarget(cm.sptg) e1:SetTarget(cm.sptg)
e1:SetOperation(cm.spop) e1:SetOperation(cm.spop)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp) Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EVENT_REMOVE)
Duel.RegisterEffect(e2,tp)
local e3=e1:Clone()
e3:SetCode(EVENT_TO_DECK)
Duel.RegisterEffect(e3,tp)
end end
function cm.cfilter(c,tp,r) function cm.cfilter(c,tp,r)
return c:IsType(TYPE_MONSTER) and c:GetOwner()==tp and r&REASON_FUSION~=0 local flag=0
if c:IsLocation(LOCATION_GRAVE) and not c:IsPreviousLocation(LOCATION_GRAVE) then flag=flag+1 end
if c:IsLocation(LOCATION_DECK) and not c:IsPreviousLocation(LOCATION_DECK) then flag=flag+1 end
if c:IsLocation(LOCATION_REMOVED) and not c:IsPreviousLocation(LOCATION_REMOVED) then flag=flag+1 end
return c:IsType(TYPE_MONSTER) and c:GetOwner()==tp and r&REASON_FUSION~=0 and flag>0
end end
function cm.cfilter3(c,tp,r) function cm.cfilter3(c,tp,r)
return c:IsType(TYPE_MONSTER) and c:GetOwner()==tp and r&REASON_FUSION~=0 and c:IsAbleToHand() return c:IsType(TYPE_MONSTER) and c:GetOwner()==tp and r&REASON_FUSION~=0 and c:IsAbleToHand()
......
...@@ -21,7 +21,7 @@ function c23100118.initial_effect(c) ...@@ -21,7 +21,7 @@ function c23100118.initial_effect(c)
e2:SetType(EFFECT_TYPE_IGNITION) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET) e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET)
e2:SetRange(LOCATION_MZONE) e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,24400158) e2:SetCountLimit(1,23100096)
e2:SetTarget(c23100118.sptg) e2:SetTarget(c23100118.sptg)
e2:SetOperation(c23100118.spop) e2:SetOperation(c23100118.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
...@@ -71,12 +71,12 @@ function c23100118.spfil(c,e,tp) ...@@ -71,12 +71,12 @@ function c23100118.spfil(c,e,tp)
return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsCode(23100096) return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsCode(23100096)
end end
function c23100118.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function c23100118.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c23100118.spfil,tp,LOCATION_GRAVE,0,1,nil,e,tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end if chk==0 then return Duel.IsExistingMatchingCard(c23100118.spfil,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,nil,e,tp) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE+LOCATION_DECK)
end end
function c23100118.spop(e,tp,eg,ep,ev,re,r,rp) function c23100118.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=Duel.GetMatchingGroup(c23100118.spfil,tp,LOCATION_GRAVE,0,nil,e,tp) local g=Duel.GetMatchingGroup(c23100118.spfil,tp,LOCATION_GRAVE+LOCATION_DECK,0,nil,e,tp)
if g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then if g:GetCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then
local sg=g:Select(tp,1,1,nil) local sg=g:Select(tp,1,1,nil)
Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP)
......
...@@ -74,7 +74,7 @@ function c23100143.idop(e,tp,eg,ep,ev,re,r,rp) ...@@ -74,7 +74,7 @@ function c23100143.idop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then if tc:IsRelateToEffect(e) then
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e2:SetDescription(aux.Stringid(23100143,1)) e1:SetDescription(aux.Stringid(23100143,1))
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
e1:SetProperty(EFFECT_FLAG_CLIENT_HINT) e1:SetProperty(EFFECT_FLAG_CLIENT_HINT)
......
...@@ -11,7 +11,7 @@ function s.t(c) ...@@ -11,7 +11,7 @@ function s.t(c)
e6:SetDescription(1192) e6:SetDescription(1192)
e6:SetCategory(CATEGORY_REMOVE+CATEGORY_TODECK) e6:SetCategory(CATEGORY_REMOVE+CATEGORY_TODECK)
e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e6:SetProperty(EFFECT_FLAG_DELAY) e6:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CARD_TARGET)
e6:SetRange(LOCATION_GRAVE) e6:SetRange(LOCATION_GRAVE)
e6:SetCode(EVENT_REMOVE) e6:SetCode(EVENT_REMOVE)
e6:SetCondition(s.remcon) e6:SetCondition(s.remcon)
......
...@@ -26,7 +26,7 @@ function s.x(c) ...@@ -26,7 +26,7 @@ function s.x(c)
end end
function s.drcon1(e,tp,eg,ep,ev,re,r,rp) function s.drcon1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousControler(tp) and c:GetReasonPlayer()==1-tp return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousControler(tp) and c:GetReasonPlayer()==1-tp and c:IsReason(REASON_EFFECT)
end end
function s.drfilter(c,e,tp) function s.drfilter(c,e,tp)
if c:IsType(TYPE_FUSION) then return false end if c:IsType(TYPE_FUSION) then return false end
......
...@@ -27,7 +27,7 @@ function s.x(c) ...@@ -27,7 +27,7 @@ function s.x(c)
end end
function s.drcon(e,tp,eg,ep,ev,re,r,rp) function s.drcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousControler(tp) and c:GetReasonPlayer()==1-tp return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousControler(tp) and c:GetReasonPlayer()==1-tp and c:IsReason(REASON_EFFECT)
end end
function s.fsfilter(c,e,tp) function s.fsfilter(c,e,tp)
return c:IsType(TYPE_FUSION) and not c:IsCode(id) and c:CheckFusionMaterial() and c:IsSetCard(0x5529) return c:IsType(TYPE_FUSION) and not c:IsCode(id) and c:CheckFusionMaterial() and c:IsSetCard(0x5529)
......
...@@ -64,7 +64,7 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -64,7 +64,7 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
end end
elseif op==2 elseif op==2 then
Duel.RegisterFlagEffect(tp,id+20000000,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(tp,id+20000000,RESET_PHASE+PHASE_END,0,1)
-- 特殊召唤效果 -- 特殊召唤效果
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
......
...@@ -30,6 +30,7 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -30,6 +30,7 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp)
and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev)
end end
function cm.activate(e,tp,eg,ep,ev,re,r,rp) function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=re:GetHandler() local tc=re:GetHandler()
if Duel.NegateActivation(ev) and tc:IsRelateToEffect(re) and Duel.Remove(eg,POS_FACEUP,REASON_EFFECT)~=0 if Duel.NegateActivation(ev) and tc:IsRelateToEffect(re) and Duel.Remove(eg,POS_FACEUP,REASON_EFFECT)~=0
and tc:IsLocation(LOCATION_REMOVED) and not tc:IsReason(REASON_REDIRECT) then and tc:IsLocation(LOCATION_REMOVED) and not tc:IsReason(REASON_REDIRECT) then
......
...@@ -33,6 +33,7 @@ function cm.target1(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -33,6 +33,7 @@ function cm.target1(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0) Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,eg:GetCount(),0,0)
end end
function cm.activate1(e,tp,eg,ep,ev,re,r,rp) function cm.activate1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.NegateSummon(eg) Duel.NegateSummon(eg)
if Duel.Remove(eg,POS_FACEUP,REASON_EFFECT)~=0 then if Duel.Remove(eg,POS_FACEUP,REASON_EFFECT)~=0 then
-- 结束阶段检索 -- 结束阶段检索
......
...@@ -6,7 +6,7 @@ function s.initial_effect(c) ...@@ -6,7 +6,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:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,m+EFFECT_COUNT_CODE_OATH) e1:SetCountLimit(1,id+EFFECT_COUNT_CODE_OATH)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--control --control
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
......
...@@ -42,6 +42,8 @@ function s.initial_effect(c) ...@@ -42,6 +42,8 @@ function s.initial_effect(c)
local e5=Effect.CreateEffect(c) local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_SINGLE) e5:SetType(EFFECT_TYPE_SINGLE)
e5:SetCode(EFFECT_IMMUNE_EFFECT) e5:SetCode(EFFECT_IMMUNE_EFFECT)
e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e5:SetRange(LOCATION_FZONE)
e5:SetValue(s.efilter) e5:SetValue(s.efilter)
c:RegisterEffect(e5) c:RegisterEffect(e5)
-- 不能发动·盖放场地魔法卡 -- 不能发动·盖放场地魔法卡
......
...@@ -25,6 +25,7 @@ function cm.initial_effect(c) ...@@ -25,6 +25,7 @@ function cm.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_DELAY) e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetCode(EVENT_DESTROYED) e2:SetCode(EVENT_DESTROYED)
e2:SetCondition(cm.rmcon) e2:SetCondition(cm.rmcon)
e2:SetCost(cm.rmcost)
e2:SetTarget(cm.rmtg) e2:SetTarget(cm.rmtg)
e2:SetOperation(cm.rmop) e2:SetOperation(cm.rmop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
...@@ -55,6 +56,15 @@ end ...@@ -55,6 +56,15 @@ end
function cm.rmcon(e,tp,eg,ep,ev,re,r,rp) function cm.rmcon(e,tp,eg,ep,ev,re,r,rp)
return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0 return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0
end end
function cm.cfilter(c)
return c:IsLocation(LOCATION_EXTRA) and c:IsAbleToRemoveAsCost(POS_FACEDOWN) and c:IsType(TYPE_MONSTER)
end
function cm.rmcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_EXTRA,0,1,nil) end
Duel.Hint(HINTMSG_SELECT,tp,HINTMSG_REMOVE)
local g=Duel.SelectMatchingCard(tp,cm.cfilter,tp,LOCATION_EXTRA,0,1,1,nil)
Duel.Remove(g,POS_FACEDOWN,REASON_COST)
end
function cm.rmfilter(c,e,tp) function cm.rmfilter(c,e,tp)
return c:IsFacedown() and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and Duel.GetLocationCountFromEx(tp,tp,e:GetHandler(),c)>0 return c:IsFacedown() and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and Duel.GetLocationCountFromEx(tp,tp,e:GetHandler(),c)>0
end end
......
...@@ -89,6 +89,7 @@ function cm.rlop(e,tp,eg,ep,ev,re,r,rp) ...@@ -89,6 +89,7 @@ function cm.rlop(e,tp,eg,ep,ev,re,r,rp)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_LEAVE_FIELD) e2:SetCode(EVENT_LEAVE_FIELD)
e2:SetOperation(cm.drop) e2:SetOperation(cm.drop)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e2,true) tc:RegisterEffect(e2,true)
tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,4)) tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,4))
end end
......
...@@ -102,7 +102,7 @@ function cm.drcost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -102,7 +102,7 @@ function cm.drcost(e,tp,eg,ep,ev,re,r,rp,chk)
local lg=e:GetHandler():GetLinkedGroup() local lg=e:GetHandler():GetLinkedGroup()
if chk==0 then return Duel.IsExistingMatchingCard(cm.tdfilter,tp,0xff,0,3,e:GetHandler()) end if chk==0 then return Duel.IsExistingMatchingCard(cm.tdfilter,tp,0xff,0,3,e:GetHandler()) end
local g=Duel.SelectMatchingCard(tp,cm.tdfilter,tp,0xff,0,3,3,nil) local g=Duel.SelectMatchingCard(tp,cm.tdfilter,tp,0xff,0,3,3,nil)
Duel.SendtoDeck(g,nil,REASON_COST) Duel.SendtoDeck(g,nil,SEQ_DECKSHUFFLE,REASON_COST)
end end
function cm.drtg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.drtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end
......
...@@ -8,7 +8,7 @@ function cm.initial_effect(c) ...@@ -8,7 +8,7 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1+m+EFFECT_FLAG_OATH) e1:SetCountLimit(1,m+EFFECT_FLAG_OATH)
e1:SetTarget(cm.target) e1:SetTarget(cm.target)
e1:SetOperation(cm.activate) e1:SetOperation(cm.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -18,6 +18,7 @@ function cm.initial_effect(c) ...@@ -18,6 +18,7 @@ function cm.initial_effect(c)
e2:SetDescription(aux.Stringid(m,1)) e2:SetDescription(aux.Stringid(m,1))
e2:SetType(EFFECT_TYPE_IGNITION) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_GRAVE) e2:SetRange(LOCATION_GRAVE)
e2:SetCountLimit(1,m+100)
e2:SetCost(cm.thcost) e2:SetCost(cm.thcost)
e2:SetTarget(cm.thtg) e2:SetTarget(cm.thtg)
e2:SetOperation(cm.thop) e2:SetOperation(cm.thop)
......
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