Bug - Fixed Extra Pocket wish usage/consumption wrongly presumed by mafia

fredg1

Member
Potentially useful contextual information:
Using Ezandora's guide (not really important, but helped notice that the bug happened), her genie.ash script, and her genie.js relay override script.
I'm never using direct genie wishes; I have breakfast turn them into pocket wishes automatically (for when/in case i don't use them all), and I'm always wishing for stuff through her genie.js relay override.



I've been noticing, for a little while, that the Guide was telling me that I had less available wishes than I actually had (e.g. I start a day with 5, and later on it says I only have 1 left, even though I can clearly see I have 3 in my inventory).
I try to see what caused this, and there I see it: Session Results displays that there has been 4 (if sticking to this example) pocket wishes used today!
This seems to happen consistently.

"This" is the bug: mafia using a 2nd pocket wish. However, this isn't a case of mafia simply using 2 pocket wishes WHEN a wish is used; after using one, checking the Session Results will indeed display a "pocket wish (no-sell) (-1)" (or "2", if it previously still had the "3" from making the pocket wishes on breakfast), which means that the cause seems to be something happening AFTER that (had to be complicate, hadn't it?).



Here's the most recent instance of this, in which I've been able to isolate 3 different things as possible cause of this bug (1 being very unlikely):


Have 5 pocket wishes, no line about it in Session Results...

-I click on the genie bottle icon in the Guide, which is a link to http://127.0.0.1:60080/inv_use.php?pwd=[expunged]&whichitem=9537, directing to Rubbed it the Right Way, in which genie.js then takes over.
-I click on "Fireproof Lips", and get that as a wished effect. Checking Session Results: "pocket wish (no-sell) (-1)", seems good...
-I hit Main Map, check Session Results, seems good...
-I get the pill keeper Rainbowolin effect out of a Custom Combo Daily Deed I made, check Session Results, seems good...
-I resize the Guide horizontally a little, then hit Equipment (Inventory), check Session Results; BAM, "pocket wish (no-sell) (-2)"



So, the possible culprits, so far:
1- Resizing the Guide (let's just pretend I never said that...)
2- Time elapsed; something leading to this is/was being processed in the background, and it just so happened to match when I checked the 4th time
3- Opening Equipment (Inventory) in the relay browser (could simply be about going to a page in general?)



I'd say 3 is the most likely...




By the way, worth noting that something similar(?) happens with the Bastille, in which "Bastille Battalion control rig (no-sell) (-1)" will often be displayed in Session Results after using it, and it may be tied to the problem seen here.

Also, both for the Bastille and the pocket wishes, adding that this never happens if you leave Rubbed it the Right Way/Bastille Battalion (without wishing/playing, that is).
 

fredg1

Member
Was wrong about the Bastille, in the last line. Right after writing this, just to check, I used my Control Rig, then walked away, opened my inventory, and saw "Bastille Battalion Control Rig (no-sell) (-1)" in Session Results.
 

fredg1

Member
This actually ended up being really helpful and informative!!
Thanks to this, I've been able to freely test what triggers this (the Bastille at least, but I'm getting pretty sure it's the same thing as the pocket wishes) (also, mafia should really get that something is wrong when the line "Bastille Battalion Control Rig (no-sell) (-7)" is being displayed...).

Turns out that when I said "3- Opening Equipment (Inventory) in the relay browser (could simply be about going to a page in general?)", the "(could simply be about going to a page in general?)" part was WRONG.

The number of "discarded" Control Rigs ONLY incremented on the first visit of http://127.0.0.1:60080/inventory.php?which=2 since the last use of the Control Rig. Works even if you open http://127.0.0.1:60080/inventory.php?which=2 from another tab.
 

Veracity

Developer
Staff member
The Bastille Battalion control rig is marked "usable" but should be "reusable".

The pocket wish is marked "usable", but SHOULD be OK, since it redirects to a choice, and the choice SHOULD only remove it when it is really consumed. Apparently that is not working correctly.
 

Veracity

Developer
Staff member
gCLI:
Code:
[color=green]> inv pocket wish[/color]

pocket wish (133)
In chat:

/use 1 pocket wish

gCLI:
Code:
[color=green]Using 1 pocket wish[/color]

[color=green]> inv pocket wish[/color]
pocket wish (133)
In relay browser, in Rubbed it the Right Way with Ezandora's relay.

Clicked on "a Pony"

gCli:
Code:
You acquire an item: magical pony: Uniquity

[color=green]> inv pocket wish[/color]
pocket wish (132)
Went to "inventory" via top menu.
It's in consumables, with all sections collapsed.

gCli:
Code:
[color=green]> inv pocket wish[/color]
pocket wish (132)

Went to miscellaneous tab. All sections collapsed.

gCli:
Code:
[color=green]> inv pocket wish[/color]
pocket wish (132)

Opened Miscellaneous Items section.
Yup. I have 132 pocket wishes.

gCli:
Code:
[color=green]> inv pocket wish[/color]
pocket wish (132)
You talk about the session logs having "pocket wish (no-sell) (-2)".

My Session Results does not count below zero.
(In Preferences/General/Item Acquisition, I do NOT have "allow item counts in session results to go negative.)
Not interested in that, but I'll put all my wishes into the session results.

gCli:
Code:
[color=green]> closet put 132 pocket wish[/color]

Placing items into closet...
Requests complete.

[color=green]> closet take 132 pocket wish[/color]

Removing items from closet...
You acquire pocket wish (132)
Requests complete.
Now I have "pocket wish (no-sell) (132)" in Session Results.

Since I am still in Inventory Miscellaneous Items, click "[use]" on a pocket wish.

gCli:
Code:
[color=green]> inv pocket wish[/color]
pocket wish (132)

Session Results:

pocket wish (no-sell) (132)

In Rubbing it the Right Way with Ezandora's relay script.
Wish for another pony.

gcli:
Code:
You acquire an item: magical pony: Rosey Cake

[color=green]> inv pocket wish[/color]

pocket wish (131)

Session Results:

pocket wish (no-sell) (131)

Click on "Back to Ineventory"

I am back in inventory in Miscellaneous.
I see pocket wish (131)

Session Results:

pocket wish (no-sell) (131)

I go to the Equipment tab.

Session Results:

pocket wish (no-sell) (130)

So, super weird. Something about the Equipment tab, somehow.
Fortunately, I have a DEBUG log.
 

fredg1

Member
What about using 2 pocket wishes? Does the number in Session Results decrement by 2 upon opening the equipment tab?
 

Veracity

Developer
Staff member
In DEBUG log:

Code:
Processing results...
Hat: leather aviator's cap
Weapon: The Nuge's favorite crossbow
Offhand: green LavaCo Lamp™
Back: vampyric cloake
Shirt: Sneaky Pete's leather jacket
Pants: Pantaloons of Hatred
Accessory 1: fudgecycle
Accessory 2: Uncle Hobo's epic beard
Accessory 3: Counterclockwise Watch
Familiar: li'l unicorn costume
Processing result: pocket wish (-1)
It is remembering that the last item used was a pocket wish. Which makes sense, since it saved that when we "use" the item and only clears it when handling the response in UseItemRequest - which will not happen if we redirect to a choice.

Since the only place we SHOULD remove it is in ChoiceManager after wishing for something that will consume it, I can probably just mark it reusable and UseItemRequest will do nothing with it.

But this issue presumably applies to other items which you use, redirect to a Choice, and item removal handles in choice processing. The Orcish Frat House blueprints, for example.

Here are items we do not give "inline" use links to when you acquire them, since they redirect to choices:

Code:
			case ItemPool.FRATHOUSE_BLUEPRINTS:
			case ItemPool.RONALD_SHELTER_MAP:
			case ItemPool.GRIMACE_SHELTER_MAP:
			case ItemPool.STAFF_GUIDE:
			case ItemPool.FUDGE_WAND:
			case ItemPool.REFLECTION_OF_MAP:
			case ItemPool.CSA_FIRE_STARTING_KIT:
			case ItemPool.CEO_OFFICE_CARD:
			case ItemPool.DREADSCROLL:
			case ItemPool.RUSTY_HEDGE_TRIMMERS:
			case ItemPool.WALKIE_TALKIE:
			case ItemPool.SUSPICIOUS_ADDRESS:
			case ItemPool.CHEF_BOY_BUSINESS_CARD:
			case ItemPool.GRIMSTONE_MASK:
			case ItemPool.THUNDER_THIGH:
			case ItemPool.AQUA_BRAIN:
			case ItemPool.LIGHTNING_MILK:
			case ItemPool.SNEAKY_WRAPPING_PAPER:
			case ItemPool.BARREL_MAP:
			case ItemPool.VYKEA_INSTRUCTIONS:
			case ItemPool.TONIC_DJINN:
			case ItemPool.COW_PUNCHING_TALES:
			case ItemPool.BEAN_SLINGING_TALES:
			case ItemPool.SNAKE_OILING_TALES:
			case ItemPool.MAYO_MINDER:
			case ItemPool.NO_SPOON:
			case ItemPool.TIME_SPINNER:
			case ItemPool.WAX_GLOB:
			case ItemPool.GUMMY_MEMORY:
			case ItemPool.METAL_METEOROID:
			case ItemPool.CORKED_GENIE_BOTTLE:
			case ItemPool.GENIE_BOTTLE:
			case ItemPool.POCKET_WISH:
			case ItemPool.WAREHOUSE_KEY:
			case ItemPool.BOOMBOX:
			case ItemPool.BURNING_NEWSPAPER:
			case ItemPool.TALES_OF_SPELUNKING:
			case ItemPool.PORTABLE_PANTOGRAM:
			case ItemPool.VOTER_BALLOT:
			case ItemPool.GOVERNMENT_REQUISITION_FORM:
			case ItemPool.CAMPFIRE_SMOKE:
Perhaps when we "visit" a choice, I should simply clear the "last item used"?
 

Veracity

Developer
Staff member
Revision 19590 does that.

If we "visit" a choice, clear out lastItemUsed. For item usage that is handled in a choice, ChoiceManager will handle inventory.
I also made the Bastille Battalion control rig reusable, since it is, even though the above change should make that irrelevant.

I tested by using a pocket wish, getting another pony, and going to the Equipment tab of Inventory, with a different tab previously open.
Inventory was fine.
 
Top