mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-25 13:35:12 +00:00
Color detached caps according to player palette
This commit is contained in:
parent
16fb9d3dff
commit
710a7e4749
19 changed files with 59 additions and 24 deletions
|
@ -31,6 +31,7 @@ const GeoLayout klepto_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(0, geo_offset_klepto_held_object),
|
||||
GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 0, 100, 0, 180, 270, 0, mario_cap_seg3_dl_03022F48),
|
||||
GEO_CLOSE_NODE(),
|
||||
|
@ -57,6 +58,7 @@ const GeoLayout klepto_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(0, geo_offset_klepto_held_object),
|
||||
GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 0, 100, 0, 180, 270, 0, luigi_cap_seg3_dl_03022F48),
|
||||
GEO_CLOSE_NODE(),
|
||||
|
|
|
@ -4,6 +4,7 @@ const GeoLayout luigis_cap_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(10, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
|
@ -21,6 +22,7 @@ const GeoLayout luigis_metal_cap_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(10, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
|
@ -38,6 +40,7 @@ const GeoLayout luigis_wing_cap_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(10, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
|
@ -62,6 +65,7 @@ const GeoLayout luigis_winged_metal_cap_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(10, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
|
|
|
@ -180,8 +180,8 @@ const Gfx luigi_cap_seg3_dl_03022CC8[] = {
|
|||
// 0x03022D10 - 0x03022D38
|
||||
const Gfx luigi_cap_seg3_dl_03022D10[] = {
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022B68),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF08.l, 1),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF08.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&luigi_cap_seg3_lights_0301CF08.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&luigi_cap_seg3_lights_0301CF08.a, 2),
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022CC8),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
@ -264,8 +264,8 @@ const Gfx luigi_cap_seg3_dl_03022F48[] = {
|
|||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_cap_seg3_texture_0301DF50),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&luigi_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&luigi_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022B30),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
|
@ -285,8 +285,8 @@ const Gfx luigi_cap_seg3_dl_03022FF8[] = {
|
|||
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
|
||||
gsDPLoadTextureBlock(luigi_cap_seg3_texture_0301CF50, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&luigi_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&luigi_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022B30),
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022B68),
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022CC8),
|
||||
|
@ -341,8 +341,8 @@ const Gfx luigi_cap_seg3_dl_03023160[] = {
|
|||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, luigi_cap_seg3_texture_0301DF50),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&luigi_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&luigi_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022B30),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
|
@ -385,8 +385,8 @@ const Gfx luigi_cap_seg3_dl_03023298[] = {
|
|||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPLight(&luigi_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&luigi_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&luigi_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022B30),
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022B68),
|
||||
gsSPDisplayList(luigi_cap_seg3_dl_03022CC8),
|
||||
|
|
|
@ -4,6 +4,7 @@ const GeoLayout marios_cap_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(10, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
|
@ -21,6 +22,7 @@ const GeoLayout marios_metal_cap_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(10, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
|
@ -38,6 +40,7 @@ const GeoLayout marios_wing_cap_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(10, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
|
@ -62,6 +65,7 @@ const GeoLayout marios_winged_metal_cap_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 16384),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_ASM(10, geo_update_layer_transparency),
|
||||
GEO_SWITCH_CASE(2, geo_switch_anim_state),
|
||||
GEO_OPEN_NODE(),
|
||||
|
|
|
@ -180,8 +180,8 @@ const Gfx mario_cap_seg3_dl_03022CC8[] = {
|
|||
// 0x03022D10 - 0x03022D38
|
||||
const Gfx mario_cap_seg3_dl_03022D10[] = {
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022B68),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF08.l, 1),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF08.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&mario_cap_seg3_lights_0301CF08.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&mario_cap_seg3_lights_0301CF08.a, 2),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022CC8),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
@ -264,8 +264,8 @@ const Gfx mario_cap_seg3_dl_03022F48[] = {
|
|||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301DF50),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&mario_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&mario_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
|
@ -285,8 +285,8 @@ const Gfx mario_cap_seg3_dl_03022FF8[] = {
|
|||
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
|
||||
gsDPLoadTextureBlock(mario_cap_seg3_texture_0301CF50, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&mario_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&mario_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022B68),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022CC8),
|
||||
|
@ -341,8 +341,8 @@ const Gfx mario_cap_seg3_dl_03023160[] = {
|
|||
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301DF50),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&mario_cap_seg3_lights_0301CF38.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&mario_cap_seg3_lights_0301CF38.a, 2),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
gsDPPipeSync(),
|
||||
|
@ -385,8 +385,8 @@ const Gfx mario_cap_seg3_dl_03023298[] = {
|
|||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPLight(&mario_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPCopyLightEXT(1, 5), //gsSPLight(&mario_cap_seg3_lights_0301CF20.l, 1),
|
||||
gsSPCopyLightEXT(2, 6), //gsSPLight(&mario_cap_seg3_lights_0301CF20.a, 2),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022B68),
|
||||
gsSPDisplayList(mario_cap_seg3_dl_03022CC8),
|
||||
|
|
|
@ -28,6 +28,7 @@ const GeoLayout mr_blizzard_hidden_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_SCALE(0x00, 65536),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 490, 14, 43, 305, 0, 248, mario_cap_seg3_dl_03022F48),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
|
|
|
@ -22,6 +22,7 @@ const GeoLayout ukiki_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500B2E8),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 100, 0, 0, -90, -90, 0, mario_cap_seg3_dl_03022F48),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
|
@ -29,6 +30,7 @@ const GeoLayout ukiki_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500B310),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 100, 0, 0, -90, -90, 0, mario_cap_seg3_dl_03022F48),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
|
@ -36,6 +38,7 @@ const GeoLayout ukiki_geo[] = {
|
|||
GEO_OPEN_NODE(),
|
||||
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500B2E8),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(0, geo_mario_set_player_colors),
|
||||
GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 100, 0, 0, -90, -90, 0, luigi_cap_seg3_dl_03022F48),
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_CLOSE_NODE(),
|
||||
|
|
|
@ -222,6 +222,7 @@ struct Object
|
|||
/*0x25C*/ void *respawnInfo;
|
||||
/*?????*/ u8 createdThroughNetwork;
|
||||
/*?????*/ u32 areaTimer;
|
||||
/*?????*/ u8 globalPlayerIndex;
|
||||
};
|
||||
|
||||
struct ObjectHitbox
|
||||
|
|
|
@ -122,6 +122,7 @@ void bhv_klepto_init(void) {
|
|||
network_init_object_field(o, &o->oHomeZ);
|
||||
network_init_object_field(o, &o->oMoveAnglePitch);
|
||||
network_init_object_field(o, &o->oGravity);
|
||||
network_init_object_field(o, &o->globalPlayerIndex);
|
||||
}
|
||||
|
||||
static void klepto_change_target(void) {
|
||||
|
@ -290,8 +291,9 @@ static void klepto_act_dive_at_mario(void) {
|
|||
if (marioState->action != ACT_SLEEPING
|
||||
&& !(marioState->action & (ACT_FLAG_SHORT_HITBOX | ACT_FLAG_BUTT_OR_STOMACH_SLIDE))
|
||||
&& distanceToPlayer < 200.0f && dy > 50.0f && dy < 90.0f) {
|
||||
if (network_owns_object(o) && mario_lose_cap_to_enemy(marioState, 1)) {
|
||||
if (network_owns_object(o) && mario_lose_cap_to_enemy(marioState, 1) && marioState->playerIndex == 0) {
|
||||
o->oAnimState = marioState->character->capKleptoAnimState;
|
||||
o->globalPlayerIndex = gNetworkPlayers[marioState->playerIndex].globalIndex;
|
||||
network_send_object(o);
|
||||
}
|
||||
}
|
||||
|
@ -427,6 +429,7 @@ void bhv_klepto_update(void) {
|
|||
save_file_clear_flags(SAVE_FLAG_CAP_ON_KLEPTO);
|
||||
|
||||
struct Object* cap = spawn_object(o, capModel, bhvNormalCap);
|
||||
cap->globalPlayerIndex = o->globalPlayerIndex;
|
||||
|
||||
struct Object* spawn_objects[] = { cap };
|
||||
u32 models[] = { capModel };
|
||||
|
|
|
@ -248,6 +248,7 @@ static void mr_blizzard_act_death(void) {
|
|||
|
||||
cap = spawn_object_relative(0, 5, 105, 0, o, MODEL_MARIOS_CAP, bhvNormalCap);
|
||||
if (cap != NULL) {
|
||||
cap->globalPlayerIndex = o->globalPlayerIndex;
|
||||
cap->oMoveAngleYaw = o->oFaceAngleYaw + (o->oFaceAngleRoll < 0 ? 0x4000 : -0x4000);
|
||||
cap->oForwardVel = 10.0f;
|
||||
}
|
||||
|
|
|
@ -605,6 +605,8 @@ void hat_ukiki_held_loop(void) {
|
|||
if (mario_lose_cap_to_enemy(heldByMario, 2)) {
|
||||
o->oUkikiTextState = UKIKI_TEXT_STEAL_HAT;
|
||||
o->oUkikiHasHat |= UKIKI_HAT_ON;
|
||||
o->globalPlayerIndex = gNetworkPlayers[heldByMario->playerIndex].globalIndex;
|
||||
network_send_object(o);
|
||||
} else {}
|
||||
break;
|
||||
|
||||
|
@ -612,6 +614,7 @@ void hat_ukiki_held_loop(void) {
|
|||
if (should_start_or_continue_dialog(heldByMario, o) && cur_obj_update_dialog(heldByMario, 2, 2, DIALOG_100, 0, hat_ukiki_held_loop_1)) {
|
||||
o->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;
|
||||
o->oUkikiTextState = UKIKI_TEXT_STOLE_HAT;
|
||||
network_send_object(o);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -624,6 +627,7 @@ void hat_ukiki_held_loop(void) {
|
|||
set_mario_npc_dialog(heldByMario, 0, NULL);
|
||||
o->oUkikiHasHat &= ~UKIKI_HAT_ON;
|
||||
o->oUkikiTextState = UKIKI_TEXT_GAVE_HAT_BACK;
|
||||
network_send_object(o);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -651,6 +655,7 @@ void bhv_ukiki_init(void) {
|
|||
network_init_object_field(o, &o->oUkikiChaseFleeRange);
|
||||
network_init_object_field(o, &o->oUkikiCageSpinTimer);
|
||||
network_init_object_field(o, &o->oIntangibleTimer);
|
||||
network_init_object_field(o, &o->globalPlayerIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -391,6 +391,8 @@ void mario_blow_off_cap(struct MarioState *m, f32 capSpeed) {
|
|||
|
||||
u8 capModel = m->character->capModelId;
|
||||
capObject = spawn_object(m->marioObj, capModel, bhvNormalCap);
|
||||
capObject->globalPlayerIndex = gNetworkPlayers[m->playerIndex].globalIndex;
|
||||
capObject->oBehParams = m->playerIndex + 1;
|
||||
|
||||
capObject->oPosY += (m->action & ACT_FLAG_SHORT_HITBOX) ? 120.0f : 180.0f;
|
||||
capObject->oForwardVel = capSpeed;
|
||||
|
|
|
@ -397,7 +397,9 @@ static u8 geo_get_processing_object_index(void) {
|
|||
}
|
||||
}
|
||||
if (gCurGraphNodeProcessingObject == NULL) { return 0; }
|
||||
u8 index = gCurGraphNodeProcessingObject->oBehParams - 1;
|
||||
|
||||
struct NetworkPlayer* np = network_player_from_global_index(gCurGraphNodeProcessingObject->globalPlayerIndex);
|
||||
u8 index = (np == NULL) ? 0 : np->localIndex;
|
||||
return (index >= MAX_PLAYERS) ? 0 : index;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,5 +32,6 @@ Gfx *geo_switch_mario_hand_grab_pos(s32 callContext, struct GraphNode *b, Mat4 *
|
|||
Gfx *geo_render_mirror_mario(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);
|
||||
Gfx *geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);
|
||||
Gfx* geo_mario_set_player_colors(s32 callContext, struct GraphNode* node, UNUSED Mat4* c);
|
||||
Gfx* geo_klepto_set_player_colors(s32 callContext, struct GraphNode* node, UNUSED Mat4* c);
|
||||
|
||||
#endif // MARIO_MISC_H
|
||||
|
|
|
@ -594,6 +594,7 @@ struct Object *spawn_object_at_origin(struct Object *parent, UNUSED s32 unusedAr
|
|||
obj->parentObj = parent;
|
||||
obj->header.gfx.unk18 = parent->header.gfx.unk18;
|
||||
obj->header.gfx.unk19 = parent->header.gfx.unk18;
|
||||
obj->globalPlayerIndex = 0;
|
||||
|
||||
geo_obj_init((struct GraphNodeObject *) &obj->header.gfx, gLoadedGraphNodes[model], gVec3fZero,
|
||||
gVec3sZero);
|
||||
|
|
|
@ -266,6 +266,7 @@ void bhv_mario_update(void) {
|
|||
for (int i = 0; i < MAX_PLAYERS; i++) {
|
||||
if (gMarioStates[i].marioObj == NULL) { continue; }
|
||||
gMarioStates[i].marioObj->oBehParams = i + 1;
|
||||
gMarioStates[i].marioObj->globalPlayerIndex = gNetworkPlayers[i].globalIndex;
|
||||
}
|
||||
|
||||
// set mario state to the current player
|
||||
|
|
|
@ -19,7 +19,6 @@ static u8 warpToArea = 29;
|
|||
// warpToArea: 27 = upstairs
|
||||
// warpToArea: 29 = courtyard
|
||||
|
||||
|
||||
#define SCANCODE_0 0x0B
|
||||
#define SCANCODE_1 0x02
|
||||
#define SCANCODE_2 0x03
|
||||
|
|
|
@ -115,6 +115,7 @@ void djui_panel_update(void) {
|
|||
djui_base_set_visible(parentBase, false);
|
||||
}
|
||||
djui_base_set_enabled(activeBase, true);
|
||||
activeBase->y.value = 0;
|
||||
djui_cursor_input_controlled_center(sPanelList->defaultElementBase);
|
||||
|
||||
if (removingBase != NULL) {
|
||||
|
|
|
@ -19,6 +19,7 @@ struct SpawnObjectData {
|
|||
u16 behaviorId;
|
||||
s16 activeFlags;
|
||||
s32 rawData[80];
|
||||
u8 globalPlayerIndex;
|
||||
};
|
||||
|
||||
static u8 generate_parent_id(struct Object* objects[], u8 onIndex, bool sanitize) {
|
||||
|
@ -70,6 +71,7 @@ void network_send_spawn_objects_to(u8 sendToLocalIndex, struct Object* objects[]
|
|||
packet_write(&p, &o->header.gfx.scale[0], sizeof(f32));
|
||||
packet_write(&p, &o->header.gfx.scale[1], sizeof(f32));
|
||||
packet_write(&p, &o->header.gfx.scale[2], sizeof(f32));
|
||||
packet_write(&p, &o->globalPlayerIndex, sizeof(u8));
|
||||
}
|
||||
|
||||
if (sendToLocalIndex == PACKET_DESTINATION_BROADCAST) {
|
||||
|
@ -101,6 +103,7 @@ void network_receive_spawn_objects(struct Packet* p) {
|
|||
packet_read(p, &scale[0], sizeof(f32));
|
||||
packet_read(p, &scale[1], sizeof(f32));
|
||||
packet_read(p, &scale[2], sizeof(f32));
|
||||
packet_read(p, &data.globalPlayerIndex, sizeof(u8));
|
||||
|
||||
struct Object* parentObj = NULL;
|
||||
if (data.parentId == (u8)-1) {
|
||||
|
@ -127,6 +130,7 @@ void network_receive_spawn_objects(struct Packet* p) {
|
|||
|
||||
void* behavior = (void*)get_behavior_from_id(data.behaviorId);
|
||||
struct Object* o = spawn_object(parentObj, data.model, behavior);
|
||||
o->globalPlayerIndex = data.globalPlayerIndex;
|
||||
o->createdThroughNetwork = true;
|
||||
memcpy(o->rawData.asU32, data.rawData, sizeof(u32) * 80);
|
||||
|
||||
|
|
Loading…
Reference in a new issue