Commit graph

195 commits

Author SHA1 Message Date
Hannu Hanhi
3bff9011d8 LUA_EnumLib optimizations for constant value access
- constants are stored into _G after first use

- made LUA_EvalMath's dedicated Lua state permanent so it can also benefit from these optimizations
2022-01-23 20:11:10 +02:00
Tatsuru
0781b91de5 Merge branch 'fix-archiving-error-msg' into 'next'
Fix incorrect error message during Lua archiving

See merge request STJr/SRB2!1593
2021-09-12 20:27:17 +00:00
Tatsuru
bcd7468d25 Merge branch 'lua-camera' into 'next'
Allow Lua write access to camera_t variables & expose the cameras globally

See merge request STJr/SRB2!1581
2021-09-12 20:20:49 +00:00
GoldenTails
9441bafb09 Restructure the code to be able to possibly support loadfile. 2021-09-05 14:38:51 -05:00
LJ Sonic
6403a38c72 Fix again 2021-08-10 01:48:26 +02:00
LJ Sonic
a9b35a6f7a Fix incorrect error message during Lua archiving 2021-08-10 00:15:44 +02:00
Nev3r
3a49b9519d Remove &, since args and stringargs are arrays 2021-07-13 17:55:06 +02:00
Nev3r
22dfa05c31 Forgot the stringargs. 2021-07-13 17:44:28 +02:00
Nev3r
aed86781fc Bugfix - Fix sporadically occurring incorrect userdata types in Lua, caused by previously loaded userdata which didn't get invalidated in previous sessions.
Invalidate userdata for line and mapthing args.
Invalidate userdata for slopes and their normal, origin and direction vectors.
2021-07-13 17:41:38 +02:00
lachablock
366b1f65a1 Allow Lua write access to camera_t variables & expose the cameras globally 2021-07-10 18:22:07 +10:00
LJ Sonic
e3a5da3f6f Merge branch 'next' of https://git.do.srb2.org/STJr/SRB2.git into HEAD
# Conflicts:
#	src/lua_hook.h
#	src/lua_hooklib.c
2021-06-19 20:49:12 +02:00
LJ Sonic
cfa48574be Merge branch 'next' into 'lua-inputs'
# Conflicts:
#   src/lua_script.c
2021-06-19 10:34:48 -04:00
James R
4d22b9f17f Merge remote-tracking branch 'origin/next' into hooklib-refactor 2021-06-07 18:12:52 -07:00
GoldenTails
409cba678d metalrecording 2021-06-05 18:35:44 -05:00
SteelT
2cb920a5a6 Merge branch 'failed-level-lua' into 'next'
[SUGOI] Make stagefailed more useful, add linedef executor to toggle, and expose to Lua

Closes #361

See merge request STJr/SRB2!1463
2021-05-28 21:51:00 -04:00
LJ Sonic
d325c7e6d3 The year is 2021 2021-05-07 17:45:56 +02:00
James R
ed5a7f51e8 Revert "Merge branch 'lightmemedata' into 'next'"
This reverts commit d4c08a8410, reversing
changes made to e100f21dda.
2021-05-02 21:32:07 -07:00
Sally Coolatta
d59f25a6cd stagefailed is more useful
- Can now apply to normal stages, simply defaults to "false" in normal stages.
- Post-level cutscenes are now always skipped when the stage was failed.
- Exposed the boolean as a Lua read+write global.

Desired for SUGOI, as it allows for visited flags not be updated, and level completion emblems to not be awarded. Which means a lot less crappy non-ideal workarounds.

Normal stage intermission currently does not reflect failure state at all. Maybe it could always skip, never award score bonuses, have different text... etc. Probably would leave that up to vanilla dev opinion.
2021-04-18 12:59:49 -04:00
SwitchKaze
3faa98cf4a Expose inputs to Lua 2021-04-02 15:45:59 -05:00
LJ Sonic
3dff1eb1b7 Fix consoleplayer returning the server player during joining phase 2021-02-11 00:10:15 +01:00
James R
353692fa79 Merge remote-tracking branch 'origin/next' into hooklib-refactor 2020-12-16 08:43:49 -08:00
James R
8d382e49fb Big Large Lua Hooklib Refactor
* Hooks are no longer a mess of lua boiler plate. Helper functions reduce hooks
  to, at the most basic level, only two calls.
* Lua tables (the array part) are used to index hooks. Such tables contain only
  hooks of the same type.
* Hook types are defined in one place so you no longer need to sync up the enum
  and name array.
2020-12-10 00:36:41 -08:00
James R
0b0f2e1e35 Invalidate taglist userdata 2020-12-05 02:26:00 -08:00
James R
621efbfa15 Lua taglib for accessing taggroups
The global "tags" can be iterated upon for every unique tag which is set in the
level. If a tag is set on a sector/line/thing, it will be included. Taking the
length of "tags" will give you the number of these unique tags. (If a tag is
set on multiple sectors/lines/things, it will only be counted once though.)

For sectors, lines and mapthings, call the field "tagged". This function takes
one argument, which is the tag. The return value can be iterated over for all
the sectors/lines/things with that tag. The length can also be taken for the
number of such objects. If no argument is given, the global tag is default.
2020-12-04 00:30:08 -08:00
LJ Sonic
eef3028110 Merge branch 'fix-stacktrace' of https://git.do.srb2.org/STJr/SRB2.git into next
# Conflicts:
#	src/dehacked.c
#	src/dehacked.h
2020-11-29 21:54:15 +01:00
Nev3r
bcf6823cbf Merge branch 'dehacked-hell' into 'next'
Split dehacked.c into multiple files.

See merge request STJr/SRB2!1222
2020-11-29 05:18:45 -05:00
GoldenTails
8fef61aa29 Split dehacked.c into multiple files. 2020-11-23 21:42:26 -06:00
GoldenTails
d806655769 Fix a dumb typo of luaL_checklstring i made whoops 2020-11-23 21:20:17 -06:00
James R
8d71559afe Merge branch 'make-some-lua-globals-rw' into 'next'
Make several Lua global variables writable.

See merge request STJr/SRB2!1233
2020-11-22 18:47:53 -05:00
Louis-Antoine
13ba25f4fe Only call the Lua API for overridden actions 2020-11-15 01:15:58 +01:00
Louis-Antoine
01124f2076 Fix Lua stacktrace not showing in various situations 2020-11-13 19:12:25 +01:00
Louis-Antoine
04826d2615 Replace lua_pop(-1) with lua_settop(0) 2020-11-13 15:31:11 +01:00
James R
097f204ceb Merge branch 'register-metatables' into 'next'
Improve support for metatables in netgames

See merge request STJr/SRB2!1224
2020-11-08 19:30:51 -05:00
Louis-Antoine
87206a8c21 Show a console error if the gamestate contains too many tables 2020-11-08 17:33:49 +01:00
GoldenTails
c70d5a9773 Make mapmusflags and mapmusname writable. 2020-11-05 18:12:35 -06:00
GoldenTails
365e02bb32 Make skincolor_* CTF color variables writable. 2020-11-05 17:38:32 -06:00
GoldenTails
2b39a971ac Make stoppedclock writable. 2020-11-05 15:22:45 -06:00
GoldenTails
f42dee1871 Make displayplayer writable. 2020-11-05 13:43:33 -06:00
GoldenTails
8a0f55e4ad Make gravity writable. 2020-11-05 12:39:03 -06:00
GoldenTails
113e6b6585 Make token writable. 2020-11-05 12:38:47 -06:00
GoldenTails
a502b09929 Make emeralds writable. 2020-11-05 12:37:49 -06:00
Steel Titanium
41d8210fd5 Expose gamestate to Lua 2020-10-31 16:36:15 -04:00
Louis-Antoine
f943f247af Merge branch 'next' of https://git.do.srb2.org/STJr/SRB2.git into register-metatables 2020-10-30 14:46:04 +01:00
Louis-Antoine
121c7da809 Let Lua scripts relink tables to their metatables when unarchiving
This is done through the new "registermetatable" function,
in a somewhat similar fashion to "freeslot" but for metatables:
it must be called at script load to tell SRB2 your metatable
can be automatically relinked during the unarchiving process.
2020-10-03 16:31:04 +02:00
Monster Iestyn
78f7998618 Added polyobj.vertices and polyobj.lines to Lua 2020-09-09 21:15:02 +01:00
Monster Iestyn
625aeb1560 lua_script.c fixes:
* make sure polyobj_t userdata is invalidated at level load
* add support for syncing polyobj_t Lua variables in netgames
2020-09-09 16:09:08 +01:00
Monster Iestyn
d5beae9738 Begin work on adding access to polyobjects in Lua:
* create new file lua_polyobjlib.c
* made a stub LUA_PolyObjLib function
* added META_POLYOBJ to lua_libs.h
* updated makefile, CMake and MSVC project files for lua_polyobjlib.c
2020-09-08 18:08:08 +01:00
Nev3r
6dfe236602 Merge branch 'udmf-next' into 'next'
Merge udmf-next into next

See merge request STJr/SRB2!1075
2020-07-28 14:03:59 -04:00
James R
99e0c48f7b Fix a lot of stuff related to the version automation 2020-07-10 22:39:46 -07:00
Nev3r
ff8759e507 Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2/ into udmf-next
# Conflicts:
#	src/hardware/hw_main.c
2020-06-30 20:29:48 +02:00
Louis-Antoine
93cc48054a Expose "server" and "dedicated" to Lua scripts
Careful! Both are local variables and are always false for clients,
and therefore should obviously not be used in anything gamelogic-related.
2020-06-27 15:30:23 +02:00
SteelT
bff6b19056 Merge branch 'marathonmode' into 'next'
MARATHON RUN

See merge request STJr/SRB2!941
2020-06-17 19:36:10 -04:00
MascaraSnake
4a0206b38d Merge branch 'next' into udmf-next
# Conflicts:
#	src/p_mobj.c
#	src/p_polyobj.c
2020-06-09 09:38:01 +02:00
Louis-Antoine
286b316cf9 Fix dofile() return incorrect values 2020-06-01 15:43:14 +02:00
LJ Sonic
6895d7df92 Merge branch 'next' into 'dofile'
# Conflicts:
#   src/lua_script.c
#   src/lua_script.h
2020-06-01 09:28:56 -04:00
Louis-Antoine
1bacaedde2 Show the traceback when a Lua script error happens 2020-05-30 20:24:33 +02:00
Louis-Antoine
1dbb755743 Add dofile() to Lua 2020-05-29 17:35:07 +02:00
SwitchKaze
46191cade7 Update to 2.2.4 2020-05-22 16:47:51 -05:00
toaster
d593e2e1bb Introducing Marathon Run. (I was going to call it Marathon Mode, but NiGHTS Mode being right next to it on the menu looked terrible.)
Basically a dedicated Record Attack-like experience for speedrunning the game as a continuous chunk rather than ILs. Has several quality of life features.

Benefits include:
* An unambiguous real-time bar across the bottom of the screen, always displaying the current time, ticking up until you reach the ending.
* Disable the console (pausing is still allowed, but the timer will still increment).
* Automatically skip intermissions as if you're holding down the spin button.
* Show centiseconds on HUD automatically, like record attack.
* "Live Event Backups" - a category of run fit for major events like GDQ, where recovery from crashes or chokes makes for better entertainment. Essentially a modified SP savefile, down to using the same basic functions, but has its own filename and tweaked internal layout.
* "spmarathon_start" MainCfg block parameter and "marathonnext" mapheader parameter, allowing for a customised flow (makes this fit for purpose for an eventual SUGOI port).
* Disabling inter-level custom cutscenes by default with a menu option to toggle this (won't show up if the mod doesn't *have* any custom cutscenes), although either way ending cutscenes (vanilla or custom) remain intact since is time is called before them.
* Won't show up if you have a mod that consists of only one level (determined by spmarathon_start's nextlevel; this won't trip if you manually set its marathonnext).
* Unconditional gratitude on the evaluation screen, instead of a negging "Try again..." if you didn't get all the emeralds (which you may not have been aiming for).
* Gorgeous new menu (no new assets required, unless you wanna give it a header later).

Changes which were required for the above but affect other areas of the game include:
* "useBlackRock" MainCFG block parameter, which can be used to disable the presence of the Black Rock or Egg Rock in both the Evaluation screen and the Marathon Run menu (for total conversions with different stories).
* Disabling Continues in NiGHTS mode, to match the most common singleplayer experience post 2.2.4's release (is reverted if useContinues is set to true).
* Hiding the exitmove "powerup" outside of multiplayer. (Okay, this isn't really related, I just saw this bug in action a lot while doing test runs and got annoyed enough to fix it here.)
* The ability to use V_DrawPromptBack (in hardcode only at the moment, but) to draw in terms of pixels rather than rows of text, by providing negative instead of positive inputs).
* A refactoring of redundant game saves smattered across the ending, credits, and evaluation - in addition to saving the game slightly earlier.
* Minor m_menu.c touchups and refactorings here and there.

Built using feedback from the official server's #speedruns channel, among other places.
2020-05-14 23:10:00 +01:00
MascaraSnake
1ccda0b85c Merge branch 'next' into udmf-next 2020-05-13 10:01:12 +02:00
LJ Sonic
62d5d16f5c Merge branch 'optimise-archiving' into 'next'
Optimise net-archiving of Lua strings, numbers and booleans

See merge request STJr/SRB2!904
2020-05-09 16:40:28 -04:00
MascaraSnake
5c8b50ca8b Merge branch 'next' into udmf-next
# Conflicts:
#	src/p_saveg.c
#	src/p_slopes.c
#	src/p_spec.c
2020-05-01 12:44:39 +02:00
Louis-Antoine
ae05f11c45 Optimise number archiving 2020-04-28 23:12:02 +02:00
Louis-Antoine
3e8fb8db25 Optimise boolean archiving 2020-04-28 23:11:28 +02:00
Louis-Antoine
2e3c110534 Optimise string archiving and allow for longer strings 2020-04-28 22:19:44 +02:00
Monster Iestyn
49cceda15b Do the same with writing ARCH_FFLOOR values in Lua archiving code (reading was already dealt with years ago) 2020-04-24 22:43:23 +01:00
MascaraSnake
3170f2b8c3 Merge branch 'next' into udmf-next
# Conflicts:
#	src/p_mobj.c
#	src/r_segs.c
2020-04-24 21:15:53 +02:00
Louis-Antoine
f6e2c7063f Rename lumpinfo_t.name2 to lumpinfo_t.fullname 2020-04-20 23:40:41 +02:00
Nev3r
4128f826b7 Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2/ into udmf-next
# Conflicts:
#	src/lua_hooklib.c
2020-04-12 09:57:19 +02:00
James R
d4c08a8410 Merge branch 'lightmemedata' into 'next'
Cvars returned by CV_FindVar did not work with userdataType

See merge request STJr/SRB2!754
2020-04-09 19:48:39 -04:00
MascaraSnake
1580e14cbc Merge branch 'next' into udmf-next
# Conflicts:
#	extras/conf/Includes/SRB222_linedefs.cfg
#	extras/conf/Includes/SRB222_misc.cfg
#	src/p_spec.c
2020-03-21 20:04:31 +01:00
Louis-Antoine
892a8dd6e7 Make SRB2 flat like Earth 2020-03-20 18:55:29 +01:00
Louis-Antoine
e3cbdf8fab Use HAVE_BLUA as fuel for my fireplace 2020-03-19 18:36:14 +01:00
MascaraSnake
f689bc88aa Add boolean variable that indicates if current map is in UDMF format 2020-03-15 16:23:15 +01:00
SwitchKaze
6415e10216 Merge branch 'next' of https://github.com/STJr/SRB2 into next-luacolors 2020-02-23 11:50:13 -05:00
James Hale
56b67a3b4f Custom skincolors 2020-02-21 21:56:39 -05:00
Steel Titanium
76f26cda24 Merge branch 'master' into next 2020-02-21 21:01:29 -05:00
James R
7060083db5 Update copyright year to 2020 2020-02-19 14:08:45 -08:00
fickleheart
021ca92019 Expose stoppedclock to Lua 2020-02-10 00:07:01 -06:00
James R
35f1a4b76c lua_pushvalue is unneeded 2020-02-02 17:22:28 -08:00
James R
deaf5cfa28 LUA_PushLightUserdata takes the fun out of lib_cvFindVar 2020-02-02 15:19:19 -08:00
James R
84ac743d73 Kill Lua adminplayer 2020-01-12 20:04:05 -08:00
Jaime Passos
093a1baf1d Remove debugging stuff. 2019-12-28 19:50:14 -03:00
Jaime Passos
bb1f43d374 Add gametyperules to LUA_CheckGlobals. 2019-12-23 19:16:10 -03:00
Jaime Passos
e9f69b9c6a Add sstimer to LUA_PushGlobals. 2019-12-23 19:08:57 -03:00
Jaime Passos
5ebd84c3e7 Move ALL the Lua global variable stuff into lua_script.c. 2019-12-23 18:49:23 -03:00
Jaime Passos
d0f7877fd0 Turn noglobals into setglobals, move the extra global variable handling to gamestateglobals. 2019-12-23 18:33:39 -03:00
Steel Titanium
a39b6a1286 Allow access to bluescore and redscore 2019-12-19 16:17:08 -03:00
Steel Titanium
d415cd5c6d
Update copyright date on source files 2019-12-06 13:49:42 -05:00
MascaraSnake
403d698724 Merge branch 'mi-tinkers-with-lua-again' into 'master'
MI tinkers with lua again

See merge request STJr/SRB2Internal!392
2019-10-25 15:27:55 -04:00
toaster
079ef023c9 Fix dedicated server extra lua variables not being synched for joiners.
Original fix written by Lat`.
2019-10-15 10:49:14 +01:00
Monster Iestyn
75ee3193f4 Write a new hack for getting sector->linecount from sector->lines in Lua, to put my mind at rest about it at last.
1) In sector_get, actually push the memory address of the lines array within sector_t, rather than push the value of "lines" itself (essentially, we we want a pointer to a double pointer, or rather a TRIPLE pointer haha)
2) In the sectorlines_* functions, use offsetof to shift the memory address so we can obtain the value of linecount within the sector_t struct, and dereference the result to obtain the value of linecount itself
3) ??? profit

Untested and uncompiled atm, but I have some confidence this might work
2019-09-25 20:27:41 +01:00
Jonas Sauer
166f1fac66 Fixed the thinkerlist issues by removing THINK_LIMBO. Delay-removed thinkers now stay in their list.
Also includes toaster's assorted fixes and improvements from target_painted_on_your_ass.
2019-07-13 01:42:03 +02:00
Nev3r
696ccbd943 Fix mobj list iteration oversights.
Signed-off-by: Nev3r <apophycens@gmail.com>
2019-04-21 12:58:22 +02:00
Nev3r
39ba20be6b Basic multiple thinker list implementation
Set up a main thinker list and a polyobject mover list to test things up. Works so far, networking as well.

Signed-off-by: Nev3r <apophycens@gmail.com>
2019-04-20 22:39:22 +02:00
mazmazz
075f28b7c8 WIP 20190101 merge
d_netcmd.c
filesrch.c
m_menu.c
p_setup.c
p_spec.c
r_data.c
r_main.c
r_things.c
w_wad.c
w_wad.h
2019-01-02 01:09:15 -05:00
Monster Iestyn
11cb163435 Backport the Blockmap library I made two years ago 2018-11-30 17:11:11 +00:00
Monster Iestyn
e158206e55 backport string len tweaks I made to LUA_LoadLump in internal 2018-11-27 23:06:31 +00:00
MonsterIestyn
b53cd70201
Merge branch 'next' into PK3-BackportNext 2018-11-26 18:56:51 +00:00
Monster Iestyn
1b2aea81dc Merge branch 'master' into next 2018-11-25 20:39:17 +00:00