1. Code:
    [04/15/2016 07:14:56] {'name': 'globals', 'etc': {'test': '<module>.test'}, 'subclasses': {'FireBall': {'name': 'FireBall', 'etc': {'__doc__': '<DocumentationDescriptor object at 0x000000000000002B>'}, 'property': {'OwnerID': '<property# OwnerID on BaseEntity>', 'currentTemperature': '<property# currentTemperature on BaseEntity>', 'isClient': '<property# isClient on BaseNetworkable>', 'isActiveAndEnabled': '<property# isActiveAndEnabled on Behaviour>', 'transform': '<property# transform on Component>', 'limitNetworking': '<property# limitNetworking on BaseNetworkable>', 'isDestroyed': '<property# isDestroyed on BaseNetworkable>', 'useGUILayout': '<property# useGUILayout on MonoBehaviour>', 'gameManager': '<property# gameManager on BaseNetworkable>', 'radiationLevel': '<property# radiationLevel on BaseEntity>', 'enabled': '<property# enabled on Behaviour>', 'tag': '<property# tag on Component>', 'hideFlags': '<property# hideFlags on Object>', 'gameObject': '<property# gameObject on Component>', 'isSpawned': '<property# isSpawned on BaseNetworkable>', 'isServer': '<property# isServer on BaseNetworkable>', 'name': '<property# name on Object>'}, 'field': {'lifeTimeMin': '<field# lifeTimeMin on FireBall>', 'lifeTimeMax': '<field# lifeTimeMax on FireBall>', 'radius': '<field# radius on FireBall>', 'generation': '<field# generation on FireBall>', 'spreadSubEntityString': '<field# spreadSubEntityString on FireBall>', 'tickRate': '<field# tickRate on FireBall>', 'restingSystems': '<field# restingSystems on FireBall>', 'waterToExtinguish': '<field# waterToExtinguish on FireBall>', 'canMerge': '<field# canMerge on FireBall>', 'damagePerSecond': '<field# damagePerSecond on FireBall>', 'movementSystems': '<field# movementSystems on FireBall>', 'triggers': '<field# triggers on BaseEntity>'}, 'method': {'GetDeathTime': "<method 'GetDeathTime' of 'FireBall' objects>", 'DebugText': "<method 'DebugText' of 'BaseEntity' objects>", 'SetGeneration': "<method 'SetGeneration' of 'FireBall' objects>", 'ReceiveCollisionMessages': "<method 'ReceiveCollisionMessages' of 'BaseEntity' objects>", 'Load': "<method 'Load' of 'FireBall' objects>", 'DoRadialDamage': "<method 'DoRadialDamage' of 'FireBall' objects>", 'ServerInit': "<method 'ServerInit' of 'FireBall' objects>", '__str__': "<method '__str__' of 'FireBall' objects>", 'Extinguish': "<method 'Extinguish' of 'FireBall' objects>", 'AddLife': "<method 'AddLife' of 'FireBall' objects>", 'MaxLifeTime': "<method 'MaxLifeTime' of 'FireBall' objects>", 'GetSubscribers': "<method 'GetSubscribers' of 'BaseNetworkable' objects>", 'MemberwiseClone': "<method 'MemberwiseClone' of 'object' objects>", 'TimeLeft': "<method 'TimeLeft' of 'FireBall' objects>", 'Finalize': "<method 'Finalize' of 'object' objects>", 'SendAsSnapshot': "<method 'SendAsSnapshot' of 'BaseNetworkable' objects>", 'TryToSpread': "<method 'TryToSpread' of 'FireBall' objects>", 'Think': "<method 'Think' of 'FireBall' objects>", 'SetResting': "<method 'SetResting' of 'FireBall' objects>", 'DoSplash': "<method 'DoSplash' of 'FireBall' objects>", 'CanMerge': "<method 'CanMerge' of 'FireBall' objects>", 'SendNetworkUpdate_Position': "<method 'SendNetworkUpdate_Position' of 'BaseNetworkable' objects>", 'IsResting': "<method 'IsResting' of 'FireBall' objects>", 'wantsSplash': "<method 'wantsSplash' of 'FireBall' objects>"}}, 'Chat': {'name': 'Chat', 'etc': {'Broadcast': '<built-in function Broadcast>', 'say': '<built-in function say>', '__doc__': '<DocumentationDescriptor object at 0x000000000000002B>'}, 'field': {'serverlog': '<field# serverlog on Chat>', 'enabled': '<field# enabled on Chat>'}, 'method': {'MemberwiseClone': "<method 'MemberwiseClone' of 'object' objects>", 'Finalize': "<method 'Finalize' of 'object' objects>"}}, 'Server': {'name': 'Server', 'etc': {'GetServerFolder': '<built-in function GetServerFolder>', 'readcfg': '<built-in function readcfg>', 'stop': '<built-in function stop>', 'writecfg': '<built-in function writecfg>', 'cheatreport': '<built-in function cheatreport>', '__doc__': '<DocumentationDescriptor object at 0x000000000000002B>', 'TickDelta': '<built-in function TickDelta>', 'save': '<built-in function save>', 'start': '<built-in function start>', 'Log': '<built-in function Log>', 'backup': '<built-in function backup>', 'TickTime': '<built-in function TickTime>', 'LogCreate': '<built-in function LogCreate>', 'fps': '<built-in function fps>'}, 'property': {'backupFolder': '<property# backupFolder on Server>', 'rootFolder': '<property# rootFolder on Server>', 'compression': '<property# compression on Server>', 'netlog': '<property# netlog on Server>', 'backupFolder1': '<property# backupFolder1 on Server>', 'backupFolder2': '<property# backupFolder2 on Server>', 'backupFolder3': '<property# backupFolder3 on Server>'}, 'field': {'queriesPerSecond': '<field# queriesPerSecond on Server>', 'ipQueriesPerMin': '<field# ipQueriesPerMin on Server>', 'pve': '<field# pve on Server>', 'maxunack': '<field# maxunack on Server>', 'netcachesize': '<field# netcachesize on Server>', 'radiation': '<field# radiation on Server>', 'savecachesize': '<field# savecachesize on Server>', 'seed': '<field# seed on Server>', 'level': '<field# level on Server>', 'planttickscale': '<field# planttickscale on Server>', 'idlekickmode': '<field# idlekickmode on Server>', 'url': '<field# url on Server>', 'globalchat': '<field# globalchat on Server>', 'cycletime': '<field# cycletime on Server>', 'idlekick': '<field# idlekick on Server>', 'respawnresetrange': '<field# respawnresetrange on Server>', 'hostname': '<field# hostname on Server>', 'netcache': '<field# netcache on Server>', 'port': '<field# port on Server>', 'headerimage': '<field# headerimage on Server>', 'salt': '<field# salt on Server>', 'planttick': '<field# planttick on Server>', 'saveinterval': '<field# saveinterval on Server>', 'maxplayers': '<field# maxplayers on Server>', 'description': '<field# description on Server>', 'worldsize': '<field# worldsize on Server>', 'ip': '<field# ip on Server>', 'idlekickadmins': '<field# idlekickadmins on Server>', 'secure': '<field# secure on Server>', 'tickrate': '<field# tickrate on Server>', 'official': '<field# official on Server>', 'itemdespawn': '<field# itemdespawn on Server>', 'updatebatch': '<field# updatebatch on Server>', 'stability': '<field# stability on Server>', 'identity': '<field# identity on Server>', 'entityrate': '<field# entityrate on Server>', 'eac': '<field# eac on Server>'}, 'method': {'MemberwiseClone': "<method 'MemberwiseClone' of 'object' objects>", 'Finalize': "<method 'Finalize' of 'object' objects>"}}, 'Door': {'name': 'Door', 'etc': {'__doc__': '<DocumentationDescriptor object at 0x000000000000002B>'}, 'property': {'OwnerID': '<property# OwnerID on BaseEntity>', 'currentTemperature': '<property# currentTemperature on BaseEntity>', 'isClient': '<property# isClient on BaseNetworkable>', 'isActiveAndEnabled': '<property# isActiveAndEnabled on Behaviour>', 'transform': '<property# transform on Component>', 'limitNetworking': '<property# limitNetworking on BaseNetworkable>', 'isDestroyed': '<property# isDestroyed on BaseNetworkable>', 'useGUILayout': '<property# useGUILayout on MonoBehaviour>', 'radiationLevel': '<property# radiationLevel on BaseEntity>', 'healthFraction': '<property# healthFraction on BaseCombatEntity>', 'gameManager': '<property# gameManager on BaseNetworkable>', 'enabled': '<property# enabled on Behaviour>', 'tag': '<property# tag on Component>', 'hideFlags': '<property# hideFlags on Object>', 'gameObject': '<property# gameObject on Component>', 'health': '<property# health on BaseCombatEntity>', 'isSpawned': '<property# isSpawned on BaseNetworkable>', 'isServer': '<property# isServer on BaseNetworkable>', 'name': '<property# name on Object>'}, 'field': {'canTakeLock': '<field# canTakeLock on Door>', 'closeDelay': '<field# closeDelay on Door>', 'propDirection': '<field# propDirection on BaseCombatEntity>', 'knockEffect': '<field# knockEffect on Door>', 'triggers': '<field# triggers on BaseEntity>'}, 'method': {'SendAsSnapshot': "<method 'SendAsSnapshot' of 'BaseNetworkable' objects>", 'OnPhysicsNeighbourChanged': "<method 'OnPhysicsNeighbourChanged' of 'StabilityEntity' objects>", 'DebugNudge': "<method 'DebugNudge' of 'StabilityEntity' objects>", 'HasSlot': "<method 'HasSlot' of 'Door' objects>", 'CanPickup': "<method 'CanPickup' of 'Door' objects>", 'Finalize': "<method 'Finalize' of 'object' objects>", 'DebugText': "<method 'DebugText' of 'BaseEntity' objects>", '__str__': "<method '__str__' of 'Door' objects>", 'MemberwiseClone': "<method 'MemberwiseClone' of 'object' objects>", 'OnFlagsChanged': "<method 'OnFlagsChanged' of 'Door' objects>", 'ReceiveCollisionMessages': "<method 'ReceiveCollisionMessages' of 'BaseEntity' objects>", 'PostServerLoad': "<method 'PostServerLoad' of 'Door' objects>", 'GetSubscribers': "<method 'GetSubscribers' of 'BaseNetworkable' objects>", 'SendNetworkUpdate_Position': "<method 'SendNetworkUpdate_Position' of 'BaseNetworkable' objects>", 'UpdateDoorAnimationParameters': "<method 'UpdateDoorAnimationParameters' of 'Door' objects>"}}}}
    I'm trying to get the attacker.

    Code:
            private void OnEntityDeath(BaseEntity entity, HitInfo hitInfo)
            {
                if (entity is BasePlayer && hitInfo.Initiator is FireBall) {
                    var fb = (FireBall) hitInfo.Initiator;
                    Puts("{0}", fb.OwnerID);
                }
            }
    
    However always returns 0. I need the attacker BasePlayer or userID.
     
  2. As far as I can tell getting the attacker would be as simple as the following:
    Code:
    private void OnEntityDeath(BaseEntity entity, HitInfo hitInfo)
    {
        if (entity is BasePlayer && hitInfo.WeaponPrefab.LookupShortPrefabName().Equals("flamethrower.entity.prefab"))
        {
            Puts("{0}", hitInfo.Initiator.OwnerID);
        }
    }
     
  3. Still returns 0 :(