General Info

A failed attempt at stealing results in the storekeeper locking his/her doors against you for a looooong time.

Stealing from monsters gains you XP.

Strategy Recommendations

Your chances of successfully stealing an item will be increased if:

Code-Related Information

The code that checks if you manage to steal something from a store (from store_stole() in store.c):

if (rand_int((40 - p_ptr->stat_ind[A_DEX]) +
                ((j_ptr->weight * amt) / (5 + get_skill_scale(SKILL_STEALING, 15))) -
                (get_skill_scale(SKILL_STEALING, 15))) <= 10)

This means that with no stealing skill whatsoever what you can safely steal from a store depends on your dex thus:

dex

weight

examples

34

0.5 lbs

rings, potions, amulets, scrolls, some cloaks

35

1.0 lbs

wands

36

1.5 lbs

rods, rod tips, daggers

37

2.0 lbs

soft leather boots

38

2.5 lbs

39

3.0 lbs

magic books, cloaks of mimicry, main gauches, whips

40

3.5 lbs

If we add a maxed out stealing skill the maximum weight is 44 lbs. An adamantite plate mail weighs 42 lbs, for comparison, and a mace of disruption 40. Grond is heavier though (100 lbs).

For stealing from monsters the code is slightly more complex, and includes the monster level and whether or not the monster is sleeping:

chance = 40 - p_ptr->stat_ind[A_DEX]; 
chance += o_list[item].weight / (get_skill_scale(SKILL_STEALING, 19) + 1);
chance += get_skill_scale(SKILL_STEALING, 29) + 1;
chance -= (m_ptr->csleep) ? 10 : 0;
chance += m_ptr->level;

/* Failure check */
if (rand_int(chance) > 1 + get_skill_scale(SKILL_STEALING, 25))

Chatter

PermanentInk: I was wondering if someone who knows a bit about this could write some basic spoily stuff about stealing. Just the basic mechanics of it -- how often does it work, what happens when you fail, etc.

VagaBond: When the items are in a stack, the whole stack weight is counted against your stealing attempt. (It seems trivial, but it doesn't worth to make a shop closed just to be sure about it)

PermanentInk: I just noticed that stealing from monsters gives you XP. Anyone know whether you get more XP for stealing from tougher monsters, or for stealing better items? Do you get XP for stealing from shops? Also, does anyone know the exact length of time that shops stay closed for once they catch you stealing?

VagaBond: Backwards:

When you fail while stealing from a monster, the monster gets awake and angry (+5 to speed).

ScrawnyCat: Do exploration/tactics settings actually make a difference?

GreyCat: The table above doesn't appear to match the code. Unless I'm misreading it, a DEX index of 31 (a.k.a. 18/13x) gives you 9 for the first term (40-31). Then you add the item's weight divided by 5, which is 0 (integer math truncates) for items under 0.5 pounds... meaning a DEX of 18/130 should be able to steal rings and such with no chance of failure.

In fact, since rand_int(x) returns a number from 0 to x-1, we're even better off than that. We need rand_int()'s argument to be 11 or less in order to get a return value of 10 or less. An object which weighs less than 0.5 pounds adds nothing in the second term, so we just need a DEX index of 29 or higher to steal rings and potions with impunity.

Or am I misreading it?

FeralCat: Looking at the code in store.c (as shown above), there is nothing there or in the rest of the function that has anything to do with tactics/movement. So, ScrawnyCat, I don't think that it does have anything to do with that...

Spoilers/Skills/Stealing (last edited 2007-10-02 03:20:06 by c-67-160-122-107)