[comp.sources.games.bugs] Omega bug

todd@net1.ucsd.edu (Todd Goodman) (02/06/88)

Hi,
	It seems that our version of Omega doesn't want to print some of the
message lines.  The culprit seems to be in printm() or mprint().  It may be
that the SuppressPrinting flag is being set to TRUE incorrectly.  I've given
it the quick once over, but haven't seen anything strange.  Before I dig in I
was wondering if anyone else out there has come across this problem.

				Thanks,
					Todd Goodman
					todd@net1.ucsd.edu
					...!{ihnp4|ucbvax}!ucsd!net1!todd
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
This posting made possible by a grant from Ignoble Oil Corporation;  Drilling,
  Spilling, and Killing marine life for over 50 years, so that you may pump your
  own.

kus3@sphinx.uchicago.edu (Bob Kusumoto) (02/18/88)

The game blanks out dead things after you recover a saved game. Just dead 
monsters in the inventory get blanked, if they are on the ground, they are
saved correctly.


-- 
	Bob Kusumoto                         |           Follow me!
Internet: kus3@sphinx.uchicago.edu           | I'll play the game you want me,
BITNET:   kus3@sphinx.uchicago.bitnet        |  Until I find a way back home.
UUCP:    {ihnp4!gargoyle,oddjob}!sphinx!kus3 | --- Genesis, "One for the Vine"

scott@alberta.UUCP (Scott Goodwin) (08/06/88)

There seems to be a bug in drawing visible portions of rooms.
On entering a room, sometimes you are able to see what is behind
walls. For example, below is what became visible after entering
a room in the goblin caves.

			.#...............                             
 			.#.............#.
			.#.............#.
			.#.............#.
			.#.............#.
			.#...........[.#.
			................\
			.#....{......\.#.
			.#.............#.
			.#..........\..#.
			.#.......>...$.#.
			.#..........@..#.
			.....#######.#### 

-- 
Scott D. Goodwin, CS Dept., U. Alberta, Edmonton, Alberta, Canada T6G 2H1
PHONE:1-403-432-2821 (office)           1-403-433-4570 (home)
UUCP :scott@alberta.uucp

pim@ctisbv.UUCP (Pim Zandbergen) (08/10/88)

I'm confronted with a very annoying bug in Omega version 0.71.
Whenever I try to disarm a trap I just found, I just walk in it,
without any warning. This can be quite lethal :-(

It surprises me that noone else has mentioned this bug.
Or hasn't anybody else experienced this behaviour?
I'm running Omega on an AT&T 3B2/600 running System V release 3.1.1.


-- 
--------------------+------------------------------------+---------------------
Pim Zandbergen      | CTI Software BV                    | Phone: +31 70 542302 
pim@ctisbv.UUCP     | Laan Copes van Cattenburch 70      | Fax:   +31 70 512837
..!mcvax!ctisbv!pim | 2585 GD The Hague, The Netherlands | Telex: 32133 CTI NL

ralston@mrsvr.UUCP (Richard Ralston) (08/11/88)

From article <418@ctisbv.UUCP>, by pim@ctisbv.UUCP (Pim Zandbergen):
> I'm confronted with a very annoying bug in Omega version 0.71.
> Whenever I try to disarm a trap I just found, I just walk in it,
> without any warning. This can be quite lethal :-(

	I believe this is a "feature."  Whenever you try to disarm
	a trap, you take the risk of accidently setting of said trap.
	If you goof, Omega sets off the trap by putting you into the
	trap.

	As you gain more experience, you are better at disarming traps.
	So, perhaps the best advice is to avoid deadly traps rather
	than disarming them until you are a more exp. character.

	Good Luck!



---------------------------------------------------------------------
                                        |                                       Richard B. Ralston                      | DISCLAIMER:
                                        | I take full responsibility
G.E. Medical Systems                    |  for what I said!
PO Box 414                              |
Milwaukee, WI 53201-414                 | (What *did* I say anyway?)
                                        |
sun!sunbird!gemed!starwolf!ralston      |
                                        |
---------------------------------------------------------------------

hauck@faline.bellcore.com (Scott Hauck) (08/12/88)

I think I've found a bug in omega - specifically the Star Peak datafile
(ospeak.dat).  In it the character "A" appears between the LawBringer
and a 7 (a metal gate).  This character doesn't seem to appear in the
ocountry.c where omega interprets these files.  I don't know what it is
supposed to be - probably some kind of message - but I simply changed it
to a "." (an empty passage).  This works, but I'm wondering what it's
supposed to be.

Scott hauck

P.S. Even with the many bug fixes, Omega is one hell of a game!  Thanks
Larry (wherever you are)!

pim@ctisbv.UUCP (Pim Zandbergen) (08/17/88)

In article <316@mrsvr.UUCP> ralston@mrsvr.UUCP (Richard Ralston) writes:
>From article <418@ctisbv.UUCP>, by pim@ctisbv.UUCP (Pim Zandbergen):
>> I'm confronted with a very annoying bug in Omega version 0.71.
>> Whenever I try to disarm a trap I just found, I just walk in it,
>> without any warning. This can be quite lethal :-(
>
>	I believe this is a "feature."  Whenever you try to disarm
>	a trap, you take the risk of accidently setting of said trap.
>	If you goof, Omega sets off the trap by putting you into the
>	trap.
>Richard B. Ralston                      | DISCLAIMER:
>                                        | I take full responsibility
>G.E. Medical Systems                    |  for what I said!
>PO Box 414                              |
>Milwaukee, WI 53201-414                 | (What *did* I say anyway?)

Yes, it is a feature. One *can* set off a trap by accident, trying
to disarm it. But it *is* a bug, because the chances of doing so
are wrong.
Take a look at disarm() in ocom2.c or hit 'n' if you don't want to.


/* try to deactivate a trap */
void disarm()
{
	if (disarm succeeds for some reason)
	{
		lots of nice things happen ...
	}
	else if (random_range(10+Level->depth) > Player.dex)
	{
		print1("You accidentally set off the trap!");
		various disasters happen ...
	}
	else print1("You failed to disarm the trap.");
}

This means that when you're on level 0 (city level) and your dexterity
is higher than 10, you cannot accidently set off a trap. Yet this is
what happened to me all the time. 

Digging into the sources and setting breakpoints with sdb, I found
out that Level->depth contained some random (huge) number instead of 0.
The citylevel structure is malloc'd in ocity.c but the depth
structure member is not initialised to zero anywhere.

Maybe on a Sun malloc(3) clears everything to zeroes automatically,
but on an AT&T 3B2 it doesn't. (BTW, I compiled Omega with malloc(3X) ).

Here's my patch to how I *think* it should be done:
--------------------------------------------------------------------------
*** orig/ogen1.c	Wed Aug 10 17:45:25 1988
--- ogen1.c	Wed Aug 10 01:55:31 1988
***************
*** 48,53 ****
--- 48,54 ----
  {
    int i,j;
    if (dungeon_level != NULL) {
+     dungeon_level->depth = 0;
      dungeon_level->generated = FALSE;
      dungeon_level->numrooms = 0;
      dungeon_level->tunnelled = 0;
-------------------------------------------------------------------------------
-- 
--------------------+------------------------------------+---------------------
Pim Zandbergen      | CTI Software BV                    | Phone: +31 70 542302 
pim@ctisbv.UUCP     | Laan Copes van Cattenburch 70      | Fax:   +31 70 512837
..!mcvax!ctisbv!pim | 2585 GD The Hague, The Netherlands | Telex: 32133 CTI NL

dgibbs@bnr-fos.UUCP (David Gibbs) (07/28/89)

I have found a small error in Omega, which is (I think) a bug, not designer
intent.  If a person with a high power (>21) and very chaotic (alignment
< -30)  he can end up being charged a large fee to enter the sorcerors
guild, and this will go up if his power increases.  I had this occur
to a character of mine who had to paw several thousand gold to join.
(greater than 10000) 

The bug is caused by two lines in oguild2.c , 477 and 478

at the top of the function fee is initialized to 3000.

477: fee += Player.alignment * 100
478: fee = (int)(fee*(1 + (12-Player.Pow)/9.0))

if alignment is, say -300 (Servant of Chaos, not hard to get)
and Pow is 25, this can be very costly.

probably the easiest way to fix this is to change line 477 to:

     fee = max( 0, (fee + Player.alignment*100));

-David Gibbs

dgibbs@bnr-fos.UUCP (David Gibbs) (07/28/89)

Has anyone noticed there immunities going away?  I have and it was very
frustrating.  I did some playing around (checking a running version)
of my game with dbx and found that my character had a NEGATIVE value
for several of his immunities when not wearing any items, he then put
on the item to give immunities to that, and got boosted to zero.  The 
problem with this, was that I never noticed exactly when it happened,
just that I would go back to the oracle, and suddenly some of my 
immunities would be gone.  
 
  Well, I have finally been able to reproduce this bug, and would like
to warn people of how to avoid it.  When removing things like cloaks,
rings, armor, weapons, etc, do not, DO NOT use the 'p' command to 
put the object in your pack because, if you do and subsequently drop
the item without first using it in the appropriate slot first, you
will have effectively an additional minus in that area.  That is,
for some reason it removes the object twice.  I would guess that
somehow the 'p' doesn't properly unset the in use flag.  I am going
to try and track this down in the code and fix it, but until then
I am warning you on how to avoid this problem. 

(Look for future postings)

-David Gibbs
(dgibbs@bnr-fos.UUCP or
 ...!uunet!watmath!neat.ai.toronto.edu!utgpu!bnr-vpa!bnr-fos!dgibbs )