Source editing and compilation

    The mod builds for both POQ (plain old Quake) and QW (Quake World).
    The files in the src directory are used to generate files in the poq
    and qw directories, the latter are what's actually compiled.  You
    can edit the files in the src directory if you've got a Unix-like
    system with GNU make and m4 (I usually use Linux, but it also works
    with Cygwin).  Otherwise, if you just want to make some simple
    changes and recompile for your server, you should edit the files in
    the poq or qw directories and compile from there.

    As of version 0.5, the poq and qw source can only be compiled with
    qccx 1.0 or compatible compiler.

DM_WEAPONS_STAY

    Originally I had weapons which were charged with ammo blink
    occasionally, but this caused them to sometimes disappear and I
    couldn't fix it.  At Matthew's suggestion I tried raising them
    up a little when they're full with ammo.  Not only does this not
    cause any bugs, it's also a nicer effect.

Impulses

    Normally Quake ignores impulse commands while you're in the middle of
    an attack animation (for most weapons) or while you're attacking at all
    (for the nail and lightning guns).  This makes things look a little
    nicer (for the player, because of the weapon animation, and from the
    outside, because of the player animation).  It causes impulse commands
    to be lost if more than one is sent to the game before it checks for
    them, though (only the last one received works).  I've changed it so
    that the game always pays attention to impulse commands, even if you're
    in the middle of attacking.

    For most people, the most important thing this will affect is that
    you can use your rune even while attacking.  Eg, if you shoot a
    rocket and then activate the shield rune, the shield will come up
    immediately rather than waiting until the rocket animation finishes.

    Additionally, if you're using a complex binding scheme to do client
    side switch firing, it will generally work better because the only
    time an impulse command is lost is when two are sent in the same
    game tick.  Use the "wait" command to make sure the impulses each
    arrive in a different tick.

Player entities

    The player entites are numbered from 1 to maxplayers.  (0 is the
    world edict.)  You use nextent() to access them that way.

Damage

    	    	    	rate	damage		damage/second
    shotgun		1/0.5	24 max		 48
    super shotgun	1/0.7	56 max		 80
    flame		1/0.15	15		100
    nail		1/0.1	 9		 90
    lava		1/0.1	 9		 90
    super nail		1/0.1	18		180
    grenade		1/0.6	112 approx	186
    rocket		1/0.8	110 approx	138
    lightning		1/0.1	30		300

Rune models

    To find the model a rune will get, take the rune number (RN_*),
    divide by 4, and check the remainder:

    	0 earth magic
	1 black magic
	2 hell magic
	3 elder magic

spawnflags

     256 don't spawn if skill is 0 (easy)
     512 don't spawn if skill is 1 (medium)
    1024 don't spawn if skill is 2 (hard) (map specs say "and nightmare", ?)
    2048 don't spawn if deathmatch != 0

Default gamespy source for POQ servers

    http://www.runequake.com/servers/gamespy-quake
    http://www.gameaholic.com/servers/qspy-quake

Angles

    pitch	vertical plane, v_angle is negative going up, angle opposite
    yaw		horizontal plane, -180 to 180, 0 is right at start
    flip	?

    pitch for v_angle is opposite from pitch for angles.

    vectoangles() works with angles (positive for up pitch) not v_angle:
    makevectors() works with v_angle

rint()

     -1.9 -> -2
     -1.5 -> -2
     -1.1 -> -1
     -1.0 -> -1
     -0.9 -> -1
     -0.5 -> -1
     -0.1 ->  0
      0.0 ->  0
      0.1 ->  0
      0.5 ->  1
      0.9 ->  1
      1.0 ->  1
      1.1 ->  1
      1.5 ->  2
      1.9 ->  2

URLs

    ftp://ftp.runequake.com/
    http://planetquake.com/qccx/
    http://www-vlsi.stanford.edu/~jsolomon/clan9/qsmack/