name: Combat
card_text: 1 Tuner + 1+ non-Tuner monsters
  The first time this card would be destroyed by an opponent's card effect each turn, it is not destroyed. Once per turn, during your opponent's Battle Phase (Quick Effect): You can discard 1 card; this card gains ATK equal to half the total ATK of all other monsters you currently control, then place 1 counter on this card, also for the rest of this turn, your opponent's monsters cannot target monsters for attacks, except this one. If this card with a counter is destroyed by battle: Destroy all monsters you control.
external_ids: local COUNTER_ID_0 = 0x67 --Counter(Combat
  
lua: local COUNTER_ID_0 = 0x67 --Counter(Combat
  local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	--material
  	aux.AddSynchroProcedure(c, nil, aux.NonTuner(nil), 1)
  	c:EnableCounterPermit(0x67)
  	--indestructible
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetValue(s.indct)
  	c:RegisterEffect(e1)
  	--counter+atk
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 0))
  	e2:SetCategory(CATEGORY_ATKCHANGE + CATEGORY_COUNTER)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
  	e2:SetCode(EVENT_FREE_CHAIN)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCountLimit(1)
  	e2:SetHintTiming(0, TIMING_BATTLE_START + TIMING_DAMAGE_STEP)
  	e2:SetCondition(s.ctcon)
  	e2:SetCost(s.ctcost)
  	e2:SetTarget(s.cttg)
  	e2:SetOperation(s.ctop)
  	c:RegisterEffect(e2)
  	--destroy
  	local e0 = Effect.CreateEffect(c)
  	e0:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e0:SetCode(EVENT_LEAVE_FIELD_P)
  	e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e0:SetOperation(s.regop)
  	c:RegisterEffect(e0)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_DESTROY)
  	e3:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_F)
  	e3:SetCode(EVENT_TO_GRAVE)
  	e3:SetCondition(s.descon)
  	e3:SetTarget(s.destg)
  	e3:SetOperation(s.desop)
  	e3:SetLabelObject(e0)
  	c:RegisterEffect(e3)
  end
  function s.indct(e, re, r, rp)
  	if r & REASON_EFFECT > 0 and e:GetOwnerPlayer() ~= rp then
  		return 1
  	else
  		return 0
  	end
  end
  function s.ctcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetTurnPlayer() ~= tp and aux.dscon(e, tp, eg, ep, ev, re, r, rp) and (Duel.GetCurrentPhase() >= PHASE_BATTLE_START and Duel.GetCurrentPhase() <= PHASE_BATTLE)
  end
  function s.ctcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetHandler():IsCanAddCounter(COUNTER_ID_0, 1) and Duel.IsExistingMatchingCard(Card.IsDiscardable, tp, LOCATION_HAND, 0, 1, nil)
  	end
  	Duel.DiscardHand(tp, Card.IsDiscardable, 1, 1, REASON_COST + REASON_DISCARD)
  end
  function s.cttg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_MZONE, 0, e:GetHandler()):GetSum(Card.GetAttack) > 0
  	end
  end
  function s.ctop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local g = Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_MZONE, 0, c)
  	if c:IsFaceup() and c:IsRelateToEffect(e) and #g > 0 then
  		local atk = g:GetSum(Card.GetAttack) / 2
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_UPDATE_ATTACK)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE)
  		e1:SetValue(atk)
  		c:RegisterEffect(e1)
  		Duel.BreakEffect()
  		if c:IsCanAddCounter(COUNTER_ID_0, 1) then
  			c:AddCounter(COUNTER_ID_0, 1)
  		end
  	end
  	local fid = 0
  	if c:IsFaceup() and c:IsRelateToEffect(e) then
  		fid = c:GetFieldID()
  	end
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD)
  	e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET)
  	e2:SetTargetRange(0, LOCATION_MZONE)
  	e2:SetLabel(fid)
  	e2:SetValue(s.atlimit)
  	e2:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e2, tp)
  end
  function s.atlimit(e, c)
  	return c ~= e:GetHandler() or e:GetHandler():GetFieldID() ~= e:GetLabel()
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	if e:GetHandler():GetCounter(COUNTER_ID_0) > 0 then
  		e:SetLabel(1)
  	else
  		e:SetLabel(0)
  	end
  end
  function s.descon(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	return e:GetHandler():IsReason(REASON_BATTLE) and e:GetLabelObject():GetLabel() == 1
  end
  function s.destg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	local sg = Duel.GetFieldGroup(tp, LOCATION_MZONE, 0)
  	Duel.SetOperationInfo(0, CATEGORY_DESTROY, sg, #sg, 0, 0)
  end
  function s.desop(e, tp, eg, ep, ev, re, r, rp)
  	local sg = Duel.GetFieldGroup(tp, LOCATION_MZONE, 0)
  	Duel.Destroy(sg, REASON_EFFECT)
  end
  
  
source_text: Combat
  1 Tuner + 1+ non-Tuner monsters
  The first time this card would be destroyed by an opponent's card effect each turn, it is not destroyed. Once per turn, during your opponent's Battle Phase (Quick Effect): You can discard 1 card; this card gains ATK equal to half the total ATK of all other monsters you currently control, then place 1 counter on this card, also for the rest of this turn, your opponent's monsters cannot target monsters for attacks, except this one. If this card with a counter is destroyed by battle: Destroy all monsters you control.
target_text: -- Combat
  local COUNTER_ID_0 = 0x67 --Counter(Combat
  local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	--material
  	aux.AddSynchroProcedure(c, nil, aux.NonTuner(nil), 1)
  	c:EnableCounterPermit(0x67)
  	--indestructible
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  	e1:SetCode(EFFECT_INDESTRUCTABLE_COUNT)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetValue(s.indct)
  	c:RegisterEffect(e1)
  	--counter+atk
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 0))
  	e2:SetCategory(CATEGORY_ATKCHANGE + CATEGORY_COUNTER)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
  	e2:SetCode(EVENT_FREE_CHAIN)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCountLimit(1)
  	e2:SetHintTiming(0, TIMING_BATTLE_START + TIMING_DAMAGE_STEP)
  	e2:SetCondition(s.ctcon)
  	e2:SetCost(s.ctcost)
  	e2:SetTarget(s.cttg)
  	e2:SetOperation(s.ctop)
  	c:RegisterEffect(e2)
  	--destroy
  	local e0 = Effect.CreateEffect(c)
  	e0:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
  	e0:SetCode(EVENT_LEAVE_FIELD_P)
  	e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  	e0:SetOperation(s.regop)
  	c:RegisterEffect(e0)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_DESTROY)
  	e3:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_F)
  	e3:SetCode(EVENT_TO_GRAVE)
  	e3:SetCondition(s.descon)
  	e3:SetTarget(s.destg)
  	e3:SetOperation(s.desop)
  	e3:SetLabelObject(e0)
  	c:RegisterEffect(e3)
  end
  function s.indct(e, re, r, rp)
  	if r & REASON_EFFECT > 0 and e:GetOwnerPlayer() ~= rp then
  		return 1
  	else
  		return 0
  	end
  end
  function s.ctcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetTurnPlayer() ~= tp and aux.dscon(e, tp, eg, ep, ev, re, r, rp) and (Duel.GetCurrentPhase() >= PHASE_BATTLE_START and Duel.GetCurrentPhase() <= PHASE_BATTLE)
  end
  function s.ctcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetHandler():IsCanAddCounter(COUNTER_ID_0, 1) and Duel.IsExistingMatchingCard(Card.IsDiscardable, tp, LOCATION_HAND, 0, 1, nil)
  	end
  	Duel.DiscardHand(tp, Card.IsDiscardable, 1, 1, REASON_COST + REASON_DISCARD)
  end
  function s.cttg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_MZONE, 0, e:GetHandler()):GetSum(Card.GetAttack) > 0
  	end
  end
  function s.ctop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local g = Duel.GetMatchingGroup(Card.IsFaceup, tp, LOCATION_MZONE, 0, c)
  	if c:IsFaceup() and c:IsRelateToEffect(e) and #g > 0 then
  		local atk = g:GetSum(Card.GetAttack) / 2
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_UPDATE_ATTACK)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE)
  		e1:SetValue(atk)
  		c:RegisterEffect(e1)
  		Duel.BreakEffect()
  		if c:IsCanAddCounter(COUNTER_ID_0, 1) then
  			c:AddCounter(COUNTER_ID_0, 1)
  		end
  	end
  	local fid = 0
  	if c:IsFaceup() and c:IsRelateToEffect(e) then
  		fid = c:GetFieldID()
  	end
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD)
  	e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET)
  	e2:SetTargetRange(0, LOCATION_MZONE)
  	e2:SetLabel(fid)
  	e2:SetValue(s.atlimit)
  	e2:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e2, tp)
  end
  function s.atlimit(e, c)
  	return c ~= e:GetHandler() or e:GetHandler():GetFieldID() ~= e:GetLabel()
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	if e:GetHandler():GetCounter(COUNTER_ID_0) > 0 then
  		e:SetLabel(1)
  	else
  		e:SetLabel(0)
  	end
  end
  function s.descon(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	return e:GetHandler():IsReason(REASON_BATTLE) and e:GetLabelObject():GetLabel() == 1
  end
  function s.destg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	local sg = Duel.GetFieldGroup(tp, LOCATION_MZONE, 0)
  	Duel.SetOperationInfo(0, CATEGORY_DESTROY, sg, #sg, 0, 0)
  end
  function s.desop(e, tp, eg, ep, ev, re, r, rp)
  	local sg = Duel.GetFieldGroup(tp, LOCATION_MZONE, 0)
  	Duel.Destroy(sg, REASON_EFFECT)
  end
  
  