Most of the items you mentioned can be purchased from local shops and the price will be clearly marked. If you go to a real local shop (as opposed to a gift shop in a hotel) you should get a good price. For example, a six pack of warm Reds Stripe from a shop like Mikey's will be $8 US or less. A cold single Red Stripe should be $2 US or less.

Now, when purchasing from a roaming vendor (or from a craft stand) everything is negotiable. If I feel the price I'm given is good (like $2 for a patty, $5 for a bottle of fresh squeezed juice) I just pay it. If I feel the price is high, I begin bargaining at half the offered price. In the end, I usually land somewhere in between. On my trip last week, we ran into an aggressive fruit vendor who began handing my wife and I all this fruit, saying it was his birthday. We did want some fruit, but not all the stuff he was trying to hand us. I only accepted a banana, a bag of coconut chunks and a bag of pineapples. The vendor said, "Gimme 10 bucks". I pulled out a $500J and said, "here you go. I'll give you $500". He then said, "OK, give me another $500". Just because he was being a jerk and because I felt the fruit was not worth more than $500J we took the fruit and walked away. I said to the vendor, "sorry, I only have $500" as we continued down the beach. There was another local walking along side us, who saw the whole exchange and said, "Good job. Respect."

I don't smoke cigarettes, so I can't help you there. Also, I'm not going to touch the subs question, but I know it has been discussed here before and you can probably do a search and find a couple threads.