Index: Daodan/MSVC/Daodan.c
===================================================================
--- Daodan/MSVC/Daodan.c	(revision 573)
+++ Daodan/MSVC/Daodan.c	(revision 574)
@@ -206,6 +206,6 @@
 	
 	// Disable loading the vtuneapi.dll
-	if (patch_killvtune)
-		DDrPatch_Byte  (OniExe + 0x00026340, 0xC3);
+	//if (patch_killvtune)
+		//DDrPatch_Byte  (OniExe + 0x00026340, 0xC3);
 	
 	// Disable Oni's internal CLrGetCommandLine function (to eventually replace it with our own)
@@ -235,9 +235,12 @@
 		DDrPatch_Const(0x0051BB64, regen_patch);
 	}
+	//Flatline related stuff
 	DDrPatch_MakeCall(0x004FBCEA, DDrText_Hook);
+	
 	DDrPatch_Int32(	0x004B24D2, 	FLrSpawnHack);
+
 	DDrPatch_NOOP(0x004C26CB, 6);
 	DDrPatch_MakeCall( 0x004C26CB, FLrHook_DoorOpen); 
-	
+	DDrPatch_MakeCall( 0x004EE3CF, FLrHook_ConsoleActivate);
 	return true;
 }
Index: Daodan/MSVC/Daodan_Utility.c
===================================================================
--- Daodan/MSVC/Daodan_Utility.c	(revision 573)
+++ Daodan/MSVC/Daodan_Utility.c	(revision 574)
@@ -139,4 +139,6 @@
 unsigned int lastPasteTime;
 
+//TODO: Fix what happens when you hold down paste
+//Check if console is open
 void DDrPasteHack()
 {
@@ -161,5 +163,7 @@
 						lastPasteTime = ONgGameState->GameTime;
 					}
+					CloseClipboard();
 				}
+
 			}
 			else
Index: Daodan/MSVC/Flatline.h
===================================================================
--- Daodan/MSVC/Flatline.h	(revision 573)
+++ Daodan/MSVC/Flatline.h	(revision 574)
@@ -191,4 +191,5 @@
 	EV_DISCONNECT,
 	EV_DOOR_OPEN,
+	EV_CONSOLE_USE,
 	EV_MAX,
 };
Index: Daodan/MSVC/Flatline_BSL.c
===================================================================
--- Daodan/MSVC/Flatline_BSL.c	(revision 573)
+++ Daodan/MSVC/Flatline_BSL.c	(revision 574)
@@ -194,6 +194,11 @@
 return 0;
 }
-
-
+uint16_t ONICALL con(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret)
+{
+	OBJrConsole_OnActivate( OBJrConsole_GetByID(args[0].value_int32), PlayerList[0]->Chr );
+	return 0;
+}
+
+		
 void SLrFlatline_Initialize() {
 	
@@ -209,4 +214,5 @@
 	SLrScript_Command_Register_ReturnType("addbot","adds a fake client", "", sl_void, addfake);
 	SLrScript_Command_Register_Void("kick", "Kicks a client from the server", "clientnum:int", kick);
+	SLrScript_Command_Register_Void("con", "Activates a console", "con:int", con);
 	//SLrScript_Command_Register_ReturnType("ai2_spawn","creates and starts an AI from a character object","ai_name:string [force_spawn:string{\"force\"} | ]", sl_void, spawnAI);
 }
Index: Daodan/MSVC/Flatline_Server.c
===================================================================
--- Daodan/MSVC/Flatline_Server.c	(revision 573)
+++ Daodan/MSVC/Flatline_Server.c	(revision 574)
@@ -121,4 +121,5 @@
 }
 
+//Always make sure you send a pointer to this, even if it is just one arg. ;)
 void FLsPublic_Event( unsigned int eventIndex, int * args )
 {
Index: Daodan/MSVC/Oni_GameState.h
===================================================================
--- Daodan/MSVC/Oni_GameState.h	(revision 573)
+++ Daodan/MSVC/Oni_GameState.h	(revision 574)
@@ -387,5 +387,4 @@
 	DoorOSD Door; //incomplete
 } DoorObject;
-
 
 typedef struct {
@@ -1287,5 +1286,5 @@
   int field_221C;
   char gap_2220[8];
-  int field_2228;
+  Matrix4x3  * ExtraBody;
   char gap_222c[76];
   Matrix4x3 BoneMatrices[19];
Index: Daodan/MSVC/Oni_Symbols.c
===================================================================
--- Daodan/MSVC/Oni_Symbols.c	(revision 573)
+++ Daodan/MSVC/Oni_Symbols.c	(revision 574)
@@ -132,10 +132,10 @@
 DefFunc( COrMessage_Print						, 0x004304B0 );
 DefFunc( COrTextArea_Print						, 0x00431340 );
-DefFunc( COrConsole_StatusLine_Display			, 0x00431E70 );
+//DefFunc( COrConsole_StatusLine_Display			, 0x00431E70 );
 
 DefFunc( OBJrObjectType_EnumerateObjects		, 0x004D0080 );
 //DefFunc( OBJiObjectGroup_GetNumObjects			, 
 
-DefFunc( ONiGameState_FindAutoPromptMessage		, 0x004FDBE0 );
+//DefFunc( ONiGameState_FindAutoPromptMessage		, 0x004FDBE0 );
 DefFunc( ONiMain								, 0x004d3280 );
 
@@ -181,6 +181,8 @@
 DefFunc( OBJrDoor_Open							, 0x004C26C0 );
 DefFunc( OBJrDoor_ForceOpen						, 0x004C1EE0 );
-
-#define DefVar(type, name, address) type* _##name = (type*)address
+//DefFunc( OBJrConsole_GetByID					, 0x004C0950 );
+DefFunc( OBJrConsole_OnActivate					, 0x004C0880 );
+
+#define DefVar(type, name, address) //type* _##name = (type*)address
 
 DefVar( onibool,		ai2_deaf,				0x005ec0c1 );
Index: Daodan/MSVC/Oni_Symbols.h
===================================================================
--- Daodan/MSVC/Oni_Symbols.h	(revision 573)
+++ Daodan/MSVC/Oni_Symbols.h	(revision 574)
@@ -6,31 +6,36 @@
 #include "Oni_Character.h"
 #include "BFW_ScriptLang.h"
-#define DefVar(type, name, address) extern type* _##name
+#define DefVar(type, name, address) static type* _##name = (type*)address
 //variables
 
-///BADBAD DONT DO THIS
-extern onibool* _ai2_deaf;
-extern char* _AKgDebug_DebugMaps;
-extern HINSTANCE* _g_Instance;
-extern ONtPlatformData* _ONgPlatformData;
-extern char* _opt_ignore_private_data;
-extern char* _opt_sound;
-
 //DO THIS INSTEAD!
-DefVar( GameState* , ONgGameState          , 0x005ece7c );
-
-DefVar( bool,			BFgDebugFileEnable,		0x0055c8d0 );
-DefVar( bool,			SSgSearchOnDisk,		0x005eb758);
-DefVar( char,			M3gResolutionSwitch,	0x00531634);
+DefVar( onibool,		ai2_deaf,				0x005ec0c1 );
+
+DefVar(	HINSTANCE,		g_Instance,				0x0061F9E4 );
+
+DefVar( gl_api_t*,		gl_api,					0x00560604 );
 DefVar( gl_engine_t*,	gl_eng,					0x00560600 );
-DefVar( gl_api_t*,		gl_api,					0x00560604 );
 DefVar( WORD*,			gl_gamma_ramp,			0x0055fdfc );
 DefVar( int,			gl_gamma_ramp_valid,	0x005603fc );
-DefVar( uint32_t, COgConsoleLines                    , 0x005cb468 );
-DefVar( uint32_t, COgFadeTimeValue                         , 0x00533f68 );
-DefVar( uint32_t, COgDefaultTextShade                      , 0x00533f70 );
-DefVar( uint32_t, COgDefaultTextShadow                     , 0x00533f74 );
-DefVar( FILE*, ONgFileStartup                           , 0x005711b8 );
-
+
+DefVar(	char,			opt_ignore_private_data,0x006370f0 );
+DefVar( char,			opt_sound,				0x006370fc ); 
+
+DefVar( char,			AKgDebug_DebugMaps,		0x002b2204 );
+
+DefVar( bool,			BFgDebugFileEnable,		0x0055c8d0 );
+
+DefVar( uint32_t,		COgConsoleLines,		0x005cb468 );
+DefVar( uint32_t,		COgDefaultTextShade,	0x00533f70 );
+DefVar( uint32_t,		COgDefaultTextShadow,	0x00533f74 );
+DefVar( uint32_t,		COgFadeTimeValue,		0x00533f68 );
+
+DefVar( FILE*,			ONgFileStartup,			0x005711b8 );
+DefVar( GameState*,		ONgGameState,			0x005ece7c );
+DefVar( ONtPlatformData,ONgPlatformData,		0x0053100c );
+
+DefVar( char,			M3gResolutionSwitch,	0x00531634 );
+
+DefVar( bool,			SSgSearchOnDisk,		0x005eb758 );
 #undef DefVar
 //Yes, I'm aware that there are a few ways this could go wrong
@@ -98,5 +103,5 @@
 typedef int			( __cdecl *_AUrMessageBox)(int Buttons, char *Message, ...);
 typedef char*		( *_SSrMessage_Find)(char* message_key); //Returns a prompt message from a message key
-typedef void		( *_ONiGameState_FindAutoPromptMessage)(char* Note, void* ptr);
+//typedef void		( *_ONiGameState_FindAutoPromptMessage)(char* Note, void* ptr);
 
 typedef uint16_t (ONICALL *sl_func)(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret);
@@ -108,5 +113,5 @@
 
 typedef int ( *_COrMessage_Print)(char* Message, char* Key, void* noidea);
-typedef void ( *_COrConsole_StatusLine_Display)();
+//typedef void ( *_COrConsole_StatusLine_Display)();
 typedef int16_t ( *_TMrInstance_GetDataPtr)(int tag, char* name, void* pointer);
 typedef char*	( *_TMrInstance_GetInstanceName)(void* InstancePointer);
@@ -148,5 +153,6 @@
 typedef void ( *_OBJrDoor_Open)( DoorObject *inObject, Character *inCharacter );
 typedef void ( *_OBJrDoor_ForceOpen)(short id);
-
+typedef short ( *_OBJrConsole_OnActivate)( void *inObject, Character *inCharacter );
+//typedef void* ( *_OBJrConsole_GetByID)( short ID );
 #define ExtFunc(name) extern _##name name
 ExtFunc(SLrScript_Command_Register_ReturnType);
@@ -155,7 +161,8 @@
 ExtFunc(SLrGlobalVariable_Register_Float);
 ExtFunc(SLrGlobalVariable_Register_String);
-ExtFunc(COrConsole_StatusLine_Display);
+//ExtFunc(COrConsole_StatusLine_Display);
 ExtFunc(OBJrObjectType_EnumerateObjects);
 //ExtFunc(OBJiObjectGroup_GetNumObjects);
+//ExtFunc(OBJrConsole_GetByID);
 ExtFunc(AI2iScript_Spawn);
 
@@ -204,5 +211,5 @@
 
 ExtFunc(SSrMessage_Find);
-ExtFunc(ONiGameState_FindAutoPromptMessage);
+//ExtFunc(ONiGameState_FindAutoPromptMessage);
 
 ExtFunc(TSrContext_DrawText);
@@ -211,3 +218,12 @@
 ExtFunc(OBJrDoor_Open);
 ExtFunc(OBJrDoor_ForceOpen);
+
+ExtFunc(OBJrConsole_OnActivate);
+//static const void* ( *OBJrConsole_GetByID)( short ID ) = (const void*(*)(short))0x004C0950;
+#undef DefFunc
+#define DefFunc( type, name, args, address) static const type ( * name ) args = (const type (*) args )address;
+DefFunc( void*, OBJrConsole_GetByID, (short ID), 0x004C0950);
+DefFunc( void, COrConsole_StatusLine_Display, (), 0x00431E70 );
+//typedef void		( *_ONiGameState_FindAutoPromptMessage)(char* Note, void* ptr);
+DefFunc( void, ONiGameState_FindAutoPromptMessage, (char* Note, void* ptr), 0x004FDBE0 );
 #endif
