Downloads containing mario.mut

Downloads
Name Author Game Mode Rating
JJ2+ Only: Play as Mario!Featured Download FawFul Mutator 9.7 Download file

File preview

#pragma require "mario.j2a"
#pragma require "smbjumpsuper.wav"
#pragma require "smbjumpsmall.wav"
#pragma require "sm64marioyahoo.wav"
#pragma require "sm64marioyippee.wav"
#pragma require "smbpipe.wav"
#pragma require "sm64mariodoh.wav"
#pragma require "sm64mariohaha.wav"
#pragma require "sm64mariohoo.wav"
#pragma require "sm64mariohoohoo.wav"
#pragma require "smbpowerupappears.wav"
#pragma require "smbpowerup.wav"
#pragma require "sm64mariowaha.wav"
#pragma require "sm64mariookeydokey.wav"
#pragma require "smbmariodie.wav"

#pragma name "Play as Mario!"

/***************************************************************************************/
/**********Play as Mario! by FawFuL**************(..with shitloads of help from Violet!)/
/***************************************************************************************/

namespace RABBIT { //save some extra typing
	array<Anim> Anims = { //This should correspond exactly to the order of animations in your .j2a. I'm assuming you're using the same order that TSF does.
	AIRBOARD, AIRBOARDTURN, BUTTSTOMPLAND, CORPSE, DIE, DIVE, DIVEFIREQUIT, DIVEFIRERIGHT, DIVEUP, EARBRACHIATE, ENDOFLEVEL, FALL, FALLBUTTSTOMP, FALLLAND, FIRE, FIREUP, FIREUPQUIT, FROG, HANGFIREQUIT, HANGFIREREST, HANGFIREUP, HANGIDLE1, HANGIDLE2, HANGINGFIREQUIT, HANGINGFIRERIGHT, HELICOPTER, HELICOPTERFIREQUIT, HELICOPTERFIRERIGHT, HPOLE, HURT, IDLE1, IDLE2, IDLE3, IDLE4, IDLE5, JUMPFIREQUIT, JUMPFIRERIGHT, JUMPING1, JUMPING2, JUMPING3, LEDGEWIGGLE, LIFT, LIFTJUMP, LIFTLAND, LOOKUP, LOOPY, PUSH, QUIT, REV1, REV2, REV3, RIGHTFALL, RIGHTJUMP, ROLLING, RUN1, RUN2, RUN3, SKID1, SKID2, SKID3, SPRING, STAND, STATIONARYJUMP, STATIONARYJUMPEND, STATIONARYJUMPSTART, STONED, SWIMDOWN, SWIMRIGHT, SWIMTURN1, SWIMTURN2, SWIMUP, SWINGINGVINE, TELEPORT, TELEPORTFALL, TELEPORTFALLING, TELEPORTFALLTELEPORT, TELEPORTSTAND, VPOLE
	};
}

void onLevelLoad() {
	jjSampleLoad(SOUND::COMMON_JUMP, "smbjumpsuper.WAV"); //Jump
	jjSampleLoad(SOUND::COMMON_UP, "smbjumpsmall.WAV"); //Doublejump
	jjSampleLoad(SOUND::SPAZSOUNDS_KARATE7, "sm64marioyahoo.WAV"); //Karate move
	jjSampleLoad(SOUND::SPAZSOUNDS_KARATE8, "sm64marioyippee.WAV"); // Karate move
	jjSampleLoad(SOUND::SPAZSOUNDS_AUTSCH1, "smbpipe.WAV");	//Hurt 1
	jjSampleLoad(SOUND::SPAZSOUNDS_AUTSCH2, "smbpipe.WAV");	//Hurt 2
	jjSampleLoad(SOUND::SPAZSOUNDS_YAHOO, "sm64mariodoh.WAV"); //buttstomp
	jjSampleLoad(SOUND::SPAZSOUNDS_YAHOO2, "sm64mariohaha.WAV"); //When using a spring
	jjSampleLoad(SOUND::SPAZSOUNDS_WOOHOO, "sm64mariohoo.WAV"); // Random noise during speedjump
	jjSampleLoad(SOUND::SPAZSOUNDS_OHOH, "sm64mariohoohoo.WAV"); // Random noise during speedjump
	jjSampleLoad(SOUND::SPAZSOUNDS_HAHAHA, "sm64mariohoo.WAV"); // Random noise 
	jjSampleLoad(SOUND::SPAZSOUNDS_HAHAHA2, "sm64mariohoohoo.WAV"); // Random noise
	jjSampleLoad(SOUND::SPAZSOUNDS_CHIRP, "smbpowerupappears.WAV"); //Mushroom idle
	jjSampleLoad(SOUND::SPAZSOUNDS_BIRDSIT, "smbpowerup.WAV"); // Mushroom idle
	jjSampleLoad(SOUND::SPAZSOUNDS_EATBIRD, "smbpipe.WAV"); // Mushroom idle
	jjSampleLoad(SOUND::SPAZSOUNDS_HOHOHO1, "sm64mariowaha.WAV"); //Flash and spinning idle
	jjSampleLoad(SOUND::SPAZSOUNDS_HAPPY, "sm64mariookeydokey.WAV"); //Flash and spinning idle
	jjSampleLoad(SOUND::BILSBOSS_SCARY3, "smbmariodie.WAV"); //Stored Death sound


	
	uint emptyCustomAnimSlot = 0;
	while (jjAnimSets[ANIM::CUSTOM[emptyCustomAnimSlot]].firstAnim != 0) //find an unused slot in ANIM::CUSTOM
		++emptyCustomAnimSlot;
	jjANIMSET@ emptyCustomAnim = jjAnimSets[ANIM::CUSTOM[emptyCustomAnimSlot]];
	emptyCustomAnim.load(0, "mario.j2a"); //adjust as needed for your particular circumstances
	const uint firstCustomCharacterAnimID = emptyCustomAnim.firstAnim;
	
	const uint firstSpazAnimID = jjAnimSets[ANIM::SPAZ].firstAnim; //or use ANIM::JAZZ or ANIM::LORI instead if that's what you're going for, or even more than one.
	for (uint i = 0; i < RABBIT::Anims.length; ++i)
		jjAnimations[firstSpazAnimID + RABBIT::Anims[i]] = jjAnimations[firstCustomCharacterAnimID + i];

	uint emptyCustomAnimSlot2 = 1;
	while (jjAnimSets[ANIM::CUSTOM[emptyCustomAnimSlot2]].firstAnim != 0) //find an unused slot in ANIM::CUSTOM
		++emptyCustomAnimSlot2;
	jjANIMSET@ emptyCustomAnim2 = jjAnimSets[ANIM::CUSTOM[emptyCustomAnimSlot2]];
	emptyCustomAnim2.load(1, "mario.j2a"); //adjust as needed for your particular circumstances
	const uint secondCustomCharacterAnimID = emptyCustomAnim2.firstAnim;
	
	const uint secondSpazAnimID = jjAnimSets[ANIM::SPAZ2].firstAnim; //or use ANIM::JAZZ or ANIM::LORI instead if that's what you're going for, or even more than one.
	for (uint i = 0; i < 4; ++i)
		jjAnimations[secondSpazAnimID + i] = jjAnimations[secondCustomCharacterAnimID + i];

	uint emptyCustomAnimSlot3 = 2;
	while (jjAnimSets[ANIM::CUSTOM[emptyCustomAnimSlot3]].firstAnim != 0) //find an unused slot in ANIM::CUSTOM
		++emptyCustomAnimSlot3;
	jjANIMSET@ emptyCustomAnim3 = jjAnimSets[ANIM::CUSTOM[emptyCustomAnimSlot3]];
	emptyCustomAnim3.load(2, "mario.j2a"); //adjust as needed for your particular circumstances
	const uint thirdCustomCharacterAnimID = emptyCustomAnim3.firstAnim;

	const uint thirdSpazAnimID = jjAnimSets[ANIM::FACES].firstAnim;
	if (!jjIsTSF) jjAnimations[thirdCustomCharacterAnimID + 4] = jjAnimations[thirdCustomCharacterAnimID];
	if (jjIsTSF) jjAnimations[thirdCustomCharacterAnimID + 5] = jjAnimations[thirdCustomCharacterAnimID];
	if (!jjIsTSF) jjAnimations[thirdSpazAnimID + 4] = jjAnimations[thirdCustomCharacterAnimID];
	if (jjIsTSF) jjAnimations[thirdSpazAnimID + 5] = jjAnimations[thirdCustomCharacterAnimID];
}

void onPlayer(jjPLAYER@ play) {
	if (play.charCurr == CHAR::JAZZ || play.charCurr == CHAR::LORI)	play.morphTo(CHAR::SPAZ);
	if (play.health == 0 && jjGameTicks%140 == 0) 	jjSamplePriority(SOUND::BILSBOSS_SCARY3);
}