public override void Generate()
        {
            _ship = new Starship();
            switch (_lastRace)
            {
            case Species.Human:
                StarshipTools.GenerateRandomHumanPirateShip(ref _ship);
                break;

            case Species.Ork:
                StarshipTools.GenerateRandomOrkShip(ref _ship);
                break;

            case Species.Eldar:
                StarshipTools.GenerateRandomEldarShip(ref _ship);
                break;

            case Species.DarkEldar:
                StarshipTools.GenerateRandomDarkEldarShip(ref _ship);
                break;

            case Species.RakGol:
                StarshipTools.GenerateRandomRakGolShip(ref _ship);
                break;

            case Species.ChaosReaver:
                StarshipTools.GenerateRandomChaosReaverShip(ref _ship);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            NodeName = Globals.GetSpeciesString(_ship.Race) + " " + _ship.ShipName;
            //GenerateFlowDocument();
        }
Beispiel #2
0
        private static StarshipHulk GenerateHulk(int salvageChance, Species race, bool increasedChanceOfBoarding = false)
        {
            StarshipHulk hulk = new StarshipHulk();

            if (race == Species.Random)
            {
                race = StarshipTools.GetRandomSpecies();
            }
            hulk.Race = Globals.GetSpeciesString(race);

            int salvageRoll = Globals.RollD10();

            if (salvageRoll <= salvageChance)
            {
                hulk.Integrity = "May be possible to salvage";
            }
            else if ((salvageRoll <= (salvageChance + 2)) ||
                     (increasedChanceOfBoarding && salvageRoll <= (salvageChance + 6)))
            {
                hulk.Integrity = "Intact enough to allow boarding, but little else";
            }
            else
            {
                hulk.Integrity = "Shattered beyond any value";
            }

            if (race == Species.DarkEldar && Properties.Settings.Default.BookTheSoulReaver == false)
            {
                // Make sure we don't generate Dark Eldar if we don't have The Soul Reaver
                race = Species.Eldar;
            }

            Starship ship = new Starship
            {
                Race = race
            };

            switch (race)
            {
            case Species.Human:
                StarshipTools.GenerateRandomHumanShip(ref ship);
                break;

            case Species.Ork:
                StarshipTools.GenerateRandomOrkShip(ref ship);
                break;

            case Species.Eldar:
                StarshipTools.GenerateRandomEldarShip(ref ship);
                break;

            case Species.DarkEldar:
                StarshipTools.GenerateRandomDarkEldarShip(ref ship);
                hulk.BookSource = RuleBook.TheSoulReaver;
                break;

            case Species.Stryxis:
                ship.ShipName   = "Xebec";
                ship.PageNumber = 96;
                ship.BookSource = RuleBook.BattlefleetKoronus;
                ship.ShipClass  = ShipClass.LightCruiser;
                break;

            case Species.RakGol:
                StarshipTools.GenerateRandomRakGolShip(ref ship);
                break;

            case Species.Kroot:
                ship.ShipName   = "Warsphere";
                ship.PageNumber = 101;
                ship.BookSource = RuleBook.BattlefleetKoronus;
                ship.ShipClass  = ShipClass.Battleship;
                break;

            case Species.ChaosReaver:
                StarshipTools.GenerateRandomChaosReaverShip(ref ship);
                break;

            case Species.Other:
                ship.ShipName   = "Starship";
                ship.PageNumber = 0;
                ship.BookSource = RuleBook.CoreRuleBook;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            hulk.ShipType   = ship.ShipName;
            hulk.BookPage   = ship.PageNumber;
            hulk.BookSource = ship.BookSource;

            hulk.GenerateDocItem();
            return(hulk);
        }