Index: /Daodan/src/Daodan.c
===================================================================
--- /Daodan/src/Daodan.c	(revision 836)
+++ /Daodan/src/Daodan.c	(revision 837)
@@ -87,5 +87,5 @@
 bool DDrPatch_Init()
 {
-	DDrStartupMessage("patching engine");
+	DDrStartupMessage("Daodan: Patching engine");
 	
 	// Font texture cache doubled
@@ -263,21 +263,24 @@
 	if(patch_chinese)
 	{
-		HMODULE dll;
-		DWORD err;
-
- 		DDrStartupMessage("Loading chinese DLL");
-		dll = LoadLibrary("xfhsm_oni.dll");
-		err = GetLastError();
-		if( dll )
+		if (GetFileAttributes("xfhsm_oni.dll") != INVALID_FILE_ATTRIBUTES)
 		{
-			void* proc = GetProcAddress( dll, "InstallHook" );
-			if(proc)
+			HMODULE dll;
+			DWORD err;
+
+	 		DDrStartupMessage("Daodan: Loading chinese DLL");
+			dll = LoadLibrary("xfhsm_oni.dll");
+			err = GetLastError();
+			if( dll )
 			{
-				((CHINESEPROC)proc)(GetCurrentThreadId());
+				void* proc = GetProcAddress( dll, "InstallHook" );
+				if(proc)
+				{
+					((CHINESEPROC)proc)(GetCurrentThreadId());
+				}
+			} else {
+				char msg[100];
+				FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, msg, 100, NULL);
+				DDrStartupMessage("Daodan: Loading DLL failed with error %i: %s", err, msg);
 			}
-		} else {
-			char msg[100];
-			FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, msg, 100, NULL);
-			DDrStartupMessage(" - Module loading failed with error %i: %s", err, msg);
 		}
 	}
@@ -364,5 +367,5 @@
 		{
 			ini_section = s_unknown;
-			DDrStartupMessage("unrecognised section \"%s\"", section);
+			DDrStartupMessage("Daodan: Unrecognised ini section \"%s\"", section);
 		}
 	}
@@ -394,5 +397,5 @@
 				opt_gamma = !_stricmp(inifile_cleanstr(value), "true");
 			else
-				DDrStartupMessage("unrecognised option \"%s\"", name);
+				DDrStartupMessage("Daodan: Unrecognised ini option \"%s\"", name);
 			break;
 		case s_patch:
@@ -458,5 +461,5 @@
 				patch_binkplay = !_stricmp(inifile_cleanstr(value), "true");
 			else
-				DDrStartupMessage("unrecognised patch \"%s\"", name);
+				DDrStartupMessage("Daodan: Unrecognised ini patch \"%s\"", name);
 			break;
 		case s_language:
@@ -568,5 +571,5 @@
 				DDr_CheatTable[21].message_off = _strdup(value);
 			else
-				DDrStartupMessage("unrecognised language item \"%s\"", name);
+				DDrStartupMessage("Daodan: Unrecognised ini language item \"%s\"", name);
 			break;
 		case s_bsl:
@@ -584,5 +587,5 @@
 	{
 		FILE* fp;
-		DDrStartupMessage("daodan.ini doesn't exist, creating");
+		DDrStartupMessage("Daodan: daodan.ini doesn't exist, creating");
 		fp = fopen("daodan.ini", "w");
 		if (fp)
@@ -593,8 +596,8 @@
 	}
 	
-	DDrStartupMessage("parsing daodan.ini...");
+	DDrStartupMessage("Daodan: Parsing daodan.ini...");
 	if (!inifile_read("daodan.ini", DDrIniCallback))
-		DDrStartupMessage("error reading daodan.ini, check your syntax!");
-	DDrStartupMessage("finished parsing");
+		DDrStartupMessage("Daodan: Error reading daodan.ini, check your syntax!");
+	DDrStartupMessage("Daodan: Finished parsing");
 }
 
@@ -651,5 +654,5 @@
 	bool falseoption;
 
-	DDrStartupMessage("daodan attached!");
+	DDrStartupMessage("Daodan: Daodan attached!");
 	
 	// Tell Oni to not load non levelX_final-files by default:
@@ -660,5 +663,5 @@
 	
 	DDrConfig();
-	DDrStartupMessage("parsing command line...");
+	DDrStartupMessage("Daodan: Parsing command line...");
 	for (i = 1; i < argc; i ++)
 	{
@@ -688,9 +691,9 @@
 		else
 		{
-			DDrStartupMessage("parse error \"%s\"", argv[i]);
+			DDrStartupMessage("Daodan: Parse error \"%s\"", argv[i]);
 			break;
 		}
 	}
-	DDrStartupMessage("finished parsing");
+	DDrStartupMessage("Daodan: Finished parsing");
 	DDrPatch_Init();
 	
Index: /Daodan/src/Daodan_BSL.c
===================================================================
--- /Daodan/src/Daodan_BSL.c	(revision 836)
+++ /Daodan/src/Daodan_BSL.c	(revision 837)
@@ -797,5 +797,5 @@
 		
 		if (!*type)
-			DDrStartupMessage("badly formed bsl definition for \"%s\"", name);
+			DDrStartupMessage("Daodan: Badly formed bsl definition for \"%s\"", name);
 		
 		if (!strcmp(type, "int"))
@@ -809,5 +809,5 @@
 		else
 		{
-			DDrStartupMessage("unknown type in bsl definition for \"%s\"", name);
+			DDrStartupMessage("Daodan: Unknown type in bsl definition for \"%s\"", name);
 			return true;
 		}
@@ -854,7 +854,7 @@
 void SLrConfig()
 {
-	DDrStartupMessage("re-parsing daodan.ini for bsl...");
+	DDrStartupMessage("Daodan: Re-parsing daodan.ini for bsl...");
 	inifile_read("daodan.ini", SLrIniCallback);
-	DDrStartupMessage("finished parsing");
+	DDrStartupMessage("Daodan: Finished parsing");
 }
 
@@ -867,8 +867,8 @@
 		if(errornum)
 		{
-			DDrStartupMessage("Registration of script command %s failed with error %i", name, errornum);
+			DDrStartupMessage("Daodan: Registration of script command %s failed with error %i", name, errornum);
 		}
 	} else {
-		DDrStartupMessage("Registration of script command %s failed because of a too long argfmt", name);
+		DDrStartupMessage("Daodan: Registration of script command %s failed because of a too long argfmt", name);
 	}
 }
Index: /Daodan/src/Daodan_Cheater.c
===================================================================
--- /Daodan/src/Daodan_Cheater.c	(revision 836)
+++ /Daodan/src/Daodan_Cheater.c	(revision 837)
@@ -42,6 +42,5 @@
 	{ "bigbadboss",       "Boss Shield Enabled",             "Boss Shield Disabled",       cheat_bigbadboss       },
 	{ "bulletproof",      "Force Field Enabled",             "Force Field Disabled",       cheat_bulletproof      },
-	{ "kangaroo",         "Alex Okita Mode Enabled",         "Alex Okita Mode Disabled",   cheat_kangaroo         },
-	{ "himynameisalex",   "Kangaroo Jump Enabled",		     "Kangaroo Jump Disabled",	   cheat_kangaroo         },
+	{ "kangaroo",         "Kangaroo Jump Enabled",	         "Kangaroo Jump Disabled",     cheat_kangaroo         },
 	{ "marypoppins",      "Jet Pack Mode Enabled",           "Jet Pack Mode Disabled",     cheat_marypoppins      },
 	{ "buddha",           "Unkillable Enabled",              "Unkillable Disabled",        cheat_buddha           },
Index: /Daodan/src/Daodan_GL.c
===================================================================
--- /Daodan/src/Daodan_GL.c	(revision 836)
+++ /Daodan/src/Daodan_GL.c	(revision 837)
@@ -67,5 +67,5 @@
 	signed int j;
 	
-	DDrStartupMessage("listing display modes");
+	DDrStartupMessage("Daodan: Listing display modes");
 
 	memset(modes, 0, sizeof(M3tDisplayMode) * DD_MAX_MODES);
@@ -168,7 +168,7 @@
 	}
 
-	DDrStartupMessage("%u modes available:", vmodes);
+	DDrStartupMessage("Daodan: %u modes available:", vmodes);
 	for (i = 0; i < vmodes; ++i)
-		DDrStartupMessage("  %ux%ux%u", modes[i].Width, modes[i].Height, modes[i].Depth);
+		DDrStartupMessage("Daodan:   %ux%ux%u", modes[i].Width, modes[i].Height, modes[i].Depth);
 
 	return vmodes;
@@ -330,10 +330,10 @@
 		if (gl_api->wglSetDeviceGammaRamp3DFX)
 		{
-			UUrStartupMessage("Using 3dfx gamma adjustment");
+			UUrStartupMessage("Daodan: Using 3dfx gamma adjustment");
 			GLgGammaRampValid = gl_api->wglGetDeviceGammaRamp3DFX(gl->hDC, GLgInitialGammaRamp);
 		}
 		else
 		{
-			UUrStartupMessage("Using Windows gamma adjustment");
+			UUrStartupMessage("Daodan: Using Windows gamma adjustment");
 			GLgGammaRampValid = GetDeviceGammaRamp(gl->hDC, GLgInitialGammaRamp);
 		}
@@ -399,5 +399,5 @@
 	if (!M3gResolutionSwitch && opt_gamma)
 	{
-		UUrStartupMessage("Ignoring gamma setting due to windowed mode");
+		UUrStartupMessage("Daodan: Ignoring gamma setting due to windowed mode");
 		opt_gamma = false;
 	}
@@ -422,5 +422,5 @@
 
 exit_err:
-	AUrMessageBox(1, "Failed to initialize OpenGL contexts; Oni will now exit.");
+	AUrMessageBox(1, "Daodan: Failed to initialize OpenGL contexts; Oni will now exit.");
 	exit(0);
 	return 0;
Index: /Daodan/src/Daodan_Win32.c
===================================================================
--- /Daodan/src/Daodan_Win32.c	(revision 836)
+++ /Daodan/src/Daodan_Win32.c	(revision 837)
@@ -125,5 +125,5 @@
 	if (FindWindow("ONI ", "ONI "))
 	{
-		AUrMessageBox(1, "There is already an instance of the game running.");
+		AUrMessageBox(1, "Daodan: There is already an instance of the game running.");
 		exit(0);
 	}
Index: /Daodan/src/_Version.h
===================================================================
--- /Daodan/src/_Version.h	(revision 836)
+++ /Daodan/src/_Version.h	(revision 837)
@@ -6,5 +6,5 @@
 
 #define DAODAN_VERSION_MAJOR 3
-#define DAODAN_VERSION_MINOR 2
+#define DAODAN_VERSION_MINOR 3
 #define DAODAN_VERSION_STRING STRINGIZE(DAODAN_VERSION_MAJOR) "." STRINGIZE(DAODAN_VERSION_MINOR)
 
