Vault-Tec Labs
Advertisement

Fallout 1 and Fallout 2 scripting - commands, reference, tutorials[]

Introduction[]

The goal of this page is to consolidate any and all references, guides, and tidbits of information surrounding the Star-Trek Scripting Language used in Fallout 2. Included is a comprehensive list of all available script commands tailored to Fallout 2's game engine. Many of the entries in this list originated from Chris Avellone's documentation, namely the Fallout 2 editor introduction.

Albeit a less-pronounced focus of the page, information regarding Fallout 1 scripting is included as well. Aside from TeamX sniffing around in the original engine, this topic has seen neglect due to its lack of relevance thanks to the title's successor.

  • It's important to note that not all of the commands listed below will compile when scripting for Fallout 1. Many symbols were implemented during development of Fallout 2 and thus aren't backward-compatible with the original engine. It is very easy to tell if the command is not supported in Fallout 1 because during compiling you will see an error message like this:
Compiling OBJ_DUDE.ssl
OBJ_DUDE.ssl(87): Error! Undefined symbol fallout2scriptcommand.


Having prior programming experience in either C or Pascal will prove useful--though not entirely necessary--as the syntax of the scripting language is derived from that of both languages. Since the commands for the scripting language are written in plain English, it's easy enough to pick up in practice. For example, both code snippets below would (theoretically) render the same result:

C Syntax

int main()
{
    printf("Hello, World!\n");
}


C++ Syntax

int main() 
{
   std::cout << "Hello, world!\n"; 
}


SSL Syntax

procedure HelloWorld begin 
    display_msg("Hello, world!");
end


Script commands (alphabetically)[]

Here are links to the original files that much of this list came from. This wiki page contains updates on many of them, but the formatting of this wiki doc is poor compared to the originals. For reference:
http://www.mediafire.com/view/?i723xdhw8718tlq (.pdf) starts at page 9
http://www.mediafire.com/view/?yennrt3n26xxr09 (.doc) starts at page 9
-------------------------------------------------

A[]

action_being_used int

Script Returns the current skill () being used on a script object.

Usually seen in the form of "if action_being_used == ## then"

add_obj_to_inven void Inven

who (ObjectPtr)
item (ObjectPtr)

Adds an object (item) to another object’s (who’s) inventory. Note that this only works with objects of type Item.

AddNamedHandler void Inven

name (ObjectPtr)
proc (Procedure)

Adds named handler (proc) for event (name). Can be signaled many times.

AddNamedEvent void Inven

name (ObjectPtr)
proc (Procedure)

Adds named handler (proc) for event (name). Can be signaled only once, and removed afterwards.


add_mult_objs_to_inven void Inven

who (ObjectPtr)
item (ObjectPtr)
count (int)

Adds (count) instances of an object (item) to another object’s (who’s) inventory. Note that this only works with objects of type Item.

add_timer_event void Meta(Time)

obj (ObjectPtr)
time (int)
info (int)

Adds a timed event call to the queue, at a given time offset, to call an object’s (obj) script. Info is used to let scripts differentiate between timed event calls so that they can be hooked in multiple times. Info is read back by the script using the fixed_param operator. Note that time is in ticks (you can use game_ticks(seconds_num) to get the time in ticks from time in seconds).


anim void Anim

who (ObjectPtr)
anim (int)
direction (int)

Sets up a single-frame animation (anim) for the object (who) that runs in the given direction.


anim_action_frame int Anim

who (ObjectPtr)
frame (int)

Returns the action frame of the given art frame on a given object (who). This can be used as the delay in an animation registration sequence.

anim_busy int (boolean) Anim

who (ObjectPtr)

Returns True if object (who) is currently animating, otherwise False. This can be used to determine if a given object has completed an animation.

animate_move_obj_to_tile void Anim

who (ObjectPtr)
tile (int)
speed (int)

Sets up an animation for a critter (who) to walk to a given tile (hex) at a given speed (speed). Speed (walk/run) can also have a flag attached (see define.h) to force the object (who) to stop it’s current animation (for instance, if it was already walking somewhere) and then walk/run to the new location (tile).

animate_rotation void Anim [Fallout 2 only!]

direction (0-5)

Changes the orientation (facing) of the self-object to the given direction. Note: In Fallout 1 this can be done with the anim() command. An example:

anim(dude_obj, 1000, rotation_to_tile(tile_num(dude_obj), tile_num(Critter)));


animate_run_to_tile void Anim [Fallout 2 only!]

tile (int)

Sets up an animation for the self-object to RUN to a given tile (hex).


animate_set_frame void Anim

newFrame (int)

Changes the current animation frame of the self-object to the given frame # (newFrame). This can be used to make lights go to broken lights or to alarm/siren lights, for example. Should be used in place of animate_stand for 2-frame anims.

animate_stand void Anim

Sets up an animation for the currently focused object (self) to run it’s stand animation. This can be used to open doors, open container items (Refridgerator, for example) or to run a critter’s fidget animation.

animate_stand_obj void Anim

obj (ObjectPtr)

Sets up an animation for an object (obj) to run it’s stand animation. This can be used to open doors, open container items (Refridgerator, for example) or to run a critter’s fidget animation.

animate_stand_reverse void Anim

Sets up an animation for the currently focused object (self) to run it’s stand animation in reverse. This is used only for non-critters, to cause them to close (close doors, open containers, etc.

animate_stand_reverse_obj void Anim

obj (ObjectPtr)

Sets up an animation for an object (obj) to run it’s stand animation in reverse. This is used only for non-critters, to cause them to close (close doors, open containers, etc.)


art_anim void Anim

fid (int)

Returns the animation that this fid represents (ANIM_stand, ANIM_pickup, etc.).


attack void Combat [MACRO - located in DEFINE.H]

who (ObjectPtr)

Causes the focused object (self) to attempt to attack an object (who). Note that this is a macro to attack_complex() below.

attack_complex void Combat

who (ObjectPtr)
called_shot (int)
num_attacks (int)
bonus (int)
min_damage (int)
max_damage (int)
attacker_results (int)
target_results (int)

Causes the current object (self – must be a critter) to attempt to attack a critter (who) with various parameters modifying the combat:

called_shot – 0/1/specific means none/random/specific (head, torso, etc.)
num_attacks – the # of extra attacks the self object gets before the target
bonus – the bonus to hit the target on the first turn only
min_damage – the minimum damage that will be done the first attack
max_damage – the maximum damage that will be done the first attack
attacker_results – what state the attacker ends in after the first attack
target_results – what state the target ends in after the first attack



attack_setup void Combat

who (ObjectPtr)
victim (ObjectPtr)

Sets up an attack from who on victim, without expecting this script to be involved. Can be used to setup attacks on critters from the map script. car_current_town int Map Returns the current town area the car can be found at. Area #’s can be found in scripts\headers\maps.h car_give_to_party int Map Gives the car to the party, and takes them to the worldmap.

C[]

car_give_gas int Map   '' [Fallout 2 only!]

amount (int)

Gives the car a given amount (amount) of gas.


combat_difficulty int

Returns the current Combat difficulty level of the game (defined in the options screen).


combat_is_initialized int

Returns True if the system is currently in combat mode, False otherwise.

ClearNamed void

event (string)

Removes all handlers for named event (event).

create_object int (?) Object [MACRO - located in DEFINE.H]

pid (int)
tile_num (int)
elev (0-2)

Creates a new object of prototype (pid), placing it at a given tile # and at a given elevation. If the prototype indicates a script should be attached, then it will be.


create_object_sid int (?) Object

pid (int)
tile_num (int)
elev (0-2)
sid (int)

Creates a new object of prototype (pid), placing it at a given tile # and at a given elevation. If sid is not -1, then it indicates that the default script should be overriden by this new script #.

critter_add_trait int Critter

who (ObjectPtr)
trait_type (int)
trait (int)
amount (int)

Adds a particular trait (trait) of a given type (trait_type) to a particular critter (who). Possible traits under the SPECIAL system are limited to:

Perks
Traits
Object-instance information (such as team #’s, ai-packet #’s, etc.)


critter_attempt_placement int Map

who (ObjectPtr)
hex (int)
elev (0-2)

Attempts to place a critter at a given destination hex & elevation, if it fails, then it tries to find a nearby hex that is that is as near as possible to the start hex. No LONGER checks to see if the hex is visible on-screen.


critter_damage void Critter   [Macros Fallout 2]

who (ObjectPtr)
dmg_amount (int)

Inflicts damage on a critter (who) of a given amount, killing it if necessary.


critter_heal void Critter

who (ObjectPtr)
amount (int)

Heals a critter for a given amount (if given a value above their MaxHP will go up to their maximum HP). [Note: can also input negative amounts, causing the critter to be hurt for that amount. This is useful because it bypasses all resistances and thresholds. Sduibek (talk) 18:03, August 4, 2012 (UTC)]


critter_injure int Critter

who (ObjectPtr)
how (int)

Injures a given critter (who) by crippling given limbs/body parts (defined by DAM_CRIP_ARM_LEFT, DAM_BLIND, etc. in define.h)

critter_inven_obj (ObjectPtr) Critter/Inven

who (ObjectPtr)
where (int)

Returns a pointer to an object that is in a given spot (NULL if none). The appropriate values for where are: INVEN_TYPE_WORN, INVEN_TYPE_RIGHT_HAND, and INVEN_TYPE_LEFT_HAND.


critter_is_fleeing int Critter

who (ObjectPtr)

Returns True if the critter object (who) has its FLEE flag set.

critter_mod_skill int Critter

who (ObjectPtr)
skill (int)
amount (int)

Modifies a given skill in a given critter object (who) by a given amount. Note: this currently is only valid on the player (obj_dude) object.


critter_rm_trait int Critter

who (ObjectPtr)
trait_type (int)
trait (int)
amount (int)

Removes a particular trait (trait) of a given type (trait_type) from a particular critter (who). (See critter_add_trait.)


critter_set_flee_state int Critter

who (ObjectPtr)
flee_on (Boolean)

Sets the FLEE flag on or off. This controls whether the critter flees during combat.


critter_skill_level int Critter [Fallout 2 only]

who (ObjectPtr)
skillNum (int)

Returns the current skill level of a particular object’s (who) skill (skillNum).


critter_state int Critter

who (ObjectPtr)

Returns the state of a given critter object (from combat data), used to determine if a critter is dead, unconscious, etc.


critter_stop_attacking int Critter

who (ObjectPtr)

Flags the critter object (who) as no longer wishing to be active in combat.

cur_map_index int Map

Returns the index # of the current map, to be matched with the define-constant in Maps.h.

cur_town int Map

Returns the index # of the current town, to be matched with the define-constant in Maps.h.

days_since_visited int Map

Returns the number of days since this map was last visited, or (-1) if it has never been visited before.

D[]

debug_msg void Debug

text (string)

Prints a string to the debug monitor. Should be used exclusively for debug information, instead of display_msg()! The user will never see these messages unless they have debugging enabled and activated. If they have debugging enabled and DEBUGLOG set, the messages will only show up in debug.log file.

destroy_object int Object

obj (ObjectPtr)

Destroys an object (obj), which will call its script in the destroy_proc section if the object is *NOT* the calling object.

destroy_mult_objs int Object

item (ObjectPtr)
count (int)

Destroys count number of instances of an item object. This function will figure out which inventory this item is in (if it isn’t on the ground). If it is on the ground, of course, there is only one instance of this object, so only one will be destroyed.

dialogue_reaction void Dialog

mood (int)

Set up a reaction animation in the dialogue system.


dialogue_system_enter void Dialog

Tells the dialog system that this object is requesting the talk system. This is used when the script wants to start dialog instead of waiting for the player to initiate it. The script will be called back in its talk_proc section.

difficulty_level int

Returns the current Game difficulty level of the game (defined in the options screen).

display_msg void

message (string)

Displays a string on the in-game PDA display (lower-left hand corner).


do_check int (roll_result) Skill

who (ObjectPtr)
check (int)
modifier (int)

Do a check/test-roll versus one of the various basic traits (strength, perception, etc.). Note: these cannot generate Critical Success or Critical Failure as they are a basic X==Y check.


drop_obj void Inven

obj (ObjectPtr)

Causes the critter self-object to remove a given object (obj) from it’s inventory and place it on the ground at its hex. This animates the self_obj.

drug_influence int Critter

who (ObjectPtr)

Returns True if a given critter object (who) is currently under any drug influences, False otherwise. dude_obj (ObjectOtr) Returns a pointer to the dude object (the player).


E[]

elevation int Map

obj (ObjectPtr)

Returns the current elevation being displayed.


end_dialogue void Dialog

Terminates the dialogue system. endgame_movie void Meta Plays the endgame movie.


endgame_slideshow void Meta

Plays the endgame slideshow. The slideshow will fade in to its palette, so it is proper to call gfade_out(1) and then expect this command to fix the palette for you.


explosion int Anim

where (int)
elevation (0-2)
damage (int)

Sets up an explosion at a given tile number (where) on a given elevation, that will cause damage in a radius.

F[]

fixed_param int

Returns the value of the script's fixed parameter. This is used with add_timer_event, for instance, to pass the info parameter back to the script.


float_msg void

who (ObjectPtr)
msg (str)
type (int)

Attempts to create a floating-text message (str) attached to an object (who) using colors dictated by type. There are two special types, WARNING and SEQUENTIAL. WARNING is used to print a message centered on the screen (such as for end-of-quest notifications), and SEQUENTIAL will cycle through the colors, in an attempt to give critters different-colored messages to differentiate them.


G[]

game_ticks int Time

seconds (int)

Returns the number of game ticks equal to a given # of seconds.


game_time int Time

Returns the current game time in ticks.


game_time_advance void Time

amount (int)

Advances the current game time by (amount) ticks.


game_time_hour int Time

Returns the current hour of the day in a normal format, but without the colon. For example, the current starting game time is 721 (which is 7:21 am).

game_ui_disable void Meta

Disables game user-interface input from the player (to ‘lock-out’ the player). You *MUST* make sure to re-enable the UI at some point afterwards.

game_ui_enable void Meta

Re-enables game user-interface input from the player. This *MUST* be called relatively soon after disabling the UI or the player will be stuck, unable to do anything.


game_ui_is_disabled int Meta

Returns True if the game UI is currently disabled (the player is currently ‘locked-out’), and False otherwise.

gdialog_barter int Dialog [MACRO located in DEFINE.H]

Tells the dialog system to switch to the barter screen. (Sets the barter modifier to 0).


get_critter_stat int Critter

who (ObjectPtr)
stat (int)

Returns the value of a desired attribute/stat in a critter object (who).

get_day int Time

Returns the current day of the month.

gdialog_mod_barter int Dialog

modifier (+/- percent)

Tells the dialog system to switch to the barter screen, using a given modifier.

get_month int Time

Returns the current month of the year.

get_pc_stat int Critter

pcStat (int)

Returns the value of a desired pc-only stat of the obj_dude. These are found in define.h all starting with “PCSTAT_”.

get_poison

Critter
who (ObjectPtr)

Returns the value of a given critters’ (who) poison level. NOTE: In Fallout 1 this gives an error message. Instead use:

get_critter_stat(dude_obj, 36)


gdialog_set_barter_mod void Dialog

mod (int)

Sets the current modifier for barter to a given percentage (mod). Used to make barter easier/harder, even if the player initiates barter (as opposed to the script starting it.)

gfade_in void Meta

time (int)

Does a palette fade to black. The Time parameter is currently not actually used.


gfade_out void Meta

time (int)

Does a palette fade from black to the game palette. The Time parameter is currently not actually used.

giQ_Option void Dialog

iq_test (int)
msg_list (int)
msg_num (int)
target (procedure)
reaction (int)

Sets up an option-choice for a reply block if the player’s IQ statistic is equal to or greater than a given value (iq_test), getting the string from the message file (msg_list) and message number (msg_num), which will cause a given reaction (reaction), and if chosen will jump to the given (target) procedure.

give_exp_points void

points (int)

Adds experience points (points) to the player’s total. These points may then be used by the player to enhance skills, etc.

global_var int Map

var_index (unsigned int)

Returns the value of a global variable # (var_index).

goto_xy

Map

(Moves the character to the specific map?) Sduibek (talk) 18:03, August 4, 2012 (UTC)


gSay_End void Dialog

var_index (unsigned int)

Ends a dialog sequence, which will bring up the sequence (actually display it).


gSay_Message void Dialog

msg_list (int)
msg_num (int)
reaction (int)

Sets up a sayMessage, which is a reply with just a [Done] option. The msg_list determines which message file to look in, and the msg_num determines which line to use from the file.


gSay_Option void Dialog

msg_list (int)
msg_num (int)
target (procedure)
reaction (int)

Sets up an option-choice for a reply block, getting the string from the message file (msg_list) and message number (msg_num), which will cause a given reaction (reaction), and if chosen will jump to the given (target) procedure.

gSay_Reply void Dialog

msg_list (int)
msg_num (int)

Sets up a reply block (what the *CRITTER* says). gSay_Start void Dialog Starts a new dialog sequence.

H[]

has_skill int Skill

who (ObjectPtr)
skill (int)  [0 to 17]

This returns the level of the skill of the target critter. (0 to 200 for Fallout 1), (0 to 300 for Fallout 2)

has_trait int Critter

trait_type (int)
who (ObjectPtr)
trait (int)

Returns the value of a given critter object’s (who) trait of a given Trait_type (see define.h). This can be used to determine if the player has a particular Perk, AI Packet, team num, current rotation, or Trait (finesse, bruiser, etc.).

how_much int Skill

val (int)

Returns the value of a completed skill vs. skill contest (how much the rolls differed by). This requires that you first call one of the contest roll commands, such as roll_vs_skill, skill_contest, etc...

I[]

inven_count int Critter

what (ObjectPtr)

Returns the count of how many inventory slots are filled on a given object (what).


inven_ptr (ObjectPtr) Critter

what (ObjectPtr)
slotNum (int)

Returns a pointer to the object in slot # (slotNum) in a given object (what).


inven_unwield void

Critter Attempts to cause a critter to unwield any wielded weapons/items. If animations are currently disabled, it will just instantly change the art.


is_critical int Skill

val (int)

Returns True if a given contest roll result is a critical result, otherwise False.


is_loading_game boolean Map [MACRO defined in DEFINE.H]

Returns True if the game is currently loading, False otherwise. This is used so that bad things don’t happen on game load because a script is doing map_enter setup stuff.


is_skill_tagged int Skill  (Fallout 2 only!)

skillNum (int)

Returns True if a given skill is tagged.


is_success int Skill

val (int)

Returns True if a given contest roll result value is a success, otherwise False. Can generate Critical Success or Critical Failure as well.


item_caps_adjust int Inven

obj (ObjectPtr)
amount (int)

Modifies the current caps count in an object (obj) by a given amount (amount). Can be positive or negative.


item_caps_total int Inven

obj (ObjectPtr)

Returns the current caps total in a given object’s (obj) inventory.

J[]

jam_lock int Object

lockableObj (ObjectPtr)

Jams a lock, which prevents the player from picking the lock for approximately 24 hours. Meant to be used when a player critically fails to pick a lock.


K[]

kill_critter void

obj (ObjectPtr)
death_frame (int)

Kills a critter (obj) outright, placing it in the chosen death frame. Note: this does NOT animate the critter, and does NOT refresh the screen! It is meant to be used in scripts run when entering/exiting a map (map_init/map_exit).


kill_critter_type void Map

pid (int)

Kills all critters of a given type (pid) outright. See kill_critter above. NOTE: This can result in the "frozen bodies" issue! kill_critter should always be used instead if possible, for this reason. Frozen bodies causes no actual gameplay issues, but it looks unrealistic and ridiculous.


L[]

language_filter_is_on int (boolean) Meta Returns True if the language filter is currently filtering harsh language, False otherwise.


load_map void Map

map_name (string or int)
start_location (int)

Loads a new map (map_name), removing all scripts currently running and passing on the entrance location (start_location) to the new map’s map_init script. Can also use the number representing the map in the map list (for example, between 0 to 64 in Fallout 1)

local_var int Map

var_index (unsigned int)

Returns the value of a local variable of given index # (var_index). If the user is not allowed local vars up to this number in the list of critters, this can generate errors. (see debug.log)


M[]

map_first_run int Map [MACRO defined in DEFINE.H]

Returns True if the current map is being run for the first time (in other words, this map was not loaded from a save-game).


map_is_known int Meta

mapNum (int)

Returns True if a given map index (mapNum) is known, False otherwise.


map_known int Meta

mapNum (int)

Returns True if a given map # (mapNum) is known, False otherwise.


map_var int Map

var_index (unsigned int)

Returns the value of a map-global variable of a given index # (var_index).


mark_area_known({int mark_type}, {int area}, {int mark_state});

mark_type (int)  //-- MARK_TYPE_TOWN, MARK_TYPE_MAP
area (int)       //-- Area Names listed in MAPS.H header file
mark_state (int) //-- MARK_STATE_UNKNOWN, MARK_STATE_KNOWN,
                 //-- MARK_STATE_VISITED, MARK_STATE_INVISIBLE

Set location status on the world map. Hides or un-hides towns/villages/etc on the world map. The TYPE's and STATE's are listed in define.h/define_lite.h header files.

message_str char *

list (int)
msg_num (int)

Returns a string from the message module for a given list and a given # (msg_num).


move_to int Map

obj (ObjectPtr)
tile_num (int)
elev (0-2)

Immediately moves an object (obj) to the given tile number and elevation on the current map.


move_obj_inven_to_obj int Inven

srcObj (ObjectPtr)
destObj (ObjectPtr)

Moves an object’s (srcObj) entire inventory into another object’s (destObj) inventory.


O[]

obj_art_fid (ObjectPtr) Object

obj (ObjectPtr)

Returns the fid # (used to index art) of a given object (obj). obj_being_used_with (ObjectPtr) Object Returns a pointer to the object being used on another object.


obj_can_hear_obj boolean Map

src_obj (ObjectPtr)
dst_obj (ObjectPtr)

Returns True if the source object (src_obj) is capable of hearing the destination object (dst_obj). This includes distance factors, current activity (standing/walking/running), and skill use (stealth/etc.).


obj_can_see_obj boolean Map

src_obj (ObjectPtr)
dst_obj (ObjectPtr)

Returns True if the source object (src_obj) has line-of-sight (LOS) with the destination object (dst_obj). This also takes into account perception & stealth rolls of the objects are critters.


obj_carrying_pid_obj (ObjectPtr) Object

who (ObjectPtr)
pid (int)

Returns an Object pointer to an instance of an object of type pid if an object (who) is carrying an object of that type.


obj_close void Object

what (ObjectPtr)

Attempts to close a given object (what) if it is of an openable type.


obj_drop_everything void Inven

who (ObjectPtr)

Causes a critter object (who) to drop all objects in it’s inventory and drop it on the ground at its feet.


obj_is_carrying_obj_pid boolean Object

obj (ObjectPtr)
pid (int)

Returns the quantity of objects with matching prototype index #’s (pid) carried in the inventory of another object (obj).


obj_is_locked int Object

what (ObjectPtr)

Returns True if a given object (what) is a locked object, False if it is unlocked or not a lockable object.


obj_is_visible_flag int Object   [Fallout 2 only!]

who (ObjectPtr)

Returns True if a given object (who) is turned on (visible), False otherwise.


obj_is_open int Object

what (ObjectPtr)

Returns True if a given object (what) is an open object, False if it is closed or not an openable object.


obj_item_subtype int Object

obj (ObjectPtr)

Returns the subtype of an object of type 'item'. Examples would be food, armor, weapons, etc.


obj_lock void Object

what (ObjectPtr)

Attempts to lock a given object (what) if it is of a lockable type.


obj_name void Object

what (ObjectPtr)

Returns a string representing the name of the given object (what).


obj_on_screen int Object

what (ObjectPtr)

Returns True if a given object (what) is currently being drawn on-screen, False if it is not.


obj_open void Object

what (ObjectPtr)

Attempts to open a given object (what) if it is of an openable type.


obj_pid int Object

obj (ObjectPtr)

Returns the prototype id # (pid) of an object (obj).


obj_set_light_level void Object

obj (ObjectPtr)
intensity (1-100)
distance (0 - 8)

Set the light level for an object to a given intensity (percentage of possible maximum intensity), and distance of light in hexes.


obj_type int Object

obj (ObjectPtr)

Returns the type of an object (obj). This would be ‘Item’, ‘Wall’, ‘Scenery’, etc.


obj_unlock void Object

what (ObjectPtr)

Attempts to unlock a given object (what) if it is of a lockable type.


override_map_start void Map

x (int)
y (int)
elev (0-2)
rot (0-5)

Used when loading a new map, this forces the player (obj_dude) to start at a particular location and rotation when first coming up.

[How do we know where the X and Y coordinates are? Sduibek (talk) 18:03, August 4, 2012 (UTC)]

P[]

party_add void Party

who (ObjectPtr)

Adds a given critter (who) into the list of party members. This will also setup those objects so that they will not be saved in maps, and certain other things.


party_member_obj ObjectPtr Party

pid (int)

Returns an ObjectPtr to a party member that matches a given pid. If that critter isn’t currently a member of the party, then it will return NULL.


party_member_count ObjectPtr Party

countHidden (int)

Returns the count of the currently in-party party members. (countHidden) determines whether or not to count the hidden members (hangers-on).


party_remove void Party

who (ObjectPtr)

Removes a given critter (who) from the list of party members. This will also change those objects so that certain object- and map-level things will respond differently to them.


pickup_obj void Inven

obj (ObjectPtr)

Causes the critter self-object to animate and attempt to pick up a given object (obj). If used in regard to a critter, this flag is pinged when a steal detect fails. In other words when detected stealing, pickup_obj is called for the person you were stealing from.


play_gmovie

Meta

Plays one of the Fallout movies (full-screen, compressed, etc.).


play_sfx

Sound

Starts a new sound effect to be played on the queue.


poison Critter

who (ObjectPtr)
amount (int)

Modifies the critter's poison level by a given amount. Positive numbers increase their level of poisoning, negative numbers decrease it. Thus, by using

poison(Critter, get_critter_stat(Critter, 36))

you can remove all poisoning of the critter.


proto_data int OR string Object

pid (int)
data_member (int)

Returns the value of a data-member of a given prototype (pid).

.

R[]

radiation_dec

Critter
who (ObjectPtr)
amount (int)

Decrements a critter’s radiation counter by a given amount. NOTE: This should only be done to the player (obj_dude) in Fallout due to design restrictions!


radiation_inc

Critter
who (ObjectPtr)
amount (int)

Increments a critter’s radiation counter by a given amount. NOTE: This should only be done to the player (obj_dude) in Fallout due to design restrictions!


random int Script

min (int)
max (int)

Returns a random value between (min) and (max), inclusive.


reg_anim_animate void Anim

what (ObjectPtr)
anim (int)
delay (int)

Adds a single, in-place animation on an object (what) to an animation sequence-list, at a given delay from the previous animation (delay should always be -1)!


reg_anim_animate_forever void Anim

what (ObjectPtr)
anim (int)
delay (int)

Adds a single, in-place animation on an object (what) to an animation sequence-list, at a given delay from the previous animation (delay should always be -1)! This animation will animate continuously until something in the system interrupts it. To be used *very* sparingly, for instance Gizmo’s sign and the ‘pray’ signs in the children of the cathedral (which will have to be toned down).


reg_anim_animate_reverse void Anim

what (ObjectPtr)
anim (int)
delay (int)

Adds a single, in-place reversed animation on an object (what) to an animation sequence-list, at a given delay from the previous animation (delay should always be -1)! reg_anim_begin void Anim Tells the system to start an animation sequence-list.


reg_anim_clear void Anim

object (ObjectPtr)

Terminates all animations that are currently registered for a given object.

reg_anim_end void Anim

Activates the animation sequence-list. Without this call the animation will never occur. Note: All animation sequences must be registered at ONCE! In other words, you cannot let the script end and finish registering the animations later.


reg_anim_obj_move_to_obj void Anim

who (ObjectPtr)
dest_obj (ObjectPtr)
delay (int)

Adds an animation to cause a critter object (who) to attempt to walk to another object (dest_obj) at a given delay from the previous animation (delay should always be -1)!


reg_anim_obj_run_to_obj void Anim

who (ObjectPtr)
dest_obj (ObjectPtr)
delay (int)

Adds an animation to cause a critter object (who) to attempt to run to another object (dest_obj) at a given delay from the previous animation (delay should always be -1)!


reg_anim_obj_move_to_tile void Anim

who (ObjectPtr)
dest_tile (int)
delay (int)

Adds an animation to cause a critter object (who) to attempt to walk to a given destination tile number (dest_tile) at a given delay from the previous animation (delay should always be -1)!


reg_anim_obj_run_to_tile void Anim

who (ObjectPtr)
dest_tile (int)
delay (int)

Adds an animation to cause a critter object (who) to attempt to run to a given destination tile number (dest_tile) at a given delay from the previous animation (delay should always be -1)!


reg_anim_play_sfx void Anim

who (ObjectPtr)
sfx_name (string)
delay (int)

Adds an animation to cause an object (who) to attempt to play a given sound effect (sfx_name) at a given delay from the previous animation!


rm_fixed_timer_event void Meta(Time)

who (ObjectPtr)
fixed_val (int)

Removes (clears) all timer events hooked to a given object’s (obj) script that have a given fixed_value (fixed_val).


rm_obj_from_inven void Inven

who (ObjectPtr)
obj (ObjectPtr)

Removes an object (obj) from another object’s (who’s) inventory. Note: this leaves the removed object in at location (0,1) on the map! You must call move_to(…) to place it back on the map.


rm_mult_objs_from_inven int Inven

who (ObjectPtr)
obj (ObjectPtr)
count (int)

Removes (count) instances of an object (obj) from another object’s (who’s) inventory. Note: this leaves the removed object in at location (0,1) on the map! You must call move_to(…) to place it back on the map. NOTE: This function returns the actual count that was removed (if you attempted to remove more instances than existed). You *MUST* store this value in a variable (though you don’t have to actually do anything with it).


rm_timer_event void Meta(Time)

obj (ObjectPtr)

Removes (clears) all timer events hooked to a given object’s (obj) script.


roll_dice Critter skill

Critter (obj)
Skill (int)

Returns the value of the completed dice roll. NOTE: Avellone says this is unimplemented


roll_vs_skill int (roll_result) Skill

who (ObjectPtr)
skill (int)
modifier (int)

Returns the value of a completed skill roll made upon an object’s (who’s) skill level with a given skill, and modified by a given amount (may be zero). This value may then be passed to is_success and is_critical to determine the appropriate states, and the how_much call can be used to determine the difference succeeded or failed by.


rotation_to_tile int (1…5) Map

srcTile (int)
destTile (int)

Returns the rotation (0…5) to face a particular tile (destTile) from a particular tile (srcTile).


running_burning_guy int

Returns the setting for the running-burning-guy in the game (defined in the options screen).

S[]

scr_return void Script

Sets the return value for a scripts C-engine node, to be used by C code.

script_action int

Script Returns the action that has activated this script. Examples include requests for the description of an object (description_proc), notifications of a spatial script being activated by something hitting its boundary (spatial_proc), or a critter being given its heartbeat (critter_proc, in other words being told to move).

script_overrides void Script

Tells the C-engine that the script will override default behavior for the object. What this means is that the C-engine will not attempt to do things that it would normally do, in expectation that the script will handle those things itself. This is an IMPORTANT command! It is commonly used for the general player actions upon objects, such as looking at them (requesting a description), using them (opening doors, for example), or using items ON them (using a picklock or a key on a door lock).

self_obj (ObjectPtr) Script

Returns a pointer to the object connected to this script.


set_critter_stat int Critter

who (ObjectPtr)
stat (int)
val (int)

Sets the value of a desired attribute/stat in a critter (who) to a given value (val).


set_exit_grids void Map

markElev (elevation)
mapID (int)
elevation (int)
tileNum (int)
rotation (int)

Sets all exit grids on a given elevation (markElev) to point to a destination mapID (may be -1 which means stay on this map), elevation, tileNum, and rotation.


set_global_var void

var_index (unsigned int)
value (int)

Sets the value of a global variable (var_index) to a given (value).

set_light_level void Map

level (int: 1-100)

Sets the ambient light level. The range is Full Darkness to Full Daylight.

Caution: Full darkness is not black screen! set_light_level(0) actually corresponds to 25% brightness, and has 2 huge jumps in the middle. Certain brightness levels simply cannot be set. Refer to light levels page for disambiguation.

set_local_var void Map

var_index (unsigned int)
value (int)

Sets the value of a local variable (var_index) to a given (value).

set_map_var void Map

var_index (unsigned int)
value (int)

Sets the value of a map-global variable (var_index) to a given (value).

set_map_start void Map

x (int)
y (int)
elev (0-2)
rot (0-5)

Sets the start location & rotation for the next time this map is entered (loaded & run).

set_obj_visibility void Object

obj (ObjectPtr)
visibility (boolean)

Sets the OBJ_OFF flag for an object (makes it not drawn).

sfx_build_weapon_name str

int gsound_sfx_weapon_action_type
ObjectPtr what
int hit_mode
ObjectPtr who

Generates a string: The name of the acm file that is used by the reg_anim_play_sfx function. Used to get the sound effects associated with the weapon (what) located on the character (who).


sfx_build_char_name str

ObjectPtr who
int anim_num
int gsound_character_extra

Generates a string: The name of the acm file that is used by the reg_anim_play_sfx function. Used to get the sound effects associated with the critter (who) based on the animation (anim_num).

signal_end_game void

Tells the system that a script is indicating the game should be ended. This will return the player to the main-menu.

SignalNamed void

event (string)

Calls events and/or handler for given name (event). See AddNamedEvent and AddNamedHandler to add handlers. This basically just calls the appropriate procedures.


skill_contest [NOTE: UNIMPLEMENTED in Fallout 1]

Skill

Returns the value of a completed skill vs skill contest (to run through is_success & is_critical).


source_obj (ObjectPtr) Script

Returns a pointer to the source object (activator) for this action. The source object for a pickup_proc (pickup an object script_action) would be the critter picking the object up, for instance.


start_dialogue void Dialog

who (ObjectPtr)
mood (int)

Start the dialogue system focusing on a critter (who) and starting in a given (mood). This call sets up the appropriate dialog windows, head art, etc. If this call is not made before the normal dialog calls (sayReply, sayMessage, sayOption, etc.) then the dialog windows will not come up, and only grey boxes will appear with the text.


start_gialog void Dialog

msgFileNum (int)
who (ObjectPtr)
mood (int)
headNum (int)
backgroundIdx (int)

Start the dialogue system focusing on a critter (who) and starting in a given (mood). This call sets up the appropriate dialog windows, head art, etc. If this call is not made before the normal dialog calls (sayReply, sayMessage, sayOption, etc.) then the dialog windows will not come up, and only grey boxes will appear with the text.

T[]

target_obj (ObjectPtr) Script

Returns a pointer to the target object for this action. The target object is what is being acted upon.

terminate_combat void Combat

Tells the combat system to terminate prematurely. USE WITH CAUTION. This doesn’t prevent another (or even the SAME) script from re-starting combat, so make sure you turn off any hostile flags, etc.


tile_contains_obj_pid boolean Map

tile (int)
elev (0-2)
pid (int)

Returns True if a particular tile contains an object with a matching prototype index # (obj pid).


tile_contains_pid_obj boolean Map

tile (int)
elev (0-2)
pid (int)

Returns a pointer to the first object that matches a particular pid # that is on a particular tile and elevation.


tile_distance int Map

tile1 (int)
tile2 (int)

Returns the tile distance between two tile #'s.


tile_distance_objs int Map

obj1 (ObjectPtr)
obj2 (ObjectPtr)

Returns the tile distance between two objects (between their tile #’s).


tile_is_visible boolean Map

tile (int)

Returns True if a given hex (tile) is currently visible, i.e. an object on it could conceivably be displayed on-screen. This includes hexes that may technically have bases that are off-screen, but on whom objects could exist that would bound into the actual display area.


tile_num int Map

obj (ObjectPtr)

Returns the tile number of object (obj).


tile_num_in_direction int Map

start_tile (int)
dir (0-5)
distance (int)

Returns the tile number of a tile offset from a starting tile in a given direction (the next tile in that direction).


tile_set_center

tileNum (int)

Centers the screen on the hex number passed in on the ground floor only (level 0). To center on other floors, use the long form version: metarule3(METARULE3_TILE_SET_CENTER,tileNum,elevation,0)

---*(not sure what the last 0 is used for)*


town_known int Meta[]
townArea (int) // Area Names located in MAPS.H

Returns True if a given town area (townArea) is known, False otherwise. MARK_STATE_UNKNOWN and MARK_STATE_KNOWN are defined in define.h header file, and used here.


town_map void

Sends a request for the game engine to bring up the Town Map screen, for the player to go to different locations in an area (different areas in Vault13, for example).

This function is only available in FO1 (ref)

U[]

use_obj (ObjectPtr) Script

obj (ObjectPtr)


use_obj_on_obj (ObjectPtr) Script

item (ObjectPtr)
targetObj (ObjectPtr)

Attempt to use an item object on a target object (targetObj). This could be used to have a critter use a Stimpack on the player, for instance, or to use a key on a door.


using_skill boolean Skill

who (ObjectPtr)
skill (int)

Returns True if an active skill is being used, False otherwise. Examples of active skills are Stealth and First Aid.


V[]

violence_level_setting int (boolean) Meta [Fallout 2 only!]

Returns the current setting of the violence level. See define.h for values.

W[]

wield_obj void Inven [MACRO - located in DEFINE.H]

obj (ObjectPtr)

Sets up an animation causing a critter (self_obj) to wield an object (obj) in that critters’ inventory. This puts that object in the critter’s hand.


wield_obj_critter void Inven

who (ObjectPtr)
obj (ObjectPtr)

Sets up an animation causing a critter (who) to wield an object (obj) in that critters’ inventory. This puts that object in the critter’s hand.

The documentation is incomplete here. Wielding an armor actually wears it, although wielding it to the obj_dude is a bit bugged in that it only changes the obj_dude's stats and doesn't update the displayed model until the PC opens the inventory and closes it. Velizar 12:06, July 19, 2019 (UTC)

wm_area_set_pos void

areaIdx (int)
xPos (int)
yPos (int)

Sets the World Map coordinates for a given area/town (areaIdx) to a given x and y position.


world_map void

Sends a request for the game engine to bring up the World Map screen, for the player to move around to different locations.



world_map_x_pos int

Returns the current X Position of the party on the World Map.


world_map_y_pos int

Returns the current Y Position of the party on the World Map.

.

Script Functions Reference[]

.

proto_data(obj_pid(dude_obj), 1)

This is a string containing the player's name.


Fallout 1[]

procedure critter_p_proc (script_action == 12)[]

  • NOTE: Can also appear as "Critter_Action"
  • EXPLANATION/FUNCTION: Do they see you, should they wander, should they attack you, etc. This is "pinged" constantly (10 times a second I believe), so you should use it for things that need to be checked on a continous basis.
  • Is not called or run during combat.
  • For some critters, it ONLY works if you name as Critter_Action, and will be ignored if you put your code in critter_p_proc. It's not known why this is the case.

[need to check if it also isn't checked during combat for Dude_obj] Sduibek (talk) 21:17, August 6, 2012 (UTC)


procedure combat_p_proc (script_action == 13)[]

  • EXPLANATION/FUNCTION: In other words, does COMBAT_IS_INITIALIZED global flag == 1 (true)?
subset-- (fixed_param == 4) end of round
subset-- (fixed_param == 2) attack connects (e.g. used by Radscorpions for poisoning obj_dude)

procedure damage_p_proc (script_action == 14)[]

  • EXPLANATION/FUNCTION: has this Critter or Object been shot, hit with TNT, punched, etc.
  • EXAMPLE:
procedure damage_p_proc
begin
/*
   When critter takes damage, and damage came from player or player's buddy,
   AND the critter can SEE who hurt them, attack whomever hurt them.
   Also check to make sure combat isn't already taking place, to avoid crashes:
*/
	variable LVar7 := 0;    // Temporary variable, name doesn't matter
	LVar7 := source_obj;    // Who or what is "creating" the damage?

// Damage came from player, or party member (e.g. Ian)
	if ((LVar7 == dude_obj) or party_member_obj(LVar7))

// Is source of damage seen by recipient of damage?
             and obj_can_see_obj(self_obj, LVar7)

// Make sure combat isn't already running
             and not(combat_is_initialized)
        then begin
		attack_complex(LVar7, 0, 1, 0, 0, 30000, 0, 0);  //Attack source
	end
end
Sduibek (talk) 21:17, August 6, 2012 (UTC)


critter_injure(dude_obj, 1);[]

  • This is seen in a number of scripts. As far as I can tell, it does nothing. Sduibek (talk) 21:17, August 6, 2012 (UTC)


pc_stat(1)[]

Integer that hold's the player's current experience level. So running "get_pc_stat(1)" checks and returns the number of the player's current level.


get_critter_stat(dude_obj, #) :[]


0 Strength
1 Perception
2 Endurance
3 Charisma
4 Intelligence
5 Agility
6 Luck

.

Getting Started![]

Fallout 1[]

While there has not been as much focus on Fallout 1 scripting in the modding community than Fallout 2 (except by TeamX perhaps) the good news is that scripting in Fallout 1 is easier, from getting set up, to editing, to compiling! Ironically the hurdles you have to overcome to get going on Fallout 1 scripting are much, much smaller than those for Fallout 2. The scripting itself is more messy however because direct references have to be used instead of words sometimes [for example, float_msg("hi", 2) instead of float_msg("hi", TEXT_COLOR_RED)].

(If you are familiar with the C programming language, this is because Fallout 1 scripting doesn't support #define commands, so all commands are used directly.)

Unlike Fallout 2, Fallout does not require any of the following to get going on scripting:

  • Deleting files
  • Messing with Mapper2
  • Running weird batch files (unless you make one yourself; see below)
  • Environmental Variables
  • Watcom

{C}All you need to do is extract the INT (encoded script) files from your master.dat, convert them to SSL (i.e. decompile them) and begin editing in your favorite text editor. So what you need is:

  • master.dat from Fallout 1
  • f1undat (or other Fallout1-compatible .DAT-file extractor/explorer)
  • int2ssl
  • Decompiled script (INT) files
  • Text editor
  • sslc_f1 (to compile your edited SSL scripts back to INT format for usage in Fallout; see below)

{C}The files you need are in master.dat/DATA/SCRIPTS and are {scriptname}.int files

Easy, right? Yep.

  1. First, extract them using F1UNDAT -- download here Then put f1undat into your Fallout folder and run this command: f1undat -es master.dat int
  1. You will see output something like this, for about 950 files (ZAX.INT should be the last one)Fo1scripting
  2. Next, you need to decompile these so they're readable and editable. download int2ssl hereand unzip it to whatever directory you just extracted the INT files into.
  3. I've made a batch file to decompile these files for you. Download hereand run it in the folder containing your .int files and int2ssl.exe. Note: this conversion process may take several minutes. Go grab a coffee or something while you wait.
  4. Edit them in your favorite text editor :)
  5. To recompile the scripts (so that Fallout 1 can use them) you need to run sslc_f1 on each script. I also have a batch file for this, download here
  6. Run the tool from #6 whenever you're done working on your scripts and want them all moved into the Fallout folder.

***NOTE: That batch files assumes Fallout is installed in C:\Games\Fallout and also will automatically overwrite all .INT (script) files in the path C:\Games\Fallou\DATA\SCRIPTS -- Furthermore, it will delete all .INT and .BAK files in the directory it's run in. You have been warned! I'm not responsible for data loss. Sduibek (talk) 20:45, August 6, 2012 (UTC)



Fallout 2[]

(stuff here later)

.

See also (tutorials, etc.)[]

Commands, macros, procedures, variables, operators and headers

How to decompile a script

Dialogue scripting

Scripting - Now that you've started...

Fallout scripting language (de dood)

FSE tool – advanced options, script editing


External Links[]

Fallout 1[]

Fallout 1 - Reference tables for scripts, stats, critters.


Fallout 2[]

Scripting and dialogues -- Fallout 2 Survivor mod forums

Advertisement