|
| 1 | +--暗黒のマンティコア |
| 2 | +--Manticore of Darkness (GOAT) |
| 3 | +--Its effect can be activated even if sent to the GY via the hand adjustment during the End Phase |
| 4 | +local s,id=GetID() |
| 5 | +function s.initial_effect(c) |
| 6 | + --Register when sent to the GY |
| 7 | + local e1=Effect.CreateEffect(c) |
| 8 | + e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) |
| 9 | + e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) |
| 10 | + e1:SetCode(EVENT_TO_GRAVE) |
| 11 | + e1:SetOperation(s.tgop) |
| 12 | + c:RegisterEffect(e1) |
| 13 | + --Special Summon |
| 14 | + local e2=Effect.CreateEffect(c) |
| 15 | + e2:SetDescription(aux.Stringid(id,0)) |
| 16 | + e2:SetCategory(CATEGORY_SPECIAL_SUMMON) |
| 17 | + e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) |
| 18 | + e2:SetCode(EVENT_PHASE+PHASE_END) |
| 19 | + e2:SetRange(LOCATION_GRAVE) |
| 20 | + e2:SetCountLimit(1) |
| 21 | + e2:SetCondition(s.spcon) |
| 22 | + e2:SetCost(s.spcost) |
| 23 | + e2:SetTarget(s.sptg) |
| 24 | + e2:SetOperation(s.spop) |
| 25 | + c:RegisterEffect(e2) |
| 26 | + local e3=e2:Clone() |
| 27 | + e3:SetCode(id) |
| 28 | + e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) |
| 29 | + e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE) |
| 30 | + e3:SetCondition(aux.TRUE) |
| 31 | + c:RegisterEffect(e3) |
| 32 | +end |
| 33 | +function s.tgop(e,tp,eg,ep,ev,re,r,rp) |
| 34 | + if r&REASON_RETURN~=0 then return end |
| 35 | + if (r&(REASON_RULE|REASON_DISCARD|REASON_ADJUST))==(REASON_RULE|REASON_DISCARD|REASON_ADJUST) then |
| 36 | + Duel.RaiseSingleEvent(e:GetHandler(),id,e,0,0,0,0) |
| 37 | + else |
| 38 | + e:GetHandler():RegisterFlagEffect(id,RESETS_STANDARD_PHASE_END,0,1) |
| 39 | + end |
| 40 | +end |
| 41 | +function s.spcon(e,tp,eg,ep,ev,re,r,rp) |
| 42 | + return e:GetHandler():GetFlagEffect(id)~=0 |
| 43 | +end |
| 44 | +function s.costfilter(c,ft) |
| 45 | + return c:IsRace(RACES_BEAST_BWARRIOR_WINGB) and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsAbleToGraveAsCost() |
| 46 | + and (ft>0 or (c:IsLocation(LOCATION_MZONE) and c:GetSequence()<5)) |
| 47 | +end |
| 48 | +function s.spcost(e,tp,eg,ep,ev,re,r,rp,chk) |
| 49 | + local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) |
| 50 | + if chk==0 then return ft>-1 and Duel.IsExistingMatchingCard(s.costfilter,tp,LOCATION_HAND|LOCATION_MZONE,0,1,nil,ft) end |
| 51 | + Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) |
| 52 | + local g=Duel.SelectMatchingCard(tp,s.costfilter,tp,LOCATION_HAND|LOCATION_MZONE,0,1,1,nil,ft) |
| 53 | + Duel.SendtoGrave(g,REASON_COST) |
| 54 | +end |
| 55 | +function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk) |
| 56 | + if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end |
| 57 | + Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) |
| 58 | +end |
| 59 | +function s.spop(e,tp,eg,ep,ev,re,r,rp) |
| 60 | + local c=e:GetHandler() |
| 61 | + if c:IsRelateToEffect(e) then |
| 62 | + Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) |
| 63 | + end |
| 64 | +end |
0 commit comments