Kuro-Obi
Pendulum Scale = 9
[ 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 Spells/Traps 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.
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_ONFIELD, 1, nil, c:GetColumnGroup())
end
function s.gyfilter(c, g)
	return c:IsType(TYPE_SPELL + TYPE_TRAP) and 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_ONFIELD)
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_ONFIELD, nil, pc:GetColumnGroup()))
	end
	Duel.SendtoGrave(g, REASON_EFFECT)
end


Kuro-Obi
Pendulum Scale = 9
[ 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 Spells/Traps 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.
-- Kuro-Obi
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_ONFIELD, 1, nil, c:GetColumnGroup())
end
function s.gyfilter(c, g)
	return c:IsType(TYPE_SPELL + TYPE_TRAP) and 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_ONFIELD)
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_ONFIELD, nil, pc:GetColumnGroup()))
	end
	Duel.SendtoGrave(g, REASON_EFFECT)
end

