summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorColin Noga <Tempus@chronometry.ca>2012-12-13 21:40:34 -0600
committerColin Noga <Tempus@chronometry.ca>2012-12-13 21:40:34 -0600
commit1ecc9bbfe65096b6f5601385b24095afcc918563 (patch)
treef3ac5050f24b6ab3ac03d5d1a56e066fcc405272 /src
parentac0ced5b71d2cf2bce444fce88e7b359ac08815c (diff)
downloadkamek-1ecc9bbfe65096b6f5601385b24095afcc918563.tar.gz
kamek-1ecc9bbfe65096b6f5601385b24095afcc918563.zip
Lots of bug fixes for various bosses, a thundercloud fix, and level special timer improvements.
Diffstat (limited to 'src')
-rw-r--r--src/boss.cpp4
-rw-r--r--src/bossFlameThrower.cpp4
-rw-r--r--src/bossRamboo.cpp61
-rw-r--r--src/levelspecial.cpp172
-rwxr-xr-xsrc/meteor.cpp25
-rwxr-xr-xsrc/thundercloud.cpp4
6 files changed, 89 insertions, 181 deletions
diff --git a/src/boss.cpp b/src/boss.cpp
index 72e8121..df553fb 100644
--- a/src/boss.cpp
+++ b/src/boss.cpp
@@ -113,12 +113,10 @@ bool ShrinkBoss(daBoss *actor, Vec *pos, float scale, int timer) {
// actor->pos.y += 2.0;
-
- if (actor->timer == 30) {
+ if (timer == 30) {
SpawnEffect("Wm_ob_starcoinget_gl", 0, pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0});
SpawnEffect("Wm_mr_vshipattack_hosi", 0, pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0});
SpawnEffect("Wm_ob_keyget01_b", 0, pos, &(S16Vec){0,0,0}, &(Vec){2.0, 2.0, 2.0});
- actor->timer = 0;
}
if (actor->scale.x < 0) { return true; }
diff --git a/src/bossFlameThrower.cpp b/src/bossFlameThrower.cpp
index 871625a..78f93fd 100644
--- a/src/bossFlameThrower.cpp
+++ b/src/bossFlameThrower.cpp
@@ -31,9 +31,9 @@ int daKoopaBreath::onCreate() {
ActivePhysics::Info GreatBalls;
GreatBalls.xDistToCenter = 0.0;
- GreatBalls.yDistToCenter = 18.0;
+ GreatBalls.yDistToCenter = 0.0;
GreatBalls.xDistToEdge = 38.0;
- GreatBalls.yDistToEdge = 38.0;
+ GreatBalls.yDistToEdge = 28.0;
GreatBalls.category1 = 0x3;
GreatBalls.category2 = 0x0;
diff --git a/src/bossRamboo.cpp b/src/bossRamboo.cpp
index ea97629..bf27d51 100644
--- a/src/bossRamboo.cpp
+++ b/src/bossRamboo.cpp
@@ -4,6 +4,7 @@
#include <sfx.h>
#include <stage.h>
#include "boss.h"
+#include "player.h"
class daRamboo_c : public daBoss {
int onCreate();
@@ -69,8 +70,12 @@ CREATE_STATE(daRamboo_c, Wait);
CREATE_STATE(daRamboo_c, Flee);
CREATE_STATE(daRamboo_c, Outro);
+extern "C" void *EN_LandbarrelPlayerCollision(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther);
-void daRamboo_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); }
+void daRamboo_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) {
+ EN_LandbarrelPlayerCollision(this, apThis, apOther);
+ DamagePlayer(this, apThis, apOther);
+}
void daRamboo_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {
SpawnEffect("Wm_en_obakedoor_sm", 0, &apOther->owner->pos, &(S16Vec){0,0,0}, &(Vec){0.5, 0.5, 0.5});
this->pos.x += 6.0;
@@ -156,13 +161,14 @@ int daRamboo_c::onCreate() {
this->scale = (Vec){2.0, 2.0, 2.0};
+ this->aPhysics.collisionCheckType = 1;
ActivePhysics::Info HitMeBaby;
HitMeBaby.xDistToCenter = 160.0;
HitMeBaby.yDistToCenter = 80.0;
- HitMeBaby.xDistToEdge = 148.0;
- HitMeBaby.yDistToEdge = 148.0;
+ HitMeBaby.xDistToEdge = 132.0;
+ HitMeBaby.yDistToEdge = 132.0;
HitMeBaby.category1 = 0x3;
HitMeBaby.category2 = 0x0;
@@ -173,15 +179,6 @@ int daRamboo_c::onCreate() {
this->aPhysics.initWithStruct(this, &HitMeBaby);
- this->aPhysics.collisionCheckType = 2;
- this->aPhysics._8 = 48.0;
- this->aPhysics._C = 48.0;
- this->aPhysics._18 = 48.0;
- this->aPhysics.trpValue0 = 48.0;
- this->aPhysics.trpValue1 = 48.0;
- this->aPhysics.trpValue2 = 48.0;
- this->aPhysics.trpValue3 = 48.0;
-
this->aPhysics.addToList();
this->Baseline = this->pos.y;
@@ -237,6 +234,7 @@ int daRamboo_c::onExecute() {
this->fogSrt.setFrameForEntry(1.0, 0);
if (dFlagMgr_c::instance->flags & this->eventFlag) {
+ dFlagMgr_c::instance->flags = dFlagMgr_c::instance->flags && this->eventFlag;
doStateChange(&StateID_Outro);
}
@@ -303,6 +301,23 @@ void daRamboo_c::endState_Grow() {
+float RightmostPlayerPos() {
+ dStageActor_c* current;
+ current->pos.x = 0.0;
+
+ for(char ii = 0; ii < 4; ii++) {
+ dStageActor_c* player = GetSpecificPlayerActor(ii);
+ if(!player) {
+ continue;
+ }
+ // actor->pos.x, actor->pos.y, actor->pos.z,
+ // player->pos.x, player->pos.y, player->pos.z);
+ if(player->pos.x > current->pos.x) {
+ current = player;
+ }
+ }
+ return current->pos.x;
+}
// Advance State
@@ -325,11 +340,17 @@ void daRamboo_c::executeState_Advance() {
if (this->anmWaitA.isAnimationDone()) {
this->anmWaitA.setCurrentFrame(0.0); }
- this->pos.x -= this->timer / 48.0;
+ float px = RightmostPlayerPos();
+
+ if ((px - 132.0) < this->pos.x) {
+ this->pos.x -= this->timer / 28.0; }
+ else {
+ this->pos.x = (px - 132.0); }
+
this->pos.y = this->Baseline + sin(this->ytimer * 3.14 / 192) * 36;
- if (this->timer >= 48) { this->timer = 47; }
+ if (this->timer >= 32) { this->timer = 31; }
if (this->ytimer >= 384) { this->ytimer = 0; }
PlaySound(this, SE_EMY_TERESA);
@@ -423,7 +444,7 @@ void daRamboo_c::executeState_Flee() {
this->anmWaitB.setUpdateRate(1.0);
}
- this->pos.x += (60 - this->timer) / 6;
+ this->pos.x += (60 - this->timer) / 8;
if ((this->timer > 60) && (this->anmWaitB.isAnimationDone())) {
@@ -454,7 +475,6 @@ void daRamboo_c::beginState_Outro() {
OutroSetup(this);
}
void daRamboo_c::executeState_Outro() {
-
if (this->anmWaitB.isAnimationDone())
this->anmWaitB.setCurrentFrame(0.0);
@@ -467,15 +487,16 @@ void daRamboo_c::executeState_Outro() {
PlayerVictoryCries(this);
}
- this->timer += 1;
+ this->timer = timer + 1;
return;
}
bool ret;
Vec tempPos = (Vec){this->pos.x + 160.0, this->pos.y - 80.0, 5500.0};
ret = ShrinkBoss(this, &tempPos, 15.0, this->timer);
+ pos.y -= 2.0;
- if (ret == true) {
+ if (ret) {
BossExplode(this, &tempPos);
this->dying = 1;
this->timer = 0;
@@ -484,8 +505,8 @@ void daRamboo_c::executeState_Outro() {
PlaySound(this, SE_EMY_BIG_TERESA_DEAD);
}
- this->timer += 1;
-
+ timer = timer + 1;
+ OSReport("Timer: %d", timer);
}
void daRamboo_c::endState_Outro() { }
diff --git a/src/levelspecial.cpp b/src/levelspecial.cpp
index adadc50..25e2130 100644
--- a/src/levelspecial.cpp
+++ b/src/levelspecial.cpp
@@ -17,11 +17,12 @@ struct LevelSpecial {
u8 effect; // 0x3D5
u8 lastEvState; // 0x3D6
u8 func; // 0x3D7
+ u32 keepTime;
+ u32 setTime;
};
extern u16 TimeStopFlag;
-extern u32 TimerBranch;
extern u32 AlwaysDrawFlag;
extern u32 AlwaysDrawBranch;
@@ -38,6 +39,10 @@ extern char SizerOn;
extern char ZOrderOn;
extern int GlobalStarsCollected;
+extern u32 GameTimer;
+
+#define time *(u32*)((GameTimer) + 0x4)
+
float GlobalSizeFloatModifications [] = {1, 0.25, 0.5, 0.75, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5, 6, 7, 8, 10 };
float GlobalRiderFloatModifications [] = {1, 0.6, 0.7, 0.9, 1, 1, 1, 1.1, 1.25, 1.5, 2, 2.5, 3, 3.5, 4, 5};
@@ -56,7 +61,6 @@ fBase_c *FindActorByID(u32 id);
bool ResetAfterLevel(void) {
// TimeStopFlag = 0;
- TimerBranch = 0x3403FFA4;
MarioDescentRate = -4;
MarioJumpMax = 3.628;
MarioJumpArc = 2.5;
@@ -77,11 +81,12 @@ bool LevelSpecial_Create(LevelSpecial *self) {
char eventNum = (self->settings >> 24) & 0xFF;
self->eventFlag = (u64)1 << (eventNum - 1);
-
+ self->keepTime = 0;
self->type = (self->settings) & 15;
self->effect = (self->settings >> 4) & 15;
-
+ self->setTime = (self->settings >> 8) & 0xFFFF;
+
self->lastEvState = 0xFF;
LevelSpecial_Update(self);
@@ -90,6 +95,9 @@ bool LevelSpecial_Create(LevelSpecial *self) {
}
bool LevelSpecial_Execute(LevelSpecial *self) {
+ if (self->keepTime > 0) {
+ time = self->keepTime; }
+
LevelSpecial_Update(self);
return true;
}
@@ -116,7 +124,7 @@ void LevelSpecial_Update(LevelSpecial *self) {
// break;
case 2: // Stop Timer
- TimerBranch = 0x7C601B78;
+ self->keepTime = time;
break;
@@ -137,81 +145,9 @@ void LevelSpecial_Update(LevelSpecial *self) {
}
break;
-// case 4: // Mario Size
-// dAc_Py_c *Mario;
-// if (self->effect == 0) //Super Size
-// {
-// MarioSize = 4.0;
-
-// for(int n=0; n<4; n++) {
-// OSReport("Changing Physics for Player %d\n", n);
-// Mario = GetSpecificPlayerActor(n);
-// OSReport("Player Actor at %08x\n", Mario);
-// if(Mario == 0)
-// continue;
-// // Mario->aPhysics.info.xDistToCenter = Mario->aPhysics.info.xDistToCenter * 4.0;
-// // Mario->aPhysics.info.xDistToEdge = Mario->aPhysics.info.xDistToEdge * 4.0;
-// // Mario->aPhysics.info.yDistToCenter = Mario->aPhysics.info.yDistToCenter * 4.0;
-// // Mario->aPhysics.info.yDistToEdge = Mario->aPhysics.info.yDistToEdge * 4.0;
-// //
-// Mario->bPhysics.info.xDistToCenter = Mario->bPhysics.info.xDistToCenter * 4.0;
-// Mario->bPhysics.info.xDistToEdge = Mario->bPhysics.info.xDistToEdge * 4.0;
-// Mario->bPhysics.info.yDistToCenter = Mario->bPhysics.info.yDistToCenter * 4.0;
-// Mario->bPhysics.info.yDistToEdge = Mario->bPhysics.info.yDistToEdge * 4.0;
-// //
-// // Mario->cPhysics.info.xDistToCenter = Mario->cPhysics.info.xDistToCenter * 4.0;
-// // Mario->cPhysics.info.xDistToEdge = Mario->cPhysics.info.xDistToEdge * 4.0;
-// // Mario->cPhysics.info.yDistToCenter = Mario->cPhysics.info.yDistToCenter * 4.0;
-// // Mario->cPhysics.info.yDistToEdge = Mario->cPhysics.info.yDistToEdge * 4.0;
-// //
-// // Mario->dPhysics.info.xDistToCenter = Mario->dPhysics.info.xDistToCenter * 4.0;
-// // Mario->dPhysics.info.xDistToEdge = Mario->dPhysics.info.xDistToEdge * 4.0;
-// // Mario->dPhysics.info.yDistToCenter = Mario->dPhysics.info.yDistToCenter * 4.0;
-// // Mario->dPhysics.info.yDistToEdge = Mario->dPhysics.info.yDistToEdge * 4.0;
-// //
-// // Mario->ePhysics.info.xDistToCenter = Mario->ePhysics.info.xDistToCenter * 4.0;
-// // Mario->ePhysics.info.xDistToEdge = Mario->ePhysics.info.xDistToEdge * 4.0;
-// // Mario->ePhysics.info.yDistToCenter = Mario->ePhysics.info.yDistToCenter * 4.0;
-// // Mario->ePhysics.info.yDistToEdge = Mario->ePhysics.info.yDistToEdge * 4.0;
-// }
-// }
-
-
-// else //Half-Pint
-// {
-// MarioSize = 0.25;
-
-// for(int n=0; n<4; n++) {
-// Mario = GetSpecificPlayerActor(n);
-// if(Mario == 0)
-// continue;
-// Mario->aPhysics.info.xDistToCenter = Mario->aPhysics.info.xDistToCenter * 0.25;
-// Mario->aPhysics.info.xDistToEdge = Mario->aPhysics.info.xDistToEdge * 0.25;
-// Mario->aPhysics.info.yDistToCenter = Mario->aPhysics.info.yDistToCenter * 0.25;
-// Mario->aPhysics.info.yDistToEdge = Mario->aPhysics.info.yDistToEdge * 0.25;
-
-// Mario->bPhysics.info.xDistToCenter = Mario->bPhysics.info.xDistToCenter * 0.25;
-// Mario->bPhysics.info.xDistToEdge = Mario->bPhysics.info.xDistToEdge * 0.25;
-// Mario->bPhysics.info.yDistToCenter = Mario->bPhysics.info.yDistToCenter * 0.25;
-// Mario->bPhysics.info.yDistToEdge = Mario->bPhysics.info.yDistToEdge * 0.25;
-
-// Mario->cPhysics.info.xDistToCenter = Mario->cPhysics.info.xDistToCenter * 0.25;
-// Mario->cPhysics.info.xDistToEdge = Mario->cPhysics.info.xDistToEdge * 0.25;
-// Mario->cPhysics.info.yDistToCenter = Mario->cPhysics.info.yDistToCenter * 0.25;
-// Mario->cPhysics.info.yDistToEdge = Mario->cPhysics.info.yDistToEdge * 0.25;
-
-// Mario->dPhysics.info.xDistToCenter = Mario->dPhysics.info.xDistToCenter * 0.25;
-// Mario->dPhysics.info.xDistToEdge = Mario->dPhysics.info.xDistToEdge * 0.25;
-// Mario->dPhysics.info.yDistToCenter = Mario->dPhysics.info.yDistToCenter * 0.25;
-// Mario->dPhysics.info.yDistToEdge = Mario->dPhysics.info.yDistToEdge * 0.25;
-
-// Mario->ePhysics.info.xDistToCenter = Mario->ePhysics.info.xDistToCenter * 0.25;
-// Mario->ePhysics.info.xDistToEdge = Mario->ePhysics.info.xDistToEdge * 0.25;
-// Mario->ePhysics.info.yDistToCenter = Mario->ePhysics.info.yDistToCenter * 0.25;
-// Mario->ePhysics.info.yDistToEdge = Mario->ePhysics.info.yDistToEdge * 0.25;
-// }
-// }
-// break;
+ case 4: // Set Time
+ time = (self->setTime << 0xC) - 1; // Possibly - 0xFFF?
+ break;
case 5: // Global Enemy Size
@@ -258,7 +194,7 @@ void LevelSpecial_Update(LevelSpecial *self) {
// break;
case 2: // Stop Timer
- TimerBranch = 0x3403FFA4;
+ self->keepTime = 0;
break;
@@ -269,78 +205,8 @@ void LevelSpecial_Update(LevelSpecial *self) {
MarioJumpMax = 3.628;
break;
- // case 4: // Mario Size
- // dAc_Py_c *Mario;
-// if (self->effect == 0) //Super Size
-// {
-// MarioSize = 4.0;
-//
-// for(int n=0; n<4; n++) {
-// Mario = GetSpecificPlayerActor(n);
-// if(Mario == 0)
-// continue;
-// Mario->aPhysics.info.xDistToCenter = Mario->aPhysics.info.xDistToCenter / 4.0;
-// Mario->aPhysics.info.xDistToEdge = Mario->aPhysics.info.xDistToEdge / 4.0;
-// Mario->aPhysics.info.yDistToCenter = Mario->aPhysics.info.yDistToCenter / 4.0;
-// Mario->aPhysics.info.yDistToEdge = Mario->aPhysics.info.yDistToEdge / 4.0;
-//
-// Mario->bPhysics.info.xDistToCenter = Mario->bPhysics.info.xDistToCenter / 4.0;
-// Mario->bPhysics.info.xDistToEdge = Mario->bPhysics.info.xDistToEdge / 4.0;
-// Mario->bPhysics.info.yDistToCenter = Mario->bPhysics.info.yDistToCenter / 4.0;
-// Mario->bPhysics.info.yDistToEdge = Mario->bPhysics.info.yDistToEdge / 4.0;
-//
-// Mario->cPhysics.info.xDistToCenter = Mario->cPhysics.info.xDistToCenter / 4.0;
-// Mario->cPhysics.info.xDistToEdge = Mario->cPhysics.info.xDistToEdge / 4.0;
-// Mario->cPhysics.info.yDistToCenter = Mario->cPhysics.info.yDistToCenter / 4.0;
-// Mario->cPhysics.info.yDistToEdge = Mario->cPhysics.info.yDistToEdge / 4.0;
-//
-// Mario->dPhysics.info.xDistToCenter = Mario->dPhysics.info.xDistToCenter / 4.0;
-// Mario->dPhysics.info.xDistToEdge = Mario->dPhysics.info.xDistToEdge / 4.0;
-// Mario->dPhysics.info.yDistToCenter = Mario->dPhysics.info.yDistToCenter / 4.0;
-// Mario->dPhysics.info.yDistToEdge = Mario->dPhysics.info.yDistToEdge / 4.0;
-//
-// Mario->ePhysics.info.xDistToCenter = Mario->ePhysics.info.xDistToCenter / 4.0;
-// Mario->ePhysics.info.xDistToEdge = Mario->ePhysics.info.xDistToEdge / 4.0;
-// Mario->ePhysics.info.yDistToCenter = Mario->ePhysics.info.yDistToCenter / 4.0;
-// Mario->ePhysics.info.yDistToEdge = Mario->ePhysics.info.yDistToEdge / 4.0;
-// }
-// }
-//
-// else //Half-Pint
-// {
-// MarioSize = 0.25;
-//
-// for(int n=0; n<4; n++) {
-// Mario = GetSpecificPlayerActor(n);
-// if(Mario == 0)
-// continue;
-// Mario->aPhysics.info.xDistToCenter = Mario->aPhysics.info.xDistToCenter / 0.25;
-// Mario->aPhysics.info.xDistToEdge = Mario->aPhysics.info.xDistToEdge / 0.25;
-// Mario->aPhysics.info.yDistToCenter = Mario->aPhysics.info.yDistToCenter / 0.25;
-// Mario->aPhysics.info.yDistToEdge = Mario->aPhysics.info.yDistToEdge / 0.25;
-//
-// Mario->bPhysics.info.xDistToCenter = Mario->bPhysics.info.xDistToCenter / 0.25;
-// Mario->bPhysics.info.xDistToEdge = Mario->bPhysics.info.xDistToEdge / 0.25;
-// Mario->bPhysics.info.yDistToCenter = Mario->bPhysics.info.yDistToCenter / 0.25;
-// Mario->bPhysics.info.yDistToEdge = Mario->bPhysics.info.yDistToEdge / 0.25;
-//
-// Mario->cPhysics.info.xDistToCenter = Mario->cPhysics.info.xDistToCenter / 0.25;
-// Mario->cPhysics.info.xDistToEdge = Mario->cPhysics.info.xDistToEdge / 0.25;
-// Mario->cPhysics.info.yDistToCenter = Mario->cPhysics.info.yDistToCenter / 0.25;
-// Mario->cPhysics.info.yDistToEdge = Mario->cPhysics.info.yDistToEdge / 0.25;
-//
-// Mario->dPhysics.info.xDistToCenter = Mario->dPhysics.info.xDistToCenter / 0.25;
-// Mario->dPhysics.info.xDistToEdge = Mario->dPhysics.info.xDistToEdge / 0.25;
-// Mario->dPhysics.info.yDistToCenter = Mario->dPhysics.info.yDistToCenter / 0.25;
-// Mario->dPhysics.info.yDistToEdge = Mario->dPhysics.info.yDistToEdge / 0.25;
-//
-// Mario->ePhysics.info.xDistToCenter = Mario->ePhysics.info.xDistToCenter / 0.25;
-// Mario->ePhysics.info.xDistToEdge = Mario->ePhysics.info.xDistToEdge / 0.25;
-// Mario->ePhysics.info.yDistToCenter = Mario->ePhysics.info.yDistToCenter / 0.25;
-// Mario->ePhysics.info.yDistToEdge = Mario->ePhysics.info.yDistToEdge / 0.25;
-// }
-// }
- // break;
+ case 4: // Mario Size
+ break;
case 5: // Global Enemy Size
SizerOn = 0;
diff --git a/src/meteor.cpp b/src/meteor.cpp
index 91e90c0..aa76f5d 100755
--- a/src/meteor.cpp
+++ b/src/meteor.cpp
@@ -27,6 +27,9 @@ class dMeteor : public dEn_c {
void updateModelMatrices();
void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);
void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);
+
+ public:
+ void kill();
};
dMeteor *dMeteor::build() {
@@ -47,6 +50,18 @@ void dMeteor::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) {
DamagePlayer(this, apThis, apOther);
}
+void MeteorPhysicsCallback(dMeteor *self, dEn_c *other) {
+ if (other->name == 657) {
+ OSReport("CANNON COLLISION");
+
+ SpawnEffect("Wm_en_burst_m", 0, &other->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0});
+ PlaySound(other, SE_OBJ_TARU_BREAK);
+ other->Delete(1);
+
+ self->kill();
+ }
+}
+
void dMeteor::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {
DamagePlayer(this, apThis, apOther);
}
@@ -97,7 +112,7 @@ int dMeteor::onCreate() {
this->aPhysics.addToList();
}
- MakeItRound.baseSetup(this, 0, 0, 0, 1, 0);
+ MakeItRound.baseSetup(this, (void*)&MeteorPhysicsCallback, 0, 0, 1, 0);
MakeItRound.x = 0.0;
MakeItRound.y = 0.0;
@@ -157,4 +172,12 @@ void dMeteor::updateModelMatrices() {
bodyModel.calcWorld(false);
}
+void dMeteor::kill() {
+ PlaySound(this, SE_OBJ_ROCK_LAND);
+ SpawnEffect("Wm_ob_cmnboxsmoke", 0, &pos, &rot, &scale);
+ SpawnEffect("Wm_ob_cmnboxgrain", 0, &pos, &rot, &scale);
+
+ this->Delete(1);
+}
+
diff --git a/src/thundercloud.cpp b/src/thundercloud.cpp
index a84340f..4c7e647 100755
--- a/src/thundercloud.cpp
+++ b/src/thundercloud.cpp
@@ -202,7 +202,7 @@ int dThunderCloud::onCreate() {
SetupTextures_Enemy(&bodyModel, 0);
bool ret;
- nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr("thundershoot");
+ nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr("wait_cloud");
ret = this->anm.setup(mdl, anmChr, &this->allocator, 0);
allocator.unlink();
@@ -305,7 +305,7 @@ void dThunderCloud::updateModelMatrices() {
void dThunderCloud::beginState_Follow() {
this->timer = 0;
- this->bindAnimChr_and_setUpdateRate("thundershoot", 1, 0.0, 1.0);
+ this->bindAnimChr_and_setUpdateRate("wait_cloud", 1, 0.0, 1.0);
this->rot.x = 0;
this->rot.y = 0;
this->rot.z = 0;