X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fworld.qh;h=e74ab2dc7589733b4ca9e4034ab587c49daa78d1;hb=323105d51f8eb6dea47c063965be5e34ad57f987;hp=3bbaad68246e942d4288f379d326686a6cb970ae;hpb=6ae488fa94396ad9ffa0dc3dbfbedb54c8b7983a;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/world.qh b/qcsrc/server/world.qh index 3bbaad682..e74ab2dc7 100644 --- a/qcsrc/server/world.qh +++ b/qcsrc/server/world.qh @@ -1,13 +1,43 @@ #pragma once +#include + +bool autocvar__sv_init; +bool autocvar__endmatch; +bool autocvar_g_use_ammunition; +bool autocvar_g_jetpack; +bool autocvar_g_warmup_allguns; +bool autocvar_g_warmup_allow_timeout; +#define autocvar_g_weaponarena cvar_string("g_weaponarena") +string autocvar_quit_and_redirect; +float autocvar_quit_and_redirect_timer; +bool autocvar_quit_when_empty; +string autocvar_sessionid; +bool autocvar_sv_curl_serverpackages_auto; +bool autocvar_sv_db_saveasdump; +bool autocvar_sv_logscores_bots; +bool autocvar_sv_logscores_console; +bool autocvar_sv_logscores_file; +string autocvar_sv_logscores_filename; +float autocvar_sv_mapchange_delay; +float autocvar_timelimit_increment; +float autocvar_timelimit_decrement; +float autocvar_timelimit_min; +float autocvar_timelimit_max; +float autocvar_timelimit_overtime; +int autocvar_timelimit_overtimes; +float autocvar_timelimit_suddendeath; + float checkrules_equality; float checkrules_suddendeathwarning; float checkrules_suddendeathend; -float checkrules_overtimesadded; //how many overtimes have been already added +int checkrules_overtimesadded; //how many overtimes have been already added // flag set on worldspawn so that the code knows if it is dedicated or not bool server_is_dedicated; +int world_initialized; + string cvar_changes; string cvar_purechanges; float cvar_purechanges_count; @@ -16,15 +46,19 @@ string modname; string gamemode_name; +string record_type; + +string autocvar_sv_termsofservice_url; +// only escape the terms of service url on map change +string sv_termsofservice_url_escaped; + string clientstuff; string matchid; .string fog; -float intermission_running; -float intermission_exittime; -float alreadychangedlevel; +string redirection_target; string cache_mutatormsg; string cache_lastmutatormsg; @@ -32,6 +66,67 @@ string cache_lastmutatormsg; float default_player_alpha; float default_weapon_alpha; +float g_pickup_shells_max; +float g_pickup_nails_max; +float g_pickup_rockets_max; +float g_pickup_cells_max; +float g_pickup_plasma_max; +float g_pickup_fuel_max; +float g_pickup_weapons_anyway; +float g_weaponarena; +WepSet g_weaponarena_weapons; +float g_weaponarena_random; // TODO +string g_weaponarena_list; + +WepSet start_weapons; +WepSet start_weapons_default; +WepSet start_weapons_defaultmask; +int start_items; +float start_ammo_shells; +float start_ammo_nails; +float start_ammo_rockets; +float start_ammo_cells; +float start_ammo_plasma; +float start_ammo_fuel; +/// \brief Number of random start weapons to give to players. +int random_start_weapons_count; +/// \brief Holds a list of possible random start weapons. +string autocvar_g_random_start_weapons; +/// \brief Entity that contains amount of ammo to give with random start +/// weapons. +entity random_start_ammo; +float start_health; +float start_armorvalue; +WepSet warmup_start_weapons; +WepSet warmup_start_weapons_default; +WepSet warmup_start_weapons_defaultmask; +#define WARMUP_START_WEAPONS ((autocvar_g_warmup_allguns == 1) ? (warmup_start_weapons & (weaponsInMap | start_weapons)) : warmup_start_weapons) +float warmup_start_ammo_shells; +float warmup_start_ammo_nails; +float warmup_start_ammo_rockets; +float warmup_start_ammo_cells; +float warmup_start_ammo_plasma; +float warmup_start_ammo_fuel; +float warmup_start_health; +float warmup_start_armorvalue; +float g_weapon_stay; + +float want_weapon(entity weaponinfo, float allguns); // WEAPONTODO: what still needs done? + +float g_grappling_hook; +float warmup_stage; + +bool sv_ready_restart_after_countdown; + +.void(entity this) initialize_entity; +.int initialize_entity_order; +.entity initialize_entity_next; +entity initialize_entity_first; + +void InitializeEntitiesRun(); + +void InitializeEntity(entity e, void(entity this) func, int order); + // database float ServerProgsDB; float TemporaryDB; @@ -44,22 +139,23 @@ const int WINNING_STARTSUDDENDEATHOVERTIME = 3; // no winner, enter suddendeath float WinningCondition_Scores(float limit, float leadlimit); void SetWinners(.float field, float value); -void IntermissionThink(entity this); -void GotoNextMap(float reinit); -void ReadyRestart(); - -string GetGametype(); +void ReadyRestart(bool forceWarmupEnd); void DumpStats(float final); -float Map_IsRecent(string m); -string GetNextMap(); -void ShuffleMaplist(); -void Map_Goto_SetStr(string nextmapname); -void Map_Goto(float reinit); -void Map_MarkAsRecent(string m); -float DoNextMapOverride(float reinit); + +bool MoveToRandomLocationWithinBounds(entity e, vector boundmin, vector boundmax, float goodcontents, float badcontents, float badsurfaceflags, int attempts, float maxaboveground, float minviewdistance, bool frompos); + +float MoveToRandomMapLocation(entity e, float goodcontents, float badcontents, float badsurfaceflags, float attempts, float maxaboveground, float minviewdistance); + void CheckRules_World(); float RedirectionThink(); +void readplayerstartcvars(); + +void readlevelcvars(); + +.vector dropped_origin; +void droptofloor(entity this); + IntrusiveList g_moveables; STATIC_INIT(g_moveables) { g_moveables = IL_NEW(); }