public void EstablishCamp(MobileParty parentParty)
        {
            var party = MobileParty.Create("main_player_camp:0");

            party.StringId = "main_player_camp:0";
            party.InitializeMobileParty(new TextObject("Player Camp"), new TroopRoster(), new TroopRoster(), MobileParty.MainParty.Position2D, 1f, 0.5f);

            var roster = MobileParty.MainParty.MemberRoster;

            roster.RemoveTroop(Hero.MainHero.CharacterObject);
            party.Party.AddMembers(roster.ToFlattenedRoster());
            roster.Clear();

            party.Party.ItemRoster.Add(MobileParty.MainParty.ItemRoster);
            MobileParty.MainParty.ItemRoster.RemoveAllItems();

            MobileParty.MainParty.AddElementToMemberRoster(Hero.MainHero.CharacterObject, 1);
            party.DisableAi();
            party.Party.Owner = Hero.MainHero;

            _establishedCamp = new PlayerEstablishedCamp
            {
                Party       = party,
                ParentParty = parentParty,
                IsTraining  = false,
            };

            MBTextManager.SetTextVariable("PLAYER_CAMP_RESOURCES", _establishedCamp.Party.GetNumDaysForFoodToLast());
        }
        public void RemoveCamp()
        {
            if (_establishedCamp == null)
            {
                return;
            }

            var party  = _establishedCamp.Party;
            var parent = _establishedCamp.ParentParty;

            parent.MemberRoster.Add(party.MemberRoster);
            parent.ItemRoster.Add(party.ItemRoster);

            party.RemoveParty();

            _establishedCamp = null;
        }