[crossfire] exp loss changes

Mark Wedel mwedel at sonic.net
Sun Oct 9 00:13:59 CDT 2011


  After long last, I've started work on the skill system I suggested at:

http://wiki.metalforge.net/doku.php/user:mwedel:skills

(it helps to have some free time between jobs)

  On that page, in the notes, I mention that level loss will not result in loss 
of AP - rather, it just means that it will take longer before they get any new ones.

  What I mean by this is lets suppose the character got to level 10, and spent 
the AP he got there.  He dies or is drained, and is now level 9 - none of his 
existing skills are decreased (no way to really fairly do that), and he does not 
lose any AP.  He adventures, regains level 10, but since this does not exceed 
the max level he previously achieved, he does not get any AP for that level - 
not until level 11 does he get any AP.

  Doing this avoids all sorts of headaches within the code, and from a player 
perspective, is perhaps a little nicer - since the character does not really 
lose a level, they can go back to the same map they died and still have a good 
chance at finishing it - except for stat loss, they are the same level before.

  With such a method, I was thinking that instead of decreasing exp from the 
player total, instead add a new field like exp_penalty or exp_loss.  When a 
player dies, that field is increased by appropriate amount- exp_loss += (exp - 
exp_loss) * death_penalty_ratio.

  Then, any earned experience after that point gets applied to exp_loss first, 
and only when that is zero, does exp get applied to normal total.

  This system can be applied to the existing skill system, as well as monsters. 
  I think this would also simplify the permanent exp ratios - in a sense, 
exp_loss gets limited to exp * permanent_exp_ratio - this would also mean that 
the permanent_exp_ratio can get changed on an existing server and work as 
expectedly (right now, it doesn't really, as permanent exp is added to the 
bucket as it is earned).

  I think for permanent exp servers, the output may be a bit more clear - show 
total exp earned, total penalty, and effective total.

  I also think that in many ways, this just simplifies a lot of the code.  And 
if one did still want to reduce levels, that is pretty easy - just use exp - 
exp_loss when looking up what should be the level of the skill.

  Thoughts?



More information about the crossfire mailing list