Cerynemesia, Mystical Beast of the Forest
- Card ID:
43632709 - Format: Standard
- Script:
Scripts/c43632709.lua
Stats
| Field | Value |
|---|---|
| Type | 0x21 |
| ATK | 0 |
| DEF | 1600 |
| Level/Rank/Link | 0x2 |
| Race | 0x4000 |
| Attribute | 0x1 |
| Category | 0x50004 |
Card Text
text
If this card is Normal or Special Summoned: You can banish (face-up) 1 Beast monster from your hand or face-up field until the End Phase; Special Summon 1 EARTH Beast monster from your Deck or GY, with an equal or lower Level than that monster's original Level, then your opponent can Special Summon 1 monster from their hand.
You can only use this effect of "Cerynemesia, Mystical Beast of the Forest" once per turn.
Your opponent's monsters that can attack must attack the monster you control with the highest ATK (their choice, if tied).Detected API Calls
Auxiliary.NecroValleyFilterAuxiliary.StringidAuxiliary.covcheckCard.GetAttackCard.GetFieldIDCard.GetFlagEffectLabelCard.GetOriginalLevelCard.IsAbleToRemoveAsCostCard.IsAttributeCard.IsCanBeSpecialSummonedCard.IsFaceupCard.IsFaceupExCard.IsLocationCard.IsPreviousLocationCard.IsRaceCard.RegisterEffectCard.RegisterFlagEffectDuel.BreakEffectDuel.GetLocationCountDuel.GetMZoneCountDuel.GetMatchingGroupDuel.HintDuel.IsExistingMatchingCardDuel.RegisterEffectDuel.RemoveDuel.ReturnToFieldDuel.SelectMatchingCardDuel.SelectYesNoDuel.SendtoHandDuel.SetOperationInfoDuel.SpecialSummonEffect.CloneEffect.CreateEffectEffect.GetFieldIDEffect.GetHandlerEffect.GetHandlerPlayerEffect.GetLabelEffect.GetLabelObjectEffect.IsCostCheckedEffect.Reset- ...and 21 more
Script
lua
--Cerynemesia, Mystical Beast of the Forest
local s,id,o=GetID()
function s.initial_effect(c)
--special summon
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCountLimit(1,id)
e1:SetCost(s.cost)
e1:SetTarget(s.thtg)
e1:SetOperation(s.thop)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e2)
--must attack
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_MUST_ATTACK)
e3:SetRange(LOCATION_MZONE)
e3:SetTargetRange(0,LOCATION_MZONE)
e3:SetCondition(s.macon)
c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetCode(EFFECT_MUST_ATTACK_MONSTER)
e4:SetValue(s.atklimit)
c:RegisterEffect(e4)
end
function s.rmfilter(c,e,tp)
return c:IsFaceupEx() and c:IsRace(RACE_BEAST) and c:IsAbleToRemoveAsCost()
and Duel.GetMZoneCount(tp,c)>0 and (not c:IsLocation(LOCATION_MZONE) or aux.covcheck(c))
and Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil,e,tp,c:GetOriginalLevel())
end
function s.spfilter(c,e,tp,olv)
return c:GetOriginalLevel()<=olv and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsRace(RACE_BEAST) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function s.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.rmfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil,e,tp) end
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g=Duel.SelectMatchingCard(tp,s.rmfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil,e,tp)
Duel.Remove(g,POS_FACEUP,REASON_COST+REASON_TEMPORARY)
local tc=g:GetFirst()
e:SetLabel(tc:GetOriginalLevel())
local fid=c:GetFieldID()
tc:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,fid,aux.Stringid(id,2))
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetCountLimit(1)
e1:SetLabel(fid)
e1:SetReset(RESET_PHASE+PHASE_END)
e1:SetLabelObject(tc)
e1:SetCondition(s.retcon)
e1:SetOperation(s.retop)
Duel.RegisterEffect(e1,tp)
end
function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:IsCostChecked() end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK+LOCATION_GRAVE)
end
function s.thop(e,tp,eg,ep,ev,re,r,rp)
local lv=e:GetLabel()
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local sg=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(s.spfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,1,nil,e,tp,lv)
if sg:GetCount()>0 and Duel.SpecialSummon(sg,0,tp,tp,false,false,POS_FACEUP)~=0 then
local tg=Duel.GetMatchingGroup(Card.IsCanBeSpecialSummoned,tp,0,LOCATION_HAND,nil,e,0,1-tp,false,false)
if tg:GetCount()>0 and Duel.GetLocationCount(1-tp,LOCATION_MZONE)>0
and Duel.SelectYesNo(1-tp,aux.Stringid(id,1)) then
Duel.BreakEffect()
Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON)
local ssg=tg:Select(1-tp,1,1,nil)
Duel.SpecialSummon(ssg,0,1-tp,1-tp,false,false,POS_FACEUP)
end
end
end
function s.retcon(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject()
if tc:GetFlagEffectLabel(id)==e:GetLabel() then
return true
else
e:Reset()
return false
end
end
function s.retop(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject()
if tc:IsPreviousLocation(LOCATION_MZONE) then
Duel.ReturnToField(tc)
else
Duel.SendtoHand(tc,tp,REASON_EFFECT)
end
end
function s.macon(e)
return Duel.IsExistingMatchingCard(Card.IsFaceup,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil)
end
function s.atklimit(e,c)
local g=Duel.GetMatchingGroup(Card.IsFaceup,e:GetHandlerPlayer(),LOCATION_MZONE,0,nil):GetMaxGroup(Card.GetAttack)
return g and g:IsContains(c)
end