Difference between revisions of "Forum:Price-ID at unwilling shops: manipulating object ID"

From NetHackWiki
Jump to navigation Jump to search
(how do I get several independent sell price quotes?)
 
(thank you)
 
(2 intermediate revisions by 2 users not shown)
Line 5: Line 5:
 
I have two non-[[stack]]ing [[potion]]s that could be [[potion of levitation|levitation]] ($200), [[potion of monster detection|monster detection]], or [[potion of gain energy|gain energy]] (both $150). This game does not have a [[shop]] that will buy potions. I need levitation to [[Alchemy#Multiple_step_recipes|mass alchemize]] [[Potion of gain level|gain level]] and for the [[endgame]], so I can't afford to use up the potions. [[Conduct]]s make it impossible to produce more such potions (except a slim chance from random alchemy).
 
I have two non-[[stack]]ing [[potion]]s that could be [[potion of levitation|levitation]] ($200), [[potion of monster detection|monster detection]], or [[potion of gain energy|gain energy]] (both $150). This game does not have a [[shop]] that will buy potions. I need levitation to [[Alchemy#Multiple_step_recipes|mass alchemize]] [[Potion of gain level|gain level]] and for the [[endgame]], so I can't afford to use up the potions. [[Conduct]]s make it impossible to produce more such potions (except a slim chance from random alchemy).
  
In this situation, I'd like get a few more independent price quotes. That means manipulating object ID some way, because sell quotes are tied to that [[Source:Shk.c#line1898]]. Best would be two sequential object IDs, since that guarantees at least one quote without the random surcharge.
+
In this situation, I'd like get a few more independent price quotes. That means manipulating object ID some way, because sell quotes are tied to that [[Source:Shk.c#line1898]]. Best would be two sequential object IDs, since at least one will be without the random surcharge.
  
I have a decent supply of holy and unholy water to make them stack. How does the game allocate object identity numbers when unstacking?
+
I have a decent supply of [[holy water|holy]] and [[unholy water]] to make them [[stack]]. How does the game allocate object identity numbers when unstacking?
 +
 
 +
--[[User:Tjr|Tjr]] 18:29, 21 January 2011 (UTC)
 +
:I am certainly not an expert at object IDs, but it looks like the only assignment to o_id occurs in mkobj.c, three times at lines 237 (splitobj), 339 (bill_dummy_object), and 375 (mksobj). The manner is the same in all three cases;
 +
obj->o_id = flags.ident++;
 +
if (!obj->o_id) obj->o_id = flags.ident++; /* ident overflowed */
 +
:So the IDs should always be allocated sequentially and will never be 0.
 +
:Your post isn't entirely clear; do you have multiple copies of these potions? If not I don't know how you expect to be able to change the ID, and either way I don't see why you need the holy water. Simply dropping a single potion from a stack should create a new objid for that new item. I think that doing this twice will always create two adjascent object IDs (barring sudden monster generation...), which should give you an accurate price when buying them back. -- [[User:Qazmlpok|Qazmlpok]] 19:56, 21 January 2011 (UTC)
 +
 
 +
Thanks, that worked like a charm: I dropped a single potion from the stack until I got two different prices. (The holy and unholy water was necessary to make both potions stack.)
 +
 
 +
This is also a trick to keep in mind when buying candles at Izchak's, since at that stage gold still matters and candles are expensive. --[[User:Tjr|Tjr]] 06:26, 24 January 2011 (UTC)

Latest revision as of 06:26, 24 January 2011


How do I manipulate the object ID to get several independent sell price quotes?

I have two non-stacking potions that could be levitation ($200), monster detection, or gain energy (both $150). This game does not have a shop that will buy potions. I need levitation to mass alchemize gain level and for the endgame, so I can't afford to use up the potions. Conducts make it impossible to produce more such potions (except a slim chance from random alchemy).

In this situation, I'd like get a few more independent price quotes. That means manipulating object ID some way, because sell quotes are tied to that Source:Shk.c#line1898. Best would be two sequential object IDs, since at least one will be without the random surcharge.

I have a decent supply of holy and unholy water to make them stack. How does the game allocate object identity numbers when unstacking?

--Tjr 18:29, 21 January 2011 (UTC)

I am certainly not an expert at object IDs, but it looks like the only assignment to o_id occurs in mkobj.c, three times at lines 237 (splitobj), 339 (bill_dummy_object), and 375 (mksobj). The manner is the same in all three cases;
obj->o_id = flags.ident++;
if (!obj->o_id) obj->o_id = flags.ident++;	/* ident overflowed */
So the IDs should always be allocated sequentially and will never be 0.
Your post isn't entirely clear; do you have multiple copies of these potions? If not I don't know how you expect to be able to change the ID, and either way I don't see why you need the holy water. Simply dropping a single potion from a stack should create a new objid for that new item. I think that doing this twice will always create two adjascent object IDs (barring sudden monster generation...), which should give you an accurate price when buying them back. -- Qazmlpok 19:56, 21 January 2011 (UTC)

Thanks, that worked like a charm: I dropped a single potion from the stack until I got two different prices. (The holy and unholy water was necessary to make both potions stack.)

This is also a trick to keep in mind when buying candles at Izchak's, since at that stage gold still matters and candles are expensive. --Tjr 06:26, 24 January 2011 (UTC)