--虚毒CELL if not pcall(function() require("expansions/script/c33700701") end) then require("script/c33700701") end local m=33700704 local cm=_G["c"..m] function cm.initial_effect(c) --control local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(m,0)) e2:SetType(EFFECT_TYPE_IGNITION) e2:SetCategory(CATEGORY_CONTROL) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1) e2:SetTarget(cm.ctltg) e2:SetOperation(cm.ctlop) c:RegisterEffect(e2) --indes local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_SINGLE) e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e3:SetRange(LOCATION_MZONE) e3:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) e3:SetValue(1) c:RegisterEffect(e3) local e4=e3:Clone() e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) c:RegisterEffect(e4) --damage reduce local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_SINGLE) e1:SetCode(EVENT_PRE_BATTLE_DAMAGE) e1:SetCondition(cm.rdcon) e1:SetOperation(cm.rdop) c:RegisterEffect(e1) --effect gain local e5=Effect.CreateEffect(c) e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e5:SetCode(EVENT_BE_MATERIAL) e5:SetCondition(cm.efcon) e5:SetOperation(cm.efop) c:RegisterEffect(e5) end function cm.efcon(e,tp,eg,ep,ev,re,r,rp) local rc=e:GetHandler():GetReasonCard() return rc:GetSummonLocation()==LOCATION_EXTRA end function cm.efop(e,tp,eg,ep,ev,re,r,rp) local rc=e:GetHandler():GetReasonCard() local e3=Effect.CreateEffect(e:GetHandler()) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e3:SetCode(EVENT_PHASE+PHASE_END) e3:SetDescription(aux.Stringid(m,1)) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1) e3:SetOperation(cm.ctop) rc:RegisterEffect(e3,true) local e1=e3:Clone() e1:SetCode(EVENT_PHASE+PHASE_STANDBY) rc:RegisterEffect(e1,true) if not rc:IsType(TYPE_EFFECT) then local e2=Effect.CreateEffect(e:GetHandler()) e2:SetType(EFFECT_TYPE_SINGLE) e2:SetCode(EFFECT_ADD_TYPE) e2:SetValue(TYPE_EFFECT) e2:SetReset(RESET_EVENT+RESETS_STANDARD) rc:RegisterEffect(e2,true) end end function cm.ctop(e,tp,eg,ep,ev,re,r,rp) rsve.addcounter(tp,4) end function cm.rdcon(e,tp,eg,ep,ev,re,r,rp) local ct=math.floor(ev/100) return ep==tp and e:GetHandler():IsCanAddCounter(0x144b,ct) end function cm.rdop(e,tp,eg,ep,ev,re,r,rp) local ct=math.floor(ev/100) e:GetHandler():AddCounter(0x144b,ct) Duel.ChangeBattleDamage(ep,ev-ct*100) end function cm.cfilter(c) return c:IsSetCard(0x144b) and c:IsAbleToGrave() end function cm.ctltg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsControlerCanBeChanged() and Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_EXTRA,0,1,nil) end Duel.SetOperationInfo(0,CATEGORY_CONTROL,e:GetHandler(),1,0,0) Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_EXTRA) end function cm.ctlop(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.SelectMatchingCard(tp,cm.cfilter,tp,LOCATION_EXTRA,0,1,1,nil) if g:GetCount()<=0 or Duel.SendtoGrave(g,REASON_EFFECT)<=0 then return end local c=e:GetHandler() if c:IsRelateToEffect(e) and c:IsFaceup() then Duel.GetControl(c,1-tp) end end