Jump to content

[WIP] Bash Tagger (detects up to 49 bash tags!)


fireundubh

Recommended Posts

https://fallout.gamepedia.com/JSawyer

 

JSawyer mod by the FONV Project Leader seems like a mod in need of Bash Tags, currently it has none in LOOT ( I dont use Wrye for FONV at the moment, I only have YUP followed by JSawyer so no need for it really, I want all of JSawyer records to win )

 

Probably a good candidate as a test case for this script considering its scope.

Link to comment
Share on other sites

My original script was designed to be used only on a single plugin and it's masters loaded in xEdit (you start xEdit and double click on a plugin to load), because when comparing it gets values from the record itself and it's previous override. When only master files for that plugin are loaded, it will get the correct data from the last master which modifies that record. When other plugins are loaded, the result will vary.

 

Thanks, zilav. I saw that here while looking into Kelmych's problem:

// if record overrides several masters, then get the last one
if OverrideCount(m) > 1 then
	m := OverrideByIndex(m, OverrideCount(m) - 2);

Note to everyone: for now, don't load all of your plugins at once when testing. Load only the plugin you want to test. I'll change this behavior soon enough though.

 

 

 

https://fallout.gamepedia.com/JSawyer

 

JSawyer mod by the FONV Project Leader seems like a mod in need of Bash Tags, currently it has none in LOOT ( I dont use Wrye for FONV at the moment, I only have YUP followed by JSawyer so no need for it really, I want all of JSawyer records to win )

 

Probably a good candidate as a test case for this script considering its scope.

 
These are the results I get:
jsawyer.esp:
Added tags to header: 
{{BASH:Actors.ACBS,Actors.Stats,Delev,Graphics,Invent,Relev,Stats,WeaponMods}}
Edited by fireundubh
Link to comment
Share on other sites

Since the two of you have more mods then me can you guys please test Wrye Flash 30.6 for FO3?

I'll be happy to test it. Do I get it from the FO3 forum you mentioned or from Nexus (currently Nexus says WF is under Review and isn't available)

Link to comment
Share on other sites

I'll provide links in a bit. I didn't know I would have issues with the nexus. I have to upload a file 5 times sometimes. After each upload attempt I download it and test it with a 7zip and it's normally corrupt.

 

I got lucky and Comcast had an available technician and he is here now. He says there is a lot of noise on the cable lines and that it's out in the street so I have to wait for them to clear it up today or tomorrow.

 

After I get the best connection I can noisy or not I'll provide some links.

______________________________________

 

I don't know what I am going to do with the nexus. I think I will have to rename Valda's versions and then make my own so I am the author. When the file is moderated I no longer have access.

 

I have been wanting to have xEdit and Wrye bash somewhere other then the nexus. Does STEP. Offer file hosting? If so would they allow me to host a project that has several versions in addition to the Skyrim version?

 

Are there any options for me?

Edited by Sharlikran
Link to comment
Share on other sites

No, no file hosting here. However we don't have a problem with authors providing alternative links to their mods/utilities on the forums here. Copy, dropbox, google drive, onedrive, heck even torrents should be fine (so long as it's the author posting it)

Link to comment
Share on other sites

We can also put all the available links on the Wrye Bash wiki pages and you can just link to that so people can see all the places that it is available to download. I was getting the beta versions from your OneDrive or w/e it's called, but it always feels weird bookmarking or link sharing someone else's person storage.

Link to comment
Share on other sites

Known issue:

- Destructible tag detection sometimes fails because of the recent change to the validation logic (fixed in v1.3.6)

 

I don't want to release 1.3.6 yet. Working on something else.

 

Here's the patch. Just make the CheckDestructible() function look like this:

{==================================================================}
// Destructible
function CheckDestructible(e, m: IInterface; debug: boolean): integer;
var
	d, dm: IInterface;
begin
	tag := 'Destructible';

	d := ElementByName(e, 'Destructable');
	dm := ElementByName(m, 'Destructable');

	if Assigned(d) <> Assigned(dm) then begin
		AddTag(tag);		
		exit;
	end;
	
	Validate(ElementByPath(d, 'DEST\Health'), ElementByPath(dm, 'DEST\Health'), tag, debug);
	Validate(ElementByPath(d, 'DEST\Count'), ElementByPath(dm, 'DEST\Count'), tag, debug);

	if GetNativeValue(ElementByPath(d, 'DEST\Flags')) <> GetNativeValue(ElementByPath(dm, 'DEST\Flags')) then begin
		AddTag(tag);
		exit;
	end;

	Validate(ElementByPath(d, 'Stages'), ElementByPath(dm, 'Stages'), tag, debug);
end;
Link to comment
Share on other sites

We can also put all the available links on the Wrye Bash wiki pages and you can just link to that so people can see all the places that it is available to download. I was getting the beta versions from your OneDrive or w/e it's called, but it always feels weird bookmarking or link sharing someone else's person storage.

For now I have to link to my OneDrive because even Mediafire is giving me difficulties.

 

I'll be happy to test it. Do I get it from the FO3 forum you mentioned or from Nexus (currently Nexus says WF is under Review and isn't available)

Go to my OneDrive. I use it as a Mirror just for this reason.  Look for the files that say Wrye Flash 30.7 and then Python or Standalone. Version 30.7 is for Fallout 3. Because of the Nexus issue post at the Fallout 3 Bethesda link I provided earlier.  You will know it's the correct thread because I will be posting links to an experimental version 306.0.14.  Post all requests and bugs there so I can find them easily until the Nexus issue is resolved.  However, I will probably make a new download link so that when they moderate the file I'm not locked out.

 

If you don't have a Bethesda account and don't wish to make one PM me here or start another thread wherever applicable.

Edited by Sharlikran
Link to comment
Share on other sites

@Sharlikran, am I to conclude from the way the archive is now packaged that you recommend installing this directly under the game's folder?

It is now:

\Data\INI Tweaks
\Data\Docs
\Data\Bash Patches
\Mopy\

whereas previous versions had those 3 folders as sub-folders of Mopy, at least that is how Wrye Bash was packed. Are the Fallout versions needing different access to the game folders?

Link to comment
Share on other sites

Sorry fireundubh not trying to derail the thread but as people are helping test Wrye Flash and use it with your script so this is probably a good of a place as any to contact me until I can find an alternative. Especially with the FO3 version moderated for now because of the Nexus virus scanner and my file upload issues.

 

Wrye Flash for Fallout 3 and FNV are based off of version 294 so Wrye does things like it used to in the past. Another example of how old the program is, Wrye Flash does not interface with the LOOT masterlist or taglist data. All LOOT bash tag suggestions need to be applied manually. Until recently there was no Standalone version. I got lucky that the TES4/TES5 scripts for making the Standalone version worked for Fallout. Wrye Flash was Python only and there wasn't an EXE isntaller. That is mostly why you see that file structure in the zip archive. I am only updating the patchers for Valda's version so they can be used as a baseline for my updates to the current Skyrim/Oblivion version.

 

I believe in the past you could locate Wrye in any location. I don't know the program and Python well enough to properly answer your question but I do not believe you need to give Wrye Flash any special permissions. I would located it in the game folder just to be safe and avoid potential issues running it.

Edited by Sharlikran
Link to comment
Share on other sites

For now I have to link to my OneDrive because even Mediafire is giving me difficulties.

 

Go to my OneDrive. I use it as a Mirror just for this reason.  Look for the files that say Wrye Flash 30.7 and then Python or Standalone. Version 30.7 is for Fallout 3. Because of the Nexus issue post at the Fallout 3 Bethesda link I provided earlier.  You will know it's the correct thread because I will be posting links to an experimental version 306.0.14.  Post all requests and bugs there so I can find them easily until the Nexus issue is resolved.  However, I will probably make a new download link so that when they moderate the file I'm not locked out.

 

If you don't have a Bethesda account and don't wish to make one PM me here or start another thread wherever applicable.

I got the file from OneDrive and I'll start testing it. I'll post in the Bethesda forum. I recently setup a new account there (I hadn't used my old one in a while). It really annoys me that I can't post links; they expect me to trust them when I buy their games but they don't trust me to post links.

Link to comment
Share on other sites

I tried to install it where I put all my utilities, no such luck, the resultant error log states:

Traceback (most recent call last):
  File "Wrye Flash Launcher.pyw", line 32, in <module>
  File "bash\bash.pyo", line 294, in main
  File "bash\bosh.pyo", line 36448, in initBosh
  File "bash\bosh.pyo", line 36190, in initDirs
  File "bash\bosh.pyo", line 36101, in getFalloutPath
bash.bolt.BoltError: Install Error
Failed to find Fallout3.exe in C:\Games\Utils\Wrye Flash.
Note that the Mopy folder should be in the same folder as Fallout3.exe.

Clearly Wrye Flash needs to be installed in the game folder.

Link to comment
Share on other sites

I tried to install it where I put all my utilities, no such luck, the resultant error log states:

 

Traceback (most recent call last):
  File "Wrye Flash Launcher.pyw", line 32, in <module>
  File "bash\bash.pyo", line 294, in main
  File "bash\bosh.pyo", line 36448, in initBosh
  File "bash\bosh.pyo", line 36190, in initDirs
  File "bash\bosh.pyo", line 36101, in getFalloutPath
bash.bolt.BoltError: Install Error
Failed to find Fallout3.exe in C:\Games\Utils\Wrye Flash.
Note that the Mopy folder should be in the same folder as Fallout3.exe.
Clearly Wrye Flash needs to be installed in the game folder.

 

Thanks for letting me know. I can't give an ETA but when Fallout support is finished being added to the Skyrim/Oblivion version that should no longer be an issue. Edited by Sharlikran
Link to comment
Share on other sites

Actually I have a request.  As this is tested enough that we can start adding these Bash tags to the LOOT masterlist, you only need to run the script once on the plugin and then it will remain that way until new Bash tags are made available.  I'd prefer to be required to load the one plugin you need to check rather then introduce possible issues trying to make it work for your whole load order.

 

Also can there be a boolean value so it does not alter the file header? I have files with a description and a version number for BOSS and LOOT. This overwrites that and ruins the version checking for BOSS and LOOT.

 

EDIT: I don't see where to set the debug boolean variable, how do I set that?  Since I am verifying these I want to see what is going on.

 

EDIT2:

 

[2] Graphics:  \ [04] Better Dynamic Snow.esp \ [1] GRUP Top "STAT" \ [753] Barrel02Static_HeavySN [STAT:0010EAF1] \ [3] Model
[2] Graphics:  \ [00] Skyrim.esm \ [31] GRUP Top "STAT" \ [43] Barrel02Static_HeavySN [STAT:0010EAF1] \ [3] Model
00075046 has the change to a Model subrecord. 02009669 has changes to flags, but not Cell flags so it is properly ignored.

 

if (sig = 'STAT') then begin
  Validate(ElementByName(e, 'DNAM - Directional Material\Material'), ElementByName(m, 'DNAM - Directional Material\Material'), tag, true);
end;
If I add that it doesn't seem to work. Am I doing that right?

 

EDIT4: I suggest the following for Skyrim. Not sure if Fallout or TES4 has the same subrecords.

 

	if (sig = 'EFSH') then begin
		if GetNativeValue(ElementByPath(e, 'Record Header\Record Flags')) <> GetNativeValue(ElementByPath(m, 'Record Header\Record Flags')) then begin
			AddTag(tag);
			exit;
		end;
		Validate(ElementBySignature(e, 'ICON'), ElementBySignature(m, 'ICON'), tag, true);
		Validate(ElementBySignature(e, 'ICO2'), ElementBySignature(m, 'ICO2'), tag, true);
		Validate(ElementBySignature(e, 'NAM7'), ElementBySignature(m, 'NAM7'), tag, true);
		Validate(ElementBySignature(e, 'NAM8'), ElementBySignature(m, 'NAM8'), tag, true);
		Validate(ElementBySignature(e, 'NAM9'), ElementBySignature(m, 'NAM9'), tag, true);
		Validate(ElementBySignature(e, 'DATA'), ElementBySignature(m, 'DATA'), tag, true);
	end;
Edited by Sharlikran
Link to comment
Share on other sites

I was going to make the same request, to have the bash tag script append the bash tags to the existing plugin header description text rather than overwriting the existing text that describes the plugin.

 

Those running this plugin should realize that the tags need to be evaluated before being used in Wrye Bash. There are a lot of records in some plugins that shouldn't be included in the bashed patch, and to make sure this happens the tags for these records shouldn't be used. For example, if Project Beauty is used then the face and other changes to NPCs that some mods make (e.g., armor mods) should not be used. If the NPC-related bash tags are eliminated Wrye Bash will then take care of ensuring that the Project Beauty faces are used. I do such reviews for the bash tag inputs I provide to LOOT, by the way.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines, Privacy Policy, and Terms of Use.