--Sacred Key of Time Rewinding function c249000477.initial_effect(c) --Activate local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_DESTROY) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetProperty(EFFECT_FLAG_CARD_TARGET) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1,249000477+EFFECT_COUNT_CODE_DUEL) e1:SetTarget(c249000477.target) e1:SetOperation(c249000477.activate) c:RegisterEffect(e1) --negate battle damage local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(40640057,0)) e2:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD) e2:SetRange(LOCATION_GRAVE) e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE) e2:SetCountLimit(1,259000002+EFFECT_COUNT_CODE_DUEL) e2:SetCondition(c249000477.damcon1) e2:SetCost(c249000477.damcost) e2:SetOperation(c249000477.damop1) c:RegisterEffect(e2) --effect damage change local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_QUICK_O) e3:SetCode(EVENT_CHAINING) e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e3:SetRange(LOCATION_GRAVE) e3:SetCountLimit(1,259000002+EFFECT_COUNT_CODE_DUEL) e3:SetCondition(c249000477.damcon2) e3:SetCost(c249000477.damcost) e3:SetOperation(c249000477.damop2) c:RegisterEffect(e3) end function c249000477.cfilter(c) return c:IsAbleToDeck() and c:GetTurnID()==Duel.GetTurnCount()-1 end function c249000477.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsOnField() and chkc:IsDestructable() and chkc~=e:GetHandler() end if chk==0 then return Duel.IsExistingTarget(c249000477.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) local g=Duel.SelectTarget(tp,c249000477.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,e:GetHandler()) Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0) end function c249000477.activate(e,tp,eg,ep,ev,re,r,rp) local tc=Duel.GetFirstTarget() if tc:IsRelateToEffect(e) then Duel.SendtoDeck(tc,nil,2,REASON_COST) end end function c249000477.damcon1(e,tp,eg,ep,ev,re,r,rp) return Duel.GetBattleDamage(tp)>=Duel.GetLP(tp) end function c249000477.damcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) end function c249000477.damop1(e,tp,eg,ep,ev,re,r,rp) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) e1:SetOperation(c249000477.damcop) e1:SetReset(RESET_PHASE+PHASE_DAMAGE) Duel.RegisterEffect(e1,tp) Duel.Recover(tp,Duel.GetBattleDamage(tp),REASON_EFFECT) end function c249000477.damcop(e,tp,eg,ep,ev,re,r,rp) Duel.ChangeBattleDamage(tp,0) end function c249000477.damcon2(e,tp,eg,ep,ev,re,r,rp) local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) if ex and (cp==tp or cp==PLAYER_ALL) and cv >= Duel.GetLP(tp) then return true end ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) return ex and (cp==tp or cp==PLAYER_ALL) and Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) and cv >= Duel.GetLP(tp) end function c249000477.damop2(e,tp,eg,ep,ev,re,r,rp) local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) Duel.Recover(tp,cv,REASON_EFFECT) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_CHANGE_DAMAGE) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetTargetRange(1,0) e1:SetLabel(cid) e1:SetValue(c249000477.damccon) e1:SetReset(RESET_CHAIN) Duel.RegisterEffect(e1,tp) end function c249000477.damccon(e,re,val,r,rp,rc) local cc=Duel.GetCurrentChain() if cc==0 or bit.band(r,REASON_EFFECT)==0 then return val end local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) if cid==e:GetLabel() then return 0 else return val end end