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

5.4 KiB

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.