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)
--
local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
e2:SetType(EFFECT_TYPE_QUICK_O)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,id)
e2:SetCondition(s.rtcon)
......
......@@ -18,7 +18,7 @@ function s.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP)
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
e2:SetRange(LOCATION_SZONE)
e2:SetCountLimit(1)
e2:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE)
e2:SetCondition(s.atkcon1)
e2:SetOperation(s.atkop)
c:RegisterEffect(e2)
......
......@@ -94,7 +94,7 @@ function s.cpfilter(c)
end
function s.cptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
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)
and c:IsAbleToRemove() end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_OPERATECARD)
......
......@@ -87,7 +87,7 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET)
local sg=Duel.SelectMatchingCard(tp,s.setfilter,tp,LOCATION_HAND,0,1,1,nil)
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)
if Duel.SelectYesNo(tp,aux.Stringid(id,2)) and te and Duel.IsPlayerCanDraw(tp,1) then
local tg=te:GetTarget()
......
......@@ -22,6 +22,7 @@ function s.initial_effect(c)
e2:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DESTROY)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_SUMMON_SUCCESS)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetTarget(s.atktg)
e2:SetOperation(s.atkop)
e2:SetCountLimit(1,id+30000)
......@@ -44,8 +45,9 @@ function s.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SendtoGrave(e:GetHandler(),REASON_COST)
end
function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp) end
local c=e:GetHandler()
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)
end
function s.spop(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -3,7 +3,7 @@ local s,id,o=GetID()
function s.initial_effect(c)
local e1=Effect.CreateEffect(c)
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:SetCode(EVENT_FREE_CHAIN)
e1:SetRange(LOCATION_HAND)
......@@ -22,20 +22,20 @@ function s.initial_effect(c)
end
end
function s.checkop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler()
if rc:IsLocation(LOCATION_HAND) then
local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)
if bit.band(loc,LOCATION_HAND)~=0 and Duel.GetFlagEffect(rp,id)==0 then
Duel.RegisterFlagEffect(rp,id,RESET_PHASE+PHASE_END,0,1)
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)
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)
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)
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)
end
end
......@@ -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
mg1:Merge(mg7)
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
mg1:AddCard(c)
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
mg1:AddCard(c)
end
......@@ -171,7 +172,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
Auxiliary.FCheckAdditional=nil
Auxiliary.GCheckAdditional=nil
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 dmat=mat1:Filter(Card.IsLocation,nil,LOCATION_REMOVED)
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)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetCode(EFFECT_INDESTRUCTABLE)
e1:SetTargetRange(1,1)
e1:SetValue(s.efilter)
e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
e1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD)
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)
Duel.RegisterEffect(e1,tp)
local e3=Effect.CreateEffect(e:GetHandler())
......@@ -88,7 +98,7 @@ function s.spop3(e,tp,eg,ep,ev,re,r,rp,c)
e2:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e2,tp)
end
function s.efilter(e,ct)
function s.efilter(e,c)
return true
end
......
......@@ -149,9 +149,9 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
--Effect 3
function cm.chainop(e,tp,eg,ep,ev,re,r,rp)
Duel.SetChainLimit(c62242678.chainlm(e:GetHandlerPlayer()))
Duel.SetChainLimit(cm.chainlm(e:GetHandlerPlayer()))
end
function c62242678.chainlm(ep)
function cm.chainlm(ep)
return function(e,rp,tp)
return tp==ep
end
......
......@@ -49,21 +49,19 @@ function cm.ttop(e,tp,eg,ep,ev,re,r,rp)
e1:SetCategory(CATEGORY_TOHAND)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCode(EVENT_TO_GRAVE)
e1:SetCode(EVENT_MOVE)
e1:SetCondition(cm.spcon)
e1:SetTarget(cm.sptg)
e1:SetOperation(cm.spop)
e1:SetReset(RESET_PHASE+PHASE_END)
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
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
function cm.cfilter3(c,tp,r)
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)
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetProperty(EFFECT_FLAG_NO_TURN_RESET)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,24400158)
e2:SetCountLimit(1,23100096)
e2:SetTarget(c23100118.sptg)
e2:SetOperation(c23100118.spop)
c:RegisterEffect(e2)
......@@ -71,12 +71,12 @@ function c23100118.spfil(c,e,tp)
return c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsCode(23100096)
end
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
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE)
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+LOCATION_DECK)
end
function c23100118.spop(e,tp,eg,ep,ev,re,r,rp)
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
local sg=g:Select(tp,1,1,nil)
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)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then
local e1=Effect.CreateEffect(e:GetHandler())
e2:SetDescription(aux.Stringid(23100143,1))
e1:SetDescription(aux.Stringid(23100143,1))
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
e1:SetProperty(EFFECT_FLAG_CLIENT_HINT)
......
......@@ -11,7 +11,7 @@ function s.t(c)
e6:SetDescription(1192)
e6:SetCategory(CATEGORY_REMOVE+CATEGORY_TODECK)
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:SetCode(EVENT_REMOVE)
e6:SetCondition(s.remcon)
......
......@@ -26,7 +26,7 @@ function s.x(c)
end
function s.drcon1(e,tp,eg,ep,ev,re,r,rp)
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
function s.drfilter(c,e,tp)
if c:IsType(TYPE_FUSION) then return false end
......
......@@ -27,7 +27,7 @@ function s.x(c)
end
function s.drcon(e,tp,eg,ep,ev,re,r,rp)
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
function s.fsfilter(c,e,tp)
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)
Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
end
elseif op==2
elseif op==2 then
Duel.RegisterFlagEffect(tp,id+20000000,RESET_PHASE+PHASE_END,0,1)
-- 特殊召唤效果
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)
and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) and Duel.IsChainNegatable(ev)
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=re:GetHandler()
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
......
......@@ -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)
end
function cm.activate1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.NegateSummon(eg)
if Duel.Remove(eg,POS_FACEUP,REASON_EFFECT)~=0 then
-- 结束阶段检索
......
......@@ -6,7 +6,7 @@ function s.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,m+EFFECT_COUNT_CODE_OATH)
e1:SetCountLimit(1,id+EFFECT_COUNT_CODE_OATH)
c:RegisterEffect(e1)
--control
local e3=Effect.CreateEffect(c)
......
......@@ -42,6 +42,8 @@ function s.initial_effect(c)
local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_SINGLE)
e5:SetCode(EFFECT_IMMUNE_EFFECT)
e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e5:SetRange(LOCATION_FZONE)
e5:SetValue(s.efilter)
c:RegisterEffect(e5)
-- 不能发动·盖放场地魔法卡
......
......@@ -25,6 +25,7 @@ function cm.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetCode(EVENT_DESTROYED)
e2:SetCondition(cm.rmcon)
e2:SetCost(cm.rmcost)
e2:SetTarget(cm.rmtg)
e2:SetOperation(cm.rmop)
c:RegisterEffect(e2)
......@@ -55,6 +56,15 @@ end
function cm.rmcon(e,tp,eg,ep,ev,re,r,rp)
return bit.band(r,REASON_EFFECT+REASON_BATTLE)~=0
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)
return c:IsFacedown() and c:IsCanBeSpecialSummoned(e,0,tp,true,true) and Duel.GetLocationCountFromEx(tp,tp,e:GetHandler(),c)>0
end
......
......@@ -89,6 +89,7 @@ function cm.rlop(e,tp,eg,ep,ev,re,r,rp)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_LEAVE_FIELD)
e2:SetOperation(cm.drop)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e2,true)
tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,4))
end
......
......@@ -102,7 +102,7 @@ function cm.drcost(e,tp,eg,ep,ev,re,r,rp,chk)
local lg=e:GetHandler():GetLinkedGroup()
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)
Duel.SendtoDeck(g,nil,REASON_COST)
Duel.SendtoDeck(g,nil,SEQ_DECKSHUFFLE,REASON_COST)
end
function cm.drtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end
......
......@@ -8,7 +8,7 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_REMOVE+CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1+m+EFFECT_FLAG_OATH)
e1:SetCountLimit(1,m+EFFECT_FLAG_OATH)
e1:SetTarget(cm.target)
e1:SetOperation(cm.activate)
c:RegisterEffect(e1)
......@@ -18,6 +18,7 @@ function cm.initial_effect(c)
e2:SetDescription(aux.Stringid(m,1))
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_GRAVE)
e2:SetCountLimit(1,m+100)
e2:SetCost(cm.thcost)
e2:SetTarget(cm.thtg)
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