Sorry if this offends anyone but....
The clicking cheat is a load of crap!Keep in mind that morale affects the research rate, as well as the game type. Research is complete 3 times faster in multiplayer.
Now I've previously stated reasons for why it is crap but people still persist. So, allow me to attempt to dispel an belief that lingers here.
Every 0xC0 (192 decimal) game cycles, approximately 2 time marks, the research progress at a lab is advanced by a chunk. The progress is kept track of by maintaining the amount of research that needs to be done in order to complete the tech. This values is stored internally as 256*researchCost where the researchCost is the value found in the sheets files. So for a cost of 1800, a value of 1800*256 = 460800 is stored in memory. This is the initial value set when research is started. Now every 192 game cycles, this value is decremented by a chunk. The amount it is decremented by is determined by the morale level, the number of scientists researching, and the max number of scientists you are allowed to assign to this research, as well as whether or not this is a multiplayer DLL.
First of all, the number of scientists assigned to research is loaded. Then a table lookup is performed to determine the efficiency of each scientist, which is dependent on the number of scientists assigned. (If you want to know how the number of scientists affects efficiency, you can find out yourself. I have no trouble keeping that secret to myself.) Now, the player's morale level is loaded and a table lookup is performed to determine how much to scale the research rate by. The values in morale.txt are used, scaled to a fraction out of 256. (So a value of 15 would be stored in memory as 15*256/100, rounded to a whole number of course). This is used as a multiplier, so a research bonus of 15 in morale.txt corresponds to a 15% increase in research speed. (Note: That really means the multiplier is 115%)
Now, at this point, the values loaded above are multiplied together. The efficiency rate is multiplied by the morale modifier, and then the result is multiplied by the number of assigned scientists. Now, a check is made to determine if this is a multiplayer map. If it is, this value is further multiplied by 3. (The determination is made by the missionType field in the DescBlock export of the DLL).
This calculated value is then subtracted from the amount of research needed to complete the tech. When the amount of research needed reaches 0, the player obtains the tech.
Now, I have used hardware breakpoints while examining this code and I know for a fact that no other code (aside from the initial setup when a tech is first researched, as mentioned above) even attempts to write to the amount of research needed to complete the tech. Thus, only this code can modify how fast the research gets completed. Further, I have also used hardware breakpoints on the other data used to calculate the amount research is progressed by, and I know they aren't modified either. The ONLY thing that changes on it's own, is the morale level. Other than that, you have to change the number of assigned scientists to change the research rate. Once a level is loaded, the multiplayer status of the DLL doesn't change, the max number of scientists you are allowed to assign to research doesn't change, and the modifiers for each morale level don't change. I have tested this thuroughly.
Also, before you ask, I actually tried the clicking thing. I felt like an idiot doing it, rightly so, but I tried it none the less, and no boogie men appeared. The code executed exactly as it always did. And yes, I tested this thuroughly. There was no change in actual rate, or even apparent rate of research. Also, I'm sure the value I was monitoring was the research progress since changing it would change how far along researching I was. It was possible to get techs instantly as well as make techs take forever to get.
Now, in case anyone doesn't believe my analysis of the code, I'll post the juicy bit here for you to look over yourself. (And yes, the memory addresses are real so you can check into this yourself and see this really is the code from Outpost2.exe)
0043E48A MOV EAX,DWORD PTR DS:[ESI] ; Load lab.vtbl; Case C of switch 0043E0AF
0043E48C MOV ECX,ESI ; Load "this" pointer (Unit - lab)
0043E48E CALL DWORD PTR DS:[EAX+A0] ; Returns 1 if unit is able to work (0 for inactive/disabled)
0043E494 TEST EAX,EAX
0043E496 JE Outpost2.0043E0CA ; -> Return 0 (Lab Unit is unable to research)
0043E49C MOV AX,WORD PTR DS:[ESI+24] ; Load lab.timeLeftToIncrement
0043E4A0 DEC AX
0043E4A2 MOV WORD PTR DS:[ESI+24],AX
0043E4A6 JNZ Outpost2.0043E0CA ; -> Return 0
0043E4AC MOV WORD PTR DS:[ESI+24],0C0
0043E4B2 MOV EDX,DWORD PTR DS:[ESI+60] ; Load lab.techNum
0043E4B5 MOV EAX,DWORD PTR DS:[56C234] ; Load base address of TechInfo* array
0043E4BA MOVSX ECX,BYTE PTR DS:[ESI+64] ; Load lab.numScientists
0043E4BE MOV EBX,DWORD PTR DS:[EAX+EDX*4] ; Load TechInfo*
0043E4C1 NOP
0043E4C2 LEA EDX,DWORD PTR DS:[ECX+ECX*2] ; EDX := numScientists*3
0043E4C5 NOP
0043E4C6 MOV EBP,DWORD PTR DS:[EBX+14] ; Load TechInfo.maxScientists
0043E4C9 LEA EAX,DWORD PTR DS:[EDX+EDX*4] ; EDX := numScientists*15
0043E4CC MOVSX EDI,BYTE PTR SS:[EBP+EAX+4E0CD5] ; Load efficiency of each scientist
0043E4D4 MOV AL,BYTE PTR DS:[ESI+1D] ; Load lab.ownerID (from lower 4 bits)
0043E4D7 AND EAX,0F
0043E4DA MOV EDX,EAX ; Begin player offset calculation
0043E4DC SHL EAX,3
0043E4DF LEA EBX,DWORD PTR DS:[EAX+EAX*2]
0043E4E2 LEA EBP,DWORD PTR DS:[EDX+EBX*4]
0043E4E5 LEA EAX,DWORD PTR DS:[EDX+EBP*8]
0043E4E8 MOV EAX,DWORD PTR DS:[EAX*4+56EF50] ; Load Player.moraleLevel
0043E4EF SHL EAX,4
0043E4F2 MOV EAX,DWORD PTR DS:[EAX+EAX*2+565298] ; Load morale adjustment to research (% listed in morale.txt is scaled to fraction of 256)
0043E4F9 ADD EAX,100
0043E4FE IMUL EDI,EAX
0043E501 IMUL EDI,ECX
0043E504 CALL Outpost2.004028E0 ; IsMultiplayerDLL - returns 1 if DLL is for multiplayer, 0 otherwise
0043E509 TEST EAX,EAX
0043E50B JE SHORT Outpost2.0043E510 ; -> Skip (Not a multiplayer DLL)
0043E50D LEA EDI,DWORD PTR DS:[EDI+EDI*2] ; Multiply research progress by 3 (multiplayer DLL)
0043E510 MOV EAX,DWORD PTR DS:[ESI+3C] ; Load lab.researchNeededToComplete
0043E513 SUB EAX,EDI ; Subtract research done from total needed
0043E515 MOV DWORD PTR DS:[ESI+3C],EAX ; Store lab.researchNeededToComplete
0043E518 TEST EAX,EAX
0043E51A JG Outpost2.0043E0CA ; -> Return 0
; ... Complete research for player
Now can we please put this clicking thing to rest? All it does is ruin your mouse. Besides, even if it did work, it'd just be a waste of your time since you'd be falling behind by not maintaining the rest of your base.