[beta] SDR for Nehrim and other alternate game worlds

Post » Wed Dec 14, 2011 1:05 pm

I experimented with creating a masterless version of SDR (Sneaking Detection Recalibrated) that *should* be able to drop right in with alternate game worlds such as Nehrim. I only had to remove two features: the Journeyman perk that allowed you to bypass pressure plates and tripwires, and the option to allow Argonians to be an exception to the peripheral vision rules. It compiled and seems to be working with standard Oblivion.

I don't have Nehrim, so I can't test this new version. If any Nehrim players would like to test this out for me, let me know, and I'll make it available on the beta page later today - when I get my internet back on line.

p.s. typing all of this in an iPhone is not much fun.
User avatar
Luna Lovegood
 
Posts: 3325
Joined: Thu Sep 14, 2006 6:45 pm

Post » Wed Dec 14, 2011 5:25 am

I only had to remove two features: the Journeyman perk that allowed you to bypass pressure plates and tripwires, and the option to allow Argonians to be an exception to the peripheral vision rules.

The Argonian trait should be easy to implement without dependency; just compare string names instead of FormIDs.
Instead of this:
ref npc; acquire npcif npc.GetRace == Argonian    ...
Do this:
ref npcref npcRace; acquire npcset npcRace to npc.GetRaceif eval (GetName npcRace) == "Argonian"    ...

Not sure what you're doing with the Journeyman perk, but I bet there's a similar solution.
User avatar
HARDHEAD
 
Posts: 3499
Joined: Sun Aug 19, 2007 5:49 am

Post » Wed Dec 14, 2011 12:25 pm

Saebel-

That was fast. I'll try later tonight to test it out.

Tejon-

Nehrim is a total conversion that has no argonians .... in fact it only has three races the player can play as: The middlerealm folk (like Imperials), The northrealm folk (like Nords), and Aeterna (like ren's elves).

There are only 3 birthsigns. There are no major and minor skills. It is an experience point system (kill/quest to get learning points - use them to improve character with training sessions).
User avatar
Nicholas C
 
Posts: 3489
Joined: Tue Aug 07, 2007 8:20 am

Post » Wed Dec 14, 2011 2:41 pm

Nehrim is a total conversion that has no argonians

...so when checking the name of an NPC's race, the result will never be "Argonian". Script works as intended. :)
User avatar
Crystal Clarke
 
Posts: 3410
Joined: Mon Dec 11, 2006 5:55 am

Post » Wed Dec 14, 2011 12:26 am

Well there is a variant of robert's male mod that allows the player to play the vanilla races and in that case the player could be an argonian, but never the NPC. Not with any mod I've seen so far.
User avatar
Dalley hussain
 
Posts: 3480
Joined: Sun Jun 18, 2006 2:45 am

Post » Wed Dec 14, 2011 7:59 am

The Argonian trait should be easy to implement without dependency; just compare string names instead of FormIDs.
Instead of this:
ref npc; acquire npcif npc.GetRace == Argonian    ...
Do this:
ref npcref npcRace; acquire npcset npcRace to npc.GetRaceif eval (GetName npcRace) == "Argonian"    ...

Not sure what you're doing with the Journeyman perk, but I bet there's a similar solution.

Awesome! I actually wanted to provide a more specific set of races that were / were not exceptions, this trick will allow for more flexibility.

Journeyman Perk is not so easy. I had to hack the actual three scripts that are the middle point between any given pressure plate / tripwire and the trap action they are associated with and force them to return out before activating if the player was sneaking/not-running/Journeyman+. If you can figure out another way to do THAT, I will put the three bow down animated icons in your honor.
User avatar
Darren
 
Posts: 3354
Joined: Wed Jun 06, 2007 2:33 pm

Post » Wed Dec 14, 2011 3:59 pm

Saebel-

That was fast. I'll try later tonight to test it out.

There are only 3 birthsigns. There are no major and minor skills. It is an experience point system (kill/quest to get learning points - use them to improve character with training sessions).

Hmm. I do have an assasination feature that grants xp towards sneak in a specific way, and has an alternate method if Oblivion XP is installed that grants xp in the way you described. Would I need to account for something like that, or do the Nehrim creators have that covered?
User avatar
Rhi Edwards
 
Posts: 3453
Joined: Fri Jul 28, 2006 1:42 am

Post » Wed Dec 14, 2011 3:17 pm

I don't know - the XP system in Nehrim is clunky compared to OblivionXP.

Pretty much it is kill, discover, finish quest and you get lump sum of XP. There is no accounting for how you do these things. That I've seen anyway.

Some have reported that they gained XP to fast and made mods to slow it down. I use these mods, but really even without them I did not find it too fast.
User avatar
oliver klosoff
 
Posts: 3436
Joined: Sun Nov 25, 2007 1:02 am

Post » Wed Dec 14, 2011 10:57 am

I don't know - the XP system in Nehrim is clunky compared to OblivionXP.

Pretty much it is kill, discover, finish quest and you get lump sum of XP. There is no accounting for how you do these things. That I've seen anyway.

Okay. Hmm. Well, I guess I could leave it there for now, but I'll comment out the onhealthdamage event handler that handles the assassination feature - that will help performance a bit. I can always tweak it later if the Nehrim folks want something specific.
User avatar
sam smith
 
Posts: 3386
Joined: Sun Aug 05, 2007 3:55 am

Post » Wed Dec 14, 2011 12:53 pm

Beta 3.1.0n for Nehrim is up.

http://saebel.net/sdrBeta.php
User avatar
RUby DIaz
 
Posts: 3383
Joined: Wed Nov 29, 2006 8:18 am

Post » Wed Dec 14, 2011 3:26 am

Hmm. I do have an assasination feature that grants xp towards sneak in a specific way, and has an alternate method if Oblivion XP is installed that grants xp in the way you described. Would I need to account for something like that, or do the Nehrim creators have that covered?

Whatever XP system you have methods for could simply make use of the Nehrim global variable "EP" and add to that. That's what tracks how much XP the player has. It may need adjustment to fit to the formula Nehrim uses. I don't know the specifics but it feels like one of the older D&D experience progression charts.
User avatar
Chris BEvan
 
Posts: 3359
Joined: Mon Jul 02, 2007 4:40 pm

Post » Wed Dec 14, 2011 12:11 am

Beebee really looked into more than anyone else I know. He ported tejon's progression mod.
User avatar
Alycia Leann grace
 
Posts: 3539
Joined: Tue Jun 26, 2007 10:07 pm

Post » Wed Dec 14, 2011 1:16 pm

Journeyman Perk is not so easy. I had to hack the actual three scripts that are the middle point between any given pressure plate / tripwire and the trap action they are associated with and force them to return out before activating if the player was sneaking/not-running/Journeyman+. If you can figure out another way to do THAT, I will put the three bow down animated icons in your honor.

Option 1: SetScript. You'd have to test it carefully because there's a distinct chance this won't work (fiddly stuff about whether or not the game engine updates variable lists), but there's also a distinct chance it will. The most sensitive situation would be if the player loads a game immediately after launching Oblivion which is in a cell containing a trap; so if you try this, test that.

First, take your modified scripts and save them as new forms. I've assumed you'll name them the same thing with 'sdr' prefixed. During your initialization:
ref trapif eval IsModLoaded "Oblivion.esm"    let trap := GetFormFromMod "Oblivion.esm" "05325D"    ; CTrigPressurePlate01    SetScript sdrCTrigPressurePlate01SCRIPT trap    let trap := GetFormFromMod "Oblivion.esm" "04CAD9"    ; CTrigTripwire01    SetScript sdrCTrigTripwire01SCRIPT trap    let trap := GetFormFromMod "Oblivion.esm" "01609E"    ; RFTrigPressurePlate01    SetScript sdrRFTrigPressurePlate01SCRIPT trapendif


The other option is to just put those edited scripts in a separate esp. Since this patch esp contains no new forms, it can go in the Bashed Patch and not eat a slot. It doesn't even rely on anything in the main SDR... you could almost release that as a stand-alone mod. ;) More importantly, you could have separate versions for Oblivion and Nehrim (assuming it's relevant for the latter). Then your main esp is masterless, and your content-specific features are in obvious places should they need updating.
User avatar
Taylor Thompson
 
Posts: 3350
Joined: Fri Nov 16, 2007 5:19 am

Post » Wed Dec 14, 2011 3:08 am

Option 1: SetScript. You'd have to test it carefully because there's a distinct chance this won't work (fiddly stuff about whether or not the game engine updates variable lists), but there's also a distinct chance it will. The most sensitive situation would be if the player loads a game which is in a cell containing a trap, so if you try this, test that.

First, take your modified scripts and save them as new forms. I've assumed you'll name them the same thing with 'sdr' prefixed. During your initialization:
ref trapif eval IsModLoaded "Oblivion.esm"    let trap := GetFormFromMod "Oblivion.esm" "05325D"    ; CTrigPressurePlate01    SetScript sdrCTrigPressurePlate01SCRIPT trap    let trap := GetFormFromMod "Oblivion.esm" "04CAD9"    ; CTrigTripwire01    SetScript sdrCTrigTripwire01 trap    let trap := GetFormFromMod "Oblivion.esm" "01609E"    ; RFTrigPressurePlate01    SetScript sdrRFTrigPressurePlate01 trapendif


The other option is to just put those edited scripts in a separate esp. Since this patch esp contains no new forms, it can go in the Bashed Patch and not eat a slot. It doesn't even rely on anything in the main SDR... you could almost release that as a stand-alone mod. ;) More importantly, you could have separate versions for Oblivion and Nehrim (assuming it's relevant for the latter). Then your main esp is masterless, and your content-specific features are in obvious places should they need updating.

You've pretty much hit on the direction I've been thinking about for awhile now. In fact I already started taking steps in that direction just to experiment. The main Sneaking Detection Recalibrated.esp would be masterless for everything, and pretty much just focus on the detection related features. An optional "Perks and Patches" .esp would be custom made for each "world", dealing with things like mod-compatibility, sneak attack multipliers, assassination skill-ups, pretty much anything outside of the detection realm. So nerfing invisibility, fading NPCs, sprinting and chameleon refraction would still be part of the main mod because they are tied very closing to the detection and detection formula process. Although I don't know enough about bash patching to know if all of the other things could be bashed and still work without the .esp being activated. Wouldn't the initial quest still need to run to load all the settings and options? Or do I only put things in the "Perks and Patches" that don't need .ini settings.

Man this stuff is getting crazy complicated, but if I can sort it all out, it will be for the greater modding good.
User avatar
Matthew Barrows
 
Posts: 3388
Joined: Thu Jun 28, 2007 11:24 pm

Post » Wed Dec 14, 2011 3:37 am

Isn't it that what can merged into the bashed patch are only records that alter existing records (either in the Oblivion.esm or later loading esm or esp). It makes the plugin that has the original record a master for the bashed patch.

If it contains any new records then I don't think it can be merged into the bashed patch. But I'm no expert on that - there have been all kinds of changes to what can be imported once you take cbash into account.

Also for what it is worth - the primary purpose of the bashed patch with Oblivion is to merge leveled lists from various mods so that they don't overwrite each other. Merging esp and all the bash patch tweaks came later. To date there are no leveled list mods for Nehrim, so that is not used. Only some of the tweaks work. It can have merged mods into (All Natural for instance ... also I've merged smaller adjustments to animal sizes and body mod stuff).

In short the bashed patch with Nehrim is gimped.
User avatar
Tiff Clark
 
Posts: 3297
Joined: Wed Aug 09, 2006 2:23 am

Post » Wed Dec 14, 2011 2:47 pm

Gimped how? Bashing for Nehrim works perfectly well. Nehrim doesn't have leveled list mods because, frankly, it doesn't need them. It's setup is vastly superior to vanilla Oblivion in that regard :)
User avatar
Keeley Stevens
 
Posts: 3398
Joined: Wed Sep 06, 2006 6:04 pm

Post » Wed Dec 14, 2011 12:35 am

Well if you are going to press me for what works and doesn't - I may not have exacting details.

As I said you can merge mods and so far that works fine - depending on the mods, but the main purpose of Bash to merge leveled list - I've not seen that at all. Actually I'm not certain that it even uses leveled lists or if it places everything. It is place centric though and that means that if LL are used in that scheme they could be adjusted. I've just not seen it done.

What I specifically mean is that there are a bunch of bash tweaks that adjust gobals and other settings and so on in the oblivion.esm - some of which are ported over to Nehrim and work, many, however, do not work and if you activate them it causes the Oblivion.esm to become a master for the bashed patch - and since you cannot use the Oblivion.esm with Nehrim it is an issue.

The bash team have worked though at improving things. First off, it used to require the Oblivion.esm be present to even try bashing even if nothing was altering it. That was changed. Then later it was learned that it still made the Oblivion.esm a master and that too was changed. So it used to be much more difficult to have a bashed patch with Nehrim and would require gecko to remove the Oblivion.esm as a master or to rename the master and that was hit and miss there for a while.

My point above was to post about what can be merged - all the rest is a bit off topic (it would be on topic in the Nehrim and mods thread), but yeah.
User avatar
Shelby Huffman
 
Posts: 3454
Joined: Wed Aug 08, 2007 11:06 am

Post » Wed Dec 14, 2011 3:58 pm

I think you may well be acting on outdated information. Bash 294 is what I played most of Nehrim with, with the remainder being under the 295 SVN. All of the tweaks I used worked flawlessly and it never once tried to include Oblivion.esm as a master. I'm 99.9% certain those issues were corrected by the time 295 went live.

There are leveled lists in Nehrim for both creatures and items, but I'm pretty sure the spawn points that deal with them have been very carefully placed. So if someone were to feel the need to modify them, Bash would handle it just fine. Bash has become more than just the leveled list merge utility it began as.
User avatar
Reanan-Marie Olsen
 
Posts: 3386
Joined: Thu Mar 01, 2007 6:12 am

Post » Wed Dec 14, 2011 12:18 pm

Like I wrote above - the bash team has improved things. It is not as though anything older than 294 is that old. It is better now - again as I wrote.

Try flipping on more tweaks that maybe you don't normally use. For instance the script effect silencer will create Oblivion.esm as a master. Any that alter the Oblivion.esm settings that are not in the Nehrim.esm or named/numbered differently will cause this. Not all functions are working = gimped. Not horribly. the camrea tweaks are the main ones I use for Nehrim and they work great.

Likewise if a mod is not ported correctly (as in more than just having the master renamed to Nehrim.esm is needed) and it is merged into the bashed patch it can cause issues as well. The bashed patch won't necessarily tell you of this either. Some of that has to do with how it works - which reminds me of http://www.gamesas.com/index.php?/topic/1246061-relz-wrye-bash/page__view__findpost__p__18991044.

Sorry Saebel for off topic.

[edit] also for Saebel-
One of the things we learned about porting mods to Nehrim is that scripts are the difficult thing to catch. Entries that are merged into the bashed patch can be easily spotted because it makes the parent plugin whose entries it is adjusting the master. You can see this easily in bash or tes4edit. But if a script references an entry in a master then Wrye Bash and Tes4Edit won't check this and running it could result in the script not working or crashing.

And example being that with Duke's Combat Archery a script references the entry for apple, but the German developers of Nehrim used the German word for apple and so the script fails and mod does not work even though it appeared as though all entries were pointing to the correct places in Nehrim.esm.

You may already be aware of all this. More in the second post of the Nehrim and mods thread.
User avatar
Sabrina Steige
 
Posts: 3396
Joined: Mon Aug 20, 2007 9:51 pm

Post » Wed Dec 14, 2011 1:51 am

I'd say it's been fixed then. The script effect silencer used Nehrim.esm, as did all of the other tweaks I poked.

Mods not being ported correctly are not Wrye Bash programming faults.
User avatar
Sarah MacLeod
 
Posts: 3422
Joined: Tue Nov 07, 2006 1:39 am

Post » Wed Dec 14, 2011 1:51 pm

I don't mind the tangent. It's all relevant to what I'm working on.

I think for sheer comfort zone I am not going to try to bash tag anything just yet. The mod is still changing fairly often. I think once I've worked out all the kinks/overall structure, I'll experiment with bash tagging, otherwise that's just one more possible problem I'd either be causing or have to hunt down. I'm trying to work out moving more of the scripting into the .dll (if I can figure out that blasted game setting trick!), so if that works, there would be fewer scripts to bash anyway.
User avatar
NIloufar Emporio
 
Posts: 3366
Joined: Tue Dec 19, 2006 6:18 pm

Post » Wed Dec 14, 2011 8:59 am

I just got the latest tarball Bash and with a fresh bashed patch - set all tweak settings to something relevant and globals too.

Oblivion.esm created as master.

Perhaps later I will go through and try to identify which ones - but I will post results in the Nehrim & mods thread.
User avatar
Vera Maslar
 
Posts: 3468
Joined: Wed Sep 27, 2006 2:32 pm

Post » Wed Dec 14, 2011 7:32 am

Well I clean saved from previous version I had with Nehrim (2.06).

Then installed this and loaded the game - the game loaded but this did not initialize. Conscribe log:
Spoiler
===============================================
Game Instance : 1 | Time : 10-30-2011 23-52-42
===============================================
attack button == 256
Better Blocking v3 initializing...
Better Blocking v3 initialized from .ini file
SM Enc and Fatigue Settings Configured
AHR: Initialization...
AHR: Loading INI...
AHR: Initialization completed. AHR is running.
OBSE Drop Lit Torches Initialised (Ini)
EH:Updated values from ini file in data\ini\.
All Natural Nehrim: Initialised
SDR: v3.1.0 Initialized [SUPER-ULTRA-hardcoe] with Extended Curved sneak attacks
Error in script 1b004000
Couldn't create eventlist
Error in script 1b004000
Could not create function context for function script
Error in script 1b004000
Couldn't create eventlist
Error in script 1b004000
Could not create function context for function script
Error in script 1b004000
Couldn't create eventlist
Error in script 1b004000
Could not create function context for function script
Error in script 1b004000
Couldn't create eventlist
Error in script 1b004000
Could not create function context for function script
Error in script 1b004000
Couldn't create eventlist
Error in script 1b004000
Could not create function context for function script
Error in script 1b004000
Couldn't create eventlist
Error in script 1b004000
Could not create function context for function script
Error in script 1b004000
Couldn't create eventlist
Error in script 1b004000
Could not create function context for function script
Error in script 1b004000
Couldn't create eventlist
And that same error goes on for pages.

I have the latest OBSE dangle installed.
User avatar
Angelina Mayo
 
Posts: 3427
Joined: Wed Jan 24, 2007 4:58 am

Post » Wed Dec 14, 2011 2:45 am

IIRC, that error shows up when a control script tries to register an event using an invalid FormID for the event handler function script. This can happen if you compile the control script, then do something to invalidate the referenced function script. Hazarding a guess, I'd say either the Argonian feature which got removed was tied to an event handler which was deleted but still has a registration call somewhere; or the masterless version of the plugin was created by moving records around in TES4Edit, and a FormID got changed. Either way, loading it up in the CS and hitting "Recompile All" should either fix it or give a good diagnostic error. (Since this doesn't have Oblivion.esm as a master, Recompile All is safe even in the vanilla CS. Yields much better debug info if you've got shadeMe's CS Extender, tho.)
User avatar
Gill Mackin
 
Posts: 3384
Joined: Sat Dec 16, 2006 9:58 pm

Post » Wed Dec 14, 2011 5:41 am

Yeah, I didn't notice the error myself until after I had already uploaded the beta. I'll try recompile all. Sorry about the mess.

Well, actually, here's what I did. After I removed everything that I *thought* was related, Oblivion.esm was still listed as a master. So I tried to use TES 4 Gecko (which was the only way I could figure out how to remove it). Gecko warned me that a number of scripts were tied to the master, but I couldn't figure out it what way, since there were no overlaps. The only thing I could think of was maybe it's because there are calls to game settings or something like that?

Anyway, I'll dig into it a little more and see what I come up with.

4000 is the main detection formula. So, that pretty much kills it right there if I can't figure out a fix.

Edit: It's not the game settings, it's the hasmagiceffect function:
if vActor.HasMagicEffect LGHT == 1 is killing it. Looks like it's time to hit the wiki.
User avatar
Vickytoria Vasquez
 
Posts: 3456
Joined: Thu Aug 31, 2006 7:06 pm

Next

Return to IV - Oblivion