|
@@ -1781,7 +1781,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
|
|
|
|
|
|
map_freeblock_lock();
|
|
map_freeblock_lock();
|
|
/* ?際にダメ?ジ?理を行う */
|
|
/* ?際にダメ?ジ?理を行う */
|
|
- if(skillid != KN_BOWLINGBASH || flag)
|
|
|
|
|
|
+ if(skillid || flag)
|
|
battle_damage(src,bl,damage,0);
|
|
battle_damage(src,bl,damage,0);
|
|
if(skillid == RG_INTIMIDATE && damage > 0 && !(battle_get_mode(bl)&0x20) && !map[src->m].flag.gvg ) {
|
|
if(skillid == RG_INTIMIDATE && damage > 0 && !(battle_get_mode(bl)&0x20) && !map[src->m].flag.gvg ) {
|
|
int s_lv = battle_get_lv(src),t_lv = battle_get_lv(bl);
|
|
int s_lv = battle_get_lv(src),t_lv = battle_get_lv(bl);
|
|
@@ -1863,7 +1863,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
|
|
if(hp || sp) pc_heal(sd,hp,sp);
|
|
if(hp || sp) pc_heal(sd,hp,sp);
|
|
}
|
|
}
|
|
|
|
|
|
- if((skillid != KN_BOWLINGBASH || flag) && rdamage > 0)
|
|
|
|
|
|
+ if((skillid || flag) && rdamage > 0)
|
|
battle_damage(bl,src,rdamage,0);
|
|
battle_damage(bl,src,rdamage,0);
|
|
|
|
|
|
if(attack_type&BF_WEAPON && sc_data && sc_data[SC_AUTOCOUNTER].timer != -1 && sc_data[SC_AUTOCOUNTER].val4 > 0) {
|
|
if(attack_type&BF_WEAPON && sc_data && sc_data[SC_AUTOCOUNTER].timer != -1 && sc_data[SC_AUTOCOUNTER].val4 > 0) {
|
|
@@ -7408,9 +7408,7 @@ int skill_castfix( struct block_list *bl, int time )
|
|
nullpo_retr(0, md=(struct mob_data*)bl);
|
|
nullpo_retr(0, md=(struct mob_data*)bl);
|
|
skill = md->skillid;
|
|
skill = md->skillid;
|
|
lv = md->skilllv;
|
|
lv = md->skilllv;
|
|
- }
|
|
|
|
-
|
|
|
|
- else {
|
|
|
|
|
|
+ } else {
|
|
nullpo_retr(0, sd=(struct map_session_data*)bl);
|
|
nullpo_retr(0, sd=(struct map_session_data*)bl);
|
|
skill = sd->skillid;
|
|
skill = sd->skillid;
|
|
lv = sd->skilllv;
|
|
lv = sd->skilllv;
|
|
@@ -7470,12 +7468,17 @@ int skill_delayfix( struct block_list *bl, int time )
|
|
|
|
|
|
sc_data = battle_get_sc_data(bl);
|
|
sc_data = battle_get_sc_data(bl);
|
|
|
|
|
|
|
|
+ // instant cast attack skills depend on aspd as delay [celest]
|
|
|
|
+ if (time <= 0 && skill_db[skill].skill_type == BF_WEAPON)
|
|
|
|
+ time = battle_get_adelay (bl)/2;
|
|
|
|
+
|
|
if(sd) {
|
|
if(sd) {
|
|
if(battle_config.delay_dependon_dex && /* dexの影響を計算する */
|
|
if(battle_config.delay_dependon_dex && /* dexの影響を計算する */
|
|
- skill_get_delaynodex(skill, lv) > 0)
|
|
|
|
|
|
+ !skill_get_delaynodex(skill, lv)) // if skill casttime is allowed to be reduced by dex
|
|
time=time*(battle_config.castrate_dex_scale - battle_get_dex(bl))/battle_config.castrate_dex_scale;
|
|
time=time*(battle_config.castrate_dex_scale - battle_get_dex(bl))/battle_config.castrate_dex_scale;
|
|
- time=time*battle_config.delay_rate/100;
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ time=time*battle_config.delay_rate/100;
|
|
|
|
|
|
/* ブラギの詩 */
|
|
/* ブラギの詩 */
|
|
if(sc_data && sc_data[SC_POEMBRAGI].timer!=-1 )
|
|
if(sc_data && sc_data[SC_POEMBRAGI].timer!=-1 )
|
|
@@ -7807,11 +7810,6 @@ int skill_use_id( struct map_session_data *sd, int target_id,
|
|
if( casttime<=0 ) /* 詠唱の無いものはキャンセルされない */
|
|
if( casttime<=0 ) /* 詠唱の無いものはキャンセルされない */
|
|
sd->state.skillcastcancel=0;
|
|
sd->state.skillcastcancel=0;
|
|
|
|
|
|
- // instant cast attack skills depend on aspd as delay [celest]
|
|
|
|
- if (delay <= 0 && skill_db[skill_num].skill_type == BF_WEAPON) {
|
|
|
|
- delay = (battle_get_adelay (&sd->bl)/2) * battle_config.delay_rate / 100;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
sd->skilltarget = target_id;
|
|
sd->skilltarget = target_id;
|
|
/* sd->cast_target_bl = bl; */
|
|
/* sd->cast_target_bl = bl; */
|
|
sd->skillx = 0;
|
|
sd->skillx = 0;
|
|
@@ -7953,11 +7951,6 @@ int skill_use_pos( struct map_session_data *sd,
|
|
if( casttime<=0 ) /* 詠唱の無いものはキャンセルされない */
|
|
if( casttime<=0 ) /* 詠唱の無いものはキャンセルされない */
|
|
sd->state.skillcastcancel=0;
|
|
sd->state.skillcastcancel=0;
|
|
|
|
|
|
- // instant cast attack skills depend on aspd as delay [celest]
|
|
|
|
- if (delay <= 0 && skill_db[skill_num].skill_type == BF_WEAPON) {
|
|
|
|
- delay = (battle_get_adelay (&sd->bl)/2) * battle_config.delay_rate / 100;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
sd->skilltarget = 0;
|
|
sd->skilltarget = 0;
|
|
/* sd->cast_target_bl = NULL; */
|
|
/* sd->cast_target_bl = NULL; */
|
|
tick=gettick();
|
|
tick=gettick();
|