Supply
When an Insect monster's effect is activated (Quick Effect): You can Special Summon this card from your hand, then if you activated this effect in response to your opponent's effect activation, negate that effect, also until the end of your next turn after this effect resolves, you cannot Special Summon from the Extra Deck, except Insect monsters. During your Main Phase: You can Fusion Summon 1 Insect Fusion Monster from your Extra Deck, using monsters from your hand or field. You can only use each effect of "Supply Soldier of the Indestructible Insects" once per turn.
local s, id, o = GetID()
function s.initial_effect(c)
	--spsummon
	local e1 = Effect.CreateEffect(c)
	e1:SetDescription(aux.Stringid(id, 0))
	e1:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_DISABLE)
	e1:SetType(EFFECT_TYPE_QUICK_O)
	e1:SetRange(LOCATION_HAND)
	e1:SetCode(EVENT_CHAINING)
	e1:SetCountLimit(1, id)
	e1:SetCondition(s.spcon)
	e1:SetTarget(s.sptg)
	e1:SetOperation(s.spop)
	c:RegisterEffect(e1)
	--fusion summon
	local e2 = FusionSpell.CreateSummonEffect(c, {
		fusfilter = s.fusfilter,
	})
	e2:SetDescription(aux.Stringid(id, 1))
	e2:SetType(EFFECT_TYPE_IGNITION)
	e2:SetRange(LOCATION_MZONE)
	e2:SetCountLimit(1, id + o)
	c:RegisterEffect(e2)
end

function s.spcon(e, tp, eg, ep, ev, re, r, rp)
	local race = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_RACE)
	return re:IsActiveType(TYPE_MONSTER) and race & RACE_INSECT > 0
end

function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and e:GetHandler():IsCanBeSpecialSummoned(e, 0, tp, false, false)
	end
	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, e:GetHandler(), 1, 0, 0)
	if ep ~= tp then
		Duel.SetOperationInfo(0, CATEGORY_DISABLE, eg, 1, 0, 0)
	end
end

function s.spop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	if c:IsRelateToEffect(e) and Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0 and ep ~= tp then
		Duel.NegateEffect(ev)
	end
	local e1 = Effect.CreateEffect(c)
	e1:SetType(EFFECT_TYPE_FIELD)
	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
	e1:SetTargetRange(1, 0)
	e1:SetTarget(s.splimit)
	if Duel.GetTurnPlayer() == tp then
		e1:SetReset(RESET_PHASE + PHASE_END + RESET_SELF_TURN, 2)
	else
		e1:SetReset(RESET_PHASE + PHASE_END + RESET_SELF_TURN)
	end
	Duel.RegisterEffect(e1, tp)
end

function s.splimit(e, c)
	return c:IsLocation(LOCATION_EXTRA) and not c:IsRace(RACE_INSECT)
end

function s.fusfilter(c)
	return c:IsRace(RACE_INSECT)
end


Supply
When an Insect monster's effect is activated (Quick Effect): You can Special Summon this card from your hand, then if you activated this effect in response to your opponent's effect activation, negate that effect, also until the end of your next turn after this effect resolves, you cannot Special Summon from the Extra Deck, except Insect monsters. During your Main Phase: You can Fusion Summon 1 Insect Fusion Monster from your Extra Deck, using monsters from your hand or field. You can only use each effect of "Supply Soldier of the Indestructible Insects" once per turn.
-- Supply
local s, id, o = GetID()
function s.initial_effect(c)
	--spsummon
	local e1 = Effect.CreateEffect(c)
	e1:SetDescription(aux.Stringid(id, 0))
	e1:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_DISABLE)
	e1:SetType(EFFECT_TYPE_QUICK_O)
	e1:SetRange(LOCATION_HAND)
	e1:SetCode(EVENT_CHAINING)
	e1:SetCountLimit(1, id)
	e1:SetCondition(s.spcon)
	e1:SetTarget(s.sptg)
	e1:SetOperation(s.spop)
	c:RegisterEffect(e1)
	--fusion summon
	local e2 = FusionSpell.CreateSummonEffect(c, {
		fusfilter = s.fusfilter,
	})
	e2:SetDescription(aux.Stringid(id, 1))
	e2:SetType(EFFECT_TYPE_IGNITION)
	e2:SetRange(LOCATION_MZONE)
	e2:SetCountLimit(1, id + o)
	c:RegisterEffect(e2)
end

function s.spcon(e, tp, eg, ep, ev, re, r, rp)
	local race = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_RACE)
	return re:IsActiveType(TYPE_MONSTER) and race & RACE_INSECT > 0
end

function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and e:GetHandler():IsCanBeSpecialSummoned(e, 0, tp, false, false)
	end
	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, e:GetHandler(), 1, 0, 0)
	if ep ~= tp then
		Duel.SetOperationInfo(0, CATEGORY_DISABLE, eg, 1, 0, 0)
	end
end

function s.spop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	if c:IsRelateToEffect(e) and Duel.SpecialSummon(c, 0, tp, tp, false, false, POS_FACEUP) ~= 0 and ep ~= tp then
		Duel.NegateEffect(ev)
	end
	local e1 = Effect.CreateEffect(c)
	e1:SetType(EFFECT_TYPE_FIELD)
	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
	e1:SetTargetRange(1, 0)
	e1:SetTarget(s.splimit)
	if Duel.GetTurnPlayer() == tp then
		e1:SetReset(RESET_PHASE + PHASE_END + RESET_SELF_TURN, 2)
	else
		e1:SetReset(RESET_PHASE + PHASE_END + RESET_SELF_TURN)
	end
	Duel.RegisterEffect(e1, tp)
end

function s.splimit(e, c)
	return c:IsLocation(LOCATION_EXTRA) and not c:IsRace(RACE_INSECT)
end

function s.fusfilter(c)
	return c:IsRace(RACE_INSECT)
end

