Quantcast
Download
(113 Kb)
Download
Updated: 08/15/17 02:56 PM
Pictures
File Info
Compatibility:
Horns of the Reach (3.1)
Updated:08/15/17 02:56 PM
Created:02/12/17 08:54 PM
Monthly downloads:2,593
Total downloads:11,441
Favorites:31
MD5:
3.1
WritWorthy  Updated less than 3 days ago!  Popular! (More than 5000 hits)
Version: 3.1.3
by: ziggr [More]
  • Is a master writ worth doing?
  • Does this character have the skills to do so?
  • Want to craft it automatically? <-- NEW and experimental as of 2017-06-18

Is this master writ worth doing?

Most writs consume less than 1000g worth of materials for each writ voucher they return. But some consume 2000g+ materials per voucher and might not be worth doing.

Shopping guild stores for Master Writs? What is the per-voucher cost of a writ, including both materials and purchase price?

This add-on adds text to each Master Writ's tooltip, showing the total material cost, purchase price (if any), and the cost per writ voucher reward.

It also optionally dumps a complete material list to chat. Surprisingly useful when filling Alchemy writs.

Requires Master Merchant for material prices.

Does this character have the skills to do so?

Not interested in writs that you cannot craft?

This add-on shows big red warnings when writ requires a motif, trait, or recipe that the current character does not yet know.

It also shows orange warnings for missing skills that are not required, but which reduce the cost of expensive writs, such as Temper Expertise.

(No, WritWorthy does not check inventory for required materials, or space to hold the the crafted item. I assume a master crafter can handle their own inventory management.)

Want to craft it automatically?
NEW and experimental for version 3.0.3 2017-06-18

"Experimental" here means that you will lose materials, maybe even gold tempers, if you discover a bug in WritWorthy. Use automatic crafting only if you're willing to take the risk.

  1. Bind a key to "Show/Hide WritWorthy"
  2. Use that key binding to see a list of all Sealed Master Writs in the current character's inventory.
  3. Check the ones you want to craft automatically next time the character visits the appropriate crafting station. Or "Enqueue All" if you want to craft them all.
  4. "Sort by Station" to see which crafting stations you need to visit.
  5. Walk up to a station, 'E' interact, and watch Dolgubon's LibLazyCrafter make your items.
  6. Wait patiently while the automatic crafting occurs. If you cancel interaction while still auto-crafting, you might end up auto-crafting an item twice, wasting materials. There is no indication for "all done". Sorry.
  7. Once you have crafted items for your writs, you can open them, accept their quest, and the quest will automatically advance to "Turn in".

Thanks to Dolgubon's LibLazyCrafting which makes automatic crafting possible.

Automatic crafting requires that the appropriate cost-reduction skills have been maxed out: Temper Expertise, Chef, Brewer, or Chemistry.


Thank You
Huge thank you to Rhyono and Dolgubon for all the programming help.
I pulled some internal glyph and recipe list item_id values from CraftStore Fixed and Improved and ESO Master Recipe List: saved me a couple hours of work.

--Z
3.1.3 2017-08-15
  • Manavortex's fix for autocraft window's error: "attempt to perform arithmetic on a nil value" if you run without Master Merchant.

3.1.2 2017-08-14
  • "Motif X not known" fixed. I was off by +1 for all motifs.
  • HotR Motifs added: Redoran, Hlaalu, Telvanni. Not sure if they'll show up in writs, but if they do, WritWorthy will now check Master Merchant for their style material prices, just likt it does for all other motifs.

3.1.1 2017-08-14
  • ESO 3.1 Horns of the Reach/API 20
  • Squelch errors for "table index is nil" for new item style constants.
  • Autocraft: no longer add mystery +1 to motif index. No longer required or correct.
  • KNOWN BUG: "Motif Barbaric not known" even though you do know this motif. For some reason the ESO API returns "false" for IsSmithingStyleKnown(barbaric=17+1) even if you know that motif. All motifs off by one.

3.0.7 2017-07-16
  • Public API Support: new function WritWorthy.ToMatCost(itemLink) returns material cost for a single writ.
  • Bugfix: Make WritWorthy global be the actual add-on, not the LibAddOnMenu pane. Thank you sirinsidiator and silvereyes for the report+fix!

3.0.6 2017-07-10
  • Bugfix: would inconsistently fail to report "Motif XXX not known" for some motifs. Thank you Rhyono for helping me debug this.

3.0.5 2017-06-22
  • Replace hardcoded skill indices with a runtime scan for localized skill name. Turns out those indices change from player to player, are not constants. And there are no "skillId" analogs to "itemId" constants. Oh well. Fall back to string matching. Hopefully this will end the many reports of nil errors on other people's ESO clients. I included the names for EN, DE, and FR. I do not have a JP client, so I lack those names, sorry.

3.0.4 2017-06-20
  • Bugfix: operator < is not supported for nil < nil. Thanks to Tonyleila for the report.

3.0.3 2017-06-18
  • New window with list of all master writs in backpack.
  • Automatic crafting of writs.
  • integrate Dolgubon's LibLazyCrafting 0.4, which is actually Dolgubon's LibLazyCrafting 0.3 but with Zig-added support for alchemy and provisioning. If those don't work, it's Zig's fault not Dolgubons. Thank you Dolgubon for all the help!

3.0.2 2017-05-28
  • Morrowind API: replace temporary workaround numbers with actual constants for new styles. Thank you @Rhyono for the CraftStore Morrowind update which had all the quest IDs I needed for the "which pages do you know?" query.
  • BugFix: never had a quest ID for the "Order of the Hour" motif. Now I do.

3.0.1 2017-05-21
  • ESO 3.0 Morrowind/API 19
  • Temporary workaround: some item style constants changed in the new API and until I can figure out the new ones, use magic numbers. WritWorthy might report incorrect known/unknown results for these three motifs: Skinchanger, Grim Harlequin, Hollowjack.
  • Provisioning: require 2x crafting attempts, since most Provisioning writs seem to require 8 servings. (I assume any character performing master writs will have Chef/Brewer/Chemistry passive skills maxxed out.)

2.7.10 2017-04-04
  • Option to fall back to hardcoded prices for common style and trait materials.

2.7.9 2017-03-22
  • AHA Found the "Trait not known" bug for medium armor: when a writ required a trait for some medium armor piece (such as belt), WritWorthy erroneously checked the light armor piece (such as sash).

2.7.8 2017-03-22
  • Debug log: records details about the 20 most recent writs. If there's a problem with a writ, send a screenshot of the offending writ (or the UI error), and a screenshot of the writ that caused the problem. This ought to help me figure out what's going wrong.

2.7.7 2017-02-25
  • Stop crashing auf Deutsch. When building recipe ingredient lists out of ZOS-returned data, use item links, not names, as element keys. All WritWorthy text is still in US English. The only change here is that it can run correctly when the ESO client is set to German.

2.7.6 2017-02-25
  • Survive without Master Merchant. If missing, or if its database lacks some required materials, display "?g" for "unknown amount of gold" and don't count materials costs when calculating per-voucher cost.

2.7.5 2017-02-24
  • Add big red text to tooltip if current character cannot craft the required item due to missing motif, traits or recipe.

2.7.4 2017-02-20
  • Add a table of recipes to Provisioning so that the provisioning writs can show a material list even if the current character does not know the required recipe. Fixes "Recipe not found" errors for such writs.

2.7.3 2017-02-16
  • Settings UI: checkbox to enable/disable material list dump to chat. Too much clutter in the chat window.
  • Bugfix: Alchemy materials had poison/potion = Alkahest/Lorkhan's Tears swapped.

2.7.2 2017-02-14
  • Replace string matching with item_link parsing

2.7.1 2017-02-12
  • First release. Uses string matching that worked only for US English clients.
Optional Files (0)


Archived Files (19)
File Name
Version
Size
Author
Date
3.1.2
113kB
ziggr
08/14/17 03:25 PM
3.1.1
113kB
ziggr
08/14/17 02:17 PM
3.0.7
113kB
ziggr
07/16/17 11:42 AM
3.0.6
113kB
ziggr
07/10/17 08:15 PM
3.0.5
113kB
ziggr
06/22/17 05:43 PM
3.0.4
111kB
ziggr
06/20/17 11:56 AM
3.0.3
111kB
ziggr
06/18/17 10:59 PM
3.0.2
71kB
ziggr
05/28/17 01:18 PM
3.0.1
71kB
ziggr
05/22/17 01:03 PM
2.7.10
71kB
ziggr
04/04/17 05:06 PM
2.7.9
69kB
ziggr
03/23/17 12:40 AM
2.7.8
69kB
ziggr
03/23/17 12:08 AM
2.7.7
67kB
ziggr
02/26/17 05:33 PM
2.7.6
67kB
ziggr
02/25/17 05:01 PM
2.7.5
66kB
ziggr
02/24/17 11:13 PM
2.7.4
68kB
ziggr
02/20/17 02:57 PM
2.7.3
55kB
ziggr
02/16/17 03:44 PM
2.7.2
19kB
ziggr
02/15/17 12:12 AM
2.7.1
17kB
ziggr
02/12/17 08:54 PM


Post A Reply Comment Options
Unread 08/15/17, 03:01 PM  
ziggr
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 55
Uploads: 5
Originally Posted by manavortex
Hey there,
thank you so much for this AddOn, I'm using it like it's grammar.

However, I'm not running MasterMerchant, so I got some errors. Fixed them like this:

Lua Code:
  1. local mat_gold = WritWorthy.MatRow.ListTotal(mat_list) or 0
in line 1312 and 1301 in WritWorthy_Window.lua
Fixed and uploaded as 3.1.3. Thank you.

Originally Posted by manavortex
Hey there,
btw, I don't know if you are familiar with the terniary if notation. Basically, you can assign a variable by saying
Lua Code:
  1. myvar = condition and value or otherValue

I use that to conditionally assign stuff to shorten up my if/else cases. Maybe you like it, maybe not.
YES! Thank you thank you thank you!

I remember when first learning Lua, how I lamented the lack of a C++-style ternary. But I just scratched it up to "Eh, welcome to overly verbose Pascal-style programming." So very glad to see there's an idiom in Lua. Future Thank you for pointing me to this idiom. I really should spend some time improving my language skill with Lua if I'm gonna spend so much time in it...

--Z
Report comment to moderator  
Reply With Quote
Unread 08/15/17, 12:14 AM  
manavortex
 
manavortex's Avatar
AddOn Author - Click to view AddOns

Forum posts: 73
File comments: 218
Uploads: 34
Hey there,

thank you so much for this AddOn, I'm using it like it's grammar.

However, I'm not running MasterMerchant, so I got some errors. Fixed them like this:

Lua Code:
  1. local mat_gold = WritWorthy.MatRow.ListTotal(mat_list) or 0
in line 1312 and 1301 in WritWorthy_Window.lua

btw, I don't know if you are familiar with the terniary if notation. Basically, you can assign a variable by saying
Lua Code:
  1. myvar = condition and value or otherValue

I use that to conditionally assign stuff to shorten up my if/else cases. Maybe you like it, maybe not.

Anyhow, thanks!
Report comment to moderator  
Reply With Quote
Unread 08/14/17, 02:24 PM  
ziggr
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 55
Uploads: 5
"table index is nil" fixed in 3.1.1, just uploaded.

Another update is coming soon (probably late tonight or early tomorrow), but I wanted to get the above crash silenced NOW while I spend more time digging into style problems.

Thanks for the new style book IDs, @Rhyono! I'll add them soon.

I suspect that the "Is Known" motif check is off by 1 for most styles. Before HotR, motif index values needed a mystery +1 for some API calls. Now that +1 is incorrect. Removed from one call, but there are others (such as IsSmithingStyleKnown() that I've not yet touched, need to test more.)

--Z
Last edited by ziggr : 08/14/17 at 05:25 PM.
Report comment to moderator  
Reply With Quote
Unread 08/14/17, 01:52 PM  
Rhyono
AddOn Author - Click to view AddOns

Forum posts: 281
File comments: 362
Uploads: 15
It needs some style updates is all. If he doesn't have a version ready to upload, he can grab style data from me.
Report comment to moderator  
Reply With Quote
Unread 08/14/17, 01:00 PM  
choekstr
 
choekstr's Avatar

Forum posts: 11
File comments: 291
Uploads: 0
Throws an error with horns of the reach update.
Report comment to moderator  
Reply With Quote
Unread 07/16/17, 04:24 PM  
silvereyes
 
silvereyes's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 110
Uploads: 10
Originally Posted by ziggr
Done. WritWorthy 3.0.7 uploaded with this fix.

To make it easier to call into WritWorthy, I also added a single API function WritWorthy.ToMatCost(itemLink) to convert a writ itemLink into an integer material cost.
Amazing! Thank you.
Report comment to moderator  
Reply With Quote
Unread 07/16/17, 11:47 AM  
ziggr
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 55
Uploads: 5
Originally Posted by silvereyes
However, one problem I've noticed with this is that Writ Worthy's LibAddonMenu settings panel control is also named "WritWorthy". This overwrites the global WritWorthy addon variable, making the API inaccessible to other addons.

@ziggr, would it be possible to rename the LAM panel to something like addon.name.."Options" so that your addon public methods are accessible?
Done. WritWorthy 3.0.7 uploaded with this fix.

To make it easier to call into WritWorthy, I also added a single API function WritWorthy.ToMatCost(itemLink) to convert a writ itemLink into an integer material cost.
Report comment to moderator  
Reply With Quote
Unread 07/16/17, 12:15 AM  
silvereyes
 
silvereyes's Avatar
AddOn Author - Click to view AddOns

Forum posts: 47
File comments: 110
Uploads: 10
Originally Posted by tap3ah
AwesomeGuildStore provides per unit price below total price in guild store UI. When the item in question is master writ then it is per voucher price, but without taking in account the price of the mats. Is it possible to replace it with your's per voucher price? Being able to see it without hovering over every writ in the listing would be great quality of life improvement.
I've talked with @sirinsidiator about this very thing, and I think he may be open to adding a new per voucher crafting + purchase price filter for AGS using values from Writ Worthy.

However, one problem I've noticed with this is that Writ Worthy's LibAddonMenu settings panel control is also named "WritWorthy". This overwrites the global WritWorthy addon variable, making the API inaccessible to other addons.

@ziggr, would it be possible to rename the LAM panel to something like addon.name.."Options" so that your addon public methods are accessible?
Report comment to moderator  
Reply With Quote
Unread 07/14/17, 11:50 AM  
tap3ah

Forum posts: 0
File comments: 25
Uploads: 0
Hi
AwesomeGuildStore provides per unit price below total price in guild store UI. When the item in question is master writ then it is per voucher price, but without taking in account the price of the mats. Is it possible to replace it with your's per voucher price? Being able to see it without hovering over every writ in the listing would be great quality of life improvement.
Report comment to moderator  
Reply With Quote
Unread 07/10/17, 06:40 PM  
ziggr
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 55
Uploads: 5
Originally Posted by Rhyono
IsSmithingStyleKnown(22+1) evaluates to true
I definitely don't know it.
That's it!

Thank you. I know what to do now.

For any paged motif, I'll skip the call to IsSmithingStyleKnown() and rely solely on GetAchievementCriterion(). (I'll still call IsSmithingStyleKnown() for simple styles like Nord, and for whole-book crown exclusives like Stalhrim Frostcaster.)

--Z
Last edited by ziggr : 07/10/17 at 06:47 PM.
Report comment to moderator  
Reply With Quote
Unread 07/10/17, 04:10 PM  
Rhyono
AddOn Author - Click to view AddOns

Forum posts: 281
File comments: 362
Uploads: 15
IsSmithingStyleKnown(22+1) evaluates to true







I definitely don't know it.
Report comment to moderator  
Reply With Quote
Unread 07/09/17, 01:38 PM  
ziggr
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 55
Uploads: 5
Originally Posted by Rhyono
For some reason, woodworking writs that use ancient orc for staves no longer shows as unusable for me. It stopped working as of 3.0.1 (and currently doesn't work).
Drats, I just tried to reproduce the bug, and nope: an Ancient Orc Staves writ on a non-crafter character, correctly says "Motif Ancient Orc not known". If I teach that non-crafter character the Ancient Orc Staves page, then the tooltip warning disappears. Screenshots and debug log in giant image below.

What does your /script say for:
Lua Code:
  1. IsSmithingStyleKnown(22+1)
  2. -> false
  3.  
  4. GetAchievementCriterion(1341, 13)
  5. -> { "Learn the Ancient Orc Style Staves", 0, 1 }

That 0 is what WritWorthy uses to determine if you know the motif page or not.

Can the achievement IDs or page numbers for motif knowledge vary from player to player? That would be an unpleasant surprise.


WritWorthy ships with a debug log permanently enabled. It retains the last 40 writs or other interesting events it has seen. If you feel so inclined:
  1. mouseover an offending Ancient Orc Staves writ (I used "|H0:item:119681:6:1:0:0:0:74:192:4:51:6:22:0:0:0:0:0:0:0:0:55125|h|h")
  2. see the incorrect lack of "motif not known" warning to make sure you've captured the bug
  3. /reloadui to write log to SavedVariables/WritWorthy.lua
  4. search SavedVariables/WritWorthy.lua for the offending event (It will likely be the highest-numbered event in the file)
  5. paste here

Report comment to moderator  
Reply With Quote
Unread 07/08/17, 06:07 PM  
Rhyono
AddOn Author - Click to view AddOns

Forum posts: 281
File comments: 362
Uploads: 15
For some reason, woodworking writs that use ancient orc for staves no longer shows as unusable for me. It stopped working as of 3.0.1 (and currently doesn't work).
Report comment to moderator  
Reply With Quote
Unread 07/01/17, 01:17 PM  
vlakipn

Forum posts: 5
File comments: 12
Uploads: 0
Can you please bridge it (make it work) with MM alternative mod -Arkadius' Trade Tools (ATT)

Thanks.
Report comment to moderator  
Reply With Quote
Unread 06/24/17, 03:08 AM  
ban71

Forum posts: 0
File comments: 2
Uploads: 0
Originally Posted by ziggr
I just uploaded WritWorthy 3.0.5 2017-06-22 which should no longer have these nil errors. I now search for skills by name (ew), and have supplied EN, DE, and FR skill names. I do not have the JP names, so if somebody with a JP client wants to help, I need some screenshots and a SavedVariables/WritWorthy.lua file.

Sorry about all the nil errors!

--Z
It works for me now. German client, so no JP names, sorry.

Big thanks for the very quick adjust!
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: