--咒灵刻使 艾米卡 local m=10904019 local cm=_G["c"..m] function cm.initial_effect(c) c:EnableReviveLimit() aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER),2,false) aux.EnablePendulumAttribute(c,false) --special summon rule local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_SPSUMMON_PROC) e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) e2:SetRange(LOCATION_EXTRA) e2:SetCondition(cm.spcon) e2:SetOperation(cm.spop) c:RegisterEffect(e2) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetRange(LOCATION_MZONE) e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCondition(cm.condition) e1:SetTargetRange(1,0) c:RegisterEffect(e1) local e3=e1:Clone() e3:SetCode(EFFECT_CANNOT_BP) c:RegisterEffect(e3) local e4=e1:Clone() e4:SetCondition(cm.condition2) e4:SetTargetRange(0,1) c:RegisterEffect(e4) local e5=e1:Clone() e5:SetCode(EFFECT_CANNOT_BP) e5:SetCondition(cm.condition2) e5:SetTargetRange(0,1) c:RegisterEffect(e5) local e6=Effect.CreateEffect(c) e6:SetDescription(aux.Stringid(48905153,1)) e6:SetCategory(CATEGORY_REMOVE) e6:SetType(EFFECT_TYPE_QUICK_O) e6:SetProperty(EFFECT_FLAG_CARD_TARGET) e6:SetCode(EVENT_FREE_CHAIN) e6:SetRange(LOCATION_MZONE) e6:SetCountLimit(1,m) e6:SetCondition(cm.dscon) e6:SetHintTiming(0,0x1e0) e6:SetTarget(cm.rmtg) e6:SetOperation(cm.rmop) c:RegisterEffect(e6) end function cm.ffilter(c) return c:IsRace(RACE_SPELLCASTER) end function cm.spfilter(c,fc) return cm.ffilter(c) and c:IsCanBeFusionMaterial(fc) end function cm.spfilter1(c,tp,g) return g:IsExists(cm.spfilter2,1,c,tp,c) end function cm.spfilter2(c,tp,mc) return Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0 end function cm.spcon(e,c) if c==nil then return true end local tp=e:GetHandler():GetControler() local tc1=Duel.GetFieldCard(tp,LOCATION_PZONE,0) local tc2=Duel.GetFieldCard(tp,LOCATION_PZONE,1) if not tc1 or not tc2 then return false end local tp=c:GetControler() local g=Duel.GetReleaseGroup(tp):Filter(cm.spfilter,nil,c) return g:IsExists(cm.spfilter1,1,nil,tp,g) and tc1:GetLeftScale()==tc2:GetRightScale() end function cm.spop(e,tp,eg,ep,ev,re,r,rp,c) local g=Duel.GetReleaseGroup(tp):Filter(cm.spfilter,nil,c) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) local g1=g:FilterSelect(tp,cm.spfilter1,1,1,nil,tp,g) local mc=g1:GetFirst() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) local g2=g:FilterSelect(tp,cm.spfilter2,1,1,mc,tp,mc) g1:Merge(g2) c:SetMaterial(g1) Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL) end function cm.cfilter(c) return c:IsFaceup() and c:GetMutualLinkedGroupCount()>0 end function cm.condition(e,tp,eg,ep,ev,re,r,rp) return Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_MZONE,0,1,nil) end function cm.condition2(e,tp,eg,ep,ev,re,r,rp) return Duel.IsExistingMatchingCard(cm.cfilter,tp,0,LOCATION_MZONE,1,nil) end function cm.dscon(e,tp,eg,ep,ev,re,r,rp) local tp=e:GetHandler():GetControler() local tc1=Duel.GetFieldCard(tp,LOCATION_PZONE,0) local tc2=Duel.GetFieldCard(tp,LOCATION_PZONE,1) if not tc1 or not tc2 then return false end return tc1:GetLeftScale()==tc2:GetRightScale() and e:GetHandler():GetLeftScale()>tc1:GetLeftScale() end function cm.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsOnField() and chkc:IsAbleToRemove() end if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) end function cm.rmop(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if not tc:IsRelateToEffect(e) then return end if Duel.SelectYesNo(tp,aux.Stringid(m,0)) then if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT+REASON_TEMPORARY)~=0 then tc:RegisterFlagEffect(m,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_CHAIN_END) e1:SetReset(RESET_EVENT+PHASE_END) e1:SetLabelObject(tc) e1:SetCountLimit(1) e1:SetCondition(cm.retcon) e1:SetOperation(cm.retop) Duel.RegisterEffect(e1,tp) end else Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) end end function cm.retcon(e,tp,eg,ep,ev,re,r,rp) return e:GetLabelObject():GetFlagEffect(m)~=0 end function cm.retop(e,tp,eg,ep,ev,re,r,rp) Duel.ReturnToField(e:GetLabelObject()) e:Reset() end