diff -Naur nethack-3.3.1/include/extern.h nethack-3.3.1bis/include/extern.h --- nethack-3.3.1/include/extern.h Wed Aug 9 16:46:17 2000 +++ nethack-3.3.1bis/include/extern.h Tue Sep 19 11:08:09 2000 @@ -1410,7 +1410,7 @@ E void NDECL(set_uasmon); E void NDECL(change_sex); -E void NDECL(polyself); +E void FDECL(polyself, (BOOLEAN_P)); E int FDECL(polymon, (int)); E void NDECL(rehumanize); E int NDECL(dobreathe); diff -Naur nethack-3.3.1/src/allmain.c nethack-3.3.1bis/src/allmain.c --- nethack-3.3.1/src/allmain.c Sat Jul 22 01:59:01 2000 +++ nethack-3.3.1bis/src/allmain.c Tue Sep 19 10:58:48 2000 @@ -235,7 +235,7 @@ stop_occupation(); else nomul(0); - if (change == 1) polyself(); + if (change == 1) polyself(FALSE); else you_were(); change = 0; } diff -Naur nethack-3.3.1/src/cmd.c nethack-3.3.1bis/src/cmd.c --- nethack-3.3.1/src/cmd.c Sat Jul 22 01:59:03 2000 +++ nethack-3.3.1bis/src/cmd.c Tue Sep 19 10:58:25 2000 @@ -112,6 +112,7 @@ STATIC_PTR int NDECL(wiz_genesis); STATIC_PTR int NDECL(wiz_where); STATIC_PTR int NDECL(wiz_detect); +STATIC_PTR int NDECL(wiz_polyself); STATIC_PTR int NDECL(wiz_level_tele); STATIC_PTR int NDECL(wiz_show_seenv); STATIC_PTR int NDECL(wiz_show_vision); @@ -549,6 +550,13 @@ } STATIC_PTR int +wiz_polyself() +{ + polyself(TRUE); + return 0; +} + +STATIC_PTR int wiz_show_seenv() { winid win; @@ -1311,6 +1319,7 @@ */ {(char *)0, (char *)0, donull, TRUE}, {(char *)0, (char *)0, donull, TRUE}, + {(char *)0, (char *)0, donull, TRUE}, {(char *)0, (char *)0, donull, TRUE}, {(char *)0, (char *)0, donull, TRUE}, {(char *)0, (char *)0, donull, TRUE}, @@ -1325,6 +1334,7 @@ #if defined(WIZARD) static const struct ext_func_tab debug_extcmdlist[] = { {"light sources", "show mobile light sources", wiz_light_sources, TRUE}, + {"poly", "polymorph self", wiz_polyself, TRUE}, {"seenv", "show seen vectors", wiz_show_seenv, TRUE}, {"stats", "show memory statistics", wiz_show_stats, TRUE}, {"timeout", "look at timeout queue", wiz_timeout_queue, TRUE}, diff -Naur nethack-3.3.1/src/eat.c nethack-3.3.1bis/src/eat.c --- nethack-3.3.1/src/eat.c Sat Aug 5 00:31:40 2000 +++ nethack-3.3.1bis/src/eat.c Tue Sep 19 10:59:01 2000 @@ -846,7 +846,7 @@ /* case PM_SANDESTIN: */ if (!Unchanging) { You_feel("a change coming over you."); - polyself(); + polyself(FALSE); } break; case PM_MIND_FLAYER: diff -Naur nethack-3.3.1/src/fountain.c nethack-3.3.1bis/src/fountain.c --- nethack-3.3.1/src/fountain.c Sat Aug 5 00:37:04 2000 +++ nethack-3.3.1bis/src/fountain.c Tue Sep 19 10:59:12 2000 @@ -552,7 +552,7 @@ case 10: pline("This water contains toxic wastes!"); if (!Unchanging) { You("undergo a freakish metamorphosis!"); - polyself(); + polyself(FALSE); } break; /* more odd messages --JJB */ diff -Naur nethack-3.3.1/src/polyself.c nethack-3.3.1bis/src/polyself.c --- nethack-3.3.1/src/polyself.c Sun Jul 16 16:11:05 2000 +++ nethack-3.3.1bis/src/polyself.c Tue Sep 19 11:13:18 2000 @@ -202,7 +202,8 @@ } void -polyself() +polyself(forcecontrol) +boolean forcecontrol; { char buf[BUFSZ]; int old_light, new_light; @@ -214,7 +215,7 @@ boolean iswere = (u.ulycn >= LOW_PM || is_were(youmonst.data)); boolean isvamp = (youmonst.data->mlet == S_VAMPIRE || u.umonnum == PM_VAMPIRE_BAT); - if(!Polymorph_control && !draconian && !iswere && !isvamp) { + if(!Polymorph_control && !forcecontrol && !draconian && !iswere && !isvamp) { if (rn2(20) > ACURR(A_CON)) { You(shudder_for_moment); losehp(rnd(30), "system shock", KILLED_BY_AN); @@ -224,7 +225,7 @@ } old_light = Upolyd ? emits_light(youmonst.data) : 0; - if (Polymorph_control) { + if (Polymorph_control || forcecontrol) { do { getlin("Become what kind of monster? [type the name]", buf); diff -Naur nethack-3.3.1/src/potion.c nethack-3.3.1bis/src/potion.c --- nethack-3.3.1/src/potion.c Sat Aug 5 00:42:35 2000 +++ nethack-3.3.1bis/src/potion.c Tue Sep 19 10:59:48 2000 @@ -795,7 +795,7 @@ break; case POT_POLYMORPH: You_feel("a little %s.", Hallucination ? "normal" : "strange"); - if (!Unchanging) polyself(); + if (!Unchanging) polyself(FALSE); break; default: impossible("What a funny potion! (%u)", otmp->otyp); @@ -896,7 +896,7 @@ break; case POT_POLYMORPH: You_feel("a little %s.", Hallucination ? "normal" : "strange"); - if (!Unchanging && !Antimagic) polyself(); + if (!Unchanging && !Antimagic) polyself(FALSE); break; case POT_ACID: if (!Acid_resistance) { diff -Naur nethack-3.3.1/src/trap.c nethack-3.3.1bis/src/trap.c --- nethack-3.3.1/src/trap.c Sat Aug 5 00:43:52 2000 +++ nethack-3.3.1bis/src/trap.c Tue Sep 19 11:00:07 2000 @@ -873,7 +873,7 @@ deltrap(trap); /* delete trap before polymorph */ newsym(u.ux,u.uy); /* get rid of trap symbol */ You_feel("a change coming over you."); - polyself(); + polyself(FALSE); } break; diff -Naur nethack-3.3.1/src/zap.c nethack-3.3.1bis/src/zap.c --- nethack-3.3.1/src/zap.c Sat Aug 5 01:23:29 2000 +++ nethack-3.3.1bis/src/zap.c Tue Sep 19 11:00:43 2000 @@ -1788,7 +1788,7 @@ makeknown(WAN_POLYMORPH); case SPE_POLYMORPH: if (!Unchanging) - polyself(); + polyself(FALSE); break; case WAN_CANCELLATION: diff -Naur nethack-3.3.1/sys/msdos/schema3.MSC nethack-3.3.1bis/sys/msdos/schema3.MSC --- nethack-3.3.1/sys/msdos/schema3.MSC Thu Aug 3 21:33:13 2000 +++ nethack-3.3.1bis/sys/msdos/schema3.MSC Tue Sep 19 11:20:26 2000 @@ -277,7 +277,7 @@ functions:256 _water_prayer _weapon_dam_bonus _weapon_hit_bonus _weapon_type _wearing_armor _weffects _weight functions:257 _weight_cap functions:258 _whimper _wield_tool _wildmiss _win_tty_init _wipe_engr_at _wipeoff _wipeout_text -functions:259 _wiz_detect _wiz_genesis _wiz_identify _wiz_level_tele _wiz_light_sources _wiz_map _wiz_show_seenv _wiz_show_vision +functions:259 _wiz_detect _wiz_genesis _wiz_identify _wiz_level_tele _wiz_light_sources _wiz_map _wiz_polyself _wiz_show_seenv _wiz_show_vision functions:260 _wiz_show_wmodes _wiz_timeout_queue _wiz_where _wiz_wish _wizdead _worm_known _worm_move _worm_nomove functions:261 _wormgone _wormhitu _worn_wield_only _write_ls _writeentry _wrong_elem_type _x_monnam _xcrypt _xkilled _xlev_to_rank _xname _xprname functions:263 _xytod _yelp _yname _Yname2 _You _you_aggravate _You_cant _You_feel _you_have _You_hear _you_unwere _you_were _Your _zap_dig