Fixed clif_clearchar_skillunit (#8371)

Follow up to cc60c46
This commit is contained in:
Lemongrass3110 2024-05-27 01:00:25 +02:00 committed by GitHub
parent 79935a75c9
commit 924d1ddad7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -5545,20 +5545,19 @@ void clif_skill_unit_test(struct block_list *bl, short x, short y, int unit_id,
clif_send(buf, packet_len(0x09ca), bl, AREA);
}
/*==========================================
* Server tells client to remove unit of id 'unit->bl.id'
*------------------------------------------*/
static void clif_clearchar_skillunit(struct skill_unit *unit, int fd)
{
nullpo_retv(unit);
/// Server tells client to remove unit of id 'unit->bl.id'
/// 0120 <id>.L (ZC_SKILL_DISAPPEAR)
static void clif_clearchar_skillunit( skill_unit& unit, map_session_data& sd ){
PACKET_ZC_SKILL_DISAPPEAR packet{};
WFIFOHEAD(fd,packet_len(0x120));
WFIFOW(fd, 0)=0x120;
WFIFOL(fd, 2)=unit->bl.id;
WFIFOSET(fd,packet_len(0x120));
packet.packetType = HEADER_ZC_SKILL_DISAPPEAR;
packet.GID = unit.bl.id;
if(unit->group && unit->group->skill_id == WZ_ICEWALL)
clif_changemapcell(fd,unit->bl.m,unit->bl.x,unit->bl.y,unit->val2,SELF);
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
if( unit.group && unit.group->skill_id == WZ_ICEWALL ){
clif_changemapcell( sd.fd, unit.bl.m, unit.bl.x, unit.bl.y, unit.val2, SELF );
}
}
@ -5651,7 +5650,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
clif_clearflooritem( *reinterpret_cast<flooritem_data*>( bl ), tsd );
break;
case BL_SKILL:
clif_clearchar_skillunit((struct skill_unit *)bl,tsd->fd);
clif_clearchar_skillunit( *((skill_unit *)bl), *tsd );
break;
case BL_NPC:
if(!(((TBL_NPC*)bl)->is_invisible))
@ -5666,7 +5665,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
if (clif_session_isValid(sd)) { //sd is watching tbl go out of view.
nullpo_ret(tbl);
if(tbl->type == BL_SKILL) //Trap knocked out of sight
clif_clearchar_skillunit((struct skill_unit *)tbl,sd->fd);
clif_clearchar_skillunit( *((skill_unit *)tbl), *sd );
else if(((vd=status_get_viewdata(tbl)) && vd->class_ != JT_INVISIBLE) &&
!(tbl->type == BL_NPC && (((TBL_NPC*)tbl)->is_invisible)))
clif_clearunit_single( tbl->id, CLR_OUTSIGHT, *sd );