[comp.sources.games.bugs] more omega bugs

davids@mulga.oz (David Spaziani) (02/01/88)

Hi,
	I have some more bugs that have cropped up in Omega, and the fixes that
seem to work. I have posted the list to the author of Omega, who assures me
that these and other bugs will be fixed in the next release coming soon.
However, for those of you who can't wait, heres what I've found. I have
only described the fixes rather than supply diffs - my solutions are probably
not THE solutions.

	The first bug causes a core dump, and is found in "oaux2.c". The
situation in which this occurs is when a monster disengages from a battle and
runs.  In the procedure "tacexecute", the DISENGAGE case in the switch statement
contains two consecutive calls to "movemonster". The correct procedure
is "monster_move".

	The second error occurs when a player surrenders to a guard. The guard
remains hostile, following the player to gaol, eventually killing the player.
The guard accepts the surrender in "m_guard_talk", in the file "omonf.c",
but does not have the status changed from HOSTILE. The fix is to add
the call "m_status_reset(m,HOSTILE)" to the block of code in which the player
is sent to gaol.

	The last bug occurs when a player is bitten by a tsetse fly. The 
player is woken instantly (ie, at the next tick). The problem occurs because
in "otime.c", the flag Skipplayer is always set to false each tick, even 
is Player.status[SLEPT] > 0. The solution is to only conditionally set
Skipplayer, ie
	if (Player.status[SLEPT] <= 0) Skipplayer = FALSE;


		David Spaziani
		==============

===========================
UUCP:	{seismo,mcvax,ukc,ubc-vision}!munnari!davids
ARPA:	davids%munnari.oz@seismo.css.gov
CSNET:	davids%munnari.oz@australia

pwing@apple.UUCP (Philip L. Wing) (02/04/88)

I've found some more bugs with Omega, Version 2:

1.  Hit points are *NOT* updated correctly in Tactical Combat Mode.  They
are updated when the battle begins, not before you enter in your battle
manuevers.  This means that you can be low on hit points without realizing
it when in combat.

2.  Enchanters seem to be still active while you are near where they use to
be before you kill them.  I just had a game where the ghost Enchanter was
still throwing snowballs (Balls of Snow, as in Balls of Lightning) at me
and finally killed me.

3.  In the arena, *YOU* are penalized if your opponent runs away as if you
ran away.

The first two are serious, the third not quite so.
-- 
Live Long And Prosper and May The Force Be With You(And The Carrier, Too...)

				Philip L. Wing

ajcd@its63b.ed.ac.uk (Angus Duggan, Department of Computer Science, University of Edinburgh,) (02/09/88)

[warning - line eater at work]

Here's another omega bug: If you buy a penthouse from the Rampart Arms, and
then try to put money in it's safe, omega coredumps.

And here's a fix: add a new declaration to function l_condo in file "osite.c" -

   void l_condo()
   {
     pol ol,prev=NULL;
     int i,done=FALSE,over=FALSE,weeksleep=FALSE;
     char response;
     pob money;

and then add an if statement after the call to getitem later on in l_condo -

      menuprint("d: Retire permanently.\n");
      menuprint("ESCAPE: Leave this place.\n");
      response = mgetc();
      if (response == 'a') {
	i = getitem(NULL);
	if (i == CASHVALUE) {
	  money = detach_money();
	  if (money != NULL) {
	    ol = ((pol) malloc(sizeof(oltype)));
	    ol->thing = money;
	    ol->next = Condoitems;
	    Condoitems = ol;
	  }
	}
	else if (i != ABORT) {
	  if (Player.possessions[i-'a']->blessing < 0)
	    mprint("The item just doesn't want to be stored away...");

The function detach_money should be declared as -

   extern pob detach_money()

-- 
Angus Duggan, Department of Computer Science, University of Edinburgh,
James Clerk Maxwell Building, The King's Buildings, Mayfield Road,
Edinburgh, EH9 3JZ, Scotland, U.K.
JANET:  ajcd@uk.ac.ed.ecsvax  ARPA: ajcd%ed.ecsvax@nss.cs.ucl.ac.uk
USENET: ajcd@ecsvax.ed.ac.uk  UUCP: ...!mcvax!ukc!ed.ecsvax!ajcd
BITNET: ukacrl.earn!ed.ecsvax!ajcd or ajcd%ed.ecsvax@uk.ac