Index: Daodan/makefile
===================================================================
--- Daodan/makefile	(revision 687)
+++ Daodan/makefile	(revision 688)
@@ -8,6 +8,7 @@
 endif
 
-GCCFLAGS = -O0 -Wall -fomit-frame-pointer -fpack-struct
+GCCFLAGS = -std=c99 -O0 -Wall -fomit-frame-pointer -fpack-struct -pedantic -Wextra -Wno-unused-variable
 LINKFLAGS = -O0 -Wall -fomit-frame-pointer -fpack-struct -s -mdll
+LOCALE = LC_MESSAGES=C
 
 #LIBS = -lwinmm -lopengl32 -lgdi32
@@ -16,10 +17,10 @@
 OUT = build/binkw32.dll
 
-SRC = src/Daodan.c src/Daodan_BSL.c src/Daodan_Character.c src/Daodan_Cheater.c src/Daodan_Console.c src/daodan_gl.c src/Daodan_Patch.c src/Daodan_Persistence.c src/Daodan_Utility.c src/Daodan_Win32.c src/Daodan_WindowHack.c src/inifile_reader.c src/Oni_Symbols.c src/_DLLInfo.rc
+SRC = src/Daodan.c src/Daodan_BSL.c src/Daodan_Character.c src/Daodan_Cheater.c src/Daodan_Console.c src/daodan_gl.c src/Daodan_Patch.c src/Daodan_Persistence.c src/Daodan_Utility.c src/Daodan_Win32.c src/Daodan_WindowHack.c src/inifile_reader.c src/_DLLInfo.rc
 DEST = $(patsubst src/%.rc,build/%.o,$(patsubst src/%.c,build/%.o,$(SRC)))
 
 ALL: $(DEST) $(OBJS)
 	echo "Linking $<"
-	$(GCC) $(LINKFLAGS) -o $(OUT) $(DEST) $(OBJS) $(LIBS)
+	$(LOCALE) $(GCC) $(LINKFLAGS) -o $(OUT) $(DEST) $(OBJS) $(LIBS)
 
 clean:
@@ -29,5 +30,5 @@
 build/%.o: src/%.c
 	echo "Compiling $<"
-	$(GCC) $(GCCFLAGS) -c -o $@ $<
+	$(LOCALE) $(GCC) $(GCCFLAGS) -c -o $@ $<
 	echo
 
@@ -35,3 +36,4 @@
 	echo "Assembling resource $<"
 	$(WINDRES) -i $< -o $@
+	echo
 
Index: Daodan/src/BFW_ScriptLang.h
===================================================================
--- Daodan/src/BFW_ScriptLang.h	(revision 687)
+++ Daodan/src/BFW_ScriptLang.h	(revision 688)
@@ -24,5 +24,5 @@
 		float   value_float;
 		bool    value_bool;
-	};
+	} val;
 } sl_arg;
 
Index: Daodan/src/Daodan_BSL.c
===================================================================
--- Daodan/src/Daodan_BSL.c	(revision 687)
+++ Daodan/src/Daodan_BSL.c	(revision 688)
@@ -19,5 +19,5 @@
 uint16_t ONICALL bsl_int32mul(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret)
 {
-	ret->value_int32 = args[0].value_int32 * args[1].value_int32;
+	ret->val.value_int32 = args[0].val.value_int32 * args[1].val.value_int32;
 	ret->type = sl_int32;
 	return 0;
@@ -30,14 +30,14 @@
 	
 	if (args[0].type == sl_int32)
-		val1 = args[0].value_int32;
+		val1 = args[0].val.value_int32;
 	else
-		val1 = args[0].value_float;
+		val1 = args[0].val.value_float;
 	
 	if (args[1].type == sl_int32)
-		val2 = args[1].value_int32;
+		val2 = args[1].val.value_int32;
 	else
-		val2 = args[1].value_float;
-	
-	ret->value_float = (float)(val1 * val2);
+		val2 = args[1].val.value_float;
+	
+	ret->val.value_float = (float)(val1 * val2);
 	ret->type = sl_float;
 	return 0;
@@ -46,5 +46,5 @@
 uint16_t ONICALL bsl_int32div(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret)
 {
-	ret->value_int32 = args[0].value_int32 / args[1].value_int32;
+	ret->val.value_int32 = args[0].val.value_int32 / args[1].val.value_int32;
 	ret->type = sl_int32;
 	return 0;
@@ -56,14 +56,14 @@
 	
 	if (args[0].type == sl_int32)
-		val1 = args[0].value_int32;
+		val1 = args[0].val.value_int32;
 	else
-		val1 = args[0].value_float;
+		val1 = args[0].val.value_float;
 	
 	if (args[1].type == sl_int32)
-		val2 = args[1].value_int32;
+		val2 = args[1].val.value_int32;
 	else
-		val2 = args[1].value_float;
-	
-	ret->value_float = (float)(val1 / val2);
+		val2 = args[1].val.value_float;
+	
+	ret->val.value_float = (float)(val1 / val2);
 	ret->type = sl_float;
 	return 0;
@@ -75,18 +75,18 @@
 	int32_t end = 0;
 	
-	if (args[0].value_int32 == args[1].value_int32)
+	if (args[0].val.value_int32 == args[1].val.value_int32)
 		return 1;
-	else if (args[0].value_int32 > args[1].value_int32)
-	{
-		start = args[1].value_int32;
-		end = args[0].value_int32;
+	else if (args[0].val.value_int32 > args[1].val.value_int32)
+	{
+		start = args[1].val.value_int32;
+		end = args[0].val.value_int32;
 	}
 	else
 	{
-		start = args[0].value_int32;
-		end = args[1].value_int32;
-	}
-	
-	ret->value_int32 = start + (rand() % (uint32_t)(end - start + 1));
+		start = args[0].val.value_int32;
+		end = args[1].val.value_int32;
+	}
+	
+	ret->val.value_int32 = start + (rand() % (uint32_t)(end - start + 1));
 	ret->type = sl_int32;
 	return 0;
@@ -97,9 +97,9 @@
 	int index;
 	if (numargs == 0) index = 0;
-	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
+	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
 	//killcount = ONgGameState->CharacterStorage[index].Kills;
 		//ONgGameState + index * 0x16A0 + 0x1260 + 0x1670;
-	ret->value_int32 = ONgGameState->CharacterStorage[index].Kills;
+	ret->val.value_int32 = ONgGameState->CharacterStorage[index].Kills;
 	ret->type = sl_int32;
 	return 0;
@@ -110,7 +110,7 @@
 	int index;
 	if (numargs == 0) index = 0;
-	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
-	ret->value_int32 = ONgGameState->CharacterStorage[index].Damage;
+	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
+	ret->val.value_int32 = ONgGameState->CharacterStorage[index].Damage;
 	ret->type = sl_int32;
 	return 0;
@@ -127,30 +127,30 @@
 
 	if (numargs < 2 || args[1].type != sl_str32) return 1;
-	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
-
-	
-
-	if(!strcmp(args[1].value_str32,"ammo")) 
+	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
+
+	
+
+	if(!strcmp(args[1].val.value_str32,"ammo")) 
 	{
 		returnval = &(Chr[index].Inventory.AmmoUsed);
 	}
-	else if(!strcmp(args[1].value_str32,"hypo")) 
+	else if(!strcmp(args[1].val.value_str32,"hypo")) 
 	{
 		returnval = &(Chr[index].Inventory.HypoUsed);
 	}
-	else if(!strcmp(args[1].value_str32,"cells")) 
+	else if(!strcmp(args[1].val.value_str32,"cells")) 
 	{
 		returnval = &(Chr[index].Inventory.CellsUsed);
 	}
-	else if(!strcmp(args[1].value_str32,"invis")) 
+	else if(!strcmp(args[1].val.value_str32,"invis")) 
 	{
 		returnval = &(Chr[index].Inventory.CloakUsed);
 	}
-	else if(!strcmp(args[1].value_str32,"shield")) 
+	else if(!strcmp(args[1].val.value_str32,"shield")) 
 	{
 		returnval = &(Chr[index].Inventory.ShieldUsed);
 	}
-	else if(!strcmp(args[1].value_str32,"lsi")) 
+	else if(!strcmp(args[1].val.value_str32,"lsi")) 
 	{
 		returnval = &(Chr[index].Inventory.hasLSI);
@@ -170,12 +170,12 @@
 	//todo, add setting
 	
-	if(is_lsi) ret->value_int32 = (int)*(bool*)returnval;
-	else	ret->value_int32 = *(int*)returnval;
+	if(is_lsi) ret->val.value_int32 = (int)*(bool*)returnval;
+	else	ret->val.value_int32 = *(int*)returnval;
 	ret->type = sl_int32;
 
 	if (numargs >= 3) 
 	{
-		if(is_lsi) *(bool*)returnval = args[2].value_int32;
-		else *(int*)returnval = args[2].value_int32;
+		if(is_lsi) *(bool*)returnval = args[2].val.value_int32;
+		else *(int*)returnval = args[2].val.value_int32;
 	}
 	
@@ -190,16 +190,16 @@
 	int* health;
 	if (numargs == 0) index = 0;
-	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
+	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
 	Chr = ONgGameState->CharacterStorage;
 	health = &Chr[index].Health;
 
-	ret->value_int32 = *health;
-	ret->type = sl_int32;
-
-	if (args[1].value_int32) {
-		*health = args[1].value_int32;
-	}
-	ret->value_int32 = *health;
+	ret->val.value_int32 = *health;
+	ret->type = sl_int32;
+
+	if (args[1].val.value_int32) {
+		*health = args[1].val.value_int32;
+	}
+	ret->val.value_int32 = *health;
 	ret->type = sl_int32;
 	return 0;
@@ -211,6 +211,6 @@
 	Character* Chr;
 	if (numargs == 0) index = 0;
-	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
+	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
 	Chr = ONgGameState->CharacterStorage ;
 	
@@ -227,9 +227,9 @@
 	DDrConsole_PrintF("NoPath %s", Chr[index].ScriptNoPath);
 	*/
-	ret->value_int32 = Chr[index].RegenHax;
+	ret->val.value_int32 = Chr[index].RegenHax;
 	ret->type = sl_int32;
 
 	if (numargs >= 2) {
-		Chr[index].RegenHax = args[1].value_int32;
+		Chr[index].RegenHax = args[1].val.value_int32;
 	}
 	return 0;
@@ -246,16 +246,16 @@
 	if (numargs < 2) return 1;
 
-	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
-	if (index == -1) index = args[0].value_int32;
-
-	if (args[1].type == sl_str32) index2 = DDrGetCharacterIndexFromName(args[1].value_str32);
-	else index2 = args[1].value_int32;
-	if (index2 == -1) index2 = args[1].value_int32;
+	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
+	if (index == -1) index = args[0].val.value_int32;
+
+	if (args[1].type == sl_str32) index2 = DDrGetCharacterIndexFromName(args[1].val.value_str32);
+	else index2 = args[1].val.value_int32;
+	if (index2 == -1) index2 = args[1].val.value_int32;
 		Char1 = &Chr[index];
 	Char2 = &Chr[index2];
 
 
-	ret->value_float = sqrt( pow((Char1->Location.X - Char2->Location.X), 2) + pow((Char1->Location.Y - Char2->Location.Y), 2) + pow((Char1->Location.Z - Char2->Location.Z),2));
+	ret->val.value_float = sqrt( pow((Char1->Location.X - Char2->Location.X), 2) + pow((Char1->Location.Y - Char2->Location.Y), 2) + pow((Char1->Location.Z - Char2->Location.Z),2));
 	ret->type = sl_float;
 	return 0;
@@ -273,27 +273,27 @@
 
 	if (numargs < 2) return 1;
-	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
-	if (index == -1) index = args[0].value_int32;
+	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
+	if (index == -1) index = args[0].val.value_int32;
 	Chr = ONgGameState->CharacterStorage;
 	if(numargs == 3)
 	{
-		if (!strcmp(args[1].value_str32,"X") || !strcmp(args[1].value_str32,"x"))
+		if (!strcmp(args[1].val.value_str32,"X") || !strcmp(args[1].val.value_str32,"x"))
 			loc = &(Chr[index].Position.X);
-		else if (!strcmp(args[1].value_str32,"Y") || !strcmp(args[1].value_str32,"y"))
+		else if (!strcmp(args[1].val.value_str32,"Y") || !strcmp(args[1].val.value_str32,"y"))
 			loc = &(Chr[index].Position.Y);
-		else if (!strcmp(args[1].value_str32,"Z") || !strcmp(args[1].value_str32,"z"))
+		else if (!strcmp(args[1].val.value_str32,"Z") || !strcmp(args[1].val.value_str32,"z"))
 			loc = &(Chr[index].Position.Z);
 	}
 	else if (numargs == 4) {
 		ActiveCharacter* Active = (ActiveCharacter*)ONrGetActiveCharacter(&Chr[index]);
-		Chr[index].Location.X = args[1].value_float;
-		Chr[index].Location.Y = args[2].value_float;
-		Chr[index].Location.Z = args[3].value_float;
+		Chr[index].Location.X = args[1].val.value_float;
+		Chr[index].Location.Y = args[2].val.value_float;
+		Chr[index].Location.Z = args[3].val.value_float;
 		if(Active)
 		{
 			Active->PhyContext->Position = Chr[index].Location;
 		}
-		ret->value_float = 1;
+		ret->val.value_float = 1;
 		ret->type = sl_float;
 		return 0;
@@ -301,10 +301,10 @@
 	else return 1;
 	
-	ret->value_float = *loc;
+	ret->val.value_float = *loc;
 	ret->type = sl_float;
 	
 	if(numargs == 3) {
 		//currently broken, does nothing.
-		*loc = args[2].value_float;
+		*loc = args[2].val.value_float;
 	}
 	return 0;
@@ -315,6 +315,6 @@
 	int index;
 	if (numargs == 0) index = 0;
-	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
+	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
 	if(1) {
 	Character* Chr = ONgGameState->CharacterStorage ;
@@ -323,10 +323,10 @@
 	int oldhealth = Chr->Health;
 	if (numargs >= 2) {
-		*maxhealth = args[1].value_int32;
-	}
-	if (numargs >= 3 && args[2].value_bool) {
-		Chr->Health = (int)(((float)args[1].value_int32 / (float)oldmaxhealth) * (float)oldhealth);
-	}
-	ret->value_int32 = oldmaxhealth;
+		*maxhealth = args[1].val.value_int32;
+	}
+	if (numargs >= 3 && args[2].val.value_bool) {
+		Chr->Health = (int)(((float)args[1].val.value_int32 / (float)oldmaxhealth) * (float)oldhealth);
+	}
+	ret->val.value_int32 = oldmaxhealth;
 	ret->type = sl_int32;
 	return 0;
@@ -340,11 +340,11 @@
 	int index;
 	if (numargs == 0) index = 0;
-	else	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
+	else	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
 	if(1) {
 	Character* Chr = ONgGameState->CharacterStorage;
 	ActiveCharacter* Active = (ActiveCharacter*)ONrGetActiveCharacter(&Chr[index]);
 	if (!Active) return 1;
-//	ret->value_int32 = Active->LastDamageSourceCharacter;
+//	ret->val.value_int32 = Active->LastDamageSourceCharacter;
 	ret->type = sl_int32;
 	return 0;
@@ -360,18 +360,18 @@
 
 	if (numargs == 0) index = 0;
-	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
+	else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
 	if (index == -1) {
 		ret->type = sl_str32;
-		ret->value_str32 = "NULL";
+		ret->val.value_str32 = "NULL";
 		return 0;
 	}
 	name = &ONgGameState->CharacterStorage[index].Name;
 	if (numargs == 2) {
-		strncpy(name, (char*)args[1].value_str32, 31);
+		strncpy(name, (char*)args[1].val.value_str32, 31);
 	}
 	
 	ret->type = sl_str32;
-	ret->value_str32 = name;
+	ret->val.value_str32 = name;
 	
 	return 0;
@@ -383,5 +383,5 @@
 	//testing numargs...
 	ret->type = sl_int32;
-	ret->value_int32 = numargs;
+	ret->val.value_int32 = numargs;
 	return 0;
 }
@@ -399,20 +399,20 @@
 	}
 	if(numargs == 0) return 0;
-	if(numargs > 1 ) color.R = (char)args[1].value_int32;
+	if(numargs > 1 ) color.R = (char)args[1].val.value_int32;
 	else color.R = 255;
-	if(numargs > 2 ) color.G = (char)args[2].value_int32;
+	if(numargs > 2 ) color.G = (char)args[2].val.value_int32;
 	else color.G = 255;
-	if(numargs > 3 ) color.B = (char)args[3].value_int32;
+	if(numargs > 3 ) color.B = (char)args[3].val.value_int32;
 	else color.B = 255;
 	color.A = 0;
-	if(numargs > 5 ) shade.R = (char)args[5].value_int32;
+	if(numargs > 5 ) shade.R = (char)args[5].val.value_int32;
 	else shade.R = 0x3F;
-	if(numargs > 6 ) shade.G = (char)args[6].value_int32;
+	if(numargs > 6 ) shade.G = (char)args[6].val.value_int32;
 	else shade.G = 0x3F;
-	if(numargs > 7 ) shade.B = (char)args[7].value_int32;
+	if(numargs > 7 ) shade.B = (char)args[7].val.value_int32;
 	else shade.B = 0x3F;
 	shade.A = 0; 
 
-	DDrConsole_PrintColored(args[0].value_str32, 1, color, shade);
+	DDrConsole_PrintColored(args[0].val.value_str32, 1, color, shade);
 	return 0;
 }
@@ -423,5 +423,5 @@
 
 	ret->type = sl_int32;
-	ret->value_int32 = DDrGetCharacterIndexFromName(args[0].value_str32);
+	ret->val.value_int32 = DDrGetCharacterIndexFromName(args[0].val.value_str32);
 
 	return 0;
@@ -488,6 +488,6 @@
 	Character* Chr;
 	ActiveCharacter* Active;
-	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-	else index = args[0].value_int32;
+	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+	else index = args[0].val.value_int32;
 
 	Chr = &(ONgGameState->CharacterStorage[index]);
@@ -497,10 +497,10 @@
 	for(i = 1; i < numargs - 1; i++) {
 		for(j = 0; j < 32; j++) {
-			if(!strcmp(args[i].value_str32, Actions1[j].Name)) {
+			if(!strcmp(args[i].val.value_str32, Actions1[j].Name)) {
 				Input1 = Input1 | Actions1[j].Bit;
 			}
 		}
 		for(j = 0; j < 9; j++) {
-			if(!strcmp(args[i].value_str32, Actions2[j].Name)) { 
+			if(!strcmp(args[i].val.value_str32, Actions2[j].Name)) { 
 				Input2 = Input2 | Actions2[j].Bit;
 			}
@@ -513,9 +513,9 @@
 		return 0;
 	}
-	if (  args[numargs - 1].value_int32 <= 0) {
+	if (  args[numargs - 1].val.value_int32 <= 0) {
 		return 0;
 	}
 	else {
-		 args[numargs - 1].value_int32 -= 1;
+		 args[numargs - 1].val.value_int32 -= 1;
 		*dontuse2 = 1;
 		*dontuse1 = 1;
@@ -528,6 +528,6 @@
 //		int index;
 //		if (numargs < 4) index = 0;
-//		else	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-//		else index = args[0].value_int32;
+//		else	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+//		else index = args[0].val.value_int32;
 
 //		Character* Chr = ONgGameState->CharacterStorage;
@@ -540,6 +540,6 @@
 	for(i = 0; i < numargs; i++) {
 		for(j = 0; j < 32; j++) {
-			//DDrConsole_PrintF("Testing %s against %s 0x%x", args[i].value_str32, Actions1[j].Name, Actions1[j].Bit);
-			if(!strcmp(args[i].value_str32, Actions1[j].Name)) {
+			//DDrConsole_PrintF("Testing %s against %s 0x%x", args[i].val.value_str32, Actions1[j].Name, Actions1[j].Bit);
+			if(!strcmp(args[i].val.value_str32, Actions1[j].Name)) {
 				Input1 = Input1 | Actions1[j].Bit;
 				//DDrConsole_PrintF("Success!");
@@ -548,12 +548,12 @@
 		}
 		for(j = 0; j < 9; j++) {
-			if(!strcmp(args[i].value_str32, Actions2[j].Name)) Input2 = Input2 | Actions2[j].Bit;
+			if(!strcmp(args[i].val.value_str32, Actions2[j].Name)) Input2 = Input2 | Actions2[j].Bit;
 	
 		}
 		}
 	//DDrConsole_PrintF("Testing: 0x%x Input: 0x%x",Input1, *(int*)(ONgGameState + 0xB8 + 0x10));
-	ret->value_int32 = 0;
-	ret->type = sl_int32;
-	if ( (ONgGameState->Input.Current.Actions1 == Input1)  && (ONgGameState->Input.Current.Actions2 == Input2)) ret->value_int32 = 1;
+	ret->val.value_int32 = 0;
+	ret->type = sl_int32;
+	if ( (ONgGameState->Input.Current.Actions1 == Input1)  && (ONgGameState->Input.Current.Actions2 == Input2)) ret->val.value_int32 = 1;
 	return 0;
 }
@@ -563,6 +563,6 @@
 //		int index;
 //		if (numargs < 4) index = 0;
-//		else	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32);
-//		else index = args[0].value_int32;
+//		else	if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32);
+//		else index = args[0].val.value_int32;
 
 //		Character* Chr = ONgGameState->CharacterStorage;
@@ -582,11 +582,11 @@
 
 	}
-	if(numargs < 1 || args[0].value == 0)  return;
+	if(numargs < 1 || args[0].val.value == 0)  return;
 	//for(i = 0; i < numargs; i++) {
 	*/
 	i = 0;
 		for(j = 0; j < 32; j++) {
-			//DDrConsole_PrintF("Testing %s against %s 0x%x", args[i].value_str32, Actions1[j].Name, Actions1[j].Bit);
-			if(!strcmp(args[i].value_str32, Actions1[j].Name)) {
+			//DDrConsole_PrintF("Testing %s against %s 0x%x", args[i].val.value_str32, Actions1[j].Name, Actions1[j].Bit);
+			if(!strcmp(args[i].val.value_str32, Actions1[j].Name)) {
 				Input1 = Input1 | Actions1[j].Bit;
 				//DDrConsole_PrintF("Success!");
@@ -595,5 +595,5 @@
 		}
 		for(j = 0; j < 9; j++) {
-			if(!strcmp(args[i].value_str32, Actions2[j].Name)) Input2 = Input2 | Actions2[j].Bit;
+			if(!strcmp(args[i].val.value_str32, Actions2[j].Name)) Input2 = Input2 | Actions2[j].Bit;
 	
 		}
@@ -622,5 +622,5 @@
 	int i;
 	char* placeinoutput = output;
-	char* placeininput = args[0].value_str32;
+	char* placeininput = args[0].val.value_str32;
 	int formatnum = 0;
 	//fix the broken bsl numargs...
@@ -670,17 +670,17 @@
 		//sprintf(output, output, args[i].value_str32);
 		memcpy(buffer, output, 1024);
-		if(args[i].value == 0) break;
+		if(args[i].val.value == 0) break;
 		switch(args[i].type)
 		{
 		case sl_bool:
 		case sl_int32:
-			sprintf(output, buffer, args[i].value_int32);
+			sprintf(output, buffer, args[i].val.value_int32);
 			break;
 		case sl_float:
 			//crashes oni, why?
-		//	sprintf(output, output, args[i].value_float);
+		//	sprintf(output, output, args[i].val.value_float);
 			break;
 		case sl_str32:
-			sprintf(output, buffer, args[i].value_str32);
+			sprintf(output, buffer, args[i].val.value_str32);
 			break;
 		case sl_void:
@@ -690,5 +690,5 @@
 	}
 	//output[32] = 0;
-	ret->value_str32 = output;
+	ret->val.value_str32 = output;
 	ret->type = sl_str32;
 	return 0;
@@ -766,5 +766,5 @@
 uint16_t ONICALL cinematic_start_patch(sl_callinfo* callinfo, unsigned int numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret)
 {
-	args[1].value_int32 = (double)args[1].value_int32 / (double)(gl_eng->DisplayMode.Width) * (4.0 / 3.0 * (double)(gl_eng->DisplayMode.Height));
+	args[1].val.value_int32 = (double)args[1].val.value_int32 / (double)(gl_eng->DisplayMode.Width) * (4.0 / 3.0 * (double)(gl_eng->DisplayMode.Height));
 	return ((sl_func)(OniExe + 0x000f3830))(callinfo, numargs, args, dontuse1, dontuse2, ret);
 }
Index: Daodan/src/Oni_Symbols.c
===================================================================
--- Daodan/src/Oni_Symbols.c	(revision 687)
+++ 	(revision )
@@ -1,228 +1,0 @@
-/*;symbol(name, value)  .global name; .set name, 0x00400000 + value
-symbol macro name, value
-.global name
-mov name, value
-endm
-
-;MSVC6.0 stdlib
-DefVar( , _oni_malloc                               , 0x0051fc24 )
-DefVar( , _oni_free                                 , 0x0051fbf5 )
-
-DefVar( , _oni_fopen                                , 0x0051ea9f )
-DefVar( , _oni_fflush                               , 0x0051eab2 )
-DefVar( , _oni_fprintf                              , 0x0051ebbf )
-DefVar( , _oni_vsprintf                             , 0x0051e860 )
-
-;Oni Engine
-DefVar( , _ONiMain                                  , 0x004d3280 )
-symbol ( @ONrPlatform_Initialize@4                 , 0x0050f670 )
-DefVar( , _ONrPlatform_WindowProc@16                , 0x0050f7a0 )
-symbol ( @ONrCheater@4                             , 0x004f5c30 )
-
-DefVar( , _g_Instance                               , 0x0021f9e4 )
-DefVar( , _ONgPlatformData                          , 0x0023100c )
-DefVar( , _ONgGameState                             , 0x005ece7c )
-DefVar( , _ai2_deaf								   , 0x005ec0c1 )
-DefVar( , _AKgDebug_DebugMaps                       , 0x002b2204 )
-DefVar( , _BFgDebugFileEnable                       , 0x0055c8d0 )
-DefVar( , _SSgSearchOnDisk                          , 0x005eb758 )
-
-DefVar( , _opt_sound                                , 0x002370fc )
-DefVar( , _opt_ignore_private_data                  , 0x002370f0 )
-
-;Oni Persistance
-symbol ( @ONrPersist_GetGamma@0                    , 0x0050f450 )
-symbol ( @ONrPersist_GetWonGame@0                  , 0x0050f660 )
-
-;BFW_Utility
-DefVar( , _UUrStartupMessage                        , 0x00424860 )
-symbol ( @UUrMachineTime_High@0                    , 0x00426480 )
-symbol ( @UUrMachineTime_High_Frequency@0          , 0x004264b0 )
-symbol ( @UUrMachineTime_Sixtieths@0               , 0x004263e0 )
-symbol ( @UUrPlatform_Initialize@0                 , 0x00426010 )
-symbol ( @UUrPlatform_Terminate@0                  , 0x00426310 )
-DefVar( , _AUrMessageBox                            , 0x004378c0 )
-
-DefVar( , _ONgFileStartup                           , 0x005711b8 )
-
-LMotoko
-
-DefVar( , _M3gResolutionSwitch                      , 0x00531634 )
-
-L OpenGL
-symbol ( @gl_enumerate_valid_display_modes@4       , 0x004083a0 )
-symbol ( @gl_platform_set_pixel_format@4           , 0x00407b50 )
-symbol ( @gl_platform_initialize@0                 , 0x00407da0 )
-
-
-
-; Character
-symbol ( @ONrGameState_NewCharacter@16             , 0x004dac50 )
-symbol ( @ONrGameState_GetPlayerCharacter@0        , 0x004b63a7 )
-symbol ( @ONrGetActiveCharacter@4				   , 0x004f1180 )
-
-; Console
-symbol ( @TSrContext_DrawText@20                   , 0x0042DF00 )
-symbol ( @TSrContext_New@24                        , 0x0042EA30 )
-symbol ( @TMrInstance_GetDataPtr@12                , 0x004232E0 )
-symbol ( @TMrInstance_GetInstanceName@4			   , 0x00423D90 )
-symbol ( @COrTextArea_Print@28                     , 0x00431340 )
-
-DefVar( , _COgConsoleLines                          , 0x005cb468 )
-DefVar( , _COgFadeTimeValue                         , 0x00533f68 )
-DefVar( , _COgDefaultTextShade                      , 0x00533f70 )
-DefVar( , _COgDefaultTextShadow                     , 0x00533f74 )
-
-DefVar( , _TStColorFormattingCharacter			   , 0x00533DA0 )
-
-symbol ( @COrMessage_Print@12					   , 0x004304B0 )
-symbol ( @COrMessage_Remove@4					   , 0x00430640 )
-
-; ScriptingLanguage
-;symbol ( @SLrScript_Command_Register_ReturnType@20 , 0x00477b20 )
-;symbol ( @SLrScript_Command_Register_Void@16       , 0x00477b40 )
-;symbol ( @SLrGlobalVariable_Register_Int32@12      , 0x00477e30 )
-;symbol ( @SLrGlobalVariable_Register_Float@12      , 0x00477ec0 )
-;symbol ( @SLrGlobalVariable_Register_String@12      , 0x00477fe0 )
-
-; Messages
-symbol ( @SSrMessage_Find@4						   , 0x0047F550 )
-symbol ( @ONiGameState_FindAutoPromptMessage@8	   , 0x004FDBE0 )
-
-; Data
-symbol ( @TMrInstance_GetDataPtr_List@16		   , 0x00423540 )
-*/
-#include "Daodan.h"
-#include "Oni.h"
-
-//////////////////////////////////////////////////////////////////////
-//Functions need:
-//In Oni_Symbols.c
-//1. DefFunc( name, address )
-//In Oni_Symbols.h
-//1. typedef return_type ( [calling_convention] *_name)( arguments );
-//2. ExtFunc( name )
-//////////////////////////////////////////////////////////////////////
-//Variables need:
-//In Oni_Symbols.c
-//1. DefVar( type, name, address );
-//In Oni_Symbols.h
-//1. DefVar( type, name, address <ignored> );
-//2. #define name *(_name)
-//Please do not use variable names that could be parts of other
-//names like "gl". That will screw things up. If you insist on doing
-//this, omit the #define step and dereference them yourself.
-//////////////////////////////////////////////////////////////////////
-//Please keep everything alphabatized. Kthanxbai
-//////////////////////////////////////////////////////////////////////
-
-#define DefFunc(name, address) _##name name = (_##name)address
-DefFunc( gl_enumerate_valid_display_modes       , 0x004083a0 );
-DefFunc( gl_platform_set_pixel_format           , 0x00407b50 );
-DefFunc( gl_platform_initialize                 , 0x00407da0 );
-
-DefFunc( oni_fopen                              , 0x0051ea9f );
-DefFunc( oni_fflush                             , 0x0051eab2 );
-DefFunc( oni_fprintf                            , 0x0051ebbf );
-
-
-DefFunc( AI2iScript_Spawn						, 0x004B4780 );
-DefFunc( AUrMessageBox                          , 0x004378c0 );
-
-DefFunc( COrMessage_Print						, 0x004304B0 );
-DefFunc( COrTextArea_Print						, 0x00431340 );
-//DefFunc( COrConsole_StatusLine_Display			, 0x00431E70 );
-
-DefFunc( OBJrObjectType_EnumerateObjects		, 0x004D0080 );
-//DefFunc( OBJiObjectGroup_GetNumObjects			, 
-
-//DefFunc( ONiGameState_FindAutoPromptMessage		, 0x004FDBE0 );
-DefFunc( ONiMain								, 0x004d3280 );
-
-DefFunc( ONrCharacter_NewAnimationHook			, 0x004E97A0 );
-DefFunc( ONrCheater                             , 0x004f5c30 );
-DefFunc( ONrCorpse_Create						, 0x004EF340 );
-DefFunc( ONrGameState_NewCharacter				, 0x004dac50 );
-DefFunc( ONrGameState_DeleteCharacter			, 0x004DC480 );
-DefFunc( ONrGetActiveCharacter					, 0x004f1180 );
-DefFunc( ONrPersist_GetGamma                    , 0x0050f450 );
-DefFunc( ONrPersist_GetWonGame                  , 0x0050f660 );
-DefFunc( ONrPlatform_Initialize					, 0x0050f670 );
-DefFunc( ONrPlatform_WindowProc					, 0x0050f7a0 );
-DefFunc( ONrCharacter_SetHitPoints				, 0x004EB220 );
-
-DefFunc( iSetCharacterClass						, 0x004D99D0 );
-
-
-DefFunc( SLrGlobalVariable_Register_Int32		, 0x00477e30 );
-DefFunc( SLrGlobalVariable_Register_Float		, 0x00477ec0 );
-DefFunc( SLrGlobalVariable_Register_String		, 0x00477fe0 );
-DefFunc( SLrScript_Command_Register_ReturnType	, 0x00477b20 );
-DefFunc( SLrScript_Command_Register_Void		, 0x00477b40 );
-
-DefFunc( SSrMessage_Find						, 0x0047F550 );
-
-DefFunc( TMrInstance_GetInstanceName			, 0x00423D90 );
-DefFunc( TMrInstance_GetDataPtr					, 0x004232E0 );
-
-DefFunc( TSrContext_DrawText					, 0x0042DF00 );
-DefFunc( TSrContext_New							, 0x0042EA30 );
-DefFunc( TSrContext_SetShade					, 0x0042EE50 );
-DefFunc( TRrAnimation_GetDuration				, 0x00428740 );
-DefFunc( TRrAnimation_GetFrom					, 0x00428720 );
-DefFunc( TRrAnimation_GetTo						, 0x00428730 );
-
-DefFunc( UUrMachineTime_High					, 0x04026480 );
-DefFunc( UUrMachineTime_High_Frequency			, 0x040264b0 );
-DefFunc( UUrMachineTime_Sixtieths				, 0x040263e0 );
-DefFunc( UUrPlatform_Initialize					, 0x04026010 );
-DefFunc( UUrPlatform_Terminate					, 0x04026310 );
-DefFunc( UUrStartupMessage                      , 0x00424860 );
-DefFunc( OBJrDoor_Open							, 0x004C26C0 );
-DefFunc( OBJrDoor_ForceOpen						, 0x004C1EE0 );
-//DefFunc( OBJrConsole_GetByID					, 0x004C0950 );
-DefFunc( OBJrConsole_OnActivate					, 0x004C0880 );
-DefFunc( ONrCharacter_SetAnimationExternal		, 0x004EB340 );
-DefFunc( ONrGameState_Timer_Start				, 0x004FD370 );
-#define DefVar(type, name, address) //type* _##name = (type*)address
-
-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( WORD*,			gl_gamma_ramp,			0x0055fdfc );
-DefVar( int,			gl_gamma_ramp_valid,	0x005603fc );
-
-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 );
-
-/*
-extern gl_engine_t* gl;
-extern gl_api_t* gl_api;
-extern WORD gl_gamma_ramp[3 * 256];
-extern int gl_gamma_ramp_valid;
-*/
-
-#undef DefVar
-void _DDrDefine_Symbols() {
-
-}
Index: Daodan/src/Oni_Symbols.h
===================================================================
--- Daodan/src/Oni_Symbols.h	(revision 687)
+++ Daodan/src/Oni_Symbols.h	(revision 688)
@@ -7,8 +7,6 @@
 #include "Oni_Character.h"
 #include "BFW_ScriptLang.h"
+
 #define DefVar(type, name, address) static type* _##name = (type*)address
-//variables
-
-//DO THIS INSTEAD!
 DefVar( onibool,		ai2_deaf,				0x005ec0c1 );
 
@@ -66,178 +64,88 @@
 
 
-#undef $
+typedef uint16_t	( ONICALL *sl_func)(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret);
+typedef char		( ONICALL *OBJtEnumCallback_Object)(void *inObject, int inUserData);
 
-//functions
-//__fastcall isn't neccessary if you specify the correct calling convention.
-typedef int64_t		( *_UUrMachineTime_High)();
-typedef double		( *_UUrMachineTime_High_Frequency)();
-typedef int64_t		( *_UUrMachineTime_Sixtieths)();
-typedef void		( *_UUrPlatform_Initialize)();
-typedef void		( *_UUrPlatform_Terminate)();
 
-typedef FILE*		( __cdecl *_oni_fopen)(const char*, const char*);
-typedef int			( __cdecl *_oni_fprintf)(FILE*, const char*, ...);
-typedef int			( __cdecl *_oni_fflush)(FILE*); 
+#undef DefFunc
+#define DefFunc( type, name, callingconvention, args, address) typedef type ( callingconvention * _##name ) args; static _##name name = (_##name)address
+DefFunc(int64_t, UUrMachineTime_High, ONICALL, (), 0x04026480);
+DefFunc(double, UUrMachineTime_High_Frequency, ONICALL, (), 0x040264b0);
+DefFunc(int64_t, UUrMachineTime_Sixtieths, ONICALL, (), 0x040263e0);
+DefFunc(void, UUrPlatform_Initialize, ONICALL, (), 0x04026010);
+DefFunc(void, UUrPlatform_Terminate, ONICALL, (), 0x04026310);
 
-typedef void		( __cdecl *_ONiMain)(int ArgCount, char *ArgList[]);
-typedef short		( *_ONrPlatform_Initialize)(ONtPlatformData *PlatformData);
-typedef LRESULT		( CALLBACK *_ONrPlatform_WindowProc)(HWND Window, UINT Message, 
-														  WPARAM WParam, LPARAM LParam);
-typedef unsigned int ( *_gl_enumerate_valid_display_modes)(M3tDisplayMode modes[16]);
-typedef int			( *_gl_platform_set_pixel_format)(HDC hdc);
-typedef int			( *_gl_platform_initialize)();
+DefFunc(FILE*, oni_fopen, __cdecl, (const char*, const char*), 0x0051ea9f);
+DefFunc(int, oni_fprintf, __cdecl, (FILE*, const char*, ...), 0x0051ebbf);
+DefFunc(int, oni_fflush, __cdecl, (FILE*), 0x0051eab2);
 
-typedef float		( *_ONrPersist_GetGamma)();
-typedef uint8_t		( *_ONrPersist_GetWonGame)();
+DefFunc(void, ONiMain, __cdecl, (int ArgCount, char *ArgList[]), 0x004d3280);
+DefFunc(short, ONrPlatform_Initialize, ONICALL, (ONtPlatformData *PlatformData), 0x0050f670);
+DefFunc(LRESULT, ONrPlatform_WindowProc, CALLBACK, (HWND Window, UINT Message, WPARAM WParam, LPARAM LParam), 0x0050f7a0);
+DefFunc(unsigned int, gl_enumerate_valid_display_modes, ONICALL, (M3tDisplayMode modes[16]), 0x004083a0);
+DefFunc(int, gl_platform_set_pixel_format, ONICALL, (HDC hdc), 0x00407b50);
+DefFunc(int, gl_platform_initialize, ONICALL, (), 0x00407da0);
 
-typedef void		( __cdecl *_UUrStartupMessage)(const char* fmt, ...);
-typedef int16_t		( *_ONrGameState_NewCharacter)(void* CHAR, void* AISA, 
-												   void* flag, uint32_t* list_location);
-typedef ActiveCharacter*	( *_ONrGetActiveCharacter)(void* CharacterPtr);
-typedef void ( *_ONrCharacter_NewAnimationHook)(Character *ioCharacter, ActiveCharacter *ioActiveCharacter);
-typedef void ( *_ONrCharacter_SetAnimationExternal)(Character *ioCharacter, short state, void* animation, int interpolation);
+DefFunc(float, ONrPersist_GetGamma, ONICALL, (), 0x0050f450);
+DefFunc(uint8_t, ONrPersist_GetWonGame, ONICALL, (), 0x0050f660);
 
-typedef void		( *_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);
-typedef uint8_t	ONICALL	( *_ONrCheater)(uint32_t cheat);
-typedef int			( __cdecl *_AUrMessageBox)(int Buttons, char *Message, ...);
-typedef char*	 ONICALL	( *_SSrMessage_Find)(char* message_key); //Returns a prompt message from a message key
-//typedef void		( *_ONiGameState_FindAutoPromptMessage)(char* Note, void* ptr);
+DefFunc(void, UUrStartupMessage, __cdecl, (const char* fmt, ...), 0x00424860);
+DefFunc(int16_t, ONrGameState_NewCharacter, ONICALL, (void* CHAR, void* AISA, void* flag, uint32_t* list_location), 0x004dac50);
+DefFunc(ActiveCharacter*, ONrGetActiveCharacter, ONICALL, (void* CharacterPtr), 0x004f1180);
+DefFunc(void, ONrCharacter_NewAnimationHook, ONICALL, (Character *ioCharacter, ActiveCharacter *ioActiveCharacter), 0x004E97A0);
+DefFunc(void, ONrCharacter_SetAnimationExternal, ONICALL, (Character *ioCharacter, short state, void* animation, int interpolation), 0x004EB340);
 
-typedef uint16_t (ONICALL *sl_func)(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret);
-typedef uint16_t (ONICALL *_SLrScript_Command_Register_ReturnType)(char* name, char* desc, char* argfmt, sl_type type, sl_func callback);
-typedef uint16_t (ONICALL *_SLrScript_Command_Register_Void)(char* name, char* desc, char* argfmt, sl_func callback);
-typedef uint16_t (ONICALL *_SLrGlobalVariable_Register_Int32)(char* name, char* desc, int32_t* data);
-typedef uint16_t (ONICALL *_SLrGlobalVariable_Register_Float)(char* name, char* desc, float* data);
-typedef uint16_t (ONICALL *_SLrGlobalVariable_Register_String)(char* name, char* desc, char* data);
+DefFunc(void, COrTextArea_Print, ONICALL, (uint32_t area, uint32_t priority, uint32_t textshade, uint32_t textshadowshade, const char* text, uint32_t unk_alwaws_0, uint32_t fadetime), 0x00431340);
+DefFunc(uint8_t, ONrCheater, ONICALL, (uint32_t cheat), 0x004f5c30);
+DefFunc(int, AUrMessageBox, __cdecl, (int Buttons, char *Message, ...), 0x004378c0);
+DefFunc(char*, SSrMessage_Find, ONICALL, (char* message_key), 0x0047F550);
+DefFunc(void, ONiGameState_FindAutoPromptMessage, ONICALL, (char* Note, void* ptr), 0x004FDBE0);
 
-typedef int ( *_COrMessage_Print)(char* Message, char* Key, void* noidea);
-//typedef void ( *_COrConsole_StatusLine_Display)();
-typedef int16_t ( *_TMrInstance_GetDataPtr)(int tag, char* name, void* pointer);
-typedef char*	( *_TMrInstance_GetInstanceName)(void* InstancePointer);
+DefFunc(uint16_t, SLrScript_Command_Register_ReturnType, ONICALL, (char* name, char* desc, char* argfmt, sl_type type, sl_func callback), 0x00477b20);
+DefFunc(uint16_t, SLrScript_Command_Register_Void, ONICALL, (char* name, char* desc, char* argfmt, sl_func callback), 0x00477b40);
+DefFunc(uint16_t, SLrGlobalVariable_Register_Int32, ONICALL, (char* name, char* desc, int32_t* data), 0x00477e30);
+DefFunc(uint16_t, SLrGlobalVariable_Register_Float, ONICALL, (char* name, char* desc, float* data), 0x00477ec0);
+DefFunc(uint16_t, SLrGlobalVariable_Register_String, ONICALL, (char* name, char* desc, char* data), 0x00477fe0);
 
-typedef int16_t ( *_TSrContext_DrawText)(uint32_t TSrContext, char* Text, char alpha, uint32_t usuallyzero, void* pRect);
-//int16_t TSrContext_New	( TSFF*, size 7, ??? 1, ??? 1, ??? 0, TSrContext*);
-typedef int16_t ( *_TSrContext_New)( void* FontInstance, int size, int hthsik1,int hthsik2,int hthsik3, void* TSrContext); 
+DefFunc(int, COrMessage_Print, ONICALL, (char* Message, char* Key, void* noidea), 0x004304B0);
+DefFunc(void, COrConsole_StatusLine_Display, ONICALL, (), 0x00431E70);
+DefFunc(int16_t, TMrInstance_GetDataPtr, ONICALL, (int tag, char* name, void* pointer), 0x004232E0);
+DefFunc(char*, TMrInstance_GetInstanceName, ONICALL, (void* InstancePointer), 0x00423D90);
 
-typedef int16_t ( *_TSrContext_SetShade)(
-	void		*ioTextContext,
-	uint32_t	inShade);
-typedef void (* _ONrGameState_Timer_Start)( char* function, int time );
-typedef uint16_t ( *_TRrAnimation_GetDuration)(void* Animation);
-typedef uint16_t ( *_TRrAnimation_GetTo)(void* Animation);
-typedef uint16_t ( *_TRrAnimation_GetFrom)(void* Animation);
+DefFunc(int16_t, TSrContext_DrawText, ONICALL, (uint32_t TSrContext, char* Text, char alpha, uint32_t usuallyzero, void* pRect), 0x0042DF00);
+DefFunc(int16_t, TSrContext_New, ONICALL, (void* FontInstance, int size, int hthsik1,int hthsik2,int hthsik3, void* TSrContext), 0x0042EA30);
 
-typedef void
-( *_ONrCharacter_SetHitPoints)(
-	Character		*ioCharacter,
-	uint32_t			inHitPoints);
-typedef void ( *_ONrCorpse_Create)(Character* Character);
-//yes im cheating so badly.
-typedef uint16_t ( *_iSetCharacterClass)(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret);
-typedef uint16_t ( *_AI2iScript_Spawn)(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret);
-typedef void * ( *_OBJrObjectType_GetObject_ByNumber)(int inObjectType, int inIndex);
-typedef int ( *_OBJiObjectGroup_GetNumObjects)(void *inObjectGroup);
+DefFunc(int16_t, TSrContext_SetShade, ONICALL, (void *ioTextContext, uint32_t inShade), 0x0042EE50);
+DefFunc(void, ONrGameState_Timer_Start, ONICALL, (char* function, int time), 0x004FD370);
+DefFunc(uint16_t, TRrAnimation_GetDuration, ONICALL, (void* Animation), 0x00428740);
+DefFunc(uint16_t, TRrAnimation_GetTo, ONICALL, (void* Animation), 0x00428730);
+DefFunc(uint16_t, TRrAnimation_GetFrom, ONICALL, (void* Animation), 0x00428720);
 
-typedef void ( *_ONrGameState_DeleteCharacter)(Character *inCharacter);
+DefFunc(void, ONrCharacter_SetHitPoints, ONICALL, (Character *ioCharacter, uint32_t inHitPoints), 0x004EB220);
+DefFunc(void, ONrCorpse_Create, ONICALL, (Character* Character), 0x004EF340);
 
-typedef char (*OBJtEnumCallback_Object)(
-	void				*inObject,
-	int				inUserData);
+DefFunc(uint16_t, iSetCharacterClass, ONICALL, (sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret), 0x004D99D0);
+DefFunc(uint16_t, AI2iScript_Spawn, ONICALL, (sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret), 0x004B4780);
+//NOT USED: DefFunc(void*, OBJrObjectType_GetObject_ByNumber, ONICALL, (int inObjectType, int inIndex), );
+//NOT USED: DefFunc(int, OBJiObjectGroup_GetNumObjects, ONICALL, (void *inObjectGroup), );
 
-typedef int ( *_OBJrObjectType_EnumerateObjects)(
-	int								inObjectType,
-	OBJtEnumCallback_Object			inEnumCallback,
-	int						inUserData);
+DefFunc(void, ONrGameState_DeleteCharacter, ONICALL, (Character *inCharacter), 0x004DC480);
 
-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);
-ExtFunc(SLrScript_Command_Register_Void);
-ExtFunc(SLrGlobalVariable_Register_Int32);
-ExtFunc(SLrGlobalVariable_Register_Float);
-ExtFunc(SLrGlobalVariable_Register_String);
-//ExtFunc(COrConsole_StatusLine_Display);
-ExtFunc(OBJrObjectType_EnumerateObjects);
-//ExtFunc(OBJiObjectGroup_GetNumObjects);
-//ExtFunc(OBJrConsole_GetByID);
-ExtFunc(AI2iScript_Spawn);
+DefFunc(int, OBJrObjectType_EnumerateObjects, ONICALL, (int inObjectType, OBJtEnumCallback_Object inEnumCallback, int inUserData), 0x004D0080);
 
-ExtFunc(TRrAnimation_GetDuration);
-ExtFunc(TRrAnimation_GetFrom);
-ExtFunc(TRrAnimation_GetTo); 
-ExtFunc(ONrGameState_Timer_Start);
-extern _UUrMachineTime_High UUrMachineTime_High;
-extern _UUrMachineTime_High_Frequency UUrMachineTime_High_Frequency;
-extern _UUrMachineTime_Sixtieths UUrMachineTime_Sixtieths;
-extern _UUrPlatform_Initialize UUrPlatform_Initialize;
-extern _UUrPlatform_Terminate UUrPlatform_Terminate;
+DefFunc(void, OBJrDoor_Open, ONICALL, (DoorObject *inObject, Character *inCharacter), 0x004C26C0);
+DefFunc(void, OBJrDoor_ForceOpen, ONICALL, (short id), 0x004C1EE0);
+DefFunc(short, OBJrConsole_OnActivate, ONICALL, (void *inObject, Character *inCharacter), 0x004C0880);
+DefFunc(void*, OBJrConsole_GetByID, ONICALL, (short ID), 0x004C0950);
 
-extern _oni_fopen oni_fopen;
-extern _oni_fprintf oni_fprintf;
-extern _oni_fflush oni_fflush;
 
-extern _ONiMain ONiMain;
-extern _ONrPlatform_Initialize ONrPlatform_Initialize;
-extern _ONrPlatform_WindowProc ONrPlatform_WindowProc;
+DefFunc(void, ONrCharacter_SetCharacterClass, ONICALL, (Character* Char, ONCC* Class), 0x004D7C30);
+DefFunc(short, TMrInstance_GetDataPtr_ByNumber, ONICALL, (int tag, int number, void** out), 0x00423680);
+DefFunc(uint32_t, TMrInstance_GetTagCount, ONICALL, (int tag), 0x004236F0);
+DefFunc(uint32_t, ONrCharacter_GetHealthShade, ONICALL, (uint32_t health, uint32_t maxhealth), 0x004EF450);
+DefFunc(void, ONiDrawWeaponSight, ONICALL, (Character* Char), 0x004E1900);
+DefFunc(void, AI2rDisplayDebuggingInfo, ONICALL, (Character* Char), 0x0048C5F0);
+DefFunc(uint32_t, M3rTextureMap_New, ONICALL, (short width, short height, int type, int allocated, int flags, char* name, void** output), 0x041EB00);
+#undef DefFunc
 
-ExtFunc(COrMessage_Print);
-
-ExtFunc(TMrInstance_GetDataPtr);
-ExtFunc(TMrInstance_GetInstanceName);
-
-ExtFunc(gl_enumerate_valid_display_modes);
-ExtFunc(gl_platform_set_pixel_format);
-ExtFunc(gl_platform_initialize);
-ExtFunc(ONrPersist_GetGamma);
-ExtFunc(ONrPersist_GetWonGame);
-ExtFunc(UUrStartupMessage);
-
-ExtFunc(ONrCharacter_SetAnimationExternal);
-
-ExtFunc(ONrCharacter_NewAnimationHook);
-ExtFunc(ONrCharacter_SetHitPoints);
-ExtFunc(ONrGameState_NewCharacter);
-ExtFunc(ONrGameState_DeleteCharacter);
-ExtFunc(ONrGetActiveCharacter);
-ExtFunc(ONrCorpse_Create);
-ExtFunc(iSetCharacterClass);
-
-ExtFunc(COrTextArea_Print);
-
-ExtFunc(ONrCheater);
-ExtFunc(AUrMessageBox);
-
-ExtFunc(SSrMessage_Find);
-//ExtFunc(ONiGameState_FindAutoPromptMessage);
-
-ExtFunc(TSrContext_DrawText);
-ExtFunc(TSrContext_New);
-ExtFunc(TSrContext_SetShade);
-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 ONICALL ( * 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 );
-DefFunc( void, ONrCharacter_SetCharacterClass, (Character* Char, ONCC* Class), 0x004D7C30 );
-DefFunc( short, TMrInstance_GetDataPtr_ByNumber, (int tag, int number, void** out), 0x00423680 );
-DefFunc( uint32_t, TMrInstance_GetTagCount, (int tag), 0x004236F0);
-//DefFunc( uint32_t, stdcall M3rTextureMap_New, (int tag), 0x041EB00);
-//(short width, short height, int type, int allocated, int flags, char* name, void** output)
-DefFunc( uint32_t, ONrCharacter_GetHealthShade, (uint32_t health, uint32_t maxhealth), 0x004EF450);
-//DefFunc( short, TSrContext_SetShade, (void* context, int shade ), 0x0042EE50);
-DefFunc( void, ONiDrawWeaponSight, (Character* Char), 0x004E1900 );
-DefFunc( void, AI2rDisplayDebuggingInfo, (Character* Char), 0x0048C5F0 );
- static const  uint32_t ( * M3rTextureMap_New)(short width, short height, int type, int allocated, int flags, char* name, void** output) 
-	 = (const uint32_t(*)(short width, short height, int type, int allocated, int flags, char* name, void** output))0x041EB00;
 #endif
