Beispiel #1
0
    private void FixedUpdate()
    {
        if ((this.phase == 2 || this.phase == 1) && this.leviMode)
        {
            this.spiralcount++;
            if (this.spiralcount >= 60)
            {
                this.isdestroying = true;
                this.RemoveMe();
                return;
            }
        }
        if (IN_GAME_MAIN_CAMERA.GameType == GameType.Single || BasePV.IsMine)
        {
            if (phase != 0)
            {
                return;
            }
            CheckTitan();
            baseGT.position += (this.velocity * 50f + this.velocity2) * Time.fixedDeltaTime;
            bool flag = false;
            if (Physics.Linecast(nodes.Count > 1 ? nodes[this.nodes.Count - 2] : nodes[this.nodes.Count - 1], baseGT.position, out RaycastHit raycastHit, Layers.EnemyGroundNetwork.value))
            {
                bool      flag3 = true;
                Transform tf    = raycastHit.collider.transform;
                switch (tf.gameObject.layer)
                {
                case Layers.EnemyBoxN:
                    if (IN_GAME_MAIN_CAMERA.GameType == GameType.MultiPlayer)
                    {
                        BasePV.RPC("tieMeToOBJ", PhotonTargets.Others, new object[] { raycastHit.collider.transform.root.gameObject.GetPhotonView().viewID });
                    }
                    master.LastHook = this;
                    baseT.parent    = tf;
                    break;

                case Layers.GroundN:
                    master.LastHook = null;
                    if (FengGameManagerMKII.Level.Name.StartsWith("Custom-Anarchy"))
                    {
                        if (tf.gameObject.GetComponent <Anarchy.Custom.Scripts.ClippingObjectComponent>() != null)
                        {
                            baseT.parent = tf;
                        }
                        if (tf.gameObject.GetComponent <Anarchy.Custom.Scripts.TrapComponent>() != null)
                        {
                            isOnTrap = true;
                            var trap = tf.gameObject.GetComponent <Anarchy.Custom.Scripts.TrapComponent>();
                            if (trap.Type == Anarchy.Custom.Scripts.TrapType.Both || trap.Type == Anarchy.Custom.Scripts.TrapType.GasUsage)
                            {
                                master.GasMultiplier = trap.GasUsageMultiplier;
                            }
                            if (trap.Type == Anarchy.Custom.Scripts.TrapType.Both || trap.Type == Anarchy.Custom.Scripts.TrapType.Kill)
                            {
                                trapKillTimer = trap.KillTime;
                            }
                        }
                    }
                    break;

                case Layers.NetworkObjectN:
                    if (!tf.gameObject.CompareTag("Player") || leviMode)
                    {
                        break;
                    }

                    if (IN_GAME_MAIN_CAMERA.GameType == GameType.MultiPlayer)
                    {
                        BasePV.RPC("tieMeToOBJ", PhotonTargets.Others, new object[] { tf.root.gameObject.GetPhotonView().viewID });
                    }
                    master.HookToHuman(tf.root.gameObject, baseT.position);
                    baseT.parent    = tf;
                    master.LastHook = null;
                    break;

                default:
                    flag3 = false;
                    break;
                }
                if (flag3)
                {
                    if (master.State != HeroState.Grab)
                    {
                        master.Launch(raycastHit.point, this.left, this.leviMode);
                    }
                    baseT.position = raycastHit.point;
                    if (this.phase != 2)
                    {
                        this.phase = 1;
                        if (IN_GAME_MAIN_CAMERA.GameType == GameType.MultiPlayer)
                        {
                            BasePV.RPC("setPhase", PhotonTargets.Others, new object[] { 1 });
                            BasePV.RPC("tieMeTo", PhotonTargets.Others, new object[] { baseT.position });
                        }
                        if (this.leviMode)
                        {
                            this.GetSpiral(master.baseT.position, master.baseT.rotation.eulerAngles);
                        }
                        flag = true;
                    }
                }
            }
            this.nodes.Add(new Vector3(baseGT.position.x, baseGT.position.y, baseGT.position.z));
            if (flag)
            {
                return;
            }

            this.killTime2 += Time.fixedDeltaTime;
            if (this.killTime2 > 0.8f)
            {
                this.phase = 4;
                if (IN_GAME_MAIN_CAMERA.GameType == GameType.MultiPlayer)
                {
                    BasePV.RPC("setPhase", PhotonTargets.Others, new object[] { 4 });
                }
                return;
            }
            return;
        }
        if (this.phase == 0)
        {
            baseGT.position += (this.velocity * 50f + this.velocity2) * Time.fixedDeltaTime;
            nodes.Add(new Vector3(baseGT.position.x, baseGT.position.y, baseGT.position.z));
        }
    }