name: 魔界の警邏課デスポリス
card_text: モンスター2体
  1:カード名が異なる闇属性モンスター2体を素材としてリンク召喚したこのカードは以下の効果を得る。
  ●自分フィールドのモンスター1体をリリースし、フィールドの表側表示のカード1枚を対象として発動できる。
  そのカードに警邏カウンターを1つ置く。
  このカード名のこの効果は1ターンに1度しか使用できない。
  警邏カウンターが置かれたカードが戦闘・効果で破壊される場合、代わりにそのカードの警邏カウンターを1つ取り除く。
external_ids: local COUNTER_ID_0 = 0x1049 --警邏カウンター
  
lua: local COUNTER_ID_0 = 0x1049 --警邏カウンター
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--link summon
  	c:EnableReviveLimit()
  	aux.AddLinkProcedure(c, nil, 2, 2)
  	--counter
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetCondition(s.regcon)
  	e1:SetOperation(s.regop)
  	c:RegisterEffect(e1)
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetCode(EFFECT_MATERIAL_CHECK)
  	e2:SetValue(s.valcheck)
  	e2:SetLabelObject(e1)
  	c:RegisterEffect(e2)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 0))
  	e3:SetCategory(CATEGORY_COUNTER)
  	e3:SetType(EFFECT_TYPE_IGNITION)
  	e3:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCountLimit(1, id)
  	e3:SetCondition(s.ctcon)
  	e3:SetCost(s.ctcost)
  	e3:SetTarget(s.cttg)
  	e3:SetOperation(s.ctop)
  	c:RegisterEffect(e3)
  end
  function s.regcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_LINK) and e:GetLabel() == 1
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	c:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD, 0, 0)
  	c:RegisterFlagEffect(0, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 0, aux.Stringid(id, 1))
  end
  function s.valcheck(e, c)
  	local g = c:GetMaterial()
  	if g:GetClassCount(Card.GetLinkCode) == g:GetCount() and g:IsExists(Card.IsLinkAttribute, 2, nil, ATTRIBUTE_DARK) then
  		e:GetLabelObject():SetLabel(1)
  	else
  		e:GetLabelObject():SetLabel(0)
  	end
  end
  function s.ctcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():GetFlagEffect(id) ~= 0
  end
  function s.cfilter(c)
  	return Duel.IsExistingTarget(Card.IsCanAddCounter, 0, LOCATION_ONFIELD, LOCATION_ONFIELD, 1, c, 0x1049, 1)
  end
  function s.ctcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.CheckReleaseGroup(tp, s.cfilter, 1, nil)
  	end
  	local g = Duel.SelectReleaseGroup(tp, s.cfilter, 1, 1, nil)
  	Duel.Release(g, REASON_COST)
  end
  function s.cttg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsOnField() and chkc:IsCanAddCounter(COUNTER_ID_0, 1)
  	end
  	if chk == 0 then
  		return true
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_FACEUP)
  	Duel.SelectTarget(tp, Card.IsCanAddCounter, tp, LOCATION_ONFIELD, LOCATION_ONFIELD, 1, 1, nil, 0x1049, 1)
  end
  function s.ctop(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	if tc:IsFaceup() and tc:IsRelateToEffect(e) then
  		tc:AddCounter(COUNTER_ID_0, 1)
  		if tc:GetFlagEffect(99011764) ~= 0 then
  			return
  		end
  		local e1 = Effect.CreateEffect(e:GetHandler())
  		e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  		e1:SetCode(EFFECT_DESTROY_REPLACE)
  		e1:SetTarget(s.reptg)
  		e1:SetOperation(s.repop)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		tc:RegisterEffect(e1)
  		tc:RegisterFlagEffect(99011764, RESET_EVENT + RESETS_STANDARD, 0, 0)
  	end
  end
  function s.reptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:IsReason(REASON_BATTLE + REASON_EFFECT) and not c:IsReason(REASON_REPLACE) and c:IsCanRemoveCounter(tp, COUNTER_ID_0, 1, REASON_EFFECT)
  	end
  	return true
  end
  function s.repop(e, tp, eg, ep, ev, re, r, rp)
  	e:GetHandler():RemoveCounter(tp, COUNTER_ID_0, 1, REASON_EFFECT)
  end
  
  
source_text: 魔界の警邏課デスポリス
  モンスター2体
  1:カード名が異なる闇属性モンスター2体を素材としてリンク召喚したこのカードは以下の効果を得る。
  ●自分フィールドのモンスター1体をリリースし、フィールドの表側表示のカード1枚を対象として発動できる。
  そのカードに警邏カウンターを1つ置く。
  このカード名のこの効果は1ターンに1度しか使用できない。
  警邏カウンターが置かれたカードが戦闘・効果で破壊される場合、代わりにそのカードの警邏カウンターを1つ取り除く。
target_text: -- 魔界の警邏課デスポリス
  local COUNTER_ID_0 = 0x1049 --警邏カウンター
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--link summon
  	c:EnableReviveLimit()
  	aux.AddLinkProcedure(c, nil, 2, 2)
  	--counter
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetCondition(s.regcon)
  	e1:SetOperation(s.regop)
  	c:RegisterEffect(e1)
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_SINGLE)
  	e2:SetCode(EFFECT_MATERIAL_CHECK)
  	e2:SetValue(s.valcheck)
  	e2:SetLabelObject(e1)
  	c:RegisterEffect(e2)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 0))
  	e3:SetCategory(CATEGORY_COUNTER)
  	e3:SetType(EFFECT_TYPE_IGNITION)
  	e3:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCountLimit(1, id)
  	e3:SetCondition(s.ctcon)
  	e3:SetCost(s.ctcost)
  	e3:SetTarget(s.cttg)
  	e3:SetOperation(s.ctop)
  	c:RegisterEffect(e3)
  end
  function s.regcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():IsSummonType(SUMMON_TYPE_LINK) and e:GetLabel() == 1
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	c:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD, 0, 0)
  	c:RegisterFlagEffect(0, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 0, aux.Stringid(id, 1))
  end
  function s.valcheck(e, c)
  	local g = c:GetMaterial()
  	if g:GetClassCount(Card.GetLinkCode) == g:GetCount() and g:IsExists(Card.IsLinkAttribute, 2, nil, ATTRIBUTE_DARK) then
  		e:GetLabelObject():SetLabel(1)
  	else
  		e:GetLabelObject():SetLabel(0)
  	end
  end
  function s.ctcon(e, tp, eg, ep, ev, re, r, rp)
  	return e:GetHandler():GetFlagEffect(id) ~= 0
  end
  function s.cfilter(c)
  	return Duel.IsExistingTarget(Card.IsCanAddCounter, 0, LOCATION_ONFIELD, LOCATION_ONFIELD, 1, c, 0x1049, 1)
  end
  function s.ctcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.CheckReleaseGroup(tp, s.cfilter, 1, nil)
  	end
  	local g = Duel.SelectReleaseGroup(tp, s.cfilter, 1, 1, nil)
  	Duel.Release(g, REASON_COST)
  end
  function s.cttg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsOnField() and chkc:IsCanAddCounter(COUNTER_ID_0, 1)
  	end
  	if chk == 0 then
  		return true
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_FACEUP)
  	Duel.SelectTarget(tp, Card.IsCanAddCounter, tp, LOCATION_ONFIELD, LOCATION_ONFIELD, 1, 1, nil, 0x1049, 1)
  end
  function s.ctop(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	if tc:IsFaceup() and tc:IsRelateToEffect(e) then
  		tc:AddCounter(COUNTER_ID_0, 1)
  		if tc:GetFlagEffect(99011764) ~= 0 then
  			return
  		end
  		local e1 = Effect.CreateEffect(e:GetHandler())
  		e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  		e1:SetCode(EFFECT_DESTROY_REPLACE)
  		e1:SetTarget(s.reptg)
  		e1:SetOperation(s.repop)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		tc:RegisterEffect(e1)
  		tc:RegisterFlagEffect(99011764, RESET_EVENT + RESETS_STANDARD, 0, 0)
  	end
  end
  function s.reptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:IsReason(REASON_BATTLE + REASON_EFFECT) and not c:IsReason(REASON_REPLACE) and c:IsCanRemoveCounter(tp, COUNTER_ID_0, 1, REASON_EFFECT)
  	end
  	return true
  end
  function s.repop(e, tp, eg, ep, ev, re, r, rp)
  	e:GetHandler():RemoveCounter(tp, COUNTER_ID_0, 1, REASON_EFFECT)
  end
  
  