viewing paste casttime_custom | Diff

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- Base (BASE)
+++ Locally Modified (Based On LOCAL)
@@ -14108,12 +14108,23 @@
        fixcast_r = max(fixcast_r, sd->bonus.fixcastrate) + min(sd->bonus.fixcastrate,0);
    }
 
-   if( varcast_r < 0 ) // now compute overall factors
-       time = time * (1 - (float)varcast_r / 100);
-   if( !(skill_get_castnodex(skill_id, skill_lv)&1) )// reduction from status point
-       time = (1 - sqrt( ((float)(status_get_dex(bl)*2 + status_get_int(bl)) / battle_config.vcast_stat_scale) )) * time;
+// if( varcast_r < 0 ) // now compute overall factors
+//     time = time * (1 - (float)varcast_r / 100);
+// if( !(skill_get_castnodex(skill_id, skill_lv)&1) )// reduction from status point
+//     time = (1 - sqrt( ((float)(status_get_dex(bl)*2 + status_get_int(bl)) / battle_config.vcast_stat_scale) )) * time;
    // underflow checking/capping
-   time = max(time, 0) + (1 - (float)min(fixcast_r, 100) / 100) * max(fixed,0);
+// time = max(time, 0) + (1 - (float)min(fixcast_r, 100) / 100) * max(fixed,0);
+   // calculate base cast time (reduced by dex)
+   if( !(skill_get_castnodex(skill_id, skill_lv)&1) ) {
+       int scale = battle_config.castrate_dex_scale - status_get_dex(bl);
+       if( scale > 0 ) {   // not instant cast
+           time = time * (1 - (float)varcast_r / 100); //applpy variable cast reduction
+           time = max(time, 0) + (1 - (float)min(fixcast_r, 100) / 100) * max(fixed,0); //add fixed and apply fixed reduction
+           time = time * scale / battle_config.castrate_dex_scale; //apply dex / castrate reduction
+       }
+       else
+           return 0;   // instant cast
+   }
 
    return (int)time;
 }
Viewed 1322 times, submitted by lighta.