Exemple #1
0
        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));
            }
        }