Converted ZC_USE_SKILL to struct (#8599)
Co-authored-by: Atemo <Atemo@users.noreply.github.com> Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
This commit is contained in:
parent
d382b3f55a
commit
61b3f4a34d
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -6076,45 +6076,35 @@ int clif_skill_damage2(struct block_list *src,struct block_list *dst,t_tick tick
|
||||
|
||||
|
||||
/// Non-damaging skill effect
|
||||
/// 011a <skill id>.W <heal>.W <dst id>.L <src id>.L <result>.B (ZC_USE_SKILL).
|
||||
/// 09cb <skill id>.W <heal>.L <dst id>.L <src id>.L <result>.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 <skill id>.W <heal>.W <dst id>.L <src id>.L <result>.B (ZC_USE_SKILL)
|
||||
/// 09cb <skill id>.W <heal>.L <dst id>.L <src id>.L <result>.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<decltype(p.level)>( heal ), std::numeric_limits<decltype(p.level)>::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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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<std::string>& maps );
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user