name: Guoglim,
card_text: 1 Fish Tuner + 1+ non-Tuner monsters
  At the start of the Damage Step, if this card battles an opponent's monster: You can banish that opponent's monster. During your opponent's Standby Phase: You can banish this card, then, if the monsters used as material for this card's Synchro Summon are all in your GY, you can Special Summon all of them, but banish them when they leave the field. You can only use each effect of "Guoglim, Spear of the Ghoti" once per turn.
external_ids: local CARD_ID_0 = 59822133 --Blue-Eyes Spirit Dragon
  
lua: local CARD_ID_0 = 59822133 --Blue-Eyes Spirit Dragon
  local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	aux.AddSynchroProcedure(c, aux.FilterBoolFunction(Card.IsRace, RACE_FISH), aux.NonTuner(nil), 1)
  	--banish
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_REMOVE)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e1:SetCode(EVENT_BATTLE_START)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.rmtg)
  	e1:SetOperation(s.rmop)
  	c:RegisterEffect(e1)
  	--spsummon
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_REMOVE + CATEGORY_SPECIAL_SUMMON + CATEGORY_GRAVE_SPSUMMON)
  	e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_PHASE + PHASE_STANDBY)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.spcon)
  	e2:SetTarget(s.sptg)
  	e2:SetOperation(s.spop)
  	c:RegisterEffect(e2)
  end
  function s.rmtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local tc = e:GetHandler():GetBattleTarget()
  	if chk == 0 then
  		return tc and tc:IsControler(1 - tp) and tc:IsAbleToRemove()
  	end
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, tc, 1, 0, 0)
  end
  function s.rmop(e, tp, eg, ep, ev, re, r, rp)
  	local tc = e:GetHandler():GetBattleTarget()
  	if tc and tc:IsRelateToBattle() then
  		Duel.Remove(tc, POS_FACEUP, REASON_EFFECT)
  	end
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetTurnPlayer() == 1 - tp
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:IsAbleToRemove()
  	end
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, c, 1, 0, 0)
  end
  function s.mgfilter(c, e, tp, sync)
  	return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and (c:GetReason() & 0x80008) == 0x80008 and c:GetReasonCard() == sync and c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToEffect(e) then
  		return
  	end
  	local mg = c:GetMaterial()
  	local ct = #mg
  	if
  		Duel.Remove(c, POS_FACEUP, REASON_EFFECT) > 0
  		and c:IsLocation(LOCATION_REMOVED)
  		and c:GetSummonType() == SUMMON_TYPE_SYNCHRO
  		and ct > 0
  		and (ct == 1 or not Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0))
  		and ct <= Duel.GetLocationCount(tp, LOCATION_MZONE)
  		and mg:FilterCount(aux.NecroValleyFilter(s.mgfilter), nil, e, tp, c) == ct
  		and Duel.SelectYesNo(tp, aux.Stringid(id, 2))
  	then
  		Duel.BreakEffect()
  		for tc in aux.Next(mg) do
  			if Duel.SpecialSummonStep(tc, 0, tp, tp, false, false, POS_FACEUP) then
  				local e1 = Effect.CreateEffect(c)
  				e1:SetType(EFFECT_TYPE_SINGLE)
  				e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT)
  				e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  				e1:SetValue(LOCATION_REMOVED)
  				e1:SetReset(RESET_EVENT + RESETS_REDIRECT)
  				tc:RegisterEffect(e1, true)
  			end
  		end
  		Duel.SpecialSummonComplete()
  	end
  end
  
  
source_text: Guoglim,
  1 Fish Tuner + 1+ non-Tuner monsters
  At the start of the Damage Step, if this card battles an opponent's monster: You can banish that opponent's monster. During your opponent's Standby Phase: You can banish this card, then, if the monsters used as material for this card's Synchro Summon are all in your GY, you can Special Summon all of them, but banish them when they leave the field. You can only use each effect of "Guoglim, Spear of the Ghoti" once per turn.
target_text: -- Guoglim,
  local CARD_ID_0 = 59822133 --Blue-Eyes Spirit Dragon
  local s, id, o = GetID()
  function s.initial_effect(c)
  	c:EnableReviveLimit()
  	aux.AddSynchroProcedure(c, aux.FilterBoolFunction(Card.IsRace, RACE_FISH), aux.NonTuner(nil), 1)
  	--banish
  	local e1 = Effect.CreateEffect(c)
  	e1:SetDescription(aux.Stringid(id, 0))
  	e1:SetCategory(CATEGORY_REMOVE)
  	e1:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_TRIGGER_O)
  	e1:SetCode(EVENT_BATTLE_START)
  	e1:SetCountLimit(1, id)
  	e1:SetTarget(s.rmtg)
  	e1:SetOperation(s.rmop)
  	c:RegisterEffect(e1)
  	--spsummon
  	local e2 = Effect.CreateEffect(c)
  	e2:SetDescription(aux.Stringid(id, 1))
  	e2:SetCategory(CATEGORY_REMOVE + CATEGORY_SPECIAL_SUMMON + CATEGORY_GRAVE_SPSUMMON)
  	e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_O)
  	e2:SetCode(EVENT_PHASE + PHASE_STANDBY)
  	e2:SetRange(LOCATION_MZONE)
  	e2:SetCountLimit(1, id + o)
  	e2:SetCondition(s.spcon)
  	e2:SetTarget(s.sptg)
  	e2:SetOperation(s.spop)
  	c:RegisterEffect(e2)
  end
  function s.rmtg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local tc = e:GetHandler():GetBattleTarget()
  	if chk == 0 then
  		return tc and tc:IsControler(1 - tp) and tc:IsAbleToRemove()
  	end
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, tc, 1, 0, 0)
  end
  function s.rmop(e, tp, eg, ep, ev, re, r, rp)
  	local tc = e:GetHandler():GetBattleTarget()
  	if tc and tc:IsRelateToBattle() then
  		Duel.Remove(tc, POS_FACEUP, REASON_EFFECT)
  	end
  end
  function s.spcon(e, tp, eg, ep, ev, re, r, rp)
  	return Duel.GetTurnPlayer() == 1 - tp
  end
  function s.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
  	local c = e:GetHandler()
  	if chk == 0 then
  		return c:IsAbleToRemove()
  	end
  	Duel.SetOperationInfo(0, CATEGORY_REMOVE, c, 1, 0, 0)
  end
  function s.mgfilter(c, e, tp, sync)
  	return c:IsControler(tp) and c:IsLocation(LOCATION_GRAVE) and (c:GetReason() & 0x80008) == 0x80008 and c:GetReasonCard() == sync and c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
  end
  function s.spop(e, tp, eg, ep, ev, re, r, rp)
  	local c = e:GetHandler()
  	if not c:IsRelateToEffect(e) then
  		return
  	end
  	local mg = c:GetMaterial()
  	local ct = #mg
  	if
  		Duel.Remove(c, POS_FACEUP, REASON_EFFECT) > 0
  		and c:IsLocation(LOCATION_REMOVED)
  		and c:GetSummonType() == SUMMON_TYPE_SYNCHRO
  		and ct > 0
  		and (ct == 1 or not Duel.IsPlayerAffectedByEffect(tp, CARD_ID_0))
  		and ct <= Duel.GetLocationCount(tp, LOCATION_MZONE)
  		and mg:FilterCount(aux.NecroValleyFilter(s.mgfilter), nil, e, tp, c) == ct
  		and Duel.SelectYesNo(tp, aux.Stringid(id, 2))
  	then
  		Duel.BreakEffect()
  		for tc in aux.Next(mg) do
  			if Duel.SpecialSummonStep(tc, 0, tp, tp, false, false, POS_FACEUP) then
  				local e1 = Effect.CreateEffect(c)
  				e1:SetType(EFFECT_TYPE_SINGLE)
  				e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT)
  				e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
  				e1:SetValue(LOCATION_REMOVED)
  				e1:SetReset(RESET_EVENT + RESETS_REDIRECT)
  				tc:RegisterEffect(e1, true)
  			end
  		end
  		Duel.SpecialSummonComplete()
  	end
  end
  
  