Object Duplication Exploit
Last updated
Last updated
This wiki entry demonstrates how to exploit a duplication method in Halo Infinite by taking advantage of the game's object respawning system.
Make any object dynamic, with normal physics, respawn on disturbed, and timer = 1.
Place the object in the map and raise it into the air by 25 units.
In PLAY mode, observe the object falling and respawning.
Make an object dynamic, with any physics setting
Change the respawn properties to the following: respawn = ON, condition = disturbed, and timer = 1
Place the object in an unseen aea of your map where players cannot interact with it.
This script duplicates all objects within the area monitor and places them at the marked player location while maintaining their orientation.
Place a script brain above the object(s) you want to duplicate. a. Turn on the area monitor and adjust the size to surround ONLY the object(s).
Place a pointer a little bit to the side of the script brain. a. Turn on the area monitor and adjust the size to be a bit larger than the script brain's.
The script brain's area monitor contains the parent object which is what is duplicated. Those duplicates are placed in the pointer area monitor.
The pointer's area monitor is where the duplicates or child objects are pulled from.
Select the script brain and open the node graph menu to add the script brain as an object reference.
This method duplicates many objects quickly, creating multiple duplicates in sets of 5, 10, or powers of 2.
Place a script brain above the object(s) you want to duplicate. a. Turn on the area monitor and adjust the size to surround ONLY the object(s).
Place a pointer a little bit to the side of the script brain. a. Set the distance along 1 axis and remember the figure. b. Turn on the area monitor and adjust the size to be a bit larger than the script brain's. c. Do NOT overlap the area monitors.
The script brain's area monitor contains the parent object which is what is duplicated. Those duplicates are placed in the pointer area monitor.
The pointer's area monitor is where the duplicates or child objects are pulled from.
Select both the pointer and script brain and open the node graph menu to add both as object references.
This method requires a more advanced script, with five main components:
Variable declaration
Initial setup
Automatic duplication
On Player Mark event to begin duplication
Main script that places duplicated objects
The script runs recursively, continuing to duplicate objects until the programmed amount of duplicates is placed.
When attempting to reference a duplicate using a Direct Reference node, it's essential to note that the node will grab the parent instead. This behavior is attributed to the use of the Forge ID, the ID visible during forging. Despite this limitation, previous examples have demonstrated the ability to manipulate duplicates individually without referencing the parent.
The True ID of an object operates at a lower abstraction layer compared to the Forge ID. While the Forge ID may recognize a parent and its duplicate as the same object, the True ID distinguishes them as unique entities. For instance, the Forge ID might label both the parent and duplicate as "Cube 1," while the True ID identifies them as "Cube 1-1" and "Cube 1-2" respectively.
Events with an object output, such as the On Enter Area and On Exit Area events, produce the True ID of an object. This enables developers to interact with duplicates without referencing the parent explicitly. Similarly, the Get Objects in Area Monitor node produces an Object List with True IDs, albeit with some quirks related to Forge and True IDs.
Despite the True ID being accessible through events, distinctions between Forge ID and True ID become crucial when working with nodes that automatically convert True ID into Forge ID. Advanced Variables, for example, convert True ID into Forge ID when storing duplicates. Basic Variables, on the other hand, can safely retain the True ID of duplicates in Object Lists.
Custom Events store the True ID of objects in their Object and Object List parameters, preserving the uniqueness of duplicates. This quirk allows developers to work with duplicates independently and utilize their own object variables. The independence of duplicate object variables opens up possibilities for recursive timers and more intricate scripting. Contributors Captain Punch Mathad0115 Cookies