ALIEN by Mindgames for the Sinclair ZX Spectrum - BUGFIX & IMPROVEMENT Version 1.7 by Ersh 2020-03-15 The following bugs are fixed: [BUGFIX] THE PLAYER COULD ENTER AN INACCESSIBLE GRILLE; CRASHING THE GAME The Narcissus has a Grille that is normally inaccessible to the player. However if both the Alien and a crew-member are in the Narcissus, and the player switches to that character from another, the option to enter the Grille would then be available. If the player then decided to flee from the Alien through that Grille the game would crash. That's now fixed, the Grille is permanently unavailable to the player. [BUGFIX] THE PLAYER COULD MAINTAIN CONTROL OF AN ACTIVATED ANDROID The Android activates when the Alien has been damaged a certain amount. Let's say that the Android was not yet activated and the player ordered a crew-member to attack the Alien, dealing enough damage for activation. But then switched over to the Android while waiting for the attack to be executed; the player would then maintain control over it. As long as the player didn't change character they could issue orders that would override all of its actions, move it where they pleased, even put it in hypersleep or simply follow its automated rampage around the ship. I've now made it so that the player properly loses control of the Android upon it being triggered. [BUGFIX] THE WRONG MESSAGE WOULD BE DISPLAYED IF THE SHUTTLE BAY WAS DAMAGED Mother would erroneously report "Narcissus status RED" if the Shuttle Bay was damaged; not if the damage was done to the Narcissus itself. Easy fix. [BUGFIX] THE ALIEN COULD TELEPORT FROM THE NARCISSUS TO DIFFERENT PARTS OF THE NOSTROMO The Narcissus lifeboat has a Grille that's opened from the start (which is a table-bug in itself). Although the player can't access the duct themselves, the Alien can. When the Alien entered this air-duct and tried to move to a new location within the ducts, it was teleported to seemingly arbitrary air-duct locations around the ship. This was because the table used didn't account for the Narcissus being a 35th room and so read data from the table that followed, which happened to be the table of character names. "ALIEN, $FF, Dallas, $Kane, $FF...". The ASCII values of the word "ALIEN" are by luck all acceptable air-duct locations. I've made it so that, if the Alien goes up that Grille, it'll set its Action to go down again. Since the Narcissus now, basically, is a dead end for the Alien, I've also reduced the risk of it damaging the lifeboat by 20%, just to be a bit more fair to the player. [BUGFIX] WHEN JONES ENTERED A ROOM WITH MORE THAN TWO PEOPLE, THE ACTIVE CREW-MEMBER WAS NOT ALWAYS GIVEN THE OPTION TO CATCH IT If Jones entered a room where your active crew-member was, the option to catch it wasn't made available if there was a lower numbered crew-member in the same room. For an example if the active character was Ripley (3) and you had Dallas (1) in the same room when Jones entered, Mother would report "Dallas sees Jones the Cat" but the active Ripley wouldn't get the option to catch Jones in the menu. That's now fixed, Dallas will see the cat, but Ripley will get the option to catch it. [BUGFIX] WHEN JONES ENTERED A ROOM WITH ALIVE CREW AND A DEAD BODY, THE MESSAGE AND OPTION TO CATCH IT WERE NOT ALWAYS GIVEN If Jones entered a room where your active character was, the option to catch it wasn't made available if there was a lower numbered DEAD crew-member in the same room. No "...sees Jones the Cat" message would appear at all neither. [BUGFIX] IF THE ALIEN SCARED JONES, THE CAT WOULD TELEPORT TO THE UPPER DECK If Jones entered the room where the Alien was, he was supposed to pick another random connected room to flee to. However, the game had a small bug that made Jones always pick a room from the neighbouring-locations-table of room 0 (Airlock 1). Hence, if the Alien scared Jones he would always teleport to Airlock 1 or Corridor 6 on the Upper Deck. [BUGFIX] IF THE ALIEN SURVIVED THE AIRLOCK; THE TRACKERS WOULD NO LONGER WORK When the player opens an Airlock while the ALIEN is inside, it either dies or re-enters the ship via the Shuttlebay, the player gets a message from MOTHER if the latter is the case. However due to a bug, if the ALIEN survived the Airlock the Trackers and Jones' sixth sense would no longer pick up any readings from it for the duration of that game. This is now fixed. [BUGFIX] CREW-MEMBERS WEREN'T LISTED AS 'DEAD' IF BLOWN OUT OF AN AIRLOCK If the player for some reason decided to blow any crew-member out of an Airlock, they weren't listed as 'Dead' on the Competence Rating screen at the end of the game. This is now fixed. [BUGFIX] THE 'CONDITION' AND 'ALSO HERE' TEXT COULD ERRONEOUSLY ERASE TEXT If the Condition text was exactly 32 characters long it would erase the 'Also here:' text on the next line when updated. Likewise if the 'Also here:' text was exactly 32 characters long it would erase any message from MOTHER on the next line when updated. There are only certain conditions when these texts are exactly 32 characters long, so it was rare, but it's now fixed nonetheless. [BUGFIX] THE TRACKERS AND JONES' SIXTH SENSE DID NOT WORK IN THE AIRDUCTS Due to a bug the 2 trackers and Jones' sixth sense (when in the CATBOX or NET) didn't work inside the airducts. This is now fixed. [BUGFIX] JONES' SIXTH SENSE GAVE FALSE 'READINGS' Getting a 'Jones is uneasy' message while carrying him in the CATBOX or NET means that a connecting location contains either someone from the crew or the ALIEN. Every time the player moved from a location with neighbouring occupants to a location with none; Jones would still give the player the message. This is now fixed. [BUGFIX] WHEN A BODY WAS FOUND, CURRENT MORALE WAS NOT DECREASED. When a crew-member found a body the game decreased base Morale for all characters but not their current Morale, this is now fixed. I also made the game update the character condition text when this happens. [BUGFIX] WHEN USING THE NET OR BREAKING A TRACKER THE PLAYER COULD LOSE MORALE. If the player had an item that gives a morale bonus in item slot 2 and used the Net or broke a Tracker when attacking the Alien, the player permanently lost Morale. This is because the game did not recalculate the character's Morale in those cases, so when dropping (or putting the morale bonus weapon in slot 2) the game would deduct the bonus that was never given. I've further modified it so it updates the mental condition text as well when using the Net or breaking a Tracker, as the game did not do this. [BUGFIX] IF THE ALIEN ESCAPED, A MORALE INCREASE WAS NOT PROPERLY GIVEN AND THE MENTAL CONDITION WAS NOT UPDATED. If the player managed to make the Alien escape from an attack, 'base morale' was increased by one, but 'current morale' was not. This is now fixed and the mental condition text is updated when that happens as well. [BUGFIX] CATCHING JONES DID NOT GIVE AN INCREASE IN MORALE. When catching Jones in the Catbox or Net the player did not get a morale bonus. In fact the crew-member that caught the cat would get a permanent deduction of morale as leaving Jones or even having him in slot 2 decreases morale by 1. [BUGFIX] THE RANDOM NUMBER GENERATOR USED DATA BEYOND INTENDED MEMORY. The Random Number Generator stepped through the entire memory instead of being localised to ROM $0000-$1FFF as intended. This had many side effects. [BUGFIX] A MISSING PIXEL ON THE MAP OF THE MIDDLE DECK OF THE NOSTROMO. There was a missing pixel in the northeast corner of the map of the middle deck. :) [BUGFIX] INVENTORY BUG WHEN SWITCHING CHARACTERS DURING AN 'ATTACK'. If the player chose to attack and then switched to another crew-member, when the attack was executed the second crew-member could use the 'Leave Item' command to drop the first character's item. If the first crew-member only held 1 item then that would be dropped, if he/she held 2 items then the second item would be dropped. [BUGFIX] INVENTORY BUG WHEN SWITCHING CHARACTERS DURING AN 'ATTACK' WHEN USING THE NET OR BREAKING A TRACKER. If the player attacked with the Net or a Tracker and then switched to another crew-member, when the attack was executed the second character's first item would disappear. The game would also remove the menu text for the item, even when not in a character's menu, erasing anything that was in the same location in any other menu. [BUGFIX] 'LEAVE ITEM' COMMAND WAS NOT DISABLED AFTER USING THE NET OR BREAKING A TRACKER. If a crew-member only had 1 item when the Net was used or when breaking a Tracker, the game removed the item from the character's inventory but did not remove the 'Leave Item' command from the menu. Hence it was possible to use that command to drop the item and pick it up again. [BUGFIX] PLAYER COULD USE THE NET OR TRACKER TO ATTACK WITH OVER AND OVER AGAIN. If the player used the Net or a Tracker to attack, the item would be removed from the inventory, however it was still possible to use the 'Attack' command and the the crew-member would then be able to attack with the Net/Tracker again. This could be repeated over and over, though if the player changed character, it would no longer work. [BUGFIX] THE GAME SOMETIMES READ DATA BEYOND INTENDED MEMORY. The 'Carry out an Action' routine didn't PUSH/POP the IX registers holding the pointer to the current character's variables when calling an Action to be performed. Some Action routines destroyed the register pair, thus IX would hold the wrong pointer when returning from those routines. [BUGFIX] 100% COMPETENCE RATING. Getting a Competence Rating of '100%' would be displayed as '1:0%. Also the hundredth digit was never cleared so getting a '85%' Competence Rating on your second go would be displayed as '185%'. [BUGFIX] THE MESSAGE VARIABLE WAS NOT RESET ON RESTART. If the player began a new game, then immediately restarted and the Alien hatched from the same crew-member as in the first game, no "The Alien has hatched from..." message would be displayed. The message variable was not reset and the game doesn't allow the exact same message to be displayed twice in a row. [BUGFIX] IF YOU HOVERED ON 'REMOVE GRILLE' WHEN IT TURNED TO 'ATTACK' THE GAME WOULD NOT LET YOU ATTACK. If you had the menu marker on 'Remove Grille' and then the Alien (or Android) entered your location, the command would change to 'Attack', but if you didn't move the menu marker and instead directly selected 'Attack', the crew-member would remove the Grille instead of attacking. [BUGFIX] CORRUPTED GRAPHICS IN THE ALIEN ANIMATION. There were two corrupted bytes in the Alien animation, one in the first frame and one in the second. The following improvements are also implemented: [IMPROVEMENT] THE GAME NOW ALLOWS THE PLAYER TO ATTACK AGAIN AFTER CANCELING If the player ordered a crew-member to Attack the Alien or Android but then selected another Action before the Attack was executed, the option to order an Attack again was not given. The player had to use 'QUIT' and select the character again in order to be able to select Attack anew. [IMPROVEMENT] ALL ACTIONS NOW CANCEL THE PREVIOUS ONE Most Actions cancel the previous one, like selecting a location to move to, grabbing Jones, entering hypersleep, getting/leaving an item, opening a grill etc. Though some Special Actions didn't cancel any previous Action, like using the Airlocks, Scuttling the Nostromo, attempting to launch the Narcissus etc. For consistency I've now made it so all Special Actions cancel the previous one. Also clicking the first equipment-slot will now cancel any Action as well. [CORRECTION] OPEN GRILL WILL NOT APPEAR IN THE NARCISSUS WHEN ATTACKING ANYMORE Two of my fixes from v1.0 regarding giving the option to open a Grille after selecting Attack (if not already opened) has been modified so they won't do that if the player is fighting in the Narcissus. [IMPROVEMENT] IF SOMEONE ENTERS HYPERSLEEP IN COMPANY THE 'ALSO HERE' TEXT IS NOW UPDATED. If a crew-member enters hypersleep while another character is active in the CRYO VAULT the game now removes the sleeper's name from the ALSO HERE text without having to switch menus. [IMPROVEMENT] IF SOMEONE DIES IN COMPANY OF OTHERS THE BODY IS NOW FOUND If a crew-member died while there were others in the same room, the body was not found. You had to leave the room and reenter to 'find' the body and get a deduction of Morale. I've made the game automatically find a body if a crew-member perishes in company of others, decrease base/current Morale for all characters with an additional deduction of 1 from the current Morale for those that are in the same room. The character condition text is also updated. [IMPROVEMENT] THE GAME NOW UPDATES THE MENTAL CONDITION WHEN COMPANY ARRIVES. The game did not update the mental condition text for the current character when another crew-member came into the same room. [IMPROVEMENT] THE GAME NOW CALCULATES MORALE BONUSES WHEN STARTING A NEW GAME. The game never properly calculated the morale bonus each character gets from having others in the same room when a new game began. This is now done. [IMPROVEMENT] IF A CHARACTER DIES IN THE SAME ROOM AS YOU, YOU'LL GET NOTIFIED. The game now updates the 'ALSO HERE' text when a character dies in the same room as you. (ex. Also here Body of Dallas) [IMPROVEMENT] IF THE ALIEN DEVOURS A COLLAPSED CHARACTER, YOU'LL GET NOTIFIED. There is a small chance that the Alien could completely devour a collapsed character. If that happens, the game now updates the 'ALSO HERE' text if the current character is in the same room. (i.e. removing the devoured character from the text) [IMPROVEMENT] ATTACK IS NOW ONLY AVAILABLE IF NOT ALREADY IN PROGRESS OF ATTACKING. Normally, when selecting 'Attack' the option to do so again would disappear until you had executed the attack. However if anyone went through a door, opened a Grille or if you selected another crew-member and then switched back, the 'Attack' command would be available again even though the attack had not yet been executed. This would get really confusing when you were trying to attack with more than one character at a time. I've modified the game so that the 'Attack' command is never available when already in progress of attacking. [IMPROVEMENT] NEIGHBOURING ROOM/VENT GRILLE REMOVAL. If anyone removed the Grille in your room but from the airduct location (and vice versa), the game wouldn't update the menu indicating that the Grille was removed. I've modified the game to refresh the menu whenever that happens. [IMPROVEMENT] KILLING THE ANDROID WITH ANOTHER CHARACTER. If two crew-members were attacking the Android and the one that was not your current character killed it, the 'Attack' command for the second character didn't disappear even though there was no one left to attack. I've modified the game to remove 'Attack', check if the Grille is removed and if not, give the option to 'Remove Grille'. [IMPROVEMENT] WHEN SELECTING ATTACK, THE GAME NOW SHOW 'REMOVE GRILLE' IF NOT ALREADY REMOVED. Normally when you selected the 'Attack' command, it would be replaced with nothing. I've modified the game to check if the Grille is removed and if not, give the option to 'Remove Grille'. Changelog: Version 1.7 (2020-03-13) [BUGFIX] THE PLAYER COULD ENTER AN INACCESSIBLE GRILLE; CRASHING THE GAME [BUGFIX] THE PLAYER COULD MAINTAIN CONTROL OF AN ACTIVATED ANDROID [BUGFIX] THE WRONG MESSAGE WOULD BE DISPLAYED IF THE SHUTTLE BAY WAS DAMAGED [IMPROVEMENT] THE GAME NOW ALLOWS THE PLAYER TO ATTACK AGAIN AFTER CANCELING [IMPROVEMENT] ALL ACTIONS NOW CANCEL THE PREVIOUS ONE [CORRECTION] OPEN GRILL WILL NOT APPEAR IN THE NARCISSUS WHEN ATTACKING ANYMORE Version 1.6 (2020-02-09) [BUGFIX] THE ALIEN COULD TELEPORT FROM THE NARCISSUS TO DIFFERENT PARTS OF... [BUGFIX] WHEN JONES ENTERED A ROOM WITH MORE THAN TWO PEOPLE, THE ACTIVE... [BUGFIX] WHEN JONES ENTERED A ROOM WITH ALIVE CREW AND A DEAD BODY, THE... [BUGFIX] IF THE ALIEN SCARED JONES, THE CAT WOULD TELEPORT TO THE UPPER DECK Version 1.5 (2019-02-11) [BUGFIX] IF THE ALIEN SURVIVED THE AIRLOCK; THE TRACKERS WOULD NO LONGER WORK [BUGFIX] CREW-MEMBERS WEREN'T LISTED AS 'DEAD' IF BLOWN OUT OF AN AIRLOCK [BUGFIX] THE 'CONDITION' AND 'ALSO HERE' TEXT COULD ERRONEOUSLY ERASE TEXT Version 1.4 (2019-02-01) [BUGFIX] THE TRACKERS AND JONES' SIXTH SENSE DID NOT WORK IN THE AIRDUCTS [BUGFIX] JONES' SIXTH SENSE GAVE FALSE 'READINGS' [IMPROVEMENT] IF SOMEONE ENTERS HYPERSLEEP IN COMPANY THE 'ALSO HERE' TEXT... Version 1.3 (2018-12-23) [BUGFIX] WHEN A BODY WAS FOUND, CURRENT MORALE WAS NOT DECREASED. [IMPROVEMENT] IF SOMEONE DIES IN COMPANY OF OTHERS THE BODY IS NOW FOUND Version 1.2 (2018-06-14) [BUGFIX] WHEN USING THE NET OR BREAKING A TRACKER THE PLAYER COULD LOSE MORALE. [BUGFIX] IF THE ALIEN ESCAPED, A MORALE INCREASE WAS NOT PROPERLY GIVEN AND... [BUGFIX] CATCHING JONES DID NOT GIVE AN INCREASE IN MORALE. [IMPROVEMENT] THE GAME NOW UPDATES THE MENTAL CONDITION WHEN COMPANY ARRIVES. [IMPROVEMENT] THE GAME NOW CALCULATES MORALE BONUSES WHEN STARTING A NEW GAME. [IMPROVEMENT] IF A CHARACTER DIES IN THE SAME ROOM AS YOU, YOU'LL GET NOTIFIED. [IMPROVEMENT] IF THE ALIEN DEVOURS A COLLAPSED CHARACTER, YOU'LL GET NOTIFIED. Version 1.1 (2018-04-12) [BUGFIX] THE RANDOM NUMBER GENERATOR USED DATA BEYOND INTENDED MEMORY. [BUGFIX] A MISSING PIXEL ON THE MAP OF THE MIDDLE DECK OF THE NOSTROMO. Added 'Bugfix' text and version number to the loading screen. Rewrote the Readme. Version 1.0 (2016-10-29) Initial release. [BUGFIX] INVENTORY BUG WHEN SWITCHING CHARACTERS DURING AN 'ATTACK'. [BUGFIX] INVENTORY BUG WHEN SWITCHING CHARACTERS DURING AN 'ATTACK' WHEN... [BUGFIX] 'LEAVE ITEM' COMMAND WAS NOT DISABLED AFTER USING THE NET OR... [BUGFIX] PLAYER COULD USE THE NET OR TRACKER TO ATTACK WITH OVER AND OVER AGAIN. [BUGFIX] THE GAME SOMETIMES READ DATA BEYOND INTENDED MEMORY. [BUGFIX] 100% COMPETENCE RATING. [BUGFIX] THE MESSAGE VARIABLE WAS NOT RESET ON RESTART. [BUGFIX] IF YOU HOVERED ON 'REMOVE GRILL' WHEN IT TURNED TO 'ATTACK' THE... [BUGFIX] CORRUPTED GRAPHICS IN THE ALIEN ANIMATION. [IMPROVEMENT] ATTACK IS NOW ONLY AVAILABLE IF NOT ALREADY IN PROGRESS OF... [IMPROVEMENT] NEIGHBOURING ROOM/VENT GRILL REMOVAL. [IMPROVEMENT] KILLING THE ANDROID WITH ANOTHER CHARACTER. [IMPROVEMENT] WHEN SELECTING ATTACK, THE GAME NOW SHOW 'REMOVE GRILL' IF...