[crossfire] Ideas needed to fix exploit

Andreas Kirschbaum kirschbaum at myrealbox.com
Mon Feb 27 14:48:15 CST 2006


On #crossfire it was reported that killing other players can be
exploited (and currently is exploited on cat2) to level really fast.

The cause is that kill_object() calculates the exp gain through
calc_skill_exp(). This value is *not* limited/related to the exp the
victim actually loses. This especially holds if the victim already has
reached permanent exp limit: the killer gains up to 5 million exp for
every kill (which is the upper limit kill_object() allows) but the
victim does not lose anything.

I'm not sure what the "right" solution could be. Some ideas:

 a) Do not reward (pk) with exp.

    This is probably the safest "solution" and is very easy to
    implement. Not sure if that is an appropriate solution for servers
    that allow pvp.

 b) Reward a (pk) with MIN(5 million, (exp loss of victim)/10).

    I'm not sure if that really is a good idea since it probably creates
    another exploit: kill a player with some hard to train skill and
    gain lots of exp in that skill.

    Another (probably quite hard to exploit) problem is that a victim
    player can be killed but not actually die. Thus if a player is very
    careful to kill the victim at -1 hp and the victim regains hp very
    fast, the victim will not actually die but the attacker will gain
    exp. Thus the attacker would gain more exp in total than expected.
    (I'm not sure if this problem still exists but it did exist last
    time I did check.)

    Another possible exploit could be to abuse the force inserted into a
    killed player to prevent multiple deaths at his savebed.

 c) Something else.

    Any ideas?



More information about the crossfire mailing list