Skip to content
128 changes: 128 additions & 0 deletions src/SB/Game/zNPCTypeBossPlankton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,134 @@

#include <types.h>

#define f1585 1.0f
#define f1586 0.0f
#define f1657 0.2f
#define f1658 0.1f

#define ANIM_Unknown 0
#define ANIM_Idle01 1 // 0x4
#define ANIM_Taunt01 3 // 0xC
#define ANIM_move 66 // 0x42
#define ANIM_stun_begin 67 //0x43
#define ANIM_stun_loop 68 //0x44
#define ANIM_stun_end 69 //0x45
#define ANIM_attack_beam_begin 70 //0x46
#define ANIM_attack_beam_loop 71 //0x47
#define ANIM_attack_beam_end 72 //0x48
#define ANIM_attack_wall_begin 73 //0x49
#define ANIM_attack_wall_loop 74 //0x4a
#define ANIM_attack_wall_end 75 //0x4b
#define ANIM_attack_missle 76 //0x4c
#define ANIM_attack_bomb 77 //0x4d

xAnimTable* ZNPC_AnimTable_BossPlankton()
{
// clang-format off
S32 ourAnims[32] = { //dwarf says it should be 32, matches less with 15
ANIM_Idle01,
ANIM_Taunt01,
ANIM_move,
ANIM_stun_begin,
ANIM_stun_loop,
ANIM_stun_end,
ANIM_attack_beam_begin,
ANIM_attack_beam_loop,
ANIM_attack_beam_end,
ANIM_attack_wall_begin,
ANIM_attack_wall_loop,
ANIM_attack_wall_end,
ANIM_attack_missle,
ANIM_attack_bomb,
ANIM_Unknown,
};
// clang-format on

xAnimTable* table = xAnimTableNew("zNPCBPlankton", NULL, 0);

xAnimTableNewState(table, g_strz_bossanim[ANIM_Idle01], 0x10, 0, 1.0f, NULL, NULL, 0.0f, NULL,
NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_Taunt01], 0x20, 0, 1.0f, NULL, NULL, 0.0f, NULL,
NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_move], 0x10, 0, f1585, NULL, NULL, f1586, NULL,
NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_stun_begin], 0x20, 0, f1585, NULL, NULL, f1586,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_stun_loop], 0x10, 0, f1585, NULL, NULL, f1586,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_stun_end], 0x20, 0, f1585, NULL, NULL, f1586,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_attack_beam_begin], 0x20, 0, f1585, NULL, NULL,
f1586, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_attack_beam_loop], 0x10, 0, f1585, NULL, NULL,
f1586, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_attack_beam_end], 0x20, 0, f1585, NULL, NULL,
f1586, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_attack_wall_begin], 0x20, 0, f1585, NULL, NULL,
f1586, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_attack_wall_loop], 0x10, 0, f1585, NULL, NULL,
f1586, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_attack_wall_end], 0x20, 0, f1585, NULL, NULL,
f1586, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_attack_missle], 0x20, 0, f1585, NULL, NULL,
f1586, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_bossanim[ANIM_attack_bomb], 0x20, 0, f1585, NULL, NULL, f1586,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);

NPCC_BuildStandardAnimTran(table, g_strz_bossanim, ourAnims, 1, f1657);

xAnimTableNewTransition(table, g_strz_bossanim[ANIM_stun_begin],
g_strz_bossanim[ANIM_stun_loop], 0, 0, 0x10, 0, f1586, f1586, 0, 0,
f1658, 0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_stun_loop], g_strz_bossanim[ANIM_stun_end],
0, 0, 0, 0, f1586, f1586, 0, 0, f1658, 0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_beam_begin],
g_strz_bossanim[ANIM_attack_beam_loop], 0, 0, 0x10, 0, f1586, f1586, 0,
0, f1658, 0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_beam_begin],
g_strz_bossanim[ANIM_attack_beam_end], 0, 0, 0, 0, f1586, f1586, 0, 0,
f1658, 0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_beam_loop],
g_strz_bossanim[ANIM_attack_beam_end], 0, 0, 0, 0, f1586, f1586, 0, 0,
f1658, 0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_wall_begin],
g_strz_bossanim[ANIM_attack_wall_loop], 0, 0, 0x10, 0, f1586, f1586, 0,
0, f1658, 0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_wall_loop],
g_strz_bossanim[ANIM_attack_wall_end], 0, 0, 0, 0, f1586, f1586, 0, 0,
f1658, 0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_Taunt01], g_strz_bossanim[ANIM_stun_begin],
0, 0, 0, 0, f1586, f1586, 0, 0, f1658, 0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_move], g_strz_bossanim[ANIM_stun_begin], 0,
0, 0, 0, f1586, f1586, 0, 0, f1658, 0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_beam_begin],
g_strz_bossanim[ANIM_stun_begin], 0, 0, 0, 0, f1586, f1586, 0, 0, f1658,
0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_beam_loop],
g_strz_bossanim[ANIM_stun_begin], 0, 0, 0, 0, f1586, f1586, 0, 0, f1658,
0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_beam_end],
g_strz_bossanim[ANIM_stun_begin], 0, 0, 0, 0, f1586, f1586, 0, 0, f1658,
0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_wall_begin],
g_strz_bossanim[ANIM_stun_begin], 0, 0, 0, 0, f1586, f1586, 0, 0, f1658,
0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_wall_loop],
g_strz_bossanim[ANIM_stun_begin], 0, 0, 0, 0, f1586, f1586, 0, 0, f1658,
0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_wall_end],
g_strz_bossanim[ANIM_stun_begin], 0, 0, 0, 0, f1586, f1586, 0, 0, f1658,
0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_missle],
g_strz_bossanim[ANIM_stun_begin], 0, 0, 0, 0, f1586, f1586, 0, 0, f1658,
0);
xAnimTableNewTransition(table, g_strz_bossanim[ANIM_attack_bomb],
g_strz_bossanim[ANIM_stun_begin], 0, 0, 0, 0, f1586, f1586, 0, 0, f1658,
0);

return table;
}

void zNPCBPlankton::render_debug()
{
}
Expand Down
2 changes: 1 addition & 1 deletion src/SB/Game/zNPCTypeBossSB2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ xAnimTable* ZNPC_AnimTable_BossSB2()
// ANIM_ChopLeftLoop,
// ANIM_ChopLeftEnd,
// ANIM_ChopRightBegin, No longer needed?
// ANIM_ChopRightLoop, Was used instead of "ANIM_xxxxx;" right about new state
// ANIM_ChopRightLoop, Was used instead of "ANIM_xxxxx;" right before new state
// ANIM_ChopRightEnd,
// ANIM_SwipeLeftBegin,
// ANIM_SwipeLeftLoop,
Expand Down
77 changes: 77 additions & 0 deletions src/SB/Game/zNPCTypePrawn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,32 @@

#include <types.h>

#define f1052 1.0f
#define f1053 0.0f
#define f1454 0.2f
#define f1455 0.1f

#define ANIM_Unknown 0 // 0x0
#define ANIM_Idle01 1 // 0x04
#define ANIM_Idle02 2 // 0x08 animtable new state
#define ANIM_Idle03 3 // 0xC
#define ANIM_Fidget01 4 //
#define ANIM_Fidget02 5
#define ANIM_Fidget03 6
#define ANIM_Taunt01 7 // 0x1c
#define ANIM_Attack01 8 //0x20
#define ANIM_Damage01 9 //0x24
#define ANIM_Damage02 10 //0x28
#define ANIM_Death01 11 //0x2c
#define ANIM_AttackWindup01 12 //0x30
#define ANIM_AttackLoop01 13 //0x34
#define ANIM_AttackEnd01 14 //0x38
#define ANIM_SpawnKids01 15 //0x3C
#define ANIM_Attack02Windup01 16
#define ANIM_Attack02Loop01 17
#define ANIM_Attack02End01 18
#define ANIM_LassoGrab01 19

namespace
{
sound_data_type sound_data[4];
Expand Down Expand Up @@ -246,6 +272,57 @@ void aqua_beam::render()
{
}

xAnimTable* ZNPC_AnimTable_Prawn()
{
// clang-format off
S32 ourAnims[10] = {
ANIM_Idle01,
ANIM_Fidget01,
ANIM_Fidget02,
ANIM_Taunt01,
ANIM_AttackWindup01,
ANIM_AttackLoop01,
ANIM_AttackLoop01,
ANIM_AttackEnd01,
ANIM_Damage01,
ANIM_Damage02,

};
// clang-format on
xAnimTable* table = xAnimTableNew("zNPCPrawn", NULL, 0);

xAnimTableNewState(table, g_strz_subbanim[ANIM_Idle01], 0x10, 0, f1052, NULL, NULL, f1053, NULL,
NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_subbanim[ANIM_Fidget01], 0x20, 0, f1052, NULL, NULL, f1053,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_subbanim[ANIM_Fidget02], 0x20, 0, f1052, NULL, NULL, f1053,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_subbanim[ANIM_Taunt01], 0x20, 0, f1052, NULL, NULL, f1053,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_subbanim[ANIM_AttackWindup01], 0x20, 0, f1052, NULL, NULL,
f1053, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_subbanim[ANIM_AttackLoop01], 0x10, 0, f1052, NULL, NULL, f1053,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_subbanim[ANIM_AttackEnd01], 0x20, 0, f1052, NULL, NULL, f1053,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_subbanim[ANIM_Damage01], 0x20, 0, f1052, NULL, NULL, f1053,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);
xAnimTableNewState(table, g_strz_subbanim[ANIM_Damage02], 0x20, 0, f1052, NULL, NULL, f1053,
NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL);

NPCC_BuildStandardAnimTran(table, g_strz_subbanim, ourAnims, 1, f1454);

xAnimTableNewTransition(table, g_strz_subbanim[ANIM_AttackWindup01],
g_strz_subbanim[ANIM_AttackLoop01], 0, 0, 0x10, 0, 0, 0, 0, 0, f1455,
0);
xAnimTableNewTransition(table, g_strz_subbanim[ANIM_AttackLoop01],
g_strz_subbanim[ANIM_AttackEnd01], 0, 0, 0, 0, 0, 0, 0, 0, f1455, 0);
xAnimTableNewTransition(table, g_strz_subbanim[ANIM_AttackEnd01], g_strz_subbanim[ANIM_Idle01],
0, 0, 0x10, 0, 0, 0, 0, 0, f1455, 0);

return table;
}

void zNPCPrawn::NewTime(xScene* xscn, float dt)
{
zNPCCommon::NewTime(xscn, dt);
Expand Down