--Hell Warrior of White Armageddon --scripted by Rawstone local s,id=GetID() function s.initial_effect(c) --fusion material c:EnableReviveLimit() aux.AddFusionProcFun2(c,s.ffilter2,s.ffilter,true) --splimit 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(s.splimit) c:RegisterEffect(e1) --resolve ban local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e2:SetCode(EVENT_CHAIN_SOLVING) e2:SetRange(LOCATION_MZONE) e2:SetOperation(s.disop) c:RegisterEffect(e2) --to 0, also banish local e3=Effect.CreateEffect(c) e3:SetCategory(CATEGORY_REMOVE+CATEGORY_ATKCHANGE) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e3:SetCode(EVENT_BATTLE_START) e3:SetCondition(s.descon) e3:SetTarget(s.destg) e3:SetOperation(s.desop) c:RegisterEffect(e3) --cannot be target local e4=Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_FIELD) e4:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) e4:SetRange(LOCATION_MZONE) e4:SetTargetRange(LOCATION_ONFIELD,0) e4:SetTarget(s.indestg) e4:SetValue(aux.indoval) c:RegisterEffect(e4) local e5=e4:Clone() e5:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e5:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e5:SetValue(aux.tgoval) c:RegisterEffect(e5) --banish all local e6=Effect.CreateEffect(c) e6:SetCategory(CATEGORY_REMOVE) e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e6:SetCode(EVENT_LEAVE_FIELD) e6:SetProperty(EFFECT_FLAG_DELAY) e6:SetCondition(s.thcon) e6:SetCost(s.crost) e6:SetTarget(s.sptg) e6:SetOperation(s.spop) c:RegisterEffect(e6) end function s.splimit(e,se,sp,st) return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION end function s.ffilter2(c) return c:GetSummonLocation()==LOCATION_EXTRA and c:IsLocation(LOCATION_MZONE) and c:IsRace(RACE_WARRIOR) end function s.ffilter(c) return c:IsRace(RACE_WARRIOR) and c:IsAttribute(ATTRIBUTE_LIGHT) end function s.descon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local bc=c:GetBattleTarget() return bc and bc:IsFaceup() and not bc:IsAttribute(ATTRIBUTE_LIGHT) end function s.destg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler():GetBattleTarget(),1,0,0) end function s.desop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local bc=e:GetHandler():GetBattleTarget() if bc:IsRelateToBattle() then local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SET_ATTACK) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetValue(0) e1:SetReset(RESET_EVENT+RESETS_STANDARD) bc:RegisterEffect(e1) local e2=e1:Clone() e2:SetCode(EFFECT_SET_DEFENSE) bc:RegisterEffect(e2) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_SINGLE) e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e3:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_BATTLE) e3:SetCondition(s.recon) e3:SetValue(LOCATION_REMOVED) bc:RegisterEffect(e3) end end function s.recon(e) return e:GetHandler():IsFaceup() end function s.indestg(e,c) return c:IsCode(49306994) end function s.eqcon2(e) return e:GetHandler():GetEquipGroup():IsExists(Card.IsCode,1,nil,49306994) end function s.thcon(e,tp,eg,ep,ev,re,r,rp) return s.eqcon2(e) and e:GetHandler():IsLocation(LOCATION_GRAVE) and e:GetHandler():IsReason(REASON_DESTROY) end function s.bfilter(c) return c:IsCode(49306994) and c:IsAbleToRemoveAsCost() and c:IsLocation(LOCATION_GRAVE) end function s.crost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() and Duel.IsExistingMatchingCard(s.bfilter,tp,LOCATION_GRAVE,0,1,nil) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local g=Duel.SelectMatchingCard(tp,s.bfilter,tp,LOCATION_GRAVE,0,1,1,nil) g:AddCard(e:GetHandler()) Duel.Remove(g,POS_FACEUP,REASON_COST) end function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end local g=Duel.GetMatchingGroup(Card.IsAbleToRemove,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,#g,0,0) end function s.spop(e,tp,eg,ep,ev,re,r,rp,chk) local g=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) Duel.Remove(g,POS_FACEUP,REASON_EFFECT) end function s.disop(e,tp,eg,ep,ev,re,r,rp) local rc=re:GetHandler() if ep==tp then return end if Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)==LOCATION_REMOVED then return false end if rp==1-tp and re:IsActiveType(TYPE_MONSTER) and rc:IsRelateToEffect(re) and e:GetHandler():GetFlagEffect(502239)==0 and Duel.SelectYesNo(tp,aux.Stringid(id,0)) then Duel.Remove(rc,POS_FACEUP,REASON_EFFECT) e:GetHandler():RegisterFlagEffect(502239,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1) end end