diff options
Diffstat (limited to '')
-rw-r--r-- | src/bossBalboaWrench.cpp | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/bossBalboaWrench.cpp b/src/bossBalboaWrench.cpp index 1cea253..fe53a17 100644 --- a/src/bossBalboaWrench.cpp +++ b/src/bossBalboaWrench.cpp @@ -36,6 +36,7 @@ class daBalboa_c : public daBoss { void updateModelMatrices(); void bindAnimChr_and_setUpdateRate(const char* name, int unk, float unk2, float rate); + bool prePlayerCollision(ActivePhysics *apThis, ActivePhysics *apOther); void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); @@ -43,6 +44,7 @@ class daBalboa_c : public daBoss { bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); + bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); void addScoreWhenHit(void *other); @@ -88,28 +90,24 @@ daBalboa_c *daBalboa_c::build() { void daBalboa_c::addScoreWhenHit(void *other) {} - void daBalboa_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) { - - char ret = usedForDeterminingStatePress_or_playerCollision(this, apThis, apOther, 0); - - if(ret == 1) { // regular jump - - apOther->someFlagByte |= 0; - - } else if(ret == 3) { // spinning +bool daBalboa_c::prePlayerCollision(ActivePhysics *apThis, ActivePhysics *apOther) { + if (apOther->owner->stageActorType == 1) { + if (apOther->info.category2 == 7) { + if (collisionCat7_GroundPound(apThis, apOther)) + return true; + } + } - apOther->someFlagByte |= 0; + return dEn_c::prePlayerCollision(apThis, apOther); +} - } else if(ret == 0) { + void daBalboa_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) { - this->dEn_c::playerCollision(apThis, apOther); - this->_vf220(apOther->owner); + char ret = usedForDeterminingStatePress_or_playerCollision(this, apThis, apOther, 0); - } else if(ret == 2) { // mini Mario + if(ret == 0) { this->dEn_c::playerCollision(apThis, apOther); this->_vf220(apOther->owner); - - } else { } //FIXME hack to make multiple playerCollisions work @@ -146,6 +144,9 @@ daBalboa_c *daBalboa_c::build() { return true; } + bool daBalboa_c::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) { + return collisionCat7_GroundPound(apThis, apOther); + } bool daBalboa_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { return true; @@ -160,6 +161,7 @@ daBalboa_c *daBalboa_c::build() { return true; } bool daBalboa_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { + dAcPy_vf3F8(apOther->owner, this, 3); return true; } |