#include "scores.qh"
-#include "_all.qh"
#include "command/common.qh"
-#include "mutators/mutators_include.qh"
+#include "mutators/all.qh"
#include "../common/playerstats.qh"
#include "../common/teams.qh"
* teamscore entities
*/
-float TeamScore_SendEntity(entity to, float sendflags)
+bool TeamScore_SendEntity(entity this, entity to, float sendflags)
{
float i, p, longflags;
- WriteByte(MSG_ENTITY, ENT_CLIENT_TEAMSCORES);
+ WriteHeader(MSG_ENTITY, ENT_CLIENT_TEAMSCORES);
WriteByte(MSG_ENTITY, self.team - 1);
longflags = 0;
void TeamScore_Spawn(float t, string name)
{
- entity ts;
- ts = spawn();
- ts.classname = "csqc_score_team";
+ entity ts = new(csqc_score_team);
+ make_pure(ts);
ts.netname = name; // not used yet, FIXME
ts.team = t;
Net_LinkEntity(ts, false, 0, TeamScore_SendEntity);
}
}
-float ScoreInfo_SendEntity(entity to, int sf)
+bool ScoreInfo_SendEntity(entity this, entity to, int sf)
{
float i;
- WriteByte(MSG_ENTITY, ENT_CLIENT_SCORES_INFO);
+ WriteHeader(MSG_ENTITY, ENT_CLIENT_SCORES_INFO);
WriteInt24_t(MSG_ENTITY, MapInfo_LoadedGametype);
for(i = 0; i < MAX_SCORE; ++i)
{
}
else
{
- scores_initialized = spawn();
- scores_initialized.classname = "ent_client_scoreinfo";
+ scores_initialized = new(ent_client_scoreinfo);
+ make_pure(scores_initialized);
Net_LinkEntity(scores_initialized, false, 0, ScoreInfo_SendEntity);
}
if(teams >= 1)
* per-player score entities
*/
-float PlayerScore_SendEntity(entity to, float sendflags)
+bool PlayerScore_SendEntity(entity this, entity to, float sendflags)
{
float i, p, longflags;
- WriteByte(MSG_ENTITY, ENT_CLIENT_SCORES);
+ WriteHeader(MSG_ENTITY, ENT_CLIENT_SCORES);
WriteByte(MSG_ENTITY, num_for_edict(self.owner));
longflags = 0;
void PlayerScore_Attach(entity player)
{
- entity sk;
if(player.scorekeeper)
error("player already has a scorekeeper");
- sk = spawn();
+ entity sk = new(scorekeeper);
+ make_pure(sk);
sk.owner = player;
Net_LinkEntity(sk, false, 0, PlayerScore_SendEntity);
player.scorekeeper = sk;
float PlayerScore_Add(entity player, float scorefield, float score)
{
- entity s;
+ bool mutator_returnvalue = MUTATOR_CALLHOOK(AddPlayerScore, scorefield, score);
+ score = ret_float;
if(gameover)
- if(!(g_lms && scorefield == SP_LMS_RANK)) // allow writing to this field in intermission as it is needed for newly joining players
+ if(!mutator_returnvalue)
score = 0;
if(!scores_initialized) return 0; // FIXME remove this when everything uses this system
- s = player.scorekeeper;
+ entity s = player.scorekeeper;
if(!s)
{
if(gameover)
s = strcat(s, ":human");
else
s = strcat(s, ":bot");
- if(!IS_PLAYER(p) && p.caplayer != 1 && !g_lms)
+ if(!IS_PLAYER(p) && !MUTATOR_CALLHOOK(GetPlayerStatus, p, s))
s = strcat(s, ":spectator");
+ s = strcat(s, ret_string);
}
else
{
- if(IS_PLAYER(p) || p.caplayer == 1 || g_lms)
+ if(IS_PLAYER(p) || MUTATOR_CALLHOOK(GetPlayerStatus, p, s))
s = GetPlayerScoreString(p, 2);
else
s = "-666";
+ s = strcat(s, ret_string);
}
if(p.clientstatus)