mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2024-11-26 14:11:22 +00:00
Bots should reload/bandage when roaming around
Added "pathtarget" key to all the entities
This commit is contained in:
parent
0042ba64b6
commit
bc0cded7bf
11 changed files with 163 additions and 100 deletions
|
@ -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;
|
||||
//
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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}
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue