name: Salamangreat
card_text: 1 Tuner + 1+ non-Tuner monsters
  You can target 1 Level 7 or lower FIRE monster in your GY; Special Summon it, and if you do, reduce this card's Level by that monster's original Level, also you cannot Special Summon monsters for the rest of this turn, except FIRE monsters. If this card is Synchro Summoned using "Salamangreat Burst Gryphon" as material: You can activate this effect; during the next Standby Phase, Special Summon 1 monster from your GY. You can only use each effect of "Salamangreat Burst Gryphon" once per turn.
lua: local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	--material
  	aux.AddSynchroProcedure(c, nil, aux.NonTuner(nil), 1)
  	--spsummon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_MATERIAL_CHECK)
  	e1:SetValue(s.check)
  	c:RegisterEffect(e1)
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 0))
  	e2:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_GRAVE_SPSUMMON)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e2:SetProperty(EFFECT_FLAG_DELAY)
  	e2:SetCountLimit(1, id)
  	e2:SetLabelObject(e1)
  	e2:SetCondition(s.regcon)
  	e2:SetOperation(s.regop)
  	c:RegisterEffect(e2)
  	--decrease level
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e3:SetType(EFFECT_TYPE_IGNITION)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCountLimit(1, id + o)
  	e3:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e3:SetTarget(s.dlvtg)
  	e3:SetOperation(s.dlvop)
  	c:RegisterEffect(e3)
  end
  function s.check(e, c)
  	if c:GetMaterial():IsExists(Card.IsCode, 1, nil, id) then
  		e:SetLabel(1)
  	else
  		e:SetLabel(0)
  	end
  end
  function s.regcon(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	return c:IsSummonType(SUMMON_TYPE_SYNCHRO) and e:GetLabelObject():GetLabel() == 1
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local rs = 1
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e1:SetCode(EVENT_PHASE + PHASE_STANDBY)
  	e1:SetCountLimit(1)
  	if Duel.GetCurrentPhase() == PHASE_STANDBY then
  		e1:SetLabel(Duel.GetTurnCount())
  		rs = 2
  	else
  		e1:SetLabel(0)
  	end
  	e1:SetCondition(s.spcon)
  	e1:SetOperation(s.spop)
  	e1:SetReset(RESET_PHASE + PHASE_STANDBY, rs)
  	Duel.RegisterEffect(e1, tp)
  end
  function s.filter(c, e, tp)
  	return c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetTurnCount() ~= e:GetLabel() and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_GRAVE, 0, 1, nil, e, tp)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_CARD, 0, id)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectMatchingCard(tp, aux.NecroValleyFilter(s.filter), tp, LOCATION_GRAVE, 0, 1, 1, nil, e, tp)
  	Duel.SpecialSummon(g, 0, tp, tp, false, false, POS_FACEUP)
  end
  function s.sfilter(c, e, tp, lv)
  	return c:IsLevelBelow(7) and c:IsLevelBelow(lv - 1) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
  end
  function s.dlvtg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local lv = e:GetHandler():GetLevel()
  	if chkc then
  		return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and s.sfilter(chkc, e, tp, lv)
  	end
  	if chk == 0 then
  		return lv > 1 and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsExistingTarget(s.sfilter, tp, LOCATION_GRAVE, 0, 1, nil, e, tp, lv)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectTarget(tp, s.sfilter, tp, LOCATION_GRAVE, 0, 1, 1, nil, e, tp, lv)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, g, 1, 0, 0)
  end
  function s.dlvop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e1:SetTargetRange(1, 0)
  	e1:SetTarget(aux.TargetBoolFunction(aux.NOT(Card.IsAttribute), ATTRIBUTE_FIRE))
  	e1:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e1, tp)
  	local tc = Duel.GetFirstTarget()
  	if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc, 0, tp, tp, false, false, POS_FACEUP) > 0 and c:IsRelateToEffect(e) and c:IsFaceup() then
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_SINGLE)
  		e2:SetCode(EFFECT_UPDATE_LEVEL)
  		e2:SetValue(-tc:GetOriginalLevel())
  		e2:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE)
  		c:RegisterEffect(e2)
  	end
  end
  
  
source_text: Salamangreat
  1 Tuner + 1+ non-Tuner monsters
  You can target 1 Level 7 or lower FIRE monster in your GY; Special Summon it, and if you do, reduce this card's Level by that monster's original Level, also you cannot Special Summon monsters for the rest of this turn, except FIRE monsters. If this card is Synchro Summoned using "Salamangreat Burst Gryphon" as material: You can activate this effect; during the next Standby Phase, Special Summon 1 monster from your GY. You can only use each effect of "Salamangreat Burst Gryphon" once per turn.
target_text: -- Salamangreat
  local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	--material
  	aux.AddSynchroProcedure(c, nil, aux.NonTuner(nil), 1)
  	--spsummon
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_SINGLE)
  	e1:SetCode(EFFECT_MATERIAL_CHECK)
  	e1:SetValue(s.check)
  	c:RegisterEffect(e1)
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 0))
  	e2:SetCategory(CATEGORY_SPECIAL_SUMMON + CATEGORY_GRAVE_SPSUMMON)
  	e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_SPSUMMON_SUCCESS)
  	e2:SetProperty(EFFECT_FLAG_DELAY)
  	e2:SetCountLimit(1, id)
  	e2:SetLabelObject(e1)
  	e2:SetCondition(s.regcon)
  	e2:SetOperation(s.regop)
  	c:RegisterEffect(e2)
  	--decrease level
  	local e3 = Effect.CreateEffect(c)
  	e3:SetDescription(aux.Stringid(id, 1))
  	e3:SetCategory(CATEGORY_SPECIAL_SUMMON)
  	e3:SetType(EFFECT_TYPE_IGNITION)
  	e3:SetRange(LOCATION_MZONE)
  	e3:SetCountLimit(1, id + o)
  	e3:SetProperty(EFFECT_FLAG_CARD_TARGET)
  	e3:SetTarget(s.dlvtg)
  	e3:SetOperation(s.dlvop)
  	c:RegisterEffect(e3)
  end
  function s.check(e, c)
  	if c:GetMaterial():IsExists(Card.IsCode, 1, nil, id) then
  		e:SetLabel(1)
  	else
  		e:SetLabel(0)
  	end
  end
  function s.regcon(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	return c:IsSummonType(SUMMON_TYPE_SYNCHRO) and e:GetLabelObject():GetLabel() == 1
  end
  function s.regop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local rs = 1
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
  	e1:SetCode(EVENT_PHASE + PHASE_STANDBY)
  	e1:SetCountLimit(1)
  	if Duel.GetCurrentPhase() == PHASE_STANDBY then
  		e1:SetLabel(Duel.GetTurnCount())
  		rs = 2
  	else
  		e1:SetLabel(0)
  	end
  	e1:SetCondition(s.spcon)
  	e1:SetOperation(s.spop)
  	e1:SetReset(RESET_PHASE + PHASE_STANDBY, rs)
  	Duel.RegisterEffect(e1, tp)
  end
  function s.filter(c, e, tp)
  	return c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetTurnCount() ~= e:GetLabel() and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsExistingMatchingCard(s.filter, tp, LOCATION_GRAVE, 0, 1, nil, e, tp)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	Duel.Hint(HINT_CARD, 0, id)
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectMatchingCard(tp, aux.NecroValleyFilter(s.filter), tp, LOCATION_GRAVE, 0, 1, 1, nil, e, tp)
  	Duel.SpecialSummon(g, 0, tp, tp, false, false, POS_FACEUP)
  end
  function s.sfilter(c, e, tp, lv)
  	return c:IsLevelBelow(7) and c:IsLevelBelow(lv - 1) and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
  end
  function s.dlvtg(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
  	local lv = e:GetHandler():GetLevel()
  	if chkc then
  		return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and s.sfilter(chkc, e, tp, lv)
  	end
  	if chk == 0 then
  		return lv > 1 and Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and Duel.IsExistingTarget(s.sfilter, tp, LOCATION_GRAVE, 0, 1, nil, e, tp, lv)
  	end
  	Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
  	local g = Duel.SelectTarget(tp, s.sfilter, tp, LOCATION_GRAVE, 0, 1, 1, nil, e, tp, lv)
  	Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, g, 1, 0, 0)
  end
  function s.dlvop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	local e1 = Effect.CreateEffect(c)
  	e1:SetType(EFFECT_TYPE_FIELD)
  	e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
  	e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
  	e1:SetTargetRange(1, 0)
  	e1:SetTarget(aux.TargetBoolFunction(aux.NOT(Card.IsAttribute), ATTRIBUTE_FIRE))
  	e1:SetReset(RESET_PHASE + PHASE_END)
  	Duel.RegisterEffect(e1, tp)
  	local tc = Duel.GetFirstTarget()
  	if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc, 0, tp, tp, false, false, POS_FACEUP) > 0 and c:IsRelateToEffect(e) and c:IsFaceup() then
  		local e2 = Effect.CreateEffect(c)
  		e2:SetType(EFFECT_TYPE_SINGLE)
  		e2:SetCode(EFFECT_UPDATE_LEVEL)
  		e2:SetValue(-tc:GetOriginalLevel())
  		e2:SetReset(RESET_EVENT + RESETS_STANDARD + RESET_DISABLE)
  		c:RegisterEffect(e2)
  	end
  end
  
  