## Global Fields - `over_exec_limit(f)` -> `(_exec.time / _exec.limit) > f` - `dm.state_id` -> `_state_id` - `dm.global_proc(proc, ...args)` -> `dm.global_procs.proc(...args)` - `__next_yield_index` -> `_exec.next_yield_index` ## Datums for a datum `D`: - `D:get_var(var)` -> `D.var` or `D[var]` - `D:set_var(var, value)` -> `D.var = value` or `D[var] = value` - `D:call_proc(proc, ...args)` -> `D:proc(...args)` - `D:is_null()` -> `not dm.is_valid_ref(D)` - `D.vars` still exists, but directly refers to the `vars` var of a datum instead of a table that proxies reads and writes to the datum. ## Lists for a list `L`: - `L:get(key)` -> `L[key]` - `L:set(key, value)` -> `L[key] = value` - `L:len()` -> `#L` - `L:add(value)` -> `list.add(L, value)` - `L:remove(value)` -> `list.remove(L, value)` - `L:is_null()` -> `not dm.is_valid_ref(L)` - `L:to_table()` -> `list.to_table(L)` - `L:of_type(type)` -> `list.filter(L, type)` - `L.entries` is removed. Use the `__index` and `__newindex` metamethods instead. ## SS13 - `SS13.register_signal` returns `true` instead of a `/datum/callback` on success. - `SS13.unregister_signal`'s 3rd argument now takes a `function` instead of a `/datum/callback` For proper signal unregistering, code written like the first excerpt should be rewritten like the second except. - ```lua local cb = SS13.register_signal(D, sig, function() ... end) ... SS13.unregister_signal(D, sig, cb) ``` - ```lua local function func() ... end SS13.register_signal(D, sig, func) ... SS13.unregister_signal(D, sig, func) ``` - `SS13.stop_tracking` no longer exists, as dreamluau maintains hard references that are cleared either automatically on lua garbage collection, or manually when the datum is qdeleted.