name: Rock
card_text: If this card is Special Summoned: You can target 1 other face-up monster on the field; equip that face-up monster to this card. At the start of the Damage Step, if this card battles an opponent's monster with the same Type and Attribute as the Monster Card equipped by this card's effect: You can destroy that opponent's monster. You can only use each effect of "Rock Scales" once per turn.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--Union equip monster
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_EQUIP)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e1:SetProperty(EFFECT_FLAG_DELAY + EFFECT_FLAG_CARD_TARGET)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.target1)
  	e1:SetOperation(s.activate1)
  	c:RegisterEffect(e1)
  	--Destroy at battle if equipped equals race and attribute
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_DESTROY)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_BATTLE_START)
  	e2:SetCountLimit(1, id + o)
  	e2:SetTarget(s.target2)
  	e2:SetOperation(s.activate2)
  	c:RegisterEffect(e2)
  end
  function s.filter1(c, tp)
  	return c:IsFaceup() and (c:IsControler(tp) or c:IsAbleToChangeControler())
  end
  function s.target1(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local c = e:GetHandler()
  	if chkc then
  		return chkc:IsLocation(LOCATION_MZONE) and s.filter1(chkc, tp) and chkc ~= c
  	end
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 and Duel.IsExistingTarget(s.filter1, tp, LOCATION_MZONE, LOCATION_MZONE, 1, c, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	local g = Duel.SelectTarget(tp, s.filter1, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, c, tp)
  	Duel.SetOperationInfo(0, CATEGORY_EQUIP, g, 1, 0, 0)
  end
  function s.activate1(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	local c = e:GetHandler()
  	if tc:IsRelateToEffect(e) and Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 and s.filter1(tc, tp) and tc:IsType(TYPE_MONSTER) then
  		if not Duel.Equip(tp, tc, c, false) then
  			return
  		end
  		tc:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD, 0, 0)
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_EQUIP_LIMIT)
  		e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e1:SetValue(s.eqlimit)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		tc:RegisterEffect(e1)
  	end
  end
  function s.eqlimit(e, c)
  	return e:GetOwner() == c
  end
  function s.filter2(c)
  	return c:IsFaceup() and c:GetOriginalType() & TYPE_MONSTER > 0 and c:GetFlagEffect(id) > 0
  end
  function s.target2(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	local tc = c:GetBattleTarget()
  	if chk == 0 then
  		local ec = c:GetEquipGroup():Filter(s.filter2, nil):GetFirst()
  		return ec and tc and tc:IsControler(1 - tp) and tc:IsFaceup() and tc:IsAttribute(ec:GetOriginalAttribute()) and tc:IsRace(ec:GetOriginalRace())
  	end
  	Duel.SetOperationInfo(0, CATEGORY_DESTROY, tc, 1, 0, 0)
  end
  function s.activate2(e, tp, eg, ep, ev, re, r, rp)
  	local tc = e:GetHandler():GetBattleTarget()
  	if tc:IsRelateToBattle() and tc:IsControler(1 - tp) then
  		Duel.Destroy(tc, REASON_EFFECT)
  	end
  end
  
  
source_text: Rock
  If this card is Special Summoned: You can target 1 other face-up monster on the field; equip that face-up monster to this card. At the start of the Damage Step, if this card battles an opponent's monster with the same Type and Attribute as the Monster Card equipped by this card's effect: You can destroy that opponent's monster. You can only use each effect of "Rock Scales" once per turn.
target_text: -- Rock
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--Union equip monster
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_EQUIP)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e1:SetProperty(EFFECT_FLAG_DELAY + EFFECT_FLAG_CARD_TARGET)
  	e1:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.target1)
  	e1:SetOperation(s.activate1)
  	c:RegisterEffect(e1)
  	--Destroy at battle if equipped equals race and attribute
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_DESTROY)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_BATTLE_START)
  	e2:SetCountLimit(1, id + o)
  	e2:SetTarget(s.target2)
  	e2:SetOperation(s.activate2)
  	c:RegisterEffect(e2)
  end
  function s.filter1(c, tp)
  	return c:IsFaceup() and (c:IsControler(tp) or c:IsAbleToChangeControler())
  end
  function s.target1(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local c = e:GetHandler()
  	if chkc then
  		return chkc:IsLocation(LOCATION_MZONE) and s.filter1(chkc, tp) and chkc ~= c
  	end
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 and Duel.IsExistingTarget(s.filter1, tp, LOCATION_MZONE, LOCATION_MZONE, 1, c, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_EQUIP)
  	local g = Duel.SelectTarget(tp, s.filter1, tp, LOCATION_MZONE, LOCATION_MZONE, 1, 1, c, tp)
  	Duel.SetOperationInfo(0, CATEGORY_EQUIP, g, 1, 0, 0)
  end
  function s.activate1(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	local c = e:GetHandler()
  	if tc:IsRelateToEffect(e) and Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 and s.filter1(tc, tp) and tc:IsType(TYPE_MONSTER) then
  		if not Duel.Equip(tp, tc, c, false) then
  			return
  		end
  		tc:RegisterFlagEffect(id, RESET_EVENT + RESETS_STANDARD, 0, 0)
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_EQUIP_LIMIT)
  		e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  		e1:SetValue(s.eqlimit)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD)
  		tc:RegisterEffect(e1)
  	end
  end
  function s.eqlimit(e, c)
  	return e:GetOwner() == c
  end
  function s.filter2(c)
  	return c:IsFaceup() and c:GetOriginalType() & TYPE_MONSTER > 0 and c:GetFlagEffect(id) > 0
  end
  function s.target2(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	local tc = c:GetBattleTarget()
  	if chk == 0 then
  		local ec = c:GetEquipGroup():Filter(s.filter2, nil):GetFirst()
  		return ec and tc and tc:IsControler(1 - tp) and tc:IsFaceup() and tc:IsAttribute(ec:GetOriginalAttribute()) and tc:IsRace(ec:GetOriginalRace())
  	end
  	Duel.SetOperationInfo(0, CATEGORY_DESTROY, tc, 1, 0, 0)
  end
  function s.activate2(e, tp, eg, ep, ev, re, r, rp)
  	local tc = e:GetHandler():GetBattleTarget()
  	if tc:IsRelateToBattle() and tc:IsControler(1 - tp) then
  		Duel.Destroy(tc, REASON_EFFECT)
  	end
  end
  
  