name: Face
card_text: Fusion Summon 1 LIGHT Warrior Fusion Monster from your Extra Deck, using monsters from your hand or field as Fusion Material. If you control "Queen's Knight", "King's Knight", or "Jack's Knight", you can use 1 monster from your Deck as Fusion Material. You can only activate 1 "Face Card Fusion" per turn.
external_ids: local CARD_ID_0 = 64788463 --King's Knight
  local CARD_ID_1 = 90876561 --Jack's Knight
  local CARD_ID_2 = 25652259 --Queen's Knight
  
lua: local CARD_ID_0 = 64788463 --King's Knight
  local CARD_ID_1 = 90876561 --Jack's Knight
  local CARD_ID_2 = 25652259 --Queen's Knight
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.AddCodeList(c, CARD_ID_2, CARD_ID_0, CARD_ID_1)
  	--Activate
  	local e1 = FusionSpell.CreateSummonEffect(c, {
  		fusfilter = s.fusfilter,
  		pre_select_mat_location = s.pre_select_mat_location,
  		additional_fcheck = s.fcheck,
  	})
  	e1:SetCategory(CATEGORY_SPECIAL_SUMMON | CATEGORY_FUSION_SUMMON | CATEGORY_DECKDES)
  	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
  	c:RegisterEffect(e1)
  end
  
  function s.pre_select_mat_location(tc, tp)
  	local location = LOCATION_HAND | LOCATION_MZONE
  	if Duel.IsExistingMatchingCard(function(c)
  		return c:IsCode(CARD_ID_2, CARD_ID_0, CARD_ID_1) and c:IsFaceup()
  	end, tp, LOCATION_ONFIELD, 0, 1, nil) then
  		location = location | LOCATION_DECK
  	end
  	return location
  end
  
  function s.fusfilter(c)
  	return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_WARRIOR)
  end
  
  function s.fcheck(tp, mg, fc, mg_all)
  	--- Can only use 1 monster from deck
  	if mg:FilterCount(function(c)
  		return c:IsLocation(LOCATION_DECK)
  	end, nil) > 1 then
  		return false
  	end
  	return true
  end
  
  
source_text: Face
  Fusion Summon 1 LIGHT Warrior Fusion Monster from your Extra Deck, using monsters from your hand or field as Fusion Material. If you control "Queen's Knight", "King's Knight", or "Jack's Knight", you can use 1 monster from your Deck as Fusion Material. You can only activate 1 "Face Card Fusion" per turn.
target_text: -- Face
  local CARD_ID_0 = 64788463 --King's Knight
  local CARD_ID_1 = 90876561 --Jack's Knight
  local CARD_ID_2 = 25652259 --Queen's Knight
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.AddCodeList(c, CARD_ID_2, CARD_ID_0, CARD_ID_1)
  	--Activate
  	local e1 = FusionSpell.CreateSummonEffect(c, {
  		fusfilter = s.fusfilter,
  		pre_select_mat_location = s.pre_select_mat_location,
  		additional_fcheck = s.fcheck,
  	})
  	e1:SetCategory(CATEGORY_SPECIAL_SUMMON | CATEGORY_FUSION_SUMMON | CATEGORY_DECKDES)
  	e1:SetCountLimit(1, id + EFFECT_COUNT_CODE_OATH)
  	c:RegisterEffect(e1)
  end
  
  function s.pre_select_mat_location(tc, tp)
  	local location = LOCATION_HAND | LOCATION_MZONE
  	if Duel.IsExistingMatchingCard(function(c)
  		return c:IsCode(CARD_ID_2, CARD_ID_0, CARD_ID_1) and c:IsFaceup()
  	end, tp, LOCATION_ONFIELD, 0, 1, nil) then
  		location = location | LOCATION_DECK
  	end
  	return location
  end
  
  function s.fusfilter(c)
  	return c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_WARRIOR)
  end
  
  function s.fcheck(tp, mg, fc, mg_all)
  	--- Can only use 1 monster from deck
  	if mg:FilterCount(function(c)
  		return c:IsLocation(LOCATION_DECK)
  	end, nil) > 1 then
  		return false
  	end
  	return true
  end
  
  