name: 十二獣ハマーコング
card_text: レベル4モンスター×3体以上
  「十二獣ハマーコング」は1ターンに1度、同名カード以外の自分フィールドの「十二獣」モンスターの上に重ねてX召喚する事もできる。
  1:このカードの攻撃力・守備力は、このカードがX素材としている「十二獣」モンスターのそれぞれの数値分アップする。
  2:X素材を持ったこのカードがモンスターゾーンに存在する限り、相手はこのカード以外のフィールドの「十二獣」モンスターを効果の対象にできない。
  3:自分・相手のエンドフェイズに発動する。
  このカードのX素材を1つ取り除く。
external_ids: local SETCARD_ID_0 = 0xf1 --十二獣
  
lua: local SETCARD_ID_0 = 0xf1 --十二獣
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--xyz summon
  	aux.AddXyzProcedure(c, nil, 4, 3, s.ovfilter, aux.Stringid(id, 0), 99, s.xyzop)
  	c:EnableReviveLimit()
  	--atk
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_UPDATE_ATTACK)
  	e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetValue(s.atkval)
  	c:RegisterEffect(e1)
  	local e2 = e1:Clone()
  	e2:SetCode(EFFECT_UPDATE_DEFENSE)
  	e2:SetValue(s.defval)
  	c:RegisterEffect(e2)
  	--Cannot be effect
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
  	e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetTargetRange(LOCATION_MZONE, LOCATION_MZONE)
  	e3:SetTarget(s.efftg)
  	e3:SetCondition(s.effcon)
  	e3:SetValue(aux.tgoval)
  	c:RegisterEffect(e3)
  	--remove material
  	local e4 = Effect.CreateEffect(c)
  	e4:SetDescription(aux.Stringid(id, 1))
  	e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_F)
  	e4:SetCode(EVENT_PHASE + PHASE_END)
  	e4:SetRange(LOCATION_MZONE)
  	e4:SetCountLimit(1)
  	e4:SetTarget(s.rmtg)
  	e4:SetOperation(s.rmop)
  	c:RegisterEffect(e4)
  end
  function s.ovfilter(c)
  	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_0) and not c:IsCode(id)
  end
  function s.xyzop(e, tp, chk)
  	if chk == 0 then
  		return Duel.GetFlagEffect(tp, id) == 0
  	end
  	Duel.RegisterFlagEffect(tp, id, RESET_PHASE + PHASE_END, EFFECT_FLAG_OATH, 1)
  end
  function s.atkfilter(c)
  	return c:IsSetCard(SETCARD_ID_0) and c:GetAttack() >= 0
  end
  function s.atkval(e, c)
  	local g = e:GetHandler():GetOverlayGroup():Filter(s.atkfilter, nil)
  	return g:GetSum(Card.GetAttack)
  end
  function s.deffilter(c)
  	return c:IsSetCard(SETCARD_ID_0) and c:GetDefense() >= 0
  end
  function s.defval(e, c)
  	local g = e:GetHandler():GetOverlayGroup():Filter(s.deffilter, nil)
  	return g:GetSum(Card.GetDefense)
  end
  function s.efftg(e, c)
  	return c:IsSetCard(SETCARD_ID_0) and c ~= e:GetHandler()
  end
  function s.effcon(e)
  	return e:GetHandler():GetOverlayCount() > 0
  end
  function s.rmtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.Hint(HINT_OPSELECTED, 1 - tp, e:GetDescription())
  end
  function s.rmop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	c:RemoveOverlayCard(tp, 1, 1, REASON_EFFECT)
  end
  
  
source_text: 十二獣ハマーコング
  レベル4モンスター×3体以上
  「十二獣ハマーコング」は1ターンに1度、同名カード以外の自分フィールドの「十二獣」モンスターの上に重ねてX召喚する事もできる。
  1:このカードの攻撃力・守備力は、このカードがX素材としている「十二獣」モンスターのそれぞれの数値分アップする。
  2:X素材を持ったこのカードがモンスターゾーンに存在する限り、相手はこのカード以外のフィールドの「十二獣」モンスターを効果の対象にできない。
  3:自分・相手のエンドフェイズに発動する。
  このカードのX素材を1つ取り除く。
target_text: -- 十二獣ハマーコング
  local SETCARD_ID_0 = 0xf1 --十二獣
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--xyz summon
  	aux.AddXyzProcedure(c, nil, 4, 3, s.ovfilter, aux.Stringid(id, 0), 99, s.xyzop)
  	c:EnableReviveLimit()
  	--atk
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_UPDATE_ATTACK)
  	e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetValue(s.atkval)
  	c:RegisterEffect(e1)
  	local e2 = e1:Clone()
  	e2:SetCode(EFFECT_UPDATE_DEFENSE)
  	e2:SetValue(s.defval)
  	c:RegisterEffect(e2)
  	--Cannot be effect
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
  	e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetTargetRange(LOCATION_MZONE, LOCATION_MZONE)
  	e3:SetTarget(s.efftg)
  	e3:SetCondition(s.effcon)
  	e3:SetValue(aux.tgoval)
  	c:RegisterEffect(e3)
  	--remove material
  	local e4 = Effect.CreateEffect(c)
  	e4:SetDescription(aux.Stringid(id, 1))
  	e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_F)
  	e4:SetCode(EVENT_PHASE + PHASE_END)
  	e4:SetRange(LOCATION_MZONE)
  	e4:SetCountLimit(1)
  	e4:SetTarget(s.rmtg)
  	e4:SetOperation(s.rmop)
  	c:RegisterEffect(e4)
  end
  function s.ovfilter(c)
  	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_0) and not c:IsCode(id)
  end
  function s.xyzop(e, tp, chk)
  	if chk == 0 then
  		return Duel.GetFlagEffect(tp, id) == 0
  	end
  	Duel.RegisterFlagEffect(tp, id, RESET_PHASE + PHASE_END, EFFECT_FLAG_OATH, 1)
  end
  function s.atkfilter(c)
  	return c:IsSetCard(SETCARD_ID_0) and c:GetAttack() >= 0
  end
  function s.atkval(e, c)
  	local g = e:GetHandler():GetOverlayGroup():Filter(s.atkfilter, nil)
  	return g:GetSum(Card.GetAttack)
  end
  function s.deffilter(c)
  	return c:IsSetCard(SETCARD_ID_0) and c:GetDefense() >= 0
  end
  function s.defval(e, c)
  	local g = e:GetHandler():GetOverlayGroup():Filter(s.deffilter, nil)
  	return g:GetSum(Card.GetDefense)
  end
  function s.efftg(e, c)
  	return c:IsSetCard(SETCARD_ID_0) and c ~= e:GetHandler()
  end
  function s.effcon(e)
  	return e:GetHandler():GetOverlayCount() > 0
  end
  function s.rmtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.Hint(HINT_OPSELECTED, 1 - tp, e:GetDescription())
  end
  function s.rmop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	c:RemoveOverlayCard(tp, 1, 1, REASON_EFFECT)
  end
  
  