Very similar to Hide & Seek but a bit different.
Hiders (single sardine) and seekers (sardines pack) are kind of inverted.
The seekers (isIt = true) are hiding, and the hiders (isIt = false) try to find them.
The timer counts up for the seekers and not for the hiders.
Only one player can change from hider to seeker via the button combination.
Other hiders need to touch a seeker to become a seeker themselves.
A hider that dies doesn't join the seekers, but when a seeker dies they become a hider.
A round ends when all hiders have joined the seekers as usual.
The sardines game mode has three toggable options:
- Gravity: as in H&S mode
- Tether: Binds the seekers (sardines pack) together, by adding a force when moving apart
- Tether Snapping: Change from seeker to hider when too far away from other seekers
---
Changes compared to the original cherry-picked version:
- fix: gravity camera in Sardines mode doesn't crash the game anymore
- fix: logic for the big sardines icon (and timer control) isn't wrongly inverted
- (this was only an issue in the `freeze-tag` branch when unpausing)
- change: combined sardine config menu buttons to single toggle buttons
- change: not closing the sardines config menu after changing an option
- change: send gamemode NONE when Sardines is selected but not active
- change: improved distance calculations in squared distance space
- change: possibility to always change settings in the Sardines config menu
- add: toggle options to control mario/cappy collision/bounciness
- add: show sardines specific controls in the debug menu
- remove: new players list (moved to PR CraftyBoss/SuperMarioOdysseyOnline#68)
- remove: unlock costume doors (moved to PR CraftyBoss/SuperMarioOdysseyOnline#69)
(cherry picked from commit a9b2c87aa0)
(cherry picked from commit 1955d76bfc)
(cherry picked from commit f8eef7fb97)
(cherry picked from commit 2a0d0e7724)
(cherry picked from commit 918f61fbfd619d781d88dc74878d392c48cfa480)
(cherry picked from commit 96aff7dd7167d8244acef7884fa3503d4c3f868a)
(cherry picked from commit 0fb6413ec91bbf679e9f8cea1aa512159101fa46)
(cherry picked from commit ab78a812fd18781655ccf38e803f619ea427d1ac)
Co-authored-by: Robin C. Ladiges <rcl.git@blackpinguin.de>
- change: general game mode management more abstract and less H&S oriented
- change: split 8bit updateType into 4bit game mode and 4bit update type.
- change: don't process packets from other game modes (legacy mode for backwards compatibility)
- change: cache game mode of other players in puppet, resend GameModeInf on detected game mode change
- change: send gamemode NONE when H&S is selected but not active
- change: improved distance calculations in squared distance space
- change: change from hider to seeker when dead even if there are no other players
- fix: add hours to the minutes for the H&S GameModeInf packet
- fix: set milliseconds and hours when receiving time from server
- fix: keep the new time from the server for longer than a single frame
- fix: reset H&S icon after receiving a new state from the server
- refac: move code to generate PlayerList into own abstract LayoutPlayerList class.
- refac: to_string() method for GameTime to simplify code in the Game Mode Icon class.
- refac: rename TagInf packet to GameModeInf packet
- refac: remove param from `SocketClient::tryGetPacket()` (unused)
- refac: move all H&S specific files into the same directory (out of layouts)
- refac: move GameModeTimer.cpp from source/server/hns/ to source/server/gamemode/
- refac: clean up some unused, duplicate or complicated imports
- [mod menu] change: use the game mode name in the options & menu title
- [mod menu] change: select the next game mode in the game mode select menu
- [mod menu] change: possibility to always change the gravity setting in the H&S config menu
- [mod menu] add: toggle options to control mario/cappy collision/bounciness
(cherry picked from commit a9b2c87aa0)
(cherry picked from commit 918f61fbfd619d781d88dc74878d392c48cfa480)
(cherry picked from commit 96aff7dd7167d8244acef7884fa3503d4c3f868a)
(cherry picked from commit 0fb6413ec91bbf679e9f8cea1aa512159101fa46)
(cherry picked from commit ab78a812fd18781655ccf38e803f619ea427d1ac)
Co-authored-by: Robin C. Ladiges <rcl.git@blackpinguin.de>
This change only makes it work when in offline/airplane mode.
When connected to a server it still crashes.
Likely due to a different part of the code.
Thanks to https://github.com/piplup55 for pointing out to me that this worked in old versions.
I then tested a few older builds and found out that it started to not work with version `v1.1.0`.
Using `git bisect` I was able to find out that commit 34691affb0 introduced the issue.
There are TCP timeouts, but in situations where it fails instantly there would otherwise be no delay.
(E.g. firewall rejection, or when in flight mode.)
2 warnings found (use --debug to expand):
- FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 1)
- JSONArgsRecommended: JSON arguments recommended for ENTRYPOINT to prevent unintended behavior related to OS signals (line 13)
- Client.hpp: add bool variable and methods
- hooks.cpp: save/load value from common.bin
- main.cpp: change
- StageSceneStateServerConfig: add button to the mod menu to toggle it
- Show `Yes` and `No` instead of `True` and `False`
- Remove `Is in Capture`
- Always show `Capture`
- Combine `Animation Index` and `Packet Animation` into one `Animation` line
- Rename `Puppet0` to `Empty Slot 1`
- Don't mention puppets
- Show how much is used instead of how much is free.
- Double precision, because of observable inaccuracies otherwise.
- Divide by 1024 instead of by 1000 to display KiB instead of KB.
- Show only one fractional digit.
- (The max is exactly 320 KiB, so need to show a fractional digit for it.)
Cherry picked this aspect from the original commit and did the romfs change for all languages (not only for `USen`).
a9b2c87aa0
(cherry picked from commit a9b2c87aa0)
Co-authored-by: Robin C. Ladiges <rcl.git@blackpinguin.de>