--オベリスクの巨神兵 local m=162147632 local cm=_G["c"..m] function cm.initial_effect(c) --Summoning local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetRange(LOCATION_HAND) e1:SetCondition(cm.spcon) e1:SetOperation(cm.spop) c:RegisterEffect(e1) --Banish Atk local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(m,0)) e2:SetCategory(CATEGORY_REMOVE+CATEGORY_TODECK) e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e2:SetCode(EVENT_BATTLE_DESTROYING) e2:SetCondition(cm.rmcon) e2:SetCountLimit(1) e2:SetTarget(cm.rmtg) e2:SetOperation(cm.rmop) c:RegisterEffect(e2) --inshuffletructible local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_SINGLE) e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) e3:SetValue(cm.val) c:RegisterEffect(e3) end function cm.val(e,c,tp) if Duel.GetTurnPlayer()~=e:GetHandler():GetControler() then local tc = Duel.GetAttacker() return tc:GetAttack()~=tc:GetBaseAttack() else local tc = Duel.GetAttackTarget() return tc:GetAttack()~=tc:GetBaseAttack() end end function cm.rfilter(c,tp) return c:IsControler(tp) end function cm.spcon(e,c) if c==nil then return true end local tp=c:GetControler() local rg=Duel.GetReleaseGroup(tp):Filter(cm.rfilter,nil,tp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local ct=-ft+1 return ft>-3 and rg:GetCount()>2 and (ft>0 or rg:IsExists(cm.mzfilter,ct,nil,tp)) end function cm.spop(e,tp,eg,ep,ev,re,r,rp,c) local rg=Duel.GetReleaseGroup(tp):Filter(cm.rfilter,nil,tp) local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=nil if ft>0 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) g=rg:Select(tp,3,3,nil) elseif ft>-2 then local ct=-ft+1 Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) g=rg:FilterSelect(tp,cm.mzfilter,ct,ct,nil,tp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) local g2=rg:Select(tp,3-ct,3-ct,g) g:Merge(g2) else Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) g=rg:FilterSelect(tp,cm.mzfilter,3,3,nil,tp) end Duel.Release(g,REASON_COST) end function cm.filter(c) return c:IsAbleToRemove() and c:IsType(TYPE_MONSTER) end function cm.rmcon(e,tp,eg,ep,ev,re,r,rp) return aux.bdcon(e,tp,eg,ep,ev,re,r,rp) end function cm.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:GetLocation()==LOCATION_MZONE and chkc:IsAbleToRemove() end if chk==0 then return Duel.IsExistingTarget(Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local g=Duel.SelectTarget(tp,Card.IsAbleToRemove,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil) Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,1,0,0) end function cm.rmop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local tc=Duel.GetFirstTarget() local g=tc:GetColumnGroup():Filter(cm.shufflefilter,1,nil) local shufflc=g:GetCount() if tc:IsRelateToEffect(e) then if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT) and shufflc>0 then --Shuffle Duel.SetOperationInfo(0,CATEGORY_TODECK,g,#g,0,0) Duel.SendtoDeck(g,nil,-1,REASON_COST) --Extra Attack local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_EXTRA_ATTACK) e1:SetValue(shufflc) e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_BATTLE) c:RegisterEffect(e1) --Reduce attack local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE) e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetValue(-1000*shufflc) e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_STANDBY) c:RegisterEffect(e2) end end end function cm.shufflefilter(c,g) return c:IsAbleToDeck() end