public void DispatchShuttle() { if (RespawnShuttle != null) { if (GameMain.Lua.game.overrideRespawnSub) { CurrentState = State.Waiting; } else { CurrentState = State.Transporting; } GameMain.Server.CreateEntityEvent(this); ResetShuttle(); if (shuttleSteering != null) { shuttleSteering.TargetVelocity = Vector2.Zero; } GameServer.Log("Dispatching the respawn shuttle.", ServerLog.MessageType.Spawning); Vector2 spawnPos = FindSpawnPos(); if (!GameMain.Lua.game.overrideRespawnSub) { RespawnCharacters(spawnPos); } CoroutineManager.StopCoroutines("forcepos"); if (spawnPos.Y > Level.Loaded.Size.Y) { CoroutineManager.StartCoroutine(ForceShuttleToPos(Level.Loaded.StartPosition - Vector2.UnitY * Level.ShaftHeight, 100.0f), "forcepos"); } else { RespawnShuttle.SetPosition(spawnPos); RespawnShuttle.Velocity = Vector2.Zero; RespawnShuttle.NeutralizeBallast(); RespawnShuttle.EnableMaintainPosition(); } } else { CurrentState = State.Waiting; GameServer.Log("Respawning everyone in main sub.", ServerLog.MessageType.Spawning); GameMain.Server.CreateEntityEvent(this); RespawnCharacters(null); } }
partial void DispatchShuttle() { if (RespawnShuttle != null) { CurrentState = State.Transporting; GameMain.Server.CreateEntityEvent(this); ResetShuttle(); if (shuttleSteering != null) { shuttleSteering.TargetVelocity = Vector2.Zero; } GameServer.Log("Dispatching the respawn shuttle.", ServerLog.MessageType.Spawning); RespawnCharacters(); CoroutineManager.StopCoroutines("forcepos"); Vector2 spawnPos = FindSpawnPos(); if (spawnPos.Y > Level.Loaded.Size.Y) { CoroutineManager.StartCoroutine(ForceShuttleToPos(Level.Loaded.StartPosition - Vector2.UnitY * Level.ShaftHeight, 100.0f), "forcepos"); } else { RespawnShuttle.SetPosition(spawnPos); RespawnShuttle.Velocity = Vector2.Zero; if (shuttleSteering != null) { shuttleSteering.AutoPilot = true; shuttleSteering.MaintainPos = true; shuttleSteering.PosToMaintain = RespawnShuttle.WorldPosition; shuttleSteering.UnsentChanges = true; } } } else { CurrentState = State.Waiting; GameServer.Log("Respawning everyone in main sub.", ServerLog.MessageType.Spawning); GameMain.Server.CreateEntityEvent(this); RespawnCharacters(); } }