X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fg_world.qc;h=c3932f3fb8062a3d254507537dfff60db4c30ff1;hb=5bbfb59ff40eca7824c231d687c2bf587a01749d;hp=40d39a4cd67ae2d9ee3939167d0d85c08ed059fb;hpb=fb9267ffab37eae0bcbc4ac42a8a45a1ad864c0b;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 40d39a4cd6..c3932f3fb8 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -1,5 +1,4 @@ #include "g_world.qh" -#include "_all.qh" #include "anticheat.qh" #include "antilag.qh" @@ -14,23 +13,25 @@ #include "g_hook.qh" #include "ipban.qh" #include "mapvoting.qh" -#include "mutators/mutators_include.qh" +#include "mutators/all.qh" #include "race.qh" #include "scores.qh" #include "teamplay.qh" #include "weapons/weaponstats.qh" -#include "../common/buffs.qh" +#include "../common/buffs/all.qh" #include "../common/constants.qh" -#include "../common/deathtypes.qh" -#include "../common/effects/effects.qh" +#include "../common/deathtypes/all.qh" #include "../common/mapinfo.qh" #include "../common/monsters/all.qh" #include "../common/monsters/sv_monsters.qh" #include "../common/vehicles/all.qh" #include "../common/notifications.qh" +#include "../common/physics.qh" #include "../common/playerstats.qh" #include "../common/stats.qh" #include "../common/teams.qh" +#include "../common/triggers/trigger/secret.qh" +#include "../common/triggers/target/music.qh" #include "../common/util.qh" #include "../common/items/all.qh" #include "../common/weapons/all.qh" @@ -512,8 +513,8 @@ void detect_maptype() } entity randomseed; -float RandomSeed_Send(entity to, int sf) -{SELFPARAM(); +bool RandomSeed_Send(entity this, entity to, int sf) +{ WriteByte(MSG_ENTITY, ENT_CLIENT_RANDOMSEED); WriteShort(MSG_ENTITY, self.cnt); return true; @@ -534,8 +535,8 @@ void RandomSeed_Spawn() WITH(entity, self, randomseed, randomseed.think()); // sets random seed and nextthink } -void spawnfunc___init_dedicated_server(void) -{SELFPARAM(); +spawnfunc(__init_dedicated_server) +{ // handler for _init/_init map (only for dedicated server initialization) world_initialized = -1; // don't complain @@ -557,8 +558,7 @@ void spawnfunc___init_dedicated_server(void) // needs to be done so early because of the constants they create static_init(); - CALL_ACCUMULATED_FUNCTION(RegisterNotifications); - CALL_ACCUMULATED_FUNCTION(RegisterDeathtypes); + static_init_late(); MapInfo_Enumerate(); MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures(), MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags(), 0); @@ -571,8 +571,8 @@ void ClientInit_Spawn(); void WeaponStats_Init(); void WeaponStats_Shutdown(); void Physics_AddStats(); -void spawnfunc_worldspawn (void) -{SELFPARAM(); +spawnfunc(worldspawn) +{ float fd, l, j, n; string s; @@ -603,8 +603,6 @@ void spawnfunc_worldspawn (void) // needs to be done so early because of the constants they create static_init(); - CALL_ACCUMULATED_FUNCTION(RegisterNotifications); - CALL_ACCUMULATED_FUNCTION(RegisterDeathtypes); ServerProgsDB = db_load(strcat("server.db", autocvar_sessionid)); @@ -659,6 +657,7 @@ void spawnfunc_worldspawn (void) PlayerStats_GameReport_Init(); // we need this to be initiated before InitGameplayMode InitGameplayMode(); + static_init_late(); readlevelcvars(); GrappleHookInit(); @@ -912,8 +911,8 @@ void spawnfunc_worldspawn (void) world_initialized = 1; } -void spawnfunc_light (void) -{SELFPARAM(); +spawnfunc(light) +{ //makestatic (self); // Who the f___ did that? remove(self); } @@ -1000,22 +999,6 @@ string Map_Filename(float position) return strcat("maps/", argv(position), ".bsp"); } -string strwords(string s, float w) -{ - float endpos; - for(endpos = 0; w && endpos >= 0; --w) - endpos = strstrofs(s, " ", endpos + 1); - if(endpos < 0) - return s; - else - return substring(s, 0, endpos); -} - -float strhasword(string s, string w) -{ - return strstrofs(strcat(" ", s, " "), strcat(" ", w, " "), 0) >= 0; -} - void Map_MarkAsRecent(string m) { cvar_set("g_maplist_mostrecent", strwords(strcat(m, " ", autocvar_g_maplist_mostrecent), max(0, autocvar_g_maplist_mostrecent_count))); @@ -1443,7 +1426,7 @@ void DumpStats(float final) { s = strcat(":player:see-labels:", GetPlayerScoreString(other, 0), ":"); s = strcat(s, ftos(rint(time - other.jointime)), ":"); - if(IS_PLAYER(other) || other.caplayer == 1 || g_lms) + if(IS_PLAYER(other) || MUTATOR_CALLHOOK(GetPlayerStatus, other, s)) s = strcat(s, ftos(other.team), ":"); else s = strcat(s, "spectator:"); @@ -1566,6 +1549,10 @@ void NextLevel() bprint(other.netname, " ^7wins.\n"); } + entity oldself = self; + target_music_kill(); + self = oldself; + if(autocvar_g_campaign) CampaignPreIntermission(); @@ -2102,35 +2089,13 @@ void CheckRules_World() return; } - float checkrules_status; - checkrules_status = WinningCondition_RanOutOfSpawns(); + int checkrules_status = WinningCondition_RanOutOfSpawns(); if(checkrules_status == WINNING_YES) - { bprint("Hey! Someone ran out of spawns!\n"); - } - else if(g_race && !g_race_qualifying && timelimit >= 0) - { - checkrules_status = WinningCondition_Race(fraglimit); - //print("WC_RACE yields ", ftos(checkrules_status), "\n"); - } - else if(g_race && g_race_qualifying == 2 && timelimit >= 0) - { - checkrules_status = WinningCondition_QualifyingThenRace(fraglimit); - //print("WC_QUALIFYING_THEN_RACE yields ", ftos(checkrules_status), "\n"); - } - else if(g_assault) - { - checkrules_status = WinningCondition_Assault(); // TODO remove this? - } - else if(g_lms) - { - checkrules_status = WinningCondition_LMS(); - } - else - { + else if(!MUTATOR_CALLHOOK(CheckRules_World, checkrules_status, timelimit, fraglimit)) checkrules_status = WinningCondition_Scores(fraglimit, leadlimit); - //print("WC_SCORES yields ", ftos(checkrules_status), "\n"); - } + + checkrules_status = ret_float; if(checkrules_status == WINNING_STARTSUDDENDEATHOVERTIME) {