[comp.sources.games.bugs] omega bug and fix

Martin-Charles@cs.yale.edu (Charles Martin) (08/01/88)

Try this: next time you get a scroll, put it in one of the "specific" slots
(boots, cloak, finger, etc.)...it will be used but not destroyed!  Handy, eh?
Here's the (trivial) patch:

*** oinv.c.orig	Sun Jul 31 15:17:43 1988
--- oinv.c	Thu Jul 28 20:31:41 1988
***************
*** 1003,1009 ****
      
      take = ((!merge) && (!slotnull) && airnull);
      
!     put = ((!merge) && slotnull && (!airnull));
      
      trade = ((!merge) && (!slotnull) && (!airnull) && slottable(oair,slot));
      
--- 1007,1013 ----
      
      take = ((!merge) && (!slotnull) && airnull);
      
!     put = ((!merge) && slotnull && (!airnull) && slottable(oair,slot));
      
      trade = ((!merge) && (!slotnull) && (!airnull) && slottable(oair,slot));

Charles Martin // INTERNET: martin@cs.yale.edu // BITNET: martin@yalecs
UUCP: {cmcl2,harvard,decvax}!yale!martin

karzes@mfci.UUCP (Tom Karzes) (08/08/88)

I noticed a bug in omega which is due to a typo in the sources (CAVES was
used in place of E_CAVES).  There's supposed to be a room with a special
name at the bottom level of the Goblin Caves.  The effect of this bug is
that the room gets the wrong name.

Here's the fix.  On line 395 of ogen1.c (in routine cavern_level), change:

  if ((Current_Dungeon == CAVES) && (Level->depth == CAVELEVELS))

to:

  if ((Current_Dungeon == E_CAVES) && (Level->depth == CAVELEVELS))

I'm also not sure if the following test is right, but I haven't looked at
it closely enough to really know.

On line 873 of ocom2.c (in routine save):

    else if (Current_Environment == L_ADEPT) {

Can Current_Environment really be L_ADEPT?  I thought this value was used for
the p_locf field of a site element, not for Current_Environment.