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(); }
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); }