name: 暗黒界の登極
card_text: このカード名の12の効果はそれぞれ1ターンに1度しか使用できない。
  1:お互いのメインフェイズに発動できる。
  自分のフィールド・墓地から、悪魔族の融合モンスターカードによって決められた融合素材モンスターを除外し、その融合モンスター1体をEXデッキから融合召喚する。
  「暗黒界」モンスターを融合召喚する場合、手札のモンスターを捨てて融合素材とする事もできる。
  2:このカードが墓地に存在する場合、自分メインフェイズに発動できる。
  このカードを手札に加える。
  その後、手札から「暗黒界」モンスター1体を選んで捨てる。
external_ids: local SETCARD_ID_0 = 0x6 --暗黒界
  
lua: local SETCARD_ID_0 = 0x6 --暗黒界
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--fusion summon
  	local e1 = FusionSpell.CreateSummonEffect(c, {
  		fusfilter = s.fusfilter,
  		pre_select_mat_location = s.pre_select_mat_location,
  		mat_operation_code_map = {
  			{ [LOCATION_REMOVED] = FusionSpell.FUSION_OPERATION_GRAVE },
  			{ [LOCATION_HAND] = FusionSpell.FUSION_OPERATION_DISCARD },
  			{ [0xff] = FusionSpell.FUSION_OPERATION_BANISH },
  		},
  		extra_target = s.extra_target,
  	})
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_REMOVE + CATEGORY_SPECIAL_SUMMON + CATEGORY_FUSION_SUMMON + CATEGORY_HANDES)
  	e1:SetCountLimit(1, id)
  	e1:SetCondition(s.condition)
  	c:RegisterEffect(e1)
  	--to hand
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_TOHAND + CATEGORY_HANDES)
  	e2:SetType(EFFECT_TYPE_IGNITION)
  	e2:SetRange(LOCATION_GRAVE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetTarget(s.thtg)
  	e2:SetOperation(s.thop)
  	c:RegisterEffect(e2)
  end
  
  function s.condition(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetCurrentPhase() & (PHASE_MAIN1 + PHASE_MAIN2) > 0
  end
  
  function s.fusfilter(c)
  	return c:IsRace(RACE_FIEND)
  end
  
  function s.pre_select_mat_location(tc, tp)
  	local location = LOCATION_MZONE | LOCATION_GRAVE
  	if tc:IsSetCard(SETCARD_ID_0) then
  		location = location | LOCATION_HAND
  	end
  	return location
  end
  
  function s.extra_target(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, nil, 1, tp, LOCATION_ONFIELD + LOCATION_GRAVE)
  end
  
  function s.thfilter(c)
  	return c:IsDiscardable() and c:IsType(TYPE_MONSTER) and c:IsSetCard(SETCARD_ID_0)
  end
  
  function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:IsAbleToHand() and Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_HAND, 0, 1, nil)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, c, 1, 0, 0)
  	Duel.SetOperationInfo(0, CATEGORY_HANDES, nil, 0, tp, 1)
  end
  
  function s.thop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if c:IsRelateToEffect(e) and Duel.SendtoHand(c, nil, REASON_EFFECT) > 0 then
  		Duel.ShuffleHand(tp)
  		Duel.BreakEffect()
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_DISCARD)
  		Duel.DiscardHand(tp, s.thfilter, 1, 1, REASON_EFFECT + REASON_DISCARD)
  	end
  end
  
  
source_text: 暗黒界の登極
  このカード名の12の効果はそれぞれ1ターンに1度しか使用できない。
  1:お互いのメインフェイズに発動できる。
  自分のフィールド・墓地から、悪魔族の融合モンスターカードによって決められた融合素材モンスターを除外し、その融合モンスター1体をEXデッキから融合召喚する。
  「暗黒界」モンスターを融合召喚する場合、手札のモンスターを捨てて融合素材とする事もできる。
  2:このカードが墓地に存在する場合、自分メインフェイズに発動できる。
  このカードを手札に加える。
  その後、手札から「暗黒界」モンスター1体を選んで捨てる。
target_text: -- 暗黒界の登極
  local SETCARD_ID_0 = 0x6 --暗黒界
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--fusion summon
  	local e1 = FusionSpell.CreateSummonEffect(c, {
  		fusfilter = s.fusfilter,
  		pre_select_mat_location = s.pre_select_mat_location,
  		mat_operation_code_map = {
  			{ [LOCATION_REMOVED] = FusionSpell.FUSION_OPERATION_GRAVE },
  			{ [LOCATION_HAND] = FusionSpell.FUSION_OPERATION_DISCARD },
  			{ [0xff] = FusionSpell.FUSION_OPERATION_BANISH },
  		},
  		extra_target = s.extra_target,
  	})
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_REMOVE + CATEGORY_SPECIAL_SUMMON + CATEGORY_FUSION_SUMMON + CATEGORY_HANDES)
  	e1:SetCountLimit(1, id)
  	e1:SetCondition(s.condition)
  	c:RegisterEffect(e1)
  	--to hand
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_TOHAND + CATEGORY_HANDES)
  	e2:SetType(EFFECT_TYPE_IGNITION)
  	e2:SetRange(LOCATION_GRAVE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetTarget(s.thtg)
  	e2:SetOperation(s.thop)
  	c:RegisterEffect(e2)
  end
  
  function s.condition(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetCurrentPhase() & (PHASE_MAIN1 + PHASE_MAIN2) > 0
  end
  
  function s.fusfilter(c)
  	return c:IsRace(RACE_FIEND)
  end
  
  function s.pre_select_mat_location(tc, tp)
  	local location = LOCATION_MZONE | LOCATION_GRAVE
  	if tc:IsSetCard(SETCARD_ID_0) then
  		location = location | LOCATION_HAND
  	end
  	return location
  end
  
  function s.extra_target(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, nil, 1, tp, LOCATION_ONFIELD + LOCATION_GRAVE)
  end
  
  function s.thfilter(c)
  	return c:IsDiscardable() and c:IsType(TYPE_MONSTER) and c:IsSetCard(SETCARD_ID_0)
  end
  
  function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:IsAbleToHand() and Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_HAND, 0, 1, nil)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, c, 1, 0, 0)
  	Duel.SetOperationInfo(0, CATEGORY_HANDES, nil, 0, tp, 1)
  end
  
  function s.thop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if c:IsRelateToEffect(e) and Duel.SendtoHand(c, nil, REASON_EFFECT) > 0 then
  		Duel.ShuffleHand(tp)
  		Duel.BreakEffect()
  		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_DISCARD)
  		Duel.DiscardHand(tp, s.thfilter, 1, 1, REASON_EFFECT + REASON_DISCARD)
  	end
  end
  
  