Esempio n. 1
0
        public void CastIceWind()
        {
            if (hand.interactor.grabbedHandle)
            {
                Item item = hand.interactor.grabbedHandle.item;

                if (item != null)
                {
                    FrozenItem frozenItem = FreezeItem(item, frostVFX, frostNPCVFX);
                    if (frozenItem)
                    {
                        frozenItem.infiniteActive = true;
                    }
                }
            }
            else
            {
                if (!iceWindVFX.isPlaying)
                {
                    iceWindVFX.Play();
                    trigger.collider.enabled = true;
                    iceWindSFX.Play();
                }
            }
        }
Esempio n. 2
0
        public void CollisionDetected(Collider other)
        {
            if (!iceWindVFX.isPlaying)
            {
                return;
            }

            Creature creature = other.GetComponentInParent <Creature>();

            if (creature)
            {
                TryFreezeCreature(creature, true, 0f, frostNPCVFX, IceWindLevelModule.addParticlesToNPC);
                return;
            }

            Item item = other.GetComponentInParent <Item>();

            if (item)
            {
                FrozenItem frozenItem = item.gameObject.GetComponent <FrozenItem>();

                if (frozenItem)
                {
                    if (frozenItem.active)
                    {
                        frozenItem.ResetTimer();
                    }
                    else
                    {
                        frozenItem.Activate();
                        frozenItem.infiniteActive = false;
                    }
                }
                else
                {
                    frozenItem = FreezeItem(item, frostVFX, frostNPCVFX);
                    frozenItem.infiniteActive = false;
                    frozenItem.DeactivateTimer();
                }
            }
        }
Esempio n. 3
0
        public FrozenItem FreezeItem(Item item, ParticleSystem displayPS, ParticleSystem applyPS)
        {
            FrozenItem frozenItem = item.gameObject.GetComponent <FrozenItem>();

            if (frozenItem != null)
            {
                if (frozenItem.active)
                {
                    if (!frozenItem.itemJustFrozen)
                    {
                        frozenItem.Deactivate();
                    }
                }
                else
                {
                    if (!frozenItem.itemJustFrozen)
                    {
                        frozenItem.Activate();
                    }
                }
                return(frozenItem);
            }



            FrozenItem frozenIt = item.gameObject.AddComponent <FrozenItem>();

            frozenIt.addParticles = IceWindLevelModule.addParticlesToNPC;

            frozenIt.frozenVFXs = new List <ParticleSystem>();


            if (item.definition.colliderGroups.Count == 0)
            {
                return(frozenIt);
            }


            foreach (ColliderGroup colliderGroup in item.definition.colliderGroups)
            {
                if (colliderGroup.imbueMagic)
                {
                    if (colliderGroup.colliders.Count == 0)
                    {
                        continue;
                    }

                    foreach (Collider col in colliderGroup.colliders)
                    {
                        ParticleSystem ps = AddParticlesToCollider(col, displayPS);

                        if (ps != null)
                        {
                            if (frozenIt.freezeVFX == null)
                            {
                                frozenIt.freezeVFX = applyPS;
                            }

                            frozenIt.frozenVFXs.Add(ps);
                        }
                    }
                }
            }

            return(frozenIt);
        }