What are you worth? networth.ash will tell you.

Liquid meat (eww): 1,702,917
Total: 65,778,356

:( im poor, half my wealth lies in my time gear
 
Last edited:
@mottsy- poor? Check these out!
Liquid meat (eww): 12,928,754
Total: 5,785,854
and
Liquid meat (eww): 4,279,394
Total: 10,810,454
 
This can probably be refactored a bit now that store_amount() and display_amount() automatically return 0 without hitting the server if you lack a DC/store. If necessary, have_store() and have_display() were also added to ASH.
 
@FNN: Ha! What's networth.ash peg you at anyway?

Liquid meat (eww): 196,777
Total: 12,653,263

I wish I would have found out about KoL sooner than May of this year!! The good news is that I've started donating plasma and for the last couple months I've been buying the IotM with my blood money! So, I can honestly say that I've given my blood for this game! :D
 
This script is a cool idea.

I fixed a couple problems and added a few features:

  • Meat items (such as meat stacks) are now valued properly. Also made a special case for casino passes.
  • Calling available_amount() + storage_amount() can duplicate items, since available_amount() considers remaining pulls as far as I know. Fixed that.
  • Compacted the output so that more of your inventory can fit in the CLI buffer.
  • Also compacted the code.
  • And, now outputs how much value you have in specific locations:

Totals
Liquid meat (eww): 2,515,499
Value in store: 462,110
Value in Hagnk's: 0
Value in DC: 23,698,219
Total: 312,649,433
 

Attachments

Last edited:
1 naughty fortune teller = 100,000,000
1 naughty paper shuriken = 100,000,000
4 tiny plastic swords @ 38,000,000 = 152,000,000
186 zombie glands pineal @ 993,300 = 184,753,800
1 Spooky Putty mitre = 500,000,000
1 small Crimbo Pressie = 867,530,999
1 vinyl boots = 987,654,321
1 origami "gentlemen's" magazine = 999,999,998
1 Spooky Putty ball = 999,999,998
1 Spooky Putty snake = 999,999,998
I know we return the 5th price, but for some items that have only a handful in the mall, the 5th price is completely unreasonable

Liquid meat (eww): 38,725,300
Store: 39,065
Hagnk's: 1,016,033,844
DC: 1,552,663,413
Total: -1,504,198,466

Aside from the fact that it overflowed, I can't believe that I have a billion worth of stuff in Hagnk's.
 
Perhaps when there are fewer than 10 (or some other number) of the item total in the mall, mafia could return the lowest price instead of the price of the fifth cheapest item. It might still be too high, but it shouldn't be too low. Or the price for the second cheapest item, which still gives 40m for a putty mitre (instead of 11m like it should) but at least means that mafia can't be used to find one accidentally put in for 100 meat.
 
Maybe for foldable items mafia could look at all the different items and return the price of the cheapest one.
 
I always thought an ideal pricing method would be for mafia to calculate the rate of price increase and return the price of the nth item, where n is larger for more gradual increases, and smaller for more steeply curved increases (minimum 2).

Calculations would be based on something like

1: cheapest price
A: the Ath item has at least 1.5x cheapest price
B: the Bth item has at least 2x cheapest price

Then use the values of A and B to calculate the curve and return a value closer to 1 if the curve is steep, closer to B if the curve is shallow.

OR, when hitting the mall search page, find how many items are on the page, the cheapest and highest prices given, and base it on linear calculations. A steeper line means a lower value (N is closer to 1, min 2), and a shallower line means a higher value (whatever arbitrary maximum you want to use).

Just a thought to possibly inspire someone.

And we could put in handling like this for all known foldables, I suppose.

PHP:
if (contains_text(it.to_string(),"Spooky Putty")) {
   cli_execute("cheapest spooky putty; set temp = it")
   return mall_price(to_item(get_property("temp")));
}
 
Last edited:
OR, when hitting the mall search page, find how many items are on the page, the cheapest and highest prices given, and base it on linear calculations. A steeper line means a lower value (N is closer to 1, min 2), and a shallower line means a higher value (whatever arbitrary maximum you want to use).

You mean something like weighted average of the first few mall offers?
Not counting any 999,999,999 (unless it's the only price there?, in which case ... do we want "how much would it cost you to buy another you from mall" (in which case yes, count as full 999,999,999) or "how much sould you get if you sold yourself in the mall" (in which case no, nobody would buy it that high, count it as ... zero?)

exemple for first 5:
1000 @ 100meat, limit 1
100 @ 100meat, limit 5
1 @ 450meat (no limit from now on)
10 @ 498meat
900 @ 499meat
10000 @ 500meat
...

counts as
(1*100 + 5*100 + 1*450 + 10*498 + 900*499) / (1+5+1+10+900) = 496.324...

Or you could use geometrical mean, which is always less than arithmetic mean (unless all the numbers are the same) - thus counteracting high outliers (somewhat):
(100**1 * 100**5 * 450**1 * 498**10 * 499**900)**(1/(1+5+1+10+900)) = 493.71
[wher A**B is A to the power of B]
 
I wouldn't want to give ANY weight to the lowest price, when considering the higher prices - the point here is that the lowest price is fairly often not representative of what you'd pay for more than one. Of course, that's only relevant if you are considering buying the item, in a quantity greater than one. The cached mall price mechanism was designed with the purchase of your daily consumables in mind, not valuing your display case..

How does this sound, for valuing rarer/more expensive items:
If the 1st item's price is at least 10M, use that - it's almost certainly not a mispricing, and you're unlikely to be buying such items in bulk!
Otherwise, if the 2nd item is at least 1M, use that.
Otherwise, if the 3rd item is 100K, or the 4th item is 10K, use that.
Otherwise, use the 5th item's price as before.

Does anyone see any downside (or potential for abuse) in that?
 
I wouldn't want to give ANY weight to the lowest price, when considering the higher prices - the point here is that the lowest price is fairly often not representative of what you'd pay for more than one.
Actually, if you do straight arithmetic mean for first X items, then it is *exactly* representative of the cost you would pay for each one, if you buy exactly X.

Of course, that's only relevant if you are considering buying the item, in a quantity greater than one. The cached mall price mechanism was designed with the purchase of your daily consumables in mind, not valuing your display case..
Valuing items is hard anyway, even with knowledge of how many were actually sold and for how much (koldfront market).

How does this sound, for valuing rarer/more expensive items:
If the 1st item's price is at least 10M, use that - it's almost certainly not a mispricing, and you're unlikely to be buying such items in bulk!
Otherwise, if the 2nd item is at least 1M, use that.
Otherwise, if the 3rd item is 100K, or the 4th item is 10K, use that.
Otherwise, use the 5th item's price as before.

Does anyone see any downside (or potential for abuse) in that?

I don't really like the hardcoded price limits. They make thing like this possible:
1@100 2@100k 2+@1M -> 100k
but
1@100 2@99k 2+@1M -> 1M
This is a pathological corner case, but if one such case exists, I fear that something like that will happen eventually to someone out there.

(arithmetic mean of first five would peg both at ~440k)

Or how about:
If any of the first five items are at least 10M, use the lowest at-least-10M-price of them.
Otherwise, if any of the first five items are at least 1M, use the lowest at-least-1M-price of them.
Otherwise ... 100k ...
Otherwise ... 10k ...
Otherwise use the 5th item's price as before.
(which puts both of the above at 1M)


but if I really wanted to do value analysis from mall search results, I would go over all the results, remove first few prices and last few prices, say, 4, then look at the remaining amounts and pick the row with highest amount_available*price/number_of_row or something like that.

So
1@100
50@1,000
1000@3,000
500@3,100
1@90,000,000
becomes (removal of 4)
0@100 (removed 1)
47@1,000 (removed the remaining 3)
1000@3,000
497@3,100 (removed 3 - from back)
0@90,000,000 (removed 1 - from back)

for ratings of
0*100/1=0
47*1000/2=23500
1000*3000/3=1000000
497*3100/4=385187
0*90000000/5=0

and pick 3,000 (from row 3, with its highest rating of 1M) as the value.

but if there was 2000+ available at 1000meat (instead of just 47) it would pick that.

(this is loosely based on what I do when setting prices by hand)


For anything significantly better, I would need to know how fast the item in question moves (number of items sold per day) and maximal traded price, so I could remove *all* bogus high prices.
 
It should calculate Mr. Store items at the minimum mall values. When it says my spooky putty snakes are worth 999,999,999 meat each it really throws off the totals. I also had about 5 other Mr. Store items with wildly overvalued estimates. Talisman of Baio were also estimated way too high.
 
There is an option at the beginning of the script called "use_display" that is false by default to speed things up. You should change it to true if you want the items in your display to be calculated.
 
I just ran this script in Bad Moon, and it's still checking everything, over and over. It seems to be scanning every item in the game? It checks my store - which I have, but don't have full access to, being in Bad Moon - and then tells me what item it's "considering," then checks again, and has been doing this for... ten minutes now. Interesting...
 
Back
Top