* Make cheats much better and add new ones
Improved some, added some.
- Formatted cheats code to fit with the rest of sm64's naming style of things like structs
- Cheats will now always check for gServerSettings.enableCheats instead of its own variable
- Moon Jump: Increased vertical speed, automatically exit bonks
- God Mode: Tiny code improvements
- Super Speed: Exponentially improved, moved to step code and now works as it always should have
- Rapid Fire (New): When on, A will become rapid fire
- Always Triple Jump (New): When on, Mario will triple jump regardless of forwards velocity
- BLJ Anywhere (New): When on, spam A while BLJing to BLJ anywhere
* Add m->playerIndex == 0 checks
/luaf command to execute lua code from a file. Note that this command doesn't load the file the same way mod files are loaded, so no access to gGlobalSyncTable and gPlayerSyncTable. hook_chat_command cannot be called, but hook_event can.
Fix some compilation issues
* [WIP] fix warnings
Committing now as is for Isaac to take a look at this.
Having issues with VERSION_TEXT
* Fix VERSION_TEXT crash and stop demos on host
* HOOK_JOINED_GAME
* expose VERSION_TEXT, and two more adjusments
* show if a constant type is a string with autogen
* fix another blunder by that guy
* should use an or operator here
* fix frame limiter stuff
* Fix fixed collision NaN position
Thanks to @Marioiscool246 for figuring this out.
Sometimes Mario's position will become NaN when doing specific things, this fixes that.
Co-Authored-By: Marioiscool246 <27823923+Marioiscool246@users.noreply.github.com>
* Formatting
Co-Authored-By: Marioiscool246 <27823923+Marioiscool246@users.noreply.github.com>
* Fix ordering
* Final fix(?)
---------
Co-authored-by: Marioiscool246 <27823923+Marioiscool246@users.noreply.github.com>
- Add NULL checks to DynOS warps
- Change checks for skipping interpolation on the original title screen for much better ones
- Interactions are no longer processed if you are on the title screen
- Re-add some of the legacy demo code for the original title screen
- Fix disconnecting on the original title screen
- Fix disconnecting on the act select screen
- Fix interpolation crash
* Bring back the demos from vanilla
the demo will activate if you are on the level that demo was meant to be from, and the default amount of time has passed
* clean up a bit and check a few things
* reset the demo input table
* config option/prevent demos playing on player menu
* update demo playing
- keep playing level music after demo finishes
- stop the demo if the player changes main menu level
* made all bools u8 for consistency with fixCollisionBugs
* preview blue coins + visible secrets
* preserve indexing
* star number
* hud cap timer
* red coins radar + secrets radar
* extended pause display
* autogen
* only sDynosBuiltinFuncs is sensitive to indexing
* rebased
* Small quality of life changes
Disabled fixed collision in sm74 by default.
Popping should now completely set the popped player's speed to 0.
* Add HOOK_BEFORE_SET_MARIO_ACTION
Param: incoming action
Return: changes incoming action
If the return value is 1, prevent the action from happening entirely.
0 can't be used here since it'll break the title screen.
* Update hooks.md
* Revert "Small quality of life changes"
This reverts commit 05dd235cd0e3633bf1da48bc2f9f0b8a3db087ee.
* Small improvements to HUD and new functions
- Split HUD_DISPLAY_FLAG_CAMERA_AND_POWER into HUD_DISPLAY_FLAG_CAMERA and HUD_DISPLAY_FLAG_POWER
- Added hud_is_hidden()
- Added camera_is_frozen()
- Added extra sanity check to hud.c
* Re-add old flags
* Fixes and improvements
* Mod compatibility
* area_get_warp_node*
- Added area_get_warp_node to Lua
- Added area_get_warp_node_from_params to Lua
* area_create_warp_node and warp constants
Here you go Isaac!
* Add object param
* Commits work again, pushing everything else
* fix player connected spam on joining a game
* make it possible to actually disable interpolation
by setting the frame limiter to 30
also move the "Disable Popups" option to misc settings.
* maybe someday ill learn to read.
* one day.
* added gLevelValues.wingCapLookUpReq
* Added gLevelValues.wingCapLookUpReq
* Added gLevelValues.wingCapLookUpReq
* Added gLevelValues.wingCapLookUpReq
* Added gLevelValues.wingCapLookUpReq
* Changed the look up warp star req
Hidden Palace can only be accessed at 120 stars.
- 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
* Character Sound Hook
* The rest of autogen to be safe
* Indentation Fix
* Fix more indentation
* Get rid of unneeded auto gen junk
* Run autogen again
* Add HOOK_CHARACTER_SOUND to guide
* A bunch of LUA autogen additions.
- Add support for Vec4f, Vec4s and Mat4 in the autogen.
- Improve error messages for improper argument counts
- Added support for more pointer types in the autogen.
* Fix offsets in sMat4Fields.
* autogen: Rework this at the request of DJ.
Bug:
Clicking on Palette Preset to cycle through palettes overwrites and erases the custom palette
Fix:
Added config values coop_custom_palette_* to save the custom palette colors
Clicking on Edit Palette now sets the current palette to Custom and loads the custom values instead of using the previous preset selected
In the vanilla game, vanish does only work with walls specifically, and not floors and ceilings. This is because the check for vanish surfaces was only implemented with the walls. So I simply pasted the same code but with the floors and the ceilings.
- Add new functions for objects, Feel free to flesh some out if need be.
- Fix long-standing issue with our LUA garbage collection, It will now run after all our hooks do to prevent buildup which causes lag.
Adds in bassh_stop_sample for source and audio_sample_stop for Lua. These functions immediately stop whatever audio the specified sample is playing.
If used in tandem with #223, this allows you to create custom character voice clips without them ever overlapping with each other.
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
includes the message string and the mario state of the player
return false to prevent the message from showing (might be possible to make a chat flter with this?)
If either Non-Stop or Stay in Level is on for On Star Collect, collecting a multiple of 50 coins should give everyone in the level a life.
This would act as a solution for the lifes you would normally get after getting a star.
In SM64 when exiting a level, every 50 coins up until 150 you get a 1 up, except you can't exit the level in stay in level or non stop so there's the main problem which this PR addresses
Added CAP color part; Player's cap no longer uses the SHIRT color
Added METAL color as an alias of CAP color; Metal characters now uses the CAP color to tint the metal texture (was SHIRT color)
Fixed the cap inside color (was HAIR color)
Fixed the near/far warning
Add the Lua Profiler to the debug menu.
Prevent Mario from sleeping on the main menu.
Fix IP address string corruption when saving the config file.
Bring back the Discord fatal message.
* Fixed naming from ceil to cell
* Added HOOK_ON_QUICKSAND
* Modified hook and removed weird newlines
* Renamed hook and increased usage
HOOK_ALLOW_QUICKSAND -> HOOK_ALLOW_HAZARD_SURFACE
Now also works on lavaboost.
Suggestion by Agent X. May add this hook to the death barrier check.
* Autogen
* Fixed downwarping to quicksand upon popping
As a side effect though, Mario will no longer snap to the floor upon being popped.
Add get_dialog_box_state
Prevent some attacks from registering as pvp attacks.
Clean up all cases of camera.lua
Put gLastCollectedStarOrKey in a better spot.
Clean up my moderator code a bit, changing gIsModerator to boolean.
Brang back kicked, banned and full party messages.
Fixed a warning on older compilers like raspberry pi's and use configAmountofPlayers instead of MAX_PLAYERS
Fixed compiling with the flag DISCORD_SDK off.
Added "Fixed Collisions" to the debug menu.
Added HMC, CCM, RR, BITDW, PSS and TTC to the main menu options.
Fix my own oversight; Prevent the port from being duplicated in the join menu. (temporary fix)
Hopefully bring back the crash handler on windows by not checking for termination signals on windows
* 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>
* Unhardcoded ceiling and floor limits
* Revert "Unhardcoded ceiling and floor limits"
* Revert "Revert "Unhardcoded ceiling and floor limits""
This reverts commit 71b2da4c4b898cda73f211620d138b346370d2ce.
* Let's try that again
It now only appears when someone stops hosting and you are disconnected from their lobby, I also changed the text to "Disconnected: server closed" in case it wasn't obvious
Just a simple code cleanup opportunity I saw
"I won't be porting this to the web" - djoslin
Compiled and tested everything to see if it works, feel free to check yourself or look over the code
Also, I noticed TARGET_N64 was there too, might do a clean up on that since we all know this isn't getting ported to the N64 anytime soon.
More lives fixes, death loop fix, add a null check and add get_dialog_id()
add a way to disable rom hack cam collisions
expose more sound management functions
* Add gsDPSetTextureFilter to DynOS symbols
* Refactor code and fix 2 year oversight
Refactored the main menu background code, now uses vec3f_set instead of manually setting every vector
Also finally fixed the bug where you load in with only 3 lives, this has been in coop for 2 years now and was likely made as a test for syncing live count and was never reversed.
* add skipInViewCheck to GraphNodeObject
* Remove idle set
Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
* 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"
* First attempt
First attempt at having other Mario objects create ripples.
Works very inconsistently, the position of players not currently interacting with the painting seems to influence whether the ripples will work or not
* Moved nearest mario code from geo_painting_update
Instead of using the nearest mario object for geo_painting_update, I use it in painting.c functions that called for gPaintingMarioXYZPos, substituting the nearest Mario object's position instead, as well as using it for the last floor mario was over.
This method still isn't quite perfect and there's a few more things I'd like to fix/change.
1. If a Mario is closer to the painting (perhaps right against the middle) other Mario's can't trigger ripplings at all unless they get closer than the closest Mario
2. I would like for all Entry and Exit ripples to interrupt each other, meaning if multiple Marios jump in, each one triggers a ripple one after the other
3. I want to hear the other player's exit sounds
* Add currPositionValid
Sets currPositionValid to false for NetworkPlayers who are connected, who changed levels to a level different from the local player, and who are not the local player when the local player changes levels.
* Set currPositionValid
Sets currPositionValid to false for update packets that don't match local area.
Sets it to true for update packets that do match local area.
* Send change area/level immediately
Adds a function network_on_loaded_area2() which only sends a change level or area event and doesn't clear the sync ids.
Calls this function almost immediately as opposed to waiting for LOADING_LEVEL_THRESHOLD frames
* Add currPositionValid to NetworkPlayer
currPositionValid (which is used by painting.c to determine if a player should be considered for the closest player to the painting) is a variable that tells you if a network player's marioObj has a position which can be relied upon as a valid position for that player.
network_player_update_course_level sets it to false for a network player if the new location does not match the local player's location.
network_receive_player sets it to false if a network player's update is from a different location than the local player, but sets it to TRUE if the update is from the same location.
update_course does NOT set it to true, because the location is not sure to be valid until we've received a location from the player with the right location attached to it.
* Use currValidPosition correctly
Uses currValidPosition correctly, also add debug text for seeing closest player to painting.
* fix merge
* Fix merge
* Verboser logging and invpos on enter
* Multi collision arrays
* Removed nearest code, added comments
* Added simultaneous ripples on one painting
* Added commented Gamepad from Background line
* Removed debug logging
* renamed secondary network_on_loaded function
* Added early multiple paintings rippling at once
* Added multiple paintings rippling simultaneously
Co-authored-by: djoslin0 <djoslin0@users.noreply.github.com>
Added two options, one which lets user choose which gamepad to use, and one
which allows game to be played with gamepad while in the background.
These two features together allow for "splitscreen" (sort of) multiplayer by
starting up instances and joining them together and selecting different
gamepads for each one.
Gamepad choices are 0-7. If a number is chosen that does not correspond to a
gamepad, the previous gamepad (last number you were on this session that had
a working gamepad) is used.
Moved dynos parsing for bhvs and models to a common file
Fixed recursive descent to correctly parse the entire expression
Adjusted bhv generation to use recursive descent
Switched all known behavior comparisons to the overridden versions
Fixed issue with Chain Chomp in star road
Unhardcoded KingBobomb values, Mips values, star dialog values
Generated tex files when they're of the form levels/XXX/NUMBER
Now lua behaviors can call cur_obj_set_home_once() to set home correctly
Lua behaviors are now overridden correctly when created through spawn infos
Behavior checks now translate to the overridden behavior before checking