--Rana Testacalda Bugiarda --Scripted by: XGlitchy30 local s,id=GetID() function s.initial_effect(c) c:EnableReviveLimit() c:MustBeSSedByOwnProcedure() --special summon local e1=Effect.CreateEffect(c) e1:Desc(0) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetRange(LOCATION_HAND) e1:SetCondition(s.spcon) c:RegisterEffect(e1) --effect local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_SINGLE) e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e3:SetCode(EFFECT_SET_ATTACK) e3:SetRange(LOCATION_MZONE) e3:SetValue(s.val) c:RegisterEffect(e3) --attack c:CanAttackDirectly() c:MustAttack(nil,nil,s.atcon) --prevent act local e5=Effect.CreateEffect(c) e5:SetDescription(aux.Stringid(id,1)) e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e5:SetCode(EVENT_BATTLE_DAMAGE) e5:SetCondition(s.descon) e5:SetOperation(s.desop) c:RegisterEffect(e5) --negate attack local e6=Effect.CreateEffect(c) e6:SetDescription(aux.Stringid(id,3)) e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e6:SetCode(EVENT_ATTACK_ANNOUNCE) e6:SetCondition(s.negcon) e6:SetOperation(s.negattack) c:RegisterEffect(e6) --destroy local e7=Effect.CreateEffect(c) e7:Desc(5) e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e7:SetCategory(CATEGORY_DESTROY+CATEGORY_SPECIAL_SUMMON) e7:SetCode(EVENT_ATTACK_DISABLED) e7:SetRange(LOCATION_MZONE) e7:SetCondition(s.condition) e7:SetTarget(s.target) e7:SetOperation(s.activate) c:RegisterEffect(e7) end function s.cf(c) return (c:IsFaceup() or c:IsInGY()) and c:IsMonster() and c:IsSetCard(0x12) end function s.spcon(e,c) if c==nil then return true end local tp=c:GetControler() local rg=Duel.GetMatchingGroupCount(s.cf,tp,LOCATION_MZONE,0,nil) local gy=Duel.GetMatchingGroup(s.cf,tp,LOCATION_GRAVE,0,nil):GetClassCount(Card.GetCode) return rg>=3 and gy>=2 end function s.val(e,c) return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_ONFIELD,LOCATION_ONFIELD)*400 end function s.atcon(e) return e:GetHandler():IsStatus(STATUS_SPSUMMON_TURN) end function s.descon(e,tp,eg,ep,ev,re,r,rp) return ep~=tp and Duel.GetAttackTarget()==nil end function s.desop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_CARD,tp,id) local e1=Effect.CreateEffect(e:GetHandler()) e1:Desc(2) e1:SetType(EFFECT_TYPE_FIELD) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCode(EFFECT_CANNOT_ACTIVATE) e1:SetTargetRange(0,1) e1:SetValue(1) e1:SetReset(RESET_PHASE+PHASE_END) Duel.RegisterEffect(e1,tp) Duel.RegisterFlagEffect(1-tp,id,RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,0,aux.Stringid(id,2)) end function s.negcon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetAttackTarget()==nil end function s.negattack(e,tp) if not Duel.IsExistingMatchingCard(Card.IsDiscardable,1-tp,LOCATION_HAND,0,2,nil) or not Duel.SelectYesNo(1-tp,aux.Stringid(id,4)) then return end Duel.Hint(HINT_CARD,tp,id) if Duel.DiscardHand(1-tp,Card.IsDiscardable,2,2,REASON_EFFECT+REASON_DISCARD,nil)>=2 then Duel.NegateAttack() end end function s.condition(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler()==Duel.GetAttacker() and Duel.GetAttackTarget()==nil end function s.spf(c,e,tp) return c:IsCode(10456559) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function s.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_DECK) end function s.activate(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c and c:IsRelateToEffect(e) and Duel.Destroy(c,REASON_EFFECT)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.IsExistingMatchingCard(s.spf,tp,LOCATION_HAND+LOCATION_DECK,0,1,nil,e,tp) then local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if Duel.IsPlayerAffectedByEffect(tp,CARD_BLUEEYES_SPIRIT) then ft=1 end if ft>2 then ft=2 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local g=Duel.SelectMatchingCard(tp,s.spf,tp,LOCATION_HAND+LOCATION_DECK,0,1,ft,nil,e,tp) if #g~=0 and Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)>0 and Duel.IsBattlePhase() then Duel.BreakEffect() Duel.SkipPhase(Duel.GetTurnPlayer(),PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE_STEP,1) end end end