Esempio n. 1
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Card c = group.GetFirstCard();

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

        normalDele d1 = delegate
        {
            StateEffect e1 = new StateEffect();
            e1.SetCardEffectType(ComVal.cardEffectType_equip | ComVal.cardEffectType_Single);
            e1.SetCategory(ComVal.category_equipCard);
            e1.SetEquipCard(card, c);
            e1.SetRangeArea(ComVal.Area_Trap);
            duel.ResignEffect(e1, c, card.controller);

            duel.FinishHandle();
        };

        duel.AddDelegate(d1, true);
        duel.EquipCardFromArea(ComVal.Area_Graveyard, c, card.controller, card, effect);
    }
Esempio n. 2
0
    public void InitialEffect(Card card, Player player, IDuel duel)
    {
        LauchEffect e1 = new LauchEffect();

        e1.SetCategory(ComVal.category_spSummon);
        e1.SetCode(ComVal.code_ToGraveyard);
        e1.SetCardEffectType(ComVal.cardEffectType_mustLauch);
        e1.SetCheckLauch(CheckLauch);
        e1.SetOperation(Operation);
        e1.SetLauchArea(ComVal.Area_Graveyard);
        duel.ResignEffect(e1, card, player);

        StateEffect e2 = new StateEffect();

        e2.SetTarget(card);
        e2.SetCardEffectType(ComVal.cardEffectType_Single | ComVal.cardEffectType_normalStateEffect | ComVal.cardEffectType_unableReset);
        e2.SetStateEffectType(ComVal.stateEffectType_unableNormalSummon);
        duel.ResignEffect(e2, card, player);

        LauchEffect e3 = new LauchEffect();

        e3.SetCategory(ComVal.category_destroy | ComVal.category_disCard);
        e3.SetCode(ComVal.code_NoCode);
        e3.SetCardEffectType(ComVal.cardEffectType_normalLauch);
        e3.SetLauchArea(ComVal.Area_Monster);
        e3.SetCost(Cost);
        e3.SetCheckLauch(CheckLauch1);
        e3.SetOperation(Operation1);
        duel.ResignEffect(e3, card, player);
    }
Esempio n. 3
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        AttackEvent e  = duel.GetCurAttackEvent();
        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_addAfkVal);

        if (e.Attacker.controller == card.controller)
        {
            e1.SetTarget(e.Attacker);
            e1.SetStateEffectVal(e.Attackeder.GetCurAfk());
        }
        else
        {
            e1.SetTarget(e.Attackeder);
            e1.SetStateEffectVal(e.Attacker.GetCurAfk());
        }

        e1.SetResetCode(ComVal.resetEvent_LeaveEndPhase, 0);
        duel.ResignEffect(e1, card, card.controller);
        duel.FinishHandle();
    }
Esempio n. 4
0
 public void AddEquipEffect(StateEffect effect)
 {
     equipEffectList.Add(effect);
     if (effect.targetCard == this)
     {
         equipCardList.Add(effect.equipCard);
     }
 }
Esempio n. 5
0
 private int GetAddAfkVal(IDuel duel, Card card, StateEffect e)
 {
     if (duel.GetIncludeNameCardNumFromArea(ComStr.KeyWord_SixSamurai, false,
                                            card.controller, ComVal.cardType_Monster, ComVal.Area_Monster, Fiter, true, card) >= 2)
     {
         return(300);
     }
     else
     {
         return(0);
     }
 }
Esempio n. 6
0
    /// <summary>
    /// Adds state if states precedence is equal to or higher than some other state in set of states. Filters out all states of lower precedence;
    /// </summary>
    /// <param name="state"></param>
    /// <returns>True if state was added, false if not</returns>
    public bool SetState(StateEffect stateEffect)
    {
        var canStateBeSet = stateEffect.state.HasPrecedence(currentStateEffect.state);
        if (canStateBeSet)
        {
            ExecuteEffect(currentStateEffect.postEffect);
            currentStateEffect = stateEffect;
            //Exececute effect that is at start of state.
            ExecuteEffect(currentStateEffect.preEffect);

            setFloatText();
        }
        return canStateBeSet;
    }
Esempio n. 7
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        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_ChangeAttack);
        e1.SetTarget(card);
        e1.SetStateEffectVal(4000);
        e1.SetResetCode(ComVal.resetEvent_LeaveEndPhase, 1);
        duel.ResignEffect(e1, card, card.controller);
        duel.FinishHandle();
    }
Esempio n. 8
0
    private void Operation2(IDuel duel, Card card, LauchEffect effect, Group target = null)
    {
        Card targetCard = target.GetFirstCard();

        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_addAfkVal);
        e1.SetTarget(targetCard);
        e1.SetStateEffectVal(500);
        e1.SetResetCode(ComVal.resetEvent_LeaveEndPhase, 0);
        duel.ResignEffect(e1, card, card.controller);
        duel.FinishHandle();
    }
Esempio n. 9
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);
    }
Esempio n. 10
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);
    }
Esempio n. 11
0
    public void InitialEffect(Card card, Player player, IDuel duel)
    {
        LauchEffect e1 = new LauchEffect();

        e1.SetCardEffectType(ComVal.cardEffectType_mustToChooseLauch);
        e1.SetCategory(ComVal.category_spSummon);
        e1.SetCheckLauch(CheckLauch);
        e1.SetCode(ComVal.code_NormalSummon);
        e1.SetLauchArea(ComVal.Area_Monster);
        e1.SetOperation(Operation);
        duel.ResignEffect(e1, card, player);

        StateEffect e2 = new StateEffect();

        e2.SetRangeArea(ComVal.Area_Monster);
        e2.SetCardEffectType(ComVal.cardEffectType_normalStateEffect | ComVal.cardEffectType_Single | ComVal.cardEffectType_unableReset);
        e2.SetCategory(ComVal.category_stateEffect);
        e2.SetTarget(card);
        e2.SetStateEffectType(ComVal.stateEffectType_addAfkVal);
        e2.SetGetStateEffectVal(GetAddAfkVal);
        duel.ResignEffect(e2, card, player);
    }
Esempio n. 12
0
    public void InitialEffect(Card card, Player player, IDuel duel)
    {
        SpSummonEffect e1 = new SpSummonEffect();

        e1.SetCheckLauch(CheckLauch);
        e1.SetPutType(0);
        duel.ResignEffect(e1, card, player);

        StateEffect e2 = new StateEffect();

        e2.SetRangeArea(ComVal.Area_Monster);
        e2.SetCardEffectType(ComVal.cardEffectType_normalStateEffect | ComVal.cardEffectType_Single | ComVal.cardEffectType_unableReset);
        e2.SetCategory(ComVal.category_stateEffect);
        e2.SetTarget(card);
        e2.SetStateEffectType(ComVal.stateEffectType_addAfkVal);
        e2.SetGetStateEffectVal(GetAddAfkVal);
        duel.ResignEffect(e2, card, player);

        StateEffect e3 = (StateEffect)e2.Clone();

        e3.SetStateEffectType(ComVal.stateEffectType_addDefVal);
        duel.ResignEffect(e3, card, player);
    }
Esempio n. 13
0
    public void Operation1(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group b = duel.GetIncludeNameCardFromArea("", false, card.ownerPlayer, ComVal.cardType_Monster, ComVal.Area_MainDeck, filer, false, null, null);
        GroupCardSelectBack callBack = delegate(Group targetGroup)
        {
            Card       target  = targetGroup.GetCard(0);
            normalDele norDele = delegate()
            {
                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.SetTarget(target);
                e1.SetStateEffectType(ComVal.stateEffectType_unableAttack);
                e1.SetResetCode(ComVal.resetEvent_LeaveEndPhase, 0);
                duel.ResignEffect(e1, card, card.ownerPlayer);
                duel.FinishHandle();
            };
            duel.SpeicalSummon(ComVal.Area_MainDeck, target, card.ownerPlayer, card, ComVal.reason_Effect, effect, 0, norDele);
        };

        duel.SelectCardFromGroup(b, callBack, 1, card.controller);
    }
Esempio n. 14
0
    public void InitialEffect(Card card, Player player, IDuel duel)
    {
        card.SetMaterialFilter2(Fiter1, Fiter2);

        StateEffect e1 = new StateEffect();

        e1.SetRangeArea(ComVal.Area_Monster);
        e1.SetCardEffectType(ComVal.cardEffectType_normalStateEffect | ComVal.cardEffectType_Single | ComVal.cardEffectType_unableReset);
        e1.SetCategory(ComVal.category_stateEffect);
        e1.SetTarget(card);
        e1.SetStateEffectType(ComVal.stateEffectType_addAfkVal);
        e1.SetGetStateEffectVal(GetAddAfkVal);
        duel.ResignEffect(e1, card, player);

        LauchEffect e2 = new LauchEffect();

        e2.SetCategory(ComVal.category_destroy);
        e2.SetCode(ComVal.code_LeaveField);
        e2.SetCardEffectType(ComVal.cardEffectType_mustLauch);
        e2.SetCheckLauch(CheckLauch);
        e2.SetOperation(Operation);
        duel.ResignEffect(e2, card, player);
    }
Esempio n. 15
0
    public void InitialEffect(Card card, Player player, IDuel duel)
    {
        StateEffect e1 = new StateEffect();

        e1.SetRangeArea(ComVal.Area_Monster);
        e1.SetCategory(ComVal.category_stateEffect);
        e1.SetCardEffectType(ComVal.cardEffectType_Single | ComVal.cardEffectType_normalStateEffect | ComVal.cardEffectType_unableReset);
        e1.SetStateEffectType(ComVal.stateEffectType_addAfkVal);
        e1.SetTarget(card);
        e1.SetStateEffectVal(300);
        e1.SetCondtion(Condition);
        duel.ResignEffect(e1, card, player);

        LauchEffect e2 = new LauchEffect();

        e2.SetCategory(ComVal.category_disCard);
        e2.SetCheckLauch(CheckLauch);
        e2.SetOperation(Operation);
        e2.SetCode(ComVal.code_EnterEndPhase);
        e2.SetCardEffectType(ComVal.cardEffectType_mustLauch);
        e2.SetLauchArea(ComVal.Area_Monster);
        duel.ResignEffect(e2, card, player);
    }
Esempio n. 16
0
    public void InitialEffect(Card card, Player player, IDuel duel)
    {
        //不能解放
        StateEffect e1 = new StateEffect();

        e1.SetRangeArea(ComVal.Area_Monster);
        e1.SetCategory(ComVal.category_stateEffect);
        e1.SetCardEffectType(ComVal.cardEffectType_Single | ComVal.cardEffectType_normalStateEffect | ComVal.cardEffectType_unableReset);
        e1.SetStateEffectType(ComVal.stateEffectType_unableRelease);
        e1.SetTarget(card);
        duel.ResignEffect(e1, card, player);

        //变防守
        LauchEffect e2 = new LauchEffect();

        e2.SetCategory(ComVal.category_position);
        e2.SetLauchArea(ComVal.Area_Monster);
        e2.SetCardEffectType(ComVal.cardEffectType_mustLauch);
        e2.SetCode(ComVal.code_NormalSummon);
        e2.SetOperation(Operation);
        e2.SetCheckLauch(CheckLauch);
        duel.ResignEffect(e2, card, player);

        //特殊召唤
        LauchEffect e3 = new LauchEffect();

        e3.SetCategory(ComVal.category_spSummon);
        e3.SetCardEffectType(ComVal.cardEffectType_normalLauch);
        e3.SetCode(ComVal.code_NoCode);
        e3.SetLauchArea(ComVal.Area_Monster);
        e3.SetOperation(Operation1);
        e3.SetCost(Cost);
        e3.SetCheckLauch(CheckLauch1);
        e3.SetLauchPhase(ComVal.Phase_Mainphase);
        card.SetCardCountLimit(e3, 1);
        duel.ResignEffect(e3, card, player);
    }
Esempio n. 17
0
    public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null)
    {
        Group      g = new Group();
        normalDele d = delegate
        {
            g = g.GetFitlerGroup(fiter);
            if (g.GroupNum > 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_addAfkVal);
                e1.SetTarget(card);
                e1.SetStateEffectVal(200);
                e1.SetResetCode(ComVal.resetEvent_LeaveEndPhase, 1);
                duel.ResignEffect(e1, card, card.controller);
            }
            duel.FinishHandle();
        };

        duel.AddDelegate(d, true);
        g = duel.DiscardFromDeck(2, card, effect, card.controller);
    }
Esempio n. 18
0
 private int GetAddAfkVal(IDuel duel, Card card, StateEffect e)
 {
     return(duel.GetIncludeNameCardFromArea(ComStr.KeyWord_DragUnity, false, card.controller, 0, ComVal.Area_Field).GroupNum *200);
 }
Esempio n. 19
0
 private int GetAddAfkVal(IDuel duel, Card card, StateEffect e)
 {
     return(duel.GetIncludeNameCardNumFromArea("", true, null, ComVal.cardType_Monster, ComVal.Area_Monster, filter, true, card) * 500);
 }
Esempio n. 20
0
 public void AddMaterialXYZEffect(StateEffect effect)
 {
     materialsXYZEffectList.Add(effect);
 }
Esempio n. 21
0
    private int GetAddAfkVal(IDuel duel, Card card, StateEffect e)
    {
        Group g = card.controller.group_Remove;

        return(g.GetFitlerGroup(Fiter2).GroupNum * 300);
    }
Esempio n. 22
0
 public bool CanSetState(StateEffect stateEffect)
 {
     return stateEffect.state.HasPrecedence(currentStateEffect.state);
 }
Esempio n. 23
0
 /// <summary>
 /// Constructs a new statechain of in sequence a,b
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 private StateEffect(StateEffect a, StateEffect b)
     : this(a.state, a.duration, a.preEffect, a.duringEffect, a.postEffect)
 {
     this.nextState = b;
 }
Esempio n. 24
0
 public void AddMaterialSynchroEffect(StateEffect effect)
 {
     materialSynchroEffectList.Add(effect);
 }
Esempio n. 25
0
 private void ExecuteEffect(StateEffect.Callback effect)
 {
     if(effect != null)
     {
         effect();
     }
 }
Esempio n. 26
0
 public bool SetState(StateEffect state)
 {
     return stateManager.SetState(state);
 }
Esempio n. 27
0
 public void AddSingleEffect(StateEffect effect)
 {
     singleEffectList.Add(effect);
 }