Psychic
1 Tuner + 1 or more non-Tuner Psychic-Type monsters
Once per turn, during your Main Phase, you can pick 1 random card in your opponent's hand and call what type of card it is (Monster, Spell or Trap). If you call it right, this card gains 1000 ATK until your opponent's End Phase.
local s, id, o = GetID()
function s.initial_effect(c)
	--synchro summon
	aux.AddSynchroProcedure(c, nil, aux.NonTuner(Card.IsRace, RACE_PSYCHO), 1)
	c:EnableReviveLimit()
	--atk
	local e1 = Effect.CreateEffect(c)
	e1:SetDescription(aux.Stringid(id, 0))
	e1:SetCategory(CATEGORY_ATKCHANGE)
	e1:SetType(EFFECT_TYPE_IGNITION)
	e1:SetRange(LOCATION_MZONE)
	e1:SetCountLimit(1)
	e1:SetCondition(s.atkcon)
	e1:SetOperation(s.atkop)
	c:RegisterEffect(e1)
end
function s.atkcon(e, tp, eg, ep, ev, re, r, rp)
	return Duel.GetFieldGroupCount(tp, 0, LOCATION_HAND) ~= 0
end
function s.atkop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	if not c:IsRelateToEffect(e) or c:IsFacedown() or Duel.GetFieldGroupCount(tp, 0, LOCATION_HAND) == 0 then
		return
	end
	local g = Duel.GetFieldGroup(tp, 0, LOCATION_HAND):RandomSelect(tp, 1)
	local tc = g:GetFirst()
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CARDTYPE)
	local op = Duel.AnnounceType(tp)
	Duel.ConfirmCards(tp, tc)
	Duel.ShuffleHand(1 - tp)
	if (op == 0 and tc:IsType(TYPE_MONSTER)) or (op == 1 and tc:IsType(TYPE_SPELL)) or (op == 2 and tc:IsType(TYPE_TRAP)) then
		local e1 = Effect.CreateEffect(c)
		e1:SetType(EFFECT_TYPE_SINGLE)
		e1:SetCode(EFFECT_UPDATE_ATTACK)
		e1:SetValue(1000)
		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE + RESET_PHASE + PHASE_END, 2)
		c:RegisterEffect(e1)
	end
end


Psychic
1 Tuner + 1 or more non-Tuner Psychic-Type monsters
Once per turn, during your Main Phase, you can pick 1 random card in your opponent's hand and call what type of card it is (Monster, Spell or Trap). If you call it right, this card gains 1000 ATK until your opponent's End Phase.
-- Psychic
local s, id, o = GetID()
function s.initial_effect(c)
	--synchro summon
	aux.AddSynchroProcedure(c, nil, aux.NonTuner(Card.IsRace, RACE_PSYCHO), 1)
	c:EnableReviveLimit()
	--atk
	local e1 = Effect.CreateEffect(c)
	e1:SetDescription(aux.Stringid(id, 0))
	e1:SetCategory(CATEGORY_ATKCHANGE)
	e1:SetType(EFFECT_TYPE_IGNITION)
	e1:SetRange(LOCATION_MZONE)
	e1:SetCountLimit(1)
	e1:SetCondition(s.atkcon)
	e1:SetOperation(s.atkop)
	c:RegisterEffect(e1)
end
function s.atkcon(e, tp, eg, ep, ev, re, r, rp)
	return Duel.GetFieldGroupCount(tp, 0, LOCATION_HAND) ~= 0
end
function s.atkop(e, tp, eg, ep, ev, re, r, rp)
	local c = e:GetHandler()
	if not c:IsRelateToEffect(e) or c:IsFacedown() or Duel.GetFieldGroupCount(tp, 0, LOCATION_HAND) == 0 then
		return
	end
	local g = Duel.GetFieldGroup(tp, 0, LOCATION_HAND):RandomSelect(tp, 1)
	local tc = g:GetFirst()
	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CARDTYPE)
	local op = Duel.AnnounceType(tp)
	Duel.ConfirmCards(tp, tc)
	Duel.ShuffleHand(1 - tp)
	if (op == 0 and tc:IsType(TYPE_MONSTER)) or (op == 1 and tc:IsType(TYPE_SPELL)) or (op == 2 and tc:IsType(TYPE_TRAP)) then
		local e1 = Effect.CreateEffect(c)
		e1:SetType(EFFECT_TYPE_SINGLE)
		e1:SetCode(EFFECT_UPDATE_ATTACK)
		e1:SetValue(1000)
		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE + RESET_PHASE + PHASE_END, 2)
		c:RegisterEffect(e1)
	end
end

