Fixing VIP rates to add configured rate.

This commit is contained in:
marha 2015-11-24 21:23:38 +01:00
parent d46cf4b35e
commit f1bb9743dc
4 changed files with 21 additions and 10 deletions

View File

@ -198,7 +198,8 @@ vip_exp_penalty_job: 1
vip_bm_increase: 2
// Item drop increase. Setting to 0 will disable.
// Note: 50 = 0.5%
// Note: 50 = 50% item_drop increase.
// For item_rate = 200: 200 * 50 / 100 = 100 bonus rate added to the 200 base giving total rate of 300.
// Default: 50
vip_drop_increase: 50

View File

@ -7076,7 +7076,7 @@ ACMD_FUNC(mobinfo)
#ifdef VIP_ENABLE
// Display item rate increase for VIP.
if (pc_isvip(sd) && battle_config.vip_drop_increase)
droprate += battle_config.vip_drop_increase;
droprate += (droprate * battle_config.vip_drop_increase) / 100;
#endif
if (item_data->slot)
sprintf(atcmd_output2, " - %s[%d] %02.02f%%", item_data->jname, item_data->slot, (float)droprate / 100);
@ -7616,7 +7616,7 @@ ACMD_FUNC(whodrops)
#ifdef VIP_ENABLE
// Display item rate increase for VIP.
if (pc_isvip(sd) && battle_config.vip_drop_increase)
dropchance += battle_config.vip_drop_increase;
dropchance += (dropchance * battle_config.vip_drop_increase) / 100;
#endif
sprintf(atcmd_output, "- %s (%d): %02.02f%%", mob_db(item_data->mob[j].id)->jname, item_data->mob[j].id, dropchance/100.);
clif_displaymessage(fd, atcmd_output);
@ -7727,7 +7727,7 @@ ACMD_FUNC(mutearea)
ACMD_FUNC(rates)
{
char buf[CHAT_SIZE_MAX];
int base_exp_rate = 0, job_exp_rate = 0, item_rate = 0;
int base_exp_rate = 0, job_exp_rate = 0;
nullpo_ret(sd);
memset(buf, '\0', sizeof(buf));
@ -7737,20 +7737,30 @@ ACMD_FUNC(rates)
if (pc_isvip(sd) && (battle_config.vip_base_exp_increase || battle_config.vip_job_exp_increase || battle_config.vip_drop_increase)) {
base_exp_rate += battle_config.vip_base_exp_increase;
job_exp_rate += battle_config.vip_job_exp_increase;
item_rate += battle_config.vip_drop_increase;
}
#endif
snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1298), // Experience rates: Base %.2fx / Job %.2fx
(battle_config.base_exp_rate+base_exp_rate)/100., (battle_config.job_exp_rate+job_exp_rate)/100.);
clif_displaymessage(fd, buf);
snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1299), // Normal Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx
(battle_config.item_rate_common+item_rate)/100., (battle_config.item_rate_heal+item_rate)/100., (battle_config.item_rate_use+item_rate)/100., (battle_config.item_rate_equip+item_rate)/100., (battle_config.item_rate_card+item_rate)/100.);
(battle_config.item_rate_common + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_common) / 100 : 0)) / 100.,
(battle_config.item_rate_heal + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_heal) / 100 : 0)) / 100.,
(battle_config.item_rate_use + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_use) / 100 : 0)) / 100.,
(battle_config.item_rate_equip + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_equip) / 100 : 0)) / 100.,
(battle_config.item_rate_card + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_card) / 100 : 0)) / 100.);
clif_displaymessage(fd, buf);
snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1300), // Boss Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx
(battle_config.item_rate_common_boss+item_rate)/100., (battle_config.item_rate_heal_boss+item_rate)/100., (battle_config.item_rate_use_boss+item_rate)/100., (battle_config.item_rate_equip_boss+item_rate)/100., (battle_config.item_rate_card_boss+item_rate)/100.);
(battle_config.item_rate_common_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_common_boss) / 100 : 0)) / 100.,
(battle_config.item_rate_heal_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_heal_boss) / 100 : 0)) / 100.,
(battle_config.item_rate_use_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_use_boss) / 100 : 0)) / 100.,
(battle_config.item_rate_equip_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_equip_boss) / 100 : 0)) / 100.,
(battle_config.item_rate_card_boss + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_card_boss) / 100 : 0)) / 100.);
clif_displaymessage(fd, buf);
snprintf(buf, CHAT_SIZE_MAX, msg_txt(sd,1301), // Other Drop Rates: MvP %.2fx / Card-Based %.2fx / Treasure %.2fx
(battle_config.item_rate_mvp+item_rate)/100., (battle_config.item_rate_adddrop+item_rate)/100., (battle_config.item_rate_treasure+item_rate)/100.);
(battle_config.item_rate_mvp + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_mvp) / 100 : 0)) / 100.,
(battle_config.item_rate_adddrop + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_adddrop) / 100 : 0)) / 100.,
(battle_config.item_rate_treasure + (pc_isvip(sd) ? (battle_config.vip_drop_increase * battle_config.item_rate_treasure) / 100 : 0)) / 100.);
clif_displaymessage(fd, buf);
return 0;

View File

@ -17740,7 +17740,7 @@ void clif_display_pinfo(struct map_session_data *sd, int cmdtype) {
//0:PCRoom
details_drop[0] = 0;
//1:Premium
details_drop[1] = battle_config.vip_drop_increase;
details_drop[1] = (battle_config.vip_drop_increase * battle_config.item_rate_common) / 100;
if (pc_isvip(sd)) {
if (details_drop[1] < 0)
details_drop[1] = 0 - details_drop[1];

View File

@ -2485,7 +2485,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
drop_rate = max(drop_rate,cap_value((int)(0.5+drop_rate*(sd->sc.data[SC_ITEMBOOST]->val1)/100.),0,9000));
// Increase item drop rate for VIP.
if (battle_config.vip_drop_increase && (sd && pc_isvip(sd))) {
drop_rate += (int)(0.5 + (drop_rate * battle_config.vip_drop_increase) / 10000.);
drop_rate += (int)(0.5 + (drop_rate * battle_config.vip_drop_increase) / 100);
drop_rate = min(drop_rate,10000); //cap it to 100%
}
#ifdef RENEWAL_DROP