There is no way to force exit/warp a level without marking it as completed
I am making a script for SRB2: The Past that will allow you to go to any hub. The problem is that the current system "completes" the level, which can easily cheese some level complete emblems Glaber put in.
One way to do it is by changing G_ExitLevel to include a true/false option to determine if it completes the level (default to true if nil to keep old functionality), but I don't know if a change like that is allowed for a minor update...
void G_ExitLevel(void)
{
if (gamestate == GS_LEVEL)
{
gameaction = ga_completed;
lastdraw = true;
Edited by Zolton Auburn