Initial support for newer packet versions (#4944)

Basic support for packets up to April 2020
Changing the default packet version to 2020-04-01

Thanks to everyone involved!
This commit is contained in:
Lemongrass3110
2020-06-03 16:35:10 +02:00
committed by GitHub
parent 929c30c414
commit 45cd5808b7
34 changed files with 6983 additions and 2728 deletions

View File

@@ -11733,6 +11733,16 @@ static int8 skill_castend_id_check(struct block_list *src, struct block_list *ta
return -1;
}
TIMER_FUNC( skill_keep_using ){
struct map_session_data* sd = map_id2sd( id );
if( sd && sd->skill_keep_using.skill_id ){
clif_parse_skill_toid( sd, sd->skill_keep_using.skill_id, sd->skill_keep_using.level, sd->skill_keep_using.target );
}
return 0;
}
/**
* Check & process skill to target on castend. Determines if skill is 'damage' or 'nodamage'
* @param tid
@@ -11959,6 +11969,10 @@ TIMER_FUNC(skill_castend_id){
else
skill_castend_damage_id(src,target,ud->skill_id,ud->skill_lv,tick,flag);
if( sd && sd->skill_keep_using.skill_id == ud->skill_id ){
sd->skill_keep_using.tid = add_timer( sd->ud.canact_tick + 100, skill_keep_using, sd->bl.id, 0 );
}
sc = status_get_sc(src);
if(sc && sc->count) {
if (ud->skill_id != RA_CAMOUFLAGE)
@@ -12034,7 +12048,7 @@ TIMER_FUNC(skill_castend_id){
//sent in ALL cases, even cases where skill_check_condition fails
//which would lead to double 'skill failed' messages u.u [Skotlex]
if(sd)
sd->skillitem = sd->skillitemlv = sd->skillitem_keep_requirement = 0;
sd->skillitem = sd->skillitemlv = sd->skillitem_keep_requirement = sd->skill_keep_using.skill_id = 0;
else if(md)
md->skill_idx = -1;
return 0;
@@ -16637,7 +16651,7 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
else if( require.itemid[i] == ITEMID_ANCILLA )
clif_skill_fail(sd,skill_id,USESKILL_FAIL_ANCILLA,0); //Ancilla is required.
else
clif_skill_fail( sd, skill_id, USESKILL_FAIL_NEED_ITEM, ( require.itemid[i] << 16 ) | require.amount[i] ); // [%s] required '%d' amount.
clif_skill_fail( sd, skill_id, USESKILL_FAIL_NEED_ITEM, require.amount[i], require.itemid[i] ); // [%s] required '%d' amount.
return false;
}
}
@@ -17572,11 +17586,11 @@ void skill_weaponrefine(struct map_session_data *sd, int idx)
return;
}
if( item->refine >= sd->menuskill_val || item->refine >= 10 ) {
clif_upgrademessage(sd->fd, 2, item->nameid);
clif_upgrademessage(sd, 2, item->nameid);
return;
}
if( (i = pc_search_inventory(sd, material [ditem->wlv])) < 0 ) {
clif_upgrademessage(sd->fd, 3, material[ditem->wlv]);
clif_upgrademessage(sd, 3, material[ditem->wlv]);
return;
}
per = status_get_refine_chance(static_cast<refine_type>(ditem->wlv), (int)item->refine, false);
@@ -17596,7 +17610,7 @@ void skill_weaponrefine(struct map_session_data *sd, int idx)
pc_unequipitem(sd,idx,3);
}
clif_delitem(sd,idx,1,3);
clif_upgrademessage(sd->fd, 0, item->nameid);
clif_upgrademessage(sd, 0, item->nameid);
clif_inventorylist(sd);
clif_refine(sd->fd,0,idx,item->refine);
achievement_update_objective(sd, AG_REFINE_SUCCESS, 2, ditem->wlv, item->refine);
@@ -17623,7 +17637,7 @@ void skill_weaponrefine(struct map_session_data *sd, int idx)
item->refine = 0;
if(item->equip)
pc_unequipitem(sd,idx,3);
clif_upgrademessage(sd->fd, 1, item->nameid);
clif_upgrademessage(sd, 1, item->nameid);
clif_refine(sd->fd,1,idx,item->refine);
achievement_update_objective(sd, AG_REFINE_FAIL, 1, 1);
pc_delitem(sd,idx,1,0,2, LOG_TYPE_OTHER);