public IEnumerator AsyncPlayerHit() { RaycastHit[] hits = Physics.SphereCastAll(transform.position, radius, Vector3.one, radius); for (int i = 0; i < hits.Length; i++) { if (hits[i].transform.CompareTag("enemyCollide")) { EnemyProgression ep = hits[i].transform.gameObject.GetComponentInParent <EnemyProgression>(); if (ep != null) { if (isArcane) { ep.HitMagic(dmg * 2); ep.Slow(141, 0.0f, 2); ep.DmgTakenDebuff(140, 1.65f, 10); ep.FireDebuff(140, dmg / 6, 25); } else { ep.HitMagic(dmg / 2); ep.Slow(140, 0.6f, 7); ep.SendMessage("Burn", SendMessageOptions.DontRequireReceiver); ep.FireDebuff(140, dmg / 10, 25); } yield return(null); } else { hits[i].transform.SendMessageUpwards("HitMagic", dmg, SendMessageOptions.DontRequireReceiver); yield return(null); } } } }
private void OnTriggerEnter(Collider other) { if (!setupComplete) { } //if (other.gameObject.CompareTag("PlayerNet")) //{ // if (!ModSettings.FriendlyFire) // { // return; // } // BoltEntity component3 = other.GetComponent<BoltEntity>(); // if (component3 != null && component3.networkId.PackedValue != casterID) // { // if (BoltNetwork.isRunning) // { // ModdedPlayer.instance.DoOnHit(); // ModdedPlayer.instance.DoMeleeOnHit(); // HitPlayer hitPlayer = HitPlayer.Create(component3, EntityTargets.Everyone); // hitPlayer.damage = Mathf.FloorToInt(Damage); // hitPlayer.Send(); // return; // } // } //} if (other.gameObject.CompareTag("enemyCollide")) { if (!GameSetup.IsMpClient) { EnemyProgression prog = other.GetComponentInParent <EnemyProgression>(); if (prog != null) { DamageMath.DamageClamp(Damage, out int d, out int a); for (int i = 0; i < a; i++) { prog.HitMagic(d); } float slowAmount = 0.35f; if (GiveDoubleSlow) { slowAmount *= 2; } prog.Slow(41, 1 - slowAmount, DebuffDuration); if (GiveDmgDebuff) { prog.DmgTakenDebuff(41, 1.15f, DebuffDuration); } } } } }
public static void HostAction(Vector3 pos, float dist, float slowMultipier, float duration, float damage) { RaycastHit[] hits = Physics.SphereCastAll(pos, dist, Vector3.one, -10); for (int i = 0; i < hits.Length; i++) { if (EnemyManager.enemyByTransform.ContainsKey(hits[i].transform.root)) { EnemyProgression prog = EnemyManager.enemyByTransform[hits[i].transform.root]; if (prog == null) { continue; } prog.HitMagic(damage); prog.Slow(20, slowMultipier, duration); prog.Slow(21, 0, 0.65f); } } }
public static void HostAction(Vector3 pos, float dist, float slowMultipier, float duration, float damage) { RaycastHit[] hits = Physics.SphereCastAll(pos, dist, Vector3.one, -10); DamageMath.DamageClamp(damage, out int dmg, out int rep); for (int i = 0; i < hits.Length; i++) { if (hits[i].transform.CompareTag("enemyCollide")) { EnemyProgression prog = hits[i].transform.gameObject.GetComponentInParent <EnemyProgression>(); prog?.Slow(20, slowMultipier, duration); for (int a = 0; a < rep; a++) { prog?.HitMagic(dmg); } if (prog == null) { hits[i].transform.SendMessageUpwards("HitMagic", dmg, SendMessageOptions.DontRequireReceiver); } } } }
private void OnTriggerEnter(Collider other) { if (!setupComplete) { } if (other.gameObject.CompareTag("enemyCollide")) { if (!GameSetup.IsMpClient) { EnemyProgression prog = other.GetComponentInParent <EnemyProgression>(); DamageMath.DamageClamp(Damage, out int d, out int a); if (prog != null) { for (int i = 0; i < a; i++) { prog.HitMagic(d); } float slowAmount = 0.45f; if (GiveDoubleSlow) { slowAmount *= 2; } prog.Slow(41, 1 - slowAmount, DebuffDuration); if (GiveDmgDebuff) { prog.DmgTakenDebuff(41, 1.25f, DebuffDuration); } } else { other.SendMessageUpwards("HitMagic", d, SendMessageOptions.DontRequireReceiver); } } } }
IEnumerator DealDamage() { float dmg = 5 + ModdedPlayer.Stats.spellFlatDmg / 3f; dmg *= ModdedPlayer.Stats.SpellDamageMult; float crit = ModdedPlayer.Stats.RandomCritDamage; dmg *= crit; dmg *= radius / 3.33333f; dmg *= ModdedPlayer.Stats.spell_snowstormDamageMult; var hits = Physics.SphereCastAll(LocalPlayer.Transform.position, radius, Vector3.one, radius, -9); int onHitEffectProcs = 0; if (GameSetup.IsMpClient) { for (int i = 0; i < hits.Length; i++) { if (hits[i].transform.CompareTag("enemyCollide")) { var entity = hits[i].transform.GetComponentInParent <BoltEntity>(); if (entity != null) { var phe = PlayerHitEnemy.Create(GlobalTargets.OnlyServer); phe.Target = entity; phe.getAttackerType = DamageMath.SILENTattackerTypeMagic; phe.Hit = DamageMath.GetSendableDamage(dmg); phe.Send(); if (onHitEffectProcs < 6) { { var hitContext = new COTFEvents.HitOtherParams(dmg, crit != 1, entity, this); COTFEvents.Instance.OnHitSpell.Invoke(hitContext); COTFEvents.Instance.OnHitEnemy.Invoke(hitContext); } ModdedPlayer.instance.OnHit(); onHitEffectProcs++; } yield return(null); EnemyProgression.ReduceArmor(entity, Mathf.CeilToInt(dmg / 100f)); EnemyProgression.Slow(entity, 144, 0.2f, 0.95f); yield return(null); if (ModdedPlayer.Stats.spell_snowstormPullEnemiesIn) { if ((hits[i].point - LocalPlayer.Transform.position).sqrMagnitude > 4) { EnemyProgression.AddKnockbackByDistance(entity.networkId.PackedValue, (LocalPlayer.Transform.position - hits[i].transform.position).normalized, 1); } } } } } } else { for (int i = 0; i < hits.Length; i++) { if (EnemyManager.enemyByTransform.ContainsKey(hits[i].transform.root)) { EnemyProgression prog = EnemyManager.enemyByTransform[hits[i].transform.root]; if (prog == null) { continue; } prog.HitMagic(dmg); prog.Slow(144, 0.2f, 0.85f); prog.ReduceArmor(Mathf.CeilToInt(dmg / 100f)); if (onHitEffectProcs < 6) { ModdedPlayer.instance.OnHit(); onHitEffectProcs++; } { var hitContext = new COTFEvents.HitOtherParams(dmg, crit != 1, prog, this); COTFEvents.Instance.OnHitSpell.Invoke(hitContext); COTFEvents.Instance.OnHitEnemy.Invoke(hitContext); } if (ModdedPlayer.Stats.spell_snowstormPullEnemiesIn) { if ((hits[i].point - LocalPlayer.Transform.position).sqrMagnitude > 4) { prog.AddKnockbackByDistance((LocalPlayer.Transform.position - hits[i].transform.position).normalized, 1); } } yield return(null); } } } }