aboutsummaryrefslogtreecommitdiffstats
path: root/QW/progs/spectate.qc
diff options
context:
space:
mode:
authorTravis Bradshaw <travis.bradshaw@idsoftware.com>2012-01-31 14:32:09 -0600
committerTravis Bradshaw <travis.bradshaw@idsoftware.com>2012-01-31 14:32:09 -0600
commit0023db327bc1db00068284b70e1db45857aeee35 (patch)
tree01dd8366d20bd674741cfe8ceb069d82a2e33973 /QW/progs/spectate.qc
downloadquake-pum-0023db327bc1db00068284b70e1db45857aeee35.tar.gz
The Quake sources as originally release under the GPL license on December 21, 1999
Diffstat (limited to 'QW/progs/spectate.qc')
-rw-r--r--QW/progs/spectate.qc84
1 files changed, 84 insertions, 0 deletions
diff --git a/QW/progs/spectate.qc b/QW/progs/spectate.qc
new file mode 100644
index 0000000..81c6533
--- /dev/null
+++ b/QW/progs/spectate.qc
@@ -0,0 +1,84 @@
+// Spectator functions
+// Added Aug11'97 by Zoid <zoid@idsoftware.com>
+//
+// These functions are called from the server if they exist.
+// Note that Spectators only have one think since they movement code doesn't
+// track them much. Impulse commands work as usual, but don't call
+// the regular ImpulseCommand handler in weapons.qc since Spectators don't
+// have any weapons and things can explode.
+//
+// --- Zoid.
+
+/*
+===========
+SpectatorConnect
+
+called when a spectator connects to a server
+============
+*/
+void() SpectatorConnect =
+{
+ bprint (PRINT_MEDIUM, "Spectator ");
+ bprint (PRINT_MEDIUM, self.netname);
+ bprint (PRINT_MEDIUM, " entered the game\n");
+
+ self.goalentity = world; // used for impulse 1 below
+};
+
+/*
+===========
+SpectatorDisconnect
+
+called when a spectator disconnects from a server
+============
+*/
+void() SpectatorDisconnect =
+{
+ bprint (PRINT_MEDIUM, "Spectator ");
+ bprint (PRINT_MEDIUM, self.netname);
+ bprint (PRINT_MEDIUM, " left the game\n");
+};
+
+/*
+================
+SpectatorImpulseCommand
+
+Called by SpectatorThink if the spectator entered an impulse
+================
+*/
+void() SpectatorImpulseCommand =
+{
+ if (self.impulse == 1) {
+ // teleport the spectator to the next spawn point
+ // note that if the spectator is tracking, this doesn't do
+ // much
+ self.goalentity = find(self.goalentity, classname, "info_player_deathmatch");
+ if (self.goalentity == world)
+ self.goalentity = find(self.goalentity, classname, "info_player_deathmatch");
+ if (self.goalentity != world) {
+ setorigin(self, self.goalentity.origin);
+ self.angles = self.goalentity.angles;
+ self.fixangle = TRUE; // turn this way immediately
+ }
+ }
+
+ self.impulse = 0;
+};
+
+/*
+================
+SpectatorThink
+
+Called every frame after physics are run
+================
+*/
+void() SpectatorThink =
+{
+ // self.origin, etc contains spectator position, so you could
+ // do some neat stuff here
+
+ if (self.impulse)
+ SpectatorImpulseCommand();
+};
+
+