Fix: SE058 Problem: NetHack 3.3 derived its riding code from Slash'EM but changed the configuration switch from YEOMAN to STEED. Slash'EM 0.0.6 has a mismash of YEOMAN switching the Yeoman role correctly plus also switching some riding code. There is even a number of sections of code which are duplicated and selected twice over if both YEOMAN and STEED are switched on. This is mostly harmless, but does cause the odd bonus to be applied twice. Compatible with: Slash'EM 0.0.6E0F3 Author: J. Ali Harlow, ali@avrc.city.ac.uk Date: 6 Mar 2000 diff -Nacrd ../slashem-0.0.6E0F3/include/config.h ./include/config.h *** ../slashem-0.0.6E0F3/include/config.h Sat Mar 4 17:06:57 2000 --- ./include/config.h Tue Mar 7 16:25:42 2000 *************** *** 325,336 **** #define P_SPOON /* Enable WEPTOOL(spoon), and all related code (tsanth@iname.com)*/ #define FIREARMS /* KMH -- Guns and bullets */ #define EATEN_MEMORY /* WAC -- Remember which monsters have been eaten */ /* Roles */ #define DWARF /* Dwarf Patch, Osku Salerma (osku@iki.fi) */ #define TOURIST /* Tourist players with cameras and Hawaiian shirts */ #define YEOMAN /* KMH -- Yeoman class */ - #define STEED /* The ability to ride monsters */ /*#define ZOUTHERN /* KMH -- Zoutherner class and its animals */ /* I/O */ --- 325,336 ---- #define P_SPOON /* Enable WEPTOOL(spoon), and all related code (tsanth@iname.com)*/ #define FIREARMS /* KMH -- Guns and bullets */ #define EATEN_MEMORY /* WAC -- Remember which monsters have been eaten */ + #define STEED /* The ability to ride monsters */ /* Roles */ #define DWARF /* Dwarf Patch, Osku Salerma (osku@iki.fi) */ #define TOURIST /* Tourist players with cameras and Hawaiian shirts */ #define YEOMAN /* KMH -- Yeoman class */ /*#define ZOUTHERN /* KMH -- Zoutherner class and its animals */ /* I/O */ diff -Nacrd ../slashem-0.0.6E0F3/include/decl.h ./include/decl.h *** ../slashem-0.0.6E0F3/include/decl.h Mon Jan 17 13:29:43 2000 --- ./include/decl.h Tue Mar 7 16:25:42 2000 *************** *** 235,241 **** #ifdef TOURIST *uarmu, /* under-wear, so to speak */ #endif ! #ifdef YEOMAN *usaddle, #endif *uskin, *uamul, *uleft, *uright, *ublindf, --- 235,241 ---- #ifdef TOURIST *uarmu, /* under-wear, so to speak */ #endif ! #ifdef STEED *usaddle, #endif *uskin, *uamul, *uleft, *uright, *ublindf, diff -Nacrd ../slashem-0.0.6E0F3/include/skills.h ./include/skills.h *** ../slashem-0.0.6E0F3/include/skills.h Mon Jan 17 13:29:46 2000 --- ./include/skills.h Tue Mar 7 16:25:42 2000 *************** *** 72,83 **** #define P_FIRST_H_TO_H P_BARE_HANDED_COMBAT #define P_LAST_H_TO_H P_MARTIAL_ARTS ! #ifdef YEOMAN #define P_RIDING (P_LAST_H_TO_H + 1)/* KMH -- How well you control your steed */ #endif #define P_TWO_WEAPON_COMBAT (P_LAST_H_TO_H + 2)/* KMH -- now used */ ! #ifdef YEOMAN #define P_FIRST_MISC P_RIDING #else #define P_FIRST_MISC P_TWO_WEAPON_COMBAT --- 72,83 ---- #define P_FIRST_H_TO_H P_BARE_HANDED_COMBAT #define P_LAST_H_TO_H P_MARTIAL_ARTS ! #ifdef STEED #define P_RIDING (P_LAST_H_TO_H + 1)/* KMH -- How well you control your steed */ #endif #define P_TWO_WEAPON_COMBAT (P_LAST_H_TO_H + 2)/* KMH -- now used */ ! #ifdef STEED #define P_FIRST_MISC P_RIDING #else #define P_FIRST_MISC P_TWO_WEAPON_COMBAT diff -Nacrd ../slashem-0.0.6E0F3/include/you.h ./include/you.h *** ../slashem-0.0.6E0F3/include/you.h Mon Jan 17 13:29:47 2000 --- ./include/you.h Tue Mar 7 16:25:42 2000 *************** *** 363,369 **** long usleep; /* sleeping; monstermove you last started */ int uinvault; struct monst *ustuck; ! #ifdef YEOMAN struct monst *usteed; long ugallop; int urideturns; --- 363,369 ---- long usleep; /* sleeping; monstermove you last started */ int uinvault; struct monst *ustuck; ! #ifdef STEED struct monst *usteed; long ugallop; int urideturns; diff -Nacrd ../slashem-0.0.6E0F3/src/apply.c ./src/apply.c *** ../slashem-0.0.6E0F3/src/apply.c Mon Jan 17 13:29:48 2000 --- ./src/apply.c Tue Mar 7 16:25:42 2000 *************** *** 1281,1287 **** const char *bp = body_part(LEG); if (wl == BOTH_SIDES) bp = makeplural(bp); ! #ifdef YEOMAN if (u.usteed) pline("%s %s%s %s in no shape for jumping.", s_suffix(Monnam(u.usteed)), --- 1281,1287 ---- const char *bp = body_part(LEG); if (wl == BOTH_SIDES) bp = makeplural(bp); ! #ifdef STEED if (u.usteed) pline("%s %s%s %s in no shape for jumping.", s_suffix(Monnam(u.usteed)), *************** *** 1333,1339 **** case TT_BEARTRAP: { register long side = rn2(3) ? LEFT_SIDE : RIGHT_SIDE; You("rip yourself free of the bear trap! Ouch!"); ! #ifdef YEOMAN if (!u.usteed) #endif losehp(rnd(10), "jumping out of a bear trap", KILLED_BY); --- 1333,1339 ---- case TT_BEARTRAP: { register long side = rn2(3) ? LEFT_SIDE : RIGHT_SIDE; You("rip yourself free of the bear trap! Ouch!"); ! #ifdef STEED if (!u.usteed) #endif losehp(rnd(10), "jumping out of a bear trap", KILLED_BY); *************** *** 1993,1999 **** else if((!u.dx && !u.dy) || (u.dz > 0)) { int dam; ! #ifdef YEOMAN /* Sometimes you hit your steed by mistake */ if (u.usteed && !rn2(3)) { You("whip %s!", mon_nam(u.usteed)); --- 1993,1999 ---- else if((!u.dx && !u.dy) || (u.dz > 0)) { int dam; ! #ifdef STEED /* Sometimes you hit your steed by mistake */ if (u.usteed && !rn2(3)) { You("whip %s!", mon_nam(u.usteed)); *************** *** 2002,2008 **** } #endif if (Levitation ! #ifdef YEOMAN || u.usteed #endif ) { --- 2002,2008 ---- } #endif if (Levitation ! #ifdef STEED || u.usteed #endif ) { *************** *** 2763,2769 **** case LEASH: use_leash(obj); break; ! #ifdef YEOMAN case SADDLE: res = use_saddle(obj); break; --- 2763,2769 ---- case LEASH: use_leash(obj); break; ! #ifdef STEED case SADDLE: res = use_saddle(obj); break; diff -Nacrd ../slashem-0.0.6E0F3/src/cmd.c ./src/cmd.c *** ../slashem-0.0.6E0F3/src/cmd.c Sat Mar 4 17:07:03 2000 --- ./src/cmd.c Tue Mar 7 16:25:42 2000 *************** *** 824,829 **** --- 824,830 ---- break; #ifdef YEOMAN case 'Y': + #ifdef STEED if (u.usteed) { pline("%s gets tamer.", Monnam(u.usteed)); tamedog(u.usteed, (struct obj *) 0); *************** *** 831,836 **** --- 832,841 ---- } else Your("special ability is only effective when riding a monster."); break; + #else + You("don't have a special ability!"); + return(0); + #endif #endif default: break; diff -Nacrd ../slashem-0.0.6E0F3/src/decl.c ./src/decl.c *** ../slashem-0.0.6E0F3/src/decl.c Mon Jan 17 13:29:48 2000 --- ./src/decl.c Tue Mar 7 16:25:42 2000 *************** *** 145,151 **** *uright = (struct obj *)0, *uleft = (struct obj *)0, *ublindf = (struct obj *)0, ! #ifdef YEOMAN *usaddle = (struct obj *)0, #endif *uchain = (struct obj *)0, --- 145,151 ---- *uright = (struct obj *)0, *uleft = (struct obj *)0, *ublindf = (struct obj *)0, ! #ifdef STEED *usaddle = (struct obj *)0, #endif *uchain = (struct obj *)0, diff -Nacrd ../slashem-0.0.6E0F3/src/dig.c ./src/dig.c *** ../slashem-0.0.6E0F3/src/dig.c Mon Jan 17 13:29:48 2000 --- ./src/dig.c Tue Mar 7 16:25:42 2000 *************** *** 1222,1230 **** if (otmp->otyp == LEASH && otmp->leashmon != 0) o_unleash(otmp); ! #ifdef YEOMAN if (otmp == usaddle) ! dismount_steed(TRUE); #endif if (otmp->lamplit && otmp->otyp != POT_OIL) --- 1222,1230 ---- if (otmp->otyp == LEASH && otmp->leashmon != 0) o_unleash(otmp); ! #ifdef STEED if (otmp == usaddle) ! dismount_steed(DISMOUNT_GENERIC); #endif if (otmp->lamplit && otmp->otyp != POT_OIL) diff -Nacrd ../slashem-0.0.6E0F3/src/do.c ./src/do.c *** ../slashem-0.0.6E0F3/src/do.c Sat Mar 4 17:07:03 2000 --- ./src/do.c Tue Mar 7 16:25:42 2000 *************** *** 1521,1527 **** register long side; register int timex; { ! /* KMH -- YEOMAN * If you are riding, your steed gets the wounded legs instead. * You still call this function, but don't lose hp. * Caller is also responsible for adjusting messages. --- 1521,1527 ---- register long side; register int timex; { ! /* KMH -- STEED * If you are riding, your steed gets the wounded legs instead. * You still call this function, but don't lose hp. * Caller is also responsible for adjusting messages. *************** *** 1548,1554 **** flags.botl = 1; } ! #ifdef YEOMAN if (!u.usteed) #endif { --- 1548,1554 ---- flags.botl = 1; } ! #ifdef STEED if (!u.usteed) #endif { diff -Nacrd ../slashem-0.0.6E0F3/src/dog.c ./src/dog.c *** ../slashem-0.0.6E0F3/src/dog.c Mon Jan 17 13:29:48 2000 --- ./src/dog.c Tue Mar 7 16:25:42 2000 *************** *** 494,502 **** mtmp2 = mtmp->nmon; if (pets_only && !mtmp->mtame) continue; if (((monnear(mtmp, u.ux, u.uy) && levl_follower(mtmp)) || - #ifdef YEOMAN - (mtmp == u.usteed) || - #endif #ifdef STEED (mtmp == u.usteed) || #endif --- 494,499 ---- *************** *** 525,531 **** stay_behind = TRUE; } if (stay_behind ! #ifdef YEOMAN && mtmp != u.usteed #endif ) { --- 522,528 ---- stay_behind = TRUE; } if (stay_behind ! #ifdef STEED && mtmp != u.usteed #endif ) { diff -Nacrd ../slashem-0.0.6E0F3/src/dogmove.c ./src/dogmove.c *** ../slashem-0.0.6E0F3/src/dogmove.c Mon Jan 17 13:29:48 2000 --- ./src/dogmove.c Tue Mar 7 16:25:42 2000 *************** *** 381,391 **** omx = mtmp->mx; omy = mtmp->my; - #ifdef YEOMAN - if (mtmp == u.usteed) - return (-2); - #endif - in_masters_sight = couldsee(omx, omy); if (!edog || mtmp->mleashed) { /* he's not going anywhere... */ --- 381,386 ---- *************** *** 534,545 **** */ has_edog = !mtmp->isminion; - #ifdef STEED - /* Let steeds eat */ - if (mtmp == u.usteed) - udist = 1; - else - #endif /* * Similar to Angels and Guardians are spell beings - temporary * magical manifestations of the spellcaster's mind. --- 529,534 ---- *************** *** 553,562 **** if (has_edog && !is_spell && dog_hunger(mtmp, edog)) return(2); /* starved */ udist = distu(omx,omy); ! #ifdef YEOMAN if (mtmp == u.usteed) udist = 1; ! else /* Let steeds eat */ #endif /* maybe we tamed him while being swallowed --jgm */ if (!udist) return(0); --- 542,552 ---- if (has_edog && !is_spell && dog_hunger(mtmp, edog)) return(2); /* starved */ udist = distu(omx,omy); ! #ifdef STEED ! /* Let steeds eat */ if (mtmp == u.usteed) udist = 1; ! else #endif /* maybe we tamed him while being swallowed --jgm */ if (!udist) return(0); diff -Nacrd ../slashem-0.0.6E0F3/src/dokick.c ./src/dokick.c *** ../slashem-0.0.6E0F3/src/dokick.c Mon Jan 17 13:29:48 2000 --- ./src/dokick.c Tue Mar 7 16:25:42 2000 *************** *** 622,628 **** } else if (verysmall(youmonst.data)) { You("are too small to do any kicking."); no_kick = TRUE; ! #ifdef YEOMAN } else if (u.usteed) { You("kick %s.", mon_nam(u.usteed)); kick_steed(); --- 622,628 ---- } else if (verysmall(youmonst.data)) { You("are too small to do any kicking."); no_kick = TRUE; ! #ifdef STEED } else if (u.usteed) { You("kick %s.", mon_nam(u.usteed)); kick_steed(); diff -Nacrd ../slashem-0.0.6E0F3/src/engrave.c ./src/engrave.c *** ../slashem-0.0.6E0F3/src/engrave.c Mon Jan 17 13:29:48 2000 --- ./src/engrave.c Tue Mar 7 16:25:42 2000 *************** *** 154,160 **** can_reach_floor() { return (boolean)(!u.uswallow && ! #ifdef YEOMAN /* Restricted/unskilled riders can't reach the floor */ !(u.usteed && P_SKILL(P_RIDING) < P_BASIC) && #endif --- 154,160 ---- can_reach_floor() { return (boolean)(!u.uswallow && ! #ifdef STEED /* Restricted/unskilled riders can't reach the floor */ !(u.usteed && P_SKILL(P_RIDING) < P_BASIC) && #endif diff -Nacrd ../slashem-0.0.6E0F3/src/hack.c ./src/hack.c *** ../slashem-0.0.6E0F3/src/hack.c Sat Mar 4 17:06:57 2000 --- ./src/hack.c Tue Mar 7 16:25:42 2000 *************** *** 577,583 **** x = u.ux + u.dx; y = u.uy + u.dy; ! #ifdef YEOMAN /* Check if your steed can move */ if (u.usteed && (!u.usteed->mcanmove || u.usteed->msleeping)) { Your("steed doesn't respond!"); --- 577,583 ---- x = u.ux + u.dx; y = u.uy + u.dy; ! #ifdef STEED /* Check if your steed can move */ if (u.usteed && (!u.usteed->mcanmove || u.usteed->msleeping)) { Your("steed doesn't respond!"); *************** *** 586,592 **** } #endif if(Stunned || (Confusion && !rn2(5)) ! #ifdef YEOMAN || (u.usteed && u.usteed->mconf) #endif ) { --- 586,592 ---- } #endif if(Stunned || (Confusion && !rn2(5)) ! #ifdef STEED || (u.usteed && u.usteed->mconf) #endif ) { *************** *** 775,787 **** nomul(0); return; } - #ifdef YEOMAN - /* Check if your steed can move */ - if (u.usteed && (!u.usteed->mcanmove || u.usteed->msleeping)) { - Your("steed doesn't respond!"); - } - #endif - if(u.utrap) { if(u.utraptype == TT_PIT) { if (!rn2(2) && sobj_at(BOULDER, u.ux, u.uy)) { --- 775,780 ---- *************** *** 950,965 **** u.ux += u.dx; u.uy += u.dy; #ifdef STEED - /* Move your steed, too */ - if (u.usteed) { - u.usteed->mx = u.ux; - u.usteed->my = u.uy; - exercise_steed(); - } - #endif - - - #ifdef YEOMAN /* Move your steed, too */ if (u.usteed) { u.usteed->mx = u.ux; --- 943,948 ---- diff -Nacrd ../slashem-0.0.6E0F3/src/invent.c ./src/invent.c *** ../slashem-0.0.6E0F3/src/invent.c Mon Jan 17 13:29:51 2000 --- ./src/invent.c Tue Mar 7 16:25:42 2000 *************** *** 2188,2194 **** struct obj *obj; { if ((obj->owornmask & (W_TOOL ! #ifdef YEOMAN | W_SADDLE #endif )) != 0L) return TRUE; --- 2188,2194 ---- struct obj *obj; { if ((obj->owornmask & (W_TOOL ! #ifdef STEED | W_SADDLE #endif )) != 0L) return TRUE; diff -Nacrd ../slashem-0.0.6E0F3/src/mhitu.c ./src/mhitu.c *** ../slashem-0.0.6E0F3/src/mhitu.c Mon Jan 17 13:29:49 2000 --- ./src/mhitu.c Tue Mar 7 16:25:42 2000 *************** *** 391,416 **** if(u.uinvulnerable) return (0); /* stomachs can't hurt you! */ } - #ifdef YEOMAN - else if (u.usteed) { - if (mtmp == u.usteed) - /* Your steed won't attack you */ - return (0); - /* Orcs like to steal and eat horses and the like */ - if (!rn2(is_orc(mtmp->data) ? 2 : 4) && - distu(mtmp->mx, mtmp->my) <= 2) { - /* Attack your steed instead */ - i = mattackm(mtmp, u.usteed); - if ((i & MM_AGR_DIED)) - return (1); - if (i & MM_DEF_DIED) - return (0); - /* Let your steed retaliate */ - return (!!(mattackm(u.usteed, mtmp) & MM_DEF_DIED)); - } - } - #endif - #ifdef STEED else if (u.usteed) { if (mtmp == u.usteed) --- 391,396 ---- *************** *** 1303,1311 **** } } else pline("%s pricks your %s %s!", Monnam(mtmp), sidestr, body_part(LEG)); - #ifdef YEOMAN - if (!u.usteed) - #endif set_wounded_legs(side, rnd(60-ACURR(A_DEX))); exercise(A_STR, FALSE); exercise(A_DEX, FALSE); --- 1283,1288 ---- diff -Nacrd ../slashem-0.0.6E0F3/src/mon.c ./src/mon.c *** ../slashem-0.0.6E0F3/src/mon.c Mon Jan 17 13:29:49 2000 --- ./src/mon.c Tue Mar 7 16:25:42 2000 *************** *** 387,400 **** !is_flyer(mtmp->data) && !is_floater(mtmp->data); infountain = IS_FOUNTAIN(levl[mtmp->mx][mtmp->my].typ); - #ifdef YEOMAN - if (mtmp == u.usteed && (Flying || Levitation)) - { - /* ...But not water-walking or swimming */ - return 0; - } - #endif - #ifdef STEED /* Flying and levitation keeps our steed out of the water */ /* (but not water-walking or swimming) */ --- 387,392 ---- *************** *** 1371,1382 **** lifesaved_monster(mtmp); if (mtmp->mhp > 0) return; - #ifdef YEOMAN - /* Player is thrown from his mount when it dies */ - if (mtmp == u.usteed) - dismount_steed(TRUE); - #endif - #ifdef STEED /* Player is thrown from his steed when it dies */ if (mtmp == u.usteed) --- 1363,1368 ---- *************** *** 1535,1546 **** mongone(mdef) register struct monst *mdef; { - #ifdef YEOMAN - /* Player is thrown from his mount when it dies */ - if (mdef == u.usteed) - dismount_steed(TRUE); - #endif - #ifdef STEED /* Player is thrown from his steed when it disappears */ if (mdef == u.usteed) --- 1521,1526 ---- diff -Nacrd ../slashem-0.0.6E0F3/src/objects.c ./src/objects.c *** ../slashem-0.0.6E0F3/src/objects.c Mon Jan 17 13:29:49 2000 --- ./src/objects.c Tue Mar 7 16:25:42 2000 *************** *** 867,873 **** TOOL("lenses", (char *)0, 1, 0, 0, 0, 5, 3, 80, GLASS, HI_GLASS), TOOL("blindfold", (char *)0, 1, 0, 0, 0, 50, 2, 20, CLOTH, CLR_BLACK), TOOL("towel", (char *)0, 1, 0, 0, 0, 50, 2, 50, CLOTH, CLR_MAGENTA), ! #ifdef YEOMAN TOOL("saddle", (char *)0, 1, 0, 0, 0, 5,100, 150, LEATHER, HI_LEATHER), TOOL("leash", (char *)0, 1, 0, 0, 0, 65, 12, 20, LEATHER, HI_LEATHER), #else --- 867,873 ---- TOOL("lenses", (char *)0, 1, 0, 0, 0, 5, 3, 80, GLASS, HI_GLASS), TOOL("blindfold", (char *)0, 1, 0, 0, 0, 50, 2, 20, CLOTH, CLR_BLACK), TOOL("towel", (char *)0, 1, 0, 0, 0, 50, 2, 50, CLOTH, CLR_MAGENTA), ! #ifdef STEED TOOL("saddle", (char *)0, 1, 0, 0, 0, 5,100, 150, LEATHER, HI_LEATHER), TOOL("leash", (char *)0, 1, 0, 0, 0, 65, 12, 20, LEATHER, HI_LEATHER), #else diff -Nacrd ../slashem-0.0.6E0F3/src/objnam.c ./src/objnam.c *** ../slashem-0.0.6E0F3/src/objnam.c Sat Mar 4 17:07:09 2000 --- ./src/objnam.c Tue Mar 7 16:25:42 2000 *************** *** 635,645 **** Strcat(bp, " (being worn)"); break; } ! if ((obj->otyp == LEASH && obj->leashmon != 0) ! #ifdef YEOMAN ! || (obj->owornmask & W_SADDLE) ! #endif ! ) { break; } if (is_weptool(obj)) --- 635,642 ---- Strcat(bp, " (being worn)"); break; } ! if (obj->otyp == LEASH && obj->leashmon != 0) { ! Strcat(bp, " (in use)"); break; } if (is_weptool(obj)) diff -Nacrd ../slashem-0.0.6E0F3/src/pline.c ./src/pline.c *** ../slashem-0.0.6E0F3/src/pline.c Mon Jan 17 13:29:49 2000 --- ./src/pline.c Tue Mar 7 16:25:42 2000 *************** *** 362,370 **** #ifdef STEED if (!u.usteed) #endif - #ifdef YEOMAN - if (!u.usteed) - #endif if (Wounded_legs) { const char *what = body_part(LEG); if ((Wounded_legs & BOTH_SIDES) == BOTH_SIDES) --- 362,367 ---- diff -Nacrd ../slashem-0.0.6E0F3/src/potion.c ./src/potion.c *** ../slashem-0.0.6E0F3/src/potion.c Mon Jan 17 13:29:49 2000 --- ./src/potion.c Tue Mar 7 16:25:42 2000 *************** *** 1582,1589 **** if (obj == uleft || obj == uright) Ring_gone(obj); if (obj == ublindf) Blindf_off(obj); if (obj == uball || obj == uchain) unpunish(); ! #ifdef YEOMAN ! if (obj == usaddle) dismount_steed(TRUE); #endif setnotworn(obj); } --- 1582,1589 ---- if (obj == uleft || obj == uright) Ring_gone(obj); if (obj == ublindf) Blindf_off(obj); if (obj == uball || obj == uchain) unpunish(); ! #ifdef STEED ! if (obj == usaddle) dismount_steed(DISMOUNT_FELL); #endif setnotworn(obj); } *************** *** 1858,1864 **** case MAGIC_HARP: obj->otyp = WOODEN_HARP; break; ! #ifdef YEOMAN case LEASH: obj->otyp = SADDLE; break; --- 1858,1864 ---- case MAGIC_HARP: obj->otyp = WOODEN_HARP; break; ! #ifdef STEED case LEASH: obj->otyp = SADDLE; break; diff -Nacrd ../slashem-0.0.6E0F3/src/restore.c ./src/restore.c *** ../slashem-0.0.6E0F3/src/restore.c Mon Jan 17 13:29:50 2000 --- ./src/restore.c Tue Mar 7 16:25:42 2000 *************** *** 341,347 **** boolean restgamestate(fd, mid, steedid) register int fd; ! unsigned int *mid, *steedid; /* YEOMAN */ { struct obj *otmp; int uid; --- 341,347 ---- boolean restgamestate(fd, mid, steedid) register int fd; ! unsigned int *mid, *steedid; /* STEED */ { struct obj *otmp; int uid; *************** *** 425,431 **** restore_oracles(fd); if(u.ustuck) mread(fd, (genericptr_t) mid, sizeof (*mid)); ! #ifdef YEOMAN if(u.usteed) mread(fd, (genericptr_t) steedid, sizeof (*steedid)); #endif --- 425,431 ---- restore_oracles(fd); if(u.ustuck) mread(fd, (genericptr_t) mid, sizeof (*mid)); ! #ifdef STEED if(u.usteed) mread(fd, (genericptr_t) steedid, sizeof (*steedid)); #endif *************** *** 459,473 **** if (!mtmp) panic("Cannot find the monster ustuck."); u.ustuck = mtmp; } - #ifdef YEOMAN - if (u.usteed) { - for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) - if (mtmp->m_id == steedid) break; - if (!mtmp) panic("Cannot find the monster usteed."); - u.usteed = mtmp; - remove_monster(mtmp->mx, mtmp->my); - } - #endif #ifdef STEED if (u.usteed) { for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) --- 459,464 ---- *************** *** 543,549 **** dorecover(fd) register int fd; { ! unsigned int mid = 0, steedid = 0; /* not a register */ /* YEOMAN */ struct monst *stucktmp, *steedtmp; xchar ltmp; int rtmp; --- 534,540 ---- dorecover(fd) register int fd; { ! unsigned int mid = 0, steedid = 0; /* not a register */ /* STEED */ struct monst *stucktmp, *steedtmp; xchar ltmp; int rtmp; *************** *** 638,644 **** #ifdef USE_TILES substitute_tiles(&u.uz); #endif ! restlevelstate(mid, steedid); /* YEOMAN */ /* WAC -- This needs to be after the second restlevelstate * You() writes to the message line, which also updates the --- 629,635 ---- #ifdef USE_TILES substitute_tiles(&u.uz); #endif ! restlevelstate(mid, steedid); /* STEED */ /* WAC -- This needs to be after the second restlevelstate * You() writes to the message line, which also updates the diff -Nacrd ../slashem-0.0.6E0F3/src/save.c ./src/save.c *** ../slashem-0.0.6E0F3/src/save.c Mon Jan 17 13:29:50 2000 --- ./src/save.c Tue Mar 7 16:25:42 2000 *************** *** 366,372 **** save_oracles(fd, mode); if(u.ustuck) bwrite(fd, (genericptr_t) &(u.ustuck->m_id), sizeof u.ustuck->m_id); ! #ifdef YEOMAN if(u.usteed) bwrite(fd, (genericptr_t) &(u.usteed->m_id), sizeof u.usteed->m_id); #endif --- 366,372 ---- save_oracles(fd, mode); if(u.ustuck) bwrite(fd, (genericptr_t) &(u.ustuck->m_id), sizeof u.ustuck->m_id); ! #ifdef STEED if(u.usteed) bwrite(fd, (genericptr_t) &(u.usteed->m_id), sizeof u.usteed->m_id); #endif diff -Nacrd ../slashem-0.0.6E0F3/src/shk.c ./src/shk.c *** ../slashem-0.0.6E0F3/src/shk.c Sat Mar 4 17:06:57 2000 --- ./src/shk.c Tue Mar 7 16:25:42 2000 *************** *** 740,747 **** register struct bill_x *bpm; register struct monst *shkp; ! #ifdef YEOMAN ! if (obj == usaddle) dismount_steed(TRUE); #endif if (obj->otyp == LEASH && obj->leashmon) o_unleash(obj); --- 740,747 ---- register struct bill_x *bpm; register struct monst *shkp; ! #ifdef STEED ! if (obj == usaddle) dismount_steed(DISMOUNT_GENERIC); #endif if (obj->otyp == LEASH && obj->leashmon) o_unleash(obj); diff -Nacrd ../slashem-0.0.6E0F3/src/shknam.c ./src/shknam.c *** ../slashem-0.0.6E0F3/src/shknam.c Mon Jan 17 13:29:50 2000 --- ./src/shknam.c Tue Mar 7 16:25:42 2000 *************** *** 249,255 **** */ /* STEPHEN WHITE'S NEW CODE */ {"pet store", TOOL_CLASS, 4, D_SHOP, { ! #ifdef YEOMAN {67, -FIGURINE}, {5, -LEASH},{10, -TRIPE_RATION}, {5, -SADDLE}, #else {72, -FIGURINE}, {5, -LEASH},{10, -TRIPE_RATION}, --- 249,255 ---- */ /* STEPHEN WHITE'S NEW CODE */ {"pet store", TOOL_CLASS, 4, D_SHOP, { ! #ifdef STEED {67, -FIGURINE}, {5, -LEASH},{10, -TRIPE_RATION}, {5, -SADDLE}, #else {72, -FIGURINE}, {5, -LEASH},{10, -TRIPE_RATION}, diff -Nacrd ../slashem-0.0.6E0F3/src/sit.c ./src/sit.c *** ../slashem-0.0.6E0F3/src/sit.c Mon Jan 17 13:29:50 2000 --- ./src/sit.c Tue Mar 7 16:25:42 2000 *************** *** 25,38 **** register int typ = levl[u.ux][u.uy].typ; - #ifdef YEOMAN - if (u.usteed) { - You("are sitting on %s.", an(l_monnam(u.usteed))); - return (0); - } - #endif - - #ifdef STEED if (u.usteed) { You("are already sitting on %s.", mon_nam(u.usteed)); --- 25,30 ---- diff -Nacrd ../slashem-0.0.6E0F3/src/steal.c ./src/steal.c *** ../slashem-0.0.6E0F3/src/steal.c Mon Jan 17 13:29:50 2000 --- ./src/steal.c Tue Mar 7 16:25:42 2000 *************** *** 204,211 **** if(otmp->o_id == stealoid) return(0); if(otmp->otyp == LEASH && otmp->leashmon) o_unleash(otmp); ! #ifdef YEOMAN ! if (otmp == usaddle) dismount_steed(TRUE); #endif if((otmp->owornmask & (W_ARMOR | W_RING | W_AMUL | W_TOOL))){ --- 204,211 ---- if(otmp->o_id == stealoid) return(0); if(otmp->otyp == LEASH && otmp->leashmon) o_unleash(otmp); ! #ifdef STEED ! if (otmp == usaddle) dismount_steed(DISMOUNT_FELL); #endif if((otmp->owornmask & (W_ARMOR | W_RING | W_AMUL | W_TOOL))){ diff -Nacrd ../slashem-0.0.6E0F3/src/tech.c ./src/tech.c *** ../slashem-0.0.6E0F3/src/tech.c Mon Jan 17 13:29:50 2000 --- ./src/tech.c Tue Mar 7 16:25:42 2000 *************** *** 116,122 **** val_tech[] = { { 1, T_PRACTICE, 1}, { 0, 0, 0} }, #ifdef YEOMAN ! yeo_tech[] = { { 1, T_CALM_STEED, 1}, { 0, 0, 0} }, #endif wiz_tech[] = { { 1, T_REINFORCE, 1}, --- 116,125 ---- val_tech[] = { { 1, T_PRACTICE, 1}, { 0, 0, 0} }, #ifdef YEOMAN ! yeo_tech[] = { ! #ifdef STEED ! { 1, T_CALM_STEED, 1}, ! #endif { 0, 0, 0} }, #endif wiz_tech[] = { { 1, T_REINFORCE, 1}, *************** *** 482,488 **** techtout(tech_no) = rn1(1000,500); return(0); break; ! #ifdef YEOMAN case T_CALM_STEED: if (u.usteed) { pline("%s gets tamer.", Monnam(u.usteed)); --- 485,491 ---- techtout(tech_no) = rn1(1000,500); return(0); break; ! #ifdef STEED case T_CALM_STEED: if (u.usteed) { pline("%s gets tamer.", Monnam(u.usteed)); diff -Nacrd ../slashem-0.0.6E0F3/src/teleport.c ./src/teleport.c *** ../slashem-0.0.6E0F3/src/teleport.c Mon Jan 17 13:29:50 2000 --- ./src/teleport.c Tue Mar 7 16:25:42 2000 *************** *** 868,874 **** xchar omx = mtmp->mx, omy = mtmp->my; #ifdef STEED ! if (mtmp == u.usteed) dismount_steed(TRUE); /* WAC It's disappearing... */ #endif if (mtmp->iswiz && omx) { /* Wizard, not just arriving */ --- 868,875 ---- xchar omx = mtmp->mx, omy = mtmp->my; #ifdef STEED ! /* WAC It's disappearing... */ ! if (mtmp == u.usteed) dismount_steed(DISMOUNT_FELL); #endif if (mtmp->iswiz && omx) { /* Wizard, not just arriving */ diff -Nacrd ../slashem-0.0.6E0F3/src/u_init.c ./src/u_init.c *** ../slashem-0.0.6E0F3/src/u_init.c Sat Mar 4 17:06:57 2000 --- ./src/u_init.c Tue Mar 7 16:25:42 2000 *************** *** 486,492 **** { P_ATTACK_SPELL, P_SKILLED }, { P_BODY_SPELL, P_SKILLED }, /*WAC - 'B' is good at attack spells and body manipulation spells -both combat oriented */ ! #ifdef YEOMAN { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_BASIC }, --- 486,492 ---- { P_ATTACK_SPELL, P_SKILLED }, { P_BODY_SPELL, P_SKILLED }, /*WAC - 'B' is good at attack spells and body manipulation spells -both combat oriented */ ! #ifdef STEED { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_BASIC }, *************** *** 548,554 **** /* Dwarves avoid magic */ { P_DIVINATION_SPELL, P_BASIC }, ! #ifdef YEOMAN { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, --- 548,554 ---- /* Dwarves avoid magic */ { P_DIVINATION_SPELL, P_BASIC }, ! #ifdef STEED { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, *************** *** 571,577 **** { P_ENCHANTMENT_SPELL, P_EXPERT }, /*WAC removed attack_spell skilled as attack spells include "evil spells and elves can now be lawful. Replaced with Matter spells*/ ! #ifdef YEOMAN { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, { P_BARE_HANDED_COMBAT, P_SKILLED }, --- 571,577 ---- { P_ENCHANTMENT_SPELL, P_EXPERT }, /*WAC removed attack_spell skilled as attack spells include "evil spells and elves can now be lawful. Replaced with Matter spells*/ ! #ifdef STEED { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, { P_BARE_HANDED_COMBAT, P_SKILLED }, *************** *** 604,610 **** { P_MATTER_SPELL, P_EXPERT }, /* Added expert matter spell (elements), skilled in attack, basic in rest He is a mage, so knows the types.*/ ! #ifdef YEOMAN { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_SKILLED }, --- 604,610 ---- { P_MATTER_SPELL, P_EXPERT }, /* Added expert matter spell (elements), skilled in attack, basic in rest He is a mage, so knows the types.*/ ! #ifdef STEED { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_SKILLED }, *************** *** 631,637 **** { P_DIVINATION_SPELL, P_BASIC }, { P_ENCHANTMENT_SPELL, P_EXPERT }, /*WAC - G must be good at enchant, since his class skill is fear. also added a basic divination (from id gems) */ ! #ifdef YEOMAN { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, { P_BARE_HANDED_COMBAT, P_EXPERT }, --- 631,637 ---- { P_DIVINATION_SPELL, P_BASIC }, { P_ENCHANTMENT_SPELL, P_EXPERT }, /*WAC - G must be good at enchant, since his class skill is fear. also added a basic divination (from id gems) */ ! #ifdef STEED { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, { P_BARE_HANDED_COMBAT, P_EXPERT }, *************** *** 653,659 **** { P_DIVINATION_SPELL, P_BASIC }, { P_ENCHANTMENT_SPELL, P_BASIC }, { P_PROTECTION_SPELL, P_BASIC }, { P_BODY_SPELL, P_BASIC }, { P_MATTER_SPELL, P_BASIC }, ! #ifdef YEOMAN { P_RIDING, P_BASIC }, #endif { P_BARE_HANDED_COMBAT, P_BASIC }, --- 653,659 ---- { P_DIVINATION_SPELL, P_BASIC }, { P_ENCHANTMENT_SPELL, P_BASIC }, { P_PROTECTION_SPELL, P_BASIC }, { P_BODY_SPELL, P_BASIC }, { P_MATTER_SPELL, P_BASIC }, ! #ifdef STEED { P_RIDING, P_BASIC }, #endif { P_BARE_HANDED_COMBAT, P_BASIC }, *************** *** 668,674 **** { P_QUARTERSTAFF, P_BASIC }, { P_SPEAR, P_BASIC }, { P_SLING, P_EXPERT }, { P_CROSSBOW, P_BASIC }, { P_DART, P_BASIC }, { P_UNICORN_HORN, P_SKILLED }, ! #ifdef YEOMAN { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, --- 668,674 ---- { P_QUARTERSTAFF, P_BASIC }, { P_SPEAR, P_BASIC }, { P_SLING, P_EXPERT }, { P_CROSSBOW, P_BASIC }, { P_DART, P_BASIC }, { P_UNICORN_HORN, P_SKILLED }, ! #ifdef STEED { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, *************** *** 698,704 **** { P_PROTECTION_SPELL, P_SKILLED }, { P_BODY_SPELL, P_BASIC }, { P_MATTER_SPELL, P_EXPERT }, /*WAC - same as Flame Mage*/ ! #ifdef YEOMAN { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_SKILLED }, --- 698,704 ---- { P_PROTECTION_SPELL, P_SKILLED }, { P_BODY_SPELL, P_BASIC }, { P_MATTER_SPELL, P_EXPERT }, /*WAC - same as Flame Mage*/ ! #ifdef STEED { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_SKILLED }, *************** *** 722,728 **** /*WAC - removed the attack spells - no good having knights summoning undead! Replaced with skilled body spells*/ ! #ifdef YEOMAN { P_RIDING, P_EXPERT }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_EXPERT }, --- 722,728 ---- /*WAC - removed the attack spells - no good having knights summoning undead! Replaced with skilled body spells*/ ! #ifdef STEED { P_RIDING, P_EXPERT }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_EXPERT }, *************** *** 818,824 **** { P_DIVINATION_SPELL, P_SKILLED }, { P_BODY_SPELL, P_SKILLED }, { P_MATTER_SPELL, P_SKILLED }, /*WAC Left as is*/ ! #ifdef YEOMAN { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, { P_BARE_HANDED_COMBAT, P_EXPERT }, --- 818,824 ---- { P_DIVINATION_SPELL, P_SKILLED }, { P_BODY_SPELL, P_SKILLED }, { P_MATTER_SPELL, P_SKILLED }, /*WAC Left as is*/ ! #ifdef STEED { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, { P_BARE_HANDED_COMBAT, P_EXPERT }, *************** *** 859,865 **** { P_PROTECTION_SPELL, P_SKILLED }, { P_BODY_SPELL, P_BASIC }, /* WAC - removed the attack spells, replace with body. clairvoyance, meditate*/ ! #ifdef YEOMAN { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, { P_MARTIAL_ARTS, P_GRAND_MASTER }, --- 859,865 ---- { P_PROTECTION_SPELL, P_SKILLED }, { P_BODY_SPELL, P_BASIC }, /* WAC - removed the attack spells, replace with body. clairvoyance, meditate*/ ! #ifdef STEED { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_EXPERT }, { P_MARTIAL_ARTS, P_GRAND_MASTER }, *************** *** 889,895 **** { P_DIVINATION_SPELL, P_BASIC }, { P_ENCHANTMENT_SPELL, P_BASIC }, { P_BODY_SPELL, P_SKILLED }, /*WAC left alone*/ ! #ifdef YEOMAN { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_SKILLED }, --- 889,895 ---- { P_DIVINATION_SPELL, P_BASIC }, { P_ENCHANTMENT_SPELL, P_BASIC }, { P_BODY_SPELL, P_SKILLED }, /*WAC left alone*/ ! #ifdef STEED { P_RIDING, P_BASIC }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_SKILLED }, *************** *** 945,951 **** /* replace attack spell with matter spell - cone of cold, lightning * Boosted to Expert */ ! #ifdef YEOMAN { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, --- 945,951 ---- /* replace attack spell with matter spell - cone of cold, lightning * Boosted to Expert */ ! #ifdef STEED { P_RIDING, P_SKILLED }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, *************** *** 969,975 **** { P_MATTER_SPELL, P_SKILLED }, /* added matter spell skilled, as fireball and cone of cold are matter spells, but now specialty of F/I Mages*/ ! #ifdef YEOMAN { P_RIDING, P_BASIC }, #endif { P_BARE_HANDED_COMBAT, P_BASIC }, --- 969,975 ---- { P_MATTER_SPELL, P_SKILLED }, /* added matter spell skilled, as fireball and cone of cold are matter spells, but now specialty of F/I Mages*/ ! #ifdef STEED { P_RIDING, P_BASIC }, #endif { P_BARE_HANDED_COMBAT, P_BASIC }, *************** *** 995,1001 **** { P_ENCHANTMENT_SPELL, P_SKILLED }, { P_PROTECTION_SPELL, P_SKILLED }, { P_BODY_SPELL, P_BASIC }, ! #ifdef YEOMAN { P_RIDING, P_EXPERT }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_SKILLED }, --- 995,1001 ---- { P_ENCHANTMENT_SPELL, P_SKILLED }, { P_PROTECTION_SPELL, P_SKILLED }, { P_BODY_SPELL, P_BASIC }, ! #ifdef STEED { P_RIDING, P_EXPERT }, #endif { P_TWO_WEAPON_COMBAT, P_SKILLED }, { P_BARE_HANDED_COMBAT, P_SKILLED }, diff -Nacrd ../slashem-0.0.6E0F3/src/weapon.c ./src/weapon.c *** ../slashem-0.0.6E0F3/src/weapon.c Mon Jan 17 13:29:50 2000 --- ./src/weapon.c Tue Mar 7 16:25:42 2000 *************** *** 332,344 **** otmp->oclass == BALL_CLASS || otmp->oclass == CHAIN_CLASS) { int bonus = 0; - #ifdef YEOMAN - /* KMH -- Lances are especially made for riding */ - if (otmp == uwep && u.usteed && - objects[otmp->otyp].oc_skill == P_LANCE) - bonus += d(2,10); - #endif - #ifdef STEED /* KMH -- Lances are especially made for riding */ if (otmp == uwep && u.usteed && --- 332,337 ---- *************** *** 1270,1276 **** bonus = ((P_SKILL(type) + 1) * (martial_bonus() ? 2 : 1)) / 2; } ! #ifdef YEOMAN /* KMH -- It's harder to hit while you are riding */ if (u.usteed) { switch (P_SKILL(P_RIDING)) { --- 1263,1269 ---- bonus = ((P_SKILL(type) + 1) * (martial_bonus() ? 2 : 1)) / 2; } ! #ifdef STEED /* KMH -- It's harder to hit while you are riding */ if (u.usteed) { switch (P_SKILL(P_RIDING)) { *************** *** 1392,1398 **** /* Should be integrated into oc_subtyp as soon as more skills are * invented */ ! #ifdef YEOMAN if (obj->otyp == SADDLE) skill = P_RIDING; #endif /* Negative skills == not a skill */ --- 1385,1391 ---- /* Should be integrated into oc_subtyp as soon as more skills are * invented */ ! #ifdef STEED if (obj->otyp == SADDLE) skill = P_RIDING; #endif /* Negative skills == not a skill */ diff -Nacrd ../slashem-0.0.6E0F3/src/worn.c ./src/worn.c *** ../slashem-0.0.6E0F3/src/worn.c Mon Jan 17 13:29:50 2000 --- ./src/worn.c Tue Mar 7 16:25:42 2000 *************** *** 31,37 **** { W_TOOL, &ublindf }, { W_BALL, &uball }, { W_CHAIN, &uchain }, ! #ifdef YEOMAN { W_SADDLE, &usaddle }, #endif { 0, 0 } --- 31,37 ---- { W_TOOL, &ublindf }, { W_BALL, &uball }, { W_CHAIN, &uchain }, ! #ifdef STEED { W_SADDLE, &usaddle }, #endif { 0, 0 } diff -Nacrd ../slashem-0.0.6E0F3/util/makedefs.c ./util/makedefs.c *** ../slashem-0.0.6E0F3/util/makedefs.c Sat Mar 4 17:07:00 2000 --- ./util/makedefs.c Tue Mar 7 16:25:42 2000 *************** *** 758,764 **** "walled mazes", #endif #ifdef YEOMAN ! "yeoman role and saddles", #endif #ifdef ZEROCOMP "zero-compressed save files", --- 758,764 ---- "walled mazes", #endif #ifdef YEOMAN ! "yeomen", #endif #ifdef ZEROCOMP "zero-compressed save files", diff -Nacrd ../slashem-0.0.6E0F3/win/share/tilemap.c ./win/share/tilemap.c *** ../slashem-0.0.6E0F3/win/share/tilemap.c Sat Mar 4 17:06:47 2000 --- ./win/share/tilemap.c Tue Mar 7 16:25:42 2000 *************** *** 150,156 **** { OBJ_GLYPH, RED_DOUBLE_LIGHTSABER, "expensive camera" }, #endif ! #ifndef YEOMAN { OBJ_GLYPH, TOWEL, "saddle" }, #endif --- 150,156 ---- { OBJ_GLYPH, RED_DOUBLE_LIGHTSABER, "expensive camera" }, #endif ! #ifndef STEED { OBJ_GLYPH, TOWEL, "saddle" }, #endif