One new feature of Free Hero Mesh beyond Hero Mesh can be "bizarro world" (not fully implemented yet). The intention is something similar to the bizarro world in the Escape game. So far this is just a draft.
Objects in the bizarro world have the features:
- Invisible (maybe can be changed so that some way to make them visible?)
- Not seen by ObjTopAt, ObjBottomAt, ObjClassAt, HeightAt, VolumeAt, and Broadcast (and the variants of Broadcast that are not mentioned below); however, FlushClass and FlushObj do affect the bizarro world
- Does not receive the automatic KEY, BEGIN_TURN, and END_TURN events (maybe should be some way to do anyways?)
- ObjDir, ObjBelow, and ObjAbove see only bizarro objects when executed from a bizarro object and otherwise see only non-bizarro objects
- Movement in the bizarro world does not interact with the normal world and vice versa (this includes ARRIVED and DEPARTED messages)
- CollisionLayers are separate for the bizarro world than the normal world
- The CREATED and DESTROYED messages are used only for objects in the same world
New commands:
- Bizarro: Read/write the OF_BIZARRO flag (if possible).
- BizarroCreate: Create an object in the bizarro world.
- BizarroHeightAt: Largest height of bizarro objects at location.
- BizarroObjBottomAt: Bottom bizarro object at location.
- BizarroObjClassAt: Bizarro object of class at location.
- BizarroObjTopAt: Top bizarro object at location.
- BizarroSwap: Swap two objects if one is in the bizarro world and the other isn't, and if calling the BIZARRO_SWAP messages on each both returns zero, and it wouldn't cause conflicts with CollisionLayers.
- BizarroSwapAt: Call the BIZARRO_SWAP messages on all objects at the location. If changing the OF_BIZARRO flag of all objects that BIZARRO_SWAP returns zero would not cause conflicts with CollisionLayers, perform those changes.
- BizarroVolumeAt: Largest volume of bizarro objects at location.
- FullBroadcast: Similar to Broadcast but affects the bizarro world in addition to the normal world.
- FullBroadcastEx
- FullBroadcastSum
- FullBroadcastSumEx
New messages:
- BIZARRO_SWAP: Called when BizarroSwap or BizarroSwapAt is executed.
Changing the OF_BIZARRO flag, and using commands BizarroCreate and BizarroSwap and BizarroSwapAt, do not send any messages such as FLOATED, SUNK, CREATED, DESTROYED, ARRIVED, and DEPARTED. It is OK to use BizarroSwap and BizarroSwapAt during the cleanup step.
Some way of editing the bizarro world in the level editor, and storing them in the level file format, is also needed, if this is to be implemented.