コード例 #1
0
        private void StartMeeting(Hero hero)
        {
            var heroParty   = hero.PartyBelongedTo?.Party;
            var player      = Hero.MainHero;
            var playerParty = player.PartyBelongedTo?.Party;

            if (!hero.IsWanderer || heroParty != null)
            {
                keepEncounter  = PlayerEncounter.Current;
                keepSettlement = player.PartyBelongedTo.CurrentSettlement;
                if (heroParty == null && hero.CurrentSettlement != null)
                {
                    player.PartyBelongedTo.CurrentSettlement = hero.CurrentSettlement;
                }
                PlayerEncounter.Start();
                PlayerEncounter.Current.SetupFields(playerParty, heroParty ?? playerParty);
                meetingEncounter = PlayerEncounter.Current;
                meetingHero      = hero;

                Campaign.Current.TimeControlMode            = CampaignTimeControlMode.Stop;
                Campaign.Current.CurrentConversationContext = ConversationContext.Default;
                AccessTools.Field(typeof(PlayerEncounter), "_mapEventState").SetValue(PlayerEncounter.Current, PlayerEncounterState.Begin);
                AccessTools.Field(typeof(PlayerEncounter), "_stateHandled").SetValue(PlayerEncounter.Current, true);
                AccessTools.Field(typeof(PlayerEncounter), "_meetingDone").SetValue(PlayerEncounter.Current, true);
            }

            ConversationCharacterData playerCharacterData     = new ConversationCharacterData(CharacterObject.PlayerCharacter, playerParty);
            ConversationCharacterData conversationPartnerData = new ConversationCharacterData(hero.CharacterObject, heroParty);

            CampaignMission.OpenConversationMission(playerCharacterData, conversationPartnerData);
        }
コード例 #2
0
        static bool DoMeetingPrefix(PlayerEncounter __instance, PartyBase ____encounteredParty,
                                    ref bool ____stateHandled, PartyBase ____defenderParty, ref bool ____meetingDone)
        {
            try
            {
                if (BanditToggle.SkipDialog && ____encounteredParty != null && ____encounteredParty.IsMobile)
                {
                    var party = ____encounteredParty.MobileParty;

                    if (party != null && party.IsBandit && !party.IsLordParty && !party.IsBanditBossParty && !party.IsCurrentlyUsedByAQuest)
                    {
                        Campaign.Current.CurrentConversationContext = ConversationContext.PartyEncounter;
                        Traverse.Create(__instance).Property <PlayerEncounterState>("EncounterState").Value = PlayerEncounterState.Begin;
                        ____stateHandled = true;
                        var _defenderParty = ____defenderParty;
                        if (PlayerEncounter.PlayerIsAttacker && _defenderParty.IsMobile && _defenderParty.MobileParty.Army != null && _defenderParty.MobileParty.Army.LeaderParty == _defenderParty.MobileParty && _defenderParty.MobileParty.Army.LeaderParty.MapFaction == MobileParty.MainParty.MapFaction && !_defenderParty.MobileParty.Army.LeaderParty.AttachedParties.Contains(MobileParty.MainParty))
                        {
                            GameMenu.SwitchToMenu("army_encounter");
                            return(false);
                        }
                        ____meetingDone = true;
                        GameMenu.SwitchToMenu("army_encounter");

                        return(false);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                FileLogExtension.Log("EXCEPTION OCCURED: " + ex.Message);
                return(true);
            }
        }
コード例 #3
0
ファイル: GameComponent.cs プロジェクト: suetree/MoreSpouses
 public static void StartBattle(PartyBase defenderParty)
 {
     StartBattleAction.Apply(MobileParty.MainParty.Party, defenderParty);
     PlayerEncounter.RestartPlayerEncounter(MobileParty.MainParty.Party, defenderParty, true);
     PlayerEncounter.Update();
     CampaignMission.OpenBattleMission(PlayerEncounter.GetBattleSceneForMapPosition(MobileParty.MainParty.Position2D));
 }
コード例 #4
0
        public void StartDialogue(Hero targetHero)
        {
            PartyBase heroParty   = PartyBase.MainParty;
            PartyBase targetParty = targetHero.PartyBelongedTo?.Party;

            bool isCivilian = false;

            if (targetParty == null)
            {
                targetParty = targetHero.CurrentSettlement?.Party ?? targetHero.BornSettlement?.Party;
                isCivilian  = true;
            }

            PlayerEncounter.Start();
            PlayerEncounter.Current.SetupFields(heroParty, targetParty ?? heroParty);

            string specialScene = "";
            string sceneLevels  = "";

            Campaign.Current.CurrentConversationContext = ConversationContext.Default;
            Mission conversationMission = (Mission)Campaign.Current.CampaignMissionManager.OpenConversationMission(
                new ConversationCharacterData(Hero.MainHero.CharacterObject, heroParty, true, false, false, isCivilian),
                new ConversationCharacterData(targetHero.CharacterObject, targetParty, true, false, false, isCivilian),
                specialScene, sceneLevels);

            conversationMission.AddListener(this);
        }
コード例 #5
0
 private void PreBattle(MobileParty targetParty)
 {
     PlayerEncounter.LeaveSettlement();
     PlayerEncounter.Finish(true);
     StartBattleAction.Apply(targetParty.Party, MobileParty.MainParty.Party);
     PlayerEncounter.RestartPlayerEncounter(MobileParty.MainParty.Party, targetParty.Party, true);
     PlayerEncounter.Update();
 }
コード例 #6
0
        internal void CECaptivityLeave(ref MenuCallbackArgs args)
        {
            new CESubModule().LoadTexture("default");
            PartyBase captorParty = PlayerCaptivity.CaptorParty;

            CECampaignBehavior.ExtraProps.Owner = null;

            if (!captorParty.IsSettlement || !captorParty.Settlement.IsTown)
            {
                PlayerCaptivity.EndCaptivity();
                return;
            }

            try
            {
                if (Hero.MainHero.IsAlive)
                {
                    if (Hero.MainHero.IsWounded)
                    {
                        Hero.MainHero.HitPoints = 20;
                    }

                    PlayerEncounter.ProtectPlayerSide();
                    MobileParty.MainParty.IsDisorganized = false;
                    PartyBase.MainParty.AddElementToMemberRoster(CharacterObject.PlayerCharacter, 1, true);
                }

                MobileParty.MainParty.CurrentSettlement = PlayerCaptivity.CaptorParty.Settlement;
                if (Campaign.Current.CurrentMenuContext != null)
                {
                    GameMenu.SwitchToMenu("town");
                }

                if (Hero.MainHero.IsAlive)
                {
                    Hero.MainHero.ChangeState(Hero.CharacterStates.Active);
                }

                if (captorParty.IsActive)
                {
                    captorParty.PrisonRoster.RemoveTroop(Hero.MainHero.CharacterObject);
                }

                if (Hero.MainHero.IsAlive)
                {
                    MobileParty.MainParty.IsActive = true;
                    PartyBase.MainParty.SetAsCameraFollowParty();
                    MobileParty.MainParty.SetMoveModeHold();
                    PartyBase.MainParty.UpdateVisibilityAndInspected(true);
                }

                PlayerCaptivity.CaptorParty = null;
            }
            catch (Exception)
            {
                PlayerCaptivity.EndCaptivity();
            }
        }
コード例 #7
0
        public void OnEndMission()
        {
            _messengers.Remove(_activeMessenger);
            _activeMessenger = null;

            if (PlayerEncounter.Current != null)
            {
                PlayerEncounter.Finish();
            }
        }
コード例 #8
0
        public void ExecuteDate()
        {
            //	CampaignMission.OpenBattleMission(PlayerEncounter.GetBattleSceneForMapPosition(MobileParty.MainParty.Position2D));
            String      scenc = PlayerEncounter.GetBattleSceneForMapPosition(MobileParty.MainParty.Position2D);
            List <Hero> heros = new List <Hero>();

            heros.AddRange(this._spouses);
            heros.Add(Hero.MainHero);
            SpousesMissons.OpenDateMission(scenc, heros);
        }
コード例 #9
0
 private void OnConversationEnded(CharacterObject character)
 {
     if (meetingEncounter != null)
     {
         PlayerEncounter.Finish(false);
         meetingEncounter = null;
         meetingHero      = null;
         AccessTools.Property(typeof(Campaign), "PlayerEncounter").SetValue(Campaign.Current, keepEncounter);
         keepEncounter = null;
         Hero.MainHero.PartyBelongedTo.CurrentSettlement = keepSettlement;
         keepSettlement = null;
     }
 }
コード例 #10
0
        public void BattleInCenter(MenuCallbackArgs args)
        {
            MobileParty targetParty = this._parties.Where(obj => obj.Name.ToString() == args.Text.ToString()).GetRandomElement();

            if (null == targetParty)
            {
                PlayerEncounter.LeaveSettlement();
                PlayerEncounter.Finish(true);
                return;
            }

            int    upgradeLevel = Settlement.CurrentSettlement.GetComponent <Town>().GetWallLevel();
            String scene        = LocationComplex.Current.GetLocationWithId("center").GetSceneName(upgradeLevel);

            PreBattle(targetParty);
            StartBattleNormal(scene, upgradeLevel);
        }
コード例 #11
0
        public static void Postfix(SPScoreboardVM __instance)
        {
            StatExplainer renownExplainer            = null;
            StatExplainer influencExplainer          = null;
            StatExplainer moraleExplainer            = null;
            float         renownChange               = 0;
            float         influenceChange            = 0;
            float         moraleChange               = 0;
            float         goldChange                 = 0;
            float         playerEarnedLootPercentage = 0;

            if (PlayerEncounter.IsActive)
            {
                PlayerEncounter.GetBattleRewards(out renownChange, out influenceChange, out moraleChange, out goldChange, out playerEarnedLootPercentage, ref renownExplainer, ref influencExplainer, ref moraleExplainer);
            }
            Campaign.Current.GetCampaignBehavior <SpousesStatsBehavior>().GetSpouseStatsBusiness()
            .EndCountHeroBattleData(__instance.BattleResultIndex, renownChange, influenceChange, moraleChange, goldChange, playerEarnedLootPercentage);
        }
コード例 #12
0
        private static void surrender_consequence_delegate(DialogueParams param, string isPlayer) // for surrenders you need to update the player encounter- not sure if this closes the window or not
        {
            isPlayer = isPlayer.ToLower();

            if (isPlayer == "true")
            {
                PlayerEncounter.PlayerSurrender = true;
            }
            else if (isPlayer == "false")
            {   //Interestingly, PlayerEncounter.EnemySurrender = true; results in a null reference crash.
                param.PlayerParty.Party.AddPrisoners(param.AdversaryParty.Party.MemberRoster);
                param.AdversaryParty.RemoveParty();
                CustomSpawns.UX.ShowMessage("You have taken your enemies prisoner.", TaleWorlds.Library.Colors.Green);
                end_conversation_consequence_delegate(param);
            }
            else
            {
                ErrorHandler.ShowPureErrorMessage("Can't interpret " + isPlayer.ToString() + " as a bool. Possible typo in the XML consequence 'Surrender'");
            }
            PlayerEncounter.Update();
        }
コード例 #13
0
        public void BattleInLordShall(MenuCallbackArgs args)
        {
            Hero target = this._lordHeros.Where(obj => obj.Name.ToString() == args.Text.ToString()).GetRandomElement();

            if (null == target)
            {
                PlayerEncounter.LeaveSettlement();
                PlayerEncounter.Finish(true);
                return;
            }
            int    upgradeLevel = Settlement.CurrentSettlement.GetComponent <Town>().GetWallLevel();
            String scene        = LocationComplex.Current.GetLocationWithId("lordshall").GetSceneName(upgradeLevel);

            MobileParty targetParty = target.Clan.CreateNewMobileParty(target);

            AddRandomTroopToParty(targetParty);
            SelectMainPartyMember(args, () => {
                PreBattle(targetParty);
                OpenBattleJustHero(scene, upgradeLevel);
            }, SneakMaxNum);

            //InformationManager.AddQuickInformation();
        }
コード例 #14
0
        public void BattleInLordShall(MenuCallbackArgs args)
        {
            this._sneakType = SneakType.LordShall;
            Hero target = this._lordHerosWithOutParty.Where(obj => obj.Name.ToString() == args.Text.ToString()).ToList().GetRandomElement();

            if (null == target)
            {
                PlayerEncounter.LeaveSettlement();
                PlayerEncounter.Finish(true);
                return;
            }
            int    upgradeLevel = Settlement.CurrentSettlement.GetComponent <Town>().GetWallLevel();
            String scene        = LocationComplex.Current.GetLocationWithId("lordshall").GetSceneName(upgradeLevel);

            //empire_castle_keep_a_l3_interior

            this._tempTargetParty = target.Clan.CreateNewMobileParty(target);
            AddRandomTroopToParty(this._tempTargetParty);
            SelectMainPartyMember(args, () => {
                PreBattle(this._tempTargetParty);
                OpenBattleJustHero(scene, upgradeLevel);
            }, SneakMaxNum);
        }
コード例 #15
0
 private void OnSessionLaunched(CampaignGameStarter campaignGameStarter)
 {
     campaignGameStarter.AddGameMenu(
         FastDialogueSubModule.FastEncounterMenu,
         "{=!}{ENCOUNTER_TEXT}",
         Init,
         GameOverlays.MenuOverlayType.Encounter,
         GameMenu.MenuFlags.none,
         null);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_attack",
         "{=o1pZHZOF}Attack!",
         args =>
     {
         return(ShouldShowWarOptions() && ReflectionUtils.ForceCall <bool>(GetGlobalCampaignBehaviorManager(), "game_menu_encounter_attack_on_condition", new object[] { args }));
     },
         ConsequenceOf("game_menu_encounter_attack_on_consequence"),
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_troops",
         "{=rxSz5dY1}Send troops.",
         (args) =>
     {
         return(ShouldShowWarOptions() && ReflectionUtils.ForceCall <bool>(GetGlobalCampaignBehaviorManager(), "game_menu_encounter_order_attack_on_condition", new object[] { args }));
     },
         ConsequenceOf("game_menu_encounter_order_attack_on_consequence"),
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_getaway",
         "{=qNgGoqmI}Try to get away.",
         ConditionOf("game_menu_encounter_leave_your_soldiers_behind_on_condition"),
         ConsequenceOf("game_menu_encounter_leave_your_soldiers_behind_accept_on_consequence"),
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_talk",
         "{=qNgGoqmI}Converse.",
         args =>
     {
         args.optionLeaveType = GameMenuOption.LeaveType.Conversation;
         return(true);
     },
         args =>
     {
         PlayerEncounter.DoMeeting();
     },
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_surrend",
         "{=3nT5wWzb}Surrender.",
         ConditionOf("game_menu_encounter_surrender_on_condition"),
         args =>
     {
         PlayerEncounter.PlayerSurrender = true;
         PlayerEncounter.Update();
     },
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_leave",
         "{=2YYRyrOO}Leave...",
         ConditionOf("game_menu_encounter_leave_on_condition"),
         (args) =>
     {
         MenuHelper.EncounterLeaveConsequence(args);
         if (PartyBase.MainParty.IsMobile && PartyBase.MainParty.MobileParty != null)
         {
             PartyBase.MainParty.MobileParty.IsDisorganized = false;
         }
     },
         true,
         -1,
         false);
 }
コード例 #16
0
        internal void CECaptorPrisonerRebel(MenuCallbackArgs args)
        {
            CEPersistence.animationPlayEvent = false;

            TroopRoster releasedPrisoners = TroopRoster.CreateDummyTroopRoster();

            try
            {
                foreach (TroopRosterElement element in MobileParty.MainParty.PrisonRoster.GetTroopRoster())
                {
                    if (element.Character.IsHero)
                    {
                        element.Character.HeroObject.ChangeState(Hero.CharacterStates.Active);
                    }
                }
                releasedPrisoners.Add(MobileParty.MainParty.PrisonRoster.ToFlattenedRoster());
                MobileParty.MainParty.PrisonRoster.Clear();
            }
            catch (Exception)
            {
                CECustomHandler.LogToFile("Couldn't find anymore prisoners.");
            }

            if (!releasedPrisoners.GetTroopRoster().IsEmpty())
            {
                try
                {
                    TroopRosterElement leader = releasedPrisoners.GetTroopRoster().FirstOrDefault(hasHero => hasHero.Character.IsHero);

                    Clan        clan          = null;
                    Settlement  nearest       = null;
                    MobileParty prisonerParty = null;

                    if (leader.Character != null)
                    {
                        clan          = leader.Character.HeroObject.Clan;
                        nearest       = SettlementHelper.FindNearestSettlement(settlement => settlement.OwnerClan == clan) ?? SettlementHelper.FindNearestSettlement(settlement => true);
                        prisonerParty = LordPartyComponent.CreateLordParty("CustomPartyCE_" + MBRandom.RandomInt(int.MaxValue), leader.Character.HeroObject, MobileParty.MainParty.Position2D, 0.5f, nearest);
                    }
                    else
                    {
                        clan = Clan.BanditFactions.First(clanLooters => clanLooters.StringId == "looters");
                        clan.Banner.SetBannerVisual(Banner.CreateRandomBanner().BannerVisual);
                        nearest       = SettlementHelper.FindNearestSettlement(settlement => true);
                        prisonerParty = BanditPartyComponent.CreateBanditParty("CustomPartyCE_" + MBRandom.RandomInt(int.MaxValue), clan, nearest.Hideout, false);
                    }

                    PartyTemplateObject defaultPartyTemplate = clan.DefaultPartyTemplate;

                    prisonerParty.InitializeMobileParty(defaultPartyTemplate, MobileParty.MainParty.Position2D, 0.5f, 0.1f, -1);
                    prisonerParty.SetCustomName(new TextObject("{=CEEVENTS1107}Escaped Captives"));

                    prisonerParty.MemberRoster.Clear();
                    prisonerParty.ActualClan = clan;
                    prisonerParty.MemberRoster.Add(releasedPrisoners.ToFlattenedRoster());
                    prisonerParty.IsActive = true;

                    prisonerParty.HomeSettlement = nearest;
                    prisonerParty.SetMovePatrolAroundPoint(nearest.IsTown
                                       ? nearest.GatePosition
                                       : nearest.Position2D);

                    if (leader.Character != null)
                    {
                        prisonerParty.Party.Owner = leader.Character.HeroObject;
#if BETA
                        prisonerParty.ChangePartyLeader(leader.Character);
#else
                        prisonerParty.ChangePartyLeader(leader.Character, true);
#endif
                    }
                    else
                    {
                        prisonerParty.Party.Owner = clan.Leader;
                    }



                    prisonerParty.RecentEventsMorale = -100;
                    prisonerParty.Aggressiveness     = 0.2f;
                    prisonerParty.InitializePartyTrade(0);

                    Hero.MainHero.HitPoints += 40;

                    CECustomHandler.LogToFile(prisonerParty.Leader.Name.ToString());
                    PlayerEncounter.RestartPlayerEncounter(MobileParty.MainParty.Party, prisonerParty.Party);
                    GameMenu.SwitchToMenu("encounter");
                }
                catch (Exception)
                {
                    CECaptorContinue(args);
                }
            }
            else
            {
                CECaptorContinue(args);
            }
        }
コード例 #17
0
        private void OnSessionLaunched(CampaignGameStarter starter)
        {
            MBTextManager.SetTextVariable("PLAYER_CAMP_STATE", "idling");
            MBTextManager.SetTextVariable("PLAYER_CAMP_START_STOP", "Start");

            starter.AddGameMenu(
                PlayerCampMenu,
                "Player camp.\n \nTroops are currently {PLAYER_CAMP_STATE}.\nResources left for {PLAYER_CAMP_RESOURCES} days.",
                null
                );

            starter.AddGameMenuOption(
                PlayerCampMenu,
                "player_camp_train",
                "{PLAYER_CAMP_START_STOP} training",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Recruit),
                _ =>
            {
                if (_establishedCamp != null)
                {
                    _establishedCamp.IsTraining = !_establishedCamp.IsTraining;

                    MBTextManager.SetTextVariable("PLAYER_CAMP_STATE", _establishedCamp.IsTraining ? "training" : "idling");
                    MBTextManager.SetTextVariable("PLAYER_CAMP_START_STOP", _establishedCamp.IsTraining ? "Stop" : "Start");
                }
            }
                );

            starter.AddGameMenuOption(
                PlayerCampMenu,
                "player_camp_remove",
                "Remove camp",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Continue),
                _ =>
            {
                RemoveCamp();
                PlayerEncounter.Finish();
            },
                true
                );

            starter.AddGameMenuOption(
                PlayerCampMenu,
                "player_camp_wait",
                "Wait",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Wait),
                _ => GameMenu.ActivateGameMenu("player_camp_menu_wait")
                );

            starter.AddGameMenuOption(
                PlayerCampMenu,
                "player_camp_leave",
                "Leave",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Leave),
                _ => PlayerEncounter.Finish()
                );

            // wait menu
            starter.AddWaitGameMenu("player_camp_menu_wait", "Waiting.",
                                    null,
                                    args =>
            {
                args.MenuContext.GameMenu.AllowWaitingAutomatically();
                args.optionLeaveType = GameMenuOption.LeaveType.Wait;
                return(true);
            },
                                    null,
                                    null,
                                    GameMenu.MenuAndOptionType.WaitMenuHideProgressAndHoursOption
                                    );

            starter.AddGameMenuOption(
                "player_camp_menu_wait",
                "wait_leave",
                "{=UqDNAZqM}Stop waiting",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Leave),
                _ => GameMenu.ActivateGameMenu(PlayerCampMenu)
                );
        }
コード例 #18
0
 public void Leave(MenuCallbackArgs args)
 {
     PlayerEncounter.LeaveSettlement();
     PlayerEncounter.Finish(true);
 }
コード例 #19
0
        internal void CECaptorHuntPrisoners(MenuCallbackArgs args, int amount = 20)
        {
            CEPersistence.animationPlayEvent = false;

            TroopRoster releasedPrisoners = TroopRoster.CreateDummyTroopRoster();

            if (CESettings.Instance != null)
            {
                amount = CESettings.Instance.AmountOfTroopsForHunt;
            }

            try
            {
                for (int i = 0; i < amount; i++)
                {
                    TroopRosterElement test = MobileParty.MainParty.PrisonRoster.GetTroopRoster().Where(troop => !troop.Character.IsHero).GetRandomElementInefficiently();

                    if (test.Character == null)
                    {
                        continue;
                    }

                    MobileParty.MainParty.PrisonRoster.RemoveTroop(test.Character);
                    releasedPrisoners.AddToCounts(test.Character, 1, true);
                }
            }
            catch (Exception)
            {
                CECustomHandler.LogToFile("Couldn't find anymore prisoners.");
            }

            if (!releasedPrisoners.GetTroopRoster().IsEmpty())
            {
                CECaptorContinue(args);

                try
                {
                    Clan clan = Clan.BanditFactions.First(clanLooters => clanLooters.StringId == "looters");
                    clan.Banner.SetBannerVisual(Banner.CreateRandomBanner().BannerVisual);

                    Settlement nearest = SettlementHelper.FindNearestSettlement(settlement => { return(true); });

                    MobileParty prisonerParty = BanditPartyComponent.CreateBanditParty("CustomPartyCE_Hunt_" + MBRandom.RandomInt(int.MaxValue), clan, nearest.Hideout, false);

                    PartyTemplateObject defaultPartyTemplate = clan.DefaultPartyTemplate;

                    prisonerParty.InitializeMobileParty(defaultPartyTemplate, MobileParty.MainParty.Position2D, 0.5f, 0.1f, -1);
                    prisonerParty.SetCustomName(new TextObject("{=CEEVENTS1107}Escaped Captives"));

                    prisonerParty.MemberRoster.Clear();
                    prisonerParty.MemberRoster.Add(releasedPrisoners.ToFlattenedRoster());

                    prisonerParty.RecentEventsMorale = -100;
                    prisonerParty.IsActive           = true;
                    prisonerParty.ActualClan         = clan;
                    prisonerParty.Party.Owner        = clan.Leader;
                    prisonerParty.Party.Visuals.SetMapIconAsDirty();

                    prisonerParty.HomeSettlement = nearest;
                    prisonerParty.InitializePartyTrade(0);

                    Hero.MainHero.HitPoints += 40;


                    CECustomHandler.LogToFile(prisonerParty.Leader.Name.ToString());
                    PlayerEncounter.RestartPlayerEncounter(prisonerParty.Party, MobileParty.MainParty.Party, true);
                    StartBattleAction.Apply(MobileParty.MainParty.Party, prisonerParty.Party);
                    PlayerEncounter.Update();

                    CEPersistence.huntState = CEPersistence.HuntState.StartHunt;
                    CampaignMission.OpenBattleMission(PlayerEncounter.GetBattleSceneForMapPosition(MobileParty.MainParty.Position2D));
                }
                catch (Exception)
                {
                    CECaptorKillPrisoners(args, amount);
                }
            }
            else
            {
                CECaptorContinue(args);
            }
        }
コード例 #20
0
 private void game_menu_steal_wait_on_consequence(MenuCallbackArgs args)
 {
     PlayerEncounter.Finish(true);
 }
コード例 #21
0
 protected override void OnMenuOptionClicked(MenuCallbackArgs args)
 {
     PlayerEncounter.LeaveSettlement();
     PlayerEncounter.Finish();
 }