I've been tinkering with Persuasion Overhaul; most of my hideous experiments are not ready for prime time so I won't share my personal .esp, but there's one tweak that I definitely want to make available. Someone recently commented on the fact that you often wind up accidentally getting yourself attacked, and I decided to dig in and see what's up with that.
Turns out to be pretty simple: there's no check to make sure the target's Disposition doesn't go negative. With that check added, most NPCs (i.e. those with Aggression 5 or less) will never attack you just because you're an irritating little mudcrab; you'll need to successfully Taunt to start a fight.
Open up the Quests editor (big black Q button, or Character > Quests), and find the Persuasion quest in the list. (Press 'P' to make it quicker.) Click the Quest Stages button at the top. There should be a column of result stages, labeled 0 to 99 (but with many numbers missing in between). Right-click in that list and click New, then type '16' and click elsewhere to store the new stage number. It'll show up at the bottom, already selected. In the empty "Quest Stage Items" box at the top, right-click and select New again. It'll create a log entry labeled EMPTY, which is what we want. Click into the Result Script box on the right, and paste in the following:
Stage 16 -
; Predetermine the new disposition for each option for use with ; dialogue conditionsset Persuasion.admireDispRes to Persuasion.npc_disp + Persuasion.admireResset Persuasion.jokeDispRes to Persuasion.npc_disp + Persuasion.jokeResset Persuasion.boastDispRes to Persuasion.npc_disp + Persuasion.boastResset Persuasion.coerceDispRes to Persuasion.npc_disp + Persuasion.coerceRes
Click the Compile Result button.
Now click on stage 12, clear out the Result Code, and paste in the following, then compile. Do the same for stages 13 through 15:
Stage 12 -
;Modifiers to the disposition gainsif Persuasion.admireRes <= 0 set Persuasion.admireRes to Persuasion.admireRes * ((200-2*Player.getAv Personality) + (Persuasion.npc_will - Player.getav willpower ) + (100 - Persuasion.npc_disp))/250 if Persuasion.admireRes < (0 - Persuasion.npc_disp) set Persuasion.admireRes to (0 - Persuasion.npc_disp) elseif Persuasion.admireRes > -1 set Persuasion.admireRes to -1 endif else set Persuasion.admireRes to Persuasion.admireRes * (2*Player.getAv Personality + (Player.getav willpower - Persuasion.npc_will)+ (100-Persuasion.npc_disp))/250 if Persuasion.admireRes < 1 set Persuasion.admireRes to 1 endif endifSetStage Persuasion 13
Stage 13 -
if Persuasion.jokeRes <= 0 set Persuasion.jokeRes to Persuasion.jokeRes * ((200-2*Player.getAv Personality) + (Persuasion.npc_resp - Player.getav intelligence)+ (100-Persuasion.npc_disp))/250 if Persuasion.jokeRes < (0 - Persuasion.npc_disp) set Persuasion.jokeRes to (0 - Persuasion.npc_disp) elseif Persuasion.jokeRes > -1 set Persuasion.jokeRes to -1 endif else set Persuasion.jokeRes to Persuasion.jokeRes * (2*Player.getAv Personality + (Player.getav intelligence - Persuasion.npc_resp)+ (100-Persuasion.npc_disp))/250 if Persuasion.jokeRes < 1 set Persuasion.jokeRes to 1 endif endifSetStage Persuasion 14
Stage 14 -
if Persuasion.boastRes <= 0 set Persuasion.boastRes to Persuasion.boastRes * ((200 - 2*Player.getAv Personality) + (Persuasion.npc_int - Player.getav Strength)+ (100 - Persuasion.npc_disp))/250 if Persuasion.boastRes < (0 - Persuasion.npc_disp) set Persuasion.boastRes to (0 - Persuasion.npc_disp) elseif Persuasion.boastRes > -1 set Persuasion.boastRes to -1 endif else set Persuasion.boastRes to Persuasion.boastRes * (2*Player.getAv Personality + (Player.getav Strength - Persuasion.npc_int)+ (100-Persuasion.npc_disp))/250 if Persuasion.boastRes < 1 set Persuasion.boastRes to 1 endif endifSetStage Persuasion 15
Stage 15 -
If Persuasion.coerceRes <= 0 set Persuasion.coerceRes to Persuasion.coerceRes * ((200 - 2*Player.getAv Personality) + (Persuasion.npc_str - Player.getav Strength )+ (100-Persuasion.npc_disp))/250 if Persuasion.coerceRes < (0 - Persuasion.npc_disp) set Persuasion.coerceRes to (0 - Persuasion.npc_disp) elseif Persuasion.coerceRes > -1 set Persuasion.coerceRes to -1 endifelse set Persuasion.coerceRes to Persuasion.coerceRes * (2*Player.getAv Personality + (Player.getav Strength - Persuasion.npc_str)+ (100-Persuasion.npc_disp))/250 if Persuasion.coerceRes < 1 set Persuasion.coerceRes to 1 endif endifSetStage Persuasion 16
Hit OK in the lower right, and save the mod. If no errors popped up during this process, it should work!