Procházet zdrojové kódy

* Added code to clear the Illusionary Shadow effect (followup to r12293)
* Added some trim() calls into mapflag code (followup to r12238)
* Fixed mvp exp reward packet not working right for big values
* Added dbghelpplug plugin entry to the plugins configuration file
* Added conf setting for auction table name (see r12287)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12300 54d463be-8e91-2dee-dedb-b68131a5f0ec

ultramage před 17 roky
rodič
revize
0088adcbbf

+ 5 - 0
Changelog-Trunk.txt

@@ -4,6 +4,11 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2008/03/05
+	* Added code to clear the Illusionary Shadow effect (followup to r12293)
+	* Added some trim() calls into mapflag code (followup to r12238)
+	* Fixed mvp exp reward packet not working right for big values
+	* Added dbghelpplug plugin entry to the plugins configuration file
+	* Added conf setting for auction table name (see r12287) [ultramage]
 	* Implemented Firepillar's 'target cannot move for 0.2 sec x hit' property.
 	* Corrected Earthquake so it behaves as explained in the development topics.
 	* Added a missing line to actually unequip unallowed compounded cards when

+ 3 - 4
conf/inter_athena.conf

@@ -108,7 +108,7 @@ login_db_level: level
 login_db: login
 loginlog_db: loginlog
 
-// Character Database Tables
+// Char Database Tables
 char_db: char
 hotkey_db: hotkey
 scdata_db: sc_data
@@ -131,6 +131,8 @@ guild_storage_db: guild_storage
 party_db: party
 pet_db: pet
 friend_db: friends
+mail_db: mail
+auction_db: auction
 
 // Map Database Tables
 item_db_db: item_db
@@ -138,9 +140,6 @@ item_db2_db: item_db2
 mob_db_db: mob_db
 mob_db2_db: mob_db2
 
-// Mail Database Table
-mail_db: mail
-
 //Use SQL item_db and mob_db for the map server
 use_sql_db: no
 

+ 3 - 0
conf/plugin_athena.conf

@@ -22,6 +22,9 @@ plugin: upnp
 // Crash reporting for Windows
 //plugin: exchndl
 
+// Alternative, improved crash reporting for Windows
+//plugin: dbghelpplug
+
 // Process id logging
 //plugin: pid
 

+ 2 - 2
src/map/atcommand.c

@@ -8540,14 +8540,14 @@ static AtCommandInfo* get_atcommandinfo_byname(const char* name)
 	int i;
 	if( *name == atcommand_symbol ) name++; // for backwards compatibility
 	ARR_FIND( 0, ARRAYLENGTH(atcommand_info), i, strcmpi(atcommand_info[i].command, name) == 0 );
-	return ( i != ARRAYLENGTH(atcommand_info) ) ? &atcommand_info[i] : NULL;
+	return ( i < ARRAYLENGTH(atcommand_info) ) ? &atcommand_info[i] : NULL;
 }
 
 static AtCommandInfo* get_atcommandinfo_byfunc(const AtCommandFunc func)
 {
 	int i;
 	ARR_FIND( 0, ARRAYLENGTH(atcommand_info), i, atcommand_info[i].func == func );
-	return ( i != ARRAYLENGTH(atcommand_info) ) ? &atcommand_info[i] : NULL;
+	return ( i < ARRAYLENGTH(atcommand_info) ) ? &atcommand_info[i] : NULL;
 }
 
 

+ 2 - 2
src/map/clif.c

@@ -6009,7 +6009,7 @@ int clif_mvp_item(struct map_session_data *sd,int nameid)
 /*==========================================
  * MVPŒoŒ±’l�Š“¾
  *------------------------------------------*/
-int clif_mvp_exp(struct map_session_data *sd,unsigned long exp)
+int clif_mvp_exp(struct map_session_data *sd, unsigned int exp)
 {
 	int fd;
 
@@ -6018,7 +6018,7 @@ int clif_mvp_exp(struct map_session_data *sd,unsigned long exp)
 	fd=sd->fd;
 	WFIFOHEAD(fd,packet_len(0x10b));
 	WFIFOW(fd,0)=0x10b;
-	WFIFOL(fd,2)=exp;
+	WFIFOL(fd,2)=cap_value(exp,0,INT_MAX);
 	WFIFOSET(fd,packet_len(0x10b));
 	return 0;
 }

+ 1 - 1
src/map/clif.h

@@ -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 long exp);
+int clif_mvp_exp(struct map_session_data *sd, unsigned int exp);
 void clif_changed_dir(struct block_list *bl, int area);
 
 // vending

+ 8 - 6
src/map/npc.c

@@ -1631,10 +1631,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const
 	char *p;
 	int x, y, dir, m, i;
 	struct npc_data *nd;
-
-	enum npc_subtype type = SHOP;
-	if( !strcasecmp(w2,"cashshop") )
-		type = CASHSHOP;
+	enum npc_subtype type;
 
 	if( strcmp(w1,"-") == 0 )
 	{// 'floating' shop?
@@ -1642,7 +1639,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const
 		m = -1;
 	}
 	else
-	{
+	{// w1=<map name>,<x>,<y>,<facing>
 		char mapname[32];
 		if( sscanf(w1, "%31[^,],%d,%d,%d", mapname, &x, &y, &dir) != 4
 		||	strchr(w4, ',') == NULL )
@@ -1654,6 +1651,11 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const
 		m = map_mapname2mapid(mapname);
 	}
 
+	if( !strcasecmp(w2,"cashshop") )
+		type = CASHSHOP;
+	else
+		type = SHOP;
+
 	p = strchr(w4,',');
 	for( i = 0; i < ARRAYLENGTH(items) && p; ++i )
 	{
@@ -2720,7 +2722,7 @@ void npc_parsesrcfile(const char* filepath)
 		}
 		else if( strcmpi(w2,"mapflag") == 0 && count >= 3 )
 		{
-			p = npc_parse_mapflag(w1, w2, w3, w4, p, buffer, filepath);
+			p = npc_parse_mapflag(w1, w2, trim(w3), trim(w4), p, buffer, filepath);
 		}
 		else
 		{

+ 14 - 0
src/map/status.c

@@ -6060,6 +6060,11 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 			sc->opt3 |= 0x10000;
 			opt_flag = 0;
 			break;
+//	TODO: unknown option (looks like the aura of biolab mobs)
+//		case ???:
+//			sc->opt3 |= 0x20000;
+//			opt_flag = 0;
+//			break;
 		//OPTION
 		case SC_HIDING:
 			sc->option |= OPTION_HIDE;
@@ -6637,6 +6642,10 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
 		sc->opt3 &= ~0x2000;
 		opt_flag = 0;
 		break;
+	case SC_BUNSINJYUTSU:
+		sc->opt3 &= ~0x4000;
+		opt_flag = 0;
+		break;
 	case SC_SPIRIT:
 		sc->opt3 &= ~0x8000;
 		opt_flag = 0;
@@ -6645,6 +6654,11 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
 		sc->opt3 &= ~0x10000;
 		opt_flag = 0;
 		break;
+//	TODO:
+//	case ???:
+//		sc->opt3 &= ~0x20000;
+//		opt_flag = 0;
+//		break;
 	default:
 		opt_flag = 0;
 	}