mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2025-01-23 01:50:41 +00:00
New code for respawning entities in TP
This commit is contained in:
parent
24e4462a72
commit
85212005ba
9 changed files with 268 additions and 203 deletions
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.57 2003/09/08 19:19:19 makro
|
||||||
|
// New code for respawning entities in TP
|
||||||
|
//
|
||||||
// Revision 1.56 2003/04/26 22:33:06 jbravo
|
// Revision 1.56 2003/04/26 22:33:06 jbravo
|
||||||
// Wratted all calls to G_FreeEnt() to avoid crashing and provide debugging
|
// Wratted all calls to G_FreeEnt() to avoid crashing and provide debugging
|
||||||
//
|
//
|
||||||
|
@ -778,6 +781,8 @@ gentity_t *LaunchItem(gitem_t * item, vec3_t origin, vec3_t velocity, int xr_fla
|
||||||
dropped->r.contents = CONTENTS_TRIGGER;
|
dropped->r.contents = CONTENTS_TRIGGER;
|
||||||
|
|
||||||
dropped->touch = Touch_Item;
|
dropped->touch = Touch_Item;
|
||||||
|
//Makro - added for TP
|
||||||
|
dropped->reset = G_ResetItem;
|
||||||
|
|
||||||
//Elder: suspend thrown knives so they don't jitter
|
//Elder: suspend thrown knives so they don't jitter
|
||||||
//G_Printf("xr_flags: %d, condition: %d\n", xr_flags, (xr_flags & FL_THROWN_KNIFE) == FL_THROWN_KNIFE);
|
//G_Printf("xr_flags: %d, condition: %d\n", xr_flags, (xr_flags & FL_THROWN_KNIFE) == FL_THROWN_KNIFE);
|
||||||
|
@ -1006,17 +1011,6 @@ void FinishSpawningItem(gentity_t * ent)
|
||||||
ent->think = RespawnItem;
|
ent->think = RespawnItem;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//Makro - for bots and TP
|
|
||||||
if (ent != NULL) {
|
|
||||||
if (ent->item != NULL) {
|
|
||||||
if (ent->item->giType == IT_WEAPON || ent->item->giType == IT_AMMO) {
|
|
||||||
if (g_gametype.integer == GT_TEAMPLAY) {
|
|
||||||
ent->r.svFlags |= MASK_BOTHACK;
|
|
||||||
ent->s.eFlags |= EF_NODRAW;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
trap_RQ3LinkEntity(ent, __LINE__, __FILE__);
|
trap_RQ3LinkEntity(ent, __LINE__, __FILE__);
|
||||||
}
|
}
|
||||||
|
@ -1177,6 +1171,71 @@ int G_ItemDisabled(gitem_t * item)
|
||||||
return trap_Cvar_VariableIntegerValue(name);
|
return trap_Cvar_VariableIntegerValue(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
============
|
||||||
|
G_ResetItem
|
||||||
|
|
||||||
|
Removes unneeded items at the begining
|
||||||
|
of TeamPlay rounds
|
||||||
|
Added by Makro
|
||||||
|
============
|
||||||
|
*/
|
||||||
|
void G_ResetItem(gentity_t *ent)
|
||||||
|
{
|
||||||
|
//Makro - if the item is used for bot navigation, do nothing
|
||||||
|
//if ((ent->r.svFlags & MASK_BOTHACK) == MASK_BOTHACK)
|
||||||
|
// return;
|
||||||
|
//if not, simply remove it from the map
|
||||||
|
if (ent->item->giType == IT_WEAPON) {
|
||||||
|
switch (ent->item->giTag) {
|
||||||
|
case WP_MP5:
|
||||||
|
case WP_M4:
|
||||||
|
case WP_M3:
|
||||||
|
case WP_HANDCANNON:
|
||||||
|
case WP_SSG3000:
|
||||||
|
case WP_PISTOL:
|
||||||
|
case WP_KNIFE:
|
||||||
|
case WP_GRENADE:
|
||||||
|
G_FreeEntity(ent, __LINE__, __FILE__);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (ent->item->giType == IT_HOLDABLE) {
|
||||||
|
switch (ent->item->giTag) {
|
||||||
|
case HI_KEVLAR:
|
||||||
|
case HI_LASER:
|
||||||
|
case HI_SILENCER:
|
||||||
|
case HI_BANDOLIER:
|
||||||
|
case HI_SLIPPERS:
|
||||||
|
case HI_HELMET:
|
||||||
|
G_FreeEntity(ent, __LINE__, __FILE__);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (ent->item->giType == IT_AMMO) {
|
||||||
|
G_FreeEntity(ent, __LINE__, __FILE__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Makro - bot hack ! will keep the items in a map in TP mode, but make them
|
||||||
|
//invisible and unusable
|
||||||
|
void G_BotOnlyItem(gentity_t *ent)
|
||||||
|
{
|
||||||
|
if (g_gametype.integer == GT_TEAMPLAY) {
|
||||||
|
if (ent != NULL) {
|
||||||
|
if (ent->item != NULL) {
|
||||||
|
if (ent->item->giType == IT_WEAPON || ent->item->giType == IT_AMMO) {
|
||||||
|
ent->r.svFlags |= MASK_BOTHACK;
|
||||||
|
ent->s.eFlags |= EF_NODRAW;
|
||||||
|
ent->noreset = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
============
|
============
|
||||||
G_SpawnItem
|
G_SpawnItem
|
||||||
|
@ -1204,6 +1263,8 @@ void G_SpawnItem(gentity_t * ent, gitem_t * item)
|
||||||
// spawns until the third frame so they can ride trains
|
// spawns until the third frame so they can ride trains
|
||||||
ent->nextthink = level.time + FRAMETIME * 2;
|
ent->nextthink = level.time + FRAMETIME * 2;
|
||||||
ent->think = FinishSpawningItem;
|
ent->think = FinishSpawningItem;
|
||||||
|
//Makro - respawn function
|
||||||
|
ent->reset = G_ResetItem;
|
||||||
|
|
||||||
ent->physicsBounce = 0.50; // items are bouncy
|
ent->physicsBounce = 0.50; // items are bouncy
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.146 2003/09/08 19:19:19 makro
|
||||||
|
// New code for respawning entities in TP
|
||||||
|
//
|
||||||
// Revision 1.145 2003/09/07 20:02:51 makro
|
// Revision 1.145 2003/09/07 20:02:51 makro
|
||||||
// no message
|
// no message
|
||||||
//
|
//
|
||||||
|
@ -511,6 +514,9 @@ struct gentity_s {
|
||||||
void (*use) (gentity_t * self, gentity_t * other, gentity_t * activator);
|
void (*use) (gentity_t * self, gentity_t * other, gentity_t * activator);
|
||||||
void (*pain) (gentity_t * self, gentity_t * attacker, int damage);
|
void (*pain) (gentity_t * self, gentity_t * attacker, int damage);
|
||||||
void (*die) (gentity_t * self, gentity_t * inflictor, gentity_t * attacker, int damage, int mod);
|
void (*die) (gentity_t * self, gentity_t * inflictor, gentity_t * attacker, int damage, int mod);
|
||||||
|
//Makro - called at the begining of the round in TP
|
||||||
|
void (*reset) (gentity_t *self);
|
||||||
|
qboolean noreset; //Makro - if set to 1, this entity will not respawn in TP
|
||||||
|
|
||||||
int pain_debounce_time;
|
int pain_debounce_time;
|
||||||
int fly_sound_debounce_time; // wind tunnel
|
int fly_sound_debounce_time; // wind tunnel
|
||||||
|
@ -977,6 +983,8 @@ qboolean G_SpawnInt(const char *key, const char *defaultString, int *out);
|
||||||
qboolean G_SpawnVector(const char *key, const char *defaultString, float *out);
|
qboolean G_SpawnVector(const char *key, const char *defaultString, float *out);
|
||||||
void G_SpawnEntitiesFromString(void);
|
void G_SpawnEntitiesFromString(void);
|
||||||
char *G_NewString(const char *string);
|
char *G_NewString(const char *string);
|
||||||
|
//Makro - bot hack
|
||||||
|
void G_BotOnlyItem(gentity_t *ent);
|
||||||
|
|
||||||
//
|
//
|
||||||
// g_cmds.c
|
// g_cmds.c
|
||||||
|
@ -1024,6 +1032,8 @@ int ArmorIndex(gentity_t * ent);
|
||||||
//Elder: added bandolier factor
|
//Elder: added bandolier factor
|
||||||
void Add_Ammo(gentity_t * ent, int weapon, int count, int bandolierfactor);
|
void Add_Ammo(gentity_t * ent, int weapon, int count, int bandolierfactor);
|
||||||
void Touch_Item(gentity_t * ent, gentity_t * other, trace_t * trace);
|
void Touch_Item(gentity_t * ent, gentity_t * other, trace_t * trace);
|
||||||
|
//Makro - added
|
||||||
|
void G_ResetItem(gentity_t *ent);
|
||||||
|
|
||||||
void ClearRegisteredItems(void);
|
void ClearRegisteredItems(void);
|
||||||
void RegisterItem(gitem_t * item);
|
void RegisterItem(gitem_t * item);
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.76 2003/09/08 19:19:19 makro
|
||||||
|
// New code for respawning entities in TP
|
||||||
|
//
|
||||||
// Revision 1.75 2003/09/07 20:02:51 makro
|
// Revision 1.75 2003/09/07 20:02:51 makro
|
||||||
// no message
|
// no message
|
||||||
//
|
//
|
||||||
|
@ -266,7 +269,14 @@ void use_dlight(gentity_t * ent, gentity_t * other, gentity_t * activator)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ent->unbreakable = !ent->unbreakable;
|
ent->unbreakable ^= 1;
|
||||||
|
if (other)
|
||||||
|
if (other->pathtarget)
|
||||||
|
if (!Q_stricmp(other->pathtarget, "off"))
|
||||||
|
ent->unbreakable = 0;
|
||||||
|
else if (!Q_stricmp(other->pathtarget, "on"))
|
||||||
|
ent->unbreakable = 1;
|
||||||
|
|
||||||
if (ent->unbreakable) {
|
if (ent->unbreakable) {
|
||||||
ent->r.svFlags |= SVF_NOCLIENT;
|
ent->r.svFlags |= SVF_NOCLIENT;
|
||||||
ent->s.eFlags |= EF_NODRAW;
|
ent->s.eFlags |= EF_NODRAW;
|
||||||
|
@ -277,6 +287,15 @@ void use_dlight(gentity_t * ent, gentity_t * other, gentity_t * activator)
|
||||||
//G_Printf("\nUsing dlight: %d\n\n", ent->unbreakable);
|
//G_Printf("\nUsing dlight: %d\n\n", ent->unbreakable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void reset_dlight(gentity_t *ent)
|
||||||
|
{
|
||||||
|
ent->unbreakable = 0;
|
||||||
|
if (ent->spawnflags & 8) {
|
||||||
|
ent->unbreakable = 1;
|
||||||
|
ent->use(ent, NULL, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SP_dlight(gentity_t * ent)
|
void SP_dlight(gentity_t * ent)
|
||||||
{
|
{
|
||||||
vec3_t color;
|
vec3_t color;
|
||||||
|
@ -370,11 +389,12 @@ void SP_dlight(gentity_t * ent)
|
||||||
ent->think = Think_SetupTrainTargets;
|
ent->think = Think_SetupTrainTargets;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Makro - added START_OFF flag
|
|
||||||
ent->use = use_dlight;
|
ent->use = use_dlight;
|
||||||
ent->unbreakable = qfalse;
|
ent->reset = reset_dlight;
|
||||||
|
//Makro - added START_OFF flag
|
||||||
|
ent->unbreakable = 0;
|
||||||
if (ent->spawnflags & 8) {
|
if (ent->spawnflags & 8) {
|
||||||
ent->unbreakable = qtrue;
|
ent->unbreakable = 1;
|
||||||
ent->use(ent, NULL, NULL);
|
ent->use(ent, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -823,6 +843,16 @@ Type is the value set in the type key. Texture is any texture(s) referenced by t
|
||||||
If you wish to add a custom breakable to your map, please include your mapname (or perhaps 3 letters of it) in the type name to prevent conflicts (i.e. don't use 'brick', use 'tequila_brick' or just 'teq_brick'). See the breakables folder included in Reaction Quake 3 for the proper format.
|
If you wish to add a custom breakable to your map, please include your mapname (or perhaps 3 letters of it) in the type name to prevent conflicts (i.e. don't use 'brick', use 'tequila_brick' or just 'teq_brick'). See the breakables folder included in Reaction Quake 3 for the proper format.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void reset_breakable(gentity_t *ent)
|
||||||
|
{
|
||||||
|
trap_RQ3LinkEntity(ent, __LINE__, __FILE__);
|
||||||
|
|
||||||
|
ent->exploded = qfalse;
|
||||||
|
ent->takedamage = qtrue;
|
||||||
|
ent->s.eType = ET_BREAKABLE;
|
||||||
|
ent->health = ent->health_saved;
|
||||||
|
}
|
||||||
|
|
||||||
static void InitBreakable_Finish(gentity_t * ent)
|
static void InitBreakable_Finish(gentity_t * ent)
|
||||||
{
|
{
|
||||||
char info[MAX_INFO_STRING];
|
char info[MAX_INFO_STRING];
|
||||||
|
@ -969,6 +999,9 @@ void SP_func_breakable(gentity_t * ent)
|
||||||
// Let it know it is a breakable object
|
// Let it know it is a breakable object
|
||||||
ent->s.eType = ET_BREAKABLE;
|
ent->s.eType = ET_BREAKABLE;
|
||||||
|
|
||||||
|
//Makro - reset function
|
||||||
|
ent->reset = reset_breakable;
|
||||||
|
|
||||||
// If the mapper gave it a model, use it
|
// If the mapper gave it a model, use it
|
||||||
if (ent->model2) {
|
if (ent->model2) {
|
||||||
ent->s.modelindex2 = G_ModelIndex(ent->model2);
|
ent->s.modelindex2 = G_ModelIndex(ent->model2);
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.64 2003/09/08 19:19:19 makro
|
||||||
|
// New code for respawning entities in TP
|
||||||
|
//
|
||||||
// Revision 1.63 2003/09/07 20:02:51 makro
|
// Revision 1.63 2003/09/07 20:02:51 makro
|
||||||
// no message
|
// no message
|
||||||
//
|
//
|
||||||
|
@ -1403,7 +1406,7 @@ void Think_SpawnNewDoorTrigger(gentity_t * ent)
|
||||||
trap_RQ3LinkEntity(other, __LINE__, __FILE__);
|
trap_RQ3LinkEntity(other, __LINE__, __FILE__);
|
||||||
}
|
}
|
||||||
//Makro - some doors shouldn't have triggers for spectators
|
//Makro - some doors shouldn't have triggers for spectators
|
||||||
if (!ent->unbreakable) {
|
if (!ent->explosive) {
|
||||||
// NiceAss: This trigger will be for spectators
|
// NiceAss: This trigger will be for spectators
|
||||||
// NiceAss: Undo the stretched box size
|
// NiceAss: Undo the stretched box size
|
||||||
// expand
|
// expand
|
||||||
|
@ -1439,6 +1442,27 @@ void Think_MatchTeam(gentity_t * ent)
|
||||||
MatchTeam(ent, ent->moverState, level.time);
|
MatchTeam(ent, ent->moverState, level.time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Makro - respawns doors in TP
|
||||||
|
void reset_door(gentity_t *ent)
|
||||||
|
{
|
||||||
|
//Makro - if on a team and the team master doesn't respawn
|
||||||
|
if (ent->teammaster)
|
||||||
|
if (ent->teammaster->noreset)
|
||||||
|
return;
|
||||||
|
ent->health = ent->health_saved;
|
||||||
|
if (ent->health)
|
||||||
|
ent->takedamage = qtrue;
|
||||||
|
ent->inactive = ent->unbreakable;
|
||||||
|
if (!Q_stricmp(ent->classname, "func_door"))
|
||||||
|
SetMoverState(ent, MOVER_POS1, level.time);
|
||||||
|
else
|
||||||
|
SetMoverState(ent, ROTATOR_POS1, level.time);
|
||||||
|
//Elder: open areaportals for start_open doors
|
||||||
|
if ((ent->spawnflags & 1) == 1 && (ent->teammaster == ent || !ent->teammaster)) {
|
||||||
|
trap_RQ3AdjustAreaPortalState(ent, qtrue, __LINE__, __FILE__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Elder: old func_door Radiant comment
|
//Elder: old func_door Radiant comment
|
||||||
/*QUAKED func_door (0 .5 .8) ? START_OPEN x CRUSHER
|
/*QUAKED func_door (0 .5 .8) ? START_OPEN x CRUSHER
|
||||||
TOGGLE wait in both the start and end states for a trigger event.
|
TOGGLE wait in both the start and end states for a trigger event.
|
||||||
|
@ -1577,6 +1601,9 @@ void SP_func_door(gentity_t * ent)
|
||||||
|
|
||||||
InitMover(ent);
|
InitMover(ent);
|
||||||
|
|
||||||
|
if (ent->health)
|
||||||
|
ent->takedamage = qtrue;
|
||||||
|
|
||||||
if (!(ent->flags & FL_TEAMSLAVE)) {
|
if (!(ent->flags & FL_TEAMSLAVE)) {
|
||||||
//int health;
|
//int health;
|
||||||
int noSpecs = 0;
|
int noSpecs = 0;
|
||||||
|
@ -1584,13 +1611,10 @@ void SP_func_door(gentity_t * ent)
|
||||||
//G_SpawnInt("health", "0", &ent->health);
|
//G_SpawnInt("health", "0", &ent->health);
|
||||||
//Makro - added
|
//Makro - added
|
||||||
//ent->health_saved = ent->health;
|
//ent->health_saved = ent->health;
|
||||||
if (ent->health) {
|
|
||||||
ent->takedamage = qtrue;
|
|
||||||
}
|
|
||||||
//Makro - some doors don't need spectator triggers
|
//Makro - some doors don't need spectator triggers
|
||||||
G_SpawnInt("nospectators", "0", &noSpecs);
|
G_SpawnInt("nospectators", "0", &noSpecs);
|
||||||
//hijacking unbreakable field
|
//hijacking explosive field
|
||||||
ent->unbreakable = noSpecs;
|
ent->explosive = noSpecs;
|
||||||
ent->think = Think_SpawnNewDoorTrigger;
|
ent->think = Think_SpawnNewDoorTrigger;
|
||||||
ent->nextthink = level.time + FRAMETIME;
|
ent->nextthink = level.time + FRAMETIME;
|
||||||
}
|
}
|
||||||
|
@ -1599,6 +1623,10 @@ void SP_func_door(gentity_t * ent)
|
||||||
trap_RQ3AdjustAreaPortalState(ent, qtrue, __LINE__, __FILE__);
|
trap_RQ3AdjustAreaPortalState(ent, qtrue, __LINE__, __FILE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Makro - added
|
||||||
|
ent->unbreakable = ent->inactive;
|
||||||
|
ent->reset = reset_door;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// REACTION
|
// REACTION
|
||||||
|
@ -1746,8 +1774,8 @@ void SP_func_door_rotating(gentity_t * ent)
|
||||||
}
|
}
|
||||||
//Makro - some doors don't need spectator triggers
|
//Makro - some doors don't need spectator triggers
|
||||||
G_SpawnInt("nospectators", "0", &noSpecs);
|
G_SpawnInt("nospectators", "0", &noSpecs);
|
||||||
//hijacking unbreakable field
|
//hijacking explosive field
|
||||||
ent->unbreakable = noSpecs;
|
ent->explosive = noSpecs;
|
||||||
ent->think = Think_SpawnNewDoorTrigger;
|
ent->think = Think_SpawnNewDoorTrigger;
|
||||||
ent->nextthink = level.time + FRAMETIME;
|
ent->nextthink = level.time + FRAMETIME;
|
||||||
}
|
}
|
||||||
|
@ -1757,6 +1785,9 @@ void SP_func_door_rotating(gentity_t * ent)
|
||||||
trap_RQ3AdjustAreaPortalState(ent, qtrue, __LINE__, __FILE__);
|
trap_RQ3AdjustAreaPortalState(ent, qtrue, __LINE__, __FILE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Makro - added
|
||||||
|
ent->unbreakable = ent->inactive;
|
||||||
|
ent->reset = reset_door;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2333,6 +2364,15 @@ void Use_Func_Train(gentity_t * ent, gentity_t * other, gentity_t * activator)
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Reset_Func_Train(gentity_t *ent)
|
||||||
|
{
|
||||||
|
ent->nextTrain = G_Find2(NULL, FOFS(targetname), ent->target, FOFS(classname), "path_corner");
|
||||||
|
if (!ent->nextTrain)
|
||||||
|
return;
|
||||||
|
VectorClear(ent->r.currentAngles);
|
||||||
|
Think_BeginMoving(ent);
|
||||||
|
}
|
||||||
|
|
||||||
/*QUAKED func_train (0 .5 .8) ? START_ON TOGGLE BLOCK_STOPS
|
/*QUAKED func_train (0 .5 .8) ? START_ON TOGGLE BLOCK_STOPS
|
||||||
A train is a mover that moves between path_corner target points.
|
A train is a mover that moves between path_corner target points.
|
||||||
Trains MUST HAVE AN ORIGIN BRUSH.
|
Trains MUST HAVE AN ORIGIN BRUSH.
|
||||||
|
@ -2382,6 +2422,7 @@ void SP_func_train(gentity_t * self)
|
||||||
//Makro - added
|
//Makro - added
|
||||||
self->use = Use_Func_Train;
|
self->use = Use_Func_Train;
|
||||||
self->blocked = Blocked_Door;
|
self->blocked = Blocked_Door;
|
||||||
|
self->reset = Reset_Func_Train;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2399,17 +2440,10 @@ A bmodel that just sits there, doing nothing. Can be used for conditional walls
|
||||||
"light" constantLight radius
|
"light" constantLight radius
|
||||||
*/
|
*/
|
||||||
//Makro - added for triggerable func_statics
|
//Makro - added for triggerable func_statics
|
||||||
void use_func_static(gentity_t * ent, gentity_t * other, gentity_t * activator)
|
|
||||||
|
void SetFuncStaticState(gentity_t *ent, qboolean state)
|
||||||
{
|
{
|
||||||
//Makro - added "pathtarget" checks
|
if (state) {
|
||||||
if (!Q_stricmp(ent->pathtarget, "on"))
|
|
||||||
ent->count = 1;
|
|
||||||
else
|
|
||||||
if (!Q_stricmp(ent->pathtarget, "off"))
|
|
||||||
ent->count = 0;
|
|
||||||
else
|
|
||||||
ent->count ^= 1;
|
|
||||||
if (ent->count) {
|
|
||||||
ent->s.eFlags &= ~EF_NODRAW;
|
ent->s.eFlags &= ~EF_NODRAW;
|
||||||
ent->r.contents = CONTENTS_SOLID;
|
ent->r.contents = CONTENTS_SOLID;
|
||||||
ent->r.svFlags &= ~SVF_NOCLIENT;
|
ent->r.svFlags &= ~SVF_NOCLIENT;
|
||||||
|
@ -2420,6 +2454,28 @@ void use_func_static(gentity_t * ent, gentity_t * other, gentity_t * activator)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void use_func_static(gentity_t * ent, gentity_t * other, gentity_t * activator)
|
||||||
|
{
|
||||||
|
//Makro - added "pathtarget" checks
|
||||||
|
if (other && other->pathtarget) {
|
||||||
|
if (!Q_stricmp(other->pathtarget, "on"))
|
||||||
|
ent->count = 1;
|
||||||
|
else if (!Q_stricmp(other->pathtarget, "off"))
|
||||||
|
ent->count = 0;
|
||||||
|
else
|
||||||
|
ent->count ^= 1;
|
||||||
|
} else {
|
||||||
|
ent->count ^= 1;
|
||||||
|
}
|
||||||
|
SetFuncStaticState(ent, ent->count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_func_static(gentity_t *self)
|
||||||
|
{
|
||||||
|
self->count = (self->spawnflags & 1);
|
||||||
|
self->use(self, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
void SP_func_static(gentity_t * ent)
|
void SP_func_static(gentity_t * ent)
|
||||||
{
|
{
|
||||||
trap_SetBrushModel(ent, ent->model);
|
trap_SetBrushModel(ent, ent->model);
|
||||||
|
@ -2427,10 +2483,9 @@ void SP_func_static(gentity_t * ent)
|
||||||
VectorCopy(ent->s.origin, ent->s.pos.trBase);
|
VectorCopy(ent->s.origin, ent->s.pos.trBase);
|
||||||
VectorCopy(ent->s.origin, ent->r.currentOrigin);
|
VectorCopy(ent->s.origin, ent->r.currentOrigin);
|
||||||
//Makro - added
|
//Makro - added
|
||||||
ent->count = (ent->spawnflags & 1);
|
|
||||||
ent->use = use_func_static;
|
ent->use = use_func_static;
|
||||||
ent->use(ent, NULL, NULL);
|
ent->reset = reset_func_static;
|
||||||
//end Makro
|
ent->reset(ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.47 2003/09/08 19:19:20 makro
|
||||||
|
// New code for respawning entities in TP
|
||||||
|
//
|
||||||
// Revision 1.46 2003/09/07 20:02:51 makro
|
// Revision 1.46 2003/09/07 20:02:51 makro
|
||||||
// no message
|
// no message
|
||||||
//
|
//
|
||||||
|
@ -238,8 +241,9 @@ field_t fields[] = {
|
||||||
{"distance", FOFS(distance), F_FLOAT}, // VALKYRIE: for rotating doors
|
{"distance", FOFS(distance), F_FLOAT}, // VALKYRIE: for rotating doors
|
||||||
{"targetinactive", FOFS(targetInactive), F_LSTRING}, // Makro - target to be fired when inactive
|
{"targetinactive", FOFS(targetInactive), F_LSTRING}, // Makro - target to be fired when inactive
|
||||||
{"pathtarget", FOFS(pathtarget), F_LSTRING}, // Makro - for func_trains
|
{"pathtarget", FOFS(pathtarget), F_LSTRING}, // Makro - for func_trains
|
||||||
{"inactive", FOFS(inactive), F_INT}, // Makro - added
|
{"inactive", FOFS(inactive), F_INT}, // Makro - for inactive objects
|
||||||
{"activatename", FOFS(activatename), F_LSTRING},
|
{"activatename", FOFS(activatename), F_LSTRING},
|
||||||
|
{"noreset", FOFS(noreset), F_INT}, //Makro - for entities that shouldn't respawn in TP
|
||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -529,16 +533,19 @@ qboolean G_CallSpawn(gentity_t * ent)
|
||||||
|
|
||||||
for (item = bg_itemlist + 1; item->classname; item++) {
|
for (item = bg_itemlist + 1; item->classname; item++) {
|
||||||
if (!strcmp(item->classname, ent->classname)) {
|
if (!strcmp(item->classname, ent->classname)) {
|
||||||
//only spawn flags in CTF mode
|
//if it's a flag
|
||||||
if (item->giType == IT_TEAM && (item->giTag == PW_REDFLAG || item->giTag == PW_BLUEFLAG)) {
|
if (item->giType == IT_TEAM && (item->giTag == PW_REDFLAG || item->giTag == PW_BLUEFLAG)) {
|
||||||
// JBravo: no spawning in CTF
|
//only spawn it in CTF
|
||||||
if (g_gametype.integer == GT_CTF) {
|
if (g_gametype.integer == GT_CTF) {
|
||||||
G_SpawnItem(ent, item);
|
G_SpawnItem(ent, item);
|
||||||
return qtrue;
|
|
||||||
}
|
}
|
||||||
|
return qtrue;
|
||||||
} else {
|
} else {
|
||||||
if (g_gametype.integer != GT_CTF)
|
// JBravo: no spawning in CTF
|
||||||
|
if (g_gametype.integer != GT_CTF) {
|
||||||
G_SpawnItem(ent, item);
|
G_SpawnItem(ent, item);
|
||||||
|
G_BotOnlyItem(ent);
|
||||||
|
}
|
||||||
return qtrue;
|
return qtrue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -856,14 +863,14 @@ void SP_worldspawn(void)
|
||||||
trap_SetConfigstring( CS_LOADINGSCREEN, info );
|
trap_SetConfigstring( CS_LOADINGSCREEN, info );
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//Makro - fog hull
|
//Makro - fog hull replacement
|
||||||
G_SpawnVector("_rq3_fog_color", "0 0 0", color);
|
if (G_SpawnVector("_rq3_fog_color", "0 0 0", color)) {
|
||||||
memset(info, 0, sizeof(info));
|
memset(info, 0, sizeof(info));
|
||||||
Info_SetValueForKey(info, "r", va("%f", color[0]));
|
Info_SetValueForKey(info, "r", va("%f", color[0]));
|
||||||
Info_SetValueForKey(info, "g", va("%f", color[1]));
|
Info_SetValueForKey(info, "g", va("%f", color[1]));
|
||||||
Info_SetValueForKey(info, "b", va("%f", color[2]));
|
Info_SetValueForKey(info, "b", va("%f", color[2]));
|
||||||
//G_Printf("^4 FOG HULL: %s\n", vtos(color));
|
trap_SetConfigstring( CS_FOGHULL, info );
|
||||||
trap_SetConfigstring( CS_FOGHULL, info );
|
}
|
||||||
|
|
||||||
trap_SetConfigstring(CS_MOTD, g_motd.string); // message of the day
|
trap_SetConfigstring(CS_MOTD, g_motd.string); // message of the day
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.14 2003/09/08 19:19:20 makro
|
||||||
|
// New code for respawning entities in TP
|
||||||
|
//
|
||||||
// Revision 1.13 2003/08/26 19:28:38 makro
|
// Revision 1.13 2003/08/26 19:28:38 makro
|
||||||
// target_speakers
|
// target_speakers
|
||||||
//
|
//
|
||||||
|
@ -213,9 +216,29 @@ Multiple identical looping sounds will just increase volume without any speed co
|
||||||
"wait" : Seconds between auto triggerings, 0 = don't auto trigger
|
"wait" : Seconds between auto triggerings, 0 = don't auto trigger
|
||||||
"random" wait variance, default is 0
|
"random" wait variance, default is 0
|
||||||
*/
|
*/
|
||||||
|
void reset_target_speaker(gentity_t *ent)
|
||||||
|
{
|
||||||
|
//looped on
|
||||||
|
if (ent->spawnflags & 1)
|
||||||
|
ent->s.loopSound = ent->noise_index;
|
||||||
|
//looped off
|
||||||
|
else if (ent->spawnflags & 2)
|
||||||
|
ent->s.loopSound = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void Use_Target_Speaker(gentity_t * ent, gentity_t * other, gentity_t * activator)
|
void Use_Target_Speaker(gentity_t * ent, gentity_t * other, gentity_t * activator)
|
||||||
{
|
{
|
||||||
if (ent->spawnflags & 3) { // looping sound toggles
|
if (ent->spawnflags & 3) { // looping sound toggles
|
||||||
|
//Makro - check the pathtarget of the triggering entity
|
||||||
|
if (other->pathtarget) {
|
||||||
|
if (!Q_stricmp(other->pathtarget, "on")) {
|
||||||
|
ent->s.loopSound = ent->noise_index;
|
||||||
|
return;
|
||||||
|
} else if (!Q_stricmp(other->pathtarget, "off")) {
|
||||||
|
ent->s.loopSound = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (ent->s.loopSound)
|
if (ent->s.loopSound)
|
||||||
ent->s.loopSound = 0; // turn it off
|
ent->s.loopSound = 0; // turn it off
|
||||||
else
|
else
|
||||||
|
@ -270,7 +293,8 @@ void SP_target_speaker(gentity_t * ent)
|
||||||
if (ent->spawnflags & 1) {
|
if (ent->spawnflags & 1) {
|
||||||
ent->s.loopSound = ent->noise_index;
|
ent->s.loopSound = ent->noise_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ent->reset = reset_target_speaker;
|
||||||
ent->use = Use_Target_Speaker;
|
ent->use = Use_Target_Speaker;
|
||||||
|
|
||||||
if (ent->spawnflags & 4) {
|
if (ent->spawnflags & 4) {
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.153 2003/09/08 19:19:20 makro
|
||||||
|
// New code for respawning entities in TP
|
||||||
|
//
|
||||||
// Revision 1.152 2003/04/26 22:33:06 jbravo
|
// Revision 1.152 2003/04/26 22:33:06 jbravo
|
||||||
// Wratted all calls to G_FreeEnt() to avoid crashing and provide debugging
|
// Wratted all calls to G_FreeEnt() to avoid crashing and provide debugging
|
||||||
//
|
//
|
||||||
|
@ -774,57 +777,10 @@ void CleanLevel()
|
||||||
|
|
||||||
ClearBodyQue();
|
ClearBodyQue();
|
||||||
ent = &g_entities[MAX_CLIENTS];
|
ent = &g_entities[MAX_CLIENTS];
|
||||||
|
//Makro - call the reset function for all the entities in the map
|
||||||
for (i = MAX_CLIENTS; i < level.num_entities; i++, ent++) {
|
for (i = MAX_CLIENTS; i < level.num_entities; i++, ent++) {
|
||||||
if (!ent->inuse)
|
if (ent->reset && !ent->noreset)
|
||||||
continue;
|
ent->reset(ent);
|
||||||
if (!ent->item) {
|
|
||||||
if (!ent->classname)
|
|
||||||
continue;
|
|
||||||
//Makro - reset func_statics each round
|
|
||||||
if (!Q_stricmp(ent->classname, "func_static")) {
|
|
||||||
ent->count = (ent->spawnflags & 1);
|
|
||||||
ent->use(ent, NULL, NULL);
|
|
||||||
//Makro - reset door health each round
|
|
||||||
} else if (ent->s.eType == ET_MOVER && ent->takedamage) {
|
|
||||||
ent->health = ent->health_saved;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
//Makro - added this for bots
|
|
||||||
if ((ent->r.svFlags & SVF_NOCLIENT) && (ent->r.svFlags & SVF_BOTHACK))
|
|
||||||
continue;
|
|
||||||
if (ent->item->giType == IT_WEAPON) {
|
|
||||||
switch (ent->item->giTag) {
|
|
||||||
case WP_MP5:
|
|
||||||
case WP_M4:
|
|
||||||
case WP_M3:
|
|
||||||
case WP_HANDCANNON:
|
|
||||||
case WP_SSG3000:
|
|
||||||
case WP_PISTOL:
|
|
||||||
case WP_KNIFE:
|
|
||||||
case WP_GRENADE:
|
|
||||||
G_FreeEntity(ent, __LINE__, __FILE__);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (ent->item->giType == IT_HOLDABLE) {
|
|
||||||
switch (ent->item->giTag) {
|
|
||||||
case HI_KEVLAR:
|
|
||||||
case HI_LASER:
|
|
||||||
case HI_SILENCER:
|
|
||||||
case HI_BANDOLIER:
|
|
||||||
case HI_SLIPPERS:
|
|
||||||
case HI_HELMET:
|
|
||||||
G_FreeEntity(ent, __LINE__, __FILE__);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (ent->item->giType == IT_AMMO) {
|
|
||||||
//Makro - added
|
|
||||||
G_FreeEntity(ent, __LINE__, __FILE__);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1013,7 +969,7 @@ void CheckForUnevenTeams(gentity_t * player)
|
||||||
|
|
||||||
void SpawnPlayers()
|
void SpawnPlayers()
|
||||||
{
|
{
|
||||||
gentity_t *player, *ent;
|
gentity_t *player;
|
||||||
gclient_t *client;
|
gclient_t *client;
|
||||||
int clientNum, i;
|
int clientNum, i;
|
||||||
|
|
||||||
|
@ -1065,6 +1021,8 @@ void SpawnPlayers()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Blaze: May aswell respawn breakables here
|
//Blaze: May aswell respawn breakables here
|
||||||
|
//Makro - using a generic respawn function for all the entities now
|
||||||
|
/*
|
||||||
for (i = 0; i < level.num_entities; i++) {
|
for (i = 0; i < level.num_entities; i++) {
|
||||||
ent = &g_entities[i];
|
ent = &g_entities[i];
|
||||||
if (ent != NULL && ent->classname != NULL && !strcmp(ent->classname, "func_breakable")) {
|
if (ent != NULL && ent->classname != NULL && !strcmp(ent->classname, "func_breakable")) {
|
||||||
|
@ -1077,6 +1035,7 @@ void SpawnPlayers()
|
||||||
ent->health = ent->health_saved;
|
ent->health = ent->health_saved;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Let the player Choose the weapon and/or item he wants */
|
/* Let the player Choose the weapon and/or item he wants */
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.28 2003/09/08 19:19:20 makro
|
||||||
|
// New code for respawning entities in TP
|
||||||
|
//
|
||||||
// Revision 1.27 2003/07/30 16:05:46 makro
|
// Revision 1.27 2003/07/30 16:05:46 makro
|
||||||
// no message
|
// no message
|
||||||
//
|
//
|
||||||
|
@ -130,9 +133,15 @@ void multi_trigger(gentity_t * ent, gentity_t * activator)
|
||||||
} else {
|
} else {
|
||||||
// we can't just remove (self) here, because this is a touch function
|
// we can't just remove (self) here, because this is a touch function
|
||||||
// called while looping through area links...
|
// called while looping through area links...
|
||||||
|
//Makro - we no longer remove the entity, we just make it inactive
|
||||||
|
//otherwise, we would only be able to use it during the first
|
||||||
|
//round in TP games
|
||||||
|
/*
|
||||||
ent->touch = 0;
|
ent->touch = 0;
|
||||||
ent->nextthink = level.time + FRAMETIME;
|
ent->nextthink = level.time + FRAMETIME;
|
||||||
ent->think = G_RealFreeEntity;
|
ent->think = G_RealFreeEntity;
|
||||||
|
*/
|
||||||
|
ent->inactive = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,6 +158,13 @@ void Touch_Multi(gentity_t * self, gentity_t * other, trace_t * trace)
|
||||||
multi_trigger(self, other);
|
multi_trigger(self, other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Reset_Multi(gentity_t *ent)
|
||||||
|
{
|
||||||
|
ent->inactive = ent->unbreakable;
|
||||||
|
ent->think = 0;
|
||||||
|
ent->nextthink = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*QUAKED trigger_multiple (.5 .5 .5) ?
|
/*QUAKED trigger_multiple (.5 .5 .5) ?
|
||||||
"wait" : Seconds between triggerings, 0.5 default, -1 = one time only.
|
"wait" : Seconds between triggerings, 0.5 default, -1 = one time only.
|
||||||
"random" wait variance, default is 0
|
"random" wait variance, default is 0
|
||||||
|
@ -168,6 +184,8 @@ void SP_trigger_multiple(gentity_t * ent)
|
||||||
|
|
||||||
ent->touch = Touch_Multi;
|
ent->touch = Touch_Multi;
|
||||||
ent->use = Use_Multi;
|
ent->use = Use_Multi;
|
||||||
|
ent->unbreakable = ent->inactive;
|
||||||
|
ent->reset = Reset_Multi;
|
||||||
|
|
||||||
InitTrigger(ent);
|
InitTrigger(ent);
|
||||||
trap_RQ3LinkEntity(ent, __LINE__, __FILE__);
|
trap_RQ3LinkEntity(ent, __LINE__, __FILE__);
|
||||||
|
|
|
@ -6,108 +6,6 @@
|
||||||
--------------------Configuration: game - Win32 Release--------------------
|
--------------------Configuration: game - Win32 Release--------------------
|
||||||
</h3>
|
</h3>
|
||||||
<h3>Command Lines</h3>
|
<h3>Command Lines</h3>
|
||||||
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP312.tmp" with contents
|
|
||||||
[
|
|
||||||
/nologo /G6 /ML /W4 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FR"c:\reactionoutput/" /Fp"c:\reactionoutput/game.pch" /YX /Fo"c:\reactionoutput/" /Fd"c:\reactionoutput/" /FD /c
|
|
||||||
"C:\Games\Quake3\rq3source\reaction\game\g_misc.c"
|
|
||||||
]
|
|
||||||
Creating command line "cl.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP312.tmp"
|
|
||||||
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP313.tmp" with contents
|
|
||||||
[
|
|
||||||
kernel32.lib user32.lib winmm.lib /nologo /base:"0x20000000" /subsystem:windows /dll /incremental:no /pdb:"c:\reactionoutput/qagamex86.pdb" /map:"c:\reactionoutput/qagamex86.map" /machine:I386 /def:".\game.def" /out:"..\Release/qagamex86.dll" /implib:"c:\reactionoutput/qagamex86.lib"
|
|
||||||
\reactionoutput\ai_chat.obj
|
|
||||||
\reactionoutput\ai_cmd.obj
|
|
||||||
\reactionoutput\ai_dmnet.obj
|
|
||||||
\reactionoutput\ai_dmq3.obj
|
|
||||||
\reactionoutput\ai_main.obj
|
|
||||||
\reactionoutput\ai_team.obj
|
|
||||||
\reactionoutput\ai_vcmd.obj
|
|
||||||
\reactionoutput\bg_misc.obj
|
|
||||||
\reactionoutput\bg_pmove.obj
|
|
||||||
\reactionoutput\bg_slidemove.obj
|
|
||||||
\reactionoutput\g_active.obj
|
|
||||||
\reactionoutput\g_arenas.obj
|
|
||||||
\reactionoutput\g_bot.obj
|
|
||||||
\reactionoutput\g_client.obj
|
|
||||||
\reactionoutput\g_cmds.obj
|
|
||||||
\reactionoutput\g_combat.obj
|
|
||||||
\reactionoutput\g_fileio.obj
|
|
||||||
\reactionoutput\g_items.obj
|
|
||||||
\reactionoutput\g_main.obj
|
|
||||||
\reactionoutput\g_matchmode.obj
|
|
||||||
\reactionoutput\g_mem.obj
|
|
||||||
\reactionoutput\g_misc.obj
|
|
||||||
\reactionoutput\g_missile.obj
|
|
||||||
\reactionoutput\g_mover.obj
|
|
||||||
\reactionoutput\g_session.obj
|
|
||||||
\reactionoutput\g_spawn.obj
|
|
||||||
\reactionoutput\g_svcmds.obj
|
|
||||||
\reactionoutput\g_syscalls.obj
|
|
||||||
\reactionoutput\g_target.obj
|
|
||||||
\reactionoutput\g_team.obj
|
|
||||||
\reactionoutput\g_teamplay.obj
|
|
||||||
\reactionoutput\g_trigger.obj
|
|
||||||
\reactionoutput\g_unlagged.obj
|
|
||||||
\reactionoutput\g_utils.obj
|
|
||||||
\reactionoutput\g_weapon.obj
|
|
||||||
\reactionoutput\q_math.obj
|
|
||||||
\reactionoutput\q_shared.obj
|
|
||||||
\reactionoutput\rxn_game.obj
|
|
||||||
\reactionoutput\zcam.obj
|
|
||||||
\reactionoutput\zcam_target.obj
|
|
||||||
]
|
|
||||||
Creating command line "link.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP313.tmp"
|
|
||||||
<h3>Output Window</h3>
|
|
||||||
Compiling...
|
|
||||||
g_misc.c
|
|
||||||
Linking...
|
|
||||||
Creating library c:\reactionoutput/qagamex86.lib and object c:\reactionoutput/qagamex86.exp
|
|
||||||
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP317.tmp" with contents
|
|
||||||
[
|
|
||||||
/nologo /o"c:\reactionoutput/game.bsc"
|
|
||||||
\reactionoutput\ai_chat.sbr
|
|
||||||
\reactionoutput\ai_cmd.sbr
|
|
||||||
\reactionoutput\ai_dmnet.sbr
|
|
||||||
\reactionoutput\ai_dmq3.sbr
|
|
||||||
\reactionoutput\ai_main.sbr
|
|
||||||
\reactionoutput\ai_team.sbr
|
|
||||||
\reactionoutput\ai_vcmd.sbr
|
|
||||||
\reactionoutput\bg_misc.sbr
|
|
||||||
\reactionoutput\bg_pmove.sbr
|
|
||||||
\reactionoutput\bg_slidemove.sbr
|
|
||||||
\reactionoutput\g_active.sbr
|
|
||||||
\reactionoutput\g_arenas.sbr
|
|
||||||
\reactionoutput\g_bot.sbr
|
|
||||||
\reactionoutput\g_client.sbr
|
|
||||||
\reactionoutput\g_cmds.sbr
|
|
||||||
\reactionoutput\g_combat.sbr
|
|
||||||
\reactionoutput\g_fileio.sbr
|
|
||||||
\reactionoutput\g_items.sbr
|
|
||||||
\reactionoutput\g_main.sbr
|
|
||||||
\reactionoutput\g_matchmode.sbr
|
|
||||||
\reactionoutput\g_mem.sbr
|
|
||||||
\reactionoutput\g_misc.sbr
|
|
||||||
\reactionoutput\g_missile.sbr
|
|
||||||
\reactionoutput\g_mover.sbr
|
|
||||||
\reactionoutput\g_session.sbr
|
|
||||||
\reactionoutput\g_spawn.sbr
|
|
||||||
\reactionoutput\g_svcmds.sbr
|
|
||||||
\reactionoutput\g_syscalls.sbr
|
|
||||||
\reactionoutput\g_target.sbr
|
|
||||||
\reactionoutput\g_team.sbr
|
|
||||||
\reactionoutput\g_teamplay.sbr
|
|
||||||
\reactionoutput\g_trigger.sbr
|
|
||||||
\reactionoutput\g_unlagged.sbr
|
|
||||||
\reactionoutput\g_utils.sbr
|
|
||||||
\reactionoutput\g_weapon.sbr
|
|
||||||
\reactionoutput\q_math.sbr
|
|
||||||
\reactionoutput\q_shared.sbr
|
|
||||||
\reactionoutput\rxn_game.sbr
|
|
||||||
\reactionoutput\zcam.sbr
|
|
||||||
\reactionoutput\zcam_target.sbr]
|
|
||||||
Creating command line "bscmake.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP317.tmp"
|
|
||||||
Creating browse info file...
|
|
||||||
<h3>Output Window</h3>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue