Fixed bugreport:5843 WL_HELLINFERNO should now deal 2 elemental(fire ad shadow) hits and updated its damage formula.

Fixed bugreport:6068 Cloaking/Hiding skills is now working to hide it self to non boss/detector monster.
Fixed bugreport:6105 Stone Curse should now stop target to attack once activated.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16346 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
rud0lp20 2012-06-25 11:54:35 +00:00
parent 2316ba38c2
commit fb56e5bc13
3 changed files with 16 additions and 10 deletions

View File

@ -3513,11 +3513,12 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
RE_LVL_DMOD(100);
break;
case WL_HELLINFERNO:
if( status_get_element(target) == ELE_FIRE )
skillratio = 60 * skill_lv;
else
skillratio = 240 * skill_lv;
RE_LVL_DMOD(100);
skillratio = 300 * skill_lv;
RE_LVL_DMOD(100);
// Shadow: MATK [{( Skill Level x 300 ) x ( Casters Base Level / 100 ) x 4/5 }] %
// Fire : MATK [{( Skill Level x 300 ) x ( Casters Base Level / 100 ) /5 }] %
if( mflag&ELE_DARK ){ skillratio *= 4; s_ele = ELE_DARK; }
skillratio /= 5;
break;
case WL_COMET: {
struct status_change * sc = status_get_sc(src);
@ -3560,10 +3561,10 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
RE_LVL_DMOD(100);
break;
case LG_SHIELDSPELL:// [(Casters Base Level x 4) + (Shield MDEF x 100) + (Casters INT x 2)] %
if( sd ) {
skillratio = status_get_lv(src) * 4 + sd->bonus.shieldmdef * 100 + status_get_int(src) * 2;
} else
skillratio += 1900; //2000%
if( sd ) {
skillratio = status_get_lv(src) * 4 + sd->bonus.shieldmdef * 100 + status_get_int(src) * 2;
} else
skillratio += 1900; //2000%
break;
case WM_METALICSOUND:
skillratio += 120 * skill_lv + 60 * ( sd? pc_checkskill(sd, WM_LESSON) : 10 ) - 100;

View File

@ -3803,7 +3803,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
case AB_RENOVATIO:
case AB_HIGHNESSHEAL:
case AB_DUPLELIGHT_MAGIC:
case WL_HELLINFERNO:
case WM_METALICSOUND:
skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
break;
@ -4212,6 +4211,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv, tick, flag);
}
break;
case WL_HELLINFERNO:
skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag|ELE_DARK);
break;
case RA_WUGSTRIKE:
case RA_WUGBITE:
if( path_search(NULL,src->m,src->x,src->y,bl->x,bl->y,1,CELL_CHKNOREACH) ) {

View File

@ -1727,6 +1727,7 @@ int status_check_visibility(struct block_list *src, struct block_list *target)
{ //Check for chase-walk/hiding/cloaking opponents.
case BL_PC:
if ( tsc->data[SC_CLOAKINGEXCEED] && !(status->mode&MD_BOSS) )
return 0;
if( (tsc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) || tsc->data[SC__INVISIBILITY] || tsc->data[SC_CAMOUFLAGE]) && !(status->mode&MD_BOSS) &&
( ((TBL_PC*)target)->special_state.perfect_hiding || !(status->mode&MD_DETECTOR) ) )
return 0;
@ -9224,6 +9225,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
if(sc->opt1 == OPT1_STONEWAIT && sce->val3) {
sce->val4 = 0;
unit_stop_walking(bl,1);
unit_stop_attack(bl);
sc->opt1 = OPT1_STONE;
clif_changeoption(bl);
sc_timer_next(1000+tick,status_change_timer, bl->id, data );