Commit 1dcff46d authored by POLYMER's avatar POLYMER

fix

parent 40448b99
No preview for this file type
--方舟骑士-迷迭香·新生
local m=29048740
local cm=_G["c"..m]
function cm.initial_effect(c)
--synchro summon
aux.AddSynchroMixProcedure(c,aux.Tuner(aux.FilterBoolFunction(Card.IsCode,29065546)),nil,nil,cm.syf,1,1)
c:EnableReviveLimit()
--Effect 1
local e01=Effect.CreateEffect(c)
e01:SetCategory(CATEGORY_SPECIAL_SUMMON)
e01:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e01:SetProperty(EFFECT_FLAG_DELAY)
e01:SetCode(EVENT_SPSUMMON_SUCCESS)
e01:SetCountLimit(1,m)
e01:SetTarget(cm.sptg)
e01:SetOperation(cm.spop)
c:RegisterEffect(e01)
--Effect 2
local e51=Effect.CreateEffect(c)
e51:SetDescription(aux.Stringid(m,0))
e51:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_GRAVE_ACTION)
e51:SetType(EFFECT_TYPE_QUICK_O)
e51:SetCode(EVENT_FREE_CHAIN)
e51:SetRange(LOCATION_MZONE)
e51:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_END_PHASE)
e51:SetCountLimit(1,m+m)
e51:SetCondition(cm.sumcon)
e51:SetCost(cm.spmcost)
e51:SetTarget(cm.spmtg)
e51:SetOperation(cm.spmop)
c:RegisterEffect(e51)
end
--synchro summon rule filter
function cm.syf(c,syc)
local setcard=(c:IsSetCard(0x87af) or (_G["c"..c:GetCode()] and _G["c"..c:GetCode()].named_with_Arknight))
return c:GetSynchroLevel(syc)>0 and setcard and c:IsSynchroType(TYPE_MONSTER) and c:IsCanBeSynchroMaterial(syc)
end
--Effect 1
function cm.sp(c,e,tp)
local setcard=(c:IsSetCard(0x87af) or (_G["c"..c:GetCode()] and _G["c"..c:GetCode()].named_with_Arknight))
return c:IsType(TYPE_TUNER) and setcard and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=(Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE))+1
local g=Duel.GetMatchingGroup(cm.sp,tp,LOCATION_DECK,0,nil,e,tp)
if chk==0 then return ft>0 and ct>0 and #g>0 end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=(Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE))+1
local g=Duel.GetMatchingGroup(cm.sp,tp,LOCATION_DECK,0,nil,e,tp)
if ft==0 or #g==0 then return end
if ft>ct then ft=ct end
if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local sg=g:SelectSubGroup(tp,aux.dncheck,false,1,ft)
if #sg==0 then return false end
Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP)
end
--Effect 2
function cm.sumcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==1-tp
end
function cm.spmcost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return c:IsReleasable() and Duel.GetMZoneCount(tp,c)>0 end
Duel.Release(c,REASON_COST)
end
function cm.spfilter(c,e,tp)
return c:IsCode(29065546) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function cm.spmtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,PLAYER_ALL,LOCATION_GRAVE)
end
function cm.spmop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetMZoneCount(tp)>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,cm.spfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil,e,tp)
local tc=g:GetFirst()
if #g>0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)>0 then
tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,1))
end
end
end
...@@ -70,9 +70,8 @@ function c50213185.chaincon(e,tp,eg,ep,ev,re,r,rp) ...@@ -70,9 +70,8 @@ function c50213185.chaincon(e,tp,eg,ep,ev,re,r,rp)
end end
function c50213185.chainop(e,tp,eg,ep,ev,re,r,rp) function c50213185.chainop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler() local rc=re:GetHandler()
if re:IsHasType(TYPE_MONSTER) and rc:IsSetCard(0xcbf) then if not re:IsActiveType(TYPE_MONSTER) or not rc:IsSetCard(0xcbf) then return false end
Duel.SetChainLimit(c50213185.chainlm) Duel.SetChainLimit(c50213185.chainlm)
end
end end
function c50213185.chainlm(e,rp,tp) function c50213185.chainlm(e,rp,tp)
return tp==rp return tp==rp
......
...@@ -28,24 +28,19 @@ function c74594972.initial_effect(c) ...@@ -28,24 +28,19 @@ function c74594972.initial_effect(c)
e3:SetProperty(EFFECT_FLAG_CARD_TARGET) e3:SetProperty(EFFECT_FLAG_CARD_TARGET)
e3:SetRange(LOCATION_SZONE) e3:SetRange(LOCATION_SZONE)
e3:SetCountLimit(1,84594972) e3:SetCountLimit(1,84594972)
e3:SetCondition(c74594972.tdcon1) e3:SetTarget(c74594972.tdtg)
e3:SetTarget(c74594972.tdtg1)
e3:SetOperation(c74594972.tdop) e3:SetOperation(c74594972.tdop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetCondition(c74594972.tdcon2)
e4:SetTarget(c74594972.tdtg2)
c:RegisterEffect(e4)
--ritual summon --ritual summon
local e5=aux.AddRitualProcEqual2(c,c74594972.rsfilter,LOCATION_HAND,nil,nil,true) local e4=aux.AddRitualProcEqual2(c,c74594972.rsfilter,LOCATION_HAND,nil,nil,true)
e5:SetDescription(aux.Stringid(74594972,2)) e4:SetDescription(aux.Stringid(74594972,2))
e5:SetType(EFFECT_TYPE_IGNITION) e4:SetType(EFFECT_TYPE_IGNITION)
e5:SetRange(LOCATION_SZONE) e4:SetRange(LOCATION_SZONE)
e5:SetCountLimit(1,94594972) e4:SetCountLimit(1,94594972)
c:RegisterEffect(e5) c:RegisterEffect(e4)
end end
function c74594972.filter(c,e,tp) function c74594972.filter(c,e,tp)
return c:IsFaceup() and c:IsType(TYPE_DUAL) and c:IsSetCard(0x745) and c:IsSummonable(true,nil) and (not e or c:IsRelateToEffect(e)) and not c:IsHasEffect(74594972) return c:IsFaceup() and c:IsType(TYPE_DUAL) and c:IsSetCard(0x745) and c:IsSummonable(true,nil) and (not e or c:IsRelateToEffect(e)) and not c:IsHasEffect(74594972) and c:IsControler(tp) and c:IsLocation(LOCATION_MZONE)
end end
function c74594972.sumtg(e,tp,eg,ep,ev,re,r,rp,chk) function c74594972.sumtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return eg:IsExists(c74594972.filter,1,nil,nil,tp) end if chk==0 then return eg:IsExists(c74594972.filter,1,nil,nil,tp) end
...@@ -63,35 +58,21 @@ end ...@@ -63,35 +58,21 @@ end
function c74594972.rfilter(c) function c74594972.rfilter(c)
return c:IsFaceup() and c:IsType(TYPE_RITUAL) and c:IsType(TYPE_MONSTER) return c:IsFaceup() and c:IsType(TYPE_RITUAL) and c:IsType(TYPE_MONSTER)
end end
function c74594972.tdfilter(c) function c74594972.tdfilter(c,check)
return c:IsSetCard(0x745) and c:IsAbleToDeck() return c:IsSetCard(0x745) and c:IsAbleToDeck() and (c:IsLocation(LOCATION_GRAVE) or (check and c:IsFaceup()))
end
function c74594972.tdcon1(e,tp,eg,ep,ev,re,r,rp)
return not Duel.IsExistingMatchingCard(c74594972.rfilter,tp,LOCATION_MZONE,0,1,nil)
end
function c74594972.tdcon2(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(c74594972.rfilter,tp,LOCATION_MZONE,0,1,nil)
end
function c74594972.tdtg1(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c74594972.tdfilter(chkc) end
if chk==0 then return Duel.IsPlayerCanDraw(tp,1)
and Duel.IsExistingTarget(c74594972.tdfilter,tp,LOCATION_GRAVE,0,3,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectTarget(tp,c74594972.tdfilter,tp,LOCATION_GRAVE,0,3,3,nil)
Duel.SetOperationInfo(0,CATEGORY_TODECK,g,3,0,0)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1)
end end
function c74594972.tdtg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c74594972.tdtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return (chkc:IsLocation(LOCATION_GRAVE) or (chkc:IsLocation(LOCATION_REMOVED) and chkc:IsFaceup())) and chkc:IsControler(tp) and c74594972.tdfilter(chkc) end local check=Duel.IsExistingMatchingCard(c74594972.rfilter,tp,LOCATION_MZONE,0,1,nil)
if chkc then return chkc:IsLocation(LOCATION_GRAVE+LOCATION_REMOVED) and chkc:IsControler(tp) and c74594972.tdfilter(chkc,check) end
if chk==0 then return Duel.IsPlayerCanDraw(tp,1) if chk==0 then return Duel.IsPlayerCanDraw(tp,1)
and Duel.IsExistingTarget(c74594972.tdfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,3,nil) end and Duel.IsExistingTarget(c74594972.tdfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,3,nil,check) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectTarget(tp,c74594972.tdfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,3,3,nil) local g=Duel.SelectTarget(tp,c74594972.tdfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,3,3,nil,check)
Duel.SetOperationInfo(0,CATEGORY_TODECK,g,3,0,0) Duel.SetOperationInfo(0,CATEGORY_TODECK,g,3,0,0)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1)
end end
function c74594972.tdop(e,tp,eg,ep,ev,re,r,rp) function c74594972.tdop(e,tp,eg,ep,ev,re,r,rp)
local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e)
if not tg then return end if not tg then return end
Duel.SendtoDeck(tg,nil,SEQ_DECKSHUFFLE,REASON_EFFECT) Duel.SendtoDeck(tg,nil,SEQ_DECKSHUFFLE,REASON_EFFECT)
local g=Duel.GetOperatedGroup() local g=Duel.GetOperatedGroup()
......
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