name: Moissa
card_text: This card's name becomes "Skull Servant" while in the GY. If this card is Normal or Special Summoned: You can add 1 "Skull Servant" or 1 card that mentions it from your Deck to your hand, except "Moissa Wight", also you cannot Special Summon for the rest of this turn, except Zombie monsters. You can only use this effect of "Moissa Wight" once per turn. During your Main Phase, you can Normal Summon 1 Level 4 or lower Zombie monster in addition to your Normal Summon/Set. (You can only gain this effect once per turn.)
external_ids: local CARD_ID_0 = 32274490 --Skull Servant
  
lua: local CARD_ID_0 = 32274490 --Skull Servant
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.EnableChangeCode(c, CARD_ID_0, LOCATION_GRAVE)
  	--search
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_SEARCH + CATEGORY_TOHAND)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e1:SetCode(EVENT_SUMMON_SUCCESS)
  	e1:SetCountLimit(1, id)
  	e1:SetProperty(EFFECT_FLAG_DELAY)
  	e1:SetTarget(s.thtg)
  	e1:SetOperation(s.thop)
  	c:RegisterEffect(e1)
  	local e2 = e1:Clone()
  	e2:SetCode(EVENT_SPSUMMON_SUCCESS)
  	c:RegisterEffect(e2)
  	--extra summon
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetTargetRange(LOCATION_HAND + LOCATION_MZONE, 0)
  	e3:SetCode(EFFECT_EXTRA_SUMMON_COUNT)
  	e3:SetTarget(s.sumtg)
  	c:RegisterEffect(e3)
  end
  function s.thfilter(c)
  	return not c:IsCode(id) and aux.IsCodeOrListed(c, CARD_ID_0) and c:IsAbleToHand()
  end
  function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_DECK, 0, 1, nil)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, nil, 1, tp, LOCATION_DECK)
  end
  function s.thop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
  	local g = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
  	if #g > 0 then
  		Duel.SendtoHand(g, nil, REASON_EFFECT)
  		Duel.ConfirmCards(1 - tp, g)
  	end
  	local e1 = Effect.CreateEffect(e:GetHandler())
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e1:SetTargetRange(1, 0)
  	e1:SetTarget(s.splimit)
  	e1:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e1, tp)
  end
  function s.splimit(e, c, sump, sumtype, sumpos, targetp, se)
  	return not c:IsRace(RACE_ZOMBIE)
  end
  function s.sumtg(e, c)
  	return c:IsRace(RACE_ZOMBIE) and c:IsLevelBelow(4)
  end
  
  
source_text: Moissa
  This card's name becomes "Skull Servant" while in the GY. If this card is Normal or Special Summoned: You can add 1 "Skull Servant" or 1 card that mentions it from your Deck to your hand, except "Moissa Wight", also you cannot Special Summon for the rest of this turn, except Zombie monsters. You can only use this effect of "Moissa Wight" once per turn. During your Main Phase, you can Normal Summon 1 Level 4 or lower Zombie monster in addition to your Normal Summon/Set. (You can only gain this effect once per turn.)
target_text: -- Moissa
  local CARD_ID_0 = 32274490 --Skull Servant
  local s, id, o = GetID()
  function s.initial_effect(c)
  	aux.EnableChangeCode(c, CARD_ID_0, LOCATION_GRAVE)
  	--search
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_SEARCH + CATEGORY_TOHAND)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e1:SetCode(EVENT_SUMMON_SUCCESS)
  	e1:SetCountLimit(1, id)
  	e1:SetProperty(EFFECT_FLAG_DELAY)
  	e1:SetTarget(s.thtg)
  	e1:SetOperation(s.thop)
  	c:RegisterEffect(e1)
  	local e2 = e1:Clone()
  	e2:SetCode(EVENT_SPSUMMON_SUCCESS)
  	c:RegisterEffect(e2)
  	--extra summon
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetType(EFFECT_TYPE_FIELD)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetTargetRange(LOCATION_HAND + LOCATION_MZONE, 0)
  	e3:SetCode(EFFECT_EXTRA_SUMMON_COUNT)
  	e3:SetTarget(s.sumtg)
  	c:RegisterEffect(e3)
  end
  function s.thfilter(c)
  	return not c:IsCode(id) and aux.IsCodeOrListed(c, CARD_ID_0) and c:IsAbleToHand()
  end
  function s.thtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	if chk == 0 then
  		return Duel.IsExistingMatchingCard(s.thfilter, tp, LOCATION_DECK, 0, 1, nil)
  	end
  	Duel.SetOperationInfo(0, CATEGORY_TOHAND, nil, 1, tp, LOCATION_DECK)
  end
  function s.thop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_ATOHAND)
  	local g = Duel.SelectMatchingCard(tp, s.thfilter, tp, LOCATION_DECK, 0, 1, 1, nil)
  	if #g > 0 then
  		Duel.SendtoHand(g, nil, REASON_EFFECT)
  		Duel.ConfirmCards(1 - tp, g)
  	end
  	local e1 = Effect.CreateEffect(e:GetHandler())
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e1:SetTargetRange(1, 0)
  	e1:SetTarget(s.splimit)
  	e1:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e1, tp)
  end
  function s.splimit(e, c, sump, sumtype, sumpos, targetp, se)
  	return not c:IsRace(RACE_ZOMBIE)
  end
  function s.sumtg(e, c)
  	return c:IsRace(RACE_ZOMBIE) and c:IsLevelBelow(4)
  end
  
  