mirror of
https://github.com/zeldaret/mm.git
synced 2026-05-23 06:54:14 -04:00
Sync Colliders Final (#1718)
* ElementDamageInfoAT * ElementDamageInfoAC * colMaterial * elemMaterial
This commit is contained in:
@@ -39,8 +39,8 @@ ActorInit En_Ms_InitVars = {
|
||||
};
|
||||
|
||||
static ColliderCylinderInitType1 D_80952BA0 = {
|
||||
{ COLTYPE_NONE, AT_NONE, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK0, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ COL_MATERIAL_NONE, AT_NONE, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, COLSHAPE_CYLINDER, },
|
||||
{ ELEM_MATERIAL_UNK0, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ 22, 37, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
|
||||
@@ -17,12 +17,12 @@ typedef struct {
|
||||
/* 0x11 */ u8 acFlags; // Information flags for AC collisions.
|
||||
/* 0x12 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
/* 0x13 */ u8 ocFlags2; // Flags related to which colliders it can OC collide with.
|
||||
/* 0x14 */ u8 colType; // Determines hitmarks and sound effects during AC collisions. See `ColliderType` enum
|
||||
/* 0x14 */ u8 colMaterial; // Determines hitmarks and sound effects during AC collisions. See `ColliderMaterial` enum
|
||||
/* 0x15 */ u8 shape; // See `ColliderShape` enum
|
||||
} Collider; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 colType; // Determines hitmarks and sound effects during AC collisions. See `ColliderType` enum
|
||||
/* 0x0 */ u8 colMaterial; // Determines hitmarks and sound effects during AC collisions. See `ColliderMaterial` enum
|
||||
/* 0x1 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x2 */ u8 acFlags; // Information flags for AC collisions.
|
||||
/* 0x3 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
@@ -31,7 +31,7 @@ typedef struct {
|
||||
} ColliderInit; // size = 0x6
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 colType; // Determines hitmarks and sound effects during AC collisions. See `ColliderType` enum
|
||||
/* 0x0 */ u8 colMaterial; // Determines hitmarks and sound effects during AC collisions. See `ColliderMaterial` enum
|
||||
/* 0x1 */ u8 atFlags; // Information flags for AT collisions.
|
||||
/* 0x2 */ u8 acFlags; // Information flags for AC collisions.
|
||||
/* 0x3 */ u8 ocFlags1; // Information flags for OC collisions.
|
||||
@@ -47,36 +47,36 @@ typedef struct {
|
||||
} ColliderInitToActor; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 dmgFlags; // Toucher damage type flags.
|
||||
/* 0x0 */ u32 dmgFlags; // Damage types dealt by this collider element as AT.
|
||||
/* 0x4 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x5 */ u8 damage; // Damage or Stun Timer
|
||||
} ColliderTouch; // size = 0x8
|
||||
} ColliderElementDamageInfoAT; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 dmgFlags; // Toucher damage type flags.
|
||||
/* 0x0 */ u32 dmgFlags; // Damage types dealt by this collider element as AT.
|
||||
/* 0x4 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x5 */ u8 damage; // Damage or Stun Timer
|
||||
} ColliderTouchInit; // size = 0x8
|
||||
} ColliderElementDamageInfoATInit; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 dmgFlags; // Bumper damage type flags.
|
||||
/* 0x4 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x5 */ u8 defense; // Damage Resistance
|
||||
/* 0x6 */ Vec3s hitPos; // Point of contact
|
||||
} ColliderBump; // size = 0xC
|
||||
} ColliderElementDamageInfoAC; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 dmgFlags; // Bumper exclusion mask
|
||||
/* 0x4 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
|
||||
/* 0x5 */ u8 defense; // Damage Resistance
|
||||
} ColliderBumpInit; // size = 0x8
|
||||
} ColliderElementDamageInfoACInit; // size = 0x8
|
||||
|
||||
typedef struct ColliderElement {
|
||||
/* 0x00 */ ColliderTouch toucher; // Damage properties when acting as an AT collider
|
||||
/* 0x08 */ ColliderBump bumper; // Damage properties when acting as an AC collider
|
||||
/* 0x14 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
|
||||
/* 0x15 */ u8 toucherFlags; // Information flags for AT collisions
|
||||
/* 0x16 */ u8 bumperFlags; // Information flags for AC collisions
|
||||
/* 0x00 */ ColliderElementDamageInfoAT atDmgInfo; // Damage properties when acting as an AT collider
|
||||
/* 0x08 */ ColliderElementDamageInfoAC acDmgInfo; // Damage properties when acting as an AC collider
|
||||
/* 0x14 */ u8 elemMaterial; // Affects sfx when attacked by Player, and interaction with hookshot and arrows. See `ElementMaterial` enum
|
||||
/* 0x15 */ u8 atElemFlags; // Information flags for AT collisions
|
||||
/* 0x16 */ u8 acElemFlags; // Information flags for AC collisions
|
||||
/* 0x17 */ u8 ocElemFlags; // Information flags for OC collisions
|
||||
/* 0x18 */ Collider* atHit; // object touching this element's AT collider
|
||||
/* 0x1C */ Collider* acHit; // object touching this element's AC collider
|
||||
@@ -85,11 +85,11 @@ typedef struct ColliderElement {
|
||||
} ColliderElement; // size = 0x28
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
|
||||
/* 0x04 */ ColliderTouchInit toucher; // Damage properties when acting as an AT collider
|
||||
/* 0x0C */ ColliderBumpInit bumper; // Damage properties when acting as an AC collider
|
||||
/* 0x14 */ u8 toucherFlags; // Information flags for AT collisions
|
||||
/* 0x15 */ u8 bumperFlags; // Information flags for AC collisions
|
||||
/* 0x00 */ u8 elemMaterial; // Affects sfx when attacked by Player, and interaction with hookshot and arrows. See `ElementMaterial` enum
|
||||
/* 0x04 */ ColliderElementDamageInfoATInit atDmgInfo; // Damage properties when acting as an AT collider
|
||||
/* 0x0C */ ColliderElementDamageInfoACInit acDmgInfo; // Damage properties when acting as an AC collider
|
||||
/* 0x14 */ u8 atElemFlags; // Information flags for AT collisions
|
||||
/* 0x15 */ u8 acElemFlags; // Information flags for AC collisions
|
||||
/* 0x16 */ u8 ocElemFlags; // Information flags for OC collisions
|
||||
} ColliderElementInit; // size = 0x18
|
||||
|
||||
@@ -327,22 +327,22 @@ typedef enum {
|
||||
/* 2 */ MASSTYPE_NORMAL
|
||||
} ColChkMassType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ COLTYPE_HIT0, // Blue blood, white hitmark
|
||||
/* 1 */ COLTYPE_HIT1, // No blood, dust hitmark
|
||||
/* 2 */ COLTYPE_HIT2, // Green blood, dust hitmark
|
||||
/* 3 */ COLTYPE_HIT3, // No blood, white hitmark
|
||||
/* 4 */ COLTYPE_HIT4, // Water burst, no hitmark
|
||||
/* 5 */ COLTYPE_HIT5, // No blood, red hitmark
|
||||
/* 6 */ COLTYPE_HIT6, // Green blood, white hitmark
|
||||
/* 7 */ COLTYPE_HIT7, // Red blood, white hitmark
|
||||
/* 8 */ COLTYPE_HIT8, // Blue blood, red hitmark
|
||||
/* 9 */ COLTYPE_METAL,
|
||||
/* 10 */ COLTYPE_NONE,
|
||||
/* 11 */ COLTYPE_WOOD,
|
||||
/* 12 */ COLTYPE_HARD,
|
||||
/* 13 */ COLTYPE_TREE
|
||||
} ColliderType;
|
||||
typedef enum ColliderMaterial {
|
||||
/* 0 */ COL_MATERIAL_HIT0, // Blue blood, white hitmark
|
||||
/* 1 */ COL_MATERIAL_HIT1, // No blood, dust hitmark
|
||||
/* 2 */ COL_MATERIAL_HIT2, // Green blood, dust hitmark
|
||||
/* 3 */ COL_MATERIAL_HIT3, // No blood, white hitmark
|
||||
/* 4 */ COL_MATERIAL_HIT4, // Water burst, no hitmark
|
||||
/* 5 */ COL_MATERIAL_HIT5, // No blood, red hitmark
|
||||
/* 6 */ COL_MATERIAL_HIT6, // Green blood, white hitmark
|
||||
/* 7 */ COL_MATERIAL_HIT7, // Red blood, white hitmark
|
||||
/* 8 */ COL_MATERIAL_HIT8, // Blue blood, red hitmark
|
||||
/* 9 */ COL_MATERIAL_METAL,
|
||||
/* 10 */ COL_MATERIAL_NONE,
|
||||
/* 11 */ COL_MATERIAL_WOOD,
|
||||
/* 12 */ COL_MATERIAL_HARD,
|
||||
/* 13 */ COL_MATERIAL_TREE
|
||||
} ColliderMaterial;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ COLSHAPE_JNTSPH,
|
||||
@@ -353,16 +353,16 @@ typedef enum {
|
||||
/* 5 */ COLSHAPE_MAX
|
||||
} ColliderShape;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ ELEMTYPE_UNK0,
|
||||
/* 1 */ ELEMTYPE_UNK1,
|
||||
/* 2 */ ELEMTYPE_UNK2,
|
||||
/* 3 */ ELEMTYPE_UNK3,
|
||||
/* 4 */ ELEMTYPE_UNK4,
|
||||
/* 5 */ ELEMTYPE_UNK5,
|
||||
/* 6 */ ELEMTYPE_UNK6,
|
||||
/* 7 */ ELEMTYPE_UNK7
|
||||
} ElementType;
|
||||
typedef enum ElementMaterial {
|
||||
/* 0 */ ELEM_MATERIAL_UNK0,
|
||||
/* 1 */ ELEM_MATERIAL_UNK1,
|
||||
/* 2 */ ELEM_MATERIAL_UNK2,
|
||||
/* 3 */ ELEM_MATERIAL_UNK3,
|
||||
/* 4 */ ELEM_MATERIAL_UNK4,
|
||||
/* 5 */ ELEM_MATERIAL_UNK5,
|
||||
/* 6 */ ELEM_MATERIAL_UNK6,
|
||||
/* 7 */ ELEM_MATERIAL_UNK7
|
||||
} ElementMaterial;
|
||||
|
||||
#define SAC_ON (1 << 0) // CollisionContext SAC Flag
|
||||
|
||||
@@ -405,27 +405,27 @@ typedef enum {
|
||||
#define OC2_TYPE_2 OC1_TYPE_2 // Has OC type 2
|
||||
#define OC2_FIRST_ONLY (1 << 6) // Skips AC checks on elements after the first collision. Only used by Ganon
|
||||
|
||||
#define TOUCH_NONE 0 // No flags set. Cannot have AT collisions
|
||||
#define TOUCH_ON (1 << 0) // Can have AT collisions
|
||||
#define TOUCH_HIT (1 << 1) // Had an AT collision
|
||||
#define TOUCH_NEAREST (1 << 2) // If a Quad, only collides with the closest bumper
|
||||
#define TOUCH_SFX_NORMAL (0 << 3) // Hit sound effect based on AC collider's type
|
||||
#define TOUCH_SFX_HARD (1 << 3) // Always uses hard deflection sound
|
||||
#define TOUCH_SFX_WOOD (2 << 3) // Always uses wood deflection sound
|
||||
#define TOUCH_SFX_NONE (3 << 3) // No hit sound effect
|
||||
#define TOUCH_AT_HITMARK (1 << 5) // Draw hitmarks for every AT collision
|
||||
#define TOUCH_DREW_HITMARK (1 << 6) // Already drew hitmark for this frame
|
||||
#define TOUCH_UNK7 (1 << 7) // Unknown purpose. Used by some enemy quads
|
||||
#define ATELEM_NONE 0 // No flags set. Cannot have AT collisions
|
||||
#define ATELEM_ON (1 << 0) // Can have AT collisions
|
||||
#define ATELEM_HIT (1 << 1) // Had an AT collision
|
||||
#define ATELEM_NEAREST (1 << 2) // If a Quad, only collides with the closest AC element
|
||||
#define ATELEM_SFX_NORMAL (0 << 3) // Hit sound effect based on AC collider's type
|
||||
#define ATELEM_SFX_HARD (1 << 3) // Always uses hard deflection sound
|
||||
#define ATELEM_SFX_WOOD (2 << 3) // Always uses wood deflection sound
|
||||
#define ATELEM_SFX_NONE (3 << 3) // No hit sound effect
|
||||
#define ATELEM_AT_HITMARK (1 << 5) // Draw hitmarks for every AT collision
|
||||
#define ATELEM_DREW_HITMARK (1 << 6) // Already drew hitmark for this frame
|
||||
#define ATELEM_UNK7 (1 << 7) // Unknown purpose. Used by some enemy quads
|
||||
|
||||
#define BUMP_NONE 0 // No flags set. Cannot have AC collisions
|
||||
#define BUMP_ON (1 << 0) // Can have AC collisions
|
||||
#define BUMP_HIT (1 << 1) // Had an AC collision
|
||||
#define BUMP_HOOKABLE (1 << 2) // Can be hooked if actor has hookability flags set.
|
||||
#define BUMP_NO_AT_INFO (1 << 3) // Does not give its info to the AT collider that hit it.
|
||||
#define BUMP_NO_DAMAGE (1 << 4) // Does not take damage.
|
||||
#define BUMP_NO_SWORD_SFX (1 << 5) // Does not have a sound when hit by player-attached AT colliders.
|
||||
#define BUMP_NO_HITMARK (1 << 6) // Skips hit effects.
|
||||
#define BUMP_DRAW_HITMARK (1 << 7) // Draw hitmark for AC collision this frame.
|
||||
#define ACELEM_NONE 0 // No flags set. Cannot have AC collisions
|
||||
#define ACELEM_ON (1 << 0) // Can have AC collisions
|
||||
#define ACELEM_HIT (1 << 1) // Had an AC collision
|
||||
#define ACELEM_HOOKABLE (1 << 2) // Can be hooked if actor has hookability flags set.
|
||||
#define ACELEM_NO_AT_INFO (1 << 3) // Does not give its info to the AT collider that hit it.
|
||||
#define ACELEM_NO_DAMAGE (1 << 4) // Does not take damage.
|
||||
#define ACELEM_NO_SWORD_SFX (1 << 5) // Does not have a sound when hit by player-attached AT colliders.
|
||||
#define ACELEM_NO_HITMARK (1 << 6) // Skips hit effects.
|
||||
#define ACELEM_DRAW_HITMARK (1 << 7) // Draw hitmark for AC collision this frame.
|
||||
|
||||
#define OCELEM_NONE 0 // No flags set. Cannot have OC collisions
|
||||
#define OCELEM_ON (1 << 0) // Can have OC collisions
|
||||
@@ -509,9 +509,9 @@ typedef struct CollisionCheckInfo {
|
||||
|
||||
DamageTable* DamageTable_Get(s32 index);
|
||||
void DamageTable_Clear(DamageTable* damageTable);
|
||||
f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* atCol, ColliderElement* atElem, Collider* acCol, ColliderElement* acElem, u32* effect);
|
||||
f32 CollisionCheck_ApplyBumperDefense(f32 damage, ColliderElement* acElem);
|
||||
s32 CollisionCheck_GetToucherDamage(Collider* atCol, ColliderElement* atElem, Collider* acCol, ColliderElement* acElem);
|
||||
f32 CollisionCheck_GetDamageAndEffectOnElementAC(Collider* atCol, ColliderElement* atElem, Collider* acCol, ColliderElement* acElem, u32* effect);
|
||||
f32 CollisionCheck_ApplyElementATDefense(f32 damage, ColliderElement* acElem);
|
||||
s32 CollisionCheck_GetElementATDamage(Collider* atCol, ColliderElement* atElem, Collider* acCol, ColliderElement* acElem);
|
||||
s32 Collider_InitBase(struct PlayState* play, Collider* col);
|
||||
s32 Collider_DestroyBase(struct PlayState* play, Collider* collider);
|
||||
s32 Collider_SetBaseToActor(struct PlayState* play, Collider* col, ColliderInitToActor* src);
|
||||
@@ -520,13 +520,13 @@ s32 Collider_SetBase(struct PlayState* play, Collider* col, struct Actor* actor,
|
||||
void Collider_ResetATBase(struct PlayState* play, Collider* col);
|
||||
void Collider_ResetACBase(struct PlayState* play, Collider* col);
|
||||
void Collider_ResetOCBase(struct PlayState* play, Collider* col);
|
||||
s32 Collider_InitTouch(struct PlayState* play, ColliderTouch* touch);
|
||||
s32 Collider_DestroyTouch(struct PlayState* play, ColliderTouch* touch);
|
||||
s32 Collider_SetTouch(struct PlayState* play, ColliderTouch* touch, ColliderTouchInit* src);
|
||||
s32 Collider_InitElementDamageInfoAT(struct PlayState* play, ColliderElementDamageInfoAT* atDmgInfo);
|
||||
s32 Collider_DestroyElementDamageInfoAT(struct PlayState* play, ColliderElementDamageInfoAT* atDmgInfo);
|
||||
s32 Collider_SetElementDamageInfoAT(struct PlayState* play, ColliderElementDamageInfoAT* dest, ColliderElementDamageInfoATInit* src);
|
||||
void Collider_ResetATElementUnk(struct PlayState* play, ColliderElement* elem);
|
||||
s32 Collider_InitBump(struct PlayState* play, ColliderBump* bump);
|
||||
s32 Collider_DestroyBump(struct PlayState* play, ColliderBump* bump);
|
||||
s32 Collider_SetBump(struct PlayState* play, ColliderBump* bump, ColliderBumpInit* src);
|
||||
s32 Collider_InitElementDamageInfoAC(struct PlayState* play, ColliderElementDamageInfoAC* acDmgInfo);
|
||||
s32 Collider_DestroyElementDamageInfoAC(struct PlayState* play, ColliderElementDamageInfoAC* acDmgInfo);
|
||||
s32 Collider_SetElementDamageInfoAC(struct PlayState* play, ColliderElementDamageInfoAC* dest, ColliderElementDamageInfoACInit* src);
|
||||
s32 Collider_InitElement(struct PlayState* play, ColliderElement* elem);
|
||||
s32 Collider_DestroyElement(struct PlayState* play, ColliderElement* elem);
|
||||
s32 Collider_SetElement(struct PlayState* play, ColliderElement* elem, ColliderElementInit* elemInit);
|
||||
@@ -620,8 +620,8 @@ s32 CollisionCheck_SetAC_SAC(struct PlayState* play, CollisionCheckContext* colC
|
||||
s32 CollisionCheck_SetOC(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* col);
|
||||
s32 CollisionCheck_SetOC_SAC(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* col, s32 index);
|
||||
s32 CollisionCheck_SetOCLine(struct PlayState* play, CollisionCheckContext* colChkCtx, OcLine* line);
|
||||
s32 CollisionCheck_SkipTouch(ColliderElement* elem);
|
||||
s32 CollisionCheck_SkipBump(ColliderElement* elem);
|
||||
s32 CollisionCheck_IsElementNotAT(ColliderElement* elem);
|
||||
s32 CollisionCheck_IsElementNotAC(ColliderElement* elem);
|
||||
s32 CollisionCheck_NoSharedFlags(ColliderElement* atElem, ColliderElement* acElem);
|
||||
void CollisionCheck_NoBlood(struct PlayState* play, Collider* collider, Vec3f* v);
|
||||
void CollisionCheck_BlueBlood(struct PlayState* play, Collider* collider, Vec3f* v);
|
||||
|
||||
+7
-7
@@ -4725,11 +4725,11 @@ void Actor_SetDropFlag(Actor* actor, ColliderElement* elem) {
|
||||
|
||||
if (acHitElem == NULL) {
|
||||
actor->dropFlag = DROPFLAG_NONE;
|
||||
} else if (acHitElem->toucher.dmgFlags & DMG_FIRE_ARROW) {
|
||||
} else if (acHitElem->atDmgInfo.dmgFlags & DMG_FIRE_ARROW) {
|
||||
actor->dropFlag = DROPFLAG_1;
|
||||
} else if (acHitElem->toucher.dmgFlags & DMG_ICE_ARROW) {
|
||||
} else if (acHitElem->atDmgInfo.dmgFlags & DMG_ICE_ARROW) {
|
||||
actor->dropFlag = DROPFLAG_2;
|
||||
} else if (acHitElem->toucher.dmgFlags & DMG_LIGHT_ARROW) {
|
||||
} else if (acHitElem->atDmgInfo.dmgFlags & DMG_LIGHT_ARROW) {
|
||||
actor->dropFlag = DROPFLAG_20;
|
||||
} else {
|
||||
actor->dropFlag = DROPFLAG_NONE;
|
||||
@@ -4751,7 +4751,7 @@ void Actor_SetDropFlagJntSph(Actor* actor, ColliderJntSph* jntSph) {
|
||||
if (acHitElem == NULL) {
|
||||
flag = DROPFLAG_NONE;
|
||||
} else {
|
||||
s32 dmgFlags = acHitElem->toucher.dmgFlags;
|
||||
s32 dmgFlags = acHitElem->atDmgInfo.dmgFlags;
|
||||
|
||||
if (dmgFlags & DMG_FIRE_ARROW) {
|
||||
flag = DROPFLAG_1;
|
||||
@@ -4804,7 +4804,7 @@ void func_800BE3D0(Actor* actor, s16 angle, Vec3s* arg2) {
|
||||
|
||||
void func_800BE504(Actor* actor, ColliderCylinder* cyl) {
|
||||
// Checks if was hit by either DMG_NORMAL_ARROW, DMG_FIRE_ARROW, DMG_ICE_ARROW, DMG_LIGHT_ARROW or DMG_DEKU_BUBBLE
|
||||
if ((cyl->elem.acHitElem->toucher.dmgFlags & (0x10000 | 0x2000 | 0x1000 | 0x800 | 0x20))) {
|
||||
if ((cyl->elem.acHitElem->atDmgInfo.dmgFlags & (0x10000 | 0x2000 | 0x1000 | 0x800 | 0x20))) {
|
||||
actor->world.rot.y = cyl->base.ac->shape.rot.y;
|
||||
} else {
|
||||
actor->world.rot.y = Actor_WorldYawTowardActor(cyl->base.ac, actor);
|
||||
@@ -4812,7 +4812,7 @@ void func_800BE504(Actor* actor, ColliderCylinder* cyl) {
|
||||
}
|
||||
|
||||
void func_800BE568(Actor* actor, ColliderSphere* sph) {
|
||||
if (sph->elem.acHitElem->toucher.dmgFlags & (0x10000 | 0x2000 | 0x1000 | 0x800 | 0x20)) {
|
||||
if (sph->elem.acHitElem->atDmgInfo.dmgFlags & (0x10000 | 0x2000 | 0x1000 | 0x800 | 0x20)) {
|
||||
actor->world.rot.y = sph->base.ac->shape.rot.y;
|
||||
} else {
|
||||
actor->world.rot.y = Actor_WorldYawTowardActor(sph->base.ac, actor);
|
||||
@@ -4820,7 +4820,7 @@ void func_800BE568(Actor* actor, ColliderSphere* sph) {
|
||||
}
|
||||
|
||||
void func_800BE5CC(Actor* actor, ColliderJntSph* jntSph, s32 elemIndex) {
|
||||
if (jntSph->elements[elemIndex].base.acHitElem->toucher.dmgFlags & (0x10000 | 0x2000 | 0x1000 | 0x800 | 0x20)) {
|
||||
if (jntSph->elements[elemIndex].base.acHitElem->atDmgInfo.dmgFlags & (0x10000 | 0x2000 | 0x1000 | 0x800 | 0x20)) {
|
||||
actor->world.rot.y = jntSph->base.ac->shape.rot.y;
|
||||
} else {
|
||||
actor->world.rot.y = Actor_WorldYawTowardActor(jntSph->base.ac, actor);
|
||||
|
||||
+182
-175
@@ -109,8 +109,8 @@ TriNorm D_801EE188;
|
||||
* Gets the damage and effect that should be applied for the collision between
|
||||
* `at` and `ac`, referring to the ac actor's damage chart if applicable.
|
||||
*/
|
||||
f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* atCol, ColliderElement* atElem, Collider* acCol,
|
||||
ColliderElement* acElem, u32* effect) {
|
||||
f32 CollisionCheck_GetDamageAndEffectOnElementAC(Collider* atCol, ColliderElement* atElem, Collider* acCol,
|
||||
ColliderElement* acElem, u32* effect) {
|
||||
static f32 sDamageMultipliers[] = {
|
||||
0.0f, 1.0f, 2.0f, 0.5f, 0.25f, 3.0f, 4.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
|
||||
};
|
||||
@@ -119,10 +119,10 @@ f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* atCol, ColliderElement*
|
||||
f32 damage;
|
||||
|
||||
*effect = 0;
|
||||
damage = CollisionCheck_GetToucherDamage(atCol, atElem, acCol, acElem);
|
||||
damage = CollisionCheck_GetElementATDamage(atCol, atElem, acCol, acElem);
|
||||
|
||||
if (acCol->actor->colChkInfo.damageTable != NULL) {
|
||||
dmgFlags = atElem->toucher.dmgFlags;
|
||||
dmgFlags = atElem->atDmgInfo.dmgFlags;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(acCol->actor->colChkInfo.damageTable->attack); i++) {
|
||||
if (dmgFlags == 1) {
|
||||
@@ -140,8 +140,8 @@ f32 CollisionCheck_GetDamageAndEffectOnBumper(Collider* atCol, ColliderElement*
|
||||
/**
|
||||
* Calculates damage after factoring in the ac collider's defense
|
||||
*/
|
||||
f32 CollisionCheck_ApplyBumperDefense(f32 damage, ColliderElement* acElem) {
|
||||
f32 finalDamage = damage - acElem->bumper.defense;
|
||||
f32 CollisionCheck_ApplyElementATDefense(f32 damage, ColliderElement* acElem) {
|
||||
f32 finalDamage = damage - acElem->acDmgInfo.defense;
|
||||
|
||||
return finalDamage;
|
||||
}
|
||||
@@ -150,18 +150,18 @@ f32 CollisionCheck_ApplyBumperDefense(f32 damage, ColliderElement* acElem) {
|
||||
* Gets the damage to be inflicted by `at` on `ac`, before applying other
|
||||
* factors such as the ac collider's defense.
|
||||
*/
|
||||
s32 CollisionCheck_GetToucherDamage(Collider* atCol, ColliderElement* atElem, Collider* acCol,
|
||||
ColliderElement* acElem) {
|
||||
s32 CollisionCheck_GetElementATDamage(Collider* atCol, ColliderElement* atElem, Collider* acCol,
|
||||
ColliderElement* acElem) {
|
||||
if ((atCol->actor != NULL) && (atCol->actor->id == ACTOR_EN_BOM) && (acCol->actor != NULL) &&
|
||||
(acCol->actor->id == ACTOR_PLAYER)) {
|
||||
return 8;
|
||||
}
|
||||
return atElem->toucher.damage;
|
||||
return atElem->atDmgInfo.damage;
|
||||
}
|
||||
|
||||
s32 Collider_InitBase(struct PlayState* play, Collider* col) {
|
||||
static Collider sDefaultCollider = {
|
||||
NULL, NULL, NULL, NULL, AT_NONE, AC_NONE, OC1_NONE, OC2_NONE, COLTYPE_HIT3, COLSHAPE_MAX,
|
||||
NULL, NULL, NULL, NULL, AT_NONE, AC_NONE, OC1_NONE, OC2_NONE, COL_MATERIAL_HIT3, COLSHAPE_MAX,
|
||||
};
|
||||
|
||||
*col = sDefaultCollider;
|
||||
@@ -173,7 +173,7 @@ s32 Collider_DestroyBase(struct PlayState* play, Collider* col) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Uses default OC2_TYPE_1 and COLTYPE_HIT0
|
||||
* Uses default OC2_TYPE_1 and COL_MATERIAL_HIT0
|
||||
*/
|
||||
s32 Collider_SetBaseToActor(struct PlayState* play, Collider* col, ColliderInitToActor* src) {
|
||||
col->actor = src->actor;
|
||||
@@ -190,7 +190,7 @@ s32 Collider_SetBaseToActor(struct PlayState* play, Collider* col, ColliderInitT
|
||||
*/
|
||||
s32 Collider_SetBaseType1(struct PlayState* play, Collider* col, Actor* actor, ColliderInitType1* src) {
|
||||
col->actor = actor;
|
||||
col->colType = src->colType;
|
||||
col->colMaterial = src->colMaterial;
|
||||
col->atFlags = src->atFlags;
|
||||
col->acFlags = src->acFlags;
|
||||
col->ocFlags1 = src->ocFlags1;
|
||||
@@ -201,7 +201,7 @@ s32 Collider_SetBaseType1(struct PlayState* play, Collider* col, Actor* actor, C
|
||||
|
||||
s32 Collider_SetBase(struct PlayState* play, Collider* col, Actor* actor, ColliderInit* src) {
|
||||
col->actor = actor;
|
||||
col->colType = src->colType;
|
||||
col->colMaterial = src->colMaterial;
|
||||
col->atFlags = src->atFlags;
|
||||
col->acFlags = src->acFlags;
|
||||
col->ocFlags1 = src->ocFlags1;
|
||||
@@ -226,72 +226,79 @@ void Collider_ResetOCBase(struct PlayState* play, Collider* col) {
|
||||
col->ocFlags2 &= ~OC2_HIT_PLAYER;
|
||||
}
|
||||
|
||||
s32 Collider_InitTouch(struct PlayState* play, ColliderTouch* touch) {
|
||||
static ColliderTouch sDefaultColliderTouch = { 0x00000000, 0, 0 };
|
||||
s32 Collider_InitElementDamageInfoAT(struct PlayState* play, ColliderElementDamageInfoAT* atDmgInfo) {
|
||||
static ColliderElementDamageInfoAT sDefaultDamageInfoAT = { 0x00000000, 0, 0 };
|
||||
|
||||
*touch = sDefaultColliderTouch;
|
||||
*atDmgInfo = sDefaultDamageInfoAT;
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 Collider_DestroyTouch(struct PlayState* play, ColliderTouch* touch) {
|
||||
s32 Collider_DestroyElementDamageInfoAT(struct PlayState* play, ColliderElementDamageInfoAT* atDmgInfo) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 Collider_SetTouch(struct PlayState* play, ColliderTouch* touch, ColliderTouchInit* src) {
|
||||
touch->dmgFlags = src->dmgFlags;
|
||||
touch->effect = src->effect;
|
||||
touch->damage = src->damage;
|
||||
s32 Collider_SetElementDamageInfoAT(struct PlayState* play, ColliderElementDamageInfoAT* dest,
|
||||
ColliderElementDamageInfoATInit* src) {
|
||||
dest->dmgFlags = src->dmgFlags;
|
||||
dest->effect = src->effect;
|
||||
dest->damage = src->damage;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void Collider_ResetATElementUnk(struct PlayState* play, ColliderElement* elem) {
|
||||
}
|
||||
|
||||
s32 Collider_InitBump(struct PlayState* play, ColliderBump* bump) {
|
||||
static ColliderBump sDefaultColliderBump = { 0xF7CFFFFF, 0, 0, { 0, 0, 0 } };
|
||||
s32 Collider_InitElementDamageInfoAC(struct PlayState* play, ColliderElementDamageInfoAC* acDmgInfo) {
|
||||
static ColliderElementDamageInfoAC sDefaultDamageInfoAC = { 0xF7CFFFFF, 0, 0, { 0, 0, 0 } };
|
||||
|
||||
*bump = sDefaultColliderBump;
|
||||
*acDmgInfo = sDefaultDamageInfoAC;
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 Collider_DestroyBump(struct PlayState* play, ColliderBump* bump) {
|
||||
s32 Collider_DestroyElementDamageInfoAC(struct PlayState* play, ColliderElementDamageInfoAC* acDmgInfo) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 Collider_SetBump(struct PlayState* play, ColliderBump* bump, ColliderBumpInit* src) {
|
||||
bump->dmgFlags = src->dmgFlags;
|
||||
bump->effect = src->effect;
|
||||
bump->defense = src->defense;
|
||||
s32 Collider_SetElementDamageInfoAC(struct PlayState* play, ColliderElementDamageInfoAC* dest,
|
||||
ColliderElementDamageInfoACInit* src) {
|
||||
dest->dmgFlags = src->dmgFlags;
|
||||
dest->effect = src->effect;
|
||||
dest->defense = src->defense;
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 Collider_InitElement(struct PlayState* play, ColliderElement* elem) {
|
||||
static ColliderElement sDefaultColliderElement = {
|
||||
{ 0, 0, 0 }, { 0xF7CFFFFF, 0, 0, { 0, 0, 0 } },
|
||||
ELEMTYPE_UNK0, TOUCH_NONE,
|
||||
BUMP_NONE, OCELEM_NONE,
|
||||
NULL, NULL,
|
||||
NULL, NULL,
|
||||
{ 0, 0, 0 },
|
||||
{ 0xF7CFFFFF, 0, 0, { 0, 0, 0 } },
|
||||
ELEM_MATERIAL_UNK0,
|
||||
ATELEM_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
};
|
||||
|
||||
*elem = sDefaultColliderElement;
|
||||
Collider_InitTouch(play, &elem->toucher);
|
||||
Collider_InitBump(play, &elem->bumper);
|
||||
Collider_InitElementDamageInfoAT(play, &elem->atDmgInfo);
|
||||
Collider_InitElementDamageInfoAC(play, &elem->acDmgInfo);
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 Collider_DestroyElement(struct PlayState* play, ColliderElement* elem) {
|
||||
Collider_DestroyTouch(play, &elem->toucher);
|
||||
Collider_DestroyBump(play, &elem->bumper);
|
||||
Collider_DestroyElementDamageInfoAT(play, &elem->atDmgInfo);
|
||||
Collider_DestroyElementDamageInfoAC(play, &elem->acDmgInfo);
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 Collider_SetElement(struct PlayState* play, ColliderElement* elem, ColliderElementInit* elemInit) {
|
||||
elem->elemType = elemInit->elemType;
|
||||
Collider_SetTouch(play, &elem->toucher, &elemInit->toucher);
|
||||
Collider_SetBump(play, &elem->bumper, &elemInit->bumper);
|
||||
elem->toucherFlags = elemInit->toucherFlags;
|
||||
elem->bumperFlags = elemInit->bumperFlags;
|
||||
elem->elemMaterial = elemInit->elemMaterial;
|
||||
Collider_SetElementDamageInfoAT(play, &elem->atDmgInfo, &elemInit->atDmgInfo);
|
||||
Collider_SetElementDamageInfoAC(play, &elem->acDmgInfo, &elemInit->acDmgInfo);
|
||||
elem->atElemFlags = elemInit->atElemFlags;
|
||||
elem->acElemFlags = elemInit->acElemFlags;
|
||||
elem->ocElemFlags = elemInit->ocElemFlags;
|
||||
return 1;
|
||||
}
|
||||
@@ -299,15 +306,15 @@ s32 Collider_SetElement(struct PlayState* play, ColliderElement* elem, ColliderE
|
||||
void Collider_ResetATElement(struct PlayState* play, ColliderElement* elem) {
|
||||
elem->atHit = NULL;
|
||||
elem->atHitElem = NULL;
|
||||
elem->toucherFlags &= ~TOUCH_HIT;
|
||||
elem->toucherFlags &= ~TOUCH_DREW_HITMARK;
|
||||
elem->atElemFlags &= ~ATELEM_HIT;
|
||||
elem->atElemFlags &= ~ATELEM_DREW_HITMARK;
|
||||
Collider_ResetATElementUnk(play, elem);
|
||||
}
|
||||
|
||||
void Collider_ResetACElement(struct PlayState* play, ColliderElement* elem) {
|
||||
elem->bumper.hitPos.x = elem->bumper.hitPos.y = elem->bumper.hitPos.z = 0;
|
||||
elem->bumperFlags &= ~BUMP_HIT;
|
||||
elem->bumperFlags &= ~BUMP_DRAW_HITMARK;
|
||||
elem->acDmgInfo.hitPos.x = elem->acDmgInfo.hitPos.y = elem->acDmgInfo.hitPos.z = 0;
|
||||
elem->acElemFlags &= ~ACELEM_HIT;
|
||||
elem->acElemFlags &= ~ACELEM_DRAW_HITMARK;
|
||||
elem->acHit = NULL;
|
||||
elem->acHitElem = NULL;
|
||||
}
|
||||
@@ -420,7 +427,7 @@ s32 Collider_DestroyJntSph(struct PlayState* play, ColliderJntSph* jntSph) {
|
||||
|
||||
/**
|
||||
* Sets up the ColliderJntSph using the values in src, sets it to the actor specified in src, and dynamically allocates
|
||||
* the element array. Uses default OC2_TYPE_1 and COLTYPE_HIT0.
|
||||
* the element array. Uses default OC2_TYPE_1 and COL_MATERIAL_HIT0.
|
||||
*/
|
||||
s32 Collider_SetJntSphToActor(struct PlayState* play, ColliderJntSph* dest, ColliderJntSphInitToActor* src) {
|
||||
ColliderJntSphElement* destElem;
|
||||
@@ -583,7 +590,7 @@ s32 Collider_DestroyCylinder(struct PlayState* play, ColliderCylinder* cyl) {
|
||||
|
||||
/**
|
||||
* Sets up the ColliderCylinder using the values in src and sets it to the actor specified in src. Uses default
|
||||
* OC2_TYPE_1 and COLTYPE_0.
|
||||
* OC2_TYPE_1 and COL_MATERIAL_0.
|
||||
*/
|
||||
s32 Collider_SetCylinderToActor(struct PlayState* play, ColliderCylinder* dest, ColliderCylinderInitToActor* src) {
|
||||
Collider_SetBaseToActor(play, &dest->base, &src->base);
|
||||
@@ -997,14 +1004,14 @@ s32 Collider_ResetQuadOC(struct PlayState* play, Collider* col) {
|
||||
}
|
||||
|
||||
/**
|
||||
* For quad colliders with TOUCH_NEAREST, resets the previous AC collider it hit if the current element is closer,
|
||||
* For quad colliders with ATELEM_NEAREST, resets the previous AC collider it hit if the current element is closer,
|
||||
* otherwise returns false. Used on player AT colliders to prevent multiple collisions from registering.
|
||||
*/
|
||||
s32 Collider_QuadSetNearestAC(struct PlayState* play, ColliderQuad* quad, Vec3f* hitPos) {
|
||||
f32 acDist;
|
||||
Vec3f dcMid;
|
||||
|
||||
if (!(quad->elem.toucherFlags & TOUCH_NEAREST)) {
|
||||
if (!(quad->elem.atElemFlags & ATELEM_NEAREST)) {
|
||||
return 1;
|
||||
}
|
||||
Math_Vec3s_ToVec3f(&dcMid, &quad->dim.dcMid);
|
||||
@@ -1419,28 +1426,28 @@ s32 CollisionCheck_SetOCLine(struct PlayState* play, CollisionCheckContext* colC
|
||||
/**
|
||||
* Skips AT elements that are off.
|
||||
*/
|
||||
s32 CollisionCheck_SkipTouch(ColliderElement* elem) {
|
||||
if (!(elem->toucherFlags & TOUCH_ON)) {
|
||||
return 1;
|
||||
s32 CollisionCheck_IsElementNotAT(ColliderElement* elem) {
|
||||
if (!(elem->atElemFlags & ATELEM_ON)) {
|
||||
return true;
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skips AC elements that are off.
|
||||
*/
|
||||
s32 CollisionCheck_SkipBump(ColliderElement* elem) {
|
||||
if (!(elem->bumperFlags & BUMP_ON)) {
|
||||
return 1;
|
||||
s32 CollisionCheck_IsElementNotAC(ColliderElement* elem) {
|
||||
if (!(elem->acElemFlags & ACELEM_ON)) {
|
||||
return true;
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* If the AT element has no dmgFlags in common with the AC element, no collision happens.
|
||||
*/
|
||||
s32 CollisionCheck_NoSharedFlags(ColliderElement* atElem, ColliderElement* acElem) {
|
||||
if (!(atElem->toucher.dmgFlags & acElem->bumper.dmgFlags)) {
|
||||
if (!(atElem->atDmgInfo.dmgFlags & acElem->acDmgInfo.dmgFlags)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -1589,30 +1596,30 @@ void CollisionCheck_RedBloodUnused(struct PlayState* play, Collider* col, Vec3f*
|
||||
* Plays sound effects and displays hitmarks for solid-type AC colliders (METAL, WOOD, HARD, and TREE)
|
||||
*/
|
||||
void CollisionCheck_HitSolid(struct PlayState* play, ColliderElement* elem, Collider* col, Vec3f* hitPos) {
|
||||
s32 flags = elem->toucherFlags & TOUCH_SFX_NONE;
|
||||
s32 flags = elem->atElemFlags & ATELEM_SFX_NONE;
|
||||
|
||||
if ((flags == TOUCH_SFX_NORMAL) && (col->colType != COLTYPE_METAL)) {
|
||||
if ((flags == ATELEM_SFX_NORMAL) && (col->colMaterial != COL_MATERIAL_METAL)) {
|
||||
EffectSsHitmark_SpawnFixedScale(play, 0, hitPos);
|
||||
if (col->actor == NULL) {
|
||||
Audio_PlaySfx(NA_SE_IT_SHIELD_BOUND);
|
||||
} else {
|
||||
Audio_PlaySfx_AtPos(&col->actor->projectedPos, NA_SE_IT_SHIELD_BOUND);
|
||||
}
|
||||
} else if (flags == TOUCH_SFX_NORMAL) {
|
||||
} else if (flags == ATELEM_SFX_NORMAL) {
|
||||
EffectSsHitmark_SpawnFixedScale(play, 3, hitPos);
|
||||
if (col->actor == NULL) {
|
||||
CollisionCheck_SpawnShieldParticlesMetal(play, hitPos);
|
||||
} else {
|
||||
CollisionCheck_SpawnShieldParticlesMetalSound(play, hitPos, &col->actor->projectedPos);
|
||||
}
|
||||
} else if (flags == TOUCH_SFX_HARD) {
|
||||
} else if (flags == ATELEM_SFX_HARD) {
|
||||
EffectSsHitmark_SpawnFixedScale(play, 0, hitPos);
|
||||
if (col->actor == NULL) {
|
||||
Audio_PlaySfx(NA_SE_IT_SHIELD_BOUND);
|
||||
} else {
|
||||
Audio_PlaySfx_AtPos(&col->actor->projectedPos, NA_SE_IT_SHIELD_BOUND);
|
||||
}
|
||||
} else if (flags == TOUCH_SFX_WOOD) {
|
||||
} else if (flags == ATELEM_SFX_WOOD) {
|
||||
EffectSsHitmark_SpawnFixedScale(play, 1, hitPos);
|
||||
if (col->actor == NULL) {
|
||||
Audio_PlaySfx(NA_SE_IT_REFLECTION_WOOD);
|
||||
@@ -1623,17 +1630,17 @@ void CollisionCheck_HitSolid(struct PlayState* play, ColliderElement* elem, Coll
|
||||
}
|
||||
|
||||
/**
|
||||
* Plays a hit sound effect for AT colliders attached to Player based on the AC element's elemType.
|
||||
* Plays a hit sound effect for AT colliders attached to Player based on the AC element's elemMaterial.
|
||||
*/
|
||||
s32 CollisionCheck_SwordHitAudio(Collider* at, ColliderElement* acElem) {
|
||||
if ((at->actor != NULL) && (at->actor->category == ACTORCAT_PLAYER)) {
|
||||
if (acElem->elemType == ELEMTYPE_UNK0) {
|
||||
if (acElem->elemMaterial == ELEM_MATERIAL_UNK0) {
|
||||
Audio_PlaySfx_AtPos(&at->actor->projectedPos, NA_SE_IT_SWORD_STRIKE);
|
||||
} else if (acElem->elemType == ELEMTYPE_UNK1) {
|
||||
} else if (acElem->elemMaterial == ELEM_MATERIAL_UNK1) {
|
||||
Audio_PlaySfx_AtPos(&at->actor->projectedPos, NA_SE_IT_SWORD_STRIKE_HARD);
|
||||
} else if (acElem->elemType == ELEMTYPE_UNK2) {
|
||||
} else if (acElem->elemMaterial == ELEM_MATERIAL_UNK2) {
|
||||
Audio_PlaySfx_AtPos(&at->actor->projectedPos, 0);
|
||||
} else if (acElem->elemType == ELEMTYPE_UNK3) {
|
||||
} else if (acElem->elemMaterial == ELEM_MATERIAL_UNK3) {
|
||||
Audio_PlaySfx_AtPos(&at->actor->projectedPos, 0);
|
||||
}
|
||||
}
|
||||
@@ -1653,34 +1660,34 @@ HitInfo sHitInfo[] = {
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles hitmarks, blood, and sound effects for each AC collision, determined by the AC collider's colType
|
||||
* Handles hitmarks, blood, and sound effects for each AC collision, determined by the AC collider's colMaterial
|
||||
*/
|
||||
void CollisionCheck_HitEffects(struct PlayState* play, Collider* at, ColliderElement* atElem, Collider* ac,
|
||||
ColliderElement* acElem, Vec3f* hitPos) {
|
||||
if (acElem->bumperFlags & BUMP_NO_HITMARK) {
|
||||
if (acElem->acElemFlags & ACELEM_NO_HITMARK) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(atElem->toucherFlags & TOUCH_AT_HITMARK) && (atElem->toucherFlags & TOUCH_DREW_HITMARK)) {
|
||||
if (!(atElem->atElemFlags & ATELEM_AT_HITMARK) && (atElem->atElemFlags & ATELEM_DREW_HITMARK)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ac->actor != NULL) {
|
||||
sBloodFuncs[sHitInfo[ac->colType].blood](play, ac, hitPos);
|
||||
sBloodFuncs[sHitInfo[ac->colMaterial].blood](play, ac, hitPos);
|
||||
}
|
||||
if (ac->actor != NULL) {
|
||||
if (sHitInfo[ac->colType].effect == HIT_SOLID) {
|
||||
if (sHitInfo[ac->colMaterial].effect == HIT_SOLID) {
|
||||
CollisionCheck_HitSolid(play, atElem, ac, hitPos);
|
||||
} else if (sHitInfo[ac->colType].effect == HIT_WOOD) {
|
||||
} else if (sHitInfo[ac->colMaterial].effect == HIT_WOOD) {
|
||||
if (at->actor == NULL) {
|
||||
CollisionCheck_SpawnShieldParticles(play, hitPos);
|
||||
Audio_PlaySfx(NA_SE_IT_REFLECTION_WOOD);
|
||||
} else {
|
||||
CollisionCheck_SpawnShieldParticlesWood(play, hitPos, &at->actor->projectedPos);
|
||||
}
|
||||
} else if (sHitInfo[ac->colType].effect != HIT_NONE) {
|
||||
EffectSsHitmark_SpawnFixedScale(play, sHitInfo[ac->colType].effect, hitPos);
|
||||
if (!(acElem->bumperFlags & BUMP_NO_SWORD_SFX)) {
|
||||
} else if (sHitInfo[ac->colMaterial].effect != HIT_NONE) {
|
||||
EffectSsHitmark_SpawnFixedScale(play, sHitInfo[ac->colMaterial].effect, hitPos);
|
||||
if (!(acElem->acElemFlags & ACELEM_NO_SWORD_SFX)) {
|
||||
CollisionCheck_SwordHitAudio(at, acElem);
|
||||
}
|
||||
}
|
||||
@@ -1710,32 +1717,32 @@ s32 CollisionCheck_SetATvsAC(struct PlayState* play, Collider* atCol, ColliderEl
|
||||
f32 damage;
|
||||
u32 effect;
|
||||
|
||||
if (CollisionCheck_GetToucherDamage(atCol, atElem, acCol, acElem) != 0) {
|
||||
damage = CollisionCheck_GetDamageAndEffectOnBumper(atCol, atElem, acCol, acElem, &effect);
|
||||
if (CollisionCheck_GetElementATDamage(atCol, atElem, acCol, acElem) != 0) {
|
||||
damage = CollisionCheck_GetDamageAndEffectOnElementAC(atCol, atElem, acCol, acElem, &effect);
|
||||
if (damage < 1.0f) {
|
||||
if (effect == 0) {
|
||||
return 0;
|
||||
}
|
||||
} else if ((CollisionCheck_ApplyBumperDefense(damage, acElem) < 1.0f) && (effect == 0)) {
|
||||
} else if ((CollisionCheck_ApplyElementATDefense(damage, acElem) < 1.0f) && (effect == 0)) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if ((acCol->acFlags & AC_HARD) && (atCol->actor != NULL) && (acCol->actor != NULL)) {
|
||||
CollisionCheck_SetBounce(atCol, acCol);
|
||||
}
|
||||
if (!(acElem->bumperFlags & BUMP_NO_AT_INFO)) {
|
||||
if (!(acElem->acElemFlags & ACELEM_NO_AT_INFO)) {
|
||||
atCol->atFlags |= AT_HIT;
|
||||
atCol->at = acCol->actor;
|
||||
atElem->atHit = acCol;
|
||||
atElem->toucherFlags |= TOUCH_HIT;
|
||||
atElem->atElemFlags |= ATELEM_HIT;
|
||||
atElem->atHitElem = acElem;
|
||||
if (!(atElem->bumperFlags & BUMP_HIT)) {
|
||||
atElem->bumper.hitPos.x = hitPos->x;
|
||||
atElem->bumper.hitPos.y = hitPos->y;
|
||||
atElem->bumper.hitPos.z = hitPos->z;
|
||||
if (!(atElem->acElemFlags & ACELEM_HIT)) {
|
||||
atElem->acDmgInfo.hitPos.x = hitPos->x;
|
||||
atElem->acDmgInfo.hitPos.y = hitPos->y;
|
||||
atElem->acDmgInfo.hitPos.z = hitPos->z;
|
||||
}
|
||||
if (atCol->actor != NULL) {
|
||||
atCol->actor->colChkInfo.atHitEffect = acElem->bumper.effect;
|
||||
atCol->actor->colChkInfo.atHitEffect = acElem->acDmgInfo.effect;
|
||||
}
|
||||
}
|
||||
if (!(atElem->ocElemFlags & OCELEM_UNK2)) {
|
||||
@@ -1743,20 +1750,20 @@ s32 CollisionCheck_SetATvsAC(struct PlayState* play, Collider* atCol, ColliderEl
|
||||
acCol->ac = atCol->actor;
|
||||
acElem->acHit = atCol;
|
||||
acElem->acHitElem = atElem;
|
||||
acElem->bumperFlags |= BUMP_HIT;
|
||||
acElem->acElemFlags |= ACELEM_HIT;
|
||||
if (acCol->actor != NULL) {
|
||||
acCol->actor->colChkInfo.acHitEffect = atElem->toucher.effect;
|
||||
acCol->actor->colChkInfo.acHitEffect = atElem->atDmgInfo.effect;
|
||||
}
|
||||
acElem->bumper.hitPos.x = hitPos->x;
|
||||
acElem->bumper.hitPos.y = hitPos->y;
|
||||
acElem->bumper.hitPos.z = hitPos->z;
|
||||
acElem->acDmgInfo.hitPos.x = hitPos->x;
|
||||
acElem->acDmgInfo.hitPos.y = hitPos->y;
|
||||
acElem->acDmgInfo.hitPos.z = hitPos->z;
|
||||
}
|
||||
if (!(atElem->toucherFlags & TOUCH_AT_HITMARK) && (acCol->colType != COLTYPE_METAL) &&
|
||||
(acCol->colType != COLTYPE_WOOD) && (acCol->colType != COLTYPE_HARD)) {
|
||||
acElem->bumperFlags |= BUMP_DRAW_HITMARK;
|
||||
if (!(atElem->atElemFlags & ATELEM_AT_HITMARK) && (acCol->colMaterial != COL_MATERIAL_METAL) &&
|
||||
(acCol->colMaterial != COL_MATERIAL_WOOD) && (acCol->colMaterial != COL_MATERIAL_HARD)) {
|
||||
acElem->acElemFlags |= ACELEM_DRAW_HITMARK;
|
||||
} else {
|
||||
CollisionCheck_HitEffects(play, atCol, atElem, acCol, acElem, hitPos);
|
||||
atElem->toucherFlags |= TOUCH_DREW_HITMARK;
|
||||
atElem->atElemFlags |= ATELEM_DREW_HITMARK;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -1793,13 +1800,13 @@ void CollisionCheck_AC_JntSphVsJntSph(struct PlayState* play, CollisionCheckCont
|
||||
if ((atJntSph->count > 0) && (atJntSph->elements != NULL) && (acJntSph->count > 0) &&
|
||||
(acJntSph->elements != NULL)) {
|
||||
for (atJntSphElem = atJntSph->elements; atJntSphElem < &atJntSph->elements[atJntSph->count]; atJntSphElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (acJntSphElem = acJntSph->elements; acJntSphElem < &acJntSph->elements[acJntSph->count];
|
||||
acJntSphElem++) {
|
||||
if (CollisionCheck_SkipBump(&acJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acJntSphElem->base)) {
|
||||
@@ -1848,11 +1855,11 @@ void CollisionCheck_AC_JntSphVsCyl(struct PlayState* play, CollisionCheckContext
|
||||
f32 centerDist;
|
||||
|
||||
if ((atJntSph->count > 0) && (atJntSph->elements != NULL) && (acCyl->dim.radius > 0) && (acCyl->dim.height > 0)) {
|
||||
if (CollisionCheck_SkipBump(&acCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
for (atJntSphElem = atJntSph->elements; atJntSphElem < &atJntSph->elements[atJntSph->count]; atJntSphElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acCyl->elem)) {
|
||||
@@ -1900,11 +1907,11 @@ void CollisionCheck_AC_JntSphVsTris(struct PlayState* play, CollisionCheckContex
|
||||
|
||||
if ((atJntSph->count > 0) && (atJntSph->elements != NULL) && (acTris->count > 0) && (acTris->elements != NULL)) {
|
||||
for (atJntSphElem = atJntSph->elements; atJntSphElem < &atJntSph->elements[atJntSph->count]; atJntSphElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
for (acTrisElem = acTris->elements; acTrisElem < &acTris->elements[acTris->count]; acTrisElem++) {
|
||||
if (CollisionCheck_SkipBump(&acTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acTrisElem->base)) {
|
||||
@@ -1936,14 +1943,14 @@ void CollisionCheck_AC_JntSphVsQuad(struct PlayState* play, CollisionCheckContex
|
||||
ColliderJntSphElement* atJntSphElem;
|
||||
|
||||
if ((atJntSph->count > 0) && (atJntSph->elements != NULL)) {
|
||||
if (CollisionCheck_SkipBump(&acQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
Math3D_TriNorm(&D_801EF590, &acQuad->dim.quad[2], &acQuad->dim.quad[3], &acQuad->dim.quad[1]);
|
||||
Math3D_TriNorm(&D_801EF5C8, &acQuad->dim.quad[1], &acQuad->dim.quad[0], &acQuad->dim.quad[2]);
|
||||
|
||||
for (atJntSphElem = atJntSph->elements; atJntSphElem < &atJntSph->elements[atJntSph->count]; atJntSphElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acQuad->elem)) {
|
||||
@@ -1976,11 +1983,11 @@ void CollisionCheck_AC_JntSphVsSphere(struct PlayState* play, CollisionCheckCont
|
||||
f32 centerDist;
|
||||
|
||||
if ((atJntSph->count > 0) && (atJntSph->elements != NULL)) {
|
||||
if (CollisionCheck_SkipBump(&acSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acSph->elem)) {
|
||||
return;
|
||||
}
|
||||
for (atJntSphElem = atJntSph->elements; atJntSphElem < &atJntSph->elements[atJntSph->count]; atJntSphElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acSph->elem)) {
|
||||
@@ -2022,11 +2029,11 @@ void CollisionCheck_AC_CylVsJntSph(struct PlayState* play, CollisionCheckContext
|
||||
ColliderJntSphElement* acJntSphElem;
|
||||
|
||||
if ((acJntSph->count > 0) && (acJntSph->elements != NULL) && (atCyl->dim.radius > 0) && (atCyl->dim.height > 0)) {
|
||||
if (CollisionCheck_SkipTouch(&atCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
for (acJntSphElem = acJntSph->elements; acJntSphElem < &acJntSph->elements[acJntSph->count]; acJntSphElem++) {
|
||||
if (CollisionCheck_SkipBump(&acJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acJntSphElem->base)) {
|
||||
@@ -2074,10 +2081,10 @@ void CollisionCheck_AC_CylVsCyl(struct PlayState* play, CollisionCheckContext* c
|
||||
f32 centerDist;
|
||||
|
||||
if ((atCyl->dim.radius > 0) && (atCyl->dim.height > 0) && (acCyl->dim.radius > 0) && (acCyl->dim.height > 0)) {
|
||||
if (CollisionCheck_SkipBump(&acCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_SkipTouch(&atCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acCyl->elem)) {
|
||||
@@ -2128,12 +2135,12 @@ void CollisionCheck_AC_CylVsTris(struct PlayState* play, CollisionCheckContext*
|
||||
Vec3f hitPos;
|
||||
|
||||
if ((atCyl->dim.radius > 0) && (atCyl->dim.height > 0) && (acTris->count > 0) && (acTris->elements != NULL)) {
|
||||
if (CollisionCheck_SkipTouch(&atCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (acTrisElem = acTris->elements; acTrisElem < &acTris->elements[acTris->count]; acTrisElem++) {
|
||||
if (CollisionCheck_SkipBump(&acTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acTrisElem->base)) {
|
||||
@@ -2163,10 +2170,10 @@ void CollisionCheck_AC_CylVsQuad(struct PlayState* play, CollisionCheckContext*
|
||||
ColliderQuad* acQuad = (ColliderQuad*)acCol;
|
||||
|
||||
if ((atCyl->dim.height > 0) && (atCyl->dim.radius > 0)) {
|
||||
if (CollisionCheck_SkipTouch(&atCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_SkipBump(&acQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acQuad->elem)) {
|
||||
@@ -2206,10 +2213,10 @@ void CollisionCheck_AC_CylVsSphere(struct PlayState* play, CollisionCheckContext
|
||||
f32 centerDist;
|
||||
|
||||
if ((atCyl->dim.radius > 0) && (atCyl->dim.height > 0)) {
|
||||
if (CollisionCheck_SkipTouch(&atCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_SkipBump(&acSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acSph->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acSph->elem)) {
|
||||
@@ -2256,11 +2263,11 @@ void CollisionCheck_AC_TrisVsJntSph(struct PlayState* play, CollisionCheckContex
|
||||
|
||||
if ((acJntSph->count > 0) && (acJntSph->elements != NULL) && (atTris->count > 0) && (atTris->elements != NULL)) {
|
||||
for (acJntSphElem = acJntSph->elements; acJntSphElem < &acJntSph->elements[acJntSph->count]; acJntSphElem++) {
|
||||
if (CollisionCheck_SkipBump(&acJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
for (atTrisElem = atTris->elements; atTrisElem < &atTris->elements[atTris->count]; atTrisElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acJntSphElem->base)) {
|
||||
@@ -2294,11 +2301,11 @@ void CollisionCheck_AC_TrisVsCyl(struct PlayState* play, CollisionCheckContext*
|
||||
ColliderTrisElement* atTrisElem;
|
||||
|
||||
if ((acCyl->dim.radius > 0) && (acCyl->dim.height > 0) && (atTris->count > 0) && (atTris->elements != NULL)) {
|
||||
if (CollisionCheck_SkipBump(&acCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
for (atTrisElem = atTris->elements; atTrisElem < &atTris->elements[atTris->count]; atTrisElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acCyl->elem)) {
|
||||
@@ -2330,11 +2337,11 @@ void CollisionCheck_AC_TrisVsTris(struct PlayState* play, CollisionCheckContext*
|
||||
|
||||
if ((acTris->count > 0) && (acTris->elements != NULL) && (atTris->count > 0) && (atTris->elements != NULL)) {
|
||||
for (acTrisElem = acTris->elements; acTrisElem < &acTris->elements[acTris->count]; acTrisElem++) {
|
||||
if (CollisionCheck_SkipBump(&acTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
for (atTrisElem = atTris->elements; atTrisElem < &atTris->elements[atTris->count]; atTrisElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acTrisElem->base)) {
|
||||
@@ -2365,7 +2372,7 @@ void CollisionCheck_AC_TrisVsQuad(struct PlayState* play, CollisionCheckContext*
|
||||
ColliderTrisElement* atTrisElem;
|
||||
|
||||
if ((atTris->count > 0) && (atTris->elements != NULL)) {
|
||||
if (CollisionCheck_SkipBump(&acQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2373,7 +2380,7 @@ void CollisionCheck_AC_TrisVsQuad(struct PlayState* play, CollisionCheckContext*
|
||||
Math3D_TriNorm(&D_801EDE78, &acQuad->dim.quad[1], &acQuad->dim.quad[0], &acQuad->dim.quad[2]);
|
||||
|
||||
for (atTrisElem = atTris->elements; atTrisElem < &atTris->elements[atTris->count]; atTrisElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acQuad->elem)) {
|
||||
@@ -2405,11 +2412,11 @@ void CollisionCheck_AC_TrisVsSphere(struct PlayState* play, CollisionCheckContex
|
||||
Vec3f hitPos;
|
||||
|
||||
if ((atTris->count > 0) && (atTris->elements != NULL)) {
|
||||
if (CollisionCheck_SkipBump(&acSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acSph->elem)) {
|
||||
return;
|
||||
}
|
||||
for (atTrisElem = atTris->elements; atTrisElem < &atTris->elements[atTris->count]; atTrisElem++) {
|
||||
if (CollisionCheck_SkipTouch(&atTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acSph->elem)) {
|
||||
@@ -2439,14 +2446,14 @@ void CollisionCheck_AC_QuadVsJntSph(struct PlayState* play, CollisionCheckContex
|
||||
ColliderJntSph* acJntSph = (ColliderJntSph*)acCol;
|
||||
|
||||
if ((acJntSph->count > 0) && (acJntSph->elements != NULL)) {
|
||||
if (CollisionCheck_SkipTouch(&atQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
Math3D_TriNorm(&D_801EDEC8, &atQuad->dim.quad[2], &atQuad->dim.quad[3], &atQuad->dim.quad[1]);
|
||||
Math3D_TriNorm(&D_801EDF00, &atQuad->dim.quad[2], &atQuad->dim.quad[1], &atQuad->dim.quad[0]);
|
||||
|
||||
for (acJntSphElem = acJntSph->elements; acJntSphElem < &acJntSph->elements[acJntSph->count]; acJntSphElem++) {
|
||||
if (CollisionCheck_SkipBump(&acJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acJntSphElem->base)) {
|
||||
@@ -2482,10 +2489,10 @@ void CollisionCheck_AC_QuadVsCyl(struct PlayState* play, CollisionCheckContext*
|
||||
ColliderCylinder* acCyl = (ColliderCylinder*)acCol;
|
||||
|
||||
if ((acCyl->dim.height > 0) && (acCyl->dim.radius > 0)) {
|
||||
if (CollisionCheck_SkipBump(&acCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_SkipTouch(&atQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acCyl->elem)) {
|
||||
@@ -2531,7 +2538,7 @@ void CollisionCheck_AC_QuadVsTris(struct PlayState* play, CollisionCheckContext*
|
||||
ColliderTrisElement* acTrisElem;
|
||||
|
||||
if ((acTris->count > 0) && (acTris->elements != NULL)) {
|
||||
if (CollisionCheck_SkipTouch(&atQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2539,7 +2546,7 @@ void CollisionCheck_AC_QuadVsTris(struct PlayState* play, CollisionCheckContext*
|
||||
Math3D_TriNorm(&D_801EE038, &atQuad->dim.quad[1], &atQuad->dim.quad[0], &atQuad->dim.quad[2]);
|
||||
|
||||
for (acTrisElem = acTris->elements; acTrisElem < &acTris->elements[acTris->count]; acTrisElem++) {
|
||||
if (CollisionCheck_SkipBump(&acTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acTrisElem->base)) {
|
||||
@@ -2573,10 +2580,10 @@ void CollisionCheck_AC_QuadVsQuad(struct PlayState* play, CollisionCheckContext*
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
if (CollisionCheck_SkipTouch(&atQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_SkipBump(&acQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acQuad->elem)) {
|
||||
@@ -2614,10 +2621,10 @@ void CollisionCheck_AC_QuadVsSphere(struct PlayState* play, CollisionCheckContex
|
||||
Vec3f hitPos;
|
||||
ColliderSphere* acSph = (ColliderSphere*)acCol;
|
||||
|
||||
if (CollisionCheck_SkipTouch(&atQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_SkipBump(&acSph->elem) || CollisionCheck_NoSharedFlags(&atQuad->elem, &acSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acSph->elem) || CollisionCheck_NoSharedFlags(&atQuad->elem, &acSph->elem)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2650,12 +2657,12 @@ void CollisionCheck_AC_SphereVsJntSph(struct PlayState* play, CollisionCheckCont
|
||||
f32 centerDist;
|
||||
|
||||
if ((acJntSph->count > 0) && (acJntSph->elements != NULL)) {
|
||||
if (CollisionCheck_SkipTouch(&atSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atSph->elem)) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (acJntSphElem = acJntSph->elements; acJntSphElem < &acJntSph->elements[acJntSph->count]; acJntSphElem++) {
|
||||
if (CollisionCheck_SkipBump(&acJntSphElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atSph->elem, &acJntSphElem->base)) {
|
||||
@@ -2696,10 +2703,10 @@ void CollisionCheck_AC_SphereVsCylinder(struct PlayState* play, CollisionCheckCo
|
||||
f32 overlapSize;
|
||||
f32 centerDist;
|
||||
|
||||
if (CollisionCheck_SkipTouch(&atSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atSph->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_SkipBump(&acCyl->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acCyl->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atSph->elem, &acCyl->elem)) {
|
||||
@@ -2743,12 +2750,12 @@ void CollisionCheck_AC_SphereVsTris(struct PlayState* play, CollisionCheckContex
|
||||
ColliderTrisElement* acTrisElem;
|
||||
Vec3f hitPos;
|
||||
|
||||
if (CollisionCheck_SkipTouch(&atSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atSph->elem)) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (acTrisElem = acTris->elements; acTrisElem < &acTris->elements[acTris->count]; acTrisElem++) {
|
||||
if (CollisionCheck_SkipBump(&acTrisElem->base)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acTrisElem->base)) {
|
||||
continue;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atSph->elem, &acTrisElem->base)) {
|
||||
@@ -2776,10 +2783,10 @@ void CollisionCheck_AC_SphereVsQuad(struct PlayState* play, CollisionCheckContex
|
||||
Vec3f hitPos;
|
||||
ColliderQuad* acQuad = (ColliderQuad*)acCol;
|
||||
|
||||
if (CollisionCheck_SkipTouch(&atSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atSph->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_SkipBump(&acQuad->elem) || CollisionCheck_NoSharedFlags(&atSph->elem, &acQuad->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acQuad->elem) || CollisionCheck_NoSharedFlags(&atSph->elem, &acQuad->elem)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2808,10 +2815,10 @@ void CollisionCheck_AC_SphereVsSphere(struct PlayState* play, CollisionCheckCont
|
||||
f32 overlapSize;
|
||||
f32 centerDist;
|
||||
|
||||
if (CollisionCheck_SkipTouch(&atSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAT(&atSph->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_SkipBump(&acSph->elem)) {
|
||||
if (CollisionCheck_IsElementNotAC(&acSph->elem)) {
|
||||
return;
|
||||
}
|
||||
if (CollisionCheck_NoSharedFlags(&atSph->elem, &acSph->elem)) {
|
||||
@@ -2846,14 +2853,14 @@ void CollisionCheck_SetJntSphHitFX(struct PlayState* play, CollisionCheckContext
|
||||
ColliderJntSphElement* jntSphElem;
|
||||
|
||||
for (jntSphElem = jntSph->elements; jntSphElem < &jntSph->elements[jntSph->count]; jntSphElem++) {
|
||||
if ((jntSphElem->base.bumperFlags & BUMP_DRAW_HITMARK) && (jntSphElem->base.acHitElem != NULL) &&
|
||||
!(jntSphElem->base.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
|
||||
if ((jntSphElem->base.acElemFlags & ACELEM_DRAW_HITMARK) && (jntSphElem->base.acHitElem != NULL) &&
|
||||
!(jntSphElem->base.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
|
||||
Vec3f hitPos;
|
||||
|
||||
Math_Vec3s_ToVec3f(&hitPos, &jntSphElem->base.bumper.hitPos);
|
||||
Math_Vec3s_ToVec3f(&hitPos, &jntSphElem->base.acDmgInfo.hitPos);
|
||||
CollisionCheck_HitEffects(play, jntSphElem->base.acHit, jntSphElem->base.acHitElem, &jntSph->base,
|
||||
&jntSphElem->base, &hitPos);
|
||||
jntSphElem->base.acHitElem->toucherFlags |= TOUCH_DREW_HITMARK;
|
||||
jntSphElem->base.acHitElem->atElemFlags |= ATELEM_DREW_HITMARK;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2865,13 +2872,13 @@ void CollisionCheck_SetJntSphHitFX(struct PlayState* play, CollisionCheckContext
|
||||
void CollisionCheck_SetCylHitFX(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* col) {
|
||||
ColliderCylinder* cyl = (ColliderCylinder*)col;
|
||||
|
||||
if ((cyl->elem.bumperFlags & BUMP_DRAW_HITMARK) && (cyl->elem.acHitElem != NULL) &&
|
||||
!(cyl->elem.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
|
||||
if ((cyl->elem.acElemFlags & ACELEM_DRAW_HITMARK) && (cyl->elem.acHitElem != NULL) &&
|
||||
!(cyl->elem.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
|
||||
Vec3f hitPos;
|
||||
|
||||
Math_Vec3s_ToVec3f(&hitPos, &cyl->elem.bumper.hitPos);
|
||||
Math_Vec3s_ToVec3f(&hitPos, &cyl->elem.acDmgInfo.hitPos);
|
||||
CollisionCheck_HitEffects(play, cyl->elem.acHit, cyl->elem.acHitElem, &cyl->base, &cyl->elem, &hitPos);
|
||||
cyl->elem.acHitElem->toucherFlags |= TOUCH_DREW_HITMARK;
|
||||
cyl->elem.acHitElem->atElemFlags |= ATELEM_DREW_HITMARK;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2883,14 +2890,14 @@ void CollisionCheck_SetTrisHitFX(struct PlayState* play, CollisionCheckContext*
|
||||
ColliderTrisElement* trisElem;
|
||||
|
||||
for (trisElem = tris->elements; trisElem < &tris->elements[tris->count]; trisElem++) {
|
||||
if ((trisElem->base.bumperFlags & BUMP_DRAW_HITMARK) && (trisElem->base.acHitElem != NULL) &&
|
||||
!(trisElem->base.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
|
||||
if ((trisElem->base.acElemFlags & ACELEM_DRAW_HITMARK) && (trisElem->base.acHitElem != NULL) &&
|
||||
!(trisElem->base.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
|
||||
Vec3f hitPos;
|
||||
|
||||
Math_Vec3s_ToVec3f(&hitPos, &trisElem->base.bumper.hitPos);
|
||||
Math_Vec3s_ToVec3f(&hitPos, &trisElem->base.acDmgInfo.hitPos);
|
||||
CollisionCheck_HitEffects(play, trisElem->base.acHit, trisElem->base.acHitElem, &tris->base,
|
||||
&trisElem->base, &hitPos);
|
||||
trisElem->base.acHitElem->toucherFlags |= TOUCH_DREW_HITMARK;
|
||||
trisElem->base.acHitElem->atElemFlags |= ATELEM_DREW_HITMARK;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2902,13 +2909,13 @@ void CollisionCheck_SetTrisHitFX(struct PlayState* play, CollisionCheckContext*
|
||||
void CollisionCheck_SetQuadHitFX(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* col) {
|
||||
ColliderQuad* quad = (ColliderQuad*)col;
|
||||
|
||||
if ((quad->elem.bumperFlags & BUMP_DRAW_HITMARK) && (quad->elem.acHitElem != NULL) &&
|
||||
!(quad->elem.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
|
||||
if ((quad->elem.acElemFlags & ACELEM_DRAW_HITMARK) && (quad->elem.acHitElem != NULL) &&
|
||||
!(quad->elem.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
|
||||
Vec3f hitPos;
|
||||
|
||||
Math_Vec3s_ToVec3f(&hitPos, &quad->elem.bumper.hitPos);
|
||||
Math_Vec3s_ToVec3f(&hitPos, &quad->elem.acDmgInfo.hitPos);
|
||||
CollisionCheck_HitEffects(play, quad->elem.acHit, quad->elem.acHitElem, &quad->base, &quad->elem, &hitPos);
|
||||
quad->elem.acHitElem->toucherFlags |= TOUCH_DREW_HITMARK;
|
||||
quad->elem.acHitElem->atElemFlags |= ATELEM_DREW_HITMARK;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2918,13 +2925,13 @@ void CollisionCheck_SetQuadHitFX(struct PlayState* play, CollisionCheckContext*
|
||||
void CollisionCheck_SetSphereHitFX(struct PlayState* play, CollisionCheckContext* colChkCtx, Collider* col) {
|
||||
ColliderSphere* sph = (ColliderSphere*)col;
|
||||
|
||||
if ((sph->elem.bumperFlags & BUMP_DRAW_HITMARK) && (sph->elem.acHitElem != NULL) &&
|
||||
!(sph->elem.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
|
||||
if ((sph->elem.acElemFlags & ACELEM_DRAW_HITMARK) && (sph->elem.acHitElem != NULL) &&
|
||||
!(sph->elem.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
|
||||
Vec3f hitPos;
|
||||
|
||||
Math_Vec3s_ToVec3f(&hitPos, &sph->elem.bumper.hitPos);
|
||||
Math_Vec3s_ToVec3f(&hitPos, &sph->elem.acDmgInfo.hitPos);
|
||||
CollisionCheck_HitEffects(play, sph->elem.acHit, sph->elem.acHitElem, &sph->base, &sph->elem, &hitPos);
|
||||
sph->elem.acHitElem->toucherFlags |= TOUCH_DREW_HITMARK;
|
||||
sph->elem.acHitElem->atElemFlags |= ATELEM_DREW_HITMARK;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3024,7 +3031,7 @@ void CollisionCheck_AC(struct PlayState* play, CollisionCheckContext* colChkCtx,
|
||||
* Iterates through all AT colliders, testing them for AC collisions with each AC collider, setting the info regarding
|
||||
* the collision for each AC and AT collider that collided. Then spawns hitmarks and plays sound effects for each
|
||||
* successful collision. To collide, an AT collider must share a type (AC_TYPE_PLAYER, AC_TYPE_ENEMY, or AC_TYPE_OTHER)
|
||||
* with the AC collider and the toucher and bumper elements that overlapped must share a dmgFlag.
|
||||
* with the AC collider and the atDmgInfo and acDmgInfo elements that overlapped must share a dmgFlag.
|
||||
*/
|
||||
void CollisionCheck_AT(struct PlayState* play, CollisionCheckContext* colChkCtx) {
|
||||
Collider** acColP;
|
||||
@@ -3536,7 +3543,7 @@ void CollisionCheck_ApplyDamage(struct PlayState* play, CollisionCheckContext* c
|
||||
if ((col->actor == NULL) || !(col->acFlags & AC_HIT)) {
|
||||
return;
|
||||
}
|
||||
if (!(elem->bumperFlags & BUMP_HIT) || (elem->bumperFlags & BUMP_NO_DAMAGE)) {
|
||||
if (!(elem->acElemFlags & ACELEM_HIT) || (elem->acElemFlags & ACELEM_NO_DAMAGE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3544,16 +3551,16 @@ void CollisionCheck_ApplyDamage(struct PlayState* play, CollisionCheckContext* c
|
||||
atElem = elem->acHitElem;
|
||||
|
||||
if ((atCol != NULL) && (atElem != NULL) && (col != NULL) && (elem != NULL)) {
|
||||
damage = CollisionCheck_GetDamageAndEffectOnBumper(atCol, atElem, col, elem, &effect);
|
||||
damage = CollisionCheck_GetDamageAndEffectOnElementAC(atCol, atElem, col, elem, &effect);
|
||||
|
||||
if (CollisionCheck_GetToucherDamage(atCol, atElem, col, elem) != 0) {
|
||||
if (CollisionCheck_GetElementATDamage(atCol, atElem, col, elem) != 0) {
|
||||
if (damage < 1.0f) {
|
||||
finalDamage = 0.0f;
|
||||
if (effect == 0) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
finalDamage = CollisionCheck_ApplyBumperDefense(damage, elem);
|
||||
finalDamage = CollisionCheck_ApplyElementATDefense(damage, elem);
|
||||
if ((finalDamage < 1.0f) && (effect == 0)) {
|
||||
return;
|
||||
}
|
||||
@@ -3562,7 +3569,7 @@ void CollisionCheck_ApplyDamage(struct PlayState* play, CollisionCheckContext* c
|
||||
if (col->actor->colChkInfo.damageTable != NULL) {
|
||||
col->actor->colChkInfo.damageEffect = effect;
|
||||
}
|
||||
if (!(col->acFlags & AC_HARD) || ((col->acFlags & AC_HARD) && (atElem->toucher.dmgFlags == 0x20000000))) {
|
||||
if (!(col->acFlags & AC_HARD) || ((col->acFlags & AC_HARD) && (atElem->atDmgInfo.dmgFlags == 0x20000000))) {
|
||||
if (col->actor->colChkInfo.damage < finalDamage) {
|
||||
col->actor->colChkInfo.damage = finalDamage;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ ActorProfile En_A_Obj_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -35,11 +35,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 25, 60, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -39,7 +39,7 @@ ActorProfile En_Item00_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AT_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -47,11 +47,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000010, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 10, 30, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
ColliderCylinderInit sFireObjCollisionInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -12,11 +12,11 @@ ColliderCylinderInit sFireObjCollisionInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000820, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 18, 67, 0, { 0, 0, 0 } },
|
||||
@@ -223,13 +223,13 @@ void FireObj_Update(PlayState* play, FireObj* fire, Actor* actor) {
|
||||
FireObj_UpdateStateTransitions(play, fire);
|
||||
if (fire->state == FIRE_STATE_NOT_LIT) {
|
||||
if ((fire->collision.base.acFlags & AC_HIT) &&
|
||||
(fire->collision.elem.acHitElem->toucher.dmgFlags & DMG_FIRE_ARROW)) {
|
||||
(fire->collision.elem.acHitElem->atDmgInfo.dmgFlags & DMG_FIRE_ARROW)) {
|
||||
FireObj_SetState(fire, fire->dynamicSizeStep, FIRE_STATE_GROWING);
|
||||
}
|
||||
} else if ((fire->collision.base.acFlags & AC_HIT) && (arrow->actor.update != NULL) &&
|
||||
(arrow->actor.id == ACTOR_EN_ARROW)) {
|
||||
arrow->actor.params = 0;
|
||||
arrow->collider.elem.toucher.dmgFlags = DMG_FIRE_ARROW;
|
||||
arrow->collider.elem.atDmgInfo.dmgFlags = DMG_FIRE_ARROW;
|
||||
}
|
||||
fire->collision.dim.pos.x = fire->position.x;
|
||||
fire->collision.dim.pos.y = fire->position.y;
|
||||
|
||||
@@ -2415,17 +2415,17 @@ s32 func_80126440(PlayState* play, ColliderQuad* collider, WeaponInfo* weaponInf
|
||||
return true;
|
||||
}
|
||||
|
||||
u8 sPlayerShieldCollisionTypes[PLAYER_SHIELD_MAX] = {
|
||||
COLTYPE_METAL, // PLAYER_SHIELD_NONE
|
||||
COLTYPE_METAL, // PLAYER_SHIELD_HEROS_SHIELD
|
||||
COLTYPE_METAL, // PLAYER_SHIELD_MIRROR_SHIELD
|
||||
u8 sPlayerShieldColMaterials[PLAYER_SHIELD_MAX] = {
|
||||
COL_MATERIAL_METAL, // PLAYER_SHIELD_NONE
|
||||
COL_MATERIAL_METAL, // PLAYER_SHIELD_HEROS_SHIELD
|
||||
COL_MATERIAL_METAL, // PLAYER_SHIELD_MIRROR_SHIELD
|
||||
};
|
||||
|
||||
void Player_UpdateShieldCollider(PlayState* play, Player* player, ColliderQuad* collider, Vec3f quadSrc[4]) {
|
||||
if (player->stateFlags1 & PLAYER_STATE1_400000) {
|
||||
Vec3f quadDest[4];
|
||||
|
||||
player->shieldQuad.base.colType = sPlayerShieldCollisionTypes[player->currentShield];
|
||||
player->shieldQuad.base.colMaterial = sPlayerShieldColMaterials[player->currentShield];
|
||||
Matrix_MultVec3f(&quadSrc[0], &quadDest[0]);
|
||||
Matrix_MultVec3f(&quadSrc[1], &quadDest[1]);
|
||||
Matrix_MultVec3f(&quadSrc[2], &quadDest[2]);
|
||||
|
||||
@@ -34,7 +34,7 @@ ActorProfile Arms_Hook_Profile = {
|
||||
|
||||
static ColliderQuadInit D_808C1BC0 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_PLAYER,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -42,11 +42,11 @@ static ColliderQuadInit D_808C1BC0 = {
|
||||
COLSHAPE_QUAD,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0x00000080, 0x00, 0x02 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_NEAREST | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_NEAREST | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
@@ -139,11 +139,11 @@ void ArmsHook_Shoot(ArmsHook* this, PlayState* play) {
|
||||
ArmsHook_CheckForCancel(this);
|
||||
|
||||
if ((this->timer != 0) && (this->collider.base.atFlags & AT_HIT) &&
|
||||
(this->collider.elem.atHitElem->elemType != ELEMTYPE_UNK4)) {
|
||||
(this->collider.elem.atHitElem->elemMaterial != ELEM_MATERIAL_UNK4)) {
|
||||
Actor* touchedActor = this->collider.base.at;
|
||||
|
||||
if ((touchedActor->update != NULL) && (touchedActor->flags & (ACTOR_FLAG_200 | ACTOR_FLAG_400))) {
|
||||
if (this->collider.elem.atHitElem->bumperFlags & BUMP_HOOKABLE) {
|
||||
if (this->collider.elem.atHitElem->acElemFlags & ACELEM_HOOKABLE) {
|
||||
ArmsHook_AttachHookToActor(this, touchedActor);
|
||||
if (CHECK_FLAG_ALL(touchedActor->flags, ACTOR_FLAG_400)) {
|
||||
func_808C1154(this);
|
||||
|
||||
@@ -35,7 +35,7 @@ ActorProfile Arrow_Fire_Profile = {
|
||||
|
||||
static ColliderQuadInit sQuadInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_PLAYER,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -43,11 +43,11 @@ static ColliderQuadInit sQuadInit = {
|
||||
COLSHAPE_QUAD,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x08000000, 0x00, 0x02 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
|
||||
@@ -38,22 +38,22 @@ ActorProfile Bg_Astr_Bombwall_Profile = {
|
||||
static ColliderTrisElementInit sTrisElementsInit[2] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { -70.0f, 0.0f, 3.0f }, { 70.0f, 0.0f, 3.0f }, { -70.0f, 200.0f, 3.0f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 70.0f, 0.0f, 3.0f }, { 70.0f, 200.0f, 3.0f }, { -70.0f, 200.0f, 3.0f } } },
|
||||
@@ -62,7 +62,7 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
|
||||
|
||||
static ColliderTrisInit sTrisInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
|
||||
@@ -32,7 +32,7 @@ ActorProfile Bg_Botihasira_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -40,11 +40,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 27, 80, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -39,7 +39,7 @@ ActorProfile Bg_Dblue_Waterfall_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -47,11 +47,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00CBFBB0, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 50, 740, -740, { 0, 0, 0 } },
|
||||
@@ -150,13 +150,13 @@ void func_80B83EA4(BgDblueWaterfall* this, PlayState* play) {
|
||||
Vec3f sp98;
|
||||
s32 phi_s3;
|
||||
|
||||
if (this->collider.elem.bumperFlags & BUMP_HIT) {
|
||||
if (this->collider.elem.acElemFlags & ACELEM_HIT) {
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f20;
|
||||
|
||||
spB0.x = this->collider.elem.bumper.hitPos.x;
|
||||
spB0.y = this->collider.elem.bumper.hitPos.y;
|
||||
spB0.z = this->collider.elem.bumper.hitPos.z;
|
||||
spB0.x = this->collider.elem.acDmgInfo.hitPos.x;
|
||||
spB0.y = this->collider.elem.acDmgInfo.hitPos.y;
|
||||
spB0.z = this->collider.elem.acDmgInfo.hitPos.z;
|
||||
|
||||
sp98.x = spB0.x - this->actor.world.pos.x;
|
||||
sp98.y = 0.0f;
|
||||
@@ -206,10 +206,10 @@ void func_80B841A0(BgDblueWaterfall* this, PlayState* play) {
|
||||
s32 temp_s3;
|
||||
s32 phi_s2;
|
||||
|
||||
if (this->collider.elem.bumperFlags & BUMP_HIT) {
|
||||
temp_f22 = this->collider.elem.bumper.hitPos.x;
|
||||
temp_f24 = this->collider.elem.bumper.hitPos.y;
|
||||
temp_f26 = this->collider.elem.bumper.hitPos.z;
|
||||
if (this->collider.elem.acElemFlags & ACELEM_HIT) {
|
||||
temp_f22 = this->collider.elem.acDmgInfo.hitPos.x;
|
||||
temp_f24 = this->collider.elem.acDmgInfo.hitPos.y;
|
||||
temp_f26 = this->collider.elem.acDmgInfo.hitPos.z;
|
||||
|
||||
for (i = 0, phi_s2 = 0; i < 10; i++, phi_s2 += 0x1999) {
|
||||
temp_s3 = (s32)(Rand_ZeroOne() * 6553.0f) + phi_s2;
|
||||
@@ -419,13 +419,13 @@ void func_80B84928(BgDblueWaterfall* this, PlayState* play) {
|
||||
if (sp2C) {
|
||||
if (sp30 != 0) {
|
||||
func_80B83EA4(this, play);
|
||||
if (this->collider.elem.acHitElem->toucher.dmgFlags & 0x800) {
|
||||
if (this->collider.elem.acHitElem->atDmgInfo.dmgFlags & 0x800) {
|
||||
this->csId = this->actor.csId;
|
||||
func_80B84AD4(this, play);
|
||||
}
|
||||
} else {
|
||||
func_80B841A0(this, play);
|
||||
if (this->collider.elem.acHitElem->toucher.dmgFlags & 0x1000) {
|
||||
if (this->collider.elem.acHitElem->atDmgInfo.dmgFlags & 0x1000) {
|
||||
this->csId = CutsceneManager_GetAdditionalCsId(this->actor.csId);
|
||||
func_80B84AD4(this, play);
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ ActorProfile Bg_Dkjail_Ivy_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -46,11 +46,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x01000200, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 20, 80, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -35,7 +35,7 @@ ActorProfile Bg_Fire_Wall_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -43,11 +43,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x20000000, 0x01, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 34, 85, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -38,7 +38,7 @@ ActorProfile Bg_Haka_Bombwall_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -46,11 +46,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 80, 80, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -40,7 +40,7 @@ ActorProfile Bg_Hakugin_Bombwall_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -48,11 +48,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 80, 80, 0, { 0, 0, 0 } },
|
||||
@@ -326,7 +326,7 @@ void BgHakuginBombwall_Init(Actor* thisx, PlayState* play) {
|
||||
Collider_SetCylinder(play, &this->collider, &this->dyna.actor, &sCylinderInit);
|
||||
this->collider.dim.radius = ptr->unk_14;
|
||||
this->collider.dim.height = ptr->unk_16;
|
||||
this->collider.elem.bumper.dmgFlags = ptr->unk_18;
|
||||
this->collider.elem.acDmgInfo.dmgFlags = ptr->unk_18;
|
||||
Collider_UpdateCylinder(&this->dyna.actor, &this->collider);
|
||||
|
||||
Actor_SetFocus(&this->dyna.actor, ptr->unk_08);
|
||||
@@ -359,7 +359,7 @@ s32 func_80ABCB5C(BgHakuginBombwall* this, PlayState* play) {
|
||||
|
||||
s32 func_80ABCC00(BgHakuginBombwall* this, PlayState* play) {
|
||||
if (this->collider.base.acFlags & AC_HIT) {
|
||||
if (this->collider.elem.acHitElem->toucher.dmgFlags & 8) {
|
||||
if (this->collider.elem.acHitElem->atDmgInfo.dmgFlags & 8) {
|
||||
if (this->collider.base.ac != NULL) {
|
||||
Actor* thisx = &this->dyna.actor;
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ static BgHakuginPostUnkStruct3 D_80A9D880[] = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -70,11 +70,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000100, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 276, 0, 20, { 0, 0, 0 } },
|
||||
|
||||
@@ -53,7 +53,7 @@ ActorProfile Bg_Hakugin_Switch_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -61,11 +61,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000400, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 60, 10, 180, { 0, 0, 0 } },
|
||||
|
||||
@@ -24,7 +24,7 @@ void BgIcicle_Regrow(BgIcicle* this, PlayState* play);
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -32,11 +32,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 13, 120, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -39,7 +39,7 @@ ActorProfile Bg_Ikana_Bombwall_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit1 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -47,11 +47,11 @@ static ColliderCylinderInit sCylinderInit1 = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 80, 80, 0, { 0, 0, 0 } },
|
||||
@@ -59,7 +59,7 @@ static ColliderCylinderInit sCylinderInit1 = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit2 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -67,11 +67,11 @@ static ColliderCylinderInit sCylinderInit2 = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 50, 20, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -38,7 +38,7 @@ ActorProfile Bg_Ikana_Dharma_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -46,11 +46,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000100, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 98, 10, 25, { 0, 0, 0 } },
|
||||
|
||||
@@ -41,99 +41,99 @@ ActorProfile Bg_Ikana_Mirror_Profile = {
|
||||
static ColliderTrisElementInit sMirrorColliderElementsInit[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 21.6f, 13.7f }, { -25.3f, 6.0f, 8.4f }, { 25.3f, 6.0f, 8.4f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 45.0f, 13.7f }, { -25.3f, 6.0f, 8.4f }, { 0.0f, 21.6f, 13.7f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 45.0f, 13.7f }, { 0.0f, 21.6f, 13.7f }, { 25.3f, 6.0f, 8.4f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 45.0f, 13.7f }, { -25.3f, 45.0f, 8.4f }, { -25.3f, 6.0f, 8.4f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 45.0f, 13.7f }, { 25.3f, 6.0f, 8.4f }, { 25.3f, 45.0f, 8.4f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 45.0f, 13.7f }, { -17.9f, 64.1f, 8.4f }, { -25.3f, 45.0f, 8.4f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 45.0f, 13.7f }, { 25.3f, 45.0f, 8.4f }, { 17.9f, 64.1f, 8.4f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 45.0f, 13.7f }, { 0.0f, 72.0f, 8.4f }, { -17.9f, 64.1f, 8.4f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 45.0f, 13.7f }, { 17.9f, 64.1f, 8.4f }, { 0.0f, 72.0f, 8.4f } } },
|
||||
@@ -142,7 +142,7 @@ static ColliderTrisElementInit sMirrorColliderElementsInit[] = {
|
||||
|
||||
static ColliderTrisInit sMirrorColliderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER | AC_TYPE_OTHER,
|
||||
OC1_NONE,
|
||||
@@ -156,7 +156,7 @@ static ColliderTrisInit sMirrorColliderInit = {
|
||||
static ColliderQuadInit sLightRaysCollidersInit[] = {
|
||||
{
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_OTHER,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -164,18 +164,18 @@ static ColliderQuadInit sLightRaysCollidersInit[] = {
|
||||
COLSHAPE_QUAD,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 72.0f, 20.0f }, { 0.0f, 72.0f, 240.0f }, { 0.0f, 6.0f, 20.0f }, { 0.0f, 6.0f, 240.0f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_OTHER,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -183,11 +183,11 @@ static ColliderQuadInit sLightRaysCollidersInit[] = {
|
||||
COLSHAPE_QUAD,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 25.3f, 20.0f, 20.0f }, { 25.3f, 20.0f, 240.0f }, { -25.3f, 20.0f, 20.0f }, { -25.3f, 20.0f, 240.0f } } },
|
||||
|
||||
@@ -35,7 +35,7 @@ ActorProfile Bg_Ikana_Ray_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_OTHER,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -43,11 +43,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00200000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 90, 420, -420, { 0, 0, 0 } },
|
||||
|
||||
@@ -49,22 +49,22 @@ ActorProfile Bg_Ikana_Rotaryroom_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit1[2] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00002000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { -3450, 450, 0 }, 60 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00002000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { 3450, 450, 0 }, 60 }, 100 },
|
||||
@@ -73,7 +73,7 @@ static ColliderJntSphElementInit sJntSphElementsInit1[2] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit1 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -87,11 +87,11 @@ static ColliderJntSphInit sJntSphInit1 = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit2[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00002000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { -3750, 1200, 0 }, 60 }, 100 },
|
||||
@@ -100,7 +100,7 @@ static ColliderJntSphElementInit sJntSphElementsInit2[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit2 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
|
||||
@@ -34,7 +34,7 @@ static Gfx* D_80C076A0[] = { object_ikninside_obj_DL_00A748, object_ikninside_ob
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -42,11 +42,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x80000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 32, 32, 0, { 0, 0, 0 } },
|
||||
@@ -104,7 +104,8 @@ void func_80C072D0(BgIkninside* this, PlayState* play) {
|
||||
s32 i;
|
||||
|
||||
if (this->collider.base.acFlags & AC_HIT) {
|
||||
if ((this->collider.elem.acHitElem != NULL) && (this->collider.elem.acHitElem->toucher.dmgFlags & 0x80000000)) {
|
||||
if ((this->collider.elem.acHitElem != NULL) &&
|
||||
(this->collider.elem.acHitElem->atDmgInfo.dmgFlags & 0x80000000)) {
|
||||
for (i = 0; i < 20; i++) {
|
||||
altitude = Rand_S16Offset(0x1800, 0x2800);
|
||||
azimuth = Rand_Next() >> 0x10;
|
||||
|
||||
@@ -35,7 +35,7 @@ ActorProfile Bg_Iknv_Obj_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_ENEMY,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -43,11 +43,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 40, 40, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -36,7 +36,7 @@ ActorProfile Bg_Kin2_Bombwall_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -44,11 +44,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 60, 60, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -42,44 +42,44 @@ ActorProfile Bg_Kin2_Fence_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[4] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00003820, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { -2040, 1400, 350 }, 28 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00003820, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { -1140, 1400, 350 }, 28 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00003820, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { 1140, 1400, 350 }, 28 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00003820, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { 2040, 1400, 350 }, 28 }, 100 },
|
||||
@@ -88,7 +88,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[4] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -103,7 +103,7 @@ s32 BgKin2Fence_CheckHitMask(BgKin2Fence* this) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) {
|
||||
if (this->collider.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->collider.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,22 +42,22 @@ ActorProfile Bg_Kin2_Picture_Profile = {
|
||||
static ColliderTrisElementInit sTrisElementsInit[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x000138B0, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { -20.0f, 53.3f, 9.0f }, { -20.0f, 3.0f, 9.0f }, { 20.0f, 3.0f, 9.0f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK4,
|
||||
ELEM_MATERIAL_UNK4,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x000138B0, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { -20.0f, 53.3f, 9.0f }, { 20.0f, 3.0f, 9.0f }, { 20.0f, 53.3f, 9.0f } } },
|
||||
@@ -66,7 +66,7 @@ static ColliderTrisElementInit sTrisElementsInit[] = {
|
||||
|
||||
static ColliderTrisInit sTrisInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
|
||||
@@ -52,22 +52,22 @@ ActorProfile Bg_Last_Bwall_Profile = {
|
||||
static ColliderTrisElementInit sTrisElementsInit[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { -70.0f, 0.0f, 3.0f }, { 70.0f, 0.0f, 3.0f }, { -70.0f, 200.0f, 3.0f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 70.0f, 0.0f, 3.0f }, { 70.0f, 200.0f, 3.0f }, { -70.0f, 200.0f, 3.0f } } },
|
||||
@@ -76,7 +76,7 @@ static ColliderTrisElementInit sTrisElementsInit[] = {
|
||||
|
||||
static ColliderTrisInit sTrisInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
|
||||
@@ -44,7 +44,7 @@ ActorProfile Bg_Numa_Hana_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_NONE,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -52,11 +52,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x01CBFBB6, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 16, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -39,22 +39,22 @@ ActorProfile Bg_Spdweb_Profile = {
|
||||
static ColliderTrisElementInit sTrisElementsInit1[2] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0x00000C00, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 75.0f, -8.0f, 75.0f }, { 75.0f, -8.0f, -75.0f }, { -75.0f, -8.0f, -75.0f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0x00000C00, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 75.0f, -8.0f, 75.0f }, { -75.0f, -8.0f, -75.0f }, { -75.0f, -8.0f, 75.0f } } },
|
||||
@@ -63,7 +63,7 @@ static ColliderTrisElementInit sTrisElementsInit1[2] = {
|
||||
|
||||
static ColliderTrisInit sTrisInit1 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -77,44 +77,44 @@ static ColliderTrisInit sTrisInit1 = {
|
||||
static ColliderTrisElementInit sTrisElementsInit2[4] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0x00000800, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 70.0f, 160.0f, 15.0f }, { -70.0f, 160.0f, 15.0f }, { -70.0f, 20.0f, 15.0f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0x00000800, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 70.0f, 160.0f, 15.0f }, { -70.0f, 20.0f, 15.0f }, { 70.0f, 20.0f, 15.0f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0x00000800, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { -70.0f, 160.0f, -15.0f }, { 70.0f, 160.0f, -15.0f }, { 70.0f, 20.0f, -15.0f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0x00000800, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { -70.0f, 160.0f, -15.0f }, { 70.0f, 20.0f, -15.0f }, { -70.0f, 20.0f, -15.0f } } },
|
||||
@@ -123,7 +123,7 @@ static ColliderTrisElementInit sTrisElementsInit2[4] = {
|
||||
|
||||
static ColliderTrisInit sTrisInit2 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -290,9 +290,9 @@ void func_809CE4C8(BgSpdweb* this, PlayState* play) {
|
||||
if (this->collider.base.acFlags & AC_HIT) {
|
||||
for (i = 0; i < 2; i++) {
|
||||
trisElem = &this->collider.elements[i];
|
||||
if (trisElem->base.bumperFlags & BUMP_HIT) {
|
||||
if (this->collider.elements[i].base.acHitElem->toucher.dmgFlags & 0x800) {
|
||||
Math_Vec3s_ToVec3f(&this->dyna.actor.home.pos, &trisElem->base.bumper.hitPos);
|
||||
if (trisElem->base.acElemFlags & ACELEM_HIT) {
|
||||
if (this->collider.elements[i].base.acHitElem->atDmgInfo.dmgFlags & 0x800) {
|
||||
Math_Vec3s_ToVec3f(&this->dyna.actor.home.pos, &trisElem->base.acDmgInfo.hitPos);
|
||||
func_809CEE74(this);
|
||||
return;
|
||||
}
|
||||
@@ -433,8 +433,8 @@ void func_809CEBC0(BgSpdweb* this, PlayState* play) {
|
||||
if (this->collider.base.acFlags & AC_HIT) {
|
||||
for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) {
|
||||
trisElem = &this->collider.elements[i];
|
||||
if (trisElem->base.bumperFlags & BUMP_HIT) {
|
||||
Math_Vec3s_ToVec3f(&this->dyna.actor.home.pos, &trisElem->base.bumper.hitPos);
|
||||
if (trisElem->base.acElemFlags & ACELEM_HIT) {
|
||||
Math_Vec3s_ToVec3f(&this->dyna.actor.home.pos, &trisElem->base.acDmgInfo.hitPos);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ ActorProfile Bg_Spout_Fire_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -44,11 +44,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x20000000, 0x01, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 30, 83, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -345,33 +345,33 @@ static DamageTable sBugDamageTable = {
|
||||
static ColliderJntSphElementInit sSwordColliderJntSphElementsInit[3] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x04, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_NONE, { { 0, 0, 0 }, 35 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x04, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_NONE, { { 0, 0, 0 }, 35 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x04, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_NONE, { { 0, 0, 0 }, 70 }, 100 },
|
||||
@@ -380,7 +380,7 @@ static ColliderJntSphElementInit sSwordColliderJntSphElementsInit[3] = {
|
||||
|
||||
static ColliderJntSphInit sSwordColliderJntSphInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -395,11 +395,11 @@ static ColliderJntSphInit sSwordColliderJntSphInit = {
|
||||
static ColliderJntSphElementInit sShieldColliderJntSphElementsInit[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_NONE, { { 0, 0, 0 }, 36 }, 100 },
|
||||
@@ -408,7 +408,7 @@ static ColliderJntSphElementInit sShieldColliderJntSphElementsInit[1] = {
|
||||
|
||||
static ColliderJntSphInit sShieldColliderJntSphInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -423,121 +423,121 @@ static ColliderJntSphInit sShieldColliderJntSphInit = {
|
||||
static ColliderJntSphElementInit sBodyColliderJntSphElementsInit[11] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_NONE, { { 0, 0, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 30 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 25 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_ROOT, { { 0, 0, 0 }, 15 }, 100 },
|
||||
@@ -546,7 +546,7 @@ static ColliderJntSphElementInit sBodyColliderJntSphElementsInit[11] = {
|
||||
|
||||
static ColliderJntSphInit sBodyColliderJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -561,22 +561,22 @@ static ColliderJntSphInit sBodyColliderJntSphInit = {
|
||||
static ColliderJntSphElementInit sKickAndShieldBashColliderJntSphElementsInit[2] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_NONE, { { 0, 0, 0 }, 36 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ ODOLWA_LIMB_NONE, { { 0, 0, 0 }, 36 }, 100 },
|
||||
@@ -585,7 +585,7 @@ static ColliderJntSphElementInit sKickAndShieldBashColliderJntSphElementsInit[2]
|
||||
|
||||
static ColliderJntSphInit sKickAndShieldBashColliderJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -598,7 +598,7 @@ static ColliderJntSphInit sKickAndShieldBashColliderJntSphInit = {
|
||||
|
||||
static ColliderCylinderInit sBugACColliderCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -606,11 +606,11 @@ static ColliderCylinderInit sBugACColliderCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7FFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 15, 15, 10, { 0, 0, 0 } },
|
||||
@@ -618,7 +618,7 @@ static ColliderCylinderInit sBugACColliderCylinderInit = {
|
||||
|
||||
static ColliderCylinderInit sBugATColliderCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -626,11 +626,11 @@ static ColliderCylinderInit sBugATColliderCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7FFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 8, 15, 10, { 0, 0, 0 } },
|
||||
@@ -1951,12 +1951,12 @@ void Boss01_UpdateDamage(Boss01* this, PlayState* play) {
|
||||
u8 damage;
|
||||
s32 i;
|
||||
|
||||
if (this->shieldCollider.elements[ODOLWA_SHIELD_COLLIDER_SHIELD].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->shieldCollider.elements[ODOLWA_SHIELD_COLLIDER_SHIELD].base.acElemFlags & ACELEM_HIT) {
|
||||
this->bodyInvincibilityTimer = 5;
|
||||
if (this->damagedTimer == 0) {
|
||||
ColliderElement* acHitElem = this->shieldCollider.elements[ODOLWA_SHIELD_COLLIDER_SHIELD].base.acHitElem;
|
||||
|
||||
if (acHitElem->toucher.dmgFlags == DMG_SWORD_BEAM) {
|
||||
if (acHitElem->atDmgInfo.dmgFlags == DMG_SWORD_BEAM) {
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->actor.focus.pos.x, this->actor.focus.pos.y,
|
||||
this->actor.focus.pos.z, 0, 0, 3, CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
Actor_PlaySfx(&this->actor, NA_SE_IT_SHIELD_BOUND);
|
||||
@@ -1965,24 +1965,24 @@ void Boss01_UpdateDamage(Boss01* this, PlayState* play) {
|
||||
}
|
||||
} else if (this->damagedTimer == 0) {
|
||||
for (i = 0; i < ODOLWA_SWORD_COLLIDER_MAX; i++) {
|
||||
if (this->swordCollider.elements[i].base.toucherFlags & TOUCH_HIT) {
|
||||
this->swordCollider.elements[i].base.toucherFlags &= ~TOUCH_HIT;
|
||||
if (this->swordCollider.elements[i].base.atElemFlags & ATELEM_HIT) {
|
||||
this->swordCollider.elements[i].base.atElemFlags &= ~ATELEM_HIT;
|
||||
player->pushedYaw = this->actor.yawTowardsPlayer;
|
||||
player->pushedSpeed = 15.0f;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ODOLWA_KICK_AND_SHIELD_BASH_COLLIDER_MAX; i++) {
|
||||
if (this->kickAndShieldBashCollider.elements[i].base.toucherFlags & TOUCH_HIT) {
|
||||
this->kickAndShieldBashCollider.elements[i].base.toucherFlags &= ~TOUCH_HIT;
|
||||
if (this->kickAndShieldBashCollider.elements[i].base.atElemFlags & ATELEM_HIT) {
|
||||
this->kickAndShieldBashCollider.elements[i].base.atElemFlags &= ~ATELEM_HIT;
|
||||
player->pushedYaw = this->actor.yawTowardsPlayer;
|
||||
player->pushedSpeed = 20.0f;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ODOLWA_COLLIDER_BODYPART_MAX; i++) {
|
||||
if (this->bodyCollider.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
this->bodyCollider.elements[i].base.bumperFlags &= ~BUMP_HIT;
|
||||
if (this->bodyCollider.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
this->bodyCollider.elements[i].base.acElemFlags &= ~ACELEM_HIT;
|
||||
|
||||
switch (this->actor.colChkInfo.damageEffect) {
|
||||
case ODOLWA_DMGEFF_FREEZE:
|
||||
@@ -2408,7 +2408,7 @@ void Boss01_Update(Actor* thisx, PlayState* play2) {
|
||||
} else {
|
||||
this->bodyInvincibilityTimer--;
|
||||
for (i = 0; i < ODOLWA_COLLIDER_BODYPART_MAX; i++) {
|
||||
this->bodyCollider.elements[i].base.bumperFlags &= ~BUMP_HIT;
|
||||
this->bodyCollider.elements[i].base.acElemFlags &= ~ACELEM_HIT;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2428,7 +2428,7 @@ void Boss01_Update(Actor* thisx, PlayState* play2) {
|
||||
} else {
|
||||
this->disableCollisionTimer--;
|
||||
for (i = 0; i < ODOLWA_COLLIDER_BODYPART_MAX; i++) {
|
||||
this->bodyCollider.elements[i].base.bumperFlags &= ~BUMP_HIT;
|
||||
this->bodyCollider.elements[i].base.acElemFlags &= ~ACELEM_HIT;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3255,7 +3255,7 @@ void Boss01_Bug_UpdateDamage(Boss01* this, PlayState* play) {
|
||||
|
||||
if (this->damagedTimer == 0) {
|
||||
Matrix_RotateYS(this->actor.yawTowardsPlayer, MTXMODE_NEW);
|
||||
if (acHitElem->toucher.dmgFlags & 0x300000) {
|
||||
if (acHitElem->atDmgInfo.dmgFlags & 0x300000) {
|
||||
this->damagedTimer = 10;
|
||||
Matrix_MultVecZ(-10.0f, &additionalVelocity);
|
||||
this->additionalVelocityX = additionalVelocity.x;
|
||||
|
||||
@@ -172,242 +172,242 @@ s16 D_809DF5E4[] = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit1[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 1, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 2, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 3, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 4, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 5, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 6, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 7, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 8, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 9, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 10, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 11, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 12, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 13, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 14, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 15, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 16, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 17, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 19, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 20, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 21, { { 0, 0, 0 }, 85 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 130 }, 100 },
|
||||
@@ -416,7 +416,7 @@ static ColliderJntSphElementInit sJntSphElementsInit1[] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit1 = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -430,22 +430,22 @@ static ColliderJntSphInit sJntSphInit1 = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit2[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 130 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x04, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 22, { { 0, 0, 0 }, 110 }, 100 },
|
||||
@@ -454,7 +454,7 @@ static ColliderJntSphElementInit sJntSphElementsInit2[] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit2 = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -467,7 +467,7 @@ static ColliderJntSphInit sJntSphInit2 = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -475,11 +475,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x04, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 150, 200, 0, { 0, 0, 0 } },
|
||||
@@ -1107,8 +1107,8 @@ void func_809DBFB4(Boss02* this, PlayState* play) {
|
||||
}
|
||||
|
||||
for (i = temp; i < ARRAY_COUNT(this->colliderSphere2Elements); i++) {
|
||||
if (this->colliderSphere2.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
this->colliderSphere2.elements[i].base.bumperFlags &= ~BUMP_HIT;
|
||||
if (this->colliderSphere2.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
this->colliderSphere2.elements[i].base.acElemFlags &= ~ACELEM_HIT;
|
||||
this->unk_0154 = 15;
|
||||
this->unk_0156 = 15;
|
||||
|
||||
|
||||
@@ -292,22 +292,22 @@ ActorProfile Boss_03_Profile = {
|
||||
static ColliderJntSphElementInit sHeadJntSphElementsInit[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GYORG_LIMB_NONE, { { 0, 0, 0 }, 70 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GYORG_LIMB_ROOT, { { 0, 0, 0 }, 50 }, 100 },
|
||||
@@ -316,7 +316,7 @@ static ColliderJntSphElementInit sHeadJntSphElementsInit[] = {
|
||||
|
||||
static ColliderJntSphInit sHeadJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -331,55 +331,55 @@ static ColliderJntSphInit sHeadJntSphInit = {
|
||||
static ColliderJntSphElementInit sBodyJntSphElementsInit[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GYORG_LIMB_HEAD, { { 0, 0, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GYORG_LIMB_LOWER_TRUNK, { { 0, 0, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GYORG_LIMB_TAIL, { { 0, 0, 0 }, 70 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GYORG_LIMB_RIGHT_FIN_ROOT, { { 0, 0, 0 }, 70 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GYORG_LIMB_UPPER_RIGHT_FIN, { { 0, 0, 0 }, 30 }, 100 },
|
||||
@@ -388,7 +388,7 @@ static ColliderJntSphElementInit sBodyJntSphElementsInit[] = {
|
||||
|
||||
static ColliderJntSphInit sBodyJntSphInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -1843,16 +1843,16 @@ void Boss03_UpdateCollision(Boss03* this, PlayState* play) {
|
||||
|
||||
if (this->waterHeight < player->actor.world.pos.y) {
|
||||
for (i = 0; i < ARRAY_COUNT(sHeadJntSphElementsInit); i++) {
|
||||
if (this->headCollider.elements[i].base.toucherFlags & TOUCH_HIT) {
|
||||
this->headCollider.elements[i].base.toucherFlags &= ~TOUCH_HIT;
|
||||
if (this->headCollider.elements[i].base.atElemFlags & ATELEM_HIT) {
|
||||
this->headCollider.elements[i].base.atElemFlags &= ~ATELEM_HIT;
|
||||
player->pushedYaw = this->actor.shape.rot.y;
|
||||
player->pushedSpeed = 20.0f;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(sBodyJntSphElementsInit); i++) {
|
||||
if (this->bodyCollider.elements[i].base.toucherFlags & TOUCH_HIT) {
|
||||
this->bodyCollider.elements[i].base.toucherFlags &= ~TOUCH_HIT;
|
||||
if (this->bodyCollider.elements[i].base.atElemFlags & ATELEM_HIT) {
|
||||
this->bodyCollider.elements[i].base.atElemFlags &= ~ATELEM_HIT;
|
||||
player->pushedYaw = this->actor.shape.rot.y;
|
||||
player->pushedSpeed = 20.0f;
|
||||
}
|
||||
@@ -1862,16 +1862,16 @@ void Boss03_UpdateCollision(Boss03* this, PlayState* play) {
|
||||
if (this->unk_25C == 0) {
|
||||
if ((this->actionFunc == stunnedActionFunc) && sp4B) {
|
||||
for (i = 0; i < ARRAY_COUNT(sBodyJntSphElementsInit); i++) {
|
||||
if (this->bodyCollider.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->bodyCollider.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
acHitElem = this->bodyCollider.elements[i].base.acHitElem;
|
||||
this->bodyCollider.elements[i].base.bumperFlags &= ~BUMP_HIT;
|
||||
this->bodyCollider.elements[i].base.acElemFlags &= ~ACELEM_HIT;
|
||||
this->unk_25C = 15;
|
||||
this->unk_25E = 15;
|
||||
|
||||
// (DMG_SWORD_BEAM | DMG_SPIN_ATTACK | DMG_ZORA_PUNCH | DMG_ZORA_BARRIER | DMG_DEKU_LAUNCH |
|
||||
// DMG_DEKU_SPIN | DMG_GORON_SPIKES | DMG_SWORD | DMG_GORON_PUNCH | DMG_DEKU_STICK)
|
||||
phi_v0 = (acHitElem->toucher.dmgFlags & 0x038AC302)
|
||||
? this->bodyCollider.elements[i].base.acHitElem->toucher.damage
|
||||
phi_v0 = (acHitElem->atDmgInfo.dmgFlags & 0x038AC302)
|
||||
? this->bodyCollider.elements[i].base.acHitElem->atDmgInfo.damage
|
||||
: 0;
|
||||
|
||||
phi_v1 = phi_v0;
|
||||
@@ -1895,9 +1895,9 @@ void Boss03_UpdateCollision(Boss03* this, PlayState* play) {
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(sHeadJntSphElementsInit); i++) {
|
||||
if (this->headCollider.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->headCollider.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
acHitElem = this->headCollider.elements[i].base.acHitElem;
|
||||
this->headCollider.elements[i].base.bumperFlags &= ~BUMP_HIT;
|
||||
this->headCollider.elements[i].base.acElemFlags &= ~ACELEM_HIT;
|
||||
this->unk_25C = 15;
|
||||
|
||||
if (this->actionFunc != stunnedActionFunc) {
|
||||
@@ -1919,8 +1919,8 @@ void Boss03_UpdateCollision(Boss03* this, PlayState* play) {
|
||||
|
||||
// (DMG_SWORD_BEAM | DMG_SPIN_ATTACK | DMG_ZORA_PUNCH | DMG_ZORA_BARRIER | DMG_DEKU_LAUNCH |
|
||||
// DMG_DEKU_SPIN | DMG_GORON_SPIKES | DMG_SWORD | DMG_GORON_PUNCH | DMG_DEKU_STICK)
|
||||
phi_v0 = (acHitElem->toucher.dmgFlags & 0x038AC302)
|
||||
? (this->headCollider.elements[i].base.acHitElem->toucher.damage)
|
||||
phi_v0 = (acHitElem->atDmgInfo.dmgFlags & 0x038AC302)
|
||||
? (this->headCollider.elements[i].base.acHitElem->atDmgInfo.damage)
|
||||
: 0;
|
||||
|
||||
phi_v1 = phi_v0;
|
||||
@@ -2025,9 +2025,9 @@ void Boss03_Update(Actor* thisx, PlayState* play2) {
|
||||
|
||||
if (this->actionFunc != Boss03_DeathCutscene) {
|
||||
if ((this->actionFunc == Boss03_Stunned) || (this->actionFunc == Boss03_Damaged)) {
|
||||
this->bodyCollider.base.colType = COLTYPE_HIT3;
|
||||
this->bodyCollider.base.colMaterial = COL_MATERIAL_HIT3;
|
||||
} else {
|
||||
this->bodyCollider.base.colType = COLTYPE_METAL;
|
||||
this->bodyCollider.base.colMaterial = COL_MATERIAL_METAL;
|
||||
}
|
||||
|
||||
Boss03_UpdateCollision(this, play);
|
||||
|
||||
@@ -78,11 +78,11 @@ ActorProfile Boss_04_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit1[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 50 }, 100 },
|
||||
@@ -91,7 +91,7 @@ static ColliderJntSphElementInit sJntSphElementsInit1[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit1 = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -105,11 +105,11 @@ static ColliderJntSphInit sJntSphInit1 = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit2[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 70 }, 100 },
|
||||
@@ -118,7 +118,7 @@ static ColliderJntSphElementInit sJntSphElementsInit2[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit2 = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -567,8 +567,8 @@ void func_809ED2A0(Boss04* this, PlayState* play) {
|
||||
void func_809ED45C(Boss04* this, PlayState* play) {
|
||||
u8 damage;
|
||||
|
||||
if ((this->unk_1FE == 0) && (this->collider1.elements[0].base.bumperFlags & BUMP_HIT)) {
|
||||
this->collider1.elements[0].base.bumperFlags &= ~BUMP_HIT;
|
||||
if ((this->unk_1FE == 0) && (this->collider1.elements[0].base.acElemFlags & ACELEM_HIT)) {
|
||||
this->collider1.elements[0].base.acElemFlags &= ~ACELEM_HIT;
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_ME_DAMAGE);
|
||||
damage = this->actor.colChkInfo.damage;
|
||||
this->actor.colChkInfo.health -= damage;
|
||||
|
||||
@@ -108,22 +108,22 @@ typedef enum BioDekuBabaLilyPadWithHeadMovementState {
|
||||
static ColliderJntSphElementInit sLilyPadJntSphElementsInit[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ BIO_DEKU_BABA_LILY_PAD_LIMB_NONE, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ BIO_DEKU_BABA_LILY_PAD_LIMB_NONE, { { 0, 0, 0 }, 15 }, 100 },
|
||||
@@ -132,7 +132,7 @@ static ColliderJntSphElementInit sLilyPadJntSphElementsInit[] = {
|
||||
|
||||
static ColliderJntSphInit sLilyPadJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -147,11 +147,11 @@ static ColliderJntSphInit sLilyPadJntSphInit = {
|
||||
static ColliderJntSphElementInit sHeadJntSphElementsInit[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ BIO_DEKU_BABA_HEAD_LIMB_NONE, { { 0, 0, 0 }, 20 }, 100 },
|
||||
@@ -160,7 +160,7 @@ static ColliderJntSphElementInit sHeadJntSphElementsInit[] = {
|
||||
|
||||
static ColliderJntSphInit sHeadJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -175,11 +175,11 @@ static ColliderJntSphInit sHeadJntSphInit = {
|
||||
static ColliderJntSphElementInit sWalkingHeadJntSphElementsInit[] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7FFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ BIO_DEKU_BABA_HEAD_LIMB_NONE, { { 0, 0, 0 }, 15 }, 100 },
|
||||
@@ -188,7 +188,7 @@ static ColliderJntSphElementInit sWalkingHeadJntSphElementsInit[] = {
|
||||
|
||||
static ColliderJntSphInit sWalkingHeadJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -468,7 +468,7 @@ s32 Boss05_LilyPadWithHead_UpdateDamage(Boss05* this, PlayState* play) {
|
||||
s32 i = 0;
|
||||
|
||||
while (true) {
|
||||
if (this->lilyPadCollider.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->lilyPadCollider.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
switch (this->dyna.actor.colChkInfo.damageEffect) {
|
||||
case BIO_BABA_DMGEFF_FIRE:
|
||||
return BIO_BABA_HEAD_HIT_REACTION_DEATCH + BIO_BABA_DRAW_DMGEFF_STATE_FIRE_INIT;
|
||||
@@ -486,7 +486,7 @@ s32 Boss05_LilyPadWithHead_UpdateDamage(Boss05* this, PlayState* play) {
|
||||
|
||||
i++;
|
||||
if (i == BIO_BABA_LILY_PAD_COLLIDER_MAX) {
|
||||
if (this->headCollider.elements[BIO_BABA_HEAD_COLLIDER_HEAD].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->headCollider.elements[BIO_BABA_HEAD_COLLIDER_HEAD].base.acElemFlags & ACELEM_HIT) {
|
||||
u8 damage = this->dyna.actor.colChkInfo.damage;
|
||||
|
||||
this->dyna.actor.colChkInfo.health -= damage;
|
||||
@@ -950,10 +950,10 @@ void Boss05_WalkingHead_UpdateDamage(Boss05* this, PlayState* play) {
|
||||
ColliderElement* acHitElem;
|
||||
|
||||
if ((this->damagedTimer == 0) &&
|
||||
(this->headCollider.elements[BIO_BABA_HEAD_COLLIDER_HEAD].base.bumperFlags & BUMP_HIT)) {
|
||||
this->headCollider.elements[BIO_BABA_HEAD_COLLIDER_HEAD].base.bumperFlags &= ~BUMP_HIT;
|
||||
(this->headCollider.elements[BIO_BABA_HEAD_COLLIDER_HEAD].base.acElemFlags & ACELEM_HIT)) {
|
||||
this->headCollider.elements[BIO_BABA_HEAD_COLLIDER_HEAD].base.acElemFlags &= ~ACELEM_HIT;
|
||||
acHitElem = this->headCollider.elements[BIO_BABA_HEAD_COLLIDER_HEAD].base.acHitElem;
|
||||
if (acHitElem->toucher.dmgFlags & 0x300000) { // (DMG_NORMAL_SHIELD | DMG_LIGHT_RAY)
|
||||
if (acHitElem->atDmgInfo.dmgFlags & 0x300000) { // (DMG_NORMAL_SHIELD | DMG_LIGHT_RAY)
|
||||
this->knockbackMagnitude = -12.0f;
|
||||
this->knockbackAngle = this->dyna.actor.yawTowardsPlayer;
|
||||
this->damagedTimer = 6;
|
||||
|
||||
@@ -92,7 +92,7 @@ ActorProfile Boss_06_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -100,11 +100,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
ELEM_MATERIAL_UNK3,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7FFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 90, 140, 10, { 0, 0, 0 } },
|
||||
@@ -184,10 +184,10 @@ void Boss06_UpdateDamage(Boss06* this) {
|
||||
Boss06_SetupCurtainBurningCutscene(this);
|
||||
Audio_PlaySfx(NA_SE_SY_TRE_BOX_APPEAR);
|
||||
|
||||
this->arrowHitPos.x = -(this->actor.world.pos.x - this->collider.elem.bumper.hitPos.x);
|
||||
this->arrowHitPos.x = -(this->actor.world.pos.x - this->collider.elem.acDmgInfo.hitPos.x);
|
||||
this->arrowHitPosScaled.x = this->arrowHitPos.x * 0.35f;
|
||||
|
||||
this->arrowHitPos.y = -((this->actor.world.pos.y + 80.0f) - this->collider.elem.bumper.hitPos.y);
|
||||
this->arrowHitPos.y = -((this->actor.world.pos.y + 80.0f) - this->collider.elem.acDmgInfo.hitPos.y);
|
||||
this->arrowHitPosScaled.y = this->arrowHitPos.y * -0.35f;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,164 +249,164 @@ ActorProfile Boss_07_Profile = {
|
||||
// static ColliderJntSphElementInit sJntSphElementsInit[11] = {
|
||||
static ColliderJntSphElementInit D_80A07A40[11] = {
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 0, { { 0, 0, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 30 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 25 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 150 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 150 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 150 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 150 },
|
||||
},
|
||||
};
|
||||
|
||||
// static ColliderJntSphInit sJntSphInit = {
|
||||
static ColliderJntSphInit D_80A07BCC = {
|
||||
{ COLTYPE_HIT3, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_PLAYER, OC2_TYPE_1, COLSHAPE_JNTSPH, },
|
||||
{ COL_MATERIAL_HIT3, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_PLAYER, OC2_TYPE_1, COLSHAPE_JNTSPH, },
|
||||
ARRAY_COUNT(sJntSphElementsInit), D_80A07A40, // sJntSphElementsInit,
|
||||
};
|
||||
|
||||
// static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderCylinderInit D_80A07BDC = {
|
||||
{ COLTYPE_METAL, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ COL_MATERIAL_METAL, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEM_MATERIAL_UNK2, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 80, 200, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
// static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
static ColliderJntSphElementInit D_80A07C08[1] = {
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_HARD, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_HARD, ACELEM_ON, OCELEM_ON, },
|
||||
{ 0, { { 0, 0, 0 }, 36 }, 200 },
|
||||
},
|
||||
};
|
||||
|
||||
// static ColliderJntSphInit sJntSphInit = {
|
||||
static ColliderJntSphInit D_80A07C2C = {
|
||||
{ COLTYPE_HIT3, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_PLAYER, OC2_TYPE_1, COLSHAPE_JNTSPH, },
|
||||
{ COL_MATERIAL_HIT3, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_PLAYER, OC2_TYPE_1, COLSHAPE_JNTSPH, },
|
||||
ARRAY_COUNT(sJntSphElementsInit), D_80A07C08, // sJntSphElementsInit,
|
||||
};
|
||||
|
||||
// static ColliderQuadInit sQuadInit = {
|
||||
static ColliderQuadInit D_80A07C3C = {
|
||||
{ COLTYPE_METAL, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_HARD | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_QUAD, },
|
||||
{ ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x04, 0x00 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ COL_MATERIAL_METAL, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_HARD | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_QUAD, },
|
||||
{ ELEM_MATERIAL_UNK2, { 0xF7CFFFFF, 0x04, 0x00 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
};
|
||||
|
||||
// static ColliderQuadInit sQuadInit = {
|
||||
static ColliderQuadInit D_80A07C8C = {
|
||||
{ COLTYPE_HIT3, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_QUAD, },
|
||||
{ ELEMTYPE_UNK2, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ COL_MATERIAL_HIT3, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_QUAD, },
|
||||
{ ELEM_MATERIAL_UNK2, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
};
|
||||
|
||||
// static ColliderJntSphElementInit sJntSphElementsInit[11] = {
|
||||
static ColliderJntSphElementInit D_80A07CDC[11] = {
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 0, { { 0, 0, 0 }, 25 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 40 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 0 }, 0 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 150 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 150 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 150 },
|
||||
},
|
||||
{
|
||||
{ ELEMTYPE_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ ELEM_MATERIAL_UNK3, { 0xF7CFFFFF, 0x00, 0x10 }, { 0xF7CEFFFE, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 150 },
|
||||
},
|
||||
};
|
||||
|
||||
// static ColliderJntSphInit sJntSphInit = {
|
||||
static ColliderJntSphInit D_80A07E68 = {
|
||||
{ COLTYPE_HIT3, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_PLAYER, OC2_TYPE_1, COLSHAPE_JNTSPH, },
|
||||
{ COL_MATERIAL_HIT3, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_PLAYER, OC2_TYPE_1, COLSHAPE_JNTSPH, },
|
||||
ARRAY_COUNT(sJntSphElementsInit), D_80A07CDC, // sJntSphElementsInit,
|
||||
};
|
||||
|
||||
// static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderCylinderInit D_80A07E78 = {
|
||||
{ COLTYPE_NONE, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK0, { 0xF7CFFFFF, 0x04, 0x10 }, { 0x00300000, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
{ COL_MATERIAL_NONE, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEM_MATERIAL_UNK0, { 0xF7CFFFFF, 0x04, 0x10 }, { 0x00300000, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, OCELEM_ON, },
|
||||
{ 15, 30, -15, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
// static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderCylinderInit D_80A07EA4 = {
|
||||
{ COLTYPE_METAL, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK0, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON | BUMP_HOOKABLE, OCELEM_ON, },
|
||||
{ COL_MATERIAL_METAL, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEM_MATERIAL_UNK0, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7CFFFFF, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON | ACELEM_HOOKABLE, OCELEM_ON, },
|
||||
{ 50, 100, -50, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
// static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderCylinderInit D_80A07ED0 = {
|
||||
{ COLTYPE_METAL, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_HARD | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK0, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7FFFFFF, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_ON | BUMP_HOOKABLE, OCELEM_ON, },
|
||||
{ COL_MATERIAL_METAL, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_HARD | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEM_MATERIAL_UNK0, { 0xF7CFFFFF, 0x04, 0x10 }, { 0xF7FFFFFF, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON | ACELEM_HOOKABLE, OCELEM_ON, },
|
||||
{ 40, 20, 15, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
|
||||
@@ -116,209 +116,209 @@ ActorProfile Boss_Hakugin_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[GOHT_COLLIDER_BODYPART_MAX] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_HEAD, { { 1300, 200, 0 }, 30 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_THORAX, { { 1400, 300, 0 }, 35 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_PELVIS, { { 1600, -400, 0 }, 26 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_FRONT_RIGHT_UPPER_LEG, { { 1700, 200, 400 }, 18 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_FRONT_RIGHT_LOWER_LEG, { { 1000, 0, 0 }, 10 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_FRONT_RIGHT_HOOF, { { 500, 0, 0 }, 9 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_FRONT_LEFT_UPPER_LEG, { { 1700, 200, -400 }, 18 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_FRONT_LEFT_LOWER_LEG, { { 1000, 0, 0 }, 10 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_FRONT_LEFT_HOOF, { { 500, 0, 0 }, 9 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_BACK_RIGHT_THIGH, { { 800, 0, 400 }, 15 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_BACK_RIGHT_SHIN, { { 500, 200, 0 }, 9 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_BACK_RIGHT_PASTERN, { { 300, 0, 0 }, 8 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_BACK_RIGHT_HOOF, { { 500, 100, 0 }, 9 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_BACK_LEFT_THIGH, { { 800, 0, -400 }, 15 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_BACK_LEFT_SHIN, { { 500, 200, 0 }, 9 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_BACK_LEFT_PASTERN, { { 300, 0, 0 }, 8 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_BACK_LEFT_HOOF, { { 500, 100, 0 }, 9 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_HEAD, { { 2400, -400, -2900 }, 12 }, 270 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_HITMARK,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_HITMARK,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ GOHT_LIMB_HEAD, { { 2400, -400, 2900 }, 12 }, 270 },
|
||||
@@ -327,7 +327,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[GOHT_COLLIDER_BODYPART_MAX]
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -341,11 +341,11 @@ static ColliderJntSphInit sJntSphInit = {
|
||||
static ColliderTrisElementInit sTrisElementsInit[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK5,
|
||||
ELEM_MATERIAL_UNK5,
|
||||
{ 0x20000000, 0x03, 0x08 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 22.0f, 0.0f, 100.0f }, { 0.0f, 0.0f, -100.0f }, { -22.0f, 0.0f, 100.0f } } },
|
||||
@@ -354,7 +354,7 @@ static ColliderTrisElementInit sTrisElementsInit[1] = {
|
||||
|
||||
static ColliderTrisInit sTrisInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -367,7 +367,7 @@ static ColliderTrisInit sTrisInit = {
|
||||
|
||||
static ColliderSphereInit sSphereInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -375,11 +375,11 @@ static ColliderSphereInit sSphereInit = {
|
||||
COLSHAPE_SPHERE,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK5,
|
||||
ELEM_MATERIAL_UNK5,
|
||||
{ 0x20000000, 0x00, 0x08 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 1, { { 0, 0, 0 }, 23 }, 100 },
|
||||
@@ -387,7 +387,7 @@ static ColliderSphereInit sSphereInit = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HARD,
|
||||
COL_MATERIAL_HARD,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -395,11 +395,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x02, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 170, 40, 0, { 0, 0, 0 } },
|
||||
@@ -1498,9 +1498,9 @@ void BossHakugin_UpdateDrawDmgEffect(BossHakugin* this, PlayState* play, s32 col
|
||||
this->drawDmgEffAlpha = 3.0f;
|
||||
this->drawDmgEffScale = 2.5f;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG,
|
||||
this->bodyCollider.elements[colliderIndex].base.bumper.hitPos.x,
|
||||
this->bodyCollider.elements[colliderIndex].base.bumper.hitPos.y,
|
||||
this->bodyCollider.elements[colliderIndex].base.bumper.hitPos.z, 0, 0, 0,
|
||||
this->bodyCollider.elements[colliderIndex].base.acDmgInfo.hitPos.x,
|
||||
this->bodyCollider.elements[colliderIndex].base.acDmgInfo.hitPos.y,
|
||||
this->bodyCollider.elements[colliderIndex].base.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
} else if (this->actor.colChkInfo.damageEffect == GOHT_DMGEFF_FREEZE) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX;
|
||||
@@ -1512,9 +1512,9 @@ void BossHakugin_UpdateDrawDmgEffect(BossHakugin* this, PlayState* play, s32 col
|
||||
this->drawDmgEffScale = 2.5f;
|
||||
this->drawDmgEffAlpha = 3.0f;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG,
|
||||
this->bodyCollider.elements[colliderIndex].base.bumper.hitPos.x,
|
||||
this->bodyCollider.elements[colliderIndex].base.bumper.hitPos.y,
|
||||
this->bodyCollider.elements[colliderIndex].base.bumper.hitPos.z, 0, 0, 3,
|
||||
this->bodyCollider.elements[colliderIndex].base.acDmgInfo.hitPos.x,
|
||||
this->bodyCollider.elements[colliderIndex].base.acDmgInfo.hitPos.y,
|
||||
this->bodyCollider.elements[colliderIndex].base.acDmgInfo.hitPos.z, 0, 0, 3,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
}
|
||||
}
|
||||
@@ -1617,7 +1617,7 @@ void BossHakugin_FrozenBeforeFight(BossHakugin* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if ((this->iceCollider.base.acFlags & AC_HIT) &&
|
||||
(this->iceCollider.elem.acHitElem->toucher.dmgFlags == DMG_FIRE_ARROW)) {
|
||||
(this->iceCollider.elem.acHitElem->atDmgInfo.dmgFlags == DMG_FIRE_ARROW)) {
|
||||
this->iceCollider.base.atFlags &= ~AT_HIT;
|
||||
this->iceCollider.base.acFlags &= ~AC_HIT;
|
||||
this->iceCollider.base.ocFlags1 &= ~OC1_HIT;
|
||||
@@ -2621,7 +2621,7 @@ void BossHakugin_CheckForBodyColliderHit(BossHakugin* this, PlayState* play) {
|
||||
if ((this->bodyCollider.base.atFlags & AT_HIT) &&
|
||||
((this->actionFunc == BossHakugin_Charge) || !(player->stateFlags3 & PLAYER_STATE3_80000))) {
|
||||
if ((this->actionFunc == BossHakugin_Charge) &&
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_HEAD].base.toucherFlags & TOUCH_HIT) &&
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_HEAD].base.atElemFlags & ATELEM_HIT) &&
|
||||
!(this->bodyCollider.base.atFlags & AT_BOUNCED) && play->grabPlayer(play, player)) {
|
||||
BossHakugin_SetupThrow(this, play);
|
||||
} else if (player->stateFlags3 & PLAYER_STATE3_1000) {
|
||||
@@ -2656,7 +2656,7 @@ s32 BossHakugin_UpdateDamage(BossHakugin* this, PlayState* play) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < GOHT_COLLIDER_BODYPART_MAX; i++) {
|
||||
if (this->bodyCollider.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->bodyCollider.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2668,7 +2668,7 @@ s32 BossHakugin_UpdateDamage(BossHakugin* this, PlayState* play) {
|
||||
// DMG_DEKU_NUT | DMG_DEKU_STICK | DMG_ZORA_BOOMERANG | DMG_NORMAL_ARROW | DMG_HOOKSHOT | DMG_ICE_ARROW
|
||||
// | DMG_LIGHT_ARROW | DMG_DEKU_SPIN | DMG_DEKU_BUBBLE | DMG_DEKU_LAUNCH | DMG_ZORA_BARRIER
|
||||
if ((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) &&
|
||||
(this->bodyCollider.elements[i].base.acHitElem->toucher.dmgFlags & 0x000DB0B3)) {
|
||||
(this->bodyCollider.elements[i].base.acHitElem->atDmgInfo.dmgFlags & 0x000DB0B3)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2714,7 +2714,7 @@ s32 BossHakugin_UpdateDamage(BossHakugin* this, PlayState* play) {
|
||||
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 15);
|
||||
this->damagedSpeedUpCounter += 35;
|
||||
BossHakugin_UpdateDrawDmgEffect(this, play, i);
|
||||
this->actor.colChkInfo.damage = this->bodyCollider.elements[i].base.acHitElem->toucher.damage;
|
||||
this->actor.colChkInfo.damage = this->bodyCollider.elements[i].base.acHitElem->atDmgInfo.damage;
|
||||
|
||||
if (Actor_ApplyDamage(&this->actor) == 0) {
|
||||
Enemy_StartFinishingBlow(play, &this->actor);
|
||||
@@ -2724,19 +2724,19 @@ s32 BossHakugin_UpdateDamage(BossHakugin* this, PlayState* play) {
|
||||
if ((this->actor.colChkInfo.damageEffect == GOHT_DMGEFF_EXPLOSIVE) ||
|
||||
((this->actor.colChkInfo.damageEffect == GOHT_DMGEFF_GORON_SPIKES) &&
|
||||
(this->actionFunc != BossHakugin_Charge) &&
|
||||
((this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_HEAD].base.bumperFlags & BUMP_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_THORAX].base.bumperFlags & BUMP_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_PELVIS].base.bumperFlags & BUMP_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_FRONT_RIGHT_UPPER_LEG].base.bumperFlags &
|
||||
BUMP_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_FRONT_LEFT_UPPER_LEG].base.bumperFlags &
|
||||
BUMP_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_BACK_RIGHT_THIGH].base.bumperFlags &
|
||||
BUMP_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_BACK_LEFT_THIGH].base.bumperFlags &
|
||||
BUMP_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_RIGHT_HORN].base.bumperFlags & BUMP_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_LEFT_HORN].base.bumperFlags & BUMP_HIT)))) {
|
||||
((this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_HEAD].base.acElemFlags & ACELEM_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_THORAX].base.acElemFlags & ACELEM_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_PELVIS].base.acElemFlags & ACELEM_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_FRONT_RIGHT_UPPER_LEG].base.acElemFlags &
|
||||
ACELEM_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_FRONT_LEFT_UPPER_LEG].base.acElemFlags &
|
||||
ACELEM_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_BACK_RIGHT_THIGH].base.acElemFlags &
|
||||
ACELEM_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_BACK_LEFT_THIGH].base.acElemFlags &
|
||||
ACELEM_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_RIGHT_HORN].base.acElemFlags & ACELEM_HIT) ||
|
||||
(this->bodyCollider.elements[GOHT_COLLIDER_BODYPART_LEFT_HORN].base.acElemFlags & ACELEM_HIT)))) {
|
||||
BossHakugin_SetupDowned(this);
|
||||
} else if ((this->electricBallState == GOHT_ELECTRIC_BALL_STATE_NONE) &&
|
||||
(this->electricBallCount == 0) && (this->actionFunc == BossHakugin_Run) &&
|
||||
@@ -2759,9 +2759,9 @@ s32 BossHakugin_UpdateDamage(BossHakugin* this, PlayState* play) {
|
||||
Vec3f hitPos;
|
||||
ColliderElement* elem = &this->bodyCollider.elements[j].base;
|
||||
|
||||
if ((elem->bumperFlags & BUMP_HIT) && (elem->acHitElem != NULL) &&
|
||||
!(elem->acHitElem->toucherFlags & TOUCH_SFX_NONE)) {
|
||||
Math_Vec3s_ToVec3f(&hitPos, &elem->bumper.hitPos);
|
||||
if ((elem->acElemFlags & ACELEM_HIT) && (elem->acHitElem != NULL) &&
|
||||
!(elem->acHitElem->atElemFlags & ATELEM_SFX_NONE)) {
|
||||
Math_Vec3s_ToVec3f(&hitPos, &elem->acDmgInfo.hitPos);
|
||||
EffectSsHitmark_SpawnFixedScale(play, EFFECT_HITMARK_METAL, &hitPos);
|
||||
CollisionCheck_SpawnShieldParticlesMetalSound(play, &hitPos, &this->actor.projectedPos);
|
||||
break;
|
||||
@@ -3788,18 +3788,18 @@ void BossHakugin_UpdateCrushingRocksCollision(BossHakugin* this) {
|
||||
jntSphElem->dim.worldSphere.center.y = crushingRock->pos.y;
|
||||
jntSphElem->dim.worldSphere.center.z = crushingRock->pos.z;
|
||||
jntSphElem->dim.worldSphere.radius = crushingRock->scale * 3000.0f;
|
||||
jntSphElem->base.bumper.dmgFlags = 0xF3CFBBFF;
|
||||
jntSphElem->base.bumperFlags &= ~BUMP_NO_HITMARK;
|
||||
jntSphElem->base.elemType = ELEMTYPE_UNK0;
|
||||
jntSphElem->base.acDmgInfo.dmgFlags = 0xF3CFBBFF;
|
||||
jntSphElem->base.acElemFlags &= ~ACELEM_NO_HITMARK;
|
||||
jntSphElem->base.elemMaterial = ELEM_MATERIAL_UNK0;
|
||||
}
|
||||
|
||||
// This for-loop will update the collider for GOHT_COLLIDER_BODYPART_LEFT_HORN.
|
||||
for (; i < ARRAY_COUNT(this->bodyColliderElements); i++) {
|
||||
this->bodyCollider.elements[i].base.bumperFlags &= ~BUMP_ON;
|
||||
this->bodyCollider.elements[i].base.acElemFlags &= ~ACELEM_ON;
|
||||
this->bodyCollider.elements[i].base.ocElemFlags &= ~OCELEM_ON;
|
||||
}
|
||||
|
||||
this->bodyCollider.base.colType = COLTYPE_HARD;
|
||||
this->bodyCollider.base.colMaterial = COL_MATERIAL_HARD;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -165,7 +165,7 @@ ActorProfile Dm_Stk_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT1,
|
||||
COL_MATERIAL_HIT1,
|
||||
AT_NONE,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER | AC_TYPE_ENEMY,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -173,11 +173,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 14, 38, 0, { 0, 0, 0 } },
|
||||
@@ -1102,10 +1102,10 @@ void DmStk_Init(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
sCylinderInit.base.colType = COLTYPE_WOOD;
|
||||
sCylinderInit.base.colMaterial = COL_MATERIAL_WOOD;
|
||||
this->actionFunc = DmStk_ClockTower_StartIntroCutsceneVersion1;
|
||||
} else {
|
||||
sCylinderInit.base.colType = COLTYPE_WOOD;
|
||||
sCylinderInit.base.colMaterial = COL_MATERIAL_WOOD;
|
||||
this->actionFunc = DmStk_ClockTower_StartIntroCutsceneVersion2;
|
||||
}
|
||||
|
||||
@@ -1120,7 +1120,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
this->actor.world.pos.y = 120.0f;
|
||||
sCylinderInit.base.colType = COLTYPE_WOOD;
|
||||
sCylinderInit.base.colMaterial = COL_MATERIAL_WOOD;
|
||||
this->actionFunc = DmStk_ClockTower_Idle;
|
||||
} else {
|
||||
this->animIndex = SK_ANIM_FLOATING_ARMS_CROSSED;
|
||||
@@ -1130,7 +1130,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) {
|
||||
this->dekuPipesCutsceneState = SK_DEKU_PIPES_CS_STATE_READY;
|
||||
this->animIndex = SK_ANIM_FLOATING_ARMS_CROSSED;
|
||||
this->actor.world.pos.y = 120.0f;
|
||||
sCylinderInit.base.colType = COLTYPE_WOOD;
|
||||
sCylinderInit.base.colMaterial = COL_MATERIAL_WOOD;
|
||||
this->actionFunc = DmStk_ClockTower_Idle;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ ActorProfile Door_Ana_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -42,11 +42,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000008, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 50, 10, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -65,7 +65,7 @@ ActorProfile En_Ah_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT1,
|
||||
COL_MATERIAL_HIT1,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -73,11 +73,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 10, 68, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -45,18 +45,18 @@ ActorProfile En_Akindonuts_Profile = {
|
||||
|
||||
static ColliderCylinderInitType1 sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 27, 32, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -389,7 +389,7 @@ ActorProfile En_Al_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT1,
|
||||
COL_MATERIAL_HIT1,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -397,11 +397,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 14, 62, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -50,7 +50,7 @@ ActorProfile En_Am_Profile = {
|
||||
|
||||
static ColliderCylinderInit sEnemyCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT5,
|
||||
COL_MATERIAL_HIT5,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -58,11 +58,11 @@ static ColliderCylinderInit sEnemyCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0x81C2C788, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 23, 98, 0, { 0, 0, 0 } },
|
||||
@@ -70,7 +70,7 @@ static ColliderCylinderInit sEnemyCylinderInit = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_NONE,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -78,11 +78,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x760D3877, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 23, 98, 0, { 0, 0, 0 } },
|
||||
@@ -180,8 +180,8 @@ void func_808AFF9C(EnAm* this) {
|
||||
f32 endFrame = Animation_GetLastFrame(&gArmosPushedBackAnim);
|
||||
|
||||
Animation_Change(&this->skelAnime, &gArmosPushedBackAnim, 0.0f, endFrame, endFrame, ANIMMODE_LOOP, 0.0f);
|
||||
this->enemyCollider.elem.bumper.dmgFlags = 0x80000088;
|
||||
this->interactCollider.elem.bumper.dmgFlags = 0x77CFFF77;
|
||||
this->enemyCollider.elem.acDmgInfo.dmgFlags = 0x80000088;
|
||||
this->interactCollider.elem.acDmgInfo.dmgFlags = 0x77CFFF77;
|
||||
if (this->actor.colChkInfo.health != 0) {
|
||||
this->enemyCollider.base.atFlags &= ~AT_ON;
|
||||
}
|
||||
@@ -221,8 +221,8 @@ void EnAm_ApplyEnemyTexture(EnAm* this, PlayState* play) {
|
||||
if (this->textureBlend + 20 >= 255) {
|
||||
this->textureBlend = 255;
|
||||
this->actor.flags |= ACTOR_FLAG_TARGETABLE;
|
||||
this->enemyCollider.elem.bumper.dmgFlags = 0x81C2C788;
|
||||
this->interactCollider.elem.bumper.dmgFlags = 0x760D3877;
|
||||
this->enemyCollider.elem.acDmgInfo.dmgFlags = 0x81C2C788;
|
||||
this->interactCollider.elem.acDmgInfo.dmgFlags = 0x760D3877;
|
||||
this->enemyCollider.base.atFlags |= AT_ON;
|
||||
this->actor.shape.yOffset = 0.0f;
|
||||
func_808B0358(this);
|
||||
@@ -458,9 +458,9 @@ s32 EnAm_UpdateDamage(EnAm* this, PlayState* play) {
|
||||
if (this->actor.colChkInfo.damageEffect == 0x4) {
|
||||
this->drawDmgEffScale = 0.7f;
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->enemyCollider.elem.bumper.hitPos.x,
|
||||
this->enemyCollider.elem.bumper.hitPos.y, this->enemyCollider.elem.bumper.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->enemyCollider.elem.acDmgInfo.hitPos.x,
|
||||
this->enemyCollider.elem.acDmgInfo.hitPos.y, this->enemyCollider.elem.acDmgInfo.hitPos.z, 0, 0,
|
||||
0, CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
}
|
||||
EnAm_TakeDamage(this, play);
|
||||
return true;
|
||||
|
||||
@@ -850,7 +850,7 @@ ActorProfile En_An_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT1,
|
||||
COL_MATERIAL_HIT1,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -858,11 +858,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 14, 62, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -55,7 +55,7 @@ ActorProfile En_Ani_Profile = {
|
||||
// two different colliders, but only one init for both
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_ENEMY,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -63,11 +63,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 30, 40, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -72,7 +72,7 @@ static AnimationInfo sAnimationInfo[EN_AOB01_ANIM_MAX] = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -80,11 +80,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 64, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -37,7 +37,7 @@ ActorProfile En_Arrow_Profile = {
|
||||
|
||||
static ColliderQuadInit sQuadInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_PLAYER,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -45,11 +45,11 @@ static ColliderQuadInit sQuadInit = {
|
||||
COLSHAPE_QUAD,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0x00000020, 0x00, 0x02 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_NEAREST | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_NEAREST | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
@@ -151,16 +151,16 @@ void EnArrow_Init(Actor* thisx, PlayState* play) {
|
||||
Collider_SetQuad(play, &this->collider, &this->actor, &sQuadInit);
|
||||
|
||||
if (ARROW_IS_ARROW(this->actor.params)) {
|
||||
this->collider.elem.toucherFlags &= ~(TOUCH_SFX_WOOD | TOUCH_SFX_HARD);
|
||||
this->collider.elem.toucherFlags |= 0;
|
||||
this->collider.elem.atElemFlags &= ~(ATELEM_SFX_WOOD | ATELEM_SFX_HARD);
|
||||
this->collider.elem.atElemFlags |= 0;
|
||||
}
|
||||
|
||||
if (this->actor.params < ARROW_TYPE_NORMAL_LIT) {
|
||||
this->collider.base.atFlags = (AT_TYPE_ENEMY | AT_ON);
|
||||
} else {
|
||||
this->collider.elem.toucher.dmgFlags = Actor_GetArrowDmgFlags(this->actor.params);
|
||||
this->collider.elem.atDmgInfo.dmgFlags = Actor_GetArrowDmgFlags(this->actor.params);
|
||||
if (this->actor.params == ARROW_TYPE_DEKU_NUT) {
|
||||
this->collider.elem.toucher.damage = 1;
|
||||
this->collider.elem.atDmgInfo.damage = 1;
|
||||
}
|
||||
|
||||
if (this->actor.params == ARROW_TYPE_DEKU_BUBBLE) {
|
||||
@@ -351,7 +351,7 @@ void func_8088AA98(EnArrow* this, PlayState* play) {
|
||||
}
|
||||
|
||||
this->actor.params = ARROW_TYPE_NORMAL;
|
||||
this->collider.elem.toucher.dmgFlags = 0x20;
|
||||
this->collider.elem.atDmgInfo.dmgFlags = 0x20;
|
||||
|
||||
if (this->actor.child != NULL) {
|
||||
Actor_Kill(this->actor.child);
|
||||
@@ -380,7 +380,7 @@ void func_8088ACE0(EnArrow* this, PlayState* play) {
|
||||
((this->actor.params == ARROW_TYPE_DEKU_BUBBLE) &&
|
||||
((this->unk_262 != 0) || (phi_a2 = (this->collider.base.atFlags & AT_HIT) != 0)))) {
|
||||
if (this->actor.params == ARROW_TYPE_DEKU_BUBBLE) {
|
||||
if (phi_a2 && (this->collider.elem.atHitElem->elemType != ELEMTYPE_UNK4) &&
|
||||
if (phi_a2 && (this->collider.elem.atHitElem->elemMaterial != ELEM_MATERIAL_UNK4) &&
|
||||
(this->collider.base.atFlags & AT_BOUNCED)) {
|
||||
if ((this->collider.base.at != NULL) && (this->collider.base.at->id != ACTOR_OBJ_SYOKUDAI)) {
|
||||
Math_Vec3f_Copy(&this->actor.world.pos, &this->actor.prevPos);
|
||||
@@ -434,7 +434,7 @@ void func_8088ACE0(EnArrow* this, PlayState* play) {
|
||||
} else {
|
||||
EffectSsHitmark_SpawnCustomScale(play, EFFECT_HITMARK_WHITE, 150, &this->actor.world.pos);
|
||||
|
||||
if (sp50 && (this->collider.elem.atHitElem->elemType != ELEMTYPE_UNK4)) {
|
||||
if (sp50 && (this->collider.elem.atHitElem->elemMaterial != ELEM_MATERIAL_UNK4)) {
|
||||
sp7C = this->collider.base.at;
|
||||
|
||||
if ((sp7C->update != NULL) && !(this->collider.base.atFlags & AT_BOUNCED) &&
|
||||
|
||||
@@ -108,7 +108,7 @@ ActorProfile En_Az_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER | AC_TYPE_ENEMY,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -116,11 +116,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 46, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -75,7 +75,7 @@ static AnimationInfo sAnimationInfo[BOMB_SHOP_LADY_ANIM_MAX] = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -83,11 +83,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 64, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -57,11 +57,11 @@ ActorProfile En_Baguo_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x04, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 1, { { 0, 0, 0 }, 0 }, 1 },
|
||||
@@ -70,7 +70,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_HARD,
|
||||
COL_MATERIAL_HARD,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -357,7 +357,7 @@ void EnBaguo_CheckForDetonation(EnBaguo* this, PlayState* play) {
|
||||
this->actor.flags &= ~ACTOR_FLAG_TARGETABLE;
|
||||
Actor_SetScale(&this->actor, 0.0f);
|
||||
this->collider.elements[0].dim.scale = 3.0f;
|
||||
this->collider.elements[0].base.toucher.damage = 8;
|
||||
this->collider.elements[0].base.atDmgInfo.damage = 8;
|
||||
Item_DropCollectibleRandom(play, NULL, &this->actor.world.pos, 0xB0);
|
||||
this->actionFunc = EnBaguo_PostDetonation;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ ActorProfile En_Baisen_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -45,11 +45,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 20, 60, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -142,11 +142,11 @@ static CollisionCheckInfoInit2 sColChkInfoInit = { 1, 0, 0, 0, MASS_IMMOVABLE };
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ TINGLE_LIMB_BALLOON, { { 2400, 0, 0 }, 50 }, 100 },
|
||||
@@ -155,7 +155,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
|
||||
@@ -43,7 +43,7 @@ ActorProfile En_Bat_Profile = {
|
||||
|
||||
static ColliderSphereInit sSphereInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -51,11 +51,11 @@ static ColliderSphereInit sSphereInit = {
|
||||
COLSHAPE_SPHERE,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 1, { { 0, 0, 0 }, 15 }, 100 },
|
||||
@@ -331,8 +331,8 @@ void EnBat_SetupDie(EnBat* this, PlayState* play) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
this->drawDmgEffScale = 0.45f;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elem.bumper.hitPos.x,
|
||||
this->collider.elem.bumper.hitPos.y, this->collider.elem.bumper.hitPos.z, 0, 0, 0,
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elem.acDmgInfo.hitPos.x,
|
||||
this->collider.elem.acDmgInfo.hitPos.y, this->collider.elem.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_SMALL_LIGHT_RAYS));
|
||||
} else if (this->actor.colChkInfo.damageEffect == BAD_BAT_DMGEFF_FIRE) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE;
|
||||
|
||||
@@ -50,7 +50,7 @@ ActorProfile En_Bb_Profile = {
|
||||
|
||||
static ColliderSphereInit sSphereInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -58,11 +58,11 @@ static ColliderSphereInit sSphereInit = {
|
||||
COLSHAPE_SPHERE,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 20 }, 100 },
|
||||
@@ -505,7 +505,7 @@ void EnBb_UpdateDamage(EnBb* this, PlayState* play) {
|
||||
this->collider.base.atFlags &= ~(AT_HIT | AT_BOUNCED);
|
||||
this->collider.base.atFlags &= ~AT_ON;
|
||||
if ((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) ||
|
||||
!(this->collider.elem.acHitElem->toucher.dmgFlags & 0xDB0B3)) {
|
||||
!(this->collider.elem.acHitElem->atDmgInfo.dmgFlags & 0xDB0B3)) {
|
||||
Actor_SetDropFlag(&this->actor, &this->collider.elem);
|
||||
this->flameScaleY = 0.0f;
|
||||
this->flameScaleX = 0.0f;
|
||||
@@ -533,8 +533,8 @@ void EnBb_UpdateDamage(EnBb* this, PlayState* play) {
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
this->drawDmgEffScale = 0.4f;
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elem.bumper.hitPos.x,
|
||||
this->collider.elem.bumper.hitPos.y, this->collider.elem.bumper.hitPos.z, 0, 0, 0,
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elem.acDmgInfo.hitPos.x,
|
||||
this->collider.elem.acDmgInfo.hitPos.y, this->collider.elem.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_SMALL_LIGHT_RAYS));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ ActorProfile En_Bba_01_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -50,11 +50,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 64, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -51,33 +51,33 @@ ActorProfile En_Bbfall_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[3] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x01, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x01, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x01, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 20 }, 100 },
|
||||
@@ -86,7 +86,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[3] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -234,15 +234,15 @@ void EnBbfall_CheckForWall(EnBbfall* this) {
|
||||
}
|
||||
|
||||
void EnBbfall_EnableColliders(EnBbfall* this) {
|
||||
this->collider.elements[0].base.toucher.effect = ELEMTYPE_UNK1; // Fire
|
||||
this->collider.elements[1].base.toucherFlags |= TOUCH_ON;
|
||||
this->collider.elements[2].base.toucherFlags |= TOUCH_ON;
|
||||
this->collider.elements[0].base.atDmgInfo.effect = ELEM_MATERIAL_UNK1; // Fire
|
||||
this->collider.elements[1].base.atElemFlags |= ATELEM_ON;
|
||||
this->collider.elements[2].base.atElemFlags |= ATELEM_ON;
|
||||
}
|
||||
|
||||
void EnBbfall_DisableColliders(EnBbfall* this) {
|
||||
this->collider.elements[0].base.toucher.effect = ELEMTYPE_UNK0; // Nothing
|
||||
this->collider.elements[1].base.toucherFlags &= ~TOUCH_ON;
|
||||
this->collider.elements[2].base.toucherFlags &= ~TOUCH_ON;
|
||||
this->collider.elements[0].base.atDmgInfo.effect = ELEM_MATERIAL_UNK0; // Nothing
|
||||
this->collider.elements[1].base.atElemFlags &= ~ATELEM_ON;
|
||||
this->collider.elements[2].base.atElemFlags &= ~ATELEM_ON;
|
||||
}
|
||||
|
||||
void EnBbfall_SetupWaitForPlayer(EnBbfall* this) {
|
||||
@@ -524,7 +524,7 @@ void EnBbfall_UpdateDamage(EnBbfall* this, PlayState* play) {
|
||||
this->collider.base.atFlags &= ~(AT_HIT | AT_BOUNCED);
|
||||
this->collider.base.atFlags &= ~AT_ON;
|
||||
if ((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) ||
|
||||
!(this->collider.elements[0].base.acHitElem->toucher.dmgFlags & 0xDB0B3)) {
|
||||
!(this->collider.elements[0].base.acHitElem->atDmgInfo.dmgFlags & 0xDB0B3)) {
|
||||
Actor_SetDropFlagJntSph(&this->actor, &this->collider);
|
||||
this->flameOpacity = 0;
|
||||
this->flameScaleY = 0.0f;
|
||||
@@ -554,9 +554,10 @@ void EnBbfall_UpdateDamage(EnBbfall* this, PlayState* play) {
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
this->drawDmgEffScale = 0.4f;
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elements[0].base.bumper.hitPos.x,
|
||||
this->collider.elements[0].base.bumper.hitPos.y,
|
||||
this->collider.elements[0].base.bumper.hitPos.z, 0, 0, 0,
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG,
|
||||
this->collider.elements[0].base.acDmgInfo.hitPos.x,
|
||||
this->collider.elements[0].base.acDmgInfo.hitPos.y,
|
||||
this->collider.elements[0].base.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_SMALL_LIGHT_RAYS));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ static DamageTable sDamageTable = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON,
|
||||
@@ -79,11 +79,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x08, 0x02 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 6, 13, -4, { 0, 0, 0 } },
|
||||
|
||||
@@ -45,7 +45,7 @@ ActorProfile En_Bigokuta_Profile = {
|
||||
|
||||
static ColliderCylinderInit sShellCylinderInit = {
|
||||
{
|
||||
COLTYPE_HARD,
|
||||
COL_MATERIAL_HARD,
|
||||
AT_NONE,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -53,11 +53,11 @@ static ColliderCylinderInit sShellCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFC74F, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 75, 125, 0, { 0, 0, 0 } },
|
||||
@@ -65,7 +65,7 @@ static ColliderCylinderInit sShellCylinderInit = {
|
||||
|
||||
static ColliderCylinderInit sBodyCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -73,11 +73,11 @@ static ColliderCylinderInit sBodyCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x000038B0, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 70, 125, 0, { 0, 0, 0 } },
|
||||
@@ -490,18 +490,18 @@ void EnBigokuta_CheckOneHitKill(EnBigokuta* this, PlayState* play) {
|
||||
Enemy_StartFinishingBlow(play, &this->picto.actor);
|
||||
|
||||
if (this->bodyCollider.base.acFlags & AC_HIT) {
|
||||
if (this->bodyCollider.elem.acHitElem->toucher.dmgFlags & 0x1000) { // Ice Arrow
|
||||
if (this->bodyCollider.elem.acHitElem->atDmgInfo.dmgFlags & 0x1000) { // Ice Arrow
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX;
|
||||
this->drawDmgEffScale = 1.2f;
|
||||
this->drawDmgEffFrozenSteamScale = 1800.0f * 0.001f;
|
||||
this->drawDmgEffAlpha = 1.0f;
|
||||
} else if (this->bodyCollider.elem.acHitElem->toucher.dmgFlags & 0x2000) { // Light Arrow
|
||||
} else if (this->bodyCollider.elem.acHitElem->atDmgInfo.dmgFlags & 0x2000) { // Light Arrow
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
this->drawDmgEffScale = 1.2f;
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->bodyCollider.elem.bumper.hitPos.x,
|
||||
this->bodyCollider.elem.bumper.hitPos.y, this->bodyCollider.elem.bumper.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->bodyCollider.elem.acDmgInfo.hitPos.x,
|
||||
this->bodyCollider.elem.acDmgInfo.hitPos.y, this->bodyCollider.elem.acDmgInfo.hitPos.z, 0,
|
||||
0, 0, CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ ActorProfile En_Bigpamet_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HARD,
|
||||
COL_MATERIAL_HARD,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -68,11 +68,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x04, 0x04 },
|
||||
{ 0xF7CF7FFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 53, 50, 0, { 0, 0, 0 } },
|
||||
@@ -484,7 +484,7 @@ void func_80A2866C(EnBigpamet* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A286C0(EnBigpamet* this) {
|
||||
this->collider.elem.bumper.dmgFlags = 0xF7CF7FFF;
|
||||
this->collider.elem.acDmgInfo.dmgFlags = 0xF7CF7FFF;
|
||||
this->collider.base.atFlags |= AT_ON;
|
||||
this->actor.shape.rot.z = 0x680;
|
||||
this->unk_29E = 15;
|
||||
@@ -563,7 +563,7 @@ void func_80A28970(EnBigpamet* this) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_PAMET_CUTTER_OFF);
|
||||
this->actor.shape.rot.z = 0;
|
||||
this->collider.base.atFlags &= ~AT_ON;
|
||||
this->collider.elem.bumper.dmgFlags = 0xF7CFFFFF;
|
||||
this->collider.elem.acDmgInfo.dmgFlags = 0xF7CFFFFF;
|
||||
this->actor.speed = 0.0f;
|
||||
this->actionFunc = func_80A289C8;
|
||||
}
|
||||
@@ -616,7 +616,7 @@ void func_80A28B98(EnBigpamet* this, PlayState* play) {
|
||||
Animation_PlayLoop(&this->snapperSkelAnime, &gSnapperDeathAnim);
|
||||
|
||||
this->collider.base.atFlags &= ~AT_ON;
|
||||
this->collider.elem.bumper.dmgFlags = 0xF7CFFFFF;
|
||||
this->collider.elem.acDmgInfo.dmgFlags = 0xF7CFFFFF;
|
||||
this->collider.base.atFlags &= ~(AT_HIT | AT_BOUNCED);
|
||||
this->collider.base.acFlags &= ~AC_ON;
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ ActorProfile En_Bigpo_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_NONE | AC_TYPE_PLAYER,
|
||||
OC1_NONE | OC1_TYPE_ALL,
|
||||
@@ -105,11 +105,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x10 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 35, 100, 10, { 0, 0, 0 } },
|
||||
@@ -581,9 +581,9 @@ void EnBigpo_IdleFlying(EnBigpo* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnBigpo_SetupSpinUp(EnBigpo* this) {
|
||||
this->collider.base.colType = COLTYPE_METAL;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_METAL;
|
||||
this->collider.base.acFlags |= AC_HARD;
|
||||
this->collider.elem.bumper.dmgFlags &= ~0x8000;
|
||||
this->collider.elem.acDmgInfo.dmgFlags &= ~0x8000;
|
||||
this->collider.base.atFlags |= AT_ON;
|
||||
this->angularVelocity = 0x800;
|
||||
this->actionFunc = EnBigpo_SpinningUp;
|
||||
@@ -614,7 +614,7 @@ void EnBigpo_SpinAttack(EnBigpo* this, PlayState* play) {
|
||||
Math_SmoothStepToF(&this->actor.world.pos.y, player->actor.world.pos.y, 0.3f, 7.5f, 1.0f);
|
||||
EnBigpo_UpdateSpin(this);
|
||||
yawDiff = this->actor.yawTowardsPlayer - this->actor.world.rot.y;
|
||||
// because acFlags AC_HARD and COLTYPE_METAL, if we hit it means we contacted as attack
|
||||
// because acFlags AC_HARD and COL_MATERIAL_METAL, if we hit it means we contacted as attack
|
||||
if ((this->collider.base.atFlags & AT_HIT) ||
|
||||
((ABS_ALT(yawDiff) > 0x4000) && (this->actor.xzDistToPlayer > 50.0f))) {
|
||||
// hit the player OR the poe has missed and flew past player
|
||||
@@ -638,9 +638,9 @@ void EnBigpo_SpinningDown(EnBigpo* this, PlayState* play) {
|
||||
Math_StepToF(&this->actor.speed, 0.0f, 0.2f);
|
||||
if (Math_ScaledStepToS(&this->angularVelocity, 0, 0x200)) {
|
||||
// spin down complete, re-allow hittable
|
||||
this->collider.base.colType = COLTYPE_HIT3;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_HIT3;
|
||||
this->collider.base.acFlags &= ~AC_HARD;
|
||||
this->collider.elem.bumper.dmgFlags |= 0x8000;
|
||||
this->collider.elem.acDmgInfo.dmgFlags |= 0x8000;
|
||||
EnBigpo_SetupIdleFlying(this);
|
||||
}
|
||||
EnBigpo_UpdateSpin(this);
|
||||
@@ -1143,8 +1143,8 @@ s32 EnBigpo_ApplyDamage(EnBigpo* this, PlayState* play) {
|
||||
if (this->actor.colChkInfo.damageEffect == 4) {
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
this->drawDmgEffScale = 1.0f;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elem.bumper.hitPos.x,
|
||||
this->collider.elem.bumper.hitPos.y, this->collider.elem.bumper.hitPos.z, 0, 0, 0,
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elem.acDmgInfo.hitPos.x,
|
||||
this->collider.elem.acDmgInfo.hitPos.y, this->collider.elem.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
}
|
||||
EnBigpo_HitStun(this);
|
||||
|
||||
@@ -226,7 +226,7 @@ ActorProfile En_Bigslime_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_NO_PUSH | OC1_TYPE_ALL,
|
||||
@@ -234,11 +234,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x20000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 30, 60, 0, { 0, 0, 0 } },
|
||||
@@ -333,8 +333,8 @@ void EnBigslime_Init(Actor* thisx, PlayState* play2) {
|
||||
|
||||
this->bigslimeCollider[0].base.atFlags &= ~AT_ON;
|
||||
Collider_InitAndSetCylinder(play, &this->gekkoCollider, &this->actor, &sCylinderInit);
|
||||
this->gekkoCollider.base.colType = COLTYPE_HIT6;
|
||||
this->gekkoCollider.elem.elemType = ELEMTYPE_UNK1;
|
||||
this->gekkoCollider.base.colMaterial = COL_MATERIAL_HIT6;
|
||||
this->gekkoCollider.elem.elemMaterial = ELEM_MATERIAL_UNK1;
|
||||
this->gekkoCollider.base.atFlags &= ~AT_ON;
|
||||
this->gekkoCollider.base.ocFlags1 &= ~OC1_NO_PUSH;
|
||||
this->actor.params = CLAMP(this->actor.params, 1, 4);
|
||||
@@ -908,8 +908,8 @@ void EnBigslime_GekkoSfxInsideBigslime(EnBigslime* this, u16 sfxId) {
|
||||
|
||||
void EnBigslime_GekkoFreeze(EnBigslime* this) {
|
||||
this->gekkoDrawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX;
|
||||
this->gekkoCollider.base.colType = COLTYPE_HIT3;
|
||||
this->gekkoCollider.elem.elemType = ELEMTYPE_UNK0;
|
||||
this->gekkoCollider.base.colMaterial = COL_MATERIAL_HIT3;
|
||||
this->gekkoCollider.elem.elemMaterial = ELEM_MATERIAL_UNK0;
|
||||
this->stunTimer = 2;
|
||||
this->gekkoDrawDmgEffScale = 0.75f;
|
||||
this->gekkoDrawDmgEffFrozenSteamScale = 1.125f;
|
||||
@@ -920,8 +920,8 @@ void EnBigslime_GekkoFreeze(EnBigslime* this) {
|
||||
void EnBigslime_GekkoThaw(EnBigslime* this, PlayState* play) {
|
||||
if (this->gekkoDrawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) {
|
||||
this->gekkoDrawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE;
|
||||
this->gekkoCollider.base.colType = COLTYPE_HIT6;
|
||||
this->gekkoCollider.elem.elemType = ELEMTYPE_UNK1;
|
||||
this->gekkoCollider.base.colMaterial = COL_MATERIAL_HIT6;
|
||||
this->gekkoCollider.elem.elemMaterial = ELEM_MATERIAL_UNK1;
|
||||
this->gekkoDrawDmgEffAlpha = 0.0f;
|
||||
Actor_SpawnIceEffects(play, &this->actor, this->gekkoBodyPartsPos, GEKKO_BODYPART_MAX, 2, 0.3f, 0.2f);
|
||||
this->actor.flags |= ACTOR_FLAG_200;
|
||||
@@ -2620,7 +2620,7 @@ void EnBigslime_ApplyDamageEffectGekko(EnBigslime* this, PlayState* play) {
|
||||
if (this->gekkoCollider.base.acFlags & AC_HIT) {
|
||||
this->gekkoCollider.base.acFlags &= ~AC_HIT;
|
||||
if ((this->gekkoDrawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) ||
|
||||
!(this->gekkoCollider.elem.acHitElem->toucher.dmgFlags & 0xDB0B3)) {
|
||||
!(this->gekkoCollider.elem.acHitElem->atDmgInfo.dmgFlags & 0xDB0B3)) {
|
||||
EnBigslime_EndThrowMinislime(this);
|
||||
if (this->actor.colChkInfo.damageEffect != BIGSLIME_DMGEFF_HOOKSHOT) {
|
||||
if (Actor_ApplyDamage(&this->actor) == 0) {
|
||||
@@ -2637,10 +2637,11 @@ void EnBigslime_ApplyDamageEffectGekko(EnBigslime* this, PlayState* play) {
|
||||
this->gekkoDrawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE;
|
||||
} else {
|
||||
this->gekkoDrawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
Actor_Spawn(
|
||||
&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->gekkoCollider.elem.bumper.hitPos.x,
|
||||
this->gekkoCollider.elem.bumper.hitPos.y, this->gekkoCollider.elem.bumper.hitPos.z, 0,
|
||||
0, 0, CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG,
|
||||
this->gekkoCollider.elem.acDmgInfo.hitPos.x,
|
||||
this->gekkoCollider.elem.acDmgInfo.hitPos.y,
|
||||
this->gekkoCollider.elem.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
}
|
||||
} else if (this->actor.colChkInfo.damageEffect == BIGSLIME_DMGEFF_ICE) {
|
||||
EnBigslime_GekkoFreeze(this);
|
||||
@@ -2672,10 +2673,11 @@ void EnBigslime_ApplyDamageEffectGekko(EnBigslime* this, PlayState* play) {
|
||||
this->gekkoDrawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE;
|
||||
} else {
|
||||
this->gekkoDrawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
Actor_Spawn(
|
||||
&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->gekkoCollider.elem.bumper.hitPos.x,
|
||||
this->gekkoCollider.elem.bumper.hitPos.y, this->gekkoCollider.elem.bumper.hitPos.z, 0,
|
||||
0, 0, CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG,
|
||||
this->gekkoCollider.elem.acDmgInfo.hitPos.x,
|
||||
this->gekkoCollider.elem.acDmgInfo.hitPos.y,
|
||||
this->gekkoCollider.elem.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
}
|
||||
}
|
||||
EnBigslime_SetupDamageGekko(this, true);
|
||||
|
||||
@@ -38,7 +38,7 @@ ActorProfile En_Bji_01_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -46,11 +46,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 64, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -99,7 +99,7 @@ ActorProfile En_Bjt_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT1,
|
||||
COL_MATERIAL_HIT1,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -107,11 +107,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 10, 68, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -50,7 +50,7 @@ static f32 enBomScales[] = { 0.01f, 0.03f };
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER | AC_TYPE_OTHER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -58,11 +58,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00013828, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 6, 11, 14, { 0, 0, 0 } },
|
||||
@@ -71,11 +71,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit1[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000008, 0x00, 0x02 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 0 }, 100 },
|
||||
@@ -84,7 +84,7 @@ static ColliderJntSphElementInit sJntSphElementsInit1[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit1 = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_ON | AT_TYPE_ALL,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -98,11 +98,11 @@ static ColliderJntSphInit sJntSphInit1 = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit2[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x80000008, 0x00, 0x04 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 0 }, 100 },
|
||||
@@ -111,7 +111,7 @@ static ColliderJntSphElementInit sJntSphElementsInit2[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit2 = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_ON | AT_TYPE_ALL,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -162,7 +162,7 @@ void EnBom_Init(Actor* thisx, PlayState* play) {
|
||||
func_80872648(play, &this->actor.world.pos);
|
||||
}
|
||||
|
||||
this->collider2Elements[0].base.toucher.damage += ENBOM_GET_FF00(thisx);
|
||||
this->collider2Elements[0].base.atDmgInfo.damage += ENBOM_GET_FF00(thisx);
|
||||
this->actor.shape.rot.z &= 0xFF;
|
||||
if (ENBOM_GET_80(&this->actor)) {
|
||||
this->actor.shape.rot.z |= 0xFF00;
|
||||
|
||||
@@ -39,7 +39,7 @@ ActorProfile En_Bom_Chu_Profile = {
|
||||
|
||||
static ColliderSphereInit sSphereInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_1 | OC1_TYPE_2,
|
||||
@@ -47,11 +47,11 @@ static ColliderSphereInit sSphereInit = {
|
||||
COLSHAPE_SPHERE,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 1, { { 0, 0, 0 }, 13 }, 100 },
|
||||
|
||||
@@ -40,7 +40,7 @@ ActorProfile En_Bombal_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -48,11 +48,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x004138B0, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 60, 90, -50, { 0, 0, 0 } },
|
||||
|
||||
@@ -38,7 +38,7 @@ ActorProfile En_Bombers_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -46,11 +46,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 10, 30, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -40,7 +40,7 @@ static u16 sTextIds[] = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -48,11 +48,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 35, 30, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -39,7 +39,7 @@ ActorProfile En_Bombf_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER | AC_TYPE_OTHER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -47,11 +47,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00013A28, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 9, 18, 10, { 0, 0, 0 } },
|
||||
@@ -60,11 +60,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000008, 0x00, 0x08 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NONE,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NONE,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 0 }, 100 },
|
||||
@@ -73,7 +73,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ALL,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -167,8 +167,8 @@ void func_808AEAE0(EnBombf* this, PlayState* play) {
|
||||
player->stateFlags1 &= ~PLAYER_STATE1_CARRYING_ACTOR;
|
||||
}
|
||||
} else if ((this->colliderCylinder.base.acFlags & AC_HIT) &&
|
||||
((this->colliderCylinder.elem.acHitElem->toucher.dmgFlags & 0x13828) ||
|
||||
((this->colliderCylinder.elem.acHitElem->toucher.dmgFlags & 0x200) &&
|
||||
((this->colliderCylinder.elem.acHitElem->atDmgInfo.dmgFlags & 0x13828) ||
|
||||
((this->colliderCylinder.elem.acHitElem->atDmgInfo.dmgFlags & 0x200) &&
|
||||
(player->transformation == PLAYER_FORM_GORON) && (player->actor.speed > 15.0f)))) {
|
||||
this->colliderCylinder.base.acFlags &= ~AC_HIT;
|
||||
if (this->colliderCylinder.base.ac->category != ACTORCAT_BOSS) {
|
||||
|
||||
@@ -67,7 +67,7 @@ ActorProfile En_Bomjima_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -75,11 +75,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 10, 30, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -53,7 +53,7 @@ ActorProfile En_Bomjimb_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -61,11 +61,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 20, 30, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -33,7 +33,7 @@ ActorProfile En_Boom_Profile = {
|
||||
|
||||
static ColliderQuadInit sQuadInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_PLAYER,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -41,11 +41,11 @@ static ColliderQuadInit sQuadInit = {
|
||||
COLSHAPE_QUAD,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0x00000010, 0x00, 0x02 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_NEAREST | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_NEAREST | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
|
||||
@@ -67,77 +67,77 @@ f32 D_80C0F8D0 = 0.0f;
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[7] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 10, { { 1000, 400, 0 }, 40 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x04, 0x08 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 9, { { 0, 700, 200 }, 35 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 6, { { 100, 600, 0 }, 35 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 3, { { 400, 200, 0 }, 40 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 13, { { 700, -100, 0 }, 35 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 16, { { 200, 300, 0 }, 30 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 19, { { 200, 300, 0 }, 30 }, 100 },
|
||||
@@ -146,7 +146,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[7] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT6,
|
||||
COL_MATERIAL_HIT6,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
@@ -528,10 +528,10 @@ void func_80C0BF2C(EnBsb* this) {
|
||||
this->collider.elements[0].dim.modelSphere.radius = 110;
|
||||
this->collider.elements[0].dim.modelSphere.center.x = 300;
|
||||
this->collider.elements[0].dim.modelSphere.center.y = 400;
|
||||
this->collider.base.colType = COLTYPE_HARD;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_HARD;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) {
|
||||
this->collider.elements[i].base.elemType = ELEMTYPE_UNK2;
|
||||
this->collider.elements[i].base.elemMaterial = ELEM_MATERIAL_UNK2;
|
||||
}
|
||||
|
||||
this->actor.flags |= ACTOR_FLAG_LOCK_ON_DISABLED;
|
||||
@@ -570,10 +570,10 @@ void func_80C0C0F4(EnBsb* this, PlayState* play) {
|
||||
this->collider.elements[0].dim.modelSphere.radius = 40;
|
||||
this->collider.elements[0].dim.modelSphere.center.x = 1000;
|
||||
this->collider.elements[0].dim.modelSphere.center.y = 400;
|
||||
this->collider.base.colType = COLTYPE_NONE;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_NONE;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) {
|
||||
this->collider.elements[i].base.elemType = ELEMTYPE_UNK0;
|
||||
this->collider.elements[i].base.elemMaterial = ELEM_MATERIAL_UNK0;
|
||||
}
|
||||
|
||||
this->unk_02AE = false;
|
||||
@@ -886,9 +886,9 @@ void func_80C0CDE4(EnBsb* this, PlayState* play) {
|
||||
f32 dy;
|
||||
f32 dz;
|
||||
|
||||
hitPos.x = this->collider.elements[1].base.bumper.hitPos.x;
|
||||
hitPos.y = this->collider.elements[1].base.bumper.hitPos.y;
|
||||
hitPos.z = this->collider.elements[1].base.bumper.hitPos.z;
|
||||
hitPos.x = this->collider.elements[1].base.acDmgInfo.hitPos.x;
|
||||
hitPos.y = this->collider.elements[1].base.acDmgInfo.hitPos.y;
|
||||
hitPos.z = this->collider.elements[1].base.acDmgInfo.hitPos.z;
|
||||
|
||||
dx = hitPos.x - player->actor.world.pos.x;
|
||||
dy = hitPos.y - player->actor.world.pos.y;
|
||||
@@ -1425,8 +1425,8 @@ void func_80C0E618(EnBsb* this, PlayState* play) {
|
||||
if ((this->unk_02B4 != 0) && (this->unk_02B4 != 1) && (this->unk_02B4 != 9) && (this->unk_02B4 != 12) &&
|
||||
(this->unk_02B4 != 13) && (this->unk_02B4 != 5) && ((this->unk_02B4 != 8) || !this->unk_02DC)) {
|
||||
if (!(this->collider.base.atFlags & AT_BOUNCED)) {
|
||||
if (this->collider.elements[1].base.toucherFlags & TOUCH_HIT) {
|
||||
this->collider.elements[1].base.toucherFlags &= ~TOUCH_HIT;
|
||||
if (this->collider.elements[1].base.atElemFlags & ATELEM_HIT) {
|
||||
this->collider.elements[1].base.atElemFlags &= ~ATELEM_HIT;
|
||||
if ((this->unk_02B4 != 11) && (this->unk_02B4 != 7)) {
|
||||
func_80C0D334(this);
|
||||
}
|
||||
@@ -1524,10 +1524,10 @@ void func_80C0E618(EnBsb* this, PlayState* play) {
|
||||
func_80C0D3C0(this, play);
|
||||
} else {
|
||||
for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) {
|
||||
if (this->collider.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
sp48.x = this->collider.elements[i].base.bumper.hitPos.x;
|
||||
sp48.y = this->collider.elements[i].base.bumper.hitPos.y;
|
||||
sp48.z = this->collider.elements[i].base.bumper.hitPos.z;
|
||||
if (this->collider.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
sp48.x = this->collider.elements[i].base.acDmgInfo.hitPos.x;
|
||||
sp48.y = this->collider.elements[i].base.acDmgInfo.hitPos.y;
|
||||
sp48.z = this->collider.elements[i].base.acDmgInfo.hitPos.z;
|
||||
CollisionCheck_BlueBlood(play, NULL, &sp48);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,22 +34,22 @@ ActorProfile En_Bubble_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[2] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x04 },
|
||||
{ 0xF7CFD757, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 16 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00002820, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 16 }, 100 },
|
||||
@@ -58,7 +58,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT6,
|
||||
COL_MATERIAL_HIT6,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -98,10 +98,10 @@ void EnBubble_SetDimensions(EnBubble* this, f32 dim) {
|
||||
s32 func_8089F59C(EnBubble* this) {
|
||||
ColliderElement* elem = &this->colliderSphere.elements[0].base;
|
||||
|
||||
elem->toucher.dmgFlags = DMG_EXPLOSIVES;
|
||||
elem->toucher.effect = 0;
|
||||
elem->toucher.damage = 4;
|
||||
elem->toucherFlags = TOUCH_ON;
|
||||
elem->atDmgInfo.dmgFlags = DMG_EXPLOSIVES;
|
||||
elem->atDmgInfo.effect = 0;
|
||||
elem->atDmgInfo.damage = 4;
|
||||
elem->atElemFlags = ATELEM_ON;
|
||||
this->actor.velocity.y = 0.0f;
|
||||
return 6;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ s32 func_8089F5D0(EnBubble* this) {
|
||||
}
|
||||
|
||||
void EnBubble_DamagePlayer(EnBubble* this, PlayState* play) {
|
||||
play->damagePlayer(play, -this->colliderSphere.elements[0].base.toucher.damage);
|
||||
play->damagePlayer(play, -this->colliderSphere.elements[0].base.atDmgInfo.damage);
|
||||
func_800B8E1C(play, &this->actor, 6.0f, this->actor.yawTowardsPlayer, 6.0f);
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ void EnBubble_Fly(EnBubble* this, PlayState* play) {
|
||||
s32 bgId;
|
||||
u8 bounceCount;
|
||||
|
||||
if (this->colliderSphere.elements[1].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->colliderSphere.elements[1].base.acElemFlags & ACELEM_HIT) {
|
||||
bumpActor = this->colliderSphere.base.ac;
|
||||
this->normalizedBumpVelocity = bumpActor->velocity;
|
||||
EnBubble_Vec3fNormalize(&this->normalizedBumpVelocity);
|
||||
@@ -283,7 +283,7 @@ s32 func_8089FF30(EnBubble* this) {
|
||||
return false;
|
||||
}
|
||||
this->colliderSphere.base.acFlags &= ~AC_HIT;
|
||||
if (this->colliderSphere.elements[1].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->colliderSphere.elements[1].base.acElemFlags & ACELEM_HIT) {
|
||||
this->unk1F4.x = this->colliderSphere.base.ac->velocity.x / 10.0f;
|
||||
this->unk1F4.y = this->colliderSphere.base.ac->velocity.y / 10.0f;
|
||||
this->unk1F4.z = this->colliderSphere.base.ac->velocity.z / 10.0f;
|
||||
|
||||
@@ -30,11 +30,11 @@ void func_8091D090(EnButte* this, PlayState* play);
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 0, { { 0, 0, 0 }, 5 }, 100 },
|
||||
@@ -43,7 +43,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_PLAYER | OC1_TYPE_1,
|
||||
|
||||
@@ -32,7 +32,7 @@ ActorProfile En_Cha_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_WOOD,
|
||||
COL_MATERIAL_WOOD,
|
||||
AT_NONE,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -40,11 +40,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 10, 40, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -34,7 +34,7 @@ ActorProfile En_Cne_01_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -42,11 +42,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 64, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -30,7 +30,7 @@ void func_80AFE650(Actor* thisx, PlayState* play);
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON,
|
||||
@@ -38,11 +38,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 10, 11, 1, { 0, 0, 0 } },
|
||||
|
||||
@@ -43,7 +43,7 @@ ActorProfile En_Cow_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_ENEMY,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -51,11 +51,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 30, 40, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -43,11 +43,11 @@ ActorProfile En_Crow_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 1, { { 0, 0, 0 }, 20 }, 100 },
|
||||
@@ -56,7 +56,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -316,9 +316,10 @@ void EnCrow_SetupDamaged(EnCrow* this, PlayState* play) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
this->drawDmgEffFrozenSteamScale = 0.5f;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elements[0].base.bumper.hitPos.x,
|
||||
this->collider.elements[0].base.bumper.hitPos.y, this->collider.elements[0].base.bumper.hitPos.z, 0,
|
||||
0, 0, CLEAR_TAG_PARAMS(CLEAR_TAG_SMALL_LIGHT_RAYS));
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elements[0].base.acDmgInfo.hitPos.x,
|
||||
this->collider.elements[0].base.acDmgInfo.hitPos.y,
|
||||
this->collider.elements[0].base.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_SMALL_LIGHT_RAYS));
|
||||
} else if (this->actor.colChkInfo.damageEffect == GUAY_DMGEFF_FIRE) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE;
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
|
||||
@@ -38,7 +38,7 @@ static u16 sTextIds[] = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -46,11 +46,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 20, 60, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -50,7 +50,7 @@ static u16 sTextIds[] = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -58,11 +58,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 20, 60, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -71,7 +71,7 @@ ActorProfile En_Death_Profile = {
|
||||
|
||||
static ColliderSphereInit sSphereInit = {
|
||||
{
|
||||
COLTYPE_HIT3,
|
||||
COL_MATERIAL_HIT3,
|
||||
AT_NONE,
|
||||
AC_NONE | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -79,11 +79,11 @@ static ColliderSphereInit sSphereInit = {
|
||||
COLSHAPE_SPHERE,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 1, { { 0, 0, 0 }, 22 }, 100 },
|
||||
@@ -91,7 +91,7 @@ static ColliderSphereInit sSphereInit = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -99,11 +99,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 35, 90, 20, { 0, 0, 0 } },
|
||||
@@ -112,22 +112,22 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderTrisElementInit sTrisElementsInit[2] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x04, 0x20 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
ELEM_MATERIAL_UNK2,
|
||||
{ 0xF7CFFFFF, 0x04, 0x20 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
@@ -136,7 +136,7 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
|
||||
|
||||
static ColliderTrisInit sTrisInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
COL_MATERIAL_METAL,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -149,7 +149,7 @@ static ColliderTrisInit sTrisInit = {
|
||||
|
||||
static ColliderQuadInit sQuadInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -157,11 +157,11 @@ static ColliderQuadInit sQuadInit = {
|
||||
COLSHAPE_QUAD,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x04, 0x20 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL | TOUCH_UNK7,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL | ATELEM_UNK7,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
@@ -1220,9 +1220,9 @@ void EnDeath_UpdateDamage(EnDeath* this, PlayState* play) {
|
||||
this->dmgEffectAlpha = 3.0f;
|
||||
this->dmgEffectScale = 0.8f;
|
||||
this->dmgEffect = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->coreCollider.elem.bumper.hitPos.x,
|
||||
this->coreCollider.elem.bumper.hitPos.y, this->coreCollider.elem.bumper.hitPos.z, 0, 0, 0,
|
||||
4);
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->coreCollider.elem.acDmgInfo.hitPos.x,
|
||||
this->coreCollider.elem.acDmgInfo.hitPos.y, this->coreCollider.elem.acDmgInfo.hitPos.z, 0,
|
||||
0, 0, 4);
|
||||
}
|
||||
if (play->envCtx.lightSettingOverride == 27) {
|
||||
play->envCtx.lightSettingOverride = 26;
|
||||
|
||||
@@ -58,77 +58,77 @@ ActorProfile En_Dekubaba_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[7] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_HARD,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_HARD,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 1, { { 0, 100, 1000 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 51, { { 0, 0, 1500 }, 8 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 52, { { 0, 0, 500 }, 8 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 53, { { 0, 0, 1500 }, 8 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 54, { { 0, 0, 500 }, 8 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 55, { { 0, 0, 1500 }, 8 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 56, { { 0, 0, 500 }, 8 }, 100 },
|
||||
@@ -137,7 +137,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[7] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT6,
|
||||
COL_MATERIAL_HIT6,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -248,7 +248,7 @@ void EnDekubaba_DisableHitboxes(EnDekubaba* this) {
|
||||
s32 i;
|
||||
|
||||
for (i = 1; i < ARRAY_COUNT(this->colliderElements); i++) {
|
||||
this->collider.elements[i].base.bumperFlags &= ~BUMP_ON;
|
||||
this->collider.elements[i].base.acElemFlags &= ~ACELEM_ON;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,8 +279,8 @@ void EnDekubaba_SetFireLightEffects(EnDekubaba* this, PlayState* play, s32 index
|
||||
this->drawDmgEffScale = 0.75f;
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
jntSphElem = &this->collider.elements[index];
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, jntSphElem->base.bumper.hitPos.x,
|
||||
jntSphElem->base.bumper.hitPos.y, jntSphElem->base.bumper.hitPos.z, 0, 0, 0,
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, jntSphElem->base.acDmgInfo.hitPos.x,
|
||||
jntSphElem->base.acDmgInfo.hitPos.y, jntSphElem->base.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_SMALL_LIGHT_RAYS));
|
||||
}
|
||||
}
|
||||
@@ -290,7 +290,7 @@ void EnDekubaba_SetFrozenEffects(EnDekubaba* this) {
|
||||
this->drawDmgEffFrozenSteamScale = 1.125f;
|
||||
this->drawDmgEffAlpha = 1.0f;
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX;
|
||||
this->collider.base.colType = COLTYPE_HIT3;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_HIT3;
|
||||
this->timer = 80;
|
||||
this->actor.flags &= ~ACTOR_FLAG_400;
|
||||
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 80);
|
||||
@@ -299,7 +299,7 @@ void EnDekubaba_SetFrozenEffects(EnDekubaba* this) {
|
||||
void EnDekubaba_SpawnIceEffects(EnDekubaba* this, PlayState* play) {
|
||||
if (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE;
|
||||
this->collider.base.colType = COLTYPE_HIT6;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_HIT6;
|
||||
this->drawDmgEffAlpha = 0.0f;
|
||||
Actor_SpawnIceEffects(play, &this->actor, this->bodyPartsPos, DEKUBABA_BODYPART_MAX, 4, this->size * 0.3f,
|
||||
this->size * 0.2f);
|
||||
@@ -320,7 +320,7 @@ void EnDekubaba_SetupWait(EnDekubaba* this) {
|
||||
|
||||
Actor_SetScale(&this->actor, this->size * 0.01f * 0.5f);
|
||||
|
||||
this->collider.base.colType = COLTYPE_HARD;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_HARD;
|
||||
this->collider.base.acFlags |= AC_HARD;
|
||||
this->timer = 45;
|
||||
|
||||
@@ -362,7 +362,7 @@ void EnDekubaba_SetupGrow(EnDekubaba* this) {
|
||||
this->collider.elements[i].base.ocElemFlags |= OCELEM_ON;
|
||||
}
|
||||
|
||||
this->collider.base.colType = COLTYPE_HIT6;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_HIT6;
|
||||
this->collider.base.acFlags &= ~AC_HARD;
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEKU_WAKEUP);
|
||||
this->actionFunc = EnDekubaba_Grow;
|
||||
@@ -936,7 +936,7 @@ void EnDekubaba_SetupStunnedVertical(EnDekubaba* this) {
|
||||
s32 i;
|
||||
|
||||
for (i = 1; i < ARRAY_COUNT(this->colliderElements); i++) {
|
||||
this->collider.elements[i].base.bumperFlags |= BUMP_ON;
|
||||
this->collider.elements[i].base.acElemFlags |= ACELEM_ON;
|
||||
}
|
||||
|
||||
if (this->timer == 1) {
|
||||
@@ -1074,18 +1074,18 @@ void EnDekubaba_UpdateDamage(EnDekubaba* this, PlayState* play) {
|
||||
this->collider.base.acFlags &= ~AC_HIT;
|
||||
Actor_SetDropFlagJntSph(&this->actor, &this->collider);
|
||||
|
||||
if ((this->collider.base.colType != COLTYPE_HARD) &&
|
||||
if ((this->collider.base.colMaterial != COL_MATERIAL_HARD) &&
|
||||
(this->actor.colChkInfo.damageEffect != DEKUBABA_DMGEFF_HOOKSHOT)) {
|
||||
jntSphElem = &this->collider.elements[0];
|
||||
for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++, jntSphElem++) {
|
||||
if (jntSphElem->base.bumperFlags & BUMP_HIT) {
|
||||
if (jntSphElem->base.acElemFlags & ACELEM_HIT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((i != ARRAY_COUNT(this->colliderElements)) &&
|
||||
((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) ||
|
||||
!(jntSphElem->base.acHitElem->toucher.dmgFlags & 0xDB0B3))) {
|
||||
!(jntSphElem->base.acHitElem->atDmgInfo.dmgFlags & 0xDB0B3))) {
|
||||
EnDekubaba_SpawnIceEffects(this, play);
|
||||
newHealth = this->actor.colChkInfo.health - this->actor.colChkInfo.damage;
|
||||
|
||||
@@ -1140,8 +1140,9 @@ void EnDekubaba_UpdateDamage(EnDekubaba* this, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
} else if ((play->actorCtx.unk2 != 0) && (this->actor.xyzDistToPlayerSq < SQ(200.0f)) &&
|
||||
(this->collider.base.colType != COLTYPE_HARD) && (this->actionFunc != EnDekubaba_StunnedVertical) &&
|
||||
(this->actionFunc != EnDekubaba_Hit) && (this->actor.colChkInfo.health != 0)) {
|
||||
(this->collider.base.colMaterial != COL_MATERIAL_HARD) &&
|
||||
(this->actionFunc != EnDekubaba_StunnedVertical) && (this->actionFunc != EnDekubaba_Hit) &&
|
||||
(this->actor.colChkInfo.health != 0)) {
|
||||
this->actor.colChkInfo.health--;
|
||||
this->actor.dropFlag = 0;
|
||||
EnDekubaba_SetupHit(this, DEKUBABA_HIT_STUN_OTHER);
|
||||
|
||||
@@ -54,7 +54,7 @@ ActorProfile En_Dekunuts_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT6,
|
||||
COL_MATERIAL_HIT6,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -62,11 +62,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 32, 0, { 0, 0, 0 } },
|
||||
@@ -132,8 +132,9 @@ void EnDekunuts_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
if (this->actor.params == ENDEKUNUTS_GET_FF00_1) {
|
||||
this->actor.flags &= ~ACTOR_FLAG_TARGETABLE;
|
||||
this->collider.base.colType = COLTYPE_NONE;
|
||||
this->collider.elem.bumperFlags |= (BUMP_NO_HITMARK | BUMP_NO_SWORD_SFX | BUMP_NO_DAMAGE | BUMP_NO_AT_INFO);
|
||||
this->collider.base.colMaterial = COL_MATERIAL_NONE;
|
||||
this->collider.elem.acElemFlags |=
|
||||
(ACELEM_NO_HITMARK | ACELEM_NO_SWORD_SFX | ACELEM_NO_DAMAGE | ACELEM_NO_AT_INFO);
|
||||
} else if (this->actor.params == ENDEKUNUTS_GET_FF00_2) {
|
||||
this->actor.targetMode = TARGET_MODE_0;
|
||||
}
|
||||
@@ -152,7 +153,7 @@ void func_808BD348(EnDekunuts* this) {
|
||||
this->drawDmgEffScale = 0.55f;
|
||||
this->drawDmgEffFrozenSteamScale = 825.0f * 0.001f;
|
||||
this->drawDmgEffAlpha = 1.0f;
|
||||
this->collider.base.colType = COLTYPE_HIT3;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_HIT3;
|
||||
this->unk_190 = 80;
|
||||
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 80);
|
||||
}
|
||||
@@ -160,7 +161,7 @@ void func_808BD348(EnDekunuts* this) {
|
||||
void func_808BD3B4(EnDekunuts* this, PlayState* play) {
|
||||
if (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE;
|
||||
this->collider.base.colType = COLTYPE_HIT6;
|
||||
this->collider.base.colMaterial = COL_MATERIAL_HIT6;
|
||||
this->drawDmgEffAlpha = 0.0f;
|
||||
Actor_SpawnIceEffects(play, &this->actor, this->bodyPartsPos, ENDEKUNUTS_BODYPART_MAX, 2, 0.2f, 0.2f);
|
||||
}
|
||||
@@ -571,7 +572,7 @@ void func_808BE73C(EnDekunuts* this, PlayState* play) {
|
||||
this->collider.base.acFlags &= ~AC_HIT;
|
||||
Actor_SetDropFlag(&this->actor, &this->collider.elem);
|
||||
if ((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) ||
|
||||
!(this->collider.elem.acHitElem->toucher.dmgFlags & 0xDB0B3)) {
|
||||
!(this->collider.elem.acHitElem->atDmgInfo.dmgFlags & 0xDB0B3)) {
|
||||
func_808BD3B4(this, play);
|
||||
if ((this->actor.colChkInfo.mass == 50) || (this->actor.params != ENDEKUNUTS_GET_FF00_0)) {
|
||||
if ((this->actor.params != ENDEKUNUTS_GET_FF00_1) && !Actor_ApplyDamage(&this->actor)) {
|
||||
@@ -609,8 +610,8 @@ void func_808BE73C(EnDekunuts* this, PlayState* play) {
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
this->drawDmgEffScale = 0.55f;
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elem.bumper.hitPos.x,
|
||||
this->collider.elem.bumper.hitPos.y, this->collider.elem.bumper.hitPos.z, 0, 0, 0,
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider.elem.acDmgInfo.hitPos.x,
|
||||
this->collider.elem.acDmgInfo.hitPos.y, this->collider.elem.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_SMALL_LIGHT_RAYS));
|
||||
} else if (this->actor.colChkInfo.damageEffect == 5) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_ELECTRIC_SPARKS_LARGE;
|
||||
|
||||
@@ -34,7 +34,7 @@ ActorProfile En_Demo_heishi_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -42,11 +42,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 40, 40, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -110,7 +110,7 @@ static RacetrackDogInfo sSelectedRacetrackDogInfo = { DOG_COLOR_DEFAULT, -1, 0x3
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -118,11 +118,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0xF7CFFFFF, 0x04, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 13, 19, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -72,99 +72,99 @@ ActorProfile En_Dinofos_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[9] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ DINOLFOS_LIMB_LOWER_BODY, { { 200, 300, 0 }, 19 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ DINOLFOS_LIMB_UPPER_BODY, { { 200, 200, 0 }, 17 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ DINOLFOS_LIMB_HEAD, { { 600, 200, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ DINOLFOS_LIMB_NECK, { { 700, 100, 0 }, 10 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ DINOLFOS_LIMB_LEFT_UPPER_LEG, { { 1300, 100, 0 }, 12 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ DINOLFOS_LIMB_RIGHT_UPPER_LEG, { { 1300, 100, 0 }, 12 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x20000000, 0x09, 0x08 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ DINOLFOS_LIMB_MAX, { { 0, -10, 35 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x20000000, 0x09, 0x08 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ DINOLFOS_LIMB_MAX, { { 0, -10, 70 }, 28 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x20000000, 0x09, 0x08 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ DINOLFOS_LIMB_MAX, { { 0, -5, 110 }, 30 }, 100 },
|
||||
@@ -173,7 +173,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -186,7 +186,7 @@ static ColliderJntSphInit sJntSphInit = {
|
||||
|
||||
static ColliderQuadInit sQuadInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -194,11 +194,11 @@ static ColliderQuadInit sQuadInit = {
|
||||
COLSHAPE_QUAD,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x04 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL | TOUCH_UNK7,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL | ATELEM_UNK7,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
@@ -401,7 +401,7 @@ void EnDinofos_EndCutscene(EnDinofos* this, PlayState* play) {
|
||||
void EnDinofos_Freeze(EnDinofos* this) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX;
|
||||
this->drawDmgEffScale = 0.55f;
|
||||
this->bodyAndFireCollider.base.colType = COLTYPE_HIT3;
|
||||
this->bodyAndFireCollider.base.colMaterial = COL_MATERIAL_HIT3;
|
||||
this->drawDmgEffFrozenSteamScale = 825.0f * 0.001f;
|
||||
this->drawDmgEffAlpha = 1.0f;
|
||||
this->stunTimer = 80;
|
||||
@@ -412,7 +412,7 @@ void EnDinofos_Freeze(EnDinofos* this) {
|
||||
void EnDinofos_ThawIfFrozen(EnDinofos* this, PlayState* play) {
|
||||
if (this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE;
|
||||
this->bodyAndFireCollider.base.colType = COLTYPE_HIT0;
|
||||
this->bodyAndFireCollider.base.colMaterial = COL_MATERIAL_HIT0;
|
||||
this->drawDmgEffAlpha = 0.0f;
|
||||
Actor_SpawnIceEffects(play, &this->actor, this->bodyPartsPos, DINOFOS_BODYPART_MAX, 2, 0.3f, 0.2f);
|
||||
this->actor.flags |= ACTOR_FLAG_400;
|
||||
@@ -427,7 +427,7 @@ void EnDinofos_EnableBumperCollision(EnDinofos* this) {
|
||||
|
||||
if (this->isDodgingGoronPound) {
|
||||
for (i = 0; i < DINOFOS_COLLIDER_FIRE_START_INDEX; i++) {
|
||||
this->bodyAndFireCollider.elements[i].base.bumper.dmgFlags |= 0x400;
|
||||
this->bodyAndFireCollider.elements[i].base.acDmgInfo.dmgFlags |= 0x400;
|
||||
}
|
||||
this->isDodgingGoronPound = false;
|
||||
}
|
||||
@@ -482,7 +482,7 @@ s32 EnDinofos_Dodge(EnDinofos* this, PlayState* play) {
|
||||
(!this->isDodgingGoronPound)) {
|
||||
this->isDodgingGoronPound = true;
|
||||
for (i = 0; i < DINOFOS_COLLIDER_FIRE_START_INDEX; i++) {
|
||||
this->bodyAndFireCollider.elements[i].base.bumper.dmgFlags &= ~0x400;
|
||||
this->bodyAndFireCollider.elements[i].base.acDmgInfo.dmgFlags &= ~0x400;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1296,7 +1296,7 @@ s32 EnDinofos_UpdateDamage(EnDinofos* this, PlayState* play) {
|
||||
Actor_SetDropFlagJntSph(&this->actor, &this->bodyAndFireCollider);
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->bodyAndFireColliderElements); i++) {
|
||||
if (this->bodyAndFireCollider.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->bodyAndFireCollider.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1306,7 +1306,7 @@ s32 EnDinofos_UpdateDamage(EnDinofos* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if ((this->drawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) &&
|
||||
(this->bodyAndFireCollider.elements[i].base.acHitElem->toucher.dmgFlags & 0xDB0B3)) {
|
||||
(this->bodyAndFireCollider.elements[i].base.acHitElem->atDmgInfo.dmgFlags & 0xDB0B3)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1374,9 +1374,9 @@ s32 EnDinofos_UpdateDamage(EnDinofos* this, PlayState* play) {
|
||||
this->drawDmgEffScale = 0.55f;
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG,
|
||||
this->bodyAndFireCollider.elements[i].base.bumper.hitPos.x,
|
||||
this->bodyAndFireCollider.elements[i].base.bumper.hitPos.y,
|
||||
this->bodyAndFireCollider.elements[i].base.bumper.hitPos.z, 0, 0, 0,
|
||||
this->bodyAndFireCollider.elements[i].base.acDmgInfo.hitPos.x,
|
||||
this->bodyAndFireCollider.elements[i].base.acDmgInfo.hitPos.y,
|
||||
this->bodyAndFireCollider.elements[i].base.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
}
|
||||
EnDinofos_SetupDamaged(this, i);
|
||||
|
||||
@@ -35,7 +35,7 @@ ActorProfile En_Dnk_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -43,11 +43,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 46, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -105,7 +105,7 @@ ActorProfile En_Dno_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -113,11 +113,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 17, 58, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -46,7 +46,7 @@ ActorProfile En_Dnp_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT1,
|
||||
COL_MATERIAL_HIT1,
|
||||
AT_NONE,
|
||||
AC_NONE,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -54,11 +54,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 14, 38, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -75,7 +75,7 @@ ActorProfile En_Dnq_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT1,
|
||||
COL_MATERIAL_HIT1,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -83,11 +83,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 34, 80, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -93,7 +93,7 @@ ActorProfile En_Dns_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -101,11 +101,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
ELEM_MATERIAL_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 46, 0, { 0, 0, 0 } },
|
||||
|
||||
@@ -51,110 +51,110 @@ ActorProfile En_Dodongo_Profile = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit1[10] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x800CB019, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 7, { { 500, 0, 0 }, 27 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x800CB019, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 21, { { -200, 0, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x800CB019, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 28, { { -200, 0, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x800CB019, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 22, { { 400, -400, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x800CB019, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 29, { { 400, -400, 0 }, 20 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 16, { { 1000, 0, 0 }, 28 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 14, { { -300, 300, 0 }, 17 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 14, { { 800, 100, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 13, { { 600, 0, 0 }, 12 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xF7CFFFFF, 0x00, 0x08 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 13, { { 1500, 0, 0 }, 12 }, 100 },
|
||||
@@ -163,7 +163,7 @@ static ColliderJntSphElementInit sJntSphElementsInit1[10] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit1 = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
COL_MATERIAL_HIT0,
|
||||
AT_NONE | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -176,7 +176,7 @@ static ColliderJntSphInit sJntSphInit1 = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit2 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_HARD | AC_TYPE_PLAYER,
|
||||
OC1_NONE,
|
||||
@@ -190,33 +190,33 @@ static ColliderJntSphInit sJntSphInit2 = {
|
||||
static ColliderJntSphElementInit sJntSphElementsInit2[3] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x20000000, 0x01, 0x10 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 2, { { 0, -10, 10 }, 25 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x20000000, 0x01, 0x10 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 2, { { 0, -5, 50 }, 37 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x20000000, 0x01, 0x10 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_NONE,
|
||||
OCELEM_NONE,
|
||||
},
|
||||
{ 2, { { 0, 0, 90 }, 50 }, 100 },
|
||||
@@ -225,7 +225,7 @@ static ColliderJntSphElementInit sJntSphElementsInit2[3] = {
|
||||
|
||||
static ColliderJntSphInit sJntSphInit3 = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_NONE,
|
||||
OC1_NONE,
|
||||
@@ -315,8 +315,8 @@ void EnDodongo_Init(Actor* thisx, PlayState* play) {
|
||||
Collider_InitAndSetJntSph(play, &this->collider3, &this->actor, &sJntSphInit3, this->collider3Elements);
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->collider2Elements); i++) {
|
||||
this->collider2.elements[i].base.elemType = ELEMTYPE_UNK2;
|
||||
this->collider2.elements[i].base.bumper.dmgFlags = 0x77C34FE6;
|
||||
this->collider2.elements[i].base.elemMaterial = ELEM_MATERIAL_UNK2;
|
||||
this->collider2.elements[i].base.acDmgInfo.dmgFlags = 0x77C34FE6;
|
||||
}
|
||||
|
||||
Effect_Add(play, &this->unk_338, EFFECT_BLURE2, 0, 0, &D_80879308);
|
||||
@@ -330,7 +330,7 @@ void EnDodongo_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->collider1Elements); i++) {
|
||||
this->collider1.elements[i].dim.modelSphere.radius *= 2;
|
||||
this->collider1.elements[i].base.toucher.damage *= 2;
|
||||
this->collider1.elements[i].base.atDmgInfo.damage *= 2;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->collider2Elements); i++) {
|
||||
@@ -418,16 +418,16 @@ void func_80876BD0(EnDodongo* this, PlayState* play, s32 arg2) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_LIGHT_ORBS;
|
||||
this->drawDmgEffScale = 0.75f;
|
||||
this->drawDmgEffAlpha = 4.0f;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider1.elements[arg2].base.bumper.hitPos.x,
|
||||
this->collider1.elements[arg2].base.bumper.hitPos.y,
|
||||
this->collider1.elements[arg2].base.bumper.hitPos.z, 0, 0, 0,
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_CLEAR_TAG, this->collider1.elements[arg2].base.acDmgInfo.hitPos.x,
|
||||
this->collider1.elements[arg2].base.acDmgInfo.hitPos.y,
|
||||
this->collider1.elements[arg2].base.acDmgInfo.hitPos.z, 0, 0, 0,
|
||||
CLEAR_TAG_PARAMS(CLEAR_TAG_LARGE_LIGHT_RAYS));
|
||||
}
|
||||
}
|
||||
|
||||
void func_80876CAC(EnDodongo* this) {
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX;
|
||||
this->collider1.base.colType = COLTYPE_HIT3;
|
||||
this->collider1.base.colMaterial = COL_MATERIAL_HIT3;
|
||||
this->drawDmgEffScale = 0.75f;
|
||||
this->drawDmgEffFrozenSteamScale = 1.125f;
|
||||
this->drawDmgEffAlpha = 1.0f;
|
||||
@@ -441,7 +441,7 @@ void func_80876D28(EnDodongo* this, PlayState* play) {
|
||||
this->timer = 0;
|
||||
this->actor.colorFilterTimer = 0;
|
||||
this->drawDmgEffType = ACTOR_DRAW_DMGEFF_FIRE;
|
||||
this->collider1.base.colType = COLTYPE_HIT0;
|
||||
this->collider1.base.colMaterial = COL_MATERIAL_HIT0;
|
||||
this->drawDmgEffAlpha = 0.0f;
|
||||
Actor_SpawnIceEffects(play, &this->actor, this->bodyPartsPos, DODONGO_BODYPART_MAX, 2, this->unk_334 * 0.3f,
|
||||
this->unk_334 * 0.2f);
|
||||
@@ -963,16 +963,16 @@ void EnDodongo_UpdateDamage(EnDodongo* this, PlayState* play) {
|
||||
this->collider1.base.acFlags &= ~AC_HIT;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->collider2Elements); i++) {
|
||||
if (this->collider2.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->collider2.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((i != ARRAY_COUNT(this->collider2Elements)) &&
|
||||
((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) ||
|
||||
!(this->collider2.elements[i].base.acHitElem->toucher.dmgFlags & 0xDB0B3))) {
|
||||
!(this->collider2.elements[i].base.acHitElem->atDmgInfo.dmgFlags & 0xDB0B3))) {
|
||||
func_80876D28(this, play);
|
||||
Math_Vec3s_ToVec3f(&sp3C, &this->collider2.elements[i].base.bumper.hitPos);
|
||||
Math_Vec3s_ToVec3f(&sp3C, &this->collider2.elements[i].base.acDmgInfo.hitPos);
|
||||
if (this->actor.colChkInfo.damageEffect == 0xF) {
|
||||
CollisionCheck_BlueBlood(play, NULL, &sp3C);
|
||||
EffectSsHitmark_SpawnFixedScale(play, EFFECT_HITMARK_WHITE, &sp3C);
|
||||
@@ -987,14 +987,14 @@ void EnDodongo_UpdateDamage(EnDodongo* this, PlayState* play) {
|
||||
Actor_SetDropFlagJntSph(&this->actor, &this->collider1);
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->collider1Elements); i++) {
|
||||
if (this->collider1.elements[i].base.bumperFlags & BUMP_HIT) {
|
||||
if (this->collider1.elements[i].base.acElemFlags & ACELEM_HIT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((i != ARRAY_COUNT(this->collider1Elements)) &&
|
||||
((this->drawDmgEffType != ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) ||
|
||||
!(this->collider1.elements[i].base.acHitElem->toucher.dmgFlags & 0xDB0B3))) {
|
||||
!(this->collider1.elements[i].base.acHitElem->atDmgInfo.dmgFlags & 0xDB0B3))) {
|
||||
func_80876D28(this, play);
|
||||
if (this->actor.colChkInfo.damageEffect != 0xF) {
|
||||
if (!Actor_ApplyDamage(&this->actor)) {
|
||||
|
||||
@@ -34,7 +34,7 @@ ActorProfile En_Door_Etc_Profile = {
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
COL_MATERIAL_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
@@ -42,11 +42,11 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
ATELEM_NONE | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 100, 40, 0, { 0, 0, 0 } },
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user