IOQ3 commit 2294

This commit is contained in:
Richard Allen 2012-10-04 15:49:55 +00:00
parent c0a8670c93
commit 1292c9a8f3
7 changed files with 22 additions and 15 deletions

View file

@ -742,7 +742,7 @@ void BotAddAvoidSpot(int movestate, vec3_t origin, float radius, int type)
int BotGetReachabilityToGoal(vec3_t origin, int areanum, int BotGetReachabilityToGoal(vec3_t origin, int areanum,
int lastgoalareanum, int lastareanum, int lastgoalareanum, int lastareanum,
int *avoidreach, float *avoidreachtimes, int *avoidreachtries, int *avoidreach, float *avoidreachtimes, int *avoidreachtries,
bot_goal_t *goal, int travelflags, int movetravelflags, bot_goal_t *goal, int travelflags,
struct bot_avoidspot_s *avoidspots, int numavoidspots, int *flags) struct bot_avoidspot_s *avoidspots, int numavoidspots, int *flags)
{ {
int i, t, besttime, bestreachnum, reachnum; int i, t, besttime, bestreachnum, reachnum;
@ -754,7 +754,6 @@ int BotGetReachabilityToGoal(vec3_t origin, int areanum,
if (AAS_AreaDoNotEnter(areanum) || AAS_AreaDoNotEnter(goal->areanum)) if (AAS_AreaDoNotEnter(areanum) || AAS_AreaDoNotEnter(goal->areanum))
{ {
travelflags |= TFL_DONOTENTER; travelflags |= TFL_DONOTENTER;
movetravelflags |= TFL_DONOTENTER;
} //end if } //end if
//use the routing to find the next area to go to //use the routing to find the next area to go to
besttime = 0; besttime = 0;
@ -787,7 +786,7 @@ int BotGetReachabilityToGoal(vec3_t origin, int areanum,
if (lastgoalareanum == goal->areanum && reach.areanum == lastareanum) continue; if (lastgoalareanum == goal->areanum && reach.areanum == lastareanum) continue;
//if (AAS_AreaContentsTravelFlags(reach.areanum) & ~travelflags) continue; //if (AAS_AreaContentsTravelFlags(reach.areanum) & ~travelflags) continue;
//if the travel isn't valid //if the travel isn't valid
if (!BotValidTravel(origin, &reach, movetravelflags)) continue; if (!BotValidTravel(origin, &reach, travelflags)) continue;
//get the travel time //get the travel time
t = AAS_AreaTravelTimeToGoalArea(reach.areanum, reach.end, goal->areanum, travelflags); t = AAS_AreaTravelTimeToGoalArea(reach.areanum, reach.end, goal->areanum, travelflags);
//if the goal area isn't reachable from the reachable area //if the goal area isn't reachable from the reachable area
@ -874,7 +873,7 @@ int BotMovementViewTarget(int movestate, bot_goal_t *goal, int travelflags, floa
reachnum = BotGetReachabilityToGoal(reach.end, reach.areanum, reachnum = BotGetReachabilityToGoal(reach.end, reach.areanum,
ms->lastgoalareanum, lastareanum, ms->lastgoalareanum, lastareanum,
ms->avoidreach, ms->avoidreachtimes, ms->avoidreachtries, ms->avoidreach, ms->avoidreachtimes, ms->avoidreachtries,
goal, travelflags, travelflags, NULL, 0, NULL); goal, travelflags, NULL, 0, NULL);
VectorCopy(reach.end, end); VectorCopy(reach.end, end);
lastareanum = reach.areanum; lastareanum = reach.areanum;
if (lastareanum == goal->areanum) if (lastareanum == goal->areanum)
@ -933,7 +932,7 @@ int BotPredictVisiblePosition(vec3_t origin, int areanum, bot_goal_t *goal, int
reachnum = BotGetReachabilityToGoal(end, areanum, reachnum = BotGetReachabilityToGoal(end, areanum,
lastgoalareanum, lastareanum, lastgoalareanum, lastareanum,
avoidreach, avoidreachtimes, avoidreachtries, avoidreach, avoidreachtimes, avoidreachtries,
goal, travelflags, travelflags, NULL, 0, NULL); goal, travelflags, NULL, 0, NULL);
if (!reachnum) return qfalse; if (!reachnum) return qfalse;
AAS_ReachabilityFromNum(reachnum, &reach); AAS_ReachabilityFromNum(reachnum, &reach);
// //
@ -3246,7 +3245,7 @@ void BotMoveToGoal(bot_moveresult_t *result, int movestate, bot_goal_t *goal, in
reachnum = BotGetReachabilityToGoal(ms->origin, ms->areanum, reachnum = BotGetReachabilityToGoal(ms->origin, ms->areanum,
ms->lastgoalareanum, ms->lastareanum, ms->lastgoalareanum, ms->lastareanum,
ms->avoidreach, ms->avoidreachtimes, ms->avoidreachtries, ms->avoidreach, ms->avoidreachtimes, ms->avoidreachtries,
goal, travelflags, travelflags, goal, travelflags,
ms->avoidspots, ms->numavoidspots, &resultflags); ms->avoidspots, ms->numavoidspots, &resultflags);
//the area number the reachability starts in //the area number the reachability starts in
ms->reachareanum = ms->areanum; ms->reachareanum = ms->areanum;
@ -3369,7 +3368,7 @@ void BotMoveToGoal(bot_moveresult_t *result, int movestate, bot_goal_t *goal, in
lastreachnum = BotGetReachabilityToGoal(end, areas[i], lastreachnum = BotGetReachabilityToGoal(end, areas[i],
ms->lastgoalareanum, ms->lastareanum, ms->lastgoalareanum, ms->lastareanum,
ms->avoidreach, ms->avoidreachtimes, ms->avoidreachtries, ms->avoidreach, ms->avoidreachtimes, ms->avoidreachtries,
goal, travelflags, TFL_JUMPPAD, ms->avoidspots, ms->numavoidspots, NULL); goal, TFL_JUMPPAD, ms->avoidspots, ms->numavoidspots, NULL);
if (lastreachnum) if (lastreachnum)
{ {
ms->lastreachnum = lastreachnum; ms->lastreachnum = lastreachnum;
@ -3389,7 +3388,6 @@ void BotMoveToGoal(bot_moveresult_t *result, int movestate, bot_goal_t *goal, in
ms->lastreachnum = lastreachnum; ms->lastreachnum = lastreachnum;
ms->lastareanum = areas[i]; ms->lastareanum = areas[i];
//botimport.Print(PRT_MESSAGE, "found jumppad reachability hard!!\n"); //botimport.Print(PRT_MESSAGE, "found jumppad reachability hard!!\n");
break;
} //end if } //end if
} //end for } //end for
if (lastreachnum) break; if (lastreachnum) break;

View file

@ -323,7 +323,7 @@ void ElevatorBottomCenter(aas_reachability_t *reach, vec3_t bottomcenter);
int BotGetReachabilityToGoal(vec3_t origin, int areanum, int BotGetReachabilityToGoal(vec3_t origin, int areanum,
int lastgoalareanum, int lastareanum, int lastgoalareanum, int lastareanum,
int *avoidreach, float *avoidreachtimes, int *avoidreachtries, int *avoidreach, float *avoidreachtimes, int *avoidreachtries,
bot_goal_t *goal, int travelflags, int movetravelflags, bot_goal_t *goal, int travelflags,
struct bot_avoidspot_s *avoidspots, int numavoidspots, int *flags); struct bot_avoidspot_s *avoidspots, int numavoidspots, int *flags);
int AAS_PointLight(vec3_t origin, int *red, int *green, int *blue); int AAS_PointLight(vec3_t origin, int *red, int *green, int *blue);

View file

@ -2757,7 +2757,7 @@ void CG_ResetPlayerEntity(centity_t * cent)
cent->pe.legs.pitchAngle = 0; cent->pe.legs.pitchAngle = 0;
cent->pe.legs.pitching = qfalse; cent->pe.legs.pitching = qfalse;
memset(&cent->pe.torso, 0, sizeof(cent->pe.legs)); memset(&cent->pe.torso, 0, sizeof(cent->pe.torso));
cent->pe.torso.yawAngle = cent->rawAngles[YAW]; cent->pe.torso.yawAngle = cent->rawAngles[YAW];
cent->pe.torso.yawing = qfalse; cent->pe.torso.yawing = qfalse;
cent->pe.torso.pitchAngle = cent->rawAngles[PITCH]; cent->pe.torso.pitchAngle = cent->rawAngles[PITCH];

View file

@ -797,7 +797,8 @@ static void CG_MapRestart(void)
cg.fraglimitWarnings = 0; cg.fraglimitWarnings = 0;
cg.timelimitWarnings = 0; cg.timelimitWarnings = 0;
cg.rewardTime = 0;
cg.rewardStack = 0;
cg.intermissionStarted = qfalse; cg.intermissionStarted = qfalse;
cg.levelShot = qfalse; cg.levelShot = qfalse;

View file

@ -1008,6 +1008,8 @@ void ClientUserinfoChanged(int clientNum)
// check for malformed or illegal info strings // check for malformed or illegal info strings
if (!Info_Validate(userinfo)) { if (!Info_Validate(userinfo)) {
strcpy(userinfo, "\\name\\badinfo"); strcpy(userinfo, "\\name\\badinfo");
// don't keep those clients and userinfo
trap_DropClient(clientNum, "Invalid userinfo");
} }
// check for local client // check for local client
s = Info_ValueForKey(userinfo, "ip"); s = Info_ValueForKey(userinfo, "ip");
@ -1320,6 +1322,12 @@ char *ClientConnect(int clientNum, qboolean firstTime, qboolean isBot)
return "Invalid password"; return "Invalid password";
} }
} }
// if a player reconnects quickly after a disconnect, the client disconnect may never be called, thus flag can get lost in the ether
if (ent->inuse) {
G_LogPrintf("Forcing disconnect on active client: %i\n", ent-g_entities);
// so lets just fix up anything that should happen on a disconnect
ClientDisconnect(ent-g_entities);
}
// they can connect // they can connect
ent->client = level.clients + clientNum; ent->client = level.clients + clientNum;
client = ent->client; client = ent->client;
@ -1971,7 +1979,7 @@ void ClientDisconnect(int clientNum)
G_RemoveQueuedBotBegin(clientNum); G_RemoveQueuedBotBegin(clientNum);
ent = g_entities + clientNum; ent = g_entities + clientNum;
if (!ent->client) { if (!ent->client || ent->client->pers.connected == CON_DISCONNECTED) {
return; return;
} }
// JBravo: to keep the ui teamcount cvars right. // JBravo: to keep the ui teamcount cvars right.

View file

@ -3000,7 +3000,7 @@ void ClientCommand(int clientNum)
char cmd[MAX_TOKEN_CHARS]; char cmd[MAX_TOKEN_CHARS];
ent = g_entities + clientNum; ent = g_entities + clientNum;
if (!ent->client) { if (!ent->client || ent->client->pers.connected != CON_CONNECTED) {
return; // not fully in game yet return; // not fully in game yet
} }

View file

@ -2322,9 +2322,9 @@ void CheckExitRules(void)
} }
} }
if (level.numPlayingClients < 2) { /* if (level.numPlayingClients < 2) {
return; return;
} } */
if (g_gametype.integer < GT_CTF && g_fraglimit.integer) { if (g_gametype.integer < GT_CTF && g_fraglimit.integer) {
if (level.teamScores[TEAM_RED] >= g_fraglimit.integer) { if (level.teamScores[TEAM_RED] >= g_fraglimit.integer) {