name: F.A.
card_text: Gains ATK equal to its Level x 300. Your opponent's monsters whose original Level/Rank is lower than this card's Level cannot target monsters for attacks, except this one. Your opponent cannot target monsters, except this one, with the effects of monsters whose original Level/Rank is lower than this card's Level. Each time a "F.A." Spell/Trap Card or effect is activated: You can increase this card's Level by 1. If your "F.A." monster battles while you control this Level 7 or higher card, your opponent's monsters cannot activate their effects until the end of the Damage Step.
external_ids: local SETCARD_ID_0 = 0x107 --F.A.
  
lua: local SETCARD_ID_0 = 0x107 --F.A.
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--atk up
  	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)
  	--untargetable
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD)
  	e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetTargetRange(0, LOCATION_MZONE)
  	e2:SetTarget(s.atglimit)
  	e2:SetValue(s.atlimit)
  	c:RegisterEffect(e2)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
  	e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetTargetRange(0xff, 0xff)
  	e3:SetTarget(s.tglimit)
  	e3:SetValue(s.tgval)
  	c:RegisterEffect(e3)
  	--lv up
  	local e4 = Effect.CreateEffect(c)
  	e4:SetDescription(aux.Stringid(id, 0))
  	e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
  	e4:SetProperty(EFFECT_FLAG_DELAY + EFFECT_FLAG_DAMAGE_STEP)
  	e4:SetCode(EVENT_CHAINING)
  	e4:SetRange(LOCATION_MZONE)
  	e4:SetCountLimit(1, EFFECT_COUNT_CODE_CHAIN)
  	e4:SetCondition(s.lvcon)
  	e4:SetOperation(s.lvop)
  	c:RegisterEffect(e4)
  	--actlimit
  	local e5 = Effect.CreateEffect(c)
  	e5:SetType(EFFECT_TYPE_FIELD)
  	e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e5:SetCode(EFFECT_CANNOT_ACTIVATE)
  	e5:SetRange(LOCATION_MZONE)
  	e5:SetTargetRange(0, 1)
  	e5:SetValue(s.aclimit)
  	e5:SetCondition(s.actcon)
  	c:RegisterEffect(e5)
  end
  function s.atkval(e, c)
  	return c:GetLevel() * 300
  end
  function s.atglimit(e, c)
  	local lv = e:GetHandler():GetLevel()
  	if c:GetRank() > 0 then
  		return c:GetOriginalRank() < lv
  	elseif c:GetLevel() > 0 then
  		return c:GetOriginalLevel() < lv
  	else
  		return false
  	end
  end
  function s.atlimit(e, c)
  	return c ~= e:GetHandler()
  end
  function s.tglimit(e, c)
  	return c ~= e:GetHandler()
  end
  function s.tgval(e, re, rp)
  	if not aux.tgoval(e, re, rp) then
  		return false
  	end
  	local c = re:GetHandler()
  	local lv = e:GetHandler():GetLevel()
  	if c:GetRank() > 0 then
  		return c:GetOriginalRank() < lv
  	elseif c:GetLevel() > 0 then
  		return c:GetOriginalLevel() < lv
  	else
  		return false
  	end
  end
  function s.lvcon(e, tp, eg, ep, ev, re, r, rp)
  	return re:IsActiveType(TYPE_SPELL + TYPE_TRAP) and re:GetHandler():IsSetCard(SETCARD_ID_0)
  end
  function s.lvop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if c:IsRelateToEffect(e) and c:IsFaceup() then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_UPDATE_LEVEL)
  		e1:SetValue(1)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE)
  		c:RegisterEffect(e1)
  	end
  end
  function s.aclimit(e, re, tp)
  	return re:IsActiveType(TYPE_MONSTER)
  end
  function s.actcon(e)
  	if not e:GetHandler():IsLevelAbove(7) then
  		return false
  	end
  	local a = Duel.GetAttacker()
  	if not a then
  		return false
  	end
  	local d = a:GetBattleTarget()
  	if a:IsControler(1 - e:GetHandler():GetControler()) then
  		a, d = d, a
  	end
  	return a and a:IsSetCard(SETCARD_ID_0)
  end
  
  
source_text: F.A.
  Gains ATK equal to its Level x 300. Your opponent's monsters whose original Level/Rank is lower than this card's Level cannot target monsters for attacks, except this one. Your opponent cannot target monsters, except this one, with the effects of monsters whose original Level/Rank is lower than this card's Level. Each time a "F.A." Spell/Trap Card or effect is activated: You can increase this card's Level by 1. If your "F.A." monster battles while you control this Level 7 or higher card, your opponent's monsters cannot activate their effects until the end of the Damage Step.
target_text: -- F.A.
  local SETCARD_ID_0 = 0x107 --F.A.
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--atk up
  	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)
  	--untargetable
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_FIELD)
  	e2:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetTargetRange(0, LOCATION_MZONE)
  	e2:SetTarget(s.atglimit)
  	e2:SetValue(s.atlimit)
  	c:RegisterEffect(e2)
  	local e3 = Effect.CreateEffect(c)
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
  	e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE + EFFECT_FLAG_SET_AVAILABLE)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetTargetRange(0xff, 0xff)
  	e3:SetTarget(s.tglimit)
  	e3:SetValue(s.tgval)
  	c:RegisterEffect(e3)
  	--lv up
  	local e4 = Effect.CreateEffect(c)
  	e4:SetDescription(aux.Stringid(id, 0))
  	e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
  	e4:SetProperty(EFFECT_FLAG_DELAY + EFFECT_FLAG_DAMAGE_STEP)
  	e4:SetCode(EVENT_CHAINING)
  	e4:SetRange(LOCATION_MZONE)
  	e4:SetCountLimit(1, EFFECT_COUNT_CODE_CHAIN)
  	e4:SetCondition(s.lvcon)
  	e4:SetOperation(s.lvop)
  	c:RegisterEffect(e4)
  	--actlimit
  	local e5 = Effect.CreateEffect(c)
  	e5:SetType(EFFECT_TYPE_FIELD)
  	e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e5:SetCode(EFFECT_CANNOT_ACTIVATE)
  	e5:SetRange(LOCATION_MZONE)
  	e5:SetTargetRange(0, 1)
  	e5:SetValue(s.aclimit)
  	e5:SetCondition(s.actcon)
  	c:RegisterEffect(e5)
  end
  function s.atkval(e, c)
  	return c:GetLevel() * 300
  end
  function s.atglimit(e, c)
  	local lv = e:GetHandler():GetLevel()
  	if c:GetRank() > 0 then
  		return c:GetOriginalRank() < lv
  	elseif c:GetLevel() > 0 then
  		return c:GetOriginalLevel() < lv
  	else
  		return false
  	end
  end
  function s.atlimit(e, c)
  	return c ~= e:GetHandler()
  end
  function s.tglimit(e, c)
  	return c ~= e:GetHandler()
  end
  function s.tgval(e, re, rp)
  	if not aux.tgoval(e, re, rp) then
  		return false
  	end
  	local c = re:GetHandler()
  	local lv = e:GetHandler():GetLevel()
  	if c:GetRank() > 0 then
  		return c:GetOriginalRank() < lv
  	elseif c:GetLevel() > 0 then
  		return c:GetOriginalLevel() < lv
  	else
  		return false
  	end
  end
  function s.lvcon(e, tp, eg, ep, ev, re, r, rp)
  	return re:IsActiveType(TYPE_SPELL + TYPE_TRAP) and re:GetHandler():IsSetCard(SETCARD_ID_0)
  end
  function s.lvop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if c:IsRelateToEffect(e) and c:IsFaceup() then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_UPDATE_LEVEL)
  		e1:SetValue(1)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE)
  		c:RegisterEffect(e1)
  	end
  end
  function s.aclimit(e, re, tp)
  	return re:IsActiveType(TYPE_MONSTER)
  end
  function s.actcon(e)
  	if not e:GetHandler():IsLevelAbove(7) then
  		return false
  	end
  	local a = Duel.GetAttacker()
  	if not a then
  		return false
  	end
  	local d = a:GetBattleTarget()
  	if a:IsControler(1 - e:GetHandler():GetControler()) then
  		a, d = d, a
  	end
  	return a and a:IsSetCard(SETCARD_ID_0)
  end
  
  