*~@01[.QhtF)?[=0NoneMinMaxRangeBDM27LauncherCoreEngineSystemAdvancedEngine DOTZEngineX RangeVectorZY M27WeaponSpawnProjectile AutoDestroyExplode StaticMeshMesh WaterVolume PickupClass CreateFireLocalRandSpinTextureUser BBParticles SpawnDelay FireActorExplosionEmitterNotify_SpawnProjectile TrailEmitterunBurningMeshbCanDamageSelfMuzzleFlashEmitterClass WeaponMode HitAnimNameCrouchIdleAnimNameStandIdleAnimName FireAnimNamePostBeginPlay BeginPlayPhysicsVolumeChangeLandedPawnAnimationPackageSmallFireActorSpawnProjectileEx OfficialNameM27AmmunitionM27AttachmentVector HitSpreadActionPickupMessage ItemName M27Pickup DrawType bNoDeleteGetViewRotationM27ProjectilePhysics M27TrailM27FirebUnlitbFixedRotationDirDamage GetFireStart ProcessTouchFadeOut LifeSpanAttachmentClass MyDamageTypeM27CrouchIdleProjectileFireStartSizeRangeStartVelocityRangeUseRandomSubdivision DamageRadiusLifetimeRangeSecondsBeforeInactive MaxParticlesbRotateToDesiredbBounceAutoSwitchPriorityInventoryGroupTextureVSubdivisions M27StandIdle EmittersInventoryTypeTextureUSubdivisionsGrenadeAmmunitionClassMaxAmmoProjectileClass FireSound AmmoName UniformSize ReloadCount FireOffsetStartSpinRangeSpeedMomentumTransferSpinParticlesM27Hit AdjustedAim AmmoType DamagePerSec aimerrorSetStaticMeshDesiredRotationDirStart HitLocation AdjustAim NewVolume HitNormalOther InstigatorOwner RotationRatebCollideWorldFiretempAdvancedWeapon ScriptTexti Location IgnitionTime bSourceFadesbFadeWhenBaseDestroyedAdvancedProjectileAdvancedWeaponAttachmentExtinguishVolume Rotation VelocityWeapon ProjectilePhysicsVolumeEmitterPawn SkeletalMeshSpriteEmitterStaticReticuleActor FadeStepYawRangedRollDOTZGrenadeWeaponDOTZProjectileBaseDOTZGrenadePickupDOTZBulletDamageDOTZAmmunitionBaseSmoke SpecialFXPitch DOTZXWeaponsBBPGrenadeImpactBBPMuzzleFlashBBPMountedMuzzleFlashSpriteEmitter17 DOTZSWeaponsMolotovCocktailProjectileMixdownMixdownRangedGrenadeShoot DOTZItemsSmallMolotovFireMedMolotovFireSoundClassPackageConst TextBuffer SpawnDir SpawnLocnSPAWN_DELAY_TIMERMyFireMyFire2randyrandxObject FunctionRotatorStructStructPropertyClassPropertyObjectPropertyM27MeshMissileBDM27AFloatProperty BoolProperty IntProperty spinRateM273PM27    '62nմƽ Y4]*)Press Action to take the Rocket LauncherW,02 .++ Z"[F$2lXqw̄ebL9L9+ $?,]BDM27A.3PLauncherA'=&U%G$e#"!3$HB/] M27 Launcher]_R"`:2AAS E5] Launcher%<@r~&V08S>S&-::D}鉪є鉪鉪 Hj Hj Hj Hj Hj Hj Hj Hj Hj Hj Hj Hj Hj Hj Hj Hjeb - b$E@$zDL$HDc$@G;7Q?PD$@+1X )6\ ( 99  ;Fd9?69?'6'9?69?'6' 8 "ta@69D9?,69D9?,69D9?, !H.ca( 00r a/! a -(-', %%,9D9?9?, 9D9?9?,a -(,%,-'-'6 HD6 9? 6 9?o$ "+b? 9 A  9D.. #)**  4382Y//BD class M27Weapon extends DOTZGrenadeWeapon config(user); // Manually tune to be in-synch w/ throw anim. See also FireOffset. var() float SpawnDelay; // internal... var private Rotator SpawnDir; var private Vector SpawnLocn; const SPAWN_DELAY_TIMER = 4382; /** * A quick hack, since the default props don't seem to be sticking. */ function BeginPlay() { super.BeginPlay(); default.staticReticule = none; StaticReticule = none; } /** */ function SpawnProjectile(){ local Vector Start, X,Y,Z; Owner.MakeNoise(1.0); GetAxes(Instigator.GetViewRotation(),X,Y,Z); Start = GetFireStart(X,Y,Z); AdjustedAim = Instigator.AdjustAim(AmmoType, Start, AimError); // all timer for the animation to get to the release point before // spawning... SpawnDir = AdjustedAim; SpawnLocn = start; DOTZAmmunitionBase(AmmoType).SpawnProjectileEx( SpawnLocn, SpawnDir ,Instigator); } /** * Replaces default weapon behaviour so that projectile is spawned * during the fire animation (instead of before). */ function ProjectileFire() { SetMultiTimer( SPAWN_DELAY_TIMER, spawnDelay, false ); } /***************************************************************** * Notify_SpawnProjectile * Called from the animation to let us know the best point to release the grenade ***************************************************************** */ function Notify_SpawnProjectile(){ SpawnProjectile(); } //=========================================================================== // DefaultProperties //=========================================================================== +class M27Trail extends BBPMuzzleFlash; R6// BD class M27Projectile extends DOTZProjectileBase; var class FireActor; var class SmallFireActor; var StaticMesh unBurningMesh; /***************************************************************** * PostBeginPlay * Give your newly spawned projectile a velocity ***************************************************************** */ function PostBeginPlay() { local vector Dir; //Give your projectile a velocity Dir = vector(Rotation); velocity = (speed * Dir) + owner.velocity; LocalRandSpin(12000); if (abs(RotationRate.Pitch)<10000){RotationRate.Pitch=10000;} if (abs(RotationRate.Roll)<10000) {RotationRate.Roll=10000;} Super.PostBeginPlay(); } /***************************************************************** * RandSpin ***************************************************************** */ function LocalRandSpin(float spinRate) { DesiredRotation = RotRand(); RotationRate.Yaw = spinRate * 2 *FRand() - spinRate; RotationRate.Pitch = spinRate * 2 *FRand() - spinRate; RotationRate.Roll = spinRate * 2 *FRand() - spinRate; } /***************************************************************** * Explode ***************************************************************** */ function Explode(vector hitLocation, vector hitnormal){ local Fire MyFire, MyFire2; local int i, randy, randx; if ( class'ExtinguishVolume' == PhysicsVolume.class || PhysicsVolume.IsA('WaterVolume')){ return; } super.Explode(hitlocation, hitnormal); MyFire = Spawn(FireActor,,,hitlocation); MyFire.bFadeWhenBaseDestroyed = false; MyFire.bSourceFades = true; MyFire.DamagePerSec = 12; MyFire.IgnitionTime = 0; // MyFire.ChildFireType = class'DOTZItems.MediumFire'; MyFire.CreateFire(); for (i=0;i<4;i++){ randy = Frand() * 500 - 250; randx = Frand() * 500 - 250; MyFire2 = Spawn(SmallFireActor,,,hitlocation); MyFire2.bFadeWhenBaseDestroyed = false; MyFire2.FadeStep = 5; MyFire2.IgnitionTime = 0; MyFire2.DamagePerSec = 8; MyFire2.bSourceFades = true; // MyFire2.ChildFireType = class'DOTZItems.MediumFire'; MyFire2.bCollideWorld = true; //so you don't fall into //the world and screw yourself right up MyFire2.Velocity.Z = 800; MyFire2.Velocity.Y = randx; MyFire2.Velocity.X = randy; MyFire2.SetPhysics(PHYS_Falling); MyFire2.CreateFire(); } } /***************************************************************** * Landed ***************************************************************** */ simulated function Landed( vector HitNormal ){ Explode(Location, vect(0,0,1)); } event PhysicsVolumeChange( PhysicsVolume NewVolume ){ local emitter temp; if ( class'ExtinguishVolume' == NewVolume || NewVolume.Isa('WaterVolume')){ SetStaticMesh(UnBurningMesh); } foreach basedactors(class'Emitter', temp){ temp.destroy(); } super.PhysicsVolumeChange( NewVolume); } /** */ function ProcessTouch(Actor Other, Vector HitLocation) {} //=========================================================================== // DefaultProperties //=========================================================================== @//BD class M27Pickup extends DOTZGrenadePickup placeable; //=========================================================================== // DefaultProperties //=========================================================================== )+^ #? (*g [0r a/!/a2 Ma10 x//BD class M27Attachment extends AdvancedWeaponAttachment; //=========================================================================== // DefaultProperties //=========================================================================== u//BD class M27Ammunition extends DOTZAmmunitionBase; //=========================================================================== // DefaultProperties //=========================================================================== *.Bu  /CO"ddaZ 4 Z $ff&$@ Z $$ Z $$IZ 4 Z $@$ A Z $B$B Z $B$B^X"T"KN$MZ $@?$@?JZ 4 Z $$ Z $$ Z $ A$AhhhgMgwgru2gvh gsutggvugjgxgEvDhgVgGg~~Ygy~QxsgHgIhcgRgFg\hysxGgwxts(s)s*}gBh{~}~h}~xgvfxLgAgSg|gTg@sB|i~NsosH|bvksjs+vCv|hX}vh_hZhWWwg| | gU| ~OgegdhP`gKg[hafbg]g6giJAJ@z o }3 J4 n V4*p c4!m p4 { }4 n I5 p V5!  b5!  o5!  |5 q I6l U6k b6l o66S|6*x O90m\9FI;<gO?:bv@1bXF zG q FHSH-aH oH(}}HzJhYKH(AMXiMwAS)'xTm _Uz4diUz45Mpz4]6Bqz4K_+/j(q Y*Tfz4Czz4@}B}-r Z-n g^qt