Quellcode durchsuchen

- Fixed a memory overwrite crash on pc_readdb, thanks to foobar.
- Fixed only the first TK stance triggering when you have multiple of them active.
- Default of skill_attack_enable changed to yes.
- Fixed a compiler error in some ninja skill that only triggers on windows or c++ compilers.


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

skotlex vor 19 Jahren
Ursprung
Commit
01cf48cd39
5 geänderte Dateien mit 21 neuen und 13 gelöschten Zeilen
  1. 6 0
      Changelog-Trunk.txt
  2. 1 1
      conf-tmpl/battle/skill.conf
  3. 1 1
      src/map/pc.c
  4. 12 9
      src/map/skill.c
  5. 1 2
      src/map/status.c

+ 6 - 0
Changelog-Trunk.txt

@@ -4,6 +4,12 @@ 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.  EVERYTHING ELSE
 GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
 
+2006/03/10
+	* Fixed a memory overwrite crash on pc_readdb, thanks to foobar for the
+	  fix. [Skotlex]
+	* Fixed only the first TK stance triggering when you have multiple of them
+	  active. [Skotlex]
+	* Default of skill_attack_enable changed to yes. [Skotlex]
 2006/03/09
 	* Fixed the dancer/bard soul-linked skills toggling on/off with each call
 	  to pc_calc_status. [Skotlex]

+ 1 - 1
conf-tmpl/battle/skill.conf

@@ -45,7 +45,7 @@ min_skill_delay_limit: 100
 castrate_dex_scale: 150
 
 // Will normal attacks be able to ignore the delay after skills? (Note 1)
-skill_delay_attack_enable: no 
+skill_delay_attack_enable: yes
 
 // Range added to player skills after their cast time finishes.
 // Decides how far away the target can walk away after the skill began casting before the skill fails.

+ 1 - 1
src/map/pc.c

@@ -8026,7 +8026,7 @@ int pc_readdb(void)
 		int jobs[MAX_PC_CLASS], job_count, job;
 		int type;
 		unsigned int max;
-		char *split[3];
+		char *split[4];
 		if(line[0]=='/' && line[1]=='/')
 			continue;
 		if (pc_split_str(line,split,4) < 4)

+ 12 - 9
src/map/skill.c

@@ -921,18 +921,21 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 					clif_skill_fail(sd,skillid,0,0);
 			}
 			// Chance to trigger Taekwon kicks [Dralnu]
-			if(sd->sc.count) {
-				if(sd->sc.data[SC_READYSTORM].timer != -1)
+			if(sd->sc.count && sd->sc.data[SC_COMBO].timer == -1) {
+				if(sd->sc.data[SC_READYSTORM].timer != -1 &&
 					sc_start4(src,SC_COMBO, 15, TK_STORMKICK,0,0,0,
-						(2000 - 4 * status_get_agi(src) - 2 *  status_get_dex(src)));
-				else if(sd->sc.data[SC_READYDOWN].timer != -1)
+						(2000 - 4 * status_get_agi(src) - 2 *  status_get_dex(src))))
+					; //Stance triggered
+				else if(sd->sc.data[SC_READYDOWN].timer != -1 &&
 					sc_start4(src,SC_COMBO, 15, TK_DOWNKICK,0,0,0,
-						(2000 - 4 * status_get_agi(src) - 2 *  status_get_dex(src)));
-				else if(sd->sc.data[SC_READYTURN].timer != -1 && sd->sc.data[SC_COMBO].timer == -1)
+						(2000 - 4 * status_get_agi(src) - 2 *  status_get_dex(src))))
+					; //Stance triggered
+				else if(sd->sc.data[SC_READYTURN].timer != -1 && 
 					sc_start4(src,SC_COMBO, 15, TK_TURNKICK,0,0,0,
-						(2000 - 4 * status_get_agi(src) - 2 *  status_get_dex(src)));
-				else if(sd->sc.data[SC_READYCOUNTER].timer != -1 && sd->sc.data[SC_COMBO].timer == -1) //additional chance from SG_FRIEND [Komurka]
-				{	
+						(2000 - 4 * status_get_agi(src) - 2 *  status_get_dex(src))))
+					; //Stance triggered
+				else if(sd->sc.data[SC_READYCOUNTER].timer != -1)
+				{	//additional chance from SG_FRIEND [Komurka]
 					rate = 20;
 					if (sd->sc.data[SC_SKILLRATE_UP].timer != -1 && sd->sc.data[SC_SKILLRATE_UP].val1 == TK_COUNTER) {
 						rate += rate*sd->sc.data[SC_SKILLRATE_UP].val2/100;

+ 1 - 2
src/map/status.c

@@ -1721,8 +1721,7 @@ int status_calc_agi(struct block_list *bl, int agi)
 			agi -= 2 + sc->data[SC_DECREASEAGI].val1;
 		if(sc->data[SC_QUAGMIRE].timer!=-1)
 			agi -= sc->data[SC_QUAGMIRE].val1*(bl->type==BL_PC?5:10);
-		int class = status_get_class(bl);
-		if(sc->data[SC_SUITON].timer!=-1 || class != JOB_NINJA)
+		if(sc->data[SC_SUITON].timer!=-1 || status_get_class(bl) != JOB_NINJA)
 			agi -= (((sc->data[SC_SUITON].val1 - 1) / 3) + 1) * 3;
 	}