[RELz] Oblivion Magic Extender v1.0

Post » Wed Mar 30, 2011 7:16 am

is that also the case for playing with it (CSI or OBME)?

For the immediate future, yes. OBME v1.0 cannot coexist with CSI v3.1.

Statttis and I have worked out a scheme to make future versions compatible.
User avatar
Annika Marziniak
 
Posts: 3416
Joined: Wed Apr 18, 2007 6:22 am

Post » Tue Mar 29, 2011 10:22 pm

Having fun with my optimized (well, more or less) detect life, enchantment and keys magic effects. I expanded upon Supreme Magicka's detect life system, and adapted some of tejon's wonderful particle shaders:

http://i290.photobucket.com/albums/ll241/migck/ScreenShot39.jpg, I can detect other vampires like Jakben, who glow in a mild azure shader (not very visible here though), and I made other NPCs glow in red instead of purple while in vampire state. Jakben is carrying enchanted stuff (light blue shader) and his keys (green shader).

http://i290.photobucket.com/albums/ll241/migck/ScreenShot40.jpg Detect Enchantment can detect anything with an enchantment on it, from weapons to scrolls, plus filled soulgems and sigil stones, into any container, actor, or on the ground!

http://i290.photobucket.com/albums/ll241/migck/ScreenShot41.jpg, and my scripts will always make the reference glow while in detect range, at the cost of performance. Supreme Magicka checked the references every three seconds or so, which meant that some of them would not play the shader as the game prioritizes those nearest to the player. I check the references every 1/4 second. The catch is, I have to adapt the shaders to play and fade ver quickly, or else they "pile up" and the objects start looking radioactive. Also, I can't use membrane shaders because they always end flickering out.

http://i290.photobucket.com/albums/ll241/migck/ScreenShot43.jpg power from the Tower birthsign is now restored to its former glory. Invade the privacy of everyone near you for two minutes once a day.

http://i290.photobucket.com/albums/ll241/migck/ScreenShot44.jpg like those from bg's Race Balancing or Cobl are checked in the script. If the name of the race matches something daedric (aureal, dremora, etc...) or the creature is type daedra, then they will display their special orange shader to differentiate them from mortal critters.
User avatar
Inol Wakhid
 
Posts: 3403
Joined: Wed Jun 27, 2007 5:47 am

Post » Wed Mar 30, 2011 6:07 am

I've been trying to make a library of magic effects using OBME, as was requested by a few people, and as I'd like to use myself too in my own mod. After making quite some effects and trying to reference them in my other mod to use them, I think it's impossible to make a library for these effects though. It might be related to using the dynamic effect codes though. Anyways, this was the problem I ran into:

- I made various magic effects using OBME in a new .esp called Diverse Magic Effects Resource.esp
- I changed some of the spells in my wipz Invasion from Azeroth.esp to use the new effects made in the library .esp, activated both and started up Oblivion to test them
- The changed spells had disappeared from the spellbook. I could still access them through hotkeys I had assigned to those spells earlier though. In the place of an icon came a pink square (since the game couldn't find any icons) and the game crashed upon trying to cast the spell, because the spell had no magic effects at all anymore. It couldn't find the required effects anymore.
- I checked my mod again after this in the CS and all the new magic effects had disappeared from the spells and they were indeed empty. The magic effects were still in the magic effects menu, so I could assign them again, but that just causes crashes repeatedly again.

Do u think this could be prevented by not using dynamic effect codes? Or by turning the library mod into a .esm maybe? I tried just adding the .esp into the list of masters using TES4Edit, but just checked and the library has been removed from the list of masters automatically again. For turning into a master file, I'll need TES4Gecko which I couldn't get to work on my PC a while back
User avatar
Ernesto Salinas
 
Posts: 3399
Joined: Sat Nov 03, 2007 2:19 pm

Post » Wed Mar 30, 2011 4:58 am

I've been trying to make a library of magic effects using OBME, as was requested by a few people, and as I'd like to use myself too in my own mod. After making quite some effects and trying to reference them in my other mod to use them, I think it's impossible to make a library for these effects though.

You should be always able to use magic effects from one file on magic items in a dependent file. It shouldn't matter whether the effects use dynamic codes, or whether one/both/neither of the files are an esm. I've just tried it myself without any problems, so I'm afraid I'll need more information to figure out what's happening in your case.
User avatar
Quick Draw III
 
Posts: 3372
Joined: Sat Oct 20, 2007 6:27 am

Post » Wed Mar 30, 2011 11:06 am

ok for some reason if I simply added the .esp to the list of masters using TES4Edit it didn't work. Converted the library mod to .esm now using wrye bash and it works just fine, so can start finishing loose ends and hopefully release next weekend if those damned teachers dont make up too much homework :D
User avatar
brandon frier
 
Posts: 3422
Joined: Wed Oct 17, 2007 8:47 pm

Post » Tue Mar 29, 2011 10:57 pm

ok for some reason if I simply added the .esp to the list of masters using TES4Edit it didn't work. Converted the library mod to .esm now using wrye bash and it works just fine, so can start finishing loose ends and hopefully release next weekend if those damned teachers dont make up too much homework :D


OK, I think I see what happened. TES4Edit, in it's current public version, is not equipped to handle the new magic effect records. It will save & load them fine, but cannot display them, and cannot add/remove master files safely. However, if you temporarily make the master file an esm and then do your editing in the CS, everything will work just fine.

I'm using shadeMe's CSE, which allows an esp as a direct masters of another esp, so I completely forgot about the usual difficulties in de-isolation.
User avatar
His Bella
 
Posts: 3428
Joined: Wed Apr 25, 2007 5:57 am

Post » Wed Mar 30, 2011 1:21 am

OK, I think I see what happened. TES4Edit, in it's current public version, is not equipped to handle the new magic effect records. It will save & load them fine, but cannot display them, and cannot add/remove master files safely. However, if you temporarily make the master file an esm and then do your editing in the CS, everything will work just fine.

I'm using shadeMe's CSE, which allows an esp as a direct masters of another esp, so I completely forgot about the usual difficulties in de-isolation.


Ah :) well I suppose I'll just stick to keeping it in .esm format now anyway, makes much more sense for a library to be .esm anyway and makes it way less confusing for users
User avatar
Katie Samuel
 
Posts: 3384
Joined: Tue Oct 10, 2006 5:20 am

Post » Wed Mar 30, 2011 9:28 am

Is it possible with OBME to somehow make a script that removes Vanilla Oblivion magic from the game? I want NPCs to be FORCED to 100% use spells from other custom spells mods, such as: Fearsome Magicka or Duke Patricks Combat Magic, yet I have no idea ho to make this happen.
User avatar
kyle pinchen
 
Posts: 3475
Joined: Thu May 17, 2007 9:01 pm

Post » Wed Mar 30, 2011 6:04 am

Is it possible with OBME to somehow make a script that removes Vanilla Oblivion magic from the game? I want NPCs to be FORCED to 100% use spells from other custom spells mods, such as: Fearsome Magicka or Duke Patricks Combat Magic, yet I have no idea ho to make this happen.

This is more of a general issue - you could replace 'magic' in the first sentence with 'armor' or 'swords' or 'horses' and be discussing exactly the same problem. It's something that's best handled with other tools; I'd recommend looking at WryeBash for starters. I should warn you, though, that there's a reason most mods don't attempt this - it's a very ambitious task.

Long story short: no, there is no way to mass-replace spells using OBME.
User avatar
Jeffrey Lawson
 
Posts: 3485
Joined: Tue Oct 16, 2007 5:36 pm

Post » Tue Mar 29, 2011 11:00 pm

Pie-in-the-sky request: if you ever do figure out how to override GMSTs within a MGEF (per someone's earlier request to adjust cost scaling), please also enable this for fPotionT1MagMult and fMagicCostScale.
User avatar
Michael Russ
 
Posts: 3380
Joined: Thu Jul 05, 2007 3:33 am

Post » Wed Mar 30, 2011 4:24 am

Pie-in-the-sky request: if you ever do figure out how to override GMSTs within a MGEF (per someone's earlier request to adjust cost scaling), please also enable this for fPotionT1MagMult and fMagicCostScale.

I'm still working out how to best expand the auto-calc system for magicka. At the moment, I'm leaning towards letting magic effects provide an event handler script to customize their magicka costs, and perhaps something similar for whole magic items as well. This introduces more overhead, but frees me from trying to anticipate the needs of every future mod.
User avatar
ANaIs GRelot
 
Posts: 3401
Joined: Tue Dec 12, 2006 6:19 pm

Post » Tue Mar 29, 2011 8:45 pm

Hmm I recently noticed that that the usefulness of the 'scripted effect' handler is still limited by the fact that the 'dispel' handler can remove an effect item without triggering the scripts OnScriptEffectFinish block. That means, every change made to the target from within the script cannot be reliably reverted, which can cause a lot of trouble. For example, I've created an effect that (amongst other things) changes the target's alpha value. When it gets removed via dispel, the actor remains transparent which is of course not intended. It would be great if you could maybe make the 'dispel' handler trigger the OnScriptEffectFinish block or introduce something like an OnDispel block useable in scripts. That would make even more things possible with scripted effects.
User avatar
Oceavision
 
Posts: 3414
Joined: Thu May 03, 2007 10:52 am

Post » Wed Mar 30, 2011 8:52 am

Hmm I recently noticed that that the usefulness of the 'scripted effect' handler is still limited by the fact that the 'dispel' handler can remove an effect item without triggering the scripts OnScriptEffectFinish block.

Scruggs mentioned this once too. I've never witnessed this problem, but then I've never gone out of my way to look for it. I'll see if I can find out what the problem is.

The CS wiki says that the ScriptEffectFinish block also won't run for Apparel enchantments. Can anyone verify this, and/or describe other problems with the script effect handler?
User avatar
Cathrin Hummel
 
Posts: 3399
Joined: Mon Apr 16, 2007 7:16 pm

Post » Tue Mar 29, 2011 10:33 pm

Well I did some testing and the problem does not seem to be related to apparel enchantments in particular. The ScriptEffectFinish block generally won't run on npc's after a cell change regardless of the type of the source magic item (enchantment, spell, etc.).
User avatar
xemmybx
 
Posts: 3372
Joined: Thu Jun 22, 2006 2:01 pm

Post » Tue Mar 29, 2011 10:36 pm

Well I did some testing and the problem does not seem to be related to apparel enchantments in particular. The ScriptEffectFinish block generally won't run on npc's after a cell change regardless of the type of the source magic item (enchantment, spell, etc.).

I've observed this myself, with Summoned creatures. When they changed cells, all local variables were lost, possibly including the hidden 'state' information that allows the finish block to fire.

Just so I'm clear, this is in addition to the problems with Dispel?
User avatar
Chloe Botham
 
Posts: 3537
Joined: Wed Aug 30, 2006 12:11 am

Post » Wed Mar 30, 2011 12:12 am

Yes, it's basically the same problem. When the block (for whatever reason) doesn't run when the effect is removed, a scripter can't make sure that all changes the effect made to an actor/object/whatever are reverted, which can obviously cause trouble. Without a reliable way to remove the changes, some ideas for effects just can't be realized.
User avatar
Daddy Cool!
 
Posts: 3381
Joined: Tue Aug 21, 2007 5:34 pm

Post » Wed Mar 30, 2011 2:48 am

Actually there are at least two separate problems here.

One is the finish block not firing under certain conditions.

The other is that all the local variables on an SEFF script reset when the player goes through a loading door. (The player's own SEFFs are an exception, IIRC.) Finish block still goes off, but it doesn't know what to do.

Non-player actor going through a loading door might have issues related to either one of these problems. Don't recall, might be on the Wiki. Could be hard to test, honestly... there are few situations where this will happen without the player also hitting a load.

Personally, I've worked around these problems by having my SEFFs add a token to the target. The token's script contains all the actual effect code. It constantly checks the target for the SEFF that applied it, and if not found (due to expiration, dispel, whatever) it cleans up and removes itself.
User avatar
Stace
 
Posts: 3455
Joined: Sun Jun 18, 2006 2:52 pm

Post » Tue Mar 29, 2011 9:33 pm

Personally, I've worked around these problems by having my SEFFs add a token to the target. The token's script contains all the actual effect code. It constantly checks the target for the SEFF that applied it, and if not found (due to expiration, dispel, whatever) it cleans up and removes itself.

That seems to be the standard method for 'robust' scripted effects. However, it has it's own serious problems, and we can all agree that it's unwieldy. I'll make a serious effort to improve the stability of the Script effect handler.
User avatar
Nitol Ahmed
 
Posts: 3321
Joined: Thu May 03, 2007 7:35 am

Post » Wed Mar 30, 2011 12:37 am

Bug fixes aside, further work on this project will all be towards v2.0. Expect a beta release sometime in late October.


Update: I've been sidetracked recently with some under-the-hood stuff and haven't had the chance to actually work on OBME as promised. I'm afraid there will be no new beta forthcoming for a while yet :P
User avatar
[Bounty][Ben]
 
Posts: 3352
Joined: Mon Jul 30, 2007 2:11 pm

Post » Wed Mar 30, 2011 3:07 am

Update: I've been sidetracked recently with some under-the-hood stuff...
:shifty:
User avatar
Alexis Estrada
 
Posts: 3507
Joined: Tue Aug 29, 2006 6:22 pm

Post » Wed Mar 30, 2011 4:33 am

Okay, finally wedging the necessary bits into Formulator and I want to be sure of something -- with OBME loaded, the following commands:

G|SetNthEIScriptHostile
G|SetNthEIScriptName
G|SetNthEIScriptSchool
G|SetNthEIScriptVisualEffect

Are completely deprecated in favor of, respectively:

G|SetNthEIHostility
G|SetNthEIEffectName
G|SetNthEISchool
G|SetNthEIVFXCode

...right? No problem if not, I just need to be certain one way or the other!

Edit: Ack! Command request: GetNthEIHandlerParameters, returns a StringMap containing all of them. Unless there's some other way I can harvest them without knowing their names in advance? (I mean, I guess I can check the hard-code the documented list into a function and pick them based on the effect handler; but that's not very future-proof.)
User avatar
Devils Cheek
 
Posts: 3561
Joined: Sun Aug 13, 2006 10:24 pm

Post » Wed Mar 30, 2011 12:43 pm

Okay, finally wedging the necessary bits into Formulator and I want to be sure of something -- with OBME loaded, the following commands:

G|SetNthEIScriptHostile
G|SetNthEIScriptName
G|SetNthEIScriptSchool
G|SetNthEIScriptVisualEffect

Are completely deprecated in favor of, respectively:

G|SetNthEIHostility
G|SetNthEIEffectName
G|SetNthEISchool
G|SetNthEIVFXCode

...right? No problem if not, I just need to be certain one way or the other!

Edit: Ack! Command request: GetNthEIHandlerParameters, returns a StringMap containing all of them. Unless there's some other way I can harvest them without knowing their names in advance? (I mean, I guess I can check the hard-code the documented list into a function and pick them based on the effect handler; but that's not very future-proof.)

The existing functions work only for the SEFF effect; otherwise their return values are undefined. The new functions work for all effects. They check an internal 'override' state for each field individually, and will return the value from the underlying effect setting if that particular field isn't being overridden. It makes the overrides transparent to the script - which is normally a good thing - but in your case you need to know whether the value comes from an override on the effect item, or the base value on the effect setting.

How about this, to solve both problems at once - a "GetNthEI" function that returns an array representation of the effect item, and only includes fields that are explicitly overridden. Such an array would completely describe the state of the effect item, so you could construct a perfect copy of it later.
User avatar
sunny lovett
 
Posts: 3388
Joined: Thu Dec 07, 2006 4:59 am

Post » Wed Mar 30, 2011 10:26 am

How about this, to solve both problems at once - a "GetNthEI" function that returns an array representation of the effect item, and only includes fields that are explicitly overridden. Such an array would completely describe the state of the effect item, so you could construct a perfect copy of it later.

Now that, I could work with. Also please share the code with Scruggs. :D
User avatar
Sarah Knight
 
Posts: 3416
Joined: Mon Jun 19, 2006 5:02 am

Post » Wed Mar 30, 2011 5:31 am

Now that, I could work with. Also please share the code with Scruggs. :D

Actually, I'll request it from him in obse proper, and then override it.
User avatar
Colton Idonthavealastna
 
Posts: 3337
Joined: Sun Sep 30, 2007 2:13 am

Post » Tue Mar 29, 2011 9:27 pm

On a totally unrelated note, is it necessary for OBME to add its override records even to spells which don't use them? I've got one user whose Wrye Bash is choking on those records in the new Birthsigns Expanded release, which makes absolutely no use of OBME features. (Particularly odd, because another user with the same Bash version -- 290 -- has no problem.)
User avatar
flora
 
Posts: 3479
Joined: Fri Jun 23, 2006 1:48 am

PreviousNext

Return to IV - Oblivion