I know it is a bit early for this, but here is some idea for LUA modding
- Make
spawn()return the GameObject it creates - Make
spawn()(or an other function) spawn any object, like: Resizable, etc... - Add
FindAll(id)to get all GameObjects by ID, like:FindAll("QuestMaster:WoodenCrate")) - Add a way to retrieve all GameObjects by "room"/"dungeon parts", (that may need a function to get a room, like:
gameObject:GetRoom()for example) - Add a way to retrieve all GameObjects by category, (e.g., "Hazard", "Enemies", "Breakable", "Switches" etc..)
- Provide methods to modify attributes, such as:
- SetAttribute("IsInvisible", true)
- SetAttribute("TurnDelay", "infinity")
- SetAttribute("Solid", true)
- SetAttribute("Message", { "Line", "Line 2" })
- etc...
- Provide access to modify components like: Attachments and other components
- Provide a way to query an object's current state like: retracted, extended, active, inactive
- Provide methods to modify some state of GameObject (to Lit/Unlit Brazier for example)
- Provide methods to activate or deactivate a GameObject (a bit like
GameObject.SetActiveworks in Unity) - Provide a method to delete or destroy/delete a GameObject
- Provide getters to read current values of Shapes, Fragments, sequences, etc...
- Provide setters to modify Shapes, Fragments, sequences, etc..
- Provide an access in the gameObject player, for example, character model name, rings, current Item equipped, etc...
- Add a function to reset a given room
- Add an event trigger when a Shape/Fragments/Sequence change
- Add an event trigger when a Duration is elapsed (for a moving platform for example)
- Add an event trigger when a player respawns at a checkpoint
- Add an event trigger before a GameObject is destroyed/deleted
- Add an event trigger before a GameObject is picked up
- Add an event when GameObject is interacted with, that get the player for example (for creating custom lock, or pedestal)