summaryrefslogtreecommitdiff
path: root/src/bossBalboaWrench.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bossBalboaWrench.cpp')
-rw-r--r--src/bossBalboaWrench.cpp86
1 files changed, 68 insertions, 18 deletions
diff --git a/src/bossBalboaWrench.cpp b/src/bossBalboaWrench.cpp
index efb3abe..02742e7 100644
--- a/src/bossBalboaWrench.cpp
+++ b/src/bossBalboaWrench.cpp
@@ -37,6 +37,7 @@ class daBalboa_c : public dEn_c {
int homingWrenchLifeSpan;
float homingWrenchDirection;
char throwCount;
+ char upsideDown;
static daBalboa_c *build();
@@ -192,11 +193,11 @@ int daBalboa_c::onCreate() {
OSReport("Creating Balboa's Physics Struct");
ActivePhysics::Info HitMeBaby;
- HitMeBaby.xDistToCenter = 0.0;
+ HitMeBaby.xDistToCenter = 24.0;
HitMeBaby.yDistToCenter = 36.0;
HitMeBaby.xDistToEdge = 24.0;
- HitMeBaby.yDistToEdge = 30.0;
+ HitMeBaby.yDistToEdge = 32.0;
HitMeBaby.category1 = 0x3;
HitMeBaby.category2 = 0x0;
@@ -217,11 +218,13 @@ int daBalboa_c::onCreate() {
this->rot.z = 0; // Z is ... an axis >.>
this->direction = 0; // Heading left.
this->pos.z = -800.0;
+ this->pos.y -= 8.0;
- this->PopUp[0] = (Vec){this->pos.x, this->pos.y + 120.0, this->pos.z};
- this->PopUp[1] = (Vec){this->pos.x - 320.0, this->pos.y - 60.0, this->pos.z};
- this->PopUp[2] = (Vec){this->pos.x, this->pos.y + 120.0, this->pos.z};
- this->PopUp[3] = (Vec){this->pos.x - 320.0, this->pos.y - 60.0, this->pos.z};
+ this->PopUp[0] = (Vec){this->pos.x, this->pos.y - 72.0, this->pos.z};
+ this->PopUp[1] = (Vec){this->pos.x - 224.0, this->pos.y - 72.0, this->pos.z};
+ this->PopUp[2] = (Vec){this->pos.x, this->pos.y + 248.0, this->pos.z};
+ this->PopUp[3] = (Vec){this->pos.x - 224.0, this->pos.y + 248.0, this->pos.z};
+ this->PopUp[4] = (Vec){this->pos.x - 112.0, this->pos.y - 40.0, this->pos.z};
OSReport("Setting the State");
@@ -304,7 +307,7 @@ void daBalboa_c::executeState_Grow() {
float modifier;
- modifier = 2.0 + ((this->timer - 60) * scaleSpeed);
+ modifier = 1.0 + ((this->timer - 60) * scaleSpeed);
this->scale = (Vec){modifier, modifier, modifier};
// this->pos.y = this->pos.y + (yPosScaling/80);
@@ -338,17 +341,48 @@ void daBalboa_c::beginState_ManholeUp() {
this->timer = 0;
int randChoice;
- randChoice = GenerateRandomNumber(4);
+ randChoice = GenerateRandomNumber(5);
this->pos = this->PopUp[randChoice];
- if (randChoice < 2) { // On the left side!
+ if (randChoice == 0) { // On the left side!
this->rot.y = 0xE000;
+ this->rot.z = 0;
+ this->upsideDown = 0;
this->direction = 0; }
- else { // On the right side!
+
+ else if (randChoice == 1) { // On the right side!
+ this->rot.y = 0x2000;
+ this->rot.z = 0;
+ this->upsideDown = 0;
+ this->direction = 1; }
+
+ else if (randChoice == 2) { // On the right ceiling!
+ this->rot.y = 0xE000;
+ this->rot.z = 0x8000;
+ this->upsideDown = 1;
+ this->direction = 0; }
+
+ else if (randChoice == 3) { // On the left ceiling!
this->rot.y = 0x2000;
+ this->rot.z = 0x8000;
+ this->upsideDown = 1;
this->direction = 1; }
+ else if (randChoice == 4) { // In the Center!
+ char PlayerID = NearestPlayer(this);
+ dStageActor_c *Player = GetSpecificPlayerActor(PlayerID);
+
+ this->upsideDown = 0;
+ this->rot.z = 0;
+ if (Player->pos.x < this->pos.x) {
+ this->rot.y = 0xE000;
+ this->direction = 0; }
+ else {
+ this->rot.y = 0x2000;
+ this->direction = 1; }
+ }
+
PlaySound(this, 0x21F);
}
@@ -357,9 +391,13 @@ void daBalboa_c::executeState_ManholeUp() {
this->bodyModel._vf1C();
if (this->timer < 30) {
- this->pos.y += 0.5; } // Height is 80 pixels, move up 15 pixels.
+ if (this->upsideDown == 0) {
+ this->pos.y += 0.6; } // Height is 72 pixels, move up 18 pixels.
+ else {
+ this->pos.y -= 0.6; } // Height is 72 pixels, move down 18 pixels.
+ }
- if (this->timer > 90) {
+ if (this->timer > 60) {
doStateChange(&StateID_HeadPoke); }
this->timer += 1;
@@ -385,8 +423,12 @@ void daBalboa_c::beginState_HeadPoke() {
void daBalboa_c::executeState_HeadPoke() {
if (this->timer < 30) {
- this->pos.y += 1.0; } // Height is 80 pixels, move up another 30 pixels.
-
+ if (this->upsideDown == 0) {
+ this->pos.y += 0.6; } // Height is 72 pixels, move up 20 pixels.
+ else {
+ this->pos.y -= 0.6; } // Height is 72 pixels, move down 20 pixels.
+ }
+
if (this->timer > 90) {
doStateChange(&StateID_AllOut); }
@@ -406,7 +448,7 @@ void daBalboa_c::beginState_AllOut() {
nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr("throw_3");
this->anmThrow_3.bind(&this->bodyModel, anmChr, 1);
- this->bodyModel.bindAnim(&this->anmThrow_1, 0.0);
+ this->bodyModel.bindAnim(&this->anmThrow_3, 0.0);
this->anmThrow_3.setUpdateRate(1.0);
this->timer = 0;
@@ -419,9 +461,13 @@ void daBalboa_c::executeState_AllOut() {
this->bodyModel._vf1C();
if (this->timer < 30) {
- this->pos.y += 1.2; } // Height is 80 pixels, move up another 35 pixels.
+ if (this->upsideDown == 0) {
+ this->pos.y += 1.2; } // Height is 72 pixels, move up last 36 pixels.
+ else {
+ this->pos.y -= 1.2; } // Height is 72 pixels, move down last 36 pixels.
+ }
- if (this->timer > 90) {
+ if (this->timer > 45) {
int randChoice;
randChoice = GenerateRandomNumber(2);
@@ -611,7 +657,11 @@ void daBalboa_c::beginState_BackDown() {
void daBalboa_c::executeState_BackDown() {
if (this->timer < 60) {
- this->pos.y -= 2.6667; } // Height is 80 pixels, move down 80 pixels.
+ if (this->upsideDown == 0) {
+ this->pos.y -= 1.2; } // Height is 72 pixels, move down
+ else {
+ this->pos.y += 1.2; } // Height is 72 pixels, move up
+ }
if (this->timer > 90) {
doStateChange(&StateID_ManholeUp); }