// the system triggers a mission
        public bool TriggeredMissionStart(Character character, bool spreadInGang, int missionId, MissionLocation location, int level, out MissionInProgress missionInProgress)
        {
            Logger.Info("trying to trigger missionId: " + missionId + " characterId:" + character.Id);

            Mission mission;

            _missionDataCache.GetMissionById(missionId, out mission).ThrowIfFalse(ErrorCodes.ItemNotFound);

            var resolved = MissionAdministrator.StartMission(character, spreadInGang, mission, location, level, out missionInProgress);

            return(resolved);
        }
        public bool StartMission(Character character, bool spreadInGang, Mission mission, MissionLocation location, int level, out Dictionary <string, object> info)
        {
            //add the new mission in progress, set things in motion
            MissionInProgress missionInProgress;
            var resolved = MissionAdministrator.StartMission(character, spreadInGang, mission, location, level, out missionInProgress);

            if (!resolved)
            {
                info = new Dictionary <string, object>();
                return(false);
            }

            Transaction.Current.OnCommited(() => GetOptionsByRequest(character, missionInProgress.myLocation));

            info = new Dictionary <string, object>
            {
                { k.mission, missionInProgress.ToDictionary() },
            };

            return(true);
        }