Core.Object | +--Engine.Actor | +--Engine.Pawn | +--Engine.PlayerPawn | +--UnrealShare.UnrealIPlayer | +--UnrealI.NaliPlayer
void
NormallyVisible()
PlayCrawling()
PlayDuck()
PlayDying(name DamageType, vector HitLoc)
PlayFeignDeath()
PlayFiring()
PlayGutHit(float tweentime)
//FIXME - add death first frames as alternate takehit anims!!!
PlayHeadHit(float tweentime)
PlayInAir()
PlayLanded(float impactVel)
PlayLeftHit(float tweentime)
PlayRightHit(float tweentime)
PlayRising()
PlayRunning()
PlaySwimming()
PlayTurning()
PlayWaiting()
PlayWalking()
PlayWeaponSwitch(Weapon NewWeapon)
SwimAnimUpdate(bool bNotForward)
TweenToRunning(float tweentime)
TweenToSwimming(float tweentime)
TweenToWaiting(float tweentime)
TweenToWalking(float tweentime)
EndState()
ProcessMove(float DeltaTime, vector NewAccel, eDodgeDir DodgeMove, rotator DeltaRot)
TakeDamage(int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, name damageType)
Fire(optional float)
BeginState()
Landed(vector HitNormal)
PlayDying(name DamageType, vector HitLocation)
PlayTakeHit(float tweentime, vector HitLoc, int Damage)
00001 //============================================================================= 00002 // NaliPlayer. 00003 //============================================================================= 00004 class NaliPlayer extends UnrealIPlayer; 00005 00006 #exec MESH IMPORT MESH=Nali2 ANIVFILE=MODELS\naliX_a.3D DATAFILE=..\unrealshare\MODELS\nali_d.3D X=0 Y=0 Z=0 ZEROTEX=1 00007 #exec MESH ORIGIN MESH=Nali2 X=00 Y=-130 Z=30 YAW=64 ROLL=-64 00008 00009 #exec MESH SEQUENCE MESH=nali2 SEQ=All STARTFRAME=0 NUMFRAMES=447 00010 #exec MESH SEQUENCE MESH=nali2 SEQ=Backup STARTFRAME=0 NUMFRAMES=10 RATE=15 00011 #exec MESH SEQUENCE MESH=nali2 SEQ=Bowing STARTFRAME=10 NUMFRAMES=20 RATE=15 Group=Ducking 00012 #exec MESH SEQUENCE MESH=nali2 SEQ=Breath STARTFRAME=30 NUMFRAMES=8 RATE=6 Group=Waiting 00013 #exec MESH SEQUENCE MESH=nali2 SEQ=Cough STARTFRAME=38 NUMFRAMES=25 RATE=15 Group=Waiting 00014 #exec MESH SEQUENCE MESH=nali2 SEQ=Landed STARTFRAME=68 NUMFRAMES=1 Group=Landing 00015 #exec MESH SEQUENCE MESH=nali2 SEQ=Cringe STARTFRAME=63 NUMFRAMES=15 RATE=15 Group=Ducking 00016 #exec MESH SEQUENCE MESH=nali2 SEQ=Dead STARTFRAME=78 NUMFRAMES=38 RATE=15 00017 #exec MESH SEQUENCE MESH=nali2 SEQ=DeathEnd STARTFRAME=115 NUMFRAMES=1 00018 #exec MESH SEQUENCE MESH=nali2 SEQ=Dead2 STARTFRAME=116 NUMFRAMES=16 RATE=15 00019 #exec MESH SEQUENCE MESH=nali2 SEQ=DeathEnd2 STARTFRAME=131 NUMFRAMES=1 00020 #exec MESH SEQUENCE MESH=nali2 SEQ=Dead3 STARTFRAME=132 NUMFRAMES=13 RATE=15 00021 #exec MESH SEQUENCE MESH=nali2 SEQ=Dead4 STARTFRAME=145 NUMFRAMES=21 RATE=15 00022 #exec MESH SEQUENCE MESH=nali2 SEQ=Wave STARTFRAME=166 NUMFRAMES=23 RATE=15 Group=Gesture 00023 #exec MESH SEQUENCE MESH=nali2 SEQ=GetDown STARTFRAME=189 NUMFRAMES=5 RATE=15 00024 #exec MESH SEQUENCE MESH=nali2 SEQ=GetUp STARTFRAME=194 NUMFRAMES=8 RATE=15 00025 #exec MESH SEQUENCE MESH=nali2 SEQ=levitate STARTFRAME=202 NUMFRAMES=6 RATE=6 00026 #exec MESH SEQUENCE MESH=nali2 SEQ=Victory1 STARTFRAME=208 NUMFRAMES=8 RATE=6 Group=Gesture 00027 #exec MESH SEQUENCE MESH=nali2 SEQ=spell STARTFRAME=216 NUMFRAMES=28 RATE=15 00028 #exec MESH SEQUENCE MESH=nali2 SEQ=Sweat STARTFRAME=244 NUMFRAMES=18 RATE=15 Group=Waiting 00029 #exec MESH SEQUENCE MESH=nali2 SEQ=walk STARTFRAME=262 NUMFRAMES=20 RATE=15 00030 #exec MESH SEQUENCE MESH=nali2 SEQ=turn STARTFRAME=262 NUMFRAMES=5 RATE=15 00031 #exec MESH SEQUENCE MESH=nali2 SEQ=GutHit STARTFRAME=282 NUMFRAMES=1 Group=TakeHit 00032 #exec MESH SEQUENCE MESH=nali2 SEQ=AimDown STARTFRAME=283 NUMFRAMES=1 Group=Waiting 00033 #exec MESH SEQUENCE MESH=nali2 SEQ=AimUp STARTFRAME=284 NUMFRAMES=1 Group=Waiting 00034 #exec MESH SEQUENCE MESH=nali2 SEQ=Bow2 STARTFRAME=285 NUMFRAMES=28 RATE=15 00035 #exec MESH SEQUENCE MESH=nali2 SEQ=HeadHit STARTFRAME=313 NUMFRAMES=1 Group=TakeHit 00036 #exec MESH SEQUENCE MESH=nali2 SEQ=LeftHit STARTFRAME=314 NUMFRAMES=1 Group=TakeHit 00037 #exec MESH SEQUENCE MESH=nali2 SEQ=RightHit STARTFRAME=315 NUMFRAMES=1 Group=TakeHit 00038 #exec MESH SEQUENCE MESH=nali2 SEQ=Run STARTFRAME=316 NUMFRAMES=10 RATE=15 00039 #exec MESH SEQUENCE MESH=nali2 SEQ=RunFire STARTFRAME=326 NUMFRAMES=10 RATE=15 00040 #exec MESH SEQUENCE MESH=nali2 SEQ=StilFire STARTFRAME=336 NUMFRAMES=1 Group=Waiting 00041 #exec MESH SEQUENCE MESH=nali2 SEQ=WalkFire STARTFRAME=337 NUMFRAMES=20 RATE=15 00042 #exec MESH SEQUENCE MESH=nali2 SEQ=WalkTool STARTFRAME=357 NUMFRAMES=20 RATE=15 00043 #exec MESH SEQUENCE MESH=nali2 SEQ=Drowning STARTFRAME=377 NUMFRAMES=20 RATE=15 00044 #exec MESH SEQUENCE MESH=nali2 SEQ=Duckwalk STARTFRAME=397 NUMFRAMES=20 RATE=15 00045 #exec MESH SEQUENCE MESH=nali2 SEQ=Swim STARTFRAME=417 NUMFRAMES=15 RATE=15 00046 #exec MESH SEQUENCE MESH=nali2 SEQ=Tread STARTFRAME=432 NUMFRAMES=15 RATE=15 00047 00048 #exec MESH SEQUENCE MESH=nali2 SEQ=fighter STARTFRAME=0 NUMFRAMES=1 00049 00050 #exec TEXTURE IMPORT NAME=JNali1 FILE=..\unrealshare\MODELS\nali.PCX GROUP=Skins 00051 #exec MESHMAP SCALE MESHMAP=nali2 X=0.069 Y=0.069 Z=0.138 00052 #exec MESHMAP SETTEXTURE MESHMAP=nali2 NUM=0 TEXTURE=Jnali1 00053 00054 #exec MESH NOTIFY MESH=Nali2 SEQ=Dead TIME=0.46 FUNCTION=LandThump 00055 #exec MESH NOTIFY MESH=Nali2 SEQ=Dead2 TIME=0.64 FUNCTION=LandThump 00056 #exec MESH NOTIFY MESH=Nali2 SEQ=Dead3 TIME=0.84 FUNCTION=LandThump 00057 #exec MESH NOTIFY MESH=Nali2 SEQ=Dead4 TIME=0.51 FUNCTION=LandThump 00058 #exec MESH NOTIFY MESH=Nali2 SEQ=Backup TIME=0.25 FUNCTION=PlayFootStep 00059 #exec MESH NOTIFY MESH=Nali2 SEQ=Backup TIME=0.75 FUNCTION=PlayFootStep 00060 #exec MESH NOTIFY MESH=Nali2 SEQ=Walk TIME=0.25 FUNCTION=PlayFootStep 00061 #exec MESH NOTIFY MESH=Nali2 SEQ=Walk TIME=0.75 FUNCTION=PlayFootStep 00062 #exec MESH NOTIFY MESH=Nali2 SEQ=WalkFire TIME=0.25 FUNCTION=PlayFootStep 00063 #exec MESH NOTIFY MESH=Nali2 SEQ=WalkFire TIME=0.75 FUNCTION=PlayFootStep 00064 #exec MESH NOTIFY MESH=Nali2 SEQ=WalkTool TIME=0.25 FUNCTION=PlayFootStep 00065 #exec MESH NOTIFY MESH=Nali2 SEQ=WalkTool TIME=0.75 FUNCTION=PlayFootStep 00066 #exec MESH NOTIFY MESH=Nali2 SEQ=Run TIME=0.25 FUNCTION=PlayFootStep 00067 #exec MESH NOTIFY MESH=Nali2 SEQ=Run TIME=0.75 FUNCTION=PlayFootStep 00068 #exec MESH NOTIFY MESH=Nali2 SEQ=RunFire TIME=0.25 FUNCTION=PlayFootStep 00069 #exec MESH NOTIFY MESH=Nali2 SEQ=RunFire TIME=0.75 FUNCTION=PlayFootStep 00070 00071 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\injur1a.WAV" NAME="injur1n" GROUP="Nali" 00072 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\injur2a.WAV" NAME="injur2n" GROUP="Nali" 00073 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\contct1a.WAV" NAME="contct1n" GROUP="Nali" 00074 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\contct3a.WAV" NAME="contct3n" GROUP="Nali" 00075 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\fear1a.WAV" NAME="fear1n" GROUP="Nali" 00076 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\breath2na.WAV" NAME="breath1n" GROUP="Nali" 00077 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\death1na.WAV" NAME="death1n" GROUP="Nali" 00078 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\death2a.WAV" NAME="death2n" GROUP="Nali" 00079 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\bowing1a.WAV" NAME="bowing1n" GROUP="Nali" 00080 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\cringe2a.WAV" NAME="cringe2n" GROUP="Nali" 00081 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\backup2a.WAV" NAME="backup2n" GROUP="Nali" 00082 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\cough1na.WAV" NAME="cough1n" GROUP="Nali" 00083 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\sweat1na.WAV" NAME="sweat1n" GROUP="Nali" 00084 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Nali\levitF1.WAV" NAME="pray1n" GROUP="Nali" 00085 #exec AUDIO IMPORT FILE="..\Unrealshare\Sounds\Cow\walknc.WAV" NAME="walkC" GROUP="Cow" 00086 #exec AUDIO IMPORT FILE="..\unrealshare\Sounds\Generic\teleprt27.WAV" NAME="Teleport1" GROUP="Generic" 00087 00088 function PlayTurning() 00089 { 00090 BaseEyeHeight = Default.BaseEyeHeight; 00091 PlayAnim('Turn', 0.3, 0.3); 00092 } 00093 00094 function TweenToWalking(float tweentime) 00095 { 00096 BaseEyeHeight = Default.BaseEyeHeight; 00097 if (Weapon == None) 00098 TweenAnim('Walk', tweentime); 00099 else if ( Weapon.bPointing || (CarriedDecoration != None) ) 00100 TweenAnim('WalkFire', tweentime); 00101 else 00102 TweenAnim('Walk', tweentime); 00103 } 00104 00105 function TweenToRunning(float tweentime) 00106 { 00107 BaseEyeHeight = Default.BaseEyeHeight; 00108 if (bIsWalking) 00109 TweenToWalking(0.1); 00110 else if (Weapon == None) 00111 PlayAnim('Run', 1, tweentime); 00112 else if ( Weapon.bPointing ) 00113 PlayAnim('RunFire', 1, tweentime); 00114 else 00115 PlayAnim('Run', 1, tweentime); 00116 } 00117 00118 function PlayWalking() 00119 { 00120 BaseEyeHeight = Default.BaseEyeHeight; 00121 if (Weapon == None) 00122 LoopAnim('Walk'); 00123 else if ( Weapon.bPointing || (CarriedDecoration != None) ) 00124 LoopAnim('WalkFire'); 00125 else 00126 LoopAnim('Walk'); 00127 } 00128 00129 function PlayRunning() 00130 { 00131 BaseEyeHeight = Default.BaseEyeHeight; 00132 if (Weapon == None) 00133 LoopAnim('Run'); 00134 else if ( Weapon.bPointing ) 00135 LoopAnim('RunFire'); 00136 else 00137 LoopAnim('Run'); 00138 } 00139 00140 function PlayRising() 00141 { 00142 BaseEyeHeight = 0.4 * Default.BaseEyeHeight; 00143 TweenAnim('DuckWalk', 0.7); 00144 } 00145 00146 function PlayFeignDeath() 00147 { 00148 local float decision; 00149 00150 BaseEyeHeight = 0; 00151 PlayAnim('Levitate', 0.3, 1.0); 00152 } 00153 00154 function PlayDying(name DamageType, vector HitLoc) 00155 { 00156 local vector X,Y,Z, HitVec, HitVec2D; 00157 local float dotp; 00158 00159 BaseEyeHeight = Default.BaseEyeHeight; 00160 PlayDyingSound(); 00161 00162 if ( FRand() < 0.15 ) 00163 { 00164 PlayAnim('Dead',0.7,0.1); 00165 return; 00166 } 00167 00168 // check for big hit 00169 if ( (Velocity.Z > 250) && (FRand() < 0.7) ) 00170 { 00171 PlayAnim('Dead4', 0.7, 0.1); 00172 return; 00173 } 00174 00175 // check for head hit 00176 if ( (DamageType == 'Decapitated') || (HitLoc.Z - Location.Z > 0.6 * CollisionHeight) ) 00177 { 00178 DamageType = 'Decapitated'; 00179 PlayAnim('Dead3', 0.7, 0.1); 00180 return; 00181 } 00182 00183 GetAxes(Rotation,X,Y,Z); 00184 HitVec = Normal(HitLoc - Location); 00185 dotp = HitVec dot Y; 00186 if (dotp > 0.0) 00187 PlayAnim('Dead', 0.7, 0.1); 00188 else 00189 PlayAnim('Dead2', 0.7, 0.1); 00190 } 00191 00192 //FIXME - add death first frames as alternate takehit anims!!! 00193 00194 function PlayGutHit(float tweentime) 00195 { 00196 if ( AnimSequence == 'GutHit' ) 00197 { 00198 if (FRand() < 0.5) 00199 TweenAnim('LeftHit', tweentime); 00200 else 00201 TweenAnim('RightHit', tweentime); 00202 } 00203 else 00204 TweenAnim('GutHit', tweentime); 00205 } 00206 00207 function PlayHeadHit(float tweentime) 00208 { 00209 if ( AnimSequence == 'HeadHit' ) 00210 TweenAnim('GutHit', tweentime); 00211 else 00212 TweenAnim('HeadHit', tweentime); 00213 } 00214 00215 function PlayLeftHit(float tweentime) 00216 { 00217 if ( AnimSequence == 'LeftHit' ) 00218 TweenAnim('GutHit', tweentime); 00219 else 00220 TweenAnim('LeftHit', tweentime); 00221 } 00222 00223 function PlayRightHit(float tweentime) 00224 { 00225 if ( AnimSequence == 'RightHit' ) 00226 TweenAnim('GutHit', tweentime); 00227 else 00228 TweenAnim('RightHit', tweentime); 00229 } 00230 00231 function PlayLanded(float impactVel) 00232 { 00233 impactVel = impactVel/JumpZ; 00234 impactVel = 0.1 * impactVel * impactVel; 00235 BaseEyeHeight = Default.BaseEyeHeight; 00236 00237 if ( Role == ROLE_Authority ) 00238 { 00239 if ( impactVel > 0.17 ) 00240 PlaySound(LandGrunt, SLOT_Talk, FMin(5, 5 * impactVel),false,1200,FRand()*0.4+0.8); 00241 if ( !FootRegion.Zone.bWaterZone && (impactVel > 0.01) ) 00242 PlaySound(Land, SLOT_Interact, FClamp(4.5 * impactVel,0.5,6), false, 1000, 1.0); 00243 } 00244 00245 if ( (GetAnimGroup(AnimSequence) == 'Dodge') && IsAnimating() ) 00246 return; 00247 if ( (impactVel > 0.06) || (GetAnimGroup(AnimSequence) == 'Jumping') ) 00248 TweenAnim('Landed', 0.12); 00249 else if ( !IsAnimating() ) 00250 { 00251 if ( GetAnimGroup(AnimSequence) == 'TakeHit' ) 00252 AnimEnd(); 00253 else 00254 TweenAnim('Landed', 0.12); 00255 } 00256 } 00257 00258 function PlayInAir() 00259 { 00260 BaseEyeHeight = Default.BaseEyeHeight; 00261 TweenAnim('RunFire', 0.4); 00262 } 00263 00264 function PlayDuck() 00265 { 00266 BaseEyeHeight = 0; 00267 TweenAnim('DuckWalk', 0.25); 00268 } 00269 00270 function PlayCrawling() 00271 { 00272 BaseEyeHeight = 0; 00273 LoopAnim('DuckWalk'); 00274 } 00275 00276 function TweenToWaiting(float tweentime) 00277 { 00278 if( IsInState('PlayerSwimming') || Physics==PHYS_Swimming ) 00279 { 00280 BaseEyeHeight = 0.7 * Default.BaseEyeHeight; 00281 TweenAnim('Tread', tweentime); 00282 } 00283 else 00284 { 00285 BaseEyeHeight = Default.BaseEyeHeight; 00286 TweenAnim('StilFire', tweentime); 00287 } 00288 } 00289 00290 function PlayWaiting() 00291 { 00292 local name newAnim; 00293 00294 if( IsInState('PlayerSwimming') || (Physics==PHYS_Swimming) ) 00295 { 00296 BaseEyeHeight = 0.7 * Default.BaseEyeHeight; 00297 LoopAnim('Tread'); 00298 } 00299 else 00300 { 00301 BaseEyeHeight = Default.BaseEyeHeight; 00302 if ( (Weapon != None) && Weapon.bPointing ) 00303 TweenAnim('StilFire', 0.3); 00304 else 00305 { 00306 if ( FRand() < 0.2 ) 00307 newAnim = 'Cough'; 00308 else if ( FRand() < 0.3 ) 00309 newAnim = 'Sweat'; 00310 else 00311 newAnim = 'Breath'; 00312 00313 if ( AnimSequence == newAnim ) 00314 LoopAnim(newAnim, 0.3 + 0.7 * FRand()); 00315 else 00316 PlayAnim(newAnim, 0.3 + 0.7 * FRand(), 0.25); 00317 } 00318 } 00319 } 00320 00321 function PlayFiring() 00322 { 00323 // switch animation sequence mid-stream if needed 00324 if (AnimSequence == 'Run') 00325 AnimSequence = 'RunFire'; 00326 else if (AnimSequence == 'Walk') 00327 AnimSequence = 'WalkFire'; 00328 else if ( (GetAnimGroup(AnimSequence) != 'Attack') 00329 && (GetAnimGroup(AnimSequence) != 'MovingAttack') 00330 && (GetAnimGroup(AnimSequence) != 'Dodge') 00331 && (AnimSequence != 'Swim') ) 00332 TweenAnim('StilFire', 0.02); 00333 } 00334 00335 function PlayWeaponSwitch(Weapon NewWeapon) 00336 { 00337 } 00338 00339 function PlaySwimming() 00340 { 00341 BaseEyeHeight = 0.7 * Default.BaseEyeHeight; 00342 LoopAnim('Swim'); 00343 } 00344 00345 function TweenToSwimming(float tweentime) 00346 { 00347 BaseEyeHeight = 0.7 * Default.BaseEyeHeight; 00348 TweenAnim('Swim',tweentime); 00349 } 00350 00351 function SwimAnimUpdate(bool bNotForward) 00352 { 00353 if ( !bAnimTransition && (GetAnimGroup(AnimSequence) != 'Gesture') && (AnimSequence != 'Swim') ) 00354 TweenToSwimming(0.1); 00355 } 00356 00357 function NormallyVisible() 00358 { 00359 bHidden = false; 00360 Style = STY_Normal; 00361 ScaleGlow = 1.0; 00362 } 00363 00364 state FeigningDeath 00365 { 00366 ignores SeePlayer, HearNoise, Bump, Fire, AltFire; 00367 00368 event PlayerTick( float DeltaTime ) 00369 { 00370 Super.PlayerTick(DeltaTime); 00371 00372 if ( (Role == ROLE_Authority) && !IsAnimating() && !bHidden ) 00373 { 00374 Style = STY_Translucent; 00375 ScaleGlow -= DeltaTime; 00376 if ( ScaleGlow < 0.3 ) 00377 bHidden = true; 00378 } 00379 } 00380 00381 function PlayTakeHit(float tweentime, vector HitLoc, int Damage) 00382 { 00383 NormallyVisible(); 00384 Global.PlayTakeHit(tweentime, HitLoc, Damage); 00385 } 00386 00387 function PlayDying(name DamageType, vector HitLocation) 00388 { 00389 NormallyVisible(); 00390 Global.PlayDying(DamageType, HitLocation); 00391 } 00392 00393 function Landed(vector HitNormal) 00394 { 00395 NormallyVisible(); 00396 Super.Landed(HitNormal); 00397 } 00398 00399 function EndState() 00400 { 00401 Super.EndState(); 00402 if ( (Role == ROLE_Authority) && !bHidden && (Style == STY_Translucent) ) 00403 NormallyVisible(); 00404 } 00405 } 00406 00407 state PlayerSwimming 00408 { 00409 ignores SeePlayer, HearNoise, Bump; 00410 00411 function BeginState() 00412 { 00413 Super.BeginState(); 00414 NormallyVisible(); 00415 } 00416 } 00417 00418 state PlayerWalking 00419 { 00420 ignores SeePlayer, HearNoise, Bump; 00421 00422 exec function Fire( optional float F ) 00423 { 00424 NormallyVisible(); 00425 Super.Fire(F); 00426 } 00427 00428 function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, 00429 Vector momentum, name damageType) 00430 { 00431 NormallyVisible(); 00432 Super.TakeDamage(Damage, instigatedBy, hitlocation, momentum, damageType); 00433 } 00434 00435 function ProcessMove(float DeltaTime, vector NewAccel, eDodgeDir DodgeMove, rotator DeltaRot) 00436 { 00437 Super.ProcessMove(DeltaTime, NewAccel, DodgeMove, DeltaRot); 00438 if ( (Role == ROLE_Authority) && (Style == STY_Translucent) ) 00439 { 00440 ScaleGlow = VSize(Velocity)/GroundSpeed; 00441 bHidden = (ScaleGlow < 0.35); 00442 } 00443 } 00444 00445 function EndState() 00446 { 00447 NormallyVisible(); 00448 Super.EndState(); 00449 } 00450 } 00451 00452 defaultproperties 00453 { 00454 drown=Sound'UnrealShare.Male.MDrown1' 00455 breathagain=Sound'UnrealShare.Male.MGasp1' 00456 Footstep1=Sound'UnrealShare.Cow.walkC' 00457 Footstep2=Sound'UnrealShare.Cow.walkC' 00458 Footstep3=Sound'UnrealShare.Cow.walkC' 00459 HitSound3=Sound'UnrealShare.Nali.injur1n' 00460 HitSound4=Sound'UnrealShare.Nali.injur2n' 00461 Die2=Sound'UnrealShare.Nali.death2n' 00462 Die3=Sound'UnrealShare.Nali.death2n' 00463 Die4=Sound'UnrealShare.Nali.death2n' 00464 GaspSound=Sound'UnrealShare.Male.MGasp2' 00465 UWHit1=Sound'UnrealShare.Male.MUWHit1' 00466 UWHit2=Sound'UnrealShare.Male.MUWHit2' 00467 LandGrunt=Sound'UnrealShare.Male.lland01' 00468 CarcassType=Class'UnrealShare.NaliCarcass' 00469 JumpSound=Sound'UnrealShare.Male.MJump1' 00470 bSinglePlayer=False 00471 GroundSpeed=320.000000 00472 JumpZ=360.000000 00473 BaseEyeHeight=32.000000 00474 EyeHeight=32.000000 00475 Health=80 00476 HitSound1=Sound'UnrealShare.Nali.fear1n' 00477 HitSound2=Sound'UnrealShare.Nali.cringe2n' 00478 Die=Sound'UnrealShare.Nali.death1n' 00479 MenuName="Nali" 00480 Skin=Texture'UnrealShare.Skins.JNali1' 00481 Mesh=LodMesh'UnrealI.Nali2' 00482 CollisionRadius=24.000000 00483 CollisionHeight=48.000000 00484 Buoyancy=98.000000 00485 }