I don't think the thief stealing skill is very interesting/useful at this point. I was thinking it would be more interesting if the skill could be used in shops. This would work by unsetting the unpaid flag, and putting it in the thiefs inventory. The price of the item would determine the difficulty of theft. Theft failure should result in some type of punishment based on the price of the item and maybe the reputation of the thief. I'm included a patch to implement the stealing part of the above. I'm still trying to determine the best way to implement the punishments. These are the things I wan't to be possible on theft failure. Locked out of that store for a period of time, the character would be teleported out of the store(This should always be part of the punishment, but short ~1min for cheap objects stolen be newbies) Teleportation to a punishment area. For instance the shop cellar. The worse the crime the farther the walk out. The shop would need a teleportation list. The list would be ordered by serverity of crime. Celler would be inhabited by shop keepers nasty pets. City jail could also be a dest. A random item might fall out of pockets and become shop inventory. Also it would be nice to be able to track theft attempts. Each theft attempt at a store would make the next theft more difficult. This would be periodically reset. Store maps would probably need to be modified to handle all this. Unmodified maps would just prohibit stealing. Any ideas/ comments would be appreciated. I don't think I implemented the skill checks the best way. I just copied some from attempt_steal. Sorry for the long windedness Adam Well here is a diff file for skills.c agains 1.5.0 of crossfire. CUT BELOW HERE 82a83,106 > * Here is our first attempt at stealing an unpaid object from > * a store. > */ > int attempt_steal_store(object* op, object* who) > { > int cost = query_cost(op, who, F_BUY); > int victim_lvl=cost / 500, thief_lvl = SK_level(who)*10; > int stats_value = get_weighted_skill_stats(who)*3; > int roll=die_roll(2, 100, who, PREFER_LOW)/2; /* weighted 1-100 */ > int chance = stats_value+thief_lvl-victim_lvl; > if( roll < chance) { > new_draw_info(NDI_UNIQUE, 0, who, "You take a 5 finger discount!\n"); > CLEAR_FLAG(op, FLAG_UNPAID); > pick_up(who, op); > return(1); > } else { > new_draw_info(NDI_UNIQUE, 0, who, "The shop keeper is looking this way!!\n"); > return(0); > } > > /*new_draw_info_format(NDI_UNIQUE, 0, who, "Value %d\n", cost); */ > } > > /* 290a315,319 > if(QUERY_FLAG(tmp, FLAG_UNPAID)) { > if (attempt_steal_store(tmp, op)) { > return (calc_skill_exp(op,tmp)); > } > } _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel