diff options
| -rwxr-xr-x | src/mrsun.cpp | 74 | 
1 files changed, 52 insertions, 22 deletions
| diff --git a/src/mrsun.cpp b/src/mrsun.cpp index 0fc3d05..88dd7fd 100755 --- a/src/mrsun.cpp +++ b/src/mrsun.cpp @@ -31,25 +31,22 @@ class daMrSun_c : public dEn_c {  	short spinReduceZ;  	short spinReduceY;  	float spinStateOn; +	int dying; +	char sunDying; - +	void dieFall_Execute();  	static daMrSun_c *build();  	void updateModelMatrices(); -	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); -	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther); +//	void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther); +//	void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther);  	void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);  	void collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther);  	void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther);  	void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther);  	void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther); -	void dieFumi_Begin(); -	void dieFumi_Execute(); -	void dieFumi_End(); - -  	USING_STATES(daMrSun_c);  	DECLARE_STATE(Follow);  	DECLARE_STATE(Swoop); @@ -86,26 +83,57 @@ CREATE_STATE(daMrSun_c, Wait);  #define DEACTIVATE	0 -void daMrSun_c::playerCollision(ActivePhysics *apThis, ActivePhysics *apOther) { OSReport("Hit Player"); } -void daMrSun_c::yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther) { OSReport("Hit Yoshi"); } -  void daMrSun_c::collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther) { OSReport("Hit Fireball"); } -void daMrSun_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) { OSReport("Hit Iceball"); } -void daMrSun_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) { OSReport("Hit Rolling Object"); doStateChange(&StateID_Wait); } +void daMrSun_c::collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther) {  +	OSReport("Hit Iceball");  +	if (this->settings == 0) { // It's a sun +		if (this->sunDying == 5) { +			doStateChange(&StateID_DieIceVanish); } +		else { +			this->sunDying = this->sunDying + 1; } +	} } +void daMrSun_c::collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther) {  +	OSReport("Hit Rolling Object");  +	this->timer = 0;  +	doStateChange(&StateID_DieFall); }  void daMrSun_c::collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther) {  -	OSReport("Hit Hammer");  -	doStateChange(&StateID_Wait); -} +	OSReport("Hit Hammer"); +	this->timer = 0;  +	doStateChange(&StateID_DieFall); }  void daMrSun_c::collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther) { OSReport("Hit Yoshi Fire"); } -void daMrSun_c::dieFumi_Begin() { this->dieFall_Begin(); } -void daMrSun_c::dieFumi_Execute() { this->dieFall_Execute(); } -void daMrSun_c::dieFumi_End() { this->dieFall_End(); } - - - +void daMrSun_c::dieFall_Execute() { +	 +	this->timer = this->timer + 1; +	 +	  +	this->dying = this->dying + 0.15; +	 +	this->pos.x = this->pos.x + 0.15; +	this->pos.y = this->pos.y + ((-0.2 * (this->dying*this->dying)) + 5); +	 +	this->dEn_c::dieFall_Execute(); +	 +	 +	if (this->timer > 450) { +		dStageActor_c *Player = GetSpecificPlayerActor(0); +		if (Player == 0) { Player = GetSpecificPlayerActor(1); } +		if (Player == 0) { Player = GetSpecificPlayerActor(2); } +		if (Player == 0) { Player = GetSpecificPlayerActor(3); } +		 +		Player->pos; +	 +		this->pos.x = Player->pos.x - 300; +		if (Player == 0) {  +			this->pos.x = 0; +			doStateChange(&StateID_Follow); } +		this->pos.y = this->Baseline;  +		 +		doStateChange(&StateID_Follow); +		} +}  int daMrSun_c::onCreate() { @@ -174,6 +202,8 @@ int daMrSun_c::onCreate() {  	this->timer = 0;  	this->xSpiralOffset = 0.0;  	this->ySpiralOffset = 0.0; +	this->dying = -15; +	this->sunDying = 0;  	this->pos.z = 3300.00; | 
