示例#1
0
    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));
        }
    }
示例#2
0
    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);
        }
    }
示例#3
0
    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);
    }