Corrected Enchant Arms for older clients (#4484)

* Follow up to 754274b.
* Resolved the status icon not clearing for each element.
Thanks to @Daegaladh!
This commit is contained in:
Aleos
2019-12-19 17:02:19 -05:00
committed by GitHub
parent deb0615639
commit beec1c2766
2 changed files with 18 additions and 8 deletions

View File

@@ -5999,11 +5999,6 @@ void clif_status_change_sub(struct block_list *bl, int id, int type, int flag, t
nullpo_retv(bl);
#if PACKETVER < 20151104
if (type == EFST_WEAPONPROPERTY)
type = EFST_ATTACK_PROPERTY_NOTHING + val1; // Assign status icon for older clients
#endif
#if PACKETVER >= 20120618
if (flag && battle_config.display_status_timers)
WBUFW(buf,0) = 0x983;

View File

@@ -11731,8 +11731,16 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
calc_flag&=~SCB_BODY;
}*/
if(!(flag&SCSTART_NOICON) && !(flag&SCSTART_LOADED && StatusDisplayType[type]))
clif_status_change(bl,StatusIconChangeTable[type],1,tick,(val_flag&1)?val1:1,(val_flag&2)?val2:0,(val_flag&4)?val3:0);
if (!(flag&SCSTART_NOICON) && !(flag&SCSTART_LOADED && StatusDisplayType[type])) {
int status_icon = StatusIconChangeTable[type];
#if PACKETVER < 20151104
if (status_icon == EFST_WEAPONPROPERTY)
status_icon = EFST_ATTACK_PROPERTY_NOTHING + val1; // Assign status icon for older clients
#endif
clif_status_change(bl, status_icon, 1, tick, (val_flag & 1) ? val1 : 1, (val_flag & 2) ? val2 : 0, (val_flag & 4) ? val3 : 0);
}
// Used as temporary storage for scs with interval ticks, so that the actual duration is sent to the client first.
if( tick_time )
@@ -12830,7 +12838,14 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
}*/
// On Aegis, when turning off a status change, first goes the sc packet, then the option packet.
clif_status_change(bl,StatusIconChangeTable[type],0,0,0,0,0);
int status_icon = StatusIconChangeTable[type];
#if PACKETVER < 20151104
if (status_icon == EFST_WEAPONPROPERTY)
status_icon = EFST_ATTACK_PROPERTY_NOTHING + sce->val1; // Assign status icon for older clients
#endif
clif_status_change(bl,status_icon,0,0,0,0,0);
if( opt_flag&8 ) // bugreport:681
clif_changeoption2(bl);