Bläddra i källkod

- Fixed signed/unsigned comparison issues in the char txt/sql server.
- Fixed the cooking success chances. Thanks to Ishizu Chan.


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

skotlex 19 år sedan
förälder
incheckning
deba53730f
8 ändrade filer med 19 tillägg och 15 borttagningar
  1. 3 0
      Changelog-Trunk.txt
  2. 4 2
      src/char/int_party.c
  3. 2 4
      src/char/inter.c
  4. 1 1
      src/char/inter.h
  5. 4 2
      src/char_sql/int_party.c
  6. 2 3
      src/char_sql/inter.c
  7. 1 1
      src/char_sql/inter.h
  8. 2 2
      src/map/skill.c

+ 3 - 0
Changelog-Trunk.txt

@@ -4,6 +4,9 @@ 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.
 
 2006/07/07
+	* Fixed signed/unsigned comparison issues in the char txt/sql server.
+	  [Skotlex]
+	* Fixed the cooking success chances. Thanks to Ishizu Chan. [Skotlex]
 	* Added a temporary band-aid to prevent executing the script of non-arrows
 	  when they are equipped on the arrow-slot (until the actual cause of why
 	  pc_unequipitem is not working correctly is discovered/fixed) [Skotlex]

+ 4 - 2
src/char/int_party.c

@@ -35,7 +35,8 @@ int mapif_party_optionchanged(int fd,struct party *p, int account_id, int flag);
 
 //Updates party's level range and unsets even share if broken.
 static int int_party_check_lv(struct party_data *p) {
-	int i,lv;
+	int i;
+	unsigned int lv;
 	p->min_lv = UINT_MAX;
 	p->max_lv = 0;
 	for(i=0;i<MAX_PARTY;i++){
@@ -58,7 +59,8 @@ static int int_party_check_lv(struct party_data *p) {
 //Calculates the state of a party.
 static void int_party_calc_state(struct party_data *p)
 {
-	int i, lv;
+	int i;
+	unsigned int lv;
 	p->min_lv = UINT_MAX;
 	p->max_lv = 0;
 	p->party.count =

+ 2 - 4
src/char/inter.c

@@ -36,7 +36,7 @@ struct accreg {
 	struct global_reg reg[ACCOUNT_REG_NUM];
 };
 
-int party_share_level = 10;
+unsigned int party_share_level = 10;
 int kick_on_disconnect = 1;
 
 // ‘—�MƒpƒPƒbƒg’·ƒŠƒXƒg
@@ -209,9 +209,7 @@ int inter_config_read(const char *cfgName) {
 		} else if (strcmpi(w1, "kick_on_disconnect") == 0) {
 			kick_on_disconnect = atoi(w2);
 		} else if (strcmpi(w1, "party_share_level") == 0) {
-			party_share_level = atoi(w2);
-			if (party_share_level < 0)
-				party_share_level = 0;
+			party_share_level = (unsigned int)atof(w2);
 		} else if (strcmpi(w1, "inter_log_filename") == 0) {
 			strncpy(inter_log_filename, w2, sizeof(inter_log_filename));
 		} else if(strcmpi(w1,"log_inter")==0) {

+ 1 - 1
src/char/inter.h

@@ -18,7 +18,7 @@ int inter_log(char *fmt,...);
 
 #define inter_cfgName "conf/inter_athena.conf"
 
-extern int party_share_level;
+extern unsigned int party_share_level;
 extern int kick_on_disconnect;
 extern char inter_log_filename[1024];
 extern int log_inter;

+ 4 - 2
src/char_sql/int_party.c

@@ -56,7 +56,8 @@ int mapif_party_optionchanged(int fd,struct party *p, int account_id, int flag);
 	
 //Updates party's level range and unsets even share if broken.
 static int int_party_check_lv(struct party_data *p) {
-	int i,lv;
+	int i;
+	unsigned int lv;
 	p->min_lv = UINT_MAX;
 	p->max_lv = 0;
 	for(i=0;i<MAX_PARTY;i++){
@@ -78,7 +79,8 @@ static int int_party_check_lv(struct party_data *p) {
 //Calculates the state of a party.
 static void int_party_calc_state(struct party_data *p)
 {
-	int i, lv;
+	int i;
+	unsigned int lv;
 	p->min_lv = UINT_MAX;
 	p->max_lv = 0;
 	p->party.count =

+ 2 - 3
src/char_sql/inter.c

@@ -29,7 +29,7 @@ struct accreg {
 static struct accreg *accreg_pt;
 
 
-int party_share_level = 10;
+unsigned int party_share_level = 10;
 int kick_on_disconnect = 1;
 MYSQL mysql_handle;
 MYSQL_RES* 	sql_res ;
@@ -260,8 +260,7 @@ int inter_config_read(const char *cfgName) {
 			kick_on_disconnect=atoi(w2);
 		}
 		else if(strcmpi(w1,"party_share_level")==0){
-			party_share_level=atoi(w2);
-			if(party_share_level < 0) party_share_level = 0;
+			party_share_level=(unsigned int)atof(w2);
 		}
 		else if(strcmpi(w1,"log_inter")==0){
 			log_inter = atoi(w2);

+ 1 - 1
src/char_sql/inter.h

@@ -18,7 +18,7 @@ int inter_log(char *fmt,...);
 
 #define inter_cfgName "conf/inter_athena.conf"
 
-extern int party_share_level;
+extern unsigned int party_share_level;
 extern int kick_on_disconnect; //For deciding whether characters are kicked or not on reconnections. [Skotlex]
 extern char inter_log_filename[1024];
 

+ 2 - 2
src/map/skill.c

@@ -10085,8 +10085,8 @@ int skill_produce_mix (struct map_session_data *sd, int skill_id, int nameid, in
 					if (sd->menuskill_lv >= 15) //Legendary Cooking Set.
 						make_per = 10000; //100% Success
 					else
-						make_per = 12*(sd->menuskill_lv-10) //12% chance per set level.
-							+ 700 - 70*(skill_produce_db[idx].itemlv-10); //70% - 7% per dish level
+						make_per = 120*(sd->menuskill_lv-10) //12% chance per set level.
+							+ 7000 - 700*(skill_produce_db[idx].itemlv-10); //70% - 7% per dish level
 					break;
 				}
 				make_per = 5000;