name: Yoko-Zuna
card_text: Pendulum Scale = 1
  [ Pendulum Effect ]
  If a monster(s) is Pendulum Summoned: Return this card from the Pendulum Zone to the hand.
  ----------------------------------------
  [ Monster Effect ]
  When this card is Normal Summoned: You can send to the GY all monsters your opponent controls in the same column as the card(s) in your Pendulum Zones. Once per turn, during the End Phase, if this card was Normal Summoned or flipped face-up this turn: Return this card to the hand.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--pendulum summon
  	aux.EnablePendulumAttribute(c)
  	--spirit return
  	aux.EnableSpiritReturn(c, EVENT_SUMMON_SUCCESS, EVENT_FLIP)
  	--to hand
  	local e1 = Effect.CreateEffect(c)
  	e1:SetCategory(CATEGORY_TOHAND)
  	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_F)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetRange(LOCATION_PZONE)
  	e1:SetCondition(s.thcon)
  	e1:SetTarget(s.thtg)
  	e1:SetOperation(s.thop)
  	c:RegisterEffect(e1)
  	--gy
  	local e2 = Effect.CreateEffect(c)
  	e2:SetCategory(CATEGORY_TOGRAVE)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_SUMMON_SUCCESS)
  	e2:SetTarget(s.gytg)
  	e2:SetOperation(s.gyop)
  	c:RegisterEffect(e2)
  end
  function s.thcon(e, tp, eg, ep, ev, re, r, rp)
  	return eg:IsExists(Card.IsSummonType, 1, nil, SUMMON_TYPE_PENDULUM)
  end
  function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, e:GetHandler(), 1, 0, 0)
  end
  function s.thop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToEffect(e) then
  		return
  	end
  	Duel.SendtoHand(c, nil, REASON_EFFECT)
  end
  function s.tgfilter(c, tp)
  	return Duel.IsExistingMatchingCard(s.gyfilter, tp, 0, LOCATION_MZONE, 1, nil, c:GetColumnGroup())
  end
  function s.gyfilter(c, g)
  	return g:IsContains(c)
  end
  function s.gytg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.IsExistingMatchingCard(s.tgfilter, tp, LOCATION_PZONE, 0, 1, nil, tp)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOGRAVE, nil, 0, 1 - tp, LOCATION_MZONE)
  end
  function s.gyop(e, tp, eg, ep, ev, re, r, rp)
  	local pg = Duel.GetMatchingGroup(s.tgfilter, tp, LOCATION_PZONE, 0, nil, tp)
  	if pg:GetCount() == 0 then
  		return
  	end
  	local g = Group.CreateGroup()
  	for pc in aux.Next(pg) do
  		g:Merge(Duel.GetMatchingGroup(s.gyfilter, tp, 0, LOCATION_MZONE, nil, pc:GetColumnGroup()))
  	end
  	Duel.SendtoGrave(g, REASON_EFFECT)
  end
  
  
source_text: Yoko-Zuna
  Pendulum Scale = 1
  [ Pendulum Effect ]
  If a monster(s) is Pendulum Summoned: Return this card from the Pendulum Zone to the hand.
  ----------------------------------------
  [ Monster Effect ]
  When this card is Normal Summoned: You can send to the GY all monsters your opponent controls in the same column as the card(s) in your Pendulum Zones. Once per turn, during the End Phase, if this card was Normal Summoned or flipped face-up this turn: Return this card to the hand.
target_text: -- Yoko-Zuna
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--pendulum summon
  	aux.EnablePendulumAttribute(c)
  	--spirit return
  	aux.EnableSpiritReturn(c, EVENT_SUMMON_SUCCESS, EVENT_FLIP)
  	--to hand
  	local e1 = Effect.CreateEffect(c)
  	e1:SetCategory(CATEGORY_TOHAND)
  	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_F)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetRange(LOCATION_PZONE)
  	e1:SetCondition(s.thcon)
  	e1:SetTarget(s.thtg)
  	e1:SetOperation(s.thop)
  	c:RegisterEffect(e1)
  	--gy
  	local e2 = Effect.CreateEffect(c)
  	e2:SetCategory(CATEGORY_TOGRAVE)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_SUMMON_SUCCESS)
  	e2:SetTarget(s.gytg)
  	e2:SetOperation(s.gyop)
  	c:RegisterEffect(e2)
  end
  function s.thcon(e, tp, eg, ep, ev, re, r, rp)
  	return eg:IsExists(Card.IsSummonType, 1, nil, SUMMON_TYPE_PENDULUM)
  end
  function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, e:GetHandler(), 1, 0, 0)
  end
  function s.thop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToEffect(e) then
  		return
  	end
  	Duel.SendtoHand(c, nil, REASON_EFFECT)
  end
  function s.tgfilter(c, tp)
  	return Duel.IsExistingMatchingCard(s.gyfilter, tp, 0, LOCATION_MZONE, 1, nil, c:GetColumnGroup())
  end
  function s.gyfilter(c, g)
  	return g:IsContains(c)
  end
  function s.gytg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.IsExistingMatchingCard(s.tgfilter, tp, LOCATION_PZONE, 0, 1, nil, tp)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOGRAVE, nil, 0, 1 - tp, LOCATION_MZONE)
  end
  function s.gyop(e, tp, eg, ep, ev, re, r, rp)
  	local pg = Duel.GetMatchingGroup(s.tgfilter, tp, LOCATION_PZONE, 0, nil, tp)
  	if pg:GetCount() == 0 then
  		return
  	end
  	local g = Group.CreateGroup()
  	for pc in aux.Next(pg) do
  		g:Merge(Duel.GetMatchingGroup(s.gyfilter, tp, 0, LOCATION_MZONE, nil, pc:GetColumnGroup()))
  	end
  	Duel.SendtoGrave(g, REASON_EFFECT)
  end
  
  