Beispiel #1
0
        public int ApplyPowerAlwaysCrit(CombatInstance2 inst, BasicMon owner, BasicMon target)
        {
            var mod   = CalculateModAlwaysCrit(inst, owner, target);
            var power = Power;

            (double atkmod, string str)  = owner.ChangeAttStage(0);
            (double defmod, string str2) = target.ChangeDefStage(0);

            if (Result[TargetNum].Crit && owner.GetAttStage() < 0)
            {
                atkmod = 1.0;
            }
            if (Result[TargetNum].Crit && target.GetDefStage() > 0)
            {
                defmod = 1.0;
            }

            if (Type.Type == "Electric" && owner.Status.Charged)
            {
                power *= 2;
                owner.Status.Charged = false;
            }

            double dmg    = (((((2.0 * owner.Level) / 5.0) + 2.0) * power * (((double)owner.CurStats[1] * atkmod) / ((double)target.CurStats[2] * defmod)) / 50) + 2) * mod;
            int    damage = (int)dmg;

            if (damage < 1)
            {
                damage = 1;
            }

            Result[TargetNum].EnemyDmg = damage;

            return(damage);
        }
Beispiel #2
0
        public override List <MoveResult> ApplyMove(CombatInstance2 inst, BasicMon owner, List <BasicMon> targets)
        {
            ResetResult();
            AddResult();

            //Fail logic
            if (SelfMoveFailLogic(owner))
            {
                Result[TargetNum].Fail = true;
                Result[TargetNum].Hit  = false;
            }
            //Hit logic
            else
            {
                CurrentPP--;
                var amount = owner.TotalHP / 10;
                owner.Restore(amount);
                Result[TargetNum].SelfHeal = amount;

                (double mod, string mess) = owner.ChangeAttStage(1);
                Result[TargetNum].StatChangeMessages.Add(mess);

                (double mod1, string mess1) = owner.ChangeDefStage(1);
                Result[TargetNum].StatChangeMessages.Add(mess1);
            }

            return(Result);
        }
Beispiel #3
0
        public override List <MoveResult> ApplyMove(CombatInstance2 inst, BasicMon owner, List <BasicMon> targets)
        {
            ResetResult();

            foreach (BasicMon t in targets)
            {
                int dmg = 0;
                AddResult();

                //Fail logic
                if (DefaultFailLogic(t, owner))
                {
                    Result[TargetNum].Fail = true;
                    Result[TargetNum].Hit  = false;
                }
                //Miss Logic
                else if (!ApplyAccuracy(inst, owner, t))
                {
                    Result[TargetNum].Miss = true;
                    Result[TargetNum].Hit  = false;
                }
                //Hit logic
                else
                {
                    CurrentPP--;
                    dmg = ApplyPower(inst, owner, t);
                    t.TakeDamage(dmg);
                    (double mod, string mess) = owner.ChangeDefStage(-1);
                    Result[TargetNum].StatChangeMessages.Add(mess);
                }
            }

            return(Result);
        }
Beispiel #4
0
        public override List <MoveResult> ApplyMove(CombatInstance2 inst, BasicMon owner, List <BasicMon> targets)
        {
            ResetResult();
            AddResult();

            //Fail logic
            if (SelfMoveFailLogicIgnoreStatus(owner))
            {
                Result[TargetNum].Fail = true;
                Result[TargetNum].Hit  = false;
            }
            //Hit logic
            else
            {
                CurrentPP--;
                owner.Status.StatusCure();

                (double mod, string mess) = owner.ChangeDefStage(2);
                Result[TargetNum].StatChangeMessages.Add(mess);
            }

            return(Result);
        }