Talk:ModDisposition

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search

After a lot of testing, I have concluded that disposition does in fact stack beyond 100. During the persuasion minigame, and when dealing with a merchant, the disposition drops like it should. Yet when using ModDisposition, it seems that using "-20" for example, does not necessarily result in a disposition of x - 20, when x is beyond 100.

having a disposition beyond 100 could be caused by doing quests, persuasion and faction disposition combined.

Is there anyone else having these problems, or should I have a good look at my scripts again? (to test it yourself, go find an NPC with a disposition of 100 and use ModDisposition -1, you might find that you have to repeat that many times before it actually goes to 99) --P-Luke 16:18, 23 October 2008 (EDT)

The reason why this is a huge problem for me, is that there is also no way of modifying this. If you set a variable to (GetDisposition player) for example, it will not be higher then 100, thus you can not use a (ModDisposition player (RealValue - 100). --P-Luke 16:32, 23 October 2008 (EDT)

Well, what you could do is repeatedly lower the disposition, and keep track of how long it takes to get to 100. For example:
if ( ref.GetDisposition player >= 100 ) set shortVar to shortVar + 1 ref.ModDisposition player -1 else set shortVar to shortVar - 1 ; remove one to get the amount above 100 ref.ModDisposition player shortVar  ; ref is unchanged (after however many frames this took), and shortVar equals how much higher than 100 the NPC is endif
Hope that helps!
Dragoon Wraith TALK 16:58, 23 October 2008 (EDT)
Thanks, DragoonWraith, but I'm afraid that script isway too heavy for my mod, as it affects ALL npcs in the game. Just loading a single room with 5 people in it caused my game to freeze. Would have been very useful otherwise, though.
It seems that if I just decrease the disposition ingame by a rediculous number, like -40000, and then increase it again with 100, it works fine. But doing so in the editor has a very different effect. I fear taht I need more insight in the way disposition is measured, before I can do anything about this. --P-Luke 17:11, 23 October 2008 (EDT)
Okay, I seem to have fixed it using a very simple script:
if (DoOnce == 0) set Disp to (GetDisposition player) if (Disp == 100) ModDisposition player -1 set Disp to (GetDisposition player) if (Disp == 99) ModDisposition player 1 set DoOnce to 1 endif endif endif
Although this would only be a temporary solution; I think that if an NPC is added to a new faction that has a, say, 60 Disp booster to the PC, it would still skyrocket.
What really drives me mad, is that if you use this script:
set Disp to (GetDisposition player) if (Disp == 100) ModDisposition player -1 set Disp to (GetDisposition player) if (Disp == 99) ModDisposition player 2 ; using 1 makes them get stuck on 99 endif endif endif
The NPC's disposition will skyrocket again, some NPCs almost reaching a disposition of 200. I have NO idea why this happens, it just doesn't seem.. logical. --P-Luke 17:32, 23 October 2008 (EDT)
That's not a heavy script at all. It would require many, many thousands of concurrent instances of the script to make any noticeable difference.
However, I did have a typo - I used SetDisposition instead of ModDisposition - did you notice and fix that when you tested it? Because setting their disposition to -1 probably would hang the game, even just doing it once.
Dragoon Wraith TALK 18:06, 23 October 2008 (EDT)
Ah, well I changed your script a little to fit to my mod, but now I see that we were essentially doing the exact same thing, except that you restore the Disposition back to normal, and I tried to get it back to 100. So yeah, your script did work and the crash must have been a typo on my end (as SetDisposition will cause an error in the CS).
Alright, this seems like a good enough script. I still really wonder how the disposition system beyond 100 works though. It's not just as simple as 101, 102, 103, 104, etc, that's for sure. --P-Luke 18:13, 23 October 2008 (EDT)