name: Laval
card_text: If you have 3 or more "Laval" monsters with different names in your Graveyard, you can Special Summon this card (from your hand).
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--special summon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_SPSUMMON_PROC)
  	e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
  	e1:SetRange(LOCATION_HAND)
  	e1:SetCondition(s.spcon)
  	c:RegisterEffect(e1)
  end
  function s.spcon(e, c)
  	if c == nil then
  		return true
  	end
  	if Duel.GetLocationCount(c:GetControler(), LOCATION_MZONE) <= 0 then
  		return false
  	end
  	local g = Duel.GetMatchingGroup(Card.IsSetCard, c:GetControler(), LOCATION_GRAVE, 0, nil, 0x39)
  	local ct = g:GetClassCount(Card.GetCode)
  	return ct >= 3
  end
  
  
source_text: Laval
  If you have 3 or more "Laval" monsters with different names in your Graveyard, you can Special Summon this card (from your hand).
target_text: -- Laval
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--special summon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_SPSUMMON_PROC)
  	e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
  	e1:SetRange(LOCATION_HAND)
  	e1:SetCondition(s.spcon)
  	c:RegisterEffect(e1)
  end
  function s.spcon(e, c)
  	if c == nil then
  		return true
  	end
  	if Duel.GetLocationCount(c:GetControler(), LOCATION_MZONE) <= 0 then
  		return false
  	end
  	local g = Duel.GetMatchingGroup(Card.IsSetCard, c:GetControler(), LOCATION_GRAVE, 0, nil, 0x39)
  	local ct = g:GetClassCount(Card.GetCode)
  	return ct >= 3
  end
  
  