osb/doc/lua/object.md
2023-06-20 14:33:09 +10:00

5.8 KiB

The object table contains bindings specific to objects which are available in addition to their common tables.


String object.name()

Returns the object's type name.


int object.direction()

Returns the object's facing direction. This will be 1 for right or -1 for left.


Vec2F object.position()

Returns the object's tile position. This is identical to entity.position(), so use that instead.


void object.setInteractive(bool interactive)

Sets whether the object is currently interactive.


String object.uniqueId()

Returns the object's unique entity id, or nil if no unique id is set. This should be identical to entity.uniqueId(), so use that instead.


void object.setUniqueId([String uniqueId])

Sets the objects unique entity id, or clears it if unspecified.


RectF object.boundBox()

Returns the object's metaBoundBox in world space.


List<Vec2I> object.spaces()

Returns a list of the tile spaces that the object occupies.


void object.setProcessingDirectives(String directives)

Sets the image processing directives that should be applied to the object's animation.


void object.setSoundEffectEnabled(bool enabled)

Enables or disables the object's persistent sound effect, if one is configured.


void object.smash([bool smash])

Breaks the object. If smash is true then it will be smashed, causing it to (by default) drop no items.


float object.level()

Returns the "level" parameter if set, otherwise returns the current world's threat level.


Vec2F object.toAbsolutePosition(Vec2F relativePosition)

Returns an absolute world position calculated from the given relative position.


bool object.say(String line, [Map<String, String> tags], [Json config])

Causes the object to say the line, optionally replacing any specified tags in the text, and using the provided additional chat configuration. Returns true if anything is said (i.e. the line is not empty) and false otherwise.


bool object.sayPortrait(String line, String portrait, [Map<String, String> tags], [Json config])

Similar to object.say, but uses a portrait chat bubble with the specified portrait image.


bool object.isTouching(EntityId entityId)

Returns true if the specified entity's collision area overlaps the object's bound box and false otherwise.


void object.setLightColor(Color color)

Sets the color of light for the object to emit. This is not the same as animator.setLightColor and the animator light configuration should be used for more featureful light sources.


Color object.getLightColor()

Returns the object's currently configured light color.


unsigned object.inputNodeCount()

Returns the number of wire input nodes the object has.


unsigned object.outputNodeCount()

Returns the number of wire output nodes the object has.


Vec2I object.getInputNodePosition(unsigned nodeIndex)

Returns the relative position of the specified wire input node.


Vec2I object.getOutputNodePosition(unsigned nodeIndex)

Returns the relative position of the specified wire output node.


bool object.getInputNodeLevel(unsigned nodeIndex)

Returns the current level of the specified wire input node.


bool object.getOutputNodeLevel(unsigned nodeIndex)

Returns the current level of the specified wire output node.


bool object.isInputNodeConnected(unsigned nodeIndex)

Returns true if any wires are currently connected to the specified wire input node and false otherwise.


bool object.isOutputNodeConnected(unsigned nodeIndex)

Returns true if any wires are currently connected to the specified wire output node and false otherwise


Map<EntityId, unsigned> object.getInputNodeIds(unsigned nodeIndex)

Returns a map of the entity id of each wire entity connected to the given wire input node and the index of that entity's output node to which the input node is connected.


Map<EntityId, unsigned> object.getOutputNodeIds(unsigned nodeIndex)

Returns a map of the entity id of each wire entity connected to the given wire output node and the index of that entity's input node to which the output node is connected.


void object.setOutputNodeLevel(unsigned nodeIndex, bool level)

Sets the level of the specified wire output node.


void object.setAllOutputNodes(bool level)

Sets the level of all wire output nodes.


void object.setOfferedQuests([JsonArray quests])

Sets the list of quests that the object will offer to start, or clears them if unspecified.


void object.setTurnInQuests([JsonArray quests])

Sets the list of quests that the object will accept turn-in for, or clears them if unspecified.


void object.setConfigParameter(String key, Json value)

Sets the specified override configuration parameter for the object.


void object.setAnimationParameter(String key, Json value)

Sets the specified animation parameter for the object's scripted animator.


void object.setMaterialSpaces([JsonArray spaces])

Sets the object's material spaces to the specified list, or clears them if unspecified. List entries should be in the form of pair<Vec2I, String> specifying the relative position and material name of materials to be set. Objects should only set material spaces within their occupied tile spaces to prevent Bad Things TM from happening.


void object.setDamageSources([List<DamageSource> damageSources])

Sets the object's active damage sources (or clears them if unspecified).


float object.health()

Returns the object's current health.


void object.setHealth(float health)

Sets the object's current health.