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

Merge branch 'master' of https://github.com/rathena/rathena

Euphy пре 12 година
родитељ
комит
743d5fa4d0
2 измењених фајлова са 11 додато и 7 уклоњено
  1. 7 5
      src/map/battle.c
  2. 4 2
      src/map/skill.c

+ 7 - 5
src/map/battle.c

@@ -1523,10 +1523,9 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int
 #ifdef RENEWAL
 static int battle_calc_sizefix(int damage, struct map_session_data *sd, unsigned char t_size, unsigned char weapon_type, short flag)
 {
-	if (sd)
-	{
+	if (sd) {
 		//SizeFix only for players
-		if (!(sd->special_state.no_sizefix) || flag)
+		if (!(sd->special_state.no_sizefix) && !flag)
 			DAMAGE_RATE(weapon_type==EQI_HAND_L?
 				sd->left_weapon.atkmods[t_size]:
 				sd->right_weapon.atkmods[t_size])
@@ -2064,6 +2063,9 @@ static bool is_attack_hitting(struct Damage wd, struct block_list *src, struct b
 			if( sd && pc_checkskill(sd, GN_REMODELING_CART) )
 				hitrate += pc_checkskill(sd, GN_REMODELING_CART) * 4;
 			break;
+		case LG_BANISHINGPOINT:
+			hitrate += 3 * skill_lv;
+			break;
 		case GC_VENOMPRESSURE:
 			hitrate += 10 + 4 * skill_lv;
 			break;
@@ -4365,9 +4367,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
 #ifdef RENEWAL
 	if(is_attack_critical(wd, src, target, skill_id, skill_lv, false)) {
 		if(sd) // check for player so we don't crash out, monsters don't have bonus crit rates [helvetica]
-			wd.damage = (int32)floor((double)wd.damage * 1.4 * ((100 + sd->bonus.crit_atk_rate) / 100));
+			wd.damage = (int)floor((double)(wd.damage * 1.4 * (100 + sd->bonus.crit_atk_rate)) / 100);
 		else
-			wd.damage = (int32)floor((double)wd.damage * 1.4);
+			wd.damage = (int)floor((double)wd.damage * 1.4);
 	}
 #endif
 

+ 4 - 2
src/map/skill.c

@@ -3283,9 +3283,11 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
 					break;
 				case WZ_WATERBALL:
 					skill_toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify
-					if (!status_isdead(target))
+					// Official behaviour is to hit as long as there is a line of sight, regardless of distance
+					range = path_search_long(NULL,src->m,src->x,src->y,target->x,target->y,CELL_CHKNOREACH);
+					if (!status_isdead(target) && range)
 						skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag);
-					if (skl->type>1 && !status_isdead(target) && !status_isdead(src)) {
+					if (skl->type>1 && !status_isdead(target) && !status_isdead(src) && range) {
 						skill_addtimerskill(src,tick+125,target->id,0,0,skl->skill_id,skl->skill_lv,skl->type-1,skl->flag);
 					} else {
 						struct status_change *sc = status_get_sc(src);