|
@@ -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];
|