@name Point Tracer failcake
@outputs Current X:vector
@persist [RP1 RP2 RP3 RP4 RP5 RP6 RP7 RP8 RP9 RP10 RP11 RP12 RP13 RP14 RP15 RP16 RP17 RP18 RP19 RP20 RP21 RP22 RP23 RP24 RP25 RP26 RP27 RP28 RP29 RP30 RP31 RP32 RP33 RP34 RP35 RP36  RP37 RP38 RP39 RP40 RP41 RP42 RP43 RP44 RP45 RP46 RP47 RP48 RP49 RP50 RP51 RP52 RP53 RP54  RP55 RP56 RP57 RP58 RP59 RP60 RN1 RN2 RN3 RN4 RN5 RN6 RN7 RN8 RN9 RN10 RN11 RN12 RN13 RN14 RN15 RN16  RN17 RN18 RN19 RN20 RN21 RN22 RN23 RN24 RN25 RN26 RN27 RN28 RN29 RN30 RN31 RN32 RN33 RN34 RN35 RN36 RN37  RN38 RN39 RN40 RN41 RN42 RN43 RN44 RN45 RN46 RN47 RN48 RN49 RN50 RN51 RN52 RN53 RN54 RN55 RN56 RN57 RN58 RN59 RN60]:vector I Interval
runOnTick(1)
timer("Spawn", Interval)
    
    
    ###################################################
    # <Settings>
    E = entity()
    O = owner()
    rangerFilter(E)
    # <Variables>
    Interval = 80          #WARNING: Having this too low will cause some holos to not be spawned.
    Count = 60             #Currently supports 60
    Ops = 5000             #Max operations per second (You should keep this at 5000, if you want it slower change the speed)
    # </Variables>
    # </Settings>
    ###################################################
    
    if (I < Count)
    {
        if (clk("Spawn"))
        {
            I++
            holoCreate(I)
            print("Creating Holograms (" + I + " of " + Count + " - " + I * 100 / Count + "%)")
        }
    }
    while (opcounter() < Ops)
    {
            if (Count < 1) { break }, Direction1 = (E:up() - 2 * (RN1:dot(E:up()) * RN1)) , Ranger1 = rangerOffset(999999999, E:pos(), E:up()) , RangerDist1 = Ranger1:distance() , RP1 = Ranger1:position() , RN1 = Ranger1:hitNormal() , RangerEnt1 = Ranger1:entity() , holoAng(1, E:angles()) , holoScaleUnits(1, vec(1.5, 1.5, RangerDist1 * 1.03)) , holoPos(1, (E:pos() + RP1) / 2), if (Count < 2) { break } , Direction2 = (Direction1 - 2 * (RN2:dot(Direction1) * RN2)) , Ranger2 = rangerOffset(999999999, RP1, Direction1) , RangerDist2 = Ranger2:distance() , RP2 = Ranger2:position() , RN2 = Ranger2:hitNormal() , RangerEnt2 = Ranger2:entity() , holoAng(2, (RP1 - RP2):toAngle()) , holoScaleUnits(2, vec(RangerDist2 * 1.03, 1.5, 1.5)) , holoPos(2, (RP1 + RP2) / 2), if (Count < 3) { break } , Direction3 = (Direction2 - 2 * (RN3:dot(Direction2) * RN3)) , Ranger3 = rangerOffset(999999999, RP2, Direction2) , RangerDist3 = Ranger3:distance() , RP3 = Ranger3:position() , RN3 = Ranger3:hitNormal() , RangerEnt3 = Ranger3:entity() , holoAng(3, (RP2 - RP3):toAngle()) , holoScaleUnits(3, vec(RangerDist3 * 1.03, 1.5, 1.5)) , holoPos(3, (RP2 + RP3) / 2), if (Count < 4) { break } , Direction4 = (Direction3 - 2 * (RN4:dot(Direction3) * RN4)) , Ranger4 = rangerOffset(999999999, RP3, Direction3) , RangerDist4 = Ranger4:distance() , RP4 = Ranger4:position() , RN4 = Ranger4:hitNormal() , RangerEnt4 = Ranger4:entity() , holoAng(4, (RP3 - RP4):toAngle()) , holoScaleUnits(4, vec(RangerDist4 * 1.03, 1.5, 1.5)) , holoPos(4, (RP3 + RP4) / 2), if (Count < 5) { break } , Direction5 = (Direction4 - 2 * (RN5:dot(Direction4) * RN5)) , Ranger5 = rangerOffset(999999999, RP4, Direction4) , RangerDist5 = Ranger5:distance() , RP5 = Ranger5:position() , RN5 = Ranger5:hitNormal() , RangerEnt5 = Ranger5:entity() , holoAng(5, (RP4 - RP5):toAngle()) , holoScaleUnits(5, vec(RangerDist5 * 1.03, 1.5, 1.5)) , holoPos(5, (RP4 + RP5) / 2), if (Count < 6) { break } , Direction6 = (Direction5 - 2 * (RN6:dot(Direction5) * RN6)) , Ranger6 = rangerOffset(999999999, RP5, Direction5) , RangerDist6 = Ranger6:distance() , RP6 = Ranger6:position() , RN6 = Ranger6:hitNormal() , RangerEnt6 = Ranger6:entity() , holoAng(6, (RP5 - RP6):toAngle()) , holoScaleUnits(6, vec(RangerDist6 * 1.03, 1.5, 1.5)) , holoPos(6, (RP5 + RP6) / 2), if (Count < 7) { break } , Direction7 = (Direction6 - 2 * (RN7:dot(Direction6) * RN7)) , Ranger7 = rangerOffset(999999999, RP6, Direction6) , RangerDist7 = Ranger7:distance() , RP7 = Ranger7:position() , RN7 = Ranger7:hitNormal() , RangerEnt7 = Ranger7:entity() , holoAng(7, (RP6 - RP7):toAngle()) , holoScaleUnits(7, vec(RangerDist7 * 1.03, 1.5, 1.5)) , holoPos(7, (RP6 + RP7) / 2), if (Count < 8) { break } , Direction8 = (Direction7 - 2 * (RN8:dot(Direction7) * RN8)) , Ranger8 = rangerOffset(999999999, RP7, Direction7) , RangerDist8 = Ranger8:distance() , RP8 = Ranger8:position() , RN8 = Ranger8:hitNormal() , RangerEnt8 = Ranger8:entity() , holoAng(8, (RP7 - RP8):toAngle()) , holoScaleUnits(8, vec(RangerDist8 * 1.03, 1.5, 1.5)) , holoPos(8, (RP7 + RP8) / 2), if (Count < 9) { break } , Direction9 = (Direction8 - 2 * (RN9:dot(Direction8) * RN9)) , Ranger9 = rangerOffset(999999999, RP8, Direction8) , RangerDist9 = Ranger9:distance() , RP9 = Ranger9:position() , RN9 = Ranger9:hitNormal() , RangerEnt9 = Ranger9:entity() , holoAng(9, (RP8 - RP9):toAngle()) , holoScaleUnits(9, vec(RangerDist9 * 1.03, 1.5, 1.5)) , holoPos(9, (RP8 + RP9) / 2), if (Count < 10) { break } , Direction10 = (Direction9 - 2 * (RN10:dot(Direction9) * RN10)) , Ranger10 = rangerOffset(999999999, RP9, Direction9) , RangerDist10 = Ranger10:distance() , RP10 = Ranger10:position() , RN10 = Ranger10:hitNormal() , RangerEnt10 = Ranger10:entity() , holoAng(10, (RP9 - RP10):toAngle()) , holoScaleUnits(10, vec(RangerDist10 * 1.03, 1.5, 1.5)) , holoPos(10, (RP9 + RP10) / 2), if (Count < 11) { break } , Direction11 = (Direction10 - 2 * (RN11:dot(Direction10) * RN11)) , Ranger11 = rangerOffset(999999999, RP10, Direction10) , RangerDist11 = Ranger11:distance() , RP11 = Ranger11:position() , RN11 = Ranger11:hitNormal() , RangerEnt11 = Ranger11:entity() , holoAng(11, (RP10 - RP11):toAngle()) , holoScaleUnits(11, vec(RangerDist11 * 1.03, 1.5, 1.5)) , holoPos(11, (RP10 + RP11) / 2), if (Count < 12) { break } , Direction12 = (Direction11 - 2 * (RN12:dot(Direction11) * RN12)) , Ranger12 = rangerOffset(999999999, RP11, Direction11) , RangerDist12 = Ranger12:distance() , RP12 = Ranger12:position() , RN12 = Ranger12:hitNormal() , RangerEnt12 = Ranger12:entity() , holoAng(12, (RP11 - RP12):toAngle()) , holoScaleUnits(12, vec(RangerDist12 * 1.03, 1.5, 1.5)) , holoPos(12, (RP11 + RP12) / 2), if (Count < 13) { break } , Direction13 = (Direction12 - 2 * (RN13:dot(Direction12) * RN13)) , Ranger13 = rangerOffset(999999999, RP12, Direction12) , RangerDist13 = Ranger13:distance() , RP13 = Ranger13:position() , RN13 = Ranger13:hitNormal() , RangerEnt13 = Ranger13:entity() , holoAng(13, (RP12 - RP13):toAngle()) , holoScaleUnits(13, vec(RangerDist13 * 1.03, 1.5, 1.5)) , holoPos(13, (RP12 + RP13) / 2) , if (Count < 14) { break } , Direction14 = (Direction13 - 2 * (RN14:dot(Direction13) * RN14)) , Ranger14 = rangerOffset(999999999, RP13, Direction13) , RangerDist14 = Ranger14:distance() , RP14 = Ranger14:position() , RN14 = Ranger14:hitNormal() , RangerEnt14 = Ranger14:entity() , holoAng(14, (RP13 - RP14):toAngle()) , holoScaleUnits(14, vec(RangerDist14 * 1.03, 1.5, 1.5)) , holoPos(14, (RP13 + RP14) / 2), if (Count < 15) { break } , Direction15 = (Direction14 - 2 * (RN15:dot(Direction14) * RN15)) , Ranger15 = rangerOffset(999999999, RP14, Direction14) , RangerDist15 = Ranger15:distance() , RP15 = Ranger15:position() , RN15 = Ranger15:hitNormal() , RangerEnt15 = Ranger15:entity() , holoAng(15, (RP14 - RP15):toAngle()) , holoScaleUnits(15, vec(RangerDist15 * 1.03, 1.5, 1.5)) , holoPos(15, (RP14 + RP15) / 2), if (Count < 16) { break } , Direction16 = (Direction15 - 2 * (RN16:dot(Direction15) * RN16)) , Ranger16 = rangerOffset(999999999, RP15, Direction15) , RangerDist16 = Ranger16:distance() , RP16 = Ranger16:position() , RN16 = Ranger16:hitNormal() , RangerEnt16 = Ranger16:entity() , holoAng(16, (RP15 - RP16):toAngle()) , holoScaleUnits(16, vec(RangerDist16 * 1.03, 1.5, 1.5)) , holoPos(16, (RP15 + RP16) / 2), if (Count < 17) { break } , Direction17 = (Direction16 - 2 * (RN17:dot(Direction16) * RN17)) , Ranger17 = rangerOffset(999999999, RP16, Direction16) , RangerDist17 = Ranger17:distance() , RP17 = Ranger17:position() , RN17 = Ranger17:hitNormal() , RangerEnt17 = Ranger17:entity() , holoAng(17, (RP16 - RP17):
