I can't seem to barter - FO1

ENCLAVECOMMANDER

Why isn't your video feed working?
So I want to trade a crowbar, geiger counter and super sledge for some Rad-X and RadAway at the drug store in Old Town in The Hub, but it keeps saying that my offer isn't good enough even if I give him everything I have for one Stimpak. This apples to others; I tried bartering at Junktown and the problem still persisted. Am I not doing something right? Is this a bug? If it is, I think that's the 10th game so far i've uninstalled due to glitches, bugs, or bad game design.
 
Did you use your geiger counter ? This happens mostly when you used a geiger counter or a motion sensor wich you have used. The item is therefor partially depleted of energy and can not be sold.
 
If you try to sell a geiger counter that has been used, any deal you try to make will be refused. Only unused ones can be sold. So remove it from the stuff you're trying to sell and it will work.
 
Hmm... even I didn't know this.

Well, you learn something new (about Fallout) everyday.
 
I think I've figured out where the problem is, though I don't entirely understand the code. The function barter_attempt_transaction() is where the game determines if you can make a trade or not. The first check is if the player can carry the stuff you're bartering for. If you're trading with a party member, it checks their carry weight, otherwise it compares by cost. It doesn't seem to take into account the weight of the items that you're giving to the other person.

Anyway, there's a call to item_queued(), which probably checks if an item is in the event queue - i.e., lit flares, armed explosives, active stealth boys and geiger counters. If it is, the trade is refused. There appears to be a special case for item 52 (inactive geiger counter), where it calls item_m_turn_off(). It should use 207 (the active geiger counter) instead, and for some reason it never triggers. When I force it to trigger for an active counter, it is turned off and sold without a problem.

My guess is that turning geiger counters off doesn't remove them from the event queue for some reason, even though item_m_turn_off() makes a call to queue_remove_this(). Unused geiger counters have never been added to the event queue, which is why they can be sold. Motion sensors don't actually turn on, so they're not affected by the bug. Hopefully that's enough for Timeslip or someone to fix it.

<s>While I haven't tested this yet, if I'm reading item_m_turn_off() correctly, turning off a stealth boy will transform it into a motion sensor.</s>
 
Kanhef said:
While I haven't tested this yet, if I'm reading item_m_turn_off() correctly, turning off a stealth boy will transform it into a motion sensor.

That's been known to happen if you save the game with a Stealth Boy on.
 
Per said:
Kanhef said:
While I haven't tested this yet, if I'm reading item_m_turn_off() correctly, turning off a stealth boy will transform it into a motion sensor.

That's been known to happen if you save the game with a Stealth Boy on.
Wait, do you mean the whole item change or just for the sake of item_queued, cause I've never seen the item actually change and were not able to reproduce. Anyway Kanhef, is the reason you can't sell a used stealth boy, that the game believes it's a turned off geiger counter, which don't get removed from event cue?

It's nice to finally see a bit more of what's going on, so keep digging. :)
 
Nevermind, I was reading it wrong, did a bad hex-to-decimal conversion.

Darek - it's not that complicated. Both geiger counters and stealth boys aren't removed from the queue properly, which is why they can't be sold once they've been activated.

Alright, here's the problem: item_queued() goes through a collection of items to see if any of them have the 0x2000 flag bit on. queue_add() sets this bit, but queue_remove_this() doesn't turn it off again. It should only take a couple of instructions to fix that. Several other functions need patching as well: queue_[remove(), process(), clear(), and clear_type()].
 
Back
Top