mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-05 13:50:20 +00:00
Bongo Bongo (ovl_Boss_Sst) (#458)
* First pass * Darkmeiro decompilation Bg_Gnd_Darkmeiro decompiled, matched, and documented. * give this a shot * fix conflict * one more try * more matching fun * fun with bongo * clean this up later * found the matching versions * diff.py has escaped? * now with more docs * Now with floor and more docs * one more thing * incremental progress * It's Bongo time * one little thing * merge ZAP * update * camera * gfx now in their own file * now with more object decomp * name animations * now shiftable * missed some. also DECR * opd merge * start xml * now with xml asset extraction * format * cleanup * removed union Co-authored-by: Kelebek1 <eeeedddccc@hotmail.co.uk> Co-authored-by: petrie911 <pmontag@DESKTOP-LG8A167.localdomain>
This commit is contained in:
parent
b72ba754a2
commit
d47528ee59
161 changed files with 3802 additions and 12897 deletions
|
@ -1,15 +1,23 @@
|
|||
/*
|
||||
* File: z_bg_sst_floor.c
|
||||
* Overlay: ovl_Bg_Sst_Floor
|
||||
* Description: Bongo Bongo's drum
|
||||
*/
|
||||
|
||||
#include "z_bg_sst_floor.h"
|
||||
#include "objects/object_sst/object_sst.h"
|
||||
|
||||
#define FLAGS 0x00000030
|
||||
|
||||
#define THIS ((BgSstFloor*)thisx)
|
||||
|
||||
void BgSstFloor_Init(Actor* thisx, GlobalContext* globalCtx);
|
||||
void BgSstFloor_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
||||
void BgSstFloor_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
void BgSstFloor_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
void BgSstFloor_Init(BgSstFloor* this, GlobalContext* globalCtx);
|
||||
void BgSstFloor_Destroy(BgSstFloor* this, GlobalContext* globalCtx);
|
||||
void BgSstFloor_Update(BgSstFloor* this, GlobalContext* globalCtx);
|
||||
void BgSstFloor_Draw(BgSstFloor* this, GlobalContext* globalCtx);
|
||||
|
||||
static s32 sUnkValues[] = { 0, 0, 0 }; // Unused, probably a zero vector
|
||||
|
||||
/*
|
||||
const ActorInit Bg_Sst_Floor_InitVars = {
|
||||
ACTOR_BG_SST_FLOOR,
|
||||
ACTORCAT_BG,
|
||||
|
@ -21,11 +29,112 @@ const ActorInit Bg_Sst_Floor_InitVars = {
|
|||
(ActorFunc)BgSstFloor_Update,
|
||||
(ActorFunc)BgSstFloor_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Sst_Floor/BgSstFloor_Init.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Sst_Floor/BgSstFloor_Destroy.s")
|
||||
static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_VEC3F_DIV1000(scale.x, 100, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Sst_Floor/BgSstFloor_Update.s")
|
||||
void BgSstFloor_Init(BgSstFloor* thisx, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
BgSstFloor* this = THIS;
|
||||
CollisionHeader* colHeader = NULL;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Sst_Floor/BgSstFloor_Draw.s")
|
||||
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
|
||||
DynaPolyActor_Init(&this->dyna, DPM_PLAYER);
|
||||
CollisionHeader_GetVirtual(&gBongoDrumCol, &colHeader);
|
||||
this->dyna.bgId =
|
||||
DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
|
||||
}
|
||||
|
||||
void BgSstFloor_Destroy(BgSstFloor* thisx, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
BgSstFloor* this = THIS;
|
||||
|
||||
DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
||||
}
|
||||
|
||||
void BgSstFloor_Update(BgSstFloor* thisx, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
BgSstFloor* this = THIS;
|
||||
Player* player = PLAYER;
|
||||
CollisionHeader* colHeader = SEGMENTED_TO_VIRTUAL(&gBongoDrumCol);
|
||||
|
||||
colHeader->vtxList = SEGMENTED_TO_VIRTUAL(colHeader->vtxList);
|
||||
|
||||
if (1) {}
|
||||
|
||||
if (func_80043590(&this->dyna) && (this->dyna.actor.yDistToPlayer < 1000.0f)) {
|
||||
Camera_ChangeSetting(globalCtx->cameraPtrs[MAIN_CAM], CAM_SET_BOSS_SHADES);
|
||||
} else {
|
||||
Camera_ChangeSetting(globalCtx->cameraPtrs[MAIN_CAM], CAM_SET_DUNGEON0);
|
||||
}
|
||||
|
||||
if (func_8004356C(&this->dyna) && (player->fallDistance > 1000.0f)) {
|
||||
this->dyna.actor.params = 1;
|
||||
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EN_SHADEST_TAIKO_HIGH);
|
||||
}
|
||||
|
||||
if (this->dyna.actor.params == BONGOFLOOR_HIT) {
|
||||
Actor* item00 = globalCtx->actorCtx.actorLists[ACTORCAT_MISC].head;
|
||||
f32 distFromRim;
|
||||
f32 xzDist;
|
||||
|
||||
this->drumAmp = 80;
|
||||
this->dyna.actor.params = BONGOFLOOR_REST;
|
||||
this->drumPhase = 28;
|
||||
|
||||
if (func_8004356C(&this->dyna) && !(player->stateFlags1 & 0x6000)) {
|
||||
distFromRim = 600.0f - this->dyna.actor.xzDistToPlayer;
|
||||
if (distFromRim > 0.0f) {
|
||||
if (distFromRim > 350.0f) {
|
||||
distFromRim = 350.0f;
|
||||
}
|
||||
player->actor.bgCheckFlags &= ~1;
|
||||
player->actor.velocity.y = 9.0f * distFromRim * (1.0f / 350.0f);
|
||||
}
|
||||
}
|
||||
|
||||
while (item00 != NULL) {
|
||||
if ((item00->id == ACTOR_EN_ITEM00) && (item00->world.pos.y == 0.0f)) {
|
||||
xzDist = Actor_WorldDistXZToActor(&this->dyna.actor, item00);
|
||||
distFromRim = 600.0f - xzDist;
|
||||
if (xzDist < 600.0f) {
|
||||
if (distFromRim > 350.0f) {
|
||||
distFromRim = 350.0f;
|
||||
}
|
||||
item00->bgCheckFlags &= ~3;
|
||||
item00->velocity.y = 9.0f * distFromRim * (1.0f / 350.0f);
|
||||
}
|
||||
}
|
||||
item00 = item00->next;
|
||||
}
|
||||
}
|
||||
this->drumHeight = sinf(this->drumPhase * (M_PI / 2)) * (-this->drumAmp);
|
||||
Math_StepToS(&this->drumAmp, 0, 5);
|
||||
|
||||
colHeader->vtxList[1].y = colHeader->vtxList[0].y = colHeader->vtxList[2].y =
|
||||
colHeader->vtxList[3].y = colHeader->vtxList[4].y = colHeader->vtxList[7].y =
|
||||
colHeader->vtxList[9].y = colHeader->vtxList[11].y = colHeader->vtxList[13].y =
|
||||
this->dyna.actor.home.pos.y + this->drumHeight;
|
||||
|
||||
if (this->drumPhase != 0) {
|
||||
this->drumPhase--;
|
||||
}
|
||||
if (1) {}
|
||||
func_8003EE6C(globalCtx, &globalCtx->colCtx.dyna);
|
||||
}
|
||||
|
||||
void BgSstFloor_Draw(BgSstFloor* thisx, GlobalContext* globalCtx) {
|
||||
BgSstFloor* this = THIS;
|
||||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_bg_sst_floor.c", 277);
|
||||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
Matrix_Scale(1.0f, this->drumHeight * -0.0025f, 1.0f, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_sst_floor.c", 283),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
gSPDisplayList(POLY_OPA_DISP++, gBongoDrumDL);
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_sst_floor.c", 287);
|
||||
}
|
||||
|
|
|
@ -7,10 +7,17 @@
|
|||
struct BgSstFloor;
|
||||
|
||||
typedef struct BgSstFloor {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x20];
|
||||
/* 0x0000 */ DynaPolyActor dyna;
|
||||
/* 0x014C */ s16 drumPhase;
|
||||
/* 0x0166 */ s16 drumAmp;
|
||||
/* 0x0168 */ s16 drumHeight;
|
||||
} BgSstFloor; // size = 0x016C
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ BONGOFLOOR_REST,
|
||||
/* 1 */ BONGOFLOOR_HIT
|
||||
} BgSstFloorParams;
|
||||
|
||||
extern const ActorInit Bg_Sst_Floor_InitVars;
|
||||
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -6,11 +6,59 @@
|
|||
|
||||
struct BossSst;
|
||||
|
||||
typedef void (*BossSstActionFunc)(struct BossSst*, GlobalContext*);
|
||||
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Vec3f pos;
|
||||
/* 0x0010 */ Vec3f vel;
|
||||
/* 0x0018 */ Vec3s rot;
|
||||
/* 0x001E */ u16 scale;
|
||||
/* 0x0020 */ s16 move;
|
||||
/* 0x0022 */ s16 status;
|
||||
/* 0x0024 */ u8 alpha;
|
||||
} BossSstEffect; // size = 0x28
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ PosRot world;
|
||||
/* 0x0014 */ f32 zPosMod;
|
||||
/* 0x0018 */ s16 yRotMod;
|
||||
} BossSstHandTrail; // size = 0x1C
|
||||
|
||||
typedef struct BossSst {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x94C];
|
||||
/* 0x014C */ SkelAnime skelAnime;
|
||||
/* 0x0190 */ BossSstActionFunc actionFunc;
|
||||
/* 0x0194 */ s8 actionVar; // head: flag for visible without lens; hand: 1 for right, -1 for left
|
||||
/* 0x0195 */ s8 ready;
|
||||
/* 0x0196 */ u8 effectMode;
|
||||
/* 0x0198 */ s16 timer;
|
||||
/* 0x019A */ s16 handAngSpeed;
|
||||
/* 0x019C */ s16 handMaxSpeed;
|
||||
/* 0x019E */ s16 handZPosMod;
|
||||
/* 0x01A0 */ s16 handYRotMod;
|
||||
/* 0x01A2 */ s16 amplitude;
|
||||
/* 0x01A4 */ s16 targetYaw;
|
||||
/* 0x01A6 */ s16 targetRoll;
|
||||
/* 0x01A8 */ Vec3s jointTable[45];
|
||||
/* 0x02B6 */ Vec3s morphTable[45];
|
||||
/* 0x03C4 */ f32 radius;
|
||||
/* 0x03C8 */ Vec3f center;
|
||||
/* 0x03D4 */ ColliderJntSph colliderJntSph;
|
||||
/* 0x03F4 */ ColliderJntSphElement colliderItems[11];
|
||||
/* 0x06B4 */ ColliderCylinder colliderCyl;
|
||||
/* 0x0700 */ BossSstEffect effects[18];
|
||||
/* 0x09D0 */ s16 trailIndex;
|
||||
/* 0x09D2 */ s16 trailCount;
|
||||
/* 0x09D4 */ BossSstHandTrail handTrails[7];
|
||||
} BossSst; // size = 0x0A98
|
||||
|
||||
typedef enum {
|
||||
/* -1 */ BONGO_HEAD = -1,
|
||||
/* 0 */ BONGO_LEFT_HAND,
|
||||
/* 1 */ BONGO_RIGHT_HAND
|
||||
} BossSstType;
|
||||
|
||||
extern const ActorInit Boss_Sst_InitVars;
|
||||
|
||||
#endif
|
||||
|
|
352
src/overlays/actors/ovl_Boss_Sst/z_boss_sst_colchk.c
Normal file
352
src/overlays/actors/ovl_Boss_Sst/z_boss_sst_colchk.c
Normal file
|
@ -0,0 +1,352 @@
|
|||
#include "z_boss_sst.h"
|
||||
|
||||
static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 2, { { 2000, -1500, 250 }, 65 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 10, { { 0, 0, 0 }, 22 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 11, { { 500, 0, 0 }, 22 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 15, { { -250, -250, 0 }, 25 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 16, { { 500, -250, 0 }, 25 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 20, { { 250, -250, 0 }, 25 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 21, { { 500, -250, 0 }, 25 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 25, { { 0, 0, 0 }, 27 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 26, { { 750, 0, 0 }, 26 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 5, { { 750, -150, 0 }, 21 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 6, { { 750, 0, 0 }, 20 }, 100 },
|
||||
},
|
||||
};
|
||||
|
||||
static ColliderJntSphInit sJntSphInitHand = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_TYPE_ALL,
|
||||
OC2_TYPE_1,
|
||||
COLSHAPE_JNTSPH,
|
||||
},
|
||||
11,
|
||||
sJntSphItemsInitHand,
|
||||
};
|
||||
|
||||
static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 7, { { 1500, 0, 0 }, 70 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 6, { { 0, 0, 0 }, 75 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 4, { { 5000, 0, 0 }, 120 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 3, { { -2500, 0, 0 }, 150 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 43, { { 1500, 0, 0 }, 80 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 43, { { 7500, 0, 0 }, 70 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 44, { { 3000, 0, 0 }, 60 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 40, { { 1500, 0, 0 }, 80 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 40, { { 7500, 0, 0 }, 70 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 41, { { 3000, 0, 0 }, 60 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x20000000, 0x00, 0x30 },
|
||||
{ 0x00000080, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 8, { { 1500, 0, 0 }, 70 }, 100 },
|
||||
},
|
||||
};
|
||||
|
||||
static ColliderJntSphInit sJntSphInitHead = {
|
||||
{
|
||||
COLTYPE_HARD,
|
||||
AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_TYPE_ALL,
|
||||
OC2_TYPE_1,
|
||||
COLSHAPE_JNTSPH,
|
||||
},
|
||||
11,
|
||||
sJntSphItemsInitHead,
|
||||
};
|
||||
|
||||
static ColliderCylinderInit sCylinderInitHead = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
AT_NONE,
|
||||
AC_NONE | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
OC2_TYPE_1,
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE,
|
||||
BUMP_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 85, 100, -50, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
static ColliderCylinderInit sCylinderInitHand = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
AT_TYPE_ENEMY,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
OC2_TYPE_1,
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
{ 0x20000000, 0x04, 0x10 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 85, 1, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
static CollisionCheckInfoInit sColChkInfoInit = { 36, 100, 100, 200 };
|
||||
|
||||
static DamageTable sDamageTable = {
|
||||
/* Deku nut */ DMG_ENTRY(0 , 0x0),
|
||||
/* Deku stick */ DMG_ENTRY(2 , 0x0),
|
||||
/* Slingshot */ DMG_ENTRY(1 , 0x0),
|
||||
/* Explosive */ DMG_ENTRY(2 , 0x0),
|
||||
/* Boomerang */ DMG_ENTRY(0 , 0x0),
|
||||
/* Normal arrow */ DMG_ENTRY(2 , 0x0),
|
||||
/* Hammer swing */ DMG_ENTRY(2 , 0x0),
|
||||
/* Hookshot */ DMG_ENTRY(2 , 0x0),
|
||||
/* Kokiri sword */ DMG_ENTRY(1 , 0x0),
|
||||
/* Master sword */ DMG_ENTRY(2 , 0x0),
|
||||
/* Giant's Knife */ DMG_ENTRY(4 , 0x0),
|
||||
/* Fire arrow */ DMG_ENTRY(2 , 0x0),
|
||||
/* Ice arrow */ DMG_ENTRY(4 , 0x3),
|
||||
/* Light arrow */ DMG_ENTRY(2 , 0x0),
|
||||
/* Unk arrow 1 */ DMG_ENTRY(4 , 0x0),
|
||||
/* Unk arrow 2 */ DMG_ENTRY(2 , 0x0),
|
||||
/* Unk arrow 3 */ DMG_ENTRY(2 , 0x0),
|
||||
/* Fire magic */ DMG_ENTRY(0 , 0x0),
|
||||
/* Ice magic */ DMG_ENTRY(4 , 0x3),
|
||||
/* Light magic */ DMG_ENTRY(4 , 0x4),
|
||||
/* Shield */ DMG_ENTRY(0 , 0x0),
|
||||
/* Mirror Ray */ DMG_ENTRY(0 , 0x0),
|
||||
/* Kokiri spin */ DMG_ENTRY(1 , 0x0),
|
||||
/* Giant spin */ DMG_ENTRY(4 , 0x0),
|
||||
/* Master spin */ DMG_ENTRY(2 , 0x0),
|
||||
/* Kokiri jump */ DMG_ENTRY(2 , 0x0),
|
||||
/* Giant jump */ DMG_ENTRY(8 , 0x0),
|
||||
/* Master jump */ DMG_ENTRY(4 , 0x0),
|
||||
/* Unknown 1 */ DMG_ENTRY(0 , 0x0),
|
||||
/* Unblockable */ DMG_ENTRY(0 , 0x0),
|
||||
/* Hammer jump */ DMG_ENTRY(4 , 0x0),
|
||||
/* Unknown 2 */ DMG_ENTRY(0 , 0x0),
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue