diff options
| author | Treeki <treeki@gmail.com> | 2013-02-03 00:31:46 +0100 | 
|---|---|---|
| committer | Treeki <treeki@gmail.com> | 2013-02-03 00:31:46 +0100 | 
| commit | 06828e3a02a0ca2eaf56d804bb6845659cfa59e7 (patch) | |
| tree | bb28c665445fc622958b9614d014ba791cad2d0f | |
| parent | 012efaa6343cd2bec2f728d0bec6243263712a45 (diff) | |
| download | kamek-06828e3a02a0ca2eaf56d804bb6845659cfa59e7.tar.gz kamek-06828e3a02a0ca2eaf56d804bb6845659cfa59e7.zip  | |
fix a bug in the collision headers, and assorted collision bugs
Diffstat (limited to '')
| -rw-r--r-- | include/commonX.h | 118 | ||||
| -rw-r--r-- | include/daEnDosun_c.h | 2 | ||||
| -rwxr-xr-x | include/game.h | 30 | ||||
| -rw-r--r-- | kamek_pal.x | 4 | ||||
| -rw-r--r-- | src/bossBalboaWrench.cpp | 38 | ||||
| -rw-r--r-- | src/bossBombDrop.cpp | 20 | ||||
| -rw-r--r-- | src/bossFuzzyBear.cpp | 51 | ||||
| -rw-r--r-- | src/bossKoopaThrow.cpp | 28 | ||||
| -rw-r--r-- | src/bossMegaGoomba.cpp | 105 | ||||
| -rw-r--r-- | src/bossPodouble.cpp | 58 | ||||
| -rw-r--r-- | src/bossRamboo.cpp | 37 | ||||
| -rw-r--r-- | src/bossSamurshai.cpp | 83 | ||||
| -rw-r--r-- | src/bossThwompaDomp.cpp | 42 | ||||
| -rw-r--r-- | src/bossTopman.cpp | 47 | ||||
| -rw-r--r-- | src/bossWrenchThrow.cpp | 28 | ||||
| -rw-r--r-- | src/challengeStar.cpp | 35 | ||||
| -rw-r--r-- | src/fakeStarCoin.cpp | 45 | ||||
| -rwxr-xr-x | src/meteor.cpp | 5 | ||||
| -rwxr-xr-x | src/mrsun.cpp | 51 | ||||
| -rw-r--r-- | src/penguin.cpp | 4 | ||||
| -rw-r--r-- | src/pumpkinGoomba.cpp | 36 | ||||
| -rw-r--r-- | src/shyguy.cpp | 64 | ||||
| -rw-r--r-- | src/shyguyGiants.cpp | 69 | ||||
| -rwxr-xr-x | src/thundercloud.cpp | 65 | ||||
| -rw-r--r-- | src/topman.cpp | 49 | 
25 files changed, 721 insertions, 393 deletions
diff --git a/include/commonX.h b/include/commonX.h new file mode 100644 index 0000000..ba5a644 --- /dev/null +++ b/include/commonX.h @@ -0,0 +1,118 @@ +#ifndef __KAMEK_COMMON_H
 +#define __KAMEK_COMMON_H
 +
 +
 +#define GEKKO
 +
 +/* Common Number Types */
 +typedef signed long long s64;
 +typedef signed int s32;
 +typedef signed short s16;
 +typedef signed char s8;
 +
 +typedef unsigned long long u64;
 +typedef unsigned int u32;
 +typedef unsigned short u16;
 +typedef unsigned char u8;
 +
 +typedef float f32;
 +typedef double f64;
 +
 +typedef unsigned long ulong;
 +typedef unsigned int uint;
 +typedef unsigned short ushort;
 +typedef unsigned char uchar;
 +
 +typedef unsigned long size_t;
 +
 +typedef char* Ptr; // DUMB
 +
 +typedef int BOOL;
 +#define TRUE 1
 +#define FALSE 0
 +
 +#define NULL 0
 +
 +/* Structures */
 +typedef f32 Mtx[3][4];
 +typedef f32 (*MtxPtr)[4];
 +typedef f32 Mtx44[4][4];
 +typedef f32 (*Mtx44Ptr)[4];
 +typedef f32 ROMtx[4][3];
 +typedef f32 (*ROMtxPtr)[3];
 +
 +typedef struct { f32 x, y; } Vec2, *Vec2Ptr, Point2d, *Point2dPtr;
 +typedef struct { f32 x, y, z; } Vec, Vec3, *VecPtr, Point3d, *Point3dPtr;
 +typedef struct { s16 x; s16 y; s16 z; }S16Vec, *S16VecPtr;
 +typedef struct { f32 x, y, z, w; } Quaternion, *QuaternionPtr, Qtrn, *QtrnPtr;
 +
 +typedef struct { f32 frame, value, slope; } HermiteKey;
 +
 +extern "C" const char * strrchr ( const char * str, int character );
 +extern "C" int strcmp ( const char * str1, const char * str2 );
 +
 +#include "rvl/mtx.h"
 +
 +
 +inline void *operator new(size_t size, void *ptr) { return ptr; }
 +
 +
 +
 +struct tree_node {
 +	tree_node *parent, *child, *prev_sibling, *next_sibling;
 +	void *obj;
 +};
 +
 +/* Virtual Function Helpers */
 +//#define VF_BEGIN(type, obj, id, vtable_offset) \
 +//	{ type __VFUNC = (((u32)(obj))+(vtable_offset));
 +#define VF_BEGIN(type, obj, id, vtable_offset) \
 +	{ type __VFUNC = ((type*)(*((void**)(((u32)(obj))+(vtable_offset)))))[(id)];
 +
 +#define VF_CALL __VFUNC
 +
 +#define VF_END }
 +
 +
 +
 +
 +/* Common Functions */
 +
 +void OSReport(const char *format, ...);
 +int sprintf(char *buffer, const char *format, ...);
 +int snprintf(char *buffer, size_t buff_size, const char *format, ...);
 +char *strcat(char *destination, const char *source);
 +extern "C" void *memcpy(void *dest, const void *src, size_t count);
 +void *memset(void *ptr, int value, size_t num);
 +int memcmp(const void *ptr1, const void *ptr2, size_t num);
 +
 +void *AllocFromGameHeap1(u32 size);
 +void FreeFromGameHeap1(void *block);
 +
 +float GetHermiteCurveValue(float current_frame, HermiteKey* keys, unsigned int key_count);
 +
 +/* Archive */
 +/*#ifdef REGION_PAL
 +	#define ARC_TABLE ((*((void**)0x8042A318))+4)
 +	#define RAW_ARC_TABLE (*((void**)0x8042A318))
 +#endif
 +
 +#ifdef REGION_NTSC
 +	#define ARC_TABLE ((*((void**)0x8042A038))+4)
 +	#define RAW_ARC_TABLE (*((void**)0x8042A038))
 +#endif
 +
 +char *RetrieveFileFromArc(void *table, char *name, char *path);
 +char *RetrieveFileFromArcAlt(void *table, char *name, char *path);*/
 +
 +extern void *ArchiveHeap; // PAL 0x8042A72C, NTSC 0x8042A44C
 +
 +
 +#ifdef __MWERKS__
 +	#define InfiniteLoop for (;;) { asm { nop } }
 +#else
 +	#define InfiniteLoop for (;;) { asm("nop"); }
 +#endif
 +
 +
 +#endif
 diff --git a/include/daEnDosun_c.h b/include/daEnDosun_c.h index 34e770a..bba506d 100644 --- a/include/daEnDosun_c.h +++ b/include/daEnDosun_c.h @@ -19,7 +19,7 @@ public:  	void killedByLevelClear();		// 809f6810  	void collisionCat3_StarPower(ActivePhysics* apThis, ActivePhysics *apOther);	// 809f6050  	void _vf108(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f5fe0 -	void collisionCatD_GroundPound(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f7130 +	void collisionCatD_Drill(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f7130  	void _vf110(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f6090  	void collisionCat7_GroundPound(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f7120  	void collisionCat9_RollingObject(ActivePhysics* apThis, ActivePhysics* apOther);	// 809f70a0 diff --git a/include/game.h b/include/game.h index 5c7ac05..300efec 100755 --- a/include/game.h +++ b/include/game.h @@ -2354,22 +2354,22 @@ public:  	virtual void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther);
  	// WHAT A MESS
 -	virtual void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void _vf108(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void _vf110(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCat8_FencePunch(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void _vf120(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool _vf108(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool _vf110(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat8_FencePunch(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool _vf120(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);
  	virtual bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther);
 -	virtual void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther);
 +	virtual bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther);
  	virtual void _vf140(dStageActor_c *actor);
  	virtual void _vf144(int something);
 diff --git a/kamek_pal.x b/kamek_pal.x index 33e5401..9b53a8e 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -494,7 +494,7 @@ SECTIONS {  	collisionCat3_StarPower__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009F840;  	collisionCat5_Mario__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FB50;  	_vf108__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FE40; -	collisionCatD_GroundPound__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FFD0; +	collisionCatD_Drill__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FFD0;  	_vf110__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FFC0;  	collisionCat8_FencePunch__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FCE0;  	collisionCat7_GroundPound__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x800A0150; @@ -1648,7 +1648,7 @@ SECTIONS {  	killedByLevelClear__11daEnDosun_cFv = 0x809f67d0;  	collisionCat3_StarPower__11daEnDosun_cFP13ActivePhysicsP13ActivePhysics = 0x809f6010;  	_vf108__11daEnDosun_cFP13ActivePhysicsP13ActivePhysics = 0x809f5fa0; -	collisionCatD_GroundPound__11daEnDosun_cFP13ActivePhysicsP13ActivePhysics = 0x809f70f0; +	collisionCatD_Drill__11daEnDosun_cFP13ActivePhysicsP13ActivePhysics = 0x809f70f0;  	_vf110__11daEnDosun_cFP13ActivePhysicsP13ActivePhysics = 0x809f6050;  	collisionCat7_GroundPound__11daEnDosun_cFP13ActivePhysicsP13ActivePhysics = 0x809f70e0;  	collisionCat9_RollingObject__11daEnDosun_cFP13ActivePhysicsP13ActivePhysics = 0x809f7060; diff --git a/src/bossBalboaWrench.cpp b/src/bossBalboaWrench.cpp index e1e39fa..1cea253 100644 --- a/src/bossBalboaWrench.cpp +++ b/src/bossBalboaWrench.cpp @@ -37,12 +37,12 @@ class daBalboa_c : public daBoss {  	void bindAnimChr_and_setUpdateRate(const char* name, int unk, float unk2, float rate);  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);  	void addScoreWhenHit(void *other); @@ -118,7 +118,7 @@ daBalboa_c *daBalboa_c::build() {  		this->counter_504[apOther->owner->which_player] = 0;  	} -	void daBalboa_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  +	bool daBalboa_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {   		dActor_c *block = apOther->owner;  		dEn_c *mario = (dEn_c*)block; @@ -134,10 +134,7 @@ daBalboa_c *daBalboa_c::build() {  		mario->doSpriteMovement();  		mario->doSpriteMovement(); -		if (isRevenging) {  -			return; -		} -		else { +		if (!isRevenging) {  			this->damage -= 1;  			apOther->someFlagByte |= 2; @@ -147,13 +144,24 @@ daBalboa_c *daBalboa_c::build() {  			doStateChange(&StateID_Damage);  		} +		return true;  	} -	void daBalboa_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { } -	bool daBalboa_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { return false; } -	void daBalboa_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { } -	void daBalboa_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { } -	void daBalboa_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { } +	bool daBalboa_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	} +	bool daBalboa_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { +		return false; +	} +	bool daBalboa_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	} +	bool daBalboa_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	} +	bool daBalboa_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	}  void daBalboa_c::setupModels() { diff --git a/src/bossBombDrop.cpp b/src/bossBombDrop.cpp index 7959268..b8e4204 100644 --- a/src/bossBombDrop.cpp +++ b/src/bossBombDrop.cpp @@ -30,12 +30,12 @@ class dDroppedBomb : public dEn_c {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	// void spriteCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);  };  void dDroppedBomb::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) {  @@ -49,12 +49,12 @@ dDroppedBomb *dDroppedBomb::build() {  }  // void dDroppedBomb::spriteCollision(ActivePhysics *apThis, ActivePhysics *apOther) { this->kill(); } -void dDroppedBomb::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { } +bool dDroppedBomb::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {return true;}  bool dDroppedBomb::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { return false; } -void dDroppedBomb::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {} -void dDroppedBomb::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {} -void dDroppedBomb::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) {} -void dDroppedBomb::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {} +bool dDroppedBomb::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {return true;} +bool dDroppedBomb::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {return true;} +bool dDroppedBomb::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) {return true;} +bool dDroppedBomb::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {return true;}  void dDroppedBomb::kill() {  	PlaySoundAsync(this, SE_BOSS_JR_BOMB_BURST); diff --git a/src/bossFuzzyBear.cpp b/src/bossFuzzyBear.cpp index d286b81..67fbd6e 100644 --- a/src/bossFuzzyBear.cpp +++ b/src/bossFuzzyBear.cpp @@ -43,14 +43,14 @@ class daFuzzyBear_c : public daBoss {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(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 collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);  	USING_STATES(daFuzzyBear_c);  	DECLARE_STATE(Grow); @@ -81,10 +81,10 @@ CREATE_STATE(daFuzzyBear_c, Outro);  void daFuzzyBear_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); }  void daFuzzyBear_c::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } -void daFuzzyBear_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {  -	return; // added by skawo request +bool daFuzzyBear_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {  +	return true; // added by skawo request -	if (this->isInvulnerable == 1) { return; } +	if (this->isInvulnerable == 1) { return true; }  	this->timer = 0;  	PlaySound(this, SE_BOSS_KOOPA_FIRE_DISAPP); @@ -92,8 +92,9 @@ void daFuzzyBear_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, Ac  	SpawnEffect("Wm_mr_fireball_hit", 0, &apOther->owner->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0});  	this->damage++;  	if (this->damage > 14) { doStateChange(&StateID_Outro); } +	return true;  } -void daFuzzyBear_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool daFuzzyBear_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {   	apOther->someFlagByte |= 2;  	dActor_c *block = apOther->owner; @@ -107,12 +108,13 @@ void daFuzzyBear_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysi  	mario->doSpriteMovement();  	mario->doSpriteMovement(); +	return true;  } -void daFuzzyBear_c::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool daFuzzyBear_c::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) {   	this->counter_504[apOther->owner->which_player] = 0; -	this->collisionCat9_RollingObject(apThis, apOther); +	return this->collisionCat9_RollingObject(apThis, apOther);  } -void daFuzzyBear_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool daFuzzyBear_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {   	dActor_c *block = apOther->owner;  	dEn_c *blah = (dEn_c*)block; @@ -134,7 +136,7 @@ void daFuzzyBear_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhy  		if (blah->direction == 0) { blah->direction = 1; }  		else					  { blah->direction = 0; } -		return;  +		return true;   	}	  	this->pos.x += blah->speed.x; @@ -148,10 +150,11 @@ void daFuzzyBear_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhy  	if (this->damage > 14) { doStateChange(&StateID_Outro); }   	else { doStateChange(&StateID_RolyPoly); } +	return true;  } -void daFuzzyBear_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool daFuzzyBear_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  -	if (this->isInvulnerable == 1) { return; } +	if (this->isInvulnerable == 1) { return true; }  	dActor_c *block = apOther->owner;  	dEn_c *blah = (dEn_c*)block; @@ -167,11 +170,19 @@ void daFuzzyBear_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *  	if (this->damage > 14) { doStateChange(&StateID_Outro); }   	else { doStateChange(&StateID_RolyPoly); } +	return true;  } -bool daFuzzyBear_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { return false; } -void daFuzzyBear_c::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { } -void daFuzzyBear_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } +bool daFuzzyBear_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { +	return false; +} +bool daFuzzyBear_c::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; +} +bool daFuzzyBear_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { +	DamagePlayer(this, apThis, apOther); +	return true; +} diff --git a/src/bossKoopaThrow.cpp b/src/bossKoopaThrow.cpp index e9bd931..3b07d98 100644 --- a/src/bossKoopaThrow.cpp +++ b/src/bossKoopaThrow.cpp @@ -63,12 +63,12 @@ class daKoopaThrow : public dEn_c {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void spriteCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);  	USING_STATES(daKoopaThrow); @@ -125,12 +125,16 @@ void daKoopaThrow::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther  void daKoopaThrow::spriteCollision(ActivePhysics *apThis, ActivePhysics *apOther) {} -void daKoopaThrow::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { } +bool daKoopaThrow::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; +}  bool daKoopaThrow::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) {   	return false;   } -void daKoopaThrow::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {} -void daKoopaThrow::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +bool daKoopaThrow::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; +} +bool daKoopaThrow::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  	if (Type == 1 || Type == 2) {  		SpawnEffect("Wm_en_burst_s", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){0.75, 0.75, 0.75});  		SpawnEffect("Wm_mr_wirehit", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){1.25, 1.25, 1.25}); @@ -141,9 +145,12 @@ void daKoopaThrow::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *a  	PlaySoundAsync(this, currentInfo->breakSound);  	this->Delete(1); +	return true; +} +bool daKoopaThrow::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true;  } -void daKoopaThrow::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) {} -void daKoopaThrow::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool daKoopaThrow::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {   	DamagePlayer(this, apThis, apOther);  	if (Type == 1 || Type == 2) { @@ -153,6 +160,7 @@ void daKoopaThrow::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysic  		SpawnEffect("Wm_mr_wirehit", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){1.25, 1.25, 1.25});  		this->Delete(1);  	} +	return true;  } diff --git a/src/bossMegaGoomba.cpp b/src/bossMegaGoomba.cpp index 6314aaf..44d4de7 100644 --- a/src/bossMegaGoomba.cpp +++ b/src/bossMegaGoomba.cpp @@ -72,24 +72,26 @@ class daMegaGoomba_c : public dEn_c {  	void removeMyActivePhysics();  	void addMyActivePhysics(); +	int tryHandleJumpedOn(ActivePhysics *apThis, ActivePhysics *apOther); +  	void spriteCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	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); -	void collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther);  	void addScoreWhenHit(void *other); -	void _vf120(ActivePhysics *apThis, ActivePhysics *apOther); -	void _vf110(ActivePhysics *apThis, ActivePhysics *apOther); -	void _vf108(ActivePhysics *apThis, ActivePhysics *apOther); +	bool _vf120(ActivePhysics *apThis, ActivePhysics *apOther); +	bool _vf110(ActivePhysics *apThis, ActivePhysics *apOther); +	bool _vf108(ActivePhysics *apThis, ActivePhysics *apOther);  	void dieOther_Begin();  	void dieOther_Execute(); @@ -249,6 +251,14 @@ void daMegaGoomba_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOth  	//unk=0 does _vfs, unk=1 does playSeCmnStep  	//char ret = usedForDeterminingStatePress_or_playerCollision(this, apThis, apOther, 0); +	if (tryHandleJumpedOn(apThis, apOther) == 0) { +		this->dEn_c::playerCollision(apThis, apOther); +		this->_vf220(apOther->owner); +		this->counter_504[apOther->owner->which_player] = 180; +	} +} + +int daMegaGoomba_c::tryHandleJumpedOn(ActivePhysics *apThis, ActivePhysics *apOther) {  	float saveBounce = EnemyBounceValue;  	EnemyBounceValue = 5.2f; @@ -267,47 +277,68 @@ void daMegaGoomba_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOth  		apOther->someFlagByte |= 2;  		if(this->takeHit(1))  			doStateChange(&StateID_DieFall); -	} else if(ret == 0) { -		this->dEn_c::playerCollision(apThis, apOther); -		this->_vf220(apOther->owner); -		this->counter_504[apOther->owner->which_player] = 180; -	} else if(ret == 2) { -	} else {  	} + +	return ret;  } -void daMegaGoomba_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  -	if (this->counter_504[apOther->owner->which_player] > 0) { return; } +bool daMegaGoomba_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  +	if (this->counter_504[apOther->owner->which_player] > 0) { return false; }  	VEC2 eSpeed = {speed.x, speed.y};  	killWithSpecifiedState(apOther->owner, &eSpeed, &dEn_c::StateID_DieOther); +	return true;  } -void daMegaGoomba_c::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) {  -	if (this->counter_504[apOther->owner->which_player] > 0) { return; } -	VEC2 eSpeed = {speed.x, speed.y}; -	killWithSpecifiedState(apOther->owner, &eSpeed, &dEn_c::StateID_DieOther); +bool daMegaGoomba_c::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) {  +	return collisionCat7_GroundPound(apThis, apOther);  } -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); } -void daMegaGoomba_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +bool daMegaGoomba_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +	return false; +} +bool daMegaGoomba_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { +	return false; +} +extern "C" void dAcPy_vf3F8(void* player, dEn_c* monster, int t); +bool daMegaGoomba_c::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther) { +	if (tryHandleJumpedOn(apThis, apOther) == 0) { +		dAcPy_vf3F8(apOther->owner, this, 3); +		this->counter_504[apOther->owner->which_player] = 0xA; +	} +	return true; +} +bool daMegaGoomba_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  	if(this->takeHit(1))  		doStateChange(&StateID_DieFall); +	return true;  } -void daMegaGoomba_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { +bool daMegaGoomba_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) {  	if(this->takeHit(1))  		doStateChange(&StateID_DieFall); +	return true;  } -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) {} -void daMegaGoomba_c::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { +bool daMegaGoomba_c::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) { +	return collisionCat7_GroundPound(apThis, apOther); +} +bool daMegaGoomba_c::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; +} +bool daMegaGoomba_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; +} +bool daMegaGoomba_c::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) {  	if(this->takeHit(1))  		doStateChange(&StateID_DieFall); +	return true;  }  void daMegaGoomba_c::addScoreWhenHit(void *other) {} -void daMegaGoomba_c::_vf120(ActivePhysics *apThis, ActivePhysics *apOther) { } -void daMegaGoomba_c::_vf110(ActivePhysics *apThis, ActivePhysics *apOther) { } -void daMegaGoomba_c::_vf108(ActivePhysics *apThis, ActivePhysics *apOther) { } +bool daMegaGoomba_c::_vf120(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; // Replicate existing broken behaviour +} +bool daMegaGoomba_c::_vf110(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; // Replicate existing broken behaviour +} +bool daMegaGoomba_c::_vf108(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; // Replicate existing broken behaviour +}  void daMegaGoomba_c::bindAnimChr_and_setUpdateRate(const char* name, int unk, float unk2, float rate) {  	nw4r::g3d::ResAnmChr anmChr = this->resFile.GetResAnmChr(name); diff --git a/src/bossPodouble.cpp b/src/bossPodouble.cpp index 57c87a8..dd47463 100644 --- a/src/bossPodouble.cpp +++ b/src/bossPodouble.cpp @@ -50,16 +50,16 @@ class daPodouble : public daBoss {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(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 collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);  	USING_STATES(daPodouble); @@ -99,45 +99,57 @@ daPodouble *daPodouble::build() {  	void daPodouble::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); }  	void daPodouble::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) 					 { this->playerCollision(apThis, apOther); } -	void daPodouble::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) 	 { this->playerCollision(apThis, apOther); } -	void daPodouble::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -	void daPodouble::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther)		 { this->playerCollision(apThis, apOther); } +	bool daPodouble::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) 	 { +		this->playerCollision(apThis, apOther); +		return true; +	} +	bool daPodouble::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { +		this->playerCollision(apThis, apOther); +		return true; +	} +	bool daPodouble::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther)		 { +		this->playerCollision(apThis, apOther); +		return true; +	} -	void daPodouble::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) 	{ return; } -	void daPodouble::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { return; } -	void daPodouble::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther)		{ return; } +	bool daPodouble::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) 	{ return true; } +	bool daPodouble::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { return true; } +	bool daPodouble::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther)		{ return true; } -	void daPodouble::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {	 +	bool daPodouble::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {	  		apOther->owner->kill(); -		if (this->isInvulnerable) { return; } +		if (this->isInvulnerable) { return true; }  		this->damage += 2;  		if (this->damage < 12)  { doStateChange(&StateID_Damage); }  		else 				   { doStateChange(&StateID_Outro); } +		return true;  	} -	void daPodouble::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ +	bool daPodouble::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){  		apOther->owner->Delete(1); -		if (this->isInvulnerable) { return; } +		if (this->isInvulnerable) { return true; }  		if (this->isFire == 0) {   			this->damage += 3;   			if (this->damage < 12)  { doStateChange(&StateID_Damage); }  			else 				    { doStateChange(&StateID_Outro); } -		} +			return true; +		} else return false;  	} -	void daPodouble::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { -		if (this->isInvulnerable) { return; } +	bool daPodouble::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +		if (this->isInvulnerable) { return true; }  		if (this->isFire == 0) {   			this->damage += 2;   			if (this->damage < 12)  { doStateChange(&StateID_Damage); }  			else 				    { doStateChange(&StateID_Outro); } -		} +			return true; +		} else return false;  	}  	bool daPodouble::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { diff --git a/src/bossRamboo.cpp b/src/bossRamboo.cpp index bf27d51..f2af942 100644 --- a/src/bossRamboo.cpp +++ b/src/bossRamboo.cpp @@ -42,12 +42,12 @@ class daRamboo_c : public daBoss {  	void updateModelMatrices();  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);  	USING_STATES(daRamboo_c); @@ -76,12 +76,15 @@ 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) {  +bool 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; +	return true; +} +bool daRamboo_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { +	return false;  } -bool daRamboo_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { return false; } -void daRamboo_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool daRamboo_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {   	if (apOther->owner->name == 412) { // Check if it's a glow block  		SpawnEffect("Wm_en_obakedoor_sm", 0, &apOther->owner->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0}); @@ -90,11 +93,21 @@ void daRamboo_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysic  		doStateChange(&StateID_Flee);		  		//FIXME changed to dStageActor_c::Delete(u8) from fBase_c::Delete(void)  		apOther->owner->Delete(1); -	}	 +		return true; +	} +	return false; +} +bool daRamboo_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; +} +bool daRamboo_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +	DamagePlayer(this, apThis, apOther); +	return true; +} +bool daRamboo_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { +	DamagePlayer(this, apThis, apOther); +	return true;  } -void daRamboo_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { } -void daRamboo_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } -void daRamboo_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } diff --git a/src/bossSamurshai.cpp b/src/bossSamurshai.cpp index 3afd72b..6e09561 100644 --- a/src/bossSamurshai.cpp +++ b/src/bossSamurshai.cpp @@ -51,16 +51,16 @@ class daSamurshai : public daBoss {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(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 collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);  	void addScoreWhenHit(void *other);  	int randomPlayer(); @@ -131,8 +131,10 @@ daSamurshai *daSamurshai::build() {  	}  	void daSamurshai::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -	void daSamurshai::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { } -	void daSamurshai::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +	bool daSamurshai::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) { +		return collisionCat7_GroundPound(apThis, apOther); +	} +	bool daSamurshai::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  		apOther->someFlagByte |= 2;  		if (this->isDown == 0) {  @@ -143,18 +145,25 @@ daSamurshai *daSamurshai::build() {  		deathInfo.isDead = 0;  		this->flags_4FC |= (1<<(31-7)); -		this->counter_504[apOther->owner->which_player] = 0; +		this->counter_504[apOther->owner->which_player] = 5; +		bouncePlayerWhenJumpedOn(apOther->owner); +		return true; +	} +	bool daSamurshai::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { +		return this->collisionCat7_GroundPound(apThis, apOther);  	} -	void daSamurshai::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { this->collisionCat7_GroundPound(apThis, apOther); } -	void daSamurshai::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +	bool daSamurshai::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  		if (this->isDown == 0) {   			damage += 3;  			if (damage >= 15) { doStateChange(&StateID_Outro); }  			else { doStateChange(&StateID_Damage); }  		} +		return true;  	} -	void daSamurshai::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){ } -	void daSamurshai::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){ +	bool daSamurshai::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){ +		return true; +	} +	bool daSamurshai::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){  		if (this->isDown == 0) {   			damage += 3;  			if (damage >= 15) { doStateChange(&StateID_Outro); } @@ -164,24 +173,30 @@ daSamurshai *daSamurshai::build() {  		deathInfo.isDead = 0;  		this->flags_4FC |= (1<<(31-7));  		this->counter_504[apOther->owner->which_player] = 0; -	} -	void daSamurshai::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){  -		damage += 4; -		SpawnEffect("Wm_mr_fireball_hit", 0, &apOther->owner->pos, &apOther->owner->rot, &apOther->owner->scale); -		PlaySoundAsync(this, SE_OBJ_FIREBALL_DISAPP); -		if (damage >= 15) { doStateChange(&StateID_Outro); } -	} -	void daSamurshai::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { -		damage += 1; -		SpawnEffect("Wm_mr_fireball_hit", 0, &apOther->owner->pos, &apOther->owner->rot, &apOther->owner->scale); -		PlaySoundAsync(this, SE_OBJ_FIREBALL_DISAPP);		 -		if (damage >= 15) { doStateChange(&StateID_Outro); } -	} -	bool daSamurshai::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { return true; } -	void daSamurshai::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { -		damage += 2; -		this->spawnHitEffectAtPosition((Vec2){apOther->owner->pos.x, apOther->owner->pos.y}); -		if (damage >= 15) { doStateChange(&StateID_Outro); } +		return true; +	} +	bool daSamurshai::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){  +		//damage += 4; +		//SpawnEffect("Wm_mr_fireball_hit", 0, &apOther->owner->pos, &apOther->owner->rot, &apOther->owner->scale); +		//PlaySoundAsync(this, SE_OBJ_FIREBALL_DISAPP); +		//if (damage >= 15) { doStateChange(&StateID_Outro); } +		return true; +	} +	bool daSamurshai::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +		//damage += 1; +		//SpawnEffect("Wm_mr_fireball_hit", 0, &apOther->owner->pos, &apOther->owner->rot, &apOther->owner->scale); +		//PlaySoundAsync(this, SE_OBJ_FIREBALL_DISAPP);		 +		//if (damage >= 15) { doStateChange(&StateID_Outro); } +		return true; +	} +	bool daSamurshai::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	} +	bool daSamurshai::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +		//damage += 2; +		//this->spawnHitEffectAtPosition((Vec2){apOther->owner->pos.x, apOther->owner->pos.y}); +		//if (damage >= 15) { doStateChange(&StateID_Outro); } +		return true;  	} diff --git a/src/bossThwompaDomp.cpp b/src/bossThwompaDomp.cpp index 58254a7..5904d73 100644 --- a/src/bossThwompaDomp.cpp +++ b/src/bossThwompaDomp.cpp @@ -47,13 +47,13 @@ class daEnMegaDosun_c : public daBoss {  	void setupBodyModel();  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);  	USING_STATES(daEnMegaDosun_c);  	DECLARE_STATE(UpWait); @@ -87,13 +87,29 @@ daEnMegaDosun_c *daEnMegaDosun_c::build() {  	void daEnMegaDosun_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) {  		DamagePlayer(this, apThis, apOther);  	} -	void daEnMegaDosun_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { } -	bool daEnMegaDosun_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { return false; } -	void daEnMegaDosun_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } -	void daEnMegaDosun_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { } -	void daEnMegaDosun_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { } -	void daEnMegaDosun_c::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { } -	void daEnMegaDosun_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } +	bool daEnMegaDosun_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	} +	bool daEnMegaDosun_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { +		return false; +	} +	bool daEnMegaDosun_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +		DamagePlayer(this, apThis, apOther); +		return true; +	} +	bool daEnMegaDosun_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	} +	bool daEnMegaDosun_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	} +	bool daEnMegaDosun_c::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	} +	bool daEnMegaDosun_c::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { +		DamagePlayer(this, apThis, apOther); +		return true; +	}  void daEnMegaDosun_c::setupBodyModel() { diff --git a/src/bossTopman.cpp b/src/bossTopman.cpp index 4b864ec..0637f2d 100644 --- a/src/bossTopman.cpp +++ b/src/bossTopman.cpp @@ -43,16 +43,16 @@ public:  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(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 collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);  	void addScoreWhenHit(void *other); @@ -204,26 +204,37 @@ daDreidel *daDreidel::build() {  		this->playerCollision(apThis, apOther);  	} -	void daDreidel::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } -	void daDreidel::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } -	void daDreidel::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } +	bool daDreidel::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) { +		DamagePlayer(this, apThis, apOther); +		return true; +	} +	bool daDreidel::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +		DamagePlayer(this, apThis, apOther); +		return true; +	} +	bool daDreidel::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { +		DamagePlayer(this, apThis, apOther); +		return true; +	} -	void daDreidel::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  +	bool daDreidel::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {   		if (this->isInvulnerable == 0) {   			doStateChange(&StateID_KnockBack);  		} +		return true;  	} -	void daDreidel::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){  +	bool daDreidel::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){   		if (this->isInvulnerable == 0) {   			doStateChange(&StateID_KnockBack);  		} +		return true;  	} -	void daDreidel::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){	} -	void daDreidel::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { } -	void daDreidel::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ } -	void daDreidel::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { } +	bool daDreidel::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){ return true; } +	bool daDreidel::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { return true; } +	bool daDreidel::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ return true; } +	bool daDreidel::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { return true; }  	bool daDreidel::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { return true; } diff --git a/src/bossWrenchThrow.cpp b/src/bossWrenchThrow.cpp index 2629ede..252625f 100644 --- a/src/bossWrenchThrow.cpp +++ b/src/bossWrenchThrow.cpp @@ -26,12 +26,12 @@ class daWrench : public dEn_c {  	void updateModelMatrices();  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);  	USING_STATES(daWrench); @@ -49,25 +49,33 @@ extern "C" void *PlayWrenchSound(dEn_c *);  void daWrench::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } -void daWrench::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { } +bool daWrench::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; +}  bool daWrench::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) {   	return false;   } -void daWrench::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {} -void daWrench::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +bool daWrench::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; +} +bool daWrench::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  	SpawnEffect("Wm_ob_cmnboxgrain", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){0.5, 0.5, 0.5});  	PlaySoundAsync(this, SE_BOSS_JR_FLOOR_BREAK);  	this->Delete(1); +	return true; +} +bool daWrench::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true;  } -void daWrench::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) {} -void daWrench::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool daWrench::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {   	this->_vf220(apOther->owner);  	SpawnEffect("Wm_ob_cmnboxgrain", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){0.5, 0.5, 0.5});  	PlaySoundAsync(this, SE_BOSS_JR_FLOOR_BREAK);  	this->Delete(1); +	return true;  } diff --git a/src/challengeStar.cpp b/src/challengeStar.cpp index 7724bb9..ec80661 100644 --- a/src/challengeStar.cpp +++ b/src/challengeStar.cpp @@ -29,11 +29,11 @@ class dChallengeStar : public dEn_c {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void yoshiCollision(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 collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther);  }; @@ -51,11 +51,26 @@ void dChallengeStar::playerCollision(ActivePhysics *apThis, ActivePhysics *apOth  }  void dChallengeStar::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -void dChallengeStar::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -void dChallengeStar::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -void dChallengeStar::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -void dChallengeStar::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -void dChallengeStar::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } +bool dChallengeStar::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther) { +	this->playerCollision(apThis, apOther); +	return true; +} +bool dChallengeStar::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +	this->playerCollision(apThis, apOther); +	return true; +} +bool dChallengeStar::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +	this->playerCollision(apThis, apOther); +	return true; +} +bool dChallengeStar::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { +	this->playerCollision(apThis, apOther); +	return true; +} +bool dChallengeStar::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { +	this->playerCollision(apThis, apOther); +	return true; +}  dChallengeStar *dChallengeStar::build() { diff --git a/src/fakeStarCoin.cpp b/src/fakeStarCoin.cpp index 4b35337..3c01c5c 100644 --- a/src/fakeStarCoin.cpp +++ b/src/fakeStarCoin.cpp @@ -28,11 +28,16 @@ class daFakeStarCoin : public dEn_c {  	void updateModelMatrices();  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); + +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther);  }; @@ -46,7 +51,17 @@ void daFakeStarCoin::playerCollision(ActivePhysics *apThis, ActivePhysics *apOth  	this->Delete(1);  } -void daFakeStarCoin::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool daFakeStarCoin::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +	return collisionCat9_RollingObject(apThis, apOther); +} +bool daFakeStarCoin::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { +	return collisionCat9_RollingObject(apThis, apOther); +} +bool daFakeStarCoin::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) { +	return collisionCat9_RollingObject(apThis, apOther); +} + +bool daFakeStarCoin::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {   	SpawnEffect("Wm_en_explosion", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0});  	SpawnEffect("Wm_en_explosion_smk", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){3.0, 3.0, 3.0}); @@ -54,6 +69,7 @@ void daFakeStarCoin::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, A  	//FIXME changed to dStageActor_c::Delete(u8) from fBase_c::Delete(void)  	this->Delete(1); +	return true;  }  bool daFakeStarCoin::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) {   	SpawnEffect("Wm_ob_cmnicekira", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){1.5, 1.5, 1.5}); @@ -66,7 +82,7 @@ bool daFakeStarCoin::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, Ac  	this->Delete(1);  	return false;   } -void daFakeStarCoin::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +bool daFakeStarCoin::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  	SpawnEffect("Wm_ob_cmnboxgrain", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0});  	SpawnEffect("Wm_en_obakedoor_sm", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0}); @@ -74,17 +90,12 @@ void daFakeStarCoin::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePh  	//FIXME changed to dStageActor_c::Delete(u8) from fBase_c::Delete(void)  	this->Delete(1); +	return true;  } -void daFakeStarCoin::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { -	SpawnEffect("Wm_ob_cmnboxgrain", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0}); -	SpawnEffect("Wm_en_obakedoor_sm", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0}); - -	PlaySound(this, SE_BOSS_JR_FLOOR_BREAK); - -	//FIXME changed to dStageActor_c::Delete(u8) from fBase_c::Delete(void) -	this->Delete(1); +bool daFakeStarCoin::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +	return collisionCat9_RollingObject(apThis, apOther);  } -void daFakeStarCoin::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { +bool daFakeStarCoin::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) {  	SpawnEffect("Wm_en_explosion", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0});  	SpawnEffect("Wm_en_explosion_smk", 0, &this->pos, &(S16Vec){0,0,0}, &(Vec){3.0, 3.0, 3.0}); @@ -92,8 +103,12 @@ void daFakeStarCoin::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysi  	//FIXME changed to dStageActor_c::Delete(u8) from fBase_c::Delete(void)  	this->Delete(1); +	return true;  } +bool daFakeStarCoin::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther) { +	return collisionCat9_RollingObject(apThis, apOther); +} diff --git a/src/meteor.cpp b/src/meteor.cpp index aa76f5d..352e66b 100755 --- a/src/meteor.cpp +++ b/src/meteor.cpp @@ -26,7 +26,7 @@ class dMeteor : public dEn_c {  	void updateModelMatrices();  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);  	public:  		void kill(); @@ -62,8 +62,9 @@ void MeteorPhysicsCallback(dMeteor *self, dEn_c *other) {  	}  } -void dMeteor::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool dMeteor::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {   	DamagePlayer(this, apThis, apOther); +	return true;  } diff --git a/src/mrsun.cpp b/src/mrsun.cpp index 267456a..8f8b811 100755 --- a/src/mrsun.cpp +++ b/src/mrsun.cpp @@ -51,14 +51,14 @@ class daMrSun_c : public dEn_c {  	void updateModelMatrices();  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther);  	USING_STATES(daMrSun_c);  	DECLARE_STATE(Follow); @@ -90,7 +90,9 @@ CREATE_STATE(daMrSun_c, Wait);  void daMrSun_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) {  DamagePlayer(this, apThis, apOther); } -void daMrSun_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { } +bool daMrSun_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +	return true; +}  bool daMrSun_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) {   	if (this->settings == 1) {  // It's a moon @@ -100,21 +102,36 @@ bool daMrSun_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActiveP  	}  	return false;  } -void daMrSun_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  +bool daMrSun_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {   	this->timer = 0;   	PlaySound(this, SE_EMY_DOWN); -	doStateChange(&StateID_DieFall); } -void daMrSun_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  +	doStateChange(&StateID_DieFall); +	return true; +} +bool daMrSun_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {   	this->timer = 0;   	PlaySound(this, SE_EMY_DOWN); -	doStateChange(&StateID_DieFall); } -void daMrSun_c::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther) {  +	doStateChange(&StateID_DieFall); +	return true; +} +bool daMrSun_c::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther) {   	this->timer = 0;   	PlaySound(this, SE_EMY_DOWN); -	doStateChange(&StateID_DieFall); } -void daMrSun_c::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  DamagePlayer(this, apThis, apOther);  } -void daMrSun_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } -void daMrSun_c::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { DamagePlayer(this, apThis, apOther); } +	doStateChange(&StateID_DieFall); +	return true; +} +bool daMrSun_c::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) { +	DamagePlayer(this, apThis, apOther); +	return true; +} +bool daMrSun_c::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +	DamagePlayer(this, apThis, apOther); +	return true; +} +bool daMrSun_c::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { +	DamagePlayer(this, apThis, apOther); +	return true; +} diff --git a/src/penguin.cpp b/src/penguin.cpp index 51bbf94..385d5b5 100644 --- a/src/penguin.cpp +++ b/src/penguin.cpp @@ -37,7 +37,7 @@ class daPengi : public dEn_c {  	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther);  	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	void collisionCatD_Drill(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); @@ -109,7 +109,7 @@ daPengi *daPengi::build() {  		this->playerCollision(apThis, apOther);  	} -	void daPengi::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +	void daPengi::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) {  		doStateChange(&StateID_Die);  	} diff --git a/src/pumpkinGoomba.cpp b/src/pumpkinGoomba.cpp index 1944c4d..44c23e5 100644 --- a/src/pumpkinGoomba.cpp +++ b/src/pumpkinGoomba.cpp @@ -31,15 +31,15 @@ class dGoombaPie : public dEn_c {  	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void spriteCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(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 collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);  	void _vf148();  	void _vf14C(); @@ -110,15 +110,15 @@ dGoombaPie *dGoombaPie::build() {  	void dGoombaPie::spriteCollision(ActivePhysics *apThis, ActivePhysics *apOther) {}  	void dGoombaPie::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -	void dGoombaPie::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); } -	void dGoombaPie::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); } -	void dGoombaPie::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); } -	void dGoombaPie::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); } -	void dGoombaPie::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Burst); } -	void dGoombaPie::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); } -	void dGoombaPie::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Burst); } -	void dGoombaPie::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_DieSmoke); } -	void dGoombaPie::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_DieSmoke); } +	bool dGoombaPie::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); return true; } +	bool dGoombaPie::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); return true; } +	bool dGoombaPie::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); return true; } +	bool dGoombaPie::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); return true; } +	bool dGoombaPie::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Burst); return true; } +	bool dGoombaPie::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_Burst); return true; } +	bool dGoombaPie::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_Burst); return true; } +	bool dGoombaPie::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ doStateChange(&StateID_DieSmoke); return true; } +	bool dGoombaPie::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { doStateChange(&StateID_DieSmoke); return true; }  	// These handle the ice crap  	void dGoombaPie::_vf148() { diff --git a/src/shyguy.cpp b/src/shyguy.cpp index d4bf73c..ced7a41 100644 --- a/src/shyguy.cpp +++ b/src/shyguy.cpp @@ -94,19 +94,19 @@ class daShyGuy : public dEn_c {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(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 collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	// bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther);  	void _vf148();  	void _vf14C(); @@ -269,45 +269,48 @@ daShyGuy *daShyGuy::build() {  	void daShyGuy::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) {  		this->playerCollision(apThis, apOther);  	} -	void daShyGuy::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) {  +	bool daShyGuy::collisionCatD_Drill(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});  		//addScoreWhenHit accepts a player parameter.  		//DON'T DO THIS:  		// this->addScoreWhenHit(this);  		doStateChange(&StateID_Die);  +		return true;  	} -	void daShyGuy::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { -		this->collisionCatD_GroundPound(apThis, apOther); +	bool daShyGuy::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +		return this->collisionCatD_Drill(apThis, apOther);  	} -	void daShyGuy::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { -		this->collisionCatD_GroundPound(apThis, apOther); +	bool daShyGuy::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { +		return this->collisionCatD_Drill(apThis, apOther);  	} -	void daShyGuy::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { -		this->collisionCatD_GroundPound(apThis, apOther); +	bool daShyGuy::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +		return this->collisionCatD_Drill(apThis, apOther);  	} -	void daShyGuy::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){ -		this->collisionCatD_GroundPound(apThis, apOther); +	bool daShyGuy::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){ +		return this->collisionCatD_Drill(apThis, apOther);  	} -	void daShyGuy::collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther){ -		this->collisionCatD_GroundPound(apThis, apOther); +	bool daShyGuy::collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther){ +		return this->collisionCatD_Drill(apThis, apOther);  	} -	void daShyGuy::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther){ -		this->collisionCatD_GroundPound(apThis, apOther); +	bool daShyGuy::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther){ +		return this->collisionCatD_Drill(apThis, apOther);  	} -	void daShyGuy::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { -		this->collisionCatD_GroundPound(apThis, apOther); +	bool daShyGuy::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +		return this->collisionCatD_Drill(apThis, apOther);  	} -	void daShyGuy::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){ -		dEn_c::collisionCat3_StarPower(apThis, apOther); +	bool daShyGuy::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){ +		bool wut = dEn_c::collisionCat3_StarPower(apThis, apOther);  		doStateChange(&StateID_Die); +		return wut;  	} -	void daShyGuy::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ +	bool daShyGuy::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){  		doStateChange(&StateID_DieSmoke); +		return true;  	} -	void daShyGuy::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +	bool daShyGuy::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {  		this->damage += 1;  		dStateBase_c *stateVar; @@ -336,6 +339,7 @@ daShyGuy *daShyGuy::build() {  		else {  			doStateChange(stateVar);  		} +		return true;  	}  	// void daShyGuy::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { diff --git a/src/shyguyGiants.cpp b/src/shyguyGiants.cpp index c4d7a77..e2532f1 100644 --- a/src/shyguyGiants.cpp +++ b/src/shyguyGiants.cpp @@ -61,18 +61,18 @@ class daShyGuyGiant : public dEn_c {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(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 collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther);  	void _vf148();  	void _vf14C(); @@ -117,9 +117,9 @@ daShyGuyGiant *daShyGuyGiant::build() {  	// Collision related  	extern "C" void BigHanaPlayer(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther);  	extern "C" void BigHanaYoshi(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther); -	extern "C" void BigHanaWeirdGP(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther); -	extern "C" void BigHanaGroundPound(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther); -	extern "C" void BigHanaFireball(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther); +	extern "C" bool BigHanaWeirdGP(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther); +	extern "C" bool BigHanaGroundPound(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther); +	extern "C" bool BigHanaFireball(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther);  	extern "C" bool BigHanaIceball(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther);  	extern "C" void dAcPy_vf3F8(void* player, dEn_c* monster, int t); @@ -162,27 +162,35 @@ daShyGuyGiant *daShyGuyGiant::build() {  	void daShyGuyGiant::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) {  		this->playerCollision(apThis, apOther);  	} -	void daShyGuyGiant::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { -		BigHanaWeirdGP(this, apThis, apOther); +	bool daShyGuyGiant::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) { +		return BigHanaWeirdGP(this, apThis, apOther);  	} -	void daShyGuyGiant::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { -		BigHanaGroundPound(this, apThis, apOther); +	bool daShyGuyGiant::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +		return BigHanaGroundPound(this, apThis, apOther);  	} -	void daShyGuyGiant::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { -		BigHanaGroundPound(this, apThis, apOther); +	bool daShyGuyGiant::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { +		return BigHanaGroundPound(this, apThis, apOther);  	} -	void daShyGuyGiant::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +	bool daShyGuyGiant::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  		apOther->owner->kill(); +		return true;  	} -	void daShyGuyGiant::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){ +	bool daShyGuyGiant::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){  		dAcPy_vf3F8(apOther->owner, this, 3);  		this->counter_504[apOther->owner->which_player] = 0xA; +		return true;  	} -	void daShyGuyGiant::collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther){  } -	void daShyGuyGiant::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther){  } -	void daShyGuyGiant::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  } -	void daShyGuyGiant::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){ +	bool daShyGuyGiant::collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther){ +		return true; +	} +	bool daShyGuyGiant::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther){ +		return true; +	} +	bool daShyGuyGiant::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +		return true; +	} +	bool daShyGuyGiant::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){  		int hitType = usedForDeterminingStatePress_or_playerCollision(this, apThis, apOther, 0);  		if (hitType == 1 || hitType == 3) {  			PlaySound(this, SE_EMY_CMN_STEP); @@ -192,13 +200,14 @@ daShyGuyGiant *daShyGuyGiant::build() {  		}  		this->counter_504[apOther->owner->which_player] = 0xA; +		return true;  	} -	void daShyGuyGiant::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ -		BigHanaFireball(this, apThis, apOther); +	bool daShyGuyGiant::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ +		return BigHanaFireball(this, apThis, apOther);  	} -	void daShyGuyGiant::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { -		BigHanaFireball(this, apThis, apOther); +	bool daShyGuyGiant::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +		return BigHanaFireball(this, apThis, apOther);  	}  	bool daShyGuyGiant::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) {  		return BigHanaIceball(this, apThis, apOther); diff --git a/src/thundercloud.cpp b/src/thundercloud.cpp index 50fce31..d0d3b12 100755 --- a/src/thundercloud.cpp +++ b/src/thundercloud.cpp @@ -44,17 +44,17 @@ class dThunderCloud : public dEn_c {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther);  	void bindAnimChr_and_setUpdateRate(const char* name, int unk, float unk2, float rate); @@ -83,7 +83,7 @@ CREATE_STATE(dThunderCloud, Wait);  // Collision Callbacks  	extern "C" void dAcPy_vf3F4(void* mario, void* other, int t); -	extern "C" void BigHanaFireball(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther); +	extern "C" bool BigHanaFireball(dEn_c* t, ActivePhysics *apThis, ActivePhysics *apOther);  	extern "C" void *dAcPy_c__ChangePowerupWithAnimation(void * Player, int powerup);  	extern "C" int CheckExistingPowerup(void * Player); @@ -105,25 +105,32 @@ CREATE_STATE(dThunderCloud, Wait);  	}  	void dThunderCloud::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -	void dThunderCloud::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -	void dThunderCloud::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -	void dThunderCloud::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -	void dThunderCloud::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -	void dThunderCloud::collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } -	void dThunderCloud::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); } - -	void dThunderCloud::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { BigHanaFireball(this, apThis, apOther); } -	void dThunderCloud::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { BigHanaFireball(this, apThis, apOther); } - -	void dThunderCloud::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  -		if (apThis->info.category2 == 0x9) { return; } +	bool dThunderCloud::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); return true; } +	bool dThunderCloud::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); return true; } +	bool dThunderCloud::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); return true; } +	bool dThunderCloud::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); return true; } +	bool dThunderCloud::collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); return true; } +	bool dThunderCloud::collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther) { this->playerCollision(apThis, apOther); return true; } + +	bool dThunderCloud::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { return BigHanaFireball(this, apThis, apOther); } +	bool dThunderCloud::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { return BigHanaFireball(this, apThis, apOther); } + +	bool dThunderCloud::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  +		if (apThis->info.category2 == 0x9) { return true; }  		PlaySound(this, SE_EMY_DOWN); -		doStateChange(&StateID_DieFall); } -	void dThunderCloud::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { this->collisionCat13_Hammer(apThis, apOther); } -	void dThunderCloud::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther) {  -		if (apThis->info.category2 == 0x9) { return; } +		doStateChange(&StateID_DieFall); +		return true; +	} +	bool dThunderCloud::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +		this->collisionCat13_Hammer(apThis, apOther); +		return true; +	} +	bool dThunderCloud::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther) {  +		if (apThis->info.category2 == 0x9) { return true; }  		dEn_c::collisionCat3_StarPower(apThis, apOther); -		this->collisionCat13_Hammer(apThis, apOther); } +		this->collisionCat13_Hammer(apThis, apOther); +		return true; +	}  	// These handle the ice crap diff --git a/src/topman.cpp b/src/topman.cpp index 66b4454..7a345d3 100644 --- a/src/topman.cpp +++ b/src/topman.cpp @@ -43,16 +43,16 @@ class daTopman : public dEn_c {  	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatD_GroundPound(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 collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	// bool collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); -	void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther); +	bool collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);  	void _vf148();  	void _vf14C(); @@ -136,49 +136,58 @@ daTopman *daTopman::build() {  		this->playerCollision(apThis, apOther);  	} -	void daTopman::collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +	bool daTopman::collisionCatD_Drill(ActivePhysics *apThis, ActivePhysics *apOther) {  		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 true;  	} -	void daTopman::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { -		this->collisionCatD_GroundPound(apThis, apOther); +	bool daTopman::collisionCat7_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther) { +		this->collisionCatD_Drill(apThis, apOther); +		return true;  	} -	void daTopman::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { -		this->collisionCatD_GroundPound(apThis, apOther); +	bool daTopman::collisionCat7_GroundPoundYoshi(ActivePhysics *apThis, ActivePhysics *apOther) { +		this->collisionCatD_Drill(apThis, apOther); +		return true;  	} -	void daTopman::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { +	bool daTopman::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  		backFire = apOther->owner->direction ^ 1;  		doStateChange(&StateID_KnockBack); +		return true;  	} -	void daTopman::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){ +	bool daTopman::collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther){  		doStateChange(&StateID_Die); +		return true;  	} -	void daTopman::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) { +	bool daTopman::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  		doStateChange(&StateID_Die); +		return true;  	} -	void daTopman::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){ +	bool daTopman::collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther){  		backFire = apOther->owner->direction ^ 1;  		doStateChange(&StateID_KnockBack); +		return true;  	} -	void daTopman::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){ +	bool daTopman::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther){  		backFire = apOther->owner->direction ^ 1;  		doStateChange(&StateID_KnockBack); +		return true;  	} -	void daTopman::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { +	bool daTopman::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) {  		backFire = apOther->owner->direction ^ 1;  		doStateChange(&StateID_KnockBack); +		return true;  	}  	// void daTopman::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) {  | 
