.entity weaponentity;
.entity exteriorweaponentity;
.vector weaponentity_glowmod;
-.float switchweapon;
+
+//.float weapon; // current weapon
+.float switchweapon; // weapon requested to switch to
+.float switchingweapon; // weapon currently being switched to (is copied from switchweapon once switch is possible)
+.string weaponname; // name of .weapon
+
.float autoswitch;
float weapon_action(float wpn, float wrequest);
float client_hasweapon(entity cl, float wpn, float andammo, float complain);
void w_ready();
// VorteX: standalone think for weapons, so normal think on weaponentity can be reserved by weaponflashes (which needs update even player dies)
.float weapon_nextthink;
-.float weapon_forbidchange;
.void() weapon_think;
//float PLAYER_WEAPONSELECTION_DELAY = );
string w_deathtypestring;
-void(entity client, string s) centerprint_builtin = #73;
.vector dest1, dest2;
float gameover;
.float runes;
+// Keys player is holding
+.float itemkeys;
+#define KEYS_GOLD_KEY 1
+#define KEYS_SILVER_KEY 2
+// spawnflags require key (for now only func_door)
+#define SPAWNFLAGS_GOLD_KEY 8
+#define SPAWNFLAGS_SILVER_KEY 16
+// message delay for func_door locked by keys and key locks
+// this field is used on player entities
+.float key_door_messagetime;
+
-.float welcomemessage_time;
.float version;
// minstagib vars
void timeoutHandler_Think();
void evaluateTimeout();
void evaluateTimein();
-string getTimeoutText(float addOneSecond);
.float spawnshieldtime;
.float() customizeentityforclient;
.float cvar_cl_handicap;
.float cvar_cl_playerdetailreduction;
-.float cvar_scr_centertime;
+.float cvar_cl_clippedspectating;
+.float cvar_cl_movement_track_canjump;
+.float cvar_cl_newusekeysupported;
+
.string cvar_g_xonoticversion;
.string cvar_cl_weaponpriority;
.string cvar_cl_weaponpriorities[10];
.entity jumppadsused[NUM_JUMPPADSUSED];
string gamemode_name;
-float teams_matter;
float startitem_failed;
float weaponsInMap;
-void centerprint_atprio(entity e, float prio, string s);
-void centerprint_expire(entity e, float prio);
-void centerprint(entity e, string s);
-
.float respawn_countdown; // next number to count
float bot_waypoints_for_items;
// speedrun: when 1, player auto teleports back when capture timeout happens
.float speedrunning;
-// Q3 support
-float q3acompat_machineshotgunswap;
-
// database
float ServerProgsDB;
float TemporaryDB;
float sv_maxidle;
float sv_maxidle_spectatorsareidle;
-float sv_pogostick;
float tracebox_hits_trigger_hurt(vector start, vector mi, vector ma, vector end);
float next_pingtime;
// TODO implemented fall and falling
#define ALLPLAYERSOUNDS \
_VOICEMSG(death) \
- _VOICEMSG(fall) \
_VOICEMSG(drown) \
+ _VOICEMSG(fall) \
+ _VOICEMSG(fall) \
+ _VOICEMSG(falling) \
_VOICEMSG(gasp) \
_VOICEMSG(jump) \
+ _VOICEMSG(pain100) \
_VOICEMSG(pain25) \
_VOICEMSG(pain50) \
- _VOICEMSG(pain75) \
- _VOICEMSG(pain100)
+ _VOICEMSG(pain75)
+
#define ALLVOICEMSGS \
_VOICEMSG(attack) \
_VOICEMSG(attackinfive) \
+ _VOICEMSG(coverme) \
+ _VOICEMSG(defend) \
+ _VOICEMSG(freelance) \
+ _VOICEMSG(incoming) \
_VOICEMSG(meet) \
+ _VOICEMSG(needhelp) \
_VOICEMSG(seenflag) \
_VOICEMSG(taunt) \
_VOICEMSG(teamshoot)
ALLVOICEMSGS
#undef _VOICEMSG
-// reserved sound names for the future (models lack sounds for them):
+// reserved sound names for the future (some models lack sounds for them):
+// _VOICEMSG(flagcarriertakingdamage) \
+// _VOICEMSG(getflag) \
+// reserved sound names for the future (ALL models lack sounds for them):
// _VOICEMSG(affirmative) \
// _VOICEMSG(attacking) \
// _VOICEMSG(defending) \
// _VOICEMSG(roaming) \
// _VOICEMSG(onmyway) \
// _VOICEMSG(droppedflag) \
-// _VOICEMSG(flagcarriertakingdamage) \
// _VOICEMSG(negative) \
// _VOICEMSG(seenenemy) \
-// _VOICEMSG(fall) \
-// _VOICEMSG(getflag) \
-// _VOICEMSG(incoming) \
-// _VOICEMSG(coverme) \
-// _VOICEMSG(needhelp) \
-// _VOICEMSG(defend) \
-// _VOICEMSG(freelance) \
-// _VOICEMSG(falling) \
string globalsound_fall;
string globalsound_metalfall;
.float version_mismatch;
float independent_players;
+#define INDEPENDENT_PLAYERS (autocvar__independent_players ? (autocvar__independent_players > 0) : independent_players)
#define IS_INDEPENDENT_PLAYER(e) ((e).solid == SOLID_TRIGGER)
#define MAKE_INDEPENDENT_PLAYER(e) (((e).solid = SOLID_TRIGGER) + ((e).frags = FRAGS_PLAYER_NONSOLID))
// we're using + here instead of , because fteqcc sucks
vector debug_shotorg; // if non-zero, overrides the shot origin of all weapons
-// the QC VM sucks
-#define BITXOR(v,b) ((v) + (b) - 2 * ((v) & (b)))
-#define BITXOR_ASSIGN(v,b) ((v) += ((b) - 2 * ((v) & (b))))
-
.float wasplayer;
float servertime, serverprevtime, serverframetime;
..float current_ammo;
-.float weapon_load[WEP_MAXCOUNT]; FTEQCC_YOU_SUCK_THIS_IS_NOT_UNREFERENCED(weapon_load);
+.float weapon_load[WEP_MAXCOUNT];
.float ammo_none; // used by the reloading system, must always be 0
.float clip_load;
.float old_clip_load;
.entity muzzle_flash;
.float misc_bulletcounter; // replaces uzi & hlac bullet counter.
+
+void PlayerUseKey();
+