--Mantra Seed --Automate ID local scard,s_id=GetID() function scard.initial_effect(c) Card.IsMantra=Card.IsMantra or (function(tc) return tc:IsSetCard(0x7d0) or (tc:GetCode()>30200 and tc:GetCode()<30230) end) c:EnableReviveLimit() --Cannot be Special Summoned/Flip Summoned local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCode(EFFECT_SPSUMMON_CONDITION) c:RegisterEffect(e1) local e1x=Effect.CreateEffect(c) e1x:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1x:SetType(EFFECT_TYPE_SINGLE) e1x:SetCode(EFFECT_CANNOT_FLIP_SUMMON) c:RegisterEffect(e1x) --SS from anywhere local e0=Effect.CreateEffect(c) e0:Desc(0) e0:SetCategory(CATEGORY_SPECIAL_SUMMON) e0:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e0:SetProperty(EFFECT_FLAG_DDD) e0:SetCode(EVENT_TO_GRAVE) e0:SetCondition(scard.spcon) e0:SetTarget(scard.sptg) e0:SetOperation(scard.spop) e0:SetCountLimit(1,s_id) c:RegisterEffect(e0) --Protect local e4=Effect.CreateEffect(c) e4:Desc(1) e4:SetType(EFFECT_TYPE_QUICK_O) e4:SetCode(EVENT_FREE_CHAIN) e4:SetRange(LOCATION_GRAVE) e4:SetHintTiming(0,RELEVANT_TIMINGS) e4:SetCondition(aux.exccon) e4:SetCost(aux.bfgcost) e4:SetOperation(scard.indop) e4:SetCountLimit(1,s_id+100) c:RegisterEffect(e4) end function scard.spcon(e,tp,eg,ep,ev,re,r,rp) if not re then return false end local c=e:GetHandler() local rc=re:GetHandler() return rc and rc:IsMantra() and re:IsActiveType(TYPE_MONSTER) and c:IsReason(REASON_EFFECT|REASON_COST) end function scard.filter(c,e,tp) return c:IsMantra() and c:HasLevel() and c:IsLevelBelow(4) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function scard.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(scard.filter,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE) end function scard.spop(e,tp,eg,ep,ev,re,r,rp) if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(scard.filter),tp,LOCATION_DECK+LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) if #g>0 then Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP) end end function scard.indop(e,tp,eg,ep,ev,re,r,rp) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) e1:SetTarget(scard.tg) e1:SetTargetRange(LOCATION_MZONE,0) e1:SetValue(1) e1:SetReset(RESET_PHASE+PHASE_END) Duel.RegisterEffect(e1,tp) local e2=e1:Clone() e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e2:SetValue(1) Duel.RegisterEffect(e2,tp) Duel.RegisterHint(tp,s_id,PHASE_END,1,s_id,2) end function scard.tg(e,c) return c:IsMantra() end