284 lines
5.4 KiB
Markdown
284 lines
5.4 KiB
Markdown
|
# npc
|
||
|
|
||
|
The `npc` table is for functions relating directly to the current npc. It is available only in NPC scripts.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `Vec2F` npc.toAbsolutePosition(`Vec2F` offset)
|
||
|
|
||
|
Returns the specified local position in world space.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `String` npc.species()
|
||
|
|
||
|
Returns the species of the npc.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `String` npc.gender()
|
||
|
|
||
|
Returns the gender of the npc
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `Json` npc.humanoidIdentity()
|
||
|
|
||
|
Returns the specific humanoid identity of the npc, containing information such as hair style and idle pose.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `String` npc.npcType()
|
||
|
|
||
|
Returns the npc type of the npc.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `uint64_t` npc.seed()
|
||
|
|
||
|
Returns the seed used to generate this npc.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `float` npc.level()
|
||
|
|
||
|
Returns the level of the npc.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `List<String>` npc.dropPools()
|
||
|
|
||
|
Returns the list of treasure pools that will spawn when the npc dies.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setDropPools(`List<String>` pools)
|
||
|
|
||
|
Sets the list of treasure pools that will spawn when the npc dies.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `float` npc.energy()
|
||
|
|
||
|
Returns the current energy of the npc. Same as `status.resource("energy")`
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `float` npc.maxEnergy()
|
||
|
|
||
|
Returns the current energy of the npc. Same as `status.maxResource("energy")`
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `bool` npc.say(`String` line, [`Map<String,String>` tags], [`Json` config])
|
||
|
|
||
|
Makes the npc say a string. Optionally pass in tags to replace text tags. Optionally give config options for the chat message.
|
||
|
|
||
|
Returns whether the chat message was successfully added.
|
||
|
|
||
|
Available options:
|
||
|
```
|
||
|
{
|
||
|
drawBorder = true,
|
||
|
fontSize = 8,
|
||
|
color = {255, 255, 255},
|
||
|
sound = "/sfx/humanoid/avian_chatter_male1.ogg"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `bool` npc.sayPortrait(`String` line, `String` portrait, [`Map<String,String>` tags], [`Json` config])
|
||
|
|
||
|
Makes the npc say a line, with a portrait chat bubble. Optionally pass in tags to replace text tags. Optionally give config options for the chat message.
|
||
|
Returns whether the chat message was successfully added.
|
||
|
|
||
|
Available options:
|
||
|
```
|
||
|
{
|
||
|
drawMoreIndicator = true,
|
||
|
sound = "/sfx/humanoid/avian_chatter_male1.ogg"
|
||
|
}
|
||
|
```
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.emote(`String` emote)
|
||
|
|
||
|
Makes the npc show a facial emote.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.dance(`String` dance)
|
||
|
|
||
|
Sets the current dance for the npc. Dances are defined in .dance files.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setInteractive(`bool` interactive)
|
||
|
|
||
|
Sets whether the npc should be interactive.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `bool` npc.setLounging(`EntityId` loungeable, [`size_t` anchorIndex])
|
||
|
|
||
|
Sets the npc to lounge in a loungeable. Optionally specify which anchor (seat) to use.
|
||
|
Returns whether the npc successfully lounged.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.resetLounging()
|
||
|
|
||
|
Makes the npc stop lounging.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `bool` npc.isLounging()
|
||
|
|
||
|
Returns whether the npc is currently lounging.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `Maybe<EntityId>` npc.loungingIn()
|
||
|
|
||
|
Returns the EntityId of the loungeable the NPC is currently lounging in. Returns nil if not lounging.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setOfferedQuests(`JsonArray` quests)
|
||
|
|
||
|
Sets the list of quests the NPC will offer.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setTurnInQuests(`JsonArray` quests)
|
||
|
|
||
|
Sets the list of quests the played can turn in at this npc.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `bool` npc.setItemSlot(`String` slot, `ItemDescriptor` item)
|
||
|
|
||
|
Sets the specified item slot to contain the specified item.
|
||
|
|
||
|
Possible equipment items slots:
|
||
|
* head
|
||
|
* headCosmetic
|
||
|
* chest
|
||
|
* chestCosmetic
|
||
|
* legs
|
||
|
* legsCosmetic
|
||
|
* back
|
||
|
* backCosmetic
|
||
|
* primary
|
||
|
* alt
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `ItemDescriptor` npc.getItemSlot(`String` slot)
|
||
|
|
||
|
Returns the item currently in the specified item slot.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.disableWornArmor(`bool` disable)
|
||
|
|
||
|
Set whether the npc should not gain status effects from the equipped armor. Armor will still be visually equipped.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.beginPrimaryFire()
|
||
|
|
||
|
Toggles `on` firing the item equipped in the `primary` item slot.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.beginAltFire()
|
||
|
|
||
|
Toggles `on` firing the item equipped in the `alt` item slot.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.endPrimaryFire()
|
||
|
|
||
|
Toggles `off` firing the item equipped in the `primary` item slot.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.endAltFire()
|
||
|
|
||
|
Toggles `off` firing the item equipped in the `alt` item slot.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setShifting(`bool` shifting)
|
||
|
|
||
|
Sets whether tools should be used as though shift is held.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setDamageOnTouch(`bool` enabled)
|
||
|
|
||
|
Sets whether damage on touch should be enabled.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `Vec2F` npc.aimPosition()
|
||
|
|
||
|
Returns the current aim position in world space.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setAimPosition(`Vec2F` position)
|
||
|
|
||
|
Sets the aim position in world space.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setDeathParticleBurst(`String` emitter)
|
||
|
|
||
|
Sets a particle emitter to burst when the npc dies.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setStatusText(`String` status)
|
||
|
|
||
|
Sets the text to appear above the npc when it first appears on screen.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setDisplayNametag(`bool` display)
|
||
|
|
||
|
Sets whether the nametag should be displayed above the NPC.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setPersistent(`bool` persistent)
|
||
|
|
||
|
Sets whether this npc should persist after being unloaded.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setKeepAlive(`bool` keepAlive)
|
||
|
|
||
|
Sets whether to keep this npc alive. If true, the npc will never be unloaded as long as the world is loaded.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setDamageTeam(`Json` damageTeam)
|
||
|
|
||
|
Sets a damage team for the npc in the format: `{type = "enemy", team = 2}`
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setAggressive(`bool` aggressive)
|
||
|
|
||
|
Sets whether the npc should be flagged as aggressive.
|
||
|
|
||
|
---
|
||
|
|
||
|
#### `void` npc.setUniqueId(`String` uniqueId)
|
||
|
|
||
|
Sets a unique ID for this npc that can be used to access it. A unique ID has to be unique for the world the npc is on, but not universally unique.
|