Party Share Bonus

astralprojection

New member
Messages
334
Points
0
// exp share and added zeny share [Valaris]
static int party_exp_share(struct party_data *p, struct block_list *src, unsigned int base_exp, unsigned int job_exp, int zeny)
{
struct map_session_data* sd[MAX_PARTY];
unsigned int i, c;

nullpo_ret(p);
nullpo_ret(src);

// count the number of players eligible for exp sharing
for (i = c = 0; i < MAX_PARTY; i++) {
if( (sd[c] = p->data.sd) == NULL || sd[c]->bl.m != src->m || pc_isdead(sd[c]) || (battle_config.idle_no_share && pc_isidle(sd[c])) )
continue;
c++;
}
if (c < 1)
return 0;

base_exp/=c;
job_exp/=c;
zeny/=c;

if (battle_config.party_even_share_bonus_36 && c > 35) {
double bonus = 100 + battle_config.party_even_share_bonus_36*(c-1);
if (base_exp)
base_exp = (unsigned int) cap_value(base_exp * bonus/100, 0, UINT_MAX);
if (job_exp)
job_exp = (unsigned int) cap_value(job_exp * bonus/100, 0, UINT_MAX);
if (zeny)
zeny = (unsigned int) cap_value(zeny * bonus/100, INT_MIN, INT_MAX);
} else
if (battle_config.party_even_share_bonus_30 && c > 29) {
double bonus = 100 + battle_config.party_even_share_bonus_30*(c-1);
if (base_exp)
base_exp = (unsigned int) cap_value(base_exp * bonus/100, 0, UINT_MAX);
if (job_exp)
job_exp = (unsigned int) cap_value(job_exp * bonus/100, 0, UINT_MAX);
if (zeny)
zeny = (unsigned int) cap_value(zeny * bonus/100, INT_MIN, INT_MAX);
} else
if (battle_config.party_even_share_bonus_20 && c > 19) {
double bonus = 100 + battle_config.party_even_share_bonus_20*(c-1);
if (base_exp)
base_exp = (unsigned int) cap_value(base_exp * bonus/100, 0, UINT_MAX);
if (job_exp)
job_exp = (unsigned int) cap_value(job_exp * bonus/100, 0, UINT_MAX);
if (zeny)
zeny = (unsigned int) cap_value(zeny * bonus/100, INT_MIN, INT_MAX);
} else
if (battle_config.party_even_share_bonus_10 && c > 9) {
double bonus = 100 + battle_config.party_even_share_bonus_10*(c-1);
if (base_exp)
base_exp = (unsigned int) cap_value(base_exp * bonus/100, 0, UINT_MAX);
if (job_exp)
job_exp = (unsigned int) cap_value(job_exp * bonus/100, 0, UINT_MAX);
if (zeny)
zeny = (unsigned int) cap_value(zeny * bonus/100, INT_MIN, INT_MAX);
} else
if (battle_config.party_even_share_bonus && c < 6) {
double bonus = 100 + battle_config.party_even_share_bonus*(c-1);
if (base_exp)
base_exp = (unsigned int) cap_value(base_exp * bonus/100, 0, UINT_MAX);
if (job_exp)
job_exp = (unsigned int) cap_value(job_exp * bonus/100, 0, UINT_MAX);
if (zeny)
zeny = (unsigned int) cap_value(zeny * bonus/100, INT_MIN, INT_MAX);
}

for (i = 0; i < c; i++) {
pc->gainexp(sd, src, base_exp, job_exp, false);

if (zeny) // zeny from mobs [Valaris]
pc->getzeny(sd,zeny,LOG_TYPE_PICKDROP_MONSTER,NULL);
}
return 0;
}


Hi guys i want to mod party.c (Party Share Bonus)
Is this the correct way to do it?
party_even_share_bonus: 30
party_even_share_bonus_10: 40
party_even_share_bonus_20: 50
party_even_share_bonus_30: 60
party_even_share_bonus_36: 70

1 ~ 5 member = 30%
6 ~ 10 member = 40%

11 ~ 20 member = 50%
21 ~ 35 member = 60%
36 member = 70%

 
Last edited by a moderator:
Back
Top