The calling of ClientSpawn in Cmd_Class_f clears a bunch of stuff in the entity/client structure. This is intentional and commented as such in the code.
However, there are a few things that arguably need to be kept between evolutions.
I'm going to attach a patch that addresses one of these, but there are probably others. I know kevlarman complained about the loss of ps.velocity, so I might do a patch for that too. In fact if I'm really feeling generous, I'll do some kind of general solution (struct savedData; G_SaveClientData; G_RestoreClientData; or some such)
Created attachment 1671[details]
keep poison when evolving
This patch saves the STAT_BOOSTED state and lastBoostedTime (or whatever it's called) before the evolution and restores them, allowing an alien to keep their poison throughout.
It's somewhat arguable whether this is a feature or a bug. I asked Norfenstein and he said he was unsure.
Created attachment 1680[details]
save and restore ps.velocity
This patch, which minorly conflicts with the above, stops ent->client->ps.velocity from being cleared when you evolve.
Created attachment 1671 [details] keep poison when evolving This patch saves the STAT_BOOSTED state and lastBoostedTime (or whatever it's called) before the evolution and restores them, allowing an alien to keep their poison throughout. It's somewhat arguable whether this is a feature or a bug. I asked Norfenstein and he said he was unsure.
Created attachment 1680 [details] save and restore ps.velocity This patch, which minorly conflicts with the above, stops ent->client->ps.velocity from being cleared when you evolve.