Browse Source

*Fixed Blessing crashing the server when used on monsters, monster weapon attack mechanics are currently unknown. * Updated conditions for UNT_EPICLESIS and AB_ADORAMUS (two cases of || to &&.)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/renewal@14948 54d463be-8e91-2dee-dedb-b68131a5f0ec
L0ne_W0lf 13 years ago
parent
commit
1e6fffed3c
3 changed files with 12 additions and 8 deletions
  1. 4 0
      Changelog-Renewal.txt
  2. 2 2
      src/map/skill.c
  3. 6 6
      src/map/status.c

+ 4 - 0
Changelog-Renewal.txt

@@ -1,5 +1,9 @@
 Date	Added
 
+2011/08/28
+	* Rev. 14948 Fixed Blessing crashing the server when used on monsters, monster weapon attack mechanics are currently unknown. [L0ne_W0lf]
+	* Updated conditions for UNT_EPICLESIS and AB_ADORAMUS (two cases of || to &&.)
+	
 2011/08/27
 	* Fixed AB_ADORAMUS's partner and item check. [Inkfish]
 	* Added a null pointer check to AB_CLEMENTIA and AB_CANTO. [Inkfish]

+ 2 - 2
src/map/skill.c

@@ -8017,7 +8017,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 
 		case UNT_EPICLESIS:
 			sg->val2--; // track when units should be healed. Initial tick heals immediately.
-			if ( !battle_check_undead(tstatus->race, tstatus->def_ele) || bl->type == BL_PC)
+			if ( !battle_check_undead(tstatus->race, tstatus->def_ele) && bl->type == BL_PC)
 			{ //Effect only players who are not undead element.
 				
 				//Unknown if any status effects should prevent Epiclesis.
@@ -8429,7 +8429,7 @@ int skill_check_pc_partner (struct map_session_data *sd, short skill_id, short*
 	memset (p_sd, 0, sizeof(p_sd));
 	i = map_foreachinrange(skill_check_condition_char_sub, &sd->bl, range, BL_PC, &sd->bl, &c, &p_sd, skill_id);
 
-	if (skill_id != PR_BENEDICTIO || skill_id != AB_ADORAMUS) //Apply the average lv to encore skills.
+	if (skill_id != PR_BENEDICTIO && skill_id != AB_ADORAMUS) //Apply the average lv to encore skills.
 		*skill_lv = (i+(*skill_lv))/(c+1); //I know c should be one, but this shows how it could be used for the average of n partners.
 	return c;
 }

+ 6 - 6
src/map/status.c

@@ -3015,19 +3015,19 @@ void status_calc_bl_main(struct block_list *bl, enum scb_flag flag)
 
 	if(flag&SCB_MATK) {
 		int wlv = 1, wmatk = 0;
-		short index = sd->equip_index[EQI_HAND_R];
 
 		//New matk
 		status->matk_min = status_base_matk_min(status);
 		status->matk_max = status_base_matk_max(status);
 
+		// iRO Wiki states as of 2011/02/24:
+		// Status MATK = floor(Base Level/4 + INT + INT/2 + DEX/5 + LUK/3) 
+		status->status_matk = status_get_lv(bl)/4 + status->int_ + status->int_/2 + status->dex/5 + status->luk/3;
+
 		if( sd )
 		{
-			// iRO Wiki states as of 2011/02/24:
-			// Status MATK = floor(Base Level/4 + INT + INT/2 + DEX/5 + LUK/3) 
-			status->status_matk = status_get_lv(bl)/4 + status->int_ + status->int_/2 + status->dex/5 + status->luk/3;
+			short index = sd->equip_index[EQI_HAND_R];
 			wmatk = sd->weapon_matk + sd->battle_status.rhw.atk2 + sd->equipment_matk;
-
 			if( index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_WEAPON )
 				wlv = sd->inventory_data[index]->wlv;
 		}
@@ -7867,7 +7867,7 @@ static bool status_readdb_job1(char* fields[], int columns, int current)
 	{
 		aspd_base[idx][i] = atoi(fields[i+5]);
 	}
-	shield_aspd_base[idx] = atoi(fields[29]); // Won't take 5+MAX_WEAPON_TYPE+1
+	shield_aspd_base[idx] = atoi(fields[MAX_WEAPON_TYPE+5]);
 	return true;
 }