With respect to the ears and fingers, if I remember correctly those are added by an "add levelled list item" perk entry, which will only be activated when the kill is made by the player due to the fact that the perk is the player's. Perks do not work on
NPCs, so this isn't a viable solution.
The solution mentioned by
b3w4r3 is what I'd recommend as well. Here's an example script that could work for a single companion:
Spoiler ref rCurrentRefBegin GameMode set rCurrentRef to GetFirstRef 200 1 0 ; Actors Label 10 if rCurrentRef if rCurrentRef.GetDead if rCurrentRef.GetItemCount KillerCheckedToken else rCurrentRef.AddItem KillerCheckedToken 1 1 if rCurrentRef.IsKiller PlayerTeammateREF ; Where 'PlayerTeammateREF' is the editorRefID of the teammate in question if rCurrentRef.GetIsCreature set PlayerTeammateCreaturesKilled to PlayerTeammateCreaturesKilled + 1 ; Where PlayerTeammateCreaturesKilled is a global variable else set PlayerTeammatePeopleKilled to PlayerTeammatePeopleKilled + 1 ; Where PlayerTeammatePeopleKilled is a global variable endif endif endif endif set rCurrentRef to Pencil01 ; Prevent apple bug set rCurrentRef to GetNextRef Goto 10 endifEnd
This code could be extended to pull its companion refIDs from a form list, by inserting another loop in the middle of it. This would allow companions to be added or removed without having to change this script, so long as the form list is appropriately maintained. The difficulty would then be in storing the number of kills for a number of actors that is not predetermined. Instead of using variables, it would make more sense to use "kill tokens" stored in the companion's inventory, given that variables in object scripts can only be accessed via editorRefIDs. For example:
Spoiler ref rCurrentCorpseref rCurrentCompanionint iIndexBegin GameMode set rCurrentCorpse to GetFirstRef 200 1 0 ; Actors Label 10 if rCurrentCorpse if rCurrentCorpse.GetDead if rCurrentCorpse.GetItemCount KillerCheckedToken else rCurrentCorpse.AddItem KillerCheckedToken 1 1 set iIndex to 0 Label 20 if iIndex < ListGetCount CompanionFormList set rCurrentCompanion to ListGetNthForm CompanionFormList iIndex if rCurrentCorpse.IsKiller rCurrentCompanion if rCurrentCorpse.GetIsCreature rCurrentCompanion.AddItem CreatureKillToken 1 1 else rCurrentCompanion.AddItem PersonKillToken 1 1 endif else set iIndex to iIndex + 1 Goto 20 endif endif endif endif set rCurrentCorpse to Pencil01 ; Prevent apple bug set rCurrentCorpse to GetNextRef Goto 10 endifEnd
Cipscis
EDIT:
Note that this script wouldn't need to run particularly often. The default script processing delay of 5 seconds should be easily enough to ensure accuracy, and if you want to ensure that the number is reported correctly in a menu, then you could run the code once whenever the player enters http://geck.gamesas.com/index.php/MenuMode.
Cipscis