public static void CheckTreeHatred(GameObject treeLogObject) { TreeLog treeLog = treeLogObject.GetComponent <TreeLog>(); Player player = Player.GetClosestPlayer(treeLog.transform.position, 20f); if (!player) { return; } TreeHatredLevel level = GetTreeHatredLevel(player); if (level != null) { Debug.Log(string.Format("A{1} {0} tree is seeking vengence!", level.description, "aeiouAEIOU".IndexOf(level.description) >= 0 ? "n" : "")); VengefulTree vengefulTree = treeLogObject.AddComponent <VengefulTree>(); vengefulTree.player = player; // Give it some fat 5x loot treeLog.m_dropWhenDestroyed.m_dropMin *= 5; treeLog.m_dropWhenDestroyed.m_dropMax *= 5; // Don't let it get stuck in the stump, move it up a bit treeLog.transform.position = treeLog.transform.position + .5f * Vector3.up; // Drop the velocity applied by the axe hit Rigidbody rigidbody = treeLog.GetComponent <Rigidbody>(); rigidbody.ResetInertiaTensor(); vengefulTree.StartCoroutine(vengefulTree.SeekVengence(forceMultiplier * level.force, level.duration)); } }