George wrote: > On Tue, 18 Nov 1997, Chuck Reed wrote: > >if (GET_LEVEL(ch) >= 0 && GET_LEVEL(ch) < 10) > > mod = 1; [similar stuff snipped] > >if (GET_LEVEL(ch) >= 50 && GET_LEVEL(ch) < 60) > > mod = 25; > >else > > mod = 30; > > Notice that your 'mod' will always be 25 or 30. I don't see why. > > exp = 800; > >else > > exp = GET_LEVEL(ch) * 500 * ((GET_LEVEL(ch) - 1) / 10) * mod; > > Looks ok, didn't look hard though. Hm... > >/* If character is human, grant a 10% xp bonus */ 10% bonus?? > >h_mod = exp * (1 / 10); Yeah, exp *= 0.1 > >if (IS_HUMAN(ch)) > > exp = exp - h_mod; exp -= exp * 0.1 ... but is not a bonus > Subtracting 1/10 of the xp, so... > > if (IS_HUMAN(ch)) > exp *= .9; Oh, I see. I have implemented something similar in my MUD, but with Mark Dickey's exp formula tester's one. This formula uses pow(), but in my linux box I notice some amount of delay when I type "levels" (is a 486, with 12 mb of RAM(!)). So, I implemented an int ExpToLev[NUM_CLASSES][LVL_IMPL +1] that is initializated in boot_db. Easy solution. Saludos, muchachos. (Please, if I made a typo correct me... I wanna to learn english :) ) -- Leonardo Herrera L. mailto:leherrer@entelchile.net http://www.geocities.com/TimesSquare/Castle/4515 "Me voy a subai, me voy a costai, me voy a tapai y me voy a hacei tuto." -- Ruy +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST