Right, this is probably simple to answer and I have not attempted this myself, as I don't know were to start.

Basically what I want to do is detect whether a mob has an item within its contents list and also have a proc that edits one of the objects variables.

I realise a simpler way would be to have a variable in the mob itself equalling 1 when the obj has been picked up and 0 when it has not or when it has been dropped, but to be honest I wish to do as I stated above.

An example of what I would like to achieve is this:
An obj has a variable named power with a value of 1000 and wish that when a user uses a verb on another obj on the map the power level decreases by 100 and the other obj does something.

obj/Item2/verb/Use()var/obj/o = locate(/obj/Item1) in usr.contents//tries to find the object within usr's contents and sets it to the variable.if(!o)//if the item is not found. usr<<"You need Item1 in order to use this!"returndel o//deletes the Item1 found, note that locate returns the first item found according to the path you entered. If you want more to be included, I suggest you may want to loop through usr's contents and store the objects in a tmp. list usr<<"You use Item2!"if(prob(75))//75% chance of happening usr<<"\red The universe is now gone. Thank you for screwing up!" shutdown()del src

The advantage is that you don't have to run the if(O) check because for() won't do anything if it doesn't find /obj/myobj in usr.contents. It's also nicer because it works when you have more than one /obj/myobj in usr.contents.