name: Protocol
card_text: 2 Cyberse monsters
  Your opponent's monsters cannot target monsters this card points to for attacks. The first time this card would be destroyed by battle each turn, it is not destroyed, and you take no battle damage from that battle.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--link summon
  	c:EnableReviveLimit()
  	aux.AddLinkProcedure(c, aux.FilterBoolFunction(Card.IsLinkRace, RACE_CYBERSE), 2, 2)
  	--cannot be battle target
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetTargetRange(0, LOCATION_MZONE)
  	e1:SetValue(s.bttg)
  	c:RegisterEffect(e1)
  	--battle indes
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
  	e2:SetCountLimit(1)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetValue(s.valcon)
  	c:RegisterEffect(e2)
  	--no damage
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_SINGLE)
  	e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE)
  	e3:SetValue(s.damlimit)
  	c:RegisterEffect(e3)
  end
  function s.bttg(e, c)
  	return e:GetHandler():GetLinkedGroup():IsContains(c)
  end
  function s.valcon(e, re, r, rp)
  	if bit.band(r, REASON_BATTLE) ~= 0 then
  		e:GetHandler():RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1)
  		return true
  	else
  		return false
  	end
  end
  function s.damlimit(e, c)
  	if e:GetHandler():GetFlagEffect(id) == 0 then
  		return 1
  	else
  		return 0
  	end
  end
  
  
source_text: Protocol
  2 Cyberse monsters
  Your opponent's monsters cannot target monsters this card points to for attacks. The first time this card would be destroyed by battle each turn, it is not destroyed, and you take no battle damage from that battle.
target_text: -- Protocol
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--link summon
  	c:EnableReviveLimit()
  	aux.AddLinkProcedure(c, aux.FilterBoolFunction(Card.IsLinkRace, RACE_CYBERSE), 2, 2)
  	--cannot be battle target
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetTargetRange(0, LOCATION_MZONE)
  	e1:SetValue(s.bttg)
  	c:RegisterEffect(e1)
  	--battle indes
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e2:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
  	e2:SetCountLimit(1)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetValue(s.valcon)
  	c:RegisterEffect(e2)
  	--no damage
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_SINGLE)
  	e3:SetCode(EFFECT_AVOID_BATTLE_DAMAGE)
  	e3:SetValue(s.damlimit)
  	c:RegisterEffect(e3)
  end
  function s.bttg(e, c)
  	return e:GetHandler():GetLinkedGroup():IsContains(c)
  end
  function s.valcon(e, re, r, rp)
  	if bit.band(r, REASON_BATTLE) ~= 0 then
  		e:GetHandler():RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1)
  		return true
  	else
  		return false
  	end
  end
  function s.damlimit(e, c)
  	if e:GetHandler():GetFlagEffect(id) == 0 then
  		return 1
  	else
  		return 0
  	end
  end
  
  