Three new functions have been added, to be able to change the respective mod menu elements' values:
- update_mod_menu_element_checkbox
- update_mod_menu_element_slider
- update_mod_menu_element_inputbox
* Update math_util.c and math_util.h to move toward inlining functions instead of macros for autodoc. Expose some misc functions useful to lua
* Fix formatting
* Fix math_util.c formatting
* Fix formatting for smlua_math_utils.c
* Fix formatting smlua_functions.c
* Fix type redundancy in _Generic macros
* Add checks for including the highly optimized builtin compiler functions for GCC/Clang
* Add compiler checking for absx() to add in the highly optimized GCC/Clang builtins
* Fix repeated use of float built-ins for non floating point numbers
* Fix grammar mistake
* Fix functions to use camelCase as requested.
* Fixed the use of a custom sqrt approximation as modern procs have a built in FSQRT instruction that is faster.
---------
Co-authored-by: js <js@cartbara.columbus.rr.com>
* Add a menu where mods can put their options at
* Document mod menu hook functions
* Add HOOK_ON_LANGUAGE_CHANGED
* Add new Cheats mod
* Make player menu disable singleplayer pause
* fix some git merge conflicts that weren't resolved (#55)
and added -latomic to build flags to fix compile warnings while compiling miniaudio
* Remove legacy 'deluxe' field from built-in mods
* Lots of improvements to memory safety
* Abbreviated hex color parsing
Co-Authored-By: Mechstreme <84944335+mechstreme@users.noreply.github.com>
---------
Co-authored-by: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com>
Co-authored-by: Mechstreme <84944335+mechstreme@users.noreply.github.com>
* Properly set Mario's y vel to 0 on popping
* Change 0 to 0.0f, just in case
* Re-introduce a few vanilla bugs under gBehaviorValues
The Shell Mario glitch was patched as a side effect to patching a different bug, but several romhacks use it so I need it back.
The ability to collect multiple normal caps at once is needed for hat-in-hand using the hat factory glitch.
* Fix Shell Mario fix
Found the actual reason why the glitch doesn't work and figured that this change shouldn't affect anything else, so I removed its entry from gBehaviorValues.
* Add InfiniteRenderDistance to gBehaviorValues
I'm well aware that disabling the infinite render distance will be very desync prone, however a few glitches, most notably cloning and chuckya double jump, need objects load and unload from render distance.
* Allow mods to disable the camera centering from romhack camera
* Allow mods to disable romhack camera centering
Done again
* Update on network shutdown
* Remove a line which I have no idea why it returned
* Add set_exclamation_box_contents()
No way this is memory safe or even well made but I did what I could
* Added (most of) peachy's suggestions
Still need to figure out how to stop the game from reading further than the size of the array without using a hardcoded number
* Added more of peachy's suggestions
I figured a good way to cap how far the exclamation box reads is to pass in the length of the array as well
* Properly set Mario's y vel to 0 on popping
* Change 0 to 0.0f, just in case
* Massively increase surface pool size
Also exposed the surface pool counts by creating a few functions to get them. They only existed for debugging but may as well keep them.
* Allow extended moveset to be toggled from a chat command
I got permission to edit extended moveset. Eventually I'll try to see if I can improve upon this moveset.
* Remove old surface code
Part 1
* Heavily document manual.lua
Hopefully nothing I added is wrong
* Small change in descriptions
* Expose globally custom behaviors defined with hook_behavior; macros for mod strings max length
* fixes
* made customBehaviorIndex a mod field to be more relevant
djui_hud_render_texture_tile: allows user to draw a part of a texture instead of the whole texture (tilesets)
increased GFX pool size from 512kB to 4MB
increased main memory pool size from ~11MB to 32MB
* Allow Lua action hooks to specify custom functions for more behavior
...like gravity, and update all current mods to match.
Spin jump and wall slide from the Extended Moveset mod now have gravity
code basically matching the original mod.
Currently, any place you'd want to use one of these new action hooks
still requires an O(n) check through all action hook per call. This
should probably be changed.
* Fix some remaining issues with Extended Moveset Lua port
- Remove divergent spin jump code
- Remove divergent roll code
- Remap roll button to Y
- Reimplement dive slide to make dive hop work like the original
- Allow spin from double jump, backflip, side flip
* Fix more issues with Extended Moveset Lua port
- Reimplement all users of update_walking_speed to incorporate the Tight
Controls edits and modified speed caps
- Fix instances of angle arithmetic to wrap properly across the mod
* Don't chop off group bits of custom action flags; assign missing groups in mods
This fixes the Extended Moveset's underwater actions. Chopping off those
bits was making the game consider the underwater actions to be a part of
the Stationary group, which caused `check_common_stationary_cancels`,
which upwarps Mario to the surface.
* Tweak roll sliding angle tendency
Rolling will now gradually (but fairly quckly) try to tend Mario's
facing angle down the slope.
This is cleaner than my old method that tries to flip Mario's angle
(wrongly) when he begins moving downward, having that logic coexist with
the logic for normal sliding actions that can also tend Mario to face
backward down the slope. Just looks ugly now by comparison.
* Disallow spin jump on slides in Extended Moveset port
This matches the original mod
* Extended Moveset: Crazy Box Bounce check
* Extended Moveset: Fix hugging the wall when spin jumping after wall kick
* Extended Moveset: Fix ledge drop snapping up to ground
Just reimplement `act_air_hit_wall` ourselves.
* Extended Moveset: Add Kaze's walking speed fix
* smlua_hooks.c: Restore option to use old API for hook_mario_action
The intent is to allow mods outside of this repo to continue working.
Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
* 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"