Zirius 1 Posted April 8, 2016 (edited) first, at renewal environment db\re\level_penalty.txt 1,12,2,0 1,12,-2,0 meaning 3 level difference, monster won't give any form of experience src\map\pc.c int pc_level_penalty_mod(int diff, unsigned char race, uint32 mode, int type) { #if defined(RENEWAL_DROP) || defined(RENEWAL_EXP) int rate = 100, i; if( diff < 0 ) diff = MAX_LEVEL + ( ~diff + 1 ); for (i = RC_FORMLESS; i < RC_MAX; i++) { int tmp; if (race != i) { if (mode&MD_BOSS && i < RC_BOSS) i = RC_BOSS; else if (i <= RC_BOSS) continue; } if ((tmp=pc->level_penalty[type][i][diff]) > 0) { rate = tmp; break; } // Allow rate = 0 if ((tmp=pc->level_penalty[type][i][diff]) == 0) { rate = 0; break; } } return rate; #else return 100; #endif } allow looping for pc->level_penalty[type][diff]) == 0, then assign rate = 0 src\map\mob.c #ifdef RENEWAL_EXP int rate = pc->level_penalty_mod(md->level - (tmpsd[i])->status.base_level, md->status.race, md->status.mode, 1); base_exp = (unsigned int)cap_value(base_exp * rate / 100, 0, UINT_MAX); job_exp = (unsigned int)cap_value(job_exp * rate / 100, 0, UINT_MAX); #endif cap_value(a, min, UINT_MAX), where min was changed to 0 from 1, allow min to be 0. if zero base_exp and job_exp both 0. But still: monster is giving 1 exp Is there other place where this is hardcoded? Thanks! Edited April 8, 2016 by Zirius Quote Share this post Link to post Share on other sites
first, at renewal environment
db\re\level_penalty.txt
meaning 3 level difference, monster won't give any form of experience
src\map\pc.c
allow looping for pc->level_penalty[type][diff]) == 0, then assign rate = 0
src\map\mob.c
cap_value(a, min, UINT_MAX), where min was changed to 0 from 1, allow min to be 0. if zero base_exp and job_exp both 0.
But still:
monster is giving 1 exp
Is there other place where this is hardcoded?
Thanks!
Edited by ZiriusShare this post
Link to post
Share on other sites