*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
This commit is contained in:
L0ne_W0lf 2011-08-28 23:32:31 +00:00
parent 1fd99c30e5
commit 1e6fffed3c
3 changed files with 12 additions and 8 deletions

View File

@ -1,5 +1,9 @@
Date Added 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 2011/08/27
* Fixed AB_ADORAMUS's partner and item check. [Inkfish] * Fixed AB_ADORAMUS's partner and item check. [Inkfish]
* Added a null pointer check to AB_CLEMENTIA and AB_CANTO. [Inkfish] * Added a null pointer check to AB_CLEMENTIA and AB_CANTO. [Inkfish]

View File

@ -8017,7 +8017,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
case UNT_EPICLESIS: case UNT_EPICLESIS:
sg->val2--; // track when units should be healed. Initial tick heals immediately. 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. { //Effect only players who are not undead element.
//Unknown if any status effects should prevent Epiclesis. //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)); 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); 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. *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; return c;
} }

View File

@ -3015,19 +3015,19 @@ void status_calc_bl_main(struct block_list *bl, enum scb_flag flag)
if(flag&SCB_MATK) { if(flag&SCB_MATK) {
int wlv = 1, wmatk = 0; int wlv = 1, wmatk = 0;
short index = sd->equip_index[EQI_HAND_R];
//New matk //New matk
status->matk_min = status_base_matk_min(status); status->matk_min = status_base_matk_min(status);
status->matk_max = status_base_matk_max(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 ) if( sd )
{ {
// iRO Wiki states as of 2011/02/24: short index = sd->equip_index[EQI_HAND_R];
// 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;
wmatk = sd->weapon_matk + sd->battle_status.rhw.atk2 + sd->equipment_matk; 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 ) if( index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_WEAPON )
wlv = sd->inventory_data[index]->wlv; 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]); 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; return true;
} }