#include "g_world.qh"
-#include "_all.qh"
#include "anticheat.qh"
#include "antilag.qh"
#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"
}
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;
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
// 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);
void WeaponStats_Init();
void WeaponStats_Shutdown();
void Physics_AddStats();
-void spawnfunc_worldspawn (void)
-{SELFPARAM();
+spawnfunc(worldspawn)
+{
float fd, l, j, n;
string s;
// 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));
PlayerStats_GameReport_Init(); // we need this to be initiated before InitGameplayMode
InitGameplayMode();
+ static_init_late();
readlevelcvars();
GrappleHookInit();
world_initialized = 1;
}
-void spawnfunc_light (void)
-{SELFPARAM();
+spawnfunc(light)
+{
//makestatic (self); // Who the f___ did that?
remove(self);
}
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)));
{
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:");
bprint(other.netname, " ^7wins.\n");
}
+ entity oldself = self;
+ target_music_kill();
+ self = oldself;
+
if(autocvar_g_campaign)
CampaignPreIntermission();
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)
{