Bots should reload/bandage when roaming around

Added "pathtarget" key to all the entities
This commit is contained in:
Andrei Drexler 2002-05-30 21:18:28 +00:00
parent 0042ba64b6
commit bc0cded7bf
11 changed files with 163 additions and 100 deletions

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.26 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.25 2002/05/11 14:22:06 makro
// Func_statics now reset at the beginning of each round
//
@ -1780,15 +1784,9 @@ AIEnter_Seek_ActivateEntity
==================
*/
void AIEnter_Seek_ActivateEntity(bot_state_t *bs, char *s) {
int damage = RQ3_Bot_NeedToBandage(bs);
BotRecordNodeSwitch(bs, "activate entity", "", s);
//Makro - check if the bot needs to bandage
if (damage == 2 || ((damage == 1) && RQ3_Bot_CheckBandage(bs))) {
if (bs->cur_ps.weaponstate != WEAPON_BANDAGING) {
Cmd_Bandage( &g_entities[bs->entitynum] );
}
}
//Makro - check if the bot needs to reload/bandage
RQ3_Bot_IdleActions(bs);
bs->ainode = AINode_Seek_ActivateEntity;
}
@ -2030,7 +2028,6 @@ AIEnter_Seek_NBG
void AIEnter_Seek_NBG(bot_state_t *bs, char *s) {
bot_goal_t goal;
char buf[144];
int damage = RQ3_Bot_NeedToBandage(bs);
if (trap_BotGetTopGoal(bs->gs, &goal)) {
trap_BotGoalName(goal.number, buf, 144);
@ -2039,13 +2036,8 @@ void AIEnter_Seek_NBG(bot_state_t *bs, char *s) {
else {
BotRecordNodeSwitch(bs, "seek NBG", "no goal", s);
}
//Makro - check if the bot needs to bandage
if (damage == 2 || ((damage == 1) && RQ3_Bot_CheckBandage(bs))) {
if (bs->cur_ps.weaponstate != WEAPON_BANDAGING) {
Cmd_Bandage( &g_entities[bs->entitynum] );
}
}
bs->ainode = AINode_Seek_ActivateEntity;
//Makro - check if the bot needs to reload/bandage
RQ3_Bot_IdleActions(bs);
bs->ainode = AINode_Seek_NBG;
}
@ -2084,6 +2076,10 @@ int AINode_Seek_NBG(bot_state_t *bs) {
}
//map specific code
BotMapScripts(bs);
//Makro - check if the bot needs to reload/bandage
RQ3_Bot_IdleActions(bs);
//no enemy
bs->enemy = -1;
//if the bot has no goal
@ -2171,8 +2167,6 @@ AIEnter_Seek_LTG
void AIEnter_Seek_LTG(bot_state_t *bs, char *s) {
bot_goal_t goal;
char buf[144];
int damage = RQ3_Bot_NeedToBandage(bs);
if (trap_BotGetTopGoal(bs->gs, &goal)) {
trap_BotGoalName(goal.number, buf, 144);
BotRecordNodeSwitch(bs, "seek LTG", buf, s);
@ -2180,12 +2174,8 @@ void AIEnter_Seek_LTG(bot_state_t *bs, char *s) {
else {
BotRecordNodeSwitch(bs, "seek LTG", "no goal", s);
}
//Makro - check if the bot needs to bandage
if (damage == 2 || ((damage == 1) && RQ3_Bot_CheckBandage(bs))) {
if (bs->cur_ps.weaponstate != WEAPON_BANDAGING) {
Cmd_Bandage( &g_entities[bs->entitynum] );
}
}
//Makro - check if the bot needs to reload/bandage
RQ3_Bot_IdleActions(bs);
bs->ainode = AINode_Seek_LTG;
}
@ -2234,6 +2224,10 @@ int AINode_Seek_LTG(bot_state_t *bs)
}
//map specific code
BotMapScripts(bs);
//Makro - check if the bot needs to reload/bandage
RQ3_Bot_IdleActions(bs);
//no enemy
bs->enemy = -1;
//

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.38 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.37 2002/05/27 06:47:22 niceass
// removed some kamakazi stuff
//
@ -2297,7 +2301,9 @@ void BotUpdateInventory(bot_state_t *bs) {
memcpy(oldinventory, bs->inventory, sizeof(oldinventory));
//armor
bs->inventory[INVENTORY_ARMOR] = bs->cur_ps.stats[STAT_ARMOR];
//weapons
// WEAPONS //
//Blaze: Reaction Weapons
bs->inventory[INVENTORY_KNIFE] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_KNIFE)) != 0;
bs->inventory[INVENTORY_PISTOL] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_PISTOL)) != 0;
@ -2308,30 +2314,48 @@ void BotUpdateInventory(bot_state_t *bs) {
bs->inventory[INVENTORY_M3] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_M3)) != 0;
bs->inventory[INVENTORY_AKIMBO] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_AKIMBO)) != 0;
bs->inventory[INVENTORY_GRENADE] = (bs->cur_ps.stats[STAT_WEAPONS] & (1 << WP_GRENADE)) != 0;
//ammo
// CLIPS //
//Makro - adding clip info
//Note - this stuff is also added to the ammo info, so bots know they still have ammo for their guns
bs->inventory[INVENTORY_KNIFECLIP] = ent->client->numClips[WP_KNIFE];
bs->inventory[INVENTORY_PISTOLCLIP] = ent->client->numClips[WP_PISTOL];
bs->inventory[INVENTORY_M3CLIP] = ent->client->numClips[WP_M3];
bs->inventory[INVENTORY_SSG3000CLIP] = ent->client->numClips[WP_SSG3000];
bs->inventory[INVENTORY_MP5CLIP] = ent->client->numClips[WP_MP5];
bs->inventory[INVENTORY_M4CLIP] = ent->client->numClips[WP_M4];
amt = ent->client->numClips[WP_HANDCANNON];
if (amt < 2)
amt = 0;
bs->inventory[INVENTORY_HANDCANNONCLIP] = amt;
amt = ent->client->numClips[WP_AKIMBO];
if (amt < 2)
amt = 0;
bs->inventory[INVENTORY_AKIMBOCLIP] = amt;
bs->inventory[INVENTORY_GRENADECLIP] = ent->client->numClips[WP_GRENADE];
// AMMO //
//Makro - clips should be taken into account
bs->inventory[INVENTORY_PISTOLAMMO] = bs->cur_ps.ammo[WP_PISTOL] + ent->client->numClips[WP_PISTOL] * RQ3_PISTOL_CLIP;
bs->inventory[INVENTORY_PISTOLAMMO] = bs->cur_ps.ammo[WP_PISTOL] + bs->inventory[INVENTORY_PISTOLCLIP] * RQ3_PISTOL_CLIP;
bs->inventory[INVENTORY_KNIFEAMMO] = bs->cur_ps.ammo[WP_KNIFE];
bs->inventory[INVENTORY_M4AMMO] = bs->cur_ps.ammo[WP_M4] + ent->client->numClips[WP_M4] * RQ3_M4_CLIP;
bs->inventory[INVENTORY_SSG3000AMMO] = bs->cur_ps.ammo[WP_SSG3000] + ent->client->numClips[WP_SSG3000];
bs->inventory[INVENTORY_MP5AMMO] = bs->cur_ps.ammo[WP_MP5] + ent->client->numClips[WP_MP5] * RQ3_MP5_CLIP;
bs->inventory[INVENTORY_M4AMMO] = bs->cur_ps.ammo[WP_M4] + bs->inventory[INVENTORY_M4CLIP] * RQ3_M4_CLIP;
bs->inventory[INVENTORY_SSG3000AMMO] = bs->cur_ps.ammo[WP_SSG3000] + bs->inventory[INVENTORY_SSG3000CLIP];
bs->inventory[INVENTORY_MP5AMMO] = bs->cur_ps.ammo[WP_MP5] + bs->inventory[INVENTORY_MP5CLIP] * RQ3_MP5_CLIP;
//Blaze: Same ammo for shotgun and handcannon
//Makro - this was odd
//bs->inventory[INVENTORY_M3AMMO] = bs->cur_ps.ammo[WP_HANDCANNON];
//bs->inventory[INVENTORY_M3AMMO] = bs->cur_ps.ammo[WP_M3];
bs->inventory[INVENTORY_M3AMMO] = bs->cur_ps.ammo[WP_M3] + ent->client->numClips[WP_M3];
amt = bs->cur_ps.ammo[WP_HANDCANNON] + ent->client->numClips[WP_HANDCANNON];
bs->inventory[INVENTORY_M3AMMO] = bs->cur_ps.ammo[WP_M3] + bs->inventory[INVENTORY_M3CLIP];
amt = bs->cur_ps.ammo[WP_HANDCANNON] + bs->inventory[INVENTORY_HANDCANNONCLIP];
//Makro - hackish, but oh well... bots shouldn't want to use a HC when they only have one shell left
if (amt < 2)
amt = 0;
bs->inventory[INVENTORY_HANDCANNONAMMO] = amt;
//Blaze: Same ammo for Pistol and Akimbo Pistols
//bs->inventory[INVENTORY_PISTOLAMMO] = bs->cur_ps.ammo[WP_AKIMBO];
//Makro - same hack for akimbo
amt = bs->cur_ps.ammo[WP_AKIMBO] + ent->client->numClips[WP_AKIMBO] * RQ3_PISTOL_CLIP;
if (amt < 2)
amt = 0;
bs->inventory[INVENTORY_AKIMBOAMMO] = amt;
bs->inventory[INVENTORY_AKIMBOAMMO] = bs->cur_ps.ammo[WP_AKIMBO] + bs->inventory[INVENTORY_AKIMBOCLIP] * RQ3_PISTOL_CLIP;
bs->inventory[INVENTORY_GRENADEAMMO] = bs->cur_ps.ammo[WP_GRENADE];
// bs->inventory[INVENTORY_BFGAMMO] = bs->cur_ps.ammo[WP_BFG];
@ -2370,18 +2394,6 @@ void BotUpdateInventory(bot_state_t *bs) {
}
#endif
//Makro - adding clip info
//Note - this stuff is also added to the ammo info, so bots know they still have ammo for their guns
bs->inventory[INVENTORY_KNIFECLIP] = ent->client->numClips[WP_KNIFE];
bs->inventory[INVENTORY_PISTOLCLIP] = ent->client->numClips[WP_PISTOL];
bs->inventory[INVENTORY_M3CLIP] = ent->client->numClips[WP_M3];
bs->inventory[INVENTORY_SSG3000CLIP] = ent->client->numClips[WP_SSG3000];
bs->inventory[INVENTORY_MP5CLIP] = ent->client->numClips[WP_MP5];
bs->inventory[INVENTORY_M4CLIP] = ent->client->numClips[WP_M4];
bs->inventory[INVENTORY_HANDCANNONCLIP] = ent->client->numClips[WP_HANDCANNON];
bs->inventory[INVENTORY_AKIMBOCLIP] = ent->client->numClips[WP_AKIMBO];
bs->inventory[INVENTORY_GRENADECLIP] = ent->client->numClips[WP_GRENADE];
/*
if (showInfo) {
BotAI_Print(PRT_MESSAGE, "Inventory for %s :\n-----------------\n", ent->client->pers.netname);
@ -2644,10 +2656,10 @@ Added by Makro
==================
*/
int RQ3_Bot_NeedToBandage( bot_state_t *bs) {
if ((bs->cur_ps.stats[STAT_RQ3] & RQ3_BANDAGE_NEED) == RQ3_BANDAGE_NEED)
return 1;
if ((bs->cur_ps.stats[STAT_RQ3] & RQ3_LEGDAMAGE) == RQ3_LEGDAMAGE)
return 2;
if ((bs->cur_ps.stats[STAT_RQ3] & RQ3_BANDAGE_NEED) == RQ3_BANDAGE_NEED)
return 1;
return 0;
}
@ -2672,6 +2684,45 @@ qboolean RQ3_Bot_CheckBandage( bot_state_t *bs ) {
return doBandage;
}
/*
==================
RQ3_Bot_RQ3_Bot_IdleActions
Added by Makro
==================
*/
void RQ3_Bot_IdleActions( bot_state_t *bs ) {
int damage = RQ3_Bot_NeedToBandage(bs);
int ammo = bs->cur_ps.ammo[bs->cur_ps.weapon];
int weapon = bs->cur_ps.weapon;
//float reactiontime = trap_Characteristic_BFloat(bs->character, CHARACTERISTIC_REACTIONTIME, 0, 1);
//too soon to reload/bandage again ?
if (bs->idleAction_time > FloatTime())
return;
//check if the bot needs to bandage
if (damage == 2 || ((damage == 1) && RQ3_Bot_CheckBandage(bs))) {
if (bs->cur_ps.weaponstate != WEAPON_BANDAGING) {
Cmd_Bandage( &g_entities[bs->entitynum] );
bs->idleAction_time = FloatTime() + 4;
return;
}
}
//check if the bot needs to reload
if (ammo == 0 || (weapon == WP_SSG3000 && ammo < RQ3_SSG3000_AMMO) || (weapon == WP_M3 && ammo < RQ3_M3_AMMO)) {
if (RQ3_Bot_CanReload(bs, weapon)) {
trap_EA_Action(bs->client, ACTION_AFFIRMATIVE);
bs->idleAction_time = FloatTime() + 1;
return;
}
}
return;
}
/*
==================
BotBattleUseItems

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.8 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.7 2002/05/10 13:21:53 makro
// Mainly bot stuff. Also fixed a couple of crash bugs
//
@ -186,7 +190,8 @@ int BotPointAreaNum(vec3_t origin);
//
void BotMapScripts(bot_state_t *bs);
//RQ3 bot functions
// RQ3 bot functions //
qboolean RQ3_Bot_CheckBandage( bot_state_t *bs );
qboolean RQ3_Bot_CanReload( bot_state_t *bs, int weapon );
int RQ3_Bot_NeedToBandage( bot_state_t *bs);
@ -195,6 +200,7 @@ void BotAttack(bot_state_t *bs);
bot_moveresult_t BotMoveTo(bot_state_t *bs, vec3_t dest);
void BotMoveTowardsEnt(bot_state_t *bs, vec3_t dest, int dist);
char *BotGetUserInfoKey(bot_state_t *bs, char *key);
void RQ3_Bot_IdleActions( bot_state_t *bs );
//ctf flags
#define CTF_FLAG_NONE 0

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.9 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.8 2002/05/05 15:18:02 makro
// Fixed some crash bugs. Bot stuff. Triggerable func_statics.
// Made flags only spawn in CTF mode
@ -217,6 +221,7 @@ typedef struct bot_state_s
int predictobstacles_goalareanum; //last goal areanum the bot predicted obstacles for
float radioresponse_time; //Makro - the last time the bot responded to a radio message
int radioresponse_count; //Makro - how many times the bot responded to radio messages
float idleAction_time; //Makro - last time the bot did something while roaming around (reload/bandage)
vec3_t aimtarget;
vec3_t enemyvelocity; //enemy velocity 0.5 secs ago during battle

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.84 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.83 2002/05/28 01:17:01 jbravo
// More gib fixes. g_RQ3_gib added
//
@ -352,7 +356,7 @@ struct gentity_s {
gitem_t *item; // for bonus items
float distance; // VALKYRIE: for rotating door
//Blaze: Holds the target set by a button
char pathtarget[32];
char *pathtarget;
};

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.50 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.49 2002/05/29 13:49:25 makro
// Elevators/doors
//
@ -163,12 +167,21 @@ void SP_light( gentity_t *self ) {
G_FreeEntity( self );
}
/*QUAKED light_d (0 1 0) (-8 -8 -8) (8 8 8)
/*QUAKED light_d (0 1 0) (-8 -8 -8) (8 8 8) ADDITIVE FLICKER PULSE STROBE START_OFF
Dynamic light entity. Use sparingly.
Q3 does not allow for manual light radius setup.
Set the color key for the intended color
"light" overrides the default 100 intensity.
*/
void use_dlight( gentity_t *ent, gentity_t *other, gentity_t *activator ) {
ent->unbreakable ^= 1;
if (ent->unbreakable) {
ent->r.svFlags &= ~SVF_NOCLIENT;
} else {
ent->r.svFlags |= SVF_NOCLIENT;
}
}
void SP_dlight( gentity_t *ent ) {
vec3_t color;
float light;
@ -187,6 +200,16 @@ void SP_dlight( gentity_t *ent ) {
ent->s.eventParm |= DLIGHT_PULSE;
if ( ent->spawnflags & 8 )
ent->s.eventParm |= DLIGHT_STROBE;
//Makro - added START_OFF flag
if ( ent->spawnflags & 16 ) {
ent->unbreakable = 1;
ent->r.svFlags &= ~SVF_NOCLIENT;
} else {
ent->unbreakable = 0;
ent->r.svFlags |= SVF_NOCLIENT;
}
ent->use = use_dlight;
r = color[0] * 255;
if ( r > 255 ) {
@ -591,7 +614,7 @@ void SP_func_breakable( gentity_t *ent ) {
char *id;
char *velocity;
char *jump;
char *name, *s;
char *name;
char breakinfo[MAX_INFO_STRING];
// Make it appear as the brush
@ -723,11 +746,6 @@ void SP_func_breakable( gentity_t *ent ) {
trap_LinkEntity (ent);
//Makro - added for elevators
if (G_SpawnString( "pathtarget","", &s)) {
Q_strncpyz(ent->pathtarget, s, sizeof(ent->pathtarget));
}
}
@ -887,7 +905,6 @@ void G_BreakGlass( gentity_t *ent, gentity_t *inflictor, gentity_t *attacker, ve
void SP_func_pressure( gentity_t *ent ) {
char *type;
char *s;
// Make it appear as the brush
trap_SetBrushModel( ent, ent->model );
@ -912,10 +929,6 @@ void SP_func_pressure( gentity_t *ent ) {
// ent->s.frame holds type
// ent->s.powerups holds speed
//Makro - added for elevators
if (G_SpawnString( "pathtarget","", &s)) {
Q_strncpyz(ent->pathtarget, s, sizeof(ent->pathtarget));
}
}
void G_CreatePressure(vec3_t origin, vec3_t normal, gentity_t *ent) {

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.43 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.42 2002/05/29 19:49:21 makro
// Option to disable spectator triggers for doors
//
@ -1125,12 +1129,6 @@ void InitMover( gentity_t *ent ) {
if ( ent->s.pos.trDuration <= 0 ) {
ent->s.pos.trDuration = 1;
}
//Makro - added for elevators
if (G_SpawnString( "pathtarget","", &sound)) {
Q_strncpyz(ent->pathtarget, sound, sizeof(ent->pathtarget));
}
}
@ -1756,11 +1754,6 @@ void InitRotator( gentity_t *ent ) {
if ( ent->s.apos.trDuration <= 0 ) {
ent->s.apos.trDuration = 1;
}
//Makro - added for elevators
if (G_SpawnString( "pathtarget","", &sound)) {
Q_strncpyz(ent->pathtarget, sound, sizeof(ent->pathtarget));
}
}

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.28 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.27 2002/05/25 10:40:31 makro
// Loading screen
//
@ -175,7 +179,7 @@ field_t fields[] = {
{"targetShaderName", FOFS(targetShaderName), F_LSTRING},
{"targetShaderNewName", FOFS(targetShaderNewName), F_LSTRING},
{"distance", FOFS(distance), F_FLOAT}, // VALKYRIE: for rotating doors
//{"pathtarget", FOFS(pathtarget), F_LSTRING}, // Makro - for func_trains
{"pathtarget", FOFS(pathtarget), F_LSTRING}, // Makro - for func_trains
{NULL}
};

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.7 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.6 2002/05/23 18:37:50 makro
// Bots should crouch more often when they attack with a SSG
// Made this depend on skill. Also, elevator stuff
@ -104,7 +108,6 @@ void Use_Target_Delay( gentity_t *ent, gentity_t *other, gentity_t *activator )
}
void SP_target_delay( gentity_t *ent ) {
char *s;
// check delay for backwards compatability
if ( !G_SpawnFloat( "delay", "0", &ent->wait ) ) {
@ -115,11 +118,6 @@ void SP_target_delay( gentity_t *ent ) {
ent->wait = 1;
}
//Makro - added for elevators
if (G_SpawnString( "pathtarget","", &s)) {
Q_strncpyz(ent->pathtarget, s, sizeof(ent->pathtarget));
}
ent->use = Use_Target_Delay;
}
@ -409,11 +407,6 @@ void target_relay_use (gentity_t *self, gentity_t *other, gentity_t *activator)
}
void SP_target_relay (gentity_t *self) {
char *s;
//Makro - added for elevators
if (G_SpawnString( "pathtarget","", &s)) {
Q_strncpyz(self->pathtarget, s, sizeof(self->pathtarget));
}
self->use = target_relay_use;
}

View file

@ -5,6 +5,10 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.19 2002/05/30 21:18:28 makro
// Bots should reload/bandage when roaming around
// Added "pathtarget" key to all the entities
//
// Revision 1.18 2002/05/29 13:49:26 makro
// Elevators/doors
//
@ -54,18 +58,12 @@
void InitTrigger( gentity_t *self ) {
char *s;
if (!VectorCompare (self->s.angles, vec3_origin))
G_SetMovedir (self->s.angles, self->movedir);
trap_SetBrushModel( self, self->model );
self->r.contents = CONTENTS_TRIGGER; // replaces the -1 from trap_SetBrushModel
self->r.svFlags = SVF_NOCLIENT;
//Makro - added for elevators
if (G_SpawnString( "pathtarget","", &s)) {
Q_strncpyz(self->pathtarget, s, sizeof(self->pathtarget));
}
}

View file

@ -6,13 +6,14 @@
--------------------Configuration: game - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSPB1.tmp" with contents
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP189.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_mover.c"
"C:\Games\Quake3\rq3source\reaction\game\ai_dmnet.c"
"C:\Games\Quake3\rq3source\reaction\game\ai_dmq3.c"
]
Creating command line "cl.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSPB1.tmp"
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSPB2.tmp" with contents
Creating command line "cl.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP189.tmp"
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP18A.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
@ -55,10 +56,11 @@ kernel32.lib user32.lib winmm.lib /nologo /base:"0x20000000" /subsystem:windows
\reactionoutput\zcam.obj
\reactionoutput\zcam_target.obj
]
Creating command line "link.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSPB2.tmp"
Creating command line "link.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP18A.tmp"
<h3>Output Window</h3>
Compiling...
g_mover.c
ai_dmnet.c
ai_dmq3.c
Linking...
Creating library c:\reactionoutput/qagamex86.lib and object c:\reactionoutput/qagamex86.exp