keeping old addresses is very useful, you can then determine the offset difference and trend. Or when searching with a debugger you know the rough code area it should be located..
NOOB send me your cvs
P.s your sig scan is weird, why would you have wild cards as the first 3 bytes? Also your range is not good at all, you need to change your range to only scan the code section CShell, otherwise you will end up scanning from Cshell all the way into other running processes, Also your start address should be base + 1000, Otherwise once again you are scanning the headers of module instead of starting at the code section.
DWORD GameStatus = Pattern((DWORD)GetModuleHandleA("CShell.dll"),(DWO RD)0xFFFFFFFF,(PBYTE)"\x00\x00\x00\x37\xFF\x00\xFF ","???xxxx");
should be just $37,$FF,$00,$FF and then + $B9