Well, I made PYGGEL originally as an extension to my
2d/isometric/hui engine, Pyglibs.
At first, I started out just trying to port Pyglibs to 3d (called pyglibs 3d) - however I realized limitations almost immediately, unfortunately.
So Instead I ended up just wanting to make a decent GUI for OpenGL that I could plug into games (particularly for pyweek) - this meant it had to be lightweight, flexible and integrate well into a regular pygame system, instead of having it's own event loop and all that.
After a couple of months I had written out the code for handling the 2d textures, drawing, transforms, etc. and realized that a lot of it also translated to 3d quickly (go figure... LOL) so it was very simple to start extending it out. What I ended up wiht was PYGGEL. It has some (severe in some cases) limitations because of the way I went about designing it, but it works for what it does nicely :)
There are a few things I'd like to play with someday, like skeletal animation, shaders and integrating ODE (or something) physics - but I'll need to rewrite the engine to handle that and don't really feel like it at this particular point.
I do have skype, but that's just for family/friends, and not Python/programming related, sorry.
For ammo - looks nice but has a couple limitations:
always use elif instead of just another if - if you have over 100, but under 200, it will perform both of those reloads at once it looks like.
It also looks like you have a few unnecessary checks there, personally I'd store the remaining ammo as a number, and just represent that as clips (so for every 100 ammo you have an extra clip, but in the internal representation it is only in actual shots)
When you reload then:
if ammo < 100:
amount = min((ammoleft, 100-ammo))
ammo += amount
ammoleft -= amount
that will make it so that it only ever allows you to use the ammo you have - and it simplifies teh code significantly :)
Cheers