summaryrefslogtreecommitdiff
path: root/src/bossBalboaWrench.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/bossBalboaWrench.cpp34
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;
}