Index: Daodan/MSVC/Daodan_Utility.c
===================================================================
--- Daodan/MSVC/Daodan_Utility.c	(revision 577)
+++ Daodan/MSVC/Daodan_Utility.c	(revision 578)
@@ -175,4 +175,22 @@
 	}
 }
+
+void* ScoreboardInstance = 0;
+void FLrRun_Scores()
+{
+
+	if(!ScoreboardInstance){
+		void* TSFFTahoma;
+		TMrInstance_GetDataPtr( 'TSFF', "Tahoma", &TSFFTahoma);
+		TSrContext_New( TSFFTahoma, 7, 1, 1,  0, &ScoreboardInstance);
+	}
+	if(ScoreboardInstance){
+		int white = 0x00FFFFFF;
+		IMtPoint2D DrawLocation = {20, 20};
+		TSrContext_SetShade(ScoreboardInstance, white);
+		TSrContext_DrawText(ScoreboardInstance, "Scores and crap", 255, 0, &DrawLocation);	
+	}
+}
+
 void ONICALL DDrText_Hook()
 {
Index: Daodan/MSVC/Flatline.h
===================================================================
--- Daodan/MSVC/Flatline.h	(revision 577)
+++ Daodan/MSVC/Flatline.h	(revision 578)
@@ -82,4 +82,6 @@
 
 //um, status of the server? :/
+//probably obsolete. revive again once i do something crazy
+//like make a master server
 typedef struct {
 	char name[256];
@@ -194,5 +196,4 @@
 	EV_MAX,
 };
-
 
 
Index: Daodan/MSVC/Flatline_BSL.c
===================================================================
--- Daodan/MSVC/Flatline_BSL.c	(revision 577)
+++ Daodan/MSVC/Flatline_BSL.c	(revision 578)
@@ -98,5 +98,5 @@
 					j,
 					PlayerList[j]->name,
-					(inet_ntoa(*( (struct in_addr*)(int*)&(PlayerList[j]->ip )   ))));
+					inet_ntoa(*( (struct in_addr*)(int*)&(PlayerList[j]->ip )   )));
 			}
 		}
Index: Daodan/MSVC/Flatline_Server.c
===================================================================
--- Daodan/MSVC/Flatline_Server.c	(revision 577)
+++ Daodan/MSVC/Flatline_Server.c	(revision 578)
@@ -1,4 +1,7 @@
 #include "Flatline.h"
 #include "Flatline_Server.h"
+
+//I hereby apologize for the uglyness of the below code. 
+//It was never intended to be "final" code, much less shared with anyone
 
 int total_players = 0;
@@ -10,37 +13,38 @@
 	uint32_t player_slot = 0;
 	int playerlist_slot = 0;
-	if(is_server) goto server;
-	if(total_players < max_connections) {
-		char* zero = strchr(name, 0);
+	
+	if(is_server || total_players < max_connections) {
+		
 		int i = 0;
 		int k = 0;
-		playerlist_slot = FLr_FindEmptyListSlot();
-		
 
-		total_players++;
+		//Skip for the host
+		if(!is_server)
+		{
+			char* zero = strchr(name, 0);
+			playerlist_slot = FLr_FindEmptyListSlot();
 
-		//send new player packet to all players
-		//char tempname[32] = {0};
+			total_players++;
 
-		//checks to see if a name exists or not
-		//then appends [#] on the end of it if it does
-		
-		if(zero - name > 28) zero = name + 28; 
-		for(i = 0; i < max_connections; i++) {
-			if(PlayerList[i] != 0 && !strcmp(name, PlayerList[i]->name)) {
-				k++;				
-				sprintf(zero, "[%i]", k);
-				i = 0;
+			//checks to see if a name exists or not
+			//then appends [#] on the end of it if it does
+			//May be buggy, come back to this.
+			if(zero - name > 28) zero = name + 28; 
+			for(i = 0; i < max_connections; i++) {
+				if(PlayerList[i] != 0 && !strcmp(name, PlayerList[i]->name)) {
+					k++;				
+					sprintf(zero, "[%i]", k);
+					i = 0;
+				}
 			}
 		}
+		
+		new_char.new_player.Playernumber = playerlist_slot; 
 
-server:		;
-		//memset( new_char, 0, sizeof(new_char);
-		//new_char = {0};
-		new_char.new_player.Playernumber = playerlist_slot; 
+		//Set up a new Character structure to be spawned as the new player.
+		//Can this code be surrounded with if(!is_server){}?
 		Char = &new_char.new_player.Character;
 		memset(Char, 0, sizeof(CharacterObject));
 		Char->Header.Type = 'CHAR';
-		//Char->OSD.Options = char_dontaim;
 		sprintf(Char->OSD.Name,"%s",name);
 		sprintf(Char->OSD.Class, "%s", "konoko_generic");
@@ -61,5 +65,4 @@
 		
 		//TMrInstance_GetDataPtr('ONCC', "striker_easy_1", PlayerList[playerlist_slot]->Chr->ONCC);
-		
 
 		new_char.id = NEW_PLAYER;
@@ -71,7 +74,7 @@
 			PlayerList[playerlist_slot] = Players+player_slot;
 			PlayerList[playerlist_slot]->spawnnumber = player_slot;
-			PlayerList[playerlist_slot]->Chr = &((Character *)(((GameState * )(ONgGameState))->CharacterStorage))[player_slot];
-//			PlayerList[playerlist_slot]->Chr->Flags = chr_dontaim | chr_unkillable; //&= 0xFFBFFFFF; //WTF
-			if(!is_bot) PlayerList[playerlist_slot]->Chr->Flags &= 0xFFBFFFFF; //WTF
+			PlayerList[playerlist_slot]->Chr = &(ONgGameState->CharacterStorage)[player_slot];
+			//PlayerList[playerlist_slot]->Chr->Flags = chr_dontaim | chr_unkillable; //&= 0xFFBFFFFF; //WTF
+			if(!is_bot) PlayerList[playerlist_slot]->Chr->Flags &= 0xFFBFFFFF; //WTF, magic number. 
 			sprintf(PlayerList[playerlist_slot]->Chr->Name, "%.31s", name);		
 			UDPServer_SendToAll( (char*)&new_char, sizeof(new_player) + FLATLINE_HEADER );
@@ -121,4 +124,5 @@
 }
 
+//Sends an event (door opening, player disconnecting, etc) to all players
 //Always make sure you send a pointer to this, even if it is just one arg. ;)
 void FLsPublic_Event( unsigned int eventIndex, int * args )
@@ -132,2 +136,8 @@
 }
 
+void PlayerDisconnect( int Player )
+{
+	FLsPublic_Event(EV_DISCONNECT, &Player );
+	memset(PlayerList[Player], 0, sizeof(player_info));
+	return;
+}
Index: Daodan/MSVC/Oni_GameState.h
===================================================================
--- Daodan/MSVC/Oni_GameState.h	(revision 577)
+++ Daodan/MSVC/Oni_GameState.h	(revision 578)
@@ -1183,5 +1183,5 @@
   __int16 AnimationType;
   __int16 NextAnimationType;
-  __int16 field_1B04;
+  __int16 PrevAnimationType;
   __int16 field_1B06;
   char Stitch;
Index: Daodan/MSVC/Oni_Symbols.c
===================================================================
--- Daodan/MSVC/Oni_Symbols.c	(revision 577)
+++ Daodan/MSVC/Oni_Symbols.c	(revision 578)
@@ -183,5 +183,5 @@
 //DefFunc( OBJrConsole_GetByID					, 0x004C0950 );
 DefFunc( OBJrConsole_OnActivate					, 0x004C0880 );
-
+DefFunc( ONrCharacter_SetAnimationExternal		, 0x004EB340 );
 #define DefVar(type, name, address) //type* _##name = (type*)address
 
Index: Daodan/MSVC/Oni_Symbols.h
===================================================================
--- Daodan/MSVC/Oni_Symbols.h	(revision 577)
+++ Daodan/MSVC/Oni_Symbols.h	(revision 578)
@@ -95,5 +95,5 @@
 typedef ActiveCharacter*	( *_ONrGetActiveCharacter)(void* CharacterPtr);
 typedef void ( *_ONrCharacter_NewAnimationHook)(Character *ioCharacter, ActiveCharacter *ioActiveCharacter);
-//int16_t ONICALL ONrGameState_GetPlayerCharacter();
+typedef void ( *_ONrCharacter_SetAnimationExternal)(Character *ioCharacter, short state, void* animation, int interpolation);
 
 typedef void		( *_COrTextArea_Print)(uint32_t area, uint32_t priority, 
@@ -117,5 +117,5 @@
 typedef char*	( *_TMrInstance_GetInstanceName)(void* InstancePointer);
 
-typedef int16_t ( *_TSrContext_DrawText)(uint32_t TSrContext, char* Text, int alpha, uint32_t usuallyzero, void* pRect);
+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); 
@@ -125,7 +125,7 @@
 	uint32_t	inShade);
 
-typedef uint16_t ( *_TRrAnimation_GetDuration)(int Animation);
-typedef uint16_t ( *_TRrAnimation_GetTo)(int Animation);
-typedef uint16_t ( *_TRrAnimation_GetFrom)(int Animation);
+typedef uint16_t ( *_TRrAnimation_GetDuration)(void* Animation);
+typedef uint16_t ( *_TRrAnimation_GetTo)(void* Animation);
+typedef uint16_t ( *_TRrAnimation_GetFrom)(void* Animation);
 
 typedef void
@@ -197,4 +197,6 @@
 ExtFunc(UUrStartupMessage);
 
+ExtFunc(ONrCharacter_SetAnimationExternal);
+
 ExtFunc(ONrCharacter_NewAnimationHook);
 ExtFunc(ONrCharacter_SetHitPoints);
Index: Daodan/MSVC/startup.txt
===================================================================
--- Daodan/MSVC/startup.txt	(revision 577)
+++ Daodan/MSVC/startup.txt	(revision 578)
@@ -1,3 +1,4 @@
 daodan attached!
+parsing daodan.ini...
 finished parsing
 parsing command line...
