}
void AnnounceTo(entity e, string snd) {
- msg_entity = e;
- WriteByte(MSG_ONE, SVC_TEMPENTITY);
- WriteByte(MSG_ONE, TE_CSQC_ANNOUNCE);
- WriteString(MSG_ONE, snd);
+ if (clienttype(e) == CLIENTTYPE_REAL)
+ {
+ msg_entity = e;
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_ANNOUNCE);
+ WriteString(MSG_ONE, snd);
+ }
}
float ClientData_Send(entity to, float sf)
{
if(substring(plyermodel,-4,4) != ".zym")
if(substring(plyermodel,-4,4) != ".dpm")
+ if(substring(plyermodel,-4,4) != ".iqm")
if(substring(plyermodel,-4,4) != ".md3")
if(substring(plyermodel,-4,4) != ".psk")
return FallbackPlayerModel;
}
DropAllRunes(self);
- kh_Key_DropAll(self, TRUE);
Portal_ClearAll(self);
}
else
self.frags = FRAGS_SPECTATOR;
+
+ MUTATOR_CALLHOOK(MakePlayerObserver);
}
float RestrictSkin(float s)
self.weapons = randombits(self.weapons, g_weaponarena_random, FALSE);
self.items = start_items;
- self.switchweapon = w_getbestweapon(self);
- self.cnt = self.switchweapon;
- self.weapon = 0;
self.jump_interval = time;
self.spawnshieldtime = time + cvar("g_spawnshieldtime");
}
self.cnt = WEP_LASER;
- self.nixnex_lastchange_id = -1;
CL_SpawnWeaponentity();
self.alpha = default_player_alpha;
target_voicescript_clear(self);
// reset fields the weapons may use
- for (j = WEP_FIRST; j <= WEP_LAST; ++j)
- weapon_action(j, WR_RESETPLAYER);
+ for (j = WEP_FIRST; j <= WEP_LAST; ++j)
+ weapon_action(j, WR_RESETPLAYER);
oldself = self;
self = spot;
SUB_UseTargets();
activator = world;
self = oldself;
+
+ MUTATOR_CALLHOOK(PlayerSpawn);
+
+ self.switchweapon = w_getbestweapon(self);
+ self.cnt = self.switchweapon;
+ self.weapon = 0;
} else if(self.classname == "observer" || (g_ca && !allowed_to_spawn)) {
PutObserverInServer ();
}
SoundEntity_Detach(self);
DropAllRunes(self);
- kh_Key_DropAll(self, TRUE);
+ MUTATOR_CALLHOOK(ClientDisconnect);
Portal_ClearAll(self);
}
void GetPressedKeys(void) {
+ MUTATOR_CALLHOOK(GetPressedKeys);
if (self.movement_x > 0) // get if movement keys are pressed
{ // forward key pressed
self.pressedkeys |= KEY_FORWARD;
} else
update_stats (0, spectatee.cvar_cl_accuracy_data_share * spectatee.stat_hit, spectatee.cvar_cl_accuracy_data_share * spectatee.stat_fired);
- self.kh_state = spectatee.kh_state;
+ other = spectatee;
+ MUTATOR_CALLHOOK(SpectateCopy);
self.armortype = spectatee.armortype;
self.armorvalue = spectatee.armorvalue;
self.ammo_cells = spectatee.ammo_cells;
return;
#endif
+ MUTATOR_CALLHOOK(PlayerPreThink);
+
if(self.classname == "player") {
// if(self.netname == "Wazat")
// bprint(self.classname, "\n");
self.effects = self.effects - (self.effects & EF_NODRAW);
}
- Nixnex_GiveCurrentWeapon();
-
if(frametime > 0) // don't do this in cl_movement frames, just in server ticks
UpdateSelectedPlayer();
if(frametime)
{
- if(cvar("gameversion") >= 20600) // only do this for 2.6 and above FIXME remove this check when making 2.6
- self.glowmod = colormapPaletteColor(self.clientcolors & 0x0F, TRUE) * 2;
+ self.glowmod = colormapPaletteColor(self.clientcolors & 0x0F, TRUE) * 2;
player_powerups();
}
ImpulseCommands();
if (intermission_running)
return; // intermission or finale
-
GetPressedKeys();
} else if (self.classname == "observer") {
//do nothing