summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-06-25 11:54:35 +0000
committerrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-06-25 11:54:35 +0000
commit388be58765c0527ef37d7858d606ab49cc9c5c41 (patch)
tree2a209da768344f0d153f3d020bc44f0f085962e9
parentb0e526849f98004da6d21e50639d004072c3bed1 (diff)
downloadhercules-388be58765c0527ef37d7858d606ab49cc9c5c41.tar.gz
hercules-388be58765c0527ef37d7858d606ab49cc9c5c41.tar.bz2
hercules-388be58765c0527ef37d7858d606ab49cc9c5c41.tar.xz
hercules-388be58765c0527ef37d7858d606ab49cc9c5c41.zip
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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16346 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--src/map/battle.c19
-rw-r--r--src/map/skill.c5
-rw-r--r--src/map/status.c2
3 files changed, 16 insertions, 10 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index c834312dd..69d54ad38 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -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 ( Caster’s Base Level / 100 ) x 4/5 }] %
+ // Fire : MATK [{( Skill Level x 300 ) x ( Caster’s 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:// [(Caster’s Base Level x 4) + (Shield MDEF x 100) + (Caster’s 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;
diff --git a/src/map/skill.c b/src/map/skill.c
index ef41448fe..3bb3d011b 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -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) ) {
diff --git a/src/map/status.c b/src/map/status.c
index bf1fbeaa9..49da4ae9f 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -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 );