/* ============================================================================== SOURCE FOR GLOBALVARS_T C STRUCTURE ============================================================================== */ // // system globals // entity self; entity other; entity world; float time; float frametime; #ifdef QUAKE_WORLD entity newmis; // if this is set, the entity that just // run created a new missile that should // be simulated immediately #endif float force_retouch; // force all entities to touch triggers // next frame. this is needed because // non-moving things don't normally scan // for triggers, and when a trigger is // created (like a teleport trigger), it // needs to catch everything. // decremented each frame, so set to 2 // to guarantee everything is touched string mapname; #ifndef QUAKE_WORLD float deathmatch; float coop; float teamplay; #endif float serverflags; // propagated from level to level, used to // keep track of completed episodes float total_secrets; float total_monsters; float found_secrets; // number of secrets found float killed_monsters; // number of monsters killed // spawnparms are used to encode information about clients across server // level changes float parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16; // // global variables set by built in functions // vector v_forward, v_up, v_right; // set by makevectors() // set by traceline / tracebox float trace_allsolid; float trace_startsolid; float trace_fraction; vector trace_endpos; vector trace_plane_normal; float trace_plane_dist; entity trace_ent; float trace_inopen; float trace_inwater; entity msg_entity; // destination of single entity writes // // required prog functions // void() main; // only for testing void() StartFrame; void() PlayerPreThink; void() PlayerPostThink; void() ClientKill; void() ClientConnect; void() PutClientInServer; // call after setting the parm1... parms void() ClientDisconnect; void() SetNewParms; // called when a client first connects to // a server. sets parms so they can be // saved off for restarts void() SetChangeParms; // call to set parms for self so they can // be saved for a level transition //================================================ void end_sys_globals; // flag for structure dumping //================================================ /* ============================================================================== SOURCE FOR ENTVARS_T C STRUCTURE ============================================================================== */ // // system fields (*** = do not set in prog code, maintained by C code) // .float modelindex; // *** model index in the precached list .vector absmin, absmax; // *** origin + mins / maxs .float ltime; // local time for entity #ifdef QUAKE_WORLD .float lastruntime; // *** to allow entities to run out of sequence #endif .float movetype; .float solid; .vector origin; // *** .vector oldorigin; // *** .vector velocity; .vector angles; .vector avelocity; #ifndef QUAKE_WORLD .vector punchangle; // temp angle adjust from damage or recoil #endif .string classname; // spawn function .string model; .float frame; .float skin; .float effects; .vector mins, maxs; // bounding box extents reletive to origin .vector size; // maxs - mins .void() touch; .void() use; .void() think; .void() blocked; // for doors or plats, called when can't push other .float nextthink; .entity groundentity; // stats .float health; .float frags; .float weapon; // one of the IT_SHOTGUN, etc flags .string weaponmodel; .float weaponframe; .float currentammo; .float ammo_shells, ammo_nails, ammo_rockets, ammo_cells; .float items; // bit flags .float takedamage; .entity chain; .float deadflag; .vector view_ofs; // add to origin to get eye point .float button0; // fire .float button1; // use .float button2; // jump .float impulse; // weapon changes .float fixangle; .vector v_angle; // view / targeting angle for players #ifndef QUAKE_WORLD .float idealpitch; // calculated pitch angle for lookup up slopes #endif .string netname; .entity enemy; //WK We use this on players now, for the martyr code .float flags; .float colormap; .float team; .float max_health; // players maximum health is stored here .float teleport_time; // don't back up .float armortype; // save this fraction of incoming damage .float armorvalue; //Current NUMBER of armor being worn .float waterlevel; // 0 = not in, 1 = feet, 2 = wast, 3 = eyes .float watertype; // a contents value .float ideal_yaw; .float yaw_speed; .entity aiment; .entity goalentity; // a movetarget or an enemy .float spawnflags; .string target; .string targetname; // damage is accumulated through a frame. and sent as one single // message, so the super shotgun doesn't generate huge messages .float dmg_take; .float dmg_save; .entity dmg_inflictor; .entity owner; // who launched a missile .vector movedir; // mostly for doors, but also used for waterjump .string message; // trigger messages .float sounds; // either a cd track number or sound number .string noise, noise1, noise2, noise3; // contains names of wavs to play //================================================ void end_sys_fields; // flag for structure dumping //================================================ /* ============================================================================== VARS NOT REFERENCED BY C CODE ============================================================================== */ // // constants // // edict.flags #define FL_FLY 1 #define FL_SWIM 2 #define FL_CLIENT 8 // set for all client edicts #define FL_INWATER 16 // for enter / leave water splash #define FL_MONSTER 32 #define FL_GODMODE 64 // player cheat #define FL_NOTARGET 128 // player cheat #define FL_ITEM 256 // extra wide size for bonus items #define FL_ONGROUND 512 // standing on something #define FL_PARTIALGROUND 1024 // not all corners are valid #define FL_WATERJUMP 2048 // player jumping out of water #define FL_JUMPRELEASED 4096 // for jump debouncing // edict.movetype values #define MOVETYPE_NONE 0 // never moves //#define MOVETYPE_ANGLENOCLIP 1 //#define MOVETYPE_ANGLECLIP 2 #define MOVETYPE_WALK 3 // players only #define MOVETYPE_STEP 4 // discrete, not real time unless fall #define MOVETYPE_FLY 5 #define MOVETYPE_TOSS 6 // gravity #define MOVETYPE_PUSH 7 // no clip to world, push and crush #define MOVETYPE_NOCLIP 8 #define MOVETYPE_FLYMISSILE 9 // fly with extra size against monsters #define MOVETYPE_BOUNCE 10 #define MOVETYPE_BOUNCEMISSILE 11 // bounce with extra size // edict.solid values #define SOLID_NOT 0 // no interaction with other objects #define SOLID_TRIGGER 1 // touch on edge, but not blocking #define SOLID_BBOX 2 // touch on edge, block #define SOLID_SLIDEBOX 3 // touch on edge, but not an onground #define SOLID_BSP 4 // bsp clip, touch on edge, block // range values #define RANGE_MELEE 0 #define RANGE_NEAR 1 #define RANGE_MID 2 #define RANGE_FAR 3 #define RANGE_VERYFAR 4 //- OfN - Used for sentries // deadflag values #define DEAD_NO 0 #define DEAD_DYING 1 #define DEAD_DEAD 2 #define DEAD_RESPAWNABLE 3 // takedamage values #define DAMAGE_NO 0 #define DAMAGE_YES 1 #define DAMAGE_AIM 2 // items #define IT_AXE 4096 #define IT_SHOTGUN 1 #define IT_SUPER_SHOTGUN 2 #define IT_NAILGUN 4 #define IT_LIGHT_ASSAULT 8 #define IT_GRENADE_LAUNCHER 16 #define IT_ROCKET_LAUNCHER 32 #define IT_LIGHTNING 64 #define IT_EXTRA_WEAPON 128 #define IT_SHELLS 256 #define IT_NAILS 512 #define IT_ROCKETS 1024 #define IT_CELLS 2048 #define IT_ARMOR1 8192 #define IT_ARMOR2 16384 #define IT_ARMOR3 32768 #define IT_SUPERHEALTH 65536 #define IT_KEY1 131072 #define IT_KEY2 262144 #define IT_INVISIBILITY 524288 #define IT_INVULNERABILITY 1048576 #define IT_SUIT 2097152 #define IT_QUAD 4194304 #define IT_HOOK 8388608 // point content values #define CONTENT_EMPTY -1 #define CONTENT_SOLID -2 #define CONTENT_WATER -3 #define CONTENT_SLIME -4 #define CONTENT_LAVA -5 #define CONTENT_SKY -6 #define STATE_TOP 0 #define STATE_BOTTOM 1 #define STATE_UP 2 #define STATE_DOWN 3 #define VEC_ORIGIN '0 0 0' #define VEC_HULL_MIN '-16 -16 -24' #define VEC_HULL_MAX '16 16 32' #define VEC_HULL2_MIN '-32 -32 -24' #define VEC_HULL2_MAX '32 32 64' // protocol bytes #define SVC_SETVIEWPORT 5 #define SVC_SETANGLES 10 #define SVC_TEMPENTITY 23 #define SVC_KILLEDMONSTER 27 #define SVC_FOUNDSECRET 28 #define SVC_INTERMISSION 30 #define SVC_FINALE 31 #define SVC_CDTRACK 32 #define SVC_SELLSCREEN 33 #ifdef QUAKE_WORLD #define SVC_SMALLKICK 34 #define SVC_BIGKICK 35 #define SVC_MUZZLEFLASH 39 #endif #define TE_SPIKE 0 #define TE_SUPERSPIKE 1 #define TE_GUNSHOT 2 #define TE_EXPLOSION 3 #define TE_TAREXPLOSION 4 #define TE_LIGHTNING1 5 #define TE_LIGHTNING2 6 #define TE_WIZSPIKE 7 #define TE_KNIGHTSPIKE 8 #define TE_LIGHTNING3 9 #define TE_LAVASPLASH 10 #define TE_TELEPORT 11 #define TE_BLOOD 12 #define TE_LIGHTNINGBLOOD 13 // sound channels // channel 0 never willingly overrides // other channels (1-7) allways override a playing sound on that channel #define CHAN_AUTO 0 #define CHAN_WEAPON 1 #define CHAN_VOICE 2 #define CHAN_ITEM 3 #define CHAN_BODY 4 #define CHAN_MUSIC 5 //WK For orff.wav #define CHAN_MISC 6 //#define CHAN_MONSTER 7 #define ATTN_NONE 0 #define ATTN_NORM 1 #define ATTN_IDLE 2 #define ATTN_STATIC 3 // update types #define UPDATE_GENERAL 0 #define UPDATE_STATIC 1 #define UPDATE_BINARY 2 #define UPDATE_TEMP 3 // entity effects #define EF_BRIGHTFIELD 1 #define EF_MUZZLEFLASH 2 #define EF_BRIGHTLIGHT 4 #define EF_DIMLIGHT 8 // messages // Since BROADCAST is never used in QW 1.5, and MULTICAST is used instead, // just define BROADCAST as MULTICAST for QW 1.5 #define MSG_MULTICAST 4 #ifdef QUAKE_WORLD #define MSG_BROADCAST #MSG_MULTICAST #else #define MSG_BROADCAST 0 // unreliable to all #endif #define MSG_ONE 1 // reliable to one (msg_entity) #define MSG_ALL 2 // reliable to all #define MSG_INIT 3 // write to the init string // message levels #define PRINT_LOW 0 // pickup messages #define PRINT_MEDIUM 1 // death messages #define PRINT_HIGH 2 // critical messages #define PRINT_CHAT 3 // also goes to chat console // multicast sets #define MULTICAST_ALL 0 // every client #define MULTICAST_PHS 1 // within hearing #define MULTICAST_PVS 2 // within sight #define MULTICAST_ALL_R 3 // every client, reliable #define MULTICAST_PHS_R 4 // within hearing, reliable #define MULTICAST_PVS_R 5 // within sight, reliable //================================================ // // globals // float movedist; #ifndef QUAKE_WORLD float gameover; // set when a rule exits #endif string string_null; // null string, nothing should be held here float empty_float; vector vector_null; //CH empty vector entity activator; // the entity that activated a trigger or brush entity damage_attacker; // set by T_Damage float framecount; float skill; // cvars checked each frame // float teamplay; float timelimit; float fraglimit; float deathmatch; //================================================ // // world fields (FIXME: make globals) // .string wad; .string map; .float worldtype; // 0=medieval 1=metal 2=base //================================================ .string killtarget; // // quakeed fields // .float light_lev; // not used by game, but parsed by light util .float style; // // monster ai // .void() th_stand; .void() th_walk; .void() th_run; .void() th_missile; .void() th_melee; .void(entity attacker, float damage) th_pain; .void() th_die; .entity oldenemy; // mad at this player before taking damage .float speed; .float lefty; .float search_time; //WK Used for hover boots. :/ .float attack_state; //WK Not usable? #define AS_STRAIGHT 1 #define AS_SLIDING 2 #define AS_MELEE 3 #define AS_MISSILE 4 #define AS_FIREBALL 5 // // player only fields // .float walkframe; //WK .float maxspeed; .float gravity; //WK -- Holds how much money we have left while building, and // for toggling between engineer and spy menus in the game (hackish, yes) .float money; .float custom_speed; .float ff_count; //How many friendlies killed //.float be_count; //Bad Engy count, break threshold, RESTICTED BUILD .float penance_time; //Time your penance will cease .float last_attacked_time; //Time that you were last shot at .entity inspirator; //Holds pointer to your chaplan .float has_cheated; //Holds if the user has tried to cheat or not // SB - for demons //.float demon_points; UNUSED - OfN .float demon_choice; .float demon_blood; .entity demon_one; .entity demon_two; //- OfN Not used for demons, used for hacking //- OfN - .float army_ready; //- if #TRUE, soldier ready for teleport, this is set by the army_timer's .float num_mines; // OfN Number of guerilla mines the player has // Also used for friendly hacks on machines //- OfN - Cool gibs data stored on each TF_T_Damage //.vector gb_origin; // Origin of last damage //.float gb_disable; // if #TRUE don't use cool gibs // hacker defences //.float hacker_defence; // -OfN by SB, I use num_mines instead, for hacker improvements/ice //For the demon .void() th_fireball; #define MAX_HOVER_FUEL 5 //Boots will recharge up to this maximum .float hover_time; //How much fuel we have left in boots #define CUSTOM_ON_SPAWN 1 //When dead, rebuild #define CUSTOM_FINISHED 2 //Normal gameplay #define CUSTOM_BUILDING 4 //Making a class #define CUSTOM_OVERRIDE 8 //Used internally by menu.qc #define CUSTOM_SELLING 16 //Person wants to sell his frags for money #define SPENDING_LIMIT 10000 //How much to start with if serverinfo m is not set .float done_custom; //END WK .entity scaned; //CH used for scanner. .float attack_finished; .float pain_finished; .float invincible_finished; .float invisible_finished; .float super_damage_finished; .float radsuit_finished; .float invincible_time, invincible_sound; .float invisible_time, invisible_sound; .float super_time, super_sound; .float rad_time; .float fly_sound; .float axhitme; .float show_hostile; // set to time+0.2 whenever a client fires a // weapon or takes damage. Used to alert // monsters that otherwise would let the player go .float jump_flag; // player jump flag .float swim_flag; // player swimming sound flag .float air_finished; // when time > air_finished, start drowning .float bubble_count; // keeps track of the number of bubbles .string deathtype; // keeps track of how the player died // // object stuff // .string mdl; .vector mangle; // angle at start .vector oldorigin; // only used by secret door .float t_length, t_width; // // doors, etc // .vector dest, dest1, dest2; .float wait; // time from firing to restarting .float delay; // time from activation to firing .entity trigger_field; // door's trigger entity .string noise4; // // monsters // .float pausetime; .entity movetarget; // // doors // .float aflag; .float dmg; // damage done by door when hit // // misc // .float cnt; // misc flag // // subs // .void() think1; .vector finaldest, finalangle; // // triggers // .float count; // for counting triggers // // plats / doors / buttons // .float lip; .float state; .vector pos1, pos2; // top and bottom positions .float height; // // sounds // .float waitmin, waitmax; .float distance; .float volume; //=========================================================================== // // builtin functions // void(vector ang) makevectors = #1; // sets v_forward, etc globals void(entity e, vector o) setorigin = #2; void(entity e, string m) setmodel = #3; // set movetype and solid first void(entity e, vector min, vector max) setsize = #4; // #5 was removed void() break = #6; float() random = #7; // returns 0 - 1 void(entity e, float chan, string samp, float vol, float atten) sound = #8; vector(vector v) normalize = #9; void(string e) error = #10; void(string e) objerror = #11; float(vector v) vlen = #12; float(vector v) vectoyaw = #13; entity() spawn = #14; void(entity e) remove = #15; // sets trace_* globals // nomonsters can be: // An entity will also be ignored for testing if forent == test, // forent->owner == test, or test->owner == forent // a forent of world is ignored void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16; entity() checkclient = #17; // returns a client to look for entity(entity start, .string fld, string match) find = #18; string(string s) precache_sound = #19; string(string s) precache_model = #20; void(entity client, string s)stuffcmd = #21; entity(vector org, float rad) findradius = #22; #ifndef QUAKE_WORLD //void(string s) bprint = #23; //void(entity client, string s) sprint = #24; void(...) nqw_bprint = #23; void(...) nqw_sprint = #24; // used for QW compatibility /* void(float level, string s) bprint; void(entity client, float level, string s) sprint; void(float level, string s1, string s2) bprint2; void(entity client, float level, string s1, string s2) sprint2; void(float level, string s1, string s2, string s3) bprint3; void(entity client, float level, string s1, string s2, string s3) sprint3; void(float level, string s1, string s2, string s3, string s4) bprint4; void(entity client, float level, string s1, string s2, string s3, string s4) sprint4; void(float level, string s1, string s2, string s3, string s4, string s5) bprint5; void(entity client, float level, string s1, string s2, string s3, string s4, string s5) sprint5; void(float level, string s1, string s2, string s3, string s4, string s5, string s6) bprint6; void(entity client, float level, string s1, string s2, string s3, string s4, string s5, string s6) sprint6; void(float level, string s1, string s2, string s3, string s4, string s5, string s6, string s7) bprint7; void(entity client, float level, string s1, string s2, string s3, string s4, string s5, string s6, string s7) sprint7; void(float level, string s1, string s2, string s3, string s4, string s5, string s6, string s7, string s8) bprint8; */ #else //void(float level, string s) bprint = #23; //void(entity client, float level, string s) sprint = #24; void(...) bprint = #23; void(...) sprint = #24; void(...) bprint2 = #23; void(...) sprint2 = #24; void(...) bprint3 = #23; void(...) sprint3 = #24; void(...) bprint4 = #23; void(...) sprint4 = #24; void(...) bprint5 = #23; void(...) sprint5 = #24; void(...) bprint6 = #23; void(...) sprint6 = #24; void(...) bprint7 = #23; void(...) sprint7 = #24; void(...) bprint8 = #23; #endif void(string s) dprint = #25; string(float f) ftos = #26; string(vector v) vtos = #27; void() coredump = #28; // prints all edicts void() traceon = #29; // turns statment trace on void() traceoff = #30; void(entity e) eprint = #31; // prints an entire edict float(float yaw, float dist) walkmove = #32; // returns #TRUE or #FALSE // #33 was removed float() droptofloor= #34; // #TRUE if landed on floor void(float style, string value) lightstyle = #35; float(float v) rint = #36; // round to nearest int float(float v) floor = #37; // largest integer <= v float(float v) ceil = #38; // smallest integer >= v // #39 was removed float(entity e) checkbottom = #40; // true if self is on ground float(vector v) pointcontents = #41; // returns a CONTENT_* // #42 was removed float(float f) fabs = #43; vector(entity e, float speed) aim = #44; // returns the shooting vector float(string s) cvar = #45; // return cvar.value void(string s) localcmd = #46; // put string into local que entity(entity e) nextent = #47; // for looping through all ents void(vector o, vector d, float color, float count) particle = #48;// start a particle effect void() ChangeYaw = #49; // turn towards self.ideal_yaw // at self.yaw_speed // #50 was removed vector(vector v) vectoangles = #51; // // direct client message generation // void(float to, float f) WriteByte = #52; void(float to, float f) WriteChar = #53; void(float to, float f) WriteShort = #54; void(float to, float f) WriteLong = #55; void(float to, float f) WriteCoord = #56; void(float to, float f) WriteAngle = #57; void(float to, string s) WriteString = #58; void(float to, entity s) WriteEntity = #59; void(float step) movetogoal = #67; string(string s) precache_file = #68; // no effect except for -copy void(entity e) makestatic = #69; void(string s) changelevel = #70; //#71 was removed void(string var, string val) cvar_set = #72; // sets cvar.value //void(entity client, string s) centerprint = #73; // sprint, but in middle void(...) centerprint = #73; #ifndef STATUSBAR void(entity pl, string s1) CenterPrint = #73; void(entity pl, string s1, string s2) CenterPrint2 = #73; #endif void(vector pos, string samp, float vol, float atten) ambientsound = #74; string(string s) precache_model2 = #75; // registered version only string(string s) precache_sound2 = #76; // registered version only string(string s) precache_file2 = #77; // registered version only void(entity e) setspawnparms = #78; // set parm1... to the // values at level start // for coop respawn #ifdef QUAKE_WORLD void(entity killer, entity killee) logfrag = #79; // add to stats string(entity e, string key) infokey = #80; // get a key value (world = serverinfo) float(string s) stof = #81; // convert string to float void(vector where, float set) multicast = #82; // sends the temp message to a set // of clients, possibly in PVS or PHS #endif void (entity ent, string key, string value) setinfokey = #102; //============================================================================ // // subs.qc // void(vector tdest, float tspeed, void() func) SUB_CalcMove; void(entity ent, vector tdest, float tspeed, void() func) SUB_CalcMoveEnt; void(vector destangle, float tspeed, void() func) SUB_CalcAngleMove; void() SUB_CalcMoveDone; void() SUB_CalcAngleMoveDone; void() SUB_Null; void() SUB_UseTargets; void() SUB_Remove; // // combat.qc // void(entity targ, entity inflictor, entity attacker, float damage) T_Damage; float (entity e, float healamount, float ignore) T_Heal; // health function float(entity targ, entity inflictor) CanDamage; //=========================================================================== // TEAMFORTRESS Defs //=========================================================================== .float playerclass; .float nextpc; // The playerclass you'll respawn as .float last_impulse; // The previous impulse command from this player .float armorclass; // Type of *special* armor being worn .float tf_items; // Another flag for player items .float job; // WK Yet another flag for player items .float job_finished; // WK Time for job ability to end/reload .float tf_items_flags; // Flags for the player items .float no_grenades_1; // Number of grenades of type 1 being carried .float no_grenades_2; // Number of grenades of type 2 being carried .float tp_grenades_1; // 1st type of grenades being carried .float tp_grenades_2; // 2nd type of grenades being carried .float got_aliases; // TRUE if the player has TeamFortress aliases .float cheat_check; // Time when we'll next check for team cheats .float is_removed; // TRUE if the entity has been removed .float is_undercover; // TRUE for a SPY if they're undercover .float is_building; // TRUE for an ENGINEER if they're building something .float is_detpacking; // TRUE for a DEMOMAN if they're setting a detpack .float is_feigning; // TRUE for a SPY if they're feigning death .float is_haxxxoring; // TRUE if the player is hax0ring something .float is_toffingadet; // TRUE if the player is arming a C4 det .float is_unabletospy; // TRUE for a SPY if they can't go undercover .float is_malfunctioning; //- SB/OfN For buildings and cyberaug players to determine if screwed up .float is_abouttodie; // Oh no I am a martyr and about to die //.float is_cameraviewing; // We're gazing out of the camera .float is_killed; // avoids stack overflow on killed() ?? (only skips killed() for buildings) .float option; // - OfN - used for megatf effect_random_sound support, and for camera/sensor build-destroy overflow control .float option2; // - OfN - used for megatf effect_random_sound support .float has_disconnected; // TRUE if the player has disconnected .float has_dispenser; // TRUE for an ENGINEER if he has a dispenser .float has_sentry; // TRUE for an ENGINEER if he has a sentry .float has_tesla; // TRUE for an ENGINEER if he has a tesla .float has_camera; // TRUE for an ENGINEER if he has a camera .float has_sensor; // TRUE for an ENGINEER if he has a motion sensor .float has_teleporter; // contains # of teleporters .float has_fieldgen; // contains # of field generators .float admin_flag; // TRUE if player has admin access .entity admin_kick; // Contains the current client to kick .entity martyr_enemy; // The last guy that shot the martyr. self = nobody .float stored_deathmsg; // OfN - UNUSED? - ofn nope hehe .float cluster_mode; // 0=nothing 1=normal 2=cluster //- OfN fields ---------------------------------// .float has_holo; // holds player's holo status // Rotation entities fields .vector neworigin; .vector rotate; .float endtime; .float rotate_type; .string path; .string group; .string event; .float duration; // AirFist fields - .float AIRG_Timeout; .float AIRG_FireCount; .float AIRG_Flags; .entity AIRG_FlyTracker; // crusader fields .float aura; // The aura of the player .float aura_time; // When the aura runs out .entity crusader_inspirator; // different than inspirator for chapplan // OfN Warlock monsters .entity summon_one; .entity summon_two; // laser cannon fields - // NONE, i used alternative ones //.vector old_velocity; // I use neworigin .float reload_laser_cannon; // fieldgen fields .float fieldgen_status; .float fieldgen_hasfield; .entity fieldgen_field; //----------------------------------------------// // TeamFortress State Flags .float tfstate; // State flags for TeamFortress #define TFSTATE_GRENPRIMED 1 // Whether the player has a primed grenade #define TFSTATE_RELOADING 2 // Whether the player is reloading #define TFSTATE_CONCUSSIONED 4 // If the person is dizzy and fumbling #define TFSTATE_RANDOMPC 8 // Whether Playerclass is random, new one each respawn #define TFSTATE_INFECTED 16 // set when player is infected by the bioweapon #define TFSTATE_INVINCIBLE 32 // Player has permanent Invincibility (Usually by GoalItem) #define TFSTATE_INVISIBLE 64 // Player has permanent Invisibility (Usually by GoalItem) #define TFSTATE_QUAD 128 // Player has permanent Quad Damage (Usually by GoalItem) #define TFSTATE_RADSUIT 256 // Player has permanent Radsuit (Usually by GoalItem) #define TFSTATE_BURNING 512 // Is on fire #define TFSTATE_GRENTHROWING 1024 // is throwing a grenade #define TFSTATE_AIMING 2048 // is using the laser sight #define TFSTATE_ZOOMOFF 4096 // doesn't want the FOV changed when zooming #define TFSTATE_RESPAWN_READY 8192 // is waiting for respawn, and has pressed fire #define TFSTATE_HALLUCINATING 16384 // set when player is hallucinating #define TFSTATE_TRANQUILISED 32768 // set when player is tranquilised #define TFSTATE_CANT_MOVE 65536 // set when player is setting a detpack //WK #define TFSTATE_INSPIRED 131072 // set when chaplan is in their area //CH #define TFSTATE_RL_LASER 262144 //CH set when aiming laser with rl //SB #define TFSTATE_C4THROW 524288 // we're priming the detpack .entity linked_list; // Used just like chain. Has to be separate so // it doesn't interfere with chain. See T_RadiusScan .entity observer_list; // Used by undefined classes, see TF_MovePlayer // Defines used by TF_T_Damage (see combat.qc) #define TF_TD_IGNOREARMOUR 1 // Bypasses the armour of the target #define TF_TD_NOTTEAM 2 // Doesn't damage a team member (indicates direct fire weapon) #define TF_TD_NOTSELF 4 // Doesn't damage self #define TF_TD_OTHER 0 // Ignore armorclass #define TF_TD_SHOT 1 // Bullet damage #define TF_TD_NAIL 2 // Nail damage #define TF_TD_EXPLOSION 4 // Explosion damage #define TF_TD_ELECTRICITY 8 // Electric damage #define TF_TD_FIRE 16 // Fire damage #define TF_TD_NOSOUND 256 // Special damage. Makes no sound/painframe, etc // Playerclass handling variables .float maxammo_shells; // Class holding details .float maxammo_nails; .float maxammo_cells; .float maxammo_rockets; .float items_allowed; .float armor_allowed; //Maximum color armor we can have. 0.3 for scouts... .float maxarmor; //Maximum number of armor we can have. 200 for soldiers... //WK .float maxfbspeed; // Maximum forward/back speed //WK .float maxstrafespeed; // Maximum side speed .float weaponmode; // Used for multiple mode weapons //WK 152 Default, must be > 6. #define MOTD_FINISHED 242 //Delay in 1/10th seconds for motd to show .float motd; // Used to display MOTD .float current_menu; // is set to the number of the current menu, is 0 if they are not in a menu .float menu_count; // keeps track of display times for menus .float menu_displaytime; // keep track of how many times this menu is refreshed /*==================================================*/ /* Toggleable Game Settings */ /*==================================================*/ float toggleflags; // toggleable flags #define TF_RESPAWNDELAY1 5 // seconds of waiting before player can respawn #define TF_RESPAWNDELAY2 10 // seconds of waiting before player can respawn #define TF_RESPAWNDELAY3 20 // seconds of waiting before player can respawn float respawn_delay_time; #define TEAMPLAY_NORMAL 1 #define TEAMPLAY_HALFDIRECT 2 #define TEAMPLAY_NODIRECT 4 #define TEAMPLAY_HALFEXPLOSIVE 8 #define TEAMPLAY_NOEXPLOSIVE 16 #define TEAMPLAY_LESSPLAYERSHELP 32 #define TEAMPLAY_LESSSCOREHELP 64 #define TEAMPLAY_HALFARMORDIRECT 128 #define TEAMPLAY_NOARMORDIRECT 256 #define TEAMPLAY_HALFARMOREXPLOSIVE 512 #define TEAMPLAY_NOARMOREXPLOSIVE 1024 #define TEAMPLAY_HALFMIRRORDIRECT 2048 #define TEAMPLAY_FULLMIRRORDIRECT 4096 #define TEAMPLAY_HALFMIRROREXPLOSIVE 8192 #define TEAMPLAY_FULLMIRROREXPLOSIVE 16384 #define TEAMPLAY_VAMPIRE 32768 //#define TEAMPLAY_LIGHT_DAMAGE 131072 // FortressMap stuff float number_of_teams; // number of teams supported by the map float illegalclasses; // Illegal playerclasses for all teams float illegalclasses1; // Illegal playerclasses for team 1 float illegalclasses2; // Illegal playerclasses for team 2 float illegalclasses3; // Illegal playerclasses for team 3 float illegalclasses4; // Illegal playerclasses for team 4 float civilianteams; // Bitfield holding Civilian teams #define TEAM1_CIVILIANS 1 #define TEAM2_CIVILIANS 2 #define TEAM3_CIVILIANS 4 #define TEAM4_CIVILIANS 8 float team1col; // Colours for each of the 4 teams float team2col; // If there's enough demand, we'll float team3col; // allow more than four teams... float team4col; // but there's no demand at all, so no float team1score; // Goal Score of each team float team2score; float team3score; float team4score; float team1lives; // Number of lives each team's players have float team2lives; float team3lives; float team4lives; //--- OfN global vars ----// float pay_msgs; float team_prefix; float max_mines; //float allow_mauser; //float allow_antigrav; float no_clusters; float no_c4; float no_otr; float no_laser; float no_grapple; float headless; float custom_mode; float stock_mode; float nicecolors; float relax_cheatcheck; //float cool_gibs; float army_delay; float no_monstercolors; float no_army; float no_chaplan; float no_detpush; //- REMOTE DEBUG GLOBALS -// entity debug_target; // server dprints will go to this client too float allow_debug; //-------------------------// float allow_watermonsters; // if so, grunts and monsters can be in water, in check_contents ai.qc // Chris' Teamplay Plus Mode /*float chris; // Is Chris mode on or off float team1rounds; // No. of rounds won per team float team2rounds; float team3rounds; float team4rounds; float team1total; // no. of players alive per team float team2total; float team3total; float team4total; float roundstowin; // No. of rounds required to win float roundendtime; // The end time of the current round float roundtime; // Time per round float livesperguy; // Number of lives per guy // end Chris*/ float team1maxplayers; // Max number of players allowed in each team float team2maxplayers; float team3maxplayers; float team4maxplayers; float team1advantage; // only used if the teamplay equalisation bits are set float team2advantage; // stores the damage ratio players take/give float team3advantage; float team4advantage; //WK Holds the next time that we'll allow a spam grenade to be thrown. float team1nextspam; float team2nextspam; float team3nextspam; float team4nextspam; .float team_no; // The team you belong to .float old_team_no; // WK The team you used belong to .float lives; // The number of lives you have left .float infection_team_no; // The team_no of the person who infected you // CTF stuff float CTF_Map; #ifdef QUAKE_WORLD float coop; float rj; // Rocket Jump Modifier #endif // Defines for the playerclass #define PC_UNDEFINED 0 #define PC_SCOUT 1 #define PC_SNIPER 2 #define PC_SOLDIER 3 #define PC_DEMOMAN 4 #define PC_MEDIC 5 #define PC_HVYWEAP 6 #define PC_PYRO 7 #define PC_SPY 8 #define PC_ENGINEER 9 // Insert new class definitions here // PC_RANDOM _MUST_ be the third last class WK - Why? #define PC_RANDOM 10 // Random playerclass #define PC_CUSTOM 11 // WK - THE NEW CLASS BEEEATCH #define PC_CIVILIAN 12 // Civilians are a special class. They cannot // be chosen by players, only enforced by maps #define PC_LASTCLASS 13 // Use this as the high-boundary for any loops // through the playerclass. /*==================================================*/ /* Impulse Defines */ /*==================================================*/ // Alias check to see whether they already have the aliases #define TF_ALIAS_CHECK 13 // CTF Support Impulses #define HOOK_IMP1 22 #define FLAG_INFO 23 #define HOOK_IMP2 39 // Axe #define AXE_IMP 40 // Camera Impulse #define TF_CAM_TARGET 50 #define TF_CAM_ZOOM 51 #define TF_CAM_ANGLE 52 #define TF_CAM_VEC 53 #define TF_CAM_PROJECTILE 54 #define TF_CAM_PROJECTILE_Z 55 #define TF_CAM_REVANGLE 56 #define TF_CAM_OFFSET 57 #define TF_CAM_DROP 58 #define TF_CAM_FADETOBLACK 59 #define TF_CAM_FADEFROMBLACK 60 #define TF_CAM_FADETOWHITE 61 #define TF_CAM_FADEFROMWHITE 62 // Status Bar Resolution Settings. Same as CTF to maintain ease of use. #define TF_STATUSBAR_RES_START 71 #define TF_STATUSBAR_RES_END 81 // Added to PC_??? to get impulse to use if this clashes with your // own impulses, just change this value, not the PC_?? #define TF_CHANGEPC 100 // The next few impulses are all the class selections //PC_SCOUT 101 //PC_SNIPER 102 //PC_SOLDIER 103 //PC_DEMOMAN 104 //PC_MEDIC 105 //PC_HVYWEAP 106 //PC_PYRO 107 //PC_RANDOM 108 //PC_CIVILIAN 109 // Cannot be used //PC_SPY 110 //PC_ENGINEER 111 //Changed, this is Custom now // Help impulses #define TF_DISPLAYLOCATION 118 #define TF_STATUS_QUERY 119 #define TF_CHANGECLASS 120 #define TF_UNCUSTOM 121 #define TF_HELP_MAP 131 // Information impulses #define TF_INVENTORY 135 #define TF_SHOWTF 136 #define TF_SHOWLEGALCLASSES 137 // Team Impulses #define TF_TEAM_1 140 // Join Team 1 #define TF_TEAM_2 141 // Join Team 2 #define TF_TEAM_3 142 // Join Team 3 #define TF_TEAM_4 143 // Join Team 4 #define TF_TEAM_CLASSES 144 // Impulse to display team classes #define TF_TEAM_SCORES 145 // Impulse to display team scores #define TF_TEAM_LIST 146 // Impulse to display the players in each team. #define TF_TEAM_ENUM 147 // WK WK // Grenade Impulses #define TF_GRENADE_1 150 // Prime grenade type 1 #define TF_GRENADE_2 151 // Prime grenade type 2 #define TF_GRENADE_T 152 // Throw primed grenade // Impulses for new items #define TF_SCAN 159 // Scanner Pre-Impulse #define TF_SCAN_ENEMY 160 // Impulses to toggle scanning of enemies #define TF_SCAN_FRIENDLY 161 // Impulses to toggle scanning of friendlies #define TF_SCAN_10 162 // Scan using 10 enery (1 cell) #define TF_SCAN_30 163 // Scan using 30 energy (2 cells) #define TF_SCAN_100 164 // Scan using 100 energy (5 cells) #define TF_DETPACK_5 165 // Detpack set to 5 seconds #define TF_DETPACK_20 166 // Detpack set to 20 seconds #define TF_DETPACK_50 167 // Detpack set to 50 seconds #define TF_DETPACK 168 // Detpack Pre-Impulse #define TF_DETPACK_STOP 169 // Impulse to stop setting detpack #define TF_PB_DETONATE 170 // Detonate Pipebombs // Special skill #define TF_SPECIAL_SKILL 171 // Ammo Drop impulse #define TF_DROP_AMMO 172 // Reload impulse #define TF_RELOAD 173 // auto-zoom toggle #define TF_AUTOZOOM 174 // drop/pass commands #define TF_DROPKEY 175 // Select Medikit #define TF_MEDIKIT 176 // Spy Impulses #define TF_SPY_SPY 177 // Bring up spy menu #define TF_SPY_DIE 178 // Feign Death #define TF_SPY_DIE2 213 //CH sfeign // Engineer Impulses #define TF_ENGINEER_BUILD 179 //#define TF_ENGINEER_SANDBAG 180 // SB new impulses //#define BUILD_SENSOR 190 #define THROW_DETPACK 191 //#define IMPULSE_INTERFACE 192 // now its a profession #define IMPULSE_HOLO 192 //- OfN #define IMPULSE_CHECKADMIN 193 #define IMPULSE_UPDATEINFO 194 #define IMPULSE_DEBUG 195 #define IMPULSE_STUFFCMD 219 //#define SWITCH_CAMERA 199 // Medic!! #define TF_MEDIC_HELPME 181 // taunts #define TF_TAUNT 203 //WK #define TF_TAUNT2 204 //WK #define TF_TAUNT3 205 //WK #define TF_TAUNT4 206 //WK #define TF_TAUNT5 207 //WK // Status bar #define TF_STATUSBAR_ON 182 #define TF_STATUSBAR_OFF 183 // Discard impulse #define TF_DISCARD 184 // ID Player impulse #define TF_ID 185 // WK Sell off frags #define TF_SELL 187 #define TF_SKILL 200 #define TF_LAY 201 //MegaTFer killer #define TF_DROPITEMS 202 //CH //Admin controls #define TF_ADMIN_KICK_CYCLE 208 //'getplayer' -- Cycles through people #define TF_ADMIN_KICK_PERSON 209 //'kick' -- kicks current one #define TF_ADMIN_BAN_PERSON 210 //'ban' -- bans current one #define TF_ADMIN_CEASEFIRE 211 //ceasefire //CH in admin.qc is a list of impulses that can be used during ceasefire //To fool proof the cheat impulses #define I_CHEAT_ONE 155 #define I_CHEAT_TWO 83 #define I_CHEAT_THREE 212 /*==================================================*/ /* Colors */ /*==================================================*/ #define WHITE 1 #define BROWN 2 #define BLUE 3 #define GREEN 4 #define RED 5 #define TAN 6 #define PINK 7 #define ORANGE 8 #define PURPLE 9 #define DARKPURPLE 10 #define GREY 11 #define DARKGREEN 12 #define YELLOW 13 #define DARKBLUE 14 /*==================================================*/ /* Defines for the ENGINEER's Building ability */ /*==================================================*/ // Ammo costs #define AMMO_COST_SHELLS 3 // Metal needed to make 1 shell #define AMMO_COST_NAILS 2 #define AMMO_COST_ROCKETS 5 #define AMMO_COST_CELLS 5 // Building types #define BUILD_DISPENSER 1 #define BUILD_SENTRYGUN 2 #define BUILD_TESLA 3 #define BUILD_SECURITY_CAMERA 4 #define BUILD_TELEPORTER 5 #define BUILD_FIELDGEN 6 // Building metal costs #define BUILD_COST_DISPENSER 100 // Built thru the menu #define BUILD_COST_SENTRYGUN 130 // Built thru the menu #define BUILD_COST_TURRET 75 // Built thru the menu #define BUILD_COST_TESLA 100 // Built thru the menu #define BUILD_COST_CAMERA 55 //NOTE is used to check if can build stuff #define BUILD_COST_TELEPORTER 90 #define BUILD_COST_SENSOR 60 #define BUILD_COST_FIELDGEN 140 // Building times #define BUILD_TIME_DISPENSER 2 // 2 seconds to build #define BUILD_TIME_SENTRYGUN 5 // 5 seconds to build #define BUILD_TIME_TESLA 6 // 8 seconds to build #define BUILD_TIME_TELEPORTER 3 // 3 seconds to build #define BUILD_TIME_FIELDGEN 4 // 7 seconds to build //Camera is thrown, no build time - OfN - sensor neither // Building health levels #define BUILD_HEALTH_DISPENSER 150 // Built thru the menu #define BUILD_HEALTH_SENTRYGUN 150 // Built thru the menu #define BUILD_HEALTH_TESLA 200 // Built thru the menu #define BUILD_HEALTH_CAMERA 400 // They dont do much // was 600 #define BUILD_HEALTH_SENSOR 250 // may not do much, but v. annoying // was 200 #define BUILD_HEALTH_TELEPORTER 300 #define BUILD_HEALTH_FIELDGEN 300 // // Building screwups #define SCREWUP_ONE 1 #define SCREWUP_TWO 2 #define SCREWUP_THREE 4 #define SCREWUP_FOUR 8 //#define SCREWUP_FIVE 16 //- OfN Building hack-impovements -// #define IMPROVED_ONE 1 // #define IMPROVED_TWO 2 // level 1 ice (more time to hack it) #define IMPROVED_THREE 4 // #define IMPROVED_FOUR 8 //(usually takeover xcept for teleporter and dispensern) #define IMPROVED_FIVE 16 // Level 2 ice (unable to hack it) #define IMPROVED_SIX 32 // Level 3 ice (kills hacker) #define IMPROVED_SEVEN 64 // used for 2nd sensor revealer hack (for thieves) //---------------------------------// //CH Max distance for teleporter #define TELEPORTER_RANGE 3072 // Dispenser's maximum carrying capability #define BUILD_DISPENSER_MAX_SHELLS 400 #define BUILD_DISPENSER_MAX_NAILS 600 #define BUILD_DISPENSER_MAX_ROCKETS 300 #define BUILD_DISPENSER_MAX_CELLS 400 #define BUILD_DISPENSER_MAX_ARMOR 500 .entity building; // The building the ENGINEER is using .float building_wait; // Used to prevent using a building again immediately .entity real_owner; /*==================================================*/ /* Ammo quantities for dropping */ /*==================================================*/ #define DROP_SHELLS 20 #define DROP_NAILS 20 #define DROP_ROCKETS 10 #define DROP_CELLS 10 #define DROP_ARMOR 40 /*==================================================*/ /* Team Defines */ /*==================================================*/ #define TM_MAX_NO 4 // Max number of teams. Simply changing this value isn't enough. // A new global to hold new team colors is needed, and more flags // in the spawnpoint spawnflags may need to be used. // Basically, don't change this unless you know what you're doing :) .float real_frags; // Used to store the players frags when TeamFrags is On .float respawn_time; // players can't respawn within this time. .float suicide_time; // players can't suicide within this time. /*==================================================*/ /* New Weapon Defines */ /*==================================================*/ .float weapons_carried; // the weapons the player is carrying .float current_weapon; // the weapon the player is using // WK -- Removed "weapons" to free up space for shootable things // We can remove some more by giving the weapons a weapon mode (like the rifle) #define WEAP_HOOK 1 #define WEAP_MEDIKIT 4 #define WEAP_SPANNER 8 #define WEAP_AXE 16 #define WEAP_SNIPER_RIFLE 32 #define WEAP_AUTO_RIFLE 64 #define WEAP_SHOTGUN 128 #define WEAP_SUPER_SHOTGUN 256 #define WEAP_NAILGUN 512 #define WEAP_LIGHT_ASSAULT 1024 #define WEAP_GRENADE_LAUNCHER 2048 #define WEAP_FLAMETHROWER 4096 #define WEAP_ROCKET_LAUNCHER 8192 #define WEAP_INCENDIARY 16384 #define WEAP_ASSAULT_CANNON 32768 #define WEAP_LIGHTNING 65536 #define WEAP_DAEDALUS 131072 //#define WEAP_DETPACK 131072 DONT MAKE ANY AMMOTYPES USE THIS NUMBER! #define WEAP_TRANQ 262144 #define WEAP_LASER 524288 #define WEAP_MAUSER 1048576 #define WEAP_AIRF 2097152 //- OfN - airfist #define WEAP_LASERCANNON 4194304 //- OfN - LASER CANNON #define WEAP_SNG 8388608 //MAX 24 BITS OF PRECISION IN FLOAT! /*====================================================*/ /* New Items WK -- Things to buy in custom! */ /* Treated as weapons, but be sure to check the right */ /* bitfield -- .weapons_carried vs .tf_items! */ /*====================================================*/ //WK these are carried in self.tf_items #define NIT_SCANNER 1 #define NIT_TURRET 2 //Turret #define NIT_KEVLAR 4 //Special Armors #define NIT_GEL 8 #define NIT_BLAST 16 #define NIT_CERAMIC 32 #define NIT_ASBESTOS 64 #define NIT_AMMO_BACKPACK 128 //Increases ammo capacity #define NIT_AMMO_BANDOLIER 256 //Increases starting ammo #define NIT_SCUBA 512 //The Scuba Commando! //WK this next one is only used on teslas, not people, hence the conflict #define NIT_TESLA_CLOAKING 512 //CH Tesla got a cloaking device #define NIT_AUTOID 1024 #define NIT_AUTOMEDIC 2048 #define NIT_RESPAWN_GUARD 4096 #define NIT_AUTOSCANNER 8192 #define NIT_HOVER_BOOTS 16384 //Like a jet pack #define NIT_TESLA 32768 //The *real* bug zapper! #define NIT_SECURITY_CAMERA 65536 //CH Security Camera #define NIT_TELEPORTER 131072 //CH Teleporter #define NIT_TESLA_UPGRADE 262144 //Get more tesla upgrades #define NIT_HOVER_BOOTS_UPGRADE 524288 //CH you get 2x fuel #define NIT_RL_LASER_SIGHT 1048576 //CH #define NIT_CLUSTER_ROCKETS 2097152 //CH //2 more allowed, before we run out of bits in a .float //WK On to the third 24-wide bitfield for holding purchases .float cutf_items; #define CUTF_DETPACK 1 #define CUTF_KNIFE 2 //More like a powerup #define CUTF_SPY_KIT 4 //Allows disguise #define CUTF_HWGUY 8 //Person doesn't bounce #define CUTF_SENTRYGUN 16 //Allows building a gun #define CUTF_JAMMER 32 // SB scanner jammer #define CUTF_FULLARMOUR 64 // SB full armour when spawning #define CUTF_CYBERAUG 128 // SB cybernetic augmentation #define CUTF_SENSOR 256 // SB motion sensor #define CUTF_INTERFACE 512 // SB tech interface - for hax0ring SGs #define CUTF_TOSSABLEDET 1024 // C4 tossable detpack #define CUTF_DISPENSER 2048 // the new buyable dispenc0r #define CUTF_STEALTH 4096 // balance proficiency - done #define CUTF_HIGHJUMP 8192 // highjump proficiency - done #define CUTF_GYMNAST 16384 // Gymnast proficiency #define CUTF_DEMONLORE 32768 // demon lore proficiency #define CUTF_EXPBODY 65536 // martyr #define CUTF_CLOSECOMBAT 131072 // close combat guy //-----------------------------------// #define CUTF_HOLO 262144 // OfN - Holograph #define CUTF_OTR 524288 // OfN - OTR bullets for sniper rifle #define CUTF_FIELDGEN 1048576 // OfN - field generators //Time to be invincible from the respawn guard #define RESPAWN_GUARD_TIME 5 //JOBS AVAILABLE #define JOB_THIEF 1 #define JOB_RUNNER 2 #define JOB_WARLOCK 4 #define JOB_CHAPLAN 8 #define JOB_BERSERKER 16 #define JOB_GUERILLA 32 #define JOB_JUDOKA 64 //- OfN - New jobs - #define JOB_ARMY 128 #define JOB_HACKER 256 #define JOB_MARTYR 512 #define JOB_CRUSADER 1024 //This is the sum of all jobs... #define JOB_ALL 2047 //Not a job, used to simplify bit operators //STATES WE ARE IN FOR JOB //Every time we add one, make sure it gets reset in tfort.qc! #define JOB_ACTIVE 2048 //Job is 'on' like currently hiding #define JOB_FULL_HIDE 4096 //Job is in phase two of "hide" #define JOB_TIRED 8192 //Recovering from a sprint #define JOB_BLOODY_KNIFE 16384 //We've gone OJ on someone #define JOB_DEMON_OUT 32768 //We have a demon in the world //#define JOB_MARTYR_ENEMY ^double //We have been shot, and enemy remembered /*==================================================*/ /* New Weapon Related Defines */ /*==================================================*/ // shots per reload #define RE_SHOTGUN 8 #define RE_SUPER_SHOTGUN 16 // 8 shots #define RE_GRENADE_LAUNCHER 6 #define RE_ROCKET_LAUNCHER 4 #define RE_LIGHT_ASSAULT 40 // reload times #define RE_SHOTGUN_TIME 2 #define RE_SUPER_SHOTGUN_TIME 3 #define RE_GRENADE_LAUNCHER_TIME 4 #define RE_ROCKET_LAUNCHER_TIME 5 #define RE_LIGHT_ASSAULT_TIME 3.5 // Maximum velocity you can move and fire the Sniper Rifle #define WEAP_SNIPER_RIFLE_MAX_MOVE 50 // Medikit #define WEAP_MEDIKIT_HEAL 200 // Amount medikit heals per hit #define WEAP_MEDIKIT_OVERHEAL 50 // Amount of superhealth over max_health the medikit will dispense .float ammo_medikit; // Ammo used for the medikit .float maxammo_medikit; // Spanner #define WEAP_SPANNER_REPAIR 50 // Detpack #define WEAP_DETPACK_DISARMTIME 1 //Time it takes to disarm a Detpack #define WEAP_DETPACK_SETTIME 4 // Time it takes to set a Detpack #define WEAP_DETPACK_SIZE 800 #define WEAP_DETPACK_BITS_NO 12 // Bits that detpack explodes into .float ammo_detpack; // Ammo used for the detpack .float maxammo_detpack; .float ammo_c4det; // ammo for c4 throwable det // Tranquiliser Gun #define TRANQ_TIME 5 // Grenades #define GR_PRIMETIME 3 // Grenade types #define GR_TYPE_NONE 0 #define GR_TYPE_NORMAL 1 #define GR_TYPE_CONCUSSION 2 #define GR_TYPE_NAIL 3 #define GR_TYPE_MIRV 4 #define GR_TYPE_NAPALM 5 #define GR_TYPE_FLAME 5 //WK Our special napalm grenade ;) #define GR_TYPE_FLARE 6 #define GR_TYPE_GAS 7 #define GR_TYPE_EMP 8 #define GR_TYPE_FLASH 9 #define GR_TYPE_FRAG 10 #define GR_TYPE_KRAC 11 #define GR_TYPE_ANTIGRAV 12 #define GR_TYPE_BIO 13 #define GR_TYPE_CALTROP 14 // Defines for WeaponMode #define GL_NORMAL 0 #define GL_PIPEBOMB 1 // Defines for Concussion Grenade #define GR_CONCUSS_TIME 5 #define GR_CONCUSS_DEC 20 // Defines for the Gas Grenade #define GR_HALLU_TIME 0.1 #define GR_HALLU_DEC 2.5 #define NIT_SILVER_DOOR_OPENED #IT_KEY1 // 131072 #define NIT_GOLD_DOOR_OPENED #IT_KEY2 // 262144 /*==================================================*/ /* New Item Flags */ /*==================================================*/ #define NIT_SCANNER_ENEMY 1 // Detect enemies #define NIT_SCANNER_FRIENDLY 2 // Detect friendlies (team members) #define NIT_SCANNER_MOVEMENT 4 // Motion detection. Only report moving entities. /*==================================================*/ /* New Item Related Defines */ /*==================================================*/ #define NIT_SCANNER_POWER 100 // The amount of power spent on a scan with the scanner // is multiplied by this to get the scanrange. #define NIT_SCANNER_MAXCELL 50 // The maximum number of cells than can be used in one scan #define NIT_SCANNER_MIN_MOVEMENT 50 // The minimum velocity an entity must have to be detected // by scanners that only detect movement /*==================================================*/ /* Variables used for New Weapons and Reloading */ /*==================================================*/ .float reload_shotgun; .float reload_super_shotgun; .float reload_grenade_launcher; .float reload_rocket_launcher; .float reload_light_assault; // Assault Cannon .float heat; // Team Color Cheat Checking .float immune_to_chec; //xxxx // Make sure people don't do too many saveme sounds .float last_saveme_sound; // Armor Classes : Bitfields. Use the "armorclass" of armor for the Armor Type. #define AT_SAVESHOT 1 // Kevlar : Reduces bullet damage by 15% #define AT_SAVEMELEE 2 // Gel : Reduces melee attacks by 15% #define AT_SAVEEXPLOSION 4 // Blast : Reduces explosion damage 15% #define AT_SAVEELECTRICITY 8 // Shock : Reduces electricity damage by 15% #define AT_SAVEFIRE 16 // Asbestos : Reduces fire damage by 15% /*==========================================================================*/ /* TEAMFORTRESS CLASS DETAILS */ /*==========================================================================*/ // Class Details for SCOUT #define PC_SCOUT_SKIN 4 // Skin for this class when Classkin is on. #define PC_SCOUT_MAXHEALTH 75 // Maximum Health Level #define PC_SCOUT_MAXSPEED 420 // Maximum movement speed #define PC_SCOUT_MAXSTRAFESPEED 420 // Maximum strafing movement speed #define PC_SCOUT_MAXARMOR 50 // Maximum Armor Level, of any armor class #define PC_SCOUT_INITARMOR 25 // Armor level when respawned #define PC_SCOUT_MAXARMORTYPE 0.3 // Maximum level of Armor absorption #define PC_SCOUT_INITARMORTYPE 0.3 // Absorption Level of armor when respawned #define PC_SCOUT_ARMORCLASSES 3 // #AT_SAVESHOT | #AT_SAVEMELEE <-Armor Classes allowed for this class #define PC_SCOUT_INITARMORCLASS 0 // Armorclass worn when respawned #define PC_SCOUT_WEAPONS #WEAP_AXE | #WEAP_SHOTGUN | #WEAP_NAILGUN | #WEAP_AIRF #define PC_SCOUT_MAXAMMO_SHOT 50 // Maximum amount of shot ammo this class can carry #define PC_SCOUT_MAXAMMO_NAIL 100 // Maximum amount of nail ammo this class can carry #define PC_SCOUT_MAXAMMO_CELL 100 // Maximum amount of cell ammo this class can carry #define PC_SCOUT_MAXAMMO_ROCKET 25 // Maximum amount of rocket ammo this class can carry #define PC_SCOUT_INITAMMO_SHOT 25 // Amount of shot ammo this class has when respawned #define PC_SCOUT_INITAMMO_NAIL 100 // Amount of nail ammo this class has when respawned #define PC_SCOUT_INITAMMO_CELL 50 // Amount of cell ammo this class has when respawned #define PC_SCOUT_INITAMMO_ROCKET 0 // Amount of rocket ammo this class has when respawned //#define PC_SCOUT_GRENADE_TYPE_1 #GR_TYPE_NORMAL // <- 1st Type of Grenade this class has #define PC_SCOUT_GRENADE_TYPE_1 #GR_TYPE_CALTROP //#GR_TYPE_FLASH // <- 1st Type of Grenade this class has #define PC_SCOUT_GRENADE_TYPE_2 #GR_TYPE_CONCUSSION // <- 2nd Type of Grenade this class has #define PC_SCOUT_GRENADE_INIT_1 4 // Number of grenades of Type 1 this class has when respawned #define PC_SCOUT_GRENADE_INIT_2 4 // Number of grenades of Type 2 this class has when respawned #define PC_SCOUT_TF_ITEMS #NIT_SECURITY_CAMERA | #NIT_SCANNER | #NIT_AUTOSCANNER | #NIT_HOVER_BOOTS | #NIT_HOVER_BOOTS_UPGRADE // OfN Now with hover boots #define PC_SCOUT_CUTFITEMS #CUTF_HOLO // | #CUTF_CYBERAUG // OfN Scouts with holo now and cyberaug! #define PC_SCOUT_JOB #JOB_THIEF #define PC_SCOUT_MOTION_MIN_I 0.5 // < Short range #define PC_SCOUT_MOTION_MIN_MOVE 50 // Minimum vlen of player velocity to be picked up by motion detector // Class Details for SNIPER #define PC_SNIPER_SKIN 5 #define PC_SNIPER_MAXHEALTH 90 #define PC_SNIPER_MAXSPEED 320 #define PC_SNIPER_MAXSTRAFESPEED 320 #define PC_SNIPER_MAXARMOR 50 #define PC_SNIPER_INITARMOR 50 #define PC_SNIPER_MAXARMORTYPE 0.3 #define PC_SNIPER_INITARMORTYPE 0.3 #define PC_SNIPER_ARMORCLASSES 3 // #AT_SAVESHOT | #AT_SAVEMELEE #define PC_SNIPER_INITARMORCLASS 1 #define PC_SNIPER_WEAPONS #WEAP_SNIPER_RIFLE | #WEAP_AUTO_RIFLE | #WEAP_AXE | #WEAP_NAILGUN #define PC_SNIPER_MAXAMMO_SHOT 75 #define PC_SNIPER_MAXAMMO_NAIL 100 #define PC_SNIPER_MAXAMMO_CELL 150 #define PC_SNIPER_MAXAMMO_ROCKET 25 #define PC_SNIPER_INITAMMO_SHOT 60 #define PC_SNIPER_INITAMMO_NAIL 50 #define PC_SNIPER_INITAMMO_CELL 0 #define PC_SNIPER_INITAMMO_ROCKET 0 #define PC_SNIPER_GRENADE_TYPE_1 #GR_TYPE_CALTROP #define PC_SNIPER_GRENADE_TYPE_2 #GR_TYPE_FLARE //- OfN it was #GR_TYPE_FLASH #define PC_SNIPER_GRENADE_INIT_1 4 #define PC_SNIPER_GRENADE_INIT_2 6 // OfN it was 4 #define PC_SNIPER_TF_ITEMS #NIT_SECURITY_CAMERA // | #NIT_TESLA #define PC_SNIPER_CUTF_ITEMS 0 // #CUTF_OTR #define PC_SNIPER_JOB #JOB_JUDOKA // Class Details for SOLDIER #define PC_SOLDIER_SKIN 6 #define PC_SOLDIER_MAXHEALTH 100 #define PC_SOLDIER_MAXSPEED 250 #define PC_SOLDIER_MAXSTRAFESPEED 250 #define PC_SOLDIER_MAXARMOR 200 #define PC_SOLDIER_INITARMOR 100 #define PC_SOLDIER_MAXARMORTYPE 0.8 #define PC_SOLDIER_INITARMORTYPE 0.8 #define PC_SOLDIER_ARMORCLASSES 31 // ALL #define PC_SOLDIER_INITARMORCLASS 0 #define PC_SOLDIER_WEAPONS #WEAP_AXE | #WEAP_SHOTGUN | #WEAP_SUPER_SHOTGUN | #WEAP_ROCKET_LAUNCHER #define PC_SOLDIER_MAXAMMO_SHOT 100 #define PC_SOLDIER_MAXAMMO_NAIL 100 #define PC_SOLDIER_MAXAMMO_CELL 50 #define PC_SOLDIER_MAXAMMO_ROCKET 40 #define PC_SOLDIER_INITAMMO_SHOT 50 #define PC_SOLDIER_INITAMMO_NAIL 0 #define PC_SOLDIER_INITAMMO_CELL 0 #define PC_SOLDIER_INITAMMO_ROCKET 20 #define PC_SOLDIER_GRENADE_TYPE_1 #GR_TYPE_NORMAL #define PC_SOLDIER_GRENADE_TYPE_2 #GR_TYPE_NAIL #define PC_SOLDIER_GRENADE_INIT_1 4 #define PC_SOLDIER_GRENADE_INIT_2 2 #define PC_SOLDIER_TF_ITEMS 0 //#NIT_RL_LASER_SIGHT //WK no Cluster - OfN no hover boots #define PC_SOLDIER_JOB #JOB_ARMY //#JOB_RUNNER // Class Details for DEMOLITION MAN #define PC_DEMOMAN_SKIN 1 #define PC_DEMOMAN_MAXHEALTH 90 #define PC_DEMOMAN_MAXSPEED 290 #define PC_DEMOMAN_MAXSTRAFESPEED 290 #define PC_DEMOMAN_MAXARMOR 100 #define PC_DEMOMAN_INITARMOR 50 #define PC_DEMOMAN_MAXARMORTYPE 0.6 #define PC_DEMOMAN_INITARMORTYPE 0.6 #define PC_DEMOMAN_ARMORCLASSES 31 // ALL #define PC_DEMOMAN_INITARMORCLASS 0 // AT_SAVEEXPLOSION #define PC_DEMOMAN_WEAPONS #WEAP_AXE | #WEAP_SHOTGUN | #WEAP_GRENADE_LAUNCHER #define PC_DEMOMAN_MAXAMMO_SHOT 75 #define PC_DEMOMAN_MAXAMMO_NAIL 50 #define PC_DEMOMAN_MAXAMMO_CELL 50 #define PC_DEMOMAN_MAXAMMO_ROCKET 50 #define PC_DEMOMAN_MAXAMMO_DETPACK 1 #define PC_DEMOMAN_INITAMMO_SHOT 30 #define PC_DEMOMAN_INITAMMO_NAIL 0 #define PC_DEMOMAN_INITAMMO_CELL 0 #define PC_DEMOMAN_INITAMMO_ROCKET 20 #define PC_DEMOMAN_INITAMMO_DETPACK 1 #define PC_DEMOMAN_GRENADE_TYPE_1 #GR_TYPE_NORMAL #define PC_DEMOMAN_GRENADE_TYPE_2 #GR_TYPE_MIRV #define PC_DEMOMAN_GRENADE_INIT_1 4 #define PC_DEMOMAN_GRENADE_INIT_2 3 #define PC_DEMOMAN_TF_ITEMS 0 #define PC_DEMOMAN_JOB #JOB_GUERILLA #define PC_DEMOMAN_CUTFITEMS #CUTF_DETPACK | #CUTF_TOSSABLEDET // Class Details for COMBAT MEDIC #define PC_MEDIC_SKIN 3 #define PC_MEDIC_MAXHEALTH 90 #define PC_MEDIC_MAXSPEED 340 #define PC_MEDIC_MAXSTRAFESPEED 340 #define PC_MEDIC_MAXARMOR 100 #define PC_MEDIC_INITARMOR 50 #define PC_MEDIC_MAXARMORTYPE 0.6 #define PC_MEDIC_INITARMORTYPE 0.3 #define PC_MEDIC_ARMORCLASSES 11 // ALL except EXPLOSION #define PC_MEDIC_INITARMORCLASS 0 #define PC_MEDIC_WEAPONS #WEAP_MEDIKIT | #WEAP_SHOTGUN | #WEAP_SUPER_SHOTGUN | #WEAP_LIGHT_ASSAULT #define PC_MEDIC_MAXAMMO_SHOT 75 #define PC_MEDIC_MAXAMMO_NAIL 150 #define PC_MEDIC_MAXAMMO_CELL 50 #define PC_MEDIC_MAXAMMO_ROCKET 25 #define PC_MEDIC_MAXAMMO_MEDIKIT 100 #define PC_MEDIC_INITAMMO_SHOT 50 #define PC_MEDIC_INITAMMO_NAIL 50 #define PC_MEDIC_INITAMMO_CELL 0 #define PC_MEDIC_INITAMMO_ROCKET 0 #define PC_MEDIC_INITAMMO_MEDIKIT 50 #define PC_MEDIC_GRENADE_TYPE_1 #GR_TYPE_NORMAL #define PC_MEDIC_GRENADE_TYPE_2 #GR_TYPE_BIO //#GR_TYPE_CONCUSSION #define PC_MEDIC_GRENADE_INIT_1 3 #define PC_MEDIC_GRENADE_INIT_2 2 #define PC_MEDIC_TF_ITEMS 0 //#NIT_AUTOMEDIC // SB no more automedic - OfN no way! :) #define PC_MEDIC_REGEN_TIME 3 // Number of seconds between each regen. #define PC_MEDIC_REGEN_AMOUNT 6 // Amount of health regenerated each regen. #define PC_MEDIC_JOB #JOB_CRUSADER // Class Details for HVYWEAP #define PC_HVYWEAP_SKIN 2 #define PC_HVYWEAP_MAXHEALTH 100 #define PC_HVYWEAP_MAXSPEED 250 #define PC_HVYWEAP_MAXSTRAFESPEED 250 #define PC_HVYWEAP_MAXARMOR 300 #define PC_HVYWEAP_INITARMOR 300 #define PC_HVYWEAP_MAXARMORTYPE 0.8 #define PC_HVYWEAP_INITARMORTYPE 0.8 #define PC_HVYWEAP_ARMORCLASSES 31 // ALL #define PC_HVYWEAP_INITARMORCLASS 0 #define PC_HVYWEAP_WEAPONS #WEAP_ASSAULT_CANNON | #WEAP_AXE | #WEAP_SHOTGUN | #WEAP_SUPER_SHOTGUN #define PC_HVYWEAP_MAXAMMO_SHOT 200 #define PC_HVYWEAP_MAXAMMO_NAIL 200 #define PC_HVYWEAP_MAXAMMO_CELL 50 #define PC_HVYWEAP_MAXAMMO_ROCKET 25 #define PC_HVYWEAP_INITAMMO_SHOT 200 #define PC_HVYWEAP_INITAMMO_NAIL 0 #define PC_HVYWEAP_INITAMMO_CELL 24 #define PC_HVYWEAP_INITAMMO_ROCKET 0 #define PC_HVYWEAP_GRENADE_TYPE_1 #GR_TYPE_NORMAL #define PC_HVYWEAP_GRENADE_TYPE_2 #GR_TYPE_MIRV #define PC_HVYWEAP_GRENADE_INIT_1 4 #define PC_HVYWEAP_GRENADE_INIT_2 2 #define PC_HVYWEAP_TF_ITEMS 0 #define PC_HVYWEAP_JOB #JOB_RUNNER // Class Details for PYRO #define PC_PYRO_SKIN 21 #define PC_PYRO_MAXHEALTH 100 #define PC_PYRO_MAXSPEED 290 #define PC_PYRO_MAXSTRAFESPEED 290 #define PC_PYRO_MAXARMOR 150 #define PC_PYRO_INITARMOR 50 #define PC_PYRO_MAXARMORTYPE 0.6 #define PC_PYRO_INITARMORTYPE 0.6 #define PC_PYRO_ARMORCLASSES 27 // ALL except EXPLOSION #define PC_PYRO_INITARMORCLASS 16 // #AT_SAVEFIRE #define PC_PYRO_WEAPONS #WEAP_INCENDIARY | #WEAP_FLAMETHROWER | #WEAP_AXE | #WEAP_SHOTGUN #define PC_PYRO_MAXAMMO_SHOT 40 #define PC_PYRO_MAXAMMO_NAIL 50 #define PC_PYRO_MAXAMMO_CELL 200 #define PC_PYRO_MAXAMMO_ROCKET 60 #define PC_PYRO_INITAMMO_SHOT 20 #define PC_PYRO_INITAMMO_NAIL 0 #define PC_PYRO_INITAMMO_CELL 120 #define PC_PYRO_INITAMMO_ROCKET 24 #define PC_PYRO_GRENADE_TYPE_1 #GR_TYPE_NORMAL #define PC_PYRO_GRENADE_TYPE_2 #GR_TYPE_NAPALM #define PC_PYRO_GRENADE_INIT_1 4 #define PC_PYRO_GRENADE_INIT_2 4 #define PC_PYRO_TF_ITEMS #NIT_HOVER_BOOTS | #NIT_HOVER_BOOTS_UPGRADE // OfN why this = #NIT_HOVER_BOOTS || #NIT_HOVER_BOOTS_UPGRADE ?? #define PC_PYRO_JOB #JOB_THIEF // Class Details for SPY #define PC_SPY_SKIN 22 #define PC_SPY_MAXHEALTH 90 #define PC_SPY_MAXSPEED 320 #define PC_SPY_MAXSTRAFESPEED 320 #define PC_SPY_MAXARMOR 100 #define PC_SPY_INITARMOR 50 #define PC_SPY_MAXARMORTYPE 0.6 #define PC_SPY_INITARMORTYPE 0.6 #define PC_SPY_ARMORCLASSES 27 // ALL except EXPLOSION #define PC_SPY_INITARMORCLASS 0 #define PC_SPY_WEAPONS #WEAP_AXE | #WEAP_TRANQ | #WEAP_SUPER_SHOTGUN | #WEAP_NAILGUN #define PC_SPY_MAXAMMO_SHOT 40 #define PC_SPY_MAXAMMO_NAIL 50 #define PC_SPY_MAXAMMO_CELL 200 #define PC_SPY_MAXAMMO_ROCKET 15 #define PC_SPY_INITAMMO_SHOT 40 #define PC_SPY_INITAMMO_NAIL 0 #define PC_SPY_INITAMMO_CELL 100 #define PC_SPY_INITAMMO_ROCKET 0 #define PC_SPY_GRENADE_TYPE_1 #GR_TYPE_NORMAL #define PC_SPY_GRENADE_TYPE_2 #GR_TYPE_GAS #define PC_SPY_GRENADE_INIT_1 4 #define PC_SPY_GRENADE_INIT_2 2 #define PC_SPY_TF_ITEMS #NIT_SECURITY_CAMERA | #NIT_TELEPORTER #define PC_SPY_CELL_REGEN_TIME 0.05 #define PC_SPY_CELL_REGEN_AMOUNT 10 #define PC_SPY_CELL_USAGE 25 // Amount of cells spent while invisible #define PC_SPY_GO_UNDERCOVER_TIME 4 // Time it takes to go undercover #define PC_SPY_JOB #JOB_HACKER // OfN - It was JOB_WARLOCK #define PC_SPY_CUTFITEMS #CUTF_SPY_KIT | #CUTF_KNIFE // Class Details for ENGINEER #define PC_ENGINEER_SKIN 22 // Not used anymore #define PC_ENGINEER_MAXHEALTH 100 #define PC_ENGINEER_MAXSPEED 290 #define PC_ENGINEER_MAXSTRAFESPEED 290 #define PC_ENGINEER_MAXARMOR 75 #define PC_ENGINEER_INITARMOR 75 #define PC_ENGINEER_MAXARMORTYPE 0.6 #define PC_ENGINEER_INITARMORTYPE 0.3 #define PC_ENGINEER_ARMORCLASSES 31 // ALL #define PC_ENGINEER_INITARMORCLASS 0 #define PC_ENGINEER_WEAPONS #WEAP_SPANNER | #WEAP_LASER | #WEAP_SUPER_SHOTGUN #define PC_ENGINEER_MAXAMMO_SHOT 75 #define PC_ENGINEER_MAXAMMO_NAIL 50 #define PC_ENGINEER_MAXAMMO_CELL 320 // synonymous with metal #define PC_ENGINEER_MAXAMMO_ROCKET 30 #define PC_ENGINEER_INITAMMO_SHOT 30 #define PC_ENGINEER_INITAMMO_NAIL 25 #define PC_ENGINEER_INITAMMO_CELL 200 // synonymous with metal #define PC_ENGINEER_INITAMMO_ROCKET 0 #define PC_ENGINEER_GRENADE_TYPE_1 #GR_TYPE_NORMAL #define PC_ENGINEER_GRENADE_TYPE_2 #GR_TYPE_EMP #define PC_ENGINEER_GRENADE_INIT_1 4 #define PC_ENGINEER_GRENADE_INIT_2 4 #define PC_ENGINEER_TF_ITEMS #NIT_TESLA | #NIT_SECURITY_CAMERA | #NIT_TELEPORTER #define PC_ENGINEER_CUTFITEMS #CUTF_SENTRYGUN | #CUTF_DISPENSER | #CUTF_SENSOR | #CUTF_FIELDGEN #define PC_ENGINEER_JOB #JOB_HACKER //#JOB_JUDOKA // Class Details for CIVILIAN #define PC_CIVILIAN_SKIN 22 #define PC_CIVILIAN_MAXHEALTH 90 #define PC_CIVILIAN_MAXSPEED 290 #define PC_CIVILIAN_MAXSTRAFESPEED 290 #define PC_CIVILIAN_MAXARMOR 75 #define PC_CIVILIAN_INITARMOR 75 #define PC_CIVILIAN_MAXARMORTYPE 0.3 #define PC_CIVILIAN_INITARMORTYPE 0.3 #define PC_CIVILIAN_ARMORCLASSES 0 #define PC_CIVILIAN_INITARMORCLASS 0 #define PC_CIVILIAN_WEAPONS #WEAP_AXE | #WEAP_SUPER_SHOTGUN | #WEAP_SHOTGUN #define PC_CIVILIAN_MAXAMMO_SHOT 50 #define PC_CIVILIAN_MAXAMMO_NAIL 0 #define PC_CIVILIAN_MAXAMMO_CELL 0 #define PC_CIVILIAN_MAXAMMO_ROCKET 0 #define PC_CIVILIAN_INITAMMO_SHOT 30 #define PC_CIVILIAN_INITAMMO_NAIL 0 #define PC_CIVILIAN_INITAMMO_CELL 0 #define PC_CIVILIAN_INITAMMO_ROCKET 0 #define PC_CIVILIAN_GRENADE_TYPE_1 #GR_TYPE_NORMAL #define PC_CIVILIAN_GRENADE_TYPE_2 0 #define PC_CIVILIAN_GRENADE_INIT_1 2 #define PC_CIVILIAN_GRENADE_INIT_2 0 #define PC_CIVILIAN_TF_ITEMS 0 #define PC_CIVILIAN_JOB #JOB_THIEF #define PC_CIVILIAN_CUTFITEMS #CUTF_KNIFE /*==========================================================================*/ /* TEAMFORTRESS GOALS */ /*==========================================================================*/ // For all these defines, see the tfortmap.txt that came with the zip // for complete descriptions. // Defines for Goal Activation types : goal_activation (in goals) #define TFGA_TOUCH 1 // Activated when touched #define TFGA_TOUCH_DETPACK 2 // Activated when touched by a detpack explosion #define TFGA_REVERSE_AP 4 // Activated when AP details are _not_ met #define TFGA_SPANNER 8 // Activated when hit by an engineer's spanner // Defines for Goal Effects types : goal_effect #define TFGE_AP 1 // AP is affected. Default. #define TFGE_AP_TEAM 2 // All of the AP's team. #define TFGE_NOT_AP_TEAM 4 // All except AP's team. #define TFGE_NOT_AP 8 // All except AP. #define TFGE_WALL 16 // If set, walls stop the Radius effects #define TFGE_SAME_ENVIRONMENT 32 // If set, players in a different environment to the Goal are not affected #define TFGE_TIMER_CHECK_AP 64 // If set, Timer Goals check their critera for all players fitting their effects #define TFGE_CAUSE_EXPLOSION 128 //CH if set spawn explosion and use t_length // Defines for Goal Result types : goal_result #define TFGR_SINGLE 1 // Goal can only be activated once #define TFGR_ADD_BONUSES 2 // Any Goals activated by this one give their bonuses #define TFGR_ENDGAME 4 // Goal fires Intermission, displays scores, and ends level #define TFGR_NO_ITEM_RESULTS 8 // GoalItems given by this Goal don't do results #define TFGR_REMOVE_DISGUISE 16 // Prevent/Remove undercover from any Spy #define TFGR_CAUSERESPAWN 32 //CH force respawn, not die #define TFGR_DROPITEMS 4096 //CH allows user to drop item with "dropitems" // Defines for Goal Group Result types : goal_group // None! // But I'm leaving this variable in there, since it's fairly likely // that some will show up sometime. // Defines for Goal Item types, : goal_activation (in items) #define TFGI_GLOW 1 // Players carrying this GoalItem will glow #define TFGI_SLOW 2 // Players carrying this GoalItem will move at half-speed #define TFGI_DROP 4 // Players dying with this item will drop it #define TFGI_RETURN_DROP 8 // Return if a player with it dies #define TFGI_RETURN_GOAL 16 // Return if a player with it has it removed by a goal's activation #define TFGI_RETURN_REMOVE 32 // Return if it is removed by TFGI_REMOVE #define TFGI_REVERSE_AP 64 // Only pickup if the player _doesn't_ match AP Details #define TFGI_REMOVE 128 // Remove if left untouched for 2 minutes after being dropped #define TFGI_KEEP 256 // Players keep this item even when they die #define TFGI_ITEMGLOWS 512 // Item glows when on the ground #define TFGI_DONTREMOVERES 1024 // Don't remove results when the item is removed #define TFGI_GOAL_TO_GROUND 2048 //CH GoalItem drops to ground when spawns #define TFGI_GOAL_IS_SOLID 8192 //CH GoalItem is solid // Defines for TeamSpawnpoints : goal_activation (in teamspawns) #define TFSP_MULTIPLEITEMS 1 // Give out the GoalItem multiple times #define TFSP_MULTIPLEMSGS 2 // Display the message multiple times // Defines for TeamSpawnpoints : goal_effects (in teamspawns) #define TFSP_REMOVESELF 1 // Remove itself after being spawned on // Defines for Goal States #define TFGS_ACTIVE 1 #define TFGS_INACTIVE 2 #define TFGS_REMOVED 3 #define TFGS_DELAYED 4 // Variables used in the Goals .float goal_no; // Goal number of this goal .float group_no; // Goal group this goal is in .float goal_state; // State of this goal .float owned_by; // The team this goal/item/whatever belongs to // Goal Activation details .float goal_activation; // Bitfields. Determines how this goal is activated .float goal_effects; // Bitfields. Determines which players are affected by this goal .float goal_result; // Bitfields. Determines the results of activation .float goal_group; // Bitfields. Determines how groups are affected by activation of this goal .float else_goal; // A Goal that's activated if this one fails to activate .float if_goal_is_active; .float if_goal_is_inactive; .float if_goal_is_removed; .float if_group_is_active; .float if_group_is_inactive; .float if_group_is_removed; // Goal Result details .float activate_goal_no; .float inactivate_goal_no; .float remove_goal_no; .float restore_goal_no; .float activate_group_no; .float inactivate_group_no; .float remove_group_no; .float restore_group_no; // Item State behaviour .float has_item_from_group; .float remove_item_group; .float return_item_no; .float if_item_has_moved; .float if_item_hasnt_moved; // Spawnpoint behaviour .float remove_spawnpoint; .float restore_spawnpoint; .float remove_spawngroup; .float restore_spawngroup; // Item Displaying details .float display_item_status1; // Goal displays the status of these items .float display_item_status2; .float display_item_status3; .float display_item_status4; .string team_str_home; // Displayed when the item is at home base .string team_str_moved; // Displayed when the item has been moved .string team_str_carried; // Displayed when the item is being carried .string non_team_str_home; // Displayed when the item is at home base .string non_team_str_moved; // Displayed when the item has been moved .string non_team_str_carried; // Displayed when the item is being carried .vector goal_min; //CH .vector goal_max; //CH // Goal/Timer/GoalItem/Trigger existence checking .float ex_skill_min; // Exists when the skill is >= this value .float ex_skill_max; // Exists when the skill is <= this value //.float ex_num_players_min; // Exists when the number of players is >= this value //.float ex_num_players_max; // Exists when the number of players is <= this value // Score increases .float increase_team1; // Increase the scores of particular teams .float increase_team2; .float increase_team3; .float increase_team4; // Centerprinting .string broadcast; // Centerprinted to all, overridden by the next two .string team_broadcast; // Centerprinted to AP's team members, but not the AP .string non_team_broadcast; // Centerprinted to non AP's team members .string owners_team_broadcast; // Centerprinted to the members of the team that own the Goal/Item .string netname_broadcast; // same as above, prepended by AP netname and bprinted .string netname_team_broadcast; // same as above, prepended by AP netname and bprinted .string netname_non_team_broadcast; // same as above, prepended by AP netname and bprinted .string netname_owners_team_broadcast; // same as above, prepended by AP netname and bprinted .string team_drop; // Centerprinted to item owners team .string non_team_drop; // Centerprinted to everone not on item owners team .string netname_team_drop; // same as above, prepended by AP netname and bprinted .string netname_non_team_drop; // same as above, prepended by AP netname and bprinted string team_menu_string; .float all_active; .float item_list; // Used to keep track of which goalitems are // affecting the player at any time. // GoalItems use it to keep track of their own // mask to apply to a player's item_list float item_list_bit; // Global, used to determine what the bit of // each new GoalItem will be. .float delay_time; // For delayed goal results .float dont_do_triggerwork; // Abbreviations for the above .float g_a; // goal_activation .float g_e; // goal_effects .string t_s_h; // team_str_home .string t_s_m; // team_str_moved .string t_s_c; // team_str_carried .string n_s_h; // non_team_str_home .string n_s_m; // non_team_str_moved .string n_s_c; // non_team_str_carried .string b_b; // broadcast .string b_t; // team_broadcast .string b_n; // non_team_broadcast .string b_o; // owners_team_broadcast .string n_b; // netname_broadcast .string n_t; // netname_team_broadcast .string n_n; // netname_non_team_broadcast .string n_o; // netname_owners_team_broadcast .string d_t; // team_drop .string d_n; // non_team_drop .string d_n_t; // netname_team_drop .string d_n_n; // netname_non_team_drop // Legal Playerclass Handling #define TF_ILL_SCOUT 1 #define TF_ILL_SNIPER 2 #define TF_ILL_SOLDIER 4 #define TF_ILL_DEMOMAN 8 #define TF_ILL_MEDIC 16 #define TF_ILL_HVYWEP 32 #define TF_ILL_PYRO 64 #define TF_ILL_RANDOMPC 128 #define TF_ILL_SPY 256 #define TF_ILL_ENGINEER 512 /*==========================================================================*/ /* Flamethrower */ /*==========================================================================*/ float num_world_flames; .float numflames; //number of flames on entity // .float timecount; //timelength of the flames on entity // this uses .health now .string flame_id; // has to be string so that the C function find() can be used #define FLAME_PLYRMAXTIME 45 // lifetime in 0.1 sec of a flame on a player #define FLAME_MAXBURNTIME 8 // lifetime in seconds of a flame on the world (big ones) #define NAPALM_MAXBURNTIME 20 // lifetime in seconds of flame from a napalm grenade #define FLAME_MAXPLYRFLAMES 4 // maximum number of flames on a player #define FLAME_NUMLIGHTS 1 // maximum number of light flame #define FLAME_BURNRATIO 0.3 // the chance of a flame not 'sticking' #define GR_TYPE_FLAMES_NO 15 // number of flames spawned when a grenade explode /*==========================================================================*/ /* Limit handling for various things */ /*==========================================================================*/ // pipebomb limits // when the limit is exceeded, older pipebombs explode float num_world_pipebombs; float num_team_pipebombs_1; float num_team_pipebombs_2; float num_team_pipebombs_3; float num_team_pipebombs_4; // ammobox limits // when the limit is exceeded, older ammoboxes disappear float num_world_ammoboxes; float num_team_ammoboxes_1; float num_team_ammoboxes_2; float num_team_ammoboxes_3; float num_team_ammoboxes_4; /*==================================================*/ /* Spy variables */ /*==================================================*/ .float undercover_team; // The team the Spy is pretending to be in .float undercover_skin; // The skin the Spy is pretending to have .string undercover_name; // The name of the player the Spy is pretending to be /*==================================================*/ /* CTF Support defines */ /*==================================================*/ #define CTF_FLAG1 1 #define CTF_FLAG2 2 #define CTF_DROPOFF1 3 #define CTF_DROPOFF2 4 #define CTF_SCORE1 5 #define CTF_SCORE2 6 float spy_off; // Spy class off/on float invis_only; // Spy invisible instead of color/skin changing float allow_hook; // Allow players to use the hook float jello; //WK Jello water! If this is true, you bounce on water float light_damage; //WK Armor more expensive, damage at 75% float prematch; //WK Jello water! If this is true, you bounce on water float bounty; //WK Bounty system off/on float custom_money; // WK Set starting money float team_with_flag; // CG steal4d who has flag code float friends1_mask; // KK masks of friendly teams, code for > 2 team maps float friends2_mask; float friends3_mask; float friends4_mask; .float hook_out; /*==================================================*/ /* Camera defines */ /*==================================================*/ #ifdef DEMO_STUFF float live_camera; .float camdist; .vector camangle; .entity camera_list; #endif /*==================================================*/ /* QuakeWorld defines */ /*==================================================*/ // some redecs for printing in QW float already_chosen_map; float triggered_cycle; #ifndef QUAKE_WORLD entity newmis; // if this is set, the entity that just // run created a new missile that should // be simulated immediately #endif // grappling hook variables .entity hook; .float on_hook; .float fire_held_down;// flag - TRUE if player is still holding down the // fire button after throwing a hook. // sniper location damage stuff .vector head_shot_vector; .float leg_damage; .float cheat_level; .float speed_level; // flash grenade level .float FlashTime; // status bar stuff .float StatusRefreshTime; // time to next refresh the status bar // any function that uses a CenterPrintnt // should reset this value .float StatusBarSize; // the size of the bar. 1 is default, 0 is off .float StatusBarRes; // the gfx res the player's running in .float StatusBarScreen; //CH what screen to jump to when next called. /*==================================================*/ /* Death Message defines */ /*==================================================*/ float deathmsg; // Global, which is set before every T_Damage, to indicate // the death message that should be used. #define DMSG_SHOTGUN 1 #define DMSG_SSHOTGUN 2 #define DMSG_NAILGUN 3 #define DMSG_LIGHT_ASSAULT 4 #define DMSG_GRENADEL 5 #define DMSG_ROCKETL 6 #define DMSG_LIGHTNING 7 #define DMSG_GREN_HAND 8 #define DMSG_GREN_NAIL 9 #define DMSG_GREN_MIRV 10 #define DMSG_GREN_PIPE 11 #define DMSG_DETPACK 12 #define DMSG_BIOWEAPON 13 #define DMSG_BIOWEAPON_ATT 14 #define DMSG_FLAME 15 #define DMSG_DETPACK_DIS 16 #define DMSG_AXE 17 #define DMSG_SNIPERRIFLE 18 #define DMSG_AUTORIFLE 19 #define DMSG_ASSAULTCANNON 20 #define DMSG_HOOK 21 #define DMSG_BACKSTAB 22 #define DMSG_MEDIKIT 23 #define DMSG_GREN_GAS 24 #define DMSG_TRANQ 25 #define DMSG_LASERBOLT 26 #define DMSG_SENTRYGUN_BULLET 27 #define DMSG_SNIPERLEGSHOT 28 #define DMSG_SNIPERHEADSHOT 29 #define DMSG_GREN_EMP 30 #define DMSG_GREN_EMP_AMMO 31 #define DMSG_SPANNER 32 #define DMSG_INCENDIARY 33 #define DMSG_SENTRYGUN_ROCKET 34 #define DMSG_GREN_FLASH 35 #define DMSG_TRIGGER 36 #define DMSG_BUG_ZAPPER 37 #define DMSG_GREN_FRAG 38 #define DMSG_JUDOKA 39 #define DMSG_MARTYR 40 #define DMSG_HOVER 41 //Boot exhaust! #define DMSG_LAND_MINE 42 #define DMSG_TESLA 43 #define DMSG_DEMON_FIRE 44 #define DMSG_BERSERK 45 #define DMSG_MAUSER 50 #define DMSG_DAEDALUS 51 #define DMSG_EXPBODY 52 //- OfN - #define DMSG_ANTIHACK 53 #define DMSG_ANTIDISM 54 #define DMSG_CYBERNET 55 #define DMSG_AIRG 56 #define DMSG_AIRG_WATER 57 #define DMSG_LASERCANNON 58 #define DMSG_DISPEL 59 #define DMSG_CALTROP 60 #define DMSG_CLUSTER_ROCKET 61 #define DMSG_FLYCALTROP 62 #define DMSG_SNG 63 #define DMSG_FORCEFIELD 64 #define DMSG_STUCK_FORCEFIELD 65 #define DMSG_SPANNERFIELD 66 #define DMSG_FGTRAP 67 //Defs for objects a spikeshooter can spawn Misc.qc #define SPAWNFLAG_SUPERSPIKE 1 #define SPAWNFLAG_LASER 2 //CH add new things a trap can spawn #define SPAWNFLAG_TFROCKET 4 #define SPAWNFLAG_TFGRENADE 8 #define SPAWNFLAG_TFFLAME 16 // OfN - Crusader auras #define AURA_POWER 1 #define AURA_RESISTANCE 2 #define AURA_HASTE 3 #define AURA_INVIS 4