TODO.TXT 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. MASTER 11/7/96
  2. *Skirmish and cap flag carry over bug.
  3. *Speed boots to anti-aircraft flag.
  4. *allies reveal fakes
  5. Badguy -vs- soviet repair glitch
  6. Building one too many harvester.
  7. force music on the title page and credit scroll
  8. Add mouse dead zone around key buttons
  9. *Harvester getting stuck against a unit that is perpetually trying to scatter (stutter rotating).
  10. AI base is unit heavy. Should concentrate more on air defenses and selling off old buildings.
  11. Attack buildings to discourage from attacking base defenses.
  12. *Longbow not going onto pad even if empty.
  13. Tanya should laugh when exiting barracks.
  14. *If dog drops onto impassable terrain, then fake it into a passable cell instead.
  15. *Keep record of previously existing building to use for computer prerequisite checks.
  16. *Bias the base center away from the edge of the map.
  17. *Add "delay before beginning the first attack" to the rules for ai players.
  18. Add difficulty slider to the skirmish mode.
  19. Driving over weapons factory door.
  20. Give rules control to some of the house check and ai function pairs.
  21. Control engineer repair of bridge by rules file.
  22. Combine chrono effects into a single event.
  23. If near capacity, then build a silo.
  24. HouseClass::Attacked is not multiplay friendly
  25. Use the return value from the house AI function to regulate the interval between their processing.
  26. Build MCV (and go into hunt) when no construction yard left.
  27. Credit scroll scraggs title page.
  28. Retreat mode with LST
  29. *AI units sometimes drive to upper left corner
  30. Sneak peek after intro replay.
  31. Don't allow more than two allies together (if humans only).
  32. Fix the Where_To_Go() function so that it prefers under protected zones and zones that are
  33. closest to the enemy.
  34. Computer should cause blocking units to move before giving up placing a building.
  35. Computer should avoid building against the map edge.
  36. Special build emphasis on the zone that gets attacked.
  37. Tournament rules:
  38. > Countdown timer -- game ends with winner who has higher score. If not
  39. counting down, it should count upward.
  40. > Display score instead of kills on map display.
  41. > Handicap assigned to each player?
  42. > Invulnerable harvester option. Will not be automatically fired
  43. upon until all refineries destroyed. Also, it cannot overrun
  44. infantry until then either.
  45. > Allow disabling of ally option.
  46. > Ally should be limited to only one other player. Say "Changes allegience to ???" or
  47. "Turncoats from ??? to ???"
  48. Clicks on unit production (especially infantry) should be
  49. queued up (with a number).
  50. C&C2: Ideas
  51. > Some advantage to the civilian or mutant villages so that they
  52. won't likely be destroyed in a multiplayer game. Maybe they plant
  53. Tiberium.
  54. > Tiberium should spill from a destroyed harvester.
  55. > Multiplayer maps should have more than one entrance into the
  56. likely starting areas for the players. This is needed to make
  57. complete blocking of access to the base very difficult.
  58. Audio control slider should have a step rate
  59. Can harvester detect a stealth tank on the radar map as long as the
  60. stealth tank is not over tiberium?
  61. Civilians should run from civilian buildings.
  62. When ordering to move to a tree, the units don't move at all.
  63. Transport should not scatter.
  64. Harvesters should return to refinery instead of scattering. If they are already
  65. unloading or heading back to refinery, then they shouldn't scatter at all.
  66. Official maps should be brighter color.
  67. Detect counterfiet maps.
  68. Add KN bits for Num, Scroll, and Caps lock toggle keys. This will give more
  69. information to the ToASCII function for proper keyboard conversion.
  70. Fire coord for AA guns are off.
  71. Draw parachute before drawing attached object.
  72. Patrol to waypoint should clear out any prexisting target so the team members wont
  73. start to run back to their old target.
  74. force bases on if cap flag checked and visa versa.
  75. Boats are not giving out-of-range cursor when selecting a target? Make this controllable
  76. through the rules.ini file.
  77. Buildings are all scanned during every foot::percellprocess as well as any
  78. time a building is drawn that is spied.
  79. Force attack for mine layer could be "lay mine".
  80. Need scenario.Start(), Restart(), Reset() functions to control the campaign start,
  81. next mission start, and restart current mission over functions.
  82. Break scenario data into two groups. The group that needs to be preserved between scenarios
  83. and that which is set by the scenario INI file. Both groups should be saved in the saved game.
  84. The IsTanyaDead and SaveTanya should be in there. There should be two copies of the section
  85. that is preserved between scenarios. This will allow restarting the scenario.
  86. Encrypt the message digest for scenario files. Detect whether scenario is custom or
  87. original version when loading?
  88. The overlap list could be implemented as a sparse array. Each cell would have a pointer
  89. to the overlap list handler. when no overlaps exist, the handler gets deleted.
  90. Optimize INI scanning code. Store only CRC if never going to be written back out? Store
  91. entry/section CRC values as a sorted array to allow binary search? Use strcmp instead of
  92. stricmp?
  93. Thief in hunt mode should go after structures.
  94. Choose computer to attack based on force comparison? If stronger by certain
  95. amount, then attack. If weaker than certain amount, then build.
  96. Progress bargraph on game save/load.
  97. Longbow shows up for airstrip production?
  98. Suggest that these get added to the westwood library: _rotl(), ARRAY_SIZE, min(), max(), abs(), Bound()
  99. Put saving/load of Special and Options into save_misc_values and remove from
  100. save/load mplayer_values function.
  101. Why does SessionClass::Save seem to save the same values that save_mplayer_values
  102. and save_misc_values does.
  103. Flying debris from an exploding building or vehicle.
  104. The UnitToTeleport and TimeQuake variables might need to be save/loaded with the game.
  105. Each class should have an equivalent Build_INI_Entry routine. A generic (save all objects) routine
  106. could then be written.
  107. ...or... Need a INI-Put_String with variable parameters.
  108. Add random animation logic for buildings, vessels, and vehicles.
  109. If directed to move to the immediately adjacent behind cell, then just back up into it. Anything
  110. more distant, rotate to normal orientation.
  111. The MPHType seems obsolete. Just a simple "leptons per game frame" speed value seems
  112. more appropriate.
  113. Crosses line triggers may need special handling in some kind of list. They need to have a cell
  114. attached so that when a unit moves, it can quickly determine if it causes one of these
  115. trigger types to spring. This is the only trigger type that requires a cell data.
  116. Need a more efficient way of detecting when a unit crosses line or enters zone trigger event.
  117. Crack the radio messages into separate handler functions e.g., Radio_Run_Away(), Radio_Over_Out()
  118. Take close look at findpath logic. Incorporate;
  119. > Settle for simple path calc when first starting and distant from destination.
  120. > Escilate path searching when blockage occurs.
  121. > Reset search aggressiveness when new navcom is assigned.
  122. > Use common routine when path is block and "What now?" needs to be answered.
  123. Computer ships SHOULD fire on non-combat buildings when in area guard mode.
  124. Team AI should have a delay between calls.
  125. Hires_Load may be obsolete?
  126. Crosses line trigger is causing problems.
  127. Check for out of disk space during save. Delete partial save file.
  128. V04, V05, V07 have more anim frames.
  129. Put INI reading code within the warhead class object. The warhead object will be
  130. created by the weapon INI info. It will be named but otherwise undefined. The warhead
  131. reading code will look up the warhead info based on the name and then fill in the
  132. values.
  133. Add override flag so unit name can always be printed over unit? Possibly have
  134. full name override for pop up help text as well.
  135. Adjust_Threat should only make an adjustment if the unit moves to a new
  136. cell, is unlimboed, or limboed.
  137. New to Borland 5.0!
  138. namespaces
  139. mutable
  140. bool
  141. standard template library
  142. kevin_aguilar
  143. TOFIX -- fix for Red Alert
  144. OLD -- obsolete for Red Alert, but applicable for Tiberiun Sun
  145. While moving, scan for targets within range (turret vehicles only) so that
  146. firing may occur while moving.
  147. Keep track of the amount of damage (rate) received by a building. This
  148. is used to determine if the building should be sold if it is taking
  149. too much damage.
  150. Send attack helicopter to harrass the enemy.
  151. Don't consider SAM sites to be weapon equipped when determining retaliation
  152. logic.
  153. Abort existing production in emergency situations. e.g., when power is low, base
  154. is under attack, or no refineries left.
  155. Break down AI into request and priority. Then after building list, try to perform
  156. all actions that are highest priority without being mutually exclusive.
  157. Record the current state of the house. Possible states could be "buildup", "under attack",
  158. "idle". The AI will adjust itself depending on the state of the base.
  159. When damaged and previous target is outside of range but antagonist is much closer,
  160. then attack antagonist. Recuit assistance from any nearby friendly units that
  161. are also far from their designated target or are otherwise unoccupied.
  162. Hall of fame data to record more information. Histogram of progress? Records
  163. the number of wins/losses/reloads/saves, etc. Time they play.
  164. Colors on team selection brackets.
  165. Build base defense toward last enemy, but as a ring from the center of the base.
  166. Build infrastructure away from enemy threat.
  167. If low on money also sell of some base defense if there is just too much of it.
  168. Setup program crashes in windows 95. Error is "stack overflow on interrupt".
  169. MCV not deploying if it starts in correct rotated position.
  170. Score timer needs fixing.
  171. 33. SCG03EA: Won by capturing his Hand of Nod, and then
  172. building engineers from it to capture the rest of the base.
  173. When something like that happens, the AI should recall most or all of its forces for defense.
  174. Distribute damage applied to refinery to any attached harvester as well.
  175. If no more tiberium or no more refinery, then rampage harvester.
  176. Fix tree crumbling.
  177. Add a hover command to the mission list so that the helicopter can hover (forever).
  178. Prevent using the placement cursor to find stealth tanks.
  179. Airstrip should animation flashing lights when an aircraft is approaching only.
  180. Apply low power damage only when the "need more power" message is played.
  181. Click and drag on the radar map?
  182. If engineer has its target snatched out from under him, then assign a hunt
  183. mission so that it will pick another target (applied to computer non-team only).
  184. If hit, then respond even if on hunt.
  185. Optimize the update threat function to occur ever cell rather than every time the object
  186. is marked up or down.
  187. If a building is captured, cause a defend base action.
  188. When full of storage, stop the harvester. Don't enter refinery if there is
  189. no storage available. If less than 350 credit storage available, pause.
  190. Darken "repair" and "sell" if there are no buildings available.
  191. If a computer controlled unit enters a transport square, then load it up.
  192. Take advantage of archive target for aircraft. Returns to location after
  193. attacking.
  194. Aircraft dying on ground should have crew survivor.
  195. Helicopters puff smoke before crashing. Handles the transport helicopter.
  196. After evac, send the helicopter back to the game? Keep track of number
  197. of civilians evacutated? Tie a trigger event to this number?
  198. Don't reload the SCUD while it is moving. Suspend the reload delay
  199. by incrementing the countdown timer.
  200. Need accurate mouse tracking so that it is possible to move infantry into the same square
  201. as other infantry.
  202. Tighter individual infantry AI. Self defence priority.
  203. Bringing a wall to its last damage level should be much easier
  204. than completely destroying it. This will allow infantry to
  205. enter through the holes in a wall more easily than the vehicles
  206. would.
  207. Need a function that will return the cell number that either the unit is
  208. currently at (if it isn't moving) or the one that it will be at the
  209. moment is needs to pull more values off of the path list. This function
  210. will be used in the findpath draw routine. This is necessary because
  211. infantry and vehicles use a different method of movement and path list
  212. processing.
  213. Add flag so that bullet (or warhead) knows whether to do explosion area
  214. effect damage or whether to just damage the target. SAM missiles would
  215. just damage the target (maybe APDS as well).
  216. Add some function to the facing class that automatically convert the
  217. return value to 1/32 or 1/8 values.
  218. Misc. strange Watcom errors/quirks
  219. > Internal compiler error 57
  220. > Abnormal program termination: Array bounds exception CS:EIP = 2BCDh:000009A6h
  221. > Created a 100 meg precompiled header file.
  222. > read error on work file: error code = 1
  223. > "const" bitfields show up as 32bit numbers in debugger.
  224. > couldn't add a specifier (foobar::) to a friend class declaration
  225. > Inline assembly can generate wrong code for parameter setup.
  226. > casting doesn't follow precidence rules.
  227. > CTRL-C to break out of compile sometimes crashes. Here is an error.
  228. Invalid date ""
  229. run-time error R6000
  230. - stack overflow
  231. > Unable to find carve memory block.
  232. > Can't overload inline assembly routines?!?! #pragma doesn't specify parameter
  233. type information so that it can resolve properly?
  234. > Access Violation abort and register dump when compiling display.cpp
  235. WPP386 caused an invalid page fault in
  236. module <unknown> at 0000:4f435c4f.
  237. Registers:
  238. EAX=8161e314 CS=014f EIP=4f435c4f EFLGS=00010246
  239. EBX=0059f798 SS=0157 ESP=005900f0 EBP=00590110
  240. ECX=00590198 DS=0157 ESI=005901dc FS=0d97
  241. EDX=bff76648 ES=0157 EDI=005901c0 GS=0000
  242. Bytes at CS:EIP:
  243. Pass range to bullet constructor. It will use this value to limit the
  244. fuel and scatter calculations.
  245. Library allocation and input system should route through a global
  246. base class pointer. This allows changing some aspect of these system
  247. by using simple derived classes. Example: The memory system could keep
  248. track of what and why allocations take place. The input system could be
  249. intercepted to playback a recorded demo. Etc.
  250. Create a standard format for dissemenating technology from a project. This form
  251. would have a concise technology synopsis at the begining. This would be
  252. followed by greater detail explanations.
  253. Create inline versions of Swap_LONG, Reverse_WORD, and Reverse_LONG.
  254. Straighten out the ScrollGadget / SliderGadgets. It shouldn't "new"
  255. the arrow gadgets, but rather either have them as integral objects
  256. or separate them completely and create a special combination class
  257. in a similar fashion to the list class.
  258. Create a number<->string handler for the library. String data files (blocks) are registered
  259. with the handler. All library routines that can take const strings could then also take
  260. string numbers. They would use the handler to extract the correct string pointer.
  261. Create a utility that loads the palette source pictures and then generates all the morph
  262. palette tables. This is a C&C custom utility.
  263. Need a smarter team movement logic for the computer so that infantry do not clump into
  264. one cell unless absolutely necessary.
  265. Create a function that submits a "pending object" to the map I/O handler. This handles
  266. setting up the Zone cell, pseudocursor sizes, as well as all the pending pointers.
  267. If fire shard lands in the exact sub-cell position of an infantry unit, then it will automatically
  268. catch fire.
  269. If cell targets were simple object types, then they can exists in a sort of virtual cell existence
  270. when specific targeting of a cell is desired. This will allow all target values to be converted
  271. into short object pointers. There would be a limit to the number of cells that could be targeted
  272. simultaneously. Multiple units targeting the same cell would be allowed. Each pseudo-cell would
  273. keep a record of the number of simultaneous targets upon itself.
  274. Add a "new" and "delete" function for cells. It would merely return pointer to appropriate spot in
  275. the cell array, but does allow the constructor/destructor logic to function as well as allow the
  276. possibility of arbitrary sized maps. These cell objects would not be the same as the virtual cell
  277. objects used for targeting purposes, although each targeting cell object has a real cell object it
  278. corresponds to.
  279. Need a utility that will calculate fading and translucent tables from a specified palette.
  280. It will create a data file of the created table(s). This utility should be passed a
  281. source LBM (for palette file) and a destination filename and the operation to perform.
  282. It could also be passed a text file that elaborated the process to perform.
  283. Example:
  284. [All] ; Options that perform to all colors unless overridden.
  285. Percent=70 ; Percent to fade from original color to destination color.
  286. [1] ; Process for color table entry #1 in original palette.
  287. FadeTo=13 ; Fades to color #13.
  288. Percent=70 ; Fades 70% of the way from color 1 to color 13.
  289. Uses=240-255 ; Only allowed to pick from these colors as final color.
  290. Objects should move into and out of the logic processing list according to what state they are in.
  291. A unit that is just sitting and waiting for its timer to count down shouldn't be processed in the
  292. regular list like the other units would be. Example: A unit is sitting there with no order so it
  293. is out of the normal logic loop. If it gets selected as a target then it must flash. The
  294. "isflashing" flag gets set and the object gets placed into the logic list. When the flashing
  295. expires, a simple (union?) check of the logic activation bits is performed. If any of the bits are
  296. still on, then the object remains in the logic list, otherwise it is removed. A simple countdown
  297. timer processor is needed for those cases where the only reason the unit is out of the logic loop
  298. is if it is waiting for the next AI command to occur.
  299. search for ",[^ \t$]" and " (" and "}\n[ \t]else {" and "for(" and "switch(" and "\*." and "\t\*-" and "return("
  300. ){ and }else{
  301. Separate arming value for each weapon. This will allow weapons to fire at will according to
  302. their fire rates. This will also require a What_Weapon_Should_I_Fire_Now() function to
  303. help resolve the ambiguous situations.
  304. Create a project format style guide for C&C Tiberian Sun. Put summary into some header file.
  305. Need very specific question functions for the objects. Wrapper functions (radio messages) coordinate
  306. these sub functions to perform tasks.