Explorar el Código

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

celest hace 20 años
padre
commit
a6cadaf451
Se han modificado 2 ficheros con 20 adiciones y 16 borrados
  1. 10 6
      Changelog.txt
  2. 10 10
      src/map/battle.c

+ 10 - 6
Changelog.txt

@@ -1,18 +1,22 @@
 Date	Added
 01/02
+        * Re-fixed map-server crashing if an empty line is in skill_castnodex.txt,
+          thanks to Alex14 for pointing it out (SVN 899) [celest]
+        * Modified breaking rates calculating - meltdown's chances is separated from
+          self breaking chances (SVN 900)  [celest]
         * Reduced MAX_SKILL_LEVEL to 10 to save a bit of memory and speed [celest]
-        * Tidied up parts in skill_castfix a bit [celest]
+        * Tidied up parts in skill_castfix a bit (SVN 895) [celest]
         * Fixed map-server crashing if an empty line was added in any of the skill-xx
-          db files [celest]
+          db files  (SVN 895) [celest]
         * Updated skill_castnodex reading - An *optional* 3rd value can be added to set
-          whether a skill's delay time can be affected by dex [celest]
+          whether a skill's delay time can be affected by dex  (SVN 895) [celest]
           Example: 46,1,1 - double strafe's delay is not affected by dex
                    46,1,0:0:0:0:1 - only level 5 double strafe is not affected by dex
 	* More atempts at memory leak fixes [Codemaster] [SVN 890]
-        * Updated weapon breaking rates, thanks to DracoRPG [celest]
+        * Updated weapon breaking rates, thanks to DracoRPG  (SVN 891) [celest]
         * Optimized enchanting skills success rates calculation, thanks to Wallex
-          (you were right! ^^; ) [celest]
-        * Modified Spiral Pierce and Breaker to type ranged [celest]
+          (you were right! ^^; )  (SVN 891) [celest]
+        * Modified Spiral Pierce and Breaker to type ranged (SVN 891) [celest]
 
 01/01
 	* Attempted to fix a memory leak [Codemaster] - tell me if it works XD (NPC/Mob memory leak in npc_parse_mob(...)) [SVN 886]

+ 10 - 10
src/map/battle.c

@@ -4045,31 +4045,31 @@ struct Damage battle_calc_weapon_attack(
 
 		if(sd->status.weapon && sd->status.weapon != 11) {
 			if(sd->sc_data[SC_MELTDOWN].timer!=-1) {
-//				breakrate += 100*sd->sc_data[SC_MELTDOWN].val1; // since we don't know if there are any other factors for breaking yet, [celest]
-				breakrate += 100*sd->sc_data[SC_MELTDOWN].val1;
-				if(rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) {
+				int breakrate_;	// separate breaking rates for meltdown [Celest]
+				breakrate_ = 100*sd->sc_data[SC_MELTDOWN].val1;
+				if(rand()%10000 < breakrate_*battle_config.equipment_break_rate/100 || breakrate_ >= 10000) {
 					if (target->type == BL_PC)
 						pc_breakweapon((struct map_session_data *)target);
 					else
 						skill_status_change_start(target,SC_STRIPWEAPON,1,75,0,0,skill_get_time2(WS_MELTDOWN,1),0 );
 				}
 
-				breakrate = 70*sd->sc_data[SC_MELTDOWN].val1;
-				if (rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) {
+				breakrate_ = 70*sd->sc_data[SC_MELTDOWN].val1;
+				if (rand()%10000 < breakrate_*battle_config.equipment_break_rate/100 || breakrate_ >= 10000) {
 					if (target->type == BL_PC)
 						pc_breakarmor((struct map_session_data *)target);
 					else
 						skill_status_change_start(target,SC_STRIPSHIELD,1,75,0,0,skill_get_time2(WS_MELTDOWN,1),0 );
 				}
 			}
-			if(sd->sc_data[SC_OVERTHRUST].timer!=-1) {
+			if(sd->sc_data[SC_OVERTHRUST].timer!=-1)
 				breakrate += 10;	//+ 0.1% whatever skill level you use [DracoRPG]
+
 			//if(wd.type==0x0a) //removed! because CRITS don't affect on breaking chance [Lupus]
 			//	breakrate*=2;
-				if(rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) {
-					if(pc_breakweapon(sd)==1)
-						wd = battle_calc_pc_weapon_attack(src,target,skill_num,skill_lv,wflag);
-				}
+			if(rand()%10000 < breakrate*battle_config.equipment_break_rate/100 || breakrate >= 10000) {
+				if(pc_breakweapon(sd)==1)
+					wd = battle_calc_pc_weapon_attack(src,target,skill_num,skill_lv,wflag);
 			}
 		}
 	}