about summary refs log tree commit diff
path: root/src/game/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/server')
-rw-r--r--src/game/server/entities/character.cpp16
-rw-r--r--src/game/server/gamecontroller.cpp3
2 files changed, 16 insertions, 3 deletions
diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp
index 77d8f462..81d1f85b 100644
--- a/src/game/server/entities/character.cpp
+++ b/src/game/server/entities/character.cpp
@@ -585,14 +585,26 @@ void CCharacter::TickDefered()
 	
 	if(!StuckBefore && (StuckAfterMove || StuckAfterQuant))
 	{
+		// Hackish solution to get rid of strict-aliasing warning
+		union
+		{
+			float f;
+			unsigned u;
+		}StartPosX, StartPosY, StartVelX, StartVelY;
+
+		StartPosX.f = StartPos.x;
+		StartPosY.f = StartPos.y;
+		StartVelX.f = StartVel.x;
+		StartVelY.f = StartVel.y;
+
 		dbg_msg("char_core", "STUCK!!! %d %d %d %f %f %f %f %x %x %x %x", 
 			StuckBefore,
 			StuckAfterMove,
 			StuckAfterQuant,
 			StartPos.x, StartPos.y,
 			StartVel.x, StartVel.y,
-			*((unsigned *)&StartPos.x), *((unsigned *)&StartPos.y),
-			*((unsigned *)&StartVel.x), *((unsigned *)&StartVel.y));
+			StartPosX.u, StartPosY.u,
+			StartVelX.u, StartVelY.u);
 	}
 
 	int Events = m_Core.m_TriggeredEvents;
diff --git a/src/game/server/gamecontroller.cpp b/src/game/server/gamecontroller.cpp
index 5b7051d3..07f8bf86 100644
--- a/src/game/server/gamecontroller.cpp
+++ b/src/game/server/gamecontroller.cpp
@@ -286,6 +286,7 @@ void IGameController::PostReset()
 			GameServer()->m_apPlayers[i]->Respawn();
 			GameServer()->m_apPlayers[i]->m_Score = 0;
 			GameServer()->m_apPlayers[i]->m_ScoreStartTick = Server()->Tick();
+			GameServer()->m_apPlayers[i]->m_RespawnTick = Server()->Tick()+Server()->TickSpeed()/2;
 		}
 	}
 }
@@ -540,7 +541,7 @@ int IGameController::GetAutoTeam(int Notthisid)
 
 bool IGameController::CanJoinTeam(int Team, int Notthisid)
 {
-	if(Team == -1)
+	if(Team == -1 || (GameServer()->m_apPlayers[Notthisid] && GameServer()->m_apPlayers[Notthisid]->GetTeam() != -1))
 		return true;
 
 	int aNumplayers[2] = {0,0};