Pickpocketing Items level 20 Limit
Hello,
I'm not sure exactly sure if this is a bug, or if this is the right place to post this, but I thought I would mention it since it seemed kind of strange.
I was trying to figure out how pickpocketing worked on P99. I noted that no matter how many times I pickpocked a gnoll in blackburrow, I would not seem to be able to get items like water. I decided to look at the eqemu source code, since while P99 has undoubtably made changes, I figured I could see what eqemu does and try testing to see what parts might still work that way in P99.
Here's the part I noticed that seems strange, from npc.cpp:
int steal_skill = thief->GetSkill(EQEmu::skills::SkillPickPockets);
int steal_chance = steal_skill * 100 / (5 * over_level + 5);
// Determine whether to steal money or an item.
uint32 money[6] = { 0, ((steal_skill >= 125) ? (GetPlatinum()) : (0)), ((steal_skill >= 60) ? (GetGold()) : (0)), GetSilver(), GetCopper(), 0 };
bool has_coin = ((money[PickPocketPlatinum] | money[PickPocketGold] | money[PickPocketSilver] | money[PickPocketCopper]) != 0);
bool steal_item = (steal_skill >= steal_chance && (zone->random.Roll(50) || !has_coin));
Specifically, the flag on if you steal an item seems to require your steal_skill to be higher than the steal_chance. But steal_chance isn't capped at 100 and is a direct function of steal_skill and the target's level; this will always be true for any NPC level 19 or over, and never true for any NPC under that level, and completely independent of the pickpocket skill level.
I only play on P99, so I don't really have a good setup for trying to verify this, and for all I know maybe this is desired behavior. It seems awfully suspicious, however; does anyone know if this is intended?
|