diff -Naur Orig-dir\include\skills.h Patch-dir\include\skills.h --- Orig-dir\include\skills.h Sun Feb 23 15:43:22 2003 +++ Patch-dir\include\skills.h Wed Mar 12 07:00:57 2003 @@ -66,6 +66,7 @@ /* Other types of combat */ #define P_BARE_HANDED_COMBAT 37 #define P_MARTIAL_ARTS P_BARE_HANDED_COMBAT /* Role distinguishes */ +#define P_THIEVERY P_BARE_HANDED_COMBAT #define P_TWO_WEAPON_COMBAT 38 /* Finally implemented */ #ifdef STEED #define P_RIDING 39 /* How well you control your steed */ @@ -93,8 +94,8 @@ #define P_BASIC 2 #define P_SKILLED 3 #define P_EXPERT 4 -#define P_MASTER 5 /* Unarmed combat/martial arts only */ -#define P_GRAND_MASTER 6 /* Unarmed combat/martial arts only */ +#define P_MASTER 5 /* Unarmed combat/martial arts/thievery only */ +#define P_GRAND_MASTER 6 /* Unarmed combat/martial arts/thievery only */ #define practice_needed_to_advance(level) ((level)*(level)*20) diff -Naur Orig-dir\src\u_init.c Patch-dir\src\u_init.c --- Orig-dir\src\u_init.c Sun Feb 23 15:43:32 2003 +++ Patch-dir\src\u_init.c Wed Mar 12 07:00:57 2003 @@ -383,7 +383,7 @@ { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, - { P_BARE_HANDED_COMBAT, P_EXPERT }, + { P_THIEVERY, P_MASTER }, { P_NONE, 0 } }; diff -Naur Orig-dir\src\uhitm.c Patch-dir\src\uhitm.c --- Orig-dir\src\uhitm.c Sun Feb 23 15:43:32 2003 +++ Patch-dir\src\uhitm.c Wed Mar 12 07:47:17 2003 @@ -371,7 +371,8 @@ aobjnam(uwep, (char *)0)); else if (!cantwield(youmonst.data)) You("begin %sing monsters with your %s %s.", - Role_if(PM_MONK) ? "strik" : "bash", + Role_if(PM_MONK) ? "strik" : + Role_if(PM_ROGUE)? "robb" : "bash", uarmg ? "gloved" : "bare", /* Del Lamb */ makeplural(body_part(HAND))); } @@ -521,6 +522,7 @@ boolean get_dmg_bonus = TRUE; boolean ispoisoned = FALSE, needpoismsg = FALSE, poiskilled = FALSE; boolean silvermsg = FALSE; + boolean thievery = FALSE; boolean valid_weapon_attack = FALSE; boolean unarmed = !uwep && !uarm && !uarms; #ifdef STEED @@ -541,6 +543,7 @@ else tmp = rnd(2); valid_weapon_attack = (tmp > 1); + thievery = Role_if(PM_ROGUE) && !flags.forcefight && !Upolyd; /* blessed gloves give bonuses when fighting 'bare-handed' */ if (uarmg && uarmg->blessed && (is_undead(mdat) || is_demon(mdat))) tmp += rnd(4); @@ -949,7 +952,7 @@ #endif /* VERY small chance of stunning opponent if unarmed. */ - if (unarmed && tmp > 1 && !thrown && !obj && !Upolyd) { + if (unarmed && tmp > 1 && !thrown && !obj && !Upolyd && !thievery) { if (rnd(100) < P_SKILL(P_BARE_HANDED_COMBAT) && !bigmonst(mdat) && !thick_skinned(mdat)) { if (canspotmon(mon)) @@ -964,7 +967,12 @@ } } - if (!already_killed) mon->mhp -= tmp; + if (thievery){ + You("try to steal from %s.", mon_nam(mon)); + steal_it(mon, &youmonst.data->mattk[0]); + hittxt = TRUE; + } else if (!already_killed) mon->mhp -= tmp; + /* adjustments might have made tmp become less than what a level draining artifact has already done to max HP */ if (mon->mhp > mon->mhpmax) mon->mhp = mon->mhpmax; @@ -1200,8 +1208,13 @@ mon_nam(mdef), mhe(mdef), mhis(mdef)); } + /* Rogue uses thievery Skill */ + if(!Upolyd && (rn2(5) > P_SKILL(P_THIEVERY))) { + You("fail badly."); + return; + } + while ((otmp = mdef->minvent) != 0) { - if (!Upolyd) break; /* no longer have ability to steal */ /* take the object away from the monster */ obj_extract_self(otmp); if ((unwornmask = otmp->owornmask) != 0L) { @@ -1239,6 +1252,7 @@ } if (!stealoid) break; /* only taking one item */ + if (!Upolyd) break; /* no longer have ability to steal */ } } diff -Naur Orig-dir\src\weapon.c Patch-dir\src\weapon.c --- Orig-dir\src\weapon.c Sun Feb 23 15:43:32 2003 +++ Patch-dir\src\weapon.c Wed Mar 12 07:00:57 2003 @@ -11,7 +11,7 @@ /* Categories whose names don't come from OBJ_NAME(objects[type]) */ -#define PN_BARE_HANDED (-1) /* includes martial arts */ +#define PN_BARE_HANDED (-1) /* includes martial arts, thievery */ #define PN_TWO_WEAPONS (-2) #define PN_RIDING (-3) #define PN_POLEARMS (-4) @@ -73,9 +73,9 @@ "escape spells", "matter spells", }; -/* indexed vis `is_martial() */ +/* indexed vis Role_if(PM_ROGUE)? 2 : is_martial() */ STATIC_VAR NEARDATA const char * const barehands_or_martial[] = { - "bare handed combat", "martial arts" + "bare handed combat", "martial arts", "thievery" }; STATIC_OVL void @@ -109,7 +109,8 @@ #define P_NAME(type) ((skill_names_indices[type] > 0) ? \ OBJ_NAME(objects[skill_names_indices[type]]) : \ (type == P_BARE_HANDED_COMBAT) ? \ - barehands_or_martial[martial_bonus()] : \ + barehands_or_martial[Role_if(PM_ROGUE) ? 2: \ + martial_bonus()] : \ odd_skill_names[-skill_names_indices[type]]) #ifdef OVLB