summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorColin Noga <Tempus@chronometry.ca>2012-12-04 02:09:02 -0600
committerColin Noga <Tempus@chronometry.ca>2012-12-04 02:09:02 -0600
commit42069c9299c18891a81efeeb45d19007d80c70c1 (patch)
treede7263f7bd51366695f5f0a8fc6e2a1717d4fb5b /src
parente8ffbf5bdc704c4efb426f4d1c10b21527debdc3 (diff)
downloadkamek-42069c9299c18891a81efeeb45d19007d80c70c1.tar.gz
kamek-42069c9299c18891a81efeeb45d19007d80c70c1.zip
fixed a bunch of bugs, shy guy, mega goomba, challenge star, topman boss
Diffstat (limited to '')
-rw-r--r--src/bossMegaGoomba.cpp20
-rw-r--r--src/bossTopman.cpp4
-rw-r--r--src/challengeStar.cpp2
-rw-r--r--src/shyguy.cpp78
4 files changed, 53 insertions, 51 deletions
diff --git a/src/bossMegaGoomba.cpp b/src/bossMegaGoomba.cpp
index 1350ee7..e67caac 100644
--- a/src/bossMegaGoomba.cpp
+++ b/src/bossMegaGoomba.cpp
@@ -77,6 +77,7 @@ class daMegaGoomba_c : public dEn_c {
bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther);
void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther);
void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);
+ void collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther);
void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther);
void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);
void collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);
@@ -264,11 +265,14 @@ void daMegaGoomba_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOth
}
}
void daMegaGoomba_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {
- apOther->someFlagByte |= 2;
-
- if(this->takeHit(1))
- doStateChange(&StateID_DieFall);
+ VEC2 eSpeed = {speed.x, speed.y};
+ killWithSpecifiedState(apOther->owner, &eSpeed, &dEn_c::StateID_DieOther);
}
+void daMegaGoomba_c::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) {
+ VEC2 eSpeed = {speed.x, speed.y};
+ killWithSpecifiedState(apOther->owner, &eSpeed, &dEn_c::StateID_DieOther);
+}
+
void daMegaGoomba_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {}
bool daMegaGoomba_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { return false; }
void daMegaGoomba_c::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_DieFall); }
@@ -276,7 +280,10 @@ void daMegaGoomba_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePh
if(this->takeHit(1))
doStateChange(&StateID_DieFall);
}
-void daMegaGoomba_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) {}
+void daMegaGoomba_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) {
+ if(this->takeHit(1))
+ doStateChange(&StateID_DieFall);
+}
void daMegaGoomba_c::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { }
void daMegaGoomba_c::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther) {}
void daMegaGoomba_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {
@@ -301,6 +308,7 @@ void daMegaGoomba_c::bindAnimChr_and_setUpdateRate(const char* name, int unk, fl
void daMegaGoomba_c::dieFall_Begin() {
this->dEn_c::dieFall_Begin();
+ PlaySound(this, SE_EMY_KURIBO_L_DAMAGE_03);
}
void daMegaGoomba_c::dieFall_Execute() {
@@ -612,6 +620,8 @@ void daMegaGoomba_c::dieOther_Begin() {
speed.x = speed.y = speed.z = 0.0f;
removeMyActivePhysics();
+ PlaySound(this, SE_EMY_KURIBO_L_SPLIT_HPDP);
+
rot.y = 0;
counter_500 = 60;
}
diff --git a/src/bossTopman.cpp b/src/bossTopman.cpp
index d76af1a..5888859 100644
--- a/src/bossTopman.cpp
+++ b/src/bossTopman.cpp
@@ -332,9 +332,9 @@ int daDreidel::onCreate() {
this->speed.x = 0.0;
this->speed.y = 0.0;
- this->max_speed.x = 0.8;
+ this->max_speed.x = 1.1;
this->x_speed_inc = 0.0;
- this->XSpeed = 0.8;
+ this->XSpeed = 1.1;
this->isInSpace = this->settings & 0xF;
this->fromBehind = 0;
diff --git a/src/challengeStar.cpp b/src/challengeStar.cpp
index 342dd1b..7724bb9 100644
--- a/src/challengeStar.cpp
+++ b/src/challengeStar.cpp
@@ -81,7 +81,7 @@ int dChallengeStar::onCreate() {
ActivePhysics::Info HitMeBaby;
HitMeBaby.xDistToCenter = 0.0;
- HitMeBaby.yDistToCenter = -4.0;
+ HitMeBaby.yDistToCenter = 3.0;
HitMeBaby.xDistToEdge = 6.0;
HitMeBaby.yDistToEdge = 6.0;
HitMeBaby.category1 = 0x5;
diff --git a/src/shyguy.cpp b/src/shyguy.cpp
index bc889f8..f78cb4d 100644
--- a/src/shyguy.cpp
+++ b/src/shyguy.cpp
@@ -58,7 +58,7 @@ class daShyGuy : public dEn_c {
mEf::es2 effect;
- int type;
+
int timer;
int jumpCounter;
int baln;
@@ -106,15 +106,12 @@ class daShyGuy : public dEn_c {
void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);
void collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther);
- void _vf108(ActivePhysics *apThis, ActivePhysics *apOther);
- void _vf110(ActivePhysics *apThis, ActivePhysics *apOther);
- void collisionCat8_FencePunch(ActivePhysics *apThis, ActivePhysics *apOther);
- void _vf120(ActivePhysics *apThis, ActivePhysics *apOther);
void collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther);
void _vf148();
void _vf14C();
bool CreateIceActors();
+ void addScoreWhenHit(void *other);
USING_STATES(daShyGuy);
DECLARE_STATE(Walk);
@@ -138,6 +135,7 @@ class daShyGuy : public dEn_c {
DECLARE_STATE(Die);
public: void popBalloon();
+ int type;
};
daShyGuy *daShyGuy::build() {
@@ -185,9 +183,15 @@ daShyGuy *daShyGuy::build() {
// Collision callback to help shy guy not die at inappropriate times and ruin the dinner
void shyCollisionCallback(ActivePhysics *apThis, ActivePhysics *apOther) {
- if (apOther->owner->name != 89) {
- dEn_c::collisionCallback(apThis, apOther);
+ int t = ((daShyGuy*)apThis->owner)->type;
+ if (t == 6 || t == 7 || t == 8) {
+ // Should I do something about ice blocks here?
+ ((daShyGuy*)apThis->owner)->popBalloon();
}
+
+ if ((apOther->owner->name == 89) && (t == 5)) { return; }
+
+ dEn_c::collisionCallback(apThis, apOther);
}
void ChucklesAndKnuckles(ActivePhysics *apThis, ActivePhysics *apOther) {
@@ -231,9 +235,6 @@ daShyGuy *daShyGuy::build() {
this->dEn_c::playerCollision(apThis, apOther);
this->_vf220(apOther->owner);
}
- deathInfo.isDead = 0;
- this->flags_4FC |= (1<<(31-7));
- this->counter_504[apOther->owner->which_player] = 0;
return;
}
else { // Ballooneers
@@ -241,11 +242,6 @@ daShyGuy *daShyGuy::build() {
deathState = &StateID_Die;
}
- // fix multiple player collisions via megazig
- deathInfo.isDead = 0;
- this->flags_4FC |= (1<<(31-7));
- this->counter_504[apOther->owner->which_player] = 0;
-
if (this->isDown == 0) {
hitType = usedForDeterminingStatePress_or_playerCollision(this, apThis, apOther, 2);
@@ -263,7 +259,6 @@ daShyGuy *daShyGuy::build() {
else { // Shy Guy is in throwy mode - kill it with fire
this->playEnemyDownSound1();
doStateChange(deathState);
- deathInfo.isDead = 1;
}
}
else if(hitType == 3) { // spinning jump or whatever?
@@ -275,7 +270,6 @@ daShyGuy *daShyGuy::build() {
else { // Shy Guy is in throwy mode - kill it with fire
this->playEnemyDownSound1();
doStateChange(deathState);
- deathInfo.isDead = 1;
}
}
else if(hitType == 0) {
@@ -286,26 +280,26 @@ daShyGuy *daShyGuy::build() {
}
void daShyGuy::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); }
- void daShyGuy::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { PlaySound(this, SE_EMY_DOWN); doStateChange(&StateID_Die); }
- void daShyGuy::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { PlaySound(this, SE_EMY_DOWN); doStateChange(&StateID_Die); }
- void daShyGuy::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { PlaySound(this, SE_EMY_DOWN); doStateChange(&StateID_Die); }
- void daShyGuy::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Die); }
-
- void daShyGuy::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Die); }
- void daShyGuy::collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Die); }
- void daShyGuy::_vf108(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Die); }
- void daShyGuy::_vf110(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Die); }
- void daShyGuy::collisionCat8_FencePunch(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Die); }
- void daShyGuy::_vf120(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Die); }
- void daShyGuy::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Die); }
-
- void daShyGuy::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_DieSmoke); }
+ void daShyGuy::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {
+ PlaySound(this, SE_EMY_DOWN);
+ SpawnEffect("Wm_mr_hardhit", 0, &pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0});
+ this->addScoreWhenHit(this);
+ doStateChange(&StateID_Die);
+ }
+ void daShyGuy::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { this->collisionCatD_GroundPound(apThis, apOther); }
+ void daShyGuy::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { this->collisionCatD_GroundPound(apThis, apOther); }
+ void daShyGuy::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { this->collisionCatD_GroundPound(apThis, apOther); }
+ void daShyGuy::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){ this->collisionCatD_GroundPound(apThis, apOther); }
+ void daShyGuy::collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther){ this->collisionCatD_GroundPound(apThis, apOther); }
+ void daShyGuy::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther){ this->collisionCatD_GroundPound(apThis, apOther); }
+ void daShyGuy::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { this->collisionCatD_GroundPound(apThis, apOther); }
void daShyGuy::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){
dEn_c::collisionCat3_StarPower(apThis, apOther);
doStateChange(&StateID_Die);
}
+ void daShyGuy::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_DieSmoke); }
void daShyGuy::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {
this->damage += 1;
@@ -359,18 +353,16 @@ daShyGuy *daShyGuy::build() {
extern "C" void __destroy_arr(void*, void(*)(void), int, int);
//extern "C" __destroy_arr(struct DoSomethingCool, void(*)(void), int cnt, int bar);
- bool daShyGuy::CreateIceActors()
- {
- struct DoSomethingCool my_struct = { 0, this->pos, {1.0, 1.5, 1.5}, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
+ bool daShyGuy::CreateIceActors() {
+ struct DoSomethingCool my_struct = { 0, this->pos, {1.2, 1.5, 1.5}, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
+ if (type > 8) { my_struct.scale = (Vec3){2.4, 3.0, 3.0}; }
this->frzMgr.Create_ICEACTORs( (void*)&my_struct, 1 );
__destroy_arr( (void*)&my_struct, sub_80024C20, 0x3C, 1 );
return true;
}
-
-
- void daShyGuy::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {
- doStateChange(&StateID_Die);
+ void daShyGuy::addScoreWhenHit(void *other) {
+ if (type < 9) { dEn_c::addScoreWhenHit(other); }
}
bool daShyGuy::calculateTileCollisions() {
@@ -471,9 +463,9 @@ int daShyGuy::onCreate() {
ActivePhysics::Info iballoonPhysics;
iballoonPhysics.xDistToCenter = 0.0;
- iballoonPhysics.yDistToCenter = -24.0;
- iballoonPhysics.xDistToEdge = 20.0;
- iballoonPhysics.yDistToEdge = 12.0;
+ iballoonPhysics.yDistToCenter = -18.0;
+ iballoonPhysics.xDistToEdge = 16.0;
+ iballoonPhysics.yDistToEdge = 15.0;
iballoonPhysics.category1 = 0x3;
iballoonPhysics.category2 = 0x0;
@@ -591,7 +583,7 @@ int daShyGuy::onCreate() {
HitMeBaby.xDistToCenter = 0.0;
HitMeBaby.yDistToCenter = 24.0;
- HitMeBaby.xDistToEdge = 28.0;
+ HitMeBaby.xDistToEdge = 20.0;
HitMeBaby.yDistToEdge = 24.0;
// giantRider.init(this, -19.5f, 18.0f, 19.5f, 18.0f);
@@ -607,7 +599,7 @@ int daShyGuy::onCreate() {
HitMeBaby.xDistToCenter = 0.0;
HitMeBaby.yDistToCenter = 12.0;
- HitMeBaby.xDistToEdge = 14.0;
+ HitMeBaby.xDistToEdge = 10.0;
HitMeBaby.yDistToEdge = 12.0;
}