示例#1
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group g1 = duel.GetIncludeNameCardFromArea("", false, card.ownerPlayer, ComVal.CardType_Monster_Fusion, ComVal.Area_Extra);
        Group g2 = duel.GetIncludeNameCardFromArea("", false, card.ownerPlayer, ComVal.cardType_Monster, ComVal.Area_Hand | ComVal.Area_Monster);

        g1 = g1.GetCanFusionGroup(g2);
        g1 = card.controller.GetCanSpSummonGroup(g1);
        if (g1.GroupNum == 0)
        {
            duel.FinishHandle();
            return;
        }
        GroupCardSelectBack callBack = delegate(Group theGroup)
        {
            Card  c  = theGroup.GetCard(0);
            Group g3 = c.cardMaterialFitler.GetGroup(g2);

            GroupCardSelectBack callBack1 = delegate(Group theGroup1)
            {
                normalDele dele = delegate
                {
                    duel.FinishHandle();
                };
                normalDele d = delegate
                {
                    duel.SpeicalSummon(ComVal.Area_Extra, c, card.ownerPlayer, card, ComVal.reason_Effect, effect, 0, dele);
                };
                duel.AddDelegate(d);
                duel.SendToGraveyard(ComVal.Area_Monster | ComVal.Area_Hand, theGroup1, card, ComVal.reason_FusionMaterial);
            };
            duel.SelectFusionMaterialFromGroup(g3, callBack1, c);
        };

        duel.SelectCardFromGroup(g1, callBack, 1, card.controller);
    }
示例#2
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group      g = duel.GetIncludeNameCardFromArea("", true, card.controller, 0, ComVal.Area_Field);
        normalDele d = delegate
        {
            duel.AddFinishHandle();
            duel.DiscardFromDeck(3, card, effect, card.controller);
        };

        GetMes d1 = delegate(bool val)
        {
            if (val)
            {
                GroupCardSelectBack d2 = delegate(Group target)
                {
                    duel.AddDelegate(d, true);
                    duel.SendToGraveyard(ComVal.Area_Field, target, card, ComVal.reason_EffectDestroy, effect);
                };
                duel.SelectCardFromGroup(g, d2, 1, card.controller);
            }
            else
            {
                d();
            }
        };

        if (g.GroupNum > 0)
        {
            duel.ShowDialogBox(card, d1, card.controller.isMy);
        }
        else
        {
            d();
        }
    }
示例#3
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group g = duel.GetIncludeNameCardFromArea("", true, null, ComVal.cardType_Monster, ComVal.Area_Monster);

        duel.AddFinishHandle();
        duel.SendToGraveyard(ComVal.Area_Field, g, card, ComVal.reason_EffectDestroy, effect);
    }
示例#4
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Card c = group.GetCard(0);

        if (c.curArea != ComVal.Area_Monster)
        {
            duel.FinishHandle();
            return;
        }
        Group g = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_MaskHERO, false, card.ownerPlayer, ComVal.CardType_Monster_Fusion, ComVal.Area_Extra);

        g = g.SiftingGroupInAttr(c.GetCurAttribute());
        g = card.controller.GetCanSpSummonGroup(g);
        GroupCardSelectBack d = delegate(Group g1)
        {
            Card c1 = g1.GetCard(0);

            normalDele dele = delegate
            {
                duel.FinishHandle();
            };
            duel.SpeicalSummon(ComVal.Area_Extra, c1, card.ownerPlayer, card, ComVal.reason_Effect, effect, 0, dele);
        };
        normalDele d1 = delegate
        {
            duel.SelectCardFromGroup(g, d, 1, card.controller);
        };

        duel.AddDelegate(d1);
        duel.SendToGraveyard(ComVal.Area_Monster, group, card, ComVal.reason_Effect, effect);
    }
示例#5
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        GroupCardSelectBack d = delegate(Group val)
        {
            card.EffectDataGroup = val;

            normalDele d1 = delegate
            {
                Group      result = new Group();
                normalDele d2     = delegate
                {
                    List <Card> list     = result.ToList();
                    int         reduceLP = 0;
                    foreach (var item in list)
                    {
                        reduceLP += item.GetCurAfk();
                    }
                    duel.ReduceLP(reduceLP, card.controller, ComVal.reason_Effect, card, effect);
                    duel.FinishHandle();
                };
                duel.AddDelegate(d2, true);
                Group target = card.EffectDataGroup.GetFitlerGroup(Fiter1);
                result = duel.SendToGraveyard(ComVal.Area_Monster, target, card, ComVal.reason_EffectDestroy, effect);
            };
            duel.AddDelayAction(d1, ComVal.resetEvent_LeaveEndPhase, 0);
            duel.FinishHandle();
        };

        duel.SpeicalSummon(ComVal.Area_Graveyard, group, card.controller, card, ComVal.reason_Effect, effect, ComVal.CardPutType_UpRightFront, d);
    }
示例#6
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Card target = card.EffectDataCard;

        mCard = target;
        Group g = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_SixSamurai, false, card.controller, ComVal.cardType_Monster, ComVal.Area_MainDeck, Fiter);

        if (!target.curArea.IsBind(ComVal.Area_Monster) || g.GroupNum == 0)
        {
            duel.FinishHandle();
            return;
        }

        GroupCardSelectBack callBack = delegate(Group val)
        {
            normalDele d = delegate
            {
                normalDele DestoryCard = delegate
                {
                    Card c = val.GetFirstCard();
                    duel.SendToGraveyard(ComVal.Area_Monster, c.ToGroup(), card, ComVal.reason_Effect, effect);
                };
                duel.AddDelayAction(DestoryCard, ComVal.resetEvent_LeaveEndPhase, 0);
                duel.FinishHandle();
            };
            duel.SpeicalSummon(ComVal.Area_MainDeck, val.GetFirstCard(), card.controller, card, ComVal.reason_Effect, effect, 0, d);
        };

        duel.SelectCardFromGroup(g, callBack, 1, card.controller);
    }
示例#7
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group g = duel.GetIncludeNameCardFromArea("", false, duel.GetOpsitePlayer(card.controller), ComVal.cardType_Monster, ComVal.Area_Monster);

        duel.AddFinishHandle();
        duel.SendToGraveyard(ComVal.Area_Monster, g, card, ComVal.reason_EffectDestroy, effect);
    }
示例#8
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group a = duel.GetIncludeNameCardFromArea("", false, card.opponentPlayer, 0, ComVal.Area_Trap, filer, false, null, null);

        duel.AddFinishHandle();
        duel.SendToGraveyard(ComVal.Area_Trap, a, card, ComVal.reason_EffectDestroy, effect);
    }
示例#9
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Card c = duel.GetCurChain().GetLastEffect().ownerCard;

        duel.GetCurChain().DisableLastEffect();
        duel.AddFinishHandle();
        duel.SendToGraveyard(ComVal.Area_Field, c.ToGroup(), card, ComVal.reason_Effect, effect);
    }
示例#10
0
    private void Cost(IDuel duel, Card card, LauchEffect effect)
    {
        GroupCardSelectBack d = delegate(Group g)
        {
            duel.AddFinishHandle();
            duel.SendToGraveyard(ComVal.Area_Hand, g, card, ComVal.reason_Cost, effect);
        };

        duel.SelectCardFromGroup(card.controller.group_HandCard, d, 1, card.controller);
    }
示例#11
0
    public void Cost(IDuel duel, Card card, LauchEffect effect)
    {
        Group a = duel.GetIncludeNameCardFromArea("", false, card.ownerPlayer, ComVal.cardType_Spell, ComVal.Area_Hand);
        GroupCardSelectBack callBack = delegate(Group group)
        {
            duel.AddFinishHandle();
            duel.SendToGraveyard(ComVal.Area_Hand, group, card, ComVal.reason_Cost, effect);
        };

        duel.SelectCardFromGroup(a, callBack, 1, card.controller);
    }
示例#12
0
    private void Cost(IDuel duel, Card card, LauchEffect effect)
    {
        Group g = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_Lightsworn, false, card.controller, ComVal.cardType_Monster, ComVal.Area_Hand);

        GroupCardSelectBack callBack = delegate(Group val)
        {
            duel.AddFinishHandle();
            duel.SendToGraveyard(ComVal.Area_Hand, val, card, ComVal.reason_Cost, effect);
        };

        duel.SelectCardFromGroup(g, callBack, 1, card.controller);
    }
示例#13
0
    private void Operation2(IDuel duel, Card card, LauchEffect effect, Group target = null)
    {
        Group g = duel.GetIncludeNameCardFromArea("", false, card.controller, ComVal.cardType_Monster, ComVal.Area_MainDeck, Fiter1);

        GroupCardSelectBack callBack = delegate(Group val)
        {
            duel.AddFinishHandle();
            duel.SendToGraveyard(ComVal.Area_MainDeck, val, card, ComVal.reason_Effect, effect);
        };

        duel.SelectCardFromGroup(g, callBack, 1, card.controller);
    }
示例#14
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group a = duel.GetIncludeNameCardFromArea("", false, effect.ownerCard.ownerPlayer, ComVal.cardType_Monster, ComVal.Area_MainDeck);

        GroupCardSelectBack CallBack = delegate(Group theGroup)
        {
            Card targetCard = theGroup.GetCard(0);
            duel.AddFinishHandle();
            duel.SendToGraveyard(ComVal.Area_MainDeck, theGroup, effect.ownerCard, ComVal.reason_Effect, effect);
        };

        duel.SelectCardFromGroup(a, CallBack, 1, card.controller);
    }
示例#15
0
    private void Cost(IDuel duel, Card card, LauchEffect effect)
    {
        Group g = GetCanReleaseGroup(duel, card);

        GroupCardSelectBack callBack = delegate(Group val)
        {
            card.EffectDataCard = val.GetCard(0);
            duel.AddFinishHandle();
            duel.SendToGraveyard(ComVal.Area_Field, val, card, ComVal.reason_Realease, effect);
        };

        duel.SelectCardFromGroup(g, callBack, 1, card.controller);
    }
示例#16
0
    private void Cost(IDuel duel, Card card, LauchEffect effect)
    {
        Group g = duel.GetIncludeNameCardFromArea("", false, card.controller, 0, ComVal.Area_Monster);

        g = g.GetFitlerGroup(Fiter);

        GroupCardSelectBack callBack = delegate(Group _g)
        {
            duel.SendToGraveyard(ComVal.Area_Monster, _g, card, ComVal.reason_Realease, effect);
        };

        duel.SelectCardFromGroup(g, callBack, 1, card.controller);
    }
示例#17
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group g = card.controller.group_MainDeck;

        g = g.GetFitlerGroup(Filter);

        GroupCardSelectBack callBack = delegate(Group val)
        {
            duel.AddFinishHandle();
            duel.SendToGraveyard(ComVal.Area_MainDeck, val, card, ComVal.reason_Effect, effect);
        };

        duel.SelectCardFromGroup(g, callBack, 1, card.controller);
    }
示例#18
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        if (!card.CanDestroy())
        {
            duel.FinishHandle();
            return;
        }
        normalDele d = delegate
        {
            duel.AddFinishHandle();
            duel.DrawCard(card.controller, 1, card, effect);
        };

        duel.AddDelegate(d, true);
        duel.SendToGraveyard(ComVal.Area_Field, group, card, ComVal.reason_Destroy, effect);
    }
示例#19
0
    public void Operation1(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group g = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_ElementalHERO, false, card.ownerPlayer, ComVal.cardType_Monster, ComVal.Area_MainDeck, null, true, null, card.cardID);
        GroupCardSelectBack callBack = delegate(Group theGroup)
        {
            normalDele d = delegate
            {
                Card        c  = theGroup.GetCard(0);
                StateEffect e1 = new StateEffect();
                e1.SetRangeArea(ComVal.Area_Monster);
                e1.SetCategory(ComVal.category_stateEffect | ComVal.category_limitTime);
                e1.SetCardEffectType(ComVal.cardEffectType_Single | ComVal.cardEffectType_normalStateEffect);
                e1.SetStateEffectType(ComVal.stateEffectType_ChangeAttribute);
                e1.SetTarget(card);
                e1.SetStateEffectVal(c.attribute);

                e1.SetResetCode(ComVal.resetEvent_LeaveEndPhase, 0);

                StateEffect e2 = e1.Clone() as StateEffect;
                e2.SetStateEffectType(ComVal.stateEffectType_ChangeAttack);
                e2.SetStateEffectVal(c.afk);

                StateEffect e3 = e1.Clone() as StateEffect;
                e3.SetStateEffectType(ComVal.stateEffectType_ChangeDef);
                e3.SetStateEffectVal(c.def);

                duel.ResignEffect(e1, card, card.ownerPlayer);
                duel.ResignEffect(e2, card, card.ownerPlayer);
                duel.ResignEffect(e3, card, card.ownerPlayer);

                LimitPlayerEffect e4 = new LimitPlayerEffect();
                e4.SetCategory(ComVal.category_limitEffect);
                e4.SetTargetType(TargetPlayerType.my);
                e4.SetLimitEffectType(ComVal.limitEffectType_spSummonLimit);
                e4.SetLimitEffectHandler(limitEffectHandler);
                e4.SetResetCode(ComVal.resetEvent_LeaveEndPhase, 0);
                duel.ResignEffect(e4, card, card.ownerPlayer);
                duel.FinishHandle();
            };
            duel.AddDelegate(d);
            duel.SendToGraveyard(ComVal.Area_MainDeck, theGroup, card, ComVal.reason_Effect, effect);
        };

        duel.SelectCardFromGroup(g, callBack, 1, card.controller);
    }
示例#20
0
    private void Operation1(IDuel duel, Card card, LauchEffect effect, Group target = null)
    {
        normalDele d = delegate
        {
            duel.AddFinishHandle();
            duel.DiscardFromDeck(3, card, effect, card.controller);
        };

        GroupCardSelectBack callBack = delegate(Group val)
        {
            duel.AddDelegate(d, true);
            duel.SendToGraveyard(ComVal.Area_Monster, val, card, ComVal.reason_EffectDestroy, effect);
        };

        Group g = duel.GetIncludeNameCardFromArea("", false, duel.GetOpsitePlayer(card.controller), ComVal.cardType_Monster, ComVal.Area_Monster);

        duel.SelectCardFromGroup(g, callBack, 1, card.controller);
    }
示例#21
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group g = duel.GetIncludeNameCardFromArea("", false, duel.GetOpsitePlayer(card.controller), 0, ComVal.Area_Trap);

        GroupCardSelectBack callBack = delegate(Group val)
        {
            duel.AddFinishHandle();
            duel.SendToGraveyard(ComVal.Area_Trap, val, card, ComVal.reason_EffectDestroy, effect);
        };
        duel.SelectCardFromGroup(g, callBack, 1, card.controller);
        duel.ChangeMonsterType(ComVal.CardPutType_layFront, card);

        StateEffect e1 = new StateEffect();
        e1.SetRangeArea(ComVal.Area_Monster);
        e1.SetCategory(ComVal.category_stateEffect | ComVal.category_limitTime);
        e1.SetCardEffectType(ComVal.cardEffectType_Single | ComVal.cardEffectType_normalStateEffect);
        e1.SetStateEffectType(ComVal.stateEffectType_unableChangeType);
        e1.SetTarget(card);
        e1.SetResetCode(ComVal.resetEvent_LeaveEndPhase, 1);
        duel.ResignEffect(e1, card, card.controller);
    }
示例#22
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Card c = group.GetCard(0);

        if (!c.curArea.IsBind(ComVal.Area_Graveyard))
        {
            duel.FinishHandle();
            return;
        }

        normalDele d = delegate
        {
            Group g = duel.GetIncludeNameCardFromArea("", false, duel.GetOpsitePlayer(card.controller), ComVal.cardType_Monster,
                                                      ComVal.Area_Monster);
            Group targetG = new Group();
            for (int i = 0; i < g.cardList.Count; i++)
            {
                if (g.cardList[i].GetCurAfk() <= c.GetBaseAfk())
                {
                    targetG.AddCard(g.cardList[i]);
                }
            }
            if (targetG.GroupNum == 0)
            {
                duel.FinishHandle();
                return;
            }

            GroupCardSelectBack callBack = delegate(Group val)
            {
                duel.AddFinishHandle();
                duel.SendToGraveyard(ComVal.Area_Monster, val, card, ComVal.reason_EffectDestroy, effect);
            };

            duel.SelectCardFromGroup(targetG, callBack, 1, card.controller);
        };

        duel.AddDelegate(d, true);
        duel.AddCardToHandFromArea(ComVal.Area_Graveyard, c, card.controller, card, effect);
    }
示例#23
0
    private void Operation1(IDuel duel, Card card, LauchEffect effect, Group target = null)
    {
        Group      g  = new Group();
        normalDele d1 = delegate
        {
            GetMes d2 = delegate(bool val)
            {
                if (val)
                {
                    GroupCardSelectBack gCallBack = delegate(Group g2)
                    {
                        duel.AddFinishHandle();
                        duel.SendToGraveyard(ComVal.Area_Field, g2, card, ComVal.reason_EffectDestroy, effect);
                    };

                    Group selectGroup = duel.GetIncludeNameCardFromArea("", true, card.controller, 0, ComVal.Area_Field);
                    duel.SelectCardFromGroup(selectGroup, gCallBack, g.GroupNum, card.controller, false);
                }
                else
                {
                    duel.FinishHandle();
                }
            };

            g = g.GetFitlerGroup(cardFiter);
            if (g.GroupNum > 0)
            {
                duel.ShowDialogBox(card, d2, card.controller.isMy);
            }
            else
            {
                duel.FinishHandle();
            }
        };

        duel.AddDelegate(d1, true);
        g = duel.DiscardFromDeck(3, card, effect, card.controller);
    }
示例#24
0
 private void Cost(IDuel duel, Card card, LauchEffect effect)
 {
     duel.AddFinishHandle();
     duel.SendToGraveyard(ComVal.Area_Hand, card.ToGroup(), card, ComVal.reason_Cost, effect);
 }
示例#25
0
 public void Operation1(IDuel duel, Card card, LauchEffect effect, Group group = null)
 {
     duel.AddFinishHandle();
     duel.SendToGraveyard(ComVal.Area_Trap, group, card, ComVal.reason_EffectDestroy, effect);
 }