Ejemplo n.º 1
0
        public Hero CreateRandomLeader(Clan clan, BaseSettlementInfo settlementInfo)
        {
            var templateBase = clan.Leader.CharacterObject;

            var characterTemplate = CharacterObject.Templates.Where(go => go.Culture == clan.Culture && (go.Occupation == Occupation.Lord || go.Occupation == Occupation.Lady)).GetRandomElement();

            characterTemplate.InitializeEquipmentsOnLoad(templateBase.AllEquipments.ToList());

            foreach (var attribute in CharacterAttributes.All)
            {
                characterTemplate.SetAttributeValue(attribute.AttributeEnum, 255);
            }

            foreach (var skill in SkillObject.All)
            {
                characterTemplate.SetSkillValue(skill, 255);
            }

            characterTemplate.SetSkillValue(SkillObject.GetSkill(13), 1000);

            var hero = HeroCreator.CreateSpecialHero(characterTemplate, settlementInfo.Settlement);

            hero.IsNoble            = true;
            hero.IsMinorFactionHero = false;

            foreach (var perk in PerkObject.All)
            {
                hero.SetPerkValue(perk, true);
            }

            hero.ChangeState(Hero.CharacterStates.Active);

            Get(hero.CharacterObject).IsCustomCharacter = true;
            return(hero);
        }
Ejemplo n.º 2
0
        public BaseBannerInfo GetBaseBanner(BaseSettlementInfo settlementInfo)
        {
            var            availableBannerInfos = new List <BaseBannerInfo>();
            BaseBannerInfo bannerInfo           = null;

            foreach (var info in this.Infos.Where(i => !i.Used))
            {
                if (info.Settlement == settlementInfo.Settlement.Name.ToString() && info.Culture == settlementInfo.Settlement.Culture.StringId)
                {
                    availableBannerInfos.Add(info);
                    break;
                }

                if (info.Culture == settlementInfo.Settlement.Culture.StringId)
                {
                    availableBannerInfos.Add(info);
                    break;
                }

                if (info.Faction == settlementInfo.CurrentFaction.StringId)
                {
                    availableBannerInfos.Add(info);
                    break;
                }
            }

            if (availableBannerInfos.Count > 0)
            {
                bannerInfo = availableBannerInfos.GetRandomElement();
            }

            if (bannerInfo != null)
            {
                bannerInfo.Used = true;
            }

            return(bannerInfo);
        }