|
@@ -4600,9 +4600,10 @@ struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct bl
|
|
((TBL_PC *)src)->status.weapon == W_2HSWORD
|
|
((TBL_PC *)src)->status.weapon == W_2HSWORD
|
|
)) &&
|
|
)) &&
|
|
rnd()%100 < tsc->data[SC_REJECTSWORD]->val2
|
|
rnd()%100 < tsc->data[SC_REJECTSWORD]->val2
|
|
- ) {
|
|
|
|
|
|
+ )
|
|
|
|
+ {
|
|
ATK_RATER(wd.damage, 50)
|
|
ATK_RATER(wd.damage, 50)
|
|
- status_fix_damage(target,src,wd.damage,clif_damage(target,src,gettick(),0,0,wd.damage,0,0,0));
|
|
|
|
|
|
+ status_fix_damage(target,src,wd.damage,clif_damage(target,src,gettick(),0,0,wd.damage,0,DMG_NORMAL,0));
|
|
clif_skill_nodamage(target,target,ST_REJECTSWORD,tsc->data[SC_REJECTSWORD]->val1,1);
|
|
clif_skill_nodamage(target,target,ST_REJECTSWORD,tsc->data[SC_REJECTSWORD]->val1,1);
|
|
if( --(tsc->data[SC_REJECTSWORD]->val3) <= 0 )
|
|
if( --(tsc->data[SC_REJECTSWORD]->val3) <= 0 )
|
|
status_change_end(target, SC_REJECTSWORD, INVALID_TIMER);
|
|
status_change_end(target, SC_REJECTSWORD, INVALID_TIMER);
|
|
@@ -4618,7 +4619,7 @@ struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct bl
|
|
skill_blown(target, src, skill_get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1), unit_getdir(src), 0);
|
|
skill_blown(target, src, skill_get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1), unit_getdir(src), 0);
|
|
clif_skill_damage(target, src, gettick(), status_get_amotion(src), 0, rdamage,
|
|
clif_skill_damage(target, src, gettick(), status_get_amotion(src), 0, rdamage,
|
|
1, SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1, 6); // This is how official does
|
|
1, SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1, 6); // This is how official does
|
|
- clif_damage(src, target, gettick(), status_get_amotion(src)+1000, 0, rdamage/10, 1, 0, 0);
|
|
|
|
|
|
+ clif_damage(src, target, gettick(), status_get_amotion(src)+1000, 0, rdamage/10, 1, DMG_NORMAL, 0);
|
|
status_damage(target, src, rdamage, 0, 0, 0);
|
|
status_damage(target, src, rdamage, 0, 0, 0);
|
|
status_damage(src, target, rdamage/10, 0, 0, 1);
|
|
status_damage(src, target, rdamage/10, 0, 0, 1);
|
|
status_change_end(target, SC_CRESCENTELBOW, INVALID_TIMER);
|
|
status_change_end(target, SC_CRESCENTELBOW, INVALID_TIMER);
|
|
@@ -4804,7 +4805,7 @@ void battle_do_reflect(int attack_type, struct Damage *wd, struct block_list* sr
|
|
if (ssc && ssc->data[SC_DEVOTION] && (d_bl = map_id2bl(ssc->data[SC_DEVOTION]->val1)))
|
|
if (ssc && ssc->data[SC_DEVOTION] && (d_bl = map_id2bl(ssc->data[SC_DEVOTION]->val1)))
|
|
isDevotRdamage = true;
|
|
isDevotRdamage = true;
|
|
}
|
|
}
|
|
- rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
|
|
|
|
|
+ rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, DMG_ENDURE, 0);
|
|
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, sstatus->class_);
|
|
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, sstatus->class_);
|
|
//Use Reflect Shield to signal this kind of skill trigger. [Skotlex]
|
|
//Use Reflect Shield to signal this kind of skill trigger. [Skotlex]
|
|
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
|
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
|
@@ -4827,7 +4828,7 @@ void battle_do_reflect(int attack_type, struct Damage *wd, struct block_list* sr
|
|
if(attack_type == BF_WEAPON && tsc->data[SC_REFLECTDAMAGE] ) // Don't reflect your own damage (Grand Cross)
|
|
if(attack_type == BF_WEAPON && tsc->data[SC_REFLECTDAMAGE] ) // Don't reflect your own damage (Grand Cross)
|
|
map_foreachinshootrange(battle_damage_area,target,skill_get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd->amotion,sstatus->dmotion,rdamage,tstatus->race);
|
|
map_foreachinshootrange(battle_damage_area,target,skill_get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd->amotion,sstatus->dmotion,rdamage,tstatus->race);
|
|
else if(attack_type == BF_WEAPON || attack_type == BF_MISC) {
|
|
else if(attack_type == BF_WEAPON || attack_type == BF_MISC) {
|
|
- rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
|
|
|
|
|
+ rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, DMG_ENDURE, 0);
|
|
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, sstatus->class_);
|
|
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, sstatus->class_);
|
|
// It appears that official servers give skill reflect damage a longer delay
|
|
// It appears that official servers give skill reflect damage a longer delay
|
|
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
|
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
|
@@ -6559,7 +6560,7 @@ int battle_damage_area( struct block_list *bl, va_list ap) {
|
|
battle_delay_damage(tick, amotion,src,bl,0,CR_REFLECTSHIELD,0,damage,ATK_DEF,0,true);
|
|
battle_delay_damage(tick, amotion,src,bl,0,CR_REFLECTSHIELD,0,damage,ATK_DEF,0,true);
|
|
else
|
|
else
|
|
status_fix_damage(src,bl,damage,0);
|
|
status_fix_damage(src,bl,damage,0);
|
|
- clif_damage(bl,bl,tick,amotion,dmotion,damage,1,ATK_BLOCK,0);
|
|
|
|
|
|
+ clif_damage(bl,bl,tick,amotion,dmotion,damage,1,DMG_ENDURE,0);
|
|
skill_additional_effect(src, bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
|
skill_additional_effect(src, bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
|
map_freeblock_unlock();
|
|
map_freeblock_unlock();
|
|
}
|
|
}
|
|
@@ -6650,7 +6651,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
|
|
uint16 skill_lv = tsc->data[SC_AUTOCOUNTER]->val1;
|
|
uint16 skill_lv = tsc->data[SC_AUTOCOUNTER]->val1;
|
|
|
|
|
|
clif_skillcastcancel(target); //Remove the casting bar. [Skotlex]
|
|
clif_skillcastcancel(target); //Remove the casting bar. [Skotlex]
|
|
- clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS.
|
|
|
|
|
|
+ clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, DMG_NORMAL, 0); //Display MISS.
|
|
status_change_end(target, SC_AUTOCOUNTER, INVALID_TIMER);
|
|
status_change_end(target, SC_AUTOCOUNTER, INVALID_TIMER);
|
|
skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skill_lv,tick,0);
|
|
skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skill_lv,tick,0);
|
|
return ATK_BLOCK;
|
|
return ATK_BLOCK;
|
|
@@ -6664,7 +6665,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
|
|
status_change_end(target, SC_BLADESTOP_WAIT, INVALID_TIMER);
|
|
status_change_end(target, SC_BLADESTOP_WAIT, INVALID_TIMER);
|
|
if(sc_start4(src,src, SC_BLADESTOP, 100, sd?pc_checkskill(sd, MO_BLADESTOP):5, 0, 0, target->id, duration))
|
|
if(sc_start4(src,src, SC_BLADESTOP, 100, sd?pc_checkskill(sd, MO_BLADESTOP):5, 0, 0, target->id, duration))
|
|
{ //Target locked.
|
|
{ //Target locked.
|
|
- clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS.
|
|
|
|
|
|
+ clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, DMG_NORMAL, 0); //Display MISS.
|
|
clif_bladestop(target, src->id, 1);
|
|
clif_bladestop(target, src->id, 1);
|
|
sc_start4(src,target, SC_BLADESTOP, 100, skill_lv, 0, 0, src->id, duration);
|
|
sc_start4(src,target, SC_BLADESTOP, 100, skill_lv, 0, 0, src->id, duration);
|
|
return ATK_BLOCK;
|
|
return ATK_BLOCK;
|
|
@@ -6811,7 +6812,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
|
|
(d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce->val2] == target->id)
|
|
(d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce->val2] == target->id)
|
|
) && check_distance_bl(target, d_bl, sce->val3) )
|
|
) && check_distance_bl(target, d_bl, sce->val3) )
|
|
{
|
|
{
|
|
- clif_damage(d_bl, d_bl, gettick(), 0, 0, damage, 0, 0, 0);
|
|
|
|
|
|
+ clif_damage(d_bl, d_bl, gettick(), 0, 0, damage, 0, DMG_NORMAL, 0);
|
|
status_fix_damage(NULL, d_bl, damage, 0);
|
|
status_fix_damage(NULL, d_bl, damage, 0);
|
|
}
|
|
}
|
|
else
|
|
else
|