[HELP] cannot "Allow zero base/job exp gain"

Zirius

New member
Messages
261
Points
0
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][diff]) > 0) {
rate = tmp;
break;
}
                // Allow rate = 0
                if ((tmp=pc->level_penalty[type][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)->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

IN3n6pk.png


 

Is there other place where this is hardcoded?

 

Thanks!

 
Last edited by a moderator:
Back
Top