RuneI
Class SarkRagnar

source: c:\runehov\RuneI\Classes\SarkRagnar.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Pawn
         |
         +--Engine.PlayerPawn
            |
            +--RuneI.RunePlayer
               |
               +--RuneI.SarkRagnar
Direct Known Subclasses:None

class SarkRagnar
extends RuneI.RunePlayer

//============================================================================= // SarkRagnar. //=============================================================================

Function Summary
 void ApplyGoreCap(int BodyPart)
     
//============================================================
//
// ApplyGoreCap
//
//============================================================
 int BodyPartForPolyGroup(int polygroup)
     
//============================================================
//
// BodyPartForPolyGroup
//
//============================================================
 Texture PainSkin(int BodyPart)
     
//============================================================
//
// PainSkin
//
// returns the pain skin for a given polygroup
//============================================================
 void PainTimer()
     
//===================================================================
//
// PainTimer
//
// SarkRagnar overrides PainTimer to control gaining health from
// LokiBlood pools
//===================================================================
 void PlayTakeHit(float tweentime, int damage, vector HitLoc, name damageType, vector Momentum, int BodyPart)
     
//=============================================================================
//
// PlayTakeHit
//
//=============================================================================
 void PostBeginPlay()
     
//============================================================
//
// PostBeginPlay
//
//============================================================



Source Code


00001	//=============================================================================
00002	// SarkRagnar.
00003	//=============================================================================
00004	class SarkRagnar extends RunePlayer;
00005	
00006	//============================================================
00007	//
00008	// PostBeginPlay
00009	//
00010	//============================================================
00011	
00012	function PostBeginPlay()
00013	{
00014		local actor f;
00015	
00016		Super.PostBeginPlay();
00017	
00018			f = Spawn(Class'SarkEyeRagnar');
00019		AttachActorToJoint(f, JointNamed('head'));
00020	}
00021	
00022	//============================================================
00023	//
00024	// PainSkin
00025	//
00026	// returns the pain skin for a given polygroup
00027	//============================================================
00028	
00029	function Texture PainSkin(int BodyPart)
00030	{
00031		switch(BodyPart)
00032		{
00033			case BODYPART_TORSO:
00034				SkelGroupSkins[1] = Texture'players.RagnarRagsrk_bodypain';
00035				break;
00036			case BODYPART_HEAD:
00037				SkelGroupSkins[13] = Texture'players.RagnarRagsrk_headpain';
00038				break;
00039			case BODYPART_LARM1:
00040				SkelGroupSkins[10] = Texture'players.RagnarRagsrk_armspain';
00041				SkelGroupSkins[11] = Texture'players.RagnarRagsrk_armspain';
00042				break;
00043			case BODYPART_RARM1:
00044				SkelGroupSkins[6] = Texture'players.RagnarRagsrk_armspain';
00045				SkelGroupSkins[7] = Texture'players.RagnarRagsrk_armspain';
00046				break;
00047			case BODYPART_LLEG1:
00048				SkelGroupSkins[3] = Texture'players.RagnarRagsrk_legspain';
00049				SkelGroupSkins[8] = Texture'players.RagnarRagsrk_legspain';
00050				break;
00051			case BODYPART_RLEG1:
00052				SkelGroupSkins[2] = Texture'players.RagnarRagsrk_legspain';
00053				SkelGroupSkins[4] = Texture'players.RagnarRagsrk_legspain';
00054				break;
00055		}
00056		return None;
00057	}
00058	
00059	//============================================================
00060	//
00061	// BodyPartForPolyGroup
00062	//
00063	//============================================================
00064	
00065	function int BodyPartForPolyGroup(int polygroup)
00066	{
00067		switch(polygroup)
00068		{
00069			case 13:							return BODYPART_HEAD;
00070			case 10: 							return BODYPART_LARM1;
00071			case 6: case 14: case 15:			return BODYPART_RARM1;
00072			case 8:								return BODYPART_LLEG1;
00073			case 4:								return BODYPART_RLEG1;
00074			case 1: case 2: case 3: case 5: case 7: case 9: case 11:
00075			case 12:							return BODYPART_TORSO;
00076		}
00077		return BODYPART_BODY;
00078	}
00079	
00080	//============================================================
00081	//
00082	// ApplyGoreCap
00083	//
00084	//============================================================
00085	
00086	function ApplyGoreCap(int BodyPart)
00087	{
00088		switch(BodyPart)
00089		{
00090			case BODYPART_LARM1:
00091				SkelGroupSkins[9] = Texture'runefx.gore_bone';
00092				SkelGroupFlags[9] = SkelGroupFlags[9] & ~POLYFLAG_INVISIBLE;
00093				break;
00094			case BODYPART_RARM1:
00095				SkelGroupSkins[5] = Texture'runefx.gore_bone';
00096				SkelGroupFlags[5] = SkelGroupFlags[5] & ~POLYFLAG_INVISIBLE;
00097				break;
00098			case BODYPART_HEAD:
00099				SkelGroupSkins[12] = Texture'runefx.gore_bone';
00100				SkelGroupFlags[12] = SkelGroupFlags[12] & ~POLYFLAG_INVISIBLE;
00101				break;
00102		}
00103	}
00104	
00105	//================================================
00106	//
00107	// SeveredLimbClass
00108	//
00109	//================================================
00110	function class<Actor> SeveredLimbClass(int BodyPart)
00111	{
00112		switch(BodyPart)
00113		{
00114			case BODYPART_LARM1:
00115			case BODYPART_RARM1:
00116				return class'SarkRagnarArm';
00117			case BODYPART_HEAD:
00118				return class'SarkRagnarHead';
00119		}
00120		return None;
00121	}
00122	
00123	
00124	//===================================================================
00125	//
00126	// PainTimer
00127	//
00128	// SarkRagnar overrides PainTimer to control gaining health from
00129	// LokiBlood pools
00130	//===================================================================
00131	
00132	function PainTimer()
00133	{
00134		local int i;
00135		local int newHealth;
00136		local float depth;
00137		local vector loc;
00138		local LokiHealthTrail t;
00139	
00140		// Pain timer just expired:
00141		//  Check what zone I'm in (and which parts are)
00142		//  based on that cause damage, and reset PainTime
00143	
00144		if((Health < 0) || (Level.NetMode == NM_Client))
00145			return;
00146			
00147		if(FootRegion.Zone.bPainZone && FootRegion.Zone.bLokiBloodZone)
00148		{ // SarkRagnar is standing in a LokiBlood pool, try and give him health from it
00149			if(Health < MaxHealth)
00150			{
00151				newHealth = LokiBloodZone(FootRegion.Zone).ExtractHealth();
00152				if(newHealth > 0)
00153				{
00154					Health += newHealth;
00155					if(Health > MaxHealth)
00156						Health = MaxHealth;
00157	
00158					for(i = 0; i < 4; i++)
00159					{
00160						loc = vect(0, 0, 20);
00161						loc.Z += FRand() * 10;
00162						t = spawn(class'LokiHealthTrail', self,, Location - loc);			
00163						
00164						t.amplitude = 25;
00165						t.Velocity.X = 4 + i * 2.5;
00166						t.Velocity.Z = 60 + i * 10;
00167						t.LifeSpan = (5 - i) * 0.35;
00168	
00169						if(i == 0 || i == 2)
00170						{
00171							t.Velocity.X *= -1;
00172						}				
00173					}
00174				}
00175			}
00176	
00177			PainTime = 1.0;
00178			return;
00179		}
00180	
00181		Super.PainTimer();
00182	}
00183	
00184	//=============================================================================
00185	//
00186	// PlayTakeHit
00187	//
00188	//=============================================================================
00189	
00190	function PlayTakeHit(float tweentime, int damage, vector HitLoc, name damageType, vector Momentum, int BodyPart)
00191	{
00192		local float rnd;
00193		local float time;
00194	
00195		rnd = FClamp(Damage, 10, 40);
00196		if ( damageType == 'burned' )
00197			ClientFlash( -0.009375 * rnd, rnd * vect(16.41, 11.719, 4.6875));
00198		else if ( damageType == 'corroded' )
00199			ClientFlash( -0.01171875 * rnd, rnd * vect(9.375, 14.0625, 4.6875));
00200		else if ( damageType == 'drowned' )
00201			ClientFlash(-0.390, vect(312.5,468.75,468.75));
00202		else 
00203			ClientFlash( -0.017 * rnd, rnd * vect(20, 4, 20)); // Purplish flash
00204	
00205		time = 0.15 + 0.005 * Damage;
00206		ShakeView(time, Damage * 10, time * 0.5);
00207	
00208		Super.PlayTakeHit(tweentime, damage, HitLoc, damageType, Momentum, BodyPart);
00209	}
00210	
00211	defaultproperties
00212	{
00213	     ExploreSpeed=472.000000
00214	     CombatSpeed=337.000000
00215	     Die4=Sound'CreaturesSnd.Ragnar.ragsarkdeath04'
00216	     JumpGruntSound(1)=Sound'CreaturesSnd.Ragnar.ragsarkjump02'
00217	     FallingDeathSound=Sound'CreaturesSnd.Ragnar.ragsarkland02'
00218	     FallingScreamSound=Sound'CreaturesSnd.Ragnar.ragsarkfall01'
00219	     HitSoundLow(0)=Sound'CreaturesSnd.Ragnar.ragsarkhit01'
00220	     HitSoundLow(1)=Sound'CreaturesSnd.Ragnar.ragsarkhit02'
00221	     HitSoundLow(2)=Sound'CreaturesSnd.Ragnar.ragsarkhit03'
00222	     HitSoundMed(0)=Sound'CreaturesSnd.Ragnar.ragsarkhit04'
00223	     HitSoundMed(1)=Sound'CreaturesSnd.Ragnar.ragsarkhit05'
00224	     HitSoundMed(2)=Sound'CreaturesSnd.Ragnar.ragsarkhit06'
00225	     HitSoundHigh(0)=Sound'CreaturesSnd.Ragnar.ragsarkhit07'
00226	     HitSoundHigh(1)=Sound'CreaturesSnd.Ragnar.ragsarkhit08'
00227	     HitSoundHigh(2)=Sound'CreaturesSnd.Ragnar.ragsarkhit09'
00228	     BerserkSoundStart=Sound'CreaturesSnd.Ragnar.ragsarkberstart'
00229	     BerserkSoundEnd=Sound'CreaturesSnd.Ragnar.ragsarkberend'
00230	     BerserkSoundLoop=Sound'CreaturesSnd.Ragnar.ragsarkberzerkL'
00231	     BerserkYellSound(0)=Sound'CreaturesSnd.Ragnar.ragsarkattack01'
00232	     BerserkYellSound(1)=Sound'CreaturesSnd.Ragnar.ragsarkattack02'
00233	     BerserkYellSound(2)=Sound'CreaturesSnd.Ragnar.ragsarkattack03'
00234	     BerserkYellSound(3)=Sound'CreaturesSnd.Ragnar.ragsarkattack04'
00235	     BerserkYellSound(4)=Sound'CreaturesSnd.Ragnar.ragsarkattack05'
00236	     BerserkYellSound(5)=Sound'CreaturesSnd.Ragnar.ragsarkattack06'
00237	     GroundSpeed=384.000000
00238	     JumpZ=650.000000
00239	     BaseEyeHeight=45.000000
00240	     EyeHeight=45.000000
00241	     Health=50
00242	     Die=Sound'CreaturesSnd.Ragnar.ragsarkdeath01'
00243	     Die2=Sound'CreaturesSnd.Ragnar.ragsarkdeath02'
00244	     Die3=Sound'CreaturesSnd.Ragnar.ragsarkdeath03'
00245	     LandSoundWood=Sound'CreaturesSnd.Sark.sarkland02'
00246	     LandSoundMetal=Sound'CreaturesSnd.Sark.sarkland02'
00247	     LandSoundStone=Sound'CreaturesSnd.Sark.sarkland02'
00248	     LandSoundFlesh=Sound'CreaturesSnd.Sark.sarkland02'
00249	     LandSoundIce=Sound'CreaturesSnd.Sark.sarkland02'
00250	     LandSoundSnow=Sound'CreaturesSnd.Sark.sarkland02'
00251	     LandSoundEarth=Sound'CreaturesSnd.Sark.sarkland02'
00252	     LandSoundWater=Sound'CreaturesSnd.Sark.sarkland02'
00253	     LandSoundMud=Sound'CreaturesSnd.Sark.sarkland02'
00254	     LandSoundLava=Sound'CreaturesSnd.Sark.sarkland02'
00255	     bNet=False
00256	     DrawScale=1.500000
00257	     CollisionRadius=27.000000
00258	     CollisionHeight=63.000000
00259	     SkelMesh=24
00260	     SkelGroupSkins(0)=Texture'Players.RagnarRagsrk_arms'
00261	     SkelGroupSkins(1)=Texture'Players.RagnarRagsrk_body'
00262	     SkelGroupSkins(2)=Texture'Players.RagnarRagsrk_legs'
00263	     SkelGroupSkins(3)=Texture'Players.RagnarRagsrk_legs'
00264	     SkelGroupSkins(4)=Texture'Players.RagnarRagsrk_legs'
00265	     SkelGroupSkins(5)=Texture'Players.RagnarRagsrk_arms'
00266	     SkelGroupSkins(6)=Texture'Players.RagnarRagsrk_arms'
00267	     SkelGroupSkins(7)=Texture'Players.RagnarRagsrk_arms'
00268	     SkelGroupSkins(8)=Texture'Players.RagnarRagsrk_legs'
00269	     SkelGroupSkins(9)=Texture'Players.RagnarRagsrk_arms'
00270	     SkelGroupSkins(10)=Texture'Players.RagnarRagsrk_arms'
00271	     SkelGroupSkins(11)=Texture'Players.RagnarRagsrk_arms'
00272	     SkelGroupSkins(12)=Texture'Players.RagnarRagsrk_arms'
00273	     SkelGroupSkins(13)=Texture'Players.RagnarRagsrk_head'
00274	     SkelGroupSkins(14)=Texture'Players.RagnarRagsrk_arms'
00275	     SkelGroupSkins(15)=Texture'Players.RagnarRagsrk_arms'
00276	}

End Source Code