Commit Graph

888 Commits (333a77b6477a979d1aed8a4976011804bcb0deb9)

Author SHA1 Message Date
MysterD 906ea3345e Players turn into bubbles when they die
Player life counters are separate.
When one player dies they lose a life and are turned into a bubble.
If the other player pops it, they are alive again.
If all players are bubbled, they get kicked out of the level.
If the bubbled player ran out of lives, they can not come back to life
until the level is over.
Whenever a level change happens, everyone's life count is set to a
minimum of two.
No game overs.

Took heavy inspiration from Kaze Emanuar
2020-09-05 18:10:55 -07:00
MysterD 9427afb14b Allow vanish cap to pass through walls
fixes #16
2020-09-05 13:31:36 -07:00
MysterD 1324ce83be Fixed Luigi sideburns, renamed Luigi textures 2020-09-05 10:02:11 -07:00
MysterD 478f77e6bf Fix EXTERNAL_DATA for Luigi
Fixes #25
2020-09-05 00:11:15 -07:00
MysterD 2174ef0478 Change default save directory to sm64ex-coop 2020-09-04 22:17:15 -07:00
MysterD 670a554b37 Remove any lingering dialog boxes on level transition
Fixes #22
2020-09-04 21:27:06 -07:00
MysterD 00b0b7cd8f Remote reading sign no longer causes sound spam
fixes #20
2020-09-04 21:14:14 -07:00
MysterD 4cb13edf84 Fix animation desync when pressing Z+B
Fixes #18
Found by el pinguino max
2020-09-04 21:08:04 -07:00
MysterD 05674f3d69 Force no draw distance on and text saves off 2020-09-04 17:52:48 -07:00
MysterD 1bb0c90741 Add docker-build workarounds and container script 2020-09-04 17:03:35 -07:00
MysterD 4a2c218f11 Synchronized save files
Now when a client joins, it will request the entire 512 byte EEPROM from
the server and refuse to continue until the server replies with the
contents. Then the client will override all reads and writes to the
EEPROM/save file. Thus, a client will never overwrite their local save.

Fixes #21
2020-09-04 15:07:32 -07:00
MysterD 1289f863ca Removed 'int' from most of networking code
moved -Werror over to 'STRICT'
2020-09-04 11:43:12 -07:00
MysterD 9512fde4a5 Added custom packets for mods-of-this-mod
Now a patch can choose to register callbacks for sending and receiving
packets. It's a bit tricky to use but at least it won't collide with
normal packets or other mod packets.
2020-09-04 02:04:37 -07:00
MysterD d5005c9f37 Served time for crimes against C
Due to my compile & launch scripts, I was silently ignoring warnings
this whole time. I've fixed my process, and gone back to fixed all of
the warnings I could (even outside of my code).
2020-09-04 01:58:54 -07:00
MysterD 621533fae8 Add coop-specific define
Added -DCOOP to identify that this is a coop build so that one patch can
be applied to EX and/or COOP. They can choose to ifdef entity synchronization
out.
2020-09-03 21:49:58 -07:00
MysterD 3c48e1df1a Prevent infinite loop for remote sliding players 2020-09-03 18:32:07 -07:00
MysterD 68ad6bc15c Added host/join in-game GUI
Now people aren't forced to launch with command-line parameters,
instead they can host or join a server by selecting buttons in
the main menu.
2020-09-03 18:30:15 -07:00
MysterD f367ed2167 Prevented softlock and entity duplication when both grab at the same time
As reported by somario360:
After grabbing the small box at the same time, one of two results can happen.
There will be a fake cloned box that will only be visually in the other
player's hands, or one player will be stuck in the punching animation until
the other player lets go of the box, in which the box goes into the stuck
player's hands.

Now escapes from action if the grab fails, preventing a softlock.
And now if both players report having the same object, the client
will drop their copy.

Fixes #14
2020-09-03 18:11:42 -07:00
MysterD 920c0674d9 More tuxie fixes
Tuxie will regain its hitbox if dropped through crouching or any other means
Fixed detection of if any mario is far away
Immediately sends an object packet whenever any object is dropped or thrown

Fixes #9
2020-09-03 08:58:21 -07:00
MysterD ab9e7c7bca Added player-to-player interactions
Players are now solid to each other and can push each other
Players can now attack each other (but they do not deal damage)
Players can bounce on top of each other, and they get squished
temporarily
Players are given slightly offset positions when they transition between
areas and levels, so they're no longer on top of one another.
2020-09-02 23:50:27 -07:00
MysterD b9e84ad3b9 Shell music only starts and stops for local player 2020-09-01 23:41:56 -07:00
MysterD 933ee68477 Null checked heldObj in all mario actions
Bobomb clip no longer segfaults the game
2020-09-01 23:40:53 -07:00
MysterD 72c4379d8a Fix first sound and size of first punch
The code was skipping playing the sound of the first punch, and changing
the size of the first for the first punch. Added hacky stuff to the
player packet code to ensure those events are hit.

Fixes #10 reported by somario360
2020-09-01 23:35:57 -07:00
MysterD f62f80a228 Synchronize sleeping animations
Sleeping animations were desynchronized previously. Now remote goes to
sitting, and to laying down, at the right times. A snoring remote player
will no longer lower your music, and will no longer get stuck snoring
when they wake up.

Fixes #11 reported by somario360
2020-09-01 23:00:12 -07:00
MysterD c88ff19190 Prevent infinite looping of Mario action transitions
There have been several times where the unpredictable behavior of
a remote player where execute_mario_action() would get caught in
an infinite loop. Now we attempt to detect an infinite hang and
escape from it. The sequence of actions will be recorded into an
errorlog.txt file. In debug mode this infinite hang will cause an
assertion to fail, crashing the game. In normal mode the game will
break out of it and hopefully carry on normally after new packets
come in.

I believe this addresses github issue #12 but I can't be sure.
2020-09-01 22:06:36 -07:00
MysterD af117f4647 Various tuxie synchronization fixes 2020-09-01 20:13:46 -07:00
MysterD c54063fadd Fixed messed up animation when remote is talking to an NPC
fixes #8 found by somario360
2020-09-01 18:10:00 -07:00
MysterD 8711829664 Merge branch 'nightly' into coop 2020-09-01 18:08:46 -07:00
MysterD 2815f03adb Update Makefile's default compile flags 2020-08-31 23:52:36 -07:00
djoslin0 d070b9fb87 Update README.md 2020-08-31 23:50:43 -07:00
MysterD 443fc1a73f Synchronize cannons as soon as they are unlocked 2020-08-31 23:49:51 -07:00
MysterD 3950dda92f Force players who are held by an entity to own that entity 2020-08-31 22:36:07 -07:00
MysterD e705353e00 Synchronized squished values 2020-08-31 22:22:33 -07:00
MysterD 3495a9e4a4 Re-added King Bobomb dialog 2020-08-31 21:38:08 -07:00
MysterD efa1600ad0 Truly deal with the NPC dialog softlock problem
Reported by somario360:
After I (Luigi) gave the baby penguin to the mother, the start spawned,
but I was stuck in the looking up animation.
My friend (Mario) talked to Bowser after defeating him, Bowser turned into
a key, but he was stuck in the looking up animation after (I was able to
grab the key though, but Bowser was slightly visible) (Also don't mind 0
stars, he loves doing the lobby BLJ)

The issue is the state machine moved on without removing the reading
dialog action. There was no straight forward way to deal with this.
Custom functions were written for each call to dialog to ensure that we
should stay reading the dialog.
2020-08-31 21:10:34 -07:00
MysterD 5d7499bd2a Fixed crash when changing areas within a level
Bug reported by somario360:
After I (Luigi) exited the slide in CCM, an error message appeared and ignoring would make it pop up again.

This was due to the sync ID reservation system not being flushed and
reset on area change.
2020-08-30 23:13:05 -07:00
MysterD 7b073aedb8 Fix NPC softlock (cannon and hoot)
Bug reported by somario360:
When trying to open the cannon in a level (so far tested in BOB & WF) the cannon dialogue will repeat infinitely. Sometimes the cannon will open, but the game will crash after.

The code I had written previously to prevent softlocks ended up causing
them due to a incorrect check of activeFlags.
2020-08-30 23:12:28 -07:00
MysterD 96a2cacf2d Added text-input system for typing in-game 2020-08-30 23:25:32 -07:00
fgsfds 8a23a8a5c5 add rudimentary SDL1 controller backend
it's more to deal with the mouse not working I suppose
2020-08-30 16:06:22 +03:00
fgsfds 8419991c02 Merge remote-tracking branch 'origin/master' into nightly 2020-08-30 15:41:45 +03:00
fgsfds cc26cc9bf9 fix spaces 2020-08-30 15:39:41 +03:00
fgsfds 17e12f14bc Merge pull request #411 from theofficialgman/master
Check for zero rumble setting before allowing rumble
2020-08-30 15:35:03 +03:00
fgsfds 6d1f2afd8b Merge pull request #350 from pouar/fix-snufit
Bugfix for NODRAWDISTANCE
2020-08-30 15:34:24 +03:00
fgsfds 46c57457b1 GL_LEGACY: this should've been GL_REPLACE all along 2020-08-30 01:29:26 +03:00
Garrett 468887a6f9 Check for zero rumble setting before allowing rumble
Fixes controllers which don't check for rumble_strength and have constant rumble from rumbling even when set to 0 in the config.
2020-08-29 17:08:17 -04:00
MysterD b7a1ec009c Removed debug enemies from castle grounds 2020-08-28 23:06:56 -07:00
MysterD 483694d6b3 Synchronized Bowser 1 2020-08-29 12:59:07 -07:00
MysterD 10bdd1e1fe Synchronized bowser bombs 2020-08-29 12:58:54 -07:00
MysterD 81d23b3cc9 Made castle floor trap multiple-player-aware 2020-08-29 12:58:04 -07:00
MysterD 13d4a0bfe8 Fixed stomache slide hang, made grabs only happen on local 2020-08-29 12:57:20 -07:00