Important to note when upgrading:
- Scope rules have changed: (A) adding objects to scope using an add_to_scope array will no longer add children of the objects specified, and (B) adding objects using an add_to_scope procedure which calls PlaceInScope no longer checks the add_to_scope property of the objects added. If you're using add_to_scope and/or PlaceInScope, make sure you test that the objects that you need to be in scope are still in scope after the library upgrade.
- add_to_scope support is now optional (it's enabled unless the constant OPTIONAL_NO_ADD_TO_SCOPE is defined). Existing projects aren't affected, but minimal.inf is now configured by default without support for the add_to_scope property.
New/changed functionality:
- Made support for add_to_scope optional, governed by constant OPTIONAL_NO_ADD_TO_SCOPE.
- Improved compatibility with other libraries, for extensions menu, talk_menu and cheap_scenery.
Optimizations:
- Optimized some scope routines.
- Optimized name matching in cheap scenery extension.
- Improved text storage in Library of Horror.
Bugfixes:
- Fixed bug: add_to_scope using an array would also add children of all objects. This was different from DM4 and the standard library.
- Fixed bug: add_to_scope using a procedure that added objects with PlaceInScope would also check add_to_scope for the objects added. This was different from DM4 and the standard library.
- Added a test for add_to_scope handling.
- Added back a lot of messages for ROUTINES debug verb, that went missing for z5+ in PunyInform v6.5.
- Purloin debug verb didn't set scope_modified, so purloined item could end up not being in scope.
- Improved checks for amusing provided.
- Fixed bug: Cheap scenery extension could try to print CS_DEFAULT_MSG as a string even if it was a routine.