1 float _spectate(entity _player)
3 if(SpectateNext(_player) == 1)
6 self.classname = "spectator";
11 MUTATOR_HOOKFUNCTION(superspec_SV_ParseClientCommand)
13 if(MUTATOR_RETURNVALUE) // command was already handled?
16 if(self.classname == "player")
19 if(cmd_name == "followpowerup")
22 FOR_EACH_PLAYER(_player)
24 if(_player.strength_finished > time || _player.invincible_finished > time)
25 return _spectate(_player);
28 centerprint(self, "No active powerups\n");
32 if(cmd_name == "followstrength")
35 FOR_EACH_PLAYER(_player)
37 if(_player.strength_finished > time)
38 return _spectate(_player);
41 centerprint(self, "No active Strength\n");
45 if(cmd_name == "followstshield")
48 FOR_EACH_PLAYER(_player)
50 if(_player.invincible_finished > time)
51 return _spectate(_player);
54 centerprint(self, "No active Shield\n");
58 if(cmd_name == "followfc")
74 FOR_EACH_PLAYER(_player)
76 if(_player.flagcarried && (_player.team == _team || _team == 0))
77 return _spectate(_player);
80 centerprint(self, "No active flag carrier\n");
87 MUTATOR_HOOKFUNCTION(superspec_BuildMutatorsString)
89 ret_string = strcat(ret_string, ":SS");
93 MUTATOR_HOOKFUNCTION(superspec_BuildMutatorsPrettyString)
95 ret_string = strcat(ret_string, ", Super Spectators");
100 MUTATOR_HOOKFUNCTION(superspec_PlayerSpawn)
106 MUTATOR_HOOKFUNCTION(superspec_ClientDisconnect)
111 MUTATOR_HOOKFUNCTION(superspec_PlayerPreThink)
117 MUTATOR_DEFINITION(mutator_superspec)
120 MUTATOR_HOOK(BuildMutatorsString, superspec_BuildMutatorsString, CBC_ORDER_ANY);
121 MUTATOR_HOOK(BuildMutatorsPrettyString, superspec_BuildMutatorsPrettyString, CBC_ORDER_ANY);
122 MUTATOR_HOOK(SV_ParseClientCommand, superspec_SV_ParseClientCommand, CBC_ORDER_ANY);
123 //MUTATOR_HOOK(ClientConnect, superspec_ClientConnect, CBC_ORDER_ANY);
124 //MUTATOR_HOOK(PlayerSpawn, superspec_PlayerSpawn, CBC_ORDER_ANY);
125 //MUTATOR_HOOK(PlayerPreThink, superspec_PlayerPreThink, CBC_ORDER_ANY);
126 //MUTATOR_HOOK(ClientDisconnect, superspec_ClientDisconnect, CBC_ORDER_ANY);