diff -Naur nethack-3.3.1/include/you.h nethack-3.3.1bis/include/you.h --- nethack-3.3.1/include/you.h Thu Aug 31 12:33:33 2000 +++ nethack-3.3.1bis/include/you.h Mon Nov 5 14:51:54 2001 @@ -62,6 +62,7 @@ long unvegan; /* ... or any animal byproduct */ long food; /* ... or any comestible */ long gnostic; /* used prayer, priest, or altar */ + long role; /* followed chivalry/bushido */ long weaphit; /* hit a monster with a weapon */ long killer; /* killed a monster yourself */ long literate; /* read something (other than BotD) */ diff -Naur nethack-3.3.1/src/cmd.c nethack-3.3.1bis/src/cmd.c --- nethack-3.3.1/src/cmd.c Thu Aug 31 12:33:36 2000 +++ nethack-3.3.1bis/src/cmd.c Mon Nov 5 15:39:42 2001 @@ -1076,6 +1076,12 @@ if (!u.uconduct.gnostic) you_have_been("an atheist"); + if ((Role_if(PM_KNIGHT) || Role_if(PM_SAMURAI)) && !u.uconduct.role) { + Sprintf(buf, "followed the code of %s", + Role_if(PM_KNIGHT) ? "chivalry" : "bushido"); + you_have_X(buf); + } + if (!u.uconduct.weaphit) you_have_never("hit with a wielded weapon"); #ifdef WIZARD diff -Naur nethack-3.3.1/src/dig.c nethack-3.3.1bis/src/dig.c --- nethack-3.3.1/src/dig.c Thu Aug 31 12:33:37 2000 +++ nethack-3.3.1bis/src/dig.c Mon Nov 5 14:59:51 2001 @@ -706,9 +706,11 @@ } else if (Role_if(PM_SAMURAI)) { adjalign(-sgn(u.ualign.type)); You("disturb the honorable dead!"); + u.uconduct.role++; } else if ((u.ualign.type == A_LAWFUL) && (u.ualign.record > -10)) { adjalign(-sgn(u.ualign.type)); You("have violated the sanctity of this grave!"); + if (Role_if(PM_KNIGHT)) u.uconduct.role++; } switch (rn2(5)) { diff -Naur nethack-3.3.1/src/dokick.c nethack-3.3.1bis/src/dokick.c --- nethack-3.3.1/src/dokick.c Thu Aug 31 12:33:38 2000 +++ nethack-3.3.1bis/src/dokick.c Mon Nov 5 14:52:49 2001 @@ -69,6 +69,7 @@ (!mon->mcanmove || mon->msleeping || mon->mflee)) { You_feel("like a caitiff!"); adjalign(-1); + u.uconduct.role++; } /* squeeze some guilt feelings... */ diff -Naur nethack-3.3.1/src/eat.c nethack-3.3.1bis/src/eat.c --- nethack-3.3.1/src/eat.c Thu Aug 31 12:33:39 2000 +++ nethack-3.3.1bis/src/eat.c Mon Nov 5 14:54:20 2001 @@ -228,6 +228,7 @@ } else if (Role_if(PM_KNIGHT) && u.ualign.type == A_LAWFUL) { adjalign(-1); /* gluttony is unchivalrous */ You_feel("like a glutton!"); + u.uconduct.role++; } exercise(A_CON, FALSE); diff -Naur nethack-3.3.1/src/shk.c nethack-3.3.1bis/src/shk.c --- nethack-3.3.1/src/shk.c Thu Aug 31 12:33:47 2000 +++ nethack-3.3.1bis/src/shk.c Mon Nov 5 15:22:20 2001 @@ -348,9 +348,11 @@ eshkp->robbed += total; You("stole %ld zorkmid%s worth of merchandise.", total, plur(total)); - if (!Role_if(PM_ROGUE)) /* stealing is unlawful */ + if (!Role_if(PM_ROGUE)) { + /* stealing is unlawful */ adjalign(-sgn(u.ualign.type)); - + u.uconduct.role++; + } hot_pursuit(shkp); #ifdef KOPS call_kops(shkp, (!newlev && levl[u.ux0][u.uy0].edge)); @@ -2958,6 +2960,7 @@ if (Role_if(PM_KNIGHT)) { You_feel("like a common thief."); adjalign(-sgn(u.ualign.type)); + u.uconduct.role++; } return; } @@ -2972,6 +2975,7 @@ if (Role_if(PM_KNIGHT)) { You_feel("like a common thief."); adjalign(-sgn(u.ualign.type)); + u.uconduct.role++; } } else if(!um_dist(shkp->mx, shkp->my, 5) && !shkp->msleeping && shkp->mcanmove && @@ -3173,6 +3177,7 @@ verbalize("Oh, yes! You'll pay!"); hot_pursuit(shkp); adjalign(-sgn(u.ualign.type)); + u.uconduct.role++; } } #endif /*OVLB*/ diff -Naur nethack-3.3.1/src/uhitm.c nethack-3.3.1bis/src/uhitm.c --- nethack-3.3.1/src/uhitm.c Thu Aug 31 12:33:49 2000 +++ nethack-3.3.1bis/src/uhitm.c Mon Nov 5 15:06:53 2001 @@ -206,6 +206,7 @@ u.ualign.record > -10) { You("caitiff!"); adjalign(-1); + u.uconduct.role++; } /* attacking peaceful creatures is bad for the samurai's giri */ @@ -213,6 +214,7 @@ u.ualign.record > -10) { You("dishonorably attack the innocent!"); adjalign(-1); + u.uconduct.role++; } /* Adjust vs. (and possibly modify) monster state. */ @@ -829,9 +831,11 @@ if Role_if(PM_SAMURAI) { You("dishonorably use a poisoned weapon!"); adjalign(-sgn(u.ualign.type)); + u.uconduct.role++; } else if ((u.ualign.type == A_LAWFUL) && (u.ualign.record > -10)) { You_feel("like an evil coward for using a poisoned weapon."); adjalign(-1); + if (Role_if(PM_KNIGHT)) u.uconduct.role++; } if (obj && !rn2(nopoison)) { obj->opoisoned = FALSE; diff -Naur nethack-3.3.1/src/vault.c nethack-3.3.1bis/src/vault.c --- nethack-3.3.1/src/vault.c Thu Aug 31 12:33:49 2000 +++ nethack-3.3.1bis/src/vault.c Mon Nov 5 15:24:08 2001 @@ -249,6 +249,7 @@ /* ignore trailing text, in case player includes character's rank */ strncmpi(buf, plname, (int) strlen(plname)) != 0) { adjalign(-1); /* Liar! */ + u.uconduct.role++; } if (!strcmpi(buf, "Croesus") || !strcmpi(buf, "Kroisos")