Kill Records

From LSWiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 14:25, 17 December 2016 (edit)
Fungor (Talk | contribs)
(Kill Log moved to Kill Records: This is what Twi called it in the one changelog that references this ridiculously important feature.)
← Previous diff
Current revision (11:25, 22 November 2021) (edit)
Fungor (Talk | contribs)

 
Line 1: Line 1:
-Every being in Lost Souls has a hidden kill log. This primarily affects [[Incarnoi]], their [[Familiars]], and [[Followers]].+This game mechanic has been retired as of [https://www.lostsouls.org/changelog/disabled-kill-log-experience-reward-reduction 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 [[Terms_and_Acronyms#Incarnos|Incarnoi]], their [[Empathic Bonds|Familiars]], and [[Followers|Companions]].
-If murder is your principal form of acquiring [[Experience]], and you have an interest in acquiring some quantity of experience, it is important to understand this:+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. *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 stop awarding experience altogether.+*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 present in your kill log will have them replace a random one that is.+*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. 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.
Line 11: Line 13:
==Some Details== ==Some Details==
-*The kill log is a hash with a length of 30.+*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" (not visible to players) of beings killed, and values are integers representing the number of times beings with that name have been killed.+*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.
-*Whenever murder occurs, the kill logs of all victors are checked before experience is awarded with two possible outcomes.+*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.
-**If the being in question is already present on the kill log then it's value will be incremented by 1.+*Whenever an enemy is dispatched, the kill logs of all victors are checked before experience is awarded.
-**If the being in question is not already present, then it will be added to the kill log, replacing a random entry, and then it's value will be set to 1.+*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).
-*The formula for how quickly experience falls off has not been divulged.+*Then one of two things will occurr.
-*[http://lostsouls.org/changelog?id=4530 Followers check their owners kill log].+**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.
 +*[http://lostsouls.org/changelog?id=4530 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?
[[Category: Character Features]][[Category: Game Content]] [[Category: Character Features]][[Category: Game Content]]

Current revision

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