Kill Records

From LSWiki

Jump to: navigation, search

This game mechanic has been retired as of change #7859. Experience awarded for kills should no longe be subject to diminishing returns via kill Log shennanigans. Overall this should mean more xp for all, and one less mechanic that new players need to learn.

Previously

Most beings in Lost Souls have a hidden kill log. This primarily affects Incarnoi, their Familiars, and Companions.

If murder is your principal form of acquiring Experience, and you have an interest in acquiring large quantities of experience, it is important to understand this:

  • Kill Logs keep track of things you kill.
  • Subsequent kills of the same type of being will result in diminishing experience rewards to the point where they will award only 1% of their normal experience reward.
  • Killing beings not already present on your kill log will help clear existing entries.

This makes it impossible to guarantee that you will receive 100% of the experience award for any particular kill. But on average you will receive much more if you seek a broad variety of prey.

Currently, the only known way to view a Kill Record is via the Discern Secrets.

Some Details

  • The kill log is a hash of string:integers with a length that can't exceed 31.
  • Keys in the hash are the defined "name" of beings killed, and values are integers representing the number of times beings with that name have been killed.
  • The name of the being in this instance refers to the filename from which the being was generated. Beings with randomly generated names/races/features are often generated from the same template and will count as one entry for the kill log.
  • Whenever an enemy is dispatched, the kill logs of all victors are checked before experience is awarded.
  • If the kill log is longer than the lower of the victor's current level, or 30; then roughly 25% of it will be removed randomly (with a hard minimum of one entry purged).
  • Then one of two things will occurr.
    • If victim is already present on the kill log then its value will be incremented by 1 and experience will be subjected to diminishing returns using that new value.
    • If victim is not already present, then it will be added to the kill log and experience will not be subjected to diminishing returns.
  • Companions without kill logs of their own will check their owners kill log.


More Detail

  • Code dump from Nov 21 2021
[OOC Starhound] "varargs float query_experience_factor(object att, status kill) {"
[OOC Starhound] "    while(sizeof(enemies) > min(query_level(), 30)) {"
[OOC Starhound] "        foreach(string item : enemies) {"
[OOC Starhound] "            if(!random(3)) {"
[OOC Starhound] "                map_delete(enemies, item);"
[OOC Starhound] "                break;"
[OOC Starhound] "            }"
[OOC Starhound] "        }"
[OOC Starhound] "    }"
[OOC Starhound] "    string obj_name = object_name(att);"
[OOC Starhound] "    int hash_ix = member(obj_name, '#');"
[OOC Starhound] "    string code = (hash_ix == Null) ? obj_name : obj_name[..hash_ix - 1];"
[OOC Starhound] "    int count = kill ? enemies[code]++ : enemies[code];"
[OOC Starhound] "    if(hash_ix == Null)"
[OOC Starhound] "        count *= 3;"
[OOC Starhound] "    return max(1.0 - diminishing_returns(count, 1.0) / 10.0, 0.01);"
[OOC Starhound] "}"
[OOC Starhound] "the if random 3 is what i love"
[OOC Starhound] "everything else is pretty tame"


Not clear what member is, or why count gets multiplied by 3 if member(obj_name, '#') is Null. Does query_experience_factor get called in contexts other than murder? Under what circumstances is kill falsey?

Personal tools