예제 #1
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;
            int          value  = M_SideEffectParam.GetParam_MultipliedInt("Damage");
            int          times  = M_SideEffectParam.GetParam_ConstInt("DamageTimes");

            player.GameManager.SideEffect_ILifeAction(
                delegate(ILife life)
            {
                for (int i = 0; i < times; i++)
                {
                    life.Damage(value);
                }
            },
                player,
                ChoiceCount,
                TargetRange,
                TargetSelect,
                executorInfo.TargetClientIds,
                executorInfo.TargetMechIds
                );
            return(true);
        }
예제 #2
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;
            int          value  = M_SideEffectParam.GetParam_MultipliedInt("AttackValue");

            if (value < 0)
            {
                return(true);
            }
            if (TargetRange == TargetRange.Self) // 对自身
            {
                player.GameManager.GetMech(executorInfo.MechId).M_MechAttack += value;
            }
            else
            {
                player.GameManager.SideEffect_MechAction(
                    delegate(ModuleMech mech) { mech.M_MechAttack += value; },
                    player,
                    0,
                    executorInfo.TargetMechIds,
                    TargetRange,
                    TargetSelect,
                    -1
                    );
            }
            return(true);
        }
예제 #3
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player      = (BattlePlayer)Player;
            int          healPercent = M_SideEffectParam.GetParam_MultipliedInt("Percent");

            if (TargetRange == TargetRange.Self) // 对自身
            {
                ModuleMech mech      = player.BattleGroundManager.GetMech(executorInfo.MechId);
                int        healValue = (int)Math.Ceiling((float)healPercent * mech.M_MechTotalLife / 100);
                player.BattleGroundManager.GetMech(executorInfo.MechId).Heal(healValue);
            }
            else
            {
                player.GameManager.SideEffect_ILifeAction(
                    delegate(ILife life)
                {
                    int healValue = (int)Math.Ceiling((float)healPercent * life.GetTotalLife() / 100);
                    life.Heal(healValue);
                },
                    player,
                    ChoiceCount,
                    TargetRange,
                    TargetSelect,
                    executorInfo.TargetClientIds,
                    executorInfo.TargetMechIds
                    );
            }
            return(true);
        }
예제 #4
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;
            int          value  = M_SideEffectParam.GetParam_MultipliedInt("Energy");
            int          times  = M_SideEffectParam.GetParam_ConstInt("Times");

            player.GameManager.SideEffect_ShipAction(
                delegate(BattlePlayer sp)
            {
                for (int i = 0; i < times; i++)
                {
                    sp.AddEnergy(value);
                }
            },
                player,
                ChoiceCount,
                TargetRange,
                TargetSelect,
                executorInfo.TargetClientIds);
            return(true);
        }
예제 #5
0
 public override string GenerateDesc()
 {
     return(HighlightStringFormat(
                DescRaws[LanguageManager_Common.GetCurrentLanguage()],
                GetDescOfTargetRange(),
                M_SideEffectParam.GetParam_MultipliedInt("ArmorValue")));
 }
예제 #6
0
 public override string GenerateDesc()
 {
     return(base.GenerateDesc() + HighlightStringFormat(DescRaws[LanguageManager_Common.GetCurrentLanguage()],
                                                        GetDescOfTargetRange(),
                                                        M_SideEffectParam.GetParam_ConstInt("CardCount"),
                                                        M_SideEffectParam.GetParam_MultipliedInt("CopyCount")));
 }
예제 #7
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;

            player.GameManager.SideEffect_ShipAction(
                delegate(BattlePlayer sp)
            {
                int cardCount = M_SideEffectParam.GetParam_ConstInt("CardCount");
                int copyCount = M_SideEffectParam.GetParam_MultipliedInt("CopyCount");

                if (executorInfo.CardInstanceId != ExecutorInfo.EXECUTE_INFO_NONE)
                {
                    List <int> cardIds = player.HandManager.GetRandomHandCardIds(cardCount, new HashSet <int> {
                        executorInfo.CardInstanceId
                    });

                    foreach (int cardId in cardIds)
                    {
                        player.HandManager.GetTempCardsByID(cardId, copyCount);
                    }
                }
            },
                player,
                ChoiceCount,
                TargetRange,
                TargetSelect,
                executorInfo.TargetClientIds);
            return(true);
        }
예제 #8
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;

            player.GameManager.SideEffect_ShipAction(
                delegate(BattlePlayer sp)
            {
                CardInfo_Base ci = sp.CardDeckManager.CardDeck.GetFirstCardInfo();
                if (ci != null)
                {
                    sp.HandManager.DrawCards(1);
                    for (int i = 0; i < M_SideEffectParam.GetParam_MultipliedInt("CardCount"); i++)
                    {
                        sp.HandManager.GetACardByID(ci.CardID);
                    }
                }
            },
                player,
                ChoiceCount,
                TargetRange,
                TargetSelect,
                executorInfo.TargetClientIds);
            return(true);
        }
예제 #9
0
파일: Heal.cs 프로젝트: tuita520/Mech-Storm
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;
            int          value  = M_SideEffectParam.GetParam_MultipliedInt("HealValue");

            if (TargetRange == TargetRange.Self) // 对自身
            {
                player.BattleGroundManager.GetMech(executorInfo.MechId).Heal(value);
            }
            else
            {
                player.GameManager.SideEffect_ILifeAction(
                    delegate(ILife life) { life.Heal(value); },
                    player,
                    ChoiceCount,
                    TargetRange,
                    TargetSelect,
                    executorInfo.TargetClientIds,
                    executorInfo.TargetMechIds
                    );
            }
            return(true);
        }
예제 #10
0
 public override string GenerateDesc()
 {
     return(base.GenerateDesc() + HighlightStringFormat(
                DescRaws[LanguageManager_Common.GetCurrentLanguage()],
                GetDescOfTargetRange(),
                M_SideEffectParam.GetParam_MultipliedInt("CardCount"),
                BaseInfo.CardTypeNameDict[LanguageManager_Common.GetCurrentLanguage()][(CardTypes)M_SideEffectParam.GetParam_ConstInt("DrawCardType")],
                M_SideEffectParam.GetParam_MultipliedInt("CardCount") <= 1 ? "" : "s"));
 }
예제 #11
0
        public override string GenerateDesc()
        {
            int times = M_SideEffectParam.GetParam_ConstInt("Times");

            return(base.GenerateDesc() + HighlightStringFormat(DescRaws[LanguageManager_Common.GetCurrentLanguage()],
                                                               GetDescOfTargetRange(),
                                                               M_SideEffectParam.GetParam_MultipliedInt("Energy"),
                                                               times > 1 ? ("*" + M_SideEffectParam.GetParam_ConstInt("Times")) : ""));
        }
예제 #12
0
        public int GetSideEffectFunctionBias()
        {
            CardInfo_Base card = AllCards.GetCard(M_SideEffectParam.GetParam_ConstInt("CardID"));

            if (card != null)
            {
                return(card.GetCardUseBias() * M_SideEffectParam.GetParam_MultipliedInt("CardCount") * 3);
            }
            else
            {
                return(0);
            }
        }
예제 #13
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;
            int          value  = M_SideEffectParam.GetParam_MultipliedInt("Energy");

            player.GameManager.SideEffect_ForeachMech(
                delegate(int validTargetCount) { player.AddEnergy(value * validTargetCount); },
                player,
                TargetRange);
            return(true);
        }
예제 #14
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player      = (BattlePlayer)Player;
            int          energyValue = M_SideEffectParam.GetParam_MultipliedInt("Energy");
            int          finalValue  = energyValue * player.GameManager.CountMechsByTargetRange(TargetRange, player);

            finalValue = Math.Min(finalValue, player.MyEnemyPlayer.EnergyLeft);
            player.AddEnergy(finalValue);
            player.MyEnemyPlayer.UseEnergy(finalValue);
            return(true);
        }
예제 #15
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;

            player.MyEnemyPlayer.Damage(M_SideEffectParam.GetParam_MultipliedInt("Value"));
            int plus_damage = player.EnergyLeft;

            player.UseAllEnergy();
            player.MyEnemyPlayer.Damage(plus_damage * M_SideEffectParam.GetParam_MultipliedInt("ValuePlus"));
            return(true);
        }
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer sp = (BattlePlayer)Player;
            CardBase     ci = sp.HandManager.GetCardByCardInstanceId(executorInfo.CardInstanceId);

            if (ci.CardInfo.BaseInfo.Energy >= M_SideEffectParam.GetParam_MultipliedInt("DecValue"))
            {
                ci.M_Energy -= M_SideEffectParam.GetParam_MultipliedInt("DecValue");
            }
            return(true);
        }
예제 #17
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;

            player.GameManager.SideEffect_ShipAction(
                delegate(BattlePlayer sp) { sp.HandManager.DrawCards(M_SideEffectParam.GetParam_MultipliedInt("CardCount")); },
                player,
                ChoiceCount,
                TargetRange,
                TargetSelect,
                executorInfo.TargetClientIds);
            return(true);
        }
예제 #18
0
        public override string GenerateDesc()
        {
            int cardID = M_SideEffectParam.GetParam_ConstInt("CardID");

            if (cardID == (int)AllCards.EmptyCardTypes.NoCard || cardID == (int)AllCards.EmptyCardTypes.EmptyCard)
            {
                return("Error!!!");
            }

            BaseInfo bi = AllCards.GetCard(cardID).BaseInfo;

            return(base.GenerateDesc() + HighlightStringFormat(
                       DescRaws[LanguageManager_Common.GetCurrentLanguage()],
                       GetDescOfTargetRange(),
                       M_SideEffectParam.GetParam_MultipliedInt("CardCount"),
                       "[" + bi.CardNames[LanguageManager_Common.GetCurrentLanguage()] + "]"));
        }
예제 #19
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;

            if ((TargetRange & TargetRange.Mechs) != 0)
            {
                foreach (int mechId in executorInfo.TargetMechIds)
                {
                    player.GameManager.GetMech(mechId).M_ImmuneLeftRounds += M_SideEffectParam.GetParam_MultipliedInt("Rounds");
                    player.GameManager.GetMech(mechId).M_InactivityRounds += M_SideEffectParam.GetParam_MultipliedInt("Rounds");
                }
            }
            return(true);
        }
예제 #20
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;
            ModuleMech   mech   = player.BattleGroundManager.GetMech(executorInfo.MechId);

            if (mech != null)
            {
                int attackTimes = M_SideEffectParam.GetParam_MultipliedInt("AttackTimes");

                if (!mech.IsSentry)
                {
                    mech.AttackTimesThisRound += attackTimes;
                }
            }
            return(true);
        }
예제 #21
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;
            int          energy = M_SideEffectParam.GetParam_MultipliedInt("Energy");

            if (player.EnergyLeft >= energy)
            {
                player.UseEnergy(energy);
                foreach (int mechID in executorInfo.TargetMechIds)
                {
                    int damage = M_SideEffectParam.GetParam_MultipliedInt("Damage");
                    player.GameManager.GetMech(executorInfo.MechId).OnMakeDamage(damage);
                    player.GameManager.GetMech(mechID).Damage(damage);
                }
            }
            return(true);
        }
예제 #22
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;
            int          value  = M_SideEffectParam.GetParam_MultipliedInt("Energy");

            if (TargetRange == TargetRange.Self)
            {
                ModuleMech mech = player.BattleGroundManager.GetMech(executorInfo.MechId);
                if (mech?.M_Weapon != null)
                {
                    int increase = Math.Min(mech.M_MechWeaponEnergyMax - mech.M_MechWeaponEnergy, value);
                    mech.M_MechWeaponEnergy += increase;
                }
            }
            else
            {
                player.GameManager.SideEffect_MechAction(
                    delegate(ModuleMech mech)
                {
                    if (mech?.M_Weapon != null)
                    {
                        int increase             = Math.Min(mech.M_MechWeaponEnergyMax - mech.M_MechWeaponEnergy, value);
                        mech.M_MechWeaponEnergy += increase;
                    }
                },
                    player,
                    ChoiceCount,
                    executorInfo.TargetMechIds,
                    TargetRange,
                    TargetSelect,
                    -1);
            }
            return(true);
        }
예제 #23
0
 public int GetSideEffectFunctionBias()
 {
     return(M_SideEffectParam.GetParam_MultipliedInt("Energy") * M_SideEffectParam.GetParam_ConstInt("Times"));
 }
예제 #24
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;
            ModuleMech   mech;

            if (TargetRange == TargetRange.Self)
            {
                mech = player.BattleGroundManager.GetMech(executorInfo.MechId);
            }
            else
            {
                mech = player.BattleGroundManager.GetMech(executorInfo.TargetMechIds[0]);
            }

            int equipCount = 0;
            int plusDamage = M_SideEffectParam.GetParam_MultipliedInt("ValuePlus");

            if (mech.M_Weapon != null)
            {
                mech.M_Weapon = null;
                equipCount++;
            }

            if (mech.M_Shield != null)
            {
                mech.M_Shield = null;
                equipCount++;
            }

            if (mech.M_Pack != null)
            {
                mech.M_Pack = null;
                equipCount++;
            }

            if (mech.M_MA != null)
            {
                mech.M_MA = null;
                equipCount++;
            }

            player.GameManager.SideEffect_ILifeAction(
                delegate(ILife life) { life.Damage(M_SideEffectParam.GetParam_MultipliedInt("ValueBasic")); },
                player,
                ChoiceCount,
                TargetRange.EnemyLife,
                TargetSelect.All,
                executorInfo.TargetClientIds,
                executorInfo.TargetMechIds
                );
            for (int i = 0; i < equipCount; i++)
            {
                player.GameManager.SideEffect_ILifeAction(
                    delegate(ILife life) { life.Damage(plusDamage); },
                    player,
                    ChoiceCount,
                    TargetRange.EnemyLife,
                    TargetSelect.All,
                    executorInfo.TargetClientIds,
                    executorInfo.TargetMechIds
                    );
            }

            player.GameManager.KillMechs(new List <int> {
                mech.M_MechID
            });
            return(true);
        }
예제 #25
0
파일: Heal.cs 프로젝트: tuita520/Mech-Storm
 public int GetSideEffectFunctionBias()
 {
     return(M_SideEffectParam.GetParam_MultipliedInt("HealValue"));
 }
예제 #26
0
 public int GetSideEffectFunctionBias()
 {
     return(3 * M_SideEffectParam.GetParam_MultipliedInt("CardCount"));
 }
예제 #27
0
 public override string GenerateDesc()
 {
     return(base.GenerateDesc() + HighlightStringFormat(DescRaws[LanguageManager_Common.GetCurrentLanguage()], M_SideEffectParam.GetParam_MultipliedInt("Energy"), M_SideEffectParam.GetParam_MultipliedInt("Damage")));
 }
예제 #28
0
        public override bool Execute(ExecutorInfo executorInfo)
        {
            if (!base.Execute(executorInfo))
            {
                return(false);
            }
            BattlePlayer player = (BattlePlayer)Player;

            ModuleMech mech = player.GameManager.GetMechOnBattleGround(M_SideEffectExecute.M_ExecutorInfo.MechId);

            if (mech?.M_Weapon != null)
            {
                int increase = Math.Min(mech.M_MechWeaponEnergyMax - mech.M_MechWeaponEnergy, M_SideEffectParam.GetParam_MultipliedInt("Energy"));
                mech.M_MechWeaponEnergy += increase;
            }
            return(true);
        }
예제 #29
0
 public int GetSideEffectFunctionBias()
 {
     return(M_SideEffectParam.GetParam_MultipliedInt("Energy") * 2);
 }
예제 #30
0
 public int GetSideEffectFunctionBias()
 {
     return(M_SideEffectParam.GetParam_MultipliedInt("AttackValue") * 2);
 }