name: Muddy
card_text: 1 Tuner + 1+ non-Tuner monsters
  This card can be used as a substitute for any 1 Fusion Material whose name is specifically listed on the Fusion Monster Card, but the other Fusion Material(s) must be correct. During your Main Phase, if you control this Synchro Summoned card: You can Fusion Summon 1 Fusion Monster from your Extra Deck, using monsters you control as Fusion Material, including this card. You can only use this effect of "Muddy Mudragon" once per turn.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--synchro summon
  	aux.AddSynchroProcedure(c, nil, aux.NonTuner(nil), 1)
  	c:EnableReviveLimit()
  	--fusion (s)
  	local e1 = FusionSpell.CreateSummonEffect(c, {
  		pre_select_mat_location = LOCATION_MZONE,
  		gc = s.gc,
  	})
  	e1:SetType(EFFECT_TYPE_IGNITION)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetCountLimit(1, id)
  	e1:SetCondition(s.spcon)
  	c:RegisterEffect(e1)
  	--fusion substitute
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetCode(EFFECT_FUSION_SUBSTITUTE)
  	e2:SetCondition(s.subcon)
  	c:RegisterEffect(e2)
  end
  
  function s.subcon(e)
  	return e:GetHandler():IsLocation(LOCATION_HAND + LOCATION_MZONE + LOCATION_GRAVE)
  end
  
  function s.spcon(e)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_SYNCHRO)
  end
  
  function s.gc(e)
  	return e:GetHandler()
  end
  
  
source_text: Muddy
  1 Tuner + 1+ non-Tuner monsters
  This card can be used as a substitute for any 1 Fusion Material whose name is specifically listed on the Fusion Monster Card, but the other Fusion Material(s) must be correct. During your Main Phase, if you control this Synchro Summoned card: You can Fusion Summon 1 Fusion Monster from your Extra Deck, using monsters you control as Fusion Material, including this card. You can only use this effect of "Muddy Mudragon" once per turn.
target_text: -- Muddy
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--synchro summon
  	aux.AddSynchroProcedure(c, nil, aux.NonTuner(nil), 1)
  	c:EnableReviveLimit()
  	--fusion (s)
  	local e1 = FusionSpell.CreateSummonEffect(c, {
  		pre_select_mat_location = LOCATION_MZONE,
  		gc = s.gc,
  	})
  	e1:SetType(EFFECT_TYPE_IGNITION)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetCountLimit(1, id)
  	e1:SetCondition(s.spcon)
  	c:RegisterEffect(e1)
  	--fusion substitute
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetCode(EFFECT_FUSION_SUBSTITUTE)
  	e2:SetCondition(s.subcon)
  	c:RegisterEffect(e2)
  end
  
  function s.subcon(e)
  	return e:GetHandler():IsLocation(LOCATION_HAND + LOCATION_MZONE + LOCATION_GRAVE)
  end
  
  function s.spcon(e)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_SYNCHRO)
  end
  
  function s.gc(e)
  	return e:GetHandler()
  end
  
  