[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