Spiral Fractal

This is my Spiral Fractal V1 & V2. They are both 25 lines. I wouldsn’t recommend having more than two going at any time. Click anywhere to start a new one. My original inspiration: linky

V1:

Stage.scaleMode = "noScale";
MovieClip.prototype.randPos = function(click) {
    this._x = (click) ? _root._xmouse : Math.random()*400+75;
    this._y = (click) ? _root._ymouse : Math.random()*300+50;
};
MovieClip.prototype.putOnParent = function(clip) {
    this._x = clip.stuff.current.x+clip._x;
    this._y = clip.stuff.current.y+clip._y;
};
MovieClip.prototype.draw = function() {
    (mat=new flash.geom.Matrix()).translate(this._x, this._y);
    all.draw(this, mat);
    this.clear();
};
_root.attachBitmap((all=new flash.display.BitmapData(550, 400)), 1);
function genBranch(clip, onBranch, level, click, numKids) {
    (onBranch) ? col=clip.stuff.c : col=(0x638A00*((randCol=Math.random())>.5))+(0xBDEB00*(randCol<=.5));
    (c=_root.createEmptyMovieClip("branch"+_root.getNextHighestDepth(), _root.getNextHighestDepth())).stuff = {l:level, av:0, a:(onBranch) ? clip.stuff.a+(Math.random()*90-45)*(Math.random()>.2) : Math.random()*360, c:col, aav:(Math.random()-.5)/2, t:(clip.stuff.t != undefined) ? clip.stuff.t : 5, current:new flash.geom.Point(), child:0, lastChild:0, age:0, currentg:(clip.stuff.currentg == undefined) ? new flash.geom.Point() : clip.stuff.currentg};
    (onBranch) ? c.putOnParent(clip) : c.randPos(click);
    c.onEnterFrame = function() {
        this.lineStyle(this.stuff.t, this.stuff.c, 100);
        this.stuff.av += this.stuff.aav;
        this.stuff.a += this.stuff.av;
        this.moveTo(this.stuff.current.x, this.stuff.current.y);
        (this.stuff.current=new flash.geom.Point(this.stuff.current.x+Math.cos(this.stuff.a*Math.PI/180)*5, this.stuff.current.y+Math.sin(this.stuff.a*Math.PI/180)*-5));
        this.lineTo(this.stuff.current.x, this.stuff.current.y);
        this.localToGlobal((this.stuff.currentg=this.stuff.current.clone()));
        (((this.stuff.currentg.x>450 || this.stuff.currentg.x<100 || this.stuff.currentg.y>350 || this.stuff.currentg.y<50) || Math.random()*100>80) && this.stuff.child<5-this.stuff.l && this.stuff.lastChild>this.stuff.age-300 && (this.stuff.lastChild>0 || this.stuff.age>30)) ? genBranch(this, true, this.stuff.l+1, (this.stuff.child++)) : this.stuff.age++;
        this.draw();
        ((this.stuff.currentg.x>600 || this.stuff.currentg.x<-100 || this.stuff.currentg.y>500 || this.stuff.currentg.y<-100 || this.stuff.t<.1) && this.stuff.age>60) ? this.removeMovieClip() : this.stuff.t *= 1-(this.stuff.l/300);
    };
}
onMouseDown = function () {
    genBranch(_root, false, 1, true);
};
genBranch(_root, false, 1, false);
genBranch(_root, false, 1, false);

V2:

Stage.scaleMode = "noScale";
MovieClip.prototype.randPos = function(click) {
    this._x = (click) ? _root._xmouse : Math.random()*400+75;
    this._y = (click) ? _root._ymouse : Math.random()*300+50;
};
MovieClip.prototype.putOnParent = function(clip) {
    this._x = clip.stuff.current.x+clip._x;
    this._y = clip.stuff.current.y+clip._y;
};
MovieClip.prototype.draw = function() {
    (mat=new flash.geom.Matrix()).translate(this._x, this._y);
    all.draw(this, mat);
    this.clear();
};
_root.attachBitmap((all=new flash.display.BitmapData(550, 400)), 1);
function genBranch(clip, onBranch, level, click, numKids) {
    (onBranch) ? col=clip.stuff.c : col=(0x638A00*((randCol=Math.random())>.5))+(0xBDEB00*(randCol<=.5));
    (c=_root.createEmptyMovieClip("branch"+_root.getNextHighestDepth(), _root.getNextHighestDepth())).stuff = {l:level, av:0, a:(onBranch) ? clip.stuff.a+(Math.random()*90-45)*(Math.random()>.2) : Math.random()*360, c:col, aav:(Math.random()-.5)/3, t:(clip.stuff.t != undefined) ? clip.stuff.t : 5, current:new flash.geom.Point(), child:0, lastChild:0, age:0, currentg:(clip.stuff.currentg == undefined) ? new flash.geom.Point() : clip.stuff.currentg};
    (onBranch) ? c.putOnParent(clip) : c.randPos(click);
    c.onEnterFrame = function() {
        this.lineStyle(this.stuff.t, this.stuff.c, 100);
        (Math.abs(this.stuff.av)>60) ? this.kill() : this.stuff.av += (this.stuff.aav += (Math.random()/10)*((-1*(this.stuff.aav<0))+((1*(this.stuff.aav>0)))));
        this.stuff.a += this.stuff.av;
        this.moveTo(this.stuff.current.x, this.stuff.current.y);
        (this.stuff.current=new flash.geom.Point(this.stuff.current.x+Math.cos(this.stuff.a*Math.PI/180)*5, this.stuff.current.y+Math.sin(this.stuff.a*Math.PI/180)*-5));
        this.lineTo(this.stuff.current.x, this.stuff.current.y);
        this.localToGlobal((this.stuff.currentg=this.stuff.current.clone()));
        (((this.stuff.currentg.x>450 || this.stuff.currentg.x<100 || this.stuff.currentg.y>350 || this.stuff.currentg.y<50) || Math.random()*100>80) && this.stuff.child<5-this.stuff.l && this.stuff.lastChild>this.stuff.age-300 && (this.stuff.lastChild>0 || this.stuff.age>30)) ? genBranch(this, true, this.stuff.l+1, (this.stuff.child++)) : this.stuff.age++;
        this.draw();
        ((this.stuff.currentg.x>600 || this.stuff.currentg.x<-100 || this.stuff.currentg.y>500 || this.stuff.currentg.y<-100 || this.stuff.t<.1) && this.stuff.age>60) ? this.removeMovieClip() : this.stuff.t *= 1-(this.stuff.l/300);
    };
}
onMouseDown = function () {
    genBranch(_root, false, 1, true, 0);
};
genBranch(_root, false, 1, false, 0);
genBranch(_root, false, 1, false, 0);

EDIT: adjusted how fast the lines lose thickness
[FONT=Courier New][/FONT]