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); }
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); }