--created by LeonDuvall, coded by Lyris --Skypiercer ME-410 local s,id,o=GetID() function s.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_ATTACK_ANNOUNCE) e1:SetRange(LOCATION_MZONE) e1:SetCondition(s.actcon) e1:SetOperation(s.actlimit) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_SPSUMMON_PROC) e2:SetRange(LOCATION_HAND) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetCondition(s.spcon) e2:SetOperation(s.spop) c:RegisterEffect(e2) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetCode(EVENT_ATTACK_ANNOUNCE) e3:SetRange(LOCATION_MZONE) e3:SetCategory(CATEGORY_ATKCHANGE) e3:SetCost(s.atkcost) e3:SetTarget(s.atktg) e3:SetOperation(s.atkop) end function s.cfilter(c) return c:IsSetCard(0x3bb) and c:IsDiscardable() end function s.spcon(e, c) if c==nil then return true end local tp=c:GetControler() return Duel.IsExistingMatchingCard(s.cfilter, tp, LOCATION_HAND, 0, 1, c) end function s.spop(e, tp, eg, ep, ev, re, r, rp, c) Duel.DiscardHand(tp, s.cfilter, 1, 1, REASON_DISCARD+REASON_COST, c) end function s.actcon(e) local c=e:GetHandler() return (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) and c:IsStatus(STATUS_SPSUMMON_TURN) end function s.actlimit(e,tp,eg,ep,ev,re,r,rp) local e2=Effect.CreateEffect(e:GetHandler()) e2:SetType(EFFECT_TYPE_FIELD) e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e2:SetCode(EFFECT_CANNOT_ACTIVATE) e2:SetTargetRange(0,1) e2:SetCondition(s.condition) e2:SetReset(RESET_PHASE+PHASE_BATTLE) Duel.RegisterEffect(e2,tp) end function s.condition(e) local ph=Duel.GetCurrentPhase() return ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE end function s.acfilter(c) return c:IsSetCard(0x3bb) and c:IsAbleToRemoveAsCost() end function s.atkcost(e, tp) if chk==0 then return Duel.IsExistingMatchingCard(s.acfilter, tp, LOCATION_GRAVE, 0, 1, nil) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_REMOVE) local g = Duel.SelectMatchingCard(tp, s.acfilter, tp, LOCATION_GRAVE, 0, 1, 1, nil) Duel.Remove(g, POS_FACEUP, REASON_COST) end function s.atktg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() local bc=c:GetBattleTarget() if chk==0 then return bc and bc:IsOnField() and c:IsStatus(STATUS_OPPO_BATTLE) and c:GetFlagEffect(id)==0 end c:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE,0,1) end function s.atkop(e,tp,eg,ep,ev,re,r,rp) local c = e:GetHandler() local tc = c:GetBattleTarget() if c:IsRelateToEffect(e) and c:IsRelateToBattle() and tc:IsRelateToBattle() then local e1 = Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetValue(tc:GetAttack()) e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) c:RegisterEffect(e1) end end