Well, I'm pretty sure it's a Quake problem and Mr. E seemed to agree back in the day. 
There were various things I did before using the following technique [to reduce your pr_globals]
, but it worked the best (and was the easiest and most tedious). Whenever there is a statement 
that sets a variable equal to something, at least 1 pr_global is used (vectors use the most). 
Making a function with the setting as a parameter will save whatever was used.

for example, change:

self.velocity = '0 0 270';

to:

SetVel(self, '0 0 270');

where Setvel is:

void(entity e, vector v) SetVel =
{
e.velocity = v;
};


Thank Maniac for that