Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/doc/lua/statuscontroller.md
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /doc/lua/statuscontroller.md
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'doc/lua/statuscontroller.md')
-rw-r--r--doc/lua/statuscontroller.md263
1 files changed, 263 insertions, 0 deletions
diff --git a/doc/lua/statuscontroller.md b/doc/lua/statuscontroller.md
new file mode 100644
index 0000000..735a746
--- /dev/null
+++ b/doc/lua/statuscontroller.md
@@ -0,0 +1,263 @@
+# status
+
+The `status` table relates to the status controller attached to an entity. It is available in:
+
+* monsters
+* npcs
+* status effects
+* companion system scripts
+* quest scripts
+* tech
+* primary status scripts for: player, monster, npc
+
+---
+
+#### `Json` status.statusProperty(`String` name, `Json` default)
+
+Returns the value assigned to the specified status property. If there is no value set, returns default.
+
+---
+
+#### `void` status.setStatusProperty(`String` name, `Json` value)
+
+Sets a status property to the specified value.
+
+---
+
+#### `float` status.stat(`String` statName)
+
+Returns the value for the specified stat. Defaults to 0.0 if the stat does not exist.
+
+---
+
+#### `bool` status.statPositive(`String` statName)
+
+Returns whether the stat value is greater than 0.
+
+---
+
+#### `List<String>` status.resourceNames()
+
+Returns a list of the names of all the configured resources;
+
+---
+
+#### `bool` status.isResource(`String` resourceName)
+
+Returns whether the specified resource exists in this status controller.
+
+---
+
+#### `float` status.resource(`String` resourceName)
+
+Returns the value of the specified resource.
+
+---
+
+#### `bool` status.resourcePositive(`String` resourceName)
+
+Returns whether the value of the specified resource is greater than 0.
+
+---
+
+#### `void` status.setResource(`String` resourceName, `float` value)
+
+Sets a resource to the specified value.
+
+---
+
+#### `void` status.modifyResource(`String` resourceName, `float` value)
+
+Adds the specified value to a resource.
+
+---
+
+#### `float` status.giveResource(`String` resourceName, `float` value)
+
+Adds the specified value to a resource. Returns any overflow.
+
+---
+
+#### `bool` status.consumeResource(`String` resourceName, `float` amount)
+
+Tries to consume the specified amount from a resource. Returns whether the full amount was able to be consumes. Does not modify the resource if unable to consume the full amount.
+
+---
+
+#### `bool` status.overConsumeResource(`String` resourceName, `float` amount)
+
+Tries to consume the specified amount from a resource. If unable to consume the full amount, will consume all the remaining amount. Returns whether it was able to consume any at all of the resource.
+
+---
+
+#### `bool` status.resourceLocked(`String` resourceName)
+
+Returns whether the resource is currently locked.
+
+---
+
+#### `void` status.setResourceLocked(`String` resourceName, `bool` locked)
+
+Sets a resource to be locked/unlocked. A locked resource cannot be consumed.
+
+---
+
+#### `void` status.resetResource(`String` resourceName)
+
+Resets a resource to its base value.
+
+---
+
+#### `void` status.resetAllResources()
+
+Resets all resources to their base values.
+
+---
+
+#### `float` status.resourceMax(`String` resourceName)
+
+Returns the max value for the specified resource.
+
+---
+
+#### `float` status.resourcePercentage(`String` resourceName)
+
+Returns the percentage of max that the resource is currently at. From 0.0 to 1.0.
+
+---
+
+#### `void` status.setResourcePercentage(`String` resourceName, `float` value)
+
+Sets a resource to a percentage of the max value for the resource. From 0.0 to 1.0.
+
+---
+
+#### `void` status.modifyResourcePercentage(`String` resourceName, `float` value)
+
+Adds a percentage of the max resource value to the current value of the resource.
+
+---
+
+#### `JsonArray` status.getPersistentEffects(`String` effectCategory)
+
+Returns a list of the currently active persistent effects in the specified effect category.
+
+---
+
+#### `void` status.addPersistentEffect(`String` effectCategory, `Json` effect)
+
+Adds a status effect to the specified effect category.
+
+---
+
+#### `void` status.addPersistentEffects(`String` effectCategory, `JsonArray` effects)
+
+Adds a list of effects to the specified effect category.
+
+---
+
+#### `void` status.setPersistentEffects(`String` effectCategory, `JsonArray` effects)
+
+Sets the list of effects of the specified effect category. Replaces the current list active effects.
+
+---
+
+#### `void` status.clearPersistentEffects(`String` effectCategory)
+
+Clears any status effects from the specified effect category.
+
+---
+
+#### `void` status.clearAllPersistentEffects()
+
+Clears all persistent status effects from all effect categories.
+
+---
+
+#### `void` status.addEphemeralEffect(`String` effectName, [`float` duration], [`EntityId` sourceEntity])
+
+Adds the specified unique status effect. Optionally with a custom duration, and optionally with a source entity id accessible in the status effect.
+
+---
+
+#### `void` status.addEphemeralEffects(`JsonArray` effects, [`EntityId` sourceEntity])
+
+Adds a list of unique status effects. Optionally with a source entity id.
+
+Unique status effects can be specified either as a string, "myuniqueeffect", or as a table, {effect = "myuniqueeffect", duration = 5}. Remember that this function takes a `list` of these effect descriptors. This is a valid list of effects: { "myuniqueeffect", {effect = "myothereffect", duration = 5} }
+
+---
+
+#### `void` status.removeEphemeralEffect(`String` effectName)
+
+Removes the specified unique status effect.
+
+---
+
+#### `void` status.clearEphemeralEffects()
+
+Clears all ephemeral status effects.
+
+---
+
+#### `List<pair<DamageNotification>>`, `unsigned` status.damageTakenSince([`unsigned` since = 0]])
+
+Returns two values:
+* A list of damage notifications for the entity's damage taken since the specified heartbeat.
+* The most recent heartbeat to be passed into the function again to get the damage notifications taken since this function call.
+
+Example:
+
+```lua
+_,lastStep = status.damageTakenSince() -- Returns the full buffer of damage notifications, throw this away, we only want the current step
+
+-- stuff
+
+notifications,lastStep = status.damageTakenSince(lastStep) -- Get the damage notifications since the last call, and update the heartbeat
+```
+
+---
+
+#### `List<pair<EntityId,DamageRequest>>`, `unsigned` status.inflictedHitsSince([`unsigned` since = 0]])
+
+Returns two values:
+* A list {{entityId, damageRequest}} for the entity's inflicted hits since the specified heartbeat.
+* The most recent heartbeat to be passed into the function again to get the inflicted hits since this function call.
+
+---
+
+#### `List<DamageNotification>`, `unsigned` status.inflictedDamageSince([`unsigned` since = 0])
+
+Returns two values:
+* A list of damage notifications for damage inflicted by the entity.
+* The most recent heartbeat to be passed into the function again to get the list of damage notifications since the last call.
+
+---
+
+#### `JsonArray` status.activeUniqueStatusEffectSummary()
+
+Returns a list of two element tables describing all unique status effects currently active on the status controller. Each entry consists of the `String` name of the effect and a `float` between 0 and 1 indicating the remaining portion of that effect's duration.
+
+---
+
+#### `bool` status.uniqueStatusEffectActive(`String` effectName)
+
+Returns `true` if the specified unique status effect is currently active and `false` otherwise.
+
+---
+
+#### `String` status.primaryDirectives()
+
+Returns the primary set of image processing directives applied to the animation of the entity using this status controller.
+
+---
+
+#### `void` status.setPrimaryDirectives([`String` directives])
+
+Sets the primary set of image processing directives that should be applied to the animation of the entity using this status controller.
+
+---
+
+#### `void` status.applySelfDamageRequest(`DamageRequest` damageRequest)
+
+Directly applies the specified damage request to the entity using this status controller.