Index: /Daodan/build.bat
===================================================================
--- /Daodan/build.bat	(revision 427)
+++ /Daodan/build.bat	(revision 428)
@@ -1,1 +1,1 @@
-gcc -O3 -s -Wall -shared -fomit-frame-pointer -o build\binkw32.dll src\Oni_Symbols.S src\Daodan.c src\Daodan_DLLStubs.c src\Daodan_Patch.c src\Daodan_Utility.c src\Daodan_Win32.c src\Daodan_Cheater.c src\Daodan_Persistence.c src\Daodan_WindowHack.c src\daodan_gl.c src\inifile_reader.c -lgdi32
+gcc -O3 -s -Wall -shared -fomit-frame-pointer -o build\binkw32.dll src\Oni_Symbols.S src\Daodan.c src\Daodan_DLLStubs.c src\Daodan_Patch.c src\Daodan_Utility.c src\Daodan_Win32.c src\Daodan_Cheater.c src\Daodan_Persistence.c src\Daodan_WindowHack.c src\daodan_gl.c src\Daodan_Character.c src\inifile_reader.c -lgdi32
Index: /Daodan/src/Daodan_Character.c
===================================================================
--- /Daodan/src/Daodan_Character.c	(revision 427)
+++ /Daodan/src/Daodan_Character.c	(revision 428)
@@ -1,25 +1,29 @@
 #include <stdlib.h>
+#include "Daodan_Character.h"
 #include "Oni_Character.h"
 
-int DDr_TeamToTeamID(const char* team_string) { //Already something like this in the engine, but I'm reimplementing it...
-	if (!strcmp(team_string, "Konoko")) return 0;
-	if (!strcmp(team_string, "TCTF")) return 1;
-	if (!strcmp(team_string, "Syndicate")) return 2;
-	if (!strcmp(team_string, "Neutral")) return 3;
-	if (!strcmp(team_string, "SecurityGuard")) return 4;
-	if (!strcmp(team_string, "RougeKonoko")) return 5;
-	if (!strcmp(team_string, "Switzerland")) return 6;
-	if (!strcmp(team_string, "SyndicateAccessory")) return 7;
-	return 3; //if you enter a bad teamname, return Neutral.....
+int DDr_TeamToTeamID(const char* team_string) //Already something like this in the engine, but I'm reimplementing it...
+{
+	if (!strcmp(team_string, "Konoko"))                  return team_konoko;
+	else if (!strcmp(team_string, "TCTF"))               return team_tctf;
+	else if (!strcmp(team_string, "Syndicate"))          return team_syndicate;
+	else if (!strcmp(team_string, "Neutral"))            return team_neutral;
+	else if (!strcmp(team_string, "SecurityGuard"))      return team_securityguard;
+	else if (!strcmp(team_string, "RougeKonoko"))        return team_rougekonoko;
+	else if (!strcmp(team_string, "Switzerland"))        return team_switzerland;
+	else if (!strcmp(team_string, "SyndicateAccessory")) return team_syndicateaccessory;
+	return team_neutral; //if you enter a bad teamname, return Neutral.....
 }
 
-int CHARTest() {
+void CHARTest()
+{
 	CharacterObject TestCHAR;
 	memset(&TestCHAR, 0, sizeof(CharacterObject));
-	TestCHAR.Header.Type = "CHAR";
-	TestCHAR.OSD.Name = "Gumby";
-	TestCHAR.OSD.Class = "muro_generic";
-	TestCHAR.OSD.TeamID = DDr_TeamToTeamID("Syndicate");
-	ONrGameState_NewCharacter(&TestCHAR, 0);
-	return 0;
+	
+	memcpy(TestCHAR.Header.Type, "CHAR", 5);
+	memcpy(TestCHAR.OSD.Name, "Gumby", 6);
+	memcpy(TestCHAR.OSD.Class, "muro_generic", 13);
+	TestCHAR.OSD.TeamID = team_syndicate;
+	
+	ONrGameState_NewCharacter(&TestCHAR, NULL);
 }
Index: /Daodan/src/Daodan_Character.h
===================================================================
--- /Daodan/src/Daodan_Character.h	(revision 428)
+++ /Daodan/src/Daodan_Character.h	(revision 428)
@@ -0,0 +1,11 @@
+#pragma once
+#ifndef ONI_CHARACTER_H
+#define ONI_CHARACTER_H
+
+#include "Daodan.h"
+#include <stdint.h>
+
+int DDr_TeamToTeamID(const char* team_string);
+void CHARTest();
+
+#endif
Index: /Daodan/src/Daodan_WindowHack.c
===================================================================
--- /Daodan/src/Daodan_WindowHack.c	(revision 427)
+++ /Daodan/src/Daodan_WindowHack.c	(revision 428)
@@ -2,10 +2,9 @@
 #include "Daodan_WindowHack.h"
 #include "Daodan_Patch.h"
+#include "Daodan_Character.h"
 
 #include "Oni.h"
 #include "BFW_Motoko_Draw.h"
 #include "oni_gl.h"
-
-#include "Oni_Character.h"
 
 volatile HWND onihwnd, boxhwnd = NULL;
Index: /Daodan/src/Oni_Character.h
===================================================================
--- /Daodan/src/Oni_Character.h	(revision 427)
+++ /Daodan/src/Oni_Character.h	(revision 428)
@@ -1,13 +1,8 @@
 #pragma once
-#ifndef ONI_CHARS_H
-#define ONI_CHARS_H
-#endif
+#ifndef ONI_CHARACTER_H
+#define ONI_CHARACTER_H
 
 #include "Daodan.h"
 #include <stdint.h>
-
-int DDr_TeamToTeamID(const char*);
-ONICALL ONrGameState_NewCharacter(int, int);
-int CHARTest();
 
 typedef struct {
@@ -16,6 +11,4 @@
 	float Z;	
 } Vector3; //probably move to utilities...
-
-
 
 typedef struct {
@@ -27,10 +20,8 @@
 	int EditorCallbacks;	//Lets try not to mess with it for now. :P
 	int field_28;			//unknown
-	
 } OSD_Header;
 
-
 typedef struct {
-	int32_t Options;				//A bitset. Someone had better define these
+	uint32_t Options;				//A bitset. Someone had better define these
 	char Class[64];					//Name of the ONCC we use. ONCCName in idb
 	char Name[32];					//Name of the character. ie: ai2_spawn Muro
@@ -87,2 +78,17 @@
 	CharacterOSD OSD;
 } CharacterObject;
+
+enum {
+	team_konoko,
+	team_tctf,
+	team_syndicate,
+	team_neutral,
+	team_securityguard,
+	team_rougekonoko,
+	team_switzerland,
+	team_syndicateaccessory,
+};
+
+int ONICALL ONrGameState_NewCharacter(CharacterObject* character, void* something);
+
+#endif
