Fallout 2 Editor (Mapper) Introduction
- Here are links to the original files. The formatting of this wiki doc is poor compared to the originals:
- http://www.mediafire.com/view/?i723xdhw8718tlq (.pdf)
- http://www.mediafire.com/view/?yennrt3n26xxr09 (.doc)
Here is the Fallout 2 editor, the scripts, and the script compiler. We were able to take some time and put together some documentation for it (and an installer), but a lot of it will require some trial and error. If you want to hammer away at it, well, here it is.
Some things to keep in mind:
This editor is not the holy grail. It was never meant to be released to the public. As a result, you may boot the editor up and realize that it doesn't match your expectations for a commercially-released RPG editor. You may suffer some retina burn. Perhaps a strange itching sensation. Constipation. So be prepared - you are about to experience a game editor, intended only for developers.
You use the Fallout 2 editors at your own risk. A poll was posted some time ago (http://feedback.blackisle.com/forums/showthread.php?s=&threadid=51095) asking if fans interested in the editors would prefer to have the editors sooner with no documentation, and the answer was an overwhelming yes, so here it is. We ended up including some documentation, anyway, so hopefully that should help the pains of easing into the editor.
You need to have Fallout 2 installed for these editors to work.
Be sure to check out the readme.txt in the Scripts folder that will be installed with the editor. It explains compiling the scripts, and some examples of how to build them using different C compilers for the preprocessor. There is also information on the Open Watcom compiler and a link for where to get it.
This is not the Fallout 2 source code. There are no plans to release the Fallout 2 source code at this time.
Be warned - various issues with the editor are listed in the "Known Problems" section of this document. Check it out before using the editors.
The Fallout 2 editors are not supported by Interplay. If you have a problem with them, do not contact customer support because they'll have no idea what you're talking about.
If you have any questions about usage of the editors, post them up on the Fallout 1 and 2 forum (www.interplay.com), and if we can answer them, we will. Keep in mind it has been many years since these editors have been used, and a lot of the know-how is either rusty or has been forgotten, but we'll see what we can do.
There are a number of people you should thank for the editors.
Josh Sawyer. Without Josh, you would not have the F2 editor. He brought up the idea in a meeting, and everybody nodded their head because it seemed like a good idea before we realized what a pain in the ass it would be.
Darren Monahan and Feargus Urquhart. Without Darren and Ferg, you would not have the F2 editor.
Chris Heidari. Chris Heidari took a good chunk of his time to test the editor and, as an added bonus, set up the installer to make it easier for you to use.
Scotty Everts, who put the lion's share of work in setting up the editor doc summary.
...and most of all, Chris Jones. Chris worked on getting the F2 editors together during his free time. Without Chris, you would not have the F2 editor.
Thanks and enjoy,
Fallout Editor map building notes
The Fallout editor was originally written over six years ago. While it was updated and enhanced during Fallout 1 & 2 development, it's archaic by today’s standards, and it will take a lot of patience to make maps. (Your first few will be a challenge, but it'll get a little easier with practice.) The main problem with map-building will be finding all the art pieces you want.
There are 6 different art categories; unfortunately, there are no sub-categories for each - the engine didn’t support it; as new art was made, it just got added to the end of the list. So you might find a set of wall sections with pieces spread all over the art list. Fortunately there is a Bookmark command which will make it a little easier (explained below).
Also, this version includes art for Fallout 2 and reused art from Fallout 1. Any of the custom art from Fallout 1 is not included as it was originally deleted to save disc space. For those enterprising individuals that have extracted the original Fallout 1 art, you might be able to re-insert it with some work.
There are 6 basic art objects (categories) that make up a map.
Tiles - These are the floor and roof tiles; the basic pieces you build all your maps on. Tiles get put down as floors when “Roof” is off. “Roof” on will place tiles at the roof elevation. So any tile can be used either way.
Walls - Building wall sections. They come in N/S & E/W directions. All external & internal buildings are built from these.
Scenery - The detail pieces such as chairs, tables, trash, cars, etc, used to decorate and flesh out an area. Doors are in the scenery list.
Items - Inventory items for guns, stimpaks, etc. For placing on critters, containers, or ground. Containers are also listed under items.
Critters - Your people and monsters. Place them and attach scripts to make them interact in your environment.
Misc - All the odd stuff like projectile graphics and such. Exit Grid sections are part of the Misc list.
Place an object by Right-Clicking on art object bar (see screenshot below for reference in the following directions). Then Left-Click where you want it on the map.
To select a placed object, Left-Click on it. There is no highlight but the selected object’s name will appear in the Lower right info screen. Sometimes you might have to click it a few times to get it to select. You can also move the object around. Hold down the left mouse button while selecting and you can drag to a new location.
Menu Bar - The menu bar is hidden until you move the cursor to the top of the screen.
Bookmarks - You can set a bookmark in each art object category. The 1-9 keys can be assigned to any location on the art list, and each category can have its own set. To do this, move to a location on the art object bar. Select the Menu “Tools/Set Bookmark.” Then just press the number key you want that location to be assigned to.
Each map can have 3 map levels. Use the Up/Down arrows on the lower left side of the edit screen to switch levels. This is used for similar levels like dungeons so you don’t have to wait for a new map to load when switching levels.
The “H” key will toggle hexes on and off. A Hex filled in red is blocked and no PC or NPC can enter it. Most walls and scenery are set to Blocking on. Sometimes when laying out walls or scenery, there will be holes, which can result in embarrassing firefights in towns with enemies shooting you through these holes in the walls without you realizing it. Blocking hexes are explained in more detail below.
The “F8” key will switch the editor into “Game” mode. You can walk your character around the map and check holes in walls, or how scroll blocking is working, etc. This is the best key in the universe.
The “F12” key will take a screenshot. You do not have to be in game mode - you can take screenshots at any time while you are in the editor, compiling information on weapons, ammo, critter stats, and so on.
Basic Editor Functions
1.Art Categories - You can use F1-F6 to jump between them instead of using the menu.
2.Hex Number - The number of the map hex you are placing an art object. This is helpful for telling a scripter which of the 34+ hookers on a map you need a special script attached to, as well as laying boundaries for certain scripts.
3.Art Object Number - The number of the art object in position one of the Art Object Bar.
4.Art Object Bar - Shows the art objects of the selected category. Double Arrows scroll by page, single arrow one at a time. Right-Click to select one. Left-Click to place on map. “Plus” and “Minus” keys scroll through the list. “Shift” scrolls by page.
5.Map Level - You can have up to three maps in one file. Helps save on load times for dungeons or building interiors.
6.Art Object Toggles - Toggles the different categories of art objects on and off. Roofs are default to "off." To lay roof tiles you need toggle on. Remember to Toggle roof tiles off to lay ground tiles again. “R” key is a quick key for doing this. “Top Down” button is non-functional - it was a feature that was never implemented.
7.Critter Object Rotation - To select which way a critter is facing when placed. If your super mutants are always getting placed down with their asses facing you, check the critter object rotation and change it until they're facing the right direction.
8.Object Functions -
“Copy” will copy selected elements of the art object group you are currently in. If you are in the Tiles category, only tiles will be copied, etc. Drag the box to select the copied elements. You can stamp the selected group anywhere you like. Right click to clear.
“Copy All” functions like Copy but will copy everything selected including tiles, critters, scenery, etc. Great fun at parties.
“Edit” is for changing attributes of the selected object.
“Delete” will permanently remove the selected object.
9.Info Screen- Lists art object names and other status info.
10.Cursor - Changes based on mode or function.
11.Hidden Menu Bar - Appears when cursor is moved to top of screen.
Standard Load, Save, Quit menu. You know the deal.
“Create Pattern” / “Use Pattern” - Allows you to set Tile patterns and place them. Making new patterns doesn’t seem to work. “Use Pattern” has a list of various pre-made patterns to make it easier to layout ground and floors. Select one off the list. You can now stamp that pattern down. The “Plus” & “Minus” keys change the size of the stamp. Right-Click to exit Pattern mode.
“Move Map” - Allows you to shift the map. In case you run out of space on an edge, this allows you to move the whole map around to re-center it. The arrow keys should shift it but there was some trouble getting this function to work.
“Move Map Elevation” - Moves the whole map to another map level.
“Copy Map Elevation” - Copies the whole map to another map level. If you are building two similar levels, this will save time from having to recreate most of the previous level.
Note: There seems to be a problem when using the “Copy Map Elevation” function. Trying to copy a level to another map/elevation level, the editor will crash to the desktop with a generic “Program error” message. Hell, it may work for you, but it wasn't working for us.
“Toggle Block Object View” - There are various invisible blocker objects used to block or restrict movement and screen scrolling. This menu option toggles them visible in the editor so you can edit and move them - they are never visible in-game, otherwise you would have one surreal Fallout game on your hands. Many times when placing art, there will be holes in walls or scenery. These blockers are used to fill in those holes so the PC or NPC’s don’t walk (or shoot) through areas of the map that they aren’t supposed to. Check out some of the Fallout 2 maps for examples of where they are used, and you'll see what we mean.
Wall Blocker - Dark Green “W.” Blocks movement. Shows up as Wall (Light Green) on in-game Map. Comes in two versions, but it appears only the one labeled “Wall S.T.” is used. (Walls category, tile#621)
Secret Blocking Hex - Light Green “S.” Blocks movement. Shows up as Scenery (Dark Green) on in-game Map. (Scenery category, tile#66)
Block Hex Auto Inviso - Yellow “SAI.” Blocks movement. Invisible on in-game Map. Used to block out areas of a map that you don’t want to show up on the in-game map. (Scenery category, tile#343)
Light Source - Green “Yellow Sun symbol.” Does not block movement. Places light source in hex. Light can be adjusted by using “Edit.” (Scenery category, tile#140)
Exit Grid Map Marker - Blue “EG.” Special markers that display in Tan on the in-game map. Used to indicate where Exit Grids are. (Scenery category, tile#48)
Scroll Blocker - White “S.” A special marker that restricts screen scrolling. When the center of the screen hits a row or column of these, the screen will no longer scroll any farther. Used to define the edge of a map. Please note the scroll blocking works both ways. If your character somehow gets outside the edge, you will not be able to scroll inside the map area. (Misc. category, tile#11)
Many of these blockers were designed to work with the in-game map. The in-game map shows objects in the Wall category in bright green. Scenery objects in dark green. To keep the in-game map useful the different shades were used to make buildings stand out from the scenery. So when placing blocking hexes, use wall blockers for filling in holes in walls, and scenery blockers to fill in holes in scenery. The inviso blockers work well for blocking large areas like lakes, rad goo, etc. that you don’t want to show up on the in-game map.
Exit Grid Options - Exit Grids are the brown and green dithered areas that are used to warp the player to a new map. The art for the dithered pattern is in the Misc. category. Green is used for transitions between maps or map levels, and brown is used for transitions to the World Map. (There is also a black grid, but it's unused in the game.) You will notice that when placing grid pieces, there is a hotpoint for each that shows up light blue when Hexes are visible. That blue hex is important - for exit grids to work, the player must move across that hex. So when laying down a series of Exit Grids, make sure the grid hotpoint is facing towards where the player is entering from. And make sure an uninterrupted line of them is placed so a character always has to cross one to reach the Exit Grid.
Set Exit Grid Data - Sets the Exit grid data. After setting the data, you will mark the Exit Grid objects with the other two options. Entering -1 in “Exit Grid Dest Map” option will send the player to the World Map.
Mark Exit Grids - This will put you into a mode where you can mark exit grids to what you entered in the above command. Clicking each Exit Grid piece will mark it. Press “ESC” to exit this mode. Please note there is no indication you are in this mode. Other functions may not work until you exit this mode.
Mark All Exit Grids - This will mark ALL exit grids on the map to what was set in “Set Exit Grid Data”. It will override whatever you previously set.
Clear Map Level - Erases all objects from the map.
The remaining options are script related and are not covered in this document.
Known Problems with the Editor
The following problems exist with the editor:
Mapper will crash if the user tries to show map script after having canceled out of setting a map script. To repeat, go to Scripts -> Set Map Script. Press ESC twice to cancel out of menu. Now try to show the map script by going to Scripts -> Show Map Script. At this point the mapper will crash to the desktop.
You may encounter sporadic problems while going through and loading up all the maps - after awhile, maps may load in being completely engulfed in blackness. Moving the screen or cursor around would eventually make the blackness go away.
Occasionally if you Alt-Tab out of the editor, the taskbar entry for the editor will disappear even though the Alt-Tab list still shows the program as running. As a warning, Alt-Tab seems to screw with the editor a bit.
There is a problem when using the “Copy Map Elevation” function. Trying to copy a level to another map/elevation level, the editor will crash to the desktop with a generic “Program error” message.
Script Commands for the Editor
The following was a list of potential script commands that may prove useful for programmers and scripters out there in the fan community who are trying to decipher what does what. I do not know what the gray-shaded definition blocks mean, but it could be significant as you're tearing through the guts of these commands. Maybe gray-shaded means these commands are diseased. Or don't work. Or got cut. Explore and find out, or wait for Red! and some crazy Team X Russians to figure it out.
[For the list, please see Fallout 1 and Fallout 2 script commands]
Script Actions Summary
A request to examine (extended-look) an object.
A combat action is occurring.
This script-object is being created. (UNIMPLEMENTED).
A critter script is getting its heartbeat.
This object is taking damage.
This script-object is being destroyed.
An object is being removed from another object’s inventory and is being dropped on the ground. (UNIMPLEMENTED).
Look At Object
A brief look at an object is being requested.
Map Enter Map
This map is being entered (was just loaded).
Map Exit Map
This map is being left (is being saved as a savegame).
Map Update Map
This map is being updated (changing levels, lighting, etc.)
An attempt is being made to pickup an object and place it in an object’s inventory. Or, could be looting/stealing.
This scripts’ spatial radius has been entered.
Starting up script for first time.
A script dialogue is being requested.
Timed Event Script
A timed event has just reached activation.
Attempt to use an object.
Use Object On Object
Use an object on another object.
Use Skill On Object
Use a skill on an object.
Script Action Groups
Object actions are generic actions that can be done on any game object. For instance, if something requests to look at an object in the game, this would be valid on any of the normal (non-interface) objects. Individual prototypes of objects determine whether or not that object has certain actions available to it. So, for example, unless the prototype of the object is set to allow you to USE it, the player will never be given the option to do so.
Item actions are actions specific to those objects that the player can pick up, drop, and wear. In other words, inventory items.
Critter actions are called on objects that represent active beings in the game. In a sense, these actions only occur with ‘intelligent’ objects, which in nearly all cases are capable of movement and entering combat, dialog, etc.
Map actions are specific to special map occurrences, such as when a map is loaded, saved, or updated. Originally map actions were only available to the map script itself, but it became clear that they could potentially be needed for any script. They are extremely helpful for setting up variables at the start of a map. When a map is first entered, the map script gets run first, and then every other script which is flagged as needing to be called on enter gets called. This can be used to store map-specific variables in the map script and to ‘export’ them from there. Then any other scripts that need to use these variables just need to ‘import’ them, since they are guaranteed to exist.
Script actions relate to script-specific calls, such as when a script is being destroyed, activated by spatial movement, or previously setup timed events. These actions are not directly activated by the player (unlike object actions), but by the script system itself.
Script Action Descriptions
Description: The player is trying to examine this scripts’ object. The default behavior is to print the long description of the object from its prototype in the small display window.
Combat: Combat is occurring, and one of the combat sub-actions has occurred. These actions allow the script to react to combat (even though combat attack/etc. choices are actually handled in the engine). They are: HIT_SUCCEEDED -- The scripts’ object successfully hit it’s target. This can be used to do extra damage (radiation, for example), or to count the attacks that succeed. SEQUENCING – Combat sequencing is being checked (to see if critters want to enter/exit combat). TURN – A combat turn is just about to start. You can override the default turn behavior here to prevent a critter from reacting to combat (or to cause them to do something special). NONCOM_TURN – (UNUSED).
Critter: The critter’s heartbeat is occurring. Basically, each script gets hit every so often (should be several times a second) so that it can react to its environment or to changes in flag variables, etc. This is where the code can be put to have the critter walk, etc. on its own.
Damage: Something has occurred to damage this scripts’ object. This will almost always mean that a critter has been hit in combat. Here they could set hostile flags (that might affect dialog or quest statuses later), or they could heal themselves to prevent death (this isn’t good practice, but may be useful in one or two cases where you want to make sure the critter says something, does something, etc. before they actually die).
Destroy: This script is being destroyed, and it and all related events (timed events, for instance) are about to be removed from the system. This most likely means it is either a critter that has just been killed in combat, or that it is an inventory item that was just used up. Useful things to do when this action is called are to give the player experience points (for killing creatures or fulfilling quest objectives) and to update counts, such as the kill-counts (number of critters of a given type killed), or local counts (how many radscorpions are left in the cave, or how many gang members are left still in town).
Drop: An inventory item is being dropped from a critter’s inventory.
Look At: The player is trying to look at the scripts’ object. The default behavior is to print the short description, in other words the prototype name in the small display window.
Map Enter: The map has just been entered, and this script is flagged as needing to be run before the normal game processing starts up. Here, initialization code can setup variables for the map.
Map Exit: The map is about to be left. This occurs when the player goes to the town/world maps.
Map Update: The map is getting a ‘heartbeat’ to let it update the map. Here ambient light levels can be changed, such as when it becomes nighttime or the player changes levels to an underground/above-ground area.
None: Nothing is happening. This should never be called, but is there for the default case.
Pickup: This procedure means different things for different types of scripts: Item Scripts – A critter is attempting to pickup an inventory item. For containers, however, this means that a critter is trying to *open* it/loot it. Critter Scripts – A critter is attempting to steal from this scripts’ critter object.
Spatial: An object has just moved in this scripts’ spatial sphere of detection. The script may need to double-check that this object is of a particular type (a critter, the player’s object, etc.).
Start: A script is being run for the very first time.
Talk: A critter object is starting to talk, either because the player requested it, or because the critter’s script requested that it occur. Here the dialog system needs to be setup, and the actual script-language dialog system calls will be placed.
Timed Event: A timed-event has just gone off for this script. Usually, this event was setup earlier by this script itself. It lets the script delay events or in effect give itself a heartbeat.
Use: Something (usually a critter) is attempting to use this object. The command source_obj will return who it is. Nearly always this will mean a critter (most likely the player) is attempting to use it, but occasionally another script will make the call, which can be used to differentiate its behavior. For instance, this allows the vault door scripts to open the vault door when the player uses the vault door computer, but not when the player attempts to open the door directly.
Use Object On: A critter is attempting to use an inventory item on this scripts’ object. This could be lockpicks on a door, a medical kit on a critter, the iquana-on-a-stick on a dog, etc.
Use Skill On: A critter is attempting to use a skill on this scripts’ object. The default behavior is dependent on the specific skill itself.