BATTLEZONE 1.5.2 BUILD NOTES

Version 1.5.2.1
Released 2013-02-28
15th Anniversary Build!


Miscellaneous Improvements: 

* Use a better collision sound for CLASS_ID_STRUCTURE2 buildings (submitted by Dx)

* Various shell improvements (submitted by Dx)
- Return focus back to the MapList for host selection
- Updated Save/Load Shell
- Updated Pop Up Shell window buttons
- Properly redraw name edit box and save game description edit box

* Mission fixes
- Misn09Mission: CCA base turret setup is reliable (submitted by Dx)
- Misn08Mission: fixed CCA APC and second NSDF gun tower assignments


Editor Improvements:

* Made the selected paths a bit easier to read in the editor. (submitted by Dx)

* Improved game object selection
- Uses the larger of bounding radius and collision radius
- These correspond to the circles drawn around objects
- Picks the object closest to the cursor
- Applies screen-space padding so small objects are easier to pick

* Enhanced Edit Object mode
- Show labels above objects that appear as an oriented box with circles
- Highlight the object under the mouse cursor (rollover)
- Reduced unintentional movement when clicking game objects
- Use the point clicked on the game object as a "handle" when moving it
- Holding the right mouse button makes the selected object face the cursor
- Placing a game object makes it the selected object so it's easy to rotate

* Enhanced Edit Path mode
- Show the path label over the first node (also with Show Paths)
- Reduced unintentional movement when clicking path nodes
- Use the point clicked on the path node as a "handle" when moving it

* Visual improvements
- Show menu item keys with sprites instead of [text]
- Show item keys only for currently-selectable items
- Show menu selection state using color
- Use translucent backgrounds for unselected labels
- This works in software rendering too!


Scripting Improvements:

* Support getting team players
- Assign remote players to TEAM_SLOT_PLAYER
- Added GetPlayerHandle variant that takes a team

* Back-ported ScriptUtils from BZ2
- SetTeamNum
- DefaultAllies, Ally, UnAlly, IsTeamAllied, IsAlly
- GetCurHealth, SetCurHealth, GetMaxHealth, SetMaxHealth
- GetCurAmmo, SetCurAmmo, GetMaxAmmo, SetMaxAmmo, GetAmmo, AddAmmo
- GetWhoShotMe, GetLastEnemyShot, GetLastFriendShot
- GiveWeapon
- IsDeployed, Deploy
- IsSelected

* Additional ScriptUtils functionality
- Most functions taking a path name also take an optional point index
- Added path variants of GetNearestObject, GetNearestBuilding, and GetNearestEnemy

* Made HasCargo safe to use with non-Tug units
- Returns false in that case


Lua 5.1 Mission Scripting:

* Preliminary implementation of LuaMission
- AiMission framework for user-created mission scripts
- Reads the .lua script named after the mission (e.g. example.bzn reads example.lua)
- CAVEAT: script name is actually based on the msn_filename saved in the .bzn
- Supported script functions: Load, PostLoad, Save, AddObject, Update

* Mission file picks LuaMission:
- If its name starts with "lua"
- If it has a matching .lua script
- This only applies when creating the mission in the first place

* Basic Lua type serialization and deserialization
- Lua Load function receives whatever the Lua Save function returns
- Supports nil, boolean, lightuserdata (handles), string, and table
- Does not preserve complex reference structures like shared tables
- Breaks when confronted with cyclical reference structures


Network Improvements: 

* Improved DistributedObject bandwidth throttling
- Take reliable packets into account
- Take UDP packet header overhead (40 bytes) into account


Strategic AI Improvements:

* SetAIP takes a team number argument
- It defaults to 2 for backwards compatibility

* AIPs can control any team, not just team 2
- This has not been thoroughly tested yet...
- Controlling a player team will have unknown effects
