[RELz] Soulgem Magic

Post » Tue May 03, 2011 6:08 am

========= SOULGEM MAGIC 1.0 ============

Makes soulgem change price according to soul level you fill it with, and let you fill multiple souls in one soulgem or prevent it from getting filled with inferior souls.

=========

Author: Ole B?e, a.k.a. TheNiceOne
Date: Oct 25, 2010

OBSE v 18 (or newer) required.

Dowload: http://www.tesnexus.com/downloads/file.php?id=35393


=== Pricing

In Oblivion, empty soulgems are generally worth much less than pre-filled ones, but when you capture souls into them, they keep the same price as before, still being worth less than a pre-filled one of same type/level.

Soulgem Magic changes this functionality. When you now capture a soul, the newly filled soulgem will change its price according to the soul level filled into it. Soulgem Magic handles this by replacing all soulgems you fill by a pre-filled of exactly the same type/level. A side effect of this is that all the soulgems of the same type/level will stack in your inventory too.


=== Waste control

But there is more. One problematic facet of vanilla soulgems is that if you're not careful, your empty grand soulgem may suddenly be filled by a petty soul. With Soulgem Magic, this is no longer any problem, and how it solves it is dependent on your ini settings, specifically the "soulgemMode" setting.

Set soulgemMode to a value between 0 and 4, and the value, controls how well a soul must match the soulgem to not fall right through it. Normally, if the only empty soulgem you have is a grand one when you slaughter a rat, the grand soulgem gets wasted with a petty soul. With the soulgem waste control feature, you can set up the amount of waste allowed (0-4). With 0 waste, a soulgem will only hold souls equal to its capacity. With waste 1, a soulgem will only hold souls equal to, or one less than its capacity, etc., and with waste 4 (or higher), there are no restrictions.

Ex: Set soulgemMode to 1, and your grand soulgem may accept grand or greater souls, but any soul of a lesser type will fall thtough the soulgem. You will get the normal "You have captured a soulgem" message, but the soulgem will immediately empty itself again.


=== Multi-soul gems

Finally, the most advanced part of Soulgem Magic is to allow soulgems to become filled with more than one soul. Don't despair if your grand soulgem gets a petty soul. Just capture some more petty souls, and the soulgem's level gets increased from petty to lesser, and so on. By default, you need 4 more souls of one level to increase the soulgem to the next level, but this can be controlled in the ini file. So a grand soulgem with level common, will need 4 more common souls to get to level greater (or 16 lesser souls, or 64 petty souls, or a combination thereof). This works just as well with a pre-filled one you find, as the ones that start out empty.

You can control whether your biggest soulgem always get filled first, or whether the smallest capable of holding the soul will get filled first. You can also control whether a message is displayed when a soulgem increases its soul level.

If my mod http://www.tesnexus.com/downloads/file.php?id=31855 (or later) is installed and your inventory is displayed, whenever you point your mouse at a soulgem that is partially filled, the popup will not only display the soulgem's current level as normal, but also its partial fill, as a percentage to next level. So if your grand soulgem is filled with a common soul, but has also captured one more common soul, the display popup will say "Soul level: common", and "Partial fill - 25%".


=== Compatibility and issues

Black soulgems and Azura's Star is not affected by this mod.

If you kill several enemies in a very short time, some of the souls may not be captured even if you have a soulgem that could hold them all. You will always capture at least as many souls as you could without this mod though.

Soulgem Magic is partially incompatible with, and needs to load later than any other mod that affects soulgem. However, if you use Wrye Bash and have a Bashed Patch, it can be made compatible with mods changing other aspects (like graphics) of soulgems.


========= Installation

The mod is OMOD-ready, with an install script that sets all values and install correct files according to your choices, so installing with OBMM is adviced, butt is also packed in a BAIN-ready format. For manual installation, copy "Soulgem Magic.esp" and the "Ini" folder to your Oblivion/data folder.
User avatar
Sam Parker
 
Posts: 3358
Joined: Sat May 12, 2007 3:10 am

Post » Tue May 03, 2011 9:46 am

Ooh, this is slick! Might steal the multi-soul mechanic for Ars Gratia Artaeum, when that finally sees the light of day. :)
User avatar
Laurenn Doylee
 
Posts: 3427
Joined: Sun Dec 03, 2006 11:48 am

Post » Tue May 03, 2011 5:34 am

Wow, that is such good timing. I was just thinking that it would be nice to have this mod in my list as I recently picked up a dagger with Soul Trap on it. Very versatile, I see you have a couple of ways to avoid wasting Soul Gems. Very nice.
User avatar
cassy
 
Posts: 3368
Joined: Mon Mar 05, 2007 12:57 am

Post » Tue May 03, 2011 9:40 am

Wow, Thank's for this, will Definatly have to give it a try.. :bowdown:
User avatar
Jeneene Hunte
 
Posts: 3478
Joined: Mon Sep 11, 2006 3:18 pm

Post » Mon May 02, 2011 8:33 pm

Very nice, thank you TheNiceOne. :)
User avatar
Rhiannon Jones
 
Posts: 3423
Joined: Thu Sep 21, 2006 3:18 pm

Post » Mon May 02, 2011 11:01 pm

Now we wait for the daily updates...
User avatar
Nicholas C
 
Posts: 3489
Joined: Tue Aug 07, 2007 8:20 am

Post » Tue May 03, 2011 8:14 am

Now we wait for the daily updates...


Or you could wait for a couple of revisions before jumping on a new mod! With all the variables out there, mods are difficult to test as it is, let alone one that changes basic game mechanics. If you don't like the updates, stay away until things have settled down.
User avatar
Minako
 
Posts: 3379
Joined: Sun Mar 18, 2007 9:50 pm

Post » Tue May 03, 2011 6:59 am

TheNiceOne,

I see one potential issue with this: when the player has activated the settting so that large soul gems aren't filled with little souls, does the soul trap register anyway? From the description, you say that you still get the message, but the soulgem will empty itself again. I assuming then that the soul trap happens normally, but you detect the non-filled condition and replace the gem with an empty one, correct?

The issue is that Oblivion XP awards points for trapping souls. I'm not sure if there's anything I can do about this though, unless there's a way for Ob XP to detect this condition. I had another issue with one of kyoma's mods, but it turned out he was just using the text input functions and it is pretty easy for me to detect that state in the Ob XP script. There wouldn't be something similar for this, would there?
User avatar
Sudah mati ini Keparat
 
Posts: 3605
Joined: Mon Jul 23, 2007 6:14 pm

Post » Tue May 03, 2011 3:07 am

Or you could wait for a couple of revisions before jumping on a new mod! With all the variables out there, mods are difficult to test as it is, let alone one that changes basic game mechanics. If you don't like the updates, stay away until things have settled down.



such a harsh retort based on the assumption I was complaining. Put on a happy face! :)
User avatar
Bethany Watkin
 
Posts: 3445
Joined: Sun Jul 23, 2006 4:13 pm

Post » Mon May 02, 2011 8:05 pm

such a harsh retort based on the assumption I was complaining. Put on a happy face! :)

Your comment sounded very sarcastic to me. Personally I appreciate TNO's updates, even if it does mean lots of practice in creating omods :)
User avatar
Javier Borjas
 
Posts: 3392
Joined: Tue Nov 13, 2007 6:34 pm

Post » Tue May 03, 2011 10:22 am

So you said over in WB thread:

It is an extended replacement of my "Enhanced Economy - Soulgems.esp", so the latter should probably be marked as obsolete, replace with Soulgem Magic.


Does this mean I should uninstall that imported esp if using Soulgem Magic?
User avatar
Charles Weber
 
Posts: 3447
Joined: Wed Aug 08, 2007 5:14 pm

Post » Mon May 02, 2011 7:28 pm

Cool - another TNO mod. I love your amazing mods!

So I guess this deprecates the feature in EE?

Also, I see from ITPaladin's comment that EE-Soulgems.esp was imported in the bashed patch - is this also imported? I hope that is the case, as my esp slots are full :(

TNO, maybe you should make one large mod with all your separate mods combined (EE, HUD Bars, MMO, EH, etc. etc. with ini controls to toggle features) so that we can cut down on esp slots! Can I merge them all together myself, or is that not recommended?
User avatar
Timara White
 
Posts: 3464
Joined: Mon Aug 27, 2007 7:39 am

Post » Tue May 03, 2011 9:10 am

Cool - another TNO mod. I love your amazing mods!

So I guess this deprecates the feature in EE?

Also, I see from ITPaladin's comment that EE-Soulgems.esp was imported in the bashed patch - is this also imported? I hope that is the case, as my esp slots are full :(

TNO, maybe you should make one large mod with all your separate mods combined (EE, HUD Bars, MMO, EH, etc. etc. with ini controls to toggle features) so that we can cut down on esp slots! Can I merge them all together myself, or is that not recommended?



With all the updates I wouldn't merge anything. Like Psymon said once that if a mod hasn't been updated in at least a year he thinks it is safe to do a merge.
User avatar
Laura
 
Posts: 3456
Joined: Sun Sep 10, 2006 7:11 am

Post » Tue May 03, 2011 12:57 am

I am willing to keep up with updates on the merged mod just to keep my esp slots low. Bu then again, I don't jump on updates or newer versions of mods either.

TNO, would you recommend me merging my personal collection of your mods from a stability point of view? Aren't these mostly script mods, and IIRC, script mods were not good to be merged via Gecko...
User avatar
Tom Flanagan
 
Posts: 3522
Joined: Sat Jul 21, 2007 1:51 am

Post » Mon May 02, 2011 7:19 pm

If my mod Display Stats 1.3 (or later) is installed and your inventory is displayed, whenever you point your mouse at a soulgem that is partially filled, the popup will not only display the soulgem's current level as normal, but also its partial fill, as a percentage to next level. So if your grand soulgem is filled with a common soul, but has also captured one more common soul, the display popup will say "Soul level: common", and "Partial fill - 25%".

Shouldn't the pop-up display: "Soul level: common", and "Partial fill - 50%".... It has 2 common souls, and that is 50% ?
User avatar
Nana Samboy
 
Posts: 3424
Joined: Thu Sep 14, 2006 4:29 pm

Post » Tue May 03, 2011 8:24 am

How well will this work with a minor mod of mine that increases the soul-gem capacities and enchanting (lightning bolt) amounts?
User avatar
Scared humanity
 
Posts: 3470
Joined: Tue Oct 16, 2007 3:41 am

Post » Mon May 02, 2011 10:01 pm

Thanks for comments, all :)


I see one potential issue with this: when the player has activated the settting so that large soul gems aren't filled with little souls, does the soul trap register anyway? From the description, you say that you still get the message, but the soulgem will empty itself again. I assuming then that the soul trap happens normally, but you detect the non-filled condition and replace the gem with an empty one, correct?
Correct.

The issue is that Oblivion XP awards points for trapping souls. I'm not sure if there's anything I can do about this though, unless there's a way for Ob XP to detect this condition. I had another issue with one of kyoma's mods, but it turned out he was just using the text input functions and it is pretty easy for me to detect that state in the Ob XP script. There wouldn't be something similar for this, would there?
How do ObXP detect the capture of souls in the first place? It is possible something can be done there. If not, I can add a variable that I increment each time a soul is not stored as normal in the soulgem. When Ob XP discovers the capture of a soul, it can read that variable. If the variable is zero, it was a normal soul capture. If non-zero, subtract the amount from the number of captured souls before giving XP, and then set the variable to zero.



So I guess this deprecates the feature in EE?

Also, I see from ITPaladin's comment that EE-Soulgems.esp was imported in the bashed patch - is this also imported? I hope that is the case, as my esp slots are full :(
Yes, EE's feature is now depreceated so you should delete the EE-soulgem plugin. This one is imported too, but unlike the former cannot be de-activated, so it requires its own slot.

TNO, maybe you should make one large mod with all your separate mods combined (EE, HUD Bars, MMO, EH, etc. etc. with ini controls to toggle features) so that we can cut down on esp slots! Can I merge them all together myself, or is that not recommended?
I have considered making a merged version of at least some of my mods, but I will surely leave out EE and MMO from that. But I think you can merge them all together without any problem - except one: Display Stats is now looking for "Soulgem Magic.esp" to get the partiall fill status to display. So if it doesn't find that mod, no partial fill status will be displayed. Also, I think that the silent voice files of EE will not be recognized by a merged mod (there is an engine limit that they must be in a folder with the same name as the esp), but the use of Elys Silent Voice handles that for you.


Shouldn't the pop-up display: "Soul level: common", and "Partial fill - 50%".... It has 2 common souls, and that is 50% ?
No. The first common soul captured will make it a soulgem with a normal soul level of common soul - with 0 partial fill to next level. So you need 4 more common souls to advance it to a greater soul level.


How well will this work with a minor mod of mine that increases the soul-gem capacities and enchanting (lightning bolt) amounts?
Propably fine, but that depends on what you do with the soulgems. All soulgems that get filled, becomes a completely normal pre-filled soulgem. And Soulgem Magic doesn't touch or change those pre-filled soulgems at all, so compatibility problems should be relative minor. With Soulgem Magic installed, you will never have any empty-type soulgem that is filled, since this is immediately replaced by the correct pre-filled of the same capacity/level, so the only incompatibility problems will be with mods that change or require the the empty-type soulgems.
User avatar
Ludivine Dupuy
 
Posts: 3418
Joined: Tue Mar 27, 2007 6:51 pm

Post » Mon May 02, 2011 8:59 pm

How do ObXP detect the capture of souls in the first place? It is possible something can be done there. If not, I can add a variable that I increment each time a soul is not stored as normal in the soulgem. When Ob XP discovers the capture of a soul, it can read that variable. If the variable is zero, it was a normal soul capture. If non-zero, subtract the amount from the number of captured souls before giving XP, and then set the variable to zero.


Ob XP uses getPCMiscStat 10. I think that even if you tried to decrement that counter (PCMiscStat 10), it would be too late and Ob XP would have counted the points already. Also, trying to alter some of these miscellaneous stats in a mod doesn't work too well. I'm a little hesitant to put something specifically for a mod into Ob XP's scripts, but I might be able to create a patch for this. If there was some kind of generic OBSE function test, like in the case of the text input functions (all I had to test for is IsTextInputInUse and that isn't specific to one particular mod), then I'd have no problem adding it in.

So I would say that unless your soul trap reversal prevents the PCMiscStat 10 from incrementing, and there's no condition or state that I can test for with OBSE, go ahead and create that variable and I'll decide whether to just build it in or to create a patch.
User avatar
Kara Payne
 
Posts: 3415
Joined: Thu Oct 26, 2006 12:47 am

Post » Mon May 02, 2011 8:25 pm

Ob XP uses getPCMiscStat 10. I think that even if you tried to decrement that counter (PCMiscStat 10), it would be too late and Ob XP would have counted the points already.
If I do this, you may want to change the code in Ob XP to re-check after a frame or two before applying the XP for it. That would ensure that you don't give any XP if Soulgem Magic is about to decrement it.

Also, trying to alter some of these miscellaneous stats in a mod doesn't work too well.

I have no experience with it, but I can try.

I'm a little hesitant to put something specifically for a mod into Ob XP's scripts, but I might be able to create a patch for this. If there was some kind of generic OBSE function test, like in the case of the text input functions (all I had to test for is IsTextInputInUse and that isn't specific to one particular mod), then I'd have no problem adding it in.
...says you, who goes around asking everyone else to put something specifically for Ob XP in their mods ;)
User avatar
sw1ss
 
Posts: 3461
Joined: Wed Nov 28, 2007 8:02 pm

Post » Mon May 02, 2011 7:50 pm

Shouldn't the pop-up display: "Soul level: common", and "Partial fill - 50%".... It has 2 common souls, and that is 50% ?

No. The first common soul captured will make it a soulgem with a normal soul level of common soul - with 0 partial fill to next level. So you need 4 more common souls to advance it to a greater soul level.

I misread the first time, thought it said greater not grand. I also thought that the "Partial fill" was how much it was filled in total, not just to the next level, and that 1 Greater Soul = 4 Common Souls.

So it actually takes 5 Common Souls to fill a empty Greater Soul Gem, if so shouldn't this part "(or 16 lesser souls, or 64 petty souls, or a combination thereof)." read "(or 20 lesser souls, or 100 petty souls, or a combination thereof)"
User avatar
Philip Rua
 
Posts: 3348
Joined: Sun May 06, 2007 11:53 am

Post » Tue May 03, 2011 3:02 am

So it actually takes 5 Common Souls to fill a empty Greater Soul Gem, if so shouldn't this part "(or 16 lesser souls, or 64 petty souls, or a combination thereof)." read "(or 20 lesser souls, or 100 petty souls, or a combination thereof)"

No, because the sentence starts: "So a grand soulgem with level common, will need..." In other words, this is a grand soulgem that has already received one common soul. You would be right if the the sentence had started "So an empty grand soulgem will need...", though.
User avatar
Lauren Dale
 
Posts: 3491
Joined: Tue Jul 04, 2006 8:57 am

Post » Tue May 03, 2011 12:49 am

No, because the sentence starts: "So a grand soulgem with level common, will need..." In other words, this is a grand soulgem that has already received one common soul. You would be right if the the sentence had started "So an empty grand soulgem will need...", though.

I'm confused now, how many lower level souls does 1 soul of each level equal.. 4 or 5?

If 5 then it would be: 1 Grand = 5 Greater = 25 Common = 125 Lesser = 625 Petty
User avatar
Annika Marziniak
 
Posts: 3416
Joined: Wed Apr 18, 2007 6:22 am

Post » Mon May 02, 2011 9:00 pm

I'm confused now, how many lower level souls does 1 soul of each level equal.. 4 or 5?
It depends. I use bistromathics for the calculations, so the answer isn't that simple :P


Seriously though, If you start with an empty Grand, you need 1 petty to reach level Petty (obvious).

Then, 1 petty soul is worth 1/4 of what you need for next level (if the soulLevelExp=4 in the ini), so you need 5 total to reach lesser.

But when at lesser, each a petty soul is worth 1/4^2 = 1/16 of what you need for next level. So 16 more, for a total of 21 petty is enough to reach common level.

And at common level, a petty is worth 1/4^3 = 1/64 of what you need for next level. So 64 more, for a total of 85 is needed to reach greater level.

Finally, at greater level, a petty soul is worth 1/4^4 = 1/128, so the total you need is 1 + 4 + 16 + 64 + 256 = 341 Petty souls.


Change soulLevelExp to 3, and you'll need 1 + 3 + 9 + 27 + 81 = 121 Petty souls.
User avatar
Robert DeLarosa
 
Posts: 3415
Joined: Tue Sep 04, 2007 3:43 pm

Post » Tue May 03, 2011 7:44 am

OK.. that explains it.

I personally would have preferred a "fixed scale (eg. 1:4 so that 1 Soul = 4 Souls of next lower level).
User avatar
katsomaya Sanchez
 
Posts: 3368
Joined: Tue Jun 13, 2006 5:03 am

Post » Tue May 03, 2011 7:31 am

If I do this, you may want to change the code in Ob XP to re-check after a frame or two before applying the XP for it. That would ensure that you don't give any XP if Soulgem Magic is about to decrement it.

I have no experience with it, but I can try.


Well we can try this, but Ob XP's scripts don't run on the normal frame cycle. It sets the fQuestDelayTime to 0.1 for the script in question. I'm guessing that the script would have gone through several cycles before it detects that the PCMiscStat 10 has been decrementented again. It's even possible that setting a variable won't help - that would be too late as well.

...says you, who goes around asking everyone else to put something specifically for Ob XP in their mods ;)


:lol: I just knew you were going to say that! But there's only one of "me" and there's tons of "you guys" :) No seriously, very true and I was thinking of adding the exception in. It's just with the high frequency of these scripts, I'm looking to optimize them as much as possible and to make such exceptions generic. I was even thinking of introducing variables like the InterOp variables that are used for the points for this. Basically a series of exception variables that would be set by several mods - it wouldn't matter what the exception was, just the fact that I didn't want to tally the experience points for some reason.

Alright, so how do you want to proceed? I might be able to put a delay in before checking the PCMiscStat, so did you want to try decrementing it? I should download this anyway and see what happens, so I'll grab the current version and start testing.
User avatar
Oscar Vazquez
 
Posts: 3418
Joined: Sun Sep 30, 2007 12:08 pm

Next

Return to IV - Oblivion