Converted some packets to structs (#8332)
This commit is contained in:
parent
c83f41a5a3
commit
d1cf6f4ac7
@ -2416,7 +2416,7 @@ ACMD_FUNC(refine)
|
||||
sd->inventory.u.items_inventory[i].refine = final_refine;
|
||||
current_position = sd->inventory.u.items_inventory[i].equip;
|
||||
pc_unequipitem(sd, i, 3);
|
||||
clif_refine(fd, 0, i, sd->inventory.u.items_inventory[i].refine);
|
||||
clif_refine( *sd, i, ITEMREFINING_SUCCESS );
|
||||
clif_delitem( *sd, i, 1, 3 );
|
||||
clif_additem(sd, i, 1, 0);
|
||||
pc_equipitem(sd, i, current_position);
|
||||
|
@ -9862,7 +9862,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
|
||||
if (dist <= 0 || (!map_check_dir(dir,t_dir) && dist <= tstatus->rhw.range+1)) {
|
||||
uint16 skill_lv = tsc->getSCE(SC_AUTOCOUNTER)->val1;
|
||||
|
||||
clif_skillcastcancel(target); //Remove the casting bar. [Skotlex]
|
||||
clif_skillcastcancel( *target ); //Remove the casting bar. [Skotlex]
|
||||
clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, DMG_NORMAL, 0, false); //Display MISS.
|
||||
status_change_end(target, SC_AUTOCOUNTER);
|
||||
skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skill_lv,tick,0);
|
||||
|
391
src/map/clif.cpp
391
src/map/clif.cpp
@ -1984,16 +1984,14 @@ void clif_homskillup( homun_data& hd, uint16 skill_id ){
|
||||
/// result:
|
||||
/// 0 = failure
|
||||
/// 1 = success
|
||||
void clif_hom_food( map_session_data *sd, int foodid, int fail ){
|
||||
nullpo_retv( sd );
|
||||
void clif_hom_food( map_session_data& sd, int32 foodid, bool success ){
|
||||
PACKET_ZC_FEED_MER packet{};
|
||||
|
||||
struct PACKET_ZC_FEED_MER p;
|
||||
packet.packetType = HEADER_ZC_FEED_MER;
|
||||
packet.result = success;
|
||||
packet.itemId = client_nameid( foodid );
|
||||
|
||||
p.packetType = 0x22f;
|
||||
p.result = fail;
|
||||
p.itemId = client_nameid( foodid );
|
||||
|
||||
clif_send( &p, sizeof( p ), &sd->bl, SELF );
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
|
||||
}
|
||||
|
||||
|
||||
@ -3118,7 +3116,7 @@ void clif_inventorylist( map_session_data *sd ){
|
||||
}
|
||||
|
||||
if( sd->equip_index[EQI_AMMO] >= 0 )
|
||||
clif_arrowequip( sd, sd->equip_index[EQI_AMMO] );
|
||||
clif_arrowequip( *sd );
|
||||
|
||||
if( equip ) {
|
||||
itemlist_equip.PacketType = inventorylistequipType;
|
||||
@ -3898,29 +3896,20 @@ void clif_updatestatus( map_session_data& sd, enum _sp type ){
|
||||
}
|
||||
|
||||
|
||||
/// Notifies client of a parameter change of an another player (ZC_PAR_CHANGE_USER).
|
||||
/// 01ab <account id>.L <var id>.W <value>.L
|
||||
void clif_changestatus(map_session_data* sd,int type,int val)
|
||||
{
|
||||
unsigned char buf[12];
|
||||
/// Notifies client of a parameter change of an another player.
|
||||
/// 01ab <account id>.L <var id>.W <value>.L (ZC_PAR_CHANGE_USER)
|
||||
/// var id:
|
||||
/// SP_MANNER
|
||||
/// ?
|
||||
void clif_changemanner( map_session_data& sd ) {
|
||||
PACKET_ZC_PAR_CHANGE_USER packet{};
|
||||
|
||||
nullpo_retv(sd);
|
||||
packet.packetType = HEADER_ZC_PAR_CHANGE_USER;
|
||||
packet.gid = sd.bl.id;
|
||||
packet.type = static_cast<decltype(packet.type)>(SP_MANNER);
|
||||
packet.value = sd.status.manner;
|
||||
|
||||
WBUFW(buf,0)=0x1ab;
|
||||
WBUFL(buf,2)=sd->bl.id;
|
||||
WBUFW(buf,6)=type;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case SP_MANNER:
|
||||
WBUFL(buf,8)=val;
|
||||
break;
|
||||
default:
|
||||
ShowError("clif_changestatus : unrecognized type %d.\n",type);
|
||||
return;
|
||||
}
|
||||
|
||||
clif_send(buf,packet_len(0x1ab),&sd->bl,AREA_WOS);
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, AREA_WOS );
|
||||
}
|
||||
|
||||
|
||||
@ -4108,104 +4097,100 @@ void clif_refreshlook(struct block_list *bl, int id, int type, int val, enum sen
|
||||
/// <int>.B <need int>.B <dex>.B <need dex>.B <luk>.B <need luk>.B <atk>.W <atk2>.W
|
||||
/// <matk min>.W <matk max>.W <def>.W <def2>.W <mdef>.W <mdef2>.W <hit>.W
|
||||
/// <flee>.W <flee2>.W <crit>.W <aspd>.W <aspd2>.W
|
||||
void clif_initialstatus(map_session_data *sd) {
|
||||
int fd, mdef2;
|
||||
unsigned char *buf;
|
||||
void clif_initialstatus( map_session_data& sd ) {
|
||||
PACKET_ZC_STATUS packet{};
|
||||
|
||||
nullpo_retv(sd);
|
||||
packet.packetType = HEADER_ZC_STATUS;
|
||||
|
||||
fd=sd->fd;
|
||||
WFIFOHEAD(fd, packet_len(0xbd));
|
||||
buf = WFIFOP(fd,0);
|
||||
packet.point = min(sd.status.status_point, INT16_MAX);
|
||||
packet.str = min(sd.status.str, UINT8_MAX);
|
||||
packet.standardStr = pc_need_status_point( &sd, SP_STR, 1 );
|
||||
packet.agi = min(sd.status.agi, UINT8_MAX);
|
||||
packet.standardAgi = pc_need_status_point( &sd, SP_AGI,1 );
|
||||
packet.vit = min(sd.status.vit, UINT8_MAX);
|
||||
packet.standardVit = pc_need_status_point( &sd, SP_VIT,1 );
|
||||
packet.int_ = min(sd.status.int_, UINT8_MAX);
|
||||
packet.standardInt = pc_need_status_point( &sd, SP_INT,1 );
|
||||
packet.dex = min(sd.status.dex, UINT8_MAX);
|
||||
packet.standardDex = pc_need_status_point( &sd, SP_DEX,1 );
|
||||
packet.luk = min(sd.status.luk, UINT8_MAX);
|
||||
packet.standardLuk = pc_need_status_point( &sd, SP_LUK,1 );
|
||||
|
||||
WBUFW(buf,0) = 0xbd;
|
||||
WBUFW(buf,2) = min(sd->status.status_point, INT16_MAX);
|
||||
WBUFB(buf,4) = min(sd->status.str, UINT8_MAX);
|
||||
WBUFB(buf,5) = pc_need_status_point(sd,SP_STR,1);
|
||||
WBUFB(buf,6) = min(sd->status.agi, UINT8_MAX);
|
||||
WBUFB(buf,7) = pc_need_status_point(sd,SP_AGI,1);
|
||||
WBUFB(buf,8) = min(sd->status.vit, UINT8_MAX);
|
||||
WBUFB(buf,9) = pc_need_status_point(sd,SP_VIT,1);
|
||||
WBUFB(buf,10) = min(sd->status.int_, UINT8_MAX);
|
||||
WBUFB(buf,11) = pc_need_status_point(sd,SP_INT,1);
|
||||
WBUFB(buf,12) = min(sd->status.dex, UINT8_MAX);
|
||||
WBUFB(buf,13) = pc_need_status_point(sd,SP_DEX,1);
|
||||
WBUFB(buf,14) = min(sd->status.luk, UINT8_MAX);
|
||||
WBUFB(buf,15) = pc_need_status_point(sd,SP_LUK,1);
|
||||
|
||||
WBUFW(buf,16) = pc_leftside_atk(sd);
|
||||
WBUFW(buf,18) = pc_rightside_atk(sd);
|
||||
WBUFW(buf,20) = pc_rightside_matk(sd);
|
||||
WBUFW(buf,22) = pc_leftside_matk(sd);
|
||||
WBUFW(buf,24) = pc_leftside_def(sd);
|
||||
WBUFW(buf,26) = pc_rightside_def(sd);
|
||||
WBUFW(buf,28) = pc_leftside_mdef(sd);
|
||||
mdef2 = pc_rightside_mdef(sd);
|
||||
WBUFW(buf,30) =
|
||||
#ifndef RENEWAL
|
||||
( mdef2 < 0 ) ? 0 : //Negative check for Frenzy'ed characters.
|
||||
#endif
|
||||
mdef2;
|
||||
WBUFW(buf,32) = sd->battle_status.hit;
|
||||
WBUFW(buf,34) = sd->battle_status.flee;
|
||||
WBUFW(buf,36) = sd->battle_status.flee2/10;
|
||||
WBUFW(buf,38) = sd->battle_status.cri/10;
|
||||
WBUFW(buf,40) = sd->battle_status.amotion; // aspd
|
||||
WBUFW(buf,42) = 0; // always 0 (plusASPD)
|
||||
|
||||
WFIFOSET(fd, packet_len(0xbd));
|
||||
|
||||
clif_updatestatus(*sd, SP_STR);
|
||||
clif_updatestatus(*sd, SP_AGI);
|
||||
clif_updatestatus(*sd, SP_VIT);
|
||||
clif_updatestatus(*sd, SP_INT);
|
||||
clif_updatestatus(*sd, SP_DEX);
|
||||
clif_updatestatus(*sd, SP_LUK);
|
||||
|
||||
clif_updatestatus(*sd, SP_ATTACKRANGE);
|
||||
clif_updatestatus(*sd, SP_ASPD);
|
||||
packet.attPower = pc_leftside_atk( &sd );
|
||||
packet.refiningPower = pc_rightside_atk( &sd );
|
||||
packet.max_mattPower = pc_rightside_matk( &sd );
|
||||
packet.min_mattPower = pc_leftside_matk( &sd );
|
||||
packet.itemdefPower = pc_leftside_def( &sd );
|
||||
packet.plusdefPower = pc_rightside_def( &sd );
|
||||
packet.mdefPower = pc_leftside_mdef( &sd );
|
||||
|
||||
#ifdef RENEWAL
|
||||
clif_updatestatus(*sd, SP_POW);
|
||||
clif_updatestatus(*sd, SP_STA);
|
||||
clif_updatestatus(*sd, SP_WIS);
|
||||
clif_updatestatus(*sd, SP_SPL);
|
||||
clif_updatestatus(*sd, SP_CON);
|
||||
clif_updatestatus(*sd, SP_CRT);
|
||||
clif_updatestatus(*sd, SP_PATK);
|
||||
clif_updatestatus(*sd, SP_SMATK);
|
||||
clif_updatestatus(*sd, SP_RES);
|
||||
clif_updatestatus(*sd, SP_MRES);
|
||||
clif_updatestatus(*sd, SP_HPLUS);
|
||||
clif_updatestatus(*sd, SP_CRATE);
|
||||
clif_updatestatus(*sd, SP_TRAITPOINT);
|
||||
clif_updatestatus(*sd, SP_AP);
|
||||
clif_updatestatus(*sd, SP_MAXAP);
|
||||
clif_updatestatus(*sd, SP_UPOW);
|
||||
clif_updatestatus(*sd, SP_USTA);
|
||||
clif_updatestatus(*sd, SP_UWIS);
|
||||
clif_updatestatus(*sd, SP_USPL);
|
||||
clif_updatestatus(*sd, SP_UCON);
|
||||
clif_updatestatus(*sd, SP_UCRT);
|
||||
packet.plusmdefPower = pc_rightside_mdef( &sd );
|
||||
#else
|
||||
// Negative check for Frenzy'ed characters.
|
||||
packet.plusmdefPower = std::max( pc_rightside_mdef( &sd ), 0 );
|
||||
#endif
|
||||
|
||||
packet.hitSuccessValue = sd.battle_status.hit;
|
||||
packet.avoidSuccessValue = sd.battle_status.flee;
|
||||
packet.plusAvoidSuccessValue = sd.battle_status.flee2 / 10;
|
||||
packet.criticalSuccessValue = sd.battle_status.cri / 10;
|
||||
packet.ASPD = sd.battle_status.amotion;
|
||||
packet.plusASPD = 0;
|
||||
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
|
||||
|
||||
clif_updatestatus(sd, SP_STR);
|
||||
clif_updatestatus(sd, SP_AGI);
|
||||
clif_updatestatus(sd, SP_VIT);
|
||||
clif_updatestatus(sd, SP_INT);
|
||||
clif_updatestatus(sd, SP_DEX);
|
||||
clif_updatestatus(sd, SP_LUK);
|
||||
|
||||
clif_updatestatus(sd, SP_ATTACKRANGE);
|
||||
clif_updatestatus(sd, SP_ASPD);
|
||||
|
||||
#ifdef RENEWAL
|
||||
clif_updatestatus(sd, SP_POW);
|
||||
clif_updatestatus(sd, SP_STA);
|
||||
clif_updatestatus(sd, SP_WIS);
|
||||
clif_updatestatus(sd, SP_SPL);
|
||||
clif_updatestatus(sd, SP_CON);
|
||||
clif_updatestatus(sd, SP_CRT);
|
||||
clif_updatestatus(sd, SP_PATK);
|
||||
clif_updatestatus(sd, SP_SMATK);
|
||||
clif_updatestatus(sd, SP_RES);
|
||||
clif_updatestatus(sd, SP_MRES);
|
||||
clif_updatestatus(sd, SP_HPLUS);
|
||||
clif_updatestatus(sd, SP_CRATE);
|
||||
clif_updatestatus(sd, SP_TRAITPOINT);
|
||||
clif_updatestatus(sd, SP_AP);
|
||||
clif_updatestatus(sd, SP_MAXAP);
|
||||
clif_updatestatus(sd, SP_UPOW);
|
||||
clif_updatestatus(sd, SP_USTA);
|
||||
clif_updatestatus(sd, SP_UWIS);
|
||||
clif_updatestatus(sd, SP_USPL);
|
||||
clif_updatestatus(sd, SP_UCON);
|
||||
clif_updatestatus(sd, SP_UCRT);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/// Marks an ammunition item in inventory as equipped (ZC_EQUIP_ARROW).
|
||||
/// 013c <index>.W
|
||||
void clif_arrowequip(map_session_data *sd,int val) {
|
||||
int fd;
|
||||
|
||||
nullpo_retv(sd);
|
||||
|
||||
/// Marks an ammunition item in inventory as equipped.
|
||||
/// 013c <index>.W (ZC_EQUIP_ARROW)
|
||||
void clif_arrowequip( map_session_data& sd ) {
|
||||
#if PACKETVER >= 20121128
|
||||
clif_status_change(&sd->bl, EFST_CLIENT_ONLY_EQUIP_ARROW, 1, INFINITE_TICK, 0, 0, 0);
|
||||
clif_status_change(&sd.bl, EFST_CLIENT_ONLY_EQUIP_ARROW, 1, INFINITE_TICK, 0, 0, 0);
|
||||
#endif
|
||||
fd=sd->fd;
|
||||
WFIFOHEAD(fd, packet_len(0x013c));
|
||||
WFIFOW(fd,0) = 0x013c;
|
||||
WFIFOW(fd,2) = val + 2; //Item ID of the arrow
|
||||
WFIFOSET(fd, packet_len(0x013c));
|
||||
|
||||
PACKET_ZC_EQUIP_ARROW packet{};
|
||||
|
||||
packet.packetType = HEADER_ZC_EQUIP_ARROW;
|
||||
|
||||
// Inventory index of the arrow
|
||||
packet.index = client_index( sd.equip_index[EQI_AMMO] );
|
||||
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
|
||||
}
|
||||
|
||||
|
||||
@ -5982,17 +5967,15 @@ void clif_skillcasting(struct block_list* bl, int src_id, int dst_id, int dst_x,
|
||||
}
|
||||
|
||||
|
||||
/// Notifies clients in area, that an object canceled casting (ZC_DISPEL).
|
||||
/// 01b9 <id>.L
|
||||
void clif_skillcastcancel(struct block_list* bl)
|
||||
{
|
||||
unsigned char buf[16];
|
||||
/// Notifies clients in area, that an object canceled casting.
|
||||
/// 01b9 <id>.L (ZC_DISPEL)
|
||||
void clif_skillcastcancel( block_list& bl ){
|
||||
PACKET_ZC_DISPEL packet{};
|
||||
|
||||
nullpo_retv(bl);
|
||||
packet.packetType = HEADER_ZC_DISPEL;
|
||||
packet.gid = bl.id;
|
||||
|
||||
WBUFW(buf,0) = 0x1b9;
|
||||
WBUFL(buf,2) = bl->id;
|
||||
clif_send(buf,packet_len(0x1b9), bl, AREA);
|
||||
clif_send( &packet, sizeof(PACKET_ZC_DISPEL), &bl, AREA );
|
||||
}
|
||||
|
||||
|
||||
@ -6045,21 +6028,17 @@ void clif_skill_fail( map_session_data& sd, uint16 skill_id, enum useskill_fail_
|
||||
}
|
||||
|
||||
|
||||
/// Skill cooldown display icon (ZC_SKILL_POSTDELAY).
|
||||
/// 043d <skill ID>.W <tick>.L
|
||||
void clif_skill_cooldown(map_session_data *sd, uint16 skill_id, t_tick tick)
|
||||
{
|
||||
#if PACKETVER>=20081112
|
||||
int fd;
|
||||
/// Skill cooldown display icon.
|
||||
/// 043d <skill ID>.W <tick>.L (ZC_SKILL_POSTDELAY)
|
||||
void clif_skill_cooldown( map_session_data &sd, uint16 skill_id, t_tick tick ){
|
||||
#if PACKETVER_MAIN_NUM >= 20081112 || PACKETVER_RE_NUM >= 20081111 || defined(PACKETVER_ZERO)
|
||||
PACKET_ZC_SKILL_POSTDELAY packet{};
|
||||
|
||||
nullpo_retv(sd);
|
||||
packet.PacketType = HEADER_ZC_SKILL_POSTDELAY;
|
||||
packet.SKID = skill_id;
|
||||
packet.DelayTM = client_tick(tick);
|
||||
|
||||
fd=sd->fd;
|
||||
WFIFOHEAD(fd,packet_len(0x43d));
|
||||
WFIFOW(fd,0) = 0x43d;
|
||||
WFIFOW(fd,2) = skill_id;
|
||||
WFIFOL(fd,4) = client_tick(tick);
|
||||
WFIFOSET(fd,packet_len(0x43d));
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -6321,8 +6300,8 @@ void clif_skill_warppoint( map_session_data* sd, uint16 skill_id, uint16 skill_l
|
||||
}
|
||||
|
||||
|
||||
/// Memo message (ZC_ACK_REMEMBER_WARPPOINT).
|
||||
/// 011e <type>.B
|
||||
/// Memo message.
|
||||
/// 011e <type>.B (ZC_ACK_REMEMBER_WARPPOINT)
|
||||
/// type:
|
||||
/// 0 = "Saved location as a Memo Point for Warp skill." in color 0xFFFF00 (cyan)
|
||||
/// 1 = "Skill Level is not high enough." in color 0x0000FF (red)
|
||||
@ -6330,39 +6309,33 @@ void clif_skill_warppoint( map_session_data* sd, uint16 skill_id, uint16 skill_l
|
||||
///
|
||||
/// @param sd Who receives the message
|
||||
/// @param type What message
|
||||
void clif_skill_memomessage(map_session_data* sd, int type)
|
||||
{
|
||||
int fd;
|
||||
void clif_skill_memomessage( map_session_data& sd, e_ack_remember_warppoint_result result ){
|
||||
PACKET_ZC_ACK_REMEMBER_WARPPOINT packet{};
|
||||
|
||||
nullpo_retv(sd);
|
||||
packet.packetType = HEADER_ZC_ACK_REMEMBER_WARPPOINT;
|
||||
packet.type = static_cast<decltype(packet.type)>(result);
|
||||
|
||||
fd=sd->fd;
|
||||
WFIFOHEAD(fd,packet_len(0x11e));
|
||||
WFIFOW(fd,0)=0x11e;
|
||||
WFIFOB(fd,2)=type;
|
||||
WFIFOSET(fd,packet_len(0x11e));
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
|
||||
}
|
||||
|
||||
|
||||
/// Teleport message (ZC_NOTIFY_MAPINFO).
|
||||
/// 0189 <type>.W
|
||||
/// Teleport message.
|
||||
/// 0189 <type>.W (ZC_NOTIFY_MAPINFO)
|
||||
/// type:
|
||||
/// 0 = "Unable to Teleport in this area" in color 0xFFFF00 (cyan)
|
||||
/// 1 = "Saved point cannot be memorized." in color 0x0000FF (red)
|
||||
/// 2 = "This skill cannot be used in this area"
|
||||
/// 3 = "This item cannot be used in this area"
|
||||
///
|
||||
/// @param sd Who receives the message
|
||||
/// @param type What message
|
||||
void clif_skill_teleportmessage(map_session_data *sd, int type)
|
||||
{
|
||||
int fd;
|
||||
void clif_skill_teleportmessage( map_session_data& sd, e_notify_mapinfo_result result ){
|
||||
PACKET_ZC_NOTIFY_MAPINFO packet{};
|
||||
|
||||
nullpo_retv(sd);
|
||||
packet.packetType = HEADER_ZC_NOTIFY_MAPINFO;
|
||||
packet.type = static_cast<decltype(packet.type)>(result);
|
||||
|
||||
fd=sd->fd;
|
||||
WFIFOHEAD(fd,packet_len(0x189));
|
||||
WFIFOW(fd,0)=0x189;
|
||||
WFIFOW(fd,2)=type;
|
||||
WFIFOSET(fd,packet_len(0x189));
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
|
||||
}
|
||||
|
||||
|
||||
@ -6914,23 +6887,22 @@ void clif_heal(int fd,int type,int val) {
|
||||
}
|
||||
|
||||
|
||||
/// Displays resurrection effect (ZC_RESURRECTION).
|
||||
/// 0148 <id>.L <type>.W
|
||||
/// Displays resurrection effect.
|
||||
/// 0148 <id>.L <type>.W (ZC_RESURRECTION)
|
||||
/// type:
|
||||
/// ignored
|
||||
void clif_resurrection(struct block_list *bl,int type)
|
||||
{
|
||||
unsigned char buf[16];
|
||||
void clif_resurrection( block_list& bl ){
|
||||
PACKET_ZC_RESURRECTION packet{};
|
||||
|
||||
nullpo_retv(bl);
|
||||
packet.packetType = HEADER_ZC_RESURRECTION;
|
||||
packet.gid = bl.id;
|
||||
packet.type = 0;
|
||||
|
||||
WBUFW(buf,0)=0x148;
|
||||
WBUFL(buf,2)=bl->id;
|
||||
WBUFW(buf,6)=0;
|
||||
clif_send( &packet, sizeof( packet ), &bl, AREA );
|
||||
|
||||
clif_send(buf,packet_len(0x148),bl,type==1 ? AREA : AREA_WOS);
|
||||
if (disguised(bl))
|
||||
clif_spawn(bl);
|
||||
if (disguised(&bl)) {
|
||||
clif_spawn(&bl);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -6971,19 +6943,15 @@ void clif_map_property(struct block_list *bl, enum map_property property, enum s
|
||||
clif_send(buf,packet_len(cmd),bl,t);
|
||||
}
|
||||
|
||||
/// Set the map type (ZC_NOTIFY_MAPPROPERTY2).
|
||||
/// 01d6 <type>.W
|
||||
void clif_map_type(map_session_data* sd, enum map_type type)
|
||||
{
|
||||
int fd;
|
||||
/// Set the map type.
|
||||
/// 01d6 <type>.W (ZC_NOTIFY_MAPPROPERTY2)
|
||||
void clif_map_type( map_session_data& sd, e_map_type type ){
|
||||
PACKET_ZC_NOTIFY_MAPPROPERTY2 packet{};
|
||||
|
||||
nullpo_retv(sd);
|
||||
packet.packetType = HEADER_ZC_NOTIFY_MAPPROPERTY2;
|
||||
packet.type = static_cast<decltype(packet.type)>(type);
|
||||
|
||||
fd=sd->fd;
|
||||
WFIFOHEAD(fd,packet_len(0x1D6));
|
||||
WFIFOW(fd,0)=0x1D6;
|
||||
WFIFOW(fd,2)=type;
|
||||
WFIFOSET(fd,packet_len(0x1D6));
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
|
||||
}
|
||||
|
||||
|
||||
@ -7032,22 +7000,23 @@ void clif_map_property_mapall(int map_idx, enum map_property property)
|
||||
clif_map_property( &bl, property, ALL_SAMEMAP );
|
||||
}
|
||||
|
||||
/// Notifies the client about the result of a refine attempt (ZC_ACK_ITEMREFINING).
|
||||
/// 0188 <result>.W <index>.W <refine>.W
|
||||
/// Notifies the client about the result of a refine attempt.
|
||||
/// 0188 <result>.W <index>.W <refine>.W (ZC_ACK_ITEMREFINING)
|
||||
/// result:
|
||||
/// 0 = success
|
||||
/// 1 = failure
|
||||
/// 2 = downgrade
|
||||
void clif_refine(int fd, int fail, int index, int val)
|
||||
{
|
||||
WFIFOHEAD(fd,packet_len(0x188));
|
||||
WFIFOW(fd,0)=0x188;
|
||||
WFIFOW(fd,2)=fail;
|
||||
WFIFOW(fd,4)=index+2;
|
||||
WFIFOW(fd,6)=val;
|
||||
WFIFOSET(fd,packet_len(0x188));
|
||||
}
|
||||
/// 3 = failure (?)
|
||||
void clif_refine( map_session_data& sd, uint16 index, e_ack_itemrefining result ){
|
||||
PACKET_ZC_ACK_ITEMREFINING packet{};
|
||||
|
||||
packet.packetType = HEADER_ZC_ACK_ITEMREFINING;
|
||||
packet.result = static_cast<decltype(packet.result)>(result);
|
||||
packet.index = client_index( index );
|
||||
packet.value = static_cast<decltype(packet.value)>( sd.inventory.u.items_inventory[index].refine );
|
||||
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
|
||||
}
|
||||
|
||||
/// Notifies the client about the result of a weapon refine attempt (ZC_ACK_WEAPONREFINE).
|
||||
/// 0223 <result>.L <nameid>.W
|
||||
@ -8493,21 +8462,19 @@ void clif_pet_emotion(struct pet_data *pd,int param)
|
||||
}
|
||||
|
||||
|
||||
/// Result of request to feed a pet (ZC_FEED_PET).
|
||||
/// 01a3 <result>.B <name id>.W
|
||||
/// Result of request to feed a pet.
|
||||
/// 01a3 <result>.B <name id>.W (ZC_FEED_PET)
|
||||
/// result:
|
||||
/// 0 = failure
|
||||
/// 1 = success
|
||||
void clif_pet_food( map_session_data *sd, int foodid,int fail ){
|
||||
nullpo_retv( sd );
|
||||
void clif_pet_food( map_session_data& sd, int32 foodid, bool success ){
|
||||
PACKET_ZC_FEED_PET packet{};
|
||||
|
||||
struct PACKET_ZC_FEED_PET p;
|
||||
packet.packetType = HEADER_ZC_FEED_PET;
|
||||
packet.result = success;
|
||||
packet.itemId = client_nameid( foodid );
|
||||
|
||||
p.packetType = 0x1a3;
|
||||
p.result = fail;
|
||||
p.itemId = client_nameid( foodid );
|
||||
|
||||
clif_send( &p, sizeof( p ), &sd->bl, SELF );
|
||||
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
|
||||
}
|
||||
|
||||
/// Send pet auto feed info.
|
||||
@ -11039,7 +11006,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd)
|
||||
clif_updatestatus(*sd,SP_JOBEXP);
|
||||
clif_updatestatus(*sd,SP_NEXTJOBEXP);
|
||||
clif_updatestatus(*sd,SP_SKILLPOINT);
|
||||
clif_initialstatus(sd);
|
||||
clif_initialstatus( *sd );
|
||||
|
||||
if (sd->sc.option&OPTION_FALCON)
|
||||
clif_status_load(&sd->bl, EFST_FALCON, 1);
|
||||
@ -11161,7 +11128,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd)
|
||||
|
||||
if( mapdata->getMapFlag(MF_BATTLEGROUND) )
|
||||
{
|
||||
clif_map_type(sd, MAPTYPE_BATTLEFIELD); // Battleground Mode
|
||||
clif_map_type( *sd, MAPTYPE_BATTLEFIELD ); // Battleground Mode
|
||||
if( map_getmapflag(sd->bl.m, MF_BATTLEGROUND) == 2 )
|
||||
clif_bg_updatescore_single(sd);
|
||||
}
|
||||
@ -22548,7 +22515,7 @@ void clif_parse_refineui_refine( int fd, map_session_data* sd ){
|
||||
item->refine = cap_value( item->refine + 1, 0, MAX_REFINE );
|
||||
log_pick_pc( sd, LOG_TYPE_OTHER, 1, item );
|
||||
clif_misceffect( &sd->bl, 3 );
|
||||
clif_refine( fd, 0, index, item->refine );
|
||||
clif_refine( *sd, index, ITEMREFINING_SUCCESS );
|
||||
if (info->broadcast_success) {
|
||||
clif_broadcast_refine_result(*sd, item->nameid, item->refine, true);
|
||||
}
|
||||
@ -22564,20 +22531,20 @@ void clif_parse_refineui_refine( int fd, map_session_data* sd ){
|
||||
}
|
||||
// Blacksmith blessings were used to prevent breaking and downgrading
|
||||
if( blacksmith_amount > 0 ){
|
||||
clif_refine( fd, 3, index, item->refine );
|
||||
clif_refine( *sd, index, ITEMREFINING_FAILURE2 );
|
||||
clif_refineui_info( sd, index );
|
||||
// Delete the item if it is breakable
|
||||
}else if( cost->breaking_rate > 0 && ( rnd() % 10000 ) < cost->breaking_rate ){
|
||||
clif_refine( fd, 1, index, item->refine );
|
||||
clif_refine( *sd, index, ITEMREFINING_FAILURE );
|
||||
pc_delitem( sd, index, 1, 0, 2, LOG_TYPE_CONSUME );
|
||||
// Downgrade the item if necessary
|
||||
}else if( cost->downgrade_amount > 0 ){
|
||||
item->refine = cap_value( item->refine - cost->downgrade_amount, 0, MAX_REFINE );
|
||||
clif_refine( fd, 2, index, item->refine );
|
||||
clif_refine( *sd, index, ITEMREFINING_DOWNGRADE );
|
||||
clif_refineui_info(sd, index);
|
||||
// Only show failure, but dont do anything
|
||||
}else{
|
||||
clif_refine( fd, 3, index, item->refine );
|
||||
clif_refine( *sd, index, ITEMREFINING_FAILURE2 );
|
||||
clif_refineui_info( sd, index );
|
||||
}
|
||||
|
||||
|
@ -367,7 +367,7 @@ enum map_property : uint8_t
|
||||
MAPPROPERTY_DENYSKILLZONE = 6,
|
||||
};
|
||||
|
||||
enum map_type : uint8_t
|
||||
enum e_map_type : uint8_t
|
||||
{// clif_map_type
|
||||
MAPTYPE_VILLAGE = 0,
|
||||
MAPTYPE_VILLAGE_IN = 1,
|
||||
@ -618,6 +618,26 @@ enum e_siege_teleport_result : uint8 {
|
||||
SIEGE_TP_INVALID_MODE = 2
|
||||
};
|
||||
|
||||
enum e_ack_remember_warppoint_result : uint8 {
|
||||
WARPPOINT_SUCCESS = 0,
|
||||
WARPPOINT_LOW_LEVEL = 1,
|
||||
WARPPOINT_NOT_LEARNED = 2
|
||||
};
|
||||
|
||||
enum e_notify_mapinfo_result : uint8 {
|
||||
NOTIFY_MAPINFO_CANT_TP = 0,
|
||||
NOTIFY_MAPINFO_CANT_MEMO = 1,
|
||||
NOTIFY_MAPINFO_CANT_USE_SKILL = 2,
|
||||
NOTIFY_MAPINFO_CANT_USE_ITEM = 3,
|
||||
};
|
||||
|
||||
enum e_ack_itemrefining : uint8 {
|
||||
ITEMREFINING_SUCCESS = 0,
|
||||
ITEMREFINING_FAILURE = 1,
|
||||
ITEMREFINING_DOWNGRADE = 2,
|
||||
ITEMREFINING_FAILURE2 = 3
|
||||
};
|
||||
|
||||
int clif_setip(const char* ip);
|
||||
void clif_setbindip(const char* ip);
|
||||
void clif_setport(uint16 port);
|
||||
@ -664,7 +684,7 @@ void clif_dropitem( map_session_data& sd, int index, int amount );
|
||||
void clif_delitem( map_session_data& sd, int index, int amount, short reason );
|
||||
void clif_update_hp(map_session_data &sd);
|
||||
void clif_updatestatus( map_session_data& sd, _sp type );
|
||||
void clif_changestatus(map_session_data* sd,int type,int val); //area
|
||||
void clif_changemanner( map_session_data& sd );
|
||||
int clif_damage(struct block_list* src, struct block_list* dst, t_tick tick, int sdelay, int ddelay, int64 sdamage, int div, enum e_damage_type type, int64 sdamage2, bool spdamage); // area
|
||||
void clif_takeitem(struct block_list* src, struct block_list* dst);
|
||||
void clif_sitting(struct block_list* bl);
|
||||
@ -673,7 +693,7 @@ void clif_sprite_change(struct block_list *bl, int id, int type, int val, int va
|
||||
void clif_changelook(struct block_list *bl,int type,int val); // area
|
||||
void clif_changetraplook(struct block_list *bl,int val); // area
|
||||
void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_target target); //area specified in 'target'
|
||||
void clif_arrowequip(map_session_data *sd,int val); //self
|
||||
void clif_arrowequip( map_session_data& sd );
|
||||
void clif_arrow_fail(map_session_data *sd,int type); //self
|
||||
void clif_arrow_create_list(map_session_data *sd); //self
|
||||
void clif_statusupack(map_session_data *sd,int type,int ok,int val); // self
|
||||
@ -739,17 +759,17 @@ void clif_addskill(map_session_data *sd, int skill_id);
|
||||
void clif_deleteskill(map_session_data *sd, int skill_id, bool skip_infoblock = false);
|
||||
|
||||
void clif_skillcasting(struct block_list* bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, uint16 skill_lv, int property, int casttime);
|
||||
void clif_skillcastcancel(struct block_list* bl);
|
||||
void clif_skillcastcancel( block_list& bl );
|
||||
void clif_skill_fail( map_session_data& sd, uint16 skill_id, enum useskill_fail_cause cause = USESKILL_FAIL_LEVEL, int btype = 0, t_itemid itemId = 0 );
|
||||
void clif_skill_cooldown(map_session_data *sd, uint16 skill_id, t_tick tick);
|
||||
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);
|
||||
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, const char* map1, const char* map2 = "", const char* map3 = "", const char* map4 = "" );
|
||||
void clif_skill_memomessage(map_session_data* sd, int type);
|
||||
void clif_skill_teleportmessage(map_session_data *sd, int type);
|
||||
void clif_skill_memomessage( map_session_data& sd, e_ack_remember_warppoint_result result );
|
||||
void clif_skill_teleportmessage( map_session_data& sd, e_notify_mapinfo_result result );
|
||||
void clif_skill_produce_mix_list(map_session_data *sd, int skill_id, int trigger);
|
||||
void clif_cooking_list(map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type);
|
||||
|
||||
@ -906,11 +926,11 @@ void clif_disp_message(struct block_list* src, const char* mes, size_t len, enum
|
||||
void clif_broadcast(struct block_list* bl, const char* mes, size_t len, int type, enum send_target target);
|
||||
void clif_broadcast2(struct block_list* bl, const char* mes, size_t len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target);
|
||||
void clif_heal(int fd,int type,int val);
|
||||
void clif_resurrection(struct block_list *bl,int type);
|
||||
void clif_resurrection( block_list& bl );
|
||||
void clif_map_property(struct block_list *bl, enum map_property property, enum send_target t);
|
||||
void clif_pvpset(map_session_data *sd, int pvprank, int pvpnum,int type);
|
||||
void clif_map_property_mapall(int map, enum map_property property);
|
||||
void clif_refine(int fd, int fail, int index, int val);
|
||||
void clif_refine( map_session_data& sd, uint16 index, e_ack_itemrefining result );
|
||||
void clif_upgrademessage( map_session_data* sd, int result, t_itemid item_id );
|
||||
|
||||
//petsystem
|
||||
@ -923,7 +943,7 @@ void clif_send_petdata(map_session_data* sd, struct pet_data* pd, int type, int
|
||||
#define clif_pet_equip_area(pd) clif_send_petdata(nullptr, pd, 3, (pd)->vd.head_bottom)
|
||||
#define clif_pet_performance(pd, param) clif_send_petdata(nullptr, pd, 4, param)
|
||||
void clif_pet_emotion(struct pet_data *pd,int param);
|
||||
void clif_pet_food(map_session_data *sd,int foodid,int fail);
|
||||
void clif_pet_food( map_session_data& sd, int32 foodid, bool success );
|
||||
void clif_pet_autofeed_status(map_session_data* sd, bool force);
|
||||
|
||||
//friends list
|
||||
@ -962,7 +982,7 @@ void clif_feel_hate_reset(map_session_data *sd);
|
||||
void clif_hominfo(map_session_data *sd, struct homun_data *hd, int flag);
|
||||
void clif_homskillinfoblock( homun_data& hd );
|
||||
void clif_homskillup( homun_data& hd, uint16 skill_id );
|
||||
void clif_hom_food(map_session_data *sd,int foodid,int fail); //[orn]
|
||||
void clif_hom_food( map_session_data& sd, int32 foodid, bool success );
|
||||
void clif_send_homdata( homun_data& hd, e_hom_state2 state );
|
||||
|
||||
void clif_configuration( map_session_data* sd, enum e_config_type type, bool enabled );
|
||||
|
@ -73,7 +73,6 @@
|
||||
packet(0x00ba,2);
|
||||
parseable_packet(0x00bb,5,clif_parse_StatusUp,2,4);
|
||||
packet(0x00bc,6);
|
||||
packet(0x00bd,44);
|
||||
parseable_packet(0x00bf,3,clif_parse_Emotion,2);
|
||||
packet(0x00c0,7);
|
||||
parseable_packet(0x00c1,2,clif_parse_HowManyConnections,0);
|
||||
@ -160,7 +159,6 @@
|
||||
parseable_packet(0x011b,20,clif_parse_UseSkillMap,2,4);
|
||||
packet(0x011c,68);
|
||||
parseable_packet(0x011d,2,clif_parse_RequestMemo,0);
|
||||
packet(0x011e,3);
|
||||
packet(0x011f,16);
|
||||
packet(0x0120,6);
|
||||
packet( cartlistequipType, -1 );
|
||||
@ -183,7 +181,6 @@
|
||||
packet(0x0138,3);
|
||||
packet(0x0139,16);
|
||||
packet(0x013b,4);
|
||||
packet(0x013c,4);
|
||||
packet(0x013d,6);
|
||||
packet(0x013e,24);
|
||||
parseable_packet(0x013f,26,clif_parse_GM_Item_Monster,2);
|
||||
@ -192,7 +189,6 @@
|
||||
packet(0x0145,19);
|
||||
parseable_packet(0x0146,6,clif_parse_NpcCloseClicked,2);
|
||||
packet(0x0147,39);
|
||||
packet(0x0148,8);
|
||||
parseable_packet(0x0149,9,clif_parse_GMReqNoChat,2,6,7);
|
||||
packet(0x014a,6);
|
||||
packet(0x014b,27);
|
||||
@ -256,8 +252,6 @@
|
||||
packet(0x0185,34);
|
||||
//packet(0x0186,-1);
|
||||
packet(0x0187,6);
|
||||
packet(0x0188,8);
|
||||
packet(0x0189,4);
|
||||
parseable_packet(0x018a,4,clif_parse_QuitGame,2);
|
||||
packet(0x018b,4);
|
||||
packet(0x018c,29);
|
||||
@ -291,7 +285,6 @@
|
||||
packet(0x01a8,4);
|
||||
parseable_packet(0x01a9,6,clif_parse_SendEmotion,2);
|
||||
packet(0x01aa,10);
|
||||
packet(0x01ab,12);
|
||||
packet(0x01ac,6);
|
||||
packet(0x01ad,-1);
|
||||
parseable_packet( HEADER_CZ_REQ_MAKINGARROW, sizeof( PACKET_CZ_REQ_MAKINGARROW ), clif_parse_SelectArrow, 0 );
|
||||
@ -304,7 +297,6 @@
|
||||
packet(0x01b6,114);
|
||||
packet(0x01b7,6);
|
||||
packet(0x01b8,3);
|
||||
packet(0x01b9,6);
|
||||
parseable_packet(0x01ba,26,clif_parse_GMShift,2);
|
||||
parseable_packet(0x01bb,26,clif_parse_GMShift,2);
|
||||
parseable_packet(0x01bc,26,clif_parse_GMRecall,2);
|
||||
@ -327,7 +319,6 @@
|
||||
packet(0x01d1,14);
|
||||
packet(0x01d2,10);
|
||||
parseable_packet(0x01d5,-1,clif_parse_NpcStringInput,2,4,8);
|
||||
packet(0x01d6,4);
|
||||
packet(0x01d7,11);
|
||||
packet(0x01d8,54);
|
||||
packet(0x01d9,53);
|
||||
@ -1285,7 +1276,6 @@
|
||||
|
||||
// 2008-11-13aSakexe
|
||||
#if PACKETVER >= 20081113
|
||||
packet(0x043d,8);
|
||||
packet(0x043e,-1);
|
||||
packet(0x043f,8);
|
||||
#endif
|
||||
@ -1365,7 +1355,6 @@
|
||||
|
||||
// 2008-11-12aRagexeRE
|
||||
#if PACKETVER >= 20081112
|
||||
packet(0x043d,8);
|
||||
//packet(0x043e,-1);
|
||||
packet(0x043f,8);
|
||||
#endif
|
||||
|
@ -878,7 +878,7 @@ int hom_food(map_session_data *sd, struct homun_data *hd)
|
||||
foodID = hd->homunculusDB->foodID;
|
||||
i = pc_search_inventory(sd,foodID);
|
||||
if (i < 0) {
|
||||
clif_hom_food(sd,foodID,0);
|
||||
clif_hom_food( *sd, foodID, 0 );
|
||||
return 1;
|
||||
}
|
||||
pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME);
|
||||
@ -909,7 +909,7 @@ int hom_food(map_session_data *sd, struct homun_data *hd)
|
||||
clif_emotion(&hd->bl,emotion);
|
||||
clif_send_homdata( *hd, SP_HUNGRY );
|
||||
clif_send_homdata( *hd, SP_INTIMATE );
|
||||
clif_hom_food(sd,foodID,1);
|
||||
clif_hom_food( *sd, foodID, 1 );
|
||||
|
||||
// Too much food :/
|
||||
if(hd->homunculus.intimacy == 0)
|
||||
|
@ -800,6 +800,59 @@ struct PACKET_ZC_STATUS {
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_STATUS, 0xbd)
|
||||
|
||||
struct PACKET_ZC_NOTIFY_MAPINFO {
|
||||
int16 packetType;
|
||||
int16 type;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_NOTIFY_MAPINFO, 0x189)
|
||||
|
||||
struct PACKET_ZC_ACK_REMEMBER_WARPPOINT {
|
||||
int16 packetType;
|
||||
uint8 type;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_ACK_REMEMBER_WARPPOINT, 0x11e)
|
||||
|
||||
struct PACKET_ZC_DISPEL {
|
||||
int16 packetType;
|
||||
uint32 gid;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_DISPEL, 0x1b9)
|
||||
|
||||
struct PACKET_ZC_RESURRECTION {
|
||||
int16 packetType;
|
||||
uint32 gid;
|
||||
int16 type;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_RESURRECTION, 0x148)
|
||||
|
||||
struct PACKET_ZC_NOTIFY_MAPPROPERTY2 {
|
||||
int16 packetType;
|
||||
int16 type;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_NOTIFY_MAPPROPERTY2, 0x1d6)
|
||||
|
||||
struct PACKET_ZC_ACK_ITEMREFINING {
|
||||
int16 packetType;
|
||||
uint16 result;
|
||||
uint16 index;
|
||||
uint16 value;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_ACK_ITEMREFINING, 0x188)
|
||||
|
||||
struct PACKET_ZC_PAR_CHANGE_USER {
|
||||
int16 packetType;
|
||||
uint32 gid;
|
||||
int16 type;
|
||||
uint16 value;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_PAR_CHANGE_USER, 0x1ab)
|
||||
|
||||
struct PACKET_ZC_EQUIP_ARROW {
|
||||
int16 packetType;
|
||||
uint16 index;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_EQUIP_ARROW, 0x13c)
|
||||
|
||||
// NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
|
||||
#if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
|
||||
#pragma pack( pop )
|
||||
@ -837,6 +890,8 @@ DEFINE_PACKET_HEADER(ZC_STYLE_CHANGE_RES, 0xa47)
|
||||
DEFINE_PACKET_HEADER(ZC_GROUP_ISALIVE, 0xab2)
|
||||
DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE2, 0xafc)
|
||||
DEFINE_PACKET_HEADER(ZC_REMOVE_EFFECT, 0x0b0d)
|
||||
DEFINE_PACKET_HEADER(ZC_FEED_MER, 0x22f)
|
||||
DEFINE_PACKET_HEADER(ZC_FEED_PET, 0x1a3)
|
||||
|
||||
const int16 MAX_INVENTORY_ITEM_PACKET_NORMAL = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_normal ) - ( sizeof( struct NORMALITEM_INFO ) * MAX_ITEMLIST) ) ) / sizeof( struct NORMALITEM_INFO ) );
|
||||
const int16 MAX_INVENTORY_ITEM_PACKET_EQUIP = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_equip ) - ( sizeof( struct EQUIPITEM_INFO ) * MAX_ITEMLIST ) ) ) / sizeof( struct EQUIPITEM_INFO ) );
|
||||
|
@ -6186,7 +6186,7 @@ bool pc_isUseitem(map_session_data *sd,int n)
|
||||
|
||||
if( itemdb_group.item_exists( IG_MF_NOTELEPORT, nameid ) ){
|
||||
if( ( mapdata->getMapFlag(MF_NOTELEPORT) || mapdata_flag_gvg2( mapdata ) ) ){
|
||||
clif_skill_teleportmessage( sd, 0 );
|
||||
clif_skill_teleportmessage( *sd, NOTIFY_MAPINFO_CANT_TP );
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -7070,7 +7070,7 @@ bool pc_memo(map_session_data* sd, int pos)
|
||||
|
||||
// check mapflags
|
||||
if( sd->bl.m >= 0 && (map_getmapflag(sd->bl.m, MF_NOMEMO) || map_getmapflag(sd->bl.m, MF_NOWARPTO)) && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE) ) {
|
||||
clif_skill_teleportmessage(sd, 1); // "Saved point cannot be memorized."
|
||||
clif_skill_teleportmessage( *sd, NOTIFY_MAPINFO_CANT_MEMO ); // "Saved point cannot be memorized."
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -7081,11 +7081,11 @@ bool pc_memo(map_session_data* sd, int pos)
|
||||
// check required skill level
|
||||
skill = pc_checkskill(sd, AL_WARP);
|
||||
if( skill < 1 ) {
|
||||
clif_skill_memomessage(sd,2); // "You haven't learned Warp."
|
||||
clif_skill_memomessage( *sd, WARPPOINT_NOT_LEARNED ); // "You haven't learned Warp."
|
||||
return false;
|
||||
}
|
||||
if( skill < 2 || skill - 2 < pos ) {
|
||||
clif_skill_memomessage(sd,1); // "Skill Level is not high enough."
|
||||
clif_skill_memomessage( *sd, WARPPOINT_LOW_LEVEL ); // "Skill Level is not high enough."
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -7109,7 +7109,7 @@ bool pc_memo(map_session_data* sd, int pos)
|
||||
sd->status.memo_point[pos].x = sd->bl.x;
|
||||
sd->status.memo_point[pos].y = sd->bl.y;
|
||||
|
||||
clif_skill_memomessage(sd, 0);
|
||||
clif_skill_memomessage( *sd, WARPPOINT_SUCCESS );
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -9489,7 +9489,7 @@ void pc_respawn(map_session_data* sd, clr_type clrtype)
|
||||
pc_setstand(sd, true);
|
||||
pc_setrestartvalue(sd,3);
|
||||
if( pc_setpos( sd, mapindex_name2id( sd->status.save_point.map ), sd->status.save_point.x, sd->status.save_point.y, clrtype ) != SETPOS_OK ){
|
||||
clif_resurrection(&sd->bl, 1); //If warping fails, send a normal stand up packet.
|
||||
clif_resurrection( sd->bl ); //If warping fails, send a normal stand up packet.
|
||||
}
|
||||
}
|
||||
|
||||
@ -9608,7 +9608,7 @@ int pc_dead(map_session_data *sd,struct block_list *src)
|
||||
sd->state.snovice_dead_flag = 1;
|
||||
pc_setrestartvalue(sd,1);
|
||||
status_percent_heal(&sd->bl, 100, 100);
|
||||
clif_resurrection(&sd->bl, 1);
|
||||
clif_resurrection( sd->bl );
|
||||
if(battle_config.pc_invincible_time)
|
||||
pc_setinvincibletimer(sd, battle_config.pc_invincible_time);
|
||||
sc_start(&sd->bl,&sd->bl,SC_STEELBODY,100,5,skill_get_time(MO_STEELBODY,5));
|
||||
@ -10863,9 +10863,10 @@ bool pc_jobchange(map_session_data *sd,int job, char upper)
|
||||
status_change_end( &sd->bl, SC_SPIRIT );
|
||||
}
|
||||
|
||||
if(sd->status.manner < 0)
|
||||
clif_changestatus(sd,SP_MANNER,sd->status.manner);
|
||||
|
||||
if(sd->status.manner < 0){
|
||||
clif_changemanner( *sd );
|
||||
clif_updatestatus(*sd,SP_MANNER);
|
||||
}
|
||||
status_calc_pc(sd,SCO_FORCE);
|
||||
pc_checkallowskill(sd);
|
||||
pc_equiplookall(sd);
|
||||
@ -11973,7 +11974,7 @@ bool pc_equipitem(map_session_data *sd,short n,int req_pos,bool equipswitch)
|
||||
pc_equipswitch_remove(sd, n);
|
||||
|
||||
if(pos==EQP_AMMO) {
|
||||
clif_arrowequip(sd,n);
|
||||
clif_arrowequip( *sd );
|
||||
clif_arrow_fail(sd,3);
|
||||
}
|
||||
else
|
||||
|
@ -1608,8 +1608,7 @@ int pet_food(map_session_data *sd, struct pet_data *pd)
|
||||
i = pc_search_inventory(sd,k);
|
||||
|
||||
if( i < 0 ) {
|
||||
clif_pet_food(sd,k,0);
|
||||
|
||||
clif_pet_food( *sd, k, 0 );
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -1646,7 +1645,7 @@ int pet_food(map_session_data *sd, struct pet_data *pd)
|
||||
|
||||
clif_send_petdata(sd,pd,2,pd->pet.hungry);
|
||||
clif_send_petdata(sd,pd,1,pd->pet.intimate);
|
||||
clif_pet_food(sd, pet_db_ptr->FoodID,1);
|
||||
clif_pet_food( *sd, pet_db_ptr->FoodID, 1 );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -9634,7 +9634,7 @@ BUILDIN_FUNC(successrefitem) {
|
||||
sd->inventory.u.items_inventory[i].refine = cap_value( sd->inventory.u.items_inventory[i].refine, 0, MAX_REFINE);
|
||||
pc_unequipitem(sd,i,2); // status calc will happen in pc_equipitem() below
|
||||
|
||||
clif_refine(sd->fd,0,i,sd->inventory.u.items_inventory[i].refine);
|
||||
clif_refine( *sd, i, ITEMREFINING_SUCCESS );
|
||||
clif_delitem( *sd, i, 1, 3 );
|
||||
|
||||
//Logs items, got from (N)PC scripts [Lupus]
|
||||
@ -9693,7 +9693,7 @@ BUILDIN_FUNC(failedrefitem) {
|
||||
if (i >= 0) {
|
||||
sd->inventory.u.items_inventory[i].refine = 0;
|
||||
pc_unequipitem(sd,i,3); //recalculate bonus
|
||||
clif_refine(sd->fd,1,i,sd->inventory.u.items_inventory[i].refine); //notify client of failure
|
||||
clif_refine( *sd, i, ITEMREFINING_FAILURE);
|
||||
pc_delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT);
|
||||
clif_misceffect(&sd->bl,2); // display failure effect
|
||||
achievement_update_objective(sd, AG_ENCHANT_FAIL, 1, 1);
|
||||
@ -9736,7 +9736,7 @@ BUILDIN_FUNC(downrefitem) {
|
||||
sd->inventory.u.items_inventory[i].refine -= down;
|
||||
sd->inventory.u.items_inventory[i].refine = cap_value( sd->inventory.u.items_inventory[i].refine, 0, MAX_REFINE);
|
||||
|
||||
clif_refine(sd->fd,2,i,sd->inventory.u.items_inventory[i].refine);
|
||||
clif_refine( *sd, i, ITEMREFINING_DOWNGRADE );
|
||||
clif_delitem( *sd, i, 1, 3 );
|
||||
|
||||
//Logs items, got from (N)PC scripts [Lupus]
|
||||
|
@ -889,7 +889,7 @@ bool skill_isNotOk( uint16 skill_id, map_session_data& sd ){
|
||||
case ALL_THANATOS_RECALL:
|
||||
case ALL_LIGHTHALZEN_RECALL:
|
||||
if(mapdata->getMapFlag(MF_NOWARP)) {
|
||||
clif_skill_teleportmessage(&sd,0);
|
||||
clif_skill_teleportmessage( sd, NOTIFY_MAPINFO_CANT_TP );
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -899,7 +899,7 @@ bool skill_isNotOk( uint16 skill_id, map_session_data& sd ){
|
||||
case ALL_ODINS_RECALL:
|
||||
case WE_CALLALLFAMILY:
|
||||
if(mapdata->getMapFlag(MF_NOTELEPORT)) {
|
||||
clif_skill_teleportmessage(&sd,0);
|
||||
clif_skill_teleportmessage( sd, NOTIFY_MAPINFO_CANT_TP );
|
||||
return true;
|
||||
}
|
||||
return false; // gonna be checked in 'skill_castend_nodamage_id'
|
||||
@ -907,7 +907,7 @@ bool skill_isNotOk( uint16 skill_id, map_session_data& sd ){
|
||||
case WE_CALLPARENT:
|
||||
case WE_CALLBABY:
|
||||
if (mapdata->getMapFlag(MF_NOMEMO)) {
|
||||
clif_skill_teleportmessage(&sd,1);
|
||||
clif_skill_teleportmessage( sd, NOTIFY_MAPINFO_CANT_MEMO );
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
@ -983,7 +983,7 @@ bool skill_isNotOk( uint16 skill_id, map_session_data& sd ){
|
||||
case WM_GLOOMYDAY:
|
||||
case WM_SATURDAY_NIGHT_FEVER:
|
||||
if( !mapdata_flag_vs(mapdata) ) {
|
||||
clif_skill_teleportmessage(&sd,2); // This skill uses this msg instead of skill fails.
|
||||
clif_skill_teleportmessage( sd, NOTIFY_MAPINFO_CANT_USE_SKILL ); // This skill cannot be used in this area
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
@ -9316,7 +9316,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
if(sd)
|
||||
{
|
||||
if (map_getmapflag(bl->m, MF_NOTELEPORT) && skill_lv <= 2) {
|
||||
clif_skill_teleportmessage(sd,0);
|
||||
clif_skill_teleportmessage( *sd, NOTIFY_MAPINFO_CANT_TP );
|
||||
break;
|
||||
}
|
||||
if(!battle_config.duel_allow_teleport && sd->duel_group && skill_lv <= 2) { // duel restriction [LuzZza]
|
||||
@ -11707,7 +11707,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
tstatus->sp -= tstatus->sp * ( 60 - 10 * skill_lv ) / 100;
|
||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
||||
pc_revive((TBL_PC*)bl,heal,0);
|
||||
clif_resurrection(bl,1);
|
||||
clif_resurrection( *bl );
|
||||
}
|
||||
break;
|
||||
|
||||
@ -19717,7 +19717,7 @@ void skill_weaponrefine( map_session_data& sd, int idx ){
|
||||
clif_delitem(sd,idx,1,3);
|
||||
clif_upgrademessage(&sd, 0, item->nameid);
|
||||
clif_inventorylist(&sd);
|
||||
clif_refine(sd.fd,0,idx,item->refine);
|
||||
clif_refine( sd, idx, ITEMREFINING_SUCCESS );
|
||||
if( ditem->type == IT_WEAPON ){
|
||||
achievement_update_objective(&sd, AG_ENCHANT_SUCCESS, 2, ditem->weapon_level, item->refine);
|
||||
}
|
||||
@ -19745,7 +19745,7 @@ void skill_weaponrefine( map_session_data& sd, int idx ){
|
||||
if(item->equip)
|
||||
pc_unequipitem(&sd,idx,3);
|
||||
clif_upgrademessage(&sd, 1, item->nameid);
|
||||
clif_refine(sd.fd,1,idx,item->refine);
|
||||
clif_refine( sd, idx, ITEMREFINING_FAILURE );
|
||||
achievement_update_objective(&sd, AG_ENCHANT_FAIL, 1, 1);
|
||||
pc_delitem(&sd,idx,1,0,2, LOG_TYPE_OTHER);
|
||||
clif_misceffect(&sd.bl,2);
|
||||
@ -23012,7 +23012,7 @@ int skill_blockpc_start(map_session_data *sd, int skill_id, t_tick tick) {
|
||||
sd->scd[i]->timer = add_timer(gettick() + tick, skill_blockpc_end, sd->bl.id, i);
|
||||
|
||||
if (battle_config.display_status_timers)
|
||||
clif_skill_cooldown(sd, skill_id, tick);
|
||||
clif_skill_cooldown( *sd, skill_id, tick );
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
|
@ -1915,7 +1915,7 @@ int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per
|
||||
status->ap += ap;
|
||||
|
||||
if (bl->prev) // Animation only if character is already on a map.
|
||||
clif_resurrection(bl, 1);
|
||||
clif_resurrection( *bl );
|
||||
switch (bl->type) {
|
||||
case BL_PC: pc_revive((TBL_PC*)bl, hp, sp, ap); break;
|
||||
case BL_MOB: mob_revive((TBL_MOB*)bl, hp); break;
|
||||
@ -10895,7 +10895,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
tick = 60000;
|
||||
val1 = battle_config.manner_system; // Mute filters.
|
||||
if (sd) {
|
||||
clif_changestatus(sd,SP_MANNER,sd->status.manner);
|
||||
clif_changemanner( *sd );
|
||||
clif_updatestatus(*sd,SP_MANNER);
|
||||
}
|
||||
break;
|
||||
@ -13399,7 +13399,7 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
|
||||
if (sd && sd->status.manner < 0 && tid != INVALID_TIMER)
|
||||
sd->status.manner = 0;
|
||||
if (sd && tid == INVALID_TIMER) {
|
||||
clif_changestatus(sd,SP_MANNER,sd->status.manner);
|
||||
clif_changemanner( *sd );
|
||||
clif_updatestatus(*sd,SP_MANNER);
|
||||
}
|
||||
break;
|
||||
@ -14220,7 +14220,7 @@ TIMER_FUNC(status_change_timer){
|
||||
case SC_NOCHAT:
|
||||
if(sd) {
|
||||
sd->status.manner++;
|
||||
clif_changestatus(sd,SP_MANNER,sd->status.manner);
|
||||
clif_changemanner( *sd );
|
||||
clif_updatestatus(*sd,SP_MANNER);
|
||||
if (sd->status.manner < 0) { // Every 60 seconds your manner goes up by 1 until it gets back to 0.
|
||||
sc_timer_next(60000+tick);
|
||||
|
@ -2988,7 +2988,7 @@ int unit_skillcastcancel(struct block_list *bl, char type)
|
||||
if(bl->type==BL_MOB)
|
||||
((TBL_MOB*)bl)->skill_idx = -1;
|
||||
|
||||
clif_skillcastcancel(bl);
|
||||
clif_skillcastcancel( *bl );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user