mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-25 05:25:14 +00:00
Fixed receiving of health, made recovery heart 2-player aware
This commit is contained in:
parent
2a0a3df34f
commit
4b61f7212b
3 changed files with 20 additions and 4 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -81,3 +81,6 @@ sm64config.txt
|
||||||
|
|
||||||
# visual studio
|
# visual studio
|
||||||
build-windows-visual-studio/.vs
|
build-windows-visual-studio/.vs
|
||||||
|
|
||||||
|
# misc
|
||||||
|
todo.txt
|
|
@ -12,14 +12,21 @@ struct ObjectHitbox sRecoveryHeartHitbox = {
|
||||||
};
|
};
|
||||||
|
|
||||||
void bhv_recovery_heart_loop(void) {
|
void bhv_recovery_heart_loop(void) {
|
||||||
|
u8 collided = FALSE;
|
||||||
obj_set_hitbox(o, &sRecoveryHeartHitbox);
|
obj_set_hitbox(o, &sRecoveryHeartHitbox);
|
||||||
if (obj_check_if_collided_with_object(o, gMarioObject)) {
|
|
||||||
|
for (int i = 0; i < MAX_PLAYERS; i++) {
|
||||||
|
if (obj_check_if_collided_with_object(o, gMarioStates[i].marioObj)) { collided = TRUE; }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (collided) {
|
||||||
if (o->oSpinningHeartPlayedSound == 0) {
|
if (o->oSpinningHeartPlayedSound == 0) {
|
||||||
cur_obj_play_sound_2(SOUND_GENERAL_HEART_SPIN);
|
cur_obj_play_sound_2(SOUND_GENERAL_HEART_SPIN);
|
||||||
o->oSpinningHeartPlayedSound += 1;
|
o->oSpinningHeartPlayedSound += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
o->oAngleVelYaw = (s32)(200.0f * gMarioStates[0].forwardVel) + 1000;
|
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||||
|
o->oAngleVelYaw = (s32)(200.0f * marioState->forwardVel) + 1000;
|
||||||
} else {
|
} else {
|
||||||
o->oSpinningHeartPlayedSound = 0;
|
o->oSpinningHeartPlayedSound = 0;
|
||||||
|
|
||||||
|
@ -30,7 +37,13 @@ void bhv_recovery_heart_loop(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((o->oSpinningHeartTotalSpin += o->oAngleVelYaw) >= 0x10000) {
|
if ((o->oSpinningHeartTotalSpin += o->oAngleVelYaw) >= 0x10000) {
|
||||||
gMarioStates[0].healCounter += 4;
|
|
||||||
|
struct MarioState* nearestState = nearest_mario_state_to_object(o);
|
||||||
|
for (int i = 0; i < MAX_PLAYERS; i++) {
|
||||||
|
if (&gMarioState[i] == nearestState || dist_between_objects(o, gMarioState[i].marioObj) < 1000) {
|
||||||
|
gMarioStates[i].healCounter += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
o->oSpinningHeartTotalSpin -= 0x10000;
|
o->oSpinningHeartTotalSpin -= 0x10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ void network_receive_player(struct Packet* p) {
|
||||||
packet_read(p, &gMarioStates[1], 96);
|
packet_read(p, &gMarioStates[1], 96);
|
||||||
packet_read(p, gMarioStates[1].controller, 20);
|
packet_read(p, gMarioStates[1].controller, 20);
|
||||||
packet_read(p, &gMarioStates[1].marioObj->rawData.asU32, 320);
|
packet_read(p, &gMarioStates[1].marioObj->rawData.asU32, 320);
|
||||||
packet_write(p, &gMarioStates[1].health, 2);
|
packet_read(p, &gMarioStates[1].health, 2);
|
||||||
packet_read(p, &heldSyncID, 4);
|
packet_read(p, &heldSyncID, 4);
|
||||||
|
|
||||||
if (heldSyncID != NULL) {
|
if (heldSyncID != NULL) {
|
||||||
|
|
Loading…
Reference in a new issue