diff --git a/engine/client/cl_cg.c b/engine/client/cl_cg.c index 002e44ca8..680aef1e1 100644 --- a/engine/client/cl_cg.c +++ b/engine/client/cl_cg.c @@ -870,12 +870,14 @@ static qintptr_t CG_SystemCalls(void *offset, quintptr_t mask, qintptr_t fn, con } break; - case CG_R_LOADWORLDMAP: //FTE can't distinguish. :/ - Con_DPrintf("CG_R_LOADWORLDMAP: not implemented\n"); - break; //So long as noone has one collision model with a different rendering one, we'll be fine + case CG_R_LOADWORLDMAP: + { //rendering + scenefuncs->NewMap(worldfuncs->LoadModel(VM_POINTER(arg[0]), MLV_SILENTSYNC)); + } + break; case CG_CM_LOADMAP: - { + { //collisions int i; char *mapname = VM_POINTER(arg[0]); ccs.worldmodel = ccs.model_precache[0] = worldfuncs->LoadModel(mapname, MLV_SILENTSYNC); diff --git a/engine/client/clq3_parse.c b/engine/client/clq3_parse.c index 281a1b0b0..b55f31483 100644 --- a/engine/client/clq3_parse.c +++ b/engine/client/clq3_parse.c @@ -624,14 +624,14 @@ void CLQ3_ParseGameState(sizebuf_t *msg) return; } + scenefuncs->NewMap(NULL); + CG_Restart(); UI_Restart_f(); if (!ccs.worldmodel) plugfuncs->EndGame("CGame didn't set a map.\n"); - scenefuncs->NewMap (ccs.worldmodel); - SCR_EndLoadingPlaque(); ccs.state = ca_active; diff --git a/engine/client/r_surf.c b/engine/client/r_surf.c index 111248990..150e3aeaf 100644 --- a/engine/client/r_surf.c +++ b/engine/client/r_surf.c @@ -3985,7 +3985,7 @@ void Surf_NewMap (model_t *worldmodel) //evil haxx r_dynamic.ival = r_dynamic.value; - if (r_dynamic.ival > 0 && cl.worldmodel->fromgame == fg_quake3) //quake3 has no lightmaps, disable r_dynamic + if (r_dynamic.ival > 0 && (!cl.worldmodel || cl.worldmodel->fromgame == fg_quake3)) //quake3 has no lightmaps, disable r_dynamic r_dynamic.ival = 0; memset (&r_worldentity, 0, sizeof(r_worldentity));