Explorar el Código

Adjusted eAthena code to compile cleanly in C++ mode.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12436 54d463be-8e91-2dee-dedb-b68131a5f0ec
ultramage hace 17 años
padre
commit
94943b2b6a
Se han modificado 67 ficheros con 682 adiciones y 955 borrados
  1. 3 1
      Changelog-Trunk.txt
  2. 19 19
      src/char/char.c
  3. 22 22
      src/char/int_guild.c
  4. 6 11
      src/char/int_homun.c
  5. 12 9
      src/char/int_party.c
  6. 3 3
      src/char/int_pet.c
  7. 7 8
      src/char/int_status.c
  8. 4 4
      src/char/int_storage.c
  9. 22 26
      src/char/inter.c
  10. 20 20
      src/char_sql/char.c
  11. 2 2
      src/char_sql/int_auction.c
  12. 3 3
      src/char_sql/int_guild.c
  13. 1 1
      src/char_sql/int_homun.c
  14. 2 2
      src/char_sql/int_mail.c
  15. 2 2
      src/char_sql/int_party.c
  16. 13 16
      src/char_sql/inter.c
  17. 25 10
      src/common/db.c
  18. 3 3
      src/common/mmo.h
  19. 3 0
      src/common/plugin.h
  20. 25 24
      src/common/plugins.c
  21. 4 3
      src/common/plugins.h
  22. 1 1
      src/common/strlib.c
  23. 3 3
      src/common/strlib.h
  24. 1 1
      src/common/timer.h
  25. 7 7
      src/login/login.c
  26. 10 10
      src/login_sql/login.c
  27. 4 5
      src/map/atcommand.c
  28. 15 12
      src/map/battle.c
  29. 4 3
      src/map/battle.h
  30. 4 3
      src/map/chrif.c
  31. 57 47
      src/map/clif.c
  32. 6 6
      src/map/clif.h
  33. 16 12
      src/map/guild.c
  34. 5 3
      src/map/intif.c
  35. 5 5
      src/map/itemdb.c
  36. 2 2
      src/map/log.c
  37. 2 2
      src/map/log.h
  38. 9 9
      src/map/map.c
  39. 4 1
      src/map/map.h
  40. 1 1
      src/map/mercenary.c
  41. 7 4
      src/map/mercenary.h
  42. 8 8
      src/map/mob.c
  43. 8 8
      src/map/npc.c
  44. 4 4
      src/map/party.c
  45. 13 13
      src/map/pc.c
  46. 30 22
      src/map/pc.h
  47. 42 37
      src/map/pet.h
  48. 46 56
      src/map/script.c
  49. 2 2
      src/map/script.h
  50. 74 61
      src/map/skill.c
  51. 37 37
      src/map/status.c
  52. 6 4
      src/map/status.h
  53. 4 4
      src/map/storage.c
  54. 4 8
      src/tool/Makefile.in
  55. 5 4
      src/tool/adduser.c
  56. 0 300
      src/tool/convert.c
  57. 3 6
      src/txt-converter/login-converter.c
  58. 4 5
      vcproj-9/char-server_sql.vcproj
  59. 4 5
      vcproj-9/char-server_txt.vcproj
  60. 2 5
      vcproj-9/ladmin.vcproj
  61. 4 5
      vcproj-9/login-server_sql.vcproj
  62. 4 6
      vcproj-9/login-server_txt.vcproj
  63. 4 7
      vcproj-9/map-server_sql.vcproj
  64. 4 7
      vcproj-9/map-server_txt.vcproj
  65. 2 5
      vcproj-9/mapcache.vcproj
  66. 2 5
      vcproj-9/txt-converter-char.vcproj
  67. 2 5
      vcproj-9/txt-converter-login.vcproj

+ 3 - 1
Changelog-Trunk.txt

@@ -3,8 +3,10 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+2008/03/26
+	* Adjusted eAthena code to compile cleanly in C++ mode.
 2008/03/24
-	* Reorganized the contents of the mapserver's header files.
+	* Reorganized the contents of the mapserver's header files. [ultramage]
 	- map.h is no longer a generic dumping spot of all the shared structs,
 	  and instead, each such structure now resides in its logical component
 	- map.h now only holds mostly map-related things (needs more cleaning)

+ 19 - 19
src/char/char.c

@@ -287,7 +287,7 @@ int search_character_online(int aid, int cid)
 {
 	//Look for online character.
 	struct online_char_data* character;
-	character = idb_get(online_char_db, aid);
+	character = (struct online_char_data*)idb_get(online_char_db, aid);
 	if(character &&
 		character->char_id == cid &&
 		character->server > -1) 
@@ -297,7 +297,7 @@ int search_character_online(int aid, int cid)
 static void * create_online_char_data(DBKey key, va_list args)
 {
 	struct online_char_data* character;
-	character = aCalloc(1, sizeof(struct online_char_data));
+	character = (struct online_char_data*)aCalloc(1, sizeof(struct online_char_data));
 	character->account_id = key.i;
 	character->char_id = -1;
   	character->server = -1;
@@ -327,7 +327,7 @@ void set_char_online(int map_id, int char_id, int account_id)
 		}
 	}
 
-	character = idb_ensure(online_char_db, account_id, create_online_char_data);
+	character = (struct online_char_data*)idb_ensure(online_char_db, account_id, create_online_char_data);
 	if (online_check && character->char_id != -1 && character->server > -1 && character->server != map_id)
 	{
 		//char == 99 <- Character logging in, so someone has logged in while one
@@ -362,7 +362,7 @@ void set_char_offline(int char_id, int account_id)
 {
 	struct online_char_data* character;
 
-	if ((character = idb_get(online_char_db, account_id)) != NULL)
+	if ((character = (struct online_char_data*)idb_get(online_char_db, account_id)) != NULL)
 	{	//We don't free yet to avoid aCalloc/aFree spamming during char change. [Skotlex]
 		if( character->server > -1 )
 			server[character->server].users--;
@@ -1911,7 +1911,7 @@ static void char_auth_ok(int fd, struct char_session_data *sd)
 		return;
 	}
 
-	if( online_check && (character = idb_get(online_char_db, sd->account_id)) != NULL )
+	if( online_check && (character = (struct online_char_data*)idb_get(online_char_db, sd->account_id)) != NULL )
 	{	// check if character is not online already. [Skotlex]
 		if (character->server > -1)
 		{	//Character already online. KICK KICK KICK
@@ -2301,7 +2301,7 @@ int parse_fromlogin(int fd)
 			if (RFIFOREST(fd) < 4 || RFIFOREST(fd) < RFIFOW(fd,2))
 				return 0;
 		{
-			unsigned char buf[32000];
+			unsigned char buf[32000]; //FIXME: this will crash
 			if (gm_account != NULL)
 				aFree(gm_account);
 			CREATE(gm_account, struct gm_account, (RFIFOW(fd,2) - 4)/5);
@@ -2330,7 +2330,7 @@ int parse_fromlogin(int fd)
 		{
 			struct online_char_data* character;
 			int aid = RFIFOL(fd,2);
-			if ((character = idb_get(online_char_db, aid)) != NULL)
+			if ((character = (struct online_char_data*)idb_get(online_char_db, aid)) != NULL)
 			{	//Kick out this player.
 				if (character->server > -1)
 				{	//Kick it from the map server it is on.
@@ -2434,10 +2434,10 @@ int char_parse_Registry(int account_id, int char_id, unsigned char *buf, int buf
 	if(i >= char_num) //Character not found?
 		return 1;
 	for(j=0,p=0;j<GLOBAL_REG_NUM && p<buf_len;j++){
-		sscanf(WBUFP(buf,p), "%31c%n",char_dat[i].global[j].str,&len);
+		sscanf((char*)WBUFP(buf,p), "%31c%n",char_dat[i].global[j].str,&len);
 		char_dat[i].global[j].str[len]='\0';
 		p +=len+1; //+1 to skip the '\0' between strings.
-		sscanf(WBUFP(buf,p), "%255c%n",char_dat[i].global[j].value,&len);
+		sscanf((char*)WBUFP(buf,p), "%255c%n",char_dat[i].global[j].value,&len);
 		char_dat[i].global[j].value[len]='\0';
 		p +=len+1;
 	}
@@ -2463,8 +2463,8 @@ int char_account_reg_reply(int fd,int account_id,int char_id)
 	}else{
 		for (p=13,j = 0; j < char_dat[i].global_num; j++) {
 			if (char_dat[i].global[j].str[0]) {
-				p+= sprintf(WFIFOP(fd,p), "%s", char_dat[i].global[j].str)+1; //We add 1 to consider the '\0' in place.
-				p+= sprintf(WFIFOP(fd,p), "%s", char_dat[i].global[j].value)+1;
+				p+= sprintf((char*)WFIFOP(fd,p), "%s", char_dat[i].global[j].str)+1; //We add 1 to consider the '\0' in place.
+				p+= sprintf((char*)WFIFOP(fd,p), "%s", char_dat[i].global[j].value)+1;
 			}
 		}
 		WFIFOW(fd,2)=p;
@@ -2581,7 +2581,7 @@ int char_send_fame_list(int fd)
 
 void char_update_fame_list(int type, int index, int fame)
 {
-	char buf[9];
+	unsigned char buf[9];
 	WBUFW(buf,0) = 0x2b22;
 	WBUFB(buf,2) = type;
 	WBUFB(buf,3) = index;
@@ -2767,7 +2767,7 @@ int parse_frommap(int fd)
 				struct online_char_data* character;
 				aid = RFIFOL(fd,6+i*8);
 				cid = RFIFOL(fd,6+i*8+4);
-				character = idb_ensure(online_char_db, aid, create_online_char_data);
+				character = (struct online_char_data*)idb_ensure(online_char_db, aid, create_online_char_data);
 				if (online_check && character->server > -1 && character->server != id)
 				{
 					ShowNotice("Set map user: Character (%d:%d) marked on map server %d, but map server %d claims to have (%d:%d) online!\n",
@@ -2863,7 +2863,7 @@ int parse_frommap(int fd)
 				memcpy(WFIFOP(map_fd,20), char_data, sizeof(struct mmo_charstatus));
 				WFIFOSET(map_fd, WFIFOW(map_fd,2));
 
-				data = idb_ensure(online_char_db, RFIFOL(fd,2), create_online_char_data);
+				data = (struct online_char_data*)idb_ensure(online_char_db, RFIFOL(fd,2), create_online_char_data);
 				data->char_id = char_data->char_id;
 				data->server = map_id; //Update server where char is.
 
@@ -3134,7 +3134,7 @@ int parse_frommap(int fd)
 			if (data->count != count)
 			{
 				data->count = count;
-				data->data = aRealloc(data->data, count*sizeof(struct status_change_data));
+				data->data = (struct status_change_data*)aRealloc(data->data, count*sizeof(struct status_change_data));
 			}
 			for (i = 0; i < count; i++)
 				memcpy (&data->data[i], RFIFOP(fd, 14+i*sizeof(struct status_change_data)), sizeof(struct status_change_data));
@@ -3237,7 +3237,7 @@ int parse_char(int fd)
 	{
 		if (sd != NULL)
 		{
-			struct online_char_data* data = idb_get(online_char_db, sd->account_id);
+			struct online_char_data* data = (struct online_char_data*)idb_get(online_char_db, sd->account_id);
 			if (!data || data->server == -1) //If it is not in any server, send it offline. [Skotlex]
 				set_char_offline(99,sd->account_id);
 			if (data && data->fd == fd)
@@ -3631,8 +3631,8 @@ int parse_char(int fd)
 			if (RFIFOREST(fd) < 60)
 				return 0;
 		{
-			char* l_user = RFIFOP(fd,2);
-			char* l_pass = RFIFOP(fd,26);
+			char* l_user = (char*)RFIFOP(fd,2);
+			char* l_pass = (char*)RFIFOP(fd,26);
 			l_user[23] = '\0';
 			l_pass[23] = '\0';
 			ARR_FIND( 0, MAX_MAP_SERVERS, i, server[i].fd <= 0 );
@@ -3899,7 +3899,7 @@ int ping_login_server(int tid, unsigned int tick, int id, int data)
 static int chardb_waiting_disconnect(int tid, unsigned int tick, int id, int data)
 {
 	struct online_char_data* character;
-	if ((character = idb_get(online_char_db, id)) != NULL && character->waiting_disconnect == tid)
+	if ((character = (struct online_char_data*)idb_get(online_char_db, id)) != NULL && character->waiting_disconnect == tid)
 	{	//Mark it offline due to timeout.
 		character->waiting_disconnect = -1;
 		set_char_offline(character->char_id, character->account_id);

+ 22 - 22
src/char/int_guild.c

@@ -485,7 +485,7 @@ void inter_guild_final()
 
 struct guild *inter_guild_search(int guild_id)
 {
-	return idb_get(guild_db, guild_id);
+	return (struct guild*)idb_get(guild_db, guild_id);
 }
 
 // ギルドデータのセーブ
@@ -504,7 +504,7 @@ int inter_guild_save()
 	}
 
 	iter = guild_db->iterator(guild_db);
-	for( g = iter->first(iter,NULL); iter->exists(iter); g = iter->next(iter,NULL) )
+	for( g = (struct guild*)iter->first(iter,NULL); iter->exists(iter); g = (struct guild*)iter->next(iter,NULL) )
 	{
 		char line[16384];
 		inter_guild_tostr(line, g);
@@ -522,7 +522,7 @@ int inter_guild_save()
 	}
 
 	iter = castle_db->iterator(castle_db);
-	for( gc = iter->first(iter,NULL); iter->exists(iter); gc = iter->next(iter,NULL) )
+	for( gc = (struct guild_castle*)iter->first(iter,NULL); iter->exists(iter); gc = (struct guild_castle*)iter->next(iter,NULL) )
 	{
 		char line[16384];
 		inter_guildcastle_tostr(line, gc);
@@ -542,7 +542,7 @@ struct guild* search_guildname(char *str)
 	struct guild* g;
 
 	iter = guild_db->iterator(guild_db);
-	for( g = iter->first(iter,NULL); iter->exists(iter); g = iter->next(iter,NULL) )
+	for( g = (struct guild*)iter->first(iter,NULL); iter->exists(iter); g = (struct guild*)iter->next(iter,NULL) )
 	{
 		if (strcmpi(g->name, str) == 0)
 			break;
@@ -933,7 +933,7 @@ int mapif_guild_castle_alldataload(int fd)
 	WFIFOHEAD(fd, 4 + MAX_GUILDCASTLE*sizeof(struct guild_castle));
 	WFIFOW(fd,0) = 0x3842;
 	iter = castle_db->iterator(castle_db);
-	for( gc = iter->first(iter,NULL); iter->exists(iter); gc = iter->next(iter,NULL) )
+	for( gc = (struct guild_castle*)iter->first(iter,NULL); iter->exists(iter); gc = (struct guild_castle*)iter->next(iter,NULL) )
 	{
 		memcpy(WFIFOP(fd,len), gc, sizeof(struct guild_castle));
 		len += sizeof(struct guild_castle);
@@ -1025,7 +1025,7 @@ int mapif_parse_GuildInfo(int fd, int guild_id)
 {
 	struct guild *g;
 
-	g = idb_get(guild_db, guild_id);
+	g = (struct guild*)idb_get(guild_db, guild_id);
 	if (g != NULL){
 		guild_calcinfo(g);
 		mapif_guild_info(fd, g);
@@ -1041,7 +1041,7 @@ int mapif_parse_GuildAddMember(int fd, int guild_id, struct guild_member *m)
 	struct guild *g;
 	int i;
 
-	g = idb_get(guild_db, guild_id);
+	g = (struct guild*)idb_get(guild_db, guild_id);
 	if (g == NULL) {
 		mapif_guild_memberadded(fd, guild_id, m->account_id, m->char_id, 1);
 		return 0;
@@ -1066,7 +1066,7 @@ int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id, in
 {
 	int i, j;
 
-	struct guild* g = idb_get(guild_db, guild_id);
+	struct guild* g = (struct guild*)idb_get(guild_db, guild_id);
 	if( g == NULL )
 	{
 		//TODO
@@ -1112,7 +1112,7 @@ int mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id,
 	struct guild *g;
 	int i, sum, c;
 
-	g = idb_get(guild_db, guild_id);
+	g = (struct guild*)idb_get(guild_db, guild_id);
 	if (g == NULL)
 		return 0;
 
@@ -1168,7 +1168,7 @@ int mapif_parse_BreakGuild(int fd, int guild_id)
 {
 	struct guild *g;
 
-	g = idb_get(guild_db, guild_id);
+	g = (struct guild*)idb_get(guild_db, guild_id);
 	if(g == NULL)
 		return 0;
 
@@ -1195,7 +1195,7 @@ int mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const char
 	struct guild *g;
 	short dw = *((short *)data);
 
-	g = idb_get(guild_db, guild_id);
+	g = (struct guild*)idb_get(guild_db, guild_id);
 	if (g == NULL)
 		return 0;
 
@@ -1223,7 +1223,7 @@ int mapif_parse_GuildMemberInfoChange(int fd, int guild_id, int account_id, int
 	int i;
 	struct guild *g;
 
-	g = idb_get(guild_db, guild_id);
+	g = (struct guild*)idb_get(guild_db, guild_id);
 	if(g == NULL)
 		return 0;
 
@@ -1304,7 +1304,7 @@ int inter_guild_sex_changed(int guild_id,int account_id,int char_id, int gender)
 // ギルド役職名変更要求
 int mapif_parse_GuildPosition(int fd, int guild_id, int idx, struct guild_position *p)
 {
-	struct guild *g = idb_get(guild_db, guild_id);
+	struct guild *g = (struct guild*)idb_get(guild_db, guild_id);
 
 	if (g == NULL || idx < 0 || idx >= MAX_GUILDPOSITION) {
 		return 0;
@@ -1319,7 +1319,7 @@ int mapif_parse_GuildPosition(int fd, int guild_id, int idx, struct guild_positi
 // ギルドスキルアップ要求
 int mapif_parse_GuildSkillUp(int fd, int guild_id, int skill_num, int account_id)
 {
-	struct guild *g = idb_get(guild_db, guild_id);
+	struct guild *g = (struct guild*)idb_get(guild_db, guild_id);
 	int idx = skill_num - GD_SKILLBASE;
 
 	if (g == NULL || idx < 0 || idx >= MAX_GUILDSKILL)
@@ -1361,8 +1361,8 @@ int mapif_parse_GuildAlliance(int fd, int guild_id1, int guild_id2, int account_
 	struct guild *g[2];
 	int j, i;
 
-	g[0] = idb_get(guild_db, guild_id1);
-	g[1] = idb_get(guild_db, guild_id2);
+	g[0] = (struct guild*)idb_get(guild_db, guild_id1);
+	g[1] = (struct guild*)idb_get(guild_db, guild_id2);
 
 	if(g[0] && g[1]==NULL && (flag&0x8)) //Requested to remove an alliance with a not found guild.
 		return mapif_parse_GuildDeleteAlliance(g[0], guild_id2,
@@ -1400,7 +1400,7 @@ int mapif_parse_GuildNotice(int fd, int guild_id, const char *mes1, const char *
 {
 	struct guild *g;
 
-	g = idb_get(guild_db, guild_id);
+	g = (struct guild*)idb_get(guild_db, guild_id);
 	if (g == NULL)
 		return 0;
 	memcpy(g->mes1, mes1, 60);
@@ -1414,7 +1414,7 @@ int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char
 {
 	struct guild *g;
 
-	g = idb_get(guild_db, guild_id);
+	g = (struct guild*)idb_get(guild_db, guild_id);
 	if (g == NULL)
 		return 0;
 	memcpy(g->emblem_data, data, len);
@@ -1426,7 +1426,7 @@ int mapif_parse_GuildEmblem(int fd, int len, int guild_id, int dummy, const char
 
 int mapif_parse_GuildCastleDataLoad(int fd, int castle_id, int index)
 {
-	struct guild_castle *gc = idb_get(castle_db, castle_id);
+	struct guild_castle *gc = (struct guild_castle*)idb_get(castle_db, castle_id);
 
 	if (gc == NULL) {
 		return mapif_guild_castle_dataload(castle_id, 0, 0);
@@ -1460,7 +1460,7 @@ int mapif_parse_GuildCastleDataLoad(int fd, int castle_id, int index)
 
 int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
 {
-	struct guild_castle *gc= idb_get(castle_db, castle_id);
+	struct guild_castle *gc = (struct guild_castle*)idb_get(castle_db, castle_id);
 
 	if (gc == NULL)
 		return mapif_guild_castle_datasave(castle_id, index, value);
@@ -1469,7 +1469,7 @@ int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
 	case 1:
 		if (gc->guild_id != value) {
 			int gid = (value) ? value : gc->guild_id;
-			struct guild *g = idb_get(guild_db, gid);
+			struct guild *g = (struct guild*)idb_get(guild_db, gid);
 			if(log_inter)
 				inter_log("guild %s (id=%d) %s castle id=%d\n",
 					(g) ? g->name : "??", gid, (value) ? "occupy" : "abandon", castle_id);
@@ -1507,7 +1507,7 @@ int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
 
 int mapif_parse_GuildMasterChange(int fd, int guild_id, const char* name, int len)
 {
-	struct guild *g = idb_get(guild_db, guild_id);
+	struct guild *g = (struct guild*)idb_get(guild_db, guild_id);
 	struct guild_member gm;
 	int pos;
 

+ 6 - 11
src/char/int_homun.c

@@ -175,7 +175,7 @@ int inter_homun_save()
 int inter_homun_delete(int hom_id)
 {
 	struct s_homunculus *p;
-	p = idb_get(homun_db,hom_id);
+	p = (struct s_homunculus*)idb_get(homun_db,hom_id);
 	if( p == NULL)
 		return 0;
 	idb_remove(homun_db,hom_id);
@@ -255,7 +255,6 @@ int mapif_rename_homun_ack(int fd, int account_id, int char_id, int flag, char *
 int mapif_create_homun(int fd)
 {
 	struct s_homunculus *p;
-	RFIFOHEAD(fd);
 	p= (struct s_homunculus *) aCalloc(sizeof(struct s_homunculus), 1);
 	if(p==NULL){
 		ShowFatalError("int_homun: out of memory !\n");
@@ -274,10 +273,9 @@ int mapif_load_homun(int fd)
 {
 	struct s_homunculus *p;
 	int account_id;
-	RFIFOHEAD(fd);
 	account_id = RFIFOL(fd,2);
 
-	p= idb_get(homun_db,RFIFOL(fd,6));
+	p = (struct s_homunculus*)idb_get(homun_db,RFIFOL(fd,6));
 	if(p==NULL) {
 		mapif_homun_noinfo(fd,account_id);
 		return 0;
@@ -300,7 +298,7 @@ int mapif_save_homun(int fd,int account_id,struct s_homunculus *data)
 	if (data->hom_id == 0)
 		data->hom_id = homun_newid++;
 	hom_id = data->hom_id;
-	p= idb_ensure(homun_db,hom_id,create_homun);
+	p = (struct s_homunculus*)idb_ensure(homun_db,hom_id,create_homun);
 	memcpy(p,data,sizeof(struct s_homunculus));
 	mapif_save_homun_ack(fd,account_id,1);
 	return 0;
@@ -336,27 +334,24 @@ int mapif_rename_homun(int fd, int account_id, int char_id, char *name){
 
 int mapif_parse_SaveHomun(int fd)
 {
-	RFIFOHEAD(fd);
 	mapif_save_homun(fd,RFIFOL(fd,4),(struct s_homunculus *)RFIFOP(fd,8));
 	return 0;
 }
 
 int mapif_parse_DeleteHomun(int fd)
 {
-	RFIFOHEAD(fd);
 	mapif_delete_homun(fd,RFIFOL(fd,2));
 	return 0;
 }
 
-int mapif_parse_RenameHomun(int fd){
-	RFIFOHEAD(fd);
-	mapif_rename_homun(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOP(fd, 10));
+int mapif_parse_RenameHomun(int fd)
+{
+	mapif_rename_homun(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), (char*)RFIFOP(fd, 10));
 	return 0;
 }
 
 int inter_homun_parse_frommap(int fd)
 {
-	RFIFOHEAD(fd);
 	switch(RFIFOW(fd,0)){
 	case 0x3090: mapif_create_homun(fd); break;
 	case 0x3091: mapif_load_homun(fd); break;

+ 12 - 9
src/char/int_party.c

@@ -505,10 +505,11 @@ int mapif_parse_CreateParty(int fd, char *name, int item, int item2, struct part
 }
 
 // ƒp?ƒeƒB�î•ñ—v‹�
-int mapif_parse_PartyInfo(int fd, int party_id) {
+int mapif_parse_PartyInfo(int fd, int party_id)
+{
 	struct party_data *p;
 
-	p = idb_get(party_db, party_id);
+	p = (struct party_data*)idb_get(party_db, party_id);
 	if (p != NULL)
 		mapif_party_info(fd, &p->party);
 	else {
@@ -525,7 +526,7 @@ int mapif_parse_PartyAddMember(int fd, int party_id, struct party_member *member
 	struct party_data *p;
 	int i;
 
-	p = idb_get(party_db, party_id);
+	p = (struct party_data*)idb_get(party_db, party_id);
 	if( p == NULL || p->size == MAX_PARTY ) {
 		mapif_party_memberadded(fd, party_id, member->account_id, member->char_id, 1);
 		return 0;
@@ -557,11 +558,12 @@ int mapif_parse_PartyAddMember(int fd, int party_id, struct party_member *member
 }
 
 // ƒp?ƒeƒB?�Ý’è?�X—v‹�
-int mapif_parse_PartyChangeOption(int fd, int party_id, int account_id, int exp, int item) {
+int mapif_parse_PartyChangeOption(int fd, int party_id, int account_id, int exp, int item)
+{
 	struct party_data *p;
 	int flag = 0;
 
-	p = idb_get(party_db, party_id);
+	p = (struct party_data*)idb_get(party_db, party_id);
 	if (p == NULL)
 		return 0;
 
@@ -576,11 +578,12 @@ int mapif_parse_PartyChangeOption(int fd, int party_id, int account_id, int exp,
 }
 
 // ƒp?ƒeƒB?‘Þ—v‹�
-int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id) {
+int mapif_parse_PartyLeave(int fd, int party_id, int account_id, int char_id)
+{
 	struct party_data *p;
 	int i,lv;
 
-	p = idb_get(party_db, party_id);
+	p = (struct party_data*)idb_get(party_db, party_id);
 	if (!p) return 0;
 
 	for(i = 0; i < MAX_PARTY; i++) {
@@ -610,7 +613,7 @@ int mapif_parse_PartyChangeMap(int fd, int party_id, int account_id, int char_id
 	struct party_data *p;
 	int i;
 
-	p = idb_get(party_db, party_id);
+	p = (struct party_data*)idb_get(party_db, party_id);
 	if (p == NULL)
 		return 0;
 
@@ -682,7 +685,7 @@ int mapif_parse_PartyLeaderChange(int fd,int party_id,int account_id,int char_id
 	struct party_data *p;
 	int i;
 
-	p = idb_get(party_db, party_id);
+	p = (struct party_data*)idb_get(party_db, party_id);
 	if (p == NULL)
 		return 0;
 

+ 3 - 3
src/char/int_pet.c

@@ -145,7 +145,7 @@ int inter_pet_save()
 int inter_pet_delete(int pet_id)
 {
 	struct s_pet *p;
-	p = idb_get(pet_db,pet_id);
+	p = (struct s_pet*)idb_get(pet_db,pet_id);
 	if( p == NULL)
 		return 1;
 	else {
@@ -267,7 +267,7 @@ int mapif_create_pet(int fd,int account_id,int char_id,short pet_class,short pet
 int mapif_load_pet(int fd,int account_id,int char_id,int pet_id)
 {
 	struct s_pet *p;
-	p= idb_get(pet_db,pet_id);
+	p = (struct s_pet*)idb_get(pet_db,pet_id);
 	if(p!=NULL) {
 		if(p->incuvate == 1) {
 			p->account_id = p->char_id = 0;
@@ -304,7 +304,7 @@ int mapif_save_pet(int fd,int account_id,struct s_pet *data)
 		pet_id = data->pet_id;
 		if (pet_id == 0)
 			pet_id = data->pet_id = pet_newid++;
-		p= idb_ensure(pet_db,pet_id,create_pet);
+		p = (struct s_pet*)idb_ensure(pet_db,pet_id,create_pet);
 		if(data->hungry < 0)
 			data->hungry = 0;
 		else if(data->hungry > 100)

+ 7 - 8
src/char/int_status.c

@@ -15,9 +15,10 @@ static DBMap* scdata_db = NULL; // int char_id -> struct scdata*
 char scdata_txt[1024]="save/scdata.txt"; //By [Skotlex]
 
 #ifdef ENABLE_SC_SAVING
-static void* create_scdata(DBKey key, va_list args) {
+static void* create_scdata(DBKey key, va_list args)
+{
 	struct scdata *data;
-	data = aCalloc(1, sizeof(struct scdata));
+	data = (struct scdata*)aCalloc(1, sizeof(struct scdata));
 	data->account_id = va_arg(args, int);
 	data->char_id = key.i;
 	return data;
@@ -28,9 +29,7 @@ static void* create_scdata(DBKey key, va_list args) {
  *------------------------------------------*/
 struct scdata* status_search_scdata(int aid, int cid)
 {
-	struct scdata *data;
-	data = scdata_db->ensure(scdata_db, i2key(cid), create_scdata, aid);
-	return data;
+	return (struct scdata*)scdata_db->ensure(scdata_db, i2key(cid), create_scdata, aid);
 }
 
 /*==========================================
@@ -39,7 +38,7 @@ struct scdata* status_search_scdata(int aid, int cid)
  *------------------------------------------*/
 void status_delete_scdata(int aid, int cid)
 {
-	struct scdata *scdata = idb_remove(scdata_db, cid);
+	struct scdata* scdata = (struct scdata*)idb_remove(scdata_db, cid);
 	if (scdata)
 	{
 		if (scdata->data)
@@ -71,7 +70,7 @@ static int inter_scdata_fromstr(char *line, struct scdata *sc_data)
 	if (sc_data->count < 1)
 		return 0;
 	
-	sc_data->data = aCalloc(sc_data->count, sizeof (struct status_change_data));
+	sc_data->data = (struct status_change_data*)aCalloc(sc_data->count, sizeof (struct status_change_data));
 
 	for (i = 0; i < sc_data->count; i++)
 	{
@@ -106,7 +105,7 @@ void status_load_scdata(const char* filename)
 		if (inter_scdata_fromstr(line, sc)) {
 			sd_count++;
 			sc_count+= sc->count;
-			sc = idb_put(scdata_db, sc->char_id, sc);
+			sc = (struct scdata*)idb_put(scdata_db, sc->char_id, sc);
 			if (sc) {
 				ShowError("Duplicate entry in %s for character %d\n", filename, sc->char_id);
 				if (sc->data) aFree(sc->data);

+ 4 - 4
src/char/int_storage.c

@@ -169,7 +169,7 @@ static void* create_storage(DBKey key, va_list args) {
 struct storage *account2storage(int account_id)
 {
 	struct storage *s;
-	s= idb_ensure(storage_db, account_id, create_storage);
+	s = (struct storage*)idb_ensure(storage_db, account_id, create_storage);
 	return s;
 }
 
@@ -184,7 +184,7 @@ struct guild_storage *guild2storage(int guild_id)
 {
 	struct guild_storage *gs = NULL;
 	if(inter_guild_search(guild_id) != NULL)
-		gs= idb_ensure(guild_storage_db, guild_id, create_guildstorage);
+		gs = (struct guild_storage*)idb_ensure(guild_storage_db, guild_id, create_guildstorage);
 	return gs;
 }
 
@@ -319,7 +319,7 @@ int inter_guild_storage_save()
 // 倉庫データ削除
 int inter_storage_delete(int account_id)
 {
-	struct storage *s = idb_get(storage_db,account_id);
+	struct storage *s = (struct storage*)idb_get(storage_db,account_id);
 	if(s) {
 		int i;
 		for(i=0;i<s->storage_amount;i++){
@@ -334,7 +334,7 @@ int inter_storage_delete(int account_id)
 // ギルド倉庫データ削除
 int inter_guild_storage_delete(int guild_id)
 {
-	struct guild_storage *gs = idb_get(guild_storage_db,guild_id);
+	struct guild_storage *gs = (struct guild_storage*)idb_get(guild_storage_db,guild_id);
 	if(gs) {
 		int i;
 		for(i=0;i<gs->storage_amount;i++){

+ 22 - 26
src/char/inter.c

@@ -359,7 +359,8 @@ int mapif_wis_fail(int fd, char *src) {
 }
 
 // Wisp/page transmission result to map-server
-int mapif_wis_end(struct WisData *wd, int flag) {
+int mapif_wis_end(struct WisData *wd, int flag)
+{
 	unsigned char buf[27];
 
 	WBUFW(buf, 0) = 0x3802;
@@ -370,22 +371,17 @@ int mapif_wis_end(struct WisData *wd, int flag) {
 	return 0;
 }
 
-// アカウント変数送信
-int mapif_account_reg(int fd, unsigned char *src) {
-	unsigned char *buf = aCalloc(1,WBUFW(src,2));
-
-	memcpy(WBUFP(buf,0),src,WBUFW(src,2));
-	WBUFW(buf, 0) = 0x3804;
-	mapif_sendallwos(fd, buf, WBUFW(buf,2));
-
-	aFree(buf);
-
-	return 0;
+// Account registry transfer to map-server
+static void mapif_account_reg(int fd, unsigned char *src)
+{
+	WBUFW(src,0)=0x3804; //NOTE: writing to RFIFO
+	mapif_sendallwos(fd, src, WBUFW(src,2));
 }
 
 // アカウント変数要求返信
-int mapif_account_reg_reply(int fd,int account_id, int char_id) {
-	struct accreg *reg = idb_get(accreg_db,account_id);
+int mapif_account_reg_reply(int fd,int account_id, int char_id)
+{
+	struct accreg *reg = (struct accreg*)idb_get(accreg_db,account_id);
 
 	WFIFOHEAD(fd, ACCOUNT_REG_NUM * 288+ 13);
 	WFIFOW(fd,0) = 0x3804;
@@ -397,8 +393,8 @@ int mapif_account_reg_reply(int fd,int account_id, int char_id) {
 	} else {
 		int i, p;
 		for (p=13,i = 0; i < reg->reg_num; i++) {
-			p+= sprintf(WFIFOP(fd,p), "%s", reg->reg[i].str)+1; //We add 1 to consider the '\0' in place.
-			p+= sprintf(WFIFOP(fd,p), "%s", reg->reg[i].value)+1;
+			p+= sprintf((char*)WFIFOP(fd,p), "%s", reg->reg[i].str)+1; //We add 1 to consider the '\0' in place.
+			p+= sprintf((char*)WFIFOP(fd,p), "%s", reg->reg[i].value)+1;
 		}
 		WFIFOW(fd,2)=p;
 	}
@@ -443,7 +439,7 @@ int check_ttl_wisdata(void) {
 		wis_delnum = 0;
 		wis_db->foreach(wis_db, check_ttl_wisdata_sub, tick);
 		for(i = 0; i < wis_delnum; i++) {
-			struct WisData *wd = idb_get(wis_db, wis_dellist[i]);
+			struct WisData *wd = (struct WisData*)idb_get(wis_db, wis_dellist[i]);
 			ShowWarning("inter: wis data id=%d time out : from %s to %s\n", wd->id, wd->src, wd->dst);
 			// removed. not send information after a timeout. Just no answer for the player
 			//mapif_wis_end(wd, 1); // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
@@ -505,7 +501,7 @@ int mapif_parse_WisRequest(int fd) {
 	// search if character exists before to ask all map-servers
 	char_status = search_character_byname(name);
 	if (char_status == NULL)
-		return mapif_wis_fail(fd, RFIFOP(fd, 4));
+		return mapif_wis_fail(fd, (char*)RFIFOP(fd, 4));
 
 	// Character exists.
 	// to be sure of the correct name, rewrite it
@@ -513,19 +509,19 @@ int mapif_parse_WisRequest(int fd) {
 	strncpy(name, char_status->name, NAME_LENGTH);
 	// if source is destination, don't ask other servers.
 	if (strcmp((char*)RFIFOP(fd,4),name) == 0)
-		return mapif_wis_fail(fd, RFIFOP(fd, 4));
+		return mapif_wis_fail(fd, (char*)RFIFOP(fd, 4));
 
 	//Look for online character.
 	fd2 = search_character_online(char_status->account_id, char_status->char_id);
 	if (fd2 >= 0) {	//Character online, send whisper.
-		wd = mapif_create_whisper(fd, RFIFOP(fd, 4), RFIFOP(fd,28), RFIFOP(fd,52), RFIFOW(fd,2)-52);
+		wd = mapif_create_whisper(fd, (char*)RFIFOP(fd, 4), (char*)RFIFOP(fd,28), (char*)RFIFOP(fd,52), RFIFOW(fd,2)-52);
 		if (!wd) return 1;
 		idb_put(wis_db, wd->id, wd);
 		mapif_wis_message2(wd, fd2);
 		return 0;
 	}
 	//Not found.
-	return mapif_wis_fail(fd, RFIFOP(fd, 4));
+	return mapif_wis_fail(fd, (char*)RFIFOP(fd,4));
 }
 
 // Wisp/page transmission result
@@ -535,7 +531,7 @@ int mapif_parse_WisReply(int fd) {
 	RFIFOHEAD(fd);
 	id = RFIFOL(fd,2);
 	flag = RFIFOB(fd,6);
-	wd = idb_get(wis_db, id);
+	wd = (struct WisData*)idb_get(wis_db, id);
 
 	if (wd == NULL)
 		return 0;	// This wisp was probably suppress before, because it was timeout or because of target was found on another map-server
@@ -583,13 +579,13 @@ int mapif_parse_Registry(int fd) {
 		default: //Error?
 			return 1; 
 	}
-	reg = idb_ensure(accreg_db, RFIFOL(fd,4), create_accreg);
+	reg = (struct accreg*)idb_ensure(accreg_db, RFIFOL(fd,4), create_accreg);
 
 	for(j=0,p=13;j<ACCOUNT_REG_NUM && p<RFIFOW(fd,2);j++){
-		sscanf(RFIFOP(fd,p), "%31c%n",reg->reg[j].str,&len);
+		sscanf((char*)RFIFOP(fd,p), "%31c%n",reg->reg[j].str,&len);
 		reg->reg[j].str[len]='\0';
 		p +=len+1; //+1 to skip the '\0' between strings.
-		sscanf(RFIFOP(fd,p), "%255c%n",reg->reg[j].value,&len);
+		sscanf((char*)RFIFOP(fd,p), "%255c%n",reg->reg[j].value,&len);
 		reg->reg[j].value[len]='\0';
 		p +=len+1;
 	}
@@ -636,7 +632,7 @@ int mapif_parse_NameChangeRequest(int fd)
 	account_id = RFIFOL(fd, 2);
 	char_id = RFIFOL(fd, 6);
 	type = RFIFOB(fd, 10);
-	name = RFIFOP(fd, 11);
+	name = (char*)RFIFOP(fd, 11);
 
 	// Check Authorised letters/symbols in the name
 	if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorised

+ 20 - 20
src/char_sql/char.c

@@ -232,7 +232,7 @@ void set_char_online(int map_id, int char_id, int account_id)
 		}
 	}
 
-	character = idb_ensure(online_char_db, account_id, create_online_char_data);
+	character = (struct online_char_data*)idb_ensure(online_char_db, account_id, create_online_char_data);
 	if (online_check && character->char_id != -1 && character->server > -1 && character->server != map_id)
 	{
 		//char == 99 <- Character logging in, so someone has logged in while one
@@ -257,7 +257,7 @@ void set_char_online(int map_id, int char_id, int account_id)
 	if (char_id != 99)
 	{	//Set char online in guild cache. If char is in memory, use the guild id on it, otherwise seek it.
 		struct mmo_charstatus *cp;
-		cp = idb_get(char_db_,char_id);
+		cp = (struct mmo_charstatus*)idb_get(char_db_,char_id);
  		inter_guild_CharOnline(char_id, cp?cp->guild_id:-1);
 	}
 	if (login_fd > 0 && !session[login_fd]->flag.eof)
@@ -281,7 +281,7 @@ void set_char_offline(int char_id, int account_id)
 	}
 	else
 	{
-		struct mmo_charstatus* cp = idb_get(char_db_,char_id);
+		struct mmo_charstatus* cp = (struct mmo_charstatus*)idb_get(char_db_,char_id);
 		inter_guild_CharOffline(char_id, cp?cp->guild_id:-1);
 		if (cp)
 			idb_remove(char_db_,char_id);
@@ -290,7 +290,7 @@ void set_char_offline(int char_id, int account_id)
 			Sql_ShowDebug(sql_handle);
 	}
 
-	if ((character = idb_get(online_char_db, account_id)) != NULL)
+	if ((character = (struct online_char_data*)idb_get(online_char_db, account_id)) != NULL)
 	{	//We don't free yet to avoid aCalloc/aFree spamming during char change. [Skotlex]
 		if( character->server > -1 )
 			server[character->server].users--;
@@ -442,9 +442,9 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus* p)
 	if (char_id!=p->char_id) return 0;
 
 #ifndef TXT_SQL_CONVERT
-	cp = idb_ensure(char_db_, char_id, create_charstatus);
+	cp = (struct mmo_charstatus*)idb_ensure(char_db_, char_id, create_charstatus);
 #else
-	cp = aCalloc(1, sizeof(struct mmo_charstatus));
+	cp = (struct mmo_charstatus*)aCalloc(1, sizeof(struct mmo_charstatus));
 #endif
 
 	StringBuf_Init(&buf);
@@ -1141,7 +1141,7 @@ int mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_everything
 	SqlStmt_Free(stmt);
 	StringBuf_Destroy(&buf);
 
-	cp = idb_ensure(char_db_, char_id, create_charstatus);
+	cp = (struct mmo_charstatus*)idb_ensure(char_db_, char_id, create_charstatus);
 	memcpy(cp, p, sizeof(struct mmo_charstatus));
 	return 1;
 }
@@ -1613,7 +1613,7 @@ static void char_auth_ok(int fd, struct char_session_data *sd)
 		return;
 	}
 
-	if( online_check && (character = idb_get(online_char_db, sd->account_id)) != NULL )
+	if( online_check && (character = (struct online_char_data*)idb_get(online_char_db, sd->account_id)) != NULL )
 	{	// check if character is not online already. [Skotlex]
 		if (character->server > -1)
 		{	//Character already online. KICK KICK KICK
@@ -1898,7 +1898,7 @@ int parse_fromlogin(int fd)
 				return 0;
 
 			if(!char_gm_read) {
-				unsigned char buf[32000];
+				unsigned char buf[32000]; //FIXME: this will crash
 				if (gm_account != NULL)
 					aFree(gm_account);
 				gm_account = (struct gm_account*)aCalloc(sizeof(struct gm_account) * ((RFIFOW(fd,2) - 4) / 5), 1);
@@ -1926,7 +1926,7 @@ int parse_fromlogin(int fd)
 		{
 			struct online_char_data* character;
 			int aid = RFIFOL(fd,2);
-			if ((character = idb_get(online_char_db, aid)) != NULL)
+			if ((character = (struct online_char_data*)idb_get(online_char_db, aid)) != NULL)
 			{	//Kick out this player.
 				if( character->server > -1 )
 				{	//Kick it from the map server it is on.
@@ -2118,7 +2118,7 @@ int char_send_fame_list(int fd)
 
 void char_update_fame_list(int type, int index, int fame)
 {
-	char buf[9];
+	unsigned char buf[8];
 	WBUFW(buf,0) = 0x2b22;
 	WBUFB(buf,2) = type;
 	WBUFB(buf,3) = index;
@@ -2346,7 +2346,7 @@ int parse_frommap(int fd)
 			for(i = 0; i < server[id].users; i++) {
 				aid = RFIFOL(fd,6+i*8);
 				cid = RFIFOL(fd,6+i*8+4);
-				character = idb_ensure(online_char_db, aid, create_online_char_data);
+				character = (struct online_char_data*)idb_ensure(online_char_db, aid, create_online_char_data);
 				if (character->server > -1 && character->server != id)
 				{
 					ShowNotice("Set map user: Character (%d:%d) marked on map server %d, but map server %d claims to have (%d:%d) online!\n",
@@ -2375,7 +2375,7 @@ int parse_frommap(int fd)
 			}
 			//Check account only if this ain't final save. Final-save goes through because of the char-map reconnect
 			if (RFIFOB(fd,12) || (
-				(character = idb_get(online_char_db, aid)) != NULL &&
+				(character = (struct online_char_data*)idb_get(online_char_db, aid)) != NULL &&
 				character->char_id == cid))
 			{
 				struct mmo_charstatus char_dat;
@@ -2435,7 +2435,7 @@ int parse_frommap(int fd)
 			if (map_id >= 0)
 				map_fd = server[map_id].fd;
 			//Char should just had been saved before this packet, so this should be safe. [Skotlex]
-			char_data = uidb_get(char_db_,RFIFOL(fd,14));
+			char_data = (struct mmo_charstatus*)uidb_get(char_db_,RFIFOL(fd,14));
 			if (char_data == NULL) 
 			{	//Really shouldn't happen.
 				mmo_char_fromsql(RFIFOL(fd,14), &char_dat, true);
@@ -2460,7 +2460,7 @@ int parse_frommap(int fd)
 				memcpy(WFIFOP(map_fd,20), char_data, sizeof(struct mmo_charstatus));
 				WFIFOSET(map_fd, WFIFOW(map_fd,2));
 
-				data = idb_ensure(online_char_db, RFIFOL(fd,2), create_online_char_data);
+				data = (struct online_char_data*)idb_ensure(online_char_db, RFIFOL(fd,2), create_online_char_data);
 				data->char_id = char_data->char_id;
 				data->server = map_id; //Update server where char is.
 				
@@ -2683,7 +2683,7 @@ int parse_frommap(int fd)
 			char esc_motd[sizeof(motd)*2+1];
 			char esc_server_name[sizeof(server_name)*2+1];
 
-			strncpy(motd, RFIFOP(fd,10), 255); //First copy it to make sure the motd fits.
+			strncpy(motd, (char*)RFIFOP(fd,10), 255); //First copy it to make sure the motd fits.
 			motd[255] = '\0';
 			Sql_EscapeString(sql_handle, esc_motd, motd);
 			Sql_EscapeString(sql_handle, esc_server_name, server_name);
@@ -2851,7 +2851,7 @@ int parse_char(int fd)
 	{
 		if (sd != NULL)
 		{	// already authed client
-			struct online_char_data* data = idb_get(online_char_db, sd->account_id);
+			struct online_char_data* data = (struct online_char_data*)idb_get(online_char_db, sd->account_id);
 			if (!data || data->server == -1) //If it is not in any server, send it offline. [Skotlex]
 				set_char_offline(99,sd->account_id);
 			if (data && data->fd == fd)
@@ -3202,8 +3202,8 @@ int parse_char(int fd)
 			if (RFIFOREST(fd) < 60)
 				return 0;
 		{
-			char* l_user = RFIFOP(fd,2);
-			char* l_pass = RFIFOP(fd,26);
+			char* l_user = (char*)RFIFOP(fd,2);
+			char* l_pass = (char*)RFIFOP(fd,26);
 			l_user[23] = '\0';
 			l_pass[23] = '\0';
 			ARR_FIND( 0, MAX_MAP_SERVERS, i, server[i].fd <= 0 );
@@ -3466,7 +3466,7 @@ int ping_login_server(int tid, unsigned int tick, int id, int data)
 static int chardb_waiting_disconnect(int tid, unsigned int tick, int id, int data)
 {
 	struct online_char_data* character;
-	if ((character = idb_get(online_char_db, id)) != NULL && character->waiting_disconnect == tid)
+	if ((character = (struct online_char_data*)idb_get(online_char_db, id)) != NULL && character->waiting_disconnect == tid)
 	{	//Mark it offline due to timeout.
 		character->waiting_disconnect = -1;
 		set_char_offline(character->char_id, character->account_id);

+ 2 - 2
src/char_sql/int_auction.c

@@ -30,7 +30,7 @@ static int auction_count(int char_id, bool buy)
 	DBKey key;
 
 	iter = auction_db_->iterator(auction_db_);
-	for( auction = iter->first(iter,&key); iter->exists(iter); auction = iter->next(iter,&key) )
+	for( auction = (struct auction_data*)iter->first(iter,&key); iter->exists(iter); auction = (struct auction_data*)iter->next(iter,&key) )
 	{
 		if( (buy && auction->buyer_id == char_id) || (!buy && auction->seller_id == char_id) )
 			i++;
@@ -262,7 +262,7 @@ static void mapif_parse_Auction_requestlist(int fd)
 	memcpy(searchtext, RFIFOP(fd,16), NAME_LENGTH);
 
 	iter = auction_db_->iterator(auction_db_);
-	for( auction = iter->first(iter,&key); iter->exists(iter); auction = iter->next(iter,&key) )
+	for( auction = (struct auction_data*)iter->first(iter,&key); iter->exists(iter); auction = (struct auction_data*)iter->next(iter,&key) )
 	{
 		if( (type == 0 && auction->type != IT_ARMOR && auction->type != IT_PETARMOR) || 
 			(type == 1 && auction->type != IT_WEAPON) ||

+ 3 - 3
src/char_sql/int_guild.c

@@ -59,7 +59,7 @@ static int guild_save_timer(int tid, unsigned int tick, int id, int data)
 		state = 1;
 
 	iter = guild_db_->iterator(guild_db_);
-	for( g = iter->first(iter,&key); iter->exists(iter); g = iter->next(iter,&key) )
+	for( g = (struct guild*)iter->first(iter,&key); iter->exists(iter); g = (struct guild*)iter->next(iter,&key) )
 	{
 		if( state == 0 && g->guild_id == last_id )
 			state++; //Save next guild in the list.
@@ -374,7 +374,7 @@ struct guild * inter_guild_fromsql(int guild_id)
 	if( guild_id <= 0 )
 		return NULL;
 
-	g = idb_get(guild_db_, guild_id);
+	g = (struct guild*)idb_get(guild_db_, guild_id);
 	if( g )
 		return g;
 
@@ -1852,7 +1852,7 @@ int mapif_parse_GuildCastleDataSave(int fd,int castle_id,int index,int value)
 	case 1:
 		if( gc.guild_id!=value ){
 			int gid=(value)?value:gc.guild_id;
-			struct guild *g=idb_get(guild_db_, gid);
+			struct guild *g = (struct guild*)idb_get(guild_db_, gid);
 			if(log_inter)
 				inter_log("guild %s (id=%d) %s castle id=%d\n",
 					(g)?g->name:"??" ,gid, (value)?"occupy":"abandon", castle_id);

+ 1 - 1
src/char_sql/int_homun.c

@@ -302,7 +302,7 @@ int inter_homunculus_parse_frommap(int fd){
 	case 0x3091: mapif_load_homunculus(fd); break;
 	case 0x3092: mapif_save_homunculus(fd, RFIFOW(fd,4), (struct s_homunculus*) RFIFOP(fd, 8)); break;
 	case 0x3093: mapif_delete_homunculus(fd); break;  // doesn't need to be parse, very simple packet...
-	case 0x3094: mapif_rename_homun(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOP(fd, 10)); break;
+	case 0x3094: mapif_rename_homun(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), (char*)RFIFOP(fd, 10)); break;
 	default:
 		return 0;
 	}

+ 2 - 2
src/char_sql/int_mail.c

@@ -53,7 +53,7 @@ static int mail_fromsql(int char_id, struct mail_data* md)
 		Sql_GetData(sql_handle, 5, &data, NULL); safestrncpy(msg->title, data, MAIL_TITLE_LENGTH);
 		Sql_GetData(sql_handle, 6, &data, NULL); safestrncpy(msg->body, data, MAIL_BODY_LENGTH);
 		Sql_GetData(sql_handle, 7, &data, NULL); msg->timestamp = atoi(data);
-		Sql_GetData(sql_handle, 8, &data, NULL); msg->status = atoi(data);
+		Sql_GetData(sql_handle, 8, &data, NULL); msg->status = (mail_status)atoi(data);
 		Sql_GetData(sql_handle, 9, &data, NULL); msg->zeny = atoi(data);
 		item = &msg->item;
 		Sql_GetData(sql_handle,10, &data, NULL); item->amount = (short)atoi(data);
@@ -169,7 +169,7 @@ static bool mail_loadmessage(int mail_id, struct mail_message* msg)
 		Sql_GetData(sql_handle, 5, &data, NULL); safestrncpy(msg->title, data, MAIL_TITLE_LENGTH);
 		Sql_GetData(sql_handle, 6, &data, NULL); safestrncpy(msg->body, data, MAIL_BODY_LENGTH);
 		Sql_GetData(sql_handle, 7, &data, NULL); msg->timestamp = atoi(data);
-		Sql_GetData(sql_handle, 8, &data, NULL); msg->status = atoi(data);
+		Sql_GetData(sql_handle, 8, &data, NULL); msg->status = (mail_status)atoi(data);
 		Sql_GetData(sql_handle, 9, &data, NULL); msg->zeny = atoi(data);
 		Sql_GetData(sql_handle,10, &data, NULL); msg->item.amount = (short)atoi(data);
 		Sql_GetData(sql_handle,11, &data, NULL); msg->item.nameid = atoi(data);

+ 2 - 2
src/char_sql/int_party.c

@@ -211,7 +211,7 @@ struct party_data *inter_party_fromsql(int party_id)
 		return NULL;
 	
 	//Load from memory
-	p = idb_get(party_db_, party_id);
+	p = (struct party_data*)idb_get(party_db_, party_id);
 	if( p != NULL )
 		return p;
 
@@ -498,7 +498,7 @@ int mapif_parse_CreateParty(int fd, char *name, int item, int item2, struct part
 			}
 	}
 
-	p= aCalloc(1, sizeof(struct party_data));
+	p = (struct party_data*)aCalloc(1, sizeof(struct party_data));
 	
 	memcpy(p->party.name,name,NAME_LENGTH);
 	p->party.exp=0;

+ 13 - 16
src/char_sql/inter.c

@@ -485,8 +485,9 @@ int mapif_wis_message(struct WisData *wd)
 
 	return 0;
 }
+
 // Wis sending result
-int mapif_wis_end(struct WisData *wd,int flag)
+int mapif_wis_end(struct WisData *wd, int flag)
 {
 	unsigned char buf[27];
 
@@ -497,15 +498,11 @@ int mapif_wis_end(struct WisData *wd,int flag)
 	return 0;
 }
 
-int mapif_account_reg(int fd,unsigned char *src)
+// Account registry transfer to map-server
+static void mapif_account_reg(int fd, unsigned char *src)
 {
-//	unsigned char buf[WBUFW(src,2)]; <- Hey, can this really be done? [Skotlex]
-	unsigned char *buf = aCalloc(1,WBUFW(src,2)); // [Lance] - Skot... Dynamic allocation is better :D
-	memcpy(WBUFP(buf,0),src,WBUFW(src,2));
-	WBUFW(buf, 0)=0x3804;
-	mapif_sendallwos(fd, buf, WBUFW(buf,2));
-	aFree(buf);
-	return 0;
+	WBUFW(src,0)=0x3804; //NOTE: writing to RFIFO
+	mapif_sendallwos(fd, src, WBUFW(src,2));
 }
 
 // Send the requested account_reg
@@ -524,8 +521,8 @@ int mapif_account_reg_reply(int fd,int account_id,int char_id, int type)
 	}else{
 		int i,p;
 		for (p=13,i = 0; i < reg->reg_num && p < 5000; i++) {
-			p+= sprintf(WFIFOP(fd,p), "%s", reg->reg[i].str)+1; //We add 1 to consider the '\0' in place.
-			p+= sprintf(WFIFOP(fd,p), "%s", reg->reg[i].value)+1;
+			p+= sprintf((char*)WFIFOP(fd,p), "%s", reg->reg[i].str)+1; //We add 1 to consider the '\0' in place.
+			p+= sprintf((char*)WFIFOP(fd,p), "%s", reg->reg[i].value)+1;
 		}
 		WFIFOW(fd,2)=p;
 		if (p>= 5000)
@@ -605,7 +602,7 @@ int check_ttl_wisdata(void)
 		wis_delnum = 0;
 		wis_db->foreach(wis_db, check_ttl_wisdata_sub, tick);
 		for(i = 0; i < wis_delnum; i++) {
-			struct WisData *wd = idb_get(wis_db, wis_dellist[i]);
+			struct WisData *wd = (struct WisData*)idb_get(wis_db, wis_dellist[i]);
 			ShowWarning("inter: wis data id=%d time out : from %s to %s\n", wd->id, wd->src, wd->dst);
 			// removed. not send information after a timeout. Just no answer for the player
 			//mapif_wis_end(wd, 1); // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
@@ -710,7 +707,7 @@ int mapif_parse_WisReply(int fd)
 
 	id = RFIFOL(fd,2);
 	flag = RFIFOB(fd,6);
-	wd = idb_get(wis_db, id);
+	wd = (struct WisData*)idb_get(wis_db, id);
 	if (wd == NULL)
 		return 0;	// This wisp was probably suppress before, because it was timeout of because of target was found on another map-server
 
@@ -755,10 +752,10 @@ int mapif_parse_Registry(int fd)
 		return 1;
 	}
 	for(j=0,p=13;j<max && p<RFIFOW(fd,2);j++){
-		sscanf(RFIFOP(fd,p), "%31c%n",reg->reg[j].str,&len);
+		sscanf((char*)RFIFOP(fd,p), "%31c%n",reg->reg[j].str,&len);
 		reg->reg[j].str[len]='\0';
 		p +=len+1; //+1 to skip the '\0' between strings.
-		sscanf(RFIFOP(fd,p), "%255c%n",reg->reg[j].value,&len);
+		sscanf((char*)RFIFOP(fd,p), "%255c%n",reg->reg[j].value,&len);
 		reg->reg[j].value[len]='\0';
 		p +=len+1;
 	}
@@ -802,7 +799,7 @@ int mapif_parse_NameChangeRequest(int fd)
 	account_id = RFIFOL(fd,2);
 	char_id = RFIFOL(fd,6);
 	type = RFIFOB(fd,10);
-	name = RFIFOP(fd,11);
+	name = (char*)RFIFOP(fd,11);
 
 	// Check Authorised letters/symbols in the name
 	if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorised

+ 25 - 10
src/common/db.c

@@ -106,6 +106,16 @@
  */
 #define HASH_SIZE (256+27)
 
+/**
+ * The color of individual nodes.
+ * @private
+ * @see struct dbn
+ */
+typedef enum node_color {
+	RED,
+	BLACK
+} node_color;
+
 /**
  * A node in a RED-BLACK tree of the database.
  * @param parent Parent node
@@ -127,7 +137,7 @@ typedef struct dbn {
 	DBKey key;
 	void *data;
 	// Other
-	enum {RED, BLACK} color;
+	node_color color;
 	unsigned deleted : 1;
 } *DBNode;
 
@@ -503,7 +513,7 @@ static void db_rebalance_erase(DBNode node, DBNode *root)
 		y->parent = node->parent;
 		// switch colors
 		{
-			int tmp = y->color;
+			node_color tmp = y->color;
 			y->color = node->color;
 			node->color = tmp;
 		}
@@ -2112,7 +2122,7 @@ static DBType db_obj_type(DBMap* self)
 	DBType type;
 
 	DB_COUNTSTAT(db_type);
-	if (db == NULL) return -1; // nullpo candidate - TODO what should this return?
+	if (db == NULL) return (DBType)-1; // nullpo candidate - TODO what should this return?
 
 	db_free_lock(db);
 	type = db->type;
@@ -2176,7 +2186,7 @@ DBOptions db_fix_options(DBType type, DBOptions options)
 	switch (type) {
 		case DB_INT:
 		case DB_UINT: // Numeric database, do nothing with the keys
-			return options&~(DB_OPT_DUP_KEY|DB_OPT_RELEASE_KEY);
+			return (DBOptions)(options&~(DB_OPT_DUP_KEY|DB_OPT_RELEASE_KEY));
 
 		default:
 			ShowError("db_fix_options: Unknown database type %u with options %x\n", type, options);
@@ -2512,10 +2522,11 @@ void db_final(void)
 }
 
 // Link DB System - jAthena
-void  linkdb_insert( struct linkdb_node** head, void *key, void* data) {
+void linkdb_insert( struct linkdb_node** head, void *key, void* data)
+{
 	struct linkdb_node *node;
 	if( head == NULL ) return ;
-	node = aMalloc( sizeof(struct linkdb_node) );
+	node = (struct linkdb_node*)aMalloc( sizeof(struct linkdb_node) );
 	if( *head == NULL ) {
 		// first node
 		*head      = node;
@@ -2532,7 +2543,8 @@ void  linkdb_insert( struct linkdb_node** head, void *key, void* data) {
 	node->data = data;
 }
 
-void* linkdb_search( struct linkdb_node** head, void *key) {
+void* linkdb_search( struct linkdb_node** head, void *key)
+{
 	int n = 0;
 	struct linkdb_node *node;
 	if( head == NULL ) return NULL;
@@ -2556,7 +2568,8 @@ void* linkdb_search( struct linkdb_node** head, void *key) {
 	return NULL;
 }
 
-void* linkdb_erase( struct linkdb_node** head, void *key) {
+void* linkdb_erase( struct linkdb_node** head, void *key)
+{
 	struct linkdb_node *node;
 	if( head == NULL ) return NULL;
 	node = *head;
@@ -2577,7 +2590,8 @@ void* linkdb_erase( struct linkdb_node** head, void *key) {
 	return NULL;
 }
 
-void linkdb_replace( struct linkdb_node** head, void *key, void *data ) {
+void linkdb_replace( struct linkdb_node** head, void *key, void *data )
+{
 	int n = 0;
 	struct linkdb_node *node;
 	if( head == NULL ) return ;
@@ -2603,7 +2617,8 @@ void linkdb_replace( struct linkdb_node** head, void *key, void *data ) {
 	linkdb_insert( head, key, data );
 }
 
-void  linkdb_final( struct linkdb_node** head ) {
+void linkdb_final( struct linkdb_node** head )
+{
 	struct linkdb_node *node, *node2;
 	if( head == NULL ) return ;
 	node = *head;

+ 3 - 3
src/common/mmo.h

@@ -256,11 +256,11 @@ struct mmo_charstatus {
 	bool show_equip;
 };
 
-enum mail_status {
+typedef enum mail_status {
 	MAIL_NEW,
 	MAIL_UNREAD,
 	MAIL_READ,
-};
+} mail_status;
 
 struct mail_message {
 	unsigned int id;
@@ -271,7 +271,7 @@ struct mail_message {
 	char title[MAIL_TITLE_LENGTH];
 	char body[MAIL_BODY_LENGTH];
 
-	enum mail_status status;
+	mail_status status;
 	unsigned int timestamp; // marks when the message was sent
 
 	int zeny;

+ 3 - 0
src/common/plugin.h

@@ -80,6 +80,9 @@ typedef void Plugin_Event_Func(void);
 
 #define PLUGIN_INFO			struct _Plugin_Info plugin_info
 #define PLUGIN_EVENTS_TABLE	struct _Plugin_Event_Table plugin_event_table[]
+
+#ifndef	_PLUGINS_H_
 void** plugin_call_table;
+#endif
 
 #endif /* _PLUGIN_H_ */

+ 25 - 24
src/common/plugins.c

@@ -38,6 +38,7 @@ Plugin* plugin_head = NULL;
 
 static Plugin_Info default_info = { "Unknown", PLUGIN_ALL, "0", PLUGIN_VERSION, "Unknown" };
 
+void** plugin_call_table;
 static size_t call_table_size	= 0;
 static size_t max_call_table	= 0;
 
@@ -196,7 +197,7 @@ Plugin* plugin_open(const char* filename)
 
 	// Retrieve plugin information
 	plugin->state = 0;	// initialising
-	DLL_SYM(info, plugin->dll, "plugin_info");
+	info = (Plugin_Info*)DLL_SYM(plugin->dll, "plugin_info");
 	// For high priority plugins (those that are explicitly loaded from the conf file)
 	// we'll ignore them even (could be a 3rd party dll file)
 	if( !info )
@@ -225,20 +226,20 @@ Plugin* plugin_open(const char* filename)
 	plugin->filename = aStrdup(filename);
 
 	// Initialise plugin call table (For exporting procedures)
-	DLL_SYM(procs, plugin->dll, "plugin_call_table");
+	procs = (void**)DLL_SYM(plugin->dll, "plugin_call_table");
 	if( procs )
 		*procs = plugin_call_table;
 	//else ShowDebug("plugin_open: plugin_call_table not found\n");
 
 	// Register plugin events
-	DLL_SYM(events, plugin->dll, "plugin_event_table");
+	events = (Plugin_Event_Table*)DLL_SYM(plugin->dll, "plugin_event_table");
 	if( events ){
 		int i = 0;
 		//ShowDebug("plugin_open: parsing plugin_event_table\n");
 		while( events[i].func_name ){
 			if( strcmpi(events[i].event_name, EVENT_PLUGIN_TEST) == 0 ){
 				Plugin_Test_Func* test_func;
-				DLL_SYM(test_func, plugin->dll, events[i].func_name);
+				test_func = (Plugin_Test_Func*)DLL_SYM(plugin->dll, events[i].func_name);
 				//ShowDebug("plugin_open: invoking "EVENT_PLUGIN_TEST" with %s()\n", events[i].func_name);
 				if( test_func && test_func() == 0 ){
 					// plugin has failed test, disabling
@@ -247,7 +248,7 @@ Plugin* plugin_open(const char* filename)
 				}
 			} else {
 				Plugin_Event_Func* func;
-				DLL_SYM(func, plugin->dll, events[i].func_name);
+				func = (Plugin_Event_Func*)DLL_SYM(plugin->dll, events[i].func_name);
 				if (func)
 					register_plugin_event(func, events[i].event_name);
 			}
@@ -340,27 +341,27 @@ void plugins_init(void)
 	register_plugin_func(EVENT_ATHENA_FINAL);
 
 	// networking
-	export_symbol(RFIFOSKIP,        SYMBOL_RFIFOSKIP);
-	export_symbol(WFIFOSET,         SYMBOL_WFIFOSET);
-	export_symbol(do_close,   SYMBOL_DELETE_SESSION);
-	export_symbol(session,          SYMBOL_SESSION);
-	export_symbol(&fd_max,          SYMBOL_FD_MAX);
-	export_symbol(addr_,            SYMBOL_ADDR);
+	EXPORT_SYMBOL(RFIFOSKIP,  SYMBOL_RFIFOSKIP);
+	EXPORT_SYMBOL(WFIFOSET,   SYMBOL_WFIFOSET);
+	EXPORT_SYMBOL(do_close,   SYMBOL_DELETE_SESSION);
+	EXPORT_SYMBOL(session,    SYMBOL_SESSION);
+	EXPORT_SYMBOL(&fd_max,    SYMBOL_FD_MAX);
+	EXPORT_SYMBOL(addr_,      SYMBOL_ADDR);
 	// timers
-	export_symbol(get_uptime,              SYMBOL_GET_UPTIME);
-	export_symbol(delete_timer,            SYMBOL_DELETE_TIMER);
-	export_symbol(add_timer_func_list,     SYMBOL_ADD_TIMER_FUNC_LIST);
-	export_symbol(add_timer_interval,      SYMBOL_ADD_TIMER_INTERVAL);
-	export_symbol(add_timer,               SYMBOL_ADD_TIMER);
-	export_symbol((void*)get_svn_revision, SYMBOL_GET_SVN_REVISION);
-	export_symbol(gettick,                 SYMBOL_GETTICK);
+	EXPORT_SYMBOL(get_uptime,              SYMBOL_GET_UPTIME);
+	EXPORT_SYMBOL(delete_timer,            SYMBOL_DELETE_TIMER);
+	EXPORT_SYMBOL(add_timer_func_list,     SYMBOL_ADD_TIMER_FUNC_LIST);
+	EXPORT_SYMBOL(add_timer_interval,      SYMBOL_ADD_TIMER_INTERVAL);
+	EXPORT_SYMBOL(add_timer,               SYMBOL_ADD_TIMER);
+	EXPORT_SYMBOL((void*)get_svn_revision, SYMBOL_GET_SVN_REVISION);
+	EXPORT_SYMBOL(gettick,                 SYMBOL_GETTICK);
 	// core
-	export_symbol(parse_console, SYMBOL_PARSE_CONSOLE);
-	export_symbol(&runflag,      SYMBOL_RUNFLAG);
-	export_symbol(arg_v,         SYMBOL_ARG_V);
-	export_symbol(&arg_c,        SYMBOL_ARG_C);
-	export_symbol(SERVER_NAME,   SYMBOL_SERVER_NAME);
-	export_symbol(&SERVER_TYPE,  SYMBOL_SERVER_TYPE);
+	EXPORT_SYMBOL(parse_console, SYMBOL_PARSE_CONSOLE);
+	EXPORT_SYMBOL(&runflag,      SYMBOL_RUNFLAG);
+	EXPORT_SYMBOL(arg_v,         SYMBOL_ARG_V);
+	EXPORT_SYMBOL(&arg_c,        SYMBOL_ARG_C);
+	EXPORT_SYMBOL(SERVER_NAME,   SYMBOL_SERVER_NAME);
+	EXPORT_SYMBOL(&SERVER_TYPE,  SYMBOL_SERVER_TYPE);
 
 	load_priority = 1;
 	plugins_config_read(PLUGIN_CONF_FILENAME);

+ 4 - 3
src/common/plugins.h

@@ -17,7 +17,7 @@
 	#define WIN32_LEAN_AND_MEAN
 	#include <windows.h>
 	#define DLL_OPEN(x)		LoadLibrary(x)
-	#define DLL_SYM(x,y,z)	(FARPROC)(x) = GetProcAddress(y,z)
+	#define DLL_SYM(x,y)	GetProcAddress(x,y)
 	#define DLL_CLOSE(x)	FreeLibrary(x)
 	char *DLL_ERROR(void);
 
@@ -28,7 +28,7 @@
 
 	#include <dlfcn.h>
 	#define DLL_OPEN(x)		dlopen(x,RTLD_NOW)
-	#define DLL_SYM(x,y,z)	(x) = (void *)dlsym(y,z)
+	#define DLL_SYM(x,y)	dlsym(x,y)
 	#define DLL_CLOSE(x)	dlclose(x)
 	#define DLL_ERROR		dlerror
 
@@ -60,7 +60,8 @@ int register_plugin_event(Plugin_Event_Func* func, char* name);
 int plugin_event_trigger(char* name);
 
 int export_symbol(void* var, size_t offset);
-#define EXPORT_SYMBOL(s)	export_symbol((s), -1);
+#define EXPORT_SYMBOL(s,o) export_symbol((void*)(s),(o));
+#define EXPORT_SYMBOL2(s) EXPORT_SYMBOL((s), -1);
 
 Plugin* plugin_open(const char* filename);
 void plugin_load(const char* filename);

+ 1 - 1
src/common/strlib.c

@@ -241,7 +241,7 @@ char* _strtok_r(char *s1, const char *s2, char **lasts)
 }
 #endif
 
-#if !(defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400)
+#if !(defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400) && !defined(CYGWIN)
 /* Find the length of STRING, but scan at most MAXLEN characters.
    If no '\0' terminator is found in that many characters, return MAXLEN.  */
 size_t strnlen (const char* string, size_t maxlen)

+ 3 - 3
src/common/strlib.h

@@ -24,7 +24,7 @@ const char *stristr(const char *haystack, const char *needle);
 char* _strtok_r(char* s1, const char* s2, char** lasts);
 #endif
 
-#if !(defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400)
+#if !(defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400) && !defined(CYGWIN)
 size_t strnlen (const char* string, size_t maxlen);
 #endif
 
@@ -49,7 +49,7 @@ int strline(const char* str, size_t pos);
 
 
 /// Bitfield determining the behaviour of sv_parse.
-enum e_svopt
+typedef enum e_svopt
 {
 	// default: no escapes and no line terminator
 	SV_NOESCAPE_NOTERMINATE = 0,
@@ -59,7 +59,7 @@ enum e_svopt
 	SV_TERMINATE_LF = 2,
 	SV_TERMINATE_CRLF = 4,
 	SV_TERMINATE_CR = 8,
-};
+} e_svopt;
 
 /// Other escape sequences supported by the C compiler.
 #define SV_ESCAPE_C_SUPPORTED "abtnvfr\?\"'\\"

+ 1 - 1
src/common/timer.h

@@ -51,7 +51,7 @@ int add_timer_func_list(TimerFunc func, char* name);
 unsigned long get_uptime(void);
 unsigned int calc_times(void);
 
-int do_timer();
+int do_timer(unsigned int tick);
 void timer_init(void);
 void timer_final(void);
 

+ 7 - 7
src/login/login.c

@@ -131,7 +131,7 @@ void add_online_user(int char_server, int account_id)
 	struct online_login_data* p;
 	if( !login_config.online_check )
 		return;
-	p = idb_ensure(online_db, account_id, create_online_user);
+	p = (struct online_login_data*)idb_ensure(online_db, account_id, create_online_user);
 	p->char_server = char_server;
 	if( p->waiting_disconnect != -1 )
 	{
@@ -154,7 +154,7 @@ void remove_online_user(int account_id)
 
 static int waiting_disconnect_timer(int tid, unsigned int tick, int id, int data)
 {
-	struct online_login_data* p = idb_get(online_db, id);
+	struct online_login_data* p = (struct online_login_data*)idb_get(online_db, id);
 	if( p != NULL && p->waiting_disconnect == id )
 	{
 		p->waiting_disconnect = -1;
@@ -1122,7 +1122,7 @@ int mmo_auth(struct mmo_account* account, int fd)
 	else
 		safestrncpy(user_password, account->passwd, NAME_LENGTH);
 
-	if( !check_password(session[fd]->session_data, account->passwdenc, user_password, auth_dat[i].pass) )
+	if( !check_password((struct login_session_data*)session[fd]->session_data, account->passwdenc, user_password, auth_dat[i].pass) )
 	{
 		ShowNotice("Invalid password (account: %s, pass: %s, received pass: %s, ip: %s)\n", account->userid, auth_dat[i].pass, (account->passwdenc) ? "[MD5]" : account->passwd, ip);
 		return 1; // 1 = Incorrect Password
@@ -1150,7 +1150,7 @@ int mmo_auth(struct mmo_account* account, int fd)
 
 	if( login_config.online_check )
 	{
-		struct online_login_data* data = idb_get(online_db,auth_dat[i].account_id);
+		struct online_login_data* data = (struct online_login_data*)idb_get(online_db,auth_dat[i].account_id);
 		if( data )
 		{// account is already marked as online!
 			if( data->char_server > -1 )
@@ -1456,8 +1456,8 @@ int parse_fromchar(int fd)
 			char actual_email[40];
 			char new_email[40];
 			int account_id = RFIFOL(fd,2);
-			safestrncpy(actual_email, RFIFOP(fd,6), 40); remove_control_chars(actual_email);
-			safestrncpy(new_email, RFIFOP(fd,46), 40); remove_control_chars(new_email);
+			safestrncpy(actual_email, (char*)RFIFOP(fd,6), 40); remove_control_chars(actual_email);
+			safestrncpy(new_email, (char*)RFIFOP(fd,46), 40); remove_control_chars(new_email);
 			RFIFOSKIP(fd, 86);
 
 			if( e_mail_check(actual_email) == 0 )
@@ -1696,7 +1696,7 @@ int parse_fromchar(int fd)
 				users = RFIFOW(fd,4);
 				for (i = 0; i < users; i++) {
 					aid = RFIFOL(fd,6+i*4);
-					p = idb_ensure(online_db, aid, create_online_user);
+					p = (struct online_login_data*)idb_ensure(online_db, aid, create_online_user);
 					p->char_server = id;
 					if (p->waiting_disconnect != -1)
 					{

+ 10 - 10
src/login_sql/login.c

@@ -104,7 +104,7 @@ void add_online_user(int char_server, int account_id)
 	struct online_login_data* p;
 	if( !login_config.online_check )
 		return;
-	p = idb_ensure(online_db, account_id, create_online_user);
+	p = (struct online_login_data*)idb_ensure(online_db, account_id, create_online_user);
 	p->char_server = char_server;
 	if( p->waiting_disconnect != -1 )
 	{
@@ -127,7 +127,7 @@ void remove_online_user(int account_id)
 
 static int waiting_disconnect_timer(int tid, unsigned int tick, int id, int data)
 {
-	struct online_login_data* p = idb_get(online_db, id);
+	struct online_login_data* p = (struct online_login_data*)idb_get(online_db, id);
 	if( p != NULL && p->waiting_disconnect == id )
 	{
 		p->waiting_disconnect = -1;
@@ -531,7 +531,7 @@ int mmo_auth(struct mmo_account* account, int fd)
 	else
 		safestrncpy(user_password, account->passwd, NAME_LENGTH);
 
-	if( !check_password(session[fd]->session_data, account->passwdenc, user_password, password) )
+	if( !check_password((struct login_session_data*)session[fd]->session_data, account->passwdenc, user_password, password) )
 	{
 		ShowInfo("Invalid password (account: '%s', pass: '%s', received pass: '%s', ip: %s)\n",
 			esc_userid, password, (account->passwdenc) ? "[MD5]" : user_password, ip);
@@ -552,7 +552,7 @@ int mmo_auth(struct mmo_account* account, int fd)
 
 	if( login_config.online_check )
 	{
-		struct online_login_data* data = idb_get(online_db, account->account_id);
+		struct online_login_data* data = (struct online_login_data*)idb_get(online_db, account->account_id);
 		if( data )
 		{// account is already marked as online!
 			if( data->char_server > -1 )
@@ -817,8 +817,8 @@ int parse_fromchar(int fd)
 			char actual_email[40];
 			char new_email[40];
 			int account_id = RFIFOL(fd,2);
-			safestrncpy(actual_email, RFIFOP(fd,6), 40);
-			safestrncpy(new_email, RFIFOP(fd,46), 40);
+			safestrncpy(actual_email, (char*)RFIFOP(fd,6), 40);
+			safestrncpy(new_email, (char*)RFIFOP(fd,46), 40);
 			RFIFOSKIP(fd, 86);
 
 			if( e_mail_check(actual_email) == 0 )
@@ -997,17 +997,17 @@ int parse_fromchar(int fd)
 					SqlStmt_ShowDebug(stmt);
 				for( i = 0, off = 13; i < ACCOUNT_REG2_NUM && off < RFIFOW(fd,2); ++i )
 				{
-					uint8* p;
+					char* p;
 					size_t len;
 
 					// str
-					p = (uint8*)RFIFOP(fd,off);
+					p = (char*)RFIFOP(fd,off);
 					len = strlen(p);
 					SqlStmt_BindParam(stmt, 0, SQLDT_STRING, p, len);
 					off += len + 1;
 
 					// value
-					p = (uint8*)RFIFOP(fd,off);
+					p = (char*)RFIFOP(fd,off);
 					len = strlen(p);
 					SqlStmt_BindParam(stmt, 1, SQLDT_STRING, p, len);
 					off += len + 1;
@@ -1067,7 +1067,7 @@ int parse_fromchar(int fd)
 				users = RFIFOW(fd,4);
 				for (i = 0; i < users; i++) {
 					aid = RFIFOL(fd,6+i*4);
-					p = idb_ensure(online_db, aid, create_online_user);
+					p = (struct online_login_data*)idb_ensure(online_db, aid, create_online_user);
 					p->char_server = id;
 					if (p->waiting_disconnect != -1)
 					{

+ 4 - 5
src/map/atcommand.c

@@ -2394,7 +2394,7 @@ int atcommand_monster(const int fd, struct map_session_data* sd, const char* com
 		ShowInfo("%s monster='%s' name='%s' id=%d count=%d (%d,%d)\n", command, monster, name, mob_id, number, sd->bl.x, sd->bl.y);
 
 	count = 0;
-	range = (int)sqrt(number) +2; // calculation of an odd number (+ 4 area around)
+	range = (int)sqrt((float)number) +2; // calculation of an odd number (+ 4 area around)
 	for (i = 0; i < number; i++) {
 		map_search_freecell(&sd->bl, 0, &mx,  &my, range, range, 0);
 		k = mob_once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, "");
@@ -5365,7 +5365,7 @@ int atcommand_effect(const int fd, struct map_session_data* sd, const char* comm
 		return -1;
 	}
 
-	clif_specialeffect(&sd->bl, type, flag);
+	clif_specialeffect(&sd->bl, type, (send_target)flag);
 	clif_displaymessage(fd, msg_txt(229)); // Your effect has changed.
 	return 0;
 }
@@ -6997,9 +6997,8 @@ int atcommand_mobinfo(const int fd, struct map_session_data* sd, const char* com
 *------------------------------------------*/
 int atshowmobs_timer(int tid, unsigned int tick, int id, int data)
 {
-	struct map_session_data *sd;
-
-	if (!session[id] || (sd = session[id]->session_data) == NULL)
+	struct map_session_data* sd = map_id2sd(id);
+	if( sd == NULL )
 		return 0;
 
 	clif_viewpoint(sd, 1, 2, 0, 0, data, 0xFFFFFF);

+ 15 - 12
src/map/battle.c

@@ -2754,11 +2754,11 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 	int skillv;
 	struct Damage wd;
 
-	nullpo_retr(0, src);
-	nullpo_retr(0, target);
+	nullpo_retr(ATK_NONE, src);
+	nullpo_retr(ATK_NONE, target);
 
 	if (src->prev == NULL || target->prev == NULL)
-		return 0;
+		return ATK_NONE;
 
 	sd = BL_CAST(BL_PC, src);
 	tsd = BL_CAST(BL_PC, target);
@@ -2782,7 +2782,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 			damage = sd->equip_index[EQI_AMMO];
 			if (damage<0) {
 				clif_arrow_fail(sd,0);
-				return 0;
+				return ATK_NONE;
 			}
 			//Ammo check by Ishizu-chan
 			if (sd->inventory_data[damage])
@@ -2790,7 +2790,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 			case W_BOW:
 				if (sd->inventory_data[damage]->look != A_ARROW) {
 					clif_arrow_fail(sd,0);
-					return 0;
+					return ATK_NONE;
 				}
 			break;
 			case W_REVOLVER:
@@ -2799,13 +2799,13 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 			case W_SHOTGUN:
 				if (sd->inventory_data[damage]->look != A_BULLET) {
 					clif_arrow_fail(sd,0);
-					return 0;
+					return ATK_NONE;
 				}
 			break;
 			case W_GRENADE:
 				if (sd->inventory_data[damage]->look != A_GRENADE) {
 					clif_arrow_fail(sd,0);
-					return 0;
+					return ATK_NONE;
 				}
 			break;
 			}
@@ -2831,7 +2831,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 				clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS.
 				status_change_end(target,SC_AUTOCOUNTER,-1);
 				skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skilllv,tick,0);
-				return 0;
+				return ATK_NONE;
 			}
 		}
 		if (tsc->data[SC_BLADESTOP_WAIT] && !is_boss(src)) {
@@ -2843,7 +2843,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 				clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS.
 				clif_bladestop(target,src,1);
 				sc_start4(target, SC_BLADESTOP, 100, skilllv, 0, 0,(int)src, duration);
-				return 0;
+				return ATK_NONE;
 			}
 		}
 	}
@@ -2857,15 +2857,18 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 			status_change_end(src,SC_SKILLRATE_UP,-1);
 		}
 		if (rand()%100 < triple_rate)
-			return skill_attack(BF_WEAPON,src,src,target,MO_TRIPLEATTACK,skillv,tick,0);
+			//FIXME: invalid return type!
+			return (damage_lv)skill_attack(BF_WEAPON,src,src,target,MO_TRIPLEATTACK,skillv,tick,0);
 	}
 
 	if (sc)
 	{
 		if (sc->data[SC_SACRIFICE])
-			return skill_attack(BF_WEAPON,src,src,target,PA_SACRIFICE,sc->data[SC_SACRIFICE]->val1,tick,0);
+			//FIXME: invalid return type!
+			return (damage_lv)skill_attack(BF_WEAPON,src,src,target,PA_SACRIFICE,sc->data[SC_SACRIFICE]->val1,tick,0);
 		if (sc->data[SC_MAGICALATTACK])
-			return skill_attack(BF_MAGIC,src,src,target,NPC_MAGICALATTACK,sc->data[SC_MAGICALATTACK]->val1,tick,0);
+			//FIXME: invalid return type!
+			return (damage_lv)skill_attack(BF_MAGIC,src,src,target,NPC_MAGICALATTACK,sc->data[SC_MAGICALATTACK]->val1,tick,0);
 	}
 
 	wd = battle_calc_weapon_attack(src, target, 0, 0, flag);

+ 4 - 3
src/map/battle.h

@@ -5,11 +5,12 @@
 #define _BATTLE_H_
 
 // state of a single attack attempt; used in flee/def penalty calculations when mobbed
-enum damage_lv {
-	ATK_LUCKY=1, // attack was lucky-dodged
+typedef enum damage_lv {
+	ATK_NONE,    // not an attack
+	ATK_LUCKY,   // attack was lucky-dodged
 	ATK_FLEE,    // attack was dodged
 	ATK_DEF      // attack connected
-};
+} damage_lv;
 
 // ƒ_ƒ��[ƒW
 struct Damage {

+ 4 - 3
src/map/chrif.c

@@ -106,8 +106,9 @@ int other_mapserver_count=0; //Holds count of how many other map servers are onl
 //This define should spare writing the check in every function. [Skotlex]
 #define chrif_check(a) { if(!chrif_isconnected()) return a; }
 
-struct auth_node* chrif_search(int account_id) {
-	return idb_get(auth_db, account_id);
+struct auth_node* chrif_search(int account_id)
+{
+	return (struct auth_node*)idb_get(auth_db, account_id);
 }
 
 struct auth_node* chrif_auth_check(int account_id, int char_id, enum sd_state state) {
@@ -1234,7 +1235,7 @@ int chrif_load_scdata(int fd)
 	for (i = 0; i < count; i++)
 	{
 		data = (struct status_change_data*)RFIFOP(fd,14 + i*sizeof(struct status_change_data));
-		status_change_start(&sd->bl, data->type, 10000, data->val1, data->val2, data->val3, data->val4, data->tick, 15);
+		status_change_start(&sd->bl, (sc_type)data->type, 10000, data->val1, data->val2, data->val3, data->val4, data->tick, 15);
 	}
 #endif
 	return 0;

+ 57 - 47
src/map/clif.c

@@ -678,7 +678,7 @@ static int clif_clearunit_delayed_sub(int tid, unsigned int tick, int id, int da
 int clif_clearunit_delayed(struct block_list* bl, unsigned int tick)
 {
 	struct block_list *tbl;
-	tbl = aMalloc(sizeof (struct block_list));
+	tbl = (struct block_list*)aMalloc(sizeof (struct block_list));
 	memcpy (tbl, bl, sizeof (struct block_list));
 	add_timer(tick, clif_clearunit_delayed_sub, (int)tbl, 0);
 	return 0;
@@ -1009,21 +1009,18 @@ static void clif_weather_check(struct map_session_data *sd)
 	}
 }
 
-int clif_weather(int m)
+void clif_weather(int m)
 {
-	int i;
-
+	struct s_mapiterator* iter;
 	struct map_session_data *sd=NULL;
 
-	for(i = 0; i < fd_max; i++) {
-		if (session[i] && session[i]->func_parse == clif_parse &&	
-			(sd = session[i]->session_data) != NULL &&
-		  	sd->state.active && sd->bl.m == m) {
+	iter = mapit_getallusers();
+	for( sd = (struct map_session_data*)mapit_first(iter); mapit_exists(iter); sd = (struct map_session_data*)mapit_next(iter) )
+	{
+		if( sd->bl.m == m )
 			clif_weather_check(sd);
-		}
 	}
-
-	return 0;
+	mapit_free(iter);
 }
 
 int clif_spawn(struct block_list *bl)
@@ -2488,9 +2485,8 @@ void clif_changetraplook(struct block_list *bl,int val)
 
 	
 }
-//For the stupid cloth-dye bug. Resends the given view data
-//to the area specified by bl.
-void clif_refreshlook(struct block_list *bl,int id,int type,int val,int area)
+//For the stupid cloth-dye bug. Resends the given view data to the area specified by bl.
+void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_target target)
 {
 	unsigned char buf[32];
 #if PACKETVER < 4
@@ -2498,14 +2494,14 @@ void clif_refreshlook(struct block_list *bl,int id,int type,int val,int area)
 	WBUFL(buf,2)=id;
 	WBUFB(buf,6)=type;
 	WBUFB(buf,7)=val;
-	clif_send(buf,packet_len(0xc3),bl,area);
+	clif_send(buf,packet_len(0xc3),bl,target);
 #else
 	WBUFW(buf,0)=0x1d7;
 	WBUFL(buf,2)=id;
 	WBUFB(buf,6)=type;
 	WBUFW(buf,7)=val;
 	WBUFW(buf,9)=0;
-	clif_send(buf,packet_len(0x1d7),bl,area);
+	clif_send(buf,packet_len(0x1d7),bl,target);
 #endif
 	return;
 }
@@ -6485,9 +6481,9 @@ int clif_guild_expulsion(struct map_session_data *sd,const char *name,const char
 	nullpo_retr(0, sd);
 
 	WBUFW(buf, 0)=0x15c;
-	safestrncpy(WBUFP(buf, 2),name,NAME_LENGTH);
-	safestrncpy(WBUFP(buf,26),mes,40);
-	safestrncpy(WBUFP(buf,66),"",NAME_LENGTH); // account name (not used for security reasons)
+	safestrncpy((char*)WBUFP(buf, 2),name,NAME_LENGTH);
+	safestrncpy((char*)WBUFP(buf,26),mes,40);
+	safestrncpy((char*)WBUFP(buf,66),"",NAME_LENGTH); // account name (not used for security reasons)
 	clif_send(buf,packet_len(0x15c),&sd->bl,GUILD);
 	return 0;
 }
@@ -6512,9 +6508,9 @@ int clif_guild_expulsionlist(struct map_session_data *sd)
 	for(i=c=0;i<MAX_GUILDEXPULSION;i++){
 		struct guild_expulsion *e=&g->expulsion[i];
 		if(e->account_id>0){
-			safestrncpy(WFIFOP(fd,4 + c*88),e->name,NAME_LENGTH);
-			safestrncpy(WFIFOP(fd,4 + c*88+24),"",24); // account name (not used for security reasons)
-			safestrncpy(WFIFOP(fd,4 + c*88+48),e->mes,40);
+			safestrncpy((char*)WFIFOP(fd,4 + c*88),e->name,NAME_LENGTH);
+			safestrncpy((char*)WFIFOP(fd,4 + c*88+24),"",24); // account name (not used for security reasons)
+			safestrncpy((char*)WFIFOP(fd,4 + c*88+48),e->mes,40);
 			c++;
 		}
 	}
@@ -8263,7 +8259,7 @@ void clif_parse_MapMove(int fd, struct map_session_data *sd)
 /*==========================================
  *
  *------------------------------------------*/
-void clif_changed_dir(struct block_list *bl, int type)
+void clif_changed_dir(struct block_list *bl, enum send_target target)
 {
 	unsigned char buf[64];
 
@@ -8272,7 +8268,8 @@ void clif_changed_dir(struct block_list *bl, int type)
 	WBUFW(buf,6) = bl->type==BL_PC?((TBL_PC*)bl)->head_dir:0;
 	WBUFB(buf,8) = unit_getdir(bl);
 
-	clif_send(buf, packet_len(0x9c), bl, type);
+	clif_send(buf, packet_len(0x9c), bl, target);
+
 	if (disguised(bl)) {
 		WBUFL(buf,2) = -bl->id;
 		WBUFW(buf,6) = 0;
@@ -9005,10 +9002,13 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd)
 		return;
 	}
 
-	if(battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 1){
-		trade_traderequest(sd,t_sd);
-	} else
+	if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 1)
+	{
 		clif_skill_fail(sd,1,0,0);
+		return;
+	}
+	
+	trade_traderequest(sd,t_sd);
 }
 
 /*==========================================
@@ -9712,19 +9712,24 @@ void clif_parse_StoragePassword(int fd, struct map_session_data *sd)
 
 
 /*==========================================
- * パーティを作る
+ * Party creation request
+ * S 00f9 <party name>.24S
+ * S 01e8 <party name>.24S <item1>.B <item2>.B
  *------------------------------------------*/
 void clif_parse_CreateParty(int fd, struct map_session_data *sd)
 {
 	if(map[sd->bl.m].flag.partylock)
-	{	//Guild locked.
+	{// Party locked.
 		clif_displaymessage(fd, msg_txt(227));
 		return;
 	}
-	if (battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 7) {
-		party_create(sd,(char*)RFIFOP(fd,2),0,0);
-	} else
+	if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 )
+	{
 		clif_skill_fail(sd,1,0,4);
+		return;
+	}
+
+	party_create(sd,(char*)RFIFOP(fd,2),0,0);
 }
 
 /*==========================================
@@ -9733,33 +9738,38 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd)
 void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
 {
 	if(map[sd->bl.m].flag.partylock)
-	{	//Guild locked.
+	{// Party locked.
 		clif_displaymessage(fd, msg_txt(227));
 		return;
 	}
-	if (battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 7)
-		party_create(sd,(char*)RFIFOP(fd,2),RFIFOB(fd,26),RFIFOB(fd,27));
-	else
+	if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 )
+	{
 		clif_skill_fail(sd,1,0,4);
+		return;
+	}
+
+	party_create(sd,(char*)RFIFOP(fd,2),RFIFOB(fd,26),RFIFOB(fd,27));
 }
 
 /*==========================================
- * パーティに勧誘
+ * Party invitation request
+ * S 00fc <account ID>.L
+ * S 02c4 <char name>.24S
  *------------------------------------------*/
 void clif_parse_PartyInvite(int fd, struct map_session_data *sd)
 {
 	struct map_session_data *t_sd;
 	
 	if(map[sd->bl.m].flag.partylock)
-	{	//Guild locked.
+	{// Party locked.
 		clif_displaymessage(fd, msg_txt(227));
 		return;
 	}
 
 	t_sd = map_id2sd(RFIFOL(fd,2));
 
-	// @noask [LuzZza]
-	if(t_sd && t_sd->state.noask) {
+	if(t_sd && t_sd->state.noask)
+	{// @noask [LuzZza]
 		clif_noask_sub(sd, t_sd, 1);
 		return;
 	}
@@ -9771,18 +9781,18 @@ void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
 {
 	struct map_session_data *t_sd;
 	char *name = (char*)RFIFOP(fd,2);
-	name[NAME_LENGTH]='\0';
+	name[NAME_LENGTH-1] = '\0';
 
 	if(map[sd->bl.m].flag.partylock)
-	{	//Guild locked.
+	{// Party locked.
 		clif_displaymessage(fd, msg_txt(227));
 		return;
 	}
 
 	t_sd = map_nick2sd(name);
 
-	// @noask [LuzZza]
-	if(t_sd && t_sd->state.noask) {
+	if(t_sd && t_sd->state.noask)
+	{// @noask [LuzZza]
 		clif_noask_sub(sd, t_sd, 1);
 		return;
 	}
@@ -11710,7 +11720,7 @@ void clif_Auction_openwindow(struct map_session_data *sd)
 	WFIFOSET(fd,12);
 }
 
-void clif_Auction_results(struct map_session_data *sd, short count, short pages, unsigned char *buf)
+void clif_Auction_results(struct map_session_data *sd, short count, short pages, uint8 *buf)
 {
 	int i, fd = sd->fd, len = sizeof(struct auction_data);
 	struct auction_data auction;
@@ -11729,7 +11739,7 @@ void clif_Auction_results(struct map_session_data *sd, short count, short pages,
 		k = 12 + (i * 83);
 
 		WFIFOL(fd,k) = auction.auction_id;
-		safestrncpy(WFIFOP(fd,4+k), auction.seller_name, NAME_LENGTH);
+		safestrncpy((char*)WFIFOP(fd,4+k), auction.seller_name, NAME_LENGTH);
 
 		if( (item = itemdb_search(auction.item.nameid)) != NULL && item->view_id > 0 )
 			WFIFOW(fd,28+k) = item->view_id;
@@ -11748,7 +11758,7 @@ void clif_Auction_results(struct map_session_data *sd, short count, short pages,
 		WFIFOW(fd,45+k) = auction.item.card[3];
 		WFIFOL(fd,47+k) = auction.price;
 		WFIFOL(fd,51+k) = auction.buynow;
-		safestrncpy(WFIFOP(fd,55+k), auction.buyer_name, NAME_LENGTH);
+		safestrncpy((char*)WFIFOP(fd,55+k), auction.buyer_name, NAME_LENGTH);
 		WFIFOL(fd,79+k) = auction.timestamp;
 	}
 	WFIFOSET(fd, 12 + (count * 83));

+ 6 - 6
src/map/clif.h

@@ -56,7 +56,7 @@ struct s_packet_db {
 extern struct s_packet_db packet_db[MAX_PACKET_VER+1][MAX_PACKET_DB+1];
 
 // local define
-enum send_target {
+typedef enum send_target {
 	ALL_CLIENT,
 	ALL_SAMEMAP,
 	AREA,				// area
@@ -82,7 +82,7 @@ enum send_target {
 	DUEL_WOS,
 	CHAT_MAINCHAT,		// everyone on main chat
 	SELF,
-};
+} send_target;
 
 int clif_setip(const char* ip);
 void clif_setbindip(const char* ip);
@@ -132,7 +132,7 @@ void clif_sitting(struct block_list* bl);
 void clif_standing(struct block_list* bl);
 void clif_changelook(struct block_list *bl,int type,int val);	// area
 void clif_changetraplook(struct block_list *bl,int val); // area
-void clif_refreshlook(struct block_list *bl,int id,int type,int val,int area); //area specified in 'area'
+void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_target target); //area specified in 'target'
 int clif_arrowequip(struct map_session_data *sd,int val); //self
 int clif_arrow_fail(struct map_session_data *sd,int type); //self
 int clif_arrow_create_list(struct map_session_data *sd);	//self
@@ -262,7 +262,7 @@ int clif_item_skill(struct map_session_data *sd,int skillid,int skilllv);
 int clif_mvp_effect(struct map_session_data *sd);
 int clif_mvp_item(struct map_session_data *sd,int nameid);
 int clif_mvp_exp(struct map_session_data *sd, unsigned int exp);
-void clif_changed_dir(struct block_list *bl, int area);
+void clif_changed_dir(struct block_list *bl, enum send_target target);
 
 // vending
 void clif_openvendingreq(struct map_session_data* sd, int num);
@@ -355,7 +355,7 @@ void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_dat
 
 // [Valaris]
 int clif_mob_hp(struct mob_data *md);
-int clif_weather(int m); // [Valaris]
+void clif_weather(int m); // [Valaris]
 int clif_specialeffect(struct block_list* bl, int type, enum send_target target); // special effects [Valaris]
 void clif_specialeffect_single(struct block_list* bl, int type, int fd);
 int clif_message(struct block_list *bl, const char* msg); // messages (from mobs/npcs) [Valaris]
@@ -409,7 +409,7 @@ void clif_Mail_refreshinbox(struct map_session_data *sd);
 void clif_Mail_getattachment(int fd, uint8 flag);
 // AUCTION SYSTEM
 void clif_Auction_openwindow(struct map_session_data *sd);
-void clif_Auction_results(struct map_session_data *sd, short count, short pages, unsigned char *buf);
+void clif_Auction_results(struct map_session_data *sd, short count, short pages, uint8 *buf);
 void clif_Auction_message(int fd, unsigned char flag);
 void clif_Auction_close(int fd, unsigned char flag);
 void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd);

+ 16 - 12
src/map/guild.c

@@ -223,7 +223,7 @@ static int guild_read_castledb(void)
 /// lookup: guild id -> guild*
 struct guild* guild_search(int guild_id)
 {
-	return idb_get(guild_db,guild_id);
+	return (struct guild*)idb_get(guild_db,guild_id);
 }
 
 /// lookup: guild name -> guild*
@@ -232,7 +232,7 @@ struct guild* guild_searchname(char* str)
 	struct guild* g;
 
 	DBIterator* iter = guild_db->iterator(guild_db);
-	for( g = iter->first(iter,NULL); iter->exists(iter); g = iter->next(iter,NULL) )
+	for( g = (struct guild*)iter->first(iter,NULL); iter->exists(iter); g = (struct guild*)iter->next(iter,NULL) )
 	{
 		if( strcmpi(g->name, str) == 0 )
 			break;
@@ -245,7 +245,7 @@ struct guild* guild_searchname(char* str)
 /// lookup: castle id -> castle*
 struct guild_castle* guild_castle_search(int gcid)
 {
-	return idb_get(castle_db,gcid);
+	return (struct guild_castle*)idb_get(castle_db,gcid);
 }
 
 /// lookup: map index -> castle*
@@ -254,7 +254,7 @@ struct guild_castle* guild_mapindex2gc(short mapindex)
 	struct guild_castle* gc;
 
 	DBIterator* iter = castle_db->iterator(castle_db);
-	for( gc = iter->first(iter,NULL); iter->exists(iter); gc = iter->next(iter,NULL) )
+	for( gc = (struct guild_castle*)iter->first(iter,NULL); iter->exists(iter); gc = (struct guild_castle*)iter->next(iter,NULL) )
 	{
 		if( gc->mapindex == mapindex )
 			break;
@@ -460,7 +460,7 @@ int guild_npc_request_info(int guild_id,const char *event)
 		ev=(struct eventlist *)aCalloc(sizeof(struct eventlist),1);
 		memcpy(ev->name,event,strlen(event));
 		//The one in the db becomes the next event from this.
-		ev->next=idb_put(guild_infoevent_db,guild_id,ev);
+		ev->next = (struct eventlist*)idb_put(guild_infoevent_db,guild_id,ev);
 	}
 
 	return guild_request_info(guild_id);
@@ -521,7 +521,8 @@ int guild_recv_info(struct guild *sg)
 
 	nullpo_retr(0, sg);
 
-	if((g=idb_get(guild_db,sg->guild_id))==NULL){
+	if((g = (struct guild*)idb_get(guild_db,sg->guild_id))==NULL)
+	{
 		guild_new = true;
 		g=(struct guild *)aCalloc(1,sizeof(struct guild));
 		idb_put(guild_db,sg->guild_id,g);
@@ -588,7 +589,8 @@ int guild_recv_info(struct guild *sg)
 	}
 
 	// ƒCƒxƒ“ƒg‚Ì”­�¶
-	if( (ev=idb_remove(guild_infoevent_db,sg->guild_id))!=NULL ){
+	if( (ev = (struct eventlist*)idb_remove(guild_infoevent_db,sg->guild_id))!=NULL )
+	{
 		while(ev){
 			npc_event_do(ev->name);
 			ev2=ev->next;
@@ -1141,7 +1143,7 @@ unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp)
 		exp = (unsigned int) exp * per / 100;
 	//Otherwise tax everything.
 	
-	c = guild_expcache_db->ensure(guild_expcache_db, i2key(sd->status.char_id), create_expcache, sd);
+	c = (struct guild_expcache*)guild_expcache_db->ensure(guild_expcache_db, i2key(sd->status.char_id), create_expcache, sd);
 
 	if (c->exp > UINT_MAX - exp)
 		c->exp = UINT_MAX;
@@ -1161,7 +1163,7 @@ int guild_getexp(struct map_session_data *sd,int exp)
 	if (sd->status.guild_id == 0 || (g = guild_search(sd->status.guild_id)) == NULL)
 		return 0;
 
-	c = guild_expcache_db->ensure(guild_expcache_db, i2key(sd->status.char_id), create_expcache, sd);
+	c = (struct guild_expcache*)guild_expcache_db->ensure(guild_expcache_db, i2key(sd->status.char_id), create_expcache, sd);
 	if (c->exp > UINT_MAX - exp)
 		c->exp = UINT_MAX;
 	else
@@ -1676,10 +1678,10 @@ int guild_addcastleinfoevent(int castle_id,int index,const char *name)
 	if( name==NULL || *name==0 )
 		return 0;
 
-	ev=(struct eventlist *)aMalloc(sizeof(struct eventlist));
+	ev = (struct eventlist *)aMalloc(sizeof(struct eventlist));
 	memcpy(ev->name,name,sizeof(ev->name));
 	//The next event becomes whatever was currently stored.
-	ev->next= idb_put(guild_castleinfoevent_db,code,ev);
+	ev->next = (struct eventlist *)idb_put(guild_castleinfoevent_db,code,ev);
 	return 0;
 }
 
@@ -1720,7 +1722,9 @@ int guild_castledataloadack(int castle_id,int index,int value)
 		ShowError("guild_castledataloadack ERROR!! (Not found index=%d)\n", index);
 		return 0;
 	}
-	if( (ev=idb_remove(guild_castleinfoevent_db,code))!=NULL ){
+
+	if( (ev = (struct eventlist *)idb_remove(guild_castleinfoevent_db,code))!=NULL )
+	{
 		while(ev){
 			npc_event_do(ev->name);
 			ev2=ev->next;

+ 5 - 3
src/map/intif.c

@@ -585,7 +585,7 @@ int intif_guild_leave(int guild_id,int account_id,int char_id,int flag,const cha
 	WFIFOL(inter_fd, 6) = account_id;
 	WFIFOL(inter_fd,10) = char_id;
 	WFIFOB(inter_fd,14) = flag;
-	safestrncpy(WFIFOP(inter_fd,15),mes,40);
+	safestrncpy((char*)WFIFOP(inter_fd,15),mes,40);
 	WFIFOSET(inter_fd,55);
 	return 0;
 }
@@ -1702,12 +1702,14 @@ int intif_Auction_requestlist(int char_id, short type, int price, const char* se
 static void intif_parse_Auction_results(int fd)
 {
 	struct map_session_data *sd = map_charid2sd(RFIFOL(fd,4));
-	short count = RFIFOW(fd,8), pages = RFIFOW(fd,10);
+	short count = RFIFOW(fd,8);
+	short pages = RFIFOW(fd,10);
+	uint8* data = RFIFOP(fd,12);
 
 	if( sd == NULL )
 		return;
 
-	clif_Auction_results(sd, count, pages, (char *)RFIFOP(fd,12));
+	clif_Auction_results(sd, count, pages, data);
 }
 
 int intif_Auction_register(struct auction_data *auction)

+ 5 - 5
src/map/itemdb.c

@@ -176,7 +176,7 @@ struct item_data* itemdb_exists(int nameid)
 
 	if( nameid >= 0 && nameid < ARRAYLENGTH(itemdb_array) )
 		return itemdb_array[nameid];
-	item = idb_get(itemdb_other,nameid);
+	item = (struct item_data*)idb_get(itemdb_other,nameid);
 	if( item == &dummy_item )
 		return NULL;// dummy data, doesn't exist
 	return item;
@@ -279,16 +279,16 @@ struct item_data* itemdb_load(int nameid)
 		if( id == NULL )
 		{
 			key.i = nameid;
-			id = itemdb_array[nameid] = create_item_data(key, NULL);
+			id = itemdb_array[nameid] = (struct item_data*)create_item_data(key, NULL);
 		}
 		return id;
 	}
 
-	id = idb_ensure(itemdb_other, nameid, create_item_data);
+	id = (struct item_data*)idb_ensure(itemdb_other, nameid, create_item_data);
 	if( id == &dummy_item )
 	{// Remove dummy_item, replace by real data.
 		key.i = nameid;
-		id = create_item_data(key, NULL);
+		id = (struct item_data*)create_item_data(key, NULL);
 		idb_put(itemdb_other, nameid, id);
 	}
 	return id;
@@ -314,7 +314,7 @@ struct item_data* itemdb_search(int nameid)
 		key.i = nameid;
 		return (struct item_data*)return_dummy_data(key, NULL);
 	}
-	return idb_ensure(itemdb_other,nameid,return_dummy_data);
+	return (struct item_data*)idb_ensure(itemdb_other,nameid,return_dummy_data);
 }
 
 /*==========================================

+ 2 - 2
src/map/log.c

@@ -426,9 +426,9 @@ int log_config_read(char *cfgName)
 		if(sscanf(line, "%[^:]: %[^\r\n]", w1, w2) == 2)
 		{
 			if(strcmpi(w1,"enable_logs") == 0) {
-				log_config.enable_logs = (atoi(w2));
+				log_config.enable_logs = (log_what)atoi(w2);
 				if (log_config.enable_logs&1) //Log everything.
-					log_config.enable_logs=0xFFFFFFFF;
+					log_config.enable_logs = LOG_ALL;
 			} else if(strcmpi(w1,"sql_logs") == 0) {
 				log_config.sql_logs = (bool)atoi(w2);
 //start of common filter settings

+ 2 - 2
src/map/log.h

@@ -24,7 +24,7 @@ int log_mvpdrop(struct map_session_data *sd, int monster_id, int *log_mvp);
 
 int log_config_read(char *cfgName);
 
-enum log_what {
+typedef enum log_what {
 	LOG_ALL                 = 0xFFF,
 	LOG_TRADES              = 0x002,
 	LOG_VENDING             = 0x004,
@@ -36,7 +36,7 @@ enum log_what {
 	LOG_USED_ITEMS          = 0x100, // used by player
 	LOG_MVP_PRIZE           = 0x200,
 	LOG_COMMAND_ITEMS       = 0x400  // created/deleted through @/# commands
-};
+} log_what;
 
 extern struct Log_Config {
 	enum log_what enable_logs;

+ 9 - 9
src/map/map.c

@@ -951,7 +951,7 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y
 	if (length)
 	{	//Adjust final position to fit in the given area.
 		//TODO: Find an alternate method which does not requires a square root calculation.
-		k = (int)sqrt(magnitude2);
+		k = (int)sqrt((float)magnitude2);
 		mx1 = x0 + (x1 - x0)*length/k;
 		my1 = y0 + (y1 - y0)*length/k;
 		len_limit = MAGNITUDE2(x0,y0, mx1,my1);
@@ -1449,7 +1449,7 @@ void map_addnickdb(int charid, const char* nick)
 	if( map_charid2sd(charid) )
 		return;// already online
 
-	p = idb_ensure(nick_db, charid, create_charid2nick);
+	p = (struct charid2nick*)idb_ensure(nick_db, charid, create_charid2nick);
 	safestrncpy(p->nick, nick, sizeof(p->nick));
 
 	while( p->requests )
@@ -1471,7 +1471,7 @@ void map_delnickdb(int charid, const char* name)
 	struct charid_request* req;
 	struct map_session_data* sd;
 
-	p = idb_remove(nick_db, charid);
+	p = (struct charid2nick*)idb_remove(nick_db, charid);
 	if( p == NULL )
 		return;
 
@@ -1734,7 +1734,7 @@ struct block_list * map_id2bl(int id)
 	if(id >= 0 && id < ARRAYLENGTH(objects))
 		bl = objects[id];
 	else
-		bl = idb_get(id_db,id);
+		bl = (struct block_list*)idb_get(id_db,id);
 
 	return bl;
 }
@@ -2149,7 +2149,7 @@ int map_random_dir(struct block_list *bl, short *x, short *y)
 	short yi = *y-bl->y;
 	short i=0, j;
 	int dist2 = xi*xi + yi*yi;
-	short dist = (short)sqrt(dist2);
+	short dist = (short)sqrt((float)dist2);
 	short segment;
 	
 	if (dist < 1) dist =1;
@@ -2158,7 +2158,7 @@ int map_random_dir(struct block_list *bl, short *x, short *y)
 		j = rand()%8; //Pick a random direction
 		segment = 1+(rand()%dist); //Pick a random interval from the whole vector in that direction
 		xi = bl->x + segment*dirx[j];
-		segment = (short)sqrt(dist2 - segment*segment); //The complement of the previously picked segment
+		segment = (short)sqrt((float)(dist2 - segment*segment)); //The complement of the previously picked segment
 		yi = bl->y + segment*diry[j];
 	} while (
 		(map_getcell(bl->m,xi,yi,CELL_CHKNOPASS) || !path_search(NULL,bl->m,bl->x,bl->y,xi,yi,1,CELL_CHKNOREACH))
@@ -2385,7 +2385,7 @@ int map_eraseipport(unsigned short mapindex, uint32 ip, uint16 port)
 {
 	struct map_data_other_server *mdos;
 
-	mdos = uidb_get(map_db,(unsigned int)mapindex);
+	mdos = (struct map_data_other_server*)uidb_get(map_db,(unsigned int)mapindex);
 	if(!mdos || mdos->cell) //Map either does not exists or is a local map.
 		return 0;
 
@@ -2432,8 +2432,8 @@ int map_readfromcache(struct map_data *m, FILE *fp)
 		m->ys = info.ys;
 		size = info.xs*info.ys;
 
-		buf = aMalloc(info.len); // temp buffer to read the zipped map
-		buf2 = aMalloc(size); // temp buffer to unpack the data
+		buf = (unsigned char*)aMalloc(info.len); // temp buffer to read the zipped map
+		buf2 = (unsigned char*)aMalloc(size); // temp buffer to unpack the data
 		CREATE(m->cell, struct mapcell, size);
 
 		fread(buf, info.len, 1, fp);

+ 4 - 1
src/map/map.h

@@ -176,11 +176,12 @@ enum bl_type {
 	BL_SKILL = 0x020,
 	BL_NPC   = 0x040,
 	BL_CHAT  = 0x080,
+
+	BL_ALL   = 0xFFF,
 };
 
 //For common mapforeach calls. Since pets cannot be affected, they aren't included here yet.
 #define BL_CHAR (BL_PC|BL_MOB|BL_HOM)
-#define BL_ALL 0xfff
 
 enum npc_subtype { WARP, SHOP, SCRIPT, CASHSHOP };
 
@@ -228,6 +229,7 @@ struct block_list {
 	enum bl_type type;
 };
 
+
 // Mob List Held in memory for Dynamic Mobs [Wizputer]
 // Expanded to specify all mob-related spawn data by [Skotlex]
 struct spawn_data {
@@ -248,6 +250,7 @@ struct spawn_data {
 
 
 
+
 struct flooritem_data {
 	struct block_list bl;
 	unsigned char subx,suby;

+ 1 - 1
src/map/mercenary.c

@@ -606,7 +606,7 @@ int merc_hom_alloc(struct map_session_data *sd, struct s_homunculus *hom)
 		intif_homunculus_requestdelete(hom->hom_id);
 		return 1;
 	}
-	sd->hd = hd = aCalloc(1,sizeof(struct homun_data));
+	sd->hd = hd = (struct homun_data*)aCalloc(1,sizeof(struct homun_data));
 	hd->bl.type = BL_HOM;
 	hd->bl.id = npc_get_new_npc_id();
 

+ 7 - 4
src/map/mercenary.h

@@ -7,18 +7,21 @@
 #include "status.h" // struct status_data, struct status_change
 #include "unit.h" // struct unit_data
 
+struct h_stats {
+	unsigned int HP, SP;
+	unsigned short str, agi, vit, int_, dex, luk;
+};
+
 struct s_homunculus_db {
 	int base_class, evo_class;
 	char name[NAME_LENGTH];
-	struct h_stats {
-		unsigned int HP, SP;
-		unsigned short str, agi, vit, int_, dex, luk;
-	} base, gmin, gmax, emin, emax;
+	struct h_stats base, gmin, gmax, emin, emax;
 	int foodID ;
 	int baseASPD ;
 	long hungryDelay ;
 	unsigned char element, race, base_size, evo_size;
 };
+
 extern struct s_homunculus_db homuncumlus_db[MAX_HOMUNCULUS_CLASS];
 enum { HOMUNCULUS_CLASS, HOMUNCULUS_FOOD };
 enum {

+ 8 - 8
src/map/mob.c

@@ -209,7 +209,7 @@ int mob_parse_dataset(struct spawn_data *data)
  *------------------------------------------*/
 struct mob_data* mob_spawn_dataset(struct spawn_data *data)
 {
-	struct mob_data *md = aCalloc(1, sizeof(struct mob_data));
+	struct mob_data *md = (struct mob_data*)aCalloc(1, sizeof(struct mob_data));
 	md->bl.id= npc_get_new_npc_id();
 	md->bl.type = BL_MOB;
 	md->bl.m = data->m;
@@ -419,7 +419,7 @@ int mob_once_spawn(struct map_session_data* sd, int m, short x, short y, const c
 			struct guild_castle* gc = guild_mapindex2gc(map[m].index);
 			struct guild* g = gc?guild_search(gc->guild_id):NULL;
 			if(gc) {
-				md->guardian_data = aCalloc(1, sizeof(struct guardian_data));
+				md->guardian_data = (struct guardian_data*)aCalloc(1, sizeof(struct guardian_data));
 				md->guardian_data->castle = gc;
 				md->guardian_data->number = MAX_GUARDIANS;
 				md->guardian_data->guild_id = gc->guild_id;
@@ -586,7 +586,7 @@ void mob_barricade_get(struct map_session_data *sd)
 		return;
 
 	iter = barricade_db->iterator(barricade_db);
-	for( barricade = iter->first(iter,&key); iter->exists(iter); barricade = iter->next(iter,&key) )
+	for( barricade = (struct barricade_data *)iter->first(iter,&key); iter->exists(iter); barricade = (struct barricade_data *)iter->next(iter,&key) )
 	{
 		if( sd->bl.m != barricade->m )
 			continue;
@@ -655,7 +655,7 @@ void mod_barricade_clearall(void)
 	int i;
 
 	iter = barricade_db->iterator(barricade_db);
-	for( barricade = iter->first(iter,&key); iter->exists(iter); barricade = iter->next(iter,&key) )
+	for( barricade = (struct barricade_data *)iter->first(iter,&key); iter->exists(iter); barricade = (struct barricade_data *)iter->next(iter,&key) )
 	{
 		for( i = 0; i < barricade->count; i++ )
 		{
@@ -789,8 +789,8 @@ int mob_spawn_guardian(const char* mapname, short x, short y, const char* mobnam
 		}
 	}
 
-	md= mob_spawn_dataset(&data);
-	md->guardian_data = aCalloc(1, sizeof(struct guardian_data));
+	md = mob_spawn_dataset(&data);
+	md->guardian_data = (struct guardian_data*)aCalloc(1, sizeof(struct guardian_data));
 	md->guardian_data->number = guardian;
 	md->guardian_data->guild_id = gc->guild_id;
 	md->guardian_data->castle = gc;
@@ -3539,7 +3539,7 @@ static bool mob_parse_dbrow(char** str)
 	}
 
 	if (mob_db_data[class_] == NULL)
-		mob_db_data[class_] = aCalloc(1, sizeof (struct mob_db));
+		mob_db_data[class_] = (struct mob_db*)aCalloc(1, sizeof (struct mob_db));
 	
 	db = mob_db_data[class_];
 	status = &db->status;
@@ -4379,7 +4379,7 @@ void mob_clear_spawninfo()
 int do_init_mob(void)
 {	//Initialize the mob database
 	memset(mob_db_data,0,sizeof(mob_db_data)); //Clear the array
-	mob_db_data[0] = aCalloc(1, sizeof (struct mob_db));	//This mob is used for random spawns
+	mob_db_data[0] = (struct mob_db*)aCalloc(1, sizeof (struct mob_db));	//This mob is used for random spawns
 	mob_makedummymobdb(0); //The first time this is invoked, it creates the dummy mob
 	item_drop_ers = ers_new(sizeof(struct item_drop));
 	item_drop_list_ers = ers_new(sizeof(struct item_drop_list));

+ 8 - 8
src/map/npc.c

@@ -113,7 +113,7 @@ int npc_enable_sub(struct block_list *bl, va_list ap)
 
 int npc_enable(const char* name, int flag)
 {
-	struct npc_data* nd = strdb_get(npcname_db, name);
+	struct npc_data* nd = (struct npc_data*)strdb_get(npcname_db, name);
 	if (nd==NULL)
 		return 0;
 
@@ -559,7 +559,7 @@ void npc_timerevent_quit(struct map_session_data* sd)
 		char buf[NAME_LENGTH*2+3];
 		struct event_data *ev;
 		snprintf(buf, ARRAYLENGTH(buf), "%s::OnTimerQuit", nd->exname);
-		ev = strdb_get(ev_db, buf);
+		ev = (struct event_data*)strdb_get(ev_db, buf);
 		if(ev && ev->nd != nd) {
 			ShowWarning("npc_timerevent_quit: Unable to execute \"OnTimerQuit\", two NPCs have the same event name [%s]!\n",buf);
 			ev = NULL;
@@ -659,7 +659,7 @@ int npc_event_sub(struct map_session_data* sd, struct event_data* ev, const char
  *------------------------------------------*/
 int npc_event(struct map_session_data* sd, const char* eventname, int mob_kill)
 {
-	struct event_data* ev = strdb_get(ev_db, eventname);
+	struct event_data* ev = (struct event_data*)strdb_get(ev_db, eventname);
 	struct npc_data *nd;
 	int xs,ys;
 	char mobevent[100];
@@ -676,7 +676,7 @@ int npc_event(struct map_session_data* sd, const char* eventname, int mob_kill)
 		if (mob_kill) {
 			strcpy( mobevent, eventname);
 			strcat( mobevent, "::OnMyMobDead");
-			ev = strdb_get(ev_db, mobevent);
+			ev = (struct event_data*)strdb_get(ev_db, mobevent);
 			if (ev == NULL || (nd = ev->nd) == NULL) {
 				ShowError("npc_event: (mob_kill) event not found [%s]\n", mobevent);
 				return 0;
@@ -2331,7 +2331,7 @@ static const char* npc_parse_mob(char* w1, char* w2, char* w3, char* w4, const c
 
 	//Now that all has been validated. We allocate the actual memory
 	//that the re-spawn data will use.
-	data = aMalloc(sizeof(struct spawn_data));
+	data = (struct spawn_data*)aMalloc(sizeof(struct spawn_data));
 	memcpy(data, &mob, sizeof(struct spawn_data));
 	
 	if( !battle_config.dynamic_mobs ) {
@@ -2632,7 +2632,7 @@ void npc_parsesrcfile(const char* filepath)
 		lines++;
 
 		// w1<TAB>w2<TAB>w3<TAB>w4
-		count = sv_parse(p, len+buffer-p, 0, '\t', pos, ARRAYLENGTH(pos), SV_TERMINATE_LF|SV_TERMINATE_CRLF);
+		count = sv_parse(p, len+buffer-p, 0, '\t', pos, ARRAYLENGTH(pos), (e_svopt)(SV_TERMINATE_LF|SV_TERMINATE_CRLF));
 		if( count < 0 )
 		{
 			ShowError("npc_parsesrcfile: Parse error in file '%s', line '%d'. Stopping...\n", filepath, strline(buffer,p-buffer));
@@ -2810,7 +2810,7 @@ int npc_reload(void)
 
 	//Remove all npcs/mobs. [Skotlex]
 	iter = mapit_geteachiddb();
-	for( bl = mapit_first(iter); mapit_exists(iter); bl = mapit_next(iter) )
+	for( bl = (struct block_list*)mapit_first(iter); mapit_exists(iter); bl = (struct block_list*)mapit_next(iter) )
 	{
 		switch(bl->type) {
 		case BL_NPC:
@@ -2954,7 +2954,7 @@ int do_init_npc(void)
 	for( i = 1; i < MAX_NPC_CLASS; i++ ) 
 		npc_viewdb[i].class_ = i;
 
-	ev_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA,2*NAME_LENGTH+2+1);
+	ev_db = strdb_alloc((DBOptions)(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA),2*NAME_LENGTH+2+1);
 	npcname_db = strdb_alloc(DB_OPT_BASE,NAME_LENGTH);
 
 	timer_event_ers = ers_new(sizeof(struct timer_event_data));

+ 4 - 4
src/map/party.c

@@ -86,7 +86,7 @@ struct party_data* party_search(int party_id)
 {
 	if(!party_id)
 		return NULL;
-	return idb_get(party_db,party_id);
+	return (struct party_data*)idb_get(party_db,party_id);
 }
 
 /// Party data lookup using party name.
@@ -95,7 +95,7 @@ struct party_data* party_searchname(const char* str)
 	struct party_data* p;
 
 	DBIterator* iter = party_db->iterator(party_db);
-	for( p = iter->first(iter,NULL); iter->exists(iter); p = iter->next(iter,NULL) )
+	for( p = (struct party_data*)iter->first(iter,NULL); iter->exists(iter); p = (struct party_data*)iter->next(iter,NULL) )
 	{
 		if( strncmpi(p->party.name,str,NAME_LENGTH) == 0 )
 			break;
@@ -235,7 +235,7 @@ int party_recv_info(struct party *sp)
 	
 	nullpo_retr(0, sp);
 
-	p= idb_ensure(party_db, sp->party_id, create_party);
+	p = (struct party_data*)idb_ensure(party_db, sp->party_id, create_party);
 	if (!p->party.party_id) //party just received.
 	{
 		party_new = true;
@@ -726,7 +726,7 @@ int party_send_xy_timer(int tid,unsigned int tick,int id,int data)
 
 	DBIterator* iter = party_db->iterator(party_db);
 	// for each existing party,
-	for( p = iter->first(iter,NULL); iter->exists(iter); p = iter->next(iter,NULL) )
+	for( p = (struct party_data*)iter->first(iter,NULL); iter->exists(iter); p = (struct party_data*)iter->next(iter,NULL) )
 	{
 		int i;
 		// for each member of this party,

+ 13 - 13
src/map/pc.c

@@ -1339,7 +1339,7 @@ void pc_autoscript_clear(struct s_autoscript *scripts, int max)
 	memset(scripts, 0, i*sizeof(struct s_autoscript));
 }
 
-static int pc_bonus_autospell_del(struct s_autospell *spell, int max, short id, short lv, short rate, short card_id)
+static int pc_bonus_autospell_del(struct s_autospell* spell, int max, short id, short lv, short rate, short card_id)
 {
 	int i, j;
 	for(i=max-1; i>=0 && !spell[i].id; i--);
@@ -1405,7 +1405,7 @@ static int pc_bonus_autospell(struct s_autospell *spell, int max, short id, shor
 	return 1;
 }
 
-static int pc_bonus_addeff(struct s_addeffect* effect, int max, short id, short rate, short arrow_rate, unsigned char flag)
+static int pc_bonus_addeff(struct s_addeffect* effect, int max, enum sc_type id, short rate, short arrow_rate, unsigned char flag)
 {
 	int i;
 	if (!(flag&(ATF_SHORT|ATF_LONG)))
@@ -2081,7 +2081,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
 			ShowWarning("pc_bonus2 (Add Effect): %d is not supported.\n", type2);
 			break;
 		}
-		pc_bonus_addeff(sd->addeff, ARRAYLENGTH(sd->addeff), type2,
+		pc_bonus_addeff(sd->addeff, ARRAYLENGTH(sd->addeff), (sc_type)type2,
 			sd->state.lr_flag!=2?val:0, sd->state.lr_flag==2?val:0, 0);
 		break;
 	case SP_ADDEFF2:
@@ -2089,7 +2089,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
 			ShowWarning("pc_bonus2 (Add Effect2): %d is not supported.\n", type2);
 			break;
 		}
-		pc_bonus_addeff(sd->addeff, ARRAYLENGTH(sd->addeff), type2,
+		pc_bonus_addeff(sd->addeff, ARRAYLENGTH(sd->addeff), (sc_type)type2,
 			sd->state.lr_flag!=2?val:0, sd->state.lr_flag==2?val:0, ATF_SELF);
 		break;
 	case SP_RESEFF:
@@ -2304,7 +2304,7 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
 			break;
 		}
 		if(sd->state.lr_flag != 2)
-			pc_bonus_addeff(sd->addeff2, ARRAYLENGTH(sd->addeff2), type2, val, 0, 0);
+			pc_bonus_addeff(sd->addeff2, ARRAYLENGTH(sd->addeff2), (sc_type)type2, val, 0, 0);
 		break;
 	case SP_SKILL_ATK:
 		if(sd->state.lr_flag == 2)
@@ -2548,7 +2548,7 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
 			ShowWarning("pc_bonus3 (Add Effect): %d is not supported.\n", type2);
 			break;
 		}
-		pc_bonus_addeff(sd->addeff, ARRAYLENGTH(sd->addeff), type2,
+		pc_bonus_addeff(sd->addeff, ARRAYLENGTH(sd->addeff), (sc_type)type2,
 			sd->state.lr_flag!=2?type3:0, sd->state.lr_flag==2?type3:0, val);
 		break;
 
@@ -2558,7 +2558,7 @@ int pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val)
 			break;
 		}
 		if(sd->state.lr_flag != 2)
-			pc_bonus_addeff(sd->addeff2, ARRAYLENGTH(sd->addeff2), type2, type3, 0, val);
+			pc_bonus_addeff(sd->addeff2, ARRAYLENGTH(sd->addeff2), (sc_type)type2, type3, 0, val);
 		break;
 
 	default:
@@ -3757,7 +3757,7 @@ int pc_checkskill(struct map_session_data *sd,int skill_id)
  *------------------------------------------*/
 int pc_checkallowskill(struct map_session_data *sd)
 {
-	const int scw_list[] = {
+	const enum sc_type scw_list[] = {
 		SC_TWOHANDQUICKEN,
 		SC_ONEHAND,
 		SC_AURABLADE,
@@ -3767,7 +3767,7 @@ int pc_checkallowskill(struct map_session_data *sd)
 		SC_ADRENALINE2,
 		SC_GATLINGFEVER
 	};
-	const int scs_list[] = {
+	const enum sc_type scs_list[] = {
 		SC_AUTOGUARD,
 		SC_DEFENDER,
 		SC_REFLECTSHIELD
@@ -5624,12 +5624,12 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
 	if ((b_class&&MAPID_UPPERMASK) != (sd->class_&MAPID_UPPERMASK))
 	{ //Things to remove when changing class tree.
 		const int class_ = pc_class2idx(sd->status.class_);
-		int id;
+		short id;
 		for(i = 0; i < MAX_SKILL_TREE && (id = skill_tree[class_][i].id) > 0; i++) {
 			//Remove status specific to your current tree skills.
-			id = status_skill2sc(id);
-			if (id > SC_COMMON_MAX && sd->sc.data[id])
-				status_change_end(&sd->bl, id, -1);
+			enum sc_type sc = status_skill2sc(id);
+			if (sc > SC_COMMON_MAX && sd->sc.data[sc])
+				status_change_end(&sd->bl, sc, -1);
 		}
 	}
 	

+ 30 - 22
src/map/pc.h

@@ -45,6 +45,26 @@ struct weapon_data {
 	}	add_dmg[MAX_PC_BONUS];
 };
 
+struct s_autospell {
+	short id, lv, rate, card_id, flag;
+};
+
+struct s_addeffect {
+	enum sc_type id;
+	short rate, arrow_rate;
+	unsigned char flag;
+};
+
+struct s_add_drop { 
+	short id, group;
+	int race, rate;
+};
+
+struct s_autoscript {
+	unsigned short rate, flag;
+	struct script_code *script;
+};
+
 struct map_session_data {
 	struct block_list bl;
 	struct unit_data ud;
@@ -185,13 +205,8 @@ struct map_session_data {
 	short sp_gain_race[RC_MAX];
 	// zeroed arrays end here.
 	// zeroed structures start here
-	struct s_autospell{
-		short id, lv, rate, card_id, flag;
-	} autospell[15], autospell2[15];
-	struct s_addeffect{
-		short id, rate, arrow_rate;
-		unsigned char flag;
-	} addeff[MAX_PC_BONUS], addeff2[MAX_PC_BONUS];
+	struct s_autospell autospell[15], autospell2[15];
+	struct s_addeffect addeff[MAX_PC_BONUS], addeff2[MAX_PC_BONUS];
 	struct { //skillatk raises bonus dmg% of skills, skillheal increases heal%, skillblown increases bonus blewcount for some skills.
 		unsigned short id;
 		short val;
@@ -203,22 +218,15 @@ struct map_session_data {
 	} hp_loss, sp_loss, hp_regen, sp_regen;
 	struct {
 		short class_, rate;
-	}	add_def[MAX_PC_BONUS], add_mdef[MAX_PC_BONUS],
-		add_mdmg[MAX_PC_BONUS];
-	struct s_add_drop { 
-		short id, group;
-		int race, rate;
-	} add_drop[MAX_PC_BONUS];
+	}	add_def[MAX_PC_BONUS], add_mdef[MAX_PC_BONUS], add_mdmg[MAX_PC_BONUS];
+	struct s_add_drop add_drop[MAX_PC_BONUS];
 	struct {
 		int nameid;
 		int rate;
 	} itemhealrate[MAX_PC_BONUS];
 	// zeroed structures end here
 	// manually zeroed structures start here.
-	struct s_autoscript {
-		unsigned short rate, flag;
-		struct script_code *script;
-	} autoscript[10], autoscript2[10]; //Auto script on attack, when attacked
+	struct s_autoscript autoscript[10], autoscript2[10]; //Auto script on attack, when attacked
 	// manually zeroed structures end here.
 	// zeroed vars start here.
 	int arrow_atk,arrow_ele,arrow_cri,arrow_hit;
@@ -382,15 +390,15 @@ enum weapon_type {
 	W_DOUBLE_SA, // sword + axe
 };
 
-enum {
+enum ammo_type {
 	A_ARROW = 1,
-	A_DAGGER,    //2
+	A_DAGGER,   //2
 	A_BULLET,   //3
 	A_SHELL,    //4
 	A_GRENADE,  //5
 	A_SHURIKEN, //6
 	A_KUNAI     //7
-} ammo_type;
+};
 
 //Equip position constants
 enum equip_pos {
@@ -415,7 +423,7 @@ enum equip_pos {
 
 //Equip indexes constants. (eg: sd->equip_index[EQI_AMMO] returns the index
 //where the arrows are equipped)
-enum {
+enum equip_index {
 	EQI_ACC_L = 0,
 	EQI_ACC_R,
 	EQI_SHOES,
@@ -428,7 +436,7 @@ enum {
 	EQI_HAND_R,
 	EQI_AMMO,
 	EQI_MAX
-} equip_index_enum;
+};
 
 struct duel {
 	int members_count;

+ 42 - 37
src/map/pet.h

@@ -33,6 +33,43 @@ extern struct s_pet_db pet_db[MAX_PET_DB];
 
 enum { PET_CLASS,PET_CATCH,PET_EGG,PET_EQUIP,PET_FOOD };
 
+struct pet_recovery { //Stat recovery
+	enum sc_type type;	//Status Change id
+	unsigned short delay; //How long before curing (secs).
+	int timer;
+};
+
+struct pet_bonus {
+	unsigned short type; //bStr, bVit?
+	unsigned short val;	//Qty
+	unsigned short duration; //in secs
+	unsigned short delay;	//Time before recasting (secs)
+	int timer;
+};
+
+struct pet_skill_attack { //Attack Skill
+	unsigned short id;
+	unsigned short lv;
+	unsigned short div_; //0 = Normal skill. >0 = Fixed damage (lv), fixed div_.
+	unsigned short rate; //Base chance of skill ocurrance (10 = 10% of attacks)
+	unsigned short bonusrate; //How being 100% loyal affects cast rate (10 = At 1000 intimacy->rate+10%
+};
+
+struct pet_skill_support { //Support Skill
+	unsigned short id;
+	unsigned short lv;
+	unsigned short hp; //Max HP% for skill to trigger (50 -> 50% for Magnificat)
+	unsigned short sp; //Max SP% for skill to trigger (100 = no check)
+	unsigned short delay; //Time (secs) between being able to recast.
+	int timer;
+};
+
+struct pet_loot {
+	struct item *item;
+	unsigned short count;
+	unsigned short weight;
+	unsigned short max;
+};
 
 struct pet_data {
 	struct block_list bl;
@@ -51,43 +88,11 @@ struct pet_data {
 	unsigned int next_walktime,last_thinktime;
 	short rate_fix;	//Support rate as modified by intimacy (1000 = 100%) [Skotlex]
 
-	struct pet_recovery { //Stat recovery
-		unsigned short type;	//Status Change id
-		unsigned short delay; //How long before curing (secs).
-		int timer;
-	} *recovery; //[Valaris] / Reimplemented by [Skotlex]
-
-	struct pet_bonus {
-		unsigned short type; //bStr, bVit?
-		unsigned short val;	//Qty
-		unsigned short duration; //in secs
-		unsigned short delay;	//Time before recasting (secs)
-		int timer;
-	} *bonus; //[Valaris] / Reimplemented by [Skotlex]
-
-	struct pet_skill_attack { //Attack Skill
-		unsigned short id;
-		unsigned short lv;
-		unsigned short div_; //0 = Normal skill. >0 = Fixed damage (lv), fixed div_.
-		unsigned short rate; //Base chance of skill ocurrance (10 = 10% of attacks)
-		unsigned short bonusrate; //How being 100% loyal affects cast rate (10 = At 1000 intimacy->rate+10%
-	} *a_skill;	//[Skotlex]
-
-	struct pet_skill_support { //Support Skill
-		unsigned short id;
-		unsigned short lv;
-		unsigned short hp; //Max HP% for skill to trigger (50 -> 50% for Magnificat)
-		unsigned short sp; //Max SP% for skill to trigger (100 = no check)
-		unsigned short delay; //Time (secs) between being able to recast.
-		int timer;
-	} *s_skill;	//[Skotlex]
-
-	struct pet_loot {
-		struct item *item;
-		unsigned short count;
-		unsigned short weight;
-		unsigned short max;
-	} *loot; //[Valaris] / Rewritten by [Skotlex]
+	struct pet_recovery* recovery;
+	struct pet_bonus* bonus;
+	struct pet_skill_attack* a_skill;
+	struct pet_skill_support* s_skill;
+	struct pet_loot* loot;
 
 	struct map_session_data *msd;
 };

+ 46 - 56
src/map/script.c

@@ -30,6 +30,7 @@
 #include "mercenary.h"	//[orn]
 #include "intif.h"
 #include "skill.h"
+#include "status.h"
 #include "chat.h"
 #include "battle.h"
 #include "party.h"
@@ -251,14 +252,16 @@ char mapregsql_db_index[32] = "index";
 char mapregsql_db_value[32] = "value";
 #endif
 
-int get_com(unsigned char *script,int *pos);
+c_op get_com(unsigned char *script,int *pos);
 int get_num(unsigned char *script,int *pos);
 
-struct script_function {
+typedef struct script_function {
 	int (*func)(struct script_state *st);
 	const char *name;
 	const char *arg;
-} buildin_func[];
+} script_function;
+
+extern script_function buildin_func[];
 
 static struct linkdb_node *sleep_db;
 #define not_server_variable(prefix) ( (prefix) != '$' && (prefix) != '.')
@@ -1851,7 +1854,7 @@ void script_error(const char *src,const char *file,int start_line, const char *e
 	const char *linestart[5] = { NULL, NULL, NULL, NULL, NULL };
 
 	for(p=src;p && *p;line++){
-		char *lineend=strchr(p,'\n');
+		const char *lineend=strchr(p,'\n');
 		if(lineend==NULL || error_pos<lineend){
 			break;
 		}
@@ -2167,7 +2170,7 @@ void get_val(struct script_state* st, struct script_data* data)
 					data->ref      ? data->ref:
 					name[1] == '@' ? st->stack->var_function:// instance/scope variable
 					                 &st->script->script_vars;// npc variable
-				data->u.str = linkdb_search(n, (void*)reference_getuid(data));
+				data->u.str = (char*)linkdb_search(n, (void*)reference_getuid(data));
 			}
 			break;
 		default:
@@ -2234,7 +2237,7 @@ void get_val(struct script_state* st, struct script_data* data)
 	return;
 }
 
-void push_val2(struct script_stack* stack, int type, int val, struct linkdb_node** ref);
+void push_val2(struct script_stack* stack, enum c_op type, int val, struct linkdb_node** ref);
 
 /// Retrieves the value of a reference identified by uid (variable, constant, param)
 /// The value is left in the top of the stack and needs to be removed manually.
@@ -2271,7 +2274,7 @@ static int set_reg(struct script_state* st, TBL_PC* sd, int num, char* name, con
 			char* p;
 			struct linkdb_node** n;
 			n = (ref) ? ref : (name[1] == '@') ? st->stack->var_function : &st->script->script_vars;
-			p = linkdb_erase(n, (void*)num);
+			p = (char*)linkdb_erase(n, (void*)num);
 			if (p) aFree(p);
 			if (str[0]) linkdb_insert(n, (void*)num, aStrdup(str));
 			}
@@ -2423,7 +2426,7 @@ void stack_expand(struct script_stack* stack)
 #define push_val(stack,type,val) push_val2(stack, type, val, NULL)
 
 /// Pushes a value into the stack (with reference)
-void push_val2(struct script_stack* stack, int type, int val, struct linkdb_node** ref)
+void push_val2(struct script_stack* stack, enum c_op type, int val, struct linkdb_node** ref)
 {
 	if( stack->sp >= stack->sp_max )
 		stack_expand(stack);
@@ -2434,7 +2437,7 @@ void push_val2(struct script_stack* stack, int type, int val, struct linkdb_node
 }
 
 /// Pushes a string into the stack
-void push_str(struct script_stack* stack, int type, char* str)
+void push_str(struct script_stack* stack, enum c_op type, char* str)
 {
 	if( stack->sp >= stack->sp_max )
 		stack_expand(stack);
@@ -2549,35 +2552,18 @@ void script_free_code(struct script_code* code)
 /*==========================================
  * コマンドの読み取り
  *------------------------------------------*/
-static int unget_com_data=-1;
-int get_com(unsigned char *script,int *pos)
+c_op get_com(unsigned char *script,int *pos)
 {
-	int i,j;
-	if(unget_com_data>=0){
-		i=unget_com_data;
-		unget_com_data=-1;
-		return i;
-	}
+	int i = 0, j = 0;
+
 	if(script[*pos]>=0x80){
 		return C_INT;
 	}
-	i=0; j=0;
 	while(script[*pos]>=0x40){
 		i=script[(*pos)++]<<j;
 		j+=6;
 	}
-	return i+(script[(*pos)++]<<j);
-}
-
-/*==========================================
- * コマンドのプッシュバック
- *------------------------------------------*/
-void unget_com(int c)
-{
-	if(unget_com_data!=-1)
-		ShowError("unget_com can back only 1 data\n");
-
-	unget_com_data=c;
+	return (c_op)(i+(script[(*pos)++]<<j));
 }
 
 /*==========================================
@@ -2970,14 +2956,14 @@ void run_script(struct script_code *rootscript,int pos,int rid,int oid)
 		//Resume script.
 		st = sd->st;
 	} else {
-		st = aCalloc(sizeof(struct script_state), 1);
+		st = (struct script_state*)aCalloc(sizeof(struct script_state), 1);
 		// the script is different, make new script_state and stack
-		st->stack = aMalloc (sizeof(struct script_stack));
+		st->stack = (struct script_stack*)aMalloc (sizeof(struct script_stack));
 		st->stack->sp=0;
 		st->stack->sp_max=64;
 		st->stack->stack_data = (struct script_data *)aCalloc(st->stack->sp_max,sizeof(st->stack->stack_data[0]));
 		st->stack->defsp = st->stack->sp;
-		st->stack->var_function = aCalloc(1, sizeof(struct linkdb_node*));
+		st->stack->var_function = (struct linkdb_node**)aCalloc(1, sizeof(struct linkdb_node*));
 		st->state  = RUN;
 		st->script = rootscript;
 	}
@@ -3056,7 +3042,6 @@ int run_script_timer(int tid, unsigned int tick, int id, int data)
  *------------------------------------------*/
 void run_script_main(struct script_state *st)
 {
-	int c;
 	int cmdcount=script_config.check_cmdcount;
 	int gotocount=script_config.check_gotocount;
 	TBL_PC *sd;
@@ -3084,8 +3069,9 @@ void run_script_main(struct script_state *st)
 	} else if(st->state != END)
 		st->state = RUN;
 
-	while(st->state == RUN){
-		c= get_com(st->script->script_buf,&st->pos);
+	while(st->state == RUN)
+	{
+		enum c_op c = get_com(st->script->script_buf,&st->pos);
 		switch(c){
 		case C_EOL:
 			if( stack->sp != stack->defsp )
@@ -3623,7 +3609,7 @@ int do_init_script()
 	mapreg_db= idb_alloc(DB_OPT_BASE);
 	mapregstr_db=idb_alloc(DB_OPT_RELEASE_DATA);
 	userfunc_db=strdb_alloc(DB_OPT_DUP_KEY,0);
-	scriptlabel_db=strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_ALLOW_NULL_DATA,50);
+	scriptlabel_db=strdb_alloc((DBOptions)(DB_OPT_DUP_KEY|DB_OPT_ALLOW_NULL_DATA),50);
 	
 	script_load_mapreg();
 
@@ -4039,7 +4025,7 @@ BUILDIN_FUNC(callfunc)
 	struct script_code *scr, *oldscr;
 	const char* str = script_getstr(st,2);
 
-	scr = strdb_get(userfunc_db, str);
+	scr = (struct script_code*)strdb_get(userfunc_db, str);
 	if( !scr )
 	{
 		ShowError("script:callfunc: function not found! [%s]\n", str);
@@ -8097,12 +8083,12 @@ BUILDIN_FUNC(hideonnpc)
 BUILDIN_FUNC(sc_start)
 {
 	struct block_list* bl;
-	int type;
+	enum sc_type type;
 	int tick;
 	int val1;
 	int val4 = 0;
 
-	type = script_getnum(st,2);
+	type = (sc_type)script_getnum(st,2);
 	tick = script_getnum(st,3);
 	val1 = script_getnum(st,4);
 	if( script_hasdata(st,5) )
@@ -8110,7 +8096,7 @@ BUILDIN_FUNC(sc_start)
 	else
 		bl = map_id2bl(st->rid);
 
-	if( tick == 0 && val1 > 0 && type >= 0 && type < SC_MAX && status_sc2skill(type) != 0 )
+	if( tick == 0 && val1 > 0 && type > SC_NONE && type < SC_MAX && status_sc2skill(type) != 0 )
 	{// When there isn't a duration specified, try to get it from the skill_db
 		tick = skill_get_time(status_sc2skill(type), val1);
 	}
@@ -8124,6 +8110,7 @@ BUILDIN_FUNC(sc_start)
 
 	if( bl )
 		status_change_start(bl, type, 10000, val1, 0, 0, val4, tick, 2);
+
 	return 0;
 }
 
@@ -8133,13 +8120,13 @@ BUILDIN_FUNC(sc_start)
 BUILDIN_FUNC(sc_start2)
 {
 	struct block_list* bl;
-	int type;
+	enum sc_type type;
 	int tick;
 	int val1;
 	int val4 = 0;
 	int rate;
 
-	type = script_getnum(st,2);
+	type = (sc_type)script_getnum(st,2);
 	tick = script_getnum(st,3);
 	val1 = script_getnum(st,4);
 	rate = script_getnum(st,5);
@@ -8148,7 +8135,7 @@ BUILDIN_FUNC(sc_start2)
 	else
 		bl = map_id2bl(st->rid);
 
-	if( tick == 0 && val1 > 0 && type >= 0 && type < SC_MAX && status_sc2skill(type) != 0 )
+	if( tick == 0 && val1 > 0 && type > SC_NONE && type < SC_MAX && status_sc2skill(type) != 0 )
 	{// When there isn't a duration specified, try to get it from the skill_db
 		tick = skill_get_time(status_sc2skill(type), val1);
 	}
@@ -8172,14 +8159,14 @@ BUILDIN_FUNC(sc_start2)
 BUILDIN_FUNC(sc_start4)
 {
 	struct block_list* bl;
-	int type;
+	enum sc_type type;
 	int tick;
 	int val1;
 	int val2;
 	int val3;
 	int val4;
 
-	type = script_getnum(st,2);
+	type = (sc_type)script_getnum(st,2);
 	tick = script_getnum(st,3);
 	val1 = script_getnum(st,4);
 	val2 = script_getnum(st,5);
@@ -8190,7 +8177,7 @@ BUILDIN_FUNC(sc_start4)
 	else
 		bl = map_id2bl(st->rid);
 
-	if( tick == 0 && val1 > 0 && type >= 0 && type < SC_MAX && status_sc2skill(type) != 0 )
+	if( tick == 0 && val1 > 0 && type > SC_NONE && type < SC_MAX && status_sc2skill(type) != 0 )
 	{// When there isn't a duration specified, try to get it from the skill_db
 		tick = skill_get_time(status_sc2skill(type), val1);
 	}
@@ -8235,7 +8222,7 @@ BUILDIN_FUNC(sc_end)
 		if (!sce) return 0;
 		//This should help status_change_end force disabling the SC in case it has no limit.
 		sce->val1 = sce->val2 = sce->val3 = sce->val4 = 0;
-		status_change_end(bl, type, INVALID_TIMER);
+		status_change_end(bl, (sc_type)type, INVALID_TIMER);
 	} else
 		status_change_clear(bl, 2);// remove all effects
 	return 0;
@@ -8257,7 +8244,7 @@ BUILDIN_FUNC(getscrate)
 		bl = map_id2bl(st->rid);
 
 	if (bl)
-		rate = status_get_sc_def(bl,type, 10000, 10000, 0);
+		rate = status_get_sc_def(bl, (sc_type)type, 10000, 10000, 0);
 
 	script_pushint(st,rate);
 	return 0;
@@ -9193,7 +9180,7 @@ BUILDIN_FUNC(getcastlename)
 {
 	const char* mapname = mapindex_getmapname(script_getstr(st,2),NULL);
 	struct guild_castle* gc = guild_mapname2gc(mapname);
-	char* name = (gc) ? gc->castle_name : "";
+	const char* name = (gc) ? gc->castle_name : "";
 	script_pushstrcopy(st,name);
 	return 0;
 }
@@ -10309,9 +10296,8 @@ BUILDIN_FUNC(petrecovery)
 	} else //Init
 		pd->recovery = (struct pet_recovery *)aMalloc(sizeof(struct pet_recovery));
 		
-	pd->recovery->type=script_getnum(st,2);
+	pd->recovery->type=(sc_type)script_getnum(st,2);
 	pd->recovery->delay=script_getnum(st,3);
-
 	pd->recovery->timer=-1;
 
 	return 0;
@@ -10484,11 +10470,13 @@ BUILDIN_FUNC(npcskilleffect)
 BUILDIN_FUNC(specialeffect)
 {
 	struct block_list *bl=map_id2bl(st->oid);
+	int type = script_getnum(st,2);
+	enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA;
 
 	if(bl==NULL)
 		return 0;
 
-	clif_specialeffect(bl,script_getnum(st,2), (script_hasdata(st,3)?script_getnum(st,3):AREA));
+	clif_specialeffect(bl, type, target);
 
 	return 0;
 }
@@ -10496,11 +10484,13 @@ BUILDIN_FUNC(specialeffect)
 BUILDIN_FUNC(specialeffect2)
 {
 	TBL_PC *sd=script_rid2sd(st);
+	int type = script_getnum(st,2);
+	enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA;
 
 	if(sd==NULL)
 		return 0;
 
-	clif_specialeffect(&sd->bl,script_getnum(st,2), (script_hasdata(st,3)?script_getnum(st,3):AREA));
+	clif_specialeffect(&sd->bl, type, target);
 
 	return 0;
 }
@@ -11651,7 +11641,7 @@ BUILDIN_FUNC(checkcell)
 	const char *map = script_getstr(st, 2);
 	m = mapindex_name2id(map);
 	if(m){
-		script_pushint(st,map_getcell(m, script_getnum(st,3), script_getnum(st,4),script_getnum(st,5)));
+		script_pushint(st,map_getcell(m, script_getnum(st,3), script_getnum(st,4),(cell_chk)script_getnum(st,5)));
 	} else {
 		script_pushint(st,0);
 	}
@@ -11831,7 +11821,7 @@ BUILDIN_FUNC(escape_sql)
 
 	str = script_getstr(st,2);
 	len = strlen(str);
-	esc_str = aMallocA(len*2+1);
+	esc_str = (char*)aMallocA(len*2+1);
 #if defined(TXT_ONLY)
 	jstrescapecpy(esc_str, str);
 #else

+ 2 - 2
src/map/script.h

@@ -25,7 +25,7 @@ extern struct Script_Config {
 	const char *joblvup_event_name;
 } script_config;
 
-enum c_op {
+typedef enum c_op {
 	C_NOP, // end of script/no value (nil)
 	C_POS,
 	C_INT, // number
@@ -63,7 +63,7 @@ enum c_op {
 	C_NOT, // ~ a
 	C_R_SHIFT, // a >> b
 	C_L_SHIFT // a << b
-};
+} c_op;
 
 struct script_data {
 	enum c_op type;

+ 74 - 61
src/map/skill.c

@@ -408,6 +408,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 	struct status_data *sstatus, *tstatus;
 	struct status_change *sc, *tsc;
 
+	enum sc_type status;
 	int skill;
 	int rate;
 
@@ -523,9 +524,9 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 		break;
 
 	case AS_GRIMTOOTH:
-		skill = dstsd?SC_SLOWDOWN:SC_STOP;
-		if (!tsc->data[skill])
-			sc_start(bl,skill,100,skilllv,skill_get_time2(skillid, skilllv));
+		status = dstsd?SC_SLOWDOWN:SC_STOP;
+		if (!tsc->data[status])
+			sc_start(bl,status,100,skilllv,skill_get_time2(skillid, skilllv));
 		break;
 
 	case WZ_FIREPILLAR:
@@ -705,9 +706,9 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 		break;
 
 	case LK_JOINTBEAT:
-		skill = status_skill2sc(skillid);
+		status = status_skill2sc(skillid);
 		if (tsc->jb_flag) {
-			sc_start2(bl,skill,(5*skilllv+5),skilllv,tsc->jb_flag&BREAK_FLAGS,skill_get_time2(skillid,skilllv));
+			sc_start2(bl,status,(5*skilllv+5),skilllv,tsc->jb_flag&BREAK_FLAGS,skill_get_time2(skillid,skilllv));
 			tsc->jb_flag = 0;
 		}
 		break;
@@ -807,7 +808,8 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 		skillid != CR_REFLECTSHIELD &&
 		skillid != ASC_BREAKER
 	){	//Trigger status effects
-		int i, type;
+		enum sc_type type;
+		int i;
 		for(i=0; i < ARRAYLENGTH(sd->addeff) && sd->addeff[i].flag; i++)
 		{
 			rate = sd->addeff[i].rate;
@@ -998,7 +1000,8 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
 
 	if(dstsd && attack_type&BF_WEAPON)
 	{	//Counter effects.
-		int i, type, time;
+		enum sc_type type;
+		int i, time;
 		for(i=0; i < ARRAYLENGTH(dstsd->addeff2) && dstsd->addeff2[i].flag; i++)
 		{
 			rate = dstsd->addeff2[i].rate;
@@ -1104,9 +1107,9 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
 --------------------------------------------------------------------------*/
 int skill_break_equip (struct block_list *bl, unsigned short where, int rate, int flag) 
 {
-	const int where_list[4] = {EQP_WEAPON, EQP_ARMOR, EQP_SHIELD, EQP_HELM};
-	const int scatk[4] = {SC_STRIPWEAPON, SC_STRIPARMOR, SC_STRIPSHIELD, SC_STRIPHELM};
-	const int scdef[4] = {SC_CP_WEAPON, SC_CP_ARMOR, SC_CP_SHIELD, SC_CP_HELM};
+	const int where_list[4]     = {EQP_WEAPON, EQP_ARMOR, EQP_SHIELD, EQP_HELM};
+	const enum sc_type scatk[4] = {SC_STRIPWEAPON, SC_STRIPARMOR, SC_STRIPSHIELD, SC_STRIPHELM};
+	const enum sc_type scdef[4] = {SC_CP_WEAPON, SC_CP_ARMOR, SC_CP_SHIELD, SC_CP_HELM};
 	struct status_change *sc = status_get_sc(bl);
 	int i,j;
 	TBL_PC *sd;
@@ -1188,9 +1191,9 @@ int skill_break_equip (struct block_list *bl, unsigned short where, int rate, in
 int skill_strip_equip(struct block_list *bl, unsigned short where, int rate, int lv, int time)
 {
 	struct status_change *sc;
-	const int pos[4]    = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HELM};
-	const int sc_atk[4] = {SC_STRIPWEAPON, SC_STRIPSHIELD, SC_STRIPARMOR, SC_STRIPHELM};
-	const int sc_def[4] = {SC_CP_WEAPON, SC_CP_SHIELD, SC_CP_ARMOR, SC_CP_HELM};
+	const int pos[4]             = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HELM};
+	const enum sc_type sc_atk[4] = {SC_STRIPWEAPON, SC_STRIPSHIELD, SC_STRIPARMOR, SC_STRIPHELM};
+	const enum sc_type sc_def[4] = {SC_CP_WEAPON, SC_CP_SHIELD, SC_CP_ARMOR, SC_CP_HELM};
 	int i;
 
 	if (rand()%100 >= rate)
@@ -2810,7 +2813,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	struct status_change_entry *tsce;
 	struct mob_data *md;
 	struct mob_data *dstmd;
-	int i,type;
+	int i;
+	enum sc_type type;
 	
 	if(skillid > 0 && skilllv <= 0) return 0;	// celest
 
@@ -3109,9 +3113,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 			mob_class_change(dstmd,class_);
 			if( tsc && dstmd->status.mode&MD_BOSS )
 			{
-				const int scs[] = { SC_QUAGMIRE, SC_PROVOKE, SC_ROKISWEIL, SC_GRAVITATION, SC_SUITON, SC_STRIPWEAPON, SC_STRIPSHIELD, SC_STRIPARMOR, SC_STRIPHELM, SC_BLADESTOP };
+				const enum sc_type scs[] = { SC_QUAGMIRE, SC_PROVOKE, SC_ROKISWEIL, SC_GRAVITATION, SC_SUITON, SC_STRIPWEAPON, SC_STRIPSHIELD, SC_STRIPARMOR, SC_STRIPHELM, SC_BLADESTOP };
 				for (i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++)
-					if (tsc->data[i]) status_change_end(bl, i, -1);
+					if (tsc->data[i]) status_change_end(bl, (sc_type)i, -1);
 				for (i = 0; i < ARRAYLENGTH(scs); i++)
 					if (tsc->data[scs[i]]) status_change_end(bl, scs[i], -1);
 			}
@@ -3153,7 +3157,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case CG_MARIONETTE:
 		{
 			struct status_change *sc= status_get_sc(src);
-			int type2 = SC_MARIONETTE2;
+			enum sc_type type2 = SC_MARIONETTE2;
 
 			if(sc && tsc){
 				if (!sc->data[type] && !tsc->data[type2]) {
@@ -4020,32 +4024,36 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case RG_STRIPARMOR:
 	case RG_STRIPHELM:
 	case ST_FULLSTRIP:
+	{
+		unsigned short location = 0;
 		i = 5+2*skilllv;
 		if (sstatus->dex > tstatus->dex)
 			i += (sstatus->dex - tstatus->dex)/5;
+
 		switch (skillid) {
 		case RG_STRIPWEAPON:
-			type = EQP_WEAPON;
+			location = EQP_WEAPON;
 			break;
 		case RG_STRIPSHIELD:
-			type = EQP_SHIELD;
+			location = EQP_SHIELD;
 			break;
 		case RG_STRIPARMOR:
-			type = EQP_ARMOR;
+			location = EQP_ARMOR;
 			break;
 		case RG_STRIPHELM:
-			type = EQP_HELM;
+			location = EQP_HELM;
 			break;
 		case ST_FULLSTRIP:
-			type = EQP_WEAPON|EQP_SHIELD|EQP_ARMOR|EQP_HELM;
+			location = EQP_WEAPON|EQP_SHIELD|EQP_ARMOR|EQP_HELM;
 			break;
 		}
 		//Note that Full Strip autospell doesn't use a duration
 		if (!clif_skill_nodamage(src,bl,skillid,skilllv,
-				skill_strip_equip(bl, type, i, skilllv, 
+				skill_strip_equip(bl, location, i, skilllv, 
 				sd&&skillid==ST_FULLSTRIP&&!pc_checkskill(sd, skillid)?0:skill_get_time(skillid,skilllv)))
 			&& sd)
 			clif_skill_fail(sd,skillid,0,0); //Nothing stripped.
+	}
 		break;
 
 	case AM_BERSERKPITCHER:
@@ -4139,7 +4147,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case AM_CP_ARMOR:
 	case AM_CP_HELM:
 		{
-			int scid = SC_STRIPWEAPON + (skillid - AM_CP_WEAPON);
+			enum sc_type scid = (sc_type)(SC_STRIPWEAPON + (skillid - AM_CP_WEAPON));
 			if(tsc && tsc->data[scid])
 				status_change_end(bl, scid, -1 );
 			clif_skill_nodamage(src,bl,skillid,skilllv,
@@ -4192,7 +4200,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 			}
 			if(status_isimmune(bl) || !tsc || !tsc->count)
 				break;
-			for(i=0;i<SC_MAX;i++){
+			for(i=0;i<SC_MAX;i++)
+			{
 				if (!tsc->data[i])
 					continue;
 				switch (i) {
@@ -4217,7 +4226,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 					continue;
 				}
 				if(i==SC_BERSERK) tsc->data[i]->val2=0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0.
-				status_change_end(bl,i,-1);
+				status_change_end(bl,(sc_type)i,-1);
 			}
 			break;
 		}
@@ -4446,7 +4455,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 			if (i > SC_ASPDPOTION3)
 				i = SC_ASPDPOTION3;
 			clif_skill_nodamage(src,bl,skillid,skilllv,
-				sc_start(bl,i,100,skilllv,skilllv * 60000));
+				sc_start(bl,(sc_type)i,100,skilllv,skilllv * 60000));
 		}
 		break;
 
@@ -4764,8 +4773,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 			}
 			for (i=0; i<4; i++) {
 				if(tsc->data[SC_STRIPWEAPON + i])
-					status_change_end(bl, SC_STRIPWEAPON + i, -1 );
-				sc_start(bl,SC_CP_WEAPON + i,100,skilllv,skilltime);
+					status_change_end(bl, (sc_type)(SC_STRIPWEAPON + i), -1 );
+				sc_start(bl,(sc_type)(SC_CP_WEAPON + i),100,skilllv,skilltime);
 			}
 			clif_skill_nodamage(src,bl,skillid,skilllv,1);
 		}
@@ -4831,7 +4840,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 					break;
 				case 7:	// stop freeze or stoned
 					{
-						int sc[] = { SC_STOP, SC_FREEZE, SC_STONE };
+						enum sc_type sc[] = { SC_STOP, SC_FREEZE, SC_STONE };
 						sc_start(bl,sc[rand()%3],100,skilllv,skill_get_time2(skillid,skilllv));
 					}
 					break;
@@ -5120,7 +5129,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 
 	case NPC_DRAGONFEAR:
 		if (flag&1) {
-			const int sc[] = { SC_STUN, SC_CURSE, SC_SILENCE, SC_BLEEDING };
+			const enum sc_type sc[] = { SC_STUN, SC_CURSE, SC_SILENCE, SC_BLEEDING };
 			i = rand()%ARRAYLENGTH(sc);
 			sc_start(bl,sc[i],100,skilllv,skill_get_time2(skillid,i+1));
 		} else {
@@ -5528,7 +5537,8 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
 	struct status_change* sc;
 	struct status_change_entry *sce;
 	struct skill_unit_group* sg;
-	int i,type;
+	enum sc_type type;
+	int i;
 
 	//if(skilllv <= 0) return 0;
 	if(skillid > 0 && skilllv <= 0) return 0;	// celest
@@ -6491,7 +6501,8 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
 	struct block_list *ss;
 	struct status_change *sc;
 	struct status_change_entry *sce;
-	int type,skillid;
+	enum sc_type type;
+	int skillid;
 
 	nullpo_retr(0, src);
 	nullpo_retr(0, bl);
@@ -6651,7 +6662,8 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 	struct status_data *tstatus, *sstatus;
 	struct status_change *tsc, *sc;
 	struct skill_unit_group_tickset *ts;
-	int type, skillid;
+	enum sc_type type;
+	int skillid;
 	int diff=0;
 
 	nullpo_retr(0, src);
@@ -6926,60 +6938,61 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 				break;
 			if (battle_check_target(ss,bl,BCT_PARTY)>0)
 			{ // Support Effect only on party, not guild
+				int heal;
 				int i = rand()%13; // Positive buff count
-				type = skill_get_time2(sg->skill_id, sg->skill_lv); //Duration
+				int time = skill_get_time2(sg->skill_id, sg->skill_lv); //Duration
 				switch (i)
 				{
 					case 0: // Heal 1~9999 HP
-						type = rand() %9999+1;
-						clif_skill_nodamage(ss,bl,AL_HEAL,type,1);
-						status_heal(bl,type,0,0);
+						heal = rand() %9999+1;
+						clif_skill_nodamage(ss,bl,AL_HEAL,heal,1);
+						status_heal(bl,heal,0,0);
 						break;
 					case 1: // End all negative status
 						status_change_clear_buffs(bl,2);
 						if (tsd) clif_gospel_info(tsd, 0x15);
 						break;
 					case 2: // Immunity to all status
-						sc_start(bl,SC_SCRESIST,100,100,type);
+						sc_start(bl,SC_SCRESIST,100,100,time);
 						if (tsd) clif_gospel_info(tsd, 0x16);
 						break;
 					case 3: // MaxHP +100%
-						sc_start(bl,SC_INCMHPRATE,100,100,type);
+						sc_start(bl,SC_INCMHPRATE,100,100,time);
 						if (tsd) clif_gospel_info(tsd, 0x17);
 						break;
 					case 4: // MaxSP +100%
-						sc_start(bl,SC_INCMSPRATE,100,100,type);
+						sc_start(bl,SC_INCMSPRATE,100,100,time);
 						if (tsd) clif_gospel_info(tsd, 0x18);
 						break;
 					case 5: // All stats +20
-						sc_start(bl,SC_INCALLSTATUS,100,20,type);
+						sc_start(bl,SC_INCALLSTATUS,100,20,time);
 						if (tsd) clif_gospel_info(tsd, 0x19);
 						break;
 					case 6: // Level 10 Blessing
-						sc_start(bl,SC_BLESSING,100,10,type);
+						sc_start(bl,SC_BLESSING,100,10,time);
 						break;
 					case 7: // Level 10 Increase AGI
-						sc_start(bl,SC_INCREASEAGI,100,10,type);
+						sc_start(bl,SC_INCREASEAGI,100,10,time);
 						break;
 					case 8: // Enchant weapon with Holy element
-						sc_start(bl,SC_ASPERSIO,100,1,type);
+						sc_start(bl,SC_ASPERSIO,100,1,time);
 						if (tsd) clif_gospel_info(tsd, 0x1c);
 						break;
 					case 9: // Enchant armor with Holy element
-						sc_start(bl,SC_BENEDICTIO,100,1,type);
+						sc_start(bl,SC_BENEDICTIO,100,1,time);
 						if (tsd) clif_gospel_info(tsd, 0x1d);
 						break;
 					case 10: // DEF +25%
-						sc_start(bl,SC_INCDEFRATE,100,25,type);
+						sc_start(bl,SC_INCDEFRATE,100,25,time);
 						if (tsd) clif_gospel_info(tsd, 0x1e);
 						break;
 					case 11: // ATK +100%
-						sc_start(bl,SC_INCATKRATE,100,100,type);
+						sc_start(bl,SC_INCATKRATE,100,100,time);
 						if (tsd) clif_gospel_info(tsd, 0x1f);
 						break;
 					case 12: // HIT/Flee +50
-						sc_start(bl,SC_INCHIT,100,50,type);
-						sc_start(bl,SC_INCFLEE,100,50,type);
+						sc_start(bl,SC_INCHIT,100,50,time);
+						sc_start(bl,SC_INCFLEE,100,50,time);
 						if (tsd) clif_gospel_info(tsd, 0x20);
 						break;
 				}
@@ -6987,35 +7000,35 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 			else if (battle_check_target(&src->bl,bl,BCT_ENEMY)>0)
 			{ // Offensive Effect
 				int i = rand()%9; // Negative buff count
-				type = skill_get_time2(sg->skill_id, sg->skill_lv);
+				int time = skill_get_time2(sg->skill_id, sg->skill_lv);
 				switch (i)
 				{
 					case 0: // Deal 1~9999 damage
 						skill_attack(BF_MISC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
 						break;
 					case 1: // Curse
-						sc_start(bl,SC_CURSE,100,1,type);
+						sc_start(bl,SC_CURSE,100,1,time);
 						break;
 					case 2: // Blind
-						sc_start(bl,SC_BLIND,100,1,type);
+						sc_start(bl,SC_BLIND,100,1,time);
 						break;
 					case 3: // Poison
-						sc_start(bl,SC_POISON,100,1,type);
+						sc_start(bl,SC_POISON,100,1,time);
 						break;
 					case 4: // Level 10 Provoke
-						sc_start(bl,SC_PROVOKE,100,10,type);
+						sc_start(bl,SC_PROVOKE,100,10,time);
 						break;
 					case 5: // DEF -100%
-						sc_start(bl,SC_INCDEFRATE,100,-100,type);
+						sc_start(bl,SC_INCDEFRATE,100,-100,time);
 						break;
 					case 6: // ATK -100%
-						sc_start(bl,SC_INCATKRATE,100,-100,type);
+						sc_start(bl,SC_INCATKRATE,100,-100,time);
 						break;
 					case 7: // Flee -100%
-						sc_start(bl,SC_INCFLEERATE,100,-100,type);
+						sc_start(bl,SC_INCFLEERATE,100,-100,time);
 						break;
 					case 8: // Speed/ASPD -25%
-						sc_start4(bl,SC_GOSPEL,100,1,0,0,BCT_ENEMY,type);
+						sc_start4(bl,SC_GOSPEL,100,1,0,0,BCT_ENEMY,time);
 						break;
 				}
 			}
@@ -7063,7 +7076,7 @@ int skill_unit_onout (struct skill_unit *src, struct block_list *bl, unsigned in
 	struct skill_unit_group *sg;
 	struct status_change *sc;
 	struct status_change_entry *sce;
-	int type;
+	enum sc_type type;
 
 	nullpo_retr(0, src);
 	nullpo_retr(0, bl);
@@ -7110,7 +7123,7 @@ static int skill_unit_onleft (int skill_id, struct block_list *bl, unsigned int
 {
 	struct status_change *sc;
 	struct status_change_entry *sce;
-	int type;
+	enum sc_type type;
 
 	sc = status_get_sc(bl);
 	if (sc && !sc->count)

+ 37 - 37
src/map/status.c

@@ -60,22 +60,22 @@ int current_equip_card_id; //To prevent card-stacking (from jA) [Skotlex]
 //we need it for new cards 15 Feb 2005, to check if the combo cards are insrerted into the CURRENT weapon only
 //to avoid cards exploits
 
-static int SkillStatusChangeTable[MAX_SKILL]; // skill -> status
-static int StatusIconChangeTable[SC_MAX];     // status -> icon
-unsigned long StatusChangeFlagTable[SC_MAX];  // status -> flags
-static int StatusSkillChangeTable[SC_MAX];    // status -> skill
+static sc_type SkillStatusChangeTable[MAX_SKILL]; // skill  -> status
+static int StatusIconChangeTable[SC_MAX];         // status -> icon
+unsigned long StatusChangeFlagTable[SC_MAX];      // status -> flags
+static int StatusSkillChangeTable[SC_MAX];        // status -> skill
 
-int status_skill2sc(int skill)
+sc_type status_skill2sc(int skill)
 {
 	int sk = skill_get_index(skill);
 	if( sk == 0 ) {
 		ShowError("status_skill2sc: Unsupported skill id %d\n", skill);
-		return -1;
+		return SC_NONE;
 	}
 	return SkillStatusChangeTable[sk];
 }
 
-int status_sc2skill(int sc)
+int status_sc2skill(sc_type sc)
 {
 	if( sc < 0 || sc >= SC_MAX ) {
 		ShowError("status_skill2sc: Unsupported status change id %d\n", sc);
@@ -87,7 +87,7 @@ int status_sc2skill(int sc)
 
 #define add_sc(skill,sc) set_sc(skill,sc,SI_BLANK,SCB_NONE)
 
-static void set_sc(int skill, int sc, int icon, unsigned int flag)
+static void set_sc(int skill, sc_type sc, int icon, unsigned int flag)
 {
 	int sk = skill_get_index(skill);
 	if( sk == 0 ) {
@@ -105,7 +105,7 @@ static void set_sc(int skill, int sc, int icon, unsigned int flag)
   		StatusIconChangeTable[sc] = icon;
 	StatusChangeFlagTable[sc] |= flag;
 
-	if( SkillStatusChangeTable[sk] == -1 )
+	if( SkillStatusChangeTable[sk] == SC_NONE )
 		SkillStatusChangeTable[sk] = sc;
 }
 
@@ -115,7 +115,7 @@ void initChangeTables(void)
 	for (i = 0; i < SC_MAX; i++)
 		StatusIconChangeTable[i] = SI_BLANK;
 	for (i = 0; i < MAX_SKILL; i++)
-		SkillStatusChangeTable[i] = -1;
+		SkillStatusChangeTable[i] = SC_NONE;
 
 	memset(StatusSkillChangeTable, 0, sizeof(StatusSkillChangeTable));
 	memset(StatusChangeFlagTable, 0, sizeof(StatusChangeFlagTable));
@@ -407,21 +407,21 @@ void initChangeTables(void)
 	set_sc( GD_REGENERATION      , SC_REGENERATION    , SI_BLANK           , SCB_REGEN );
 
 	// Storing the target job rather than simply SC_SPIRIT simplifies code later on.
-	SkillStatusChangeTable[SL_ALCHEMIST]   = MAPID_ALCHEMIST,
-	SkillStatusChangeTable[SL_MONK]        = MAPID_MONK,
-	SkillStatusChangeTable[SL_STAR]        = MAPID_STAR_GLADIATOR,
-	SkillStatusChangeTable[SL_SAGE]        = MAPID_SAGE,
-	SkillStatusChangeTable[SL_CRUSADER]    = MAPID_CRUSADER,
-	SkillStatusChangeTable[SL_SUPERNOVICE] = MAPID_SUPER_NOVICE,
-	SkillStatusChangeTable[SL_KNIGHT]      = MAPID_KNIGHT,
-	SkillStatusChangeTable[SL_WIZARD]      = MAPID_WIZARD,
-	SkillStatusChangeTable[SL_PRIEST]      = MAPID_PRIEST,
-	SkillStatusChangeTable[SL_BARDDANCER]  = MAPID_BARDDANCER,
-	SkillStatusChangeTable[SL_ROGUE]       = MAPID_ROGUE,
-	SkillStatusChangeTable[SL_ASSASIN]     = MAPID_ASSASSIN,
-	SkillStatusChangeTable[SL_BLACKSMITH]  = MAPID_BLACKSMITH,
-	SkillStatusChangeTable[SL_HUNTER]      = MAPID_HUNTER,
-	SkillStatusChangeTable[SL_SOULLINKER]  = MAPID_SOUL_LINKER,
+	SkillStatusChangeTable[SL_ALCHEMIST]   = (sc_type)MAPID_ALCHEMIST,
+	SkillStatusChangeTable[SL_MONK]        = (sc_type)MAPID_MONK,
+	SkillStatusChangeTable[SL_STAR]        = (sc_type)MAPID_STAR_GLADIATOR,
+	SkillStatusChangeTable[SL_SAGE]        = (sc_type)MAPID_SAGE,
+	SkillStatusChangeTable[SL_CRUSADER]    = (sc_type)MAPID_CRUSADER,
+	SkillStatusChangeTable[SL_SUPERNOVICE] = (sc_type)MAPID_SUPER_NOVICE,
+	SkillStatusChangeTable[SL_KNIGHT]      = (sc_type)MAPID_KNIGHT,
+	SkillStatusChangeTable[SL_WIZARD]      = (sc_type)MAPID_WIZARD,
+	SkillStatusChangeTable[SL_PRIEST]      = (sc_type)MAPID_PRIEST,
+	SkillStatusChangeTable[SL_BARDDANCER]  = (sc_type)MAPID_BARDDANCER,
+	SkillStatusChangeTable[SL_ROGUE]       = (sc_type)MAPID_ROGUE,
+	SkillStatusChangeTable[SL_ASSASIN]     = (sc_type)MAPID_ASSASSIN,
+	SkillStatusChangeTable[SL_BLACKSMITH]  = (sc_type)MAPID_BLACKSMITH,
+	SkillStatusChangeTable[SL_HUNTER]      = (sc_type)MAPID_HUNTER,
+	SkillStatusChangeTable[SL_SOULLINKER]  = (sc_type)MAPID_SOUL_LINKER,
 
 	//Status that don't have a skill associated.
 	StatusIconChangeTable[SC_WEIGHT50] = SI_WEIGHT50;
@@ -1350,7 +1350,7 @@ int status_calc_mob(struct mob_data* md, int first)
 		return 0;
 	}
 	if (!md->base_status)
-		md->base_status = aCalloc(1, sizeof(struct status_data));
+		md->base_status = (struct status_data*)aCalloc(1, sizeof(struct status_data));
 
 	status = md->base_status;
 	memcpy(status, &md->db->status, sizeof(struct status_data));
@@ -4603,7 +4603,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 	sc = status_get_sc(bl);
 	status = status_get_status_data(bl);
 
-	if( type < 0 || type >= SC_MAX )
+	if( type <= SC_NONE || type >= SC_MAX )
 	{
 		ShowError("status_change_start: invalid status change (%d)!\n", type);
 		return 0;
@@ -5581,8 +5581,8 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 			{	//Try to inherit the status from the Crusader [Skotlex]
 			//Ideally, we should calculate the remaining time and use that, but we'll trust that
 			//once the Crusader's status changes, it will reflect on the others. 
-				const int types[] = { SC_AUTOGUARD, SC_DEFENDER, SC_REFLECTSHIELD, SC_ENDURE };
-				int type2;
+				const enum sc_type types[] = { SC_AUTOGUARD, SC_DEFENDER, SC_REFLECTSHIELD, SC_ENDURE };
+				enum sc_type type2;
 				int i = map_flag_gvg(bl->m)?2:3;
 				while (i >= 0) {
 					type2 = types[i];
@@ -6166,7 +6166,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 int status_change_clear(struct block_list* bl, int type)
 {
 	struct status_change* sc;
-	enum sc_type i;
+	int i;
 
 	sc = status_get_sc(bl);
 
@@ -6200,7 +6200,7 @@ int status_change_clear(struct block_list* bl, int type)
 			continue;
 		}
 
-		status_change_end(bl, i, INVALID_TIMER);
+		status_change_end(bl, (sc_type)i, INVALID_TIMER);
 
 		if( type == 1 && sc->data[i] )
 		{	//If for some reason status_change_end decides to still keep the status when quitting. [Skotlex]
@@ -6442,7 +6442,7 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
 		case SC_MARIONETTE2:	/// Marionette target
 			if (sce->val1)
 			{	// check for partner and end their marionette status as well
-				int type2 = (type == SC_MARIONETTE) ? SC_MARIONETTE2 : SC_MARIONETTE;
+				enum sc_type type2 = (type == SC_MARIONETTE) ? SC_MARIONETTE2 : SC_MARIONETTE;
 				struct block_list *pbl = map_id2bl(sce->val1);
 				struct status_change* sc2 = pbl?status_get_sc(pbl):NULL;
 				
@@ -6728,7 +6728,7 @@ int kaahi_heal_timer(int tid, unsigned int tick, int id, int data)
  *------------------------------------------*/
 int status_change_timer(int tid, unsigned int tick, int id, int data)
 {
-	enum sc_type type = data;
+	enum sc_type type = (sc_type)data;
 	struct block_list *bl;
 	struct map_session_data *sd;
 	struct status_data *status;
@@ -7074,7 +7074,7 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
 
 	struct block_list* src = va_arg(ap,struct block_list*);
 	struct status_change_entry* sce = va_arg(ap,struct status_change_entry*);
-	enum sc_type type = va_arg(ap,enum sc_type); 
+	enum sc_type type = (sc_type)va_arg(ap,int); //gcc: enum args get promoted to int
 	unsigned int tick = va_arg(ap,unsigned int);
 
 	if (status_isdead(bl))
@@ -7129,7 +7129,7 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
  *------------------------------------------*/
 int status_change_clear_buffs (struct block_list* bl, int type)
 {
-	enum sc_type i;
+	int i;
 	struct status_change *sc= status_get_sc(bl);
 
 	if (!sc || !sc->count)
@@ -7139,7 +7139,7 @@ int status_change_clear_buffs (struct block_list* bl, int type)
 	for( i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++ )
 	{
 		if(sc->data[i])
-			status_change_end(bl,i,-1);
+			status_change_end(bl,(sc_type)i,-1);
 	}
 
 	for( i = SC_COMMON_MAX+1; i < SC_MAX; i++ )
@@ -7206,7 +7206,7 @@ int status_change_clear_buffs (struct block_list* bl, int type)
 					continue;
 				break;
 		}
-		status_change_end(bl,i,-1);
+		status_change_end(bl,(sc_type)i,-1);
 	}
 	return 0;
 }

+ 6 - 4
src/map/status.h

@@ -18,7 +18,9 @@ extern unsigned long StatusChangeFlagTable[];
 
 
 // Status changes listing. These code are for use by the server. 
-enum sc_type {
+typedef enum sc_type {
+	SC_NONE = -1,
+
 	//First we enumerate common status ailments which are often used around.
 	SC_STONE = 0,
 	SC_COMMON_MIN = 0, // begin
@@ -290,7 +292,7 @@ enum sc_type {
 	SC_SPCOST_RATE,
 	SC_COMMONSC_RESIST,
 	SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
-};
+} sc_type;
 
 //Numerates the Number for the status changes (client-dependent), imported from jA
 enum si_type {
@@ -683,8 +685,8 @@ struct status_change {
 };
 
 // for looking up associated data
-int status_skill2sc(int skill);
-int status_sc2skill(int sc);
+sc_type status_skill2sc(int skill);
+int status_sc2skill(sc_type sc);
 
 int status_damage(struct block_list *src,struct block_list *target,int hp,int sp, int walkdelay, int flag);
 //Define for standard HP damage attacks.

+ 4 - 4
src/map/storage.c

@@ -106,13 +106,13 @@ static void* create_storage(DBKey key, va_list args)
 }
 struct storage *account2storage(int account_id)
 {
-	return idb_ensure(storage_db,account_id,create_storage);
+	return (struct storage*)idb_ensure(storage_db,account_id,create_storage);
 }
 
 // Just to ask storage, without creation
 struct storage *account2storage2(int account_id)
 {
-	return idb_get(storage_db, account_id);
+	return (struct storage*)idb_get(storage_db, account_id);
 }
 
 int storage_delete(int account_id)
@@ -141,7 +141,7 @@ int storage_storageopen(struct map_session_data *sd)
 		return 1;
 	}
 	
-	if((stor = idb_get(storage_db,sd->status.account_id)) == NULL)
+	if((stor = (struct storage*)idb_get(storage_db,sd->status.account_id)) == NULL)
   	{	//Request storage.
 		intif_request_storage(sd->status.account_id);
 		return 2;
@@ -478,7 +478,7 @@ struct guild_storage *guild2storage(int guild_id)
 
 struct guild_storage *guild2storage2(int guild_id)
 {	//For just locating a storage without creating one. [Skotlex]
-	return idb_get(guild_storage_db,guild_id);
+	return (struct guild_storage*)idb_get(guild_storage_db,guild_id);
 }
 
 int guild_storage_delete(int guild_id)	

+ 4 - 8
src/tool/Makefile.in

@@ -2,27 +2,23 @@
 @SET_MAKE@
 
 #####################################################################
-.PHONY : all adduser convert mapcache clean help
+.PHONY : all adduser mapcache clean help
 
-all: adduser convert mapcache
+all: adduser mapcache
 
 adduser:
 	@CC@ -o ../../tools/adduser@EXEEXT@ adduser.c
 
-convert:
-	@CC@ -o ../../tools/convert@EXEEXT@ convert.c
-
 mapcache: obj_mapcache
 	@CC@ -c -o obj_mapcache/grfio.o grfio.c
 	@CC@ -o ../../mapcache@EXEEXT@ mapcache.c obj_mapcache/grfio.o -lz
 
 clean:
-	rm -rf *.o obj_mapcache ../../tools/adduser@EXEEXT@ ../../tools/convert@EXEEXT@ ../../mapcache@EXEEXT@
+	rm -rf *.o obj_mapcache ../../tools/adduser@EXEEXT@ ../../mapcache@EXEEXT@
 
 help:
-	@echo "possible targets are 'adduser' 'convert' 'mapcache' 'all' 'clean' 'help'"
+	@echo "possible targets are 'adduser' 'mapcache' 'all' 'clean' 'help'"
 	@echo "'adduser'   - ???"
-	@echo "'convert'   - ???"
 	@echo "'mapcache'  - mapcache generator"
 	@echo "'all'       - builds all above targets"
 	@echo "'clean'     - cleans builds and objects"

+ 5 - 4
src/tool/adduser.c

@@ -9,19 +9,20 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <ctype.h>
 
 char *account_txt = "../save/account.txt";
 
 //-----------------------------------------------------
 // Function to suppress control characters in a string.
 //-----------------------------------------------------
-int remove_control_chars(unsigned char *str)
+int remove_control_chars(char* str)
 {
 	int i;
 	int change = 0;
 
 	for(i = 0; str[i]; i++) {
-		if (str[i] < 32) {
+		if (iscntrl((unsigned char)(str[i]))) {
 			str[i] = '_';
 			change = 1;
 		}
@@ -64,7 +65,7 @@ int main(int argc, char *argv[])
 			}
 		}
 	}
-	close(FPaccin);
+	fclose(FPaccin);
 	printf("File exists.\n");
 
 	printf("Don't create an account if the login-server is online!!!\n");
@@ -96,7 +97,7 @@ int main(int argc, char *argv[])
 	FPaccout = fopen(account_txt, "r+");
 	fseek(FPaccout, 0, SEEK_END);
 	fprintf(FPaccout, "%i	%s	%s	-	%s	-\r\n", next_id, username, password, sex);
-	close(FPaccout);
+	fclose(FPaccout);
 
 	printf("Account added.\n");
 }

+ 0 - 300
src/tool/convert.c

@@ -1,300 +0,0 @@
-// (c) eAthena Dev Team - Licensed under GNU GPL
-// For more information, see LICENCE in the main folder
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define MAX_INVENTORY 100
-#define MAX_CART 100
-#define MAX_SKILL 350
-#define GLOBAL_REG_NUM 16
-
-struct item {
-	int id;
-	short nameid;
-	short amount;
-	short equip;
-	char identify;
-	char refine;
-	char attribute;
-	short card[4];
-};
-struct point{
-	char map[16];
-	short x,y;
-};
-struct skill {
-	unsigned short id,lv,flag;
-};
-struct global_reg {
-	char str[16];
-	int value;
-};
-
-struct mmo_charstatus {
-	int char_id;
-	int account_id;
-	int base_exp,job_exp,zeny;
-
-	short class;
-	short status_point,skill_point;
-	short hp,max_hp,sp,max_sp;
-	short option,karma,manner;
-	short hair,hair_color,clothes_color;
-	int party_id,guild_id,pet_id;
-
-	short weapon,shield;
-	short head_top,head_mid,head_bottom;
-
-	char name[24];
-	unsigned char base_level,job_level;
-	unsigned char str,agi,vit,int_,dex,luk,slot,sex;
-
-	struct point last_point,save_point,memo_point[3];
-	struct item inventory[MAX_INVENTORY],cart[MAX_CART];
-	struct skill skill[MAX_SKILL];
-	int global_reg_num;
-	struct global_reg global_reg[GLOBAL_REG_NUM];
-};
-
-int mmo_char_tostr(char *str,struct mmo_charstatus *p)
-{
-  int i;
-  sprintf(str,"%d\t%d,%d\t%s\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
-	  "\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d"
-	  "\t%s,%d,%d\t%s,%d,%d",
-	  p->char_id,p->account_id,p->slot,p->name, //
-	  p->class,p->base_level,p->job_level,
-	  p->base_exp,p->job_exp,p->zeny,
-	  p->hp,p->max_hp,p->sp,p->max_sp,
-	  p->str,p->agi,p->vit,p->int_,p->dex,p->luk,
-	  p->status_point,p->skill_point,
-	  p->option,p->karma,p->manner,	//
-	  p->party_id,p->guild_id,p->pet_id,
-	  p->hair,p->hair_color,p->clothes_color,
-	  p->weapon,p->shield,p->head_top,p->head_mid,p->head_bottom,
-	  p->last_point.map,p->last_point.x,p->last_point.y, //
-	  p->save_point.map,p->save_point.x,p->save_point.y
-	  );
-  strcat(str,"\t");
-  for(i=0;i<3;i++)
-    if(p->memo_point[i].map[0]){
-      sprintf(str+strlen(str),"%s,%d,%d",p->memo_point[i].map,p->memo_point[i].x,p->memo_point[i].y);
-    }      
-  strcat(str,"\t");
-  for(i=0;i<MAX_INVENTORY;i++)
-    if(p->inventory[i].nameid){
-      sprintf(str+strlen(str),"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d ",
-	      p->inventory[i].id,p->inventory[i].nameid,p->inventory[i].amount,p->inventory[i].equip,
-	      p->inventory[i].identify,p->inventory[i].refine,p->inventory[i].attribute,
-	      p->inventory[i].card[0],p->inventory[i].card[1],p->inventory[i].card[2],p->inventory[i].card[3]);
-    }      
-  strcat(str,"\t");
-  for(i=0;i<MAX_CART;i++)
-    if(p->cart[i].nameid){
-      sprintf(str+strlen(str),"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d ",
-	      p->cart[i].id,p->cart[i].nameid,p->cart[i].amount,p->cart[i].equip,
-	      p->cart[i].identify,p->cart[i].refine,p->cart[i].attribute,
-	      p->cart[i].card[0],p->cart[i].card[1],p->cart[i].card[2],p->cart[i].card[3]);
-    }      
-  strcat(str,"\t");
-  for(i=0;i<MAX_SKILL;i++)
-    if(p->skill[i].id){
-      sprintf(str+strlen(str),"%d,%d ",p->skill[i].id,p->skill[i].lv);
-    }      
-  strcat(str,"\t");
-  for(i=0;i<p->global_reg_num;i++)
-    sprintf(str+strlen(str),"%s,%d ",p->global_reg[i].str,p->global_reg[i].value);
-  strcat(str,"\t");
-  return 0;
-}
-
-int mmo_char_fromstr(char *str,struct mmo_charstatus *p)
-{
-  int tmp_int[256];
-  int set,next,len,i;
-
-  set=sscanf(str,"%d\t%d,%d\t%[^\t]\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
-	   "\t%d,%d,%d\t%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d"
-	   "\t%[^,],%d,%d\t%[^,],%d,%d%n",
-	   &tmp_int[0],&tmp_int[1],&tmp_int[2],p->name, //
-	   &tmp_int[3],&tmp_int[4],&tmp_int[5],
-	   &tmp_int[6],&tmp_int[7],&tmp_int[8],
-	   &tmp_int[9],&tmp_int[10],&tmp_int[11],&tmp_int[12],
-	   &tmp_int[13],&tmp_int[14],&tmp_int[15],&tmp_int[16],&tmp_int[17],&tmp_int[18],
-	   &tmp_int[19],&tmp_int[20],
-	   &tmp_int[21],&tmp_int[22],&tmp_int[23], //
-	   &tmp_int[24],&tmp_int[25],
-	   &tmp_int[26],&tmp_int[27],&tmp_int[28],
-	   &tmp_int[29],&tmp_int[30],&tmp_int[31],&tmp_int[32],&tmp_int[33],
-	   p->last_point.map,&tmp_int[34],&tmp_int[35], //
-	   p->save_point.map,&tmp_int[36],&tmp_int[37],&next
-	 );
-  p->char_id=tmp_int[0];
-  p->account_id=tmp_int[1];
-  p->slot=tmp_int[2];
-  p->class=tmp_int[3];
-  p->base_level=tmp_int[4];
-  p->job_level=tmp_int[5];
-  p->base_exp=tmp_int[6];
-  p->job_exp=tmp_int[7];
-  p->zeny=tmp_int[8];
-  p->hp=tmp_int[9];
-  p->max_hp=tmp_int[10];
-  p->sp=tmp_int[11];
-  p->max_sp=tmp_int[12];
-  p->str=tmp_int[13];
-  p->agi=tmp_int[14];
-  p->vit=tmp_int[15];
-  p->int_=tmp_int[16];
-  p->dex=tmp_int[17];
-  p->luk=tmp_int[18];
-  p->status_point=tmp_int[19];
-  p->skill_point=tmp_int[20];
-  p->option=tmp_int[21];
-  p->karma=tmp_int[22];
-  p->manner=tmp_int[23];
-  p->party_id=tmp_int[24];
-  p->guild_id=tmp_int[25];
-  p->pet_id=0;
-  p->hair=tmp_int[26];
-  p->hair_color=tmp_int[27];
-  p->clothes_color=tmp_int[28];
-  p->weapon=tmp_int[29];
-  p->shield=tmp_int[30];
-  p->head_top=tmp_int[31];
-  p->head_mid=tmp_int[32];
-  p->head_bottom=tmp_int[33];
-  p->last_point.x=tmp_int[34];
-  p->last_point.y=tmp_int[35];
-  p->save_point.x=tmp_int[36];
-  p->save_point.y=tmp_int[37];
-  if(set!=41)
-    return 0;
-  if(str[next]=='\n' || str[next]=='\r')
-    return 1;	// 新規データ
-  next++;
-  for(i=0;str[next] && str[next]!='\t';i++){
-    set=sscanf(str+next,"%[^,],%d,%d%n",p->memo_point[i].map,&tmp_int[0],&tmp_int[1],&len);
-    if(set!=3) 
-      return 0;
-    p->memo_point[i].x=tmp_int[0];
-    p->memo_point[i].y=tmp_int[1];
-    next+=len;
-    if(str[next]==' ')
-      next++;
-  }
-  next++;
-  for(i=0;str[next] && str[next]!='\t';i++){
-    set=sscanf(str+next,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d%n",
-	       &tmp_int[0],&tmp_int[1],&tmp_int[2],&tmp_int[3],
-	       &tmp_int[4],&tmp_int[5],&tmp_int[6],
-	       &tmp_int[7],&tmp_int[8],&tmp_int[9],&tmp_int[10],&len);
-    if(set!=11)
-      return 0;
-    p->inventory[i].id=tmp_int[0];
-    p->inventory[i].nameid=tmp_int[1];
-    p->inventory[i].amount=tmp_int[2];
-    p->inventory[i].equip=tmp_int[3];
-    p->inventory[i].identify=tmp_int[4];
-    p->inventory[i].refine=tmp_int[5];
-    p->inventory[i].attribute=tmp_int[6];
-    p->inventory[i].card[0]=tmp_int[7];
-    p->inventory[i].card[1]=tmp_int[8];
-    p->inventory[i].card[2]=tmp_int[9];
-    p->inventory[i].card[3]=tmp_int[10];
-    next+=len;
-    if(str[next]==' ')
-      next++;
-  }
-  next++;
-  for(i=0;str[next] && str[next]!='\t';i++){
-    set=sscanf(str+next,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d%n",
-	       &tmp_int[0],&tmp_int[1],&tmp_int[2],&tmp_int[3],
-	       &tmp_int[4],&tmp_int[5],&tmp_int[6],
-	       &tmp_int[7],&tmp_int[8],&tmp_int[9],&tmp_int[10],&len);
-    if(set!=11)
-      return 0;
-    p->cart[i].id=tmp_int[0];
-    p->cart[i].nameid=tmp_int[1];
-    p->cart[i].amount=tmp_int[2];
-    p->cart[i].equip=tmp_int[3];
-    p->cart[i].identify=tmp_int[4];
-    p->cart[i].refine=tmp_int[5];
-    p->cart[i].attribute=tmp_int[6];
-    p->cart[i].card[0]=tmp_int[7];
-    p->cart[i].card[1]=tmp_int[8];
-    p->cart[i].card[2]=tmp_int[9];
-    p->cart[i].card[3]=tmp_int[10];
-    next+=len;
-    if(str[next]==' ')
-      next++;
-  }
-  next++;
-  for(i=0;str[next] && str[next]!='\t';i++){
-    set=sscanf(str+next,"%d,%d%n",
-	       &tmp_int[0],&tmp_int[1],&len);
-    if(set!=2)
-      return 0;
-    p->skill[tmp_int[0]].id=tmp_int[0];
-    p->skill[tmp_int[0]].lv=tmp_int[1];
-    next+=len;
-    if(str[next]==' ')
-      next++;
-  }
-  next++;
-  for(i=0;str[next] && str[next]!='\t' && str[next]!='\n' && str[next]!='\r';i++){ //global_reg実装以前のathena.txt互換のため一応'\n'チェック
-    set=sscanf(str+next,"%[^,],%d%n",
-	       p->global_reg[i].str,&p->global_reg[i].value,&len);
-    if(set!=2)
-      return 0;
-    next+=len;
-    if(str[next]==' ')
-      next++;
-  }
-  p->global_reg_num=i;
-  return 1;
-}
-
-int mmo_char_convert(char *fname1,char *fname2)
-{
-  char line[65536];
-  int ret;
-	struct mmo_charstatus char_dat;
-  FILE *ifp,*ofp;
-
-	ifp=fopen(fname1,"r");
-	ofp=fopen(fname2,"w");
-  if(ifp==NULL) {
-  	printf("file not found %s\n",fname1);
-    return 0;
-  }
-  if(ofp==NULL) {
-  	printf("file open error %s\n",fname2);
-    return 0;
-  }
-  while(fgets(line, sizeof(line), ifp))
-  {
-    memset(&char_dat,0,sizeof(struct mmo_charstatus));
-    ret=mmo_char_fromstr(line,&char_dat);
-    if(ret){
-	    mmo_char_tostr(line,&char_dat);
-  	  fprintf(ofp,"%s\n",line);
-    }
-  }
-  fclose(ifp);
-  fclose(ofp);
-  return 0;
-}
-
-int main(int argc,char *argv[])
-{
-	if(argc < 3) {
-		printf("Usage: convert <input filename> <output filename>\n");
-		exit(EXIT_SUCCESS);
-	}
-	mmo_char_convert(argv[1],argv[2]);
-
-	return 0;
-}

+ 3 - 6
src/txt-converter/login-converter.c

@@ -34,11 +34,8 @@ char db_server_logindb[32] = "ragnarok";
 
 int isGM(int account_id)
 {
-	struct gm_account *p;
-	p = idb_get(gm_account_db,account_id);
-	if( p == NULL)
-		return 0;
-	return p->level;
+	struct gm_account* p = (struct gm_account*)idb_get(gm_account_db,account_id);
+	return( p != NULL ) ? p->level : 0;
 }
 
 int read_gm_account()
@@ -74,7 +71,7 @@ int read_gm_account()
 		else {
 			if(p->level > 99)
 				p->level = 99;
-			p = idb_put(gm_account_db,p->account_id,p);
+			p = (struct gm_account*)idb_put(gm_account_db,p->account_id,p);
 			if( p )
 				aFree(p);// old entry replaced
 			gm_counter++;

+ 4 - 5
vcproj-9/char-server_sql.vcproj

@@ -41,6 +41,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4800"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\src\common;..\src\zlib;..\src\mysql"
 				PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION"
@@ -53,9 +54,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -129,6 +129,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4800"
 				Optimization="2"
 				InlineFunctionExpansion="2"
 				EnableIntrinsicFunctions="true"
@@ -143,9 +144,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -169,7 +169,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"

+ 4 - 5
vcproj-9/char-server_txt.vcproj

@@ -41,6 +41,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4800"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\src\common;..\src\zlib"
 				PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;TXT_ONLY;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION"
@@ -53,9 +54,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -128,6 +128,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4800"
 				Optimization="2"
 				InlineFunctionExpansion="2"
 				EnableIntrinsicFunctions="true"
@@ -142,9 +143,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -167,7 +167,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"

+ 2 - 5
vcproj-9/ladmin.vcproj

@@ -52,9 +52,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -142,9 +141,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -167,7 +165,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"

+ 4 - 5
vcproj-9/login-server_sql.vcproj

@@ -41,6 +41,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4800"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\src\common;..\src\zlib;..\src\mysql"
 				PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION"
@@ -53,9 +54,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -129,6 +129,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4800"
 				Optimization="2"
 				InlineFunctionExpansion="2"
 				EnableIntrinsicFunctions="true"
@@ -145,9 +146,8 @@
 				PrecompiledHeaderThrough=""
 				PrecompiledHeaderFile=""
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -171,7 +171,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"

+ 4 - 6
vcproj-9/login-server_txt.vcproj

@@ -40,7 +40,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalOptions="/wd4100"
+				AdditionalOptions="/wd4100&#x0D;&#x0A;/wd4800"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\src\common;..\src\zlib"
 				PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;TXT_ONLY;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION"
@@ -53,9 +53,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -128,6 +127,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4800"
 				Optimization="2"
 				InlineFunctionExpansion="2"
 				EnableIntrinsicFunctions="true"
@@ -142,9 +142,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -167,7 +166,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"

+ 4 - 7
vcproj-9/map-server_sql.vcproj

@@ -40,7 +40,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalOptions="/wd4018&#x0D;&#x0A;/wd4100"
+				AdditionalOptions="/wd4018&#x0D;&#x0A;/wd4100&#x0D;&#x0A;/wd4800"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\src\common;..\src\zlib;..\src\mysql"
 				PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;PCRE_SUPPORT;MAPREGSQL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION"
@@ -53,9 +53,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -129,7 +128,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalOptions="/wd4018&#x0D;&#x0A;/wd4100"
+				AdditionalOptions="/wd4018&#x0D;&#x0A;/wd4100&#x0D;&#x0A;/wd4800"
 				Optimization="2"
 				InlineFunctionExpansion="2"
 				EnableIntrinsicFunctions="true"
@@ -144,9 +143,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -170,7 +168,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"

+ 4 - 7
vcproj-9/map-server_txt.vcproj

@@ -40,7 +40,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalOptions="/wd4018&#x0D;&#x0A;/wd4100"
+				AdditionalOptions="/wd4018&#x0D;&#x0A;/wd4100&#x0D;&#x0A;/wd4800"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\src\common;..\src\zlib"
 				PreprocessorDefinitions="WIN32;_WIN32;__WIN32;_DEBUG;PCRE_SUPPORT;TXT_ONLY;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;FD_SETSIZE=4096;DB_MANUAL_CAST_TO_UNION"
@@ -53,9 +53,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -128,7 +127,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalOptions="/wd4018&#x0D;&#x0A;/wd4100"
+				AdditionalOptions="/wd4018&#x0D;&#x0A;/wd4100&#x0D;&#x0A;/wd4800"
 				Optimization="2"
 				InlineFunctionExpansion="2"
 				EnableIntrinsicFunctions="true"
@@ -144,9 +143,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -169,7 +167,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"

+ 2 - 5
vcproj-9/mapcache.vcproj

@@ -52,9 +52,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -142,9 +141,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -167,7 +165,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"

+ 2 - 5
vcproj-9/txt-converter-char.vcproj

@@ -53,9 +53,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -145,9 +144,8 @@
 				PrecompiledHeaderThrough=""
 				PrecompiledHeaderFile=""
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -171,7 +169,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"

+ 2 - 5
vcproj-9/txt-converter-login.vcproj

@@ -53,9 +53,8 @@
 				DefaultCharIsUnsigned="false"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -145,9 +144,8 @@
 				PrecompiledHeaderThrough=""
 				PrecompiledHeaderFile=""
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
-				CompileAs="1"
+				CompileAs="2"
 			/>
 			<Tool
 				Name="VCManagedResourceCompilerTool"
@@ -171,7 +169,6 @@
 				SubSystem="1"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
 				LinkTimeCodeGeneration="1"
 				RandomizedBaseAddress="1"
 				DataExecutionPrevention="0"