Преглед на файлове

"castnodex&~1"
aka, testing for castnodex having any bit in not 1 set instead of not having bit 1 set.

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

blackhole89 преди 19 години
родител
ревизия
cc7144bde5
променени са 2 файла, в които са добавени 6 реда и са изтрити 5 реда
  1. 1 0
      Changelog-Trunk.txt
  2. 5 5
      src/map/skill.c

+ 1 - 0
Changelog-Trunk.txt

@@ -5,6 +5,7 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.  EV
 GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
 
 2006/03/23
+	* Fixed DEX-based casting time and delay reduction. [blackhole89]
 	* Modified the function pc_percent_heal to prevent overflow problems. [Skotlex]
 	* Changed the second entry in the water_height.txt listing to specify
 	  directly the .rsw file (instead of .gat). [Skotlex]

+ 5 - 5
src/map/skill.c

@@ -8234,7 +8234,7 @@ int skill_castfix( struct block_list *bl, int skill_id, int skill_lv, int time)
 		nullpo_retr(0, sd);
 
 		// calculate base cast time (reduced by dex)
-		if (castnodex&~1) {
+		if (!(castnodex&1)) {			// castnodex&~1? wtf. [blackhole89]
 			int scale = battle_config.castrate_dex_scale - status_get_dex(bl);
 			if (scale > 0)	// not instant cast
 				time = time * scale / battle_config.castrate_dex_scale;
@@ -8249,7 +8249,7 @@ int skill_castfix( struct block_list *bl, int skill_id, int skill_lv, int time)
 		if (sd->castrate != 100)
 			time -= time * (100 - sd->castrate) / 100;
 	} else if (bl->type == BL_PET) { //Skotlex: Simple scaling
-		if (castnodex&~1) {
+		if (!(castnodex&1)) {
 			int scale = battle_config.castrate_dex_scale - status_get_dex(bl);
 			if (scale > 0)	// not instant cast
 				time = time * scale / battle_config.castrate_dex_scale;
@@ -8259,7 +8259,7 @@ int skill_castfix( struct block_list *bl, int skill_id, int skill_lv, int time)
 			time = time * battle_config.cast_rate / 100;
 	}
 
-	if (castnodex&~2)
+	if (!(castnodex&2))
   	{	// calculate cast time reduced by skill bonuses
 		sc = status_get_sc(bl);
 		/* ƒTƒtƒ‰ƒMƒEƒ€ */
@@ -8300,7 +8300,7 @@ int skill_delayfix( struct block_list *bl, int skill_id, int skill_lv, int time
 		} else if (time < 0)
 			time = -time + status_get_amotion(bl);	// if set to <0, the attack motion is added.
 
-		if (battle_config.delay_dependon_dex && delaynodex&~1)
+		if (battle_config.delay_dependon_dex && !(delaynodex&1))
 		{	// if skill casttime is allowed to be reduced by dex
 			int scale = battle_config.castrate_dex_scale - status_get_dex(bl);
 			if (scale > 0)
@@ -8319,7 +8319,7 @@ int skill_delayfix( struct block_list *bl, int skill_id, int skill_lv, int time
 			time = battle_config.min_skill_delay_limit;
 	}
 
-	if (delaynodex&~2)
+	if (!(delaynodex&2))
 	{	/* ƒuƒ‰ƒM‚ÌŽ? */
 		sc= status_get_sc(bl);
 		if (sc && sc->count) {