// non-custom race public Race(Enum_Races race, Enum_Size_Categories creature_size, Enum_Creature_Types creature_type, List<Enum_Creature_Subtypes> creature_subtypes, int base_movespeed, List<Enum_Languages> starting_languages, List<Enum_Special_Abilities> special_abilities, List<Enum_Senses> innate_senses, List<Enum_Defensive_Racial_Traits> defensive_traits, List<Enum_Offensive_Racial_Traits> offensive_traits) { // racial identifier this.race = race; // name if (this.race == Enum_Races.Custom) { this.name = "Custom Race"; } else { this.name = EnumHandler.ToString(race.ToString()); } // size class this.size = creature_size; // creature type this.creatureType = creature_type; // creature subtypes this.creatureSubTypes = new List<Enum_Creature_Subtypes>(); foreach (Enum_Creature_Subtypes subtype in creature_subtypes) { this.creatureSubTypes.Add(subtype); } // move speed this.baseMoveSpeed = base_movespeed; // starting languages this.startingLanguages = new List<Enum_Languages>(); foreach (Enum_Languages language in starting_languages) { this.startingLanguages.Add(language); } // special abilities this.specialAbilities = new List<Enum_Special_Abilities>(); foreach (Enum_Special_Abilities ability in special_abilities) { this.specialAbilities.Add(ability); } // senses this.senses = new List<Enum_Senses>(); foreach (Enum_Senses sense in innate_senses) { this.senses.Add(sense); } // defensive traits this.defensiveTraits = new List<Enum_Defensive_Racial_Traits>(); foreach (Enum_Defensive_Racial_Traits trait in defensive_traits) { this.defensiveTraits.Add(trait); } // offensive traits this.offensiveTraits = new List<Enum_Offensive_Racial_Traits>(); foreach (Enum_Offensive_Racial_Traits trait in offensive_traits) { this.offensiveTraits.Add(trait); } }
/// <summary> /// Create a custom race. /// </summary> /// <param name="custom_race_name"></param> /// <param name="creature_size"></param> /// <param name="creature_type"></param> /// <param name="creature_subtypes"></param> /// <param name="base_movespeed"></param> /// <param name="starting_languages"></param> /// <param name="special_abilities"></param> /// <param name="innate_senses"></param> /// <param name="defensive_traits"></param> /// <param name="offensive_traits"></param> public Race(string custom_race_name, Enum_Size_Categories creature_size, Enum_Creature_Types creature_type, List<Enum_Creature_Subtypes> creature_subtypes, int base_movespeed, List<Enum_Languages> starting_languages, List<Enum_Special_Abilities> special_abilities, List<Enum_Senses> innate_senses, List<Enum_Defensive_Racial_Traits> defensive_traits, List<Enum_Offensive_Racial_Traits> offensive_traits) : this(Enum_Races.Custom, creature_size, creature_type, creature_subtypes, base_movespeed, starting_languages, special_abilities, innate_senses, defensive_traits, offensive_traits) { this.name = custom_race_name; }
public static SizeInfo GetSizeInfo(Enum_Size_Categories size) { SizeInfo info = new SizeInfo() { Size = size }; switch(size){ case(Enum_Size_Categories.Fine): info.SizeModifier = 8; info.SpecialSizeModifier = -8; info.FlyModifier = 8; info.StealthModifier = 16; info.Space = .5; info.NaturalReach = 0; info.TypicalHeight = new Tuple<float,float>(0, (float).5); info.TypicalWeight = new Tuple<float,float>(0, (float).125); break; case(Enum_Size_Categories.Diminuitive): info.SizeModifier = 4; info.SpecialSizeModifier = -4; info.FlyModifier = 6; info.StealthModifier = 12; info.Space = 1; info.NaturalReach = 0; info.TypicalHeight = new Tuple<float,float>((float).5, 1); info.TypicalWeight = new Tuple<float, float>((float).125, 1); break; case(Enum_Size_Categories.Tiny): info.SizeModifier = 2; info.SpecialSizeModifier = -2; info.FlyModifier = 4; info.StealthModifier = 8; info.Space = 2.5; info.NaturalReach = 0; info.TypicalHeight = new Tuple<float,float>(1, 2); info.TypicalWeight = new Tuple<float,float>(1, 8); break; case(Enum_Size_Categories.Small): info.SizeModifier = 1; info.SpecialSizeModifier = -1; info.FlyModifier = 2; info.StealthModifier = 4; info.Space = 5; info.NaturalReach = 5; info.TypicalHeight = new Tuple<float, float>(2, 4); info.TypicalWeight = new Tuple<float,float>(8, 60); break; case(Enum_Size_Categories.Medium): info.SizeModifier = 0; info.SpecialSizeModifier = 0; info.FlyModifier = 0; info.StealthModifier = 0; info.Space = 5; info.NaturalReach = 5; info.TypicalHeight = new Tuple<float, float>(4, 8); info.TypicalWeight = new Tuple<float, float>(60, 500); break; case(Enum_Size_Categories.Large_Tall): info.SizeModifier = -1; info.SpecialSizeModifier = 1; info.FlyModifier = -2; info.StealthModifier = -4; info.Space = 10; info.NaturalReach = 10; info.TypicalHeight = new Tuple<float, float>(8, 16); info.TypicalWeight = new Tuple<float, float>(500, 4000); break; case (Enum_Size_Categories.Large_Long): info.SizeModifier = -1; info.SpecialSizeModifier = 1; info.FlyModifier = -2; info.StealthModifier = -4; info.Space = 10; info.NaturalReach = 5; info.TypicalHeight = new Tuple<float, float>(8, 16); info.TypicalWeight = new Tuple<float, float>(500, 4000); break; case(Enum_Size_Categories.Huge_Tall): info.SizeModifier = -2; info.SpecialSizeModifier = 2; info.FlyModifier = -4; info.StealthModifier = -8; info.Space = 15; info.NaturalReach = 15; info.TypicalHeight = new Tuple<float, float>(16, 32); info.TypicalWeight = new Tuple<float, float>(4000, 32000); break; case (Enum_Size_Categories.Huge_Long): info.SizeModifier = -2; info.SpecialSizeModifier = 2; info.FlyModifier = -4; info.StealthModifier = -8; info.Space = 15; info.NaturalReach = 10; info.TypicalHeight = new Tuple<float, float>(16, 32); info.TypicalWeight = new Tuple<float, float>(4000, 32000); break; case(Enum_Size_Categories.Gargantuan_Tall): info.SizeModifier = -4; info.SpecialSizeModifier = 4; info.FlyModifier = -6; info.StealthModifier = -12; info.Space = 20; info.NaturalReach = 20; info.TypicalHeight = new Tuple<float, float>(32, 64); info.TypicalWeight = new Tuple<float, float>(32000, 250000); break; case (Enum_Size_Categories.Gargantuan_Long): info.SizeModifier = -4; info.SpecialSizeModifier = 4; info.FlyModifier = -6; info.StealthModifier = -12; info.Space = 20; info.NaturalReach = 15; info.TypicalHeight = new Tuple<float, float>(32, 64); info.TypicalWeight = new Tuple<float, float>(32000, 250000); break; case(Enum_Size_Categories.Colossal_Tall): info.SizeModifier = -8; info.SpecialSizeModifier = 8; info.FlyModifier = -6; info.StealthModifier = -16; info.Space = 30; info.NaturalReach = 30; info.TypicalHeight = new Tuple<float, float>(64, float.MaxValue); info.TypicalWeight = new Tuple<float, float>(250000, float.MaxValue); break; case (Enum_Size_Categories.Colossal_Long): info.SizeModifier = -8; info.SpecialSizeModifier = 8; info.FlyModifier = -6; info.StealthModifier = -16; info.Space = 30; info.NaturalReach = 20; info.TypicalHeight = new Tuple<float, float>(64, float.MaxValue); info.TypicalWeight = new Tuple<float, float>(250000, float.MaxValue); break; default: throw new InvalidOperationException("SizeHandler: Invalid size category chosen."); } return info; }