If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
This article has a talk page!

Spybot: The Nightfall Incident

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Spybot: The Nightfall Incident

Also known as: Spybotics: The Nightfall Incident
Developer: gameLab[1]
Publisher: LEGO
Platform: Adobe Shockwave
Released internationally: 2002


CharacterIcon.png This game has unused playable characters.
CodeIcon.png This game has unused code.
DevTextIcon.png This game has hidden development-related text.
EnemyIcon.png This game has unused enemies.
GraphicsIcon.png This game has unused graphics.
Sgf2-unusedicon1.png This game has unused abilities.
TextIcon.png This game has unused text.


This cactus is UNDER CONSTRUCTION
This article is a work in progress.
...Well, all the articles here are, in a way. But this one moreso, and the article may contain incomplete information and editor's notes.
Hmmm...
To do:
Add more unused content such as graphics, objects, text & early maps as well as the Debug Menu

Spybot: The Nightfall Incident is a turn based strategy game made by gameLab for Lego's Spybotics theme, featuring surprisingly little product placement, but lots of original (and some unused) content.

Missing Files

Upon startup, the game attempts to load the following Adobe Director cast files:

sound_level_1.cct
sound_level_2.cct
sound_level_3.cct
sound_level_4.cct
sound_level_5.cct

Unfortunately those files haven't been preserved, with most reuploads either replacing them with zero byte files or empty casts.
It's unknown if those files were ever present or if they contained any content, as the game runs fine without them and doesn't appear to have any missing music or sound effects.
Note that other gameLAB games also used similarly named casts.

Unused Graphics

Unused Unit Icons

The game uses two sets of nearly identical unit icons, both are located in tiles, with the first being player_10 to player_136 and the second being com_10 to com_138.
As one would expect, the first set is used for the player's units whereas the second is used for the computer's.
Since any unit can be used by both sides, the corresponding icons exist in both sets, however, since most of the units are only available to either side, only a few icons had their color adjusted to match their corresponding side.
This section will only list otherwise unused icons or icons with differences between the two sets.

Duplicate Icons

Besides the icons listed above, computer colored variants of the MandelBug and Sumo units exist in player_119/com_119 & player_120/com_120.
Those seem to be leftovers from an earlier point in development where units weren't shared between the player and computer, as the used ones are found in com_29 & com_30.

The Watchman X icon is present at player_128 & 148, only the former is used though.
Oddly, a duplicate of the Watchman icon (com_118) is also present in com_138.

Sentinel/Watchman

Player Computer
SBTNI SentinelPlayerIcons.png SBTNI SentinelComputerIcons.png
SBTNI WatchmanPlayerIcons.png SBTNI WatchmanComputerIcons.png

Graphics used for the player variants of the Sentinel/Watchman series, which are normally unobtainable. Compared to their computer counterparts, they use purple and gold instead of orange and magenta.
Note that the icon for the Watchman SP has magenta in the bottom right corner, hinting at the SP part having been copied over at a later point.

While one might think that those are leftovers of the convert mod (allowing you to control computer units) they actually seem to be earlier computer units as purple and gold tiles are present in the computer trail colors.
This is further supported by early maps using the icon IDs 110 (Sentinel) & 113 (Watchman) instead of 114/118 respectively.
(The last number of a icon ID defines the trail color, with 0 being purple and 3 being gold)

There's also a small but barely noticeable difference in the shades of white:
The player variants use #FFFFFF (clear white) for all parts of the graphic, whereas the computer variants use it only for the outside, using a slightly tinted shade (#FFFBF0) for any details.
The reason for this might be due to how transparency in Adobe Director is handled:
By default, graphics have no transparency, however, there's various ink modes to add that.
A commonly used mode turns #FFFFFF (clear white) into transparency, which would also make parts of the graphic transparent, explaining why the shade was adjusted.
The player icons show up fine in the final game however, due to the corresponding cast members using the matte ink mode, which only turns white pixels adjacent to the edge transparent.
This further supports the theory that those icons were earlier versions of the computer units.

Turbo Icon

SBTNI EarlyTurboIcon.png
Found in player_43/com_43 is a early turbo icon, using a lighter shade of blue and having an electric effect compared to it's used counterpart.
SBTNI new turbo.png
Also present is the file new_turbo which appears to have been a worksheet for the final Turbo icons.

Icon Template

SBTNI 148Icon.png
tiles/48 is this strange icon, which seems to have been a template for creating new icons.

User Interface

cool_credit1

SBTNI cool credit1.png
Found under visual/cool_credit1 is the reverse side of the Great Seal of the United States, which appears to have been taken from a one dollar bill.
Given it's large size, it seems like this was intended for the credits page rather than the in game currency of the same name.

(Source: r543)

Development Text

Found in misc/swSetting is a template for units (software):

[ 
	#NAME		:"text here"

	#Movement	:3, 
	#MoveCount	:3, 

	#MaxSize	:5, 

	#actions	:["name of action","name of action"]
]

Present in visual/cmd__template is a overview of command attributes:

[
#type			: @type ,
#name			: @name ,
#nameText		: @nameText ,

#requiredSize		: @requiredSize ,		
#cost			: @cost ,
#range			: @range ,
#areaOfEffect		: @areaOfEffect ,
#targetLimit		: @targetLimit ,
#numOfUse		: @numOfUse ,
#global			: @global ,

#damage			: @damage ,
#grow			: @grow ,

#speedMod		: @speedMod ,

#sizeMod		: @sizeMod ,	

#damageMod		: @damageMod ,
	
#shieldMod		: @shieldMod ,	

#virusMod		: @virusMod ,

#stealthMod		: @stealthMod ,	

#scrambleMod		: @scrambleMod ,

#freezeMod		: @freezeMod ,

#convertMod		: @convertMod ,

#clearMod		: @clearMod ,

#reboot			: @reboot ,

#clone			: @clone ,
#duplicate		: @duplicate ,
#emulate		: @emulate ,

#defreg			: @defreg ,
#frag			: @frag ,

#description   	: @description

]

A template for commands is present in visual/cmd_default:

[
#type         : "attack",
#nameText     : "text",
#name         : "text",

#requiredSize : 0,		
#cost         : 0,
#range        : 1,
#areaOfEffect : 0,
#targetLimit  : 0,
#numOfUse     : #infinity,
#global       : [#state: #off, #sizeOver: 0, #sizeUnder: 0, #enemyOnly: #on] ,

#damage       : 0,
#grow         : 0,

#speedMod     : [#speedChange   : 0      ,#duration: #infinity] ,

#sizeMod      : [#maxSizeChange : 0      ,#duration: #infinity] ,	

#damageMod    : [#damageBoost   : 0      ,#duration: #infinity] ,
	
#shieldMod    : [#damageBoost   : 0      ,#duration: #infinity] ,	

#virusMod     : [#virusDamage   : 0      ,#duration: #infinity] ,

#stealthMod   : [#stealth       : #off   ,#duration: #infinity] ,	
  
#scrambleMod  : [#scramble      : #off   ,#duration: #infinity] ,

#freezeMod    : [#freeze        : #off   ,#duration: #infinity] ,

#convertMod   : [#convert       : #off   ,#duration: #infinity] ,

#clearMod     : #off ,


#reboot       : #off ,

#clone        : #off ,
#duplicate    : #off ,
#emulate      : #off ,

#defreg       : #off ,
#frag         : #off ,

#description  : "This is action"

]

A detailed description for command attributes is present in visual/cmd_settings_ins:

Command Attributes
---------------------------------------------------------------------
TYPE 
(type is just a handle for the game designer to organize)

NAME
(the name of the command)
---------------------------------------------------------------------
REQUIRED SIZE: integer (0,1,2,...) or #infinity
(the program must be this size to activate this command)

COST:  integer (0,1,2,...) or #infinity
(the program will take this much damage when the command is activated)

RANGE:  integer (0,1,2,...) or #infinity
(determines location of legal targets for this command, 0 = self-target only)

AREA OF EFFECT: integer (0,1,2,...) or #infinity or #bodyaura
 (the command affects all sectors within a range centered on the target sector, body-aura means every sector that is touching this program will be affected)

TARGET LIMIT:  0 or #head_only
(limits which sectors can be legal targets)

GLOBAL:  #on/#off | integer | integer | #on/#off
(“on”/”off”, 0 — 50, 0 — 50, “on”/”off”)
 (the command affects all programs on the grid that match certain parameters)

NUMBER OF USE:  integer (0,1,2,...) or #infinity
(limit how many turns a command can be used)
---------------------------------------------------------------------
DAMAGE:  integer (0,1,2,...) or #max, #bodysize 
(used in attack commands, target program’s size reduced by this amount, max = instantaneous kill, “bodysize” = does the attacking program’s bodysize in damage to the target)

GROW:  integer (0,1,2,...) or #max 
(target program’s size increased by this amount)
---------------------------------------------------------------------
SPEED MOD:  integer |  integer or #infinity
(adds mod which increases movement rate by this amount)

SIZE MOD:  integer |  integer or #infinity
(adds mod which increases max size by this amount)

DAMAGE MOD:  integer |  integer or #infinity 
(adds mod which adds this amount to any damage done by the  target)

SHIELD MOD:  integer |  integer or #infinity  
(adds mod which reduces any damage to target program by this amount)

VIRUS MOD:  integer |  integer or #infinity 
(adds mod which does this amount of damage to target program every turn)

STEALTH MOD:  #on/#off |  integer or #infinity 
(adds mod which renders target program invisible — no command may target an invisible program)

SCRAMBLE MOD:  #on/#off |  integer or #infinity 
(adds mod which prevents target program from executing any commands)

FREEZE MOD:  #on/#off |  integer or #infinity 
(adds mod which prevents target program from moving)

CONVERT MOD:  #on/#off |  integer or #infinity 
(adds mod which brings target program under player’s control)

CLEAR MOD:  #on/#off 
(removes all mods from target program)
--------------------------------------------------------------------
RE-BOOT:  #on/#off 
(re-sets the entire databattle to initial conditions)
--------------------------------------------------------------------
CLONE:  #on/#off 
(the activating program acquires all permanent characteristics of the target program:  i.e.Make me same as Enemy)

DUPLICATE:  #on/#off 
(the activating program acquires all permanent characteristics of the target program  i.e.Make enemy same as I)

EMULATE:  #on/#off 
(the activating program acquires one command of the target program, the command acquired is selected at random)
--------------------------------------------------------------------
DE-FRAG:  #on/#off 
(grid sector is repaired)

FRAG:  #on/#off 
(grid sector is damaged)
--------------------------------------------------------------------

Note that several of those attributes never have any value set other than their default, effectively making them unused.
The final game only uses the following attributes:

  1. TYPE
  2. NAME
  3. REQUIRED SIZE (integer)
  4. COST (integer & #infinity)
  5. RANGE (integer)
  6. DAMAGE (integer)
  7. GROW (integer)
  8. SPEED MOD (integer | #infinity)
  9. SIZE MOD (integer | #infinity)
  10. DE-FRAG (#on/#off)
  11. FRAG (#on/#off)
(Source: r543)

Unused Spybot Data

It appears that the Spybots from Lego's Spybotics theme were once going to play a bigger role than just being a save file/loading icon:

Present in misc/sbybot_data is the following configuration:

[

[ 
	#NAME		:"GIGAMESH",
	#NAMETEXT	:"GIGAMESH",
	#ICON		:1,
	#action		:"FLASHGROW", 
	#Target		:#PLAYER , 
	#Required	:[#greater,1],
	#Description:"ADDS 1 SECTOR TO ALL OF YOUR PROGRAMS"
],
[ 
	#NAME		:"SHADOWSTRIKE",
	#NAMETEXT	:"SHADOWSTRIKE",
	#ICON		:2,
	#action		:"DARKSTORM", 
	#Target		:#ALL , 
	#Required	:[#greater,1],
	#Description:"DELETES 1 SECTOR FROM ALL PROGRAMS INCLUDING YOURS"
],
[ 
	#NAME		:"SNAPTRAX",
	#NAMETEXT	:"SNAPTRAX",
	#ICON		:3,
	#action		:"OVERCLOCK", 
	#Target		:#ALL , 
	#Required	:[#greater,1],
	#Description:"ADDS 1 TO MOVEMENT RATE OF ALL PROGRAMS, INCLUDING ENEMIES"
],
[ 
	#NAME		:"TECHNOJAW",
	#NAMETEXT	:"TECHNOJAW",
	#ICON		:4,
	#action		:"CRUNCHTIME", 
	#Target		:#COM , 
	#Required	:[#greater,3],
	#Description:"DELETES 1 SECTOR FROM ALL ENEMY PROGRAMS THAT ARE CURRENTLY SIZE 3"
]

]

The mentioned attacks are also present in misc/data_cmds:

[#type: "ATTACK", #name: "DARKSTORM", #NAMETEXT: "DARKSTORM", #requiredSize: 0, #cost: 0, #range: 1, #areaOfEffect: 0, #targetLimit: 0, #numOfUse: #infinity, #global: [#state: #off, #sizeOver: 0, #sizeUnder: 0, #enemyOnly: #off], #damage: 1, #grow: 0, #speedMod: [#speedChange: 0, #duration: #infinity], #sizeMod: [#maxSizeChange: 0, #duration: #infinity], #damageMod: [#damageBoost: 0, #duration: #infinity], #shieldMod: [#damageBoost: 0, #duration: #infinity], #virusMod: [#virusDamage: 0, #duration: #infinity], #stealthMod: [#stealth: #off, #duration: #infinity], #scrambleMod: [#scramble: #off, #duration: #infinity], #freezeMod: [#freeze: #off, #duration: #infinity], #convertMod: [#convert: #off, #duration: #infinity], #clearMod: #off, #reboot: #off, #clone: #off, #duplicate: #off, #emulate: #off, #defreg: #off, #frag: #off, #description: "DELETES 1 SECTOR FROM ALL PROGRAMS INCLUDING YOURS"]

[#type: "GROW", #name: "FLASHGROW", #NAMETEXT: "FLASHGROW", #requiredSize: 0, #cost: 0, #range: 1, #areaOfEffect: 0, #targetLimit: 0, #numOfUse: #infinity, #global: [#state: #off, #sizeOver: 0, #sizeUnder: 0, #enemyOnly: #off], #damage: 0, #grow: 1, #speedMod: [#speedChange: 0, #duration: #infinity], #sizeMod: [#maxSizeChange: 0, #duration: #infinity], #damageMod: [#damageBoost: 0, #duration: #infinity], #shieldMod: [#damageBoost: 0, #duration: #infinity], #virusMod: [#virusDamage: 0, #duration: #infinity], #stealthMod: [#stealth: #off, #duration: #infinity], #scrambleMod: [#scramble: #off, #duration: #infinity], #freezeMod: [#freeze: #off, #duration: #infinity], #convertMod: [#convert: #off, #duration: #infinity], #clearMod: #off, #reboot: #off, #clone: #off, #duplicate: #off, #emulate: #off, #defreg: #off, #frag: #off, #description: "ADDS 1 SECTOR TO ALL OF YOUR PROGRAMS"]

[#type: "SIZEMOD", #name: "OVERCLOCK", #NAMETEXT: "OVERCLOCK", #requiredSize: 0, #cost: 0, #range: 1, #areaOfEffect: 0, #targetLimit: 0, #numOfUse: #infinity, #global: [#state: #off, #sizeOver: 0, #sizeUnder: 0, #enemyOnly: #off], #damage: 0, #grow: 0, #speedMod: [#speedChange: 1, #duration: #infinity], #sizeMod: [#maxSizeChange: 0, #duration: #infinity], #damageMod: [#damageBoost: 0, #duration: #infinity], #shieldMod: [#damageBoost: 0, #duration: #infinity], #virusMod: [#virusDamage: 0, #duration: #infinity], #stealthMod: [#stealth: #off, #duration: #infinity], #scrambleMod: [#scramble: #off, #duration: #infinity], #freezeMod: [#freeze: #off, #duration: #infinity], #convertMod: [#convert: #off, #duration: #infinity], #clearMod: #off, #reboot: #off, #clone: #off, #duplicate: #off, #emulate: #off, #defreg: #off, #frag: #off, #description: "ADDS 1 TO MOVEMENT RATE OF ALL PROGRAMS, INCLUDING ENEMIES"]

[#type: "ATTACK", #name: "CRUNCHTIME", #NAMETEXT: "CRUNCHTIME", #requiredSize: 0, #cost: 0, #range: 1, #areaOfEffect: 0, #targetLimit: 0, #numOfUse: #infinity, #global: [#state: #off, #sizeOver: 2, #sizeUnder: 0, #enemyOnly: #on], #damage: 1, #grow: 0, #speedMod: [#speedChange: 0, #duration: #infinity], #sizeMod: [#maxSizeChange: 0, #duration: #infinity], #damageMod: [#damageBoost: 0, #duration: #infinity], #shieldMod: [#damageBoost: 0, #duration: #infinity], #virusMod: [#virusDamage: 0, #duration: #infinity], #stealthMod: [#stealth: #off, #duration: #infinity], #scrambleMod: [#scramble: #off, #duration: #infinity], #freezeMod: [#freeze: #off, #duration: #infinity], #convertMod: [#convert: #off, #duration: #infinity], #clearMod: #off, #reboot: #off, #clone: #off, #duplicate: #off, #emulate: #off, #defreg: #off, #frag: #off, #description: "DELETES 1 SECTOR FROM ALL ENEMY PROGRAMS THAT ARE CURRENTLY SIZE 3 OR BIGGER"]

While the corresponding icons can be found under tiles/spybot_1 to spybot_4 SBTNI SpybotUnitIcons.png

(Source: r543)

Unobtainable Units

Present in misc/program_data are two unused units:

Ms. Bit-Man

SBTNI Ms.Bit-ManIcon.png

#NAME		:"Ms. Frag-Man",
#NAMETEXT 	:"Ms. Bit-Man",
#icon		:20,
#Movement	:5, 
#MoveCount	:5, 
#MaxSize	:5, 
#actions	:["ZERO","ONE"],
#cost 		:500,
#Description:"A major upgrade in every way"

An upgrade to Bit-Man (+2 movement & size), costing twice as much but otherwise having the same abilities as it's predecessor.
The presence of this unit and it's description confirms Bit-Man's Pac-Man reference and that the black wavy line is supposed to be a mouth.

While one might think that this unit was cut for being a too obvious reference and was intended for Security Level 3 or 4 (given that Bit-Man only gets relevant again in later nodes and it's rather large size) misc/warez_inventory_list confirms that this unit was supposed to be obtainable in the Security Level 2 Warez node:

#Programs    :["Hack 2.0","Golem.mud","Wolf Spider","Seeker","Silo","Medic","Ms.Frag-Man","Turbo"]

It doesn't show up however due to a small typo (lacking space between Ms. & Frag-Man)

Edit Tester

#NAME		:"Edit Tester",
#NAMETEXT 	:"Edit Tester",
#icon		:32,
#Movement	:0, 
#MoveCount	:0, 
#MaxSize	:1, 
#actions	:["HANG"],
#cost 		:300,
#Description:"USE FOR LEVEL DESIGN"

A unit using Turbo's icon with Clog 2.0's Hang command, lacking any movement and having a max size of 1.
As stated by it's description, it was most likely used during level design, possibly to see how the AI would pathfind it's way towards the player as units with no movement only require the player to attack, while Clog 2.0's Hang can be used to immobilize enemies.

Shared Player/Computer Units

Due to the way the game is set up, any unit can be used by the player as well as the computer.
While this is used for the MandelBug & Sumo units, any other unit doesn't use this possibility.
Note that while other units can be edited in, the color of their head and trail tiles will be mismatched as the corresponding head tiles haven't been recolored.

(Source: r543)

Unused Commands

Present among the used comments in misc/data_cmds are two unused commands:

[#type: "attack", #name: "ZAP", #NAMETEXT: "ZAP", #requiredSize: 0, #cost: 0, #range: 0, #areaOfEffect: #bodyaura, #targetLimit: 0, #numOfUse: #infinity, #global: [#state: #off, #sizeOver: 0, #sizeUnder: 0, #enemyOnly: #on], #damage: 2, #grow: 0, #speedMod: [#speedChange: 0, #duration: #infinity], #sizeMod: [#maxSizeChange: 0, #duration: #infinity], #damageMod: [#damageBoost: 0, #duration: #infinity], #shieldMod: [#damageBoost: 0, #duration: #infinity], #virusMod: [#virusDamage: 0, #duration: #infinity], #stealthMod: [#stealth: #off, #duration: #infinity], #scrambleMod: [#scramble: #off, #duration: #infinity], #freezeMod: [#freeze: #off, #duration: #infinity], #convertMod: [#convert: #off, #duration: #infinity], #clearMod: #off, #reboot: #off, #clone: #off, #duplicate: #off, #emulate: #off, #defreg: #off, #frag: #off, #description: "DELETES 2 SECTORS FROM ALL ADJACENT PROGRAMS"]

[#type: "attack", #name: "FRY", #NAMETEXT: "FRY", #requiredSize: 4, #cost: 3, #range: 0, #areaOfEffect: #bodyaura, #targetLimit: 0, #numOfUse: #infinity, #global: [#state: #off, #sizeOver: 0, #sizeUnder: 0, #enemyOnly: #on], #damage: 3, #grow: 0, #speedMod: [#speedChange: 0, #duration: #infinity], #sizeMod: [#maxSizeChange: 0, #duration: #infinity], #damageMod: [#damageBoost: 0, #duration: #infinity], #shieldMod: [#damageBoost: 0, #duration: #infinity], #virusMod: [#virusDamage: 0, #duration: #infinity], #stealthMod: [#stealth: #off, #duration: #infinity], #scrambleMod: [#scramble: #off, #duration: #infinity], #freezeMod: [#freeze: #off, #duration: #infinity], #convertMod: [#convert: #off, #duration: #infinity], #clearMod: #off, #reboot: #off, #clone: #off, #duplicate: #off, #emulate: #off, #defreg: #off, #frag: #off, #description: "DELETES 4 SECTORS FROM ALL TOUCHING PROGRAMS & DELETES 3 SECTORS FROM EEL"]

Both attacks use the otherwise unused bodyaura area of effect.
ZAP would've dealt 2 damage to any adjacent programs while FRY would've dealt four while requiring the unit to be at 4+ size and dealing 3 damage to itself.
What's possibly the most interesting is the description of FRY, mentioning EEL, a cut unit that doesn't appear anywhere else in the game's files.
It's likely that those two commands were both meant for the EEL unit, similarily to how Seeker 3.0 has two attacks, with the stronger requiring a certain size and dealing self damage.

(Source: r543)

Internal Names

Hmmm...
To do:
Are there any official statements about The Lego Group's anti war policy? If so, add a reference.

All Units/Commands have two names each:
#NAME, which is the internal name & #NAMETEXT, used as display name.
This setup seems to be used to easily change text during localization, as such, most of the names in the English version are the same.
There's a small amount that differ though, hinting at earlier names:

Units

Display Name Internal Name
TOWER Silo
MOBILE TOWER SCUD
Bit-Man Frag-Man
Ms. Bit-Man Ms. Frag-Man

Commands

Display Name Internal Name
SPOT LAUNCH

TOWER's internal name Silo seems to refer to missile silos, which is further evidenced with its LAUNCH command.
While Mobile Tower refers to the Scud missile, it's more likely that a transporter erector launcher (TEL) was meant as that's what's depicted on the unit's icon rather than the missile itself.

Given The Lego Group's anti war policy (to not create or promote toys that are related to war) it's no surprise that this had to be changed.

Bit-Man/Ms. Bit-Man was possibly changed for a similar reason, as "Frag" can be a slang term for (eliminating an opponent with) a fragmentation hand grenade, even if in the context of this unit, it's referring to their ability to (de)fragment grid tiles.

Note that while the ZERO/ONE commands don't have any different display names, it's likely that they were changed at one point too as the command parameters are named defreg & frag respectively, fitting to the unit's theme of fragmenting prior to being changed to binary (a bit can either be zero or one, hence the command names)
It's possible that this change lead to the implementation of display names in the first place as unused earlier maps show a lack of such.

(Source: r543)

Unused Text

References

  1. in-game credits