Commit graph

173 commits

Author SHA1 Message Date
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
GoldenTails
59d2646593 Send a quitting argument to the GameQuit Lua hook 2020-11-29 08:30:50 -06:00
James R
b72789b0c9 Huge perfstats refactor
I needed to update it to make it functional with the precise timer. But I also
got sick of looking at the mess of sprintf followed by draw call.
2020-11-07 01:32:59 -08:00
Steel Titanium
ac7781a3b3 Expose more music functions to Lua 2020-10-31 21:15:41 -04:00
Louis-Antoine
37c11e0f2e Fix unfortunate typos 2020-10-22 00:08:06 +02:00
Louis-Antoine
d349e9bf83 Only invoke the Lua API for mobj hooks that need it 2020-10-21 22:48:00 +02:00
Hannu Hanhi
4f20a20165 Performance stats 2020-10-10 22:12:34 +03:00
Zachary McAlpin
e5b6d19f57 Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2 into playercmd-kart-port 2020-07-30 15:37:41 -05:00
Zachary McAlpin
c42e06221d Bruh I screwed up 2020-07-17 00:33:07 -05:00
Zachary McAlpin
d26c7654ff Ported Lat's PlayerCmd hook to vanilla SRB2 2020-07-17 00:08:38 -05: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
Zachary McAlpin
6eccc7030d I forgot to pop the error handler 2020-06-12 07:50:57 -05:00
Zachary McAlpin
0d70e16b0b Updated LUAh_GameQuit to use new error handler 2020-06-11 15:11:01 -05: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
Zachary McAlpin
ca66c5e7ee Updated LUAh_GameQuit 2020-06-05 13:18:22 -05:00
Zachary McAlpin
7b779fa89b Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2 into gamequit-hook 2020-06-05 12:59:41 -05:00
Louis-Antoine
d31346822d Refactor hook library a little 2020-05-30 20:28:45 +02:00
Louis-Antoine
1bacaedde2 Show the traceback when a Lua script error happens 2020-05-30 20:24:33 +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
Zachary McAlpin
31b19f69a2 Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2 into gamequit-hook 2020-04-09 20:12:11 -05:00
James R
2fda89f1c3 Merge branch 'bot-respawn-hook' into 'next'
BotRespawn hook

See merge request STJr/SRB2!804
2020-04-09 19:52:25 -04:00
James R
1edc300d0c Merge branch 'lua-hook-cleanup' into 'next'
Lua hook cleanup

See merge request STJr/SRB2!851
2020-04-09 19:40:09 -04:00
Zachary McAlpin
decce7905b Moved LUAh_GameQuit(void) function to the end of the lua_hooklib.c 2020-03-24 22:55:25 -05:00
Zachary McAlpin
21353f1209 Screw merge conflicts 2020-03-24 20:38:46 -05: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
e3cbdf8fab Use HAVE_BLUA as fuel for my fireplace 2020-03-19 18:36:14 +01:00
Louis-Antoine
1d5d6ead65 Fix misleading naming 2020-03-19 14:40:12 +01:00
Louis-Antoine
58c42eec29 Simplify hook code 2020-03-19 14:38:42 +01:00
fickleheart
05b2570ae7 Merge remote-tracking branch 'upstream/next' into lua-music 2020-03-18 22:43:07 -05:00
fickleheart
9c86cd0bc2 More union types for the union type god 2020-03-18 22:42:31 -05:00
fickleheart
647f73c8f2 Clean up after myself 2020-03-18 22:38:51 -05:00
fickleheart
e0badd1e5b Rename hook to ShouldJingleContinue 2020-03-18 22:35:21 -05:00
Monster Iestyn
31b1188a3e Merge branch 'master' into next 2020-03-15 20:32:43 +00:00
Zachary McAlpin
bb08b55b43 Created GameQuit hook, but I need to decide where to execute it 2020-03-12 12:22:04 -05:00
Nev3r
68f60f3c29 Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2/ into udmf-next 2020-03-11 09:31:31 +01:00
Monster Iestyn
f4cb6e1f5e Include r_skins.h instead of r_things.h in many files where all they wanted from it was skins stuff
(oddly enough, this actually revealed some secret file dependencies previously included via r_things.h! I also needed to include d_player.h in r_skins.h itself it seems)
2020-03-09 13:54:56 +00:00
Monster Iestyn
cf95837a76 Merge branch 'follow-is-mobj' into 'next'
Turn FollowMobj into a mobj hook

See merge request STJr/SRB2!803
2020-02-29 12:48:39 -05:00
fickleheart
f2c968dea8 Add JingleStatus hook for carrying custom jingle tunes
The extra argument is the music name, as passed into
P_PlayJingleMusic(player, musname), to run the hook for, optional.
Arguments are (player, musname) - the latter to allow global hooks
that still differentiate between different tracks.
2020-02-23 17:20:44 -06:00
Sally Cochenour
400366802c Make hook_FollowMobj a mobj hook instead of a player hook
Makes more logical sense, as if you have a custom follow item for a custom skin, you probably want your new thinker to only run for your new MT_ and not the vanilla ones.
2020-02-20 16:40:39 -05:00
James R
7060083db5 Update copyright year to 2020 2020-02-19 14:08:45 -08:00
MascaraSnake
cae99654be Merge branch 'next' into udmf-next 2020-02-18 18:39:11 +01:00
Jaime Passos
369fd8e35f Fix LUAh_SeenPlayer not working 2020-02-17 23:06:38 -03:00
Sally Cochenour
934808ef62 BotRespawn hook
Lets you force when and when not to respawn the bot
2020-02-12 14:16:23 -05:00
Louis-Antoine
f209721ded Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2.git into keep-body
# Conflicts:
#	src/g_game.c
#	src/p_setup.c
2020-01-22 03:57:22 +01:00
Louis-Antoine
d374bf4f9b Let clients rejoin the server without losing their status
This is accomplished by simply preserving
the player's body after disconnecting.

Bodies will despawn after the number of minutes
specified by the "rejointimeout" console variable (float).
A value of 0 disables the feature completely.

Clients rejoining are identified by their IP address,
and may rejoin even if the server is full or joins are disabled,
for as long as their body remains.

From a technical standpoint, when the user disconnects,
the player they were controlling does not leave,
the underlying player_t just keeps working normally,
except it does not receive any input anymore.
When the user reconnects, they are simply "relinked"
to their player_t.

Those "soulless" players can be identified through
their "quittime" field, which is the number of tics
elapsed since the user disconnected, or zero
if still connected. "quittime" is exposed to Lua.
2020-01-22 03:05:08 +01:00
MascaraSnake
bac379a7a3 Merge branch 'udmf-next' into stringargs 2020-01-11 16:03:38 +01:00
MascaraSnake
f0d663ea90 Adapt setup of linedef type 443 (Call Lua function) to UDMF 2020-01-11 15:38:50 +01:00
Zachary McAlpin
11d21dd950 Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2 into playerthink-hook 2020-01-08 18:52:56 -06:00
James R
0bbc11c2a9 Merge branch 'lua-neatstuff' into 'next'
Extra functionality for lua

See merge request STJr/SRB2!601
2020-01-05 20:54:17 -05:00
Zachary McAlpin
dc51ba6b64 Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2 into playerthink-hook 2020-01-01 17:11:19 -06:00
Jaime Passos
35ff383a4a Rename `seenplayer to seenfriend` 2020-01-01 15:17:29 -03:00
Nami
ef4840555e Add MobjLineCollide hook 2019-12-31 15:17:02 -08:00
Jaime Passos
1c048275da **NEW!** hook_SeenPlayer 2019-12-31 14:37:45 -03:00
Nami
a36920808b Revert changes to searchBlockmap because on reflection, the benefits didn't outweigh breaking every current usage of it
Readd ThinkFrame in its original position
PostThinkFrame now runs at the end of P_Ticker, only MapEnd runs after it
2019-12-30 19:04:27 -08:00
Nami
58dd578b09 Let's try this again! 2019-12-29 20:36:24 -08:00
Zachary McAlpin
9fe20aa1a3 Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2 into playerthink-hook 2019-12-26 17:29:54 -06:00
Zachary McAlpin
e08b3b691f Merge branch 'next' of https://git.magicalgirl.moe/STJr/SRB2 into playerthink-hook 2019-12-26 16:59:47 -06:00
Alam Ed Arias
61a0197339 Merge branch 'next' into gametype-clownery 2019-12-26 14:48:04 -05:00
Monster Iestyn
5241030012 Fix ShouldDamage, MobjDamage and MobjDeath hooks all messing up the pushing of variables to Lua as function args, by adding damagetype support where it was missing!
The above issue occured only if you had both a generic hook and a type specific hook for a particular hook type. This way, the stack is never updated to include damagetype at the start, and all pushes of the variables get offsetted by 1 compared to what they should be, once the code *expects* damagetype to be included in it.
2019-12-25 21:48:59 +00:00
Jaime Passos
a657392d39 ViewpointSwitch improvements. 2019-12-23 20:22:57 -03:00
Zachary McAlpin
124a0754a6 Revert "Added CalculateCamera Hook"
This reverts commit 9f82cdb401.
2019-12-19 17:21:55 -06:00
Zachary McAlpin
9f82cdb401 Added CalculateCamera Hook 2019-12-19 16:41:25 -06:00
Jaime Passos
00440224d2 De-fuck team change 2019-12-19 00:31:13 -03:00
Jaime Passos
5da55e8b76 Shadowed variable declarations whoopsie!!! uwu 2019-12-18 23:53:26 -03:00
Jaime Passos
6f857df5e5 ViewpointSwitch hack so nobody does anything evil
Prints the generic "can't do this in a HUD hook" message. Whatever. I'm tired.
2019-12-18 23:47:17 -03:00
Jaime Passos
be5fd1a0db TeamSwitch hook for Lua 2019-12-18 23:40:58 -03:00
Jaime Passos
0421c81e04 ViewpointSwitch hook for Lua 2019-12-18 20:43:54 -03:00
Zachary McAlpin
87b816e408 Added PlayerThink hook 2019-12-14 15:28:24 -06:00
Steel Titanium
d415cd5c6d
Update copyright date on source files 2019-12-06 13:49:42 -05:00
Steel Titanium
597949f370
Change this for consistency. 2019-10-14 21:47:20 -04:00
Steel Titanium
0f79396757
New intermission thinker hook 2019-10-13 20:50:46 -04:00
toaster
3eb9b85fd4 "PlayerCanDamage" hook!
* Takes function(player, mo) input.
* Return TRUE for stating that yes, the player is in a state that can cause contact damage, do with that what you will.
* Return FALSE for stating that no, the player is weak and vulnerable and cannot cause contact damage, do with that what you will.
* Return NIL for allowing the function to continue regular operation.

Fills a different ideological niche than ShouldDamage - that's for determining whether damage dished between two objects should happen, this is for determining which way around damage should be dished when considering a player-object interaction.

Or, in other words, think of it as "ShouldDamage is whether damage that has been requested should be granted, for object-object interaction, while PlayerCanDamage is for whether global player properties should cause damage to enemies and monitors in the first place, like spinning, hammering or stomping."
2019-06-19 12:55:05 +01:00
toaster
28dfeb344b Instead of only performing a hook if the Lua Hook loop determines its type to be the one we want, actively continue through the loop if it's NOT. This optimisation was performed while preparing the following commit; I have generously split them out for less shitty commit-by-commit review. 2019-06-19 12:28:57 +01: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
Nev3r
caaacf3f76 Fixed the shield spawn/special hook cases on the hook add switch.
They basically work now.

Signed-off-by: Nev3r <apophycens@gmail.com>
2018-12-24 17:31:00 +01:00
Latapostrophe
c7060aa5ad Remove mute boolean from playermsg hook, fix username stuff still being there, potential memory leaks, and added back the ip message. 2018-12-22 16:44:58 +01:00
Latapostrophe
45aba493c7 2.1.21 and all of the kart additions. Woo. 2018-12-17 20:43:59 +01:00
Jimita
6d7689c1a7
Merge branch 'next' into lua_mapchange 2018-11-30 15:10:59 -02:00
MPC
54cae84849 Change MapChange so Lua returns the map number you change 2018-11-30 14:01:40 -03:00
Monster Iestyn
1b2aea81dc Merge branch 'master' into next 2018-11-25 20:39:17 +00:00
mazmazz
ea7162a76a Update source copyrights to 2018 2018-11-25 07:35:38 -05:00
Monster Iestyn
896de73c60 ....ow this slipup hurt me badly 2018-11-10 16:00:33 +00:00
Monster Iestyn
268bde3fdf Merge branch 'public_next'
# Conflicts:
#	src/d_netcmd.c
#	src/d_netcmd.h
#	src/dehacked.c
#	src/g_game.h
#	src/hardware/hw_draw.c
#	src/hardware/hw_main.c
#	src/lua_baselib.c
#	src/lua_hook.h
#	src/lua_hooklib.c
#	src/lua_hudlib.c
#	src/lua_libs.h
#	src/lua_maplib.c
#	src/lua_script.c
#	src/m_misc.h
#	src/p_mobj.c
#	src/s_sound.c
#	src/sdl12/mixer_sound.c
#	src/w_wad.c
2018-11-10 15:41:57 +00:00
Monster Iestyn
d8f3a20e65 Merge branch 'Playerquit_hook' into 'next'
"PlayerQuit" Lua Hook

See merge request STJr/SRB2!127
2018-11-08 15:53:35 -05:00
Monster Iestyn
61176ee736 Merge branch 'public_next'
# Conflicts:
#	src/doomdef.h
#	src/sdl12/macosx/Srb2mac.xcodeproj/project.pbxproj
#	src/win32/win_vid.c
2018-01-02 17:32:24 +00:00
Monster Iestyn
c7cd64583d Added a bunch of I_Asserts to lua_hooklib.c relating to mobj types just in case 2017-12-17 20:59:24 +00:00
toasterbabe
844416855f Smiles follow-mobj initial support! Still using a Lua hook to follow closely behind, but now it doesn't need to be a generic thinkframe. Woo! 2017-10-02 14:08:58 +01:00
Monster Iestyn
0dd15ed8a4 Merge branch 'master' into lua-lump-load-only 2017-07-09 15:06:15 +01:00
Monster Iestyn
1462c638cb Added the "lua_lumploading" variable for restricting certain Lua functions to lump load time only 2017-04-25 21:45:53 +01:00
Monster Iestyn
a6f830ddff Add the "MapThingSpawn" hook to Lua 2017-04-15 21:41:22 +01:00
Monster Iestyn
e3ded1671c Added MobjMoveBlocked Lua hook
Also slightly edited P_XYMovement to properly check the mobj still exists before checking its eflags for MFE_SPRUNG, while I was at it
2017-01-21 23:49:18 +00:00
Inuyasha
37c8ef6369 Merge branch 'public_next' of http://git.magicalgirl.moe/STJr/SRB2Internal 2016-12-22 17:46:39 -08:00
Louis-Antoine
db20bfb3c3 Generic mobj hooks are now run before mobjtype-specific mobj hooks, and player/linedef executor hooks now have their own lists 2016-12-15 21:05:54 +01:00
Prisima the Fox
dd13df2308 Whoops, didn't see the duplicate line. 2016-12-03 18:18:16 -05:00
Prisima the Fox
d788cb7676 Keeping the lua_gettop(gL) thing, otherwise the player/reason values will be pushed once to the stack each for every hook. Thanks MonsterIestyn! 2016-11-25 15:20:41 -05:00
toasterbabe
85fb02aaf6 Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal.git into shield-actions
# Conflicts:
#	src/p_inter.c
#	src/p_user.c
#	src/st_stuff.c
2016-11-20 16:44:38 +00:00
Prisima the Fox
b1ce5896aa Remove boolean remnants 2016-11-08 10:30:01 -05:00
Louis-Antoine
6f4699fb77 MobjThinker, MobjCollide and MobjMoveCollide hooks are now directly linked to the mobjtype they belong to, so you no longer iterate through all existing hooks. 2016-11-04 18:56:25 +01:00
toasterbabe
0ee2937392 Adding ShieldSpecial hook. (Activates under different circumstances to the JumpSpinSpecial hook, and can be used to cancel existing shield actions.) 2016-10-24 13:52:52 +01:00
Prisima the Fox
defc7c1645 Oops; PlayerQuit isn't a boolean! 2016-10-20 23:26:41 -04:00