I've always loved this program, and I've corresponded with it's author about it. I was the reason he unlocked the 70 cap on the armor so suits could be built that were corpse and wraith proof.
I'm going to post it up here to keep it in reference where it truly belongs.
It's NOT complete to todays standards. There are other armor types now that aren't included. It's relatively simple to add in artifacts, but I'm not sure about adding in regular new armors, like woodland, leaf, gargoyle, etc...
Hopefully, someone here can take a look at this and maybe disassemble it in a way that could add in the new armor. This tool was pretty amazing, and it could seriously use a resurrection.
Readme.txt
SWArmorCalc
What is it?
SWArmorCalc (SWA) imports armor data via UOAssist's Vendor Agent, persists the data to a file, and calculates resist data for different armor sets. It does not try to come up with the "best" combinations. It simply calculates all possible combinations based on user settings of which piece types to use (head wear, gloves, legs, etc...). SWA supports the inclusion or exclusion of the following armor types when evaluating sets:
Head wear
Gorgets
Arms
Gloves
Legs
Chest pieces
Rings
Bracelets
Shields
Robes
Cloaks
Weapons
You can also set a total resist lower limit such that SWA will not display sets having a total resist below this limit.
Individual armor pieces are categorized and displayed in a hierarchal tree. Armor sets are displayed in a list view that has columns for each resist type, total resist, and total effective resist (in cases where one or more individual resists exceeds 70). The data can be sorted by clicking on any column header to bring the armor sets with the best resists for that column to the top.
Quick Start
1. Use UOAssist's Vendor Agent to put your armor data into the clipboard.
2. Click on SWA's Paste button. This will bring up the Import dialog. Click the Paste button in the Import dialog to populate the list with the armor data. Note that the Paste button will not be enabled if there is no CF_TEXT data in the clipboard.
3. Click Save/Exit to save the data.
4. The armor pieces should now be in the tree view.
5. Click on the Filter menu item and select the piece type you want to be included in the calculations and set the total resist lower limit.
6. Click Calculate.
7. Depending on the number of items being processed and the number of types included, the process may take a while. It is recommended that you exclude types you don't need in the filter for the best performance. Also, import only your good stuff, not everything you have. A message box will be displayed when the process completes.
8. When processing is complete, all valid suit combinations will be displayed in the list view. Click on any header to sort the list by that column's data.
9. Each suit combination will be displayed as "Suit xxxxx". Double-click on any suit to bring up the piece detail dialog for that suit.
10. Armor descriptions are typically VERY LONG which makes it a pain to see in a list view cell. You can double-click on any armor piece in the detail dialog to display the complete string in a message box.
New in version 1.0.1.0
***Important***
Old .swa files are not compatible with this version. You will have to re-import your items and save the files again. Sorry, but the changes were too extensive to maintain backward compatibility and get the program done in a reasonable time.
The calculation thread can now be canceled. Hit the Red Light to kill the thread.
***Calculates***
Luck
LRC
LMC
Mana Recovery
Hit Point Recovery
Stamina Recovery
DCI
HCI
Medable Suits
Go to the Filters dialog to set the options for these new properties. The Property check boxes determine whether the columns will appear in the list control. Values are still calculated even if columns are not displayed. Because of this fact, set the property limits to zero if you are not concerned with their values.
Check the Medable Suits Only check box to force SWArmorCalc to only use medable pieces in its calculations.
There is now a limit on the number of suits that can be displayed in the list. Trying to stuff a million suits in there is just not necessary. The limit setting defaults to 1000 suits but can be adjusted from 1 to 100000. Once the limit is hit, calculation stops so some suit combos will not be calculated.
Suits can now be assigned to characters. Doing this removes the pieces in the suit from the pool for future calculations. Just enter a character name in the Suit Dialog and hit the Assign/Exit button. Once a suit is assigned, it will be displayed in the tree under the character's name. As of now, you can delete a piece or pieces from the suit or you can delete the suit as a whole. I didn't put in the ability to manually add pieces to the suit as the whole interface for the suit functions is going to change but I don't have time to do it right now.
*** Bugs ***
If you dismiss the Suits Dialog using the Exit button, the dialog reappears. Exiting again works. Not sure why but it seems that I'm getting the dblclick event a second time but only in release mode so I'm having a hard time finding out why. It's strictly a nuisance bug and doesn't seem to affect operation.
New in version 1.0.6.0
Support for SE items and beyond. The parser definitions have been externalized to the registry so users can add new items without me having to update the program. Run the program one time and then look in the registry under HKEY_CURRENT_USER\Software\SeanWorks\SWArmorCalc\PieceDefs. You will find a key for each armor type. Open one of those keys and you will see the text that is compared in order to determine if an item is that type. You can add new values to these keys when UO adds new items. The values must contain a string that is in the new item. The value names can be anything but must be unique within that key.
You can now replace items in suits. Right-click on the piece you want to add to a suit and select "Add Piece to Suit". In the resulting dialog, select the suit in which this piece should go and click OK. The piece will be added to the suit and if the suit already had a piece of that type, the old piece will be returned to the Items section of the tree.
New in version 1.0.7.0
Added the ability to bypass the 70/resist limit. Open the Filters dialog and check the Bypass 70/Resist Limit checkbox to remove this limit.
New in version 1.0.8.0
Fixed a bug where this item -
"Bracelet of Health <b>insured</b> Weight: 1 stone artifact rarity 11 hitpoint increase 5 hit point regeneration 10, Price: --"
would not import. Added "artifact rarity" to the list of item validators.
Fixed a bug where, if no items were validated on a Paste, the program went into an infinite loop and had to be killed with the Task Manager.