[Property] var LevelToLoad : Level = null; //set this in-game to the level you want to load, or set it in the initialize function instead if you prefer var Active : Boolean = false; function Initialize(init : CogInitializer) { Zero.Connect(this.Owner, Events.CollisionStarted, this.OnCollisionStarted); //Zero.Connect(this.Space, Events.LogicUpdate, this.OnLogicUpdate); //I used onlogicupdate to check if the boss was dead yet to determine whether it was active or not } function OnCollisionStarted(event : CollisionEvent) { var otherObject = event.OtherObject; //Make sure that "Player" on line below is the same name as your player object, or change to suit. if(otherObject.Name == "Player" && this.Active == true) { var space = this.LoadLevel(this.LevelToLoad); //put any important data into temporary variables, eg. //var plrhth = this.LevelSettings.GameLogic.PlayerHealth; //assign those values to the object about to be created, eg. //space.FindFirstObjectByName("Player").HasHealth.Health = plrhth; Console.WriteLine("`this.LevelToLoad` loaded"); } } function LoadLevel(level: Level) : Space { var space = this.GameSession.CreateSpace(Archetype.Find("Space")); space.LoadLevel(level); this.Space.Destroy(); return space; }