Here's a patch for the disappearing scientists problem
Index: src/client/cl_research.c
===================================================================
--- src/client/cl_research.c (revision 2931)
+++ src/client/cl_research.c (working copy)
@@ -837,8 +837,16 @@
MN_AddNewMessage(_("Research finished"), messageBuffer, qfalse, MSG_RESEARCH, tech);
/* B_ClearBuilding(&gd.buildings[tech->base_idx][tech->lab]);*/
+ while (tech->scientists>0) {
+ employee_t* employee = E_GetAssignedEmployee(&gd.bases[tech->base_idx], EMPL_SCIENTIST);
+ if (employee) {
+ employee->buildingID = -1;
+ } else {
+ Sys_Error("CL_CheckResearchStatus: More scientists assigned to tech than scientists assigned total.\n");
+ }
+ tech->scientists--; /* Moved here to avoid inf loop in case of data struction corruption*/
+ }
tech->base_idx = -1;
- tech->scientists = 0;
RS_MarkResearched(tech->id);
researchListPos = 0;
newResearch++;
I tried to post this on the issue tracker on sourceforge, without much success.