--Magick Unyeilding xpcall(function() require("expansions/script/c28916110") end,function() require("script/c28916110") end) local id,ref=HighTyper.getID() function ref.initial_effect(c) local magick=Effect.CreateEffect(c) magick:SetDescription(aux.Stringid(id,0)) magick:SetCategory(CATEGORY_DRAW) magick:SetType(EFFECT_TYPE_TRIGGER_O) magick:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_PLAYER_TARGET) magick:SetTarget(ref.drtg) magick:SetOperation(ref.drop) aux.AddMagickProcCustom(c,ref.magcon,aux.MagickLPCost(800),magick) local e0=Effect.CreateEffect(c) e0:SetType(EFFECT_TYPE_ACTIVATE) e0:SetCode(EVENT_FREE_CHAIN) e0:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_END_PHASE) c:RegisterEffect(e0) --Grant "Castback" local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(id,1)) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE) e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_END_PHASE) e1:SetTarget(ref.grtg) e1:SetOperation(ref.grop) c:RegisterEffect(e1) local e2=e1:Clone() e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetRange(LOCATION_SZONE) c:RegisterEffect(e2) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e3:SetCode(EVENT_TO_GRAVE) e3:SetProperty(EFFECT_FLAG_DELAY) e3:SetCountLimit(1,id) e3:SetCondition(ref.fldcon) e3:SetTarget(ref.fldtg) e3:SetOperation(ref.fldop) c:RegisterEffect(e3) end function ref.magcon(e,tp,eg,ep,ev,re,r,rp) local te=Duel.GetChainInfo(ev-1,CHAININFO_TRIGGERING_EFFECT) if not te then return false end local tc=te:GetHandler() return true --tc and tc:IsType(TYPE_MONSTER) and not tc:IsType(re:GetHandler()) end function ref.drtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end Duel.SetTargetPlayer(tp) Duel.SetTargetParam(1) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,1,tp,0) end function ref.drop(e,tp,eg,ep,ev,re,r,rp) local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) Duel.Draw(p,d,REASON_EFFECT) end --Grant function ref.grfilter(c) return c:IsType(TYPE_MAGICK) end function ref.grtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and ref.grfilter(chkc) end if chk==0 then return Duel.IsExistingTarget(ref.grfilter,tp,LOCATION_GRAVE,0,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD) Duel.SelectTarget(tp,ref.grfilter,tp,LOCATION_GRAVE,0,1,1,nil) end function ref.grop(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if tc and tc:IsRelateToEffect(e) then local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_ADDITIONAL_MAGICK_LOCATION) e1:SetRange(LOCATION_GRAVE) e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) tc:RegisterEffect(e1) end end --REturn function ref.fldcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsReason(REASON_MATERIAL+REASON_MAGICK) end function ref.fldtg(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 and c:GetActivateEffect():IsActivatable(tp) end Duel.SetOperationInfo(0,CATEGORY_LEAVE_GRAVE,c,1,tp,LOCATION_GRAVE) end function ref.fldop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsRelateToEffect(e) then Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) end end