--妖幻战姬 长枪兵 local m=33700760 local cm=_G["c"..m] if not RSTFVal then RSTFVal=RSTFVal or {} tfrsv=RSTFVal function tfrsv.SSLimitEffect(c) --spsummon condition local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCode(EFFECT_SPSUMMON_CONDITION) e1:SetValue(tfrsv.splimit) c:RegisterEffect(e1) end function tfrsv.splimit(e,se,sp,st) return se:GetHandler():IsSetCard(0x344a) end function tfrsv.columntg(e,c) --local g=e:GetHandler():GetColumnGroup(e:GetHandlerPlayer(),1,1) --return g:IsContains(c) and c~=e:GetHandler() and c:GetSequence()<5 return c~=e:GetHandler() and c:GetSequence()<5 and math.abs(e:GetHandler():GetSequence()-c:GetSequence())<=1 end function tfrsv.columntg2(e,c) return tfrsv.columntg(e,c) and c:IsSetCard(0x344a) end function tfrsv.ToGraveEffect(c) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(m,0)) e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetProperty(EFFECT_FLAG_DELAY) e1:SetCode(EVENT_TO_GRAVE) e1:SetCondition(tfrsv.thcon) e1:SetTarget(tfrsv.thtg) e1:SetOperation(tfrsv.thop) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e2:SetCode(EVENT_LEAVE_FIELD_P) e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) e2:SetOperation(tfrsv.lvop) c:RegisterEffect(e2) e1:SetLabelObject(e2) end function tfrsv.lvop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:GetFlagEffect(c:GetOriginalCode())==0 then e:SetLabel(1) else e:SetLabel(0) end end function tfrsv.thcon(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsPreviousLocation(LOCATION_SZONE) and e:GetLabelObject():GetLabel()==0 end function tfrsv.thfilter(c,code) return c:IsSetCard(0x344a) and not c:IsCode(code) and c:IsAbleToHand() end function tfrsv.thtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(tfrsv.thfilter,tp,LOCATION_GRAVE+LOCATION_DECK,0,1,nil,e:GetHandler():GetOriginalCode()) end Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE) end function tfrsv.thop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(tfrsv.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e:GetHandler():GetOriginalCode()) if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) Duel.ShuffleDeck(tp) end end function tfrsv.ActivateEffect(c,operation) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(m,1)) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_HAND) e1:SetTarget(tfrsv.settg) e1:SetOperation(tfrsv.setop) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(m,2)) e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetCountLimit(1) e2:SetRange(LOCATION_SZONE) e2:SetCondition(tfrsv.spcon) e2:SetTarget(tfrsv.sptg) e2:SetOperation(tfrsv.spop) c:RegisterEffect(e2) operation(c) end function tfrsv.settg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetLocationCount(tp,LOCATION_SZONE)>0 end end function tfrsv.setop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) or not c:IsLocation(LOCATION_HAND) or not Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,true) then return end local e1=Effect.CreateEffect(c) e1:SetCode(EFFECT_CHANGE_TYPE) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetReset(RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET) e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) c:RegisterEffect(e1) c:RegisterFlagEffect(c:GetOriginalCode(),RESET_EVENT+RESETS_STANDARD,0,1) end function tfrsv.ccon(e,tp,eg,ep,ev,re,r,rp,chk) return e:GetHandler():GetFlagEffect(e:GetHandler():GetOriginalCode())>0 end function tfrsv.spcon(e,tp,eg,ep,ev,re,r,rp,chk) return e:GetHandler():GetTurnID()~=Duel.GetTurnCount() end function tfrsv.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,true) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) end function tfrsv.spop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsRelateToEffect(e) then return end Duel.SpecialSummon(c,0,tp,tp,false,true,POS_FACEUP) end ------------------- end ------------------- if cm then function cm.initial_effect(c) tfrsv.SSLimitEffect(c) tfrsv.ToGraveEffect(c) tfrsv.ActivateEffect(c,cm.operation) --Atk local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetRange(LOCATION_MZONE) e1:SetTargetRange(LOCATION_MZONE,0) e1:SetTarget(tfrsv.columntg) e1:SetValue(1000) c:RegisterEffect(e1) end function cm.operation(c) --search local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(m,3)) e1:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_PREDRAW) e1:SetRange(LOCATION_SZONE) e1:SetCondition(aux.AND(tfrsv.ccon,cm.thcon)) e1:SetTarget(cm.thtg) e1:SetOperation(cm.thop) c:RegisterEffect(e1) end function cm.thcon(e,tp,eg,ep,ev,re,r,rp) return tp==Duel.GetTurnPlayer() and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>0 and Duel.GetDrawCount(tp)>0 end function cm.thfilter(c) return c:IsSetCard(0x344a) and c:IsAbleToHand() end function cm.thtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(cm.thfilter,tp,LOCATION_DECK,0,1,nil) end local dt=Duel.GetDrawCount(tp) if dt~=0 then _replace_count=0 _replace_max=dt local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCode(EFFECT_DRAW_COUNT) e1:SetTargetRange(1,0) e1:SetReset(RESET_PHASE+PHASE_DRAW) e1:SetValue(0) Duel.RegisterEffect(e1,tp) end Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,0,LOCATION_DECK) end function cm.thop(e,tp,eg,ep,ev,re,r,rp) _replace_count=_replace_count+1 if _replace_count>_replace_max or not e:GetHandler():IsRelateToEffect(e) then return end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) local g=Duel.SelectMatchingCard(tp,cm.thfilter,tp,LOCATION_DECK,0,1,2,nil) if g:GetCount()>0 then Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.ConfirmCards(1-tp,g) end end ------------------- end