示例#1
0
    private IEnumerator BurnRoutine(bool burnShort = false)
    {
        this._isBurning = true;
        this.BurnSFX();
        if (burnShort)
        {
            yield return(YieldPresets.WaitTenSeconds);
        }
        else
        {
            yield return(YieldPresets.WaitFourtySeconds);
        }
        Transform bonePrefab  = BoltNetwork.isRunning ? ItemDatabase.ItemById(this._boneItemId)._pickupPrefabMP : ItemDatabase.ItemById(this._boneItemId)._pickupPrefab;
        Transform skullPrefab = BoltNetwork.isRunning ? ItemDatabase.ItemById(this._skullItemId)._pickupPrefabMP : ItemDatabase.ItemById(this._skullItemId)._pickupPrefab;
        Transform pickup;

        for (int i = 0; i < this._bonesSpawn.Length; i++)
        {
            if (this._bonesSpawn[i])
            {
                pickup          = (BoltNetwork.isRunning ? BoltNetwork.Instantiate(bonePrefab.gameObject).transform : UnityEngine.Object.Instantiate <Transform>(bonePrefab));
                pickup.position = this._bonesSpawn[i].position;
                pickup.rotation = this._bonesSpawn[i].rotation;
            }
        }
        pickup          = (BoltNetwork.isRunning ? BoltNetwork.Instantiate(bonePrefab.gameObject).transform : UnityEngine.Object.Instantiate <Transform>(bonePrefab));
        pickup.position = base.transform.position + Vector3.left;
        pickup.rotation = base.transform.rotation;
        pickup          = (BoltNetwork.isRunning ? BoltNetwork.Instantiate(bonePrefab.gameObject).transform : UnityEngine.Object.Instantiate <Transform>(bonePrefab));
        pickup.position = base.transform.position + Vector3.right;
        pickup.rotation = base.transform.rotation;
        if (this._skullSpawn)
        {
            pickup          = (BoltNetwork.isRunning ? BoltNetwork.Instantiate(skullPrefab.gameObject).transform : UnityEngine.Object.Instantiate <Transform>(skullPrefab));
            pickup.position = this._skullSpawn.position;
            pickup.rotation = this._skullSpawn.rotation;
        }
        FMODCommon.PlayOneshotNetworked("event:/fire/bones_explode", base.transform, FMODCommon.NetworkRole.Any);
        limitSledBlur lsb = base.transform.GetComponentInParent <limitSledBlur>();

        if (lsb && lsb.mh)
        {
            lsb.mh.PickUpBody();
        }
        if (BoltNetwork.isRunning && base.entity.isAttached)
        {
            BoltNetwork.Destroy(base.transform.parent.gameObject);
        }
        else
        {
            UnityEngine.Object.Destroy(base.transform.parent.gameObject);
        }
        yield break;
    }
示例#2
0
    public void dropFromCarry(bool ignoreAnim)
    {
        this.ignoreFarAwayCheck = Time.time + 4f;
        if (this.setupMourningEncounter || this.setupFeedingEncounter)
        {
            this.Tr.position = this.parentGo.transform.position;
        }
        if (this.setupMourningEncounter)
        {
            this.parentGo.SendMessage("doAlignForEncounter", SendMessageOptions.DontRequireReceiver);
        }
        if (BoltNetwork.isRunning)
        {
            base.CancelInvoke("disableControl");
            this.animator.enabled = true;
            this.control.enabled  = true;
            base.Invoke("disableControl", 5f);
        }
        limitSledBlur componentInParent = base.transform.GetComponentInParent <limitSledBlur>();

        if (!componentInParent)
        {
            for (int i = 0; i < this.ragDollParts.Length; i++)
            {
                this.ragDollParts[i].SetActive(true);
            }
        }
        if (componentInParent)
        {
            base.Invoke("disableControl", 2.5f);
        }
        if (!ignoreAnim)
        {
            this.hips.localPosition = new Vector3(0f, 0f, 0f);
            this.animator.CrossFade("Base Layer.deathStealth1", 0f, 0, 0.4f);
        }
        if (BoltNetwork.isClient)
        {
            this.dropTimeOffset = Time.time + 1.1f;
        }
    }