Commit Graph

7 Commits

Author SHA1 Message Date
Lucy
b53ced4e75 Add a SS13.check_tick lua function (#89081)
## About The Pull Request

This adds a new function for Lua scripts: `SS13.check_tick()` - it acts
pretty much exactly like the `CHECK_TICK` macro in DM.

It accepts a single argument, a boolean, which if true - it will act
like `CHECK_TICK_HIGH_PRIORITY` instead.

## Why It's Good For The Game

this function is a repeated code pattern in lua scripts, so having it in
the SS13 lua library is useful.

## Changelog
🆑
admin: Added a new function in Lua scripting, SS13.check_tick, to avoid
causing too much lag during loops and such.
/🆑
2025-01-22 16:46:14 -08:00
Watermelon914
d5418d6251 Fixes lua signal handlers erroring if they don't return anything. (#86052)
## About The Pull Request
As title says.

## Why It's Good For The Game
Bugfix

## Changelog
🆑
fix: Fixed a bug that breaks signal handlers on an object if one of the
signal handlers doesn't return a number value.
/🆑

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2024-09-03 17:52:21 +02:00
Y0SH1M4S73R
d1ccb530b2 Replaces Auxlua with the byondapi-based Dreamluau (#84810)
## About The Pull Request

Ever since byondapi went stable, I've been meaning to create a
replacement lua library that uses it instead of the auxtools-based
auxlua. After so many months, I've finally got the code just about into
a position where it's ready for a PR.

[Click here](https://hackmd.io/@aloZJicNQrmfYgykhfFwAQ/BySAS18u0) for a
guide to rewriting auxlua scripts for dreamluau syntax.

## Why It's Good For The Game

Code that runs on production servers should not depend on memory hacks
that are liable to break any time Dream Daemon updates.

## Changelog

🆑
admin: Admin lua scripting uses a new library that (probably) will not
break when BYOND updates.
/🆑

## TODO:
- [x] Convert the lua editor ui to TS
- [x] Include a guide for converting scripts from auxlua syntax to
dreamluau syntax
2024-07-28 18:45:49 +00:00
Watermelon914
cc1df2405e Fixes lua breaking when registering signals on turfs (#83018)
## About The Pull Request
Signals don't get removed on turfs when they're deleted. This fixes that
so that it is reflected in lua as well.

## Why It's Good For The Game
Lua bugfixes

## Changelog
🆑
fix: Fixed lua scripts breaking when turfs with registered signals get
deleted.
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2024-05-03 22:15:35 +02:00
Watermelon914
64ddd492f7 Fixes SS13.register_signal throwing unclear errors when called on deleted datums (#82597)
## About The Pull Request
See title

## Why It's Good For The Game
More descriptive error message

## Changelog
🆑
fix: LUA: Registering a signal on a deleted datum will throw a more
descriptive error message.
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2024-04-12 13:48:13 -04:00
Watermelon914
ce23a59c36 Cleans up the SS13_base lua file and adds a new lua file for easily handling multiple signals on different objects. (#82458)
## About The Pull Request
Cleaned up the SS13.register_signal and SS13.unregister_signal, removing
the weird list shifting.
Also adds a new lua file that can be included for the use of registering
different signals on various datums and being able to clear them all in
1 function.
Removed the make_easy_clear_function option when registering a signal
via lua because I don't think it's used by anyone and it lacks any sort
of versatility. Users can just create their own function for clearing
signals from a datum.

Also updates the documentation for HARDDELETES.md as
COMSIG_PARENT_QDELETING was renamed to COMSIG_QDELETING

## Why It's Good For The Game
New handler file makes registering signals in batches a lot easier if
you want to clear them in one go without clearing unrelated callbacks on
the same datum. The list shifting in SS13.register_signal had pretty
significant performance problems, so removing that will make registering
and unregistering signals faster.

## Changelog
🆑
admin: LUA - Adds a new library called handler_group. Include it in your
files by doing require('handler_group')
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2024-04-10 12:10:30 -07:00
Watermelon914
fe3c2edddd Moves lua off of the timer subsystem and onto its own internal scheduler. (#82131)
## About The Pull Request
Lua uses the timer subsystem, which can end up holding the entire timer
subsystem if lua is creating a lot of timers.
The solution to this is to use an internal scheduler instead so that the
load gets placed onto the lua subsystem.

## Why It's Good For The Game
Performance improvement when using lua scripts.

## Changelog
🆑
refactor: Auxlua no longer uses the timer subsystem to get stuff done,
lua scripts shouldn't slow down timers anymore.
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2024-03-22 10:59:16 +13:00