// 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[i].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[i], src, base_exp, job_exp, false);
if (zeny) // zeny from mobs [Valaris]
pc->getzeny(sd[i],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%
// 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[i].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[i], src, base_exp, job_exp, false); if (zeny) // zeny from mobs [Valaris] pc->getzeny(sd[i],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%
Edited by astralprojection21 ~ 35 member = 60%
36 member = 70%
Share this post
Link to post
Share on other sites