Attributes & Properties Differences

It might look that attributes and properties are very similar but in reality they are conceptually very different.

Attributes can not be mutated outside buffs effects

Attributes can not be changed at all outside the buffs effects system. This means they can not be mutated with arbitrary values in any way from neither Lua or Rust APIs.

Properties can not be mutated by buffs effects

In the other hand, properties are not visible from the buffs effects system beyond read access to a copy of they values on conditionals expression evaluation on runtime. Properties are only mutable through the Lua and Rust APIs.

Attributes only accept f64 and i64 values

Attribute values can only contain Value instances that are created from values of type f64 or i64 exclusively.

Properties can accept any kind of values

Properties values can contain any Value instance created from any valid value kind, that is f64, i64, bool, String or nil.

Attributes always appears in condition expressions

Entity's attributes are always accessible to condition expressions through the virtual object self within the expression.

Properties can be out-out to not appear in condition expressions

Properties can be hidden from condition expressions at will.