public AssassinationCaughtByGuardsLogic(ILocationCharacterProvider locationCharacterProvider, ConversationManager conversationManager, Settlement settlement, Hero assassinationTarget) { _locationCharacterProvider = locationCharacterProvider; _conversationManager = conversationManager; _settlement = settlement; _assassinationTarget = assassinationTarget; }
public MissionLoader(IMissionOutcomeHandler missionOutcomeHandler, IAssassinationActions assassinationActions, IEncounterProvider encounterProvider, IDialogProvider dialogProvider, ILocationCharacterProvider locationCharacterProvider) { _missionOutcomeHandler = missionOutcomeHandler; _assassinationActions = assassinationActions; _encounterProvider = encounterProvider; _dialogProvider = dialogProvider; _locationCharacterProvider = locationCharacterProvider; }
public CastleAssassinationController(ILocationCharacterProvider locationCharacterProvider, Hero assassinationTarget, bool sneakInSuccessful) { _locationCharacterProvider = locationCharacterProvider; _assassinationTarget = assassinationTarget; _sneakInSuccessful = sneakInSuccessful; }
public static Mission OpenCastleAssassination( IEncounterProvider encounterProvider, ILocationCharacterProvider locationCharacterProvider, IDialogProvider dialogProvider, IMissionOutcomeHandler missionOutcomeHandler, IAssassinationActions assassinationActions, Settlement settlement, Hero assassinationTarget, bool sneakInSuccessful ) { var encounterConfig = encounterProvider.GetSneakInEncounter(settlement); var locationToOpen = settlement.LocationComplex.GetLocationWithId(encounterConfig.LocationId); PlayerEncounter.Current.AddLocationEncounter(encounterConfig.LocationEncounter); var sceneName = locationToOpen.GetSceneName(encounterConfig.WallLevel); var missionRecord = SandBoxMissions.CreateSandBoxMissionInitializerRecord(sceneName, string.Empty, true); var missionBehaviors = new List <MissionBehaviour> { new MissionOptionsComponent(), new CampaignMissionComponent(), new MissionBasicTeamLogic(), //new BasicLeaveMissionLogic(),// maybe implement own //new LeaveMissionLogic(),//maybe implement own new MissionAgentLookHandler(), new MissionConversationHandler(), new MissionAgentHandler(locationToOpen, null), new HeroSkillHandler(), new MissionFightHandler(), new BattleAgentLogic(), new AgentTownAILogic(), //not sure, maybe implement my own version new MissionCrimeHandler(), // maybe keep new MissionFacialAnimationHandler(), //new MissionDebugHandler(), //new LocationItemSpawnHandler(),// remove? //new VisualTrackerMissionBehavior(), new CastleAssassinationController(locationCharacterProvider, assassinationTarget, sneakInSuccessful), new AssassinationOutcomeLogic(missionOutcomeHandler, assassinationActions, settlement, assassinationTarget, sneakInSuccessful), new AssassinationConversationLogic(dialogProvider, Campaign.Current.ConversationManager, assassinationTarget.CharacterObject, sneakInSuccessful) }; if (!sneakInSuccessful) { missionBehaviors.Add(new AssassinationCaughtByGuardsLogic(locationCharacterProvider, Campaign.Current.ConversationManager, settlement, assassinationTarget)); } // Hacky way to disable exiting via the doors - I don't know how to lock the doors yet var cachedLocations = locationToOpen.LocationsOfPassages.ToList(); locationToOpen.LocationsOfPassages.Clear(); // I don't think I like this missionOutcomeHandler.Initialise((settl, ass) => { OpenCapturedConversation( encounterProvider, dialogProvider, assassinationActions, settl, ass ); }, () => { locationToOpen.LocationsOfPassages.AddRange(cachedLocations); }); return(MissionState.OpenNew("CastleAssassination", missionRecord, (Mission mission) => missionBehaviors, true, true, true)); }