Category:Gamevar manipulation

From EDukeWiki
Revision as of 08:25, 8 February 2020 by Doom64hunter (talk | contribs) (Updated with updated information, including short representations. Also reworded.)
Jump to navigation Jump to search

Definition

gamevar <varname> <value> <flags>

var <varname> <value> <flags>

A gamevar is a variable that can be used to store numerical data which can then be referenced between actors, states and events. var is hereby semantically equivalent to gamevar.

The gamevar's flags define a bitmap that determines how the variable is treated by the game. For instance, a gamevar with flags of 0 is known as a global variable. A global variable exists once in the code, and any time a global variable is set, the new value is seen by all actors and events. A gamevar with flag bit 1 set is a per-player variable, which exists once for each player in the game. A gamevar with flag bit 2 set is a per-actor variable, which exists as many times in the code as there are sprites in the map. This means that each sprite has its own copy of a per-actor variable stored in memory. Note that a gamevar can only be defined as either global, per-player, or per-actor, but not as a combination thereof.

Gamevars are stored as signed 32-bit integers and therefore have a value range of -2.147.483.648 (-231) to 2.147.483.647 (231-1). Going above and below this range causes the value to overflow and underflow respectively.

Note that it is possible to omit the <value> and <flags> parameters entirely to define a global variable with an initial value of 0, with no other flags set. Example:

var TEMP1

It is also possible to chain flags separately at the end of the gamevar definition, instead of compiling them into a single value, as follows:

var TEMP2 10 1 4096    // This defines a per-player (1), read-only (4096) variable with initial value 10.

The following pages contain information on basic gamevar operations as well as conditional statements:

Gamevar Flags

The following table shows all currently defined gamevar flags:

Name Number Description Page where such variables should be listed
GAMEVAR_FLAG_GLOBAL 0 global variable; this is the default
GAMEVAR_FLAG_PERPLAYER 1 per-player variable
GAMEVAR_FLAG_PERACTOR 2 per-actor variable
GAMEVAR_FLAG_USER_MASK 3 bitmask controlling what flags can be set from con; only flags less than this can
GAMEVAR_FLAG_DEFAULT 256 allow override (not used)
GAMEVAR_FLAG_SECRET 512 don't dump...
GAMEVAR_FLAG_NODEFAULT 1024 don't add to 'default' array.
GAMEVAR_FLAG_SYSTEM 2048 cannot change mode flags...(only default value)
GAMEVAR_FLAG_READONLY 4096 values are read-only (no setvar allowed)
GAMEVAR_FLAG_INTPTR 8192 plValue is a pointer to an int Constantly updated gamevars
GAMEVAR_FLAG_SYNCCHECK 16384 check event sync when translating
GAMEVAR_FLAG_SHORTPTR 32768 plValue is a pointer to a short Constantly updated gamevars
GAMEVAR_FLAG_CHARPTR 65536 plValue is a pointer to a char Constantly updated gamevars
GAMEVAR_FLAG_NORESET 131072 var values are not reset when restoring map state
GAMEVAR_FLAG_SPECIAL 262144 flag for structure member shortcut vars
GAMEVAR_FLAG_NOMULTI 524288 don't attach to multiplayer packets