# Changing traits with lua

**URL:** <https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713>\
**Category:** The Lab\
**Created:** [May 6, 2017, 1:05am UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713 "2017-05-06T01:05:25Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Cassumbra](https://avatars.discourse-cdn.com/v4/letter/c/bbce88/32.png) [@Cassumbra](https://discourse.cataclysmdda.org/u/Cassumbra)\
**Post date:** [May 6, 2017, 1:05am UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/1 "2017-05-06T01:05:25Z")

</div>

hi i’m new here and please don’t remove lua support because i want to do stuff with it

is it possible to change the player’s traits using lua? I saw someone use it to change player stats over time in another thread. i want to make a jekyll/hyde mod where you change at night and turn back in the morning

EDIT: aw shoot i think i put this in the wrong place. if this is supposed to be in the code help board then please put it there. sorry

---

<div class="post-metadata">

**Author:** ![Cassumbra](https://avatars.discourse-cdn.com/v4/letter/c/bbce88/32.png) [@Cassumbra](https://discourse.cataclysmdda.org/u/Cassumbra)\
**Post date:** [May 8, 2017, 9:32pm UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/2 "2017-05-08T21:32:02Z")

</div>

is there any documentation for lua support? i know that the wiki has a list of functions and attributes but many of the entries don’t have a description so i’m not sure how they work

---

<div class="post-metadata">

**Author:** ![Alec\_White](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/alec_white/32/509_2.png) [@Alec\_White](https://discourse.cataclysmdda.org/u/Alec_White)\
**Post date:** [May 9, 2017, 2:46am UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/3 "2017-05-09T02:46:33Z")

</div>

> [@Cassumbra](#):
>
> is there any documentation for lua support?

As far as I know(and asked) this [Lua - The Cataclysm: Dark Days Ahead Wiki](http://cddawiki.chezzo.com/cdda_wiki/index.php?title=Lua#player)

---

<div class="post-metadata">

**Author:** ![Zhilkin](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/zhilkin/32/3749_2.png) [@Zhilkin](https://discourse.cataclysmdda.org/u/Zhilkin)\
**Post date:** [May 13, 2017, 8:18am UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/4 "2017-05-13T08:18:43Z")

</div>

> [@Cassumbra](#):
>
> is there any documentation for lua support? i know that the wiki has a list of functions and attributes but many of the entries don’t have a description so i’m not sure how they work

LUA functions are simply exported C++ functions, so they should work as their C++ counterparts.

---

<div class="post-metadata">

**Author:** ![Cassumbra](https://avatars.discourse-cdn.com/v4/letter/c/bbce88/32.png) [@Cassumbra](https://discourse.cataclysmdda.org/u/Cassumbra)\
**Post date:** [May 15, 2017, 3:58am UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/5 "2017-05-15T03:58:15Z")

</div>

oh ok cool! so are all functions exported or is it only the ones listed on the wiki?

---

<div class="post-metadata">

**Author:** ![Zhilkin](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/zhilkin/32/3749_2.png) [@Zhilkin](https://discourse.cataclysmdda.org/u/Zhilkin)\
**Post date:** [May 15, 2017, 5:03am UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/6 "2017-05-15T05:03:23Z")

</div>

> [@Cassumbra](#):
>
> oh ok cool! so are all functions exported or is it only the ones listed on the wiki?

Everything available in LUA is gathered in [https://github.com/CleverRaven/Cataclysm-DDA/blob/master/lua/class\_definitions.lua](https://github.com/CleverRaven/Cataclysm-DDA/blob/master/lua/class_definitions.lua)

---

<div class="post-metadata">

**Author:** ![Cassumbra](https://avatars.discourse-cdn.com/v4/letter/c/bbce88/32.png) [@Cassumbra](https://discourse.cataclysmdda.org/u/Cassumbra)\
**Post date:** [May 15, 2017, 3:42pm UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/7 "2017-05-15T15:42:21Z")

</div>

so I would use player.add\_trait()? do you know if there’s a list of trait ids or something similar I would use for this? sorry for being a bother

---

<div class="post-metadata">

**Author:** ![Zhilkin](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/zhilkin/32/3749_2.png) [@Zhilkin](https://discourse.cataclysmdda.org/u/Zhilkin)\
**Post date:** [May 15, 2017, 4:08pm UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/8 "2017-05-15T16:08:38Z")

</div>

> [@Cassumbra](#):
>
> so I would use player.add\_trait()? do you know if there’s a list of trait ids or something similar I would use for this? sorry for being a bother

I believe all traits are defined in [https://github.com/CleverRaven/Cataclysm-DDA/blob/6d1b73231b7b70d53790b2851b90864d86cf7db1/data/json/mutations.json](https://github.com/CleverRaven/Cataclysm-DDA/blob/6d1b73231b7b70d53790b2851b90864d86cf7db1/data/json/mutations.json)

---

<div class="post-metadata">

**Author:** ![Alec\_White](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/alec_white/32/509_2.png) [@Alec\_White](https://discourse.cataclysmdda.org/u/Alec_White)\
**Post date:** [May 15, 2017, 4:10pm UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/9 "2017-05-15T16:10:16Z")

</div>

> [@Cassumbra](#):
>
> so I would use player.add\_trait()? do you know if there’s a list of trait ids or something similar I would use for this? sorry for being a bother

They are in mutation.json if I’m not wrong.

---

<div class="post-metadata">

**Author:** ![Cassumbra](https://avatars.discourse-cdn.com/v4/letter/c/bbce88/32.png) [@Cassumbra](https://discourse.cataclysmdda.org/u/Cassumbra)\
**Post date:** [May 15, 2017, 5:31pm UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/10 "2017-05-15T17:31:33Z")

</div>

whenever I try to use add\_traits or remove\_mutation it tells me that I need to use userdata. how do I give it what it wants? 😛

---

<div class="post-metadata">

**Author:** ![Alec\_White](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/alec_white/32/509_2.png) [@Alec\_White](https://discourse.cataclysmdda.org/u/Alec_White)\
**Post date:** [May 15, 2017, 5:46pm UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/11 "2017-05-15T17:46:24Z")

</div>

I think for this maybe set\_mutation would work best.

---

<div class="post-metadata">

**Author:** ![Cassumbra](https://avatars.discourse-cdn.com/v4/letter/c/bbce88/32.png) [@Cassumbra](https://discourse.cataclysmdda.org/u/Cassumbra)\
**Post date:** [May 15, 2017, 6:06pm UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/12 "2017-05-15T18:06:26Z")

</div>

oh! it turned out I had to be using a : instead of a . . thanks for all the help guys, I’ll start working on the mod thing when I get home

---

<div class="post-metadata">

**Author:** ![Cassumbra](https://avatars.discourse-cdn.com/v4/letter/c/bbce88/32.png) [@Cassumbra](https://discourse.cataclysmdda.org/u/Cassumbra)\
**Post date:** [May 16, 2017, 1:32am UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/13 "2017-05-16T01:32:36Z")

</div>

wait does lua support have callback functions? and if it does can someone give me a list of them?

---

<div class="post-metadata">

**Author:** ![Zhilkin](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/zhilkin/32/3749_2.png) [@Zhilkin](https://discourse.cataclysmdda.org/u/Zhilkin)\
**Post date:** [June 11, 2017, 5:11pm UTC](https://discourse.cataclysmdda.org/t/changing-traits-with-lua/13713/14 "2017-06-11T17:11:35Z")

</div>

> [@Cassumbra](#):
>
> wait does lua support have callback functions? and if it does can someone give me a list of them?

There are four LUA callbacks, two of which are calendar-related:

```
`on_new_player_created` - called when starting the game (used in StatsThroughSkills mod)
`on_skill_increased` - called when player skill is increased (used in StatsThroughSkills mod)
`on_day_passed` - called once a day (at midnight)
`on_minute_passed`- called once a minute

```
