GSLogMod v. 1.3 for Quake 2 (3.14) CTF 5 (1.02
----------------------------------------------

http://www.planetquake.com/gibstats

jet@poboxes.com


diff to zoids source:

*** old/g_ctf.c	Fri Mar  6 12:32:58 1998
--- src/g_ctf.c	Fri Mar  6 13:00:12 1998
***************
*** 1,4 ****
--- 1,6 ----
  #include "g_local.h"
+ #include "l_gibstats.h"
+ #include "l_gsctf.h"
  
  typedef struct ctfgame_s
  {
*************** void CTFFragBonuses(edict_t *targ, edict
*** 469,475 ****
  		attacker->client->resp.score += CTF_FRAG_CARRIER_BONUS;
  		gi.cprintf(attacker, PRINT_MEDIUM, "BONUS: %d points for fragging enemy flag carrier.\n",
  			CTF_FRAG_CARRIER_BONUS);
! 
  		// the the target had the flag, clear the hurt carrier
  		// field on the other team
  		for (i = 1; i <= maxclients->value; i++) {
--- 471,477 ----
  		attacker->client->resp.score += CTF_FRAG_CARRIER_BONUS;
  		gi.cprintf(attacker, PRINT_MEDIUM, "BONUS: %d points for fragging enemy flag carrier.\n",
  			CTF_FRAG_CARRIER_BONUS);
!       if (gs_enabled) gsctf_frag_carrier (attacker);
  		// the the target had the flag, clear the hurt carrier
  		// field on the other team
  		for (i = 1; i <= maxclients->value; i++) {
*************** void CTFFragBonuses(edict_t *targ, edict
*** 489,494 ****
--- 491,497 ----
  		gi.bprintf(PRINT_MEDIUM, "%s defends %s's flag carrier against an agressive enemy\n",
  			attacker->client->pers.netname, 
  			CTFTeamName(attacker->client->resp.ctf_team));
+       if (gs_enabled) gsctf_carrier_danger_protect (attacker);
  		return;
  	}
  
*************** void CTFFragBonuses(edict_t *targ, edict
*** 545,550 ****
--- 548,554 ----
  			gi.bprintf(PRINT_MEDIUM, "%s defends the %s flag.\n",
  				attacker->client->pers.netname, 
  				CTFTeamName(attacker->client->resp.ctf_team));
+       if (gs_enabled) gsctf_flag_defense (attacker);
  		return;
  	}
  
*************** void CTFFragBonuses(edict_t *targ, edict
*** 559,564 ****
--- 563,569 ----
  			gi.bprintf(PRINT_MEDIUM, "%s defends the %s's flag carrier.\n",
  				attacker->client->pers.netname, 
  				CTFTeamName(attacker->client->resp.ctf_team));
+          if (gs_enabled) gsctf_carrier_protect (attacker);
  			return;
  		}
  	}
*************** qboolean CTFPickup_Flag(edict_t *ent, ed
*** 654,659 ****
--- 659,665 ----
  			if (other->client->pers.inventory[ITEM_INDEX(enemy_flag_item)]) {
  				gi.bprintf(PRINT_HIGH, "%s captured the %s flag!\n",
  						other->client->pers.netname, CTFOtherTeamName(ctf_team));
+             if (gs_enabled) gsctf_capture_flag (other);
  				other->client->pers.inventory[ITEM_INDEX(enemy_flag_item)] = 0;
  
  				ctfgame.last_flag_capture = level.time;
*************** qboolean CTFPickup_Flag(edict_t *ent, ed
*** 682,691 ****
--- 688,699 ----
  						// award extra points for capture assists
  						if (player->client->resp.ctf_lastreturnedflag + CTF_RETURN_FLAG_ASSIST_TIMEOUT > level.time) {
  							gi.bprintf(PRINT_HIGH, "%s gets an assist for returning the flag!\n", player->client->pers.netname);
+                      if (gs_enabled) gsctf_return_flag_assist (player);
  							player->client->resp.score += CTF_RETURN_FLAG_ASSIST_BONUS;
  						}
  						if (player->client->resp.ctf_lastfraggedcarrier + CTF_FRAG_CARRIER_ASSIST_TIMEOUT > level.time) {
  							gi.bprintf(PRINT_HIGH, "%s gets an assist for fragging the flag carrier!\n", player->client->pers.netname);
+                      if (gs_enabled) gsctf_frag_carrier (player);
  							player->client->resp.score += CTF_FRAG_CARRIER_ASSIST_BONUS;
  						}
  					}
*************** qboolean CTFPickup_Flag(edict_t *ent, ed
*** 699,704 ****
--- 707,713 ----
  		// hey, its not home.  return it by teleporting it back
  		gi.bprintf(PRINT_HIGH, "%s returned the %s flag!\n", 
  			other->client->pers.netname, CTFTeamName(ctf_team));
+       if (gs_enabled) gsctf_recover_flag (other);
  		other->client->resp.score += CTF_RECOVERY_BONUS;
  		other->client->resp.ctf_lastreturnedflag = level.time;
  		gi.sound (ent, CHAN_RELIABLE+CHAN_NO_PHS_ADD+CHAN_VOICE, gi.soundindex("ctf/flagret.wav"), 1, ATTN_NONE, 0);
*************** qboolean CTFPickup_Flag(edict_t *ent, ed
*** 710,715 ****
--- 719,725 ----
  	// hey, its not our flag, pick it up
  	gi.bprintf(PRINT_HIGH, "%s got the %s flag!\n",
  		other->client->pers.netname, CTFTeamName(ctf_team));
+    if (gs_enabled) gsctf_pickup_flag (other);
  	other->client->resp.score += CTF_FLAG_BONUS;
  
  	other->client->pers.inventory[ITEM_INDEX(flag_item)] = 1;
*** old/g_main.c	Fri Mar  6 12:32:58 1998
--- src/g_main.c	Fri Mar  6 12:34:12 1998
***************
*** 1,5 ****
--- 1,6 ----
  
  #include "g_local.h"
+ #include "l_gibstats.h"
  
  game_locals_t	game;
  level_locals_t	level;
*************** void G_RunFrame (void);
*** 67,72 ****
--- 68,75 ----
  void ShutdownGame (void)
  {
  	gi.dprintf ("==== ShutdownGame ====\n");
+ 
+    if (gs_enabled) gs_shutdown ();
  
  	gi.FreeTags (TAG_LEVEL);
  	gi.FreeTags (TAG_GAME);
*** old/g_save.c	Fri Mar  6 12:32:59 1998
--- src/g_save.c	Fri Mar  6 12:35:12 1998
***************
*** 1,5 ****
--- 1,6 ----
  
  #include "g_local.h"
+ #include "l_gibstats.h"
  
  field_t fields[] = {
  	{"classname", FOFS(classname), F_LSTRING},
*************** is loaded.
*** 127,133 ****
  */
  void InitGame (void)
  {
! 	gi.dprintf ("==== InitGame ====\n");
  
  	gun_x = gi.cvar ("gun_x", "0", 0);
  	gun_y = gi.cvar ("gun_y", "0", 0);
--- 128,136 ----
  */
  void InitGame (void)
  {
! 	gi.dprintf ("\n==== InitGame ====\n");
! 
!    gs_init ();
  
  	gun_x = gi.cvar ("gun_x", "0", 0);
  	gun_y = gi.cvar ("gun_y", "0", 0);
*** old/g_spawn.c	Fri Mar  6 12:32:59 1998
--- src/g_spawn.c	Fri Mar  6 13:24:32 1998
***************
*** 1,5 ****
--- 1,6 ----
  
  #include "g_local.h"
+ #include "l_gibstats.h"
  
  typedef struct
  {
*************** spawn_t	spawns[] = {
*** 235,270 ****
  	{"misc_easterchick", SP_misc_easterchick},
  	{"misc_easterchick2", SP_misc_easterchick2},
  
! #if 0 // remove monster code
! 	{"monster_berserk", SP_monster_berserk},
! 	{"monster_gladiator", SP_monster_gladiator},
! 	{"monster_gunner", SP_monster_gunner},
! 	{"monster_infantry", SP_monster_infantry},
! 	{"monster_soldier_light", SP_monster_soldier_light},
! 	{"monster_soldier", SP_monster_soldier},
! 	{"monster_soldier_ss", SP_monster_soldier_ss},
! 	{"monster_tank", SP_monster_tank},
! 	{"monster_tank_commander", SP_monster_tank},
! 	{"monster_medic", SP_monster_medic},
! 	{"monster_flipper", SP_monster_flipper},
! 	{"monster_chick", SP_monster_chick},
! 	{"monster_parasite", SP_monster_parasite},
! 	{"monster_flyer", SP_monster_flyer},
! 	{"monster_brain", SP_monster_brain},
! 	{"monster_floater", SP_monster_floater},
! 	{"monster_hover", SP_monster_hover},
! 	{"monster_mutant", SP_monster_mutant},
! 	{"monster_supertank", SP_monster_supertank},
! 	{"monster_boss2", SP_monster_boss2},
! 	{"monster_boss3_stand", SP_monster_boss3_stand},
! 	{"monster_jorg", SP_monster_jorg},
! 
! 	{"monster_commander_body", SP_monster_commander_body},
! 
! 	{"turret_breach", SP_turret_breach},
! 	{"turret_base", SP_turret_base},
! 	{"turret_driver", SP_turret_driver},
! #endif
  
  	{NULL, NULL}
  };
--- 236,270 ----
  	{"misc_easterchick", SP_misc_easterchick},
  	{"misc_easterchick2", SP_misc_easterchick2},
  
! // remove monster code
! 	{"monster_berserk", SP_info_null},
! 	{"monster_gladiator", SP_info_null},
! 	{"monster_gunner", SP_info_null},
! 	{"monster_infantry", SP_info_null},
! 	{"monster_soldier_light", SP_info_null},
! 	{"monster_soldier", SP_info_null},
! 	{"monster_soldier_ss", SP_info_null},
! 	{"monster_tank", SP_info_null},
! 	{"monster_tank_commander", SP_info_null},
! 	{"monster_medic", SP_info_null},
! 	{"monster_flipper", SP_info_null},
! 	{"monster_chick", SP_info_null},
! 	{"monster_parasite", SP_info_null},
! 	{"monster_flyer", SP_info_null},
! 	{"monster_brain", SP_info_null},
! 	{"monster_floater", SP_info_null},
! 	{"monster_hover", SP_info_null},
! 	{"monster_mutant", SP_info_null},
! 	{"monster_supertank", SP_info_null},
! 	{"monster_boss2", SP_info_null},
! 	{"monster_boss3_stand", SP_info_null},
! 	{"monster_jorg", SP_info_null},
! 
! 	{"monster_commander_body", SP_info_null},
! 
! 	{"turret_breach", SP_info_null},
! 	{"turret_base", SP_info_null},
! 	{"turret_driver", SP_info_null},
  
  	{NULL, NULL}
  };
*************** void SP_worldspawn (edict_t *ent)
*** 959,963 ****
--- 959,965 ----
  
  	// 63 testing
  	gi.configstring(CS_LIGHTS+63, "a");
+ 
+    if (gs_enabled) gs_map_start ();
  }
  
*** old/p_client.c	Fri Mar  6 12:32:59 1998
--- src/p_client.c	Fri Mar  6 12:39:04 1998
***************
*** 1,5 ****
--- 1,6 ----
  #include "g_local.h"
  #include "m_player.h"
+ #include "l_gibstats.h"
  
  void ClientUserinfoChanged (edict_t *ent, char *userinfo);
  
*************** void player_die (edict_t *self, edict_t 
*** 488,493 ****
--- 489,495 ----
  		LookAtKiller (self, inflictor, attacker);
  		self->client->ps.pmove.pm_type = PM_DEAD;
  		ClientObituary (self, inflictor, attacker);
+       if (gs_enabled) gs_write_death (self, inflictor, attacker);
  //ZOID
  		CTFFragBonuses(self, inflictor, attacker);
  //ZOID
*************** void ClientBeginDeathmatch (edict_t *ent
*** 1180,1185 ****
--- 1182,1189 ----
  
  	gi.bprintf (PRINT_HIGH, "%s entered the game\n", ent->client->pers.netname);
  
+    if (gs_enabled) gs_player_entered (ent);
+ 
  	// make sure all view stuff is valid
  	ClientEndServerFrame (ent);
  }
*************** void ClientDisconnect (edict_t *ent)
*** 1378,1383 ****
--- 1382,1389 ----
  		return;
  
  	gi.bprintf (PRINT_HIGH, "%s disconnected\n", ent->client->pers.netname);
+ 
+    if (gs_enabled) gs_disconnect (ent);
  
  //ZOID
  	CTFDeadDropFlag(ent);
