Ok, I've uploaded version 1.2. You can find it attached to the first post of this thread.
I've got a solution for the laser_sight_expire message that works, and also applied it to the boomer / raincoat vomit_on message as well. Tested both of these too, so it really should be good this time.
I've also put in a timer on the tank_spawn messages so that if it happens twice within 15 seconds, only the first one gives upgrades. (I suspect it was giving one upgrade when the tank spawned as a bot, and then a second when a human took over.)
As for the defaults, I think I'll leave them as is. You're welcome to change them for your server, of course. Goggles, for instance, I think balance nicely (in particular when compared to the single use Raincoat). You can still see, but you still have a horde coming after you. In the games I've played, I've actually heard more complaints about the raincoat than the goggles - even though it's a one use upgrade, players seem to hate it when their vomit fails to do anything. Hot meal is the only one I really find unbalancing, due to the scoring implications in versus.
Not sure if I'll have a chance to do it, but, one addition I've been thinking about would be the ability to have at least the initial upgrades for a level be the same for each team. If Bill got climbing chalk, second wind, and hollow point ammo on the first team to play, the Bill on the other team should get the exact same upgrades. This would balance things such that hot meal could be given out fairly again.
The other neat concept I've been thinking about looking into is to see if upgrades could be placed as world spawns. I know there are some mods that are able to spawn new objects into the game. If I could spawn an object, have it get the "usable" glow, and have it trigger an event I could catch when used, that could make for some really fun gameplay. The first part seems fairly straightforward, but if anyone has any tips or examples on how to do the second and third, I'd love to hear them.