Skyrim Special Edition

About this mod

Reduces the chance followers talking over NPCs and each other. Supports most custom-voiced followers without a patch.

Additional follower utilities are available for follower mod authors that are not available in the base game.

Requirements
Permissions and credits
Changelogs
Donations
DO NOT FORGET THE REQUIREMENTS LISTED ABOVE!!!
...which you probably already have...

Silencing Talkative Followers Unilaterally
This mod attempts to reduce followers from talking over each other. Specifically, they will not start new idle comments when (a) the player is in dialogue with any NPC, (b) any of the current followers are talking or are in a scene, or (c) the player is close to non-follower NPCs in a scene.

Important:
  • Some followers rely on idles to progress. Examples include Remiel and Xelzaz, among others. If you're wondering why they haven't said anything yet, keep an eye out for them shrugging their shoulders and (lightly) waving arms. This means someone else is stealing the spotlight from them. Give them some time to butt in.
  • Followers can still talk over each other if they happen to start at almost exactly the same time. However, this is not a common occurrence.

Configuration/Troubleshooting:
Spoiler:  
Show

  • To turn off the STFU feature, run the console command: stopquest FK_QUST_STFU
  • To turn off the detection of nearby scenes, run the console command: set FK_GLOB_StfuForScenes 0.0
  • To change the distance for detecting nearby scenes, run the console command: set FK_GLOB_StfuForScenesDistance # (Use a positive decimal number. The default is 256.0)
  • To exclude an NPC from being considered for nearby scenes, click them in the console and run: addtofaction FK_FACT_StfuIgnoredSceneActors 1
  • To exclude a follower from silencing altogether, click them in the console and run: addtofaction FK_FACT_DoNotStfu 1
  • If a follower is bypassing STFU, then you can patch their idles to be conditioned on a gap in dialogue. A zedit script is provided in the miscellaneous files and on github that completely automates this process for you.
  • If your followers have stopped talking completely for at least 10 minutes, drop a note in the comments, so I can help you.

Demonstration:
Spoiler:  
Show




Supported followers:
Spoiler:  
Show


* Most custom voiced followers should be supported out of the box, including those not listed here. However, there may be a few that need patches or behave differently, for example, Caesia. If you notice one of your followers is talking a lot out of turn, let me know.


But wait, there's more! (For mod developers, anyway...)
This mod also includes a number of factions, events, conditions, keywords, and other functions intended to help with follower creation and commentary. Continue reading for more.

Follower Tracking
Keep track of followers to make it easier to interact with them and check whether they're actually followers (because not all followers behave the same).

Spoiler:  
Show

Conditions

Is the Actor currently a follower, i.e., recruited?
GetInFaction FK_FACT_TrackedFollowers == 1.0

Story Events
The following events will be emitted for use in the Story Manager to start your own Quests.

Follower is recruited
Keyword: FK_KYWD_FollowerEvent
Parameters:
  • Location akLoc = None,
  • ObjectReference akRef1 = The recruited follower
  • ObjectReference akRef2 = None
  • int aiEventType = 0
  • int aiFollowerCount = The current follower count

Follower is dismissed
Keyword: FK_KYWD_FollowerEvent
Parameters:
  • Location akLoc = None,
  • ObjectReference akRef1 = The dismissed follower
  • ObjectReference akRef2 = None
  • int aiEventType = 1
  • int aiFollowerCount = The current follower count

Mod Events
The following mod events will be emitted for use directly in Papyrus.

Follower is recruited
Keyword: FK_FollowerRecruitedEvent
Parameters:
  • Form akActor = The recruited follower
  • Int aiSize = The current follower count

Follower is dismissed
Keyword: FK_FollowerDismissedEvent
Parameters:
  • Form akActor = The dismissed follower
  • Int aiSize = The current follower count



Dialogue Tracking
Keep track of when the player is talking to someone and when a follower is talking.
Spoiler:  
Show

Conditions

Is the player talking to someone OR is a follower talking?
GetGlobalValue FK_GLOB_DialogueIsOngoing > 0.0
Note: This is set to the number of active talkers.

Story Events
The following events will be emitted for use in the Story Manager to start your own Quests.

The player enters conversation with an NPC
Keyword: FK_KYWD_DialogueEvent
Parameters:
  • Location akLoc = None,
  • ObjectReference akRef1 = The NPC in dialogue with the player
  • ObjectReference akRef2 = None
  • int aiEventType = 0

The player exits conversation with an NPC
Keyword: FK_KYWD_DialogueEvent
Parameters:
  • Location akLoc = None,
  • ObjectReference akRef1 = The NPC that was in dialogue with the player
  • ObjectReference akRef2 = None
  • int aiEventType = 1



Weather Tracking
Keep track of conditions related to the weather that aren't exposed by the base game.
Spoiler:  
Show

Conditions

Note: Conditions are refreshed (a) on location change and (b) every minute, if outdoors.

Is an aurora visible? (Time is between 8pm and 5am.)
GetGlobalValue FK_GLOB_WeatherHasAurora == 1.0

Is the weather foggy?
GetGlobalValue FK_GLOB_WeatherHasFog == 1.0


Region Tracking
Regions are areas painted on the map that define certain characteristics of the area. Survival uses them as part of its cold/warm climate tracking.
Spoiler:  
Show

Conditions

Is the player in a forested region?
GetGlobalValue FK_GLOB_InForestRegion == 1.0
Examples: Falkreath area, outside Riften

Is the player in a pleasant region?
GetGlobalValue FK_GLOB_InPleasantRegion == 1.0
Examples: Riften area, Whiterun area

Is the player in a snowy region?
GetGlobalValue FK_GLOB_InSnowyRegion == 1.0
Examples: Dawnstar area, Windhelm area


Location Tracking
Some locations are difficult to track, particularly when the player enters or is otherwise inside city walls.

Spoiler:  
Show

Conditions

Is the player inside <city>?
GetGlobalValue FK_GLOB_InMarkarthProper == 1.0
GetGlobalValue FK_GLOB_InRiftenProper == 1.0
GetGlobalValue FK_GLOB_InSolitudeProper == 1.0
GetGlobalValue FK_GLOB_InWhiterunProper == 1.0
GetGlobalValue FK_GLOB_InWindhelmProper == 1.0
Note: These globals remain true in indoor locations inside the cities.

Story Events
The following events will be emitted for use in the Story Manager to start your own Quests.

The player entered <city>
Keyword: FK_KYWD_LocationEvent
Parameters:
  • Location akLoc = The city's location, e.g., MarkarthLocation, WhiterunLocation
  • ObjectReference akRef1 = None
  • ObjectReference akRef2 = None
  • int aiEventType = 0
Supported cities: Markath, Riften, Solitude, Whiterun, Windhelm
Note: This will only trigger when entering the city via the gate or fast travel. It will not trigger when going inside/outside buildings inside the city.


Showcase

Critical hit story events used to trigger comments (unreleased follower):


Future Work
These are things I'm likely to add to this mod in the near future as I continue development on custom followers.
  • Optional MCM for tweaking settings.
  • Commentary rate adjuster for all followers?
  • Follower framework support for basic follower features (recruit, dismiss, wait, follow, trade, favor).