mirror of
https://github.com/UberGames/RPG-X2.git
synced 2024-11-15 01:11:46 +00:00
428e4d1c0b
Also I reintegrated the damage-support for fx_steam and made some 'Means of Death' more fitting. Signed-off-by: Harry Young <hendrik.gerritzen@googlemail.com>
1185 lines
34 KiB
C
1185 lines
34 KiB
C
// Copyright (C) 1999-2000 Id Software, Inc.
|
|
//
|
|
// bg_public.h -- definitions shared by both the server game and client game modules
|
|
|
|
// are we compiling for rpgxEF?
|
|
#define XTRA 1
|
|
// meh somehow preprocessor G_LUA won't work for me
|
|
#define G_LUA 1
|
|
#define CG_LUA 1
|
|
|
|
// because games can change separately from the main system version, we need a
|
|
// second version that must match between game and cgame
|
|
#define RPGX_VERSION "2.2 Beta 8.4.7 wc1"
|
|
#define RPGX_COMPILEDATE "20/05/11"
|
|
#define RPGX_COMPILEDBY "GSIO01"
|
|
//const char GAME_VERSION[] = strcat("RPG-X v",RPGX_VERSION);
|
|
//ehem why not:
|
|
#define GAME_VERSION "RPG-X v" RPGX_VERSION
|
|
|
|
#define INJURED_MODE_HEALTH 20 //!<For the injured mode health system.
|
|
|
|
#define DEFAULT_GRAVITY 800
|
|
#define GIB_HEALTH -40//RPG-X: RedTechie - If rpg_medicsrevive is off use this
|
|
#define GIB_HEALTH_IMPOSSIBLE -100000//RPG-X: RedTechie - If rpg_medicsrevive is on use this
|
|
#define ARMOR_PROTECTION 1.0//0.66
|
|
#define PIERCED_ARMOR_PROTECTION 0.50 //!< trek: shields only stop 50% of armor-piercing dmg
|
|
// #define SUPER_PIERCED_ARMOR_PROTECTION 0.25 // trek: shields only stop 25% of super-armor-piercing dmg
|
|
|
|
#define MAX_ITEMS 256
|
|
|
|
#define RANK_TIED_FLAG 0x4000
|
|
|
|
#define ITEM_RADIUS 15 //!< item sizes are needed for client side pickup detection
|
|
|
|
#define LIGHTNING_RANGE 768
|
|
|
|
#define SCORE_NOT_PRESENT -9999 //!< for the CS_SCORES[12] when only one player is present
|
|
|
|
#define VOTE_TIME 30000
|
|
|
|
#define MINS_Z -24
|
|
#define DEFAULT_VIEWHEIGHT 34 // TIM - 26//32
|
|
#define CROUCH_VIEWHEIGHT 12
|
|
#define DEAD_VIEWHEIGHT -16
|
|
|
|
//TiM : New Rank Definitions
|
|
#define MAX_RANKS 128 //32 - see how this goes
|
|
|
|
#define NUM_CVAR_STORES 16 //If we ever change the number of CVARS, we can change it here easily
|
|
|
|
//scannable entities
|
|
#define MAX_SCANNABLES 256
|
|
#define MAX_ENTSCANNABLES 256
|
|
|
|
/** \struct rankNames_t
|
|
* Struct that hold rank names.
|
|
*/
|
|
typedef struct {
|
|
char consoleName[MAX_QPATH]; //!< short name for console
|
|
char formalName[MAX_QPATH]; //!< long name
|
|
} rankNames_t;
|
|
|
|
#define RANKSET_DEFAULT "rpgx_default" //!< name of the default rankset
|
|
|
|
//TiM : Class script info
|
|
#define MAX_CLASSES 32 //!< the maximum ammount of classes
|
|
#define CLASS_DEFAULT "rpgx_default" //!< the default classset
|
|
|
|
//RPG-X: Marcin: I'm lazy sorry
|
|
#define WARNING(x) \
|
|
do { \
|
|
G_LogPrintf x; \
|
|
trap_SendServerCommand( -1, va("print \"%s\"", va x)); \
|
|
} while ( 0 )
|
|
|
|
//RPG-X: Marcin: DEBUG STUFF - 06/12/2008
|
|
#ifdef MY_DEBUG
|
|
#define DPRINTF(x) WARNING x
|
|
#else
|
|
#define DPRINTF(x) // nothing
|
|
#endif
|
|
|
|
|
|
|
|
//TiM | Hack coz VC 6 can't understand Thilo's defnitions :S
|
|
//typedef int intptr_t;
|
|
|
|
//RPG-X (J2J) Rank Mask Values (score value is now used as the rank value)
|
|
/*#define crewman 1
|
|
#define cadet1 2
|
|
#define cadet2 4
|
|
#define cadet3 8
|
|
#define cadet4 16
|
|
#define ensign 32
|
|
#define ltjg 64
|
|
#define lt 128
|
|
#define ltcmdr 256
|
|
#define cmdr 512
|
|
#define cpt 1024
|
|
#define cmmdr 2048
|
|
#define adm2 4096
|
|
#define adm3 8192
|
|
#define adm4 16384
|
|
#define adm5 32768*/
|
|
|
|
//TiM - Used globally for hitbox definition
|
|
#define DEFAULT_MINS_0 -12
|
|
#define DEFAULT_MINS_1 -12
|
|
#define DEFAULT_MINS_2 -24
|
|
|
|
#define DEFAULT_MAXS_0 12
|
|
#define DEFAULT_MAXS_1 12
|
|
#define DEFAULT_MAXS_2 32
|
|
|
|
#define DEFAULT_CHAR "munro"
|
|
#define DEFAULT_MODEL "main"
|
|
#define DEFAULT_SKIN "default"
|
|
|
|
#define DEFAULT_PLAYER "munro/main/default"
|
|
|
|
//TiM - Turbolift Decks
|
|
#define MAX_DECKS 16
|
|
|
|
/** \struct widescreen_t
|
|
* variables used for widescreen drawing, used in both UI and CG
|
|
*
|
|
* \author Ubergames - TiM
|
|
*/
|
|
typedef struct
|
|
{
|
|
float ratio; //!<multiplied against x/w to decrease w/h ratio to 1:1
|
|
int state; //!<specific rendering state (so we can disable the effect for certain elements)
|
|
int bias; //!<shifts every element as if the entire screen was being shifted (for centering purposes)
|
|
} widescreen_t;
|
|
|
|
/** \enum widescreen_e
|
|
* flags dictating what to do to an element that's being distorted by fullscreen mode
|
|
*
|
|
* \author Ubergames - TiM
|
|
*/
|
|
typedef enum
|
|
{
|
|
WIDESCREEN_NONE = 0, //!<draw as normal
|
|
WIDESCREEN_LEFT, //!<Keeps it aligned to the left side of the screen
|
|
WIDESCREEN_RIGHT, //!<offsets it so it fits a 4:3 perspective in the middle of the screen
|
|
WIDESCREEN_CENTER //!<offsets it, so it's within a 4:3 perspective on the right side of the screen
|
|
} widescreen_e;
|
|
|
|
//
|
|
// config strings are a general means of communicating variable length strings
|
|
// from the server to all connected clients.
|
|
//
|
|
|
|
// CS_SERVERINFO and CS_SYSTEMINFO are defined in q_shared.h
|
|
#define CS_MUSIC 2
|
|
#define CS_MESSAGE 3 //!< from the map worldspawn's message field
|
|
#define CS_MOTD 4 //!< g_motd string for server message of the day
|
|
#define CS_WARMUP 5 //!< server time when the match will be restarted
|
|
#define CS_SCORES1 6
|
|
#define CS_SCORES2 7
|
|
#define CS_VOTE_TIME 8
|
|
#define CS_VOTE_STRING 9
|
|
#define CS_VOTE_YES 10
|
|
#define CS_VOTE_NO 11
|
|
#define CS_GAME_VERSION 12
|
|
#define CS_LEVEL_START_TIME 13 //!< so the timer only shows the current level
|
|
#define CS_INTERMISSION 14 //!< when 1, fraglimit/timelimit has been hit and intermission will start in a second or two
|
|
#define CS_FLAGSTATUS 15 //!< string indicating flag status in CTF
|
|
#define CS_RED_GROUP 16 //!< used to send down what the group the red team is
|
|
#define CS_BLUE_GROUP 17 //!< used to send down what the group the blue team is
|
|
|
|
#ifdef XTRA
|
|
#define CS_SHADERSTATE 18
|
|
#endif
|
|
|
|
#define CS_ITEMS 27 //!< string of 0's and 1's that tell which items are present
|
|
//TiM: Ooooh! a gap between 27 + 32! Exploitationism!
|
|
#define CS_CAMERA_SHAKE 28 //!<holds the intensity + duration for camera shakes.
|
|
//I'm using a CS string, so if a client joins mid-shake, they'll start shaking too
|
|
#define CS_CON_FAIL 29 //!<If a connection fails - Display this message
|
|
#define CS_CLASS_DATA 30 //!<Class data passed to the client from the server (to allow players not requiring class data locally)
|
|
#define CS_TURBOLIFT_DATA 31
|
|
|
|
#define CS_MODELS 32
|
|
#define CS_SOUNDS (CS_MODELS+MAX_MODELS)
|
|
#define CS_PLAYERS (CS_SOUNDS+MAX_SOUNDS)
|
|
#define CS_LOCATIONS (CS_PLAYERS+MAX_CLIENTS)
|
|
|
|
//TiM: RPG-X Tricorder scan-able func_usables
|
|
#define CS_TRIC_STRINGS (CS_LOCATIONS+MAX_LOCATIONS)
|
|
//TiM: RPG-X Data for decoy spawnage
|
|
#define CS_DECOYS (CS_TRIC_STRINGS+MAX_TRIC_STRINGS)
|
|
|
|
#define CS_MAX (CS_DECOYS+MAX_DECOYS)
|
|
//#define CS_MAX (CS_LOCATIONS+MAX_LOCATIONS) //TiM : Old
|
|
|
|
//TiM: Current String count is 896. 128 left O_o
|
|
//GSIO: Current String count is 897 for rpgxEF. 3199 left for rpgxEF O_o :D
|
|
|
|
#if (CS_MAX) > MAX_CONFIGSTRINGS
|
|
#error overflow: (CS_MAX) > MAX_CONFIGSTRINGS
|
|
#endif
|
|
|
|
typedef enum {
|
|
GT_FFA, //!< free for all
|
|
GT_TOURNAMENT, //!< one on one tournament
|
|
GT_SINGLE_PLAYER, //!< single player tournament
|
|
|
|
//-- team games go after this --
|
|
|
|
GT_TEAM, //!< team deathmatch
|
|
GT_CTF, //!< capture the flag
|
|
|
|
GT_MAX_GAME_TYPE
|
|
} gametype_t;
|
|
|
|
typedef enum { GENDER_MALE, GENDER_FEMALE, GENDER_NEUTER } gender_t;
|
|
|
|
//TiM - Global variables for the player weight/height system
|
|
#define BASE_HEIGHT 185.0
|
|
#define BASE_WEIGHT 90.0
|
|
|
|
#define FEMALE_OFFSET 0.73
|
|
|
|
#define MAX_HEIGHT 1.15
|
|
#define MIN_HEIGHT 0.9
|
|
|
|
#define MAX_WEIGHT 1.1
|
|
#define MIN_WEIGHT 0.9
|
|
|
|
#define HEIGHT_UNIT "cm"
|
|
#define WEIGHT_UNIT "kg"
|
|
|
|
/*
|
|
===================================================================================
|
|
|
|
PMOVE MODULE
|
|
|
|
The pmove code takes a player_state_t and a usercmd_t and generates a new player_state_t
|
|
and some other output data. Used for local prediction on the client game and true
|
|
movement on the server game.
|
|
===================================================================================
|
|
*/
|
|
|
|
//RPG-X - Player Model System. Anim on or off states
|
|
/*typedef enum {
|
|
ANIM_ONLADDER,
|
|
ANIM_OFFLADDER,
|
|
ANIM_DIDFLY
|
|
} animtype_t;*/
|
|
|
|
/** \enum pmtype_t
|
|
*
|
|
*/
|
|
typedef enum {
|
|
PM_NORMAL, //!< can accelerate and turn
|
|
PM_NOCLIP, //!< noclip movement
|
|
PM_SPECTATOR, //!< still run into walls
|
|
PM_DEAD, //!< no acceleration or turning, but free falling
|
|
PM_FREEZE, //!< stuck in place with no control
|
|
PM_INTERMISSION,//!< no movement or status bar
|
|
PM_CCAM //!< cinematic cam mode
|
|
} pmtype_t;
|
|
|
|
/** \enum weaponstate_t
|
|
*
|
|
*/
|
|
typedef enum {
|
|
WEAPON_READY,
|
|
WEAPON_RAISING,
|
|
WEAPON_DROPPING,
|
|
WEAPON_FIRING
|
|
} weaponstate_t;
|
|
|
|
// pmove->pm_flags
|
|
|
|
#define PMF_DUCKED 1 //1 //2
|
|
#define PMF_JUMP_HELD 2 //2 //4
|
|
#define PMF_BACKWARDS_JUMP 8 //!< go into backwards land
|
|
#define PMF_BACKWARDS_RUN 16 //!< coast down to backwards run
|
|
#define PMF_TIME_LAND 32 //!< pm_time is time before rejump
|
|
#define PMF_TIME_KNOCKBACK 64 //!< pm_time is an air-accelerate only time
|
|
#define PMF_TIME_WATERJUMP 256 //!< pm_time is waterjump
|
|
#define PMF_RESPAWNED 512 //!< clear after attack and jump buttons come up
|
|
#define PMF_USE_ITEM_HELD 1024
|
|
//#define PMF_GRAPPLE_PULL 2048 //!< pull towards grapple location
|
|
#define PMF_FOLLOW 4096 //!< spectate following another player
|
|
#define PMF_SCOREBOARD 8192 //!< spectate as a scoreboard
|
|
|
|
#define ANIM_ONLADDER 16384
|
|
#define ANIM_DIDFLY 32768
|
|
#define ANIM_ALERT 128 //TiM: How was this missed!?
|
|
#define ANIM_ALERT2 2048 //TiM: This makes it full I think
|
|
//#define ANIM_LOWER_LOOPING 2048
|
|
|
|
#define PMF_ALL_TIMES (PMF_TIME_WATERJUMP|PMF_TIME_LAND|PMF_TIME_KNOCKBACK)
|
|
|
|
#define MAXTOUCH 32
|
|
|
|
/**
|
|
* \struct pmove_t
|
|
*/
|
|
typedef struct {
|
|
// state (in / out)
|
|
playerState_t *ps;
|
|
|
|
// command (in)
|
|
usercmd_t cmd;
|
|
int tracemask; //!< collide against these types of surfaces
|
|
int debugLevel; //!< if set, diagnostic output will be printed
|
|
qboolean noFootsteps; //!< if the game is setup for no footsteps by the server
|
|
qboolean pModDisintegration; //!< true if the Disintegration playerMod is on
|
|
|
|
// results (out)
|
|
int numtouch;
|
|
int touchents[MAXTOUCH];
|
|
|
|
int useEvent;
|
|
|
|
vec3_t mins, maxs; //!< bounding box size
|
|
|
|
int watertype;
|
|
int waterlevel;
|
|
|
|
float xyspeed;
|
|
float xyzspeed; //TiM : in case body is falling as well
|
|
|
|
qboolean admin;
|
|
qboolean medic;
|
|
qboolean borg;
|
|
|
|
//RPG-X - J2J - Adding a last fire timer for weapon animations
|
|
///int LastFireTime;
|
|
|
|
// callbacks to test the world
|
|
// these will be different functions during game and cgame
|
|
void (*trace)( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int passEntityNum, int contentMask );
|
|
int (*pointcontents)( const vec3_t point, int passEntityNum );
|
|
|
|
} pmove_t;
|
|
|
|
// if a full pmove isn't done on the client, you can just update the angles
|
|
void PM_UpdateViewAngles( playerState_t *ps, const usercmd_t *cmd );
|
|
void Pmove (pmove_t *pmove);
|
|
|
|
//RPG-X: J2J - Emote Vars (shared for server and client)
|
|
//int CurrentEmote[MAX_CLIENTS];
|
|
//QVM HACK!
|
|
|
|
//===================================================================================
|
|
|
|
|
|
// player_state->stats[] indexes
|
|
//
|
|
// maximum of MAX_STATS...currently 16
|
|
//TiM: Ooohhh! Usable space!
|
|
/** \enum statIndex_t
|
|
* Each of these array cells can store data up to 2^16 bits of data!
|
|
* This is good in the fact that we are capable of using this place to store data
|
|
* that is larger for its previous cells, for example, animation data.
|
|
*/
|
|
typedef enum {
|
|
STAT_HEALTH,
|
|
STAT_HOLDABLE_ITEM,
|
|
STAT_WEAPONS, //!< 16 bit fields
|
|
STAT_ARMOR,
|
|
STAT_DEAD_YAW, //!< look this direction when dead (FIXME: get rid of?)
|
|
STAT_CLIENTS_READY, //!< bit mask of clients wishing to exit the intermission (FIXME: configstring?)
|
|
STAT_MAX_HEALTH, //!< health / armor limit, changable by handicap
|
|
STAT_USEABLE_PLACED, //!< have we placed the detpack yet?
|
|
|
|
//TiM : Placeholder for emotes data and anim holding
|
|
TORSOTIMER, //!<Time index for torso model animations (usable for up to 65 seconds worth of anim data)
|
|
LEGSTIMER, //!<Time index for legs animations
|
|
|
|
LEGSANIM, //!<Index of current legs animation to play
|
|
TORSOANIM, //!<Index of current legs animation to play
|
|
|
|
EMOTES //!<Flags stored for emote conditions
|
|
} statIndex_t;
|
|
|
|
// player_state->persistant[] indexes
|
|
/** \enum persEnum_t
|
|
* these fields are the only part of player_state that isn't
|
|
* cleared on respawn
|
|
*/
|
|
typedef enum {
|
|
PERS_SCORE, //!< !!! MUST NOT CHANGE, SERVER AND GAME BOTH REFERENCE !!!
|
|
PERS_HITS, //!< total points damage inflicted so damage beeps can sound on change
|
|
PERS_SHIELDS, //!< total shield points damage inflicted so damage beeps can sound on change
|
|
PERS_RANK,
|
|
PERS_TEAM,
|
|
PERS_SPAWN_COUNT, //!< incremented every respawn
|
|
PERS_REWARD_COUNT, //!< incremented for each reward sound
|
|
PERS_REWARD, //!< a reward_t
|
|
PERS_ATTACKER, //!< clientnum of last damage inflicter
|
|
PERS_KILLED, //!< count of the number of times you died
|
|
// these were added for single player awards tracking
|
|
//PERS_IMPRESSIVE_COUNT,
|
|
//PERS_EXCELLENT_COUNT,
|
|
PERS_CLASS,
|
|
//PERS_ACCURACY_SHOTS,
|
|
//PERS_ACCURACY_HITS,
|
|
//PERS_STREAK_COUNT
|
|
} persEnum_t;
|
|
|
|
|
|
// entityState_t->eFlags
|
|
// IMPORTANT: You need to check entityStateFields in msg.c to be certain that enough bits are being sent!
|
|
|
|
//TiM : ioEF has defined it so 24 bits is the norm... but in reg EF, it's 27
|
|
//either way, confirm there's absolutely no more than 27 (24 if we can)
|
|
|
|
#define EF_DEAD 0x00000001 //!< don't draw a foe marker over players with EF_DEAD
|
|
#define EF_ITEMPLACEHOLDER 0x00000002 //!< faded items
|
|
#define EF_TELEPORT_BIT 0x00000004 //!< toggled every time the origin abruptly changes
|
|
#define EF_BOUNCE 0x00000008 //!< for missiles
|
|
#define EF_BOUNCE_HALF 0x00000010 //!< for missiles
|
|
#define EF_MISSILE_STICK 0x00000020 //!< missiles that stick to the wall.
|
|
#define EF_NODRAW 0x00000040 //!< may have an event, but no model (unspawned items)
|
|
#define EF_FIRING 0x00000080 //!< for lightning gun
|
|
#define EF_ALT_FIRING 0x00000100 //!< for alt-fires, mostly for lightning guns though
|
|
#define EF_CONNECTION 0x00000200 //!< draw a connection trouble sprite
|
|
#define EF_TALK 0x00000400 //!< draw a talk balloon
|
|
#define EF_SHIELD_BOX_X 0x00000800 //!< tells the client to use special client-collision info, x-axis aligned
|
|
#define EF_VOTED 0x00001000 //!< already cast a vote
|
|
#define EF_ANIM_ALLFAST 0x00002000 //!< automatically cycle through all frames at 10hz
|
|
//RPG-X Flags
|
|
#define EF_TALKING 0x00004000 //!< Player is talking
|
|
#define EF_CLAMP_BODY 0x00008000 //!< clamps player in place. moving cancels the emote, looking around rotates head (applies to legs only)
|
|
#define EF_CLAMP_ALL 0x00010000 //!< clamp whole body
|
|
#define EF_EYES_SHUT 0x00020000 //!< player toggled their char's eye's shut.
|
|
#define EF_EYES_ANGRY 0x00040000 //!< player toggled pissed off char face.
|
|
#define EF_FULL_ROTATE 0x00080000
|
|
#define EF_ANIM_ONCE 0x00100000 //!< cycle through all frames just once then stop
|
|
#define EF_TURBOLIFT 0x00200000 //!< ent is in a turbolift now, so gets special rotation
|
|
#define EF_SHIELD_BOX_Y 0x00400000 //!< tells the client to use special client-collision info, y-axis aligned
|
|
#define EF_MOVER_STOP 0x00800000 //!< will push otherwise - 67108864
|
|
|
|
|
|
//#define EF_AWARD_STREAK_MASK (EF_AWARD_ACE|EF_AWARD_EXPERT|EF_AWARD_MASTER|EF_AWARD_CHAMPION)
|
|
//#define EF_AWARD_MASK (EF_AWARD_EXCELLENT|EF_AWARD_IMPRESSIVE|EF_AWARD_FIRSTSTRIKE|EF_AWARD_STREAK_MASK)
|
|
|
|
//===================================================================================
|
|
//TiM : Emote system definitions
|
|
//===================================================================================
|
|
|
|
//anim list
|
|
#include "../cgame/cg_anims.h"
|
|
|
|
//body flags
|
|
#define EMOTE_UPPER 1 //!<Emote affects torso model only
|
|
#define EMOTE_LOWER 2 //!<Emote affects legs model only
|
|
#define EMOTE_BOTH ( EMOTE_UPPER | EMOTE_LOWER ) //!<Emote affects both parts
|
|
|
|
//Emote specific flags
|
|
#define EMOTE_CLAMP_BODY 4 //!<Emote clamps player angles, but leaves head free swinging
|
|
#define EMOTE_CLAMP_ALL 8 //!<Emote clamps the whole player. period.
|
|
|
|
//Infinite loop this anim
|
|
#define EMOTE_LOOP_LOWER 16 //!<Lower emote will loop continuously until manually stopped
|
|
#define EMOTE_LOOP_UPPER 32 //!<Upper emote will loop continuosly until stopped.
|
|
#define EMOTE_LOOP_BOTH ( EMOTE_LOOP_LOWER | EMOTE_LOOP_UPPER )
|
|
|
|
//Eye emotes
|
|
#define EMOTE_EYES_SHUT 64 //!<Emote plays with player's eyes shut
|
|
#define EMOTE_EYES_PISSED 128 //!<Emote plays with player looking not happy.
|
|
|
|
//Override previous emotes flags
|
|
#define EMOTE_OVERRIDE_UPPER 256 //!<If another emote is already playing, this one WILL override the upper section
|
|
#define EMOTE_OVERRIDE_LOWER 512 //!<If another emote is already playing, this one WILL override the lower section
|
|
#define EMOTE_OVERRIDE_BOTH ( EMOTE_OVERRIDE_UPPER | EMOTE_OVERRIDE_LOWER ) //!<Overrides both parts for the new emote
|
|
|
|
//Revert to a loop anim when this is finished playing
|
|
#define EMOTE_REVERTLOOP_UPPER 1024 //!<If already in a looping anim, when this new one finishes playing, the player will revert back to that anim (ie if u gestured whilst sitting down etc)
|
|
#define EMOTE_REVERTLOOP_LOWER 2048
|
|
#define EMOTE_REVERTLOOP_BOTH ( EMOTE_REVERTLOOP_UPPER | EMOTE_REVERTLOOP_LOWER )
|
|
|
|
//Used to clear all emote params except for blinking.
|
|
//Kind of hacky, but better than diverting the blinking flag resources elsewhere.
|
|
//We only have so many array cells available
|
|
#define EMOTE_MASK_LOWER ( EMOTE_LOWER | EMOTE_CLAMP_BODY | EMOTE_CLAMP_ALL | EMOTE_LOOP_LOWER | EMOTE_OVERRIDE_LOWER | EMOTE_REVERTLOOP_LOWER )
|
|
#define EMOTE_MASK_UPPER ( EMOTE_UPPER | EMOTE_LOOP_UPPER | EMOTE_OVERRIDE_UPPER | EMOTE_REVERTLOOP_UPPER )
|
|
#define EMOTE_MASK_BOTH ( EMOTE_MASK_LOWER | EMOTE_MASK_UPPER )
|
|
|
|
/** \struct emoteList_t
|
|
* Emote data structure
|
|
*
|
|
* \author Ubergames
|
|
*/
|
|
typedef struct {
|
|
char *name; //!<name of emote player enters into console
|
|
int emoteType; //!<Type of emote (for menu display)
|
|
int enumName; //!<eNum value of the emote
|
|
int enumLoop; //!<eNum value for loop anim
|
|
|
|
int viewHeight; //!<Specific viewheight the player will be looking at when this emote is active. (ie, sitting down, you'd be lower than standing up)
|
|
int hitBoxHeight;
|
|
|
|
int bodyFlags; //!<flags relating to whether this emote is upper or lower or both
|
|
int animFlags; //!<Specific flags related to emote handling
|
|
} emoteList_t;
|
|
|
|
/** \enum emoteTypes_t
|
|
* Different type numbers for sorting in the UI etc
|
|
*
|
|
* \author Ubergames
|
|
*/
|
|
typedef enum {
|
|
TYPE_NONE = -1,
|
|
TYPE_SITTING = 0,
|
|
TYPE_CONSOLE = 1,
|
|
TYPE_GESTURE = 2,
|
|
TYPE_FULLBODY = 3,
|
|
TYPE_INJURED = 4,
|
|
TYPE_MISC = 5
|
|
|
|
} emoteTypes_t;
|
|
|
|
extern emoteList_t bg_emoteList[];
|
|
|
|
//=====================================================================================
|
|
|
|
/**
|
|
* The different powerups
|
|
*/
|
|
typedef enum {
|
|
PW_NONE,
|
|
|
|
PW_QUAD,
|
|
PW_BOLTON, //TiM - Used to be PW_BOLTON
|
|
PW_HASTE, //Used to be PW_HASTE
|
|
PW_INVIS,
|
|
PW_LASER, //TiM - Beam Out Powerup used to be PW_LASER
|
|
PW_FLIGHT,
|
|
PW_FLASHLIGHT,
|
|
|
|
PW_BORG_ADAPT,
|
|
PW_OUCH,
|
|
|
|
PW_DISINTEGRATE,
|
|
PW_GHOST,
|
|
|
|
PW_EXPLODE,
|
|
PW_ARCWELD_DISINT,
|
|
PW_BEAM_OUT, //TiM - Beam in used to be PW_BEAMING
|
|
|
|
PW_EVOSUIT, //RPG-X | Phenix | 8/8/2004
|
|
//PW_BOLTON, //RPG-X | TiM | 6/9/2005
|
|
|
|
PW_NUM_POWERUPS
|
|
} powerup_t;
|
|
|
|
//=============================
|
|
//TiM - Struct to hold data about all the items
|
|
//admins can give. Point being so the data can be shared
|
|
//in the UI and actual command
|
|
|
|
/** \enum giveType_t
|
|
* Enum depciting what type it is
|
|
*/
|
|
typedef enum {
|
|
TYPE_ALL,
|
|
TYPE_HEALTH,
|
|
TYPE_WEAPONS,
|
|
TYPE_AMMO,
|
|
TYPE_HOLDABLE,
|
|
TYPE_SHIELD,
|
|
TYPE_TRANSPORTER,
|
|
TYPE_WEAPON,
|
|
TYPE_POWERUP,
|
|
|
|
TYPE_MAX
|
|
} giveType_t;
|
|
|
|
/** \struct giveItem_t
|
|
* Struct to hold data about all the items
|
|
* admins can give. Point being so the data can be shared
|
|
* in the UI and actual command
|
|
*/
|
|
typedef struct {
|
|
char *consoleName; //!<item you gotz to plug into the console for this shizzie
|
|
int giveType; //!<eNum depicting which type this val is
|
|
int giveValue; //!<items such as weapons+holdables reference to here
|
|
} giveItem_t;
|
|
|
|
extern giveItem_t bg_giveItem[];
|
|
|
|
//=============================
|
|
|
|
typedef enum {
|
|
HI_NONE=0, //!< keep this first enum entry equal to 0 so cgs.useableModels will work properly
|
|
|
|
HI_TRANSPORTER=1,
|
|
HI_MEDKIT,
|
|
HI_DETPACK,
|
|
HI_SHIELD,
|
|
HI_DECOY, // cdr
|
|
|
|
HI_NUM_HOLDABLE
|
|
} holdable_t;
|
|
|
|
//TiM: GAH! I've had it! I've gone through and renamed the weapons to what they're
|
|
//called in RPG-X. Having to remember which is what is starting to wear out my sanity lol. :P
|
|
typedef enum {
|
|
WP_NONE, // 1
|
|
|
|
WP_NULL_HAND, // 2 // 3/10/00 kef -- used to be WP_RAILGUN // 1/1/06 TiM: used to be WP_NULL_HAND
|
|
|
|
WP_TRICORDER, // 4
|
|
WP_PADD, // 8
|
|
WP_COFFEE, // 16 // 3/13/00 kef -- used to be WP_PLASMAGUN // 1/1/06 TiM: used to be WP_COFFEE
|
|
|
|
WP_PHASER, // 32 // 3/13/00 kef -- used to be WP_LIGHTNING
|
|
WP_COMPRESSION_RIFLE, // 64 // 3/13/00 kef -- added
|
|
WP_TR116, // 128 // 3/13/00 kef -- added // 1/1/06 TiM: used to be WP_TR116
|
|
|
|
WP_GRENADE_LAUNCHER, // 256 // 3/10/00 kef -- used to be...heh...WP_GRENADE_LAUNCHER // TiM: Hahaha I get it! hehe ;P
|
|
WP_QUANTUM_BURST, // 512 // 3/13/00 kef -- added
|
|
WP_DISRUPTOR, // 1024 // 3/13/00 kef -- used to be WP_ROCKET_LAUNCHER // 1/1/06 TiM: used to be WP_DISRUPTOR
|
|
|
|
WP_MEDKIT, // 2048 // 10/12/00 jtd -- added for MP patch/gold - merges single player projectile and taser // 1/1/06 TiM: used to be WP_MEDKIT
|
|
WP_VOYAGER_HYPO, // 4096 // 10/6/00 mcg -- added for MP patch/gold
|
|
WP_DERMAL_REGEN, // 8192 // 3/13/00 kef -- added // 1/1/06 TiM: used to be WP_DERMAL_REGEN
|
|
|
|
WP_TOOLKIT, // 16384 // 10/12/00 jtd -- added for MP patch/gold // 1/1/06 TiM: used to be WP_TOOLKIT
|
|
WP_HYPERSPANNER, // 32768 // 1/1/06 TiM: used to be WP_NEUTRINO_PROBE
|
|
|
|
WP_NUM_WEAPONS
|
|
} weapon_t;
|
|
|
|
/*typedef enum {
|
|
WP_NONE,
|
|
|
|
WP_PHASER, // 3/13/00 kef -- used to be WP_LIGHTNING
|
|
WP_COMPRESSION_RIFLE, // 3/13/00 kef -- added
|
|
WP_NULL_HAND, // 3/10/00 kef -- used to be WP_RAILGUN
|
|
WP_COFFEE, // 3/13/00 kef -- used to be WP_PLASMAGUN
|
|
WP_DISRUPTOR, // 3/13/00 kef -- used to be WP_ROCKET_LAUNCHER
|
|
WP_GRENADE_LAUNCHER, // 3/10/00 kef -- used to be...heh...WP_GRENADE_LAUNCHER
|
|
WP_TR116, // 3/13/00 kef -- added
|
|
WP_QUANTUM_BURST, // 3/13/00 kef -- added
|
|
WP_DERMAL_REGEN, // 3/13/00 kef -- added
|
|
WP_VOYAGER_HYPO, // 10/6/00 mcg -- added for MP patch/gold
|
|
WP_TOOLKIT, // 10/12/00 jtd -- added for MP patch/gold
|
|
WP_MEDKIT, // 10/12/00 jtd -- added for MP patch/gold - merges single player projectile and taser
|
|
WP_TRICORDER, //
|
|
WP_PADD, //
|
|
WP_NEUTRINO_PROBE, //
|
|
WP_TR116, // Phenix's Weapon ;)
|
|
|
|
WP_NUM_WEAPONS
|
|
} weapon_t;*/
|
|
|
|
// reward sounds
|
|
typedef enum {
|
|
REWARD_BAD,
|
|
|
|
REWARD_IMPRESSIVE, //!< One shot kill with Compression
|
|
REWARD_EXCELLENT, //!< Two frags in a row
|
|
REWARD_DENIED, //!< Near powerup, stolen
|
|
REWARD_FIRST_STRIKE, //!< First blood in a level
|
|
REWARD_STREAK //!< Ace/Expert/Master/Champion
|
|
} reward_t;
|
|
|
|
#define STREAK_ACE 5
|
|
#define STREAK_EXPERT 10
|
|
#define STREAK_MASTER 15
|
|
#define STREAK_CHAMPION 20
|
|
|
|
|
|
// entityState_t->event values
|
|
// entity events are for effects that take place reletive
|
|
// to an existing entities origin. Very network efficient.
|
|
|
|
// two bits at the top of the entityState->event field
|
|
// will be incremented with each change in the event so
|
|
// that an identical event started twice in a row can
|
|
// be distinguished. And off the value with ~EV_EVENT_BITS
|
|
// to retrieve the actual event number
|
|
#define EV_EVENT_BIT1 0x00000100
|
|
#define EV_EVENT_BIT2 0x00000200
|
|
#define EV_EVENT_BITS (EV_EVENT_BIT1|EV_EVENT_BIT2)
|
|
|
|
typedef enum {
|
|
EV_NONE,
|
|
|
|
EV_FOOTSTEP,
|
|
EV_FOOTSTEP_METAL,
|
|
EV_FOOTSPLASH,
|
|
EV_FOOTWADE,
|
|
EV_SWIM,
|
|
|
|
EV_STEP_4,
|
|
EV_STEP_8,
|
|
EV_STEP_12,
|
|
EV_STEP_16,
|
|
|
|
EV_FALL_SHORT,
|
|
EV_FALL_MEDIUM,
|
|
EV_FALL_FAR,
|
|
|
|
EV_JUMP_PAD, //!< boing sound at origin, jump sound on player
|
|
|
|
EV_JUMP,
|
|
EV_WATER_TOUCH, //!< foot touches
|
|
EV_WATER_LEAVE, //!< foot leaves
|
|
EV_WATER_UNDER, //!< head touches
|
|
EV_WATER_CLEAR, //!< head leaves
|
|
|
|
EV_ITEM_PICKUP, //!< normal item pickups are predictable
|
|
EV_GLOBAL_ITEM_PICKUP, //!< powerup / team sounds are broadcast to everyone
|
|
|
|
EV_NOAMMO,
|
|
EV_NOAMMO_ALT,
|
|
EV_CHANGE_WEAPON,
|
|
EV_FIRE_WEAPON,
|
|
EV_ALT_FIRE,
|
|
EV_FIRE_EMPTY_PHASER,
|
|
|
|
//BOOKMARK (J2J)
|
|
EV_USE_ITEM0,
|
|
EV_USE_ITEM1,
|
|
EV_USE_ITEM2,
|
|
EV_USE_ITEM3,
|
|
EV_USE_ITEM4,
|
|
EV_USE_ITEM5,
|
|
EV_USE_ITEM6,
|
|
EV_USE_ITEM7,
|
|
EV_USE_ITEM8,
|
|
EV_USE_ITEM9,
|
|
EV_USE_ITEM10,
|
|
EV_USE_ITEM11,
|
|
EV_USE_ITEM12,
|
|
EV_USE_ITEM13,
|
|
EV_USE_ITEM14,
|
|
EV_USE_ITEM15,
|
|
|
|
EV_ITEM_RESPAWN,
|
|
EV_ITEM_POP,
|
|
EV_PLAYER_TELEPORT_IN,
|
|
EV_PLAYER_TELEPORT_OUT,
|
|
|
|
//RPG-X: TiM
|
|
EV_PLAYER_TRANSPORT_IN,
|
|
EV_PLAYER_TRANSPORT_OUT,
|
|
|
|
EV_GRENADE_BOUNCE, //!< eventParm will be the soundindex
|
|
EV_MISSILE_STICK, //!< eventParm will be the soundindex
|
|
|
|
EV_GENERAL_SOUND,
|
|
EV_GLOBAL_SOUND, //!< no attenuation
|
|
EV_TEAM_SOUND,
|
|
|
|
EV_MISSILE_HIT,
|
|
EV_MISSILE_MISS,
|
|
|
|
EV_PAIN,
|
|
EV_DEATH1,
|
|
EV_DEATH2,
|
|
EV_DEATH3,
|
|
EV_OBITUARY,
|
|
|
|
EV_POWERUP_BATTLESUIT,
|
|
EV_POWERUP_REGEN,
|
|
EV_POWERUP_SEEKER_FIRE,
|
|
|
|
EV_DEBUG_LINE,
|
|
EV_TAUNT,
|
|
|
|
//
|
|
// kef -- begin Trek stuff
|
|
//
|
|
|
|
// kef -- taken directly from Trek code
|
|
EV_COMPRESSION_RIFLE,
|
|
EV_COMPRESSION_RIFLE_ALT,
|
|
|
|
EV_IMOD,
|
|
EV_IMOD_HIT,
|
|
EV_IMOD_ALTFIRE,
|
|
EV_IMOD_ALTFIRE_HIT,
|
|
|
|
EV_STASIS,
|
|
|
|
EV_GRENADE_EXPLODE,
|
|
EV_GRENADE_SHRAPNEL_EXPLODE,
|
|
EV_GRENADE_SHRAPNEL,
|
|
|
|
EV_DREADNOUGHT_MISS,
|
|
|
|
EV_TETRION,
|
|
|
|
EV_SHIELD_HIT,
|
|
|
|
EV_FX_SPARK,
|
|
EV_FX_STEAM,
|
|
EV_FX_BOLT,
|
|
EV_FX_TRANSPORTER_PAD,
|
|
EV_FX_DRIP,
|
|
|
|
EV_FX_GARDEN_FOUNTAIN_SPURT, //RPG-X - TiM
|
|
EV_FX_SURFACE_EXPLOSION, //RPG-X - TiM
|
|
EV_FX_SMOKE, //RPG-X - TiM
|
|
EV_FX_ELECTRICAL_EXPLOSION, //RPG-X - TiM
|
|
EV_FX_FIRE, //RPG-X - Marcin
|
|
EV_FX_SHAKE, //RPG-X - Marcin
|
|
|
|
// Additional ports from SP by Harry Young
|
|
|
|
EV_FX_COOKING_STEAM
|
|
EV_FX_ELECFIRE
|
|
EV_FX_FORGE_BOLT
|
|
EV_FX_PLASMA
|
|
EV_FX_STREAM
|
|
EV_FX_TRANSPORTER_STREAM
|
|
EV_FX_EXPLOSION_TRAIL
|
|
EV_FX_BORG_ENERGY_BEAM
|
|
EV_FX_SHIMMERY_THING
|
|
EV_FX_BORG_BOLT
|
|
|
|
EV_SCREENFX_TRANSPORTER,
|
|
|
|
EV_DISINTEGRATION,
|
|
EV_EXPLODESHELL,
|
|
EV_ARCWELD_DISINT,
|
|
|
|
EV_DETPACK,
|
|
|
|
EV_DISINTEGRATION2,
|
|
|
|
//
|
|
// expansion pack
|
|
//
|
|
EV_OBJECTIVE_COMPLETE,
|
|
EV_USE,
|
|
EV_BORG_ALT_WEAPON,// TASER
|
|
EV_BORG_TELEPORT,
|
|
EV_FX_CHUNKS,
|
|
//RPG-X: RedTechie - Hypo puff and fx gun explo and shake sound and tr-116 tris
|
|
EV_HYPO_PUFF,
|
|
EV_EFFECTGUN_SHOOT,
|
|
EV_SHAKE_SOUND,
|
|
EV_TR116_TRIS,
|
|
//RPG-X: TiM - Lensflare stuff
|
|
EV_Q_FLASH,
|
|
//SplatFX,
|
|
EV_SPLAT,
|
|
//RPG-X | GSIO01 | 08/95/2009 adaptsound
|
|
EV_ADAPT_SOUND,
|
|
EV_FX_PHASER,
|
|
EV_FX_DISRUPTOR,
|
|
EV_SET_CLOAK,
|
|
EV_FX_TORPEDO,
|
|
EV_FOOTSTEP_GRASS,
|
|
EV_FOOTSTEP_GRAVEL,
|
|
EV_FOOTSTEP_SNOW,
|
|
EV_FOOTSTEP_WOOD,
|
|
EV_FALL_SHORT_GRASS,
|
|
EV_FALL_SHORT_GRAVEL,
|
|
EV_FALL_SHORT_SNOW,
|
|
EV_FALL_SHORT_WOOD,
|
|
EV_FALL_MEDIUM_GRASS,
|
|
EV_FALL_MEDIUM_GRAVEL,
|
|
EV_FALL_MEDIUM_SNOW,
|
|
EV_FALL_MEDIUM_WOOD,
|
|
EV_FALL_FAR_GRASS,
|
|
EV_FALL_FAR_GRAVEL,
|
|
EV_FALL_FAR_SNOW,
|
|
EV_FALL_FAR_WOOD,
|
|
EV_FX_PARTICLEFIRE,
|
|
EV_SHOOTER_SOUND,
|
|
EV_TRIGGER_SHOW,
|
|
EV_SCRIPT_SOUND,
|
|
EV_CAMMODE_TOGGLE
|
|
} entity_event_t;
|
|
|
|
/* THIS IS OLD FROM HOLOMATCH (RPG-X: J2J)
|
|
// animations
|
|
typedef enum {
|
|
BOTH_DEATH1,
|
|
BOTH_DEAD1,
|
|
BOTH_DEATH2,
|
|
BOTH_DEAD2,
|
|
BOTH_DEATH3,
|
|
BOTH_DEAD3,
|
|
|
|
TORSO_GESTURE,
|
|
|
|
TORSO_ATTACK,
|
|
TORSO_ATTACK2,
|
|
|
|
TORSO_DROP,
|
|
TORSO_RAISE,
|
|
|
|
TORSO_STAND,
|
|
TORSO_STAND2,
|
|
|
|
LEGS_WALKCR,
|
|
LEGS_WALK,
|
|
LEGS_RUN,
|
|
LEGS_BACK,
|
|
LEGS_SWIM,
|
|
|
|
LEGS_JUMP,
|
|
LEGS_LAND,
|
|
|
|
LEGS_JUMPB,
|
|
LEGS_LANDB,
|
|
|
|
LEGS_IDLE,
|
|
LEGS_IDLECR,
|
|
|
|
LEGS_TURN,
|
|
|
|
MAX_ANIMATIONS
|
|
} animNumber_t;
|
|
*/
|
|
|
|
//RPG-X: J2J - Moved animation enum list so that the string list can see it, Note special case for cg_players.c.
|
|
//#include "../cgame/cg_anims.h"
|
|
|
|
typedef struct animation_s {
|
|
int firstFrame;
|
|
int numFrames;
|
|
int loopFrames; //!< 0 to numFrames
|
|
int frameLerp; //!< msec between frames
|
|
int initialLerp; //!< msec to get to first frame
|
|
} animation_t;
|
|
|
|
// flip the togglebit every time an animation
|
|
// changes so a restart of the same anim can be detected
|
|
|
|
//RPG-X: Jason - Last bit in a 2 byte integer is now the flag. (essentailly all we need as 2 byes allows values up to 65536)
|
|
//#define ANIM_TOGGLEBIT 32768 //RPG-X: RedTechie - FIXES THE DAMN MODEL SYSTEM YAY! cant be 128 needs to be way higher then actual animation count :D was 128 changing to 1024
|
|
#define ANIM_TOGGLEBIT 1024
|
|
|
|
typedef enum {
|
|
TEAM_FREE,
|
|
TEAM_RED,
|
|
TEAM_BLUE,
|
|
TEAM_SPECTATOR,
|
|
|
|
TEAM_NUM_TEAMS
|
|
} team_t;
|
|
|
|
enum {
|
|
RETURN_FLAG_SOUND,
|
|
SCORED_FLAG_SOUND,
|
|
DROPPED_FLAG_SOUND,
|
|
SCORED_FLAG_NO_VOICE_SOUND,
|
|
MAX_TEAM_SOUNDS
|
|
};
|
|
|
|
// Time between location updates
|
|
#define TEAM_LOCATION_UPDATE_TIME 1000
|
|
|
|
// How many players on the overlay
|
|
// TiM - Increasing this greatly may not be good...
|
|
#define TEAM_MAXOVERLAY MAX_CLIENTS//8
|
|
|
|
#define LOCATION_NONE 0x00000000
|
|
|
|
// Height layers
|
|
#define LOCATION_HEAD 0x00000001 // [F,B,L,R] Top of head
|
|
#define LOCATION_FACE 0x00000002 // [F] Face [B,L,R] Head
|
|
#define LOCATION_SHOULDER 0x00000004 // [L,R] Shoulder [F] Throat, [B] Neck
|
|
#define LOCATION_CHEST 0x00000008 // [F] Chest [B] Back [L,R] Arm
|
|
#define LOCATION_STOMACH 0x00000010 // [L,R] Sides [F] Stomach [B] Lower Back
|
|
#define LOCATION_GROIN 0x00000020 // [F] Groin [B] Butt [L,R] Hip
|
|
#define LOCATION_LEG 0x00000040 // [F,B,L,R] Legs
|
|
#define LOCATION_FOOT 0x00000080 // [F,B,L,R] Bottom of Feet
|
|
|
|
// Relative direction strike came from
|
|
#define LOCATION_LEFT 0x00000100
|
|
#define LOCATION_RIGHT 0x00000200
|
|
#define LOCATION_FRONT 0x00000400
|
|
#define LOCATION_BACK 0x00000800
|
|
|
|
// means of death
|
|
typedef enum {
|
|
MOD_UNKNOWN,
|
|
|
|
MOD_WATER,
|
|
MOD_SLIME,
|
|
MOD_LAVA,
|
|
MOD_CRUSH,
|
|
MOD_TELEFRAG,
|
|
MOD_FALLING,
|
|
MOD_SUICIDE,
|
|
MOD_TARGET_LASER,
|
|
MOD_TRIGGER_HURT,
|
|
|
|
// Trek weapons
|
|
MOD_PHASER,
|
|
MOD_PHASER_ALT,
|
|
MOD_CRIFLE,
|
|
MOD_CRIFLE_SPLASH,
|
|
MOD_CRIFLE_ALT,
|
|
MOD_CRIFLE_ALT_SPLASH,
|
|
MOD_IMOD,
|
|
MOD_IMOD_ALT,
|
|
MOD_SCAVENGER,
|
|
MOD_SCAVENGER_ALT,
|
|
MOD_SCAVENGER_ALT_SPLASH,
|
|
MOD_STASIS,
|
|
MOD_STASIS_ALT,
|
|
MOD_GRENADE,
|
|
MOD_GRENADE_ALT,
|
|
MOD_GRENADE_SPLASH,
|
|
MOD_GRENADE_ALT_SPLASH,
|
|
MOD_TETRION,
|
|
MOD_TETRION_ALT,
|
|
MOD_DREADNOUGHT,
|
|
MOD_DREADNOUGHT_ALT,
|
|
MOD_QUANTUM,
|
|
MOD_QUANTUM_SPLASH,
|
|
MOD_QUANTUM_ALT,
|
|
MOD_QUANTUM_ALT_SPLASH,
|
|
|
|
MOD_DETPACK,
|
|
MOD_SEEKER,
|
|
|
|
//expansion pack
|
|
MOD_KNOCKOUT,
|
|
MOD_ASSIMILATE,
|
|
MOD_BORG,
|
|
MOD_BORG_ALT,
|
|
|
|
MOD_RESPAWN,
|
|
MOD_EXPLOSION,
|
|
MOD_FORCEFIELD, //RPG-X: RedTechie - Added for forcefield kill
|
|
MOD_FORCEDSUICIDE, //RPG-X: RedTechie - Added for force kill
|
|
MOD_CUSTOM_DIE, //RPG-X: TiM - Added for custom die messages
|
|
|
|
MOD_MAX
|
|
} meansOfDeath_t;
|
|
|
|
//---------------------------------------------------------
|
|
|
|
// gitem_t->type
|
|
typedef enum {
|
|
IT_BAD,
|
|
IT_WEAPON, // EFX: rotate + upscale + minlight
|
|
IT_AMMO, // EFX: rotate
|
|
IT_ARMOR, // EFX: rotate + minlight
|
|
IT_HEALTH, // EFX: static external sphere + rotating internal
|
|
IT_POWERUP, // instant on, timer based
|
|
// EFX: rotate + external ring that rotates
|
|
IT_HOLDABLE, // single use, holdable item
|
|
// EFX: rotate + bob
|
|
IT_TEAM
|
|
} itemType_t;
|
|
|
|
typedef struct gitem_s {
|
|
char *classname; //!< spawning name
|
|
char *pickup_sound;
|
|
char *world_model;
|
|
char *view_model;
|
|
|
|
char *icon;
|
|
char *pickup_name; //!< for printing on pickup
|
|
|
|
int quantity; //!< for ammo how much, or duration of powerup
|
|
itemType_t giType; //!< IT_* flags
|
|
|
|
int giTag;
|
|
|
|
char *precaches; //!< string of all models and images this item will use
|
|
char *sounds; //!< string of all sounds this item will use
|
|
//char paddMsg[512]; // RPG-X: Marcin: I hope this works. - 06/12/2008 - no it does not i'm an idiot
|
|
} gitem_t;
|
|
|
|
// included in both the game dll and the client
|
|
extern gitem_t bg_itemlist[];
|
|
extern int bg_numItems;
|
|
|
|
extern int bg_numEmotes; //TiM - added a counter variable since it'd be easier to store then :P
|
|
extern int bg_numGiveItems;
|
|
|
|
gitem_t *BG_FindItemWithClassname(const char *name);
|
|
char *BG_FindClassnameForHoldable(holdable_t pw);
|
|
gitem_t *BG_FindItem( const char *pickupName/*const char *classname*/ );//RPG-X: RedTechie - Attempting to fix give cmd
|
|
gitem_t *BG_FindItemForWeapon( weapon_t weapon );
|
|
gitem_t *BG_FindItemForAmmo( weapon_t weapon );
|
|
gitem_t *BG_FindItemForPowerup( powerup_t pw );
|
|
gitem_t *BG_FindItemForHoldable( holdable_t pw );
|
|
#define ITEM_INDEX(x) ((x)-bg_itemlist)
|
|
|
|
qboolean BG_CanItemBeGrabbed( const entityState_t *ent, const playerState_t *ps, int maxWeap );
|
|
|
|
|
|
// g_dmflags->integer flags
|
|
#define DF_NO_FALLING 8
|
|
#define DF_FIXED_FOV 16
|
|
#define DF_NO_FOOTSTEPS 32
|
|
|
|
// content masks
|
|
#define MASK_ALL (-1)
|
|
#define MASK_SOLID (CONTENTS_SOLID)
|
|
#define MASK_PLAYERSOLID (CONTENTS_SOLID|CONTENTS_PLAYERCLIP|CONTENTS_BODY)
|
|
#define MASK_DEADSOLID (CONTENTS_SOLID|CONTENTS_PLAYERCLIP)
|
|
#define MASK_WATER (CONTENTS_WATER|CONTENTS_LAVA|CONTENTS_SLIME)
|
|
#define MASK_OPAQUE (CONTENTS_SOLID|CONTENTS_SLIME|CONTENTS_LAVA)
|
|
#define MASK_SHOT (CONTENTS_SOLID|CONTENTS_BODY|CONTENTS_CORPSE|CONTENTS_SHOTCLIP)
|
|
#define MASK_ONLYPLAYER (CONTENTS_PLAYERCLIP | CONTENTS_BODY) //RPG-X: - J2J Added for that transporter effect thingy where it appears next to the target (well not really, but dont tell)
|
|
#define MASK_BRUSHES (CONTENTS_STRUCTURAL|CONTENTS_DETAIL|CONTENTS_TRANSLUCENT) //RPG-X: RedTechie - Added for FX gun for "anal probe" -jason
|
|
|
|
//
|
|
// entityState_t->eType
|
|
//
|
|
|
|
// VERY IMPORTANT, if you change this enum, you MUST also change the enum in be_aas_entity.c! THANKS ID!!!!! WTG! GG!
|
|
|
|
typedef enum {
|
|
ET_GENERAL,
|
|
ET_PLAYER,
|
|
ET_ITEM,
|
|
ET_MISSILE,
|
|
ET_ALT_MISSILE,
|
|
ET_MOVER,
|
|
ET_BEAM,
|
|
ET_PORTAL,
|
|
ET_SPEAKER,
|
|
ET_PUSH_TRIGGER,
|
|
ET_TELEPORT_TRIGGER,
|
|
ET_INVISIBLE,
|
|
ET_LASER, //!< lasersight entity type
|
|
ET_USEABLE,
|
|
ET_TRIC_STRING, //RPG-X: TiM - Tricorder string var
|
|
ET_TURBOLIFT, //RPG-X: TIM - Spawns a looping turbolift sound
|
|
ET_MOVER_STR, //RPG-X: GSIO01 - Mover entity that has Tricorder string var
|
|
|
|
ET_EVENTS // any of the EV_* events can be added freestanding
|
|
// by setting eType to ET_EVENTS + eventNum
|
|
// this avoids having to set eFlags and eventNum
|
|
} entityType_t;
|
|
|
|
/*====================
|
|
SecurityCode
|
|
TiM: Defines and security
|
|
structs for the local security
|
|
ID system.
|
|
=====================*/
|
|
#define SECURITY_ID ('7'<<24|'X'<<16|'G'<<8|'R') //RGX7 - Unique ID for the file
|
|
#define SECURITY_HASH 0xffffffff //!<Identifier to validate the hash file against this copy of EF
|
|
#define SECURITY_PID 0xffffffff //!<Main player ID that is sent to the server and checked for validation
|
|
|
|
//#define SECURITY_SIZE 4+2+4+2+4+2
|
|
#define SECURITY_SIZE 4+4+4
|
|
#define SECURITY_FILE "rpgxid.dat"
|
|
|
|
typedef struct
|
|
{
|
|
unsigned long ID;
|
|
//short padding;
|
|
unsigned long hash;
|
|
//short padding2;
|
|
unsigned long playerID;
|
|
//short padding3;
|
|
} rpgxSecurityFile_t;
|
|
|
|
void BG_EvaluateTrajectory( const trajectory_t *tr, int atTime, vec3_t result );
|
|
void BG_EvaluateTrajectoryDelta( const trajectory_t *tr, int atTime, vec3_t result );
|
|
|
|
void BG_AddPredictableEventToPlayerstate( int newEvent, int eventParm, playerState_t *ps );
|
|
|
|
void BG_PlayerStateToEntityState( playerState_t *ps, entityState_t *s, qboolean snap );
|
|
|
|
qboolean BG_PlayerTouchesItem( playerState_t *ps, entityState_t *item, int atTime );
|
|
|
|
char *NextWordEndsHere(char *pos);
|
|
char *EndWord(char *pos);
|
|
|
|
#define ARENAS_PER_TIER 4
|
|
#define MAX_ARENAS 1024
|
|
#define MAX_ARENAS_TEXT 8192
|
|
|
|
#define MAX_BOTS 1024
|
|
#define MAX_BOTS_TEXT 8192
|
|
|
|
//make this match Max_Ammo in g_items please;
|
|
#define PHASER_AMMO_MAX 50
|
|
|
|
extern int Max_Ammo[];
|