소스 검색

Fixed #1383: 0 EXP oddity for 'even share' party EXP

Signed-off-by: Cydh Ramdh <cydh@pservero.com>
Cydh Ramdh 9 년 전
부모
커밋
d2bbd913ec
1개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 7 3
      src/map/party.c

+ 7 - 3
src/map/party.c

@@ -1062,7 +1062,7 @@ int party_exp_share(struct party_data* p, struct block_list* src, unsigned int b
 
 	for (i = 0; i < c; i++) {
 #ifdef RENEWAL_EXP
-		if( !(src && src->type == BL_MOB && ((TBL_MOB*)src)->db->mexp) ) {
+		if( (base_exp_bonus || job_exp_bonus) && !(src && src->type == BL_MOB && ((TBL_MOB*)src)->db->mexp) ) {
 			TBL_MOB *md = BL_CAST(BL_MOB, src);
 			int rate = 0;
 
@@ -1070,8 +1070,12 @@ int party_exp_share(struct party_data* p, struct block_list* src, unsigned int b
 				return 0;
 
 			rate = pc_level_penalty_mod(md->db->lv - sd[i]->status.base_level, md->db->status.class_, md->db->status.mode, 1);
-			base_exp = (unsigned int)cap_value(base_exp_bonus * rate / 100, 1, UINT_MAX);
-			job_exp = (unsigned int)cap_value(job_exp_bonus * rate / 100, 1, UINT_MAX);
+			if (rate != 100) {
+				if (base_exp_bonus)
+					base_exp = (unsigned int)cap_value(base_exp_bonus * rate / 100, 1, UINT_MAX);
+				if (job_exp_bonus)
+					job_exp = (unsigned int)cap_value(job_exp_bonus * rate / 100, 1, UINT_MAX);
+			}
 		}
 #endif