summaryrefslogtreecommitdiff
path: root/src/map/skill.c
diff options
context:
space:
mode:
authorrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-07-26 18:08:30 +0000
committerrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-07-26 18:08:30 +0000
commit94bad013f7075b5888d3f1f6a148fe6e2d3f5cb1 (patch)
treebee9ac06ae3a8e33823bf38fc84e854b2b409d2b /src/map/skill.c
parentccdbfa796421ab45c7eaf6857f9617a4f18a82c5 (diff)
downloadhercules-94bad013f7075b5888d3f1f6a148fe6e2d3f5cb1.tar.gz
hercules-94bad013f7075b5888d3f1f6a148fe6e2d3f5cb1.tar.bz2
hercules-94bad013f7075b5888d3f1f6a148fe6e2d3f5cb1.tar.xz
hercules-94bad013f7075b5888d3f1f6a148fe6e2d3f5cb1.zip
Updated NJ_HUUMA to renewal behavior.(bugreport:6330)
Updated some wizard skills(WZ_METEOR,WZ_HEAVENDRIVE,WZ_VERMILION) to its RE damage ratio.(bugreport:6334,bugreport:6329, bugreport:6333) Fixed bugreport:6321 where skill ratio of RK_HUNDREDSPEAR is adjusted too much. Follow up r16492 where damage dealt to traps should now show/display w/o affecting other skills behavior. Fixed a glitch in UNT_DUMMYSKILL where it triggers multiple time that causes multiple damage something related with bugreport:6201. Added some Kagerou/Oboro skills and more to come :). (KO_YAMIKUMO, KO_RIGHT, KO_LEFT, KO_JYUMONJIKIRI, KO_SETSUDAN, KO_BAKURETSU, KO_HAPPOKUNAI, KO_MUCHANAGE) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16506 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/skill.c')
-rw-r--r--src/map/skill.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index 8eab672c7..5ca31bca0 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1342,6 +1342,9 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
case MH_STAHL_HORN:
sc_start(bl,SC_STUN,(20 + 4 * skilllv),skilllv,skill_get_time2(skillid,skilllv));
break;
+ case KO_JYUMONJIKIRI: // needs more info
+ sc_start(bl,SC_JYUMONJIKIRI,25,skilllv,skill_get_time(skillid,skilllv));
+ break;
}
if (md && battle_config.summons_trigger_autospells && md->master_id && md->special_state.ai)
@@ -2334,6 +2337,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
break;
case WL_SOULEXPANSION:
case WL_COMET:
+ case KO_MUCHANAGE:
+ case NJ_HUUMA:
dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skillid,skilllv,8);
break;
case WL_CHAINLIGHTNING_ATK:
@@ -2365,6 +2370,7 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
case EL_HURRICANE_ATK:
case EL_TYPOON_MIS:
case EL_TYPOON_MIS_ATK:
+ case KO_BAKURETSU:
dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skillid,-1,5);
break;
case GN_SLINGITEM_RANGEMELEEATK:
@@ -2399,6 +2405,11 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
default:
if( flag&SD_ANIMATION && dmg.div_ < 2 ) //Disabling skill animation doesn't works on multi-hit.
type = 5;
+ if( bl->type == BL_SKILL ){
+ TBL_SKILL *su = (TBL_SKILL*)bl;
+ if( su->group && skill_get_inf2(su->group->skill_id)&INF2_TRAP )// show damage on trap targets
+ clif_skill_damage(src,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, flag&SD_LEVEL?-1:skilllv, 5);
+ }
dmg.dmotion = clif_skill_damage(dsrc,bl,tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, flag&SD_LEVEL?-1:skilllv, type);
break;
}
@@ -3417,6 +3428,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
case WM_GREAT_ECHO:
case GN_SLINGITEM_RANGEMELEEATK:
case MH_STAHL_HORN:
+ case KO_JYUMONJIKIRI:
+ case KO_SETSUDAN:
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
break;
@@ -3648,6 +3661,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
case GN_CART_TORNADO:
case GN_CARTCANNON:
case MH_LAVA_SLIDE:
+ case KO_HAPPOKUNAI:
+ case KO_HUUMARANKA:
if( flag&1 ) {//Recursive invocation
// skill_area_temp[0] holds number of targets in area
// skill_area_temp[1] holds the id of the original target
@@ -5457,11 +5472,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case SR_SKYNETBLOW:
case SR_RAMPAGEBLASTER:
case SR_HOWLINGOFLION:
+ case KO_HAPPOKUNAI:
skill_area_temp[1] = 0;
clif_skill_nodamage(src,bl,skillid,skilllv,1);
i = map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), splash_target(src),
src, skillid, skilllv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);
- if( !i && ( skillid == NC_AXETORNADO || skillid == SR_SKYNETBLOW ) )
+ if( !i && ( skillid == NC_AXETORNADO || skillid == SR_SKYNETBLOW || skillid == KO_HAPPOKUNAI ) )
clif_skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6);
break;
@@ -5614,6 +5630,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
break;
case TF_HIDING:
case ST_CHASEWALK:
+ case KO_YAMIKUMO:
if (tsce)
{
clif_skill_nodamage(src,bl,skillid,-1,status_change_end(bl, type, INVALID_TIMER)); //Hide skill-scream animation.
@@ -9326,6 +9343,9 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
case NJ_HYOUSYOURAKU:
case NJ_RAIGEKISAI:
case NJ_KAMAITACHI:
+#ifdef RENEWAL
+ case NJ_HUUMA:
+#endif
case NPC_EVILLAND:
case RA_ELECTRICSHOCKER:
case RA_CLUSTERBOMB:
@@ -9356,6 +9376,9 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
case SO_WIND_INSIGNIA:
case SO_EARTH_INSIGNIA:
case MH_POISON_MIST:
+ case KO_HUUMARANKA:
+ case KO_MUCHANAGE:
+ case KO_BAKURETSU:
flag|=1;//Set flag to 1 to prevent deleting ammo (it will be deleted on group-delete).
case GS_GROUNDDRIFT: //Ammo should be deleted right away.
skill_unitsetting(src,skillid,skilllv,x,y,0);
@@ -10934,6 +10957,8 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
default:
skill_attack(skill_get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
}
+ if( skill_get_unit_interval(sg->skill_id) >= skill_get_time(sg->skill_id,sg->skill_lv) )
+ sg->unit_id = UNT_USED_TRAPS;
break;
case UNT_FIREPILLAR_WAITING:
@@ -11894,7 +11919,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, short skill, sh
case BS_MAXIMIZE: case NV_TRICKDEAD: case TF_HIDING: case AS_CLOAKING: case CR_AUTOGUARD:
case ML_AUTOGUARD: case CR_DEFENDER: case ML_DEFENDER: case ST_CHASEWALK: case PA_GOSPEL:
case CR_SHRINK: case TK_RUN: case GS_GATLINGFEVER: case TK_READYCOUNTER: case TK_READYDOWN:
- case TK_READYSTORM: case TK_READYTURN: case SG_FUSION: case RA_WUGDASH:
+ case TK_READYSTORM: case TK_READYTURN: case SG_FUSION: case RA_WUGDASH: case KO_YAMIKUMO:
if( sc && sc->data[status_skill2sc(skill)] )
return 1;
}
@@ -12203,6 +12228,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, short skill, sh
break;
case NJ_ZENYNAGE:
+ case KO_MUCHANAGE:
if(sd->status.zeny < require.zeny) {
clif_skill_fail(sd,skill,USESKILL_FAIL_MONEY,0);
return 0;
@@ -12822,7 +12848,7 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, short
case BS_MAXIMIZE: case NV_TRICKDEAD: case TF_HIDING: case AS_CLOAKING: case CR_AUTOGUARD:
case ML_AUTOGUARD: case CR_DEFENDER: case ML_DEFENDER: case ST_CHASEWALK: case PA_GOSPEL:
case CR_SHRINK: case TK_RUN: case GS_GATLINGFEVER: case TK_READYCOUNTER: case TK_READYDOWN:
- case TK_READYSTORM: case TK_READYTURN: case SG_FUSION:
+ case TK_READYSTORM: case TK_READYTURN: case SG_FUSION: case KO_YAMIKUMO:
if( sc && sc->data[status_skill2sc(skill)] )
return req;
}