Shooting Majestic Star Dragon
- Card ID:
40939228 - Format: Standard
- Script:
Scripts/c40939228.lua
Stats
| Field | Value |
|---|---|
| Type | 0x2021 |
| ATK | 4000 |
| DEF | 3300 |
| Level/Rank/Link | 0xb |
| Race | 0x2000 |
| Attribute | 0x8 |
| Category | 0x80008004 |
Card Text
text
"Majestic Dragon" + 1+ non-Tuners, including a Dragon Synchro Monster
Must first be Synchro Summoned.
Once per turn: You can negate the effects of 1 Effect Monster your opponent controls.
Gains 1 additional attack each Battle Phase for every monster in your GY that is "Stardust Dragon" or is a Synchro Monster that mentions it.
Once per turn, when your opponent activates a card or effect (Quick Effect): You can banish this card (until the End Phase), and if you do, negate the activation, and if you do that, banish that card.Detected API Calls
Auxiliary.AddCodeListAuxiliary.AddMaterialCodeListAuxiliary.AddSynchroMixProcedureAuxiliary.IsCodeListedAuxiliary.NegateEffectMonsterFilterAuxiliary.NonTunerAuxiliary.StringidAuxiliary.TunerAuxiliary.nbconAuxiliary.synlimitCard.EnableReviveLimitCard.GetFieldIDCard.GetFlagEffectLabelCard.GetOriginalCodeCard.IsAbleToRemoveCard.IsCodeCard.IsNotTunerCard.IsRaceCard.IsRelateToEffectCard.IsSynchroTypeCard.IsTypeCard.RegisterEffectCard.RegisterFlagEffectDuel.GetMatchingGroupCountDuel.HintDuel.HintSelectionDuel.IsChainNegatableDuel.IsExistingMatchingCardDuel.NegateActivationDuel.NegateRelatedChainDuel.RegisterEffectDuel.RemoveDuel.ReturnToFieldDuel.SelectMatchingCardDuel.SetOperationInfoEffect.CloneEffect.CreateEffectEffect.GetActivateLocationEffect.GetCategoryEffect.GetFieldID- ...and 22 more
Script
lua
--シューティング・セイヴァー・スター・ドラゴン
local s,id,o=GetID()
function c40939228.initial_effect(c)
aux.AddMaterialCodeList(c,21159309)
aux.AddCodeList(c,44508094)
--synchro summon
aux.AddSynchroMixProcedure(c,aux.Tuner(Card.IsCode,21159309),nil,nil,aux.NonTuner(nil),1,99,c40939228.syncheck)
c:EnableReviveLimit()
--special summon condition
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_SPSUMMON_CONDITION)
e1:SetRange(LOCATION_EXTRA)
e1:SetValue(aux.synlimit)
c:RegisterEffect(e1)
--disable
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(40939228,0))
e2:SetCategory(CATEGORY_DISABLE)
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1)
e2:SetTarget(c40939228.distg)
e2:SetOperation(c40939228.disop)
c:RegisterEffect(e2)
--extra attack
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_EXTRA_ATTACK)
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e3:SetRange(LOCATION_MZONE)
e3:SetValue(c40939228.atkval)
c:RegisterEffect(e3)
--negate
local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(40939228,1))
e4:SetCategory(CATEGORY_NEGATE+CATEGORY_REMOVE)
e4:SetType(EFFECT_TYPE_QUICK_O)
e4:SetCode(EVENT_CHAINING)
e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e4:SetRange(LOCATION_MZONE)
e4:SetCountLimit(1)
e4:SetCondition(c40939228.negcon)
e4:SetTarget(c40939228.negtg)
e4:SetOperation(c40939228.negop)
c:RegisterEffect(e4)
end
c40939228.material_type=TYPE_SYNCHRO
function c40939228.cfilter(c,syncard)
return c:IsRace(RACE_DRAGON) and c:IsSynchroType(TYPE_SYNCHRO) and c:IsNotTuner(syncard)
end
function c40939228.syncheck(g,syncard)
return g:IsExists(c40939228.cfilter,1,nil,syncard)
end
function c40939228.distg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(aux.NegateEffectMonsterFilter,tp,0,LOCATION_MZONE,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,tp,LOCATION_MZONE)
end
function c40939228.disop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISABLE)
local g=Duel.SelectMatchingCard(tp,aux.NegateEffectMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
local tc=g:GetFirst()
if tc then
Duel.HintSelection(g)
Duel.NegateRelatedChain(tc,RESET_TURN_SET)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_DISABLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_DISABLE_EFFECT)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e2:SetValue(RESET_TURN_SET)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e2)
end
end
function c40939228.atkfilter(c)
return c:IsCode(44508094) or aux.IsCodeListed(c,44508094) and c:IsType(TYPE_SYNCHRO)
end
function c40939228.atkval(e,c)
return Duel.GetMatchingGroupCount(c40939228.atkfilter,e:GetHandlerPlayer(),LOCATION_GRAVE,0,nil)
end
function c40939228.negcon(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) and rp==1-tp
end
function c40939228.negtg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return c:IsAbleToRemove() and aux.nbcon(tp,re) end
Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0)
Duel.SetOperationInfo(0,CATEGORY_REMOVE,c,1,0,0)
if re:GetHandler():IsRelateToEffect(re) then
local g=eg:Clone()+c
Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,#g,0,0)
end
if re:GetActivateLocation()==LOCATION_GRAVE then
e:SetCategory(e:GetCategory()|CATEGORY_GRAVE_ACTION)
else
e:SetCategory(e:GetCategory()&~CATEGORY_GRAVE_ACTION)
end
end
function c40939228.negop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local fid=c:GetFieldID()
if c:IsRelateToEffect(e) and Duel.Remove(c,0,REASON_EFFECT+REASON_TEMPORARY)~=0 then
if c:GetOriginalCode()==id then
c:RegisterFlagEffect(40939228,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1,fid)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetReset(RESET_PHASE+PHASE_END)
e1:SetLabel(fid)
e1:SetLabelObject(c)
e1:SetCountLimit(1)
e1:SetCondition(c40939228.retcon)
e1:SetOperation(c40939228.retop)
Duel.RegisterEffect(e1,tp)
end
if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then
Duel.Remove(eg,POS_FACEUP,REASON_EFFECT)
end
end
end
function c40939228.retcon(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject()
if tc:GetFlagEffectLabel(40939228)~=e:GetLabel() then
e:Reset()
return false
else return true end
end
function c40939228.retop(e,tp,eg,ep,ev,re,r,rp)
Duel.ReturnToField(e:GetLabelObject())
end