public void CauseAoeDamage(BigDouble damage, Vector3 pos, float areaSize) { int num = Physics.OverlapSphereNonAlloc(pos, areaSize, m_aoeBuffer, m_raycastMask); List <BlockController> list = new List <BlockController>(); for (int i = 0; i < num; i++) { BlockController component = m_aoeBuffer[i].GetComponent <BlockController>(); if (component != null) { list.Add(component); } } if (list.Count == 0) { BossBlockController value = BossBlock.Value; if (!(value == null)) { value.CauseDamage(damage); } } else { SceneLoader.Instance.StartCoroutine(StaggerAoeDamage(list, damage)); } }
private void CauseDamageToClosestBlockOrBoss(BigDouble damage, Vector3 pos) { BlockController closestBlock = GetClosestBlock(pos); if (closestBlock == null) { BossBlockController value = BossBlock.Value; if (!(value == null)) { value.CauseDamage(damage / 2L); } } else { Singleton <ChunkRunner> .Instance.overflowChunk = true; closestBlock.CauseDamageAndOverflowExcess(damage, PersistentSingleton <GameSettings> .Instance.OverflowDamageTickAmount); } }
protected IEnumerator ExplodeRoutine() { yield return(new WaitForSeconds(m_delay)); foreach (BlockController item in m_blocksInArea) { item.CauseDamage(Singleton <TapBoostRunner> .Instance.DynamiteCurrentDamage.Value); } if (m_boss != null) { m_boss.CauseDamage(Singleton <TapBoostRunner> .Instance.DynamiteCurrentDamage.Value); } m_blocksInArea.Clear(); Vector3 cam = BindingManager.Instance.CameraCtrl.transform.position; Singleton <ChunkRunner> .Instance.CauseBlastWave(cam.x0z(), 5f); base.gameObject.SetActive(value: false); m_explosion.SetActive(value: true); }