$Id: Todo,v 1.41 2001/08/29 09:16:49 slotzero Exp $

- unsorted
    - Radio heals without rune.

- release goals
    - the gold key doesn't always appear or disappear with respect to riders.
    - alternate rune-delete behavior, via new command and toggle to
      change existing one.
    - comment about compiling in poq or qw directory, not src directory.
      Somehow get a more intelligent failure mode there with common
      compilers?
    - bombs placed under a lift while the lift is down causes
      the explosion to be felt on a good portion of the level.
    - convert docs to a format which can generate text and HTML
    - bug from Slot Zero:
	> If you ride a player, enter admin, change level, and then
	> join the game, you join with the player your riding.  You can
	> see through his eyes, yet you're in the game.  The server
	> occasionally crashes too.
	>
	> You have to enter the level before the other person does
	> though, or it won't work.
    - coordinate more extensive forwarding?
    - release hook if player or monster respawns elsewhere.

- pending initial investigation
    - damage to doors on q3 causes them to open, do the same with q1?
    - Flight Rune ideas from PowerBiltx
	> I always liked the concept employed in the Future vs. Fantasy mod
	> regarding flying.
	>
	> The monk class could fly but it required ammo (in this particular case,
	> shotgun shells) to do it. You could turn flight on or off depending
	> on circumstances but while turned on it started decrementing your ammo.
	> If you didn't have enough ammo you couldn't get off the ground or if
	> you were already flying and ran out of ammo, you dropped to the ground.
	>
	> You could make Flight rune sort of like a reverse action movie arsenal
        > rune.
	> 1st toggle rune-use: Flight becomes available and ammo starts depleting.
	> If ammo goes to zero, you lose any weapon associated with that ammo type.
	> 2nd toggle rune-use: Flight is deactivated and you drop to ground. Ammo
	> depletion stops.
	>
	> This would force the flyer to roam more in search of ammo boxes and
	> be more selective about when he used it. Also, by turning flight off,
	> it would make it easier to for him to navigate through tight hallways,
	> doors, etc. where you frequently hang up if you are flying.
    - Chuck says
	- grenade spamming a problem on wido, create optional spam catcher.
	- traps from an existing now-gone player become the property of the
	  next player who fills that slot.
    - team mode in which top dog gets a different shirt color or
      something, idea from Slot
    - games like DM Plus had with its variations of "It"
    - bad movetype bug from Slot
	ZoviraX discharges into the water
	Error: SV_Physics: bad movetype 3
    - phoenix bug from Crazicracker
	> If u pick up the phonenix rune just before the level ends and
	> DO NOT die...you will lose the rune the next level....it's
	> gone!
    - BFG through walls bug, from Slot Zero:
	You can shot BFG through walls.  Even if it doesn't go through,
	it will still do damage to people around the area (on the other
	side of the wall).  On really thin walls, it will break through
	the other side.
    - you will recloak while attacking with nail/lightning gun if you
      aren't hit
    - crash from logs
	RETURN     2362(IMMEDIATE)  1.0
	      rjs.qc : weapon_it_have_min_ammo
	      rjs.qc : CycleWeaponCommand^M
	  weapons.qc : ImpulseCommands
	  weapons.qc : W_WeaponFrame
	   client.qc : PlayerPostThink
	<NO FUNCTION>
	runaway loop error
	Host_Error: Program error
    - document startlevel.cfg
    - change mortar -- larger radius?
    - phoenix bug from Baxter (john <jphansen@gci-net.com>)
	I have noticed a bug in the marlinspike quake server.  If someone
	with a phoenix rune gets killed like point blank, then they respawn
	instantly because they are hitting the fire button, and they kill
	themselves instantly after respawning, the whole thing crashes, and
	it starts over at the introduction.  This has happened about 4
	different times when I have been the one right in front of the
	phoenix rune holder.
    - occasional lavasplashes from radiation?
    - does enviro protect from vamp?
    - 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
    - on the swamp i saw a vamp rot health at double speed, he had good
      health before getting vamp?
    - twalk telefrag shouldn't leave backpack at your old position
    - monk pushing fails in water?
    - make zap rune holders proof against electricity (maybe have it
      heal them), idea from BrickLayer
    - 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
    - RSS for news
    - make spawn selection random as an anti-camping measure?
    - vengeful zombies
    - do shielding with regular pent code
    - new runes
    	- rune stealing
	    - from Homer
    	- 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
    - 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.
    - have wrapper or qsmack prevent duplicate names
    - 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)?
    - 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)
    - 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

- 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)
    - 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.

Quakeworld --------------------------------------------------------------------

    - not yet investigated
	- QW custom map rotation via infokey(world, mapname)
    	- crash
	    ADDRESS    76(trace_ent)entity 0
			115(velocity_z).velocity_z 5281(???)
	      weapons.qc : LightningDamage
	      runes10.qc : Rune_Zap
	     runeserv.qc : Rune_Think
	       client.qc : PlayerPreThink
	    <NO FUNCTION>
	    assignment to world entity
	    SV_Error: Program error
	- qw version always chooses level multiple times at intermission
	- investigate changed suckforce
	- dspots can be pushed so var into a corner you can't see them
	- why does setting velocity for tracking ents screw up poq?
	- pick highest fragger in rate rack mode in first minute?
	- hacking m4/meta/qw/poq docs
	- non-qw:  if person hits 2 again with splash up and already in
	  queue, go into rider mode?
	- setting velocity overrides avelocity in some circumstances
	  (comment in Cloud_Think, and observed spin stop of shub hat)
	- attacking at intermission works
	- server.cfg
	- lava ball for dspot or gravity?  else glowing for gravity?
	- document masters
	    192.246.40.37:27000		id Limbo
	    192.246.40.37:27006		id DM
	    192.246.40.37:27002		id CTF
	    192.246.40.37:27003		id TF
	    192.246.40.37:27004		id Misc
	    204.182.161.2:27000		PlanetQuake	http://www.planetquake.com
	    qwmaster.minos.co.uk	UK Minos	http://www.minos.co.uk
	    203.55.240.100:27000	Australia
	    qwmaster.mondial.net.au	Mondial Aussie
	    200.255.244.2:27000		Brazil
	    master.quakeworld.ru	Russia
	    qwmaster.ocrana.de:27000	Germany
	    207.88.6.18:27000		FortressFest TF
	    194.251.249.32:27000	iNET QW		http://quake.inet.fi
	- Slot says observers can trigger some switches in QW
	On E3M3 (Tomb of Terror), you can trigger the switch that will
	bring up the stairs below the RL and RA.

    - before public server
	- Do something about awful entity tracking behavior (pack rat,
	  torch, vengeance, hats, etc).  It looks like CTF does this
	  by changing the player model, check out how HH does it.
	  http://www.captured.com/headhunters/
	- w_switch/b_switch
	- go over differences between POQ and QW code, note there's newer QW
	  source in qwsv 2.30
	- self.team handling

    - before release
    	- frag logging
	- Makefile
	    - dist targ
		- rename src to meta
		- include qw and poq directories
		- monsters
	- self.jump_flag handling
	- general conversions to monster code
	- use localinfo to store info instead of overloading samelevel, make
	  samelevel behave like other QW servers
	      - 1 keep this level
	      - 2 no exiting
	      - 3 no exiting except start

    - tier 2
	- RN_FLY and observer flying don't work
	- RN_TWALK gets stuck in floor
	- RN_BLINK sticks you in the ground for some types of items in e1m7
	  in the back corner on health
	- RN_PHASE can get you stuck in the floor

    - less important
	- players are still in place at intermission
	- add print levels
	- prints take extra arg (level) so can take one less string, get rid
	  of versions which are tossing an arg so you can't use them by
	  mistake
	- player.touch triggers if an external something touches the player,
	  but not the other way, search for uses (burning and torch eg), set
	  this up by calling other.touch when you touch a player?
	- impact doesn't trigger if you hit an impact guy while he stands
	  still
	- impact hits guy when backing up
	- effect when dspot arms
	- no semicolon after IN_*() is a hassle for the non-leftjustified case
	- use tarexplosion in POQ
	- SpectatorConnect, SpectatorThink, SpectatorDisconnect
	- logfrag (what's CTF's LogMsg()?)
	- full build support on Windows


- QW features

    - ideas from Doug Alexander:
	- "Radar Rune" - scope pops up that shows locations of other players
	  relative to player with rune. All other players glow regardless of
	  whether they have Quad. (I know this was done in other mods, so
	  perhaps the code could be borrowed from those.)
	- "Sniper Rune" - gives player sniper rifle instead of shotgun and
	  zoom capability when button is pressed. Laser sighting? Railgun
	  like capability to go through multiple players (don't know if this
	  is possible in Quake engine)? Short reload time for sniper.
	- "Slow cloud" - player can place "clouds" that act like midair
	  quicksand to slow other players down when they run through. Plant
	  at a door and wait for another player to run into it...


- QW bugs

    - bugs from Doug Alexander
	- Phoenix rune occasionally won't respawn; seems that after player
	  is fragged, the respawn point gets thrown into a point on the map
	  where spawning isn't possible.
	- fire walking shows up in non-LAN mode?
	- Shamblers and zombies don't attack in teamplay (we play two
	  teams, and they remain passive even when opposing team members
	  run by)
	- Phoenix rune doesn't respawn when player dies *in water* - the
	  key variable, we've found, is the water.
	- Gravity wells don't work on occasion - sorry I can't be more
	  specific here, but from time to time we've placed gravity
	  wells that simply don't suck. :)
    - no solution ATM
	- punchangle
	- I'd like to use muzzleflashing vore balls for death spots, but
	  I can't get them to muzzleflash.
	- small/big kick don't do anything
	- no set_viewport, so rider mode is screwed
	- RN_CLOUD can't set its velocity equal to owner's because this
	  overrides avelocity
