private static void Prefix(bool tryThrow, SpellTelekinesis __instance)
            {
                if (__instance.catchedHandle == null)
                {
                    return;
                }
                var item = __instance.catchedHandle.item;

                if (item != null)
                {
                    var customJointItem = item.gameObject.GetComponent <CustomJointItem>();
                    if (customJointItem != null)
                    {
                        Object.Destroy(customJointItem);
                    }

                    BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
                                             | BindingFlags.Static;
                    FieldInfo         field = __instance.GetType().GetField("joint", bindFlags);
                    ConfigurableJoint joint = field.GetValue(__instance) as ConfigurableJoint;

                    if (__instance.spinMode)
                    {
                        customJointItem = item.gameObject.AddComponent <CustomJointItem>();

                        customJointItem.joint = Object.Instantiate(joint);

                        _catchedHandle = __instance.catchedHandle;
                    }
                }
            }
Ejemplo n.º 2
0
            private static void Postfix(SpellTelekinesis spellTelekinesis, HandleRagdoll __instance)
            {
                try
                {
                    var ragdollPart = __instance.ragdollPart;
                    if (spellTelekinesis.spellCaster.spellInstance.id == "DarkChains")
                    {
                        try
                        {
                            if (ragdollPart.ragdoll.creature.gameObject.GetComponent <FrozenCreature>() != null)
                            {
                                ragdollPart.characterJoint.breakForce = 20000;
                            }
                        }
                        catch (Exception exception)
                        {
                            Debug.Log(exception.Message);
                        }
                    }

                    try
                    {
                        Object.Destroy(ragdollPart.gameObject.GetComponent <FrozenRagdollPart>());
                    }
                    catch (Exception exception)
                    {
                        Debug.Log(exception.Message);
                    }
                }
                catch (Exception exception)
                {
                    __instance.GetComponentInParent <Rigidbody>().isKinematic = false;
                    Debug.Log(exception.Message);
                }
            }
Ejemplo n.º 3
0
 private void Item_OnTelekinesisReleaseEvent(Handle handle, SpellTelekinesis teleGrabber)
 {
     vfx.DeactivateVfx();
     OnFinishedEvent();
     OnFinishedEvent -= ((SpellCastWaterBend)mana.casterLeft.spellInstance).SpellCastWaterBend_OnFinishedEvent;
     OnFinishedEvent -= ((SpellCastWaterBend)mana.casterRight.spellInstance).SpellCastWaterBend_OnFinishedEvent;
     isCasting        = false;
 }
Ejemplo n.º 4
0
        private void Item_OnTelekinesisReleaseEvent(Handle handle, SpellTelekinesis teleGrabber)
        {
            handle.item.OnTelekinesisReleaseEvent -= Item_OnTelekinesisReleaseEvent;
            vfx.ResetVfx(0f);

            if (handle.item.isPooled)
            {
                handle.item.Despawn();
            }
        }
            private static void Postfix(SpellTelekinesis __instance)
            {
                if (__instance.catchedHandle == null)
                {
                    return;
                }
                var item = __instance.catchedHandle.item;

                if (__instance.catchedHandle.item != null)
                {
                    var customJointItem = item.gameObject.GetComponent <CustomJointItem>();
                    if (customJointItem != null)
                    {
                        Object.Destroy(customJointItem);
                    }
                }
            }
Ejemplo n.º 6
0
            private static void Postfix(SpellTelekinesis spellTelekinesis, ref bool throwing,
                                        HandleRagdoll __instance)
            {
                try
                {
                    if (!throwing && spellTelekinesis.spellCaster.spellInstance.id == "DarkChains")
                    {
                        var ragdollPart = __instance.ragdollPart;
                        ragdollPart.ResetCharJointBreakForce();
                        if (ragdollPart.gameObject.GetComponent <FrozenRagdollPart>() == null)
                        {
                            var frozenRagdollPart = ragdollPart.gameObject.AddComponent <FrozenRagdollPart>();

                            frozenRagdollPart.Init(__instance);
                        }

                        try
                        {
                            var creature = ragdollPart.ragdoll.creature;
                            if (creature.gameObject.GetComponent <FrozenCreature>() == null)
                            {
                                creature.gameObject.AddComponent <FrozenCreature>();
                            }
                        }
                        catch (Exception exception)
                        {
                            Debug.Log(exception.Message);
                        }
                    }
                }
                catch (Exception exception)
                {
                    if (!throwing && spellTelekinesis.spellCaster.spellInstance.id == "DarkChains")
                    {
                        __instance.GetComponentInParent <Rigidbody>().isKinematic = true;
                    }

                    Debug.Log(exception.Message);
                }
            }
 private static void Postfix(bool tryThrow, SpellTelekinesis __instance)
 {
     if (_catchedHandle != null)
     {
         foreach (CollisionHandler collisionHandler in _catchedHandle.item.collisionHandlers)
         {
             collisionHandler.SetPhysicModifier(_catchedHandle, 3, __instance.gravity ? 1f : 0.0f, 1f,
                                                __instance.drag, __instance.angularDrag);
         }
         _catchedHandle.item.rb.sleepThreshold = 0.0f;
         _catchedHandle.item.StopThrowing();
         _catchedHandle.item.StopFlying();
         _catchedHandle.item.ResetColliderCollision();
         _catchedHandle.item.ResetRagdollCollision();
         _catchedHandle.item.ResetObjectCollision();
         _catchedHandle.item.SetColliderAndMeshLayer(GameManager.GetLayer(LayerName.MovingObject));
         _catchedHandle.item.rb.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
         _catchedHandle.item.SetCenterOfMass(_catchedHandle.transform.localPosition +
                                             new Vector3(0.0f, _catchedHandle.GetDefaultAxisLocalPosition(),
                                                         0.0f));
         _catchedHandle.item.isTelekinesisGrabbed = true;
     }
 }
Ejemplo n.º 8
0
        void ValidateLevels()
        {
            Player.currentCreature.maxHealth    = 16 + ((StatManager.combatHealthLvl * 1f) - 1f) * statBoosters.Values.Sum();
            Player.currentCreature.mana.maxMana = 50 + ((StatManager.magicEfficiencyLvl * 2) - 2) * statBoosters.Values.Sum();
            Player.currentCreature.mana.chargeSpeedMultiplier = 1 + ((StatManager.magicEfficiencyLvl * 0.1f) - 0.1f) * statBoosters.Values.Sum();
            Player.currentCreature.mana.maxFocus = 20 + ((StatManager.miscFocusLvl * 2) - 2) * statBoosters.Values.Sum();
            combatDamage = 1f + ((StatManager.combatStrengthLvl * 0.5f) - 0.5f) * statBoosters.Values.Sum();
            magicDamage  = ((StatManager.magicDamageLvl * 2) - 2) * statBoosters.Values.Sum();
            float speedIncrease = Mathf.Min(0.7f + ((StatManager.physicalSpeedLvl * 0.08f) - 0.08f) * statBoosters.Values.Sum(), 3.5f);

            Player.local.locomotion.runSpeedMultiplier = (speedIncrease / 1.2f) * statBoosters.Values.Sum();
            Player.local.locomotion.speedMultiplier    = Mathf.Min(speedIncrease * 0.8f, 1f) * statBoosters.Values.Sum();
            float jumpIncrease = Mathf.Min(0.5f + ((StatManager.physicalJumpLvl * 0.1f) * statBoosters.Values.Sum() - 0.1f), 1);

            Player.local.locomotion.jumpMaxDuration            = jumpIncrease / 3.5f * statBoosters.Values.Sum();
            Player.local.locomotion.jumpGroundForce            = jumpIncrease / 1.7f * statBoosters.Values.Sum();
            Player.local.locomotion.airSpeed                   = jumpIncrease;
            Player.local.locomotion.jumpClimbMultiplier        = Mathf.Min(jumpIncrease / 2, 1);
            Player.currentCreature.mana.manaRegen              = 4 + ((StatManager.magicEfficiencyLvl * 0.5f) - 0.5f) * statBoosters.Values.Sum();
            GameManager.options.handlePositionDamperMultiplier = Mathf.RoundToInt(20 + ((StatManager.combatStrengthLvl * 1f) - 1f) * statBoosters.Values.Sum());
            GameManager.options.handlePositionSpringMultiplier = Mathf.RoundToInt(20 + ((StatManager.combatStrengthLvl * 1f) - 1f) * statBoosters.Values.Sum());
            GameManager.options.handleRotationDamperMultiplier = Mathf.RoundToInt(20 + ((StatManager.combatStrengthLvl * 1f) - 1f) * statBoosters.Values.Sum());
            GameManager.options.handleRotationSpringMultiplier = Mathf.RoundToInt(20 + ((StatManager.combatStrengthLvl * 1f) - 1f) * statBoosters.Values.Sum());
            if (StatManager.combatStrengthLvl >= 20)
            {
                GameManager.options.handleForceXYZ = true;
            }
            else
            {
                GameManager.options.handleForceXYZ = false;
            }
            GameManager.options.Apply();
            CreatureData maleData   = Catalog.GetData <CreatureData>("PlayerDefaultMale");
            CreatureData femaleData = Catalog.GetData <CreatureData>("PlayerDefaultFemale");

            maleData.forcePositionSpringDamper = new Vector2(3750 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum(), 100);
            maleData.forceRotationSpringDamper = new Vector2(750 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum(), 50);
            maleData.climbingForceMaxPosition  = 1000 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum();
            maleData.climbingForceMaxRotation  = 100 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum();
            maleData.gripForceMaxPosition      = 750 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum();
            maleData.gripForceMaxRotation      = 75 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum();
            maleData.health = Convert.ToInt16(16 + ((StatManager.combatHealthLvl * 1) - 1f) * statBoosters.Values.Sum());
            maleData.focus  = 20 + ((StatManager.miscFocusLvl * 2) - 2) * statBoosters.Values.Sum();
            femaleData.forcePositionSpringDamper = new Vector2(3750 + (combatDamage * StatManager.combatStrengthLvl), 100) * statBoosters.Values.Sum();
            femaleData.forceRotationSpringDamper = new Vector2(750 + (combatDamage * StatManager.combatStrengthLvl), 50) * statBoosters.Values.Sum();
            femaleData.climbingForceMaxPosition  = 1000 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum();
            femaleData.climbingForceMaxRotation  = 100 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum();
            femaleData.gripForceMaxPosition      = 750 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum();
            femaleData.gripForceMaxRotation      = 75 + (combatDamage * StatManager.combatStrengthLvl) * statBoosters.Values.Sum();
            femaleData.health = Convert.ToInt16(16 + ((StatManager.combatHealthLvl * 1f) - 1f) * statBoosters.Values.Sum());
            femaleData.focus  = 20 + ((StatManager.miscFocusLvl * 2) - 2) * statBoosters.Values.Sum();
            SpellTelekinesis tk = Catalog.GetData <SpellTelekinesis>("Telekinesis");

            tk.maxAngle                   = 40 + ((StatManager.magicEfficiencyLvl * 1) - 1);
            tk.throwMultiplier            = 2 + ((StatManager.magicEfficiencyLvl * .3f) - .3f);
            tk.manaConsumption            = 5 - ((StatManager.magicEfficiencyLvl * .1f) - .1f);
            tk.maxVelocity                = 5 + ((StatManager.magicEfficiencyLvl * 0.25f) - 0.25f);
            tk.pushDefaultForce           = 20 + ((StatManager.magicEfficiencyLvl * 1) - 1);
            tk.pushRagdollForce           = 30 + ((StatManager.magicEfficiencyLvl * 1) - 1);
            tk.maxCatchDistance           = 6 + ((StatManager.magicEfficiencyLvl * .5f) - .5f);
            tk.pushRagdollOtherPartsForce = 8 + ((StatManager.magicEfficiencyLvl * 1f) - 1f);
            tk.pullAndRepelMaxSpeed       = 8 + ((StatManager.magicEfficiencyLvl * .5f) - .5f);
            tk.repelMaxDistance           = 12 + ((StatManager.magicEfficiencyLvl * .5f) - .5f);
            SpellCastGravity gravity = Catalog.GetData <SpellCastGravity>("Gravity");

            gravity.manaConsumption  = 20 - ((StatManager.magicEfficiencyLvl * 1f) - 1f);
            gravity.halfSphereRadius = 2 + ((StatManager.magicEfficiencyLvl * .03f) - .03f);
            gravity.pushMaxForce     = 8 + ((StatManager.magicEfficiencyLvl * 0.2f) - 0.2f);
            SpellMergeGravity gravityMerge = Catalog.GetData <SpellMergeGravity>("GravityMerge");

            gravityMerge.mergingLiftRadius = 5 + ((StatManager.magicEfficiencyLvl * .1f) - .1f);
            gravityMerge.bubbleDuration    = 15 + ((StatManager.magicEfficiencyLvl * .4f) - .4f);
            if (Player.currentCreature.currentHealth > Player.currentCreature.maxHealth)
            {
                Player.currentCreature.currentHealth = Player.currentCreature.maxHealth;
            }
        }
Ejemplo n.º 9
0
 public void OnTelekinesisGrabEvent(Handle handle, SpellTelekinesis teleGrabber)
 {
     telekinesis = teleGrabber;
 }
Ejemplo n.º 10
0
 public void OnTelekinesisReleaseEvent(Handle handle, SpellTelekinesis teleGrabber)
 {
     telekinesis = null;
 }
Ejemplo n.º 11
0
 private void Item_OnTelekinesisGrabEvent(Handle handle, SpellTelekinesis teleGrabber)
 {
     spawnTime = Time.time;
 }
Ejemplo n.º 12
0
 private void ItemOnOnTelekinesisGrabEvent(Handle handle, SpellTelekinesis telegrabber)
 {
     Destroy(this);
 }