OCD Inventory control

ereinion

Member
Hmm, if smashbot has a warbear jackhammer drill press installed, could it be made an option to send all equipment you wish to smash to it instead of pulverizing it yourself (maybe unless you have it installed yourself)? It will make your returns slightly larger on account of the extra antimatter wads.
 

heeheehee

Developer
Staff member
Is it equal chance of 2W or 1W+3N?
Yes.


Hmm, if smashbot has a warbear jackhammer drill press installed, could it be made an option to send all equipment you wish to smash to it instead of pulverizing it yourself (maybe unless you have it installed yourself)? It will make your returns slightly larger on account of the extra antimatter wads.
It does have a jackhammer, that sounds like a decent option to have, and that would increase your returns (also, jackhammer can increase yields slightly in addition to antimatter --- antimatter wad replaces a twinkly, but I think jackhammer also increases yields by about 5%.)
 
I'm told that smashbot won't deal with you properly if you're in hardcore so I've been reluctant. Of course I could just refuse to send if !can_interact(). I suppose, maybe?

I may be missing something, but why would you call OCD in hardcore? My sack is quite manageable before I visit Hangk...
 
Yes.



It does have a jackhammer, that sounds like a decent option to have, and that would increase your returns (also, jackhammer can increase yields slightly in addition to antimatter --- antimatter wad replaces a twinkly, but I think jackhammer also increases yields by about 5%.)


So, if I just want smashbot to smash it (because I don't want to drag out my jackhammer) then I should change PULV to GIFT and add smashbot at the end of those lines? (assuming I'm using mad text editing skillz to speed it up manually)

I'm assuming that works fine without sending it to smashbot as an actual donation?
 

Bale

Minion
So, if I just want smashbot to smash it (because I don't want to drag out my jackhammer) then I should change PULV to GIFT and add smashbot at the end of those lines? (assuming I'm using mad text editing skillz to speed it up manually)

Should I change OCD to always prefer smashbot if you don't have a jackhammer in your campground? It would then only use your own pulverization if smashbot is offline.

Is anyone opposed to that change?
 

fronobulax

Developer
Staff member
How about removing "Sell on kBay" because of it's absence?

Not to put words into Bale's mouth but as the author of another script that has selling to kBay as an option, I am holding out on removing support until it is absolutely clear than kBay has not found a new home. It took the display case database several weeks to find its new home at Coldfront when Jicken Wings could no longer host it. So I'm not sure it has been long enough to declare kBay truly dead.
 

elpasi

New member
Thank you, thank you, thank you!

This script keeps me sane when wading through my items. I could not enjoy KoL so much if I didn't have it, since I'd be spending hours counting items.

I have two minor feature requests, neither of which really bother me, but I'd be interested to hear an opinion on if either is good enough to add.

1. For gifting items, a checkbox that won't actually send them if they require wrapping, but will wait, meaning they're saved up for when they aren't in ronin, when the next run will gift them as usual. Sure, the wrapping cost isn't much, but I'd rather they got them all dumped on them when they could actually use them rather than trickling in day after day in wrappers.

2. Although it's right for OCD's relay to not point out quest items as new, unclassified items, 'Blessed Large Box' is a special case, I feel. The box is [use]able to obtain one of each bang potion, and it'd be nice to, from the relay UI, set up "make large box into blessed large box, use blessed large box, keep 0" - only the first part is doable right now. It would be similar to how you can set it to "Use large box, keep 0" currently.

Regardless, my clean inventory can attest to the fact that the tool is perfectly functional for my use cases right now.
 

Bale

Minion
1. That seems like a worthwhile addition. I'll try to remember to add it some time later.

2. Easy to do so I'll add it right now. Done. It has been added to the list of OCDable quest items.


This script keeps me sane when wading through my items. I could not enjoy KoL so much if I didn't have it, since I'd be spending hours counting items.

That is exactly why I created the script. :D
 

fronobulax

Developer
Staff member
Request for Discussion to refine a Feature Request:

ManageStore will pull things from a store that are not selling. As I consider ManageStore v2.0 I really want a way to tell OCD that things are not selling so we don't have a situation where ManageStore pulls things out and OCD puts them right back in. Under a whole bunch of conditions, it seems like the best way to do this is to delete the item from the OCD file so that it will show up as uncategorized. This means ManageStore needs to read an OCD file, check an entry, possibly delete it and then write the file if changes. Since OCD already knows how to do the IO and has a data structure to that allows me to check the entry, it would be nice if OCD exposed what I needed. Presently part is in the relay script and part is wrapped and so not visible, in main OCD script.

If ManageStore made someone else do all the work then I want a single Boolean function that takes an item as input. It returns true if all of the following are true and occurred otherwise false:

User has an OCD categories file set up.
Item is present in that file and setting is to mallsell the item.
Item was deleted from file and modified file was successfully written to disk.

More flexibility comes from exposing:

Boolean read_ocd_file() - Returns true if file is present and was read, otherwise false.
void write_ocd_file() - Writes the ocd file

plus some kind of structure that can be queried for what the OCD action is and allows the action to be modified.

ManageStore only wants to delete an entry but it is easy to imagine the OCD type people who use this script writing something like PriceAdvisor to look at items, decide whether to mall sell, autosell or craft with them and modify the OCD file accordingly according to current prices.

Bale is open to the idea.

Thanks.
 

Bale

Minion
My only problem with exposing them is that in the past I was encouraged to hide them because they were causing variable or function conflicts with other people's scripts which were importing OCD. I'd have to expose OCD as a global variable in addition to those two functions.
 

fronobulax

Developer
Staff member
We can work around that. The traditional solution is to provide getter and setter functions. I didn't mention them because they are more work than just exposing global data.

Define an OCDRecord which is a data structure that has everything in a line from OCDFile.

OCDRecord getOCDRecordForItem(item) gets the record for the item if the OCD file is present and has an entry and something that can be tested for No Record Found.

Boolean setOCDRecordForItem(item, OCDRecord) sets the record for the item and returns true if the record was set and false otherwise.

Under the hood get and set know whether there is an underlying file, or not, and if so, whether it has changed and needs to be written.

My immediate use would be to get(item), check to see if the OCD action was MALL and, if so, set the action to NONE and call set(item). if NONE is not a currently defined/supported OCD action then I would expect OCD to delete the record instead.

If only you and I care about this, so long as it breaks nothing that works now, I think I can help you figure out to hide that which should remain hidden.
 

Bale

Minion
That would require that I rewrite most of my script. It would also make it really hard to do something as simple as iterating over the entire list of items in the OCD file.
 

Rinn

Developer
In the ocd_inventory function, you added this after kbay went down:

Code:
return vprint("You have stuff to kBay. kBay is currently defunct, but may return soon!", "red", 3);

The return is preventing the function from continuing and calling the stock() function.
 
Top