protected void Start() { foreach (EffectData effectData in this.GetComponent <Item>().effects) { if (effectData is EffectShock) { effectShock = effectData as EffectShock; break; } } }
private void Lightning() { foreach (Creature npc in Creature.list) { if (npc != Creature.player && npc.state != Creature.State.Dead) { Vector3 targetPosition = npc.ragdoll.GetPart(HumanBodyBones.Chest).transf.position; Vector3 dir = (contactPoint - targetPosition).normalized; RaycastHit raycastHit; if (Physics.Raycast(contactPoint, dir, out raycastHit, module.hitRadius) && raycastHit.collider.tag != "Player") { Debug.Log(raycastHit.distance); canActivate = false; isActivated = true; LightningFX(targetPosition, npc); if (!npc.ragdoll.effects.Exists(e => e.id.Equals("EscrimaShock"))) { EffectShock effectShock = (EffectShock)npc.ragdoll.effects.Find(e => e.id.Equals("Shock")); effectShock.id = "EscrimaShock"; effectShock.minConsecutiveHit = 0; npc.ragdoll.effects.Add(effectShock); } CollisionStruct damager = CreateEnemyDamager(raycastHit.collider, dir, targetPosition, raycastHit.normal); npc.health.Damage(ref damager); } } } if (isActivated) { beamsSound.Play(); Invoke("StopLightning", module.duration); } }