$Id: Todo,v 1.32 2000/03/05 02:10:12 roderick Exp $

- release goals
    - delete rune ice on death?
    - screen shots and game description for web site
    - drop weaker armor when you get better (powerbilt saw this
      somewhere)
    - Athlete running with some pre/post think trickery?  If not that,
      why doesn't a direct velocity manipulation work?  It works for too
      much coffee.
    - have hook head think for all the links, factor out common
      calculations
    - no "was ignited" message when the guy is killed (redundant with
      "tripped" obit)
    - on the swamp i saw a vamp rot health at double speed, he had good
      health before getting vamp?
    - cap damage done back by vengeance by health/armor
    - twalk telefrag shouldn't leave backpack at your old position
    - monk pushing fails in water?

- pending initial investigation
    - let you be the vengeful shambler?  idea from homer
    - Futureworld-RJS at 24.115.22.144 was up briefly then down when I
      went to get its version for the server list, check up on it again
    - allow stealing quad from shambler?
    - check out frikbot, http://www.mdqnet.net/frikbot/
    - There are scratch[1234] cvars!
    - When do non-player entity thinks happen?  Perhaps do player-tracking
      movements in the player's post think rather than in the entity's
      think.
    - make people in lag invulnerable if possible (checking last_thought?)
    - Xavier says he was kicked for team changing when top dog
    - kick message usually doesn't get to kickee
    - Why was Deacon telefragged?
	Lightning Jack feels Satan's power deflect a telefrag from Deacon
	Deacon was telefragged by Lightning Jack
    - why do you sometimes popped into the air when you spawn?
    - RSS for news
    - make spawn selection random as an anti-camping measure?
    - vengeful zombies
    - do shielding with regular pent code
    - new runes
    	- random rune
	    - any model
	    - undroppable
	    - gives you a random rune every X seconds
	- ? nullification
	    - idea from army of me aka [Kh4m3130n]lOa
	    - nullify the effect of people's runes in your fov
	- ? Rune of Good Luck/Lucky Life/2nd Chance/9 Lives/?
	    - from Powerbilt
	    - Whenever you normally should die, there is a percentage
	      chance that you will instead be blinked out of harm's
	      way. You could also make it so that projectile damage you
	      do to others has a "critical hit" chance like the ninja
	      attacks in FVF. If the critical hit chance comes up in
	      your favor then any damage you do will kill the opponent
	      regardless of their health and armor. The chance of this
	      would need to be set very low.
	- ? Rune of ??? Thick Skin?
	    - from Powerbilt
	    - The only way you could kill the Diety in FVF was if you
	      could do 80 or more damage in one shot. You might could
	      create a rune based on this. Give them a max health of 120
	      and a min health of 80.
    	- ? camping rune
	    - from Chuck
	    - Anyway consider this, a certain percentage of players are
	      going to habitually camp, for whatever reason it's a fact
	      of Quake gameplay.  How bout if you make a camping rune
	      where the player could go wherever he wants to camp or
	      maybe only certain spots and execute impulse 100 and a nice
	      assortment of weapons spawns around him.  kinda like in
	      some ctf mods ive seen.  they would spend more time looking
	      for the rune than actually camping and when camping they
	      would have a valid excuse.  oh, did i mention i don't like
	      campers.  just an idea.  Chuck
    	- ? mirror/copycat rune
	    - idea from Crazicracker
	    - you get the powers of the person you last shot
	    - implementation could use infrastructure of random rune
    - multiple runes at once, but only 1 active at a time
    - check out light rune at king.kong.net (from War)
    - stop burning (all T_Damage()) at intermission
    - shambler killed me, I became observer, shambler attacked me as
      observer
    - shamblers/zombies won't attack monsters unless attacked first
    - become observer while glowing, stay glowing to your self
    - mirror damage done to holograms?  idea from Chuck
    - start servers automatically after reboot
    - have shambler attack owner if you drop the rune
    - backpack dropping command
    - "unconnected became an observer for idling as a corpse\nJoe
      connected to the server"
    - impulse dropping is still a problem
    - crash from Corrupt:
    	- d1 is random, widomaker isn't, both are by nplayers
	> FindFile: can't find startlevel.cfg
	> couldn't exec startlevel.cfg
	> Server sees 0 players, running small level (57%)
	> ======SERVER ERROR in sized_map:
	> invalid arg
	>
	> EDICT 0:
	> modelindex       1.0
	> movetype         7.0
	> solid            4.0
	> classname      worldspawn
	> model          maps/dm6.bsp
	> message        The Dark Zone
	> sounds           5.0
	> wad            gfx/tim.wad
	> Host_Error: Program error
	> Host_ShutdownServer: NET_SendToAll failed for 4 clients
	> Client [00]d[13][02][05][05][05][05][05][05]admin removed
	> Host_Error: Program error
	> Sys_Error:
    - think about goal-oriented game, Powerbiltx's team idea:
	Create a special rune that looks different than all the other
	runes (2 runes hooked together or something; Suck's mods does
	something like this). At the start of a level, spawn it in a
	random location but don't spawn any other runes. The first
	person to find this special rune becomes the "Artifactor".  Put
	a rune or something over his head or on his back like the key in
	CTF so everyone knows who holds the special rune.

	The "Artifactor" is able to generate runes (under some type of
	rules: time, ammo, health?). His teammates must protect him so
	that he can stay alive long enough to start generating them some
	runes. Only teammates of the "Artifactor" can pick up the runes
	that he tosses out. The only way the other teams can get a rune
	is to kill someone that has one (it pops out and they pick it
	up). Or, they would have to kill the "Artifactor", pick up the
	special rune and start generating some for their own team.
    - wrapper bug:
	usage: unrecognized flag <-=air attack=- was gibbed by joker 's rocket
	"deathmatch" is "223"
	>
	    while executing
	"send_user $expect_out(0,string)"
	    invoked from within
	"expect -nobrace            -re "^deathmatch\r\n" {
			debug "got text sent\n"
			exp_continue
		    }       -re "^\"deathmatch\" is \"\[^\"\]+\"\r\n" {
			debu..."
	    invoked from within
    - have wrapper or qsmack prevent duplicate names
    - allow admin functions without riding (via player numbers from
      status probably)
    - make it so fix-angles is unnecessary WRT weirdness at least
    - huds and centerprints aren't working right
    - check XXX comment in draw_hud()
    - automatically switch away from lightning (and flame/lava?) when
      going underwater (and back when you come out)?
    - check quake.ptw.com for rune ideas
    - check http://linux.mit.edu/quake/runes.html ("Suck") for rune ideas
    - programmatically generate print functions
    - 8th bit is stripped before kibitz sees it
    - work around lan_mode by not re-creating the entities?  study
      network specs
    - s/TICK/sys_ticrate/
    - you can stick somebody in your shambler by placing it on them?

- bugs
    - fire traps can sometimes live under water, spray them into the
      water from near the top of the lift by pentagram in e2m5 and
      you'll occasionally get one which isn't extinguished
    - a dead but not respawned person sitting on a side trigger in e1m7
      keeps tripping it (this also happens in id's code)
    - do something about rider choppiness
    - change shield not to use takedamage
    - change "shambler ran back to master!" (but not rune-use) not to
      put it right on you (so you don't kill yourself with rockets
      mid-fight)
    - bugs with dropping a rune and picking up another of its type with
      death spots, freeze traps, radiation, etc, when they expire or are
      used they try to decrement your current count
    - shamblers don't get properly frozen
    - team
	- team mode changes shirts at level start?
	- pick losing team when same number of  players
	- make team shirts optional
    	- mode to make the fraglimit the team score?
	- "suggest team" mode, switches you to a team when you join but
	  doesn't enforce it
    - handling for "unconnected"?
    - provide versioned documents on the web page
    - if you connect during intermission you don't get the menu at the
      start of the next level
    - you can get stuck in a lift (or the floor, with gravity) with ice
      traps
    - output server list in shutdown progs
    - convert ammo checks to use new function
    - weird use of self.weapon in shotgun frame code
    - weapon mover moves replaced quad on way to red armor in azure
      incorrectly
    - switch to using ... protos for the print functions?
    - merge PutClientInServer() and Resurrect()
    - hud
    	- hud mode should not come from ridee
	- indicator for admin mode and riders
	- don't change HUD for switchfiring
	- commands to reposition HUD
    - hook
	- parameterize hook pull speed
	- prevent jitter when hanging from hook
	- if jitter is gone, maybe blank out hook and chain for
	  hanging people with camo?
    - fragme has problem with aim getting off-center up/down and springing
      to that position
    - player detection might still be off, show-players showed empty names
    - don't reset resurrection count at start of level for phoenix rune
      (requires saving runevar accross levels, is it worth it to use the
      extra var?)
    - runes (particularly zap!) can appear in lava/slime just above the surface
    - fix teleport shuffle
    - something about wrong scream sound
	- enviro in radio in lava still yells when not hurt?
	- flight in radiation with env suit makes slime scream noise

- features
    - way for pack rat to steal runes
    - teleporting weapons
    - optionally kick idle observers (idea from Madsybex)
    - Quake World version, notify:
	Michael <langley@ticnet.com>
	Brian <bhampel@yahoo.com>
    - user config menu
	- hud positioning
	- mode in which best-weapon selects explosive weapons
	- gender
	- ability to have cycling commands skip alts
	- quick rune description
	- auto-config at connect via aliases
    - player identify
    - rune identify
    - level-aliases commands to set an alias for each level which
      changes to that level
    - observer command to toggle noclip
    - ride prev command
    - fix riding observers (how?)
    - have +moveup make swimming noises
    - remove some map centerprints (nightmare skill, shoot windows, etc)
    - teleport for bottom of e1m7?
    - spin spike hat so as not to send angles updates?  Will this save
      bandwidth?
    - alternative exiting mechanisms:
	- exit only if you have X frags
    	- exit only if you're in the top X scoring people
    - remove shub hat functions in favor of improved generic hat (angular
      velocity and exit behavior)?
    - make phasing require activation, possibly allow missing damage from
      some projectiles/radius, and/or limited walking on air
    - runes
	- tricks and traps (trip wires, ammo boxes/other items, anti
	  backpacks?, bomb backpacks?), but how to control with just 1
	  impulse?
	    - from Powerbiltx, genclasses mod had a faker which would
	      trap stuff it couldn't pick up, maybe do tricks/traps that
	      way with the button used for tripwires
    	    - I still want more, though.
	    - feign death
	    - anti backpack
	- dog helper?
	- become monster?
	- rune of good ammo?
	- rune of choice?  (choose what rune you want) idea from joker
	- sniper rune?
	- rune of "good water", from Vigilante:  behaves like regen if
	  you're underwater, puts out fire, would need something else to
	  make it work I think

- bugs I don't know how to fix

    - Color shifting (use by blindness, cloaking, shielding, and the
      like) doesn't work underwater, or for some (all?) GL clients.
      We should move away from using it, because those clients have an
      advantage for shielding and cloaking.  It's also reported that
      there's some sort of problem the way the GL clients display
      holograms.

    - On some systems the yellow armors in dm2 (Claustrophobopolis)
      disappears the first time the crushing button is pressed.
      Somehow they're dropping through the floor.  This happens on
      both schnoggo and janus, but not on my machine here.  All
      three systems have the same unixded, progs.dat, pak0.pak and
      pak1.pak.  I do not understand it.

    - Sometimes a player will be disconnected but the progs doesn't
      know it.  The game knows it, because their netname has been
      changed to null and their color to white.  I've got a handle on
      an actual fix for this (see the comments on .last_thought in
      defs.qc), but haven't finished thinking about it.

    - I allow you to set some of the DM_* flags in the deathmatch cvar
      without being in deathmatch mode (DM_LAN_MODE, eg).  The engine
      doesn't understand this, though, and this causes some undesirable
      behavior.  Eg, you can't use the engine's cheat commands (noclip,
      god, etc.) if you've got anything set in deathmatch at all.

    - Sometimes, for no reason I can discern, the remove() in Rune_Move()
      doesn't actually remove the entity according to count_ent_class()
      calls immediately before and after.  Left on its own this results in
      too many runes appearing in the level, I work around it by recounting
      runecurrent every now and then.

    - It's hard for the pack rat to really soak up all the runes because
      dropped runes will stay where they fall until when they'd first
      move (which allows there to be more runes than runemax).  Changing
      that is hard on gameplay, though.  The obvious fix would be to
      remove a non-dropped rune when somebody drops a rune (which is bad
      because it makes that rune disappear without blinking), and not to
      drop a rune if there are no non-dropped runes to slip it in for
      (which is bad because the person who killed that guy doesn't get
      to pick up the rune he earned).  Perhaps I should find the rune
      closest to moving anyway and crank its move time up until it's
      just about to blink.

    - cvar("maxplayers") is 0.  I'd like to get at this value so that
      FORWARD_MAX_PLAYERS can (optionally?) be specified as a number of
      free slots to retain instead.

    - Bombs sticking to players have a couple of display problems.  I
      don't think the angles are right in the face of pitch changes, and
      I know the position is wrong in those cases if the bomb struck the
      player from behind and she changes pitch.  I worked on this for a
      long time.  I can't help thinking I could fix these if I kept at
      it, but I'm just tired of trying.
