Index: /Daodan/src/BFW_Utility.h
===================================================================
--- /Daodan/src/BFW_Utility.h	(revision 475)
+++ /Daodan/src/BFW_Utility.h	(revision 476)
@@ -24,4 +24,6 @@
 void* TestContext;
 void ONICALL COrTextArea_Print(uint32_t area, uint32_t priority, uint32_t textshade, uint32_t textshadowshade, const char* text, uint32_t unk_alwaws_0, uint32_t fadetime);
+int ONICALL COrMessage_Print(char* Message, char* Key, void* noidea);
+void ONICALL COrMessage_Remove(char* Key);
 int16_t ONICALL TSrContext_DrawText(uint32_t TSrContext, char* Text, int alpha, uint32_t usuallyzero, OniRectangle* pRect);
 int16_t ONICALL TSrContext_New( void* FontInstance, int size, int hthsik1,int hthsik2,int hthsik3, void* TSrContext); //int16_t TSrContext_New( TSFF*, size 7, ??? 1, ??? 1, ??? 0, TSrContext*);
Index: /Daodan/src/Daodan.c
===================================================================
--- /Daodan/src/Daodan.c	(revision 475)
+++ /Daodan/src/Daodan.c	(revision 476)
@@ -8,4 +8,5 @@
 #include "Daodan_Persistence.h"
 #include "Daodan_BSL.h"
+#include "Daodan_Console.h"
 
 #include "Daodan_WindowHack.h"
@@ -179,5 +180,17 @@
 	//Test newweap patch
 //	if (patch_newweapon) {
-//		DDrPatch_NOOP( OniExe + 0x000E4DF8, 2);
+		
+		//Makes it always say "Recieved weapon_name."
+		//Needs check for loc_4DFC66
+		DDrPatch_NOOP( OniExe + 0x000E4DF8,2);
+
+		//Adds Weapon name and ammo meter to pickup autoprompt
+		DDrPatch_NOOP( OniExe + 0x000FAC73, 9);
+		DDrPatch_NOOP( OniExe + 0x000FAC80, 5);
+		DDrPatch_MakeCall( OniExe + 0xFAC85, DDrWeapon2Message);
+		
+		//Moves location of colors
+		DDrPatch_Int32( OniExe + 0x0002E3D5, (int)&DDrDSayColors[0].Char );
+		DDrPatch_Int32( OniExe + 0x0002E3DA, (int)&DDrDSayColors[0].Char );
 //	}
 	
Index: /Daodan/src/Daodan_BSL.c
===================================================================
--- /Daodan/src/Daodan_BSL.c	(revision 475)
+++ /Daodan/src/Daodan_BSL.c	(revision 476)
@@ -673,4 +673,9 @@
 }
 
+uint16_t ONICALL bsl_findmsg(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret)
+{
+	//DDrMake_Weapon_Message(args[0].value_str32);
+	return false;
+}
 void SLrDaodan_Initalize()
 {
@@ -684,5 +689,5 @@
 
 	SLrConfig();
-	
+	SLrScript_Command_Register_ReturnType("d_wp", "Shows weapon message", "wpn:string", sl_void, bsl_findmsg);
 
 	SLrScript_Command_Register_ReturnType("int32mul", "Multiplies two numbers", "n1:int n2:int", sl_int32, bsl_int32mul);
Index: /Daodan/src/Daodan_Cheater.c
===================================================================
--- /Daodan/src/Daodan_Cheater.c	(revision 475)
+++ /Daodan/src/Daodan_Cheater.c	(revision 476)
@@ -44,4 +44,6 @@
 };
 
+
+
 // Just copied all these defines from the old daodan, they were originaly from SFeLi's code.
 
Index: /Daodan/src/Daodan_Console.c
===================================================================
--- /Daodan/src/Daodan_Console.c	(revision 475)
+++ /Daodan/src/Daodan_Console.c	(revision 476)
@@ -31,2 +31,10 @@
 	return;
 }
+
+TStColorFormattingCharacter DDrDSayColors[] = {
+	{'r', 0, 0, 0xFFEB5050},
+	{'z', 0, 0, 0xFFFFFFFF},
+	{0}
+};
+
+		
Index: /Daodan/src/Daodan_Console.h
===================================================================
--- /Daodan/src/Daodan_Console.h	(revision 475)
+++ /Daodan/src/Daodan_Console.h	(revision 476)
@@ -14,4 +14,21 @@
 } RGBA;
 
+
+typedef struct {
+char A;
+char R;
+char G;
+char B;
+} ARGB;
+
+typedef struct {
+	char Char;
+	char ignored;
+	char alsoignored;
+	int Color; //ARGB Color;
+} TStColorFormattingCharacter;
+
+extern TStColorFormattingCharacter* TStColorFormattingCharacters;
+extern TStColorFormattingCharacter DDrDSayColors[];
 void DDrConsole_Print(const char* text);
 void DDrConsole_PrintColored(const char* text, int priority, RGBA color, RGBA shade);
Index: /Daodan/src/Daodan_Utility.c
===================================================================
--- /Daodan/src/Daodan_Utility.c	(revision 475)
+++ /Daodan/src/Daodan_Utility.c	(revision 476)
@@ -7,4 +7,5 @@
 #include "Daodan_Utility.h"
 #include "BFW_Utility.h"
+#include "Oni.h"
 
 const double fps = 60.0;
@@ -80,5 +81,41 @@
 //	if (!QueryPerformanceFrequency(&Frequency))
 		return 1000.0;
-
+	
 //	return Frequency.QuadPart;
 }
+	
+void ONICALL DDrWeapon2Message(int* weapon, void* output_ptr) {
+	char buffer[128] = {0};
+	char* weapon_string = (char*)(*(weapon + 1)+0x5C);
+	int16_t ammo = *(int16_t *)((int)weapon + 0x56);
+	int16_t maxammo = *(int16_t *)(*(weapon + 1)+0xC0);
+	float ratio = (float)ammo / (float)maxammo;
+	char ammocolor = ' ';
+	if(ratio >= .9) ammocolor = 'g';
+	else if (ratio >= .5) ammocolor = 'y';
+	else if (ratio >= .2) ammocolor = 'o';
+	else ammocolor = 'r';
+	DDrMake_Weapon_Message( weapon_string, buffer); //gets the name of the weapon and formats it...probably doesn't need to be in seperate func.
+	sprintf(SSrMessage_Find("autoprompt_weapon"), "%s |[%s.%i/%i]|", buffer, &ammocolor, ammo, maxammo); //copies the new string to ONGS
+	ONiGameState_FindAutoPromptMessage("weapon", output_ptr);	//does what the code i replaced does. Basically tells the game to show the msg.
+}
+
+
+void ONICALL DDrMake_Weapon_Message(char* weapon_string, char* output_ptr) {
+	char* weapon_msg = NULL;	//The normal "You have recieved X" message.
+	char weapon_name[64] = {'\0'};	//The stripped weapon name
+	//TODO, someday: dynamically detect different keybindings.
+	char default_msg[] = "Press [c.Q] to pick up weapon.";	//default return
+	
+	//Find the recieved message string
+	weapon_msg = SSrMessage_Find(weapon_string);
+	//this probably could be reorganized
+	if(weapon_msg) {	//SSrMsgblah returns NULL if it can't find the message key
+		memcpy(weapon_name, weapon_msg, (strstr(weapon_msg," received.") - weapon_msg )); //strips uneeded characters
+		sprintf(output_ptr, "Press [c.Q] to pick up %s", weapon_name);
+	}
+	else {
+		memcpy(output_ptr, default_msg, sizeof(default_msg));
+	}
+	
+}
Index: /Daodan/src/Daodan_Utility.h
===================================================================
--- /Daodan/src/Daodan_Utility.h	(revision 475)
+++ /Daodan/src/Daodan_Utility.h	(revision 476)
@@ -10,4 +10,5 @@
 double  ONICALL DDrMachineTime_High_Frequency();
 int64_t ONICALL DDrMachineTime_Sixtieths();
-
+void ONICALL DDrMake_Weapon_Message(char* weapon_string, char* output_ptr);
+void ONICALL DDrWeapon2Message(int* weapon, void* output_ptr);
 #endif
Index: /Daodan/src/Daodan_Win32.c
===================================================================
--- /Daodan/src/Daodan_Win32.c	(revision 475)
+++ /Daodan/src/Daodan_Win32.c	(revision 476)
@@ -35,7 +35,7 @@
 	Rect.right = Rect.left + Width;
 	Rect.bottom = Rect.top + Height;
-	AdjustWindowRect(&Rect, WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP, FALSE);
+	AdjustWindowRect(&Rect, WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP | WS_TILEDWINDOW , FALSE);
 
-	PlatformData->Window = CreateWindowEx(0, "ONI ", "ONI ", WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP, Rect.left, Rect.top, Rect.right - Rect.left, Rect.bottom - Rect.top, NULL, NULL, PlatformData->Instance, NULL);
+	PlatformData->Window = CreateWindowEx(0, "ONI ", "ONI ", WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP | WS_TILEDWINDOW , Rect.left, Rect.top, Rect.right - Rect.left, Rect.bottom - Rect.top, NULL, NULL, PlatformData->Instance, NULL);
 	ShowWindow(PlatformData->Window, SW_SHOWNORMAL);
 	UpdateWindow(PlatformData->Window);
Index: /Daodan/src/Oni.h
===================================================================
--- /Daodan/src/Oni.h	(revision 475)
+++ /Daodan/src/Oni.h	(revision 476)
@@ -22,4 +22,15 @@
 uint8_t ONICALL ONrCheater(uint32_t cheat);
 
+char* ONICALL SSrMessage_Find(char* message_key); //Returns a prompt message from a message key
+void ONICALL ONiGameState_FindAutoPromptMessage(char* Note, void* ptr);
+
+//
+void ONICALL TMrInstance_GetDataPtr_List( 
+	char Tag[4], //as in 'ONWC'
+	int MaxCount, //# of elements in PointerList
+	void** PointerList, //Where the found pointers go
+	int* FoundCount		//Where the number of pointers found go.
+	); 
+
 extern HINSTANCE g_Instance;
 extern ONtPlatformData ONgPlatformData;
@@ -37,3 +48,4 @@
 extern char SSgSearchOnDisk;
 
+
 #endif
Index: /Daodan/src/Oni_Symbols.S
===================================================================
--- /Daodan/src/Oni_Symbols.S	(revision 475)
+++ /Daodan/src/Oni_Symbols.S	(revision 476)
@@ -73,4 +73,9 @@
 symbol ( _COgDefaultTextShadow                     , 0x00133f74 )
 
+symbol ( _TStColorFormattingCharacter			   , 0x00133DA0 )
+
+symbol ( @COrMessage_Print@12					   , 0x000304B0 )
+symbol ( @COrMessage_Remove@4					   , 0x00030640 )
+
 // ScriptingLanguage
 symbol ( @SLrScript_Command_Register_ReturnType@20 , 0x00077b20 )
@@ -79,2 +84,8 @@
 symbol ( @SLrGlobalVariable_Register_Float@12      , 0x00077ec0 )
 
+// Messages
+symbol ( @SSrMessage_Find@4						   , 0x0007F550 )
+symbol ( @ONiGameState_FindAutoPromptMessage@8	   , 0x000FDBE0 )
+
+// Data
+symbol ( @TMrInstance_GetDataPtr_List@16		   , 0x00023540 )
Index: /Daodan/src/daodan_gl.c
===================================================================
--- /Daodan/src/daodan_gl.c	(revision 475)
+++ /Daodan/src/daodan_gl.c	(revision 476)
@@ -242,5 +242,5 @@
 		Rect.right = Rect.left + gl->DisplayMode.Width;
 		Rect.bottom = Rect.top + gl->DisplayMode.Height;
-		AdjustWindowRect(&Rect, WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_CAPTION, TRUE);
+		AdjustWindowRect(&Rect, WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_CAPTION |WS_TILEDWINDOW , FALSE);
 		
 		SetWindowPos(ONgPlatformData.Window, NULL, Rect.left, Rect.top, Rect.right - Rect.left, Rect.bottom - Rect.top, SWP_NOACTIVATE | SWP_NOZORDER);
