i am able to send a simple integer but when i try to send an integer and a transform it doesn't work.
WORKS
hit.collider.SendMessageUpwards("applyDamage", damage, SendMessageOptions.DontRequireReceiver);
DOESN'T WORK
hit.collider.SendMessageUpwards("applyDamage", damage, transform.root.transform, SendMessageOptions.DontRequireReceiver);
Per the documentation you can only pass a single argument (of any type). The easy workaround is to put your argument into an Array
var argArray : Array = new Array ();
argArray.Add (damage);
argArray.Add (transform.root.transform);
hit.collider.SendMessageUpwards("applyDamage", argArray, SendMessageOptions.DontRequireReceiver);
And then, obviously, the receiver is responsible for taking an Array argument and parsing it correctly.