diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index b121a967e6..9e80e830ce 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -1286,7 +1286,7 @@ ACMD_FUNC(alive) clif_displaymessage(fd, msg_txt(sd,667)); // You're not dead. return -1; } - clif_skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1); + clif_skill_nodamage(&sd->bl,sd->bl,ALL_RESURRECTION,4); clif_displaymessage(fd, msg_txt(sd,16)); // You've been revived! It's a miracle! return 0; } @@ -3592,7 +3592,7 @@ static void atcommand_raise_sub(map_session_data* sd) { status_revive(&sd->bl, 100, 100); - clif_skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1); + clif_skill_nodamage(&sd->bl,sd->bl,ALL_RESURRECTION,4); clif_displaymessage(sd->fd, msg_txt(sd,63)); // Mercy has been shown. } @@ -6317,7 +6317,7 @@ ACMD_FUNC(displayskill) if (type == 0 || type == 2) clif_skill_damage(&sd->bl, &sd->bl, tick, status->amotion, status->dmotion, 1, 1, skill_id, skill_lv, DMG_SPLASH); if (type == 0 || type == 3) - clif_skill_nodamage(&sd->bl, &sd->bl, skill_id, skill_lv, 1); + clif_skill_nodamage(&sd->bl, sd->bl, skill_id, skill_lv); if (type == 0 || type == 4) clif_skill_poseffect(&sd->bl, skill_id, skill_lv, sd->bl.x, sd->bl.y, tick); return 0; diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 52cf218c58..6f7cff4eef 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -1290,7 +1290,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe // Weapon Blocking can be triggered while the above statuses are active. if ((sce = sc->getSCE(SC_WEAPONBLOCKING)) && flag & (BF_SHORT | BF_WEAPON) && rnd() % 100 < sce->val2) { - clif_skill_nodamage(target, src, GC_WEAPONBLOCKING, sce->val1, 1); + clif_skill_nodamage(target, *src, GC_WEAPONBLOCKING, sce->val1); sc_start(src, target, SC_WEAPONBLOCK_ON, 100, src->id, skill_get_time2(GC_WEAPONBLOCKING, sce->val1)); d->dmg_lv = ATK_BLOCK; return false; @@ -1407,12 +1407,12 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce_d->val2] == target->id)) && check_distance_bl(target, d_bl, sce_d->val3)) { //If player is target of devotion, show guard effect on the devotion caster rather than the target - clif_skill_nodamage(d_bl, d_bl, CR_AUTOGUARD, sce->val1, 1); + clif_skill_nodamage(d_bl, *d_bl, CR_AUTOGUARD, sce->val1); unit_set_walkdelay(d_bl, gettick(), delay, 1); d->dmg_lv = ATK_MISS; return false; } else { - clif_skill_nodamage(target, target, CR_AUTOGUARD, sce->val1, 1); + clif_skill_nodamage(target, *target, CR_AUTOGUARD, sce->val1); unit_set_walkdelay(target, gettick(), delay, 1); #ifdef RENEWAL if (sc->getSCE(SC_SHRINK)) @@ -1455,7 +1455,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe return false; if ((sce = sc->getSCE(SC_PARRYING)) && flag&BF_WEAPON && skill_id != WS_CARTTERMINATION && rnd() % 100 < sce->val2) { - clif_skill_nodamage(target, target, LK_PARRYING, sce->val1, 1); + clif_skill_nodamage(target, *target, LK_PARRYING, sce->val1); if (skill_id == LK_PARRYING) { unit_data *ud = unit_bl2ud(target); @@ -1471,7 +1471,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe if (sd && pc_issit(sd)) pc_setstand(sd, true); //Stand it to dodge. - clif_skill_nodamage(target, target, TK_DODGE, 1, 1); + clif_skill_nodamage(target, *target, TK_DODGE, 1); sc_start4(src, target, SC_COMBO, 100, TK_JUMPKICK, src->id, 1, 0, 2000); return false; } @@ -6990,7 +6990,7 @@ static void battle_calc_weapon_final_atk_modifiers(struct Damage* wd, struct blo ) { ATK_RATER(wd->damage, 50) - clif_skill_nodamage(target,target,ST_REJECTSWORD, tsc->getSCE(SC_REJECTSWORD)->val1,1); + clif_skill_nodamage(target, *target,ST_REJECTSWORD, tsc->getSCE(SC_REJECTSWORD)->val1); battle_fix_damage(target,src,wd->damage,clif_damage(*target,*src,gettick(),0,0,wd->damage,0,DMG_NORMAL,0,false),ST_REJECTSWORD); if (status_isdead(*target)) return; @@ -9434,7 +9434,7 @@ struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct bl status_change_entry *tsce = tsc->getSCE(SC_WEAPONBLOCKING); if (attack_type == BF_WEAPON && rnd() % 100 < tsce->val2) { - clif_skill_nodamage(target, bl, GC_WEAPONBLOCKING, tsce->val1, 1); + clif_skill_nodamage(target, *bl, GC_WEAPONBLOCKING, tsce->val1); sc_start(bl, target, SC_WEAPONBLOCK_ON, 100, bl->id, skill_get_time2(GC_WEAPONBLOCKING, tsce->val1)); } } @@ -9973,7 +9973,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t } if (tsc && tsc->getSCE(SC_MTF_MLEATKED) && rnd()%100 < tsc->getSCE(SC_MTF_MLEATKED)->val2) - clif_skill_nodamage(target, target, SM_ENDURE, tsc->getSCE(SC_MTF_MLEATKED)->val1, sc_start(src, target, SC_ENDURE, 100, tsc->getSCE(SC_MTF_MLEATKED)->val1, skill_get_time(SM_ENDURE, tsc->getSCE(SC_MTF_MLEATKED)->val1))); + clif_skill_nodamage(target, *target, SM_ENDURE, tsc->getSCE(SC_MTF_MLEATKED)->val1, sc_start(src, target, SC_ENDURE, 100, tsc->getSCE(SC_MTF_MLEATKED)->val1, skill_get_time(SM_ENDURE, tsc->getSCE(SC_MTF_MLEATKED)->val1))); if(tsc && tsc->getSCE(SC_KAAHI) && tstatus->hp < tstatus->max_hp && status_charge(target, 0, tsc->getSCE(SC_KAAHI)->val3)) { int hp_heal = tstatus->max_hp - tstatus->hp; diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 30d19fbe81..43ca528e5e 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -6076,45 +6076,35 @@ int clif_skill_damage2(struct block_list *src,struct block_list *dst,t_tick tick /// Non-damaging skill effect -/// 011a .W .W .L .L .B (ZC_USE_SKILL). -/// 09cb .W .L .L .L .B (ZC_USE_SKILL2). -bool clif_skill_nodamage(struct block_list *src,struct block_list *dst, uint16 skill_id, int heal, t_tick tick) -{ - unsigned char buf[17]; -#if PACKETVER < 20130731 - const int cmd = 0x11a; -#else - const int cmd = 0x9cb; -#endif - int offset = 0; - bool success = ( tick != 0 ); +/// 011a .W .W .L .L .B (ZC_USE_SKILL) +/// 09cb .W .L .L .L .B (ZC_USE_SKILL2) +bool clif_skill_nodamage( block_list* src, block_list& dst, uint16 skill_id, int32 heal, bool success ){ + PACKET_ZC_USE_SKILL p{}; - nullpo_ret(dst); - - WBUFW(buf,0) = cmd; - WBUFW(buf,2) = skill_id; -#if PACKETVER < 20130731 - WBUFW(buf,4) = min(heal, INT16_MAX); -#else - WBUFL(buf,4) = min(heal, INT32_MAX); - offset += 2; -#endif - WBUFL(buf,6+offset) = dst->id; - WBUFL(buf,10+offset) = src ? src->id : 0; - WBUFB(buf,14+offset) = success; - - if (disguised(dst)) { - clif_send(buf, packet_len(cmd), dst, AREA_WOS); - WBUFL(buf,6+offset) = disguised_bl_id(dst->id); - clif_send(buf, packet_len(cmd), dst, SELF); + p.PacketType = HEADER_ZC_USE_SKILL; + p.SKID = skill_id; + p.level = std::min( static_cast( heal ), std::numeric_limits::max() ); + p.targetAID = dst.id; + p.result = success; + if(src != nullptr){ + p.srcAID = src->id; + }else{ + p.srcAID = 0; + } + if (disguised(&dst)) { + clif_send(&p, sizeof(p), &dst, AREA_WOS); + p.targetAID = disguised_bl_id(dst.id); + clif_send(&p, sizeof(p), &dst, SELF); } else - clif_send(buf, packet_len(cmd), dst, AREA); + clif_send(&p, sizeof(p), &dst, AREA); - if(src && disguised(src)) { - WBUFL(buf,10+offset) = disguised_bl_id(src->id); - if (disguised(dst)) - WBUFL(buf,6+offset) = dst->id; - clif_send(buf, packet_len(cmd), src, SELF); + if(src != nullptr && disguised(src)) { + p.srcAID = disguised_bl_id(src->id); + if (disguised(&dst)){ + // It is necessary to revert the changes done above for the disguised target + p.targetAID = dst.id; + } + clif_send(&p, sizeof(p), src, SELF); } return success; @@ -15063,7 +15053,7 @@ void clif_parse_NoviceExplosionSpirits(int fd, map_session_data *sd) if( percent && ( percent%100 ) == 0 ) {// 10.0%, 20.0%, ..., 90.0% sc_start(&sd->bl,&sd->bl, SC_EXPLOSIONSPIRITS, 100, 17, skill_get_time(MO_EXPLOSIONSPIRITS, 5)); //Lv17-> +50 critical (noted by Poki) [Skotlex] - clif_skill_nodamage(&sd->bl, &sd->bl, MO_EXPLOSIONSPIRITS, 5, 1); // prayer always shows successful Lv5 cast and disregards noskill restrictions + clif_skill_nodamage(&sd->bl, sd->bl, MO_EXPLOSIONSPIRITS, 5); // prayer always shows successful Lv5 cast and disregards noskill restrictions } } } diff --git a/src/map/clif.hpp b/src/map/clif.hpp index 82d50f2987..5b5c5f4b35 100644 --- a/src/map/clif.hpp +++ b/src/map/clif.hpp @@ -941,7 +941,7 @@ void clif_skill_fail( map_session_data& sd, uint16 skill_id, enum useskill_fail_ void clif_skill_cooldown( map_session_data &sd, uint16 skill_id, t_tick tick ); int clif_skill_damage(struct block_list *src,struct block_list *dst,t_tick tick,int sdelay,int ddelay,int64 sdamage,int div,uint16 skill_id,uint16 skill_lv,enum e_damage_type type); //int clif_skill_damage2(struct block_list *src,struct block_list *dst,t_tick tick,int sdelay,int ddelay,int damage,int div,uint16 skill_id,uint16 skill_lv,enum e_damage_type type); -bool clif_skill_nodamage(struct block_list *src,struct block_list *dst,uint16 skill_id,int heal,t_tick tick); +bool clif_skill_nodamage( block_list* src, block_list& dst, uint16 skill_id, int32 heal, bool success = true ); void clif_skill_poseffect(struct block_list *src,uint16 skill_id,int val,int x,int y,t_tick tick); void clif_skill_estimation(map_session_data *sd,struct block_list *dst); void clif_skill_warppoint( map_session_data& sd, uint16 skill_id, uint16 skill_lv, std::vector& maps ); diff --git a/src/map/clif_packetdb.hpp b/src/map/clif_packetdb.hpp index 0bd77dc2fd..5a9439462e 100644 --- a/src/map/clif_packetdb.hpp +++ b/src/map/clif_packetdb.hpp @@ -133,7 +133,6 @@ packet(0x0117,18); parseable_packet(0x0118,2,clif_parse_StopAttack,0); packet(0x0119,13); - packet(0x011a,15); parseable_packet(0x011b,20,clif_parse_UseSkillMap,2,4); parseable_packet(0x011d,2,clif_parse_RequestMemo,0); packet(0x011f,16); @@ -1746,7 +1745,6 @@ // 2013-07-31cRagexe #if PACKETVER >= 20130731 packet(0x09ca,23); // ZC_SKILL_ENTRY5 - packet(0x09cb,17); // ZC_USE_SKILL2 #endif // 2013-08-07Ragexe diff --git a/src/map/mob.cpp b/src/map/mob.cpp index d903ec0900..28994b3138 100644 --- a/src/map/mob.cpp +++ b/src/map/mob.cpp @@ -3682,7 +3682,7 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id) if (md2->state.copy_master_mode) md->status.mode = md2->status.mode; - clif_skill_nodamage(&md->bl,&md->bl,skill_id,amount,1); + clif_skill_nodamage(&md->bl,md->bl,skill_id,amount); } return 0; diff --git a/src/map/pc.cpp b/src/map/pc.cpp index bb8946c57d..03bbec9e6b 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -10053,7 +10053,7 @@ bool pc_revive_item(map_session_data *sd) { else pc_delitem(sd, item_position, 1, 0, 1, LOG_TYPE_CONSUME); - clif_skill_nodamage(&sd->bl, &sd->bl, ALL_RESURRECTION, 4, 1); + clif_skill_nodamage(&sd->bl, sd->bl, ALL_RESURRECTION, 4); return true; } diff --git a/src/map/pet.cpp b/src/map/pet.cpp index d8d13a9363..0c0ffaabf8 100644 --- a/src/map/pet.cpp +++ b/src/map/pet.cpp @@ -2073,7 +2073,7 @@ TIMER_FUNC(pet_recovery_timer){ if(sd->sc.getSCE(pd->recovery->type)) { //Display a heal animation? //Detoxify is chosen for now. - clif_skill_nodamage(&pd->bl,&sd->bl,TF_DETOXIFY,1,1); + clif_skill_nodamage(&pd->bl,sd->bl,TF_DETOXIFY,1); status_change_end(&sd->bl, pd->recovery->type); clif_emotion(&pd->bl, ET_OK); } @@ -2116,7 +2116,7 @@ TIMER_FUNC(pet_heal_timer){ pet_stop_attack(pd); pet_stop_walking(pd,1); - clif_skill_nodamage(&pd->bl,&sd->bl,AL_HEAL,pd->s_skill->lv,1); + clif_skill_nodamage(&pd->bl,sd->bl,AL_HEAL,pd->s_skill->lv); status_heal(&sd->bl, pd->s_skill->lv,0, 0); pd->s_skill->timer = add_timer(tick+pd->s_skill->delay*1000,pet_heal_timer,sd->bl.id,0); return 0; diff --git a/src/map/script.cpp b/src/map/script.cpp index fc51fcf013..1c8c00ea42 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -15343,7 +15343,7 @@ static inline void script_skill_effect( block_list& bl, uint16 skill_id, uint16 clif_skill_poseffect(&bl, skill_id, skill_lv, x, y, gettick()); break; case CAST_NODAMAGE: - clif_skill_nodamage(&bl, &bl, skill_id, skill_lv, 1); + clif_skill_nodamage(&bl, bl, skill_id, skill_lv); break; case CAST_DAMAGE: clif_skill_damage(&bl, &bl, gettick(), status_get_amotion(&bl), status_get_dmotion(&bl), 0, 1, skill_id, skill_lv, skill_get_hit(skill_id)); diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 1f4d9b85ca..c2bfc9795b 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -1390,7 +1390,7 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl, uint (skill=pc_checkskill(sd,RG_SNATCHER)) > 0 && (skill*15 + 55) + pc_checkskill(sd,TF_STEAL)*10 > rnd()%1000) { if(pc_steal_item(sd,bl,pc_checkskill(sd,TF_STEAL))) - clif_skill_nodamage(src,bl,TF_STEAL,skill,1); + clif_skill_nodamage(src,*bl,TF_STEAL,skill); else clif_skill_fail( *sd, RG_SNATCHER ); } @@ -1796,7 +1796,7 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl, uint break; case GS_DISARM: skill_strip_equip(src, bl, skill_id, skill_lv); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case NPC_EVILLAND: sc_start(src,bl,SC_BLIND,5*skill_lv,skill_lv,skill_get_time2(skill_id,skill_lv)); @@ -2647,7 +2647,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list * (rate=pc_checkskill(sd,HW_SOULDRAIN))>0 ){ //Soul Drain should only work on targetted spells [Skotlex] if (pc_issit(sd)) pc_setstand(sd, true); //Character stuck in attacking animation while 'sitting' fix. [Skotlex] - clif_skill_nodamage(src,bl,HW_SOULDRAIN,rate,1); + clif_skill_nodamage(src,*bl,HW_SOULDRAIN,rate); status_heal(src, 0, status_get_lv(bl)*(95+15*rate)/100, 2); } @@ -3701,7 +3701,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list * if(tsc && tsc->getSCE(SC_MAGICROD) && src == dsrc) { int sp = skill_get_sp(skill_id,skill_lv); #ifndef RENEWAL - clif_skill_nodamage(bl,bl,SA_MAGICROD,skill_lv,1); + clif_skill_nodamage(bl,*bl,SA_MAGICROD,skill_lv); #endif dmg.damage = dmg.damage2 = 0; dmg.dmg_lv = ATK_MISS; //This will prevent skill additional effect from taking effect. [Skotlex] @@ -3919,7 +3919,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list * if (dmg.div_ < 2) type = DMG_SPLASH; if (!(flag&SD_ANIMATION)) - clif_skill_nodamage(dsrc, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(dsrc, *bl, skill_id, skill_lv); [[fallthrough]]; case WM_REVERBERATION: dmg.dmotion = clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skill_id, -2, dmg_type); @@ -4119,7 +4119,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list * if( ssc && ssc->getSCE(SC_POISONINGWEAPON) && rnd()%100 < 70 + 5*skill_lv ) { sc_start4(src, bl, (sc_type)ssc->getSCE(SC_POISONINGWEAPON)->val2, 100, ssc->getSCE(SC_POISONINGWEAPON)->val1, 0, 1, 0, skill_get_time2(GC_POISONINGWEAPON, 1)); status_change_end(src,SC_POISONINGWEAPON); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } } break; @@ -4581,7 +4581,7 @@ static TIMER_FUNC(skill_timerskill){ switch(skl->skill_id) { case KN_AUTOCOUNTER: - clif_skill_nodamage(src,target,skl->skill_id,skl->skill_lv,1); + clif_skill_nodamage(src,*target,skl->skill_id,skl->skill_lv); break; case RG_INTIMIDATE: if (unit_warp(src,-1,-1,-1,CLR_TELEPORT) == 0) { @@ -4682,7 +4682,7 @@ static TIMER_FUNC(skill_timerskill){ case WL_TETRAVORTEX_WATER: case WL_TETRAVORTEX_WIND: case WL_TETRAVORTEX_GROUND: - clif_skill_nodamage(src,target,skl->skill_id,skl->skill_lv,1); + clif_skill_nodamage(src,*target,skl->skill_id,skl->skill_lv); skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_LEVEL|SD_ANIMATION); if (skl->type >= 3) { // Final Hit if (!status_isdead(*target)) { // Final Status Effect @@ -5288,7 +5288,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case TR_RHYTHMSHOOTING: case HN_MEGA_SONIC_BLOW: case HN_SPIRAL_PIERCE_MAX: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); if (skill_id == DK_DRAGONIC_AURA) sc_start(src, src, SC_DRAGONIC_AURA, 100, skill_lv, skill_get_time(skill_id,skill_lv)); @@ -5299,7 +5299,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint sc_start(src, src, SC_E_SLASH_COUNT, 100, min( 5, 1 + sc->getSCE(SC_E_SLASH_COUNT)->val1 ), skill_get_time(skill_id, skill_lv)); else sc_start(src, src, SC_E_SLASH_COUNT, 100, 1, skill_get_time(skill_id, skill_lv)); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); break; @@ -5310,12 +5310,12 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint status_change_end(src, SC_CLOAKING); status_change_end(src, SC_CLOAKINGEXCEED); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); break; case WH_CRESCIVE_BOLT: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); if( sc && sc->getSCE(SC_CRESCIVEBOLT) ) sc_start(src, src, SC_CRESCIVEBOLT, 100, min( 3, 1 + sc->getSCE(SC_CRESCIVEBOLT)->val1 ), skill_get_time(skill_id, skill_lv)); @@ -5328,7 +5328,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if (skill_check_unit_movepos(5, src, bl->x, bl->y, 0, 1)) skill_blown(src, src, 1, (map_calc_dir(bl, src->x, src->y) + 4) % 8, BLOWN_NONE); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); break; @@ -5365,7 +5365,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint break; case TK_STORMKICK: // Taekwon kicks [Dralnu] - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); skill_area_temp[1] = 0; map_foreachinshootrange(skill_attack_area, src, skill_get_splash(skill_id, skill_lv), BL_CHAR|BL_SKILL, @@ -5435,7 +5435,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case AG_CRIMSON_ARROW: skill_area_temp[1] = bl->id; if (skill_id == AG_STORM_CANNON || skill_id == AG_CRIMSON_ARROW) - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (battle_config.skill_eightpath_algorithm) { //Use official AoE algorithm if (!(map_foreachindir(skill_attack_area, src->m, src->x, src->y, bl->x, bl->y, @@ -5573,7 +5573,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint break; case SU_PICKYPECK: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); [[fallthrough]]; case SU_BITE: skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); @@ -5769,7 +5769,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint switch (skill_id) { case NPC_VAMPIRE_GIFT: if (heal > 0) { - clif_skill_nodamage(nullptr, src, AL_HEAL, heal, 1); + clif_skill_nodamage(nullptr, *src, AL_HEAL, heal); status_heal(src, heal, 0, 0); } break; @@ -5807,7 +5807,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case DK_HACKANDSLASHER: case MT_SPARK_BLASTER: case HN_JUPITEL_THUNDER_STORM: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; #ifdef RENEWAL case NJ_HUUMA: @@ -5833,7 +5833,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint // Jump to the target before attacking. if (skill_check_unit_movepos(5, src, bl->x, bl->y, 0, 1)) skill_blown(src, src, 1, (map_calc_dir(bl, src->x, src->y) + 4) % 8, BLOWN_NONE); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);// Trigger animation on servants. + clif_skill_nodamage(src, *bl, skill_id, skill_lv);// Trigger animation on servants. break; case SHC_SAVAGE_IMPACT: { if( sc && sc->getSCE( SC_CLOAKINGEXCEED ) ){ @@ -5849,7 +5849,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint // Move the player 1 cell near the target, between the target and the player if (skill_check_unit_movepos(5, src, bl->x + dirx[dir], bl->y + diry[dir], 0, 1)) clif_blown(src); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; } case SHC_FATAL_SHADOW_CROW: { @@ -5861,7 +5861,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint // Move the player 1 cell near the target, between the target and the player if (skill_check_unit_movepos(5, src, bl->x + dirx[dir], bl->y + diry[dir], 0, 1)) clif_blown(src); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);// Trigger animation + clif_skill_nodamage(src, *bl, skill_id, skill_lv);// Trigger animation break; } case AG_CRYSTAL_IMPACT_ATK: @@ -5881,14 +5881,14 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case EM_EL_STORM_WIND: case EM_EL_AVALANCHE: case EM_EL_DEADLY_POISON: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; case ABC_CHAIN_REACTION_SHOT: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinrange(skill_area_sub, bl, skill_get_splash(ABC_CHAIN_REACTION_SHOT_ATK, skill_lv), BL_CHAR|BL_SKILL, src, ABC_CHAIN_REACTION_SHOT_ATK, skill_lv, tick + (200 + status_get_amotion(src)), flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); break; case IQ_THIRD_PUNISH: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (sd) { uint8 limit = 5; @@ -5899,28 +5899,28 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint } break; case IQ_THIRD_FLAME_BOMB: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (sd && sd->spiritball / 5 > 1) skill_area_temp[0] = sd->spiritball / 5 - 1; break; case IQ_THIRD_CONSECRATION: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); status_heal(src, status_get_max_hp(src) * skill_lv / 100, status_get_max_sp(src) * skill_lv / 100, 0); break; case IG_OVERSLASH: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_area_temp[0] = map_foreachinallrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill_area_sub_count); break; case WH_GALESTORM:// Give AP if 3 or more targets are hit. if (sd && map_foreachinallrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill_area_sub_count) >= 3) status_heal(src, 0, 0, 10, 0); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; case BO_ACIDIFIED_ZONE_WATER: case BO_ACIDIFIED_ZONE_GROUND: case BO_ACIDIFIED_ZONE_WIND: case BO_ACIDIFIED_ZONE_FIRE: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (bl->type == BL_PC)// Place single cell AoE if hitting a player. skill_castend_pos2(src, bl->x, bl->y, skill_id, skill_lv, tick, 0); break; @@ -5929,14 +5929,14 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if( skill_check_unit_movepos( 5, src, bl->x, bl->y, 0, 1 ) ){ skill_blown( src, src, 1, direction_opposite( static_cast( map_calc_dir( bl, src->x, src->y ) ) ), BLOWN_NONE); } - clif_skill_nodamage( src, bl, skill_id, skill_lv, 1 ); // Trigger animation + clif_skill_nodamage( src, *bl, skill_id, skill_lv); // Trigger animation clif_blown( src ); // TODO: does this buff start before or after dealing damage? [Muh] sc_start( src, src, SC_RUSH_QUAKE2, 100, skill_lv, skill_get_time2( skill_id, skill_lv ) ); break; case IG_SHIELD_SHOOTING: case IG_GRAND_JUDGEMENT: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); sc_start(src, src, skill_get_sc(skill_id), 100, skill_lv, skill_get_time(skill_id, skill_lv)); break; } @@ -5970,7 +5970,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if (sd && sd->weapontype1 == W_GRENADE) splash += 2; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinrange(skill_area_sub, bl, splash, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id); if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) status_change_end(src, SC_INTENSIVE_AIM_COUNT); @@ -5979,7 +5979,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint //Place units around target case NJ_BAKUENRYU: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_unitsetting(src, skill_id, skill_lv, bl->x, bl->y, 0); break; @@ -6130,7 +6130,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_skill_nodamage(src,*bl,skill_id,skill_lv,false); //Can't make this one display the correct attack animation delay :/ clif_damage(*src,*bl,tick,status_get_amotion(src),0,-1,1,DMG_ENDURE,0,false); //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; @@ -6179,7 +6179,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case IG_JUDGEMENT_CROSS: case TR_SOUNDBLEND: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_attack(BF_MAGIC, src, src, bl, skill_id, skill_lv, tick, flag); break; @@ -6312,7 +6312,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case RK_DRAGONBREATH: case NPC_DRAGONBREATH: if( tsc && tsc->getSCE(SC_HIDING) ) - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); else { skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag); } @@ -6330,12 +6330,12 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint // Celest case PF_SOULBURN: if (rnd()%100 < (skill_lv < 5 ? 30 + skill_lv * 10 : 70)) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (skill_lv == 5) skill_attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag); status_percent_damage(src, bl, 0, 100, false); } else { - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); if (skill_lv == 5) skill_attack(BF_MAGIC,src,src,src,skill_id,skill_lv,tick,flag); status_percent_damage(src, src, 0, 100, false); @@ -6348,7 +6348,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint int heal = (int)skill_attack( (skill_id == NPC_BLOODDRAIN) ? BF_WEAPON : BF_MAGIC, src, src, bl, skill_id, skill_lv, tick, flag); if (heal > 0){ - clif_skill_nodamage(nullptr, src, AL_HEAL, heal, 1); + clif_skill_nodamage(nullptr, *src, AL_HEAL, heal); status_heal(src, heal, 0, 0); } } @@ -6377,7 +6377,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case RK_PHANTOMTHRUST: case NPC_PHANTOMTHRUST: unit_setdir(src,map_calc_dir(src, bl->x, bl->y)); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); skill_blown(src,bl,distance_bl(src,bl)-1,unit_getdir(src),BLOWN_NONE); if( battle_check_target(src,bl,BCT_ENEMY) > 0 ) @@ -6388,7 +6388,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if( flag&1 ) skill_attack(skill_get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); else { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinallrange(skill_area_sub, bl,skill_get_splash(skill_id, skill_lv),BL_CHAR,src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1,skill_castend_nodamage_id); } break; @@ -6466,7 +6466,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if( heal && rnd()%100 < rate ) { status_heal(src, heal, 0, 0); - clif_skill_nodamage(nullptr, src, AL_HEAL, heal, 1); + clif_skill_nodamage(nullptr, *src, AL_HEAL, heal); } } break; @@ -6611,7 +6611,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill_addtimerskill(src, tick + (t_tick)status_get_adelay(src) * abs(i - SC_SPHERE_1), bl->id, 0, 0, skele, sc->getSCE(static_cast(i))->val2, BF_MAGIC, flag | SD_LEVEL); status_change_end(src, static_cast(i)); // Eliminate ball } - clif_skill_nodamage(src, bl, skill_id, 0, 1); + clif_skill_nodamage(src, *bl, skill_id, 0); } } break; @@ -6628,7 +6628,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill_attack(BF_MAGIC, src, src, bl, skill_id, skill_lv, tick, flag); skill_addtimerskill(src, tick + 300, bl->id, 0, 0, skill_id, skill_lv, BF_MAGIC, flag | 2); } else { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id); } break; @@ -6780,7 +6780,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if (flag & 1) skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); else { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinallrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR|BL_SKILL, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); battle_consume_ammo(sd, skill_id, skill_lv); // Consume here since Magic/Misc attacks reset arrow_atk } @@ -6827,7 +6827,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill_attack(skill_get_type(skill_id+1),src,src,bl,skill_id+1,skill_lv,tick,flag); else { int i = skill_get_splash(skill_id,skill_lv); - clif_skill_nodamage(src,battle_get_master(src),skill_id,skill_lv,1); + clif_skill_nodamage(src,*battle_get_master(src),skill_id,skill_lv); clif_skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); if( rnd()%100 < 30 ) map_foreachinrange(skill_area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); @@ -6837,7 +6837,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint break; case EL_ROCK_CRUSHER: - clif_skill_nodamage(src,battle_get_master(src),skill_id,skill_lv,1); + clif_skill_nodamage(src,*battle_get_master(src),skill_id,skill_lv); clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); if( rnd()%100 < 50 ) skill_attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag); @@ -6850,7 +6850,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill_attack(skill_get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); else { int i = skill_get_splash(skill_id,skill_lv); - clif_skill_nodamage(src,battle_get_master(src),skill_id,skill_lv,1); + clif_skill_nodamage(src,*battle_get_master(src),skill_id,skill_lv); clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); if( rnd()%100 < 30 ) map_foreachinrange(skill_area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); @@ -6863,7 +6863,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case EL_ICE_NEEDLE: case EL_WIND_SLASH: case EL_STONE_HAMMER: - clif_skill_nodamage(src,battle_get_master(src),skill_id,skill_lv,1); + clif_skill_nodamage(src,*battle_get_master(src),skill_id,skill_lv); clif_skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); skill_attack(skill_get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); break; @@ -6874,7 +6874,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint status_change *tsc_ele = status_get_sc(&ele->bl); sc_type type = SC_TIDAL_WEAPON_OPTION, type2 = SC_TIDAL_WEAPON; - clif_skill_nodamage(src,battle_get_master(src),skill_id,skill_lv,1); + clif_skill_nodamage(src,*battle_get_master(src),skill_id,skill_lv); clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); if( (tsc_ele && tsc_ele->getSCE(type2)) || (tsc && tsc->getSCE(type)) ) { status_change_end(battle_get_master(src),type); @@ -6886,7 +6886,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint sc_start(src,src,type2,100,skill_lv,skill_get_time(skill_id,skill_lv)); sc_start(src,battle_get_master(src),type,100,ele->bl.id,skill_get_time(skill_id,skill_lv)); } - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); } break; @@ -6935,7 +6935,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint type = SC_EQC; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,sc_start4(src,bl,type,100,skill_lv,src->id,0,0,duration)); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,sc_start4(src,bl,type,100,skill_lv,src->id,0,0,duration)); skill_attack(skill_get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); } break; @@ -6989,7 +6989,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if (skill_id == RL_HAMMER_OF_GOD) clif_skill_poseffect(src, skill_id, 1, bl->x, bl->y, gettick()); else - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); } @@ -7102,7 +7102,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, skill_area_temp[0] & 0xFFF); } else { int splash = skill_get_splash(skill_id, skill_lv); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_area_temp[0] = map_foreachinallrange(skill_area_sub, bl, splash, BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill_area_sub_count); map_foreachinrange(skill_area_sub, bl, splash, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id); sc_start(src, src, SC_HNNOWEAPON, 100, skill_lv, skill_get_time2(skill_id, skill_lv)); @@ -7113,7 +7113,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if (flag & 1) { skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); } else { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id); sc_start(src, src, SC_HNNOWEAPON, 100, skill_lv, skill_get_time2(skill_id, skill_lv)); } @@ -7130,7 +7130,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint if (flag & 1) { skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); } else { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id); } break; @@ -7250,7 +7250,7 @@ static int skill_castend_song(struct block_list* src, uint16 skill_id, uint16 sk break; } - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *src, skill_id, skill_lv); sd->skill_id_dance = skill_id; sd->skill_lv_dance = skill_lv; @@ -7391,7 +7391,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } if (skill_id == AL_HEAL) status_change_end(bl, SC_BITESCAR); - clif_skill_nodamage (src, bl, skill_id, heal, 1); + clif_skill_nodamage(src, *bl, skill_id, heal); if( tsc && tsc->getSCE(SC_AKAITSUKI) && heal && skill_id != HLIF_HEAL ) heal = ~heal + 1; t_exp heal_get_jobexp = status_heal(bl,heal,0,0); @@ -7417,8 +7417,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (!status_isimmune(bl)) heal_amount = tstatus->max_hp; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); - clif_skill_nodamage(nullptr, bl, AL_HEAL, heal_amount, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); + clif_skill_nodamage(nullptr, *bl, AL_HEAL, heal_amount); status_heal(bl, heal_amount, 0, 0); } break; @@ -7468,7 +7468,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { int per = 0, sper = 0; if (tsc && tsc->getSCE(SC_HELLPOWER)) { - clif_skill_nodamage(src, bl, ALL_RESURRECTION, skill_lv, 1); + clif_skill_nodamage(src, *bl, ALL_RESURRECTION, skill_lv); break; } @@ -7485,7 +7485,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui per = sper = 100; if (status_revive(bl, per, sper)) { - clif_skill_nodamage(src,bl,ALL_RESURRECTION,skill_lv,1); //Both Redemptio and Res show this skill-animation. + clif_skill_nodamage(src,*bl,ALL_RESURRECTION,skill_lv); //Both Redemptio and Res show this skill-animation. if(sd && dstsd && battle_config.resurrection_exp > 0) { t_exp exp = 0,jexp = 0; @@ -7507,7 +7507,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case AL_DECAGI: case MER_DECAGI: - clif_skill_nodamage (src, bl, skill_id, skill_lv, + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src,bl, type, (50 + skill_lv * 3 + (status_get_lv(src) + sstatus->int_)/5), skill_lv, skill_get_time(skill_id,skill_lv))); break; @@ -7517,7 +7517,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else { map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -7526,7 +7526,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(src, bl, type, 30 + 10 * skill_lv, skill_lv, skill_get_time(skill_id, skill_lv)); else { map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -7536,12 +7536,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(bl, type); else skill_addtimerskill(src, tick+1000, bl->id, 0, 0, skill_id, skill_lv, 100, flag); - clif_skill_nodamage (src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; case SA_ABRACADABRA: if (abra_db.empty()) { - clif_skill_nodamage (src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; } else { @@ -7559,7 +7559,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } } while (checked++ < checked_max); - clif_skill_nodamage (src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if( sd ) {// player-casted @@ -7601,11 +7601,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case SA_COMA: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time2(skill_id,skill_lv))); break; case SA_FULLRECOVERY: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (status_isimmune(bl)) break; status_percent_heal(bl, 100, 100); @@ -7616,7 +7616,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( status_isimmune(bl) ) break; heal = status_percent_heal(bl, 100, 0); - clif_skill_nodamage(nullptr, bl, AL_HEAL, heal, 1); + clif_skill_nodamage(nullptr, *bl, AL_HEAL, heal); if( dstmd ) { // Reset Damage Logs memset(dstmd->dmglog, 0, sizeof(dstmd->dmglog)); @@ -7625,24 +7625,24 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } break; case SA_SUMMONMONSTER: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (sd) mob_once_spawn(sd, src->m, src->x, src->y,"--ja--", -1, 1, "", SZ_SMALL, AI_NONE); break; case SA_LEVELUP: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (sd && pc_nextbaseexp(sd)) pc_gainexp(sd, nullptr, pc_nextbaseexp(sd) * 10 / 100, 0, 0); break; case SA_INSTANTDEATH: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); status_kill(src); break; case SA_QUESTION: clif_emotion(src,ET_QUESTION); [[fallthrough]]; case SA_GRAVITY: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case SA_CLASSCHANGE: case SA_MONOCELL: @@ -7655,7 +7655,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; } class_ = (skill_id == SA_MONOCELL ? MOBID_PORING : mob_get_random_id(MOBG_CLASSCHANGE, RMF_DB_RATE, 0)); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); mob_class_change(dstmd,class_); if( tsc && status_has_mode(&dstmd->status,MD_STATUSIMMUNE) ) { const enum sc_type scs[] = { SC_QUAGMIRE, SC_PROVOKE, SC_ROKISWEIL, SC_GRAVITATION, SC_SUITON, SC_STRIPWEAPON, SC_STRIPSHIELD, SC_STRIPARMOR, SC_STRIPHELM, SC_BLADESTOP }; @@ -7671,20 +7671,20 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif_skill_fail( *sd, skill_id ); break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); status_kill(bl); break; case SA_REVERSEORCISH: case ALL_REVERSEORCISH: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id, skill_lv))); break; case SA_FORTUNE: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if(sd) pc_getzeny(sd,status_get_lv(bl)*100,LOG_TYPE_STEAL); break; case SA_TAMINGMONSTER: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (sd && dstmd && pet_db.find(dstmd->mob_id)) { pet_catch_process1(sd, dstmd->mob_id); } @@ -7698,7 +7698,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui return 1; } } - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; @@ -7717,7 +7717,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { sc_start(src,src,SC_MARIONETTE,100,bl->id,skill_get_time(skill_id,skill_lv)); sc_start(src,bl,SC_MARIONETTE2,100,src->id,skill_get_time(skill_id,skill_lv)); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } else if( sc->getSCE(SC_MARIONETTE ) && sc->getSCE(SC_MARIONETTE )->val1 == bl->id && @@ -7739,7 +7739,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case RG_CLOSECONFINE: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start4(src,bl,type,100,skill_lv,src->id,0,0,skill_get_time(skill_id,skill_lv))); break; case SA_FLAMELAUNCHER: // added failure chance and chance to break weapon if turned on [Valaris] @@ -7749,14 +7749,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (dstsd && dstsd->status.weapon == W_FIST) { if (sd) clif_skill_fail( *sd, skill_id ); - clif_skill_nodamage(src,bl,skill_id,skill_lv,0); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,false); break; } #ifdef RENEWAL - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); #else // 100% success rate at lv4 & 5, but lasts longer at lv5 - if(!clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,(60+skill_lv*10),skill_lv, skill_get_time(skill_id,skill_lv)))) { + if(!clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,(60+skill_lv*10),skill_lv, skill_get_time(skill_id,skill_lv)))) { if (dstsd){ short index = dstsd->equip_index[EQI_HAND_R]; if (index != -1 && dstsd->inventory_data[index] && dstsd->inventory_data[index]->type == IT_WEAPON) @@ -7770,15 +7770,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case PR_ASPERSIO: if (sd && dstmd) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,0); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,false); break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case ITEM_ENCHANTARMS: - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_get_ele(skill_id, skill_lv), skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_get_ele(skill_id, skill_lv), skill_get_time(skill_id, skill_lv))); break; case TK_SEVENWIND: @@ -7791,7 +7791,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case ELE_DARK : type = SC_SHADOWWEAPON; break; case ELE_HOLY : type = SC_ASPERSIO; break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); sc_start(src,bl,SC_SEVENWIND,100,skill_lv,skill_get_time(skill_id,skill_lv)); @@ -7805,7 +7805,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui return 0; } - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); clif_skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); clif_blown(bl); @@ -7833,7 +7833,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case 9: type = SC_IMMUNE_PROPERTY_TELEKINESIS; break; case 10: type = SC_IMMUNE_PROPERTY_UNDEAD; break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case PR_KYRIE: @@ -7842,7 +7842,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SU_GROOMING: case SU_CHATTERING: case ALL_RAY_OF_PROTECTION: - clif_skill_nodamage(bl,bl,skill_id,skill_lv, + clif_skill_nodamage(bl,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; //Passive Magnum, should had been casted on yourself. @@ -7851,7 +7851,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui skill_area_temp[1] = 0; map_foreachinshootrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_SKILL|BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill_castend_damage_id); - clif_skill_nodamage (src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src, *src,skill_id,skill_lv); // Initiate 20% of your damage becomes fire element. #ifdef RENEWAL sc_start4(src,src,SC_SUB_WEAPONPROPERTY,100,ELE_FIRE,20,skill_id,0,skill_get_time2(skill_id, skill_lv)); @@ -7875,13 +7875,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case PR_BENEDICTIO: if (!battle_check_undead(tstatus->race, tstatus->def_ele) && tstatus->race != RC_DEMON) - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); break; case AL_INCAGI: case AL_BLESSING: case MER_INCAGI: case MER_BLESSING: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (dstsd != nullptr && tsc && tsc->getSCE(SC_CHANGEUNDEAD)) { if (tstatus->hp > 1) skill_attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag); @@ -8023,25 +8023,25 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case NPC_RELIEVE_OFF: case HN_BREAKINGLIMIT: case HN_RULEBREAK: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case NPC_GRADUAL_GRAVITY: case NPC_DEADLYCURSE: status_change_start(src, bl, type, 10000, skill_lv, 0, 0, 0, skill_get_time(skill_id, skill_lv), SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; case NPC_ALL_STAT_DOWN: status_change_start(src, bl, type, 10000, skill_lv, 0, 0, 0, skill_get_time(skill_id, skill_lv), SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); clif_skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); break; // EDP also give +25% WATK poison pseudo element to user. case ASC_EDP: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); #ifdef RENEWAL sc_start4(src, src, SC_SUB_WEAPONPROPERTY, 100, ELE_POISON, 25, skill_id, 0, skill_get_time(skill_id, skill_lv)); @@ -8058,18 +8058,18 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else type = SC_SHIELDSPELL_ATK; - clif_skill_nodamage(src, bl, skill_id, skill_lv, + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); break; case DK_SERVANTWEAPON: case ABC_FROM_THE_ABYSS: - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start2(src, bl, type, 100, skill_lv, src->id, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start2(src, bl, type, 100, skill_lv, src->id, skill_get_time(skill_id, skill_lv))); break; case TR_SOUNDBLEND: skill_castend_damage_id(src, bl, skill_id, skill_lv, tick, 0); - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start2(src, bl, type, 100, skill_lv, src->id, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start2(src, bl, type, 100, skill_lv, src->id, skill_get_time(skill_id, skill_lv))); break; case AG_VIOLENT_QUAKE: @@ -8095,7 +8095,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } skill_area_temp[1] = 0; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (skill_id == AG_DESTRUCTIVE_HURRICANE && climax_lv == 4) // Buff for caster instead of damage AoE. sc_start(src, bl, type, 100, skill_lv, skill_get_time2(skill_id, skill_lv)); @@ -8103,7 +8103,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui map_foreachinrange(skill_area_sub, bl, splash_size, BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ALLY|SD_SPLASH|1, skill_castend_nodamage_id); else { if (skill_id == AG_DESTRUCTIVE_HURRICANE && climax_lv == 1) // Display extra animation for the additional hit cast. - clif_skill_nodamage(src, bl, AG_DESTRUCTIVE_HURRICANE_CLIMAX, skill_lv, 1); + clif_skill_nodamage(src, *bl, AG_DESTRUCTIVE_HURRICANE_CLIMAX, skill_lv); map_foreachinrange(skill_area_sub, bl, splash_size, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id); } @@ -8116,15 +8116,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (sd == nullptr || sd->status.party_id == 0 || (flag & 2)) { int heal_amount = skill_calc_heal(src, bl, skill_id, skill_lv, 1); - clif_skill_nodamage( nullptr, bl, AL_HEAL, heal_amount, 1 ); + clif_skill_nodamage(nullptr, *bl, AL_HEAL, heal_amount); status_heal(bl, heal_amount, 0, 0); } else if (sd) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag | BCT_PARTY | 3, skill_castend_nodamage_id); } else { if (skill_id == CD_MEDIALE_VOTUM) - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); else { // Dilectio Heal - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); // Placed here to display animation on target only. + clif_skill_nodamage(src, *bl, skill_id, skill_lv); // Placed here to display animation on target only. skill_castend_nodamage_id(bl, bl, skill_id, skill_lv, tick, 1); } } @@ -8135,13 +8135,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui int hp_amount = tstatus->max_hp * (20 * skill_lv) / 100; int sp_amount = tstatus->max_sp * (20 * skill_lv) / 100; - clif_skill_nodamage( nullptr, bl, AL_HEAL, hp_amount, 1 ); + clif_skill_nodamage(nullptr, *bl, AL_HEAL, hp_amount); status_heal(bl, hp_amount, 0, 0); - clif_skill_nodamage( nullptr, bl, MG_SRECOVERY, sp_amount, 1 ); + clif_skill_nodamage(nullptr, *bl, MG_SRECOVERY, sp_amount); status_heal(bl, 0, sp_amount, 0); - clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); } else if (sd) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); break; @@ -8152,14 +8152,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui map_freeblock_unlock(); // Don't consume item requirements return 0; } - clif_skill_nodamage( src, bl, skill_id, skill_lv, sc_start( src, bl, type, 100, skill_lv, skill_get_time( skill_id, skill_lv ) ) ); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start( src, bl, type, 100, skill_lv, skill_get_time( skill_id, skill_lv ) ) ); break; case EM_ACTIVITY_BURN: if (bl->type == BL_PC && rnd() % 100 < 20 + 10 * skill_lv) { uint8 ap_burn[5] = { 20, 30, 50, 60, 70 }; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); status_fix_apdamage(src, bl, ap_burn[skill_lv - 1], 0, skill_id); } else if (sd) clif_skill_fail( *sd, skill_id, USESKILL_FAIL ); @@ -8167,7 +8167,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case EM_INCREASING_ACTIVITY: if (bl->type == BL_PC) { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); status_heal(bl, 0, 0, 10 * skill_lv, 0); } else if (sd) clif_skill_fail( *sd, skill_id, USESKILL_FAIL ); @@ -8183,12 +8183,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui fall_damage = max(1, fall_damage); - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start2(src, bl, type, 100, skill_lv, fall_damage, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start2(src, bl, type, 100, skill_lv, fall_damage, skill_get_time(skill_id, skill_lv))); } break; case NPC_HALLUCINATION: case NPC_HELLPOWER: - clif_skill_nodamage(src, bl, skill_id, skill_lv, + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, skill_lv*20, skill_lv, skill_get_time2(skill_id, skill_lv))); break; @@ -8208,13 +8208,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui bonus = (20 * skill_lv) * dstsd->inventory_data[index]->weapon_level; } - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start2(src,bl, type, 100, skill_lv, bonus, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start2(src,bl, type, 100, skill_lv, bonus, skill_get_time(skill_id, skill_lv))); } else if (sd) clif_skill_fail( *sd, skill_id, USESKILL_FAIL_TOTARGET ); break; case NPC_STOP: - if( clif_skill_nodamage(src,bl,skill_id,skill_lv, + if( clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start2(src,bl,type,100,skill_lv,src->id,skill_get_time(skill_id,skill_lv)) ) ) sc_start2(src,src,type,100,skill_lv,bl->id,skill_get_time(skill_id,skill_lv)); break; @@ -8222,7 +8222,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( sd && dstmd ) clif_skill_fail( *sd, skill_id ); else - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case MG_SIGHT: @@ -8232,7 +8232,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case NPC_WIDESIGHT: case NPC_STONESKIN: case NPC_ANTIMAGIC: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start2(src,bl,type,100,skill_lv,skill_id,skill_get_time(skill_id,skill_lv))); break; case HLIF_AVOID: @@ -8240,11 +8240,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // Master sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); // Homunculus - clif_skill_nodamage(src, src, skill_id, skill_lv, sc_start(src, src, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *src, skill_id, skill_lv, sc_start(src, src, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); break; case NJ_BUNSINJYUTSU: status_change_end(bl, SC_BUNSINJYUTSU); // on official recasting cancels existing mirror image [helvetica] - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); status_change_end(bl, SC_NEN); break; @@ -8258,20 +8258,20 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui skill_get_splash(skill_id, skill_lv), BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; */ case SM_ENDURE: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case AS_ENCHANTPOISON: if( sc_start( src, bl, type, 100, skill_lv, skill_get_time( skill_id, skill_lv ) ) ){ - clif_skill_nodamage( src, bl, skill_id, skill_lv, 1 ); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); }else{ - clif_skill_nodamage( src, bl, skill_id, skill_lv, 0 ); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, false ); if( sd != nullptr ){ clif_skill_fail( *sd, skill_id ); @@ -8280,17 +8280,17 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case LK_TENSIONRELAX: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start4(src,bl,type,100,skill_lv,0,0,skill_get_time2(skill_id,skill_lv), skill_get_time(skill_id,skill_lv))); break; case MC_CHANGECART: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case MC_CARTDECORATE: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if( sd ) { clif_SelectCart(sd); } @@ -8314,14 +8314,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sd->mission_count = 0; pc_setglobalreg(sd, add_str(TKMISSIONID_VAR), id); clif_mission_info(sd, id, 0); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; case AC_CONCENTRATION: { int splash = skill_get_splash(skill_id, skill_lv); - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); skill_reveal_trap_inarea(src, splash, src->x, src->y); map_foreachinallrange( status_change_timer_sub, src, @@ -8344,7 +8344,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui map_freeblock_unlock(); return 0; } - clif_skill_nodamage(src, bl, skill_id == SM_SELFPROVOKE ? SM_PROVOKE : skill_id, skill_lv, i); + clif_skill_nodamage(src, *bl, skill_id == SM_SELFPROVOKE ? SM_PROVOKE : skill_id, skill_lv, i != 0); unit_skillcastcancel(bl, 2); if( dstmd ) @@ -8403,7 +8403,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else mer->devotion_flag = 1; // Mercenary Devoting Owner - clif_skill_nodamage(src, bl, skill_id, skill_lv, + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start4(src, bl, type, 10000, src->id, i, skill_get_range2(src, skill_id, skill_lv, true), 0, skill_get_time2(skill_id, skill_lv))); clif_devotion(src, nullptr); } @@ -8442,7 +8442,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sd->united_soul[i] = bl->id; } - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start4(src, bl, type, 100, skill_lv, src->id, i, 0, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start4(src, bl, type, 100, skill_lv, src->id, i, 0, skill_get_time(skill_id, skill_lv))); } else if (sd) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); } @@ -8483,10 +8483,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sd->servant_sign[i] = bl->id; } - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); sc_start4(src, bl, type, 100, src->id, i, skill_lv, 0, skill_get_time(skill_id, skill_lv)); } else if (md) // Monster's cant track with this skill. Just give the status. - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start4(src, bl, type, 100, 0, 0, skill_lv, 0, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start4(src, bl, type, 100, 0, 0, skill_lv, 0, skill_get_time(skill_id, skill_lv))); break; case MO_CALLSPIRITS: @@ -8494,7 +8494,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui int limit = skill_lv; if( sd->sc.getSCE(SC_RAISINGDRAGON) ) limit += sd->sc.getSCE(SC_RAISINGDRAGON)->val1; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); pc_addspiritball(sd,skill_get_time(skill_id,skill_lv),limit); } break; @@ -8504,7 +8504,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui int limit = 5; if( sd->sc.getSCE(SC_RAISINGDRAGON) ) limit += sd->sc.getSCE(SC_RAISINGDRAGON)->val1; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); for (i = 0; i < limit; i++) pc_addspiritball(sd,skill_get_time(skill_id,skill_lv),limit); } @@ -8555,27 +8555,27 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; } if (i) status_heal(src, 0, i, 3); - clif_skill_nodamage(src,bl,skill_id,skill_lv,i?1:0); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,i != 0); break; case AC_MAKINGARROW: if( sd != nullptr ){ clif_arrow_create_list( *sd ); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; case AM_PHARMACY: if(sd) { clif_skill_produce_mix_list( *sd, skill_id, 22 ); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; case SA_CREATECON: if( sd != nullptr ){ clif_elementalconverter_list( *sd ); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -8585,7 +8585,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RG_RAID: skill_area_temp[1] = 0; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR|BL_SKILL, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, @@ -8635,7 +8635,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (skill_id == SJ_NEWMOONKICK) { if (tsce) { status_change_end(bl, type); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; } else sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); @@ -8656,7 +8656,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } skill_area_temp[1] = 0; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); i = map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), starget, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); if( !i && ( skill_id == RK_WINDCUTTER || skill_id == NC_AXETORNADO || skill_id == LG_CANNONSPEAR || skill_id == SR_SKYNETBLOW || skill_id == KO_HAPPOKUNAI ) ) @@ -8671,7 +8671,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // Note: doesn't force player to stand before attacking map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR | BL_SKILL, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_LEVEL | SD_SPLASH, skill_castend_damage_id); } else { - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); } break; @@ -8697,7 +8697,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, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); } break; @@ -8732,8 +8732,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } skill_area_temp[1] = 0; - clif_skill_nodamage(src, bl, buster_element, skill_lv, 1);// Animation for the triggered blaster element. - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);// Triggered after blaster animation to make correct skill name scream appear. + clif_skill_nodamage(src, *bl, buster_element, skill_lv);// Animation for the triggered blaster element. + clif_skill_nodamage(src, *bl, skill_id, skill_lv);// Triggered after blaster animation to make correct skill name scream appear. map_foreachinrange(skill_area_sub, bl, 6, BL_CHAR | BL_SKILL, src, buster_element, skill_lv, tick, flag | BCT_ENEMY | SD_LEVEL | SD_SPLASH | 1, skill_castend_damage_id); } break; @@ -8742,7 +8742,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RK_IGNITIONBREAK: skill_area_temp[1] = 0; #if PACKETVER >= 20180207 - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); #else clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); #endif @@ -8752,7 +8752,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SR_TIGERCANNON: case SR_WINDMILL: case GN_CART_TORNADO: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); [[fallthrough]]; case SR_EARTHSHAKER: case NC_INFRAREDSCAN: @@ -8802,7 +8802,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case WZ_SIGHTRASHER: //Passive side of the attack. status_change_end(src, SC_SIGHT); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinshootrange(skill_area_sub,src, skill_get_splash(skill_id, skill_lv),BL_CHAR|BL_SKILL, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|SD_ANIMATION|1, @@ -8810,7 +8810,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case WZ_FROSTNOVA: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); skill_area_temp[1] = 0; map_foreachinshootrange(skill_attack_area, src, skill_get_splash(skill_id, skill_lv), splash_target(src), @@ -8823,7 +8823,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui //Except for Summoned Marine spheres on non-versus maps, where it's just enemy. i = ((!md || md->special_state.ai == AI_SPHERE) && !map_flag_vs(src->m))? BCT_ENEMY:BCT_ALL; - clif_skill_nodamage(src, src, skill_id, -1, 1); + clif_skill_nodamage(src, *src, skill_id, -1); map_delblock(src); //Required to prevent chain-self-destructions hitting back. map_foreachinshootrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR|BL_SKILL, @@ -8853,7 +8853,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // Animations don't play when outside visible range if (check_distance_bl(src, bl, AREA_SIZE)) - clif_skill_nodamage(bl, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv); sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); } @@ -8872,7 +8872,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case IG_GUARDIAN_SHIELD: case IG_ULTIMATE_SACRIFICE:// Is the animation on this skill correct? Check if its on caster only or all affected. [Rytech] if( sd == nullptr || sd->status.party_id == 0 || (flag & 1) ) - clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); else if (sd) { if (skill_id == IG_ULTIMATE_SACRIFICE) @@ -8884,11 +8884,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case MER_MAGNIFICAT: if( mer != nullptr ) { - clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); if( mer->master && mer->master->status.party_id != 0 && !(flag&1) ) party_foreachsamemap(skill_area_sub, mer->master, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); else if( mer->master && !(flag&1) ) - clif_skill_nodamage(src, &mer->master->bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src, mer->master->bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); } break; @@ -8899,7 +8899,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (sd == nullptr || sd->status.party_id == 0 || (flag & 1)) { int weapontype = skill_get_weapontype(skill_id); if (!weapontype || !dstsd || pc_check_weapontype(dstsd, weapontype)) { - clif_skill_nodamage(bl, bl, skill_id, skill_lv, + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start2(src, bl, type, 100, skill_lv, (src == bl) ? 1 : 0, skill_get_time(skill_id, skill_lv))); } } else if (sd) { @@ -8933,15 +8933,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case IG_ATTACK_STANCE: if( tsce ) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,status_change_end(bl, type)); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,status_change_end(bl, type)); map_freeblock_unlock(); return 0; } if( skill_id == SP_SOULCOLLECT ){ - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start2(src, bl, type, 100, skill_lv, pc_checkskill(sd, SP_SOULENERGY), skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start2(src, bl, type, 100, skill_lv, pc_checkskill(sd, SP_SOULENERGY), skill_get_time(skill_id, skill_lv))); }else{ - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); } break; case SL_KAITE: @@ -8969,10 +8969,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif_skill_fail( *sd, skill_id, USESKILL_FAIL ); break; } - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); status_heal(bl, 0, tstatus->max_sp * (10 + 2 * skill_lv) / 100, 2); } else - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); break; case SM_AUTOBERSERK: case MER_AUTOBERSERK: @@ -8980,27 +8980,27 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui i = status_change_end(bl, type); else i = sc_start(src,bl,type,100,skill_lv,60000); - clif_skill_nodamage(src,bl,skill_id,skill_lv,i); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,i); break; case TF_HIDING: case ST_CHASEWALK: case KO_YAMIKUMO: if (tsce) { - clif_skill_nodamage(src,bl,skill_id,-1,status_change_end(bl, type)); //Hide skill-scream animation. + clif_skill_nodamage(src,*bl,skill_id,-1,status_change_end(bl, type)); //Hide skill-scream animation. map_freeblock_unlock(); return 0; } - clif_skill_nodamage(src,bl,skill_id,-1,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src,*bl,skill_id,-1,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case TK_RUN: if (tsce) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,status_change_end(bl, type)); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,status_change_end(bl, type)); map_freeblock_unlock(); return 0; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,sc_start4(src,bl,type,100,skill_lv,unit_getdir(bl),0,0,0)); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,sc_start4(src,bl,type,100,skill_lv,unit_getdir(bl),0,0,0)); if (sd) // If the client receives a skill-use packet inmediately before a walkok packet, it will discard the walk packet! [Skotlex] clif_walkok(*sd); // So aegis has to resend the walk ok. break; @@ -9014,7 +9014,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (tsce) { i = status_change_end(bl, type); if( i ) - clif_skill_nodamage(src,bl,skill_id,( skill_id == LG_FORCEOFVANGUARD || skill_id == RA_CAMOUFLAGE ) ? skill_lv : -1,i); + clif_skill_nodamage(src,*bl,skill_id,( skill_id == LG_FORCEOFVANGUARD || skill_id == RA_CAMOUFLAGE ) ? skill_lv : -1,i); else if( sd ) clif_skill_fail( *sd, skill_id ); map_freeblock_unlock(); @@ -9022,25 +9022,25 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } i = sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)); if( i ) - clif_skill_nodamage(src,bl,skill_id,( skill_id == LG_FORCEOFVANGUARD || skill_id == RA_CAMOUFLAGE ) ? skill_lv : -1,i); + clif_skill_nodamage(src,*bl,skill_id,( skill_id == LG_FORCEOFVANGUARD || skill_id == RA_CAMOUFLAGE ) ? skill_lv : -1,i); else if( sd ) clif_skill_fail( *sd, skill_id, USESKILL_FAIL_LEVEL ); break; case CG_SPECIALSINGER: if (tsc && tsc->getSCE(SC_ENSEMBLEFATIGUE)) { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); status_change_end(bl, SC_ENSEMBLEFATIGUE); } break; case BD_ADAPTATION: #ifdef RENEWAL - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); #else if(tsc && tsc->getSCE(SC_DANCING)){ - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); status_change_end(bl, SC_DANCING); } #endif @@ -9048,7 +9048,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case BA_FROSTJOKER: case DC_SCREAM: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); skill_addtimerskill(src,tick+3000,bl->id,src->x,src->y,skill_id,skill_lv,0,flag); if (md) { @@ -9061,7 +9061,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case BA_PANGVOICE: - clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,SC_CONFUSION,70,7,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,SC_CONFUSION,70,7,skill_get_time(skill_id,skill_lv))); #ifdef RENEWAL sc_start(src, bl, SC_BLEEDING, 30, skill_lv, skill_get_time2(skill_id, skill_lv)); // TODO: Confirm success rate #endif @@ -9069,7 +9069,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case DC_WINKCHARM: if( dstsd ) { - clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,SC_CONFUSION,10,7,skill_get_time2(skill_id,skill_lv))); + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,SC_CONFUSION,10,7,skill_get_time2(skill_id,skill_lv))); #ifdef RENEWAL sc_start(src, bl, SC_HALLUCINATION, 30, skill_lv, skill_get_time(skill_id, skill_lv)); // TODO: Confirm success rate and duration #endif @@ -9079,10 +9079,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( status_get_lv(src) > status_get_lv(bl) && (tstatus->race == RC_DEMON || tstatus->race == RC_DEMIHUMAN || tstatus->race == RC_PLAYER_HUMAN || tstatus->race == RC_PLAYER_DORAM || tstatus->race == RC_ANGEL) && !status_has_mode(tstatus,MD_STATUSIMMUNE) ) - clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start2(src,bl,type,(status_get_lv(src) - status_get_lv(bl)) + 40, skill_lv, src->id, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start2(src,bl,type,(status_get_lv(src) - status_get_lv(bl)) + 40, skill_lv, src->id, skill_get_time(skill_id, skill_lv))); else { - clif_skill_nodamage(src,bl,skill_id,skill_lv,0); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,false); if(sd) clif_skill_fail( *sd, skill_id ); } } @@ -9114,7 +9114,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case TF_STEAL: if(sd) { if(pc_steal_item(sd,bl,skill_lv)) - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); else clif_skill_fail( *sd, skill_id, USESKILL_FAIL ); } @@ -9126,7 +9126,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { dstmd->state.provoke_flag = src->id; mob_target(dstmd, src, skill_get_range2(src, skill_id, skill_lv, true)); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } else @@ -9150,7 +9150,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui brate = sd->sc.getSCE(SC_PETROLOGY_OPTION)->val3; if (sc_start2(src, bl, type, (skill_lv * 4 + 20) + brate, skill_lv, src->id, skill_get_time2(skill_id, skill_lv), skill_get_time(skill_id, skill_lv))) - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); else if(sd) { clif_skill_fail( *sd, skill_id ); // Level 6-10 doesn't consume a red gem if it fails [celest] @@ -9164,31 +9164,31 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case NV_FIRSTAID: - clif_skill_nodamage(src,bl,skill_id,5,1); + clif_skill_nodamage(src,*bl,skill_id,5); status_heal(bl,5,0,0); break; case AL_CURE: if(status_isimmune(bl)) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,0); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,false); break; } status_change_end(bl, SC_SILENCE); status_change_end(bl, SC_BLIND); status_change_end(bl, SC_CONFUSION); status_change_end(bl, SC_BITESCAR); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case TF_DETOXIFY: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); status_change_end(bl, SC_POISON); status_change_end(bl, SC_DPOISON); break; case PR_STRECOVERY: if(status_isimmune(bl)) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,0); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,false); break; } if (tsc) { @@ -9203,7 +9203,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } if(battle_check_undead(tstatus->race,tstatus->def_ele)) skill_addtimerskill(src, tick+1000, bl->id, 0, 0, skill_id, skill_lv, 100, flag); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if(dstmd) mob_unlocktarget(dstmd,tick); break; @@ -9212,31 +9212,31 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case MER_BENEDICTION: status_change_end(bl, SC_CURSE); status_change_end(bl, SC_BLIND); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case MER_COMPRESS: status_change_end(bl, SC_BLEEDING); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case MER_MENTALCURE: status_change_end(bl, SC_CONFUSION); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case MER_RECUPERATE: status_change_end(bl, SC_POISON); status_change_end(bl, SC_DPOISON); status_change_end(bl, SC_SILENCE); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case MER_REGAIN: status_change_end(bl, SC_SLEEP); status_change_end(bl, SC_STUN); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case MER_TENDER: status_change_end(bl, SC_FREEZE); status_change_end(bl, SC_STONE); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case MER_SCAPEGOAT: @@ -9261,7 +9261,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; } - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); clif_skill_estimation(sd, bl); if( skill_id == MER_ESTIMATION ) sd = nullptr; @@ -9341,7 +9341,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); std::vector maps = { "Random" @@ -9359,7 +9359,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case NPC_EXPULSION: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); unit_warp(bl,-1,-1,-1,CLR_TELEPORT); break; @@ -9369,7 +9369,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui struct skill_unit* su; if ((su = map_find_skill_unit_oncell(bl, bl->x, bl->y, NJ_SUITON, nullptr, 0)) != nullptr) skill_delunit(su); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } else clif_skill_fail( *sd, skill_id ); @@ -9381,7 +9381,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui unsigned char eflag; struct item item_tmp; struct block_list tbl; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); memset(&item_tmp,0,sizeof(item_tmp)); memset(&tbl,0,sizeof(tbl)); // [MouseJstr] item_tmp.nameid = ITEMID_STONE; @@ -9402,7 +9402,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case ASC_CDP: if(sd) { if(skill_produce_mix(sd, skill_id, ITEMID_POISON_BOTTLE, 0, 0, 0, 1, -1)) //Produce a Poison Bottle. - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); else clif_skill_fail( *sd, skill_id, USESKILL_FAIL_STUFF_INSUFFICIENT ); } @@ -9426,7 +9426,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } if( (i = skill_strip_equip(src, bl, skill_id, skill_lv)) || (skill_id != ST_FULLSTRIP && skill_id != GC_WEAPONCRUSH ) ) - clif_skill_nodamage(src,bl,skill_id,skill_lv,i); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,i); //Nothing stripped. if( sd && !i ) @@ -9553,11 +9553,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui hp *= 3; // Heal effectiveness is 3x for Homunculus #endif - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if( hp > 0 || (skill_id == AM_POTIONPITCHER && sp <= 0) ) - clif_skill_nodamage(nullptr,bl,AL_HEAL,hp,1); + clif_skill_nodamage(nullptr,*bl,AL_HEAL,hp,1); if( sp > 0 ) - clif_skill_nodamage(nullptr,bl,MG_SRECOVERY,sp,1); + clif_skill_nodamage(nullptr,*bl,MG_SRECOVERY,sp); if (tsc) { #ifdef RENEWAL if (tsc->getSCE(SC_EXTREMITYFIST)) @@ -9583,13 +9583,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui map_freeblock_unlock(); // Don't consume item requirements return 0; } - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); } break; case AM_TWILIGHT1: if (sd) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); //Prepare 200 White Potions. if (!skill_produce_mix(sd, skill_id, ITEMID_WHITE_POTION, 0, 0, 0, 200, -1)) clif_skill_fail( *sd, skill_id ); @@ -9597,7 +9597,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case AM_TWILIGHT2: if (sd) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); //Prepare 200 Slim White Potions. if (!skill_produce_mix(sd, skill_id, ITEMID_WHITE_SLIM_POTION, 0, 0, 0, 200, -1)) clif_skill_fail( *sd, skill_id ); @@ -9618,7 +9618,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif_skill_fail( *sd, skill_id ); break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); skill_produce_mix(sd, skill_id, ITEMID_ALCOHOL, 0, 0, 0, 100, alcohol_idx-1); skill_produce_mix(sd, skill_id, ITEMID_ACID_BOTTLE, 0, 0, 0, 50, acid_idx-1); skill_produce_mix(sd, skill_id, ITEMID_FIRE_BOTTLE, 0, 0, 0, 50, fire_idx-1); @@ -9628,7 +9628,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (flag&1 || (i = skill_get_splash(skill_id, skill_lv)) < 1) { if (sd && dstsd && !map_flag_vs(sd->bl.m) && (!sd->duel_group || sd->duel_group != dstsd->duel_group) && (!sd->status.party_id || sd->status.party_id != dstsd->status.party_id)) break; // Outside PvP it should only affect party members and no skill fail message - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if((dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || (tsc && tsc->getSCE(SC_SPIRIT) && tsc->getSCE(SC_SPIRIT)->val2 == SL_ROGUE) //Rogue's spirit defends againt dispel. || rnd()%100 >= 50+10*skill_lv) @@ -9692,7 +9692,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui |BLOWN_DONT_SEND_PACKET #endif )); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); #ifdef RENEWAL if(blew_count > 0) clif_blown(src); // Always blow, otherwise it shows a casting animation. [Lemongrass] @@ -9711,7 +9711,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( mapdata->getMapFlag(MF_NOTELEPORT) && !(mapdata->getMapFlag(MF_BATTLEGROUND) || mapdata_flag_gvg2(mapdata) ) ) { - clif_skill_nodamage(src, bl, TK_HIGHJUMP, skill_lv, 1); + clif_skill_nodamage(src, *bl, TK_HIGHJUMP, skill_lv); break; } else if(dir%2) { //Diagonal @@ -9725,7 +9725,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui int x1 = x + dirx[dir]; int y1 = y + diry[dir]; - clif_skill_nodamage(src,bl,TK_HIGHJUMP,skill_lv,1); + clif_skill_nodamage(src,*bl,TK_HIGHJUMP,skill_lv); if( !map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB,0) && map_getcell(src->m,x,y,CELL_CHKREACH) && !map_count_oncell(src->m,x1,y1,BL_PC|BL_NPC|BL_MOB,0) && map_getcell(src->m,x1,y1,CELL_CHKREACH) && unit_movepos(src, x, y, 1, 0)) @@ -9735,7 +9735,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SA_CASTCANCEL: case SO_SPELLFIST: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); unit_skillcastcancel(src,1); if(sd) { int sp = skill_get_sp(sd->skill_id_old,sd->skill_lv_old); @@ -9775,7 +9775,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (skill_lv >= 5 && (!dstsd || map_flag_vs(bl->m))) //HP damage only on pvp-maps when against players. hp = tstatus->max_hp / 50; //Siphon 2% HP at level 5 - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); unit_skillcastcancel(bl, 0); sp = skill_get_sp(ud->skill_id, ud->skill_lv); status_zap(bl, 0, sp); @@ -9794,12 +9794,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case SA_MAGICROD: #ifdef RENEWAL - clif_skill_nodamage(src,src,SA_MAGICROD,skill_lv,1); + clif_skill_nodamage(src,*src,SA_MAGICROD,skill_lv); #endif sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)); break; case SA_AUTOSPELL: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (sd) { sd->state.workinprogress = WIP_DISABLE_ALL; clif_autospell( *sd, skill_lv ); @@ -9840,7 +9840,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case BS_GREED: if(sd){ - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinallrange(skill_greed,bl, skill_get_splash(skill_id, skill_lv),BL_ITEM,bl); } @@ -9862,13 +9862,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case NPC_CHANGEHOLY: case NPC_CHANGEDARKNESS: case NPC_CHANGETELEKINESIS: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start2(src,bl, type, 100, skill_lv, skill_get_ele(skill_id,skill_lv), skill_get_time(skill_id, skill_lv))); break; case NPC_PROVOCATION: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (md) mob_unlocktarget(md, tick); break; @@ -9879,18 +9879,18 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case NPC_DARKBLESSING: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start2(src,bl,type,(50+skill_lv*5),skill_lv,skill_lv,skill_get_time2(skill_id,skill_lv))); break; case NPC_LICK: status_zap(bl, 0, 100); - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,(skill_lv*20),skill_lv,skill_get_time2(skill_id,skill_lv))); break; case NPC_SUICIDE: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); status_kill(src); //When suiciding, neither exp nor drops is given. break; @@ -9921,7 +9921,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui int i_type = SC_ASPDPOTION0 + skill_lv - 1; if (i_type > SC_ASPDPOTION3) i_type = SC_ASPDPOTION3; - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,(sc_type)i_type,100,skill_lv,skill_lv * 60000)); } break; @@ -10000,29 +10000,29 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case NPC_POWERUP: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start2(src,bl,type,100,200,100,skill_get_time(skill_id, skill_lv))); break; case NPC_AGIUP: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start2(src,bl,type,100,50,100,skill_get_time(skill_id, skill_lv))); break; case NPC_INVISIBLE: //Have val4 passed as 6 is for "infinite cloak" (do not end on attack/skill use). - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start4(src,bl,type,100,skill_lv,0,0,6,skill_get_time(skill_id,skill_lv))); break; case NPC_SIEGEMODE: // Not implemented/used: Gives EFST_SIEGEMODE which reduces speed to 1000. - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case NPC_INVINCIBLEOFF: case MER_INVINCIBLEOFF2: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); status_change_end(bl, SC_INVINCIBLE); break; @@ -10032,7 +10032,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (hp_rate && status_get_hp(src) > status_get_max_hp(src) / hp_rate) { int gain_hp = tstatus->max_hp * hp_rate / 100; // The earned is the same % of the target HP than it costed the caster. [Skotlex] - clif_skill_nodamage(src,bl,skill_id,status_heal(bl, gain_hp, 0, 0),1); + clif_skill_nodamage(src,*bl,skill_id,status_heal(bl, gain_hp, 0, 0)); } } break; @@ -10042,7 +10042,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (sp_rate && status_get_sp(src) > status_get_max_sp(src) / sp_rate) { int gain_sp = tstatus->max_sp * sp_rate / 100; // The earned is the same % of the target SP than it costed the caster. [Skotlex] - clif_skill_nodamage(src,bl,skill_id,status_heal(bl, 0, gain_sp, 0),1); + clif_skill_nodamage(src,*bl,skill_id,status_heal(bl, 0, gain_sp, 0)); } } break; @@ -10117,7 +10117,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (dstsd->special_state.restart_full_recover) per = sper = 100; if ((dstsd == p_sd || dstsd == c_sd) && status_revive(bl, per, sper)) // Only family members can be revived - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } } break; @@ -10134,7 +10134,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } if (flag&1) { // Buff can only be given to parents in 7x7 AoE around baby if (dstsd == f_sd || dstsd == m_sd) - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); } else map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ALL|1, skill_castend_nodamage_id); } @@ -10149,7 +10149,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (sd) clif_skill_fail( *sd, skill_id ); break; } - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); status_heal(bl,0,sp,2); } break; @@ -10165,7 +10165,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // Players can only remove their own traps or traps on Vs maps. if( su && (sg = su->group) && (src->type == BL_MER || sg->src_id == src->id || map_flag_vs(bl->m)) && ( skill_group = skill_db.find(sg->skill_id) ) && skill_group->inf2[INF2_ISTRAP] ) { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if( sd && !(sg->unit_id == UNT_USED_TRAPS || (sg->unit_id == UNT_ANKLESNARE && sg->val2 != 0 )) ) { // prevent picking up expired traps if( battle_config.skill_removetrap_type ) @@ -10209,7 +10209,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } break; case HT_SPRINGTRAP: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); { struct skill_unit *su=nullptr; if((bl->type==BL_SKILL) && (su=(struct skill_unit *)bl) && (su->group) ){ @@ -10238,13 +10238,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } break; case BD_ENCORE: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if(sd) unit_skilluse_id(src,src->id,sd->skill_id_dance,sd->skill_lv_dance); break; case TR_RETROSPECTION: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (sd) unit_skilluse_id(src, src->id, sd->skill_id_song, sd->skill_lv_song); break; @@ -10260,7 +10260,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui map_freeblock_unlock(); return 1; } - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start4(src,bl,type,100,skill_lv,skill_id,src->id,skill_get_time(skill_id,skill_lv),1000)); break; @@ -10279,7 +10279,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } //Has a 55% + skill_lv*5% success chance. - if (!clif_skill_nodamage(src,bl,skill_id,skill_lv, + if (!clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,55+5*skill_lv,skill_lv,skill_get_time(skill_id,skill_lv)))) { if (sd) clif_skill_fail( *sd, skill_id ); @@ -10305,7 +10305,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui dstmd->state.soul_change_flag = 1; sp2 = sstatus->max_sp * 3 /100; status_heal(src, 0, sp2, 2); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; } sp1 = sstatus->sp; @@ -10320,7 +10320,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sp1 = tstatus->sp; status_set_sp(src, sp2, 3); status_set_sp(bl, sp1, 3); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -10358,9 +10358,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } } if(hp > 0) - clif_skill_nodamage(nullptr,bl,AL_HEAL,hp,1); + clif_skill_nodamage(nullptr,*bl,AL_HEAL,hp); if(sp > 0) - clif_skill_nodamage(nullptr,bl,MG_SRECOVERY,sp,1); + clif_skill_nodamage(nullptr,*bl,MG_SRECOVERY,sp); status_heal(bl,hp,sp,0); } break; @@ -10381,12 +10381,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui map_freeblock_unlock(); // Don't consume item requirements return 0; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; case RG_CLEANER: //AppleGirl - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; #ifndef RENEWAL @@ -10395,7 +10395,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (tsc && !tsce && (tsce=tsc->getSCE(SC_DANCING)) && tsce->val4 && (tsce->val1&0xFFFF) != CG_MOONLIT) //Can't use Longing for Freedom while under Moonlight Petals. [Skotlex] { - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); } } @@ -10424,7 +10424,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_zap(src,0,skill_get_sp(skill_id,skill_lv)); // consume sp only if succeeded [Inkfish] card = skill_tarotcard(src, bl, skill_id, skill_lv, tick); // actual effect is executed here clif_specialeffect((card == 6) ? src : bl, EF_TAROTCARD1 + card - 1, AREA); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -10445,7 +10445,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SL_WIZARD: case SL_HIGH: if( sc_start2( src, bl, type, 100, skill_lv, skill_id, skill_get_time( skill_id, skill_lv ) ) ){ - clif_skill_nodamage( src, bl, skill_id, skill_lv, 1 ); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); // 1% chance to erase death count on successful cast if( skill_id == SL_SUPERNOVICE && dstsd && dstsd->die_counter && rnd_chance( 1, 100 ) ){ @@ -10466,7 +10466,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SP_SOULFALCON: case SP_SOULFAIRY: if( sc_start( src, bl, type, 100, skill_lv, skill_get_time( skill_id, skill_lv ) ) ){ - clif_skill_nodamage( src, bl, skill_id, skill_lv, 1 ); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); }else{ if( sd ){ clif_skill_fail( *sd, skill_id, USESKILL_FAIL ); @@ -10504,7 +10504,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_start(src,src,SC_STUN,10000,skill_lv,0,0,0,500,SCSTART_NOTICKDEF|SCSTART_NORATEDEF); break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); if (skill_id == SL_SKE) sc_start(src,src,SC_SMA,100,skill_lv,skill_get_time(SL_SMA,skill_lv)); break; @@ -10517,12 +10517,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if(flag&1) { if (status_get_guild_id(src) == status_get_guild_id(bl)) { if( skill_id == GD_RESTORE ) - clif_skill_nodamage(src,bl,AL_HEAL,status_percent_heal(bl,90,90),1); + clif_skill_nodamage(src,*bl,AL_HEAL,status_percent_heal(bl,90,90)); else sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id, skill_lv)); } } else if (status_get_guild_id(src)) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, @@ -10554,7 +10554,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui default: calls = 0; break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); for (i = 0; i < g->guild.max_member && (!calls || (calls && called < calls)); i++, j++) { if (j > 8) j = 0; @@ -10599,7 +10599,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (pc_setpos(sd, map_id2index(mob_bl->m), mob_bl->x, mob_bl->y, CLR_RESPAWN) != SETPOS_OK) clif_skill_fail( *sd, skill_id ); else - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } else if (sd) clif_skill_fail( *sd, skill_id ); break; @@ -10616,7 +10616,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SG_HATE: if (sd) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (!pc_set_hate_mob(sd, skill_lv-1, bl)) clif_skill_fail( *sd, skill_id ); } @@ -10637,12 +10637,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; } } - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; case GS_GLITTERING: if(sd) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if(rnd()%100 < (20+10*skill_lv)) pc_addspiritball(sd,skill_get_time(skill_id,skill_lv),10); else if(sd->spiritball > 0 && !pc_checkskill(sd,RL_RICHS_COIN)) @@ -10656,7 +10656,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { i =65 -5*distance_bl(src,bl); //Base rate if (i < 30) i = 30; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); sc_start(src,bl,SC_STUN, i,skill_lv,skill_get_time2(skill_id,skill_lv)); } break; @@ -10673,7 +10673,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case AM_REST: if (sd) { if (hom_vaporize(sd,HOM_ST_REST)) - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); else clif_skill_fail( *sd, skill_id ); } @@ -10695,7 +10695,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (unit_movepos(bl, x, y, 0, false)) clif_blown(bl); // Show the animation on the homunculus only - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *src, skill_id, skill_lv); } } else if (hd != nullptr && hd->master != nullptr) @@ -10718,8 +10718,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (!bl) bl = src; i = skill_calc_heal(src, bl, skill_id, 1+rnd()%skill_lv, true); //Eh? why double skill packet? - clif_skill_nodamage(src,bl,AL_HEAL,i,1); - clif_skill_nodamage(src,bl,skill_id,i,1); + clif_skill_nodamage(src,*bl,AL_HEAL,i); + clif_skill_nodamage(src,*bl,skill_id,i); status_heal(bl, i, 0, 0); } break; @@ -10734,7 +10734,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case HFLI_SPEED: case MH_ANGRIFFS_MODUS: case MH_GOLDENE_FERSE: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; @@ -10793,7 +10793,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } else { skill_area_temp[2] = 0; //For SD_PREAMBLE - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinallrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv),BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|SD_PREAMBLE|1, @@ -10805,7 +10805,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_percent_damage(src,bl,0,((skill_lv-1)%5+1)*20,false); else { skill_area_temp[2] = 0; //For SD_PREAMBLE - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinallrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv),BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|SD_PREAMBLE|1, @@ -10817,7 +10817,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( skill_lv > 1 ) sflag |= 4; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinshootrange(skill_area_sub,src,skill_get_splash(skill_id,skill_lv),splash_target(src),src, skill_id,skill_lv,tick,sflag|BCT_ENEMY|SD_ANIMATION|1,skill_castend_damage_id); } @@ -10830,22 +10830,22 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); } else - clif_skill_nodamage(src,bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case NPC_TALK: case ALL_WEWISH: case ALL_CATCRY: case ALL_DREAM_SUMMERNIGHT: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case ALL_BUYING_STORE: if( sd ) {// players only, skill allows 5 buying slots - clif_skill_nodamage(src, bl, skill_id, skill_lv, buyingstore_setup(sd, MAX_BUYINGSTORE_SLOTS) ? 0 : 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, buyingstore_setup(sd, MAX_BUYINGSTORE_SLOTS) == 0); } break; case RK_ENCHANTBLADE: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start2(src,bl,type,100,skill_lv,((100+20*skill_lv)*status_get_lv(src))/100+sstatus->int_,skill_get_time(skill_id,skill_lv))); break; case RK_DRAGONHOWLING: @@ -10854,7 +10854,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else { skill_area_temp[2] = 0; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id,skill_lv),BL_CHAR, src,skill_id,skill_lv,tick,flag|BCT_ENEMY|SD_PREAMBLE|1, @@ -10874,7 +10874,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RK_LUXANIMA: status_change_clear_buffs(bl, SCCB_LUXANIMA); // For bonus_script sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; case RK_GIANTGROWTH: case RK_STONEHARDSKIN: @@ -10900,7 +10900,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui rune_level = 9; if (pc_checkskill(sd, RK_RUNEMASTERY) >= rune_level) { if (sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))) - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); else if (skill_id == RK_STONEHARDSKIN) clif_skill_fail( *sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT ); } else @@ -10910,7 +10910,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case NPC_MILLENNIUMSHIELD: if (sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))) - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; case RK_FIGHTINGSPIRIT: { @@ -10919,7 +10919,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // val1: ATKBonus: ? // !TODO: Confirm new ATK formula // val2: ASPD boost: [RK_RUNEMASTERYlevel * 4 / 10] * 10 ==> RK_RUNEMASTERYlevel * 4 sc_start2(src,bl,type,100,70 + 7 * runemastery_skill_lv,4 * runemastery_skill_lv,skill_get_time(skill_id,skill_lv)); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; } @@ -10936,7 +10936,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(bl, SC_ROLLINGCUTTER); } sc_start(src,bl,SC_ROLLINGCUTTER,100,count,skill_get_time(skill_id,skill_lv)); - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); } break; @@ -10945,26 +10945,26 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(bl, SC_WEAPONBLOCKING); else sc_start(src,bl,SC_WEAPONBLOCKING,100,skill_lv,skill_get_time(skill_id,skill_lv)); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case GC_CREATENEWPOISON: if( sd ) { clif_skill_produce_mix_list( *sd, skill_id, 25 ); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; case GC_POISONINGWEAPON: if( sd ) { clif_poison_list( *sd, skill_lv ); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; case GC_ANTIDOTE: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if( tsc ) { status_change_end(bl, SC_PARALYSE); @@ -10980,7 +10980,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case GC_PHANTOMMENACE: clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinrange(skill_area_sub,src,skill_get_splash(skill_id,skill_lv),BL_CHAR, src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); break; @@ -10997,13 +10997,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( sd ) clif_skill_fail( *sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT ); break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); } break; case AB_ANCILLA: if( sd ) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); skill_produce_mix(sd, skill_id, ITEMID_ANCILLA, 0, 0, 0, 1, -1); } break; @@ -11014,7 +11014,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui int bless_lv = ((sd) ? pc_checkskill(sd,AL_BLESSING) : skill_get_max(AL_BLESSING)) + (((sd) ? sd->status.job_level : 50) / 10); int agi_lv = ((sd) ? pc_checkskill(sd,AL_INCAGI) : skill_get_max(AL_INCAGI)) + (((sd) ? sd->status.job_level : 50) / 10); if( sd == nullptr || sd->status.party_id == 0 || flag&1 ) - clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src,bl,type,100, + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start(src,bl,type,100, (skill_id == AB_CLEMENTIA)? bless_lv : (skill_id == AB_CANTO)? agi_lv : skill_lv, skill_get_time(skill_id,skill_lv))); else if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); @@ -11025,9 +11025,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case AB_RENOVATIO: if( !sd || sd->status.party_id == 0 || flag&1 ) { if (skill_id == AB_PRAEFATIO) - clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start4(src, bl, type, 100, skill_lv, 0, 0, (sd && sd->status.party_id ? party_foreachsamemap(party_sub_count, sd, 0) : 1 ), skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start4(src, bl, type, 100, skill_lv, 0, 0, (sd && sd->status.party_id ? party_foreachsamemap(party_sub_count, sd, 0) : 1 ), skill_get_time(skill_id, skill_lv))); else - clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); } else if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); break; @@ -11044,7 +11044,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( (dstsd && pc_ismadogear(dstsd)) || status_isimmune(bl)) i = 0; // Should heal by 0 or won't do anything?? in iRO it breaks the healing to members.. [malufett] - clif_skill_nodamage(src, bl, skill_id, i, 1); + clif_skill_nodamage(src, *bl, skill_id, i); if( tsc && tsc->getSCE(SC_AKAITSUKI) && i ) i = ~i + 1; status_heal(bl, i, 0, 0); @@ -11059,7 +11059,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui i = skill_calc_heal(src, bl, AL_HEAL, 10, true); if (status_isimmune(bl)) i = 0; - clif_skill_nodamage(src, bl, skill_id, i, 1); + clif_skill_nodamage(src, *bl, skill_id, i); if( tsc && tsc->getSCE(SC_AKAITSUKI) && i ) i = ~i + 1; status_heal(bl, i, 0, 0); @@ -11068,7 +11068,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else { map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_MOB, src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -11078,7 +11078,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else { map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -11095,7 +11095,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(bl, SC_FREEZING); status_change_end(bl, SC_CRYSTALIZE); } else //Success rate only applies to the curing effect and not stat bonus. Bonus status only applies to non infected targets - clif_skill_nodamage(bl, bl, skill_id, skill_lv, + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start(src,bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); } else if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), @@ -11113,7 +11113,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(bl, SC_SILENCE); status_change_end(bl, SC_DEEPSLEEP); } else // Success rate only applies to the curing effect and not stat bonus. Bonus status only applies to non infected targets - clif_skill_nodamage(bl, bl, skill_id, skill_lv, + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start(src,bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); } else if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), @@ -11126,7 +11126,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( bl->type != BL_MOB && battle_check_target(src,bl,BCT_PARTY) <= 0 ) // Only affect mob or party. break; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if(rnd()%100 >= 60 + 8 * skill_lv) { if (sd) @@ -11180,7 +11180,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // Should the level of Lex Divina be equivalent to the level of Silentium or should the highest level learned be used? [LimitLine] map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, PR_LEXDIVINA, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; case WL_STASIS: @@ -11190,7 +11190,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui struct map_data *mapdata = map_getmapdata(src->m); map_foreachinallrange(skill_area_sub,src,skill_get_splash(skill_id, skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,(mapdata_flag_vs(mapdata)?BCT_ALL:BCT_ENEMY|BCT_SELF)|flag|1,skill_castend_nodamage_id); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -11216,7 +11216,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( !(tsc && tsc->getSCE(type)) ){ i = sc_start2(src,bl,type,rate,skill_lv,src->id,(src == bl)?5000:(bl->type == BL_PC)?skill_get_time(skill_id,skill_lv):skill_get_time2(skill_id, skill_lv)); - clif_skill_nodamage(src,bl,skill_id,skill_lv,i); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,i); if( sd && !i ) clif_skill_fail( *sd, skill_id ); } @@ -11226,7 +11226,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case NPC_JACKFROST: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_foreachinrange(skill_area_sub,bl,skill_get_splash(skill_id,skill_lv),BL_CHAR|BL_SKILL,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); break; @@ -11244,7 +11244,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // IroWiki says Rate should be reduced by target stats, but currently unknown if( rnd()%100 < rate ) { // Success on First Target if( status_change_start(src,bl,type,10000,skill_lv,src->id,0,0,skill_get_time2(skill_id,skill_lv), SCSTART_NOTICKDEF, skill_get_time(skill_id, skill_lv)) ) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); skill_area_temp[1] = bl->id; map_foreachinallrange(skill_area_sub,bl,skill_get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_nodamage_id); } @@ -11304,7 +11304,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } } - clif_skill_nodamage(src, bl, skill_id, 0, 0); + clif_skill_nodamage(src, *bl, skill_id, 0, false); } break; @@ -11315,14 +11315,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; } - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); skill_spellbook(*sd, ITEMID_WL_MB_SG + skill_lv - 1); } break; case RA_FEARBREEZE: clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src,bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src,bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); break; case RA_WUGMASTERY: @@ -11331,7 +11331,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui pc_setoption(sd,sd->sc.option|OPTION_WUG); else pc_setoption(sd,sd->sc.option&~OPTION_WUG); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -11344,24 +11344,24 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui pc_setoption(sd,sd->sc.option&~OPTION_WUGRIDER); pc_setoption(sd,sd->sc.option|OPTION_WUG); } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; case RA_WUGDASH: if( tsce ) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,status_change_end(bl, type)); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,status_change_end(bl, type)); map_freeblock_unlock(); return 0; } if( sd && pc_isridingwug(sd) ) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,sc_start4(src,bl,type,100,skill_lv,unit_getdir(bl),0,0,0)); + clif_skill_nodamage(src,*bl,skill_id,skill_lv,sc_start4(src,bl,type,100,skill_lv,unit_getdir(bl),0,0,0)); clif_walkok(*sd); } break; case RA_SENSITIVEKEEN: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); clif_skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); map_foreachinrange(skill_area_sub,src,skill_get_splash(skill_id,skill_lv),BL_CHAR|BL_SKILL,src,skill_id,skill_lv,tick,flag|BCT_ENEMY,skill_castend_damage_id); break; @@ -11371,7 +11371,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { uint8 dir = (skill_id == NC_F_SIDESLIDE) ? (unit_getdir(src)+4)%8 : unit_getdir(src); skill_blown(src,bl,skill_get_blewcount(skill_id,skill_lv),dir,BLOWN_IGNORE_NO_KNOCKBACK); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -11380,7 +11380,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( pc_ismadogear(sd) ) pc_setmadogear(sd, false); skill_area_temp[1] = 0; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR|BL_SKILL, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); status_set_sp(src, 0, 0); skill_clear_unitgroup(src); @@ -11388,7 +11388,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case NC_EMERGENCYCOOL: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (sd) { struct s_skill_condition req = skill_get_requirement(sd, skill_id, skill_lv); int16 limit[] = { -45, -75, -105 }; @@ -11435,7 +11435,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } heal = dstsd->status.max_hp * hp / 100; status_heal(bl,heal,0,2); - clif_skill_nodamage(src, bl, skill_id, skill_lv, heal); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, heal != 0); } break; @@ -11445,7 +11445,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui md = map_id2md(bl->id); if( md && md->mob_id >= MOBID_SILVERSNIPER && md->mob_id <= MOBID_MAGICDECOY_WIND ) status_kill(bl); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; case SC_AUTOSHADOWSPELL: @@ -11455,7 +11455,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { sc_start(src,src,SC_STOP,100,skill_lv,INFINITE_TICK);// The skill_lv is stored in val1 used in skill_select_menu to determine the used skill lvl [Xazax] clif_autoshadowspell_list( *sd ); - clif_skill_nodamage(src,bl,skill_id,1,1); + clif_skill_nodamage(src,*bl,skill_id,1); } else clif_skill_fail( *sd, skill_id, USESKILL_FAIL_IMITATION_SKILL_NONE ); @@ -11464,7 +11464,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SC_SHADOWFORM: if( sd && dstsd && src != bl && !dstsd->shadowform_id ) { - if( clif_skill_nodamage(src,bl,skill_id,skill_lv,sc_start4(src,src,type,100,skill_lv,bl->id,4+skill_lv,0,skill_get_time(skill_id, skill_lv))) ) + if( clif_skill_nodamage(src,*bl,skill_id,skill_lv,sc_start4(src,src,type,100,skill_lv,bl->id,4+skill_lv,0,skill_get_time(skill_id, skill_lv))) ) dstsd->shadowform_id = src->id; } else if( sd ) @@ -11486,7 +11486,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)); sc_start(src, bl, SC_BLIND, 53 + 2 * skill_lv, skill_lv, skill_get_time2(skill_id, skill_lv)); } else { - clif_skill_nodamage(src, bl, skill_id, 0, 1); + clif_skill_nodamage(src, *bl, skill_id, 0); map_foreachinallrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); } @@ -11505,7 +11505,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui rate = status_get_lv(src) / 10 + rnd_value(sstatus->dex / 12, sstatus->dex / 4) + ( sd ? sd->status.job_level : 50 ) + 10 * skill_lv - (status_get_lv(bl) / 10 + rnd_value(tstatus->agi / 6, tstatus->agi / 3) + tstatus->luk / 10 + ( dstsd ? (dstsd->max_weight / 10 - dstsd->weight / 10 ) / 100 : 0)); rate = cap_value(rate, skill_lv + sstatus->dex / 20, 100); - clif_skill_nodamage(src,bl,skill_id,0,sc_start(src,bl,type,rate,skill_lv,skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src,*bl,skill_id,0,sc_start(src,bl,type,rate,skill_lv,skill_get_time(skill_id,skill_lv))); } else if( sd ) clif_skill_fail( *sd, skill_id ); break; @@ -11519,7 +11519,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui rate = status_get_lv(src) / 10 + rnd_value(sstatus->dex / 12, sstatus->dex / 4) + ( sd ? sd->status.job_level : 50 ) + 10 * skill_lv - (status_get_lv(bl) / 10 + rnd_value(tstatus->agi / 6, tstatus->agi / 3) + tstatus->luk / 10 + ( dstsd ? (dstsd->max_weight / 10 - dstsd->weight / 10 ) / 100 : 0)); rate = cap_value(rate, skill_lv + sstatus->dex / 20, 100); - if (clif_skill_nodamage(src,bl,skill_id,0,sc_start(src,bl,type,rate,skill_lv,skill_get_time(skill_id,skill_lv)))) { + if (clif_skill_nodamage(src,*bl,skill_id,0,sc_start(src,bl,type,rate,skill_lv,skill_get_time(skill_id,skill_lv)))) { int sp = 100 * skill_lv; if( dstmd ) @@ -11546,7 +11546,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(bl,type); else sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case LG_PIETY: @@ -11555,7 +11555,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else { skill_area_temp[2] = 0; map_foreachinallrange(skill_area_sub,bl,skill_get_splash(skill_id,skill_lv),BL_PC,src,skill_id,skill_lv,tick,flag|SD_PREAMBLE|BCT_PARTY|BCT_SELF|1,skill_castend_nodamage_id); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -11576,7 +11576,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui count = map_forcountinrange(skill_area_sub, src, skill_get_splash(skill_id,skill_lv), (sd)?sd->spiritball_old:15, // Assume 15 spiritballs in non-charactors BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); if( sd ) pc_delspiritball(sd, count, 0); - clif_skill_nodamage(src, src, skill_id, skill_lv, + clif_skill_nodamage(src, *src, skill_id, skill_lv, sc_start2(src,src, SC_CURSEDCIRCLE_ATKER, 100, skill_lv, count, skill_get_time(skill_id,skill_lv))); } break; @@ -11598,7 +11598,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui count = map_forcountinrange(skill_area_sub, src, skill_get_splash(skill_id,skill_lv), (sd)?sd->spiritball_old:15, // Assume 15 spiritballs in non-charactors BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); if( sd ) pc_delspiritball(sd, count, 0); - clif_skill_nodamage(src, src, skill_id, skill_lv, + clif_skill_nodamage(src, *src, skill_id, skill_lv, sc_start2(src,src, SC_CURSEDCIRCLE_ATKER, 50, skill_lv, count, skill_get_time(skill_id,skill_lv))); } break; @@ -11609,7 +11609,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(src,bl, SC_EXPLOSIONSPIRITS, 100, skill_lv, skill_get_time(skill_id, skill_lv)); for( i = 0; i < max; i++ ) // Don't call more than max available spheres. pc_addspiritball(sd, skill_get_time(skill_id, skill_lv), max); - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src,bl, type, 100, skill_lv,skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src,bl, type, 100, skill_lv,skill_get_time(skill_id, skill_lv))); } break; @@ -11628,7 +11628,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } if (i) status_percent_heal(src, 0, i); - clif_skill_nodamage(src, bl, skill_id, skill_lv, i ? 1:0); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, i != 0); } else { clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); map_foreachinallrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|BCT_SELF|SD_SPLASH|1, skill_castend_nodamage_id); @@ -11644,7 +11644,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui pc_delspiritball(sd, sd->spiritball, 0); } } - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); break; case SR_GENTLETOUCH_CURE: @@ -11668,13 +11668,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(bl, SC_HALLUCINATION); } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; case SR_GENTLETOUCH_ENERGYGAIN: case SR_GENTLETOUCH_CHANGE: case SR_GENTLETOUCH_REVITALIZE: - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case SR_FLASHCOMBO: { @@ -11683,7 +11683,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (sd) // Disable attacking/acting/moving for skill's duration. sd->ud.attackabletime = sd->canuseitem_tick = sd->ud.canact_tick = tick + delay[2]; - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,src,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); for (i = 0; i < ARRAYLENGTH(combo); i++) skill_addtimerskill(src,tick + delay[i],bl->id,0,0,combo[i],skill_lv,BF_WEAPON,flag|SD_LEVEL); @@ -11696,19 +11696,19 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case MI_RUSH_WINDMILL: case MI_ECHOSONG: if( !sd || !sd->status.party_id || (flag & 1) ) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); sc_start2(src,bl,type,100,skill_lv,((sd) ? pc_checkskill(sd,WM_LESSON) : skill_get_max(WM_LESSON)),skill_get_time(skill_id,skill_lv)); } else if( sd ) { party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); sc_start2(src,bl,type,100,skill_lv,((sd) ? pc_checkskill(sd,WM_LESSON) : skill_get_max(WM_LESSON)),skill_get_time(skill_id,skill_lv)); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; case MI_HARMONIZE: if( src != bl ) - clif_skill_nodamage(src, src, skill_id, skill_lv, sc_start(src,src, type, 100, skill_lv, skill_get_time(skill_id,skill_lv))); - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src,bl, type, 100, skill_lv, skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src, *src, skill_id, skill_lv, sc_start(src,src, type, 100, skill_lv, skill_get_time(skill_id,skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src,bl, type, 100, skill_lv, skill_get_time(skill_id,skill_lv))); break; case WM_DEADHILLHERE: @@ -11718,7 +11718,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui tstatus->hp = max(tstatus->sp, 1); tstatus->sp -= tstatus->sp * ( 60 - 10 * skill_lv ) / 100; - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); pc_revive(reinterpret_cast(bl),true,true); clif_resurrection( *bl ); } @@ -11732,12 +11732,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui skill_area_temp[5] = skill_lv * 6 + ((sd) ? pc_checkskill(sd, WM_LESSON) : 1) * 2 + (sd ? sd->status.job_level : 50) / 2; skill_area_temp[6] = skill_get_time(skill_id,skill_lv); map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id,skill_lv), BL_CHAR|BL_SKILL, src, skill_id, skill_lv, tick, flag|BCT_ALL|BCT_WOS|1, skill_castend_nodamage_id); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; case WM_GLOOMYDAY: - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if( dstsd && ( pc_checkskill(dstsd,KN_BRANDISHSPEAR) || pc_checkskill(dstsd,LK_SPIRALPIERCE) || pc_checkskill(dstsd,CR_SHIELDCHARGE) || pc_checkskill(dstsd,CR_SHIELDBOOMERANG) || pc_checkskill(dstsd,PA_SHIELDCHAIN) || pc_checkskill(dstsd,LG_SHIELDPRESS) ) ) @@ -11754,7 +11754,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } else if (sd) { if( rnd()%100 < sstatus->int_ / 6 + sd->status.job_level / 5 + skill_lv * 4 + pc_checkskill(sd, WM_LESSON) ) { // !TODO: What's the Lesson bonus? map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id,skill_lv),BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } } break; @@ -11771,7 +11771,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } else if( sd ) { if( sc_start2(src,bl,type,100,skill_lv,pc_checkskill(sd, WM_LESSON),skill_get_time(skill_id,skill_lv)) ) party_foreachsamemap(skill_area_sub,sd,skill_get_splash(skill_id,skill_lv),src,skill_id,skill_lv,tick,flag|BCT_PARTY|1,skill_castend_nodamage_id); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -11781,7 +11781,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } else { // These affect to all targets around the caster. if( rnd()%100 < 5 + 5 * skill_lv + pc_checkskill(sd, WM_LESSON) ) { // !TODO: What's the Lesson bonus? map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id,skill_lv),BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } } break; @@ -11792,7 +11792,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } else { // These affect to all targets around the caster. if( rnd()%100 < 12 + 3 * skill_lv + (sd ? pc_checkskill(sd, WM_LESSON) : 0) ) { // !TODO: What's the Lesson bonus? map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id,skill_lv),BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } } break; @@ -11802,7 +11802,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(src, bl, type, 100, skill_lv, (sd ? pc_checkskill(sd, WM_LESSON) * 500 : 0) + skill_get_time(skill_id, skill_lv)); // !TODO: Confirm Lesson increase } else { map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv),BL_PC, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -11817,7 +11817,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(bl, SC_BEYONDOFWARCRY); status_change_end(bl, SC_UNLIMITEDHUMMINGVOICE); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -11919,7 +11919,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; } clif_skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, 1, DMG_SINGLE); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); break; case GM_SANDMAN: @@ -11929,7 +11929,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else tsc->opt1 = OPT1_SLEEP; clif_changeoption(bl); - clif_skill_nodamage (src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -11937,7 +11937,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui { int rate = (15 + 5 * skill_lv) + status_get_int(src) / 5 + (sd ? sd->status.job_level / 5 : 0) - status_get_int(bl) / 6 - status_get_luk(bl) / 10; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); sc_start(src, bl, type, rate, skill_lv, skill_get_time(skill_id, skill_lv)); } break; @@ -11949,7 +11949,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(src, bl, type, rate, skill_lv, duration); } else { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinallrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); } break; @@ -11970,7 +11970,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif_skill_fail( *sd, skill_id ); break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -11993,7 +11993,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif_skill_fail( *sd, skill_id ); break; } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -12014,7 +12014,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } sd->skill_id_old = skill_id; elemental_action(sd->ed, bl, tick); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); skill_blockpc_start(sd, skill_id, duration); } break; @@ -12036,14 +12036,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } status_heal(&ed->bl,s_hp,s_sp,3); - clif_skill_nodamage(src,&ed->bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,ed->bl,skill_id,skill_lv); } break; case GN_CHANGEMATERIAL: case SO_EL_ANALYSIS: if( sd ) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); clif_skill_itemlistwindow(sd,skill_id,skill_lv); } break; @@ -12067,7 +12067,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } } else { map_foreachinallrange(skill_area_sub,bl,skill_get_splash(skill_id,skill_lv),BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_nodamage_id); - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); } break; case GN_SLINGITEM: @@ -12120,8 +12120,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } } } - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1);// This packet is received twice actually, I think it is to show the animation. + clif_skill_nodamage(src,*bl,skill_id,skill_lv); + clif_skill_nodamage(src,*bl,skill_id,skill_lv);// This packet is received twice actually, I think it is to show the animation. break; case GN_MIX_COOKING: case GN_MAKEBOMB: @@ -12133,7 +12133,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( skill_id != GN_S_PHARMACY && skill_lv > 1 ) qty = 10; clif_cooking_list( *sd, ( skill_id - GN_MIX_COOKING ) + 27, skill_id, qty, skill_id == GN_MAKEBOMB ? 5 : 6 ); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); } break; @@ -12176,7 +12176,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(src,type); status_change_end(bl,type2); } else { - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); if (!(skill_id >= EM_EL_FLAMETECHNIC && skill_id <= EM_EL_DEADLY_POISON)) clif_skill_damage(src, ( skill_id == EL_GUST || skill_id == EL_BLAST || skill_id == EL_WILD_STORM )?src:bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); if( skill_id == EL_WIND_STEP ) // There aren't teleport, just push the master away. @@ -12200,7 +12200,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change *esc = status_get_sc(&ele->bl); sc_type type2 = (sc_type)(type-1); - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); if( (esc && esc->getSCE(type2)) || (tsc && tsc->getSCE(type)) ) { status_change_end(bl,type); status_change_end(src,type2); @@ -12220,7 +12220,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case KO_DOHU_KOUKAI: if (sd) { int ele_type = skill_get_ele(skill_id,skill_lv); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); pc_addspiritcharm(sd,skill_get_time(skill_id,skill_lv),MAX_SPIRITCHARM,ele_type); } break; @@ -12238,7 +12238,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui md2->deletetimer = add_timer (gettick() + skill_get_time(skill_id, skill_lv), mob_timer_delete, md2->bl.id, 0); mob_spawn( md2 ); map_foreachinallrange(unit_changetarget, src, AREA_SIZE, BL_MOB, src, &md2->bl); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); skill_blown(src,bl,skill_get_blewcount(skill_id,skill_lv),unit_getdir(bl),BLOWN_NONE); } } @@ -12246,7 +12246,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case KO_KYOUGAKU: if( dstsd && tsc && !tsc->getSCE(type) && rnd()%100 < tstatus->int_/2 ){ - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); }else if( sd ) clif_skill_fail( *sd, skill_id ); @@ -12254,7 +12254,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case KO_JYUSATSU: if( dstsd && tsc && !tsc->getSCE(type) && rnd()%100 < ((45+5*skill_lv) + skill_lv*5 - status_get_int(bl)/2) ){//[(Base chance of success) + (Skill Level x 5) - (int / 2)]%. - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, status_change_start(src,bl,type,10000,skill_lv,0,0,0,skill_get_time(skill_id,skill_lv),SCSTART_NOAVOID|SCSTART_NOTICKDEF)); status_percent_damage(src, bl, tstatus->hp * skill_lv * 5, 0, false); // Does not kill the target. if( status_get_lv(bl) <= status_get_lv(src) ) @@ -12276,7 +12276,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_start(src, bl, SC_CONFUSION, 7500, skill_lv, 0, 0, 0, skill_get_time(skill_id, skill_lv), SCSTART_NORATEDEF); if (skill_check_unit_movepos(5,src,bl->x,bl->y,0,0)) { - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *src, skill_id, skill_lv); clif_blown(src); if (!unit_blown_immune(bl, 0x1)) { unit_movepos(bl,x,y,0,0); @@ -12309,7 +12309,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } } - clif_skill_nodamage(src,bl,skill_id,skill_lv, + clif_skill_nodamage(src,*bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); clif_skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); break; @@ -12332,7 +12332,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui }else{ map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR|BL_SKILL, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); clif_skill_damage(src, src, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -12402,7 +12402,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui block_list* master_bl = battle_get_master(src); if (master_bl != nullptr){ - clif_skill_nodamage(src,master_bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*master_bl,skill_id,skill_lv); sc_start(src, master_bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); } } break; @@ -12444,7 +12444,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case RL_RICHS_COIN: if (sd) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); for (i = 0; i < 10; i++) pc_addspiritball(sd,skill_get_time(skill_id,skill_lv),10); } @@ -12468,12 +12468,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sd->c_marker[i] = bl->id; status_change_start(src, bl, type, 10000, skill_lv, src->id, 0, 0, skill_get_time(skill_id,skill_lv), SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } // If mob casts this, at least SC_C_MARKER as debuff else { status_change_start(src, bl, type, 10000, skill_lv, src->id, 0, 0, skill_get_time(skill_id,skill_lv), SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; case RL_QD_SHOT: @@ -12485,10 +12485,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); // Main target always receives damage - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *src, skill_id, skill_lv); skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_LEVEL); } else { - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *src, skill_id, skill_lv); map_foreachinrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id); } status_change_end(src, SC_QD_SHOT_READY); // End here to prevent spamming of the skill onto the target. @@ -12499,7 +12499,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (sd) { sd->flicker = true; skill_area_temp[1] = 0; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); // Detonate RL_B_TRAP if (pc_checkskill(sd, RL_B_TRAP)) map_foreachinallrange(skill_bind_trap, src, AREA_SIZE, BL_SKILL, src); @@ -12513,7 +12513,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SO_ELEMENTAL_SHIELD: if (!sd || sd->status.party_id == 0 || flag&1) { if (sd && sd->status.party_id == 0) { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (sd->ed && skill_get_state(skill_id) == ST_ELEMENTALSPIRIT2) elemental_delete(sd->ed); } @@ -12521,7 +12521,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui skill_unitsetting(bl, AL_PNEUMA, 1, bl->x, bl->y, 0); } else { - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); if (sd->ed && skill_get_state(skill_id) == ST_ELEMENTALSPIRIT2) elemental_delete(sd->ed); party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id,skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); @@ -12530,22 +12530,22 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SU_HIDE: if (tsce) { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); status_change_end(bl, type); map_freeblock_unlock(); return 0; } - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); break; case SU_STOOP: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); break; case SU_SV_ROOTTWIST: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (sd && status_get_class_(bl) == CLASS_BOSS) { clif_skill_fail( *sd, skill_id, USESKILL_FAIL_TOTARGET ); break; @@ -12568,7 +12568,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui heal = 0; else if (status_get_hp(bl) != status_get_max_hp(bl)) heal = ((2 * skill_lv - 1) * 10) * status_get_max_hp(bl) / 100; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); status_heal(bl, heal, 0, 0); } break; @@ -12582,7 +12582,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (skill_id == SU_BUNCHOFSHRIMP && pc_checkskill(sd, SU_SPIRITOFSEA)) duration += skill_get_time2(SU_BUNCHOFSHRIMP, skill_lv); - clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, duration)); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, duration)); } else if (sd) { party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); } @@ -12592,7 +12592,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (sd == nullptr || sd->status.party_id == 0 || flag&1) { sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); if (sd && (i = pc_checkskill(sd, SU_FRESHSHRIMP)) > 0) { - clif_skill_nodamage(bl, bl, SU_FRESHSHRIMP, i, 1); + clif_skill_nodamage(bl, *bl, SU_FRESHSHRIMP, i, 1); sc_start(src, bl, SC_FRESHSHRIMP, 100, i, skill_get_time(SU_FRESHSHRIMP, i)); } } else if (sd) @@ -12604,7 +12604,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(src, bl, SC_FEAR, 100, skill_lv, skill_get_time(skill_id, skill_lv)); sc_start(src, bl, SC_FREEZE, 100, skill_lv, skill_get_time2(skill_id, skill_lv)); //! TODO: What's the duration? } else { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (battle_config.skill_wall_check) map_foreachinshootrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); else @@ -12626,10 +12626,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case AB_VITUPERATUM: if (flag&1) - clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + clif_skill_nodamage(src, *bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); else { map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_nodamage_id); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -12689,7 +12689,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(src, bl, (sc_type)(SC_CP_WEAPON + i_eqp), 100, skill_lv, skill_get_time(skill_id, skill_lv)); } } else if (sd) { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag | BCT_PARTY | 1, skill_castend_nodamage_id); } break; @@ -12700,7 +12700,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (sd == nullptr || sd->status.party_id == 0 || (flag & 1)) sc_start4(src, bl, type, 100, skill_lv, 0, flag, 0, skill_get_time(skill_id, skill_lv)); else if (sd) { - clif_skill_nodamage(bl, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv); sd->skill_id_song = skill_id; sd->skill_lv_song = skill_lv; @@ -12717,7 +12717,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (flag & 1) sc_start4(src, bl, type, 100, skill_lv, 0, flag, 0, skill_get_time(skill_id, skill_lv)); else if (sd) { - clif_skill_nodamage(bl, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv); sd->skill_id_song = skill_id; sd->skill_lv_song = skill_lv; @@ -12746,7 +12746,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(src, bl, SC_HANDICAPSTATE_DEPRESSION, success_chance, skill_lv, skill_get_time2(skill_id, skill_lv)); } } else if (sd) { - clif_skill_nodamage(bl, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(bl, *bl, skill_id, skill_lv); sd->skill_id_song = skill_id; sd->skill_lv_song = skill_lv; @@ -12765,15 +12765,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (skill_id == ABR_NET_REPAIR) { heal_amount = tstatus->max_hp * 10 / 100; - clif_skill_nodamage( nullptr, bl, AL_HEAL, heal_amount, 1 ); + clif_skill_nodamage(nullptr, *bl, AL_HEAL, heal_amount); status_heal(bl, heal_amount, 0, 0); } else { // ABR_NET_SUPPORT heal_amount = tstatus->max_sp * 3 / 100; - clif_skill_nodamage( nullptr, bl, MG_SRECOVERY, heal_amount, 1 ); + clif_skill_nodamage(nullptr, *bl, MG_SRECOVERY, heal_amount); status_heal(bl, 0, heal_amount, 0); } } else { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ALLY | SD_SPLASH | 1, skill_castend_nodamage_id); } break; @@ -12784,7 +12784,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui pc_setoption(sd, sd->sc.option | OPTION_FALCON); else pc_setoption(sd, sd->sc.option&~OPTION_FALCON); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -12793,7 +12793,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case EM_SUMMON_ELEMENTAL_PROCELLA: case EM_SUMMON_ELEMENTAL_TERREMOTUS: case EM_SUMMON_ELEMENTAL_SERPENS: { - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (sd == nullptr) break; @@ -12822,7 +12822,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case EM_ELEMENTAL_VEIL: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if (sd == nullptr) break; @@ -12843,7 +12843,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif_cooking_list( *sd, 31, skill_id, 1, 7 ); else // BO_BIONIC_PHARMACY clif_cooking_list( *sd, 32, skill_id, 1, 8 ); - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); } break; @@ -12853,7 +12853,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case MT_SUMMON_ABR_INFINITY: { uint32 abrs[4] = { MOBID_ABR_BATTLE_WARIOR, MOBID_ABR_DUAL_CANNON, MOBID_ABR_MOTHER_NET, MOBID_ABR_INFINITY }; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); mob_data *md = mob_once_spawn_sub(src, src->m, src->x, src->y, "--ja--", abrs[3 - (MT_SUMMON_ABR_INFINITY - skill_id)], "", SZ_SMALL, AI_ABR); @@ -12876,7 +12876,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case BO_HELLTREE: { // A poring is used in the 4th slot as a dummy since the Research Report skill is in between the Creeper and Hell Tree skills. uint32 bionics[5] = { MOBID_BIONIC_WOODENWARRIOR, MOBID_BIONIC_WOODEN_FAIRY, MOBID_BIONIC_CREEPER, MOBID_PORING, MOBID_BIONIC_HELLTREE }; - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); mob_data *md = mob_once_spawn_sub(src, src->m, src->x, src->y, "--ja--", bionics[4 - (BO_HELLTREE - skill_id)], "", SZ_SMALL, AI_BIONIC); @@ -12900,7 +12900,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui #endif case NPC_LEASH: - clif_skill_nodamage( src, bl, skill_id, skill_lv, 1 ); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); if( !skill_check_unit_movepos( 0, bl, src->x, src->y, 1, 1 ) ){ return 0; @@ -12918,13 +12918,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif_blown( bl ); }else{ skill_area_temp[2] = 0; // For SD_PREAMBLE - clif_skill_nodamage( src, bl, skill_id, skill_lv, 1 ); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinallrange( skill_area_sub, bl, skill_get_splash( skill_id, skill_lv ), BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_PREAMBLE | 1, skill_castend_nodamage_id ); } break; case HN_HELLS_DRIVE: - clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *bl, skill_id, skill_lv); map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | 1, skill_castend_damage_id); break; @@ -12936,9 +12936,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (sd && sd->weapontype1 == W_GATLING) { i = 5; // 11x11 - clif_skill_nodamage(src, bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_GATLING, skill_lv, 1); + clif_skill_nodamage(src, *bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_GATLING, skill_lv); } else - clif_skill_nodamage(src, bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_SHOTGUN, skill_lv, 1); + clif_skill_nodamage(src, *bl, NW_THE_VIGILANTE_AT_NIGHT_GUN_SHOTGUN, skill_lv); map_foreachinrange(skill_area_sub, bl, i, BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill_castend_damage_id); if (sc && sc->getSCE(SC_INTENSIVE_AIM_COUNT)) status_change_end(src, SC_INTENSIVE_AIM_COUNT); @@ -12952,13 +12952,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(src, SC_INTENSIVE_AIM_COUNT); sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); } - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *src, skill_id, skill_lv); break; case NW_HIDDEN_CARD: case NW_AUTO_FIRING_LAUNCHER: sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *src, skill_id, skill_lv); break; case NW_GRENADE_FRAGMENT: @@ -12973,13 +12973,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui status_change_end(src, SC_GRENADE_FRAGMENT_5); status_change_end(src, SC_GRENADE_FRAGMENT_6); } - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *src, skill_id, skill_lv); break; default: { std::shared_ptr skill = skill_db.find(skill_id); ShowWarning("skill_castend_nodamage_id: missing code case for skill %s(%d)\n", skill ? skill->name : "UNKNOWN", skill_id); - clif_skill_nodamage(src,bl,skill_id,skill_lv,1); + clif_skill_nodamage(src,*bl,skill_id,skill_lv); map_freeblock_unlock(); return 1; } @@ -13740,7 +13740,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui break; //Effect is displayed on respective switch case. default: if(skill_get_inf(skill_id)&INF_SELF_SKILL) - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); else clif_skill_poseffect(src,skill_id,skill_lv,x,y,tick); } @@ -14385,7 +14385,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui } map_foreachinallrange(unit_changetarget, src, AREA_SIZE, BL_MOB, src, &group->unit->bl); // Release all targets against the caster skill_blown(src, src, skill_get_blewcount(skill_id, skill_lv), unit_getdir(src), BLOWN_IGNORE_NO_KNOCKBACK); // Don't stop the caster from backsliding if special_state.no_knockback is active - clif_skill_nodamage(src, src, skill_id, skill_lv, 0); + clif_skill_nodamage(src, *src, skill_id, skill_lv, false); sc_start(src, src, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)); } break; @@ -14393,7 +14393,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case SC_ESCAPE: skill_unitsetting(src, skill_id, skill_lv, x, y, 0); skill_blown(src, src, skill_get_blewcount(skill_id, skill_lv), unit_getdir(src), BLOWN_IGNORE_NO_KNOCKBACK); // Don't stop the caster from backsliding if special_state.no_knockback is active - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); flag |= 1; break; @@ -14402,7 +14402,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui status_change_end(src,SC_BANDING); else if( (sg = skill_unitsetting(src,skill_id,skill_lv,src->x,src->y,0)) != nullptr ) sc_start4(src,src,SC_BANDING,100,skill_lv,0,0,sg->group_id,skill_get_time(skill_id,skill_lv)); - clif_skill_nodamage(src,src,skill_id,skill_lv,1); + clif_skill_nodamage(src,*src,skill_id,skill_lv); break; case WM_DOMINION_IMPULSE: @@ -14568,7 +14568,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui y = src->y; } - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); + clif_skill_nodamage(src, *src, skill_id, skill_lv); if (!map_count_oncell(src->m, x, y, BL_PC|BL_NPC|BL_MOB, 0) && map_getcell(src->m, x, y, CELL_CHKREACH) && unit_movepos(src, x, y, 1, 0)) clif_blown(src); } @@ -16105,8 +16105,8 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t int heal = (int)skill_attack(skill_get_type(sg->skill_id),ss,&unit->bl,bl,sg->skill_id,sg->skill_lv,tick,0); if (heal > 0) { - clif_skill_nodamage(ss,bl,sg->skill_id,sg->skill_lv,1); - clif_skill_nodamage(nullptr,ss,AL_HEAL,heal,1); + clif_skill_nodamage(ss,*bl,sg->skill_id,sg->skill_lv); + clif_skill_nodamage(nullptr,*ss,AL_HEAL,heal); status_heal(ss,heal,0,0); } } @@ -16159,7 +16159,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t break; if( status_isimmune(bl) ) heal = 0; - clif_skill_nodamage(&unit->bl, bl, AL_HEAL, heal, 1); + clif_skill_nodamage(&unit->bl, *bl, AL_HEAL, heal); if( tsc && tsc->getSCE(SC_AKAITSUKI) && heal ) heal = ~heal + 1; status_heal(bl, heal, 0, 0); @@ -16179,7 +16179,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t break; if (status_isimmune(bl)) heal = 0; - clif_skill_nodamage(&unit->bl, bl, AL_HEAL, heal, 1); + clif_skill_nodamage(&unit->bl, *bl, AL_HEAL, heal); status_heal(bl, heal, 0, 0); } break; @@ -16362,7 +16362,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t heal = skill_calc_heal(ss,bl,sg->skill_id, sg->skill_lv, true); if (tsc->getSCE(SC_AKAITSUKI) && heal) heal = ~heal + 1; - clif_skill_nodamage(&unit->bl, bl, AL_HEAL, heal, 1); + clif_skill_nodamage(&unit->bl, *bl, AL_HEAL, heal); status_heal(bl, heal, 0, 0); } break; @@ -16384,7 +16384,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t { case 0: // Heal 1000~9999 HP heal = rnd() % 9000 + 1000; - clif_skill_nodamage(ss, bl, AL_HEAL, heal, 1); + clif_skill_nodamage(ss, *bl, AL_HEAL, heal); status_heal(bl, heal, 0, 0); break; case 1: // End all negative status @@ -16455,7 +16455,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t sc_start2(ss, bl, SC_POISON, 100, 1, ss->id, 1800000); //30 minutes break; case 5: // Level 10 Provoke - clif_skill_nodamage(nullptr, bl, SM_PROVOKE, 10, sc_start(ss, bl, SC_PROVOKE, 100, 10, INFINITE_TICK)); //Infinite + clif_skill_nodamage(nullptr, *bl, SM_PROVOKE, 10, sc_start(ss, bl, SC_PROVOKE, 100, 10, INFINITE_TICK)); //Infinite break; case 6: // DEF -100% sc_start(ss, bl, SC_INCDEFRATE, 100, -100, 20000); //20 seconds @@ -16520,9 +16520,9 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t hp = tstatus->max_hp * hp / 100; sp = tstatus->max_sp * sp / 100; if (tstatus->hp < tstatus->max_hp) - clif_skill_nodamage(&unit->bl, bl, AL_HEAL, hp, 1); + clif_skill_nodamage(&unit->bl, *bl, AL_HEAL, hp); if (tstatus->sp < tstatus->max_sp) - clif_skill_nodamage(&unit->bl, bl, MG_SRECOVERY, sp, 1); + clif_skill_nodamage(&unit->bl, *bl, MG_SRECOVERY, sp); if (tsc && tsc->getSCE(SC_AKAITSUKI) && hp) hp = ~hp + 1; status_heal(bl, hp, sp, 3); @@ -17211,7 +17211,7 @@ int skill_check_pc_partner(map_session_data *sd, uint16 skill_id, uint16 *skill_ if (c > 0 && sd->sc.getSCE(SC_DANCING) && (tsd = map_id2sd(p_sd[0])) != nullptr) { sd->sc.getSCE(SC_DANCING)->val4 = tsd->bl.id; sc_start4(&sd->bl,&tsd->bl,SC_DANCING,100,skill_id,sd->sc.getSCE(SC_DANCING)->val2,*skill_lv,sd->bl.id,skill_get_time(skill_id,*skill_lv)+1000); - clif_skill_nodamage(&tsd->bl, &sd->bl, skill_id, *skill_lv, 1); + clif_skill_nodamage(&tsd->bl, sd->bl, skill_id, *skill_lv); tsd->skill_id_dance = skill_id; tsd->skill_lv_dance = *skill_lv; #ifdef RENEWAL @@ -19625,7 +19625,7 @@ void skill_repairweapon( map_session_data& sd, int idx ){ return; } - clif_skill_nodamage(&sd.bl,&target_sd->bl,sd.menuskill_id,1,1); + clif_skill_nodamage(&sd.bl,target_sd->bl,sd.menuskill_id,1); item->attribute = 0;/* clear broken state */ diff --git a/src/map/status.cpp b/src/map/status.cpp index 2a0710d4c7..1d14afd09e 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -1647,7 +1647,7 @@ int status_damage(struct block_list *src,struct block_list *target,int64 dhp, in else status_revive(target, sc->getSCE(SC_KAIZEL)->val2, 0); status_change_clear(target,0); - clif_skill_nodamage(target,target,ALL_RESURRECTION,1,1); + clif_skill_nodamage(target,*target,ALL_RESURRECTION,1); sc_start(src,target,SC_KYRIE,100,10,time); if( target->type == BL_MOB ) @@ -1660,7 +1660,7 @@ int status_damage(struct block_list *src,struct block_list *target,int64 dhp, in if (sc && sc->getSCE(SC_ULTIMATE_S) && !map_flag_gvg2(target->m)) { status_revive(target, 100, 100); status_change_clear(target, 0); - clif_skill_nodamage(target, target, ALL_RESURRECTION, 1, 1); + clif_skill_nodamage(target, *target, ALL_RESURRECTION, 1); if (target->type == BL_MOB) ((TBL_MOB*)target)->state.rebirth = 1; @@ -13137,19 +13137,19 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty switch(sce->val1) { case TK_STORMKICK: skill_combo_toggle_inf(bl, TK_JUMPKICK, 0); - clif_skill_nodamage(bl,bl,TK_READYSTORM,1,1); + clif_skill_nodamage(bl,*bl,TK_READYSTORM,1); break; case TK_DOWNKICK: skill_combo_toggle_inf(bl, TK_JUMPKICK, 0); - clif_skill_nodamage(bl,bl,TK_READYDOWN,1,1); + clif_skill_nodamage(bl,*bl,TK_READYDOWN,1); break; case TK_TURNKICK: skill_combo_toggle_inf(bl, TK_JUMPKICK, 0); - clif_skill_nodamage(bl,bl,TK_READYTURN,1,1); + clif_skill_nodamage(bl,*bl,TK_READYTURN,1); break; case TK_COUNTER: skill_combo_toggle_inf(bl, TK_JUMPKICK, 0); - clif_skill_nodamage(bl,bl,TK_READYCOUNTER,1,1); + clif_skill_nodamage(bl,*bl,TK_READYCOUNTER,1); break; default: // Rest just toggle inf to enable autotarget skill_combo_toggle_inf(bl,sce->val1,INF_SELF_SKILL); diff --git a/src/map/unit.cpp b/src/map/unit.cpp index c600fe4323..eddd3141ab 100644 --- a/src/map/unit.cpp +++ b/src/map/unit.cpp @@ -1639,9 +1639,9 @@ TIMER_FUNC(unit_resume_running){ TBL_PC *sd = map_id2sd(id); if (sd && pc_isridingwug(sd)) - clif_skill_nodamage(ud->bl,ud->bl,RA_WUGDASH,ud->skill_lv,sc_start4(ud->bl,ud->bl,SC_WUGDASH,100,ud->skill_lv,unit_getdir(ud->bl),0,0,0)); + clif_skill_nodamage(ud->bl,*ud->bl,RA_WUGDASH,ud->skill_lv,sc_start4(ud->bl,ud->bl,SC_WUGDASH,100,ud->skill_lv,unit_getdir(ud->bl),0,0,0)); else - clif_skill_nodamage(ud->bl,ud->bl,TK_RUN,ud->skill_lv,sc_start4(ud->bl,ud->bl,SC_RUN,100,ud->skill_lv,unit_getdir(ud->bl),0,0,0)); + clif_skill_nodamage(ud->bl,*ud->bl,TK_RUN,ud->skill_lv,sc_start4(ud->bl,ud->bl,SC_RUN,100,ud->skill_lv,unit_getdir(ud->bl),0,0,0)); if (sd) clif_walkok(*sd);