Example #1
0
    public float PreStep(Shooter p_shooter)
    {
        if (!m_active)
        {
            return(-1);
        }

        if (m_shotsFired == m_shots)
        {
            if (AddLoop(p_shooter))
            {
                return(-1);
            }
        }

        if (!p_shooter.CanLoop(this))
        {
            return(Time.time - (m_lastLoopTime + m_patternCooldown));
        }

        if (!m_instant && !p_shooter.ConsumeMana(this))
        {
            p_shooter.StopShooting(this);
            return(-1);
        }

        Step(p_shooter);

        m_shotsFired++;

        return(m_stepDelay);
    }
Example #2
0
    public float Instant(Shooter p_shooter)
    {
        if (!p_shooter.ConsumeMana(this))
        {
            p_shooter.StopShooting(this);
            return(-1);
        }

        for (int i = 0; i < m_shots; ++i)
        {
            PreStep(p_shooter);
        }

        if (m_shotsFired == m_shots)
        {
            AddLoop(p_shooter);
        }
        if (!p_shooter.CanLoop(this))
        {
            return(Time.time - (m_lastLoopTime + m_patternCooldown));
        }

        return(m_patternCooldown);
    }