Oblivion
0 of 0

File information

Last updated

Original upload

Created by

alphaniner

Uploaded by

alphaniner

Virus scan

Safe to use

Documentation

Readme

View as plain text

Mod: Small Talk Speechcraft
Author: alphaniner
Version: 0.1.0
Date: November 30, 2014
Category: Skills and Leveling
Requirements: OBSE v0020
Source: http://www.nexusmods.com/oblivion/mods/45712


Beta version, only download for beta testing purposes. In my testing it has been stable and functioning as intended, but more testing is necessary (and greatly appreciated). Be sure to see the 'Technical Details' section if you want to help test.

Requirements
------------
* OBSE v0020

Conflicts/Incompatibility
-------------------------
None that I'm aware of. The .esp doesn't modify any records, and the script only modifies NPC disposition.

Description
-----------
The primary goal of this mod is to provide a passive method of gradually raising NPCs' disposition towards the player and leveling the Speechcraft skill. In other words, an alternative to the Persuasion mini-game (which is not modified in any way). As currently implemented, engaging in dialogue with a persuadable NPC will raise the NPC's disposition by 5 and provide Speechcraft experience equal to one round of the Persuasion mini-game (fixed values are temporary) if one of the following is true:

1)You haven't talked to the NPC today.
2) At least 12 hours have passed since you first talked to the NPC today.

So basically the disposition/Speechcraft increase will occur at most twice per day for each persuadable NPC. But due to scheduling and the 12 hour 'cooldown', in most cases it will occur only once. For testing purposes, a message about the outcome will print to the top of the screen shortly after entering dialogue. There are five possible message types:

* "Small Talk Failure: Persuasion Disabled"
* "Small Talk Failure: spoken to recently (now last )"
* "Small Talk Success: not spoken to recently (now last )"
* "Small Talk Success: not spoken to today."
* "Small Talk ERROR: Didn't find valid target."

Hopefully that last one won't get any play. I've only encountered it once, see "Known Issues" for details.


Technical Details
-----------------
Oblivion has no scripting function for determining the player's dialogue target or whether the dialogue target is persuadable. The methods I use to determine these things were designed from scratch and should be considered highly experimental. As such I'm primarily interested about cases where

* No valid target was found
* The dialogue target was incorrectly identified
* Unpersuadable NPCs are detected as persuadable
* Persuadable NPCs are detected as unpersuadable

The script also has a DebugPrint call in nearly every conditional block. These messages potentially contain information helpful for troubleshooting.

You can prevent the disposition increase and Speechcraft experience gain by setting the global 'a9SmallTalkJustTesting' to 1. Before removing the mod, it wouldn't hurt to stop 'a9SmallTalkMainQuest'.


Known Issues
------------

Bugs
- During my testing, the script failed to get the dialogue target once. The target was one of many Guards, and debug messages didn't distinguish between them. At the time I was only testing NPCs in the same cell as the player; I think it's possible for player and NPC to talk across a cell border, so I'm assuming the NPC I was talking to was in an adjacent cell. The script now scans one 'layer' of adjacent cells, which I think should fix the bug, but since it only occurred once I can't be sure. Also, debug messages now include the NPC's FormID to distinguish between copies of generic NPCs.

Limitations
- At the moment no attempt is made to cap the value to which an NPC's disposition can be raised, but I plan on implementing that soon. In the short term I'll either use the cap from Bribe/Persuade (if possible) or use a value based on player's Speechcraft. In the long term, maybe I'll take gender and race into account and implement 'diminishing returns' as the cap is neared.
- Because the tracking of NPCs that have been 'Small Talked' resets each day, it's possible, for example, to Small Talk an NPC at 11:59 and again at 12:01 the next day. The tracking is done with an array and associates the NPC's formID with the GameHour he was Small Talked. I could use a second array to store 'last talked day' and keep both around indefinitely, but I don't know if it's a good idea to use arrays for permanent storage like that. One alternative is to use AddActorValues, which I may consider in the future. Any other suggestions are appreciated.
- Some NPCs (for example Cicero Verus, Black Horse delivery in IC Market) are persuadable but automatically terminate dialogue so you'd never have a chance to persuade them. They will still get 'Small Talked'. At the moment I don't consider this enough of an issue to deal with.
- Guards and other generic NPCs are replaced frequently. I haven't looked into how frequently or what triggers it, but presumably this could be exploited. Of course, the same is true of the mini-game, but Small Talk is slightly less tedious. As above, I'm not particularly concerned about this at the moment.


Credits & Thanks
-----------------
- Strategy Master for "Persuasion Overhaul OBSE", which I looked at shortly before starting Small Talk. I might not have thought to exclude 'No Persuasion' NPCs otherwise. That's the only thing the mods have in common, but looking at it undoubtedly spared me some general frustration.
- Legotrash for some input that helped me stay motivated.
- AndalayBay from Bethsoft forums for help with OBSE UI functions.
- The Bethesda CS Wiki.
- The team behind OBSE. Small Talk couldn't have been made without it.
- The team behind TESEdit.

Permissions nonsense
-------------------
Released under the WTFPL (warning, profanity: http://www.wtfpl.net). That said, I'd appreciate it if you do the following:
- Give me credit as appropriate.
- Release derivatives, etc. under a reasonably permissive license.
In any case, please don't ask for permission or wait for a response if you choose to notify me; there's no telling when I'd get back to you.