creating a monster for ut2k4

How to make your Monster fly


Using the MagdalenaMonster as our base monster that we made in a previous tutorial this will show you how to turn your monster into a flying monster. The magdalena base class can be downloaded from here:Magdalana Base Class

Making your monster fly is easy! To make it look convincing you will need to change some animations. Just set bCanFly=true in the monsters defaultproperties. Like this.
defaultproperties
{
	bCanFly=true
}
	
Now your monster will fly off ledges and things like that.

When a flying monster takes damage you need to make sure it plays a good animation that makes sense. So your monster doesn't appear to walk in mid air for a second. Magdalena doesn't have any good flying-take hit animations so instead I will just over ride that function and leave it blank.
simulated function PlayDirectionalHit(Vector HitLoc)
{
}
	
Excellent. Now for the remaining defaultproperties. We just need to change some animations to some "flying" ones. Magadlenas best flying animation is her "Swim_Thread" animation. So I will use this. Find the best ones for your skin.

defaultproperties
{
	AirStillAnim="Swim_Thread"
	AirAnims(0)="Swim_Thread"
	AirAnims(1)="Swim_Thread"
	AirAnims(2)="Swim_Thread"
	AirAnims(3)="Swim_Thread"
	TakeoffStillAnim="Swim_Thread"
	TakeoffAnims(0)="Swim_Thread"
	TakeoffAnims(1)="Swim_Thread"
	TakeoffAnims(2)="Swim_Thread"
	TakeoffAnims(3)="Swim_Thread"
}
	
Thats it! Your monster class should look similar to this.
class MagdalenaMonster extends Monster;

simulated function PlayDirectionalDeath(Vector HitLoc)
{
	local float Decision;

	Decision = fRand();

	if(Decision < 0.25)
	{
		PlayAnim('DeathF',, 0.1);
	}
	else if ( Decision > 0.25 && Decision < 0.50)
	{
		PlayAnim('DeathB',, 0.1);
	}
	else if ( Decision > 0.50 && Decision < 0.75)
	{
		PlayAnim('DeathL',, 0.1);
	}
	else
	{
		PlayAnim('DeathR',, 0.1);
	}
}

simulated function PlayDirectionalHit(Vector HitLoc)
{
}

defaultproperties
{
	bCanFly=true
	Mesh=SkeletalMesh'Magdalena.Magdalena'
	Skins(0)=Texture'MagdalenaTextures.magdalena_body'
	Skins(1)=Texture'MagdalenaTextures.magdalena_head'
	IdleWeaponAnim="Idle_Biggun"
	IdleHeavyAnim="Idle_Biggun"
	IdleRifleAnim="Idle_Rifle"
	TurnRightAnim="TurnR"
	TurnLeftAnim="TurnL"
	CrouchAnims(0)="CrouchF"
	CrouchAnims(1)="CrouchB"
	CrouchAnims(2)="CrouchL"
	CrouchAnims(3)="CrouchR"
	CrouchTurnRightAnim="Crouch_TurnR"
	CrouchTurnLeftAnim="Crouch_TurnL"
	AirStillAnim="Swim_Thread"
	AirAnims(0)="Swim_Thread"
	AirAnims(1)="Swim_Thread"
	AirAnims(2)="Swim_Thread"
	AirAnims(3)="Swim_Thread"
	TakeoffStillAnim="Swim_Thread"
	TakeoffAnims(0)="Swim_Thread"
	TakeoffAnims(1)="Swim_Thread"
	TakeoffAnims(2)="Swim_Thread"
	TakeoffAnims(3)="Swim_Thread"
	LandAnims(0)="JumpF_Land"
	LandAnims(1)="JumpB_Land"
	LandAnims(2)="JumpL_Land"
	LandAnims(3)="JumpR_Land"
	DodgeAnims(0)="DodgeF"
	DodgeAnims(1)="DodgeB"
	DodgeAnims(2)="DodgeL"
	DodgeAnims(3)="DodgeR"
	DoubleJumpAnims(0)="DoubleJumpF"
	DoubleJumpAnims(1)="DoubleJumpB"
	DoubleJumpAnims(2)="DoubleJumpL"
	DoubleJumpAnims(3)="DoubleJumpR"
	MovementAnims(0)="RunF"
	MovementAnims(1)="RunB"
	MovementAnims(2)="RunL"
	MovementAnims(3)="RunR"
	SwimAnims(0)="SwimF"
	SwimAnims(1)="SwimB"
	SwimAnims(2)="SwimL"
	SwimAnims(3)="SwimR"
	WalkAnims(0)="WalkF"
	WalkAnims(1)="WalkB"
	WalkAnims(2)="WalkL"
	WalkAnims(3)="WalkR"
	WallDodgeAnims(0)="WallDodgeF"
	WallDodgeAnims(1)="WallDodgeB"
	WallDodgeAnims(2)="WallDodgeL"
	WallDodgeAnims(3)="WallDodgeR"
	IdleRestAnim="Idle_Rest"
	IdleCrouchAnim="Crouch"
	IdleSwimAnim="Swim_Thread"
	IdleChatAnim="idle_chat"
	FireHeavyRapidAnim="Biggun_Aimed"
	FireHeavyBurstAnim="Biggun_Burst"
	FireRifleRapidAnim="Rifle_Aimed"
	FireRifleBurstAnim="Rifle_Burst"
	HitSound(0)=Sound'SkaarjPack_rc.injur1sk'
	HitSound(1)=Sound'SkaarjPack_rc.injur1sk'
	HitSound(2)=Sound'SkaarjPack_rc.injur1sk'
	HitSound(3)=Sound'SkaarjPack_rc.injur1sk'
	DeathSound(0)=Sound'SkaarjPack_rc.death1br'
	DeathSound(1)=Sound'SkaarjPack_rc.death1br'
	DeathSound(2)=Sound'SkaarjPack_rc.death1br'
	DeathSound(3)=Sound'SkaarjPack_rc.death1br'
	ChallengeSound(0)=Sound'SkaarjPack_rc.scuttle1pp'
	ChallengeSound(1)=Sound'SkaarjPack_rc.scuttle1pp'
	ChallengeSound(2)=Sound'SkaarjPack_rc.scuttle1pp'
	ChallengeSound(3)=Sound'SkaarjPack_rc.scuttle1pp'
}
	

TOP TIP - Appliances in Standby mode still use a significant amount of electricity. Turn them off at the wall!