Scripted object count limit
Objects are capable of having variables attached to them — numbers, timers, and references to teams, players, and other objects. However, the game needs someplace to actually store the values of these variables.
In practice, the game only makes enough room for 512 objects' worth of scripted object data (256 on Xbox 360). This data includes nested variables, but also includes a variety of properties and options that can be set on objects via scripts. If there already exist 512 objects (256 on Xbox 360) with scripted object data, any attempt to set any of this data on a 513th object (257th on Xbox 360) will silently fail.
The following operations may create scripted object data for an object, depending on what objects they're called on. This list is based on reverse-engineering of the game executable, and should be considered best-effort, not definitive.
- Setting any nested variable on an object
- Checking the timer.is_zero condition on an object.timer variable, unless the timer variable's initial value is a negative number.
- player.set_primary_respawn_object, for whatever is used as the respawn object
- team.set_primary_respawn_object, for whatever is used as the respawn object
- object.timer.reset
- object.timer.set_rate
- object.apply_shape_color_from_player_member
- object.set_pickup_permissions
- object.set_progress_bar
- object.set_shape_visibility, though this doesn't appear to occur if the object in question is any player's biped
- object.spawn_location_fireteams
- object.spawn_location_permissions
- object.set_waypoint_icon
- object.set_waypoint_priority
- object.set_waypoint_range
- object.set_waypoint_text, though this doesn't appear to occur if the object in question is any player's biped
- object.set_waypoint_timer
- object.set_waypoint_visibility
- object.set_weapon_pickup_priority, but only if the priority used is automatic