diff options
author | rud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-12-16 15:43:32 +0000 |
---|---|---|
committer | rud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-12-16 15:43:32 +0000 |
commit | 44582e9466bd8160a3156d5e77b7b7b778f2c999 (patch) | |
tree | 49487229a8250ebf23b966c062d248b83c4275dc /src/map/skill.c | |
parent | 3baf38b0d93ff29a902de61e9f2eb665dad444c1 (diff) | |
download | hercules-44582e9466bd8160a3156d5e77b7b7b778f2c999.tar.gz hercules-44582e9466bd8160a3156d5e77b7b7b778f2c999.tar.bz2 hercules-44582e9466bd8160a3156d5e77b7b7b778f2c999.tar.xz hercules-44582e9466bd8160a3156d5e77b7b7b778f2c999.zip |
Fixed bugreport:7010 where r17014 missing status_change check that may cause map server crash.
Fixed bugreport:6953 where RK_WINDCUTTER don't have skill effect.
Fixed bugreport:6701 change RK_CRUSHTRIKE to self target skill.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17026 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/skill.c')
-rw-r--r-- | src/map/skill.c | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index bf7bee83a..c2a92cb73 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1473,7 +1473,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int if( sc->data[SC_WILD_STORM_OPTION] ) skill = sc->data[SC_WILD_STORM_OPTION]->val2; else if( sc->data[SC_UPHEAVAL_OPTION] ) - skill = sc->data[SC_WILD_STORM_OPTION]->val2; + skill = sc->data[SC_UPHEAVAL_OPTION]->val2; else if( sc->data[SC_TROPIC_OPTION] ) skill = sc->data[SC_TROPIC_OPTION]->val3; else if( sc->data[SC_CHILLY_AIR_OPTION] ) @@ -7518,6 +7518,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case RK_GIANTGROWTH: case RK_VITALITYACTIVATION: case RK_ABUNDANCE: + case RK_CRUSHSTRIKE: if( sd ) { int lv = 1; // RK_GIANTGROWTH @@ -7525,6 +7526,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in lv = 2; else if( skillid == RK_ABUNDANCE ) lv = 6; + else if( skillid == RK_CRUSHSTRIKE ) + lv = 7; if( pc_checkskill(sd,RK_RUNEMASTERY) >= lv ) clif_skill_nodamage(src,bl,skillid,skilllv,sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); } @@ -10004,11 +10007,12 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk } } break; - + + case RK_WINDCUTTER: + clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6); case NC_COLDSLOWER: case NC_ARMSCANNON: case RK_DRAGONBREATH: - case RK_WINDCUTTER: case WM_LULLABY_DEEPSLEEP: i = skill_get_splash(skillid,skilllv); map_foreachinarea(skill_area_sub,src->m,x-i,y-i,x+i,y+i,splash_target(src), @@ -13380,6 +13384,28 @@ int skill_consume_requirement( struct map_session_data *sd, short skill, short l if( itemid_isgemstone(req.itemid[i]) && skill != HW_GANBANTEIN && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_WIZARD ) continue; //Gemstones are checked, but not substracted from inventory. + switch( skill ){ + case SA_SEISMICWEAPON: + if( sc && sc->data[SC_UPHEAVAL_OPTION] && rnd()%100 < 50 ) + continue; + break; + case SA_FLAMELAUNCHER: + case SA_VOLCANO: + if( sc && sc->data[SC_TROPIC_OPTION] && rnd()%100 < 50 ) + continue; + break; + case SA_FROSTWEAPON: + case SA_DELUGE: + if( sc && sc->data[SC_CHILLY_AIR_OPTION] && rnd()%100 < 50 ) + continue; + break; + case SA_LIGHTNINGLOADER: + case SA_VIOLENTGALE: + if( sc && sc->data[SC_WILD_STORM_OPTION] && rnd()%100 < 50 ) + continue; + break; + } + if( (n = pc_search_inventory(sd,req.itemid[i])) >= 0 ) pc_delitem(sd,n,req.amount[i],0,1,LOG_TYPE_CONSUME); } @@ -13524,25 +13550,6 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, short if( i < 3 ) continue; break; - case SA_SEISMICWEAPON: - if( sc->data[SC_UPHEAVAL_OPTION] && rnd()%100 < 50 ) - continue; - break; - case SA_FLAMELAUNCHER: - case SA_VOLCANO: - if( sc->data[SC_TROPIC_OPTION] && rnd()%100 < 50 ) - continue; - break; - case SA_FROSTWEAPON: - case SA_DELUGE: - if( sc->data[SC_CHILLY_AIR_OPTION] && rnd()%100 < 50 ) - continue; - break; - case SA_LIGHTNINGLOADER: - case SA_VIOLENTGALE: - if( sc && sc->data[SC_WILD_STORM_OPTION] && rnd()%100 < 50 ) - continue; - break; } req.itemid[i] = skill_db[j].itemid[i]; |