示例#1
0
        private MChar BuildHelper(PreCharParams preCharParams)
        {
            var character = new MChar(preCharParams.Race);

            if (preCharParams.Race != ERace.Critter && preCharParams.Race != ERace.None)
            {
                var racialPerks = RaceParamsTable.Instance.Table[preCharParams.Race].DefaultPerks;
                PerkMediator.Instance.SetCharacterPerks(character, racialPerks);
            }
            PerkMediator.Instance.SetCharacterPerks(character, preCharParams.Perks);
            this.BuildBaseClassHelper(preCharParams, character);
            this.BuildAbilities(preCharParams, character);
            this.BuildCharStats(preCharParams, character);
            this.BuildClassPrimaryStats(character);
            var secondary = GetSecondaryStats(character.GetBaseStats().GetPrimaryStats());

            character.GetBaseStats().SetSecondaryStats(secondary);
            this.BuildClassSecondaryStats(character);
            this.BuildCurStats(character);
            this.BuildCurPoints(character);
            character.SetType(preCharParams.Type);
            character.SetParams(preCharParams);
            this.BuildCharMount(preCharParams, character);
            character.SetAIRole(preCharParams.AIRole);
            return(character);
        }
示例#2
0
        private void BuildBaseClassHelper(PreCharParams p, MChar c)
        {
            var builder = new ClassBuilder();

            foreach (var kvp in p.Classes)
            {
                var toAdd = builder.Build(kvp.Key);
                toAdd.Level = kvp.Value;
                c.GetBaseClasses().Add(kvp.Key, toAdd);
            }
        }
示例#3
0
 private void BuildClassSecondaryStats(MChar c)
 {
     foreach (var kvp in c.GetBaseClasses())
     {
         var stats = kvp.Value.GetParams();
         foreach (var stat in stats.SecondaryStats)
         {
             c.GetBaseStats().AddStat(stat.Key, stat.Value);
         }
     }
 }
示例#4
0
 public void SetCharacterPerks(MChar c, List <EPerk> perks)
 {
     foreach (var proto in perks)
     {
         var perk = PerkFactory.Instance.CreateNewObject(proto);
         if (perk != null)
         {
             perk.Init();
             c.AddPerk(perk);
         }
     }
 }
示例#5
0
        private void BuildCharStats(PreCharParams preCharParams, MChar character)
        {
            var raceStats = this.GetRaceStats(preCharParams);

            if (raceStats == null)
            {
                var specificStats = PredefinedCharTable.Instance.Table[preCharParams.Name];
                character.GetBaseStats().SetPrimaryStats(specificStats.Stats);
            }
            else
            {
                character.GetBaseStats().SetPrimaryStats(raceStats);
            }
        }
示例#6
0
 private void BuildCharMount(PreCharParams preCharParams, MChar character)
 {
     if (preCharParams.Type == Enum.ECharType.Humanoid)
     {
         var builder = new MountBuilder();
         this.BuildArmorHelper(character, preCharParams);
         this.BuildWeaponHelper(character, preCharParams);
         var mountParams = this.GetMountParams(preCharParams);
         if (mountParams != null)
         {
             character.SetMount(builder.Build(mountParams));
         }
     }
 }
示例#7
0
        private void BuildAbilities(PreCharParams p, MChar c)
        {
            foreach (var kvp in p.AbilityEffectDict)
            {
                var ability = AbilityFactory.Instance.CreateNewObject(kvp.Key);
                ability.Data.Effects.AddRange(kvp.Value);
                c.GetAbilitiesContainer().AddAbility(ability);
            }
            var wpnAbs = WeaponAbilityFactory.Instance.CreateNewObject(p.WpnAbilities);

            foreach (var v in wpnAbs)
            {
                c.GetAbilitiesContainer().AddAbility(v);
            }
        }
示例#8
0
        private void BuildWeaponHelper(MChar c, PreCharParams p)
        {
            var rWpnParams = this.GetWpnParams(p, p.RWeapons);
            var lWpnParams = this.GetWpnParams(p, p.LWeapons);

            if (rWpnParams != null)
            {
                var weapon = WeaponFactory.Instance.CreateNewObject(
                    rWpnParams.Name,
                    rWpnParams.Tier);
                c.GetEquipment().AddWeapon(weapon, false);
            }
            if (lWpnParams != null)
            {
                var weapon = WeaponFactory.Instance.CreateNewObject(
                    lWpnParams.Name,
                    lWpnParams.Tier);
                c.GetEquipment().AddWeapon(weapon, true);
            }
        }
示例#9
0
        private void BuildArmorHelper(MChar c, PreCharParams p)
        {
            var armorParams = this.GetArmorParams(p);

            if (armorParams != null)
            {
                var armor = ArmorFactory.Instance.CreateNewObject(
                    armorParams.Name,
                    armorParams.Tier);
                c.GetEquipment().AddArmor(armor);
            }
            var helmParams = this.GetHelmParams(p);

            if (helmParams != null)
            {
                var helm = HelmFactory.Instance.CreateNewObject(
                    helmParams.Name,
                    helmParams.Tier);
                c.GetEquipment().AddHelm(helm);
            }
        }
示例#10
0
 private void BuildCurPoints(MChar c)
 {
     c.GetPoints().Init(c.GetCurStats());
 }
示例#11
0
 private void BuildCurStats(MChar c)
 {
     c.GetCurStats().Init(c.GetBaseStats());
 }