name: Disablaster
card_text: Pendulum Scale = 5
  [ Pendulum Effect ]
  Negate any card effects activated in this card's column.
  ----------------------------------------
  [ Monster Effect ]
  If there is a column with no cards, you can Special Summon this card (from your hand) to your zone in that column. You can only Special Summon "Disablaster the Negation Fortress" once per turn this way. Negate any card effects activated in this card's column. If this card in the Monster Zone is destroyed: You can place this card in your Pendulum Zone.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.EnablePendulumAttribute(c)
  	--
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e1:SetCode(EVENT_CHAIN_SOLVING)
  	e1:SetRange(LOCATION_PZONE)
  	e1:SetCondition(s.discon)
  	e1:SetOperation(s.disop)
  	c:RegisterEffect(e1)
  	--
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD)
  	e2:SetCode(EFFECT_SPSUMMON_PROC)
  	e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
  	e2:SetRange(LOCATION_HAND)
  	e2:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
  	e2:SetCondition(s.hspcon)
  	e2:SetValue(s.hspval)
  	c:RegisterEffect(e2)
  	--
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e3:SetCode(EVENT_CHAIN_SOLVING)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCondition(s.discon)
  	e3:SetOperation(s.disop)
  	c:RegisterEffect(e3)
  	--
  	local e4 = Effect.CreateEffect(c)
  	e4:SetDescription(aux.Stringid(id, 0))
  	e4:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e4:SetCode(EVENT_DESTROYED)
  	e4:SetProperty(EFFECT_FLAG_DELAY)
  	e4:SetCondition(s.pencon)
  	e4:SetTarget(s.pentg)
  	e4:SetOperation(s.penop)
  	c:RegisterEffect(e4)
  end
  function s.discon(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local op, loc, seq2 = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_CONTROLER, CHAININFO_TRIGGERING_LOCATION, CHAININFO_TRIGGERING_SEQUENCE)
  	if loc & LOCATION_SZONE ~= 0 and seq2 > 4 then
  		return false
  	end
  	local seq1 = aux.MZoneSequence(c:GetSequence())
  	seq2 = aux.MZoneSequence(seq2)
  	return bit.band(loc, LOCATION_ONFIELD) ~= 0 and (op == 1 - tp and seq1 == 4 - seq2 or op == tp and seq1 == seq2)
  end
  function s.disop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_CARD, 0, id)
  	Duel.NegateEffect(ev)
  end
  function s.hspzone(tp)
  	local zone = 0
  	local lg = Duel.GetFieldGroup(tp, LOCATION_ONFIELD, LOCATION_ONFIELD)
  	for tc in aux.Next(lg) do
  		zone = bit.bor(zone, tc:GetColumnZone(LOCATION_MZONE, tp))
  	end
  	return bit.bnot(zone)
  end
  function s.hspcon(e, c)
  	if c == nil then
  		return true
  	end
  	local tp = c:GetControler()
  	local zone = s.hspzone(tp)
  	return Duel.GetLocationCount(tp, LOCATION_MZONE, tp, LOCATION_REASON_TOFIELD, zone) > 0
  end
  function s.hspval(e, c)
  	local tp = c:GetControler()
  	local zone = s.hspzone(tp)
  	return 0, zone
  end
  function s.pencon(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup()
  end
  function s.pentg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.CheckLocation(tp, LOCATION_PZONE, 0) or Duel.CheckLocation(tp, LOCATION_PZONE, 1)
  	end
  end
  function s.penop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if c:IsRelateToEffect(e) then
  		Duel.MoveToField(c, tp, tp, LOCATION_PZONE, POS_FACEUP, true)
  	end
  end
  
  
source_text: Disablaster
  Pendulum Scale = 5
  [ Pendulum Effect ]
  Negate any card effects activated in this card's column.
  ----------------------------------------
  [ Monster Effect ]
  If there is a column with no cards, you can Special Summon this card (from your hand) to your zone in that column. You can only Special Summon "Disablaster the Negation Fortress" once per turn this way. Negate any card effects activated in this card's column. If this card in the Monster Zone is destroyed: You can place this card in your Pendulum Zone.
target_text: -- Disablaster
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.EnablePendulumAttribute(c)
  	--
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e1:SetCode(EVENT_CHAIN_SOLVING)
  	e1:SetRange(LOCATION_PZONE)
  	e1:SetCondition(s.discon)
  	e1:SetOperation(s.disop)
  	c:RegisterEffect(e1)
  	--
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD)
  	e2:SetCode(EFFECT_SPSUMMON_PROC)
  	e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
  	e2:SetRange(LOCATION_HAND)
  	e2:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
  	e2:SetCondition(s.hspcon)
  	e2:SetValue(s.hspval)
  	c:RegisterEffect(e2)
  	--
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e3:SetCode(EVENT_CHAIN_SOLVING)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCondition(s.discon)
  	e3:SetOperation(s.disop)
  	c:RegisterEffect(e3)
  	--
  	local e4 = Effect.CreateEffect(c)
  	e4:SetDescription(aux.Stringid(id, 0))
  	e4:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e4:SetCode(EVENT_DESTROYED)
  	e4:SetProperty(EFFECT_FLAG_DELAY)
  	e4:SetCondition(s.pencon)
  	e4:SetTarget(s.pentg)
  	e4:SetOperation(s.penop)
  	c:RegisterEffect(e4)
  end
  function s.discon(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local op, loc, seq2 = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_CONTROLER, CHAININFO_TRIGGERING_LOCATION, CHAININFO_TRIGGERING_SEQUENCE)
  	if loc & LOCATION_SZONE ~= 0 and seq2 > 4 then
  		return false
  	end
  	local seq1 = aux.MZoneSequence(c:GetSequence())
  	seq2 = aux.MZoneSequence(seq2)
  	return bit.band(loc, LOCATION_ONFIELD) ~= 0 and (op == 1 - tp and seq1 == 4 - seq2 or op == tp and seq1 == seq2)
  end
  function s.disop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_CARD, 0, id)
  	Duel.NegateEffect(ev)
  end
  function s.hspzone(tp)
  	local zone = 0
  	local lg = Duel.GetFieldGroup(tp, LOCATION_ONFIELD, LOCATION_ONFIELD)
  	for tc in aux.Next(lg) do
  		zone = bit.bor(zone, tc:GetColumnZone(LOCATION_MZONE, tp))
  	end
  	return bit.bnot(zone)
  end
  function s.hspcon(e, c)
  	if c == nil then
  		return true
  	end
  	local tp = c:GetControler()
  	local zone = s.hspzone(tp)
  	return Duel.GetLocationCount(tp, LOCATION_MZONE, tp, LOCATION_REASON_TOFIELD, zone) > 0
  end
  function s.hspval(e, c)
  	local tp = c:GetControler()
  	local zone = s.hspzone(tp)
  	return 0, zone
  end
  function s.pencon(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	return c:IsPreviousLocation(LOCATION_MZONE) and c:IsFaceup()
  end
  function s.pentg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.CheckLocation(tp, LOCATION_PZONE, 0) or Duel.CheckLocation(tp, LOCATION_PZONE, 1)
  	end
  end
  function s.penop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if c:IsRelateToEffect(e) then
  		Duel.MoveToField(c, tp, tp, LOCATION_PZONE, POS_FACEUP, true)
  	end
  end
  
  