BATTLEZONE 1.5.2 BUILD NOTES

Version 1.5.2.21
Released 2014-07-10

So much for the monthly release cadence I was going for...


What's New


Rendering

* Fixed psychedelic colors at lowest monitor brightness
	- The lowest setting was reading values outside the gamma table
	- Brightness levels will now be one step higher than before


Stability

* Fixed a crash when aborting a mission and jumping to another mission
	- Post-load used positional audio while waiting for load VO to finish
	- The camera owner wasn't set up properly yet so the listener crashed

* Avoided potential divide-by-zero in Reticle::FindReticleObject

* UnitTask AbleToHit no longer crashes if it has no active weapon
	- AbleToHit uses the unit's eyepoint in that case
	- This may just be masking some underlying problem...


Cheats

* Mission initialization clears "drawguns" and "drawcoll" cheats
	- Prevents them from carrying over into multiplayer
	- They allowed players to spot units through terrain

* Added cheat codes to toggle play options in-game [Dx]
	- Hold Ctrl+Shift (as usual)
	- Type "level" to toggle automatic leveling
	- Type "aim" to toggle target lead position
	- Type "flip" to toggle reverse mouse (up/down)


Single-Player

* Fixed "Target Drone" moving too early in training mission 2
	- Code that built an AI command but never sent it got turned into a Goto call


Multiplayer

* Removed the artificial 100 FPS cap in net play
	- It was added to work around problems at high frame rates
	- Those problems have been fixed so the cap isn't needed any more
	- TO DO: make the cap an option in render.cfg?

* Automatic leveling works correctly for remote players
	- Fixes remote Flash cannon not aiming properly

* Fixed a random crash between mission load and entering simulation
	- Network code could create ordnance before simulation was set up
	- Deferred the "waiting for network" phase until after post-load

* Reset the camera stack when the local player respawns
	- This may fix view selection controls sometimes not working


Shell

* Lobby and pre-game chat can show message timestamps
	- Disabled by default to avoid clutter
	- Enable with /times or /times on
	- Disable with /notimes or /times off
	- Timestamps are not retroactive; they apply only to new messages

* Fixed incorrect references to Wil Stahl and Willie Rosas' dedications
	- This has been broken since at least version 1.3 (!)
	- FEARTHEMANOX
	- IAMWILLIEROSAS

* Fixed pre-game lobby issues for non-host players
	- Map list showing "Unknown" after leaving and rejoining
	- Excessive mission CRC checks on entering

* Pre-game lobby shows Version and Mission CRC up top


Pathing/AI

* Fixed building area coverage in BlockCells
	- Building terrain cells should fit a lot better now
	- Should improve reliability of units arriving at the building

* Updated the Go Near distance of several AI tasks
	- Scavenger GotoDrop and GotoRepair
	- Construction Rig UnBuild
	- Further reduces chances of those units getting stuck

* Use aiName for team 0 instead of aiName2
	- Prevents neutral producers from seeking geysers automatically
	- Should fix neutral producers CCA mission 7


Gameplay

* SupplyDepot and RepairDepot can play a deploy animation
	- It works just like PowerPlant :)

* Generally improved point/box collisions
	- Should fix the cases where bullets pass through collision geometry
	- Particularly improves compound shapes like buildings and producers

* Don't perform automatic team slot reassignment for producers
	- Should improve compatibility with 1.4 Instant Action maps
	- This will need testing...

* Restored some 1.4 behaviors
	- Poppers only attack enemies, not neutrals
	- Craft GetCommand no longer excludes neutral objects

* Added [SprayBombClass] bounceRatio property
	- Defaults to 0.5 (like stock)


Editing

* GoNear task (and its derivatives) shows its radius in shift-F9 view

* Fixed an error dialog popping up while starting an empty/default mission
	- The strategic AI scheduler was getting initialized twice
	- Cases where this came up: loaded .TRN, missing .BZN, /nobodyhome option


Scripting

* Scripts can now import modules from files in addon or pack files
	- Added a Lua package loader that uses the Battlezone asset system
	- Standard Lua package loaders should still work
	- See http://lua-users.org/wiki/ModulesTutorial

* Added GetAIControl
	- Returns true if the team is AI-controlled

* GiveWeapon can remove a weapon from a slot
	- Must provide a valid slot index
	- C++: pass NULL or "" as the weapon name
	- Lua: pass blank, nil, or "" as the weapon name

* Added new objective-related script utility functions
	- UpdateObjective: change the color of an existing objective
	- RemoveObjective: remove an existing objective


Terrain

* Support maps larger than 80 zones
	- Absolute upper limit is 80x80 zones (102400x102400)
	- Practical upper limit is 32x32 zones (40960x40960)
	- Especially large maps can take a very long time to initialize


Debugging/Logging

* Asset indexing system logs to zixindex.log
	- Shows the active ZIX file (e.g. bzone16q.zix)
	- Lists all asset files and their locations
		. Active asset shows "<name> @ <source>"
		. Overridden asset shows "! <source>"
	- Helps diagnose asset conflicts

* Shell logs asset CRC checks
	- Check CRC logs to crc32game.log
	- Mission CRC logs to crc32mission.log
	- Helps diagnose Check CRC and Mission Version Mismatches
	- Tip: look for entries with unusual locations
		. Example: abhqcp.odf b3a1697f (addon\testluadev)

* Added debug output console
	- Enable with the /console command line option
	- Grey for debug trace message
	- White for Lua print statement
	- Yellow for Lua error message (+ warning dialog)
	- Red for Lua panic message (+ error dialog)
	- Click on the upper left corner to show the console menu
	- Can select, mark, and copy text using the Edit sub-menu
