rpherbig / dr-scripts

A series of Lich 5 (https://github.com/elanthia-online/lich-5) scripts for use with DragonRealms (http://www.play.net/dr/). Donations are welcome (http://www.paypal.me/rcuhljr)!
GNU General Public License v2.0
53 stars 178 forks source link

double repair for knitting needles causing workorders to fail #3186

Closed drgabellia closed 5 years ago

drgabellia commented 6 years ago

This has just started. Here is my tool setup and log below with double repair:

outfitting_belt: name: outfitter's belt items:

outfitting_tools:

Here is log:

[workorders]>untie my knitting needles from my outfitter's belt

You remove some polished steel knitting needles from your outfitter's belt.

[workorders]>give clerk

A clerk looks over the needles and says, "That will cost 6 Kronars to repair. Just give it to me again if you want, and I'll have it ready in 1 roisaen."

[workorders]>give clerk

You hand the clerk 6 Kronars and he gives you back a repair ticket. clerk says, "I should be having that done for you in about 1 roisaen. Don't lose this ticket! You must have it to reclaim your needles."

[workorders]>stow ticket

You put your ticket in your leather pack.

[workorders]>untie my yardstick from my outfitter's belt

You remove a yardstick inlaid with driftwood and bits of shell from your outfitter's belt.

[workorders]>give clerk

A clerk says, "There isn't a scratch on that, so there's nothing to repair."

[workorders]>tie my yardstick to my outfitter's belt

You attach a yardstick inlaid with driftwood and bits of shell to your outfitter's belt.

[workorders]>untie my scissors from my outfitter's belt

You remove some scissors with glaes cutting edges and decorative finger rings from your outfitter's belt.

[workorders]>give clerk

A clerk says, "There isn't a scratch on that, so there's nothing to repair."

[workorders]>tie my scissors to my outfitter's belt

You attach some scissors with glaes cutting edges and decorative finger rings to your outfitter's belt.

[workorders]>untie my sewing needles from my outfitter's belt

You remove some ribbed steel sewing needles from your outfitter's belt. Binu attaches some polished steel knitting needles to his seamstress' belt.

[workorders]>give clerk

A clerk says, "There isn't a scratch on that, so there's nothing to repair."

[workorders]>tie my sewing needles to my outfitter's belt

You attach some ribbed steel sewing needles to your outfitter's belt.

[workorders]>get my slickstone

You get a polished alabaster slickstone from inside your haversack.

[workorders]>give clerk

A clerk says, "There isn't a scratch on that, so there's nothing to repair."

[workorders]>put my slickstone in my haversack

You put your slickstone in your haversack.

[workorders]>untie my pointed awl from my outfitter's belt

You remove a steel pointed awl from your outfitter's belt. Binu goes west.

[workorders]>give clerk

A clerk says, "There isn't a scratch on that, so there's nothing to repair."

[workorders]>tie my pointed awl to my outfitter's belt

You attach a steel pointed awl to your outfitter's belt.

[workorders]>get my stamp

You get a basic steel stamp from inside your haversack.

[workorders]>give clerk

A clerk looks over the stamp and says, "That will cost 16 Kronars to repair. Just give it to me again if you want, and I'll have it ready in 2 roisaen."

[workorders]>give clerk

You hand the clerk 16 Kronars and he gives you back a repair ticket. clerk says, "I should be having that done for you in about 2 roisaen. Don't lose this ticket! You must have it to reclaim your stamp."

[workorders]>stow ticket

You put your ticket in your leather pack.

[workorders]>untie my knitting needle from my outfitter's belt

Untie what?

[workorders]>get my knitting needle

What were you referring to?

[workorders: You seem to be missing: knitting needle]

[hunting-buddy: STATUS EXECUTE go2 2391]

This ends up with two clerk repair tickets in pack. So next time when workorders is called:

[sew]>untie my knitting needle from my outfitter's belt

Untie what?

[sew]>get my knitting needle

What were you referring to?

[sew: You seem to be missing: knitting needle]

--- Lich: sew has exited.

Tarhish commented 6 years ago

This looks like it was caused by the difference between 'knitting needles' in outfitting_tools: vs 'knitting needle' in base knitting_tools:. When workorders tries to merge them and take the unique values they both showed up as unique. I bet this could have run successfully without flipping out on occasion.

rpherbig commented 6 years ago

It looks like there is an opportunity to clean up the repair logic though, so a missing item doesn't get you into a weird state.

rpherbig commented 6 years ago

Oh, or I misread that. @drgabellia does it get into a bad state or does it actually repair the needles (and just error looking for the other name)?

Tarhish commented 6 years ago

From talking to her it definitely got into a bad state, but I'm only kind of sure why. It failed to find the tool so it exited out rather than continue and proceeded to hunting-buddy with tickets still in the bag. I think this behavior is from common-crafting's get_crafting_item. So if that's the problem then I'm not really sure what the best way to fix it is...

drgabellia commented 6 years ago

Yes, That is what would happen. It failed to find the tool (as it was already being repaired) and exited. Then...the next time I would try to craft, since it still couldn't find the tool, no crafting was done. I added the line knitting_tools: and left it blank. That seems to have resolved the issue. I have now completed 3 rounds of workorders with no problems. As to WHY the problem started in the first place....I'm now making some items I wasn't making before - I'm now knitting instead of just sewing. That seems to be the trigger that started it all.

Sarvatt commented 6 years ago

how would you all feel about not defining default knitting_tools in base at all and just defining them as the default in outfitting_tools instead?

Sarvatt commented 6 years ago

aka deprecating knitting_tools entirely

Sarvatt commented 6 years ago

just a wild idea, the awkwardness between knitting_tools: and outfitting_tools: I added later when I expanded sew.lic has always irked me. I think the simple solution is to get rid of knitting_tools and make it always use whatever is listed in outfitting_tools and make that default to knitting needles only.

Sarvatt commented 6 years ago

at one point cloth crafters only repaired knitting needles which was why outfitting_tools was added, i realized like 6 months later that i was using completely trashed tools for cloth crafting because they weren't getting repaired

Tarhish commented 6 years ago

Yeah I assumed that was how it happened. We only have the benefit of knowing how these things are going to expand in hindsight. As far as I can tell, knitting_tools is basically already deprecated.

I have a knitting_tools setting and no outfitting_tools set, but if workorders just merges the two of them together anyway then I shouldn't need to change anything. (I will be swapping over anyway)

I think the only subset of people who would experience an error here would be people who... for whatever reason... have an outfitting_tools defined with no knitting needles in it and no knitting_tools defined. I'm kind of doubtful that subset exists, so I dunno, this should be fine?

Sarvatt commented 6 years ago

knitting workorders stop at like 400 ranks which is why i added the cloth crafting stuff and needed to expand beyond knitting, I imagine most people that have outfitting_tools defined have it for that reason

Tarhish commented 6 years ago

Hah, I just tested it and since I don't have an outfitting_tools and I called mine 'knitting needles' I got doubled up like Gabellia. I should've fixed that after helping her.

The validate check would have let me know what was wrong, though.

Sarvatt commented 6 years ago

Thanks for pointing out the issue Gabs :)