Commit 1fc47fd2 authored by POLYMER's avatar POLYMER

fix

parent 8ad10a70
...@@ -106,8 +106,9 @@ end ...@@ -106,8 +106,9 @@ 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 e:IsCostChecked() end if chk==0 then return e:IsCostChecked() end
end end
function s.spfilter2(c,e,tp) function s.spfilter2(c,e,tp,ec)
return c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) local proc=c:IsCode(12866705,12866890,12866825) and ec:IsCode(12866600)
return c:IsLocation(LOCATION_GRAVE) and c:IsControler(tp) and c:IsCanBeSpecialSummoned(e,0,tp,proc,proc)
end end
function s.spop2(e,tp,eg,ep,ev,re,r,rp) function s.spop2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -115,9 +116,13 @@ function s.spop2(e,tp,eg,ep,ev,re,r,rp) ...@@ -115,9 +116,13 @@ function s.spop2(e,tp,eg,ep,ev,re,r,rp)
Duel.SetLP(tp,lp-2000) Duel.SetLP(tp,lp-2000)
local g=e:GetLabelObject():GetLabelObject() local g=e:GetLabelObject():GetLabelObject()
if Duel.GetLP(tp)<lp and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and if Duel.GetLP(tp)<lp and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and
#g>0 and g:IsExists(s.spfilter2,1,nil,e,tp) and Duel.SelectYesNo(tp,aux.Stringid(id,2)) then #g>0 and g:IsExists(s.spfilter2,1,nil,e,tp,c) and Duel.SelectYesNo(tp,aux.Stringid(id,2)) then
local sg=g:Filter(s.spfilter2,nil,e,tp) local sg=g:Filter(s.spfilter2,nil,e,tp,c)
local tc=sg:Select(tp,1,1,nil) local tc=sg:Select(tp,1,1,nil):GetFirst()
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) if tc then
local proc=tc:IsCode(12866705,12866890,12866825) and c:IsCode(12866600)
Duel.SpecialSummon(tc,0,tp,tp,proc,proc,POS_FACEUP)
if proc then tc:CompleteProcedure() end
end
end end
end end
\ No newline at end of file
...@@ -11,6 +11,8 @@ function c22023280.initial_effect(c) ...@@ -11,6 +11,8 @@ function c22023280.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c22023280.target(e,tp,eg,ep,ev,re,r,rp,chk) function c22023280.target(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local tp=c:GetControler()
local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND) local g=Duel.GetFieldGroup(tp,0,LOCATION_HAND)
local gc=g:GetCount() local gc=g:GetCount()
if chk==0 then return gc>0 and g:FilterCount(Card.IsAbleToRemove,nil)==gc and Duel.IsPlayerCanDraw(tp,gc) end if chk==0 then return gc>0 and g:FilterCount(Card.IsAbleToRemove,nil)==gc and Duel.IsPlayerCanDraw(tp,gc) end
...@@ -18,6 +20,8 @@ function c22023280.target(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -18,6 +20,8 @@ function c22023280.target(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,gc) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,gc)
end end
function c22023280.activate(e,tp,eg,ep,ev,re,r,rp) function c22023280.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tp=c:GetControler()
local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0) local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0)
local gc=g:GetCount() local gc=g:GetCount()
if gc>0 and g:FilterCount(Card.IsAbleToRemove,nil)==gc then if gc>0 and g:FilterCount(Card.IsAbleToRemove,nil)==gc then
......
...@@ -91,8 +91,7 @@ function s.rvfilter(c,tp,e) ...@@ -91,8 +91,7 @@ function s.rvfilter(c,tp,e)
--展示陷阱 -> 特召 (检查墓地/除外是否有怪兽 & M区是否有空位) --展示陷阱 -> 特召 (检查墓地/除外是否有怪兽 & M区是否有空位)
--因为是Cost阶段,必须预判是否有Target --因为是Cost阶段,必须预判是否有Target
elseif c:IsType(TYPE_TRAP) then elseif c:IsType(TYPE_TRAP) then
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.IsExistingTarget(s.spfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,e:GetHandler(),e,tp) and Duel.GetMZoneCount(tp,e:GetHandler())>0
and Duel.IsExistingTarget(s.spfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,e:GetHandler(),e,tp)
end end
return false return false
end end
......
...@@ -308,7 +308,7 @@ function yume.ResetExtraPendulumEffect(e,tp,eg,ep,ev,re,r,rp) ...@@ -308,7 +308,7 @@ function yume.ResetExtraPendulumEffect(e,tp,eg,ep,ev,re,r,rp)
e:Reset() e:Reset()
end end
function yume.RegOpWhenWouldBeSpSummoned(e,tp,eg,ep,ev,re,r,rp) function yume.RegOpWhenWouldBeSpSummoned(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetCurrentChain()>1 then if Duel.GetCurrentChain()>0 then
Duel.SetChainLimit(aux.FALSE) Duel.SetChainLimit(aux.FALSE)
end end
e:Reset() e:Reset()
......
...@@ -36,7 +36,7 @@ function c71403004.initial_effect(c) ...@@ -36,7 +36,7 @@ function c71403004.initial_effect(c)
c:RegisterEffect(ep2) c:RegisterEffect(ep2)
--monster movement effect --monster movement effect
yume.RegPPTTetrisBasicMoveEffect(c,71403004) yume.RegPPTTetrisBasicMoveEffect(c,71403004)
--special summon --to hand
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(71403004,1)) e1:SetDescription(aux.Stringid(71403004,1))
e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND) e1:SetCategory(CATEGORY_DESTROY+CATEGORY_TOHAND)
......
...@@ -45,7 +45,7 @@ function c71403012.initial_effect(c) ...@@ -45,7 +45,7 @@ function c71403012.initial_effect(c)
e1:SetRange(LOCATION_MZONE+LOCATION_HAND) e1:SetRange(LOCATION_MZONE+LOCATION_HAND)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END) e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCountLimit(1,71513004) e1:SetCountLimit(1,71513012)
e1:SetCondition(yume.PPTMainPhaseCon) e1:SetCondition(yume.PPTMainPhaseCon)
e1:SetCost(yume.PPTLimitCost) e1:SetCost(yume.PPTLimitCost)
e1:SetTarget(c71403012.tg1) e1:SetTarget(c71403012.tg1)
......
...@@ -47,8 +47,11 @@ function s.op1(e,tp,eg,ep,ev,re,r,rp) ...@@ -47,8 +47,11 @@ function s.op1(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,s.filter1,tp,LOCATION_HAND,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,s.filter1,tp,LOCATION_HAND,0,1,1,nil,e,tp)
if #g>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE)>0 and if #g==0 or Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE)==0 then
tc:IsRelateToChain() and tc:IsFaceup() and tc:IsCanBeDisabledByEffect(e) then return
end
Duel.ConfirmCards(1-tp,g)
if tc:IsRelateToChain() and tc:IsFaceup() and tc:IsCanBeDisabledByEffect(e) then
local c=e:GetHandler() local c=e:GetHandler()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
......
--气泡方块使 鲔鱼
local s,id,o=GetID()
function s.initial_effect(c)
if not (yume and yume.PPT_loaded) then
yume=yume or {}
yume.import_flag=true
c:CopyEffect(71403001,0)
yume.import_flag=false
end
--pendulum summon
aux.EnablePendulumAttribute(c,true)
--scale
local ep1=Effect.CreateEffect(c)
ep1:SetType(EFFECT_TYPE_SINGLE)
ep1:SetCode(EFFECT_CHANGE_LSCALE)
ep1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
ep1:SetRange(LOCATION_PZONE)
ep1:SetCondition(yume.PPTOtherScaleCheck)
ep1:SetValue(13)
c:RegisterEffect(ep1)
local ep1a=ep1:Clone()
ep1a:SetCode(EFFECT_CHANGE_RSCALE)
c:RegisterEffect(ep1a)
--change pos
local ep2=Effect.CreateEffect(c)
ep2:SetCategory(CATEGORY_POSITION+CATEGORY_TOHAND+CATEGORY_DESTROY)
ep2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
ep2:SetCode(EVENT_SUMMON_SUCCESS)
ep2:SetRange(LOCATION_PZONE)
ep2:SetDescription(aux.Stringid(id,0))
ep2:SetCountLimit(1,id+100000)
ep2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY)
ep2:SetCost(yume.PPTLimitCost)
ep2:SetTarget(s.tgp2)
ep2:SetOperation(s.opp2)
c:RegisterEffect(ep2)
local ep2a=ep2:Clone()
ep2a:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(ep2a)
--set from deck
--monster movement effect
yume.RegPPTPuyopuyoBasicMoveEffect(c,id)
yume.PPTCounter()
--Destroyed and added to Extra from Main Monster Zone
yume.RegPPTPuyopuyoBasicExtraFlag(c)
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(id,1))
e2:SetType(EFFECT_TYPE_QUICK_O)
e2:SetRange(LOCATION_EXTRA)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetCategory(CATEGORY_DESTROY+CATEGORY_TOEXTRA+CATEGORY_TOHAND)
e2:SetCountLimit(1,id+110000)
e2:SetCost(yume.PPTLimitCost)
e2:SetCondition(yume.RegPPTPuyopuyoBasicExtraCon)
e2:SetTarget(s.tg2)
e2:SetOperation(s.op2)
c:RegisterEffect(e2)
end
function s.filterp2a(c,e)
return c:GetSequence()<5 and c:IsFaceup() and c:IsSetCard(0x715) and c:IsCanBeEffectTarget(e)
end
function s.filterp2b(c)
return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand()
end
function s.tgp2(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then
return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp)
and s.filterp2a(chkc,e)
and Duel.IsExistingMatchingCard(s.filterp2b,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,chkc)
end
local g1=Duel.GetMatchingGroup(s.filterp2a,tp,LOCATION_MZONE,0,nil,e)
local g2=Duel.GetMatchingGroup(s.filterp2b,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
local g3=g1&g2
if chk==0 then return #g1>0 and #g2>0 and not (#g1==#g3 and #g2==#g3 and #g1==1) end
local excard=nil
if #g2==#g3 and #g3==1 then excard=g3:GetFirst() end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
local g=g1:Select(tp,1,1,excard)
Duel.SetTargetCard(g)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,g2-g,1,0,0)
end
function s.opp2(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
local g=Duel.GetMatchingGroup(s.filterp2b,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,tc)
if tc:IsRelateToEffect(e) then
local b2=tc:IsCanChangePosition()
local op=-1
if b2 then
op=Duel.SelectOption(tp,aux.Stringid(71403019,2),aux.Stringid(71403019,3))
else
op=Duel.SelectOption(tp,aux.Stringid(71403019,2))
end
local op_flag=false
if op==0 then
op_flag=Duel.Destroy(tc,REASON_EFFECT)>0
else
op_flag=Duel.ChangePosition(tc,POS_FACEUP_DEFENSE,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK,POS_FACEUP_ATTACK)>0
end
if op_flag and g:GetCount()>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local sg=g:Select(tp,1,1,nil)
local sc=sg:GetFirst()
Duel.SendtoHand(sc,nil,REASON_EFFECT)
end
end
end
function s.filter2a(c)
return c:IsSetCard(0x715) and c:IsType(TYPE_PENDULUM)
end
function s.filter2c(c,e,tp)
return c:IsSetCard(0x715) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE)
end
function s.tg2(e,tp,eg,ep,ev,re,r,rp,chk)
local g1=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,0,nil)
local hand_group=Duel.GetMatchingGroup(s.filter2a,tp,LOCATION_HAND,0,nil)
local g2=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
local g3=g1&g2
if chk==0 then
return (#g1>0 or #hand_group>0) and #g2>0
and not (#hand_group==0 and #g1==#g3 and #g2==#g3 and #g1==1)
end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,g3,1,0,0)
end
function s.op2(e,tp,eg,ep,ev,re,r,rp)
local g1=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,0,nil)
local hand_group=Duel.GetMatchingGroup(s.filter2a,tp,LOCATION_HAND,0,nil)
local g2=Duel.GetMatchingGroup(Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
local g3=g1&g2
if not (hand_group or g1) then return end
local op_flag=false
local b1=hand_group:GetCount()>0
local b2=g1:GetCount()>0 and not (b1 and #g1==#g3 and #g2==#g3 and #g1==1)
local op=-1
if b1 and b2 then
op=Duel.SelectOption(tp,aux.Stringid(71403001,10),aux.Stringid(71403001,11))
elseif b1 then
op=0
elseif b2 then
op=1
end
if op==0 then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(71403001,1))
local sc=hand_group:Select(tp,1,1,nil):GetFirst()
op_flag=Duel.SendtoExtraP(sc,nil,REASON_EFFECT)>0 and sc:IsLocation(LOCATION_EXTRA) and sc:IsFaceup()
elseif op==1 then
local excard=nil
if #g2==#g3 and #g3==1 then excard=g3:GetFirst() end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local sg=g1:Select(tp,1,1,excard)
op_flag=Duel.Destroy(sg,REASON_EFFECT)>0
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local retg=Duel.SelectMatchingCard(tp,Card.IsAbleToHand,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
if retg:GetCount()>0 then
Duel.BreakEffect()
Duel.SendtoHand(retg,nil,REASON_EFFECT)
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