name: 次元同異体ヴァリス
card_text: このカード名の2の効果は1ターンに1度しか使用できない。
  1:このカードは、このカードと種族または属性が同じモンスターとの戦闘では破壊されない。
  2:種族と属性を1つずつ宣言して発動できる。
  このカードは相手ターン終了時まで宣言した種族・属性になる。
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--battle indestructable
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
  	e1:SetValue(s.batfilter)
  	c:RegisterEffect(e1)
  	--att and race change
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_IGNITION)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCountLimit(1, id)
  	e2:SetTarget(s.artg)
  	e2:SetOperation(s.arop)
  	c:RegisterEffect(e2)
  end
  function s.batfilter(e, c)
  	local bc = e:GetHandler()
  	return c:IsAttribute(bc:GetAttribute()) or c:IsRace(bc:GetRace())
  end
  function s.artg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_RACE)
  	local rac = Duel.AnnounceRace(tp, 1, RACE_ALL)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATTRIBUTE)
  	local att = Duel.AnnounceAttribute(tp, 1, ATTRIBUTE_ALL)
  	e:SetLabel(rac, att)
  end
  function s.arop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local rac, att = e:GetLabel()
  	if c:IsRelateToEffect(e) and c:IsFaceup() then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_CHANGE_ATTRIBUTE)
  		e1:SetValue(att)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE + RESET_PHASE + PHASE_END + RESET_OPPO_TURN)
  		c:RegisterEffect(e1)
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_SINGLE)
  		e2:SetCode(EFFECT_CHANGE_RACE)
  		e2:SetValue(rac)
  		e2:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE + RESET_PHASE + PHASE_END + RESET_OPPO_TURN)
  		c:RegisterEffect(e2)
  	end
  end
  
  
source_text: 次元同異体ヴァリス
  このカード名の2の効果は1ターンに1度しか使用できない。
  1:このカードは、このカードと種族または属性が同じモンスターとの戦闘では破壊されない。
  2:種族と属性を1つずつ宣言して発動できる。
  このカードは相手ターン終了時まで宣言した種族・属性になる。
target_text: -- 次元同異体ヴァリス
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--battle indestructable
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
  	e1:SetValue(s.batfilter)
  	c:RegisterEffect(e1)
  	--att and race change
  	local e2 = Effect.CreateEffect(c)
  	e2:SetType(EFFECT_TYPE_IGNITION)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCountLimit(1, id)
  	e2:SetTarget(s.artg)
  	e2:SetOperation(s.arop)
  	c:RegisterEffect(e2)
  end
  function s.batfilter(e, c)
  	local bc = e:GetHandler()
  	return c:IsAttribute(bc:GetAttribute()) or c:IsRace(bc:GetRace())
  end
  function s.artg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return true
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_RACE)
  	local rac = Duel.AnnounceRace(tp, 1, RACE_ALL)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATTRIBUTE)
  	local att = Duel.AnnounceAttribute(tp, 1, ATTRIBUTE_ALL)
  	e:SetLabel(rac, att)
  end
  function s.arop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local rac, att = e:GetLabel()
  	if c:IsRelateToEffect(e) and c:IsFaceup() then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetCode(EFFECT_CHANGE_ATTRIBUTE)
  		e1:SetValue(att)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE + RESET_PHASE + PHASE_END + RESET_OPPO_TURN)
  		c:RegisterEffect(e1)
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_SINGLE)
  		e2:SetCode(EFFECT_CHANGE_RACE)
  		e2:SetValue(rac)
  		e2:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE + RESET_PHASE + PHASE_END + RESET_OPPO_TURN)
  		c:RegisterEffect(e2)
  	end
  end
  
  