name: レプティレス・サーヴァント
card_text: フィールド上にこのカード以外のモンスターが表側表示で存在する場合、このカードを破壊する。
  このカードが魔法・罠カードの効果の対象になった時、このカードを破壊する。
  このカードがフィールド上に表側表示で存在する限り、お互いにモンスターを召喚する事はできない。
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--self destroy
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetCode(EFFECT_SELF_DESTROY)
  	e1:SetCondition(s.sdcon)
  	c:RegisterEffect(e1)
  	--be target
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e2:SetCode(EVENT_BECOME_TARGET)
  	e2:SetOperation(s.desop1)
  	c:RegisterEffect(e2)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCode(EVENT_CHAIN_SOLVED)
  	e3:SetOperation(s.desop2)
  	e3:SetLabelObject(e2)
  	c:RegisterEffect(e3)
  	local e4 = Effect.CreateEffect(c)
  	e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e4:SetRange(LOCATION_MZONE)
  	e4:SetCode(EVENT_BATTLED)
  	e4:SetOperation(s.desop3)
  	e4:SetLabelObject(e2)
  	c:RegisterEffect(e4)
  	--cannot summon
  	local e5 = Effect.CreateEffect(c)
  	e5:SetType(EFFECT_TYPE_FIELD)
  	e5:SetCode(EFFECT_CANNOT_SUMMON)
  	e5:SetRange(LOCATION_MZONE)
  	e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e5:SetTargetRange(1, 1)
  	e5:SetValue(1)
  	c:RegisterEffect(e5)
  end
  function s.sdcon(e)
  	return e:GetHandler():GetOwnerTargetCount() > 0 or Duel.IsExistingMatchingCard(Card.IsFaceup, 0, LOCATION_MZONE, LOCATION_MZONE, 1, e:GetHandler())
  end
  function s.desop1(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if re:GetHandler():IsType(TYPE_SPELL + TYPE_TRAP) and c:IsLocation(LOCATION_MZONE) and c:IsFaceup() then
  		e:SetLabelObject(re)
  		e:SetLabel(0)
  	end
  end
  function s.desop2(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if re == e:GetLabelObject():GetLabelObject() and c:IsRelateToEffect(re) then
  		if Duel.GetCurrentPhase() == PHASE_DAMAGE and not Duel.IsDamageCalculated() then
  			e:GetLabelObject():SetLabel(1)
  		else
  			if not c:IsDisabled() then
  				Duel.Destroy(c, REASON_EFFECT)
  			end
  		end
  	end
  end
  function s.desop3(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local des = e:GetLabelObject():GetLabel()
  	e:GetLabelObject():SetLabel(0)
  	if des == 1 and not c:IsDisabled() then
  		Duel.Destroy(c, REASON_EFFECT)
  	end
  end
  
  
source_text: レプティレス・サーヴァント
  フィールド上にこのカード以外のモンスターが表側表示で存在する場合、このカードを破壊する。
  このカードが魔法・罠カードの効果の対象になった時、このカードを破壊する。
  このカードがフィールド上に表側表示で存在する限り、お互いにモンスターを召喚する事はできない。
target_text: -- レプティレス・サーヴァント
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--self destroy
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetCode(EFFECT_SELF_DESTROY)
  	e1:SetCondition(s.sdcon)
  	c:RegisterEffect(e1)
  	--be target
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e2:SetCode(EVENT_BECOME_TARGET)
  	e2:SetOperation(s.desop1)
  	c:RegisterEffect(e2)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCode(EVENT_CHAIN_SOLVED)
  	e3:SetOperation(s.desop2)
  	e3:SetLabelObject(e2)
  	c:RegisterEffect(e3)
  	local e4 = Effect.CreateEffect(c)
  	e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e4:SetRange(LOCATION_MZONE)
  	e4:SetCode(EVENT_BATTLED)
  	e4:SetOperation(s.desop3)
  	e4:SetLabelObject(e2)
  	c:RegisterEffect(e4)
  	--cannot summon
  	local e5 = Effect.CreateEffect(c)
  	e5:SetType(EFFECT_TYPE_FIELD)
  	e5:SetCode(EFFECT_CANNOT_SUMMON)
  	e5:SetRange(LOCATION_MZONE)
  	e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e5:SetTargetRange(1, 1)
  	e5:SetValue(1)
  	c:RegisterEffect(e5)
  end
  function s.sdcon(e)
  	return e:GetHandler():GetOwnerTargetCount() > 0 or Duel.IsExistingMatchingCard(Card.IsFaceup, 0, LOCATION_MZONE, LOCATION_MZONE, 1, e:GetHandler())
  end
  function s.desop1(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if re:GetHandler():IsType(TYPE_SPELL + TYPE_TRAP) and c:IsLocation(LOCATION_MZONE) and c:IsFaceup() then
  		e:SetLabelObject(re)
  		e:SetLabel(0)
  	end
  end
  function s.desop2(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if re == e:GetLabelObject():GetLabelObject() and c:IsRelateToEffect(re) then
  		if Duel.GetCurrentPhase() == PHASE_DAMAGE and not Duel.IsDamageCalculated() then
  			e:GetLabelObject():SetLabel(1)
  		else
  			if not c:IsDisabled() then
  				Duel.Destroy(c, REASON_EFFECT)
  			end
  		end
  	end
  end
  function s.desop3(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local des = e:GetLabelObject():GetLabel()
  	e:GetLabelObject():SetLabel(0)
  	if des == 1 and not c:IsDisabled() then
  		Duel.Destroy(c, REASON_EFFECT)
  	end
  end
  
  