Brotherhood
2 "Fire Fist" monsters
While this card points to a "Fire Fist" monster, your opponent's monsters cannot target this card for attacks. When this card declares an attack: You can send 1 face-up "Fire Formation" Spell/Trap you control to the GY, then target 1 monster your opponent controls; place that opponent's monster in a zone this card points to and take control of it until the End Phase, but it cannot declare an attack this turn. You can only use this effect of "Brotherhood of the Fire Fist - Peacock" once per turn.
local CARD_ID_0 = 46241344 --Brotherhood of the Fire Fist - Eagle
local SETCARD_ID_0 = 0x79 --Fire
local SETCARD_ID_1 = 0x7c --Fire

local CARD_ID_0 = 46241344 --Brotherhood of the Fire Fist - Eagle
local SETCARD_ID_0 = 0x79 --Fire
local SETCARD_ID_1 = 0x7c --Fire
local s, id, o = GetID()
function s.initial_effect(c)
	--link summon
	c:EnableReviveLimit()
	aux.AddLinkProcedure(c, aux.FilterBoolFunction(Card.IsLinkSetCard, SETCARD_ID_1), 2, 2)
	--cannot battle target
	local e1 = Effect.CreateEffect(c)
	e1:SetType(EFFECT_TYPE_SINGLE)
	e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
	e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET)
	e1:SetRange(LOCATION_MZONE)
	e1:SetCondition(s.btcon)
	e1:SetValue(aux.imval1)
	c:RegisterEffect(e1)
	--control
	local e2 = Effect.CreateEffect(c)
	e2:SetDescription(aux.Stringid(id, 0))
	e2:SetCategory(CATEGORY_CONTROL)
	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
	e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
	e2:SetCode(EVENT_ATTACK_ANNOUNCE)
	e2:SetCountLimit(1, id)
	e2:SetCost(s.ctcost)
	e2:SetTarget(s.cttg)
	e2:SetOperation(s.ctop)
	c:RegisterEffect(e2)
end
function s.btfilter(c)
	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_1)
end
function s.btcon(e)
	return e:GetHandler():GetLinkedGroup():IsExists(s.btfilter, 1, nil)
end
function s.costfilter(c)
	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_1) and c:IsType(TYPE_SPELL + TYPE_TRAP) and c:IsAbleToGraveAsCost()
end
function s.ctcost(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.IsExistingMatchingCard(s.costfilter, tp, LOCATION_ONFIELD, 0, 1, nil) or Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0)
	end
	if Duel.IsExistingMatchingCard(s.costfilter, tp, LOCATION_ONFIELD, 0, 1, nil) and (not Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0) or not Duel.SelectYesNo(tp, aux.Stringid(46241344, 0))) then
		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
		local g = Duel.SelectMatchingCard(tp, s.costfilter, tp, LOCATION_ONFIELD, 0, 1, 1, nil)
		Duel.SendtoGrave(g, REASON_COST)
	end
end
function s.cttg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
	local zone = bit.band(e:GetHandler():GetLinkedZone(), 0x1f)
	if chkc then
		return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1 - tp) and chkc:IsControlerCanBeChanged(false, zone)
	end
	if chk == 0 then
		return Duel.IsExistingTarget(Card.IsControlerCanBeChanged, tp, 0, LOCATION_MZONE, 1, nil, false, zone)
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CONTROL)
	local g = Duel.SelectTarget(tp, Card.IsControlerCanBeChanged, tp, 0, LOCATION_MZONE, 1, 1, nil, false, zone)
	Duel.SetOperationInfo(0, CATEGORY_CONTROL, g, 1, 0, 0)
end
function s.ctop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	local tc = Duel.GetFirstTarget()
	local zone = bit.band(c:GetLinkedZone(), 0x1f)
	if tc:IsRelateToEffect(e) and Duel.GetControl(tc, tp, PHASE_END, 1, zone) ~= 0 then
		local e1 = Effect.CreateEffect(c)
		e1:SetType(EFFECT_TYPE_SINGLE)
		e1:SetCode(EFFECT_CANNOT_ATTACK)
		e1:SetReset(RESET_EVENT + RESETS_STANDARD - RESET_TURN_SET + RESET_PHASE + PHASE_END)
		tc:RegisterEffect(e1)
	end
end


Brotherhood
2 "Fire Fist" monsters
While this card points to a "Fire Fist" monster, your opponent's monsters cannot target this card for attacks. When this card declares an attack: You can send 1 face-up "Fire Formation" Spell/Trap you control to the GY, then target 1 monster your opponent controls; place that opponent's monster in a zone this card points to and take control of it until the End Phase, but it cannot declare an attack this turn. You can only use this effect of "Brotherhood of the Fire Fist - Peacock" once per turn.
-- Brotherhood
local CARD_ID_0 = 46241344 --Brotherhood of the Fire Fist - Eagle
local SETCARD_ID_0 = 0x79 --Fire
local SETCARD_ID_1 = 0x7c --Fire
local s, id, o = GetID()
function s.initial_effect(c)
	--link summon
	c:EnableReviveLimit()
	aux.AddLinkProcedure(c, aux.FilterBoolFunction(Card.IsLinkSetCard, SETCARD_ID_1), 2, 2)
	--cannot battle target
	local e1 = Effect.CreateEffect(c)
	e1:SetType(EFFECT_TYPE_SINGLE)
	e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
	e1:SetCode(EFFECT_CANNOT_BE_BATTLE_TARGET)
	e1:SetRange(LOCATION_MZONE)
	e1:SetCondition(s.btcon)
	e1:SetValue(aux.imval1)
	c:RegisterEffect(e1)
	--control
	local e2 = Effect.CreateEffect(c)
	e2:SetDescription(aux.Stringid(id, 0))
	e2:SetCategory(CATEGORY_CONTROL)
	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
	e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
	e2:SetCode(EVENT_ATTACK_ANNOUNCE)
	e2:SetCountLimit(1, id)
	e2:SetCost(s.ctcost)
	e2:SetTarget(s.cttg)
	e2:SetOperation(s.ctop)
	c:RegisterEffect(e2)
end
function s.btfilter(c)
	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_1)
end
function s.btcon(e)
	return e:GetHandler():GetLinkedGroup():IsExists(s.btfilter, 1, nil)
end
function s.costfilter(c)
	return c:IsFaceup() and c:IsSetCard(SETCARD_ID_1) and c:IsType(TYPE_SPELL + TYPE_TRAP) and c:IsAbleToGraveAsCost()
end
function s.ctcost(e, tp, eg, ep, ev, re, r, rp, chk)
	if chk == 0 then
		return Duel.IsExistingMatchingCard(s.costfilter, tp, LOCATION_ONFIELD, 0, 1, nil) or Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0)
	end
	if Duel.IsExistingMatchingCard(s.costfilter, tp, LOCATION_ONFIELD, 0, 1, nil) and (not Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0) or not Duel.SelectYesNo(tp, aux.Stringid(46241344, 0))) then
		Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_TOGRAVE)
		local g = Duel.SelectMatchingCard(tp, s.costfilter, tp, LOCATION_ONFIELD, 0, 1, 1, nil)
		Duel.SendtoGrave(g, REASON_COST)
	end
end
function s.cttg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
	local zone = bit.band(e:GetHandler():GetLinkedZone(), 0x1f)
	if chkc then
		return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1 - tp) and chkc:IsControlerCanBeChanged(false, zone)
	end
	if chk == 0 then
		return Duel.IsExistingTarget(Card.IsControlerCanBeChanged, tp, 0, LOCATION_MZONE, 1, nil, false, zone)
	end
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CONTROL)
	local g = Duel.SelectTarget(tp, Card.IsControlerCanBeChanged, tp, 0, LOCATION_MZONE, 1, 1, nil, false, zone)
	Duel.SetOperationInfo(0, CATEGORY_CONTROL, g, 1, 0, 0)
end
function s.ctop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	local tc = Duel.GetFirstTarget()
	local zone = bit.band(c:GetLinkedZone(), 0x1f)
	if tc:IsRelateToEffect(e) and Duel.GetControl(tc, tp, PHASE_END, 1, zone) ~= 0 then
		local e1 = Effect.CreateEffect(c)
		e1:SetType(EFFECT_TYPE_SINGLE)
		e1:SetCode(EFFECT_CANNOT_ATTACK)
		e1:SetReset(RESET_EVENT + RESETS_STANDARD - RESET_TURN_SET + RESET_PHASE + PHASE_END)
		tc:RegisterEffect(e1)
	end
end

