void UseFish(LPCHARACTER ch, LPITEM item)
{
int idx = item->GetVnum() - fish_info[2].vnum+2;
// 피라미 사용불가, 살아있는게 아닌건 사용불가
if (idx<=1 || idx >= MAX_FISH)
return;
int r = number(1, 10000);
item->SetCount(item->GetCount()-1);
if (r >= 4001)
{
// 죽은 물고기
ch->AutoGiveItem(fish_info[idx].dead_vnum);
}
else if (r >= 2001)
{
// 생선뼈
ch->AutoGiveItem(FISH_BONE_VNUM);
}
else
{
// 1000 500 300 100 50 30 10 5 4 1
static int s_acc_prob[NUM_USE_RESULT_COUNT] = { 1000, 1500, 1800, 1900, 1950, 1980, 1990, 1995, 1999, 2000 };
int u_index = std::lower_bound(s_acc_prob, s_acc_prob + NUM_USE_RESULT_COUNT, r) - s_acc_prob;
switch (fish_info[idx].used_table[u_index])
{
case USED_TREASURE_MAP: // 3
case USED_NONE: // 0
case USED_WATER_STONE: // 2
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("고기가 흔적도 없이 사라집니다."));
break;
case USED_SHELLFISH: // 1
if ( LC_IsCanada() == true )
{
if ( number(0, 2) != 2 ) return;
}
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("배 속에서 조개가 나왔습니다."));
ch->AutoGiveItem(SHELLFISH_VNUM);
break;
case USED_EARTHWARM: // 4
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("배 속에서 지렁이가 나왔습니다."));
ch->AutoGiveItem(EARTHWORM_VNUM);
break;
default:
ch->AutoGiveItem(fish_info[idx].used_table[u_index]);
break;
}
}
}