static int d2ladder_append_ladder(unsigned int type, t_d2ladderfile_ladderinfo * info) { t_d2cs_client_ladderinfo * ladderinfo; unsigned short ladderstatus; unsigned short status; unsigned char class; if (!info) { log_error("got NULL info"); return -1; } if (type > max_ladder_type) { log_error("ladder type %d exceed max ladder type %d",type,max_ladder_type); return -1; } if (!ladder_data[type].info) { log_error("ladder data info not initialized"); return -1; } if (ladder_data[type].curr_len >= ladder_data[type].len) { log_error("ladder data overflow %d > %d", ladder_data[type].curr_len, ladder_data[type].len); return -1; } status = bn_short_get(info->status); class = bn_byte_get(info->class); ladderstatus = (status & LADDERSTATUS_FLAG_DIFFICULTY); if (charstatus_get_hardcore(status)) { ladderstatus |= LADDERSTATUS_FLAG_HARDCORE; if (charstatus_get_dead(status)) { ladderstatus |= LADDERSTATUS_FLAG_DEAD; } } if (charstatus_get_expansion(status)) { ladderstatus |= LADDERSTATUS_FLAG_EXPANSION; ladderstatus |= min(class,D2CHAR_EXP_CLASS_MAX); } else {
extern unsigned int d2charinfo_get_dead(t_d2charinfo_summary const * charinfo) { ASSERT(charinfo,0); return charstatus_get_dead(bn_int_get(charinfo->charstatus)); }