Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns>int</returns>
        public override int Execute()
        {
            string ballcarrierRun = principalBallcarrier.PlayerSkills.Run;
            int    roll           = Dice.Roll("d12");

            //check for natural 12
            if (roll != 12)
            {
                //apply any bonuses and/or penalties
                roll += defense.TeamDefense.RunPenalty;
                roll += offense.TeamOffense.OffensiveLineBonus;
                if (roll < 0)
                {
                    roll = 1;
                }
                else if (roll >= 12)
                {
                    roll = 11;
                }
            }

            CarryPlayResult res      = this.defense.TeamDefense.RunDefense(roll);
            bool            isTd     = false;
            bool            isFumble = false;

            switch (res)
            {
            case CarryPlayResult.Loss:
                string rollString = String.Format("d{0}", defense.TeamDefense.MaxRunLoss);
                playLength = -(Dice.Roll(rollString));
                //check for fumble
                isFumble = CheckFumble(principalBallcarrier);
                break;

            case CarryPlayResult.NoGain:
                playLength = 0;
                isFumble   = CheckFumble(principalBallcarrier);
                break;

            case CarryPlayResult.NormalGain:
                playLength = Dice.Roll(ballcarrierRun);
                break;

            case CarryPlayResult.Bonus:
                playLength = Dice.Roll(ballcarrierRun) + this.defense.TeamDefense.BonusRunPenalty;
                break;

            case CarryPlayResult.AutoTD:
                playLength = cc.GetAutoTDDistance();
                isTd       = true;
                break;
            }
            playLength = cc.MoveBallRun(this, isFumble);
            //playLength = cc.MoveBall(PlayType.Run, null, principalBallcarrier, playLength, false, isFumble);

            runStats.AddRun(playLength, isTd, isFumble);
            ((CarryStatSheet)this.principalBallcarrier.Stats[StatTypes.Run]).AddRun(playLength, isTd, isFumble);
            return(playLength);
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns>int</returns>
        public override int Execute()
        {
            string ballcarrierRun = this.principalBallcarrier.PlayerSkills.KickReturn;
            int    roll           = Dice.Roll("d12");

            //team run bonus here

            //check for natural 12
            if (roll != 12)
            {
                //apply any bonuses and/or penalties
                roll += defense.TeamDefense.RunPenalty;
                roll += offense.TeamOffense.OffensiveLineBonus;
                if (roll < 0)
                {
                    roll = 1;
                }
                else if (roll >= 12)
                {
                    roll = 11;
                }
            }

            CarryPlayResult res      = this.defense.TeamDefense.KickoffReturnDefense(roll);
            bool            isTd     = false;
            bool            isFumble = false;

            switch (res)
            {
            case CarryPlayResult.Loss:
                string rollString = String.Format("d{0}", defense.TeamDefense.MaxRunLoss);
                playLength = -(Dice.Roll(rollString));
                //check for fumble
                isFumble = CheckFumble(this.principalBallcarrier);
                break;

            case CarryPlayResult.NoGain:
                playLength = 0;
                isFumble   = CheckFumble(this.principalBallcarrier);
                break;

            case CarryPlayResult.NormalGain:
                playLength = Dice.Roll(ballcarrierRun);
                break;

            case CarryPlayResult.Bonus:
                playLength = Dice.Roll(ballcarrierRun) + this.defense.TeamDefense.BonusRunPenalty;
                break;

            case CarryPlayResult.AutoTD:
                playLength = cc.GetAutoTDDistance();
                isTd       = true;
                break;
            }
            playLength = cc.MoveBallKickoffReturn(this, isFumble);
            returnStats.AddRun(playLength, isTd, isFumble);
            ((CarryStatSheet)this.principalBallcarrier.Stats[StatTypes.Return]).AddRun(playLength, isTd, isFumble);
            playReport = String.Format("{0} takes the ball to the {1} for a return of {2} yards!", principalBallcarrier.Name, this.cc.CurrentYardLine, playLength);

            return(playLength);
        }