name: Crossmind
card_text: 1 Psychic Tuner + 1+ non-Tuner monsters
  During the Main Phase (Quick Effect): You can target 1 of your banished Level 7 or lower Psychic monsters; Special Summon it. During the Battle Phase (Quick Effect): You can Tribute 1 other monster; gain LP equal to its original ATK, and if you do, this card gains that much ATK until the end of this turn. You can only use each effect of "Crossmind Archfiend" once per turn.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	--synchro summon
  	aux.AddSynchroProcedure(c, aux.FilterBoolFunction(Card.IsRace, RACE_PSYCHO), aux.NonTuner(nil), 1)
  	c:EnableReviveLimit()
  	--spsummon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e1:SetType(EFFECT_TYPE_QUICK_O)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetHintTiming(0, TIMING_MAIN_END)
  	e1:SetCountLimit(1, id)
  	e1:SetCondition(s.spcon)
  	e1:SetTarget(s.sptg)
  	e1:SetOperation(s.spop)
  	c:RegisterEffect(e1)
  	--lp and atk
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_RECOVER + CATEGORY_ATKCHANGE)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetCode(EVENT_FREE_CHAIN)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
  	e2:SetHintTiming(TIMING_DAMAGE_STEP)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.lpcon)
  	e2:SetCost(s.lpcost)
  	e2:SetTarget(s.lptg)
  	e2:SetOperation(s.lpop)
  	c:RegisterEffect(e2)
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.IsMainPhase()
  end
  function s.spfilter(c, e, tp)
  	return c:IsFaceupEx() and c:IsRace(RACE_PSYCHO) and c:IsLevelBelow(7) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false, POS_FACEUP)
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsLocation(LOCATION_REMOVED) and s.spfilter(chkc, e, tp) and chkc:IsControler(tp)
  	end
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsExistingTarget(s.spfilter, tp, LOCATION_REMOVED, 0, 1, nil, e, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectTarget(tp, s.spfilter, tp, LOCATION_REMOVED, 0, 1, 1, nil, e, tp)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, g, 1, 0, 0)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	if tc:IsRelateToChain() then
  		Duel.SpecialSummon(tc, 0, tp, tp, false, false, POS_FACEUP)
  	end
  end
  function s.lpcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.IsBattlePhase()
  end
  function s.cfilter(c)
  	return c:GetTextAttack() > 0
  end
  function s.lpcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	e:SetLabel(1)
  	if chk == 0 then
  		return Duel.CheckReleaseGroup(tp, s.cfilter, 1, e:GetHandler())
  	end
  	local g = Duel.SelectReleaseGroup(tp, s.cfilter, 1, 1, e:GetHandler())
  	e:SetLabel(g:GetFirst():GetTextAttack())
  	Duel.Release(g, REASON_COST)
  end
  function s.lptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetLabel() ~= 0
  	end
  	Duel.SetTargetPlayer(tp)
  	Duel.SetTargetParam(e:GetLabel())
  	Duel.SetOperationInfo(0, CATEGORY_RECOVER, nil, 0, tp, e:GetLabel())
  	e:SetLabel(0)
  end
  function s.lpop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local p, d = Duel.GetChainInfo(0, CHAININFO_TARGET_PLAYER, CHAININFO_TARGET_PARAM)
  	local lp = Duel.Recover(p, d, REASON_EFFECT)
  	if lp > 0 and c:IsFaceup() and c:IsRelateToChain() then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  		e1:SetRange(LOCATION_MZONE)
  		e1:SetCode(EFFECT_UPDATE_ATTACK)
  		e1:SetValue(lp)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE + RESET_PHASE + PHASE_END)
  		c:RegisterEffect(e1)
  	end
  end
  
  
source_text: Crossmind
  1 Psychic Tuner + 1+ non-Tuner monsters
  During the Main Phase (Quick Effect): You can target 1 of your banished Level 7 or lower Psychic monsters; Special Summon it. During the Battle Phase (Quick Effect): You can Tribute 1 other monster; gain LP equal to its original ATK, and if you do, this card gains that much ATK until the end of this turn. You can only use each effect of "Crossmind Archfiend" once per turn.
target_text: -- Crossmind
  local s, id, o = GetID()
  function s.initial_effect(c)
  	--synchro summon
  	aux.AddSynchroProcedure(c, aux.FilterBoolFunction(Card.IsRace, RACE_PSYCHO), aux.NonTuner(nil), 1)
  	c:EnableReviveLimit()
  	--spsummon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e1:SetType(EFFECT_TYPE_QUICK_O)
  	e1:SetCode(EVENT_FREE_CHAIN)
  	e1:SetRange(LOCATION_MZONE)
  	e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e1:SetHintTiming(0, TIMING_MAIN_END)
  	e1:SetCountLimit(1, id)
  	e1:SetCondition(s.spcon)
  	e1:SetTarget(s.sptg)
  	e1:SetOperation(s.spop)
  	c:RegisterEffect(e1)
  	--lp and atk
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_RECOVER + CATEGORY_ATKCHANGE)
  	e2:SetType(EFFECT_TYPE_QUICK_O)
  	e2:SetCode(EVENT_FREE_CHAIN)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
  	e2:SetHintTiming(TIMING_DAMAGE_STEP)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.lpcon)
  	e2:SetCost(s.lpcost)
  	e2:SetTarget(s.lptg)
  	e2:SetOperation(s.lpop)
  	c:RegisterEffect(e2)
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.IsMainPhase()
  end
  function s.spfilter(c, e, tp)
  	return c:IsFaceupEx() and c:IsRace(RACE_PSYCHO) and c:IsLevelBelow(7) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false, POS_FACEUP)
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	if chkc then
  		return chkc:IsLocation(LOCATION_REMOVED) and s.spfilter(chkc, e, tp) and chkc:IsControler(tp)
  	end
  	if chk == 0 then
  		return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsExistingTarget(s.spfilter, tp, LOCATION_REMOVED, 0, 1, nil, e, tp)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectTarget(tp, s.spfilter, tp, LOCATION_REMOVED, 0, 1, 1, nil, e, tp)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, g, 1, 0, 0)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local tc = Duel.GetFirstTarget()
  	if tc:IsRelateToChain() then
  		Duel.SpecialSummon(tc, 0, tp, tp, false, false, POS_FACEUP)
  	end
  end
  function s.lpcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.IsBattlePhase()
  end
  function s.cfilter(c)
  	return c:GetTextAttack() > 0
  end
  function s.lpcost(e, tp, eg, ep, ev, re, r, rp, chk)
  	e:SetLabel(1)
  	if chk == 0 then
  		return Duel.CheckReleaseGroup(tp, s.cfilter, 1, e:GetHandler())
  	end
  	local g = Duel.SelectReleaseGroup(tp, s.cfilter, 1, 1, e:GetHandler())
  	e:SetLabel(g:GetFirst():GetTextAttack())
  	Duel.Release(g, REASON_COST)
  end
  function s.lptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return e:GetLabel() ~= 0
  	end
  	Duel.SetTargetPlayer(tp)
  	Duel.SetTargetParam(e:GetLabel())
  	Duel.SetOperationInfo(0, CATEGORY_RECOVER, nil, 0, tp, e:GetLabel())
  	e:SetLabel(0)
  end
  function s.lpop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local p, d = Duel.GetChainInfo(0, CHAININFO_TARGET_PLAYER, CHAININFO_TARGET_PARAM)
  	local lp = Duel.Recover(p, d, REASON_EFFECT)
  	if lp > 0 and c:IsFaceup() and c:IsRelateToChain() then
  		local e1 = Effect.CreateEffect(c)
  		e1:SetType(EFFECT_TYPE_SINGLE)
  		e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
  		e1:SetRange(LOCATION_MZONE)
  		e1:SetCode(EFFECT_UPDATE_ATTACK)
  		e1:SetValue(lp)
  		e1:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE + RESET_PHASE + PHASE_END)
  		c:RegisterEffect(e1)
  	end
  end
  
  