-#define INDEPENDENT_ATTACK_FINISHED
+#ifndef SERVER_DEFS_H
+#define SERVER_DEFS_H
+
+#include "../common/weapons/all.qh"
-noref float require_spawnfunc_prefix; // if this float exists, only functions with spawnfunc_ name prefix qualify as spawn functions
+#define INDEPENDENT_ATTACK_FINISHED
#define BUTTON_ATCK button0
#define BUTTON_JUMP button2
#define BUTTON_USE buttonuse
#define BUTTON_DRAG button8
#define BUTTON_ZOOMSCRIPT button9
+#define BUTTON_JETPACK button10
// Globals
float sv_clones;
float sv_foginterval;
-entity activator;
-
float player_count;
float currentbots;
float bots_would_leave;
// Fields
-.void(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) event_damage;
+.void(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force) event_damage;
//.string wad;
//.string map;
//.float worldtype;
-.float delay;
-.float wait;
-.float lip;
-//.float light_lev;
-.float speed;
-//.float style;
-//.float skill;
-.float sounds;
-.string platmovetype;
-.float platmovetype_start, platmovetype_end;
-
-.string killtarget;
-
-.vector pos1, pos2;
-.vector mangle;
+// Needed for dynamic clientwalls
+.float inactive; // Clientwall disappears when inactive
+.float alpha_max, alpha_min;
+.float fade_start, fade_end, fade_vertical_offset;
+.float default_solid; // Variable to store default self.solid for clientwalls
.float pain_finished; //Added by Supajoe
.float pain_frame; //"
-.float statdraintime; // record the one-second intervals between draining health and armour when they're over 100
.float crouch; // Crouching or not?
.float strength_finished;
.float invincible_finished;
.float superweapons_finished;
-.vector finaldest, finalangle; //plat.qc stuff
-.void() think1;
-.float state;
-.float t_length, t_width;
-
-.vector destvec; // for rain
-.vector destvec2; // for train
-.float cnt; // for rain
+.float cnt; // used in too many places
.float count;
//.float cnt2;
.float play_time;
-.float respawn_flags;
+.int respawn_flags;
.float respawn_time;
.float respawn_time_max;
.float death_time;
.float fade_time;
.float fade_rate;
-// player animation state
-.float animstate_startframe;
-.float animstate_numframes;
-.float animstate_framerate;
-.float animstate_starttime;
-.float animstate_endtime;
-.float animstate_override;
-.float animstate_looping;
-
// weapon animation vectors:
.vector anim_fire1;
.vector anim_fire2;
.float species;
+.float scheduledrespawntime;
.float respawntime;
.float respawntimejitter;
//.float chasecam;
.float damageforcescale;
-#define MIN_DAMAGEEXTRARADIUS 2
-#define MAX_DAMAGEEXTRARADIUS 16
+const float MIN_DAMAGEEXTRARADIUS = 2;
+const float MAX_DAMAGEEXTRARADIUS = 16;
.float damageextraradius;
//.float gravity;
.float pauserothealth_finished;
.float pauserotarmor_finished;
.float pauserotfuel_finished;
+// string overrides entity
.string item_pickupsound;
+.entity item_pickupsound_ent;
// definitions for weaponsystem
-
+// more WEAPONTODO: move these to their proper files
.entity weaponentity;
.entity exteriorweaponentity;
.vector weaponentity_glowmod;
-//.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)
+//.int weapon; // current weapon
+.int switchweapon; // weapon requested to switch to
+.int switchingweapon; // weapon currently being switched to (is copied from switchweapon once switch is possible)
.string weaponname; // name of .weapon
+// WEAPONTODO
.float autoswitch;
-float weapon_action(float wpn, float wrequest);
float client_hasweapon(entity cl, float wpn, float andammo, float complain);
-void w_clear();
-void w_ready();
+void w_clear(Weapon thiswep, entity actor, bool fire1, bool fire2);
+void w_ready(Weapon thiswep, entity actor, bool fire1, bool fire2);
// VorteX: standalone think for weapons, so normal think on weaponentity can be reserved by weaponflashes (which needs update even player dies)
.float weapon_nextthink;
-.void() weapon_think;
+.void(Weapon thiswep, entity actor, bool fire1, bool fire2) weapon_think;
-//float PLAYER_WEAPONSELECTION_DELAY = );
-const float PLAYER_WEAPONSELECTION_SPEED = 18;
-const vector PLAYER_WEAPONSELECTION_RANGE = '0 20 -40';
// weapon states (self.weaponentity.state)
-const float WS_CLEAR = 0; // no weapon selected
-const float WS_RAISE = 1; // raise frame
-const float WS_DROP = 2; // deselecting frame
-const float WS_INUSE = 3; // fire state
-const float WS_READY = 4; // idle frame
+const int WS_CLEAR = 0; // no weapon selected
+const int WS_RAISE = 1; // raise frame
+const int WS_DROP = 2; // deselecting frame
+const int WS_INUSE = 3; // fire state
+const int WS_READY = 4; // idle frame
// there is 2 weapon tics that can run in one server frame
-#define W_TICSPERFRAME 2
+const int W_TICSPERFRAME = 2;
void weapon_defaultspawnfunc(float wpn);
-.vector dest1, dest2;
-
float gameover;
float intermission_running;
float intermission_exittime;
float alreadychangedlevel;
-// Keys player is holding
-.float itemkeys;
-// message delay for func_door locked by keys and key locks
-// this field is used on player entities
-.float key_door_messagetime;
-
-
.float version;
-//swamp
-.float in_swamp; // bool
-.entity swampslug; // Uses this to release from swamp ("untouch" fix)
-
// footstep interval
.float nextstep;
.entity flagcarried;
-.float playerid;
+.int playerid;
float playerid_last;
.float noalign; // if set to 1, the item or spawnpoint won't be dropped to the floor
.float cvar_cl_handicap;
.float cvar_cl_clippedspectating;
.float cvar_cl_autoscreenshot;
+.float cvar_cl_jetpack_jump;
.float cvar_cl_movement_track_canjump;
.float cvar_cl_newusekeysupported;
.float version_nagtime;
-#define NUM_JUMPPADSUSED 3
-.float jumppadcount;
-.entity jumppadsused[NUM_JUMPPADSUSED];
-
string gamemode_name;
float startitem_failed;
-typedef .float floatfield;
-floatfield Item_CounterField(float it);
-
-float W_AmmoItemCode(float wpn);
-string W_Name(float weaponid);
string W_Apply_Weaponreplace(string in);
void FixIntermissionClient(entity e);
void FixClientCvars(entity e);
+// WEAPONTODO: remove this
WepSet weaponsInMap;
+.WepSet weaponsinmap;
+
.float respawn_countdown; // next number to count
float bot_waypoints_for_items;
.entity killindicator;
.float killindicator_teamchange;
-void Damage (entity targ, entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force);
+void Damage (entity targ, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force);
float lockteams;
float next_pingtime;
.float Version;
-.float SendFlags;
-.float(entity to, float sendflags) SendEntity;
// player sounds, voice messages
// TODO implemented fall and falling
_VOICEMSG(death) \
_VOICEMSG(drown) \
_VOICEMSG(fall) \
- _VOICEMSG(fall) \
_VOICEMSG(falling) \
_VOICEMSG(gasp) \
_VOICEMSG(jump) \
string globalsound_step;
string globalsound_metalstep;
-#define VOICETYPE_PLAYERSOUND 10
-#define VOICETYPE_TEAMRADIO 11
-#define VOICETYPE_LASTATTACKER 12
-#define VOICETYPE_LASTATTACKER_ONLY 13
-#define VOICETYPE_AUTOTAUNT 14
-#define VOICETYPE_TAUNT 15
+const float VOICETYPE_PLAYERSOUND = 10;
+const float VOICETYPE_TEAMRADIO = 11;
+const float VOICETYPE_LASTATTACKER = 12;
+const float VOICETYPE_LASTATTACKER_ONLY = 13;
+const float VOICETYPE_AUTOTAUNT = 14;
+const float VOICETYPE_TAUNT = 15;
void PrecachePlayerSounds(string f);
void PrecacheGlobalSound(string samplestring);
string clientstuff;
.float phase;
-.float pressedkeys;
+.int pressedkeys;
.float porto_forbidden;
.float stat_game_starttime;
.float stat_round_starttime;
-.float stat_sv_airaccel_qw;
-.float stat_sv_airstrafeaccel_qw;
-.float stat_sv_airspeedlimit_nonqw;
-.float stat_sv_maxspeed;
-.float stat_movement_highspeed;
-
void W_Porto_Remove (entity p);
-.float projectiledeathtype;
+.int projectiledeathtype;
.string message2;
-.float stat_allow_oldnexbeam;
+.float stat_allow_oldvortexbeam;
// reset to 0 on weapon switch
// may be useful to all weapons
.float bulletcounter;
-void target_voicescript_next(entity pl);
-void target_voicescript_clear(entity pl);
-
-.string target2;
-.string target3;
-.string target4;
-.string curvetarget;
-.float target_random;
-.float trigger_reverse;
-
// Nexball
.entity ballcarried; // Also used for keepaway
.float metertime;
float servertime, serverprevtime, serverframetime;
-.entity soundentity;
-
.float ammo_fuel;
.vector prevorigin;
.float stat_shotorg; // networked stat for trueaim HUD
string matchid;
-.float hitplotfh;
.float last_pickup;
.float hit_time;
.float typehit_time;
-.float damage_dealt_total;
+.float damage_dealt_total;
.float stat_leadlimit;
-float radar_showennemies;
+bool radar_showennemies;
#ifdef PROFILING
float client_cefc_accumulator;
float client_cefc_accumulatortime;
#endif
-..float current_ammo;
-
.float weapon_load[WEP_MAXCOUNT];
-.float ammo_none; // used by the reloading system, must always be 0
+.int ammo_none; // used by the reloading system, must always be 0
.float clip_load;
.float old_clip_load;
.float clip_size;
.entity lastrocket;
.float minelayer_mines;
-.float nex_charge;
-.float nex_charge_rottime;
-.float nex_chargepool_ammo;
+.float vortex_charge;
+.float vortex_charge_rottime;
+.float vortex_chargepool_ammo;
.float hagar_load;
-.float grab; // 0 = can't grab, 1 = owner can grab, 2 = owner and team mates can grab, 3 = anyone can grab
+.int grab; // 0 = can't grab, 1 = owner can grab, 2 = owner and team mates can grab, 3 = anyone can grab
#define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE
// when doing this, hagar can go through clones
.float just_joined;
-.float cvar_cl_accuracy_data_share;
-.float cvar_cl_accuracy_data_receive;
-
.float cvar_cl_weaponimpulsemode;
.float selectweapon; // last selected weapon of the player
.float ballistics_density; // wall piercing factor, larger = bullet can pass through more
-#define ACTIVE_NOT 0
-#define ACTIVE_ACTIVE 1
-#define ACTIVE_IDLE 2
-#define ACTIVE_BUSY 2
-#define ACTIVE_TOGGLE 3
+const float ACTIVE_NOT = 0;
+const float ACTIVE_ACTIVE = 1;
+const float ACTIVE_IDLE = 2;
+const float ACTIVE_BUSY = 2;
+const float ACTIVE_TOGGLE = 3;
.float active;
.void (float act_state) setactive;
.entity realowner;
-float serverflags;
+//float serverflags;
.float team_forced; // can be a team number to force a team, or 0 for default action, or -1 for forced spectator
.float player_blocked;
+.float weapon_blocked; // weapon use disabled
.float frozen; // for freeze attacks
.float revive_progress;
typedef vector(entity player, entity spot, vector current) spawn_evalfunc_t;
.spawn_evalfunc_t spawn_evalfunc;
-.entity conveyor;
-
string modname;
.float missile_flags;
-#define MIF_SPLASH 2
-#define MIF_ARC 4
-#define MIF_PROXY 8
-#define MIF_GUIDED_MANUAL 16
-#define MIF_GUIDED_HEAT 32
-#define MIF_GUIDED_LASER 64
-#define MIF_GUIDED_AI 128
-#define MIF_GUIDED_TAG 128
+const int MIF_SPLASH = 2;
+const int MIF_ARC = 4;
+const int MIF_PROXY = 8;
+const int MIF_GUIDED_MANUAL = 16;
+const int MIF_GUIDED_HEAT = 32;
+const int MIF_GUIDED_LASER = 64;
+const int MIF_GUIDED_AI = 128;
+const int MIF_GUIDED_TAG = 128;
#define MIF_GUIDED_ALL (MIF_GUIDED_MANUAL | MIF_GUIDED_HEAT | MIF_GUIDED_LASER | MIF_GUIDED_AI | MIF_GUIDED_TAG)
#define MIF_GUIDED_TRACKING (MIF_GUIDED_HEAT | MIF_GUIDED_LASER | MIF_GUIDED_AI | MIF_GUIDED_TAG)
#define MIF_GUIDED_CONFUSABLE (MIF_GUIDED_HEAT | MIF_GUIDED_AI)
-#define MISSILE_IS_CONFUSABLE(m) ((m.missile_flags & MIF_GUIDED_CONFUSABLE) ? TRUE : FALSE)
-#define MISSILE_IS_GUIDED(m) ((m.missile_flags & MIF_GUIDED_ALL) ? TRUE : FALSE)
-#define MISSILE_IS_TRACKING(m) ((m.missile_flags & MIF_GUIDED_TRACKING) ? TRUE : FALSE)
+#define MISSILE_IS_CONFUSABLE(m) ((m.missile_flags & MIF_GUIDED_CONFUSABLE) ? true : false)
+#define MISSILE_IS_GUIDED(m) ((m.missile_flags & MIF_GUIDED_ALL) ? true : false)
+#define MISSILE_IS_TRACKING(m) ((m.missile_flags & MIF_GUIDED_TRACKING) ? true : false)
+
+
+////
+
+.entity player_stats;
+//.float playerid;
+.string playernick;
+.float elos;
+.float ranks;
+
+.string cvar_cl_physics;
+
+.float init_for_player_needed;
+.void(entity) init_for_player;
+
+#endif