Core.Object | +--Engine.Actor | +--Engine.Effects | +--XIII.ProjectileInHead
00001 //----------------------------------------------------------- 00002 // 00003 //----------------------------------------------------------- 00004 class ProjectileInHead extends Effects; 00005 00006 //_____________________________________________________________________________ 00007 event PostBeginPlay() 00008 { 00009 local vector RelativeLoc; 00010 local rotator RelativeRot; 00011 Local BloodOnHead BOH; 00012 Local Emitter HBTE; 00013 00014 // Log(self@"spawned"); 00015 RelativeLoc = normal(Location - Owner.GetBoneCoords('X Head').Origin)*11.0; 00016 if ( vector(Rotation) dot RelativeLoc > -0.7 ) // then projectile is too far behind, bring it a little in front 00017 { 00018 RelativeLoc -= vector(Rotation)*11.0; // Move it back along its path 00019 RelativeLoc *= 0.8; // make it nearer the head to avoid being suspended in void 00020 } 00021 RelativeRot = rotator(Vector(Rotation) << Owner.GetBoneRotation('X Head')); // Anyway to do this faster ? 00022 RelativeRot.Roll = Rand(32767); 00023 RelativeLoc = RelativeLoc << Owner.GetBoneRotation('X Head'); 00024 00025 Owner.AttachToBone(self, 'X Head'); 00026 SetRelativeLocation(RelativeLoc); 00027 SetRelativeRotation(RelativeRot); 00028 00029 Owner.SetBoneRotation('X Jaw', rot(0,0,-2000), 0, 1.0 ); 00030 00031 //::TODO:: bring back when projectors are allowed on cartoon meshes 00032 HBTE = Spawn(class'XIIIDamageType'.Default.HeadBloodTrailEmitterClass, Owner); 00033 if ( HBTE != none ) 00034 { 00035 Owner.AttachToBone(HBTE, 'X Head'); 00036 HBTE.SetRelativeLocation(RelativeLoc); 00037 HBTE.SetRelativeRotation(RelativeRot); 00038 } 00039 00040 BOH = Spawn(class'BloodOnHead',Owner); 00041 if ( BOH != none ) 00042 { 00043 Owner.AttachToBone(BOH, 'X Head'); 00044 BOH.SetRelativeLocation(RelativeLoc - vector(RelativeRot) * 30.0); 00045 BOH.SetRelativeRotation(RelativeRot); 00046 } 00047 } 00048 00049 00050 00051 defaultproperties 00052 { 00053 bHidden=True 00054 DrawType=DT_StaticMesh 00055 LifeSpan=60.000000 00056 CollisionRadius=10.000000 00057 CollisionHeight=10.000000 00058 }