Beispiel #1
0
        public static PropertyInt?GetHeritageAug(HeritageGroup heritage)
        {
            switch (heritage)
            {
            case HeritageGroup.Aluvian:
            case HeritageGroup.Gharundim:
            case HeritageGroup.Sho:
            case HeritageGroup.Viamontian:
                return(PropertyInt.AugmentationJackOfAllTrades);

            case HeritageGroup.Shadowbound:
            case HeritageGroup.Penumbraen:
                return(PropertyInt.AugmentationCriticalExpertise);

            case HeritageGroup.Gearknight:
                return(PropertyInt.AugmentationDamageReduction);

            case HeritageGroup.Undead:
                return(PropertyInt.AugmentationCriticalDefense);

            case HeritageGroup.Empyrean:
                return(PropertyInt.AugmentationInfusedLifeMagic);

            case HeritageGroup.Tumerok:
                return(PropertyInt.AugmentationCriticalPower);

            case HeritageGroup.Lugian:
                return(PropertyInt.AugmentationIncreasedCarryingCapacity);
            }
            return(null);
        }
Beispiel #2
0
        /// <summary>
        /// Set Heritage based Melee and Ranged Masteries
        /// </summary>
        /// <param name="heritageGroup"></param>
        /// <param name="meleeMastery"></param>
        /// <param name="rangedMastery"></param>
        private static void GetMasteries(HeritageGroup heritageGroup, out WeaponType meleeMastery, out WeaponType rangedMastery)
        {
            switch (heritageGroup)
            {
            case HeritageGroup.Aluvian:
                meleeMastery  = WeaponType.Dagger;
                rangedMastery = WeaponType.Bow;
                break;

            case HeritageGroup.Gharundim:
                meleeMastery  = WeaponType.Staff;
                rangedMastery = WeaponType.Magic;
                break;

            case HeritageGroup.Sho:
                meleeMastery  = WeaponType.Unarmed;
                rangedMastery = WeaponType.Bow;
                break;

            case HeritageGroup.Viamontian:
                meleeMastery  = WeaponType.Sword;
                rangedMastery = WeaponType.Crossbow;
                break;

            case HeritageGroup.Penumbraen:
            case HeritageGroup.Shadowbound:
                meleeMastery  = WeaponType.Unarmed;
                rangedMastery = WeaponType.Crossbow;
                break;

            case HeritageGroup.Gearknight:
                meleeMastery  = WeaponType.Mace;
                rangedMastery = WeaponType.Crossbow;
                break;

            case HeritageGroup.Tumerok:
                meleeMastery  = WeaponType.Spear;
                rangedMastery = WeaponType.Thrown;
                break;

            case HeritageGroup.Undead:
            case HeritageGroup.Lugian:
                meleeMastery  = WeaponType.Axe;
                rangedMastery = WeaponType.Thrown;
                break;

            case HeritageGroup.Empyrean:
                meleeMastery  = WeaponType.Sword;
                rangedMastery = WeaponType.Magic;
                break;

            default:
                meleeMastery  = WeaponType.Undef;
                rangedMastery = WeaponType.Undef;
                break;
            }
        }
Beispiel #3
0
        public static string GetTitle(HeritageGroup heritage, Gender gender, uint rank)
        {
            switch (gender)
            {
            case Gender.Male:
                return(GetMaleTitle(heritage, rank));

            case Gender.Female:
                return(GetFemaleTitle(heritage, rank));

            default:
                return("");
            }
        }
Beispiel #4
0
        public static string GetFemaleTitle(HeritageGroup heritage, uint rank)
        {
            switch (heritage)
            {
            case HeritageGroup.Aluvian:
                return(GetAluvianFemaleTitle(rank));

            case HeritageGroup.Gharundim:
                return(GetGharundimFemaleTitle(rank));

            case HeritageGroup.Sho:
                return(GetShoFemaleTitle(rank));

            case HeritageGroup.Viamontian:
                return(GetViamontianFemaleTitle(rank));

            case HeritageGroup.Shadowbound:
            case HeritageGroup.Penumbraen:
                return(GetShadowboundFemaleTitle(rank));

            case HeritageGroup.Tumerok:
                return(GetTumerokTitle(rank));

            case HeritageGroup.Gearknight:
                return(GetGearknightTitle(rank));

            case HeritageGroup.Lugian:
                return(GetLugianTitle(rank));

            case HeritageGroup.Empyrean:
                return(GetEmpyreanFemaleTitle(rank));

            case HeritageGroup.Undead:
                return(GetUndeadFemaleTitle(rank));

            default:
                return("");
            }
        }
Beispiel #5
0
        public void GenerateNewFace()
        {
            var cg = DatManager.PortalDat.CharGen;

            if (!Heritage.HasValue)
            {
                if (!String.IsNullOrEmpty(HeritageGroup))
                {
                    HeritageGroup parsed = (HeritageGroup)Enum.Parse(typeof(HeritageGroup), HeritageGroup.Replace("'", ""));
                    if (parsed != 0)
                    {
                        Heritage = (int)parsed;
                    }
                }
            }

            if (!Gender.HasValue)
            {
                if (!String.IsNullOrEmpty(Sex))
                {
                    Gender parsed = (Gender)Enum.Parse(typeof(Gender), Sex);
                    if (parsed != 0)
                    {
                        Gender = (int)parsed;
                    }
                }
            }

            if (!Heritage.HasValue || !Gender.HasValue)
            {
                return;
            }

            SexCG sex = cg.HeritageGroups[(uint)Heritage].Genders[(int)Gender];

            PaletteBaseId = sex.BasePalette;

            Appearance appearance = new Appearance();

            appearance.HairStyle = 1;
            appearance.HairColor = 1;
            appearance.HairHue   = 1;

            appearance.EyeColor = 1;
            appearance.Eyes     = 1;

            appearance.Mouth = 1;
            appearance.Nose  = 1;

            appearance.SkinHue = 1;

            // Get the hair first, because we need to know if you're bald, and that's the name of that tune!
            int    size = sex.HairStyleList.Count / 3; // Why divide by 3 you ask? Because AC runtime generated characters didn't have much range in hairstyles.
            Random rand = new Random();

            appearance.HairStyle = (uint)rand.Next(size);

            HairStyleCG hairstyle = sex.HairStyleList[Convert.ToInt32(appearance.HairStyle)];
            bool        isBald    = hairstyle.Bald;

            size = sex.HairColorList.Count;
            appearance.HairColor = (uint)rand.Next(size);
            appearance.HairHue   = rand.NextDouble();

            size = sex.EyeColorList.Count;
            appearance.EyeColor = (uint)rand.Next(size);
            size            = sex.EyeStripList.Count;
            appearance.Eyes = (uint)rand.Next(size);

            size             = sex.MouthStripList.Count;
            appearance.Mouth = (uint)rand.Next(size);

            size            = sex.NoseStripList.Count;
            appearance.Nose = (uint)rand.Next(size);

            appearance.SkinHue = rand.NextDouble();

            //// Certain races (Undead, Tumeroks, Others?) have multiple body styles available. This is controlled via the "hair style".
            ////if (hairstyle.AlternateSetup > 0)
            ////    character.SetupTableId = hairstyle.AlternateSetup;

            if (!EyesTextureDID.HasValue)
            {
                EyesTextureDID = sex.GetEyeTexture(appearance.Eyes, isBald);
            }
            if (!DefaultEyesTextureDID.HasValue)
            {
                DefaultEyesTextureDID = sex.GetDefaultEyeTexture(appearance.Eyes, isBald);
            }
            if (!NoseTextureDID.HasValue)
            {
                NoseTextureDID = sex.GetNoseTexture(appearance.Nose);
            }
            if (!DefaultNoseTextureDID.HasValue)
            {
                DefaultNoseTextureDID = sex.GetDefaultNoseTexture(appearance.Nose);
            }
            if (!MouthTextureDID.HasValue)
            {
                MouthTextureDID = sex.GetMouthTexture(appearance.Mouth);
            }
            if (!DefaultMouthTextureDID.HasValue)
            {
                DefaultMouthTextureDID = sex.GetDefaultMouthTexture(appearance.Mouth);
            }
            if (!HairTextureDID.HasValue)
            {
                HairTextureDID = sex.GetHairTexture(appearance.HairStyle);
            }
            if (!DefaultHairTextureDID.HasValue)
            {
                DefaultHairTextureDID = sex.GetDefaultHairTexture(appearance.HairStyle);
            }
            if (!HeadObjectDID.HasValue)
            {
                HeadObjectDID = sex.GetHeadObject(appearance.HairStyle);
            }

            // Skin is stored as PaletteSet (list of Palettes), so we need to read in the set to get the specific palette
            var skinPalSet = DatManager.PortalDat.ReadFromDat <PaletteSet>(sex.SkinPalSet);

            if (!SkinPaletteDID.HasValue)
            {
                SkinPaletteDID = skinPalSet.GetPaletteID(appearance.SkinHue);
            }

            // Hair is stored as PaletteSet (list of Palettes), so we need to read in the set to get the specific palette
            var hairPalSet = DatManager.PortalDat.ReadFromDat <PaletteSet>(sex.HairColorList[Convert.ToInt32(appearance.HairColor)]);

            if (!HairPaletteDID.HasValue)
            {
                HairPaletteDID = hairPalSet.GetPaletteID(appearance.HairHue);
            }

            // Eye Color
            if (!EyesPaletteDID.HasValue)
            {
                EyesPaletteDID = sex.EyeColorList[Convert.ToInt32(appearance.EyeColor)];
            }
        }