|
1 | 1 | --フラッシュ・エフェクト |
| 2 | +--Flash Effect |
2 | 3 | local s,id=GetID() |
3 | 4 | function s.initial_effect(c) |
4 | 5 | --Activate |
5 | 6 | local e1=Effect.CreateEffect(c) |
6 | | - e1:SetCategory(CATEGORY_NEGATE) |
| 7 | + e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DISABLE) |
7 | 8 | e1:SetType(EFFECT_TYPE_ACTIVATE) |
| 9 | + e1:SetProperty(EFFECT_FLAG_CARD_TARGET) |
8 | 10 | e1:SetCode(EVENT_CHAINING) |
9 | 11 | e1:SetCondition(s.condition) |
10 | 12 | e1:SetTarget(s.target) |
11 | 13 | e1:SetOperation(s.activate) |
12 | 14 | c:RegisterEffect(e1) |
13 | 15 | end |
14 | 16 | function s.condition(e,tp,eg,ep,ev,re,r,rp) |
15 | | - local ph=Duel.GetCurrentPhase() |
16 | | - return ph>=0x08 and ph<=0x20 and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev) |
| 17 | + local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION) |
| 18 | + return Duel.IsBattlePhase() and loc==LOCATION_MZONE and re:IsMonsterEffect() and Duel.IsChainDisablable(ev) |
17 | 19 | end |
18 | 20 | function s.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) |
19 | | - if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end |
20 | | - if chk==0 then return true end |
21 | | - Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0) |
22 | | -end |
23 | | -function s.filter2(c) |
24 | | - return c:IsFaceup() and c:IsType(TYPE_EFFECT) |
| 21 | + local rc=re:GetHandler() |
| 22 | + if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() and chkc==rc end |
| 23 | + if chk==0 then return rc:IsLocation(LOCATION_MZONE) and rc:IsCanBeEffectTarget(e) end |
| 24 | + Duel.SetOperationInfo(0,CATEGORY_ATKCHANGE,rc,1,0,800) |
| 25 | + Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,PLAYER_ALL,LOCATION_MZONE) |
25 | 26 | end |
26 | 27 | function s.activate(e,tp,eg,ep,ev,re,r,rp) |
27 | 28 | Duel.NegateActivation(ev) |
28 | 29 | local c=e:GetHandler() |
29 | | - local tc=re:GetHandler() |
30 | | - if tc:IsRelateToEffect(re) and tc:IsFaceup() then |
| 30 | + local rc=re:GetHandler() |
| 31 | + if then return end |
| 32 | + if rc and not rc:IsImmuneToEffect(e) and rc:IsLocation(LOCATION_MZONE) and rc:IsRelateToEffect(re) and rc:IsFaceup() then |
31 | 33 | local e1=Effect.CreateEffect(c) |
32 | 34 | e1:SetType(EFFECT_TYPE_SINGLE) |
33 | 35 | e1:SetCode(EFFECT_UPDATE_ATTACK) |
34 | | - e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_BATTLE) |
| 36 | + e1:SetReset(RESET_EVENT|RESETS_STANDARD|RESET_PHASE|PHASE_BATTLE) |
35 | 37 | e1:SetValue(800) |
36 | | - tc:RegisterEffect(e1) |
37 | | - end |
38 | | - local g=Duel.GetMatchingGroup(s.filter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil) |
39 | | - local sg=g:GetFirst() |
40 | | - while sg do |
41 | | - --disable |
42 | | - local e1=Effect.CreateEffect(c) |
43 | | - e1:SetType(EFFECT_TYPE_SINGLE) |
44 | | - e1:SetCode(EFFECT_DISABLE) |
45 | | - e1:SetReset(RESET_EVENT+RESETS_STANDARD) |
46 | | - sg:RegisterEffect(e1) |
47 | | - sg=g:GetNext() |
| 38 | + rc:RegisterEffect(e1) |
48 | 39 | end |
| 40 | + local g=Duel.GetMatchingGroup(Card.IsNegatableMonster,tp,LOCATION_MZONE,LOCATION_MZONE,nil) |
| 41 | + g:ForEach(function(tc) tc:NegateEffects(c,RESET_PHASE|PHASE_BATTLE,true) end) |
49 | 42 | end |
0 commit comments