Follow up 3d27b7e
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
This commit is contained in:
parent
3d27b7e109
commit
4a4bced1b1
@ -1165,7 +1165,7 @@ ACMD_FUNC(heal)
|
||||
|
||||
if ( hp < 0 && sp <= 0 ) {
|
||||
status_damage(NULL, &sd->bl, -hp, -sp, 0, 0);
|
||||
clif_damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0, 4, 0);
|
||||
clif_damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0, DMG_ENDURE, 0);
|
||||
clif_displaymessage(fd, msg_txt(sd,156)); // HP or/and SP modified.
|
||||
return 0;
|
||||
}
|
||||
@ -1176,7 +1176,7 @@ ACMD_FUNC(heal)
|
||||
status_heal(&sd->bl, hp, 0, 0);
|
||||
else {
|
||||
status_damage(NULL, &sd->bl, -hp, 0, 0, 0);
|
||||
clif_damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0, 4, 0);
|
||||
clif_damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0, DMG_ENDURE, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4600,9 +4600,10 @@ struct Damage battle_calc_weapon_final_atk_modifiers(struct Damage wd, struct bl
|
||||
((TBL_PC *)src)->status.weapon == W_2HSWORD
|
||||
)) &&
|
||||
rnd()%100 < tsc->data[SC_REJECTSWORD]->val2
|
||||
) {
|
||||
)
|
||||
{
|
||||
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);
|
||||
if( --(tsc->data[SC_REJECTSWORD]->val3) <= 0 )
|
||||
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);
|
||||
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
|
||||
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(src, target, rdamage/10, 0, 0, 1);
|
||||
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)))
|
||||
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_);
|
||||
//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);
|
||||
@ -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)
|
||||
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) {
|
||||
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_);
|
||||
// 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);
|
||||
@ -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);
|
||||
else
|
||||
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);
|
||||
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;
|
||||
|
||||
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);
|
||||
skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skill_lv,tick,0);
|
||||
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);
|
||||
if(sc_start4(src,src, SC_BLADESTOP, 100, sd?pc_checkskill(sd, MO_BLADESTOP):5, 0, 0, target->id, duration))
|
||||
{ //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);
|
||||
sc_start4(src,target, SC_BLADESTOP, 100, skill_lv, 0, 0, src->id, duration);
|
||||
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)
|
||||
) && 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);
|
||||
}
|
||||
else
|
||||
|
@ -60,7 +60,7 @@ struct Damage {
|
||||
#endif
|
||||
int64 damage, /// Right hand damage
|
||||
damage2; /// Left hand damage
|
||||
char type; /// chk clif_damage for type @TODO add an enum ?
|
||||
enum e_damage_type type; /// chk clif_damage for type
|
||||
short div_; /// Number of hit
|
||||
int amotion,
|
||||
dmotion;
|
||||
|
@ -4401,7 +4401,7 @@ int clif_damage(struct block_list* src, struct block_list* dst, unsigned int tic
|
||||
*------------------------------------------*/
|
||||
void clif_takeitem(struct block_list* src, struct block_list* dst)
|
||||
{
|
||||
//clif_damage(src,dst,0,0,0,0,0,1,0);
|
||||
//clif_damage(src,dst,0,0,0,0,0,DMG_PICKUP_ITEM,0);
|
||||
unsigned char buf[32];
|
||||
|
||||
nullpo_retv(src);
|
||||
|
@ -449,7 +449,7 @@ void clif_dropitem(struct map_session_data *sd,int n,int amount); //self
|
||||
void clif_delitem(struct map_session_data *sd,int n,int amount, short reason); //self
|
||||
void clif_updatestatus(struct map_session_data *sd,int type); //self
|
||||
void clif_changestatus(struct map_session_data* sd,int type,int val); //area
|
||||
int clif_damage(struct block_list* src, struct block_list* dst, unsigned int tick, int sdelay, int ddelay, int64 sdamage, int div, int type, int64 sdamage2); // area
|
||||
int clif_damage(struct block_list* src, struct block_list* dst, unsigned int tick, int sdelay, int ddelay, int64 sdamage, int div, enum e_damage_type type, int64 sdamage2); // area
|
||||
void clif_takeitem(struct block_list* src, struct block_list* dst);
|
||||
void clif_sitting(struct block_list* bl);
|
||||
void clif_standing(struct block_list* bl);
|
||||
|
@ -3112,12 +3112,12 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
||||
) && check_distance_bl(bl, d_bl, sce->val3) )
|
||||
{
|
||||
if(!rmdamage){
|
||||
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);
|
||||
} else {//Reflected magics are done directly on the target not on paladin
|
||||
//This check is only for magical skill.
|
||||
//For BF_WEAPON skills types track var rdamage and function battle_calc_return_damage
|
||||
clif_damage(bl,bl, gettick(), 0, 0, damage, 0, 0, 0);
|
||||
clif_damage(bl,bl, gettick(), 0, 0, damage, 0, DMG_NORMAL, 0);
|
||||
status_fix_damage(bl,bl, damage, 0);
|
||||
}
|
||||
}
|
||||
@ -4497,7 +4497,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
|
||||
break;
|
||||
case CH_PALMSTRIKE: // Palm Strike takes effect 1sec after casting. [Skotlex]
|
||||
// clif_skill_nodamage(src,bl,skill_id,skill_lv,0); //Can't make this one display the correct attack animation delay :/
|
||||
clif_damage(src,bl,tick,status_get_amotion(src),0,-1,1,4,0); //Display an absorbed damage attack.
|
||||
clif_damage(src,bl,tick,status_get_amotion(src),0,-1,1,DMG_ENDURE,0); //Display an absorbed damage attack.
|
||||
skill_addtimerskill(src, tick + (1000+status_get_amotion(src)), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag);
|
||||
break;
|
||||
|
||||
@ -7890,7 +7890,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
case 3: // 1000 damage, random armor destroyed
|
||||
{
|
||||
status_fix_damage(src, bl, 1000, 0);
|
||||
clif_damage(src,bl,tick,0,0,1000,0,0,0);
|
||||
clif_damage(src,bl,tick,0,0,1000,0,DMG_NORMAL,0);
|
||||
if( !status_isdead(bl) ) {
|
||||
int where[] = { EQP_ARMOR, EQP_SHIELD, EQP_HELM, EQP_SHOES, EQP_GARMENT };
|
||||
skill_break_equip(src,bl, where[rnd()%5], 10000, BCT_ENEMY);
|
||||
@ -7927,14 +7927,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
break;
|
||||
case 10: // 6666 damage, atk matk halved, cursed
|
||||
status_fix_damage(src, bl, 6666, 0);
|
||||
clif_damage(src,bl,tick,0,0,6666,0,0,0);
|
||||
clif_damage(src,bl,tick,0,0,6666,0,DMG_NORMAL,0);
|
||||
sc_start(src,bl,SC_INCATKRATE,100,-50,skill_get_time2(skill_id,skill_lv));
|
||||
sc_start(src,bl,SC_INCMATKRATE,100,-50,skill_get_time2(skill_id,skill_lv));
|
||||
sc_start(src,bl,SC_CURSE,skill_lv,100,skill_get_time2(skill_id,skill_lv));
|
||||
break;
|
||||
case 11: // 4444 damage
|
||||
status_fix_damage(src, bl, 4444, 0);
|
||||
clif_damage(src,bl,tick,0,0,4444,0,0,0);
|
||||
clif_damage(src,bl,tick,0,0,4444,0,DMG_NORMAL,0);
|
||||
break;
|
||||
case 12: // stun
|
||||
sc_start(src,bl,SC_STUN,100,skill_lv,5000);
|
||||
@ -9401,7 +9401,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
sc_start(src,bl, type, 100, skill_lv,skill_get_time(skill_id, skill_lv));
|
||||
} else if( flag&2 ) {
|
||||
if( src->id != bl->id && battle_check_target(src,bl,BCT_ENEMY) > 0 )
|
||||
status_fix_damage(src,bl,9999,clif_damage(src,bl,tick,0,0,9999,0,0,0));
|
||||
status_fix_damage(src,bl,9999,clif_damage(src,bl,tick,0,0,9999,0,DMG_NORMAL,0));
|
||||
} else if( sd ) {
|
||||
short chance = sstatus->int_/6 + sd->status.job_level/5 + skill_lv*4;
|
||||
if( !sd->status.party_id || (rnd()%100 > chance)) {
|
||||
@ -9417,7 +9417,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
clif_skill_nodamage(src, bl, skill_id, skill_lv,
|
||||
sc_start(src,src,SC_STOP,100,skill_lv,skill_get_time2(skill_id,skill_lv)));
|
||||
if( flag&2 ) // Dealed here to prevent conflicts
|
||||
status_fix_damage(src,bl,9999,clif_damage(src,bl,tick,0,0,9999,0,0,0));
|
||||
status_fix_damage(src,bl,9999,clif_damage(src,bl,tick,0,0,9999,0,DMG_NORMAL,0));
|
||||
}
|
||||
break;
|
||||
case WM_SONG_OF_MANA:
|
||||
@ -16511,7 +16511,7 @@ bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit) {
|
||||
return false;
|
||||
}
|
||||
|
||||
status_damage(bl, src, damage, 0, clif_damage(src, src, gettick(), 500, 500, damage, hit, (hit > 1 ? 8 : 0), 0), 0);
|
||||
status_damage(bl, src, damage, 0, clif_damage(src, src, gettick(), 500, 500, damage, hit, (hit > 1 ? DMG_MULTI_HIT : DMG_NORMAL), 0), 0);
|
||||
if( sc && sc->data[SC__SHADOWFORM] && (--sc->data[SC__SHADOWFORM]->val3) <= 0 ) {
|
||||
status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
|
||||
if( src->type == BL_PC )
|
||||
|
@ -10790,7 +10790,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
||||
struct block_list* src = map_id2bl(sce->val2);
|
||||
if( tid == -1 || !src)
|
||||
break; // Terminated by Damage
|
||||
status_fix_damage(src,bl,400*sce->val1,clif_damage(bl,bl,gettick(),0,0,400*sce->val1,0,0,0));
|
||||
status_fix_damage(src,bl,400*sce->val1,clif_damage(bl,bl,gettick(),0,0,400*sce->val1,0,DMG_NORMAL,0));
|
||||
}
|
||||
break;
|
||||
case SC_WUGDASH:
|
||||
@ -11554,7 +11554,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
case SC_PYREXIA:
|
||||
if( --(sce->val4) >= 0 ) {
|
||||
map_freeblock_lock();
|
||||
clif_damage(bl,bl,tick,status_get_amotion(bl),status_get_dmotion(bl)+500,100,0,0,0);
|
||||
clif_damage(bl,bl,tick,status_get_amotion(bl),status_get_dmotion(bl)+500,100,0,DMG_NORMAL,0);
|
||||
status_fix_damage(NULL,bl,100,0);
|
||||
if( sc->data[type] ) {
|
||||
sc_timer_next(3000+tick,status_change_timer,bl->id,data);
|
||||
@ -11570,7 +11570,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
damage += status->vit * (sce->val1 - 3);
|
||||
unit_skillcastcancel(bl,2);
|
||||
map_freeblock_lock();
|
||||
status_damage(bl, bl, damage, 0, clif_damage(bl,bl,tick,status_get_amotion(bl),status_get_dmotion(bl)+500,damage,1,0,0), 1);
|
||||
status_damage(bl, bl, damage, 0, clif_damage(bl,bl,tick,status_get_amotion(bl),status_get_dmotion(bl)+500,damage,1,DMG_NORMAL,0), 1);
|
||||
if( sc->data[type] ) {
|
||||
sc_timer_next(1000 + tick, status_change_timer, bl->id, data );
|
||||
}
|
||||
@ -11627,7 +11627,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
case SC_TOXIN:
|
||||
if( --(sce->val4) >= 0 ) { // Damage is every 10 seconds including 3%sp drain.
|
||||
map_freeblock_lock();
|
||||
clif_damage(bl,bl,tick,status_get_amotion(bl),1,1,0,0,0);
|
||||
clif_damage(bl,bl,tick,status_get_amotion(bl),1,1,0,DMG_NORMAL,0);
|
||||
status_damage(NULL, bl, 1, status->max_sp * 3 / 100, 0, 0); // Cancel dmg only if cancelable
|
||||
if( sc->data[type] ) {
|
||||
sc_timer_next(10000 + tick, status_change_timer, bl->id, data );
|
||||
@ -11677,7 +11677,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
int damage = 1000 + 3 * status_get_max_hp(bl) / 100; // Deals fixed (1000 + 3%*MaxHP)
|
||||
|
||||
map_freeblock_lock();
|
||||
clif_damage(bl,bl,tick,0,0,damage,1,9,0); // Damage is like endure effect with no walk delay
|
||||
clif_damage(bl,bl,tick,0,0,damage,1,DMG_MULTI_HIT_ENDURE,0); // Damage is like endure effect with no walk delay
|
||||
status_damage(src, bl, damage, 0, 0, 1);
|
||||
if( sc->data[type]) { // Target still lives. [LimitLine]
|
||||
sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
|
||||
@ -11781,7 +11781,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
break;
|
||||
map_freeblock_lock();
|
||||
damage = 200 + 100 * sce->val1 + status_get_int(src);
|
||||
status_damage(src, bl, damage, 0, clif_damage(bl,bl,tick,status->amotion,status->dmotion+200,damage,1,0,0), 0);
|
||||
status_damage(src, bl, damage, 0, clif_damage(bl,bl,tick,status->amotion,status->dmotion+200,damage,1,DMG_NORMAL,0), 0);
|
||||
unit_skillcastcancel(bl,1);
|
||||
if ( sc->data[type] ) {
|
||||
sc_timer_next(1000 + tick, status_change_timer, bl->id, data);
|
||||
@ -11888,7 +11888,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
int damage = status->max_hp / 100; // Suggestion 1% each second
|
||||
if( damage >= status->hp ) damage = status->hp - 1; // Do not kill, just keep you with 1 hp minimum
|
||||
map_freeblock_lock();
|
||||
status_fix_damage(NULL,bl,damage,clif_damage(bl,bl,tick,0,0,damage,0,0,0));
|
||||
status_fix_damage(NULL,bl,damage,clif_damage(bl,bl,tick,0,0,damage,0,DMG_NORMAL,0));
|
||||
if( sc->data[type] ) {
|
||||
sc_timer_next(1000 + tick, status_change_timer, bl->id, data);
|
||||
}
|
||||
@ -11972,7 +11972,7 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||
int damage = sce->val2;
|
||||
|
||||
map_freeblock_lock();
|
||||
clif_damage(bl, bl, tick, 0, 0, damage, 1, 9, 0);
|
||||
clif_damage(bl, bl, tick, 0, 0, damage, 1, DMG_MULTI_HIT_ENDURE, 0);
|
||||
status_damage(src, bl, damage,0, 0, 1);
|
||||
if( sc->data[type] ) {
|
||||
sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
|
||||
|
Loading…
x
Reference in New Issue
Block a user