Commit Graph

51 Commits (ed163203d8da35e39e245fa36f4fbf6e9d25687b)

Author SHA1 Message Date
MysterD 2eb2b8c18f Make GraphNode flags mutable from lua again 2023-05-15 01:19:10 -07:00
MysterD 2083242b66 Fixed several crashes and errors found in static analysis 2023-05-15 01:15:20 -07:00
MysterD f785050ccb Fix more possible crashes 2023-05-11 00:19:01 -07:00
MysterD d30b1e61a6 Add a container to animation tables so that we can track their length and stay in bounds 2023-05-10 20:57:35 -07:00
MysterD b863cc80c8 Prevent several possible crashes and hangs, limit more struct fields to read-only 2023-05-10 13:25:41 -07:00
MysterD cb499491f4 Fix crash in network_receive_lua_sync_table 2023-05-07 22:46:00 -07:00
Prince Frizzy ee3a7018ab
Adds support for compiling other regions (#378)
* Initial support for compiling with EU.

* Fix EU text.

* JP now compiles, TODO: Fix Autogen to fix JP and fix text in djui.

* audio: Prevent crash in EU.

* audio: Sync EU audio to 60 Hz instead of 50 Hz

* Add logging and remove sanity check to hopefully track EU crash.

* Various improvements for EU

Improve some memory debugging
Improve sound debugging
Initalize some variables in load.c for the sound system
Synchronize the EU cutscenes with the US version.

* Fix credits music playing in EU, Document some EU audio code.

* Autogen now supports version excluded object fields and functions. Reran autogen in accordance.

* Fix some potentional shifting issues due to version differences.

* Decrease the sleep times in some spots, We do not need them to be so long. (#373)

* Add the region to the version string.

---------

Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
2023-05-03 00:54:25 -07:00
Isaac0-dev 08d31b8255
give mods more control over animations (#369)
* give mods more control over animations

- added HOOK_ON_OBJECT_ANIM_UPDATE
- make some animation values mutable

* add to docs
2023-04-29 01:56:18 +02:00
MysterD 9cfa078b5e Make gMarioStates->controller immutable in Lua 2023-04-01 17:16:18 -07:00
MysterD b596cb2af2 Figure out a ping between every player, adjust resend rate based on it 2023-03-27 11:50:32 -07:00
Agent X 4e293712fd
Expose Paintings to Lua (#279)
* Expose paintings to Lua

* Make some "dangerous" fields immutable

I just thought being able to edit paintings IDs from Lua was a little bit too much.
2023-02-16 18:54:38 -05:00
Agent X 35f7caecc1
Improvements and optional tweaks (#263)
- Added visibleToEnemies to invisible fields
- Added cur_obj_set_billboard_if_vanilla_cam() which makes trees only billboard if free camera is off
- Added RespawnShellBoxes to gBehaviorValues
- Added pauseExitAnywhere to gLevelValues
- Disabled the power meter chime playing on the main menu whenever disconnecting from a server with low health
2023-02-08 10:51:07 -05:00
Agent X 4b84a87c6f
Mod storage, network_discord_id_from_local_index and other small changes (#200)
* Mod storage & network_discord_id_from_local_index

Introducing mod storage, a key/value system for saving things like high scores or settings or anything like that to AppData\Roaming\sm64ex-coop\sav\mod-name.sav (Windows example)
You can currently save only strings meaning if you want to save a number you'd need to do
mod_storage_save("score", tostring(score))
and then
score = tonumber(mod_storage_load("score"))
To handle types like that.
network_discord_id_from_local_index() returns the discord ID of a player by local index.
Some misc changes I made were removing the unsed ini.h include in save_file.c and making the autogen converters output LF line endings instead of CRLF on windows.

* Prevent getting id if using direct connect

* Update djui_panel_player.c

Why does this bother me?

Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
2022-09-26 19:28:26 -07:00
Agent X 6c0757c908
Color type and palette/color functions (#199)
Added a Color type (typedef u8 Color[3])
Added network_player_color_to_palette and network_player_palette_to_color
Reran autogen
2022-09-26 19:11:51 -07:00
TheGag96 dc3ca7c76d
Arbitrary shirt, pants, glove colors + settings menu (#145)
* Support for more granular player colors

You can now configure RGB values for shirt, pants, gloves, and shoes.
Due to some limitations, configuring shoes does nothing at the moment.

* Remove paletteIndex and friends

Restructured and filled in some remaining code to account for that.

* Add Edit Palette panel to Player panel

* Change PlayerPalette contents to an enum-indexed array, remove shoes

This gets rid of all the hokey code doing switch cases on the
different parts.

* Fix goof with player model selection box

Should actually have affect now even if a custom palette is being used.

* Fix gap in player color display list commands

The extra space was leftover from when I was trying to get shoes
working. Forgot to clean it up.

* Standardize PlayerParts enum, including for lua constants autogen

* djui_panel_player.c: Properly hook sending palette changes on unpause

Editing the palette and then unpausing should send out the packet to
everyone with the new palette changes (and update the palette preset
selection box), but since we weren't hooking that situation before, it
would stay changed only for you. You would have had to press the Back
button for it to work right.

* Allow Lua mods to continue using `paletteIndex`, `overridePaletteIndex`

This lets mod code like this still work unchanged:

if s.team == 2 then
    np.overridePaletteIndex = 7
elseif s.team == 1 then
    np.overridePaletteIndex = 15
else
    np.overridePaletteIndex = np.paletteIndex
end

It's essentially faked, and would work strangely if the value of either
variable was inspected more closely directly. This should at least
handle the typical use case, though.

Every frame, `overridePaletteIndex` is checked to see if it was modified
from its previous value. If so, `overridePalette` is set to the preset
corresponding to the index. `paletteIndex` contains a special value that
when used to assign to `overridePaletteIndex`, it copies `palette` into
`overridePalette` to restore the real colors, which of course may not
follow the presets at all.

* characters.h: Pack `PlayerPalette` to eliminate size differences between computers

* mario_misc.c: Remove remaining "TODO GAG"
2022-08-07 15:13:19 -07:00
MysterD 946f16329c Added ability to have completely custom levels that don't override anything 2022-06-05 21:55:31 -07:00
MysterD 725e26fe83 Make bass sound interface easier to handle 2022-05-08 04:04:14 -07:00
MysterD 0d29a29c1b Use binary search for all Lua cobject fields 2022-04-22 18:51:25 -07:00
MysterD 5cfef9abb3 Added gActiveMods global to lua 2022-04-22 18:44:59 -07:00
MysterD c75e71f24e Unhardcoded all behavior dialogs, allowed replacement of dialogs 2022-04-09 19:50:50 -07:00
MysterD defb7dc830 Made trajectories overridable from Lua 2022-04-08 23:01:41 -07:00
MysterD 6a7712b1c8 Allow Lua to adjust default star spawn positions 2022-04-08 00:37:20 -07:00
MysterD de048928ce Added ability for Lua mods to adjust gServerSettings 2022-03-26 01:08:15 -07:00
MysterD 033b11ac22 Make new timers immutable 2022-03-25 21:39:03 -07:00
MysterD 08d4818ba7 Added Lua definitions for autocomplete in visual studio code 2022-03-12 21:28:57 -08:00
MysterD 497a250476 Allowed Lua mods to override player models and palettes 2022-03-10 18:23:25 -08:00
MysterD 89d44f6501 Moved smlua_XXX_utils.[ch] to src/pc/lua/utils/ 2022-03-09 23:09:33 -08:00
MysterD 4638ff6f22 Added the ability to set surface collisions on custom behaviors 2022-03-09 23:02:20 -08:00
MysterD d03aacc144 Added ability for Lua to spawn non-synchronized objects 2022-03-09 21:25:34 -08:00
MysterD 1b99e22848 Added the ability to spawn particles from Lua
Added particles to football
Increased the object cap for particles
2022-03-09 21:25:07 -08:00
MysterD c2177b4eec Add collision_find_surface_on_ray() 2022-03-05 14:24:58 -08:00
MysterD e4f72105a3 Update Lua documentation autogeneration 2022-03-04 22:22:31 -08:00
MysterD a87116a632 Add networking for custom behaviors 2022-03-04 20:03:00 -08:00
MysterD 3bc80ad7be Add object animations to Lua, add CPointer allowlist 2022-03-03 18:31:45 -08:00
MysterD 3ad6c721dc Initial custom behavior commit 2022-03-03 01:04:15 -08:00
MysterD 33ced38baa Various Lua object API improvements
Lifted immutablity of most Lua struct fields
Added object constants to Lua API
Added ability to set struct pointers in Lua API
Prevented respawners for Lua-spawned objects
2022-02-25 18:30:05 -08:00
MysterD 8d81d8df50 Fix compile issues for Linux/Mac 2022-02-20 20:23:10 -08:00
MysterD b3e21d7edc Added object fields to Lua API 2022-02-19 13:51:02 -08:00
MysterD 3274fca929 Binary search Lua struct fields 2022-02-18 23:39:18 -08:00
MysterD 669e17bc18 Added global textures 2022-02-15 22:14:55 -08:00
MysterD 29599a82ec Created TextureInfo struct 2022-02-15 22:13:10 -08:00
MysterD 941375718b Added CPointers to Lua/autogen 2022-02-15 22:09:21 -08:00
MysterD 62517c6bce Print totals when autogenerating lua documentation 2022-02-05 13:33:22 -08:00
MysterD f4279924fb Added read-only column to Lua struct documentation 2022-02-04 01:32:19 -08:00
MysterD cf34aa0b08 Added support for returning structs from C to Lua 2022-02-03 00:43:08 -08:00
MysterD 271a375510 Added immutable strings to autogen, added djui_popup_create 2022-02-03 00:42:31 -08:00
MysterD c59aeedf78 Added gNetworkPlayers to lua api 2022-02-02 19:24:51 -08:00
MysterD c170984471 Autogenerated Lua documentation 2022-01-29 22:47:22 -08:00
MysterD 0aa8cd0e35 More improvements to Lua
autogenerated functions for characters.h

Fixes in autogen:
	improvements to LVT/LOT conversion
	improvements to immutability status

Updates to character-movesets.lua, every character has a moveset now

Added .type to stuct Character

Prevented unimplemented actions from crashing the game
2022-01-26 20:35:13 -08:00
MysterD bf2969be04 More Lua improvements
convert_functions.py no longer hardcodes acceptable LOT_ values
Added characters.h and surface_collision.h to convert_structs.py
Prevented mod filenames with a slash in it from being considered acceptable
Sanitized mod filenames when received from the server
2022-01-25 20:28:34 -08:00