Jump to content

  •  

Photo

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


  • Please log in to reply
No replies to this topic

#1 Zirius

Zirius

    Advanced Member

  • Members
  • PipPipPip
  • 262 posts

Posted 08 April 2016 - 09:04 AM

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][i][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


IN3n6pk.png

 

Is there other place where this is hardcoded?

 

Thanks!


Edited by Zirius, 08 April 2016 - 09:15 AM.

qjMg84B.png





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users


This topic has been visited by 15 user(s)