problem with raycasting and functions

i made a simple code attached to a bullet which will determine what will the bullet do with each object collided (tagged as t1_1 and t2_2). but it doesn't work. the line variable tend not to update when i add one inside the function:

var hit1:RaycastHit;
var hit2:RaycastHit;
var question=1;
var line=1;

function Update() {
print(line);
if(question==1) {

    if(line==1) {
    t1_1();
    }
    if(line==2) {
    t1_2();
    }

}

}

function t1_1() {
if(Physics.Raycast(transform.position,transform.forward,hit1,5))
{
if(hit1.collider.gameObject.tag=="t1_1")
            {
                line=line+1;
                Destroy(gameObject.FindWithTag("t1_1"));
                Destroy(gameObject.FindWithTag("bullet"));

            }
}
}

function t1_2() {
if(Physics.Raycast(transform.position,transform.forward,hit2,5))
{
if(hit2.collider.gameObject.tag=="t1_2")
            {
                Destroy(gameObject.FindWithTag("t1_2"));
                Destroy(gameObject.FindWithTag("bullet"));
                line=3;
                print(line);
            }
}
}

what can be the problem why t1_2 function doesn't work?even if i added line=line+1 in t1_1 function which will make line=2 and execute t1_2 function. It doesn't work for me Hope you can help me with this.

You destroy the bullet when it hits something. Therefore the bullet object will be deleted and your line variable is on that object. Every bullet will have an own line variable which is initialized with 1.

I don't really understand what you want to achieve. But if line should be shared between multiple bullets make it static. Static variabled can't be viewed in the inspector because they don't belong to the class instance but to the class itself.

static var line = 1;