1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-05 15:34:41 +00:00

Colliders: change "touch, bump" to AT and AC (elems) (#1637)

* toucherFlags, bumperFlags -> atElemFlags, acElemFlags

* TOUCH_ -> ATELEM_

* BUMP_ -> ACELEM_

* ColliderElementTouch,Bump -> ColliderElementDamageInfoAT,AC

* toucher,bumper -> atDmgInfo,acDmgInfo

* Update docs and zcolchk funcs names

* run formatter

* remove the last mentions of "bump" for colliders

* Update renamed functions in disasm
This commit is contained in:
Dragorn421 2024-03-05 01:33:08 +01:00 committed by GitHub
parent bf37ad1368
commit 68a86d2d00
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
253 changed files with 1509 additions and 1509 deletions

View file

@ -666,8 +666,8 @@ extern ColliderCylinderInit D_80A88CB4;
// ELEMTYPE_UNK0,
// { 0x00000000, 0x00, 0x00 },
// { 0x00000004, 0x00, 0x00 },
// TOUCH_NONE,
// BUMP_ON,
// ATELEM_NONE,
// ACELEM_ON,
// OCELEM_ON,
// },
// { 170, 150, 0, { 0, 0, 0 } },

View file

@ -33,7 +33,7 @@ void func_80A13098(EnFirefly* this) {
} else {
this->actor.params -= 2;
}
this->collider.list->body.toucher.effect = 1;
this->collider.list->body.atDmgInfo.effect = 1;
this->auraType = 1;
this->onFire = 1;
this->actor.naviEnemyId = 0x11;

View file

@ -76,23 +76,23 @@ typedef struct {
} ColliderInitToActor; // size = 0x08
typedef struct {
/* 0x00 */ u32 dmgFlags; // Toucher damage type flags.
/* 0x00 */ u32 dmgFlags; // Damage types dealt by this collider element as AT.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 damage; // Damage or Stun Timer
} ColliderElementTouch; // size = 0x08
/* 0x05 */ u8 damage; // Damage
} ColliderElementDamageInfoAT; // size = 0x08
typedef struct {
/* 0x00 */ u32 dmgFlags; // Bumper damage type flags.
/* 0x00 */ u32 dmgFlags; // Damage types that may affect this collider element as AC.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 defense; // Damage Resistance
/* 0x06 */ Vec3s hitPos; // Point of contact
} ColliderElementBump; // size = 0x0C
} ColliderElementDamageInfoAC; // size = 0x0C
typedef struct {
/* 0x00 */ u32 dmgFlags; // Bumper exclusion mask
/* 0x00 */ u32 dmgFlags; // Damage types that may affect this collider element as AC.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 defense; // Damage Resistance
} ColliderElementBumpInit; // size = 0x08
} ColliderElementDamageInfoACInit; // size = 0x08
/**
* Affects the sound Link's sword makes when hitting it, hookability,
@ -112,11 +112,11 @@ typedef enum {
} ElementType;
typedef struct ColliderElement {
/* 0x00 */ ColliderElementTouch toucher; // Damage properties when acting as an AT collider
/* 0x08 */ ColliderElementBump bumper; // Damage properties when acting as an AC collider
/* 0x00 */ ColliderElementDamageInfoAT atDmgInfo; // Damage properties when acting as an AT collider
/* 0x08 */ ColliderElementDamageInfoAC acDmgInfo; // 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
/* 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
@ -126,10 +126,10 @@ typedef struct ColliderElement {
typedef struct {
/* 0x00 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
/* 0x04 */ ColliderElementTouch toucher; // Damage properties when acting as an AT collider
/* 0x0C */ ColliderElementBumpInit 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
/* 0x04 */ ColliderElementDamageInfoAT 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
@ -349,28 +349,28 @@ typedef struct {
#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_MASK (3 << 3)
#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) // For COLSHAPE_QUAD colliders, only collide with the closest AC element
#define ATELEM_SFX_MASK (3 << 3)
#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 effect 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 effect 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

View file

@ -4324,24 +4324,24 @@ u8 Actor_ApplyDamage(Actor* actor) {
void Actor_SetDropFlag(Actor* actor, ColliderElement* elem, s32 freezeFlag) {
if (elem->acHitElem == NULL) {
actor->dropFlag = 0x00;
} else if (freezeFlag && (elem->acHitElem->toucher.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) {
actor->freezeTimer = elem->acHitElem->toucher.damage;
} else if (freezeFlag && (elem->acHitElem->atDmgInfo.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) {
actor->freezeTimer = elem->acHitElem->atDmgInfo.damage;
actor->dropFlag = 0x00;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_FIRE) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_FIRE) {
actor->dropFlag = 0x01;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_ICE) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) {
actor->dropFlag = 0x02;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK1) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK1) {
actor->dropFlag = 0x04;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK2) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK2) {
actor->dropFlag = 0x08;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK3) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK3) {
actor->dropFlag = 0x10;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_LIGHT) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) {
actor->dropFlag = 0x20;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_MAGIC_LIGHT) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_LIGHT) {
if (freezeFlag) {
actor->freezeTimer = elem->acHitElem->toucher.damage;
actor->freezeTimer = elem->acHitElem->atDmgInfo.damage;
}
actor->dropFlag = 0x40;
} else {
@ -4361,24 +4361,24 @@ void Actor_SetDropFlagJntSph(Actor* actor, ColliderJntSph* jntSph, s32 freezeFla
if (elem->acHitElem == NULL) {
flag = 0x00;
} else if (freezeFlag &&
(elem->acHitElem->toucher.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) {
actor->freezeTimer = elem->acHitElem->toucher.damage;
(elem->acHitElem->atDmgInfo.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) {
actor->freezeTimer = elem->acHitElem->atDmgInfo.damage;
flag = 0x00;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_FIRE) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_FIRE) {
flag = 0x01;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_ICE) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) {
flag = 0x02;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK1) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK1) {
flag = 0x04;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK2) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK2) {
flag = 0x08;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_UNK3) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK3) {
flag = 0x10;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_ARROW_LIGHT) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) {
flag = 0x20;
} else if (elem->acHitElem->toucher.dmgFlags & DMG_MAGIC_LIGHT) {
} else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_LIGHT) {
if (freezeFlag) {
actor->freezeTimer = elem->acHitElem->toucher.damage;
actor->freezeTimer = elem->acHitElem->atDmgInfo.damage;
}
flag = 0x40;
} else {

View file

@ -139,18 +139,19 @@ void Collider_ResetOCBase(PlayState* play, Collider* col) {
col->ocFlags2 &= ~OC2_HIT_PLAYER;
}
s32 Collider_InitElementTouch(PlayState* play, ColliderElementTouch* touch) {
static ColliderElementTouch init = { 0x00000000, 0, 0 };
s32 Collider_InitElementDamageInfoAT(PlayState* play, ColliderElementDamageInfoAT* atDmgInfo) {
static ColliderElementDamageInfoAT init = { 0x00000000, 0, 0 };
*touch = init;
*atDmgInfo = init;
return true;
}
s32 Collider_DestroyElementTouch(PlayState* play, ColliderElementTouch* touch) {
s32 Collider_DestroyElementDamageInfoAT(PlayState* play, ColliderElementDamageInfoAT* atDmgInfo) {
return true;
}
s32 Collider_SetElementTouch(PlayState* play, ColliderElementTouch* dest, ColliderElementTouch* src) {
s32 Collider_SetElementDamageInfoAT(PlayState* play, ColliderElementDamageInfoAT* dest,
ColliderElementDamageInfoAT* src) {
dest->dmgFlags = src->dmgFlags;
dest->effect = src->effect;
dest->damage = src->damage;
@ -160,51 +161,52 @@ s32 Collider_SetElementTouch(PlayState* play, ColliderElementTouch* dest, Collid
void Collider_ResetATElement_Unk(PlayState* play, ColliderElement* elem) {
}
s32 Collider_InitElementBump(PlayState* play, ColliderElementBump* bump) {
static ColliderElementBump init = { 0xFFCFFFFF, 0, 0, { 0, 0, 0 } };
s32 Collider_InitElementDamageInfoAC(PlayState* play, ColliderElementDamageInfoAC* acDmgInfo) {
static ColliderElementDamageInfoAC init = { 0xFFCFFFFF, 0, 0, { 0, 0, 0 } };
*bump = init;
*acDmgInfo = init;
return true;
}
s32 Collider_DestroyElementBump(PlayState* play, ColliderElementBump* bump) {
s32 Collider_DestroyElementDamageInfoAC(PlayState* play, ColliderElementDamageInfoAC* acDmgInfo) {
return true;
}
s32 Collider_SetElementBump(PlayState* play, ColliderElementBump* bump, ColliderElementBumpInit* init) {
bump->dmgFlags = init->dmgFlags;
bump->effect = init->effect;
bump->defense = init->defense;
s32 Collider_SetElementDamageInfoAC(PlayState* play, ColliderElementDamageInfoAC* acDmgInfo,
ColliderElementDamageInfoACInit* init) {
acDmgInfo->dmgFlags = init->dmgFlags;
acDmgInfo->effect = init->effect;
acDmgInfo->defense = init->defense;
return true;
}
s32 Collider_InitElement(PlayState* play, ColliderElement* elem) {
static ColliderElement init = {
{ 0, 0, 0 }, { 0xFFCFFFFF, 0, 0, { 0, 0, 0 } },
ELEMTYPE_UNK0, TOUCH_NONE,
BUMP_NONE, OCELEM_NONE,
ELEMTYPE_UNK0, ATELEM_NONE,
ACELEM_NONE, OCELEM_NONE,
NULL, NULL,
NULL, NULL,
};
*elem = init;
Collider_InitElementTouch(play, &elem->toucher);
Collider_InitElementBump(play, &elem->bumper);
Collider_InitElementDamageInfoAT(play, &elem->atDmgInfo);
Collider_InitElementDamageInfoAC(play, &elem->acDmgInfo);
return true;
}
s32 Collider_DestroyElement(PlayState* play, ColliderElement* elem) {
Collider_DestroyElementTouch(play, &elem->toucher);
Collider_DestroyElementBump(play, &elem->bumper);
Collider_DestroyElementDamageInfoAT(play, &elem->atDmgInfo);
Collider_DestroyElementDamageInfoAC(play, &elem->acDmgInfo);
return true;
}
s32 Collider_SetElement(PlayState* play, ColliderElement* elem, ColliderElementInit* elemInit) {
elem->elemType = elemInit->elemType;
Collider_SetElementTouch(play, &elem->toucher, &elemInit->toucher);
Collider_SetElementBump(play, &elem->bumper, &elemInit->bumper);
elem->toucherFlags = elemInit->toucherFlags;
elem->bumperFlags = elemInit->bumperFlags;
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 true;
}
@ -212,15 +214,15 @@ s32 Collider_SetElement(PlayState* play, ColliderElement* elem, ColliderElementI
void Collider_ResetATElement(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_ResetATElement_Unk(play, elem);
}
void Collider_ResetACElement(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;
}
@ -929,7 +931,7 @@ s32 Collider_QuadSetNearestAC(PlayState* play, ColliderQuad* quad, Vec3f* hitPos
f32 acDistSq;
Vec3f dcMid;
if (!(quad->elem.toucherFlags & TOUCH_NEAREST)) {
if (!(quad->elem.atElemFlags & ATELEM_NEAREST)) {
return true;
}
Math_Vec3s_ToVec3f(&dcMid, &quad->dim.dcMid);
@ -1366,21 +1368,15 @@ s32 CollisionCheck_SetOCLine(PlayState* play, CollisionCheckContext* colChkCtx,
return index;
}
/**
* Skips AT elements that are off.
*/
s32 CollisionCheck_SkipElementTouch(ColliderElement* elem) {
if (!(elem->toucherFlags & TOUCH_ON)) {
s32 CollisionCheck_IsElementNotAT(ColliderElement* elem) {
if (!(elem->atElemFlags & ATELEM_ON)) {
return true;
}
return false;
}
/**
* Skips AC elements that are off.
*/
s32 CollisionCheck_SkipElementBump(ColliderElement* elem) {
if (!(elem->bumperFlags & BUMP_ON)) {
s32 CollisionCheck_IsElementNotAC(ColliderElement* elem) {
if (!(elem->acElemFlags & ACELEM_ON)) {
return true;
}
return false;
@ -1390,7 +1386,7 @@ s32 CollisionCheck_SkipElementBump(ColliderElement* elem) {
* 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;
@ -1538,9 +1534,9 @@ void CollisionCheck_RedBloodUnused(PlayState* play, Collider* collider, Vec3f* v
* Plays sound effects and displays hitmarks for solid-type AC colliders (METAL, WOOD, HARD, and TREE)
*/
void CollisionCheck_HitSolid(PlayState* play, ColliderElement* elem, Collider* collider, Vec3f* hitPos) {
s32 flags = elem->toucherFlags & TOUCH_SFX_MASK;
s32 flags = elem->atElemFlags & ATELEM_SFX_MASK;
if (flags == TOUCH_SFX_NORMAL && collider->colType != COLTYPE_METAL) {
if (flags == ATELEM_SFX_NORMAL && collider->colType != COLTYPE_METAL) {
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_WHITE, hitPos);
if (collider->actor == NULL) {
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
@ -1549,14 +1545,14 @@ void CollisionCheck_HitSolid(PlayState* play, ColliderElement* elem, Collider* c
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &collider->actor->projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
}
} else if (flags == TOUCH_SFX_NORMAL) { // collider->colType == COLTYPE_METAL
} else if (flags == ATELEM_SFX_NORMAL) { // collider->colType == COLTYPE_METAL
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_METAL, hitPos);
if (collider->actor == NULL) {
CollisionCheck_SpawnShieldParticlesMetal(play, hitPos);
} else {
CollisionCheck_SpawnShieldParticlesMetalSfx(play, hitPos, &collider->actor->projectedPos);
}
} else if (flags == TOUCH_SFX_HARD) {
} else if (flags == ATELEM_SFX_HARD) {
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_WHITE, hitPos);
if (collider->actor == NULL) {
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
@ -1565,7 +1561,7 @@ void CollisionCheck_HitSolid(PlayState* play, ColliderElement* elem, Collider* c
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_BOUND, &collider->actor->projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
}
} else if (flags == TOUCH_SFX_WOOD) {
} else if (flags == ATELEM_SFX_WOOD) {
EffectSsHitMark_SpawnFixedScale(play, EFFECT_HITMARK_DUST, hitPos);
if (collider->actor == NULL) {
Audio_PlaySfxGeneral(NA_SE_IT_REFLECTION_WOOD, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
@ -1655,10 +1651,10 @@ static HitInfo sHitInfo[] = {
*/
void CollisionCheck_HitEffects(PlayState* play, Collider* atCol, ColliderElement* atElem, Collider* acCol,
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 (acCol->actor != NULL) {
@ -1677,7 +1673,7 @@ void CollisionCheck_HitEffects(PlayState* play, Collider* atCol, ColliderElement
}
} else if (sHitInfo[acCol->colType].effect != HIT_NONE) {
EffectSsHitMark_SpawnFixedScale(play, sHitInfo[acCol->colType].effect, hitPos);
if (!(acElem->bumperFlags & BUMP_NO_SWORD_SFX)) {
if (!(acElem->acElemFlags & ACELEM_NO_SWORD_SFX)) {
CollisionCheck_SwordHitAudio(atCol, acElem);
}
}
@ -1709,33 +1705,33 @@ s32 CollisionCheck_SetATvsAC(PlayState* play, Collider* atCol, ColliderElement*
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->atHitElem = acElem;
atElem->toucherFlags |= TOUCH_HIT;
atElem->atElemFlags |= ATELEM_HIT;
if (atCol->actor != NULL) {
atCol->actor->colChkInfo.atHitEffect = acElem->bumper.effect;
atCol->actor->colChkInfo.atHitEffect = acElem->acDmgInfo.effect;
}
}
acCol->acFlags |= AC_HIT;
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;
if (!(atElem->toucherFlags & TOUCH_AT_HITMARK) && acCol->colType != COLTYPE_METAL &&
acElem->acDmgInfo.hitPos.x = hitPos->x;
acElem->acDmgInfo.hitPos.y = hitPos->y;
acElem->acDmgInfo.hitPos.z = hitPos->z;
if (!(atElem->atElemFlags & ATELEM_AT_HITMARK) && acCol->colType != COLTYPE_METAL &&
acCol->colType != COLTYPE_WOOD && acCol->colType != COLTYPE_HARD) {
acElem->bumperFlags |= BUMP_DRAW_HITMARK;
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 true;
}
@ -1751,12 +1747,12 @@ void CollisionCheck_ATJntSphVsACJntSph(PlayState* play, CollisionCheckContext* c
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_SkipElementTouch(&atJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base) == true) {
continue;
}
for (acJntSphElem = acJntSph->elements; acJntSphElem < acJntSph->elements + acJntSph->count;
acJntSphElem++) {
if (CollisionCheck_SkipElementBump(&acJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acJntSphElem->base) == true) {
@ -1803,11 +1799,11 @@ void CollisionCheck_ATJntSphVsACCyl(PlayState* play, CollisionCheckContext* colC
f32 centerDist;
if (atJntSph->count > 0 && atJntSph->elements != NULL && acCyl->dim.radius > 0 && acCyl->dim.height > 0) {
if (CollisionCheck_SkipElementBump(&acCyl->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acCyl->elem) == true) {
return;
}
for (atJntSphElem = atJntSph->elements; atJntSphElem < atJntSph->elements + atJntSph->count; atJntSphElem++) {
if (CollisionCheck_SkipElementTouch(&atJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acCyl->elem) == true) {
@ -1855,11 +1851,11 @@ void CollisionCheck_ATCylVsACJntSph(PlayState* play, CollisionCheckContext* colC
ColliderJntSphElement* acJntSphElem;
if (acJntSph->count > 0 && acJntSph->elements != NULL && atCyl->dim.radius > 0 && atCyl->dim.height > 0) {
if (CollisionCheck_SkipElementTouch(&atCyl->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atCyl->elem) == true) {
return;
}
for (acJntSphElem = acJntSph->elements; acJntSphElem < acJntSph->elements + acJntSph->count; acJntSphElem++) {
if (CollisionCheck_SkipElementBump(&acJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acJntSphElem->base) == true) {
@ -1910,11 +1906,11 @@ void CollisionCheck_ATJntSphVsACTris(PlayState* play, CollisionCheckContext* col
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_SkipElementTouch(&atJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base) == true) {
continue;
}
for (acTrisElem = acTris->elements; acTrisElem < acTris->elements + acTris->count; acTrisElem++) {
if (CollisionCheck_SkipElementBump(&acTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acTrisElem->base) == true) {
@ -1952,11 +1948,11 @@ void CollisionCheck_ATTrisVsACJntSph(PlayState* play, CollisionCheckContext* col
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_SkipElementBump(&acJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base) == true) {
continue;
}
for (atTrisElem = atTris->elements; atTrisElem < atTris->elements + atTris->count; atTrisElem++) {
if (CollisionCheck_SkipElementTouch(&atTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acJntSphElem->base) == true) {
@ -1994,13 +1990,13 @@ void CollisionCheck_ATJntSphVsACQuad(PlayState* play, CollisionCheckContext* col
ColliderJntSphElement* atJntSphElem;
if (atJntSph->count > 0 && atJntSph->elements != NULL) {
if (CollisionCheck_SkipElementBump(&acQuad->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acQuad->elem) == true) {
return;
}
Math3D_TriNorm(&tri1, &acQuad->dim.quad[2], &acQuad->dim.quad[3], &acQuad->dim.quad[1]);
Math3D_TriNorm(&tri2, &acQuad->dim.quad[1], &acQuad->dim.quad[0], &acQuad->dim.quad[2]);
for (atJntSphElem = atJntSph->elements; atJntSphElem < atJntSph->elements + atJntSph->count; atJntSphElem++) {
if (CollisionCheck_SkipElementTouch(&atJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atJntSphElem->base, &acQuad->elem) == true) {
@ -2041,13 +2037,13 @@ void CollisionCheck_ATQuadVsACJntSph(PlayState* play, CollisionCheckContext* col
ColliderJntSphElement* acJntSphElem;
if (acJntSph->count > 0 && acJntSph->elements != NULL) {
if (CollisionCheck_SkipElementTouch(&atQuad->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atQuad->elem) == true) {
return;
}
Math3D_TriNorm(&tri1, &atQuad->dim.quad[2], &atQuad->dim.quad[3], &atQuad->dim.quad[1]);
Math3D_TriNorm(&tri2, &atQuad->dim.quad[2], &atQuad->dim.quad[1], &atQuad->dim.quad[0]);
for (acJntSphElem = acJntSph->elements; acJntSphElem < acJntSph->elements + acJntSph->count; acJntSphElem++) {
if (CollisionCheck_SkipElementBump(&acJntSphElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acJntSphElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acJntSphElem->base) == true) {
@ -2091,10 +2087,10 @@ void CollisionCheck_ATCylVsACCyl(PlayState* play, CollisionCheckContext* colChkC
Vec3f hitPos;
if (atCyl->dim.radius > 0 && atCyl->dim.height > 0 && acCyl->dim.radius > 0 && acCyl->dim.height > 0) {
if (CollisionCheck_SkipElementBump(&acCyl->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acCyl->elem) == true) {
return;
}
if (CollisionCheck_SkipElementTouch(&atCyl->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atCyl->elem) == true) {
return;
}
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acCyl->elem) == true) {
@ -2128,11 +2124,11 @@ void CollisionCheck_ATCylVsACTris(PlayState* play, CollisionCheckContext* colChk
Vec3f hitPos;
if (atCyl->dim.radius > 0 && atCyl->dim.height > 0 && acTris->count > 0 && acTris->elements != NULL) {
if (CollisionCheck_SkipElementTouch(&atCyl->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atCyl->elem) == true) {
return;
}
for (acTrisElem = acTris->elements; acTrisElem < acTris->elements + acTris->count; acTrisElem++) {
if (CollisionCheck_SkipElementBump(&acTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acTrisElem->base) == true) {
@ -2162,11 +2158,11 @@ void CollisionCheck_ATTrisVsACCyl(PlayState* play, CollisionCheckContext* colChk
ColliderCylinder* acCyl = (ColliderCylinder*)acCol;
if (acCyl->dim.radius > 0 && acCyl->dim.height > 0 && atTris->count > 0 && atTris->elements != NULL) {
if (CollisionCheck_SkipElementBump(&acCyl->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acCyl->elem) == true) {
return;
}
for (atTrisElem = atTris->elements; atTrisElem < atTris->elements + atTris->count; atTrisElem++) {
if (CollisionCheck_SkipElementTouch(&atTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acCyl->elem) == true) {
@ -2197,8 +2193,8 @@ void CollisionCheck_ATCylVsACQuad(PlayState* play, CollisionCheckContext* colChk
ColliderQuad* acQuad = (ColliderQuad*)acCol;
if (atCyl->dim.height > 0 && atCyl->dim.radius > 0) {
if (CollisionCheck_SkipElementTouch(&atCyl->elem) == true ||
CollisionCheck_SkipElementBump(&acQuad->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atCyl->elem) == true ||
CollisionCheck_IsElementNotAC(&acQuad->elem) == true) {
return;
}
if (CollisionCheck_NoSharedFlags(&atCyl->elem, &acQuad->elem) == true) {
@ -2253,8 +2249,8 @@ void CollisionCheck_ATQuadVsACCyl(PlayState* play, CollisionCheckContext* colChk
ColliderCylinder* acCyl = (ColliderCylinder*)acCol;
if (acCyl->dim.height > 0 && acCyl->dim.radius > 0) {
if (CollisionCheck_SkipElementBump(&acCyl->elem) == true ||
CollisionCheck_SkipElementTouch(&atQuad->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acCyl->elem) == true ||
CollisionCheck_IsElementNotAT(&atQuad->elem) == true) {
return;
}
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acCyl->elem) == true) {
@ -2319,11 +2315,11 @@ void CollisionCheck_ATTrisVsACTris(PlayState* play, CollisionCheckContext* colCh
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_SkipElementBump(&acTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acTrisElem->base) == true) {
continue;
}
for (atTrisElem = atTris->elements; atTrisElem < atTris->elements + atTris->count; atTrisElem++) {
if (CollisionCheck_SkipElementTouch(&atTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acTrisElem->base) == true) {
@ -2369,13 +2365,13 @@ void CollisionCheck_ATTrisVsACQuad(PlayState* play, CollisionCheckContext* colCh
ColliderQuad* acQuad = (ColliderQuad*)acCol;
if (atTris->count > 0 && atTris->elements != NULL) {
if (CollisionCheck_SkipElementBump(&acQuad->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acQuad->elem) == true) {
return;
}
Math3D_TriNorm(&tri1, &acQuad->dim.quad[2], &acQuad->dim.quad[3], &acQuad->dim.quad[1]);
Math3D_TriNorm(&tri2, &acQuad->dim.quad[1], &acQuad->dim.quad[0], &acQuad->dim.quad[2]);
for (atTrisElem = atTris->elements; atTrisElem < atTris->elements + atTris->count; atTrisElem++) {
if (CollisionCheck_SkipElementTouch(&atTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAT(&atTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atTrisElem->base, &acQuad->elem) == true) {
@ -2416,13 +2412,13 @@ void CollisionCheck_ATQuadVsACTris(PlayState* play, CollisionCheckContext* colCh
ColliderTrisElement* acTrisElem;
if (acTris->count > 0 && acTris->elements != NULL) {
if (CollisionCheck_SkipElementTouch(&atQuad->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atQuad->elem) == true) {
return;
}
Math3D_TriNorm(&tri1, &atQuad->dim.quad[2], &atQuad->dim.quad[3], &atQuad->dim.quad[1]);
Math3D_TriNorm(&tri2, &atQuad->dim.quad[1], &atQuad->dim.quad[0], &atQuad->dim.quad[2]);
for (acTrisElem = acTris->elements; acTrisElem < acTris->elements + acTris->count; acTrisElem++) {
if (CollisionCheck_SkipElementBump(&acTrisElem->base) == true) {
if (CollisionCheck_IsElementNotAC(&acTrisElem->base) == true) {
continue;
}
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acTrisElem->base) == true) {
@ -2468,10 +2464,10 @@ void CollisionCheck_ATQuadVsACQuad(PlayState* play, CollisionCheckContext* colCh
s32 i;
s32 j;
if (CollisionCheck_SkipElementTouch(&atQuad->elem) == true) {
if (CollisionCheck_IsElementNotAT(&atQuad->elem) == true) {
return;
}
if (CollisionCheck_SkipElementBump(&acQuad->elem) == true) {
if (CollisionCheck_IsElementNotAC(&acQuad->elem) == true) {
return;
}
if (CollisionCheck_NoSharedFlags(&atQuad->elem, &acQuad->elem) == true) {
@ -2522,14 +2518,14 @@ void CollisionCheck_SetJntSphHitFX(PlayState* play, CollisionCheckContext* colCh
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;
}
}
@ -2538,13 +2534,13 @@ void CollisionCheck_SetJntSphHitFX(PlayState* play, CollisionCheckContext* colCh
void CollisionCheck_SetCylHitFX(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;
}
}
@ -2553,14 +2549,14 @@ void CollisionCheck_SetTrisHitFX(PlayState* play, CollisionCheckContext* colChkC
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;
}
}
@ -2570,11 +2566,11 @@ void CollisionCheck_SetQuadHitFX(PlayState* play, CollisionCheckContext* colChkC
ColliderQuad* quad = (ColliderQuad*)col;
Vec3f hitPos;
if ((quad->elem.bumperFlags & BUMP_DRAW_HITMARK) && (quad->elem.acHitElem != NULL) &&
!(quad->elem.acHitElem->toucherFlags & TOUCH_DREW_HITMARK)) {
Math_Vec3s_ToVec3f(&hitPos, &quad->elem.bumper.hitPos);
if ((quad->elem.acElemFlags & ACELEM_DRAW_HITMARK) && (quad->elem.acHitElem != NULL) &&
!(quad->elem.acHitElem->atElemFlags & ATELEM_DREW_HITMARK)) {
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;
}
}
@ -2661,7 +2657,7 @@ void CollisionCheck_AC(PlayState* play, CollisionCheckContext* colChkCtx, Collid
* 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 AT and AC elements that overlapped must share a dmgFlag.
*/
void CollisionCheck_AT(PlayState* play, CollisionCheckContext* colChkCtx) {
Collider** atColP;
@ -3052,20 +3048,20 @@ void CollisionCheck_ApplyDamage(PlayState* play, CollisionCheckContext* colChkCt
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;
}
ASSERT(elem->acHitElem != NULL, "pclobj_elem->ac_hit_elem != NULL", "../z_collision_check.c", 6493);
tbl = col->actor->colChkInfo.damageTable;
if (tbl == NULL) {
damage = (f32)elem->acHitElem->toucher.damage - elem->bumper.defense;
damage = (f32)elem->acHitElem->atDmgInfo.damage - elem->acDmgInfo.defense;
if (damage < 0) {
damage = 0;
}
} else {
s32 i;
u32 flags = elem->acHitElem->toucher.dmgFlags;
u32 flags = elem->acHitElem->atDmgInfo.dmgFlags;
for (i = 0; i < 32; i++, flags >>= 1) {
if (flags == 1) {

View file

@ -45,8 +45,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 25, 60, 0, { 0, 0, 0 } },

View file

@ -45,8 +45,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_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 } },

View file

@ -36,8 +36,8 @@ static ColliderQuadInit sQuadInit = {
ELEMTYPE_UNK2,
{ 0x00000080, 0x00, 0x01 },
{ 0xFFCFFFFF, 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 } } },
@ -154,7 +154,7 @@ void ArmsHook_Shoot(ArmsHook* this, PlayState* play) {
Actor* touchedActor = this->collider.base.at;
if ((touchedActor->update != NULL) && (touchedActor->flags & (ACTOR_FLAG_9 | ACTOR_FLAG_10))) {
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_10)) {
func_80865044(this);

View file

@ -68,8 +68,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_HARD,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_HARD,
ACELEM_NONE,
OCELEM_NONE,
},
{ 0x00BB, 0x0050, 0x0000, { 0 } },

View file

@ -60,8 +60,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xEFC1FFFE, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, 120, 0 }, 370 }, 100 },

View file

@ -26,8 +26,8 @@ static ColliderTrisElementInit sTrisElementsInit[3] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000048, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { -70.0f, 176.0f, 0.0f }, { -70.0f, -4.0f, 0.0f }, { 0.0f, -4.0f, 30.0f } } },
@ -37,8 +37,8 @@ static ColliderTrisElementInit sTrisElementsInit[3] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000048, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 70.0f, 176.0f, 0.0f }, { -70.0f, 176.0f, 0.0f }, { 0.0f, -4.0f, 30.0f } } },
@ -48,8 +48,8 @@ static ColliderTrisElementInit sTrisElementsInit[3] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000048, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 70.0f, -4.0f, 0.0f }, { 70.0f, 176.0f, 0.0f }, { 0.0f, -4.0f, 30.0f } } },

View file

@ -51,8 +51,8 @@ static ColliderQuadInit sQuadInit = {
ELEMTYPE_UNK0,
{ 0x00000048, 0x00, 0x00 },
{ 0x00000048, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
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 } } },

View file

@ -43,8 +43,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 245, 180, -400, { 0, 0, 0 } },

View file

@ -45,8 +45,8 @@ static ColliderCylinderInit sColCylinderInitMain = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 80, 30, 80, { 0, 0, 0 } },
@ -65,8 +65,8 @@ static ColliderCylinderInit sColCylinderInitLeftRight = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 50, 60, 280, { 0, 0, 0 } },

View file

@ -44,8 +44,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0x00020800, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 50, 20, 20, { 0, 0, 0 } },

View file

@ -44,8 +44,8 @@ static ColliderTrisElementInit sTrisElementsInit[4] = {
ELEMTYPE_UNK2,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ { { 365.0f, 45.0f, 27.0f }, { 130.0f, 45.0f, 150.0f }, { 290.0f, 45.0f, 145.0f } } },
@ -55,8 +55,8 @@ static ColliderTrisElementInit sTrisElementsInit[4] = {
ELEMTYPE_UNK2,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ { { 250.0f, 45.0f, 90.0f }, { 50.0f, 45.0f, 80.0f }, { 160.0f, 45.0f, 160.0f } } },
@ -66,8 +66,8 @@ static ColliderTrisElementInit sTrisElementsInit[4] = {
ELEMTYPE_UNK2,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ { { -305.0f, 33.0f, -7.0f }, { -220.0f, 33.0f, 40.0f }, { -130.0f, 33.0f, -5.0f } } },
@ -77,8 +77,8 @@ static ColliderTrisElementInit sTrisElementsInit[4] = {
ELEMTYPE_UNK2,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ { { -190.0f, 33.0f, 40.0f }, { -30.0f, 33.0f, 15.0f }, { -70.0f, 33.0f, -30.0f } } },
@ -111,8 +111,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 80, 130, 0, { 0, 0, 0 } },

View file

@ -54,8 +54,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 30, 90, 0, { 0, 0, 0 } },
@ -67,8 +67,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00020000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 1800.0f, 1200.0f, 0.0f }, { -1800.0f, 1200.0f, 0.0f }, { -1800.0f, 0.0f, 0.0f } } },
@ -78,8 +78,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00020000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 1800.0f, 1200.0f, 0.0f }, { -1800.0f, 0.0f, 0.0f }, { 1800.0f, 0.0f, 0.0f } } },
@ -166,8 +166,8 @@ void BgHakaTrap_Init(Actor* thisx, PlayState* play) {
this->colliderCylinder.dim.radius = 18;
this->colliderCylinder.dim.height = 115;
this->colliderCylinder.elem.toucherFlags &= ~TOUCH_SFX_NORMAL;
this->colliderCylinder.elem.toucherFlags |= TOUCH_SFX_WOOD;
this->colliderCylinder.elem.atElemFlags &= ~ATELEM_SFX_NORMAL;
this->colliderCylinder.elem.atElemFlags |= ATELEM_SFX_WOOD;
this->actionFunc = func_808801B8;
}

View file

@ -43,8 +43,8 @@ static ColliderCylinderInit sPotColliderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 25, 60, 30, { 0, 0, 0 } },
@ -63,8 +63,8 @@ static ColliderCylinderInit sFlamesColliderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 60, 45, 235, { 0, 0, 0 } },

View file

@ -45,8 +45,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 5, 60, 0, { 0, 0, 0 } },

View file

@ -42,8 +42,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 81, 144, 0, { 0, 0, 0 } },

View file

@ -35,8 +35,8 @@ static ColliderTrisElementInit sTrisElementInit[4] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { 305.0f, 0.0f, -300.0f }, { 305.0f, 600.0f, -300.0f }, { 305.0f, 600.0f, 300.0f } } },
@ -46,8 +46,8 @@ static ColliderTrisElementInit sTrisElementInit[4] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { 305.0f, 0.0f, -300.0f }, { 305.0f, 600.0f, 300.0f }, { 305.0f, 0.0f, 300.0f } } },
@ -57,8 +57,8 @@ static ColliderTrisElementInit sTrisElementInit[4] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { -305.0f, 0.0f, -300.0f }, { -305.0f, 600.0f, 300.0f }, { -305.0f, 600.0f, -300.0f } } },
@ -68,8 +68,8 @@ static ColliderTrisElementInit sTrisElementInit[4] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { -305.0f, 0.0f, -300.0f }, { -305.0f, 0.0f, 300.0f }, { -305.0f, 600.0f, 300.0f } } },
@ -129,8 +129,8 @@ void BgHidanDalm_Wait(BgHidanDalm* this, PlayState* play) {
(player->meleeWeaponAnimation == PLAYER_MWA_HAMMER_FORWARD ||
player->meleeWeaponAnimation == PLAYER_MWA_HAMMER_SIDE)) {
this->collider.base.acFlags &= ~AC_HIT;
if ((this->collider.elements[0].base.bumperFlags & BUMP_HIT) ||
(this->collider.elements[1].base.bumperFlags & BUMP_HIT)) {
if ((this->collider.elements[0].base.acElemFlags & ACELEM_HIT) ||
(this->collider.elements[1].base.acElemFlags & ACELEM_HIT)) {
this->dyna.actor.world.rot.y -= 0x4000;
} else {
this->dyna.actor.world.rot.y += 0x4000;

View file

@ -46,8 +46,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 30, 83, 0, { 0 } },

View file

@ -56,8 +56,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 30, 130, 0, { 0, 0, 0 } },

View file

@ -31,8 +31,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { -20.0f, 3.0f, -20.0f }, { -20.0f, 3.0f, 20.0f }, { 20.0f, 3.0f, 20.0f } } },
@ -42,8 +42,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 20.0f, 3.0f, 20.0f }, { 20.0f, 3.0f, -20.0f }, { -20.0f, 3.0f, -20.0f } } },

View file

@ -36,8 +36,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { -40.0f, 3.0f, -40.0f }, { -40.0f, 3.0f, 40.0f }, { 40.0f, 3.0f, 40.0f } } },
@ -47,8 +47,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x40000040, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ { { 40.0f, 3.0f, 40.0f }, { 40.0f, 3.0f, -40.0f }, { -40.0f, 3.0f, -40.0f } } },

View file

@ -46,8 +46,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 100 }, 100 },

View file

@ -54,8 +54,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 45, 77, -40, { 3310, 120, 0 } },

View file

@ -32,8 +32,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 0, 30, 40 }, 25 }, 100 },
@ -43,8 +43,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { -35, 32, 77 }, 32 }, 100 },
@ -54,8 +54,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { -80, 35, 130 }, 42 }, 100 },
@ -65,8 +65,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 0, 30, -40 }, 25 }, 100 },
@ -76,8 +76,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 35, 32, -77 }, 32 }, 100 },
@ -87,8 +87,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 80, 35, -130 }, 42 }, 100 },

View file

@ -35,8 +35,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 30, 40 }, 23 }, 100 },
@ -46,8 +46,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 32, 87 }, 30 }, 100 },
@ -57,8 +57,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 35, 150 }, 40 }, 100 },
@ -68,8 +68,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 30, 40 }, 23 }, 100 },
@ -79,8 +79,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 32, 87 }, 30 }, 100 },
@ -90,8 +90,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[6] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 35, 150 }, 40 }, 100 },
@ -140,7 +140,7 @@ void func_8088CEC0(BgHidanSekizou* this, s32 arg1, s16 arg2) {
element->dim.worldSphere.center.y = (s16)this->dyna.actor.home.pos.y + element->dim.modelSphere.center.y;
element->dim.worldSphere.center.z = this->dyna.actor.home.pos.z - (sp30 * element->dim.modelSphere.center.x) +
(sp2C * element->dim.modelSphere.center.z);
element->base.toucherFlags |= TOUCH_ON;
element->base.atElemFlags |= ATELEM_ON;
element->base.ocElemFlags |= OCELEM_ON;
}
}
@ -211,7 +211,7 @@ void func_8088D434(BgHidanSekizou* this, PlayState* play) {
}
}
for (i = 3 * phi_s4; i < ARRAY_COUNT(this->elements); i++) {
this->collider.elements[i].base.toucherFlags &= ~TOUCH_ON;
this->collider.elements[i].base.atElemFlags &= ~ATELEM_ON;
this->collider.elements[i].base.ocElemFlags &= ~OCELEM_ON;
}
}

View file

@ -39,8 +39,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 0, 40, 100 }, 22 }, 100 },
@ -50,8 +50,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x01, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 1, { { 0, 40, 145 }, 30 }, 100 },

View file

@ -53,8 +53,8 @@ static ColliderCylinderInit sCylinderInit1 = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, 0, 0, { 0, 0, 0 } },
@ -73,8 +73,8 @@ static ColliderCylinderInit sCylinderInit2 = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x4FC1FFF6, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, 0, 0, { 0, 0, 0 } },

View file

@ -33,8 +33,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0x4FC007CA, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_NONE,
},
{ 13, 120, 0, { 0, 0, 0 } },

View file

@ -50,8 +50,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 70, 80, -82, { 0, 0, 0 } },

View file

@ -32,8 +32,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { -300, 0, 0 }, 40 }, 100 },

View file

@ -34,8 +34,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 50 }, 100 },

View file

@ -41,8 +41,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 0, { { 0, 0, 0 }, 58 }, 100 },

View file

@ -40,8 +40,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 10 }, 100 },

View file

@ -51,8 +51,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 30, 150, 0, { 0, 0, 0 } },

View file

@ -38,8 +38,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00200000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, -600, -200 }, 60 }, 100 },

View file

@ -34,8 +34,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK4,
{ 0x00000000, 0x00, 0x00 },
{ 0x0001F820, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 1, { { 0, 0, 0 }, 14 }, 100 },

View file

@ -37,8 +37,8 @@ static ColliderTrisElementInit sTrisElementInitFloor[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { -40.0f, 0.0f, -40.0f }, { -40.0f, 0.0f, 40.0f }, { 40.0f, 0.0f, 40.0f } } },
@ -48,8 +48,8 @@ static ColliderTrisElementInit sTrisElementInitFloor[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { -40.0f, 0.0f, -40.0f }, { 40.0f, 0.0f, 40.0f }, { 40.0f, 0.0f, -40.0f } } },
@ -75,8 +75,8 @@ static ColliderTrisElementInit sTrisElementInitRutoWall[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 0.0f, 116.0f, 0.0f }, { 0.0f, 0.0f, 70.0f }, { 0.0f, 0.0f, -70.0f } } },
@ -102,8 +102,8 @@ static ColliderTrisElementInit sTrisElementInitWall[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 0.0f, 120.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 60.0f, 0.0f, 0.0f } } },
@ -113,8 +113,8 @@ static ColliderTrisElementInit sTrisElementInitWall[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 0.0f, 120.0f, 0.0f }, { 60.0f, 0.0f, 0.0f }, { 60.0f, 120.0f, 0.0f } } },

View file

@ -42,8 +42,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK4,
{ 0x00000000, 0x00, 0x00 },
{ 0x0001F820, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 25 }, 100 },

View file

@ -46,8 +46,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK4,
{ 0x00000000, 0x00, 0x00 },
{ 0x0001F820, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 25.0f, 33.0f, 0.0f }, { -25.0f, 33.0f, 0.0f }, { -25.0f, -33.0f, 0.0f } } },
@ -57,8 +57,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK4,
{ 0x00000000, 0x00, 0x00 },
{ 0x0001F820, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 25.0f, 33.0f, 0.0f }, { -25.0f, -33.0f, 0.0f }, { 25.0f, -33.0f, 0.0f } } },

View file

@ -37,8 +37,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 12, 60, 0, { 0, 0, 0 } },

View file

@ -62,8 +62,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000080, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_HOOKABLE,
ATELEM_NONE,
ACELEM_ON | ACELEM_HOOKABLE,
OCELEM_ON,
},
{ 1, { { 0, 0, -160 }, 18 }, 100 },

View file

@ -37,8 +37,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 50, 50 }, 70 }, 100 },
@ -48,8 +48,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { -100, 50, 50 }, 70 }, 100 },
@ -59,8 +59,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 100, 50, 50 }, 70 }, 100 },

View file

@ -41,8 +41,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 40, 80, 0, { 2259, 108, -1580 } },

View file

@ -39,8 +39,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x4FC1FFF6, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, 50, 0 }, 288 }, 100 },
@ -73,8 +73,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 190, 80, 0, { 10, 0, 50 } },

View file

@ -40,8 +40,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 0, { { 0, 2040, 0 }, 54 }, 100 },
@ -51,8 +51,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 1, { { 0, 1400, 0 }, 13 }, 100 },

View file

@ -47,8 +47,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 10, 70, 0, { 0 } },

View file

@ -38,8 +38,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000004, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_WOOD,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_WOOD,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 220.0f, -10.0f, 0.0f }, { 220.0f, 10.0f, 0.0f }, { -220.0f, 10.0f, 0.0f } } },
@ -49,8 +49,8 @@ static ColliderTrisElementInit sTrisElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000004, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_WOOD,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_WOOD,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 16.0f, 0.0f, 0.0f }, { 16.0f, 135.0f, 0.0f }, { -16.0f, 135.0f, 0.0f } } },

View file

@ -42,8 +42,8 @@ static ColliderTrisElementInit sTrisItemsInit[2] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0x00020800, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 75.0f, -8.0f, 75.0f }, { -75.0f, -8.0f, 75.0f }, { -75.0f, -8.0f, -75.0f } } },
@ -53,8 +53,8 @@ static ColliderTrisElementInit sTrisItemsInit[2] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0x00020800, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ { { 140.0f, 288.8f, 0.0f }, { -140.0f, 288.0f, 0.0f }, { -140.0f, 0.0f, 0.0f } } },

View file

@ -1239,12 +1239,12 @@ void BossDodongo_UpdateDamage(BossDodongo* this, PlayState* play) {
if (this->unk_1C0 == 0) {
if (this->actionFunc == BossDodongo_Inhale) {
for (i = 0; i < 19; i++) {
if (this->collider.elements[i].base.bumperFlags & BUMP_HIT) {
if (this->collider.elements[i].base.acElemFlags & ACELEM_HIT) {
acHitElem = this->collider.elements[i].base.acHitElem;
if ((acHitElem->toucher.dmgFlags & DMG_BOOMERANG) ||
(acHitElem->toucher.dmgFlags & DMG_SLINGSHOT)) {
this->collider.elements[i].base.bumperFlags &= ~BUMP_HIT;
if ((acHitElem->atDmgInfo.dmgFlags & DMG_BOOMERANG) ||
(acHitElem->atDmgInfo.dmgFlags & DMG_SLINGSHOT)) {
this->collider.elements[i].base.acElemFlags &= ~ACELEM_HIT;
this->unk_1C0 = 2;
BossDodongo_SetupWalk(this);
this->unk_1DA = 0x32;
@ -1254,11 +1254,11 @@ void BossDodongo_UpdateDamage(BossDodongo* this, PlayState* play) {
}
}
if (this->collider.elements[0].base.bumperFlags & BUMP_HIT) {
this->collider.elements[0].base.bumperFlags &= ~BUMP_HIT;
if (this->collider.elements[0].base.acElemFlags & ACELEM_HIT) {
this->collider.elements[0].base.acElemFlags &= ~ACELEM_HIT;
acHitElem = this->collider.elements[0].base.acHitElem;
if ((this->actionFunc == BossDodongo_Vulnerable) || (this->actionFunc == BossDodongo_LayDown)) {
swordDamage = damage = CollisionCheck_GetSwordDamage(acHitElem->toucher.dmgFlags);
swordDamage = damage = CollisionCheck_GetSwordDamage(acHitElem->atDmgInfo.dmgFlags);
if (damage != 0) {
Actor_PlaySfx(&this->actor, NA_SE_EN_DODO_K_DAMAGE);

View file

@ -16,8 +16,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK3,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 7, { { 8500, 1200, 0 }, 40 }, 100 },
@ -27,8 +27,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK3,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 33, { { 2000, -2000, 0 }, 60 }, 100 },
@ -38,8 +38,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 1, { { 0, 0, 0 }, 60 }, 100 },
@ -49,8 +49,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 15, { { 0, 0, 0 }, 20 }, 100 },
@ -60,8 +60,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 16, { { 0, 0, 0 }, 30 }, 100 },
@ -71,8 +71,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 17, { { 0, 0, 0 }, 40 }, 100 },
@ -82,8 +82,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 22, { { 0, 0, 0 }, 30 }, 100 },
@ -93,8 +93,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 23, { { 0, 0, 0 }, 20 }, 100 },
@ -104,8 +104,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 24, { { 0, 0, 0 }, 30 }, 100 },
@ -115,8 +115,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 29, { { 0, 0, 0 }, 30 }, 100 },
@ -126,8 +126,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 30, { { 0, 0, 0 }, 30 }, 100 },
@ -137,8 +137,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 31, { { 0, 0, 0 }, 30 }, 100 },
@ -148,8 +148,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 32, { { 0, 0, 0 }, 50 }, 100 },
@ -159,8 +159,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 38, { { 0, 0, 0 }, 30 }, 100 },
@ -170,8 +170,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 39, { { 0, 0, 0 }, 30 }, 100 },
@ -181,8 +181,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 40, { { 0, 0, 0 }, 40 }, 100 },
@ -192,8 +192,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 45, { { 0, 0, 0 }, 30 }, 100 },
@ -203,8 +203,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 46, { { 0, 0, 0 }, 30 }, 100 },
@ -214,8 +214,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 47, { { 0, 0, 0 }, 40 }, 100 },

View file

@ -1287,11 +1287,11 @@ void BossFd_CollisionCheck(BossFd* this, PlayState* play) {
ColliderJntSphElement* headCollider = &this->collider.elements[0];
ColliderElement* acHitElem;
if (headCollider->base.bumperFlags & BUMP_HIT) {
headCollider->base.bumperFlags &= ~BUMP_HIT;
if (headCollider->base.acElemFlags & ACELEM_HIT) {
headCollider->base.acElemFlags &= ~ACELEM_HIT;
acHitElem = headCollider->base.acHitElem;
this->actor.colChkInfo.health -= 2;
if (acHitElem->toucher.dmgFlags & DMG_ARROW_ICE) {
if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) {
this->actor.colChkInfo.health -= 2;
}
if ((s8)this->actor.colChkInfo.health <= 2) {

View file

@ -6,8 +6,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK3,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, 0, 0 }, 20 }, 100 },
@ -17,8 +17,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 1, { { 0, 0, 0 }, 20 }, 100 },
@ -28,8 +28,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 2, { { 0, 0, 0 }, 20 }, 100 },
@ -39,8 +39,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 3, { { 0, 0, 0 }, 20 }, 100 },
@ -50,8 +50,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 4, { { 0, 0, 0 }, 20 }, 100 },
@ -61,8 +61,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 5, { { 0, 0, 0 }, 20 }, 100 },
@ -72,8 +72,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 6, { { 0, 0, 0 }, 20 }, 100 },
@ -83,8 +83,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 7, { { 0, 0, 0 }, 20 }, 100 },
@ -94,8 +94,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 8, { { 0, 0, 0 }, 20 }, 100 },
@ -105,8 +105,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 9, { { 0, 0, 0 }, 20 }, 100 },
@ -116,8 +116,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 10, { { 0, 0, 0 }, 20 }, 100 },
@ -127,8 +127,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 11, { { 0, 0, 0 }, 20 }, 100 },
@ -138,8 +138,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 12, { { 0, 0, 0 }, 20 }, 100 },
@ -149,8 +149,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 13, { { 0, 0, 0 }, 20 }, 100 },
@ -160,8 +160,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 14, { { 0, 0, 0 }, 18 }, 100 },
@ -171,8 +171,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 15, { { 0, 0, 0 }, 16 }, 100 },
@ -182,8 +182,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 16, { { 0, 0, 0 }, 14 }, 100 },
@ -193,8 +193,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 17, { { 0, 0, 0 }, 12 }, 100 },
@ -204,8 +204,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[19] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 18, { { 0, 0, 0 }, 10 }, 100 },

View file

@ -815,8 +815,8 @@ void BossFd2_CollisionCheck(BossFd2* this, PlayState* play) {
Player* player = GET_PLAYER(play);
for (i = 0; i < ARRAY_COUNT(this->elements); i++) {
if (this->collider.elements[i].base.toucherFlags & TOUCH_HIT) {
this->collider.elements[i].base.toucherFlags &= ~TOUCH_HIT;
if (this->collider.elements[i].base.atElemFlags & ATELEM_HIT) {
this->collider.elements[i].base.atElemFlags &= ~ATELEM_HIT;
Actor_PlaySfx(&player->actor, NA_SE_PL_BODY_HIT);
}
}
@ -829,12 +829,12 @@ void BossFd2_CollisionCheck(BossFd2* this, PlayState* play) {
this->collider.base.colType = COLTYPE_HIT3;
}
if (this->collider.elements[0].base.bumperFlags & BUMP_HIT) {
this->collider.elements[0].base.bumperFlags &= ~BUMP_HIT;
if (this->collider.elements[0].base.acElemFlags & ACELEM_HIT) {
this->collider.elements[0].base.acElemFlags &= ~ACELEM_HIT;
acHitElem = this->collider.elements[0].base.acHitElem;
if (!bossFd->faceExposed) {
if (acHitElem->toucher.dmgFlags & DMG_HAMMER) {
if (acHitElem->atDmgInfo.dmgFlags & DMG_HAMMER) {
bossFd->actor.colChkInfo.health -= 2;
if ((s8)bossFd->actor.colChkInfo.health <= 2) {
bossFd->actor.colChkInfo.health = 1;
@ -865,12 +865,12 @@ void BossFd2_CollisionCheck(BossFd2* this, PlayState* play) {
u8 canKill = false;
u8 damage;
if ((damage = CollisionCheck_GetSwordDamage(acHitElem->toucher.dmgFlags)) == 0) {
damage = (acHitElem->toucher.dmgFlags & DMG_ARROW_ICE) ? 4 : 2;
if ((damage = CollisionCheck_GetSwordDamage(acHitElem->atDmgInfo.dmgFlags)) == 0) {
damage = (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) ? 4 : 2;
} else {
canKill = true;
}
if (acHitElem->toucher.dmgFlags & DMG_HOOKSHOT) {
if (acHitElem->atDmgInfo.dmgFlags & DMG_HOOKSHOT) {
damage = 0;
}
if (((s8)bossFd->actor.colChkInfo.health > 2) || canKill) {

View file

@ -6,8 +6,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
ELEMTYPE_UNK3,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_HOOKABLE,
ATELEM_NONE,
ACELEM_ON | ACELEM_HOOKABLE,
OCELEM_ON,
},
{ 35, { { 6000, 0, 0 }, 21 }, 100 },
@ -17,8 +17,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 18, { { 4000, 0, 0 }, 13 }, 100 },
@ -28,8 +28,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 19, { { 3000, 0, 0 }, 13 }, 100 },
@ -39,8 +39,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 20, { { 4000, 0, 0 }, 15 }, 100 },
@ -50,8 +50,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 24, { { 4000, 0, 0 }, 13 }, 100 },
@ -61,8 +61,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 25, { { 3000, 0, 0 }, 13 }, 100 },
@ -72,8 +72,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 26, { { 3500, 1500, 0 }, 15 }, 100 },
@ -83,8 +83,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 17, { { 0, 0, 0 }, 26 }, 100 },
@ -94,8 +94,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[9] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 30, { { 0, 0, 0 }, 17 }, 100 },

View file

@ -70,8 +70,8 @@ static ColliderCylinderInit sDorfCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON | BUMP_HOOKABLE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON | ACELEM_HOOKABLE,
OCELEM_ON,
},
{ 20, 80, -50, { 0, 0, 0 } },
@ -90,8 +90,8 @@ static ColliderCylinderInit sLightBallCylinderInit = {
ELEMTYPE_UNK6,
{ 0x00100700, 0x00, 0x08 },
{ 0x0D900740, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 20, 30, -15, { 0, 0, 0 } },
@ -2691,14 +2691,14 @@ void BossGanon_UpdateDamage(BossGanon* this, PlayState* play) {
acHitElem = this->collider.elem.acHitElem;
if ((this->actionFunc == BossGanon_HitByLightBall) || (this->actionFunc == BossGanon_ChargeBigMagic)) {
if (acHitElem->toucher.dmgFlags & DMG_ARROW_LIGHT) {
if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) {
BossGanon_SetupVulnerable(this, play);
this->timers[2] = 0;
Actor_PlaySfx(&this->actor, NA_SE_EN_GANON_DAMAGE1);
this->unk_1A6 = 15;
}
} else if ((this->actionFunc == BossGanon_Vulnerable) && (this->unk_1C2 >= 3)) {
if (!(acHitElem->toucher.dmgFlags & DMG_HOOKSHOT)) {
if (!(acHitElem->atDmgInfo.dmgFlags & DMG_HOOKSHOT)) {
u8 hitWithSword = false;
u8 damage;
Vec3f sp50;
@ -2712,7 +2712,7 @@ void BossGanon_UpdateDamage(BossGanon* this, PlayState* play) {
0x1E);
}
damage = flags = CollisionCheck_GetSwordDamage(acHitElem->toucher.dmgFlags);
damage = flags = CollisionCheck_GetSwordDamage(acHitElem->atDmgInfo.dmgFlags);
if (flags == 0) {
damage = 2;
@ -2746,7 +2746,7 @@ void BossGanon_UpdateDamage(BossGanon* this, PlayState* play) {
sCape->tearTimer = 1;
}
}
} else if (acHitElem->toucher.dmgFlags & DMG_RANGED) {
} else if (acHitElem->atDmgInfo.dmgFlags & DMG_RANGED) {
Actor_PlaySfx(&this->actor, 0);
for (i = 0; i < ARRAY_COUNT(sCape->strands); i++) {
@ -3941,7 +3941,7 @@ void BossGanon_LightBall_Update(Actor* thisx, PlayState* play2) {
this->collider.base.acFlags &= ~AC_HIT;
if ((hitWithBottle == false) && (acHitElem->toucher.dmgFlags & DMG_SHIELD)) {
if ((hitWithBottle == false) && (acHitElem->atDmgInfo.dmgFlags & DMG_SHIELD)) {
spBA = 2;
Audio_PlaySfxGeneral(NA_SE_IT_SHIELD_REFLECT_MG, &player->actor.projectedPos, 4,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale,
@ -4427,7 +4427,7 @@ void func_808E2544(Actor* thisx, PlayState* play) {
this->collider.base.acFlags &= ~AC_HIT;
if (!(acHitElem->toucher.dmgFlags & DMG_SHIELD) || Player_HasMirrorShieldEquipped(play)) {
if (!(acHitElem->atDmgInfo.dmgFlags & DMG_SHIELD) || Player_HasMirrorShieldEquipped(play)) {
Rumble_Request(this->actor.xyzDistToPlayerSq, 180, 20, 100);
this->unk_1C2 = 0xC;
this->actor.speed = -30.0f;

View file

@ -1842,10 +1842,10 @@ void func_80902348(BossGanon2* this, PlayState* play) {
if (this->unk_316 == 0) {
for (i = 0; i < ARRAY_COUNT(this->unk_864); i++) {
if (this->unk_444.elements[i].base.bumperFlags & BUMP_HIT) {
this->unk_444.elements[i].base.bumperFlags &= ~BUMP_HIT;
} else if (this->unk_444.elements[i].base.toucherFlags & TOUCH_HIT) {
this->unk_444.elements[i].base.toucherFlags &= ~TOUCH_HIT;
if (this->unk_444.elements[i].base.acElemFlags & ACELEM_HIT) {
this->unk_444.elements[i].base.acElemFlags &= ~ACELEM_HIT;
} else if (this->unk_444.elements[i].base.atElemFlags & ATELEM_HIT) {
this->unk_444.elements[i].base.atElemFlags &= ~ATELEM_HIT;
if (this->unk_312 == 1) {
phi_v0_2 = 0x1800;
@ -1889,23 +1889,23 @@ void BossGanon2_CollisionCheck(BossGanon2* this, PlayState* play) {
PRINTF("this->no_hit_time %d\n", this->unk_316);
if (this->unk_316 != 0 || ((this->unk_334 == 0) && (this->actionFunc == func_80900890))) {
for (i = 0; i < ARRAY_COUNT(this->unk_464); i++) {
this->unk_424.elements[i].base.bumperFlags &= ~BUMP_HIT;
this->unk_424.elements[i].base.acElemFlags &= ~ACELEM_HIT;
}
}
PRINTF("this->look_on %d\n", this->unk_313);
if (this->unk_313) {
if (this->actionFunc != func_808FFFE0) {
if (this->unk_424.elements[0].base.bumperFlags & BUMP_HIT) {
this->unk_424.elements[0].base.bumperFlags &= ~BUMP_HIT;
if (this->unk_424.elements[0].base.acElemFlags & ACELEM_HIT) {
this->unk_424.elements[0].base.acElemFlags &= ~ACELEM_HIT;
acHitElem = this->unk_424.elements[0].base.acHitElem;
if ((acHitElem->toucher.dmgFlags & DMG_ARROW_LIGHT) && (this->actionFunc != func_80900890)) {
if ((acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) && (this->actionFunc != func_80900890)) {
func_809000A0(this, play);
Actor_PlaySfx(&this->actor, NA_SE_EN_FANTOM_HIT_THUNDER);
Actor_PlaySfx(&this->actor, NA_SE_EN_MGANON_DAMAGE);
Audio_StopSfxById(NA_SE_EN_MGANON_UNARI);
} else if ((this->actionFunc == func_80900890) &&
(acHitElem->toucher.dmgFlags & (DMG_JUMP_MASTER | DMG_SPIN_MASTER | DMG_SLASH_MASTER))) {
(acHitElem->atDmgInfo.dmgFlags & (DMG_JUMP_MASTER | DMG_SPIN_MASTER | DMG_SLASH_MASTER))) {
this->unk_316 = 60;
this->unk_342 = 5;
Actor_PlaySfx(&this->actor, NA_SE_EN_MGANON_DAMAGE);
@ -1928,8 +1928,8 @@ void BossGanon2_CollisionCheck(BossGanon2* this, PlayState* play) {
}
}
} else {
if (this->unk_424.elements[15].base.bumperFlags & BUMP_HIT) {
this->unk_424.elements[15].base.bumperFlags &= ~BUMP_HIT;
if (this->unk_424.elements[15].base.acElemFlags & ACELEM_HIT) {
this->unk_424.elements[15].base.acElemFlags &= ~ACELEM_HIT;
acHitElem = this->unk_424.elements[15].base.acHitElem;
this->unk_316 = 60;
this->unk_344 = 0x32;
@ -1937,8 +1937,8 @@ void BossGanon2_CollisionCheck(BossGanon2* this, PlayState* play) {
Actor_PlaySfx(&this->actor, NA_SE_EN_MGANON_DAMAGE);
Audio_StopSfxById(NA_SE_EN_MGANON_UNARI);
phi_v1_2 = 1;
if (acHitElem->toucher.dmgFlags & (DMG_JUMP_MASTER | DMG_SPIN_MASTER | DMG_SLASH_MASTER)) {
if (acHitElem->toucher.dmgFlags & DMG_JUMP_MASTER) {
if (acHitElem->atDmgInfo.dmgFlags & (DMG_JUMP_MASTER | DMG_SPIN_MASTER | DMG_SLASH_MASTER)) {
if (acHitElem->atDmgInfo.dmgFlags & DMG_JUMP_MASTER) {
phi_v1_2 = 4;
} else {
phi_v1_2 = 2;

View file

@ -29,8 +29,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, 0, 0 }, 30 }, 100 },
@ -40,8 +40,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 1, { { 0, 0, 0 }, 30 }, 100 },
@ -51,8 +51,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 2, { { 0, 0, 0 }, 30 }, 100 },
@ -62,8 +62,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 3, { { 0, 0, 0 }, 20 }, 100 },
@ -73,8 +73,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 4, { { 0, 0, 0 }, 20 }, 100 },
@ -84,8 +84,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 5, { { 0, 0, 0 }, 20 }, 100 },
@ -95,8 +95,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 6, { { 0, 0, 0 }, 20 }, 100 },
@ -106,8 +106,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 7, { { 0, 0, 0 }, 20 }, 100 },
@ -117,8 +117,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 8, { { 0, 0, 0 }, 20 }, 100 },
@ -128,8 +128,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 9, { { 0, 0, 0 }, 20 }, 100 },
@ -139,8 +139,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 10, { { 0, 0, 0 }, 20 }, 100 },
@ -150,8 +150,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 11, { { 0, 0, 0 }, 20 }, 100 },
@ -161,8 +161,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 12, { { 0, 0, 0 }, 20 }, 100 },
@ -172,8 +172,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 13, { { 0, 0, 0 }, 20 }, 100 },
@ -183,8 +183,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 14, { { 0, 0, 0 }, 20 }, 100 },
@ -194,8 +194,8 @@ static ColliderJntSphElementInit sJntSphItemsInit1[] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 15, { { 0, 0, 0 }, 30 }, 100 },
@ -221,8 +221,8 @@ static ColliderJntSphElementInit sJntSphItemsInit2[] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x40 },
{ 0xFFDFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 15, { { 0, 0, 0 }, 45 }, 100 },
@ -232,8 +232,8 @@ static ColliderJntSphElementInit sJntSphItemsInit2[] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x40 },
{ 0xFFDFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 16, { { 0, 0, 0 }, 45 }, 100 },

View file

@ -94,8 +94,8 @@ static ColliderCylinderInit sCylinderInitBody = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON | BUMP_HOOKABLE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON | ACELEM_HOOKABLE,
OCELEM_ON,
},
{ 30, 90, -50, { 0, 0, 0 } },
@ -114,8 +114,8 @@ static ColliderCylinderInit sCylinderInitSpear = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 20, 30, -20, { 0, 0, 0 } },
@ -1239,14 +1239,14 @@ void BossGanondrof_CollisionCheck(BossGanondrof* this, PlayState* play) {
}
if (this->flyMode != GND_FLY_PAINTING) {
if (acHit && (this->actionFunc != BossGanondrof_Stunned) &&
(acHitElem->toucher.dmgFlags & DMG_RANGED)) {
(acHitElem->atDmgInfo.dmgFlags & DMG_RANGED)) {
Actor_PlaySfx(&this->actor, NA_SE_NONE);
PRINTF("hit != 0 \n");
} else if (this->actionFunc != BossGanondrof_Charge) {
if (this->returnCount == 0) {
u8 dmg;
u8 canKill = false;
s32 dmgFlags = acHitElem->toucher.dmgFlags;
s32 dmgFlags = acHitElem->atDmgInfo.dmgFlags;
if (dmgFlags & DMG_HOOKSHOT) {
return;
@ -1273,7 +1273,7 @@ void BossGanondrof_CollisionCheck(BossGanondrof* this, PlayState* play) {
} else {
Actor_PlaySfx(&this->actor, NA_SE_NONE);
}
} else if (acHit && (acHitElem->toucher.dmgFlags & DMG_RANGED)) {
} else if (acHit && (acHitElem->atDmgInfo.dmgFlags & DMG_RANGED)) {
this->work[GND_INVINC_TIMER] = 10;
this->actor.colChkInfo.health -= 2;
horse->hitTimer = 20;

View file

@ -67,8 +67,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK3,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_EYE, { { 0, 0, 1200 }, 20 }, 100 },
@ -78,8 +78,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_TAIL4, { { 0, 0, 0 }, 20 }, 100 },
@ -89,8 +89,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_TAIL3, { { 0, 0, 0 }, 15 }, 100 },
@ -100,8 +100,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_TAIL2, { { 0, 0, 0 }, 12 }, 100 },
@ -111,8 +111,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_TAIL1, { { 0, 0, 0 }, 25 }, 100 },
@ -122,8 +122,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_R_FEET, { { 0, 0, 0 }, 30 }, 100 },
@ -133,8 +133,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_R_SHIN, { { 0, 0, 0 }, 15 }, 100 },
@ -144,8 +144,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_R_THIGH_SHELL, { { 0, 0, 0 }, 15 }, 100 },
@ -155,8 +155,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_L_ANTENNA_CLAW, { { 0, 0, 0 }, 20 }, 100 },
@ -166,8 +166,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_R_ANTENNA_CLAW, { { 0, 0, 0 }, 20 }, 100 },
@ -177,8 +177,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_L_FEET, { { 0, 0, 0 }, 30 }, 100 },
@ -188,8 +188,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_L_SHIN, { { 0, 0, 0 }, 15 }, 100 },
@ -199,8 +199,8 @@ static ColliderJntSphElementInit sColliderJntSphElementInit[13] = {
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ BOSSGOMA_LIMB_L_THIGH_SHELL, { { 0, 0, 0 }, 15 }, 100 },
@ -1302,7 +1302,7 @@ void BossGoma_FloorAttack(BossGoma* this, PlayState* play) {
switch (this->actionState) {
case 0:
for (i = 0; i < this->collider.count; i++) {
if (this->collider.elements[i].base.toucherFlags & TOUCH_HIT) {
if (this->collider.elements[i].base.atElemFlags & ATELEM_HIT) {
this->framesUntilNextAction = 10;
break;
}
@ -1812,15 +1812,15 @@ void BossGoma_UpdateHit(BossGoma* this, PlayState* play) {
s32 damage;
if (this->eyeClosedTimer == 0 && this->actionFunc != BossGoma_CeilingSpawnGohmas &&
(this->collider.elements[0].base.bumperFlags & BUMP_HIT)) {
this->collider.elements[0].base.bumperFlags &= ~BUMP_HIT;
(this->collider.elements[0].base.acElemFlags & ACELEM_HIT)) {
this->collider.elements[0].base.acElemFlags &= ~ACELEM_HIT;
if (this->actionFunc == BossGoma_CeilingMoveToCenter || this->actionFunc == BossGoma_CeilingIdle ||
this->actionFunc == BossGoma_CeilingPrepareSpawnGohmas) {
BossGoma_SetupFallStruckDown(this);
Actor_PlaySfx(&this->actor, NA_SE_EN_GOMA_DAM2);
} else if (this->actionFunc == BossGoma_FloorStunned &&
(damage = CollisionCheck_GetSwordDamage(acHitElem->toucher.dmgFlags)) != 0) {
(damage = CollisionCheck_GetSwordDamage(acHitElem->atDmgInfo.dmgFlags)) != 0) {
this->actor.colChkInfo.health -= damage;
if ((s8)this->actor.colChkInfo.health > 0) {
@ -1834,14 +1834,14 @@ void BossGoma_UpdateHit(BossGoma* this, PlayState* play) {
this->invincibilityFrames = 10;
} else if (this->actionFunc != BossGoma_FloorStunned && this->patienceTimer != 0 &&
(acHitElem->toucher.dmgFlags & (DMG_SLINGSHOT | DMG_DEKU_NUT))) {
(acHitElem->atDmgInfo.dmgFlags & (DMG_SLINGSHOT | DMG_DEKU_NUT))) {
Actor_PlaySfx(&this->actor, NA_SE_EN_GOMA_DAM2);
Audio_StopSfxById(NA_SE_EN_GOMA_CRY1);
this->invincibilityFrames = 10;
BossGoma_SetupFloorStunned(this);
this->sfxFaintTimer = 100;
if (acHitElem->toucher.dmgFlags & DMG_DEKU_NUT) {
if (acHitElem->atDmgInfo.dmgFlags & DMG_DEKU_NUT) {
this->framesUntilNextAction = 40;
} else {
this->framesUntilNextAction = 90;

View file

@ -1146,23 +1146,23 @@ void BossMo_TentCollisionCheck(BossMo* this, PlayState* play) {
ColliderElement* acHitElem;
for (i1 = 0; i1 < ARRAY_COUNT(this->tentElements); i1++) {
if (this->tentCollider.elements[i1].base.bumperFlags & BUMP_HIT) {
if (this->tentCollider.elements[i1].base.acElemFlags & ACELEM_HIT) {
for (i2 = 0; i2 < 19; i2++) {
this->tentCollider.elements[i2].base.bumperFlags &= ~BUMP_HIT;
this->tentCollider.elements[i2].base.toucherFlags &= ~TOUCH_HIT;
this->tentCollider.elements[i2].base.acElemFlags &= ~ACELEM_HIT;
this->tentCollider.elements[i2].base.atElemFlags &= ~ATELEM_HIT;
}
acHitElem = this->tentCollider.elements[i1].base.acHitElem;
this->work[MO_TENT_INVINC_TIMER] = 5;
if (acHitElem->toucher.dmgFlags & DMG_MAGIC_FIRE) {
if (acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_FIRE) {
Sfx_PlaySfxAtPos(&this->tentTipPos, NA_SE_EN_MOFER_CUT);
this->cutIndex = 15;
this->meltIndex = this->cutIndex + 1;
this->work[MO_TENT_ACTION_STATE] = MO_TENT_CUT;
this->timers[0] = 40;
this->cutScale = 1.0f;
} else if (acHitElem->toucher.dmgFlags & (DMG_JUMP_MASTER | DMG_JUMP_GIANT | DMG_SPIN_MASTER |
DMG_SPIN_GIANT | DMG_SLASH_GIANT | DMG_SLASH_MASTER)) {
} else if (acHitElem->atDmgInfo.dmgFlags & (DMG_JUMP_MASTER | DMG_JUMP_GIANT | DMG_SPIN_MASTER |
DMG_SPIN_GIANT | DMG_SLASH_GIANT | DMG_SLASH_MASTER)) {
this->playerHitTimer = 5;
}
this->tentRippleSize = 0.2f;
@ -1180,8 +1180,8 @@ void BossMo_TentCollisionCheck(BossMo* this, PlayState* play) {
Rand_ZeroFloat(0.08f) + 0.13f);
}
break;
} else if (this->tentCollider.elements[i1].base.toucherFlags & TOUCH_HIT) {
this->tentCollider.elements[i1].base.toucherFlags &= ~TOUCH_HIT;
} else if (this->tentCollider.elements[i1].base.atElemFlags & ATELEM_HIT) {
this->tentCollider.elements[i1].base.atElemFlags &= ~ATELEM_HIT;
this->playerHitTimer = 5;
break;
}
@ -1755,13 +1755,13 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) {
// "hit!!"
PRINTF("Core_Damage_check 当り!!\n");
this->coreCollider.base.acFlags &= ~AC_HIT;
if ((acHitElem->toucher.dmgFlags & DMG_MAGIC_FIRE) && (this->work[MO_TENT_ACTION_STATE] == MO_CORE_ATTACK)) {
if ((acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_FIRE) && (this->work[MO_TENT_ACTION_STATE] == MO_CORE_ATTACK)) {
this->work[MO_TENT_ACTION_STATE] = MO_CORE_RETREAT;
}
// "hit 2 !!"
PRINTF("Core_Damage_check 当り 2 \n");
if ((this->work[MO_TENT_ACTION_STATE] != MO_CORE_UNDERWATER) && (this->work[MO_TENT_INVINC_TIMER] == 0)) {
u8 damage = CollisionCheck_GetSwordDamage(acHitElem->toucher.dmgFlags);
u8 damage = CollisionCheck_GetSwordDamage(acHitElem->atDmgInfo.dmgFlags);
if ((damage != 0) && (this->work[MO_TENT_ACTION_STATE] < MO_CORE_ATTACK)) {
// "sword hit !!"
@ -1799,7 +1799,8 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) {
}
}
this->work[MO_TENT_INVINC_TIMER] = 10;
} else if (!(acHitElem->toucher.dmgFlags & DMG_SHIELD) && (acHitElem->toucher.dmgFlags & DMG_HOOKSHOT)) {
} else if (!(acHitElem->atDmgInfo.dmgFlags & DMG_SHIELD) &&
(acHitElem->atDmgInfo.dmgFlags & DMG_HOOKSHOT)) {
if (this->work[MO_TENT_ACTION_STATE] >= MO_CORE_ATTACK) {
Sfx_PlaySfxAtPos(&sMorphaTent1->tentTipPos, NA_SE_EN_MOFER_CUT);
sMorphaTent1->cutIndex = this->work[MO_CORE_POS_IN_TENT];

View file

@ -7,8 +7,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, 0, 0 }, 0 }, 100 },
@ -18,8 +18,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 1, { { 0, 0, 0 }, 0 }, 100 },
@ -29,8 +29,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 2, { { 0, 0, 0 }, 30 }, 100 },
@ -40,8 +40,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 3, { { 0, 0, 0 }, 24 }, 100 },
@ -51,8 +51,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 4, { { 0, 0, 0 }, 22 }, 100 },
@ -62,8 +62,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 5, { { 0, 0, 0 }, 20 }, 100 },
@ -73,8 +73,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 6, { { 0, 0, 0 }, 18 }, 100 },
@ -84,8 +84,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 7, { { 0, 0, 0 }, 16 }, 100 },
@ -95,8 +95,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 8, { { 0, 0, 0 }, 14 }, 100 },
@ -106,8 +106,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 9, { { 0, 0, 0 }, 12 }, 100 },
@ -117,8 +117,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 10, { { 0, 0, 0 }, 10 }, 100 },
@ -128,8 +128,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 11, { { 0, 0, 0 }, 10 }, 100 },
@ -139,8 +139,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 12, { { 0, 0, 0 }, 10 }, 100 },
@ -150,8 +150,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 13, { { 0, 0, 0 }, 10 }, 100 },
@ -161,8 +161,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 14, { { 0, 0, 0 }, 10 }, 100 },
@ -172,8 +172,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 15, { { 0, 0, 0 }, 10 }, 100 },
@ -183,8 +183,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 16, { { 0, 0, 0 }, 10 }, 100 },
@ -194,8 +194,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 17, { { 0, 0, 0 }, 10 }, 100 },
@ -205,8 +205,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[19] = {
ELEMTYPE_UNK4,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 18, { { 0, 0, 0 }, 10 }, 100 },
@ -239,8 +239,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFDFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON | BUMP_HOOKABLE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON | ACELEM_HOOKABLE,
OCELEM_ON,
},
{ 20, 40, -20, { 0, 0, 0 } },

View file

@ -873,10 +873,10 @@ void BossSst_HeadStunned(BossSst* this, PlayState* play) {
void BossSst_HeadSetupVulnerable(BossSst* this) {
Animation_MorphToLoop(&this->skelAnime, &gBongoHeadStunnedAnim, -5.0f);
this->colliderCyl.base.acFlags |= AC_ON;
this->colliderCyl.elem.bumper.dmgFlags = DMG_SWORD | DMG_DEKU_STICK;
this->colliderCyl.elem.acDmgInfo.dmgFlags = DMG_SWORD | DMG_DEKU_STICK;
this->actor.speed = 0.0f;
this->colliderJntSph.elements[10].base.bumperFlags |= (BUMP_ON | BUMP_HOOKABLE);
this->colliderJntSph.elements[0].base.bumperFlags &= ~BUMP_ON;
this->colliderJntSph.elements[10].base.acElemFlags |= (ACELEM_ON | ACELEM_HOOKABLE);
this->colliderJntSph.elements[0].base.acElemFlags &= ~ACELEM_ON;
if (this->actionFunc != BossSst_HeadDamage) {
this->timer = 50;
}
@ -932,9 +932,9 @@ void BossSst_HeadDamage(BossSst* this, PlayState* play) {
void BossSst_HeadSetupRecover(BossSst* this) {
Animation_MorphToPlayOnce(&this->skelAnime, &gBongoHeadRecoverAnim, -5.0f);
this->colliderCyl.base.acFlags &= ~AC_ON;
this->colliderCyl.elem.bumper.dmgFlags = DMG_DEFAULT;
this->colliderJntSph.elements[10].base.bumperFlags &= ~(BUMP_ON | BUMP_HOOKABLE);
this->colliderJntSph.elements[0].base.bumperFlags |= BUMP_ON;
this->colliderCyl.elem.acDmgInfo.dmgFlags = DMG_DEFAULT;
this->colliderJntSph.elements[10].base.acElemFlags &= ~(ACELEM_ON | ACELEM_HOOKABLE);
this->colliderJntSph.elements[0].base.acElemFlags |= ACELEM_ON;
this->vVanish = true;
this->actor.speed = 5.0f;
this->actionFunc = BossSst_HeadRecover;
@ -2500,7 +2500,7 @@ void BossSst_HandSetDamage(BossSst* this, s32 damage) {
this->colliderJntSph.base.atFlags |= AT_ON;
for (i = 0; i < 11; i++) {
this->colliderJntSph.elements[i].base.toucher.damage = damage;
this->colliderJntSph.elements[i].base.atDmgInfo.damage = damage;
}
}

View file

@ -6,8 +6,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 2, { { 2000, -1500, 250 }, 65 }, 100 },
@ -17,8 +17,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 10, { { 0, 0, 0 }, 22 }, 100 },
@ -28,8 +28,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 11, { { 500, 0, 0 }, 22 }, 100 },
@ -39,8 +39,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 15, { { -250, -250, 0 }, 25 }, 100 },
@ -50,8 +50,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 16, { { 500, -250, 0 }, 25 }, 100 },
@ -61,8 +61,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 20, { { 250, -250, 0 }, 25 }, 100 },
@ -72,8 +72,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 21, { { 500, -250, 0 }, 25 }, 100 },
@ -83,8 +83,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 25, { { 0, 0, 0 }, 27 }, 100 },
@ -94,8 +94,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 26, { { 750, 0, 0 }, 26 }, 100 },
@ -105,8 +105,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 5, { { 750, -150, 0 }, 21 }, 100 },
@ -116,8 +116,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHand[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 6, { { 750, 0, 0 }, 20 }, 100 },
@ -143,8 +143,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 7, { { 1500, 0, 0 }, 70 }, 100 },
@ -154,8 +154,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 6, { { 0, 0, 0 }, 75 }, 100 },
@ -165,8 +165,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 4, { { 5000, 0, 0 }, 120 }, 100 },
@ -176,8 +176,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 3, { { -2500, 0, 0 }, 150 }, 100 },
@ -187,8 +187,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 43, { { 1500, 0, 0 }, 80 }, 100 },
@ -198,8 +198,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 43, { { 7500, 0, 0 }, 70 }, 100 },
@ -209,8 +209,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 44, { { 3000, 0, 0 }, 60 }, 100 },
@ -220,8 +220,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 40, { { 1500, 0, 0 }, 80 }, 100 },
@ -231,8 +231,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 40, { { 7500, 0, 0 }, 70 }, 100 },
@ -242,8 +242,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 41, { { 3000, 0, 0 }, 60 }, 100 },
@ -253,8 +253,8 @@ static ColliderJntSphElementInit sJntSphItemsInitHead[11] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x30 },
{ 0x00000080, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_ON,
},
{ 8, { { 1500, 0, 0 }, 70 }, 100 },
@ -287,8 +287,8 @@ static ColliderCylinderInit sCylinderInitHead = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 85, 100, -50, { 0, 0, 0 } },
@ -307,8 +307,8 @@ static ColliderCylinderInit sCylinderInitHand = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x04, 0x10 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_NONE,
OCELEM_NONE,
},
{ 85, 1, 0, { 0, 0, 0 } },

View file

@ -144,8 +144,8 @@ static ColliderCylinderInit sCylinderInitBlasts = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x30 },
{ 0x00100000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 25, 35, -17, { 0, 0, 0 } },
@ -164,8 +164,8 @@ static ColliderCylinderInit sCylinderInitKoumeKotake = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 45, 120, -30, { 0, 0, 0 } },
@ -184,8 +184,8 @@ static ColliderCylinderInit sCylinderInitTwinrova = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x20 },
{ 0xFFCDFFFE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON | BUMP_HOOKABLE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON | ACELEM_HOOKABLE,
OCELEM_ON,
},
{ 45, 120, -30, { 0, 0, 0 } },
@ -464,7 +464,7 @@ void BossTw_Init(Actor* thisx, PlayState* play2) {
if (this->actor.params == TW_FIRE_BLAST || this->actor.params == TW_FIRE_BLAST_GROUND) {
this->actionFunc = BossTw_BlastFire;
this->collider.elem.toucher.effect = 1;
this->collider.elem.atDmgInfo.effect = 1;
} else if (this->actor.params == TW_ICE_BLAST || this->actor.params == TW_ICE_BLAST_GROUND) {
this->actionFunc = BossTw_BlastIce;
} else if (this->actor.params >= TW_DEATHBALL_KOTAKE) {
@ -3097,7 +3097,7 @@ void BossTw_TwinrovaUpdate(Actor* thisx, PlayState* play2) {
ColliderElement* acHitElem = this->collider.elem.acHitElem;
this->collider.base.acFlags &= ~AC_HIT;
if (acHitElem->toucher.dmgFlags & (DMG_SLINGSHOT | DMG_ARROW)) {}
if (acHitElem->atDmgInfo.dmgFlags & (DMG_SLINGSHOT | DMG_ARROW)) {}
}
} else if (this->collider.base.acFlags & AC_HIT) {
u8 damage;
@ -3106,7 +3106,7 @@ void BossTw_TwinrovaUpdate(Actor* thisx, PlayState* play2) {
this->collider.base.acFlags &= ~AC_HIT;
swordDamage = false;
damage = CollisionCheck_GetSwordDamage(acHitElem->toucher.dmgFlags);
damage = CollisionCheck_GetSwordDamage(acHitElem->atDmgInfo.dmgFlags);
if (damage == 0) {
damage = 2;
@ -3114,7 +3114,7 @@ void BossTw_TwinrovaUpdate(Actor* thisx, PlayState* play2) {
swordDamage = true;
}
if (!(acHitElem->toucher.dmgFlags & DMG_HOOKSHOT)) {
if (!(acHitElem->atDmgInfo.dmgFlags & DMG_HOOKSHOT)) {
if (((s8)this->actor.colChkInfo.health < 3) && !swordDamage) {
damage = 0;
}
@ -4338,7 +4338,7 @@ s32 BossTw_BlastShieldCheck(BossTw* this, PlayState* play) {
this->collider.base.atFlags &= ~AT_HIT;
acHitElem = this->collider.elem.acHitElem;
if (acHitElem->toucher.dmgFlags & DMG_SHIELD) {
if (acHitElem->atDmgInfo.dmgFlags & DMG_SHIELD) {
this->work[INVINC_TIMER] = 7;
play->envCtx.lightBlend = 1.0f;
Rumble_Request(0.0f, 100, 5, 4);

View file

@ -213,8 +213,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFEF, 0x03, 0x08 },
{ 0x00000010, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 85, 120, 0, { 0, 0, 0 } },
@ -226,8 +226,8 @@ static ColliderJntSphElementInit sJntSphElementsInitSupport[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000010, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 25 }, 100 },
@ -253,8 +253,8 @@ static ColliderJntSphElementInit sJntSphElementsInitBari[1] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x03, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 30 }, 100 },
@ -287,8 +287,8 @@ static ColliderQuadInit sQuadInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x03, 0x04 },
{ 0x00000010, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL | TOUCH_UNK7,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL | ATELEM_UNK7,
ACELEM_ON,
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 } } },
@ -1128,7 +1128,7 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) {
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 160);
this->actor.colorFilterTimer = this->invincibilityTimer;
} else {
this->colliderBody.elem.bumper.dmgFlags = DMG_BOOMERANG;
this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_BOOMERANG;
}
}
@ -1138,7 +1138,7 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) {
if (this->colliderBody.base.ac->id == ACTOR_EN_BOOM) {
sPhase2Timer &= 0xFE00;
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 160);
this->colliderBody.elem.bumper.dmgFlags = DMG_SWORD | DMG_BOOMERANG | DMG_DEKU_STICK;
this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_SWORD | DMG_BOOMERANG | DMG_DEKU_STICK;
} else {
sKillBari++;
if ((this->actor.colorFilterTimer != 0) && !(this->actor.colorFilterParams & 0x4000)) {
@ -1217,7 +1217,7 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) {
}
void BossVa_SetupBodyPhase3(BossVa* this) {
this->colliderBody.elem.bumper.dmgFlags = DMG_BOOMERANG;
this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_BOOMERANG;
this->actor.speed = 0.0f;
sPhase3StopMoving = false;
BossVa_SetupAction(this, BossVa_BodyPhase3);
@ -1421,7 +1421,7 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) {
}
Math_SmoothStepToF(&this->actor.speed, ((sFightPhase - PHASE_4 + 1) * 1.5f) + 4.0f, 1.0f, 0.25f, 0.0f);
}
this->colliderBody.elem.bumper.dmgFlags = DMG_BOOMERANG;
this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_BOOMERANG;
} else {
Math_SmoothStepToS(&this->vaBodySpinRate, 0, 1, 0x96, 0);
if (this->timer > 0) {
@ -1429,7 +1429,7 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) {
this->timer = 35;
}
Math_SmoothStepToF(&this->actor.shape.yOffset, -480.0f, 1.0f, 30.0f, 0.0f);
this->colliderBody.elem.bumper.dmgFlags = DMG_SWORD | DMG_BOOMERANG | DMG_DEKU_STICK;
this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_SWORD | DMG_BOOMERANG | DMG_DEKU_STICK;
this->timer--;
} else {
if ((player->stateFlags1 & PLAYER_STATE1_26) && (this->timer < -60)) {

View file

@ -27,8 +27,8 @@ static ColliderCylinderInitType1 sCylinderInit1 = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 30, 100, 0, { 0, 0, 0 } },
@ -46,8 +46,8 @@ static ColliderCylinderInitType1 sCylinderInit2 = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 25, 110, 0, { 0, 0, 0 } },
@ -65,8 +65,8 @@ static ColliderCylinderInitType1 sCylinderInit3 = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 25, 200, 0, { 0, 0, 0 } },

View file

@ -46,8 +46,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x07, 0x04 },
{ 0x00002000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 680, 220, 120, { 0, 0, 0 } },

View file

@ -43,8 +43,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000048, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 50, 10, 0, { 0 } },

View file

@ -54,8 +54,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0x0001FFEE, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_NONE,
},
{ 20, 100, 0, { 0, 0, 0 } },
@ -67,8 +67,8 @@ static ColliderJntSphElementInit sJntSphItemsInit[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000008, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 100 }, 100 },
@ -423,10 +423,10 @@ void DoorKiller_Wait(DoorKiller* this, PlayState* play) {
if (DoorKiller_IsHit(&this->actor, play)) {
// AC cylinder: wobble if hit by most weapons, die if hit by explosives or hammer
if (this->colliderCylinder.elem.acHitElem->toucher.dmgFlags & (DMG_RANGED | DMG_SLASH | DMG_DEKU_STICK)) {
if (this->colliderCylinder.elem.acHitElem->atDmgInfo.dmgFlags & (DMG_RANGED | DMG_SLASH | DMG_DEKU_STICK)) {
this->timer = 16;
this->actionFunc = DoorKiller_Wobble;
} else if (this->colliderCylinder.elem.acHitElem->toucher.dmgFlags & (DMG_HAMMER_SWING | DMG_EXPLOSIVE)) {
} else if (this->colliderCylinder.elem.acHitElem->atDmgInfo.dmgFlags & (DMG_HAMMER_SWING | DMG_EXPLOSIVE)) {
DoorKiller_SpawnRubble(&this->actor, play);
this->actionFunc = DoorKiller_Die;
SfxSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_EN_KDOOR_BREAK);

View file

@ -64,8 +64,8 @@ static ColliderCylinderInit sHurtCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 15, 70, 0, { 0, 0, 0 } },
@ -84,8 +84,8 @@ static ColliderCylinderInit sBlockCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00400106, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 15, 70, 0, { 0, 0, 0 } },
@ -104,8 +104,8 @@ static ColliderQuadInit sQuadInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 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 } } },

View file

@ -51,8 +51,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 30, 40, 0, { 0 } },

View file

@ -50,8 +50,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 29, 103, 0, { 0, 0, 0 } },

View file

@ -44,8 +44,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x01, 0x04 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_NONE,
},
{ 0, 0, 0, { 0, 0, 0 } },
@ -113,7 +113,7 @@ void func_809B27D8(EnAnubiceFire* this, PlayState* play) {
Actor_PlaySfx(&this->actor, NA_SE_IT_SHIELD_REFLECT_SW);
this->cylinder.base.atFlags &= ~(AT_HIT | AT_BOUNCED | AT_TYPE_ENEMY);
this->cylinder.base.atFlags |= AT_TYPE_PLAYER;
this->cylinder.elem.toucher.dmgFlags = DMG_DEKU_STICK;
this->cylinder.elem.atDmgInfo.dmgFlags = DMG_DEKU_STICK;
this->unk_15A = 30;
this->actor.params = 1;
this->actor.velocity.x *= -1.0f;

View file

@ -44,8 +44,8 @@ static ColliderQuadInit sColliderInit = {
ELEMTYPE_UNK2,
{ 0x00000020, 0x00, 0x01 },
{ 0xFFCFFFFF, 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 } } },
@ -121,15 +121,15 @@ void EnArrow_Init(Actor* thisx, PlayState* play) {
Collider_SetQuad(play, &this->collider, &this->actor, &sColliderInit);
if (this->actor.params <= ARROW_NORMAL) {
this->collider.elem.toucherFlags &= ~TOUCH_SFX_MASK;
this->collider.elem.toucherFlags |= TOUCH_SFX_NORMAL;
this->collider.elem.atElemFlags &= ~ATELEM_SFX_MASK;
this->collider.elem.atElemFlags |= ATELEM_SFX_NORMAL;
}
if (this->actor.params < 0) {
this->collider.base.atFlags = (AT_ON | AT_TYPE_ENEMY);
} else if (this->actor.params <= ARROW_SEED) {
this->collider.elem.toucher.dmgFlags = dmgFlags[this->actor.params];
LOG_HEX("this->at_info.cl_elem.at_btl_info.at_type", this->collider.elem.toucher.dmgFlags,
this->collider.elem.atDmgInfo.dmgFlags = dmgFlags[this->actor.params];
LOG_HEX("this->at_info.cl_elem.at_btl_info.at_type", this->collider.elem.atDmgInfo.dmgFlags,
"../z_en_arrow.c", 707);
}
}
@ -298,10 +298,10 @@ void EnArrow_Fly(EnArrow* this, PlayState* play) {
this->hitFlags |= 1;
this->hitFlags |= 2;
if (this->collider.elem.atHitElem->bumperFlags & BUMP_HIT) {
this->actor.world.pos.x = this->collider.elem.atHitElem->bumper.hitPos.x;
this->actor.world.pos.y = this->collider.elem.atHitElem->bumper.hitPos.y;
this->actor.world.pos.z = this->collider.elem.atHitElem->bumper.hitPos.z;
if (this->collider.elem.atHitElem->acElemFlags & ACELEM_HIT) {
this->actor.world.pos.x = this->collider.elem.atHitElem->acDmgInfo.hitPos.x;
this->actor.world.pos.y = this->collider.elem.atHitElem->acDmgInfo.hitPos.y;
this->actor.world.pos.z = this->collider.elem.atHitElem->acDmgInfo.hitPos.z;
}
func_809B3CEC(play, this);

View file

@ -43,8 +43,8 @@ static ColliderJntSphElementInit sJntSphElementInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000010, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_NONE,
},
{ 8, { { 0, 0, 0 }, 20 }, 100 },
@ -54,8 +54,8 @@ static ColliderJntSphElementInit sJntSphElementInit[2] = {
ELEMTYPE_UNK0,
{ 0x20000000, 0x00, 0x04 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ 13, { { 0, 0, 0 }, 25 }, 100 },

View file

@ -213,8 +213,8 @@ static ColliderJntSphElementInit sJntSphElementInit[1] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, -120, 0 }, 4 }, 300 },
@ -331,9 +331,9 @@ void EnBb_Init(Actor* thisx, PlayState* play) {
this->timer = 0;
this->flameScaleY = 80.0f;
this->flameScaleX = 100.0f;
this->collider.elements[0].base.toucherFlags = TOUCH_ON | TOUCH_SFX_HARD;
this->collider.elements[0].base.toucher.dmgFlags = DMG_DEFAULT;
this->collider.elements[0].base.toucher.damage = 8;
this->collider.elements[0].base.atElemFlags = ATELEM_ON | ATELEM_SFX_HARD;
this->collider.elements[0].base.atDmgInfo.dmgFlags = DMG_DEFAULT;
this->collider.elements[0].base.atDmgInfo.damage = 8;
this->bobSize = this->actionState * 20.0f;
this->flamePrimAlpha = 255;
this->moveMode = BBMOVE_NORMAL;
@ -351,7 +351,7 @@ void EnBb_Init(Actor* thisx, PlayState* play) {
thisx->naviEnemyId = NAVI_ENEMY_RED_BUBBLE;
thisx->colChkInfo.damageTable = &sDamageTableRed;
this->flameEnvColor.r = 255;
this->collider.elements[0].base.toucher.effect = 1;
this->collider.elements[0].base.atDmgInfo.effect = 1;
EnBb_SetupRed(play, this);
break;
case ENBB_WHITE:
@ -1155,7 +1155,7 @@ void EnBb_CollisionCheck(EnBb* this, PlayState* play) {
Actor_SetDropFlag(&this->actor, &this->collider.elements[0].base, false);
switch (this->dmgEffect) {
case 7:
this->actor.freezeTimer = this->collider.elements[0].base.acHitElem->toucher.damage;
this->actor.freezeTimer = this->collider.elements[0].base.acHitElem->atDmgInfo.damage;
FALLTHROUGH;
case 5:
this->fireIceTimer = 0x30;
@ -1165,7 +1165,7 @@ void EnBb_CollisionCheck(EnBb* this, PlayState* play) {
//! Din's Fire on a white bubble will do just that. The mechanism is complex and described below.
goto block_15;
case 6:
this->actor.freezeTimer = this->collider.elements[0].base.acHitElem->toucher.damage;
this->actor.freezeTimer = this->collider.elements[0].base.acHitElem->atDmgInfo.damage;
break;
case 8:
case 9:

View file

@ -48,8 +48,8 @@ static ColliderJntSphElementInit sJntSphElementInit[1] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_HARD,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_HARD,
ACELEM_ON,
OCELEM_ON,
},
{ 1, { { 0, 45, -30 }, 75 }, 100 },
@ -82,8 +82,8 @@ static ColliderCylinderInit sCylinderInit[] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x08 },
{ 0xFFCFFFE7, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_HARD,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_HARD,
ACELEM_ON,
OCELEM_ON,
},
{ 50, 100, 0, { 30, 0, 12 } } },
@ -99,8 +99,8 @@ static ColliderCylinderInit sCylinderInit[] = {
ELEMTYPE_UNK1,
{ 0x20000000, 0x00, 0x08 },
{ 0xFFCFFFE7, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_HARD,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_HARD,
ACELEM_ON,
OCELEM_ON,
},
{ 50, 100, 0, { -30, 0, 12 } } },
@ -333,7 +333,7 @@ void func_809BD524(EnBigokuta* this) {
this->unk_19A = 0;
this->cylinder[0].base.atFlags |= AT_ON;
Actor_PlaySfx(&this->actor, NA_SE_EN_DAIOCTA_MAHI);
if (this->collider.elements[0].base.acHitElem->toucher.dmgFlags & DMG_DEKU_NUT) {
if (this->collider.elements[0].base.acHitElem->atDmgInfo.dmgFlags & DMG_DEKU_NUT) {
this->unk_195 = true;
this->unk_196 = 20;
} else {

View file

@ -53,8 +53,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x03, 0x08 },
{ 0xFFCFFFFF, 0x01, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 9, 28, -20, { 0, 0, 0 } },
@ -141,7 +141,7 @@ void EnBili_Destroy(Actor* thisx, PlayState* play) {
void EnBili_SetupFloatIdle(EnBili* this) {
this->actor.speed = 0.7f;
this->collider.elem.bumper.effect = 1; // Shock?
this->collider.elem.acDmgInfo.effect = 1; // Shock?
this->timer = 32;
this->actor.home.pos.y = this->actor.world.pos.y;
this->actor.gravity = 0.0f;
@ -237,7 +237,7 @@ void EnBili_SetupDie(EnBili* this) {
*/
void EnBili_SetupStunned(EnBili* this) {
this->timer = 80;
this->collider.elem.bumper.effect = 0;
this->collider.elem.acDmgInfo.effect = 0;
this->actor.gravity = -1.0f;
this->actor.speed = 0.0f;
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 150, COLORFILTER_BUFFLAG_XLU, 80);
@ -586,7 +586,7 @@ void EnBili_UpdateDamage(EnBili* this, PlayState* play) {
EnBili_SetupBurnt(this);
}
if (this->collider.elem.acHitElem->toucher.dmgFlags & DMG_ARROW) {
if (this->collider.elem.acHitElem->atDmgInfo.dmgFlags & DMG_ARROW) {
this->actor.flags |= ACTOR_FLAG_4;
}
}

View file

@ -43,8 +43,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0x0003F828, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 6, 11, 14, { 0, 0, 0 } },
@ -56,8 +56,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_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 },
@ -101,7 +101,7 @@ void EnBom_Init(Actor* thisx, PlayState* play) {
Collider_InitJntSph(play, &this->explosionCollider);
Collider_SetCylinder(play, &this->bombCollider, thisx, &sCylinderInit);
Collider_SetJntSph(play, &this->explosionCollider, thisx, &sJntSphInit, &this->explosionColliderItems[0]);
this->explosionColliderItems[0].base.toucher.damage += (thisx->shape.rot.z & 0xFF00) >> 8;
this->explosionColliderItems[0].base.atDmgInfo.damage += (thisx->shape.rot.z & 0xFF00) >> 8;
thisx->shape.rot.z &= 0xFF;
if (thisx->shape.rot.z & 0x80) {
@ -241,7 +241,7 @@ void EnBom_Update(Actor* thisx, PlayState* play2) {
}
if ((thisx->xzDistToPlayer >= 20.0f) || (ABS(thisx->yDistToPlayer) >= 80.0f)) {
this->bumpOn = true;
this->colliderSetOC = true;
}
this->actionFunc(this, play);
@ -333,8 +333,8 @@ void EnBom_Update(Actor* thisx, PlayState* play2) {
if (thisx->params <= BOMB_BODY) {
Collider_UpdateCylinder(thisx, &this->bombCollider);
// if link is not holding the bomb anymore and bump conditions are met, subscribe to OC
if (!Actor_HasParent(thisx, play) && this->bumpOn) {
// if link is not holding the bomb anymore and conditions for OC are met, subscribe to OC
if (!Actor_HasParent(thisx, play) && this->colliderSetOC) {
CollisionCheck_SetOC(play, &play->colChkCtx, &this->bombCollider.base);
}

View file

@ -16,7 +16,7 @@ typedef struct EnBom {
/* 0x01F8 */ s16 timer;
/* 0x01FA */ s16 flashSpeedScale;
/* 0x01FC */ f32 flashIntensity;
/* 0x0200 */ u8 bumpOn;
/* 0x0200 */ u8 colliderSetOC;
/* 0x0204 */ EnBomActionFunc actionFunc;
} EnBom; // size = 0x0208

View file

@ -33,8 +33,8 @@ static ColliderJntSphElementInit sJntSphElemInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 1, { { 0, 0, 0 }, 12 }, 100 },

View file

@ -46,8 +46,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK2,
{ 0x00000000, 0x00, 0x00 },
{ 0x0003F828, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 9, 18, 10, { 0, 0, 0 } },
@ -59,8 +59,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_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 },
@ -121,7 +121,7 @@ void EnBombf_Init(Actor* thisx, PlayState* play) {
EnBombf_SetupAction(this, EnBombf_Move);
} else {
thisx->colChkInfo.mass = MASS_IMMOVABLE;
this->bumpOn = true;
this->colliderSetOC = true;
this->flowerBombScale = 1.0f;
EnBombf_SetupGrowBomb(this, thisx->params);
}
@ -320,13 +320,13 @@ void EnBombf_Update(Actor* thisx, PlayState* play) {
s32 pad[2];
EnBombf* this = (EnBombf*)thisx;
if ((this->isFuseEnabled) && (this->timer != 0)) {
if (this->isFuseEnabled && (this->timer != 0)) {
this->timer--;
}
if ((!this->bumpOn) && (!Actor_HasParent(thisx, play)) &&
if (!this->colliderSetOC && !Actor_HasParent(thisx, play) &&
((thisx->xzDistToPlayer >= 20.0f) || (ABS(thisx->yDistToPlayer) >= 80.0f))) {
this->bumpOn = true;
this->colliderSetOC = true;
}
this->actionFunc(this, play);
@ -444,7 +444,7 @@ void EnBombf_Update(Actor* thisx, PlayState* play) {
Collider_UpdateCylinder(thisx, &this->bombCollider);
if ((this->flowerBombScale >= 1.0f) && (this->bumpOn)) {
if ((this->flowerBombScale >= 1.0f) && this->colliderSetOC) {
CollisionCheck_SetOC(play, &play->colChkCtx, &this->bombCollider.base);
}

View file

@ -16,7 +16,7 @@ typedef struct EnBombf {
/* 0x01F8 */ s16 timer;
/* 0x01FC */ EnBombfActionFunc actionFunc;
/* 0x0200 */ s32 isFuseEnabled; // enables the ability to ignite and tick down to explode
/* 0x0204 */ u8 bumpOn;
/* 0x0204 */ u8 colliderSetOC;
/* 0x0206 */ s16 flashSpeedScale;
/* 0x0208 */ f32 flashIntensity;
/* 0x020C */ f32 flowerBombScale;

View file

@ -41,8 +41,8 @@ static ColliderQuadInit sQuadInit = {
ELEMTYPE_UNK2,
{ 0x00000010, 0x00, 0x01 },
{ 0xFFCFFFFF, 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 } } },

View file

@ -47,8 +47,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK1,
{ 0xFFCFFFFF, 0x03, 0x08 },
{ 0xFFCFFFFF, 0x01, 0x00 },
TOUCH_ON | TOUCH_SFX_NONE,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 8000, 11000, -5000, { 0, 0, 0 } },
@ -263,8 +263,8 @@ void EnBrob_Update(Actor* thisx, PlayState* play2) {
acHits[0] = (this->colliders[0].base.acFlags & AC_HIT) != 0;
acHits[1] = (this->colliders[1].base.acFlags & AC_HIT) != 0;
if ((acHits[0] && (this->colliders[0].elem.acHitElem->toucher.dmgFlags & DMG_BOOMERANG)) ||
(acHits[1] && (this->colliders[1].elem.acHitElem->toucher.dmgFlags & DMG_BOOMERANG))) {
if ((acHits[0] && (this->colliders[0].elem.acHitElem->atDmgInfo.dmgFlags & DMG_BOOMERANG)) ||
(acHits[1] && (this->colliders[1].elem.acHitElem->atDmgInfo.dmgFlags & DMG_BOOMERANG))) {
for (i = 0; i < 2; i++) {
this->colliders[i].base.atFlags &= ~(AT_HIT | AT_BOUNCED);
@ -273,8 +273,8 @@ void EnBrob_Update(Actor* thisx, PlayState* play2) {
EnBrob_SetupStunned(this);
} else if ((this->colliders[0].base.atFlags & AT_HIT) || (this->colliders[1].base.atFlags & AT_HIT) ||
(acHits[0] && (this->colliders[0].elem.acHitElem->toucher.dmgFlags & DMG_SLASH_KOKIRI)) ||
(acHits[1] && (this->colliders[1].elem.acHitElem->toucher.dmgFlags & DMG_SLASH_KOKIRI))) {
(acHits[0] && (this->colliders[0].elem.acHitElem->atDmgInfo.dmgFlags & DMG_SLASH_KOKIRI)) ||
(acHits[1] && (this->colliders[1].elem.acHitElem->atDmgInfo.dmgFlags & DMG_SLASH_KOKIRI))) {
if (this->actionFunc == EnBrob_MoveUp && !(this->colliders[0].base.atFlags & AT_BOUNCED) &&
!(this->colliders[1].base.atFlags & AT_BOUNCED)) {

View file

@ -30,8 +30,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x04 },
{ 0xFFCFD753, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 0, { { 0, 0, 0 }, 16 }, 100 },
@ -41,8 +41,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[2] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00002824, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON | BUMP_NO_AT_INFO | BUMP_NO_DAMAGE | BUMP_NO_SWORD_SFX | BUMP_NO_HITMARK,
ATELEM_NONE,
ACELEM_ON | ACELEM_NO_AT_INFO | ACELEM_NO_DAMAGE | ACELEM_NO_SWORD_SFX | ACELEM_NO_HITMARK,
OCELEM_NONE,
},
{ 0, { { 0, 0, 0 }, 16 }, 100 },
@ -97,10 +97,10 @@ void EnBubble_SetDimensions(EnBubble* this, f32 dim) {
u32 func_809CBCBC(EnBubble* this) {
ColliderElement* elem = &this->colliderSphere.elements[0].base;
elem->toucher.dmgFlags = DMG_EXPLOSIVE;
elem->toucher.effect = 0;
elem->toucher.damage = 4;
elem->toucherFlags = TOUCH_ON;
elem->atDmgInfo.dmgFlags = DMG_EXPLOSIVE;
elem->atDmgInfo.effect = 0;
elem->atDmgInfo.damage = 4;
elem->atElemFlags = ATELEM_ON;
this->actor.velocity.y = 0.0f;
return 6;
}
@ -112,7 +112,7 @@ u32 func_809CBCEC(EnBubble* this) {
}
void EnBubble_DamagePlayer(EnBubble* this, PlayState* play) {
s32 damage = -this->colliderSphere.elements[0].base.toucher.damage;
s32 damage = -this->colliderSphere.elements[0].base.atDmgInfo.damage;
play->damagePlayer(play, damage);
func_8002F7A0(play, &this->actor, 6.0f, this->actor.yawTowardsPlayer, 6.0f);
@ -196,7 +196,7 @@ void EnBubble_Vec3fNormalize(Vec3f* vec) {
void EnBubble_Fly(EnBubble* this, PlayState* play) {
CollisionPoly* poly;
Actor* bumpActor;
Actor* attackerActor;
Vec3f sp84;
Vec3f sp78;
Vec3f sp6C;
@ -206,21 +206,21 @@ void EnBubble_Fly(EnBubble* this, PlayState* play) {
s32 bgId;
u8 bounceCount;
if (this->colliderSphere.elements[1].base.bumperFlags & BUMP_HIT) {
bumpActor = this->colliderSphere.base.ac;
this->normalizedBumpVelocity = bumpActor->velocity;
EnBubble_Vec3fNormalize(&this->normalizedBumpVelocity);
this->velocityFromBump.x += (this->normalizedBumpVelocity.x * 3.0f);
this->velocityFromBump.y += (this->normalizedBumpVelocity.y * 3.0f);
this->velocityFromBump.z += (this->normalizedBumpVelocity.z * 3.0f);
if (this->colliderSphere.elements[1].base.acElemFlags & ACELEM_HIT) {
attackerActor = this->colliderSphere.base.ac;
this->normalizedAttackerVelocity = attackerActor->velocity;
EnBubble_Vec3fNormalize(&this->normalizedAttackerVelocity);
this->velocityFromAttack.x += (this->normalizedAttackerVelocity.x * 3.0f);
this->velocityFromAttack.y += (this->normalizedAttackerVelocity.y * 3.0f);
this->velocityFromAttack.z += (this->normalizedAttackerVelocity.z * 3.0f);
}
this->sinkSpeed -= 0.1f;
if (this->sinkSpeed < this->actor.minVelocityY) {
this->sinkSpeed = this->actor.minVelocityY;
}
sp54.x = this->velocityFromBounce.x + this->velocityFromBump.x;
sp54.y = this->velocityFromBounce.y + this->velocityFromBump.y + this->sinkSpeed;
sp54.z = this->velocityFromBounce.z + this->velocityFromBump.z;
sp54.x = this->velocityFromBounce.x + this->velocityFromAttack.x;
sp54.y = this->velocityFromBounce.y + this->velocityFromAttack.y + this->sinkSpeed;
sp54.z = this->velocityFromBounce.z + this->velocityFromAttack.z;
EnBubble_Vec3fNormalize(&sp54);
sp78.x = this->actor.world.pos.x;
@ -243,7 +243,7 @@ void EnBubble_Fly(EnBubble* this, PlayState* play) {
this->bounceCount = 0;
}
bounceSpeed = (this->bounceCount == 0) ? 3.6000001f : 3.0f;
this->velocityFromBump.x = this->velocityFromBump.y = this->velocityFromBump.z = 0.0f;
this->velocityFromAttack.x = this->velocityFromAttack.y = this->velocityFromAttack.z = 0.0f;
this->velocityFromBounce.x = (this->bounceDirection.x * bounceSpeed);
this->velocityFromBounce.y = (this->bounceDirection.y * bounceSpeed);
this->velocityFromBounce.z = (this->bounceDirection.z * bounceSpeed);
@ -262,7 +262,7 @@ void EnBubble_Fly(EnBubble* this, PlayState* play) {
this->bounceCount = 0;
}
bounceSpeed = (this->bounceCount == 0) ? 3.6000001f : 3.0f;
this->velocityFromBump.x = this->velocityFromBump.y = this->velocityFromBump.z = 0.0f;
this->velocityFromAttack.x = this->velocityFromAttack.y = this->velocityFromAttack.z = 0.0f;
this->velocityFromBounce.x = (this->bounceDirection.x * bounceSpeed);
this->velocityFromBounce.y = (this->bounceDirection.y * bounceSpeed);
this->velocityFromBounce.z = (this->bounceDirection.z * bounceSpeed);
@ -271,12 +271,12 @@ void EnBubble_Fly(EnBubble* this, PlayState* play) {
this->graphicRotSpeed = 128.0f;
this->graphicEccentricity = 0.48f;
}
this->actor.velocity.x = this->velocityFromBounce.x + this->velocityFromBump.x;
this->actor.velocity.y = this->velocityFromBounce.y + this->velocityFromBump.y + this->sinkSpeed;
this->actor.velocity.z = this->velocityFromBounce.z + this->velocityFromBump.z;
Math_ApproachF(&this->velocityFromBump.x, 0.0f, 0.3f, 0.1f);
Math_ApproachF(&this->velocityFromBump.y, 0.0f, 0.3f, 0.1f);
Math_ApproachF(&this->velocityFromBump.z, 0.0f, 0.3f, 0.1f);
this->actor.velocity.x = this->velocityFromBounce.x + this->velocityFromAttack.x;
this->actor.velocity.y = this->velocityFromBounce.y + this->velocityFromAttack.y + this->sinkSpeed;
this->actor.velocity.z = this->velocityFromBounce.z + this->velocityFromAttack.z;
Math_ApproachF(&this->velocityFromAttack.x, 0.0f, 0.3f, 0.1f);
Math_ApproachF(&this->velocityFromAttack.y, 0.0f, 0.3f, 0.1f);
Math_ApproachF(&this->velocityFromAttack.z, 0.0f, 0.3f, 0.1f);
}
u32 func_809CC648(EnBubble* this) {
@ -284,7 +284,7 @@ u32 func_809CC648(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->unk_1F0.x = this->colliderSphere.base.ac->velocity.x / 10.0f;
this->unk_1F0.y = this->colliderSphere.base.ac->velocity.y / 10.0f;
this->unk_1F0.z = this->colliderSphere.base.ac->velocity.z / 10.0f;

View file

@ -27,8 +27,8 @@ typedef struct EnBubble {
/* 0x0228 */ u8 bounceCount;
/* 0x022C */ Vec3f bounceDirection;
/* 0x0238 */ Vec3f velocityFromBounce;
/* 0x0244 */ Vec3f normalizedBumpVelocity;
/* 0x0250 */ Vec3f velocityFromBump;
/* 0x0244 */ Vec3f normalizedAttackerVelocity;
/* 0x0250 */ Vec3f velocityFromAttack;
/* 0x025C */ f32 sinkSpeed;
} EnBubble; // size = 0x0260

View file

@ -30,8 +30,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x000, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 0, { { 0, 0, 0 }, 5 }, 100 } },

View file

@ -58,8 +58,8 @@ static ColliderCylinderInit sCylinderInit1 = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x01, 0x08 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_NONE,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_NONE,
OCELEM_NONE,
},
{ 30, 65, 0, { 0, 0, 0 } },
@ -78,8 +78,8 @@ static ColliderCylinderInit sCylinderInit2 = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 30, 35, 0, { 0, 0, 0 } },
@ -766,7 +766,7 @@ void EnBw_Update(Actor* thisx, PlayState* play2) {
func_8002836C(play, &thisx->world.pos, &velocity, &accel, &sp50, &sp4C, 0x3C, 0, 0x14);
}
if (this->unk_248 <= 0.4f) {
this->collider1.elem.toucher.effect = 0;
this->collider1.elem.atDmgInfo.effect = 0;
if (((play->gameplayFrames & 1) == 0) && (this->unk_220 < 5) && (this->unk_23C == 0)) {
accel.y = -0.1f;
velocity.x = Rand_CenteredFloat(4.0f);
@ -786,7 +786,7 @@ void EnBw_Update(Actor* thisx, PlayState* play2) {
20.0f - (this->unk_248 * 40.0f));
}
} else {
this->collider1.elem.toucher.effect = 1;
this->collider1.elem.atDmgInfo.effect = 1;
}
this->unk_234 = Actor_TestFloorInDirection(thisx, play, 50.0f, thisx->world.rot.y);

View file

@ -39,8 +39,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK1,
{ 0xFFCFFFFF, 0x03, 0x04 },
{ 0xFFCFFFFF, 0x01, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_NONE,
},
{ 60, 100, 100, { 0, 0, 0 } },
@ -59,8 +59,8 @@ static ColliderQuadInit sQuadInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x03, 0x04 },
{ 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 } } },

View file

@ -47,8 +47,8 @@ static ColliderCylinderInit sArwingCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFDFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 15, 30, 10, { 0, 0, 0 } },
@ -67,8 +67,8 @@ static ColliderCylinderInit sLaserCylinderInit = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x04 },
{ 0xFFDFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_NORMAL,
ACELEM_ON,
OCELEM_ON,
},
{ 15, 30, 10, { 0, 0, 0 } },

View file

@ -51,8 +51,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_NONE,
BUMP_ON,
ATELEM_NONE,
ACELEM_ON,
OCELEM_ON,
},
{ 30, 40, 0, { 0, 0, 0 } },

View file

@ -36,8 +36,8 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x08 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_HARD,
BUMP_ON,
ATELEM_ON | ATELEM_SFX_HARD,
ACELEM_ON,
OCELEM_ON,
},
{ 1, { { 0, 0, 0 }, 20 }, 100 },

View file

@ -40,8 +40,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 18, 63, 0, { 0, 0, 0 } },

View file

@ -66,8 +66,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 18, 66, 0, { 0, 0, 0 } },

View file

@ -49,8 +49,8 @@ static ColliderCylinderInit sCylinderInit = {
ELEMTYPE_UNK0,
{ 0x00000000, 0x00, 0x00 },
{ 0x00000000, 0x00, 0x00 },
TOUCH_NONE,
BUMP_NONE,
ATELEM_NONE,
ACELEM_NONE,
OCELEM_ON,
},
{ 18, 66, 0, { 0, 0, 0 } },

Some files were not shown because too many files have changed in this diff Show more