Not bad.
I suggest making the virus depend on your energy so you don't die when firing it eg.
*.nrg 2 div .vshoot store
This way big bots can also shoot further.
The problem with replicating inside your host is that they can target out the virus with *.mkvirus .delgene store. You may want to del their genes first eg.
*.thisgene 1 rnd 2 mult -- add .delgene store
This will randomly alternate between deleting the previous gene and the next gene.
If you really want the virus to kill, put 32000 into vshoot and cut out the unnecessary stuff eg. the shoot bit. You do know the 1 .shootval store only dampens the shot? (Not sure on this one, but I think the default is 100).
The 3 .mkvirus store is also a bit dodgy, because a virus is randomly inserted, and the virus may move from gene #3 to gene #4 or something like that. Make a temporary variable called vgene and in the gene before the virus put *.thisgene ++ .vgene store and then replace 3 with *.vgene.
Yet another problem is that if the virus inserts itself before the safety gene and the bot reproduces...
You should be able to figure that one out by yourself.