game/g_cmds.c- game/g_cmds.c- it = &itemlist[ent->client->pers.selected_item]; game/g_cmds.c- if (!it->drop) game/g_cmds.c- { game/g_cmds.c- gi.cprintf (ent, PRINT_HIGH, "Item is not dropable.\n"); game/g_cmds.c- return; game/g_cmds.c- } game/g_cmds.c- it->drop (ent, it); game/g_cmds.c-} game/g_cmds.c- game/g_cmds.c-/* game/g_cmds.c-================= game/g_cmds.c-Cmd_Kill_f game/g_cmds.c-================= game/g_cmds.c-*/ game/g_cmds.c-void Cmd_Kill_f (edict_t *ent) game/g_cmds.c-{ game/g_cmds.c- if((level.time - ent->client->respawn_time) < 5) game/g_cmds.c- return; game/g_cmds.c- if (!ent->client || ent->client->resp.spectator) game/g_cmds.c: return; // %%SSP_NO_KILL_IN_SPEC game/g_cmds.c- game/g_cmds.c- ent->flags &= ~FL_GODMODE; game/g_cmds.c- ent->health = 0; game/g_cmds.c- meansOfDeath = MOD_SUICIDE; game/g_cmds.c- player_die (ent, ent, ent, 100000, vec3_origin); game/g_cmds.c-} game/g_cmds.c- game/g_cmds.c-/* game/g_cmds.c-================= game/g_cmds.c-Cmd_PutAway_f game/g_cmds.c-================= game/g_cmds.c-*/ game/g_cmds.c-void Cmd_PutAway_f (edict_t *ent) game/g_cmds.c-{ game/g_cmds.c- ent->client->showscores = false; game/g_cmds.c- ent->client->showhelp = false; game/g_cmds.c- ent->client->showinventory = false; game/g_cmds.c-} game/g_cmds.c- game/g_cmds.c- -- game/g_combat.c- vec3_t kvel; game/g_combat.c- float mass; game/g_combat.c- game/g_combat.c- if (targ->mass < 50) game/g_combat.c- mass = 50; game/g_combat.c- else game/g_combat.c- mass = targ->mass; game/g_combat.c- game/g_combat.c- if (targ->client && attacker == targ) game/g_combat.c- VectorScale (dir, 1600.0 * (float)knockback / mass, kvel); // the rocket jump hack... game/g_combat.c- else game/g_combat.c- VectorScale (dir, 500.0 * (float)knockback / mass, kvel); game/g_combat.c- game/g_combat.c- VectorAdd (targ->velocity, kvel, targ->velocity); game/g_combat.c- } game/g_combat.c- } game/g_combat.c- game/g_combat.c- take = damage; game/g_combat.c- save = 0; game/g_combat.c- game/g_combat.c:#ifdef SSP_SPAWN_PROTECT_EXTREME_PREJUDICE game/g_combat.c- if (ssp_client_is_extreme_spawn_protected(targ) && mod == MOD_RAILGUN) game/g_combat.c- { game/g_combat.c- if (client && targ != attacker && attacker->client) game/g_combat.c- { game/g_combat.c- int i; game/g_combat.c- game/g_combat.c- // unnnfffff !! game/g_combat.c- gi.sound(attacker, CHAN_BODY, gi.soundindex("chick/chkidle1.wav"), 1, ATTN_NORM, 0); game/g_combat.c- gi.sound(attacker, CHAN_WEAPON, gi.soundindex("makron/bfg_fire.wav"), 1, ATTN_NORM, 0); game/g_combat.c- gi.sound(attacker, CHAN_VOICE, gi.soundindex("insane/insane5.wav"), 1, ATTN_NORM, 0); game/g_combat.c- game/g_combat.c- // want target to hear sound too game/g_combat.c- gi.sound(targ, CHAN_ITEM, gi.soundindex("chick/chkidle1.wav"), 1, ATTN_NORM, 0); game/g_combat.c- game/g_combat.c- // need plenty of gibs game/g_combat.c- if (attacker->velocity[2] < 500) game/g_combat.c- attacker->velocity[2] = 500; game/g_combat.c- for (i = 0; i < 8; i++) game/g_combat.c- ThrowGib(attacker, "models/objects/gibs/sm_meat/tris.md2", 500, GIB_ORGANIC); game/g_combat.c- -- game/g_local.h-#define MOD_BFG_EFFECT 14 game/g_local.h-#define MOD_HANDGRENADE 15 game/g_local.h-#define MOD_HG_SPLASH 16 game/g_local.h-#define MOD_WATER 17 game/g_local.h-#define MOD_SLIME 18 game/g_local.h-#define MOD_LAVA 19 game/g_local.h-#define MOD_CRUSH 20 game/g_local.h-#define MOD_TELEFRAG 21 game/g_local.h-#define MOD_FALLING 22 game/g_local.h-#define MOD_SUICIDE 23 game/g_local.h-#define MOD_HELD_GRENADE 24 game/g_local.h-#define MOD_EXPLOSIVE 25 game/g_local.h-#define MOD_BARREL 26 game/g_local.h-#define MOD_BOMB 27 game/g_local.h-#define MOD_EXIT 28 game/g_local.h-#define MOD_SPLASH 29 game/g_local.h-#define MOD_TARGET_LASER 30 game/g_local.h-#define MOD_TRIGGER_HURT 31 game/g_local.h-#define MOD_HIT 32 game/g_local.h-#define MOD_TARGET_BLASTER 33 game/g_local.h:#ifdef SSP_SPAWN_PROTECT_EXTREME_PREJUDICE game/g_local.h-#define MOD_FAILED_SPAWN_CAMP 34 game/g_local.h-#endif game/g_local.h-#define MOD_FRIENDLY_FIRE 0x8000000 game/g_local.h- game/g_local.h-extern int meansOfDeath; game/g_local.h- game/g_local.h- game/g_local.h-extern edict_t *g_edicts; game/g_local.h- game/g_local.h-#define FOFS(x) (int)&(((edict_t *)0)->x) game/g_local.h-#define STOFS(x) (int)&(((spawn_temp_t *)0)->x) game/g_local.h-#define LLOFS(x) (int)&(((level_locals_t *)0)->x) game/g_local.h-#define CLOFS(x) (int)&(((gclient_t *)0)->x) game/g_local.h- game/g_local.h-#ifdef random game/g_local.h-#undef random game/g_local.h-#endif game/g_local.h- game/g_local.h-#define random() ((rand () & 0x7fff) / ((float)0x7fff)) game/g_local.h-#define crandom() (2.0 * (random() - 0.5)) -- game/g_local.h-extern cvar_t *gun_x, *gun_y, *gun_z; game/g_local.h-extern cvar_t *sv_rollspeed; game/g_local.h-extern cvar_t *sv_rollangle; game/g_local.h- game/g_local.h-extern cvar_t *run_pitch; game/g_local.h-extern cvar_t *run_roll; game/g_local.h-extern cvar_t *bob_up; game/g_local.h-extern cvar_t *bob_pitch; game/g_local.h-extern cvar_t *bob_roll; game/g_local.h- game/g_local.h-extern cvar_t *sv_cheats; game/g_local.h-extern cvar_t *maxclients; game/g_local.h-extern cvar_t *maxspectators; game/g_local.h- game/g_local.h-extern cvar_t *flood_msgs; game/g_local.h-extern cvar_t *flood_persecond; game/g_local.h-extern cvar_t *flood_waitdelay; game/g_local.h- game/g_local.h-extern cvar_t *sv_maplist; game/g_local.h- game/g_local.h:#ifdef SSP_SPAWN_PROTECT game/g_local.h-extern cvar_t *tune_spawn_prot_time; game/g_local.h-extern cvar_t *tune_spawn_attack_unprot; game/g_local.h-#endif game/g_local.h:#ifdef SSP_SPAWN_PROTECT_EXTREME_PREJUDICE game/g_local.h-extern cvar_t *tune_spawn_prot_ratio; game/g_local.h-#endif game/g_local.h:#ifdef SSP_TUNE_SPAWNS game/g_local.h-extern cvar_t *tune_spawn_power_shield; game/g_local.h-extern cvar_t *tune_spawn_quad; game/g_local.h-extern cvar_t *tune_spawn_invulnerability; game/g_local.h-extern cvar_t *tune_spawn_bfg; game/g_local.h-extern cvar_t *tune_spawn_remap1; game/g_local.h-extern cvar_t *tune_spawn_remap2; game/g_local.h-extern cvar_t *tune_spawn_remap3; game/g_local.h-extern cvar_t *tune_spawn_remap4; game/g_local.h-extern cvar_t *tune_spawn_remap5; game/g_local.h-extern cvar_t *tune_spawn_remap6; game/g_local.h-extern cvar_t *tune_spawn_remap7; game/g_local.h-extern cvar_t *tune_spawn_remap8; game/g_local.h-extern cvar_t *tune_spawn_remap9; game/g_local.h-#endif game/g_local.h- game/g_local.h- game/g_local.h-#define world (&g_edicts[0]) game/g_local.h- game/g_local.h-// item spawnflags game/g_local.h-#define ITEM_TRIGGER_SPAWN 0x00000001 -- game/g_local.h-edict_t *G_PickTarget (char *targetname); game/g_local.h-void G_UseTargets (edict_t *ent, edict_t *activator); game/g_local.h-void G_SetMovedir (vec3_t angles, vec3_t movedir); game/g_local.h- game/g_local.h-void G_InitEdict (edict_t *e); game/g_local.h-edict_t *G_Spawn (void); game/g_local.h-void G_FreeEdict (edict_t *e); game/g_local.h- game/g_local.h-void G_TouchTriggers (edict_t *ent); game/g_local.h-void G_TouchSolids (edict_t *ent); game/g_local.h- game/g_local.h-char *G_CopyString (char *in); game/g_local.h- game/g_local.h-float *tv (float x, float y, float z); game/g_local.h-char *vtos (vec3_t v); game/g_local.h- game/g_local.h-float vectoyaw (vec3_t vec); game/g_local.h-void vectoangles (vec3_t vec, vec3_t angles); game/g_local.h- game/g_local.h- game/g_local.h:#ifdef SSP_SPAWN_PROTECT game/g_local.h-extern void ssp_bestow_spawn_protection (edict_t *ent); game/g_local.h-extern void ssp_cancel_spawn_protection (edict_t *ent); game/g_local.h-extern qboolean ssp_client_is_spawn_protected (edict_t *ent); game/g_local.h-extern void ssp_set_client_spawn_protect_effect (edict_t *ent); game/g_local.h-#endif game/g_local.h:#ifdef SSP_SPAWN_PROTECT_EXTREME_PREJUDICE game/g_local.h-extern qboolean ssp_client_is_extreme_spawn_protected (edict_t *ent); game/g_local.h-#endif game/g_local.h:#ifdef SSP_TUNE_SPAWNS game/g_local.h-extern char * ssp_tune_spawn (char * item_classname); game/g_local.h-#endif game/g_local.h- game/g_local.h-// game/g_local.h-// g_combat.c game/g_local.h-// game/g_local.h-qboolean OnSameTeam (edict_t *ent1, edict_t *ent2); game/g_local.h-qboolean CanDamage (edict_t *targ, edict_t *inflictor); game/g_local.h-void T_Damage (edict_t *targ, edict_t *inflictor, edict_t *attacker, vec3_t dir, vec3_t point, vec3_t normal, int damage, int knockback, int dflags, int mod); game/g_local.h-void T_RadiusDamage (edict_t *inflictor, edict_t *attacker, float damage, edict_t *ignore, float radius, int mod); game/g_local.h- game/g_local.h-// damage flags game/g_local.h-#define DAMAGE_RADIUS 0x00000001 // damage was indirect game/g_local.h-#define DAMAGE_NO_ARMOR 0x00000002 // armour does not protect from this damage game/g_local.h-#define DAMAGE_ENERGY 0x00000004 // damage is from an energy based weapon game/g_local.h-#define DAMAGE_NO_KNOCKBACK 0x00000008 // do not affect velocity, just view angles game/g_local.h-#define DAMAGE_BULLET 0x00000010 // damage is from a bullet (used for ricochets) game/g_local.h-#define DAMAGE_NO_PROTECTION 0x00000020 // armor, shields, invulnerability, and godmode have no effect game/g_local.h- game/g_local.h-#define DEFAULT_BULLET_HSPREAD 300 -- game/g_main.c-cvar_t *sv_rollspeed; game/g_main.c-cvar_t *sv_rollangle; game/g_main.c-cvar_t *gun_x; game/g_main.c-cvar_t *gun_y; game/g_main.c-cvar_t *gun_z; game/g_main.c- game/g_main.c-cvar_t *run_pitch; game/g_main.c-cvar_t *run_roll; game/g_main.c-cvar_t *bob_up; game/g_main.c-cvar_t *bob_pitch; game/g_main.c-cvar_t *bob_roll; game/g_main.c- game/g_main.c-cvar_t *sv_cheats; game/g_main.c- game/g_main.c-cvar_t *flood_msgs; game/g_main.c-cvar_t *flood_persecond; game/g_main.c-cvar_t *flood_waitdelay; game/g_main.c- game/g_main.c-cvar_t *sv_maplist; game/g_main.c- game/g_main.c:#ifdef SSP_SPAWN_PROTECT game/g_main.c-cvar_t *tune_spawn_prot_time; game/g_main.c-cvar_t *tune_spawn_attack_unprot; game/g_main.c-#endif game/g_main.c:#ifdef SSP_SPAWN_PROTECT_EXTREME_PREJUDICE game/g_main.c-cvar_t *tune_spawn_prot_ratio; game/g_main.c-#endif game/g_main.c:#ifdef SSP_TUNE_SPAWNS game/g_main.c-cvar_t *tune_spawn_power_shield; game/g_main.c-cvar_t *tune_spawn_quad; game/g_main.c-cvar_t *tune_spawn_invulnerability; game/g_main.c-cvar_t *tune_spawn_bfg; game/g_main.c-cvar_t *tune_spawn_remap1; game/g_main.c-cvar_t *tune_spawn_remap2; game/g_main.c-cvar_t *tune_spawn_remap3; game/g_main.c-cvar_t *tune_spawn_remap4; game/g_main.c-cvar_t *tune_spawn_remap5; game/g_main.c-cvar_t *tune_spawn_remap6; game/g_main.c-cvar_t *tune_spawn_remap7; game/g_main.c-cvar_t *tune_spawn_remap8; game/g_main.c-cvar_t *tune_spawn_remap9; game/g_main.c-#endif game/g_main.c- game/g_main.c- game/g_main.c-void SpawnEntities (const char *mapname, const char *entities, const char *spawnpoint); game/g_main.c-void ClientThink (edict_t *ent, usercmd_t *cmd); game/g_main.c-qboolean ClientConnect (edict_t *ent, char *userinfo); game/g_main.c-void ClientUserinfoChanged (edict_t *ent, char *userinfo); -- game/g_save.c- password = gi.cvar ("password", "", CVAR_USERINFO); game/g_save.c- spectator_password = gi.cvar ("spectator_password", "", CVAR_USERINFO); game/g_save.c- filterban = gi.cvar ("filterban", "1", 0); game/g_save.c- game/g_save.c- g_select_empty = gi.cvar ("g_select_empty", "0", CVAR_ARCHIVE); game/g_save.c- game/g_save.c- run_pitch = gi.cvar ("run_pitch", "0.002", 0); game/g_save.c- run_roll = gi.cvar ("run_roll", "0.005", 0); game/g_save.c- bob_up = gi.cvar ("bob_up", "0.005", 0); game/g_save.c- bob_pitch = gi.cvar ("bob_pitch", "0.002", 0); game/g_save.c- bob_roll = gi.cvar ("bob_roll", "0.002", 0); game/g_save.c- game/g_save.c- // flood control game/g_save.c- flood_msgs = gi.cvar ("flood_msgs", "4", 0); game/g_save.c- flood_persecond = gi.cvar ("flood_persecond", "4", 0); game/g_save.c- flood_waitdelay = gi.cvar ("flood_waitdelay", "10", 0); game/g_save.c- game/g_save.c- // dm map list game/g_save.c- sv_maplist = gi.cvar ("sv_maplist", "", 0); game/g_save.c- game/g_save.c:#ifdef SSP_SPAWN_PROTECT game/g_save.c- tune_spawn_prot_time = gi.cvar ("tune_spawn_prot_time", "2.0", 0); game/g_save.c- tune_spawn_attack_unprot = gi.cvar ("tune_spawn_attack_unprot", "1", 0); game/g_save.c-#endif game/g_save.c:#ifdef SSP_SPAWN_PROTECT_EXTREME_PREJUDICE game/g_save.c- tune_spawn_prot_ratio = gi.cvar ("tune_spawn_prot_ratio", "0.75", 0); game/g_save.c-#endif game/g_save.c:#ifdef SSP_TUNE_SPAWNS game/g_save.c- tune_spawn_power_shield = gi.cvar ("tune_spawn_power_shield", "item_power_shield", 0); game/g_save.c- tune_spawn_quad = gi.cvar ("tune_spawn_quad", "item_quad", 0); game/g_save.c- tune_spawn_invulnerability = gi.cvar ("tune_spawn_invulnerability", "item_invulnerability", 0); game/g_save.c- tune_spawn_bfg = gi.cvar ("tune_spawn_bfg", "weapon_bfg", 0); game/g_save.c- tune_spawn_remap1 = gi.cvar ("tune_spawn_remap1", "null", 0); game/g_save.c- tune_spawn_remap2 = gi.cvar ("tune_spawn_remap2", "null", 0); game/g_save.c- tune_spawn_remap3 = gi.cvar ("tune_spawn_remap3", "null", 0); game/g_save.c- tune_spawn_remap4 = gi.cvar ("tune_spawn_remap4", "null", 0); game/g_save.c- tune_spawn_remap5 = gi.cvar ("tune_spawn_remap5", "null", 0); game/g_save.c- tune_spawn_remap6 = gi.cvar ("tune_spawn_remap6", "null", 0); game/g_save.c- tune_spawn_remap7 = gi.cvar ("tune_spawn_remap7", "null", 0); game/g_save.c- tune_spawn_remap8 = gi.cvar ("tune_spawn_remap8", "null", 0); game/g_save.c- tune_spawn_remap9 = gi.cvar ("tune_spawn_remap9", "null", 0); game/g_save.c-#endif game/g_save.c- game/g_save.c- // items game/g_save.c- InitItems (); game/g_save.c- game/g_save.c- game.helpmessage1[0] = game.helpmessage2[0] = 0; game/g_save.c- -- game/g_spawn.c- { game/g_spawn.c- if (!item->classname) game/g_spawn.c- continue; game/g_spawn.c- if (!strcmp(item->classname, ent->classname)) game/g_spawn.c- { // found it game/g_spawn.c- SpawnItem (ent, item); game/g_spawn.c- return; game/g_spawn.c- } game/g_spawn.c- } game/g_spawn.c- game/g_spawn.c- // check normal spawn functions game/g_spawn.c- for (s=spawns ; s->name ; s++) game/g_spawn.c- { game/g_spawn.c- if (!strcmp(s->name, ent->classname)) game/g_spawn.c- { // found it game/g_spawn.c- s->spawn (ent); game/g_spawn.c- return; game/g_spawn.c- } game/g_spawn.c- } game/g_spawn.c- game/g_spawn.c:#ifdef SSP_TUNE_SPAWNS game/g_spawn.c- if (Q_stricmp(ent->classname, "null") != 0) game/g_spawn.c-#endif game/g_spawn.c- { game/g_spawn.c- gi.dprintf ("%s doesn't have a spawn function\n", ent->classname); game/g_spawn.c- } game/g_spawn.c-} game/g_spawn.c- game/g_spawn.c-/* game/g_spawn.c-============= game/g_spawn.c-ED_NewString game/g_spawn.c-============= game/g_spawn.c-*/ game/g_spawn.c-char *ED_NewString (const char *string) game/g_spawn.c-{ game/g_spawn.c- char *newb, *new_p; game/g_spawn.c- int i,l; game/g_spawn.c- game/g_spawn.c- l = strlen(string) + 1; game/g_spawn.c- game/g_spawn.c- newb = gi.TagMalloc (l, TAG_LEVEL); -- game/g_spawn.c-*/ game/g_spawn.c-void ED_ParseField (const char *key, const char *value, edict_t *ent) game/g_spawn.c-{ game/g_spawn.c- field_t *f; game/g_spawn.c- byte *b; game/g_spawn.c- float v; game/g_spawn.c- vec3_t vec; game/g_spawn.c- game/g_spawn.c- for (f=fields ; f->name ; f++) game/g_spawn.c- { game/g_spawn.c- if (!(f->flags & FFL_NOSPAWN) && !Q_stricmp(f->name, key)) game/g_spawn.c- { // found it game/g_spawn.c- if (f->flags & FFL_SPAWNTEMP) game/g_spawn.c- b = (byte *)&st; game/g_spawn.c- else game/g_spawn.c- b = (byte *)ent; game/g_spawn.c- game/g_spawn.c- switch (f->type) game/g_spawn.c- { game/g_spawn.c- case F_LSTRING: game/g_spawn.c:#ifdef SSP_TUNE_SPAWNS game/g_spawn.c- if (!Q_stricmp(key, "classname")) game/g_spawn.c- value = ssp_tune_spawn(value); game/g_spawn.c-#endif game/g_spawn.c- *(char **)(b+f->ofs) = ED_NewString (value); game/g_spawn.c- break; game/g_spawn.c- case F_VECTOR: game/g_spawn.c- sscanf (value, "%f %f %f", &vec[0], &vec[1], &vec[2]); game/g_spawn.c- ((float *)(b+f->ofs))[0] = vec[0]; game/g_spawn.c- ((float *)(b+f->ofs))[1] = vec[1]; game/g_spawn.c- ((float *)(b+f->ofs))[2] = vec[2]; game/g_spawn.c- break; game/g_spawn.c- case F_INT: game/g_spawn.c- *(int *)(b+f->ofs) = atoi(value); game/g_spawn.c- break; game/g_spawn.c- case F_FLOAT: game/g_spawn.c- *(float *)(b+f->ofs) = atof(value); game/g_spawn.c- break; game/g_spawn.c- case F_ANGLEHACK: game/g_spawn.c- v = atof(value); game/g_spawn.c- ((float *)(b+f->ofs))[0] = 0; -- game/g_utils.c-Kill box game/g_utils.c- game/g_utils.c-============================================================================== game/g_utils.c-*/ game/g_utils.c- game/g_utils.c-/* game/g_utils.c-================= game/g_utils.c-KillBox game/g_utils.c- game/g_utils.c-Kills all entities that would touch the proposed new positioning game/g_utils.c-of ent. Ent should be unlinked before calling this! game/g_utils.c-================= game/g_utils.c-*/ game/g_utils.c-qboolean KillBox (edict_t *ent) game/g_utils.c-{ game/g_utils.c- trace_t tr; game/g_utils.c- game/g_utils.c- while (1) game/g_utils.c- { game/g_utils.c- game/g_utils.c:#ifdef SSP_SIAMESE_SPAWN_FIX game/g_utils.c- // band-aid for maps without spawn pads game/g_utils.c- tr = gi.trace (ent->s.origin, ent->mins, ent->maxs, ent->s.origin, NULL, CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER); game/g_utils.c-#else game/g_utils.c- tr = gi.trace (ent->s.origin, ent->mins, ent->maxs, ent->s.origin, NULL, MASK_PLAYERSOLID); game/g_utils.c-#endif game/g_utils.c- game/g_utils.c- if (!tr.ent) game/g_utils.c- break; game/g_utils.c- game/g_utils.c- // nail it game/g_utils.c- T_Damage (tr.ent, ent, ent, vec3_origin, ent->s.origin, vec3_origin, 100000, 0, DAMAGE_NO_PROTECTION, MOD_TELEFRAG); game/g_utils.c- game/g_utils.c- // if we didn't kill it, fail game/g_utils.c- if (tr.ent->solid) game/g_utils.c- return false; game/g_utils.c- } game/g_utils.c- game/g_utils.c- return true; // all clear game/g_utils.c-} game/g_utils.c- game/g_utils.c- game/g_utils.c-// *************************************************************************** game/g_utils.c-// %%SSP SECURE_SERVER_PROJECT helper funcs game/g_utils.c- game/g_utils.c:#ifdef SSP_SPAWN_PROTECT game/g_utils.c- game/g_utils.c-static float ssp_get_spawn_protect_time () game/g_utils.c-{ game/g_utils.c- return tune_spawn_prot_time->value; game/g_utils.c-} game/g_utils.c- game/g_utils.c-void ssp_bestow_spawn_protection (edict_t *ent) game/g_utils.c-{ game/g_utils.c- float prot_time; game/g_utils.c- game/g_utils.c- if (!ent->client) game/g_utils.c- return; game/g_utils.c- game/g_utils.c- prot_time = ssp_get_spawn_protect_time(); game/g_utils.c- if (ent->client->invincible_framenum > level.framenum) game/g_utils.c- ent->client->invincible_framenum += prot_time * 10; game/g_utils.c- else game/g_utils.c- ent->client->invincible_framenum = level.framenum + (prot_time * 10); game/g_utils.c-} game/g_utils.c- -- game/g_utils.c- return false; game/g_utils.c- game/g_utils.c- return (ent->client->invincible_framenum > level.framenum) && game/g_utils.c- ((ent->client->respawn_time + prot_time) > level.time); game/g_utils.c-} game/g_utils.c- game/g_utils.c-qboolean ssp_client_is_spawn_protected (edict_t *ent) game/g_utils.c-{ game/g_utils.c- float prot_time = ssp_get_spawn_protect_time(); game/g_utils.c- return ssp_client_is_spawn_protected_with_dur(ent, prot_time); game/g_utils.c-} game/g_utils.c- game/g_utils.c-void ssp_set_client_spawn_protect_effect (edict_t *ent) game/g_utils.c-{ game/g_utils.c- ent->s.effects |= EF_COLOR_SHELL; game/g_utils.c- ent->s.renderfx |= (RF_SHELL_RED | RF_SHELL_GREEN); // YELLOW game/g_utils.c-} game/g_utils.c- game/g_utils.c-#endif game/g_utils.c- game/g_utils.c:#ifdef SSP_SPAWN_PROTECT_EXTREME_PREJUDICE game/g_utils.c- game/g_utils.c-static float ssp_get_extreme_spawn_protect_ratio () game/g_utils.c-{ game/g_utils.c- return tune_spawn_prot_ratio->value; game/g_utils.c-} game/g_utils.c- game/g_utils.c-qboolean ssp_client_is_extreme_spawn_protected (edict_t *ent) game/g_utils.c-{ game/g_utils.c- float prot_time = ssp_get_spawn_protect_time(); game/g_utils.c- float xprot_ratio = ssp_get_extreme_spawn_protect_ratio(); game/g_utils.c- return ssp_client_is_spawn_protected_with_dur(ent, prot_time * xprot_ratio); game/g_utils.c-} game/g_utils.c- game/g_utils.c-#endif game/g_utils.c- game/g_utils.c:#ifdef SSP_TUNE_SPAWNS game/g_utils.c- game/g_utils.c-static char * ssp_remap_spawn (char * item_classname, cvar_t * remap_cvar) game/g_utils.c-{ game/g_utils.c- // HORRID STATIC BUF ALERT! game/g_utils.c- // We depend on the return value from this function being game/g_utils.c- // copied off to an allocated string immediately. game/g_utils.c- static char buf[MAX_TOKEN_CHARS + 1]; game/g_utils.c- game/g_utils.c- char *name_from, *name_to; game/g_utils.c- game/g_utils.c- if (!Q_stricmp(remap_cvar->string, "null")) game/g_utils.c- return NULL; game/g_utils.c- if (strlen(remap_cvar->string) > MAX_TOKEN_CHARS) game/g_utils.c- return NULL; game/g_utils.c- game/g_utils.c- strcpy(buf, remap_cvar->string); game/g_utils.c- name_from = &buf[0]; game/g_utils.c- { game/g_utils.c- char *cp = &buf[0]; game/g_utils.c- char ch; -- game/p_client.c- case MOD_HG_SPLASH: game/p_client.c- case MOD_G_SPLASH: game/p_client.c- if (IsNeutral(self)) game/p_client.c- message = "tripped on its own grenade"; game/p_client.c- else if (IsFemale(self)) game/p_client.c- message = "tripped on her own grenade"; game/p_client.c- else game/p_client.c- message = "tripped on his own grenade"; game/p_client.c- break; game/p_client.c- case MOD_R_SPLASH: game/p_client.c- if (IsNeutral(self)) game/p_client.c- message = "blew itself up"; game/p_client.c- else if (IsFemale(self)) game/p_client.c- message = "blew herself up"; game/p_client.c- else game/p_client.c- message = "blew himself up"; game/p_client.c- break; game/p_client.c- case MOD_BFG_BLAST: game/p_client.c- message = "should have used a smaller gun"; game/p_client.c- break; game/p_client.c:#ifdef SSP_SPAWN_PROTECT_EXTREME_PREJUDICE game/p_client.c- case MOD_FAILED_SPAWN_CAMP: game/p_client.c- message = "tried to spawn camp and had a slight problem"; game/p_client.c- break; game/p_client.c-#endif game/p_client.c- default: game/p_client.c- if (IsNeutral(self)) game/p_client.c- message = "killed itself"; game/p_client.c- else if (IsFemale(self)) game/p_client.c- message = "killed herself"; game/p_client.c- else game/p_client.c- message = "killed himself"; game/p_client.c- break; game/p_client.c- } game/p_client.c- } game/p_client.c- if (message) game/p_client.c- { game/p_client.c- gi.bprintf (PRINT_MEDIUM, "%s %s.\n", self->client->pers.netname, message); game/p_client.c- if (deathmatch->value) game/p_client.c- self->client->resp.score--; game/p_client.c- self->enemy = NULL; -- game/p_client.c- // reset his spectator var game/p_client.c- gi.WriteByte (svc_stufftext); game/p_client.c- gi.WriteString ("spectator 0\n"); game/p_client.c- gi.unicast(ent, true); game/p_client.c- return; game/p_client.c- } game/p_client.c- } else { game/p_client.c- // he was a spectator and wants to join the game game/p_client.c- // he must have the right password game/p_client.c- char *value = Info_ValueForKey (ent->client->pers.userinfo, "password"); game/p_client.c- if (*password->string && strcmp(password->string, "none") && game/p_client.c- strcmp(password->string, value)) { game/p_client.c- gi.cprintf(ent, PRINT_HIGH, "Password incorrect.\n"); game/p_client.c- ent->client->pers.spectator = true; game/p_client.c- gi.WriteByte (svc_stufftext); game/p_client.c- gi.WriteString ("spectator 1\n"); game/p_client.c- gi.unicast(ent, true); game/p_client.c- return; game/p_client.c- } game/p_client.c- game/p_client.c:#ifdef SSP_RESET_ENTERFRAME_LEAVING_SPEC game/p_client.c- ent->client->resp.enterframe = level.framenum; game/p_client.c-#endif game/p_client.c- } game/p_client.c- game/p_client.c- // clear score on respawn game/p_client.c- ent->client->pers.score = ent->client->resp.score = 0; game/p_client.c- game/p_client.c- ent->svflags &= ~SVF_NOCLIENT; game/p_client.c- PutClientInServer (ent); game/p_client.c- game/p_client.c- // add a teleportation effect game/p_client.c- if (!ent->client->pers.spectator) { game/p_client.c- // send effect game/p_client.c- gi.WriteByte (svc_muzzleflash); game/p_client.c- gi.WriteShort (ent-g_edicts); game/p_client.c- gi.WriteByte (MZ_LOGIN); game/p_client.c- gi.multicast (ent->s.origin, MULTICAST_PVS); game/p_client.c- game/p_client.c- // hold in place briefly game/p_client.c- ent->client->ps.pmove.pm_flags = PMF_TIME_TELEPORT; -- game/p_client.c- game/p_client.c- // spawn a spectator game/p_client.c- if (client->pers.spectator) { game/p_client.c- client->chase_target = NULL; game/p_client.c- game/p_client.c- client->resp.spectator = true; game/p_client.c- game/p_client.c- ent->movetype = MOVETYPE_NOCLIP; game/p_client.c- ent->solid = SOLID_NOT; game/p_client.c- ent->svflags |= SVF_NOCLIENT; game/p_client.c- ent->client->ps.gunindex = 0; game/p_client.c- gi.linkentity (ent); game/p_client.c- return; game/p_client.c- } else game/p_client.c- client->resp.spectator = false; game/p_client.c- game/p_client.c- if (!KillBox (ent)) game/p_client.c- { // could't spawn in? game/p_client.c- } game/p_client.c- game/p_client.c:#ifdef SSP_SPAWN_PROTECT game/p_client.c- client->respawn_time = level.time; game/p_client.c- ssp_bestow_spawn_protection(ent); game/p_client.c-#endif game/p_client.c- game/p_client.c- gi.linkentity (ent); game/p_client.c- game/p_client.c- // force the current weapon up game/p_client.c- client->newweapon = client->pers.weapon; game/p_client.c- ChangeWeapon (ent); game/p_client.c-} game/p_client.c- game/p_client.c-/* game/p_client.c-===================== game/p_client.c-ClientBeginDeathmatch game/p_client.c- game/p_client.c-A client has just connected to the server in game/p_client.c-deathmatch mode, so clear everything out before starting them. game/p_client.c-===================== game/p_client.c-*/ game/p_client.c-void ClientBeginDeathmatch (edict_t *ent) -- game/p_client.c- game/p_client.c- // save light level the player is standing on for game/p_client.c- // monster sighting AI game/p_client.c- ent->light_level = ucmd->lightlevel; game/p_client.c- game/p_client.c- // fire weapon from final position if needed game/p_client.c- if (client->latched_buttons & BUTTON_ATTACK) game/p_client.c- { game/p_client.c- if (client->resp.spectator) { game/p_client.c- game/p_client.c- client->latched_buttons = 0; game/p_client.c- game/p_client.c- if (client->chase_target) { game/p_client.c- client->chase_target = NULL; game/p_client.c- client->ps.pmove.pm_flags &= ~PMF_NO_PREDICTION; game/p_client.c- } else game/p_client.c- GetChaseTarget(ent); game/p_client.c- game/p_client.c- } else if (!client->weapon_thunk) { game/p_client.c- game/p_client.c:#ifdef SSP_SPAWN_PROTECT game/p_client.c- // if player decided to fire, and can do so, spawn prot cancelled game/p_client.c- if (ent->health > 0 && client->weaponstate == WEAPON_READY) { game/p_client.c- ssp_cancel_spawn_protection(ent); game/p_client.c- } game/p_client.c-#endif game/p_client.c- game/p_client.c- client->weapon_thunk = true; game/p_client.c- Think_Weapon (ent); game/p_client.c- } game/p_client.c- } game/p_client.c- game/p_client.c- if (client->resp.spectator) { game/p_client.c- if (ucmd->upmove >= 10) { game/p_client.c- if (!(client->ps.pmove.pm_flags & PMF_JUMP_HELD)) { game/p_client.c- client->ps.pmove.pm_flags |= PMF_JUMP_HELD; game/p_client.c- if (client->chase_target) game/p_client.c- ChaseNext(ent); game/p_client.c- else game/p_client.c- GetChaseTarget(ent); game/p_client.c- } -- game/p_hud.c- ent->viewheight = 0; game/p_hud.c- ent->s.modelindex = 0; game/p_hud.c- ent->s.modelindex2 = 0; game/p_hud.c- ent->s.modelindex3 = 0; game/p_hud.c- ent->s.modelindex = 0; game/p_hud.c- ent->s.effects = 0; game/p_hud.c- ent->s.sound = 0; game/p_hud.c- ent->solid = SOLID_NOT; game/p_hud.c- game/p_hud.c- // add the layout game/p_hud.c- game/p_hud.c- if (deathmatch->value || coop->value) game/p_hud.c- { game/p_hud.c- DeathmatchScoreboardMessage (ent, NULL); game/p_hud.c- gi.unicast (ent, true); game/p_hud.c- } game/p_hud.c- game/p_hud.c-} game/p_hud.c- game/p_hud.c- game/p_hud.c:#ifdef SSP_DUMP_HIGHSCORES_TO_CLIENT_CONSOLES game/p_hud.c-void DumpHighScoreSummary () game/p_hud.c-{ game/p_hud.c- const int MAX_PLAYERS_TO_SHOW = 5; game/p_hud.c- const int FRAMES_PER_MIN = 600; game/p_hud.c- const int FRAMES_PER_HOUR = FRAMES_PER_MIN * 60; game/p_hud.c- game/p_hud.c- float cur_elapsed_frames; game/p_hud.c- float cur_fph; game/p_hud.c- int i, j, k; game/p_hud.c- int sorted[MAX_CLIENTS]; game/p_hud.c- float sorted_fph[MAX_CLIENTS]; game/p_hud.c- int total; game/p_hud.c- gclient_t *cl; game/p_hud.c- edict_t *cl_ent; game/p_hud.c- game/p_hud.c- // sort the clients by score game/p_hud.c- total = 0; game/p_hud.c- for (i = 0; i < game.maxclients; i++) { game/p_hud.c- cl_ent = g_edicts + 1 + i; game/p_hud.c- if (!cl_ent->inuse || game.clients[i].resp.spectator) -- game/p_hud.c- while (i--) game/p_hud.c- { game/p_hud.c- ent = G_Find (ent, FOFS(classname), "info_player_intermission"); game/p_hud.c- if (!ent) // wrap around the list game/p_hud.c- ent = G_Find (ent, FOFS(classname), "info_player_intermission"); game/p_hud.c- } game/p_hud.c- } game/p_hud.c- game/p_hud.c- VectorCopy (ent->s.origin, level.intermission_origin); game/p_hud.c- VectorCopy (ent->s.angles, level.intermission_angle); game/p_hud.c- game/p_hud.c- // move all clients to the intermission point game/p_hud.c- for (i=0 ; ivalue ; i++) game/p_hud.c- { game/p_hud.c- client = g_edicts + 1 + i; game/p_hud.c- if (!client->inuse) game/p_hud.c- continue; game/p_hud.c- MoveClientToIntermission (client); game/p_hud.c- } game/p_hud.c- game/p_hud.c:#ifdef SSP_DUMP_HIGHSCORES_TO_CLIENT_CONSOLES game/p_hud.c- DumpHighScoreSummary(); game/p_hud.c-#endif game/p_hud.c-} game/p_hud.c- game/p_hud.c- game/p_hud.c-/* game/p_hud.c-================== game/p_hud.c-DeathmatchScoreboardMessage game/p_hud.c- game/p_hud.c-================== game/p_hud.c-*/ game/p_hud.c-void DeathmatchScoreboardMessage (edict_t *ent, edict_t *killer) game/p_hud.c-{ game/p_hud.c- char entry[1024]; game/p_hud.c- char string[1400]; game/p_hud.c- int stringlength; game/p_hud.c- int i, j, k; game/p_hud.c- int sorted[MAX_CLIENTS]; game/p_hud.c- int sortedscores[MAX_CLIENTS]; game/p_hud.c- int score, total; -- game/p_view.c- { game/p_view.c- pa_type = PowerArmorType (ent); game/p_view.c- if (pa_type == POWER_ARMOR_SCREEN) game/p_view.c- { game/p_view.c- ent->s.effects |= EF_POWERSCREEN; game/p_view.c- } game/p_view.c- else if (pa_type == POWER_ARMOR_SHIELD) game/p_view.c- { game/p_view.c- ent->s.effects |= EF_COLOR_SHELL; game/p_view.c- ent->s.renderfx |= RF_SHELL_GREEN; game/p_view.c- } game/p_view.c- } game/p_view.c- game/p_view.c- if (ent->client->quad_framenum > level.framenum) game/p_view.c- { game/p_view.c- remaining = ent->client->quad_framenum - level.framenum; game/p_view.c- if (remaining > 30 || (remaining & 4) ) game/p_view.c- ent->s.effects |= EF_QUAD; game/p_view.c- } game/p_view.c- game/p_view.c:#ifdef SSP_SPAWN_PROTECT game/p_view.c- if (ssp_client_is_spawn_protected(ent)) { game/p_view.c- ssp_set_client_spawn_protect_effect(ent); game/p_view.c- } game/p_view.c- else game/p_view.c-#endif game/p_view.c- { game/p_view.c- if (ent->client->invincible_framenum > level.framenum) game/p_view.c- { game/p_view.c- remaining = ent->client->invincible_framenum - level.framenum; game/p_view.c- if (remaining > 30 || (remaining & 4) ) game/p_view.c- ent->s.effects |= EF_PENT; game/p_view.c- } game/p_view.c- } game/p_view.c- game/p_view.c- // show cheaters!!! game/p_view.c- if (ent->flags & FL_GODMODE) game/p_view.c- { game/p_view.c- ent->s.effects |= EF_COLOR_SHELL; game/p_view.c- ent->s.renderfx |= (RF_SHELL_RED|RF_SHELL_GREEN|RF_SHELL_BLUE); game/p_view.c- } -- ssp/ssp_flags.h-// License: GPL ssp/ssp_flags.h- ssp/ssp_flags.h:#ifndef __SSP_FLAGS_H__ ssp/ssp_flags.h:#define __SSP_FLAGS_H__ ssp/ssp_flags.h- ssp/ssp_flags.h-/* ssp/ssp_flags.h- Most changes can be enabled independently at your discretion, ssp/ssp_flags.h: by defining or undefining the SSP_ flags below. ssp/ssp_flags.h- ssp/ssp_flags.h- The following changes are always enabled and do not have ssp/ssp_flags.h: accompanying SSP_ flags (but you can search for them in comments.) ssp/ssp_flags.h- ssp/ssp_flags.h: - SSP_RCON_EXPLOIT_FIX [-NOW HANDLED BY R1Q2-] ssp/ssp_flags.h- In sv_user.c/SV_ExecuteUserCommand(), passes false instead ssp/ssp_flags.h- of true to Cmd_TokenizeString() so that user commands are ssp/ssp_flags.h- not macro-expanded. ssp/ssp_flags.h- NOTE: As of V0.0.3 this is now handled by R1Q2. ssp/ssp_flags.h- ssp/ssp_flags.h: - SSP_NO_KILL_IN_SPEC ssp/ssp_flags.h- In g_cmds.c/Cmd_Kill_f(), we take no action if client is ssp/ssp_flags.h- a spectator. THIS IS A BAND-AID FIX. There seems to be ssp/ssp_flags.h- a bug where the server may crash if a player hangs out dead ssp/ssp_flags.h- in spectator for an indeterminite time. It would be ssp/ssp_flags.h- preferable to find the underlying crash bug. ssp/ssp_flags.h-*/ ssp/ssp_flags.h- ssp/ssp_flags.h:#define SSP_SPAWN_PROTECT ssp/ssp_flags.h-////// ssp/ssp_flags.h- // Yellow temporary invincibilty on spawn. ssp/ssp_flags.h- // cvars: "tune_spawn_prot_time" (float) ssp/ssp_flags.h- // Number of seconds spawn protect lasts. ssp/ssp_flags.h- // "tune_spawn_attack_unprot" (boolean) ssp/ssp_flags.h- // If true, player pressing attack button ssp/ssp_flags.h- // cancels extant spawn protection. ssp/ssp_flags.h- ssp/ssp_flags.h:#define SSP_SPAWN_PROTECT_EXTREME_PREJUDICE ssp/ssp_flags.h-////// ssp/ssp_flags.h- // You done gone hit yellow spawner with rail ssp/ssp_flags.h- // and got blowed up, Bubba ! ssp/ssp_flags.h- // cvars: "tune_spawn_prot_ratio" (float) ssp/ssp_flags.h- // Defines how much of the inital spawn_protect_time ssp/ssp_flags.h- // is deadly if railed. ssp/ssp_flags.h- ssp/ssp_flags.h:#if defined(SSP_SPAWN_PROTECT_EXTREME_PREJUDICE) && !defined(SSP_SPAWN_PROTECT) ssp/ssp_flags.h:#error SSP_SPAWN_PROTECT_EXTREME_PREJUDICE requires SSP_SPAWN_PROTECT ssp/ssp_flags.h-#endif ssp/ssp_flags.h- ssp/ssp_flags.h- ssp/ssp_flags.h:#define SSP_SIAMESE_SPAWN_FIX ssp/ssp_flags.h-////// ssp/ssp_flags.h- // On some maps, players spawn on top of each other ssp/ssp_flags.h- // without telefragging. Typically these are maps that ssp/ssp_flags.h- // don't use spawn pads, but spawn the player right on ssp/ssp_flags.h- // the floor. For whatever reason, trace() sees these ssp/ssp_flags.h- // players as embedded in a solid. Presumably the spawn ssp/ssp_flags.h- // points are slightly underground, but not enough to ssp/ssp_flags.h- // keep the player from moving? Without delving too ssp/ssp_flags.h- // deeply into this, this fix just tweaks g_utils.c/KillBox() ssp/ssp_flags.h- // to ignore CONTENTS_SOLID in its trace. Seems to work. ssp/ssp_flags.h- // Would be preferable to understand the true cause of ssp/ssp_flags.h- // the problem. ssp/ssp_flags.h- ssp/ssp_flags.h- ssp/ssp_flags.h:#define SSP_RESET_ENTERFRAME_LEAVING_SPEC ssp/ssp_flags.h-////// ssp/ssp_flags.h- // Reset connect time to zero when player rejoins game ssp/ssp_flags.h- // coming out of spectator. ssp/ssp_flags.h- ssp/ssp_flags.h- ssp/ssp_flags.h:#define SSP_TUNE_SPAWNS ssp/ssp_flags.h-////// ssp/ssp_flags.h- // Allows certain item spawns to be suppressed, or replaced ssp/ssp_flags.h- // with alternate items: ssp/ssp_flags.h- // tune_spawn_power_shield "itemname" or "null" ssp/ssp_flags.h- // tune_spawn_quad ssp/ssp_flags.h- // tune_spawn_invulnerability ssp/ssp_flags.h- // tune_spawn_bfg ssp/ssp_flags.h- // ssp/ssp_flags.h- // Allows generic remap from item, to item: ssp/ssp_flags.h- // tune_spawn_remap1 "itemname_from,itemname_to" or "null" ssp/ssp_flags.h- // tune_spawn_remap2 ssp/ssp_flags.h- // tune_spawn_remap3 ssp/ssp_flags.h- // ... ssp/ssp_flags.h- // tune_spawn_remap9 ssp/ssp_flags.h- ssp/ssp_flags.h- ssp/ssp_flags.h:#define SSP_DUMP_HIGHSCORES_TO_CLIENT_CONSOLES ssp/ssp_flags.h-////// ssp/ssp_flags.h- // At end of map (via BeginIntermission() in p_hud.c) ssp/ssp_flags.h- // prints a high score summary of the top N scoring players, ssp/ssp_flags.h- // and stats like frags-per-hour. ssp/ssp_flags.h- // This patch submitted by Chattanoo. ssp/ssp_flags.h- ssp/ssp_flags.h- ssp/ssp_flags.h-// Wish list: ssp/ssp_flags.h:// SSP_SSL_SECURE_RCON ssp/ssp_flags.h:// SSP_MAPNAME_DOT_BSP_CRASH_FIX ssp/ssp_flags.h:// SSP_SSL_MESSAGE_PORT ssp/ssp_flags.h:// SSP_TUNE_DISALLOW_CR_IN_CHAT ssp/ssp_flags.h:// SSP_TUNE_CVAR_WEAP_FIRE_RATE ssp/ssp_flags.h:// SSP_TUNE_CVAR_WEAP_RELOAD_RATE ssp/ssp_flags.h:// SSP_TUNE_CVAR_STARTING_HEALTH ssp/ssp_flags.h:// SSP_TUNE_CVAR_STARTING_AMMO (mg50 rkt10 whatever...) ssp/ssp_flags.h:// SSP_TUNE_CVAR_STARTING_WEAPS (or maybe just general starting_items) ssp/ssp_flags.h- ssp/ssp_flags.h- ssp/ssp_flags.h- ssp/ssp_flags.h- ssp/ssp_flags.h-/***************************************************************************** ssp/ssp_flags.h- ***************************************************************************** ssp/ssp_flags.h- ***************************************************************************** ssp/ssp_flags.h- HISTORY ssp/ssp_flags.h- ssp/ssp_flags.h- New in V0.0.3 ssp/ssp_flags.h: - Merged SSP with R1Q2! (SSP_RCON_EXPLOIT_FIX is now handled ssp/ssp_flags.h- by R1Q2.) ssp/ssp_flags.h- ssp/ssp_flags.h- New in V0.0.2 ssp/ssp_flags.h- - Improved consistency of addip/removeip usage and feedback messages ssp/ssp_flags.h- in g_svcmds.c (both ctf and game.) Submitted by Karen Pouelle. ssp/ssp_flags.h- ssp/ssp_flags.h- New in V0.0.1 ssp/ssp_flags.h: SSP_RCON_EXPLOIT_FIX ssp/ssp_flags.h: SSP_NO_KILL_IN_SPEC ssp/ssp_flags.h: SSP_SPAWN_PROTECT ssp/ssp_flags.h: SSP_SPAWN_PROTECT_EXTREME_PREJUDICE ssp/ssp_flags.h: SSP_SIAMESE_SPAWN_FIX ssp/ssp_flags.h: SSP_RESET_ENTERFRAME_LEAVING_SPEC ssp/ssp_flags.h: SSP_TUNE_SPAWNS ssp/ssp_flags.h: SSP_DUMP_HIGHSCORES_TO_CLIENT_CONSOLES ssp/ssp_flags.h- ssp/ssp_flags.h- ***************************************************************************** ssp/ssp_flags.h- ***************************************************************************** ssp/ssp_flags.h- *****************************************************************************/ ssp/ssp_flags.h- ssp/ssp_flags.h- ssp/ssp_flags.h:#endif // __SSP_FLAGS_H__ ssp/ssp_flags.h-