private static bool Prefix(TrainingFieldCampaignBehavior __instance) { if (!CultureStartOptions.FreePlayLoadedOnCondition()) { //foreach (CharacterObject troop in PartyBase.MainParty.MemberRoster..ToList<CharacterObject>()) //{ // if (!troop.IsPlayerCharacter) // { // PartyBase.MainParty.MemberRoster.RemoveTroop(troop, 1, default(UniqueTroopDescriptor), 0); // } // } //Setting Various extra values to try and match usual complete tutorial phase to make sure events fire. AccessTools.Field(typeof(TrainingFieldCampaignBehavior), "_talkedWithBrotherForTheFirstTime").SetValue(__instance, true); TutorialPhase.Instance.PlayerTalkedWithBrotherForTheFirstTime(); Hero brother = (Hero)AccessTools.Property(typeof(StoryModeHeroes), "ElderBrother").GetValue(null); brother.ChangeState(Hero.CharacterStates.Disabled); //Believe this is line missed that is causing all the brother issues brother.Clan = CampaignData.NeutralFaction; StoryMode.StoryMode.Current.MainStoryLine.CompleteTutorialPhase(true); Vec2 StartPos = GetSettlementLoc(CSCharCreationOption.CSOptionSettlement()); MobileParty.MainParty.Position2D = StartPos; MapState mapstate; mapstate = (GameStateManager.Current.ActiveState as MapState); mapstate.Handler.TeleportCameraToMainParty(); SelectClanName(); CSApplyChoices.ApplyStoryOptions(); } return(false); }
private static void CSAddCompanion(int NoToAdd) { Hero mainhero = Hero.MainHero; for (int i = 0; i < NoToAdd; i++) { string Locculture = CSCharCreationOption.CSOptionSettlement().Culture.StringId; CharacterObject wanderer = (from x in CharacterObject.Templates where x.Occupation == Occupation.Wanderer && (x.Culture.StringId == mainhero.Culture.StringId || x.Culture.StringId == Locculture) select x).GetRandomElementInefficiently <CharacterObject>(); Settlement randomElement = (from settlement in Settlement.All where settlement.Culture == wanderer.Culture && settlement.IsTown select settlement).GetRandomElementInefficiently <Settlement>(); Hero hero = HeroCreator.CreateSpecialHero(wanderer, randomElement, null, null, 33); Campaign.Current.GetCampaignBehavior <IHeroCreationCampaignBehavior>().DeriveSkillsFromTraits(hero, wanderer); GiveGoldAction.ApplyBetweenCharacters(null, hero, 2000, true); CSSetEquip(hero, 4); hero.HasMet = true; hero.Clan = randomElement.OwnerClan; hero.ChangeState(Hero.CharacterStates.Active); AddCompanionAction.Apply(Clan.PlayerClan, hero); AddHeroToPartyAction.Apply(hero, MobileParty.MainParty, true); CampaignEventDispatcher.Instance.OnHeroCreated(hero, false); } }