Преглед изворни кода

Resolves cardfix calculation going below zero (#6560)

* Fixes an issue where cardfix bonuses cause the final result to go below zero ultimately giving unwanted effects.
Thanks to @Tokeiburu and@alycecil!
Aleos пре 3 година
родитељ
комит
ad2660b037
1 измењених фајлова са 1 додато и 1 уклоњено
  1. 1 1
      src/map/battle.cpp

+ 1 - 1
src/map/battle.cpp

@@ -675,7 +675,7 @@ int battle_calc_cardfix(int attack_type, struct block_list *src, struct block_li
 	s_defele = (tsd) ? (enum e_element)status_get_element(src) : ELE_NONE;
 
 //Official servers apply the cardfix value on a base of 1000 and round down the reduction/increase
-#define APPLY_CARDFIX(damage, fix) { (damage) = (damage) - (int64)(((damage) * (1000 - (fix))) / 1000); }
+#define APPLY_CARDFIX(damage, fix) { (damage) = (damage) - (int64)(((damage) * (1000 - min(max(0, fix), 1000))) / 1000); }
 
 	switch( attack_type ) {
 		case BF_MAGIC: