name: Spiders'
card_text: Once per turn, you can select 1 face-up Insect-Type monster you control. While this card remains on the field, any opponent's monster that battles with one of those monsters is changed to Defense Position at the end of the Battle Phase, and cannot change its battle position while this card is on the field.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	c:RegisterEffect(e1)
  	--target
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 0))
  	e2:SetType(EFFECT_TYPE_IGNITION)
  	e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e2:SetRange(LOCATION_SZONE)
  	e2:SetCountLimit(1)
  	e2:SetTarget(s.target)
  	e2:SetOperation(s.operation)
  	c:RegisterEffect(e2)
  	--
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e3:SetRange(LOCATION_SZONE)
  	e3:SetCode(EVENT_BATTLED)
  	e3:SetOperation(s.regop)
  	c:RegisterEffect(e3)
  	local e4 = Effect.CreateEffect(c)
  	e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e4:SetRange(LOCATION_SZONE)
  	e4:SetCode(EVENT_PHASE + PHASE_BATTLE)
  	e4:SetCountLimit(1)
  	e4:SetOperation(s.posop)
  	c:RegisterEffect(e4)
  	--poschange
  	local e5 = Effect.CreateEffect(c)
  	e5:SetType(EFFECT_TYPE_FIELD)
  	e5:SetRange(LOCATION_SZONE)
  	e5:SetCode(EFFECT_CANNOT_CHANGE_POSITION)
  	e5:SetTargetRange(0, LOCATION_MZONE)
  	e5:SetTarget(s.postg)
  	c:RegisterEffect(e5)
  end
  function s.filter(c, ec)
  	return c:IsFaceup() and not ec:IsHasCardTarget(c) and c:IsRace(RACE_INSECT)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and s.filter(chkc, e:GetHandler())
  	end
  	if chk == 0 then
  		return Duel.IsExistingTarget(s.filter, tp, LOCATION_MZONE, 0, 1, nil, e:GetHandler())
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	Duel.SelectTarget(tp, s.filter, tp, LOCATION_MZONE, 0, 1, 1, nil, e:GetHandler())
  end
  function s.operation(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) or tc:IsFacedown() then
  		return
  	end
  	c:SetCardTarget(tc)
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	local a = Duel.GetAttacker()
  	local d = Duel.GetAttackTarget()
  	if d and d:IsControler(1 - tp) and e:GetHandler():IsHasCardTarget(a) then
  		d:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1)
  	elseif d and a:IsControler(1 - tp) and e:GetHandler():IsHasCardTarget(d) then
  		a:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1)
  	end
  end
  function s.pfilter(c)
  	return c:GetFlagEffect(id) ~= 0 and c:IsAttackPos()
  end
  function s.posop(e, tp, eg, ep, ev, re, r, rp)
  	local g = Duel.GetMatchingGroup(s.pfilter, tp, 0, LOCATION_MZONE, nil)
  	Duel.ChangePosition(g, POS_FACEUP_DEFENSE)
  	local tc = g:GetFirst()
  	while tc do
  		tc:RegisterFlagEffect(26640672, RESET_EVENT + RESETS_STANDARD, 0, 1)
  		tc = g:GetNext()
  	end
  end
  function s.postg(e, c)
  	return c:GetFlagEffect(26640672) ~= 0
  end
  
  
source_text: Spiders'
  Once per turn, you can select 1 face-up Insect-Type monster you control. While this card remains on the field, any opponent's monster that battles with one of those monsters is changed to Defense Position at the end of the Battle Phase, and cannot change its battle position while this card is on the field.
target_text: -- Spiders'
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--Activate
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_ACTIVATE)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	c:RegisterEffect(e1)
  	--target
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 0))
  	e2:SetType(EFFECT_TYPE_IGNITION)
  	e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e2:SetRange(LOCATION_SZONE)
  	e2:SetCountLimit(1)
  	e2:SetTarget(s.target)
  	e2:SetOperation(s.operation)
  	c:RegisterEffect(e2)
  	--
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e3:SetRange(LOCATION_SZONE)
  	e3:SetCode(EVENT_BATTLED)
  	e3:SetOperation(s.regop)
  	c:RegisterEffect(e3)
  	local e4 = Effect.CreateEffect(c)
  	e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e4:SetRange(LOCATION_SZONE)
  	e4:SetCode(EVENT_PHASE + PHASE_BATTLE)
  	e4:SetCountLimit(1)
  	e4:SetOperation(s.posop)
  	c:RegisterEffect(e4)
  	--poschange
  	local e5 = Effect.CreateEffect(c)
  	e5:SetType(EFFECT_TYPE_FIELD)
  	e5:SetRange(LOCATION_SZONE)
  	e5:SetCode(EFFECT_CANNOT_CHANGE_POSITION)
  	e5:SetTargetRange(0, LOCATION_MZONE)
  	e5:SetTarget(s.postg)
  	c:RegisterEffect(e5)
  end
  function s.filter(c, ec)
  	return c:IsFaceup() and not ec:IsHasCardTarget(c) and c:IsRace(RACE_INSECT)
  end
  function s.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and s.filter(chkc, e:GetHandler())
  	end
  	if chk == 0 then
  		return Duel.IsExistingTarget(s.filter, tp, LOCATION_MZONE, 0, 1, nil, e:GetHandler())
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	Duel.SelectTarget(tp, s.filter, tp, LOCATION_MZONE, 0, 1, 1, nil, e:GetHandler())
  end
  function s.operation(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local tc = Duel.GetFirstTarget()
  	if not c:IsRelateToEffect(e) or not tc:IsRelateToEffect(e) or tc:IsFacedown() then
  		return
  	end
  	c:SetCardTarget(tc)
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	local a = Duel.GetAttacker()
  	local d = Duel.GetAttackTarget()
  	if d and d:IsControler(1 - tp) and e:GetHandler():IsHasCardTarget(a) then
  		d:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1)
  	elseif d and a:IsControler(1 - tp) and e:GetHandler():IsHasCardTarget(d) then
  		a:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1)
  	end
  end
  function s.pfilter(c)
  	return c:GetFlagEffect(id) ~= 0 and c:IsAttackPos()
  end
  function s.posop(e, tp, eg, ep, ev, re, r, rp)
  	local g = Duel.GetMatchingGroup(s.pfilter, tp, 0, LOCATION_MZONE, nil)
  	Duel.ChangePosition(g, POS_FACEUP_DEFENSE)
  	local tc = g:GetFirst()
  	while tc do
  		tc:RegisterFlagEffect(26640672, RESET_EVENT + RESETS_STANDARD, 0, 1)
  		tc = g:GetNext()
  	end
  end
  function s.postg(e, c)
  	return c:GetFlagEffect(26640672) ~= 0
  end
  
  