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(); } } }
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(); } } }
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); }