integration

This commit is contained in:
cclecle
2022-11-28 01:19:02 +00:00
parent 7d9cc1ca78
commit 9de0892c9d
164 changed files with 14938 additions and 19 deletions

View File

@@ -1,3 +0,0 @@
# UT2341 (unofficial) Release GIT repository
checkout official page : https://github.com/Azarael/UT2341

36
Readme.txt Normal file
View File

@@ -0,0 +1,36 @@
UT2341WeaponsReduced - ChaCha (2022)
=>> Based on very good UT2341 Mod from Azarael
=>> I decided to extract only the weapon parts because... it I want full UT99 I have it on my computer :)
Behavior:
=> A reduced version of UT2341 with only weapons (except translocator) and instagib
Installation:
=> Copy files and enable one of the mutator:
UT2341WeaponsReduced<VERSION>.UT2341Instagib
UT2341WeaponsReduced<VERSION>.UT2341Replacement
=> If you are on a server add the .u to ServerPackages + dopy redirect files
Configuration:
+ You can now configure wich weapon to replace with UT99 one:
[UT2341WeaponsReduced<VERSION>.UT2341Replacement]
bReplaceAssaultRifle = True
bReplaceBioRifle = True
bReplaceONSMineLayer = True
bReplaceShockRifle = True
bReplaceLinkGun = True
bReplaceMinigun = True
bReplaceFlakCannon = True
bReplaceONSGrenadeLauncer = True
bReplaceRocketLauncher = True
bReplaceSniperRifle = True
bReplaceClassicSniperRifle = True
bReplaceRedeemer = True
bReplacePainter = True
bReplaceStartWeapons = True
Version History:
v1a (11/22): Initial release

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

2
Run.sh
View File

@@ -33,7 +33,7 @@ function del_ServerActors() {
}
function getmodprefix() {
_File=$(find $OUTPUT_DIR/System -type f -iname "UT2341Weapons*\.u" -exec basename {} \; | sort -nr | head -n 1)
_File=$(find $OUTPUT_DIR/System -type f -iname "UT2341WeaponsReducedv*\.u" -exec basename {} \; | sort -nr | head -n 1)
BaseName="${_File%.*}"
echo "$BaseName"
}

View File

@@ -0,0 +1,13 @@
class DamType_BioGel extends WeaponDamageType
abstract;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341BioRifle'
DeathString="%o drank a glass of %k's dripping green load."
FemaleSuicide="%o slimed herself."
MaleSuicide="%o slimed himself."
bDetonatesGoop=True
bDelayedDamage=True
DeathOverlayMaterial=Shader'XGameShaders.PlayerShaders.LinkHit'
}

View File

@@ -0,0 +1,21 @@
/*************************************************************
*
*
*
*************************************************************/
class DamType_Enforcer extends WeaponDamageType;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341Enforcer'
DeathString="%k riddled %o full of holes with the Enforcer."
FemaleSuicide="%o shot herself in the foot."
MaleSuicide="%o shot himself in the foot."
bRagdollBullet=True
bBulletHit=True
DamageOverlayTime=0.900000
GibPerterbation=1.000000
KDamageImpulse=2000.000000
VehicleDamageScaling=0.250000
}

View File

@@ -0,0 +1,28 @@
class DamType_Flak extends WeaponDamageType
abstract;
var sound FlakMonkey; //OBSOLETE
static function IncrementKills(Controller Killer)
{
local xPlayerReplicationInfo xPRI;
xPRI = xPlayerReplicationInfo(Killer.PlayerReplicationInfo);
if ( xPRI != None )
{
xPRI.flakcount++;
if ( (xPRI.flakcount == 15) && (UnrealPlayer(Killer) != None) )
UnrealPlayer(Killer).ClientDelayedAnnouncementNamed('FlackMonkey',15);
}
}
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341FlakCannon'
DeathString="%o was ripped to shreds by %k's flak cannon."
FemaleSuicide="%o was perforated by her own flak."
MaleSuicide="%o was perforated by his own flak."
bDelayedDamage=True
bBulletHit=True
VehicleMomentumScaling=0.500000
}

View File

@@ -0,0 +1,10 @@
class DamType_FlakShell extends DamType_Flak;
defaultproperties
{
FemaleSuicide="%o blew herself up with a flak shell."
MaleSuicide="%o blew himself up with a flak shell."
bDetonatesGoop=True
bThrowRagdoll=True
GibPerterbation=0.250000
}

View File

@@ -0,0 +1,16 @@
class DamType_Hammer extends WeaponDamageType
abstract;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341Hammer'
DeathString="%o got smeared by %k's piston."
FemaleSuicide="%o threw her weight around once too often."
MaleSuicide="%o threw his weight around once too often."
bAlwaysGibs=True
bDetonatesGoop=True
bKUseOwnDeathVel=True
KDamageImpulse=1000.000000
KDeathVel=850.000000
KDeathUpKick=300.000000
}

View File

@@ -0,0 +1,15 @@
class DamType_MinigunBullet extends WeaponDamageType
abstract;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341Minigun'
DeathString="%k's minigun turned %o into a leaky piece of meat."
FemaleSuicide="%o turned the minigun on herself."
MaleSuicide="%o turned the minigun on himself."
bRagdollBullet=True
bBulletHit=True
FlashFog=(X=600.000000)
KDamageImpulse=2000.000000
VehicleDamageScaling=0.650000
}

View File

@@ -0,0 +1,21 @@
class DamType_Pulse extends WeaponDamageType
abstract;
static function GetHitEffects(out class<xEmitter> HitEffects[4], int VictemHealth )
{
HitEffects[0] = class'HitSmoke';
}
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341PulseGun'
DeathString="%o ate %k's burning plasma death."
FemaleSuicide="%o fried herself with her own plasma blast."
MaleSuicide="%o fried himself with his own plasma blast."
bDetonatesGoop=True
bDelayedDamage=True
FlashFog=(X=700.000000)
DamageOverlayMaterial=Shader'XGameShaders.PlayerShaders.LinkHit'
DamageOverlayTime=0.500000
VehicleDamageScaling=0.670000
}

View File

@@ -0,0 +1,21 @@
/*************************************************************
*
*
*
*************************************************************/
class DamType_RipperBlade extends WeaponDamageType;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341Ripper'
DeathString="%k ripped a chunk of meat out of %o with the Ripper."
FemaleSuicide="%o shredded herself."
MaleSuicide="%o shredded himself."
bAlwaysSevers=True
bRagdollBullet=True
bBulletHit=True
GibPerterbation=1.000000
KDamageImpulse=6000.000000
VehicleDamageScaling=0.000000
}

View File

@@ -0,0 +1,42 @@
/*************************************************************
*
*
*
*************************************************************/
class DamType_RipperBladeHead extends WeaponDamageType
abstract;
var class<LocalMessage> KillerMessage;
static function IncrementKills(Controller Killer)
{
local xPlayerReplicationInfo xPRI;
if ( PlayerController(Killer) == None )
return;
PlayerController(Killer).ReceiveLocalizedMessage( Default.KillerMessage, 0, Killer.PlayerReplicationInfo, None, None );
xPRI = xPlayerReplicationInfo(Killer.PlayerReplicationInfo);
if ( xPRI != None )
{
xPRI.headcount++;
if ( (xPRI.headcount == 15) && (UnrealPlayer(Killer) != None) )
UnrealPlayer(Killer).ClientDelayedAnnouncementNamed('HeadHunter',15);
}
}
defaultproperties
{
KillerMessage=Class'XGame.SpecialKillMessage'
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341Ripper'
DeathString="%k took off %o's head with the Ripper."
FemaleSuicide="%o took her own head off with a razorblade."
MaleSuicide="%o took his own head off with a razorblade."
bAlwaysSevers=True
bSpecial=True
bRagdollBullet=True
bBulletHit=True
GibPerterbation=1.000000
KDamageImpulse=6000.000000
VehicleDamageScaling=0.000000
}

View File

@@ -0,0 +1,27 @@
class DamType_Rocket extends WeaponDamageType
abstract;
static function GetHitEffects(out class<xEmitter> HitEffects[4], int VictimHealth )
{
HitEffects[0] = class'HitSmoke';
if( VictimHealth <= 0 )
HitEffects[1] = class'HitFlameBig';
else if ( FRand() < 0.8 )
HitEffects[1] = class'HitFlame';
}
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341RocketLauncher'
DeathString="%o was smacked down by %k's rocket launcher."
FemaleSuicide="%o fired her rocket prematurely."
MaleSuicide="%o fired his rocket prematurely."
bDetonatesGoop=True
bDelayedDamage=True
bThrowRagdoll=True
bFlaming=True
GibPerterbation=0.150000
KDamageImpulse=20000.000000
VehicleMomentumScaling=1.300000
}

View File

@@ -0,0 +1,14 @@
/*************************************************************
*
*
*
*************************************************************/
class DamType_ShockRifleBeam extends DamTypeShockBeam;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341ShockRifle'
DeathString="%k inflicted mortal damage upon %o with the shock rifle."
DamageOverlayMaterial=Shader'UT2341Weapons_Tex.ASMD.ASMDShockHitShader'
}

View File

@@ -0,0 +1,13 @@
/*************************************************************
*
*
*
*************************************************************/
class DamType_ShockRifleProjectile extends DamTypeShockBall;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341ShockRifle'
DamageOverlayMaterial=Shader'UT2341Weapons_Tex.ASMD.ASMDShockHitShader'
}

View File

@@ -0,0 +1,12 @@
/*************************************************************
*
*
*
*************************************************************/
class DamType_ShockRifleProjectileCombo extends DamTypeShockCombo;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341ShockRifle'
}

View File

@@ -0,0 +1,16 @@
/*************************************************************
*
*
*
*************************************************************/
class DamType_SniperHeadShot extends DamTypeClassicHeadshot;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341SniperRifle'
DeathString="%k put a bullet in %o's head."
DamageOverlayTime=0.900000
GibPerterbation=1.000000
VehicleDamageScaling=0.850000
}

View File

@@ -0,0 +1,17 @@
/*************************************************************
*
*
*
*************************************************************/
class DamType_SniperShot extends DamTypeClassicSniper;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341SniperRifle'
DeathString="%k put a hole in %o."
bRagdollBullet=True
GibPerterbation=1.000000
KDamageImpulse=4000.000000
VehicleDamageScaling=0.250000
}

View File

@@ -0,0 +1,18 @@
/*************************************************************
*
*
*
*************************************************************/
class DamType_SuperShockRifleBeam extends DamTypeShockBeam;
defaultproperties
{
WeaponClass=Class'UT2341WeaponsReducedv1a.UT2341SuperShockRifle'
DeathString="%k inflicted mortal damage upon %o with the shock rifle."
bLocationalHit=False
bAlwaysSevers=True
DamageOverlayMaterial=Shader'UT2341Weapons_Tex.SuperShock.SuperShockHitShader'
VehicleDamageScaling=0.050000
VehicleMomentumScaling=0.050000
}

View File

@@ -0,0 +1,27 @@
class EnforcerShellCasing extends Actor;
var RangeVector StartVelocityRange;
simulated function PostBeginPlay()
{
Velocity.X = StartVelocityRange.X.Min + FRand() * (StartVelocityRange.X.Max - StartVelocityRange.X.Min);
Velocity.Y = StartVelocityRange.Y.Min + FRand() * (StartVelocityRange.Y.Max - StartVelocityRange.Y.Min);
Velocity.Z = StartVelocityRange.Z.Min + FRand() * (StartVelocityRange.Z.Max - StartVelocityRange.Z.Min);
Velocity = Velocity >> Rotation;
}
simulated function Landed(vector HitLocation)
{
Destroy();
}
defaultproperties
{
StartVelocityRange=(X=(Min=-25.000000,Max=100.000000),Y=(Min=-250.000000,Max=250.000000),Z=(Min=200.000000,Max=300.000000))
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'UT2341Weapons_SM.shell.ShellcasingX'
Physics=PHYS_Falling
LifeSpan=1.000000
CollisionRadius=0.000000
CollisionHeight=0.000000
}

View File

@@ -0,0 +1,87 @@
class FX_BioExplosion extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-650.000000)
DampingFactorRange=(X=(Min=0.700000,Max=0.700000),Y=(Min=0.700000,Max=0.700000),Z=(Min=0.700000,Max=0.700000))
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Z=(Min=0.400000,Max=0.400000))
Opacity=0.850000
FadeOutStartTime=0.800000
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=0.100000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=18.000000,Max=18.000000),Y=(Min=18.000000,Max=18.000000),Z=(Min=18.000000,Max=18.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=2.000000,Max=2.000000)
StartVelocityRange=(X=(Min=-300.000000,Max=300.000000),Y=(Min=-300.000000,Max=300.000000),Z=(Min=-100.000000,Max=500.000000))
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_BioExplosion.SpriteEmitter0'
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
BlendBetweenSubdivisions=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.000000,Max=0.000000),Z=(Min=0.300000,Max=0.300000))
Opacity=0.600000
FadeOutStartTime=0.380000
CoordinateSystem=PTCS_Relative
MaxParticles=2
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=14.000000,Max=14.000000),Y=(Min=14.000000,Max=14.000000),Z=(Min=14.000000,Max=14.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'ExplosionTex.Framed.exp7_frames'
TextureUSubdivisions=4
TextureVSubdivisions=4
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_BioExplosion.SpriteEmitter1'
Begin Object Class=SpriteEmitter Name=SpriteEmitter4
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Z=(Min=0.580000,Max=0.580000))
Opacity=0.430000
FadeOutStartTime=0.460000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.100000))
StartSpinRange=(X=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=35.000000,Max=35.000000),Y=(Min=35.000000,Max=35.000000),Z=(Min=35.000000,Max=35.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_BioExplosion.SpriteEmitter4'
bNoDelete=False
}

View File

@@ -0,0 +1,108 @@
class FX_EnforcerMuzFlash extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter4
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.250000
FadeOutStartTime=0.126000
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=8.000000,Max=8.000000),Y=(Min=8.000000,Max=8.000000),Z=(Min=20.000000,Max=20.000000))
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Smoke.Smokepuff'
LifetimeRange=(Min=1.400000,Max=1.400000)
SpawnOnTriggerRange=(Min=1.000000,Max=1.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_EnforcerMuzFlash.SpriteEmitter4'
Begin Object Class=SpriteEmitter Name=SpriteEmitter5
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.380000
FadeOutStartTime=0.030300
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=-0.400000,Max=-0.400000))
StartSizeRange=(X=(Min=15.000000,Max=15.000000),Y=(Min=15.000000,Max=15.000000),Z=(Min=15.000000,Max=15.000000))
Texture=Texture'AW-2004Particles.Fire.SmokeFragment'
LifetimeRange=(Min=0.201000,Max=0.201000)
SpawnOnTriggerRange=(Min=1.000000,Max=1.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_EnforcerMuzFlash.SpriteEmitter5'
Begin Object Class=SpriteEmitter Name=SpriteEmitter6
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.600000,Max=0.600000),Z=(Min=0.300000,Max=0.300000))
Opacity=0.390000
FadeOutStartTime=0.110550
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.300000,Max=0.300000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=2.000000)
StartSizeRange=(X=(Min=25.000000,Max=25.000000),Y=(Min=40.000000,Max=40.000000),Z=(Min=40.000000,Max=40.000000))
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=0.201000,Max=0.201000)
SpawnOnTriggerRange=(Min=1.000000,Max=1.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_EnforcerMuzFlash.SpriteEmitter6'
Begin Object Class=SpriteEmitter Name=SpriteEmitter8
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.400000,Max=0.400000),Z=(Min=0.300000,Max=0.300000))
Opacity=0.630000
FadeOutStartTime=0.080400
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.500000,Max=0.500000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=2.000000)
StartSizeRange=(X=(Min=8.000000,Max=8.000000),Y=(Min=8.000000,Max=8.000000),Z=(Min=8.000000,Max=8.000000))
Texture=Texture'XEffects.Skins.MuzFlashRocket_t'
LifetimeRange=(Min=0.201000,Max=0.201000)
SpawnOnTriggerRange=(Min=1.000000,Max=1.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_EnforcerMuzFlash.SpriteEmitter8'
bNoDelete=False
bHardAttach=True
}

View File

@@ -0,0 +1,29 @@
//=============================================================================
// FlakTrail
//=============================================================================
class FX_FlakChunkGlow extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
FadeOut=True
RespawnDeadParticles=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.500000,Max=0.500000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.280000
FadeOutStartTime=0.040000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.BoloBlob'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_FlakChunkGlow.SpriteEmitter0'
AutoDestroy=True
bNoDelete=False
}

View File

@@ -0,0 +1,45 @@
class FX_PickupRespawn extends Emitter;
simulated function PostBeginPlay()
{
Super.PostBeginPlay();
if ( Level.NetMode == NM_DedicatedServer )
LifeSpan = 0.15;
else if ( Level.GetLocalPlayerController().BeyondViewDistance(Location, CullDistance) )
LifeSpan = 0.01;
else
PlaySound(sound'WeaponSounds.item_respawn');
}
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=3.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
FadeOutStartTime=0.220000
MaxParticles=14
StartLocationRange=(X=(Min=-20.000000,Max=20.000000),Y=(Min=-20.000000,Max=20.000000),Z=(Min=-12.000000,Max=12.000000))
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=16.000000,Max=16.000000),Y=(Min=16.000000,Max=16.000000),Z=(Min=16.000000,Max=16.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.200000,Max=1.200000)
InitialDelayRange=(Min=0.400000,Max=0.400000)
StartVelocityRange=(X=(Min=-8.000000,Max=8.000000),Y=(Min=-8.000000,Max=8.000000))
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PickupRespawn.SpriteEmitter1'
AutoDestroy=True
bNoDelete=False
}

View File

@@ -0,0 +1,155 @@
class FX_PulseBeamEnd extends Emitter;
defaultproperties
{
Begin Object Class=BeamEmitter Name=BeamEmitter0
BeamDistanceRange=(Min=70.000000,Max=70.000000)
DetermineEndPointBy=PTEP_Distance
RotatingSheets=1
LowFrequencyNoiseRange=(X=(Max=10.000000),Y=(Max=10.000000),Z=(Max=10.000000))
LowFrequencyPoints=2
HighFrequencyNoiseRange=(X=(Min=-8.000000,Max=8.000000),Y=(Min=-8.000000,Max=8.000000),Z=(Min=-8.000000,Max=8.000000))
HighFrequencyPoints=4
HFScaleFactors(0)=(FrequencyScale=(X=0.400000,Y=0.400000,Z=0.400000),RelativeLength=0.280000)
HFScaleRepeats=10.000000
UseHighFrequencyScale=True
BranchProbability=(Min=1.000000,Max=1.000000)
BranchSpawnAmountRange=(Min=5.000000,Max=5.000000)
LinkupLifetime=True
FadeOut=True
FadeIn=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.000000,Max=0.500000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.460000
FadeOutStartTime=2.000000
FadeInEndTime=2.000000
CoordinateSystem=PTCS_Relative
StartLocationShape=PTLS_Sphere
SphereRadiusRange=(Max=5.000000)
SizeScale(0)=(RelativeTime=0.500000,RelativeSize=-1.000000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
InitialParticlesPerSecond=10.000000
Texture=Texture'AW-2004Particles.Energy.BeamBolt1a'
LifetimeRange=(Min=0.601000,Max=0.601000)
StartVelocityRange=(X=(Min=-20.000000,Max=20.000000),Y=(Min=-20.000000,Max=20.000000),Z=(Min=-20.000000,Max=20.000000))
End Object
Emitters(0)=BeamEmitter'UT2341WeaponsReducedv1a.FX_PulseBeamEnd.BeamEmitter0'
Begin Object Class=SpriteEmitter Name=SpriteEmitter5
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.900000,Max=0.900000),Y=(Min=0.800000,Max=0.800000),Z=(Min=0.700000,Max=0.700000))
Opacity=0.780000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=4.700000,Max=4.700000))
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.LargeSpot'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseBeamEnd.SpriteEmitter5'
Begin Object Class=SpriteEmitter Name=SpriteEmitter6
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.000000,Max=0.300000),Y=(Min=0.800000,Max=0.800000),Z=(Min=0.500000,Max=0.500000))
Opacity=0.260000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=4.700000,Max=4.700000))
StartSizeRange=(X=(Min=24.000000,Max=24.000000),Y=(Min=24.000000,Max=24.000000),Z=(Min=24.000000,Max=24.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.BoloBlob'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseBeamEnd.SpriteEmitter6'
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
SpinParticles=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.000000,Max=0.300000),Z=(Min=0.000000,Max=0.200000))
Opacity=0.910000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=-4.700000,Max=-4.700000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=2.000000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=1.000000)
StartSizeRange=(X=(Min=42.000000,Max=42.000000),Y=(Min=42.000000,Max=42.000000),Z=(Min=42.000000,Max=42.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.BurnFlare'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseBeamEnd.SpriteEmitter0'
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.000000,Max=0.100000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.810000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=5.700000,Max=5.700000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
StartSizeRange=(X=(Min=54.000000,Max=54.000000),Y=(Min=54.000000,Max=54.000000),Z=(Min=54.000000,Max=54.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'EpicParticles.Flares.FlickerFlare'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseBeamEnd.SpriteEmitter1'
Begin Object Class=SpriteEmitter Name=SpriteEmitter2
UseCollision=True
FadeOut=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-50.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.200000,Max=0.200000),Z=(Min=0.400000,Max=0.400000))
Opacity=0.400000
FadeOutStartTime=0.450000
CoordinateSystem=PTCS_Relative
MaxParticles=9
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=0.100000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=7.000000,Max=7.000000),Y=(Min=7000000.000000,Max=7.000000),Z=(Min=7.000000,Max=7.000000))
ParticlesPerSecond=10.000000
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.000000,Max=1.000000)
StartVelocityRange=(X=(Min=-35.000000,Max=45000000.000000),Y=(Min=-45.000000,Max=45.000000),Z=(Min=-35.000000,Max=80.000000))
End Object
Emitters(5)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseBeamEnd.SpriteEmitter2'
bNoDelete=False
}

View File

@@ -0,0 +1,61 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_PulseBeamFlash3rd extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter13
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.200000,Max=0.200000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.240000
FadeOutStartTime=0.110550
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.300000,Max=0.300000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=2.000000)
StartSizeRange=(X=(Min=36.000000,Max=36.000000),Y=(Min=36.000000,Max=36.000000),Z=(Min=25.000000,Max=25.000000))
ParticlesPerSecond=5.000000
InitialParticlesPerSecond=1000.000000
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=0.200000,Max=0.200000)
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseBeamFlash3rd.SpriteEmitter13'
Begin Object Class=SpriteEmitter Name=SpriteEmitter14
FadeOut=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.000000,Max=0.000000),Y=(Min=0.400000,Max=0.400000),Z=(Min=0.000000))
Opacity=0.370000
FadeOutStartTime=0.110550
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.500000,Max=0.500000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=2.000000)
StartSizeRange=(X=(Min=18.000000,Max=18.000000),Y=(Min=18.000000,Max=18.000000),Z=(Min=18.000000,Max=18.000000))
ParticlesPerSecond=5.000000
InitialParticlesPerSecond=1000.000000
Texture=Texture'XEffects.Skins.MuzFlashRocket_t'
LifetimeRange=(Min=0.200000,Max=0.200000)
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseBeamFlash3rd.SpriteEmitter14'
bNoDelete=False
bHardAttach=True
}

View File

@@ -0,0 +1,115 @@
class FX_PulseImpact extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
DampRotation=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-400.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.370000
FadeOutStartTime=0.240000
CoordinateSystem=PTCS_Relative
MaxParticles=8
SpinsPerSecondRange=(X=(Min=1.000000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000))
RotationDampingFactorRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=20.000000,Max=20.000000))
SizeScale(0)=(RelativeTime=0.170000,RelativeSize=1.000000)
SizeScale(1)=(RelativeTime=0.370000)
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.HardSpot'
LifetimeRange=(Min=2.000000,Max=2.000000)
StartVelocityRange=(X=(Min=50.000000,Max=170.000000),Y=(Min=-250.000000,Max=250.000000),Z=(Min=20.000000,Max=350.000000))
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseImpact.SpriteEmitter0'
Begin Object Class=SpriteEmitter Name=SpriteEmitter2
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.800000
FadeOutStartTime=0.360000
FadeInEndTime=0.360000
CoordinateSystem=PTCS_Relative
MaxParticles=1
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.HardSpot'
LifetimeRange=(Min=2.000000,Max=2.000000)
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseImpact.SpriteEmitter2'
Begin Object Class=SpriteEmitter Name=SpriteEmitter3
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.140000
FadeOutStartTime=0.360000
FadeInEndTime=0.360000
CoordinateSystem=PTCS_Relative
MaxParticles=5
SpinsPerSecondRange=(X=(Max=4.600000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.070000)
SizeScale(1)=(RelativeTime=0.370000,RelativeSize=1.000000)
SizeScaleRepeats=1.020000
StartSizeRange=(X=(Min=80.000000,Max=80.000000),Y=(Min=80.000000,Max=80.000000),Z=(Min=80.000000,Max=80.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'VMParticleTextures.LeviathanParticleEffects.LeviathanMGUNFlare'
LifetimeRange=(Min=0.801000,Max=0.801000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseImpact.SpriteEmitter3'
Begin Object Class=SpriteEmitter Name=SpriteEmitter4
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.190000
FadeOutStartTime=0.245000
FadeInEndTime=0.225000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.600000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
SizeScale(1)=(RelativeTime=0.560000,RelativeSize=0.100000)
StartSizeRange=(X=(Min=40.000000,Max=40.000000),Y=(Min=40.000000,Max=40.000000),Z=(Min=40.000000,Max=40.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.BoloBlob'
LifetimeRange=(Min=0.500000,Max=0.500000)
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseImpact.SpriteEmitter4'
AutoDestroy=True
bNoDelete=False
}

View File

@@ -0,0 +1,119 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_PulseMuzFlash extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter13
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.200000,Max=0.200000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.240000
FadeOutStartTime=0.110550
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.300000,Max=0.300000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=2.000000)
StartSizeRange=(X=(Min=36.000000,Max=36.000000),Y=(Min=36.000000,Max=36.000000),Z=(Min=25.000000,Max=25.000000))
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=0.201000,Max=0.201000)
SpawnOnTriggerRange=(Min=1.000000,Max=1.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseMuzFlash.SpriteEmitter13'
Begin Object Class=SpriteEmitter Name=SpriteEmitter14
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.000000,Max=0.000000),Y=(Min=0.400000,Max=0.400000),Z=(Min=0.000000))
Opacity=0.370000
FadeOutStartTime=0.110550
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.500000,Max=0.500000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=2.000000)
StartSizeRange=(X=(Min=18.000000,Max=18.000000),Y=(Min=18.000000,Max=18.000000),Z=(Min=18.000000,Max=18.000000))
Texture=Texture'XEffects.Skins.MuzFlashRocket_t'
LifetimeRange=(Min=0.201000,Max=0.201000)
SpawnOnTriggerRange=(Min=1.000000,Max=1.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseMuzFlash.SpriteEmitter14'
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Y=(Min=0.700000,Max=0.700000),Z=(Min=0.200000,Max=0.200000))
Opacity=0.800000
FadeOutStartTime=0.032000
CoordinateSystem=PTCS_Relative
MaxParticles=3
SpinsPerSecondRange=(X=(Max=0.500000))
StartSpinRange=(X=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=9.000000,Max=9.000000),Y=(Min=9.000000,Max=9.000000),Z=(Min=9.000000,Max=9.000000))
Texture=Texture'XEffectMat.Shock.ShockComboFlash'
LifetimeRange=(Min=0.400000,Max=0.400000)
SpawnOnTriggerRange=(Min=2.000000,Max=2.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseMuzFlash.SpriteEmitter0'
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.300000,Max=0.300000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.810000
FadeOutStartTime=0.032000
CoordinateSystem=PTCS_Relative
MaxParticles=3
SpinsPerSecondRange=(X=(Max=0.500000))
StartSpinRange=(X=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=9.000000,Max=9.000000),Y=(Min=9.000000,Max=9.000000),Z=(Min=9.000000,Max=9.000000))
Texture=Texture'AW-2004Particles.Energy.BurnFlare'
LifetimeRange=(Min=0.400000,Max=0.400000)
SpawnOnTriggerRange=(Min=2.000000,Max=2.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseMuzFlash.SpriteEmitter1'
bNoDelete=False
bHardAttach=True
}

View File

@@ -0,0 +1,145 @@
class FX_PulseProjectile extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.500000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.430000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=0.700000,Max=0.700000))
StartSizeRange=(X=(Min=12.000000,Max=12.000000),Y=(Min=12.000000,Max=12.000000),Z=(Min=12.000000,Max=12.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.AirBlast'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectile.SpriteEmitter0'
Begin Object Class=SpriteEmitter Name=SpriteEmitter2
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.500000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.430000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=-1.900000,Max=-1.900000))
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.EclipseCircle'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectile.SpriteEmitter2'
Begin Object Class=SpriteEmitter Name=SpriteEmitter3
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.500000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.930000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=-4.000000,Max=-4.000000))
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.BurnFlare'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectile.SpriteEmitter3'
Begin Object Class=SpriteEmitter Name=SpriteEmitter6
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.900000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.930000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=6.000000,Max=6.000000))
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.BurnFlare'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectile.SpriteEmitter6'
Begin Object Class=SpriteEmitter Name=SpriteEmitter7
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.900000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.390000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=6.000000,Max=6.000000))
StartSizeRange=(X=(Min=14.000000,Max=14.000000),Y=(Min=14.000000,Max=14.000000),Z=(Min=14.000000,Max=14.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'XEffectMat.Shock.shock_flare_a'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectile.SpriteEmitter7'
Begin Object Class=SpriteEmitter Name=SpriteEmitter8
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.140000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=0.200000,Max=0.200000))
SizeScaleRepeats=10.000000
StartSizeRange=(X=(Min=40.000000,Max=40.000000),Y=(Min=40.000000,Max=40.000000),Z=(Min=40.000000,Max=40.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar2'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(5)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectile.SpriteEmitter8'
Begin Object Class=SpriteEmitter Name=SpriteEmitter9
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.900000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.140000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=-0.200000,Max=-0.200000))
SizeScaleRepeats=10.000000
StartSizeRange=(X=(Min=40.000000,Max=40.000000),Y=(Min=40.000000,Max=40.000000),Z=(Min=40.000000,Max=40.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar2'
LifetimeRange=(Min=9.000000,Max=9.000000)
End Object
Emitters(6)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectile.SpriteEmitter9'
bNoDelete=False
}

View File

@@ -0,0 +1,145 @@
class FX_PulseProjectileNew extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter42
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.500000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.330000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=0.700000,Max=0.700000))
StartSizeRange=(X=(Min=13.799999,Max=13.799999),Y=(Min=13.799999,Max=13.799999),Z=(Min=13.799999,Max=13.799999))
ParticlesPerSecond=1.000000
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.AirBlast'
LifetimeRange=(Min=1.000000,Max=1.000000)
WarmupTicksPerSecond=2.000000
RelativeWarmupTime=1.000000
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectileNew.SpriteEmitter42'
Begin Object Class=SpriteEmitter Name=SpriteEmitter43
FadeOut=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.500000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.280000
FadeOutStartTime=0.255510
CoordinateSystem=PTCS_Relative
MaxParticles=4
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=-1.900000,Max=-1.900000))
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.000000)
StartSizeRange=(X=(Min=8.050000,Max=8.050000),Y=(Min=8.050000,Max=8.050000),Z=(Min=8.050000,Max=8.050000))
ParticlesPerSecond=2.000000
InitialParticlesPerSecond=4.000000
Texture=Texture'AW-2004Particles.Energy.EclipseCircle'
LifetimeRange=(Min=0.501000,Max=0.501000)
WarmupTicksPerSecond=2.000000
RelativeWarmupTime=2.000000
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectileNew.SpriteEmitter43'
Begin Object Class=SpriteEmitter Name=SpriteEmitter44
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.930000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=-4.000000,Max=-4.000000))
StartSizeRange=(X=(Min=11.500000,Max=11.500000),Y=(Min=11.500000,Max=11.500000),Z=(Min=11.500000,Max=11.500000))
ParticlesPerSecond=1.000000
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.BurnFlare'
LifetimeRange=(Min=1.000000,Max=1.000000)
WarmupTicksPerSecond=2.000000
RelativeWarmupTime=1.000000
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectileNew.SpriteEmitter44'
Begin Object Class=SpriteEmitter Name=SpriteEmitter62
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.900000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.930000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=6.000000,Max=6.000000))
StartSizeRange=(X=(Min=11.500000,Max=11.500000),Y=(Min=11.500000,Max=11.500000),Z=(Min=11.500000,Max=11.500000))
ParticlesPerSecond=1.000000
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.BurnFlare'
LifetimeRange=(Min=1.000000,Max=1.000000)
WarmupTicksPerSecond=2.000000
RelativeWarmupTime=1.000000
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectileNew.SpriteEmitter62'
Begin Object Class=SpriteEmitter Name=SpriteEmitter63
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.900000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.410000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=1.500000,Max=1.500000))
StartSizeRange=(X=(Min=16.100000,Max=16.100000),Y=(Min=16.100000,Max=16.100000),Z=(Min=16.100000,Max=16.100000))
ParticlesPerSecond=1.000000
InitialParticlesPerSecond=1000.000000
Texture=Texture'XEffectMat.Shock.shock_flare_a'
LifetimeRange=(Min=1.000000,Max=1.000000)
WarmupTicksPerSecond=2.000000
RelativeWarmupTime=1.000000
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectileNew.SpriteEmitter63'
Begin Object Class=SpriteEmitter Name=SpriteEmitter65
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.900000),Y=(Min=0.829000,Max=0.829000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.240000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=-0.200000,Max=-0.200000))
SizeScaleRepeats=10.000000
StartSizeRange=(X=(Min=46.000000,Max=46.000000),Y=(Min=46.000000,Max=46.000000),Z=(Min=46.000000,Max=46.000000))
ParticlesPerSecond=1.000000
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar2'
LifetimeRange=(Min=1.000000,Max=1.000000)
WarmupTicksPerSecond=2.000000
RelativeWarmupTime=1.000000
End Object
Emitters(5)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_PulseProjectileNew.SpriteEmitter65'
bNoDelete=False
}

View File

@@ -0,0 +1,291 @@
class FX_RedeemerExplosion extends Emitter;
defaultproperties
{
Begin Object Class=MeshEmitter Name=MeshEmitter13
StaticMesh=StaticMesh'Editor.TexPropSphere'
UseMeshBlendMode=False
UseParticleColor=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.270000
FadeOutStartTime=0.370000
MaxParticles=2
SpinCCWorCW=(X=1.000000,Y=1.000000,Z=1.000000)
SpinsPerSecondRange=(X=(Min=1.000000,Max=14.000000),Y=(Min=1.000000,Max=4.000000),Z=(Min=1.000000,Max=4.000000))
StartSpinRange=(X=(Min=1.000000,Max=1.000000),Y=(Max=1.000000),Z=(Min=1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=4.500000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=26.000000)
InitialParticlesPerSecond=10.000000
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(0)=MeshEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.MeshEmitter13'
Begin Object Class=MeshEmitter Name=MeshEmitter15
StaticMesh=StaticMesh'ParticleMeshes.Complex.ExplosionSphere'
UseParticleColor=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.430000
FadeOutStartTime=0.370000
MaxParticles=2
StartSpinRange=(X=(Min=1.000000,Max=1.000000),Y=(Min=1.000000,Max=1.000000),Z=(Min=1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=4.500000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=26.000000)
StartSizeRange=(X=(Min=0.470000,Max=0.470000),Y=(Min=0.470000,Max=0.470000),Z=(Min=0.310000,Max=0.310000))
InitialParticlesPerSecond=20.000000
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(1)=MeshEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.MeshEmitter15'
Begin Object Class=SpriteEmitter Name=SpriteEmitter15
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.600000,Max=0.600000))
Opacity=0.460000
FadeOutStartTime=0.380000
MaxParticles=2
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=16.000000)
StartSizeRange=(X=(Min=400.000000,Max=400.000000),Y=(Min=400.000000,Max=400.000000),Z=(Min=400.000000,Max=400.000000))
InitialParticlesPerSecond=1000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=2.000000,Max=2.000000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.SpriteEmitter15'
Begin Object Class=MeshEmitter Name=MeshEmitter19
StaticMesh=StaticMesh'ParticleMeshes.Complex.ExplosionRing'
UseParticleColor=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.150000
FadeOutStartTime=0.370000
MaxParticles=2
StartSpinRange=(X=(Min=1.000000,Max=1.000000),Y=(Min=1.000000,Max=1.000000),Z=(Min=1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=3.500000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=12.000000)
StartSizeRange=(X=(Min=1.810000,Max=1.810000),Y=(Min=1.810000,Max=1.810000),Z=(Min=1.810000,Max=1.810000))
InitialParticlesPerSecond=10.000000
LifetimeRange=(Min=1.500000,Max=1.500000)
End Object
Emitters(3)=MeshEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.MeshEmitter19'
Begin Object Class=SpriteEmitter Name=SpriteEmitter16
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Z=(Min=0.800000,Max=0.800000))
Opacity=0.680000
FadeOutStartTime=0.460000
MaxParticles=2
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=12.000000)
StartSizeRange=(X=(Min=425.000000,Max=425.000000),Y=(Min=425.000000,Max=425.000000),Z=(Min=425.000000,Max=425.000000))
InitialParticlesPerSecond=1000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=2.000000,Max=2.000000)
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.SpriteEmitter16'
Begin Object Class=MeshEmitter Name=MeshEmitter20
StaticMesh=StaticMesh'ParticleMeshes.Complex.ExplosionRing'
UseParticleColor=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.060000
FadeOutStartTime=0.370000
MaxParticles=1
StartSpinRange=(X=(Min=1.000000,Max=1.000000),Y=(Min=1.000000,Max=1.000000),Z=(Min=1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=2.500000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=7.000000)
StartSizeRange=(X=(Min=3.370000,Max=3.370000),Y=(Min=3.370000,Max=3.370000),Z=(Min=0.310000,Max=0.310000))
InitialParticlesPerSecond=1000.000000
LifetimeRange=(Min=0.500000,Max=0.500000)
End Object
Emitters(5)=MeshEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.MeshEmitter20'
Begin Object Class=SpriteEmitter Name=SpriteEmitter4
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
BlendBetweenSubdivisions=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.600000,Max=0.600000))
FadeOutStartTime=0.380000
MaxParticles=2
StartLocationRange=(Z=(Max=40.000000))
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=122.000000,Max=122.000000),Y=(Min=122.000000,Max=122.000000),Z=(Min=122.000000,Max=122.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'ExplosionTex.Framed.exp2_frames'
TextureUSubdivisions=4
TextureVSubdivisions=4
LifetimeRange=(Min=2.000000,Max=2.000000)
InitialDelayRange=(Max=0.100000)
End Object
Emitters(6)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.SpriteEmitter4'
Begin Object Class=SpriteEmitter Name=SpriteEmitter5
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
BlendBetweenSubdivisions=True
Acceleration=(Z=40.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.600000,Max=0.600000))
Opacity=0.800000
FadeOutStartTime=0.380000
MaxParticles=2
StartLocationRange=(Z=(Min=511.000000,Max=511.000000))
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=128.000000,Max=128.000000),Y=(Min=128.000000,Max=128.000000),Z=(Min=128.000000,Max=128.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'ExplosionTex.Framed.exp2_frames'
TextureUSubdivisions=4
TextureVSubdivisions=4
LifetimeRange=(Min=2.000000,Max=2.000000)
InitialDelayRange=(Min=0.200000,Max=0.500000)
End Object
Emitters(7)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.SpriteEmitter5'
Begin Object Class=SpriteEmitter Name=SpriteEmitter9
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
BlendBetweenSubdivisions=True
Acceleration=(Z=10.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.600000,Max=0.600000))
Opacity=0.610000
FadeOutStartTime=0.380000
MaxParticles=2
StartLocationRange=(Z=(Min=371.000000,Max=371.000000))
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=131.000000,Max=131.000000),Y=(Min=131.000000,Max=131.000000),Z=(Min=131.000000,Max=131.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'ExplosionTex.Framed.exp7_frames'
TextureUSubdivisions=4
TextureVSubdivisions=4
LifetimeRange=(Min=3.300000,Max=3.300000)
InitialDelayRange=(Min=0.400000,Max=0.400000)
End Object
Emitters(8)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.SpriteEmitter9'
Begin Object Class=SpriteEmitter Name=SpriteEmitter11
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
BlendBetweenSubdivisions=True
Acceleration=(Z=40.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.600000,Max=0.600000))
Opacity=0.390000
FadeOutStartTime=0.360000
FadeInEndTime=0.140000
StartLocationRange=(X=(Min=-490.000000,Max=490.000000),Y=(Min=-490.000000,Max=490.000000),Z=(Min=566.000000,Max=729.000000))
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=93.000000,Max=93.000000),Y=(Min=93.000000,Max=93.000000),Z=(Min=93.000000,Max=93.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'ExplosionTex.Framed.exp2_frames'
TextureUSubdivisions=4
TextureVSubdivisions=4
LifetimeRange=(Min=2.000000,Max=2.000000)
InitialDelayRange=(Min=0.700000,Max=0.700000)
End Object
Emitters(9)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.SpriteEmitter11'
Begin Object Class=SpriteEmitter Name=SpriteEmitter12
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=286.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.800000,Max=0.800000))
Opacity=0.410000
FadeOutStartTime=0.234000
MaxParticles=2
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=12.000000)
StartSizeRange=(X=(Min=145.000000,Max=145.000000),Y=(Min=145.000000,Max=145.000000),Z=(Min=145.000000,Max=145.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'EpicParticles.Flares.BurnFlare1'
LifetimeRange=(Min=2.300000,Max=2.300000)
End Object
Emitters(10)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RedeemerExplosion.SpriteEmitter12'
AutoDestroy=True
bNoDelete=False
bNetTemporary=True
RemoteRole=ROLE_DumbProxy
Style=STY_Masked
bDirectional=True
}

View File

@@ -0,0 +1,135 @@
class FX_RipperExplosion extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
BlendBetweenSubdivisions=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.500000,Max=0.500000))
Opacity=0.620000
FadeOutStartTime=0.380000
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=16.000000,Max=16.000000),Y=(Min=16.000000,Max=16.000000),Z=(Min=16.000000,Max=16.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'ExplosionTex.Framed.exp7_frames'
TextureUSubdivisions=4
TextureVSubdivisions=4
LifetimeRange=(Min=0.601000,Max=0.601000)
InitialDelayRange=(Min=0.400000,Max=0.400000)
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperExplosion.SpriteEmitter0'
Begin Object Class=SpriteEmitter Name=SpriteEmitter18
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
BlendBetweenSubdivisions=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.900000,Max=0.900000))
Opacity=0.820000
FadeOutStartTime=0.380000
MaxParticles=2
StartLocationRange=(X=(Min=4.000000,Max=4.000000),Y=(Min=4.000000,Max=4.000000),Z=(Min=4.000000,Max=4.000000))
SpinsPerSecondRange=(X=(Min=-0.100000,Max=-0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=14.000000,Max=14.000000),Y=(Min=14.000000,Max=14.000000),Z=(Min=14.000000,Max=14.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'ExplosionTex.Framed.exp2_frames'
TextureUSubdivisions=4
TextureVSubdivisions=4
LifetimeRange=(Min=0.601000,Max=0.601000)
InitialDelayRange=(Max=0.040000)
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperExplosion.SpriteEmitter18'
Begin Object Class=SpriteEmitter Name=SpriteEmitter21
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=90.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.140000
FadeOutStartTime=0.250000
FadeInEndTime=0.160000
MaxParticles=2
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=25.000000,Max=25.000000),Y=(Min=25.000000,Max=25.000000),Z=(Min=25.000000,Max=25.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'EpicParticles.Smoke.Smokepuff2'
LifetimeRange=(Min=1.400000,Max=1.400000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperExplosion.SpriteEmitter21'
Begin Object Class=SpriteEmitter Name=SpriteEmitter22
UseCollision=True
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.940000,Max=0.940000),Z=(Min=0.840000,Max=0.840000))
Opacity=0.510000
FadeOutStartTime=0.286000
FadeInEndTime=0.013000
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=13.000000)
StartSizeRange=(X=(Min=25.000000,Max=25.000000),Y=(Min=25.000000,Max=25.000000),Z=(Min=25.000000,Max=25.000000))
InitialParticlesPerSecond=1000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=0.700000,Max=0.700000)
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperExplosion.SpriteEmitter22'
Begin Object Class=SparkEmitter Name=SparkEmitter1
LineSegmentsRange=(Min=1.000000,Max=1.000000)
TimeBetweenSegmentsRange=(Min=0.200000,Max=0.200000)
FadeOut=True
RespawnDeadParticles=False
AutomaticInitialSpawning=False
Acceleration=(Z=-1200.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.700000,Max=0.700000),Z=(Min=0.300000,Max=0.300000))
Opacity=0.540000
FadeOutStartTime=0.282470
MaxParticles=14
StartSizeRange=(X=(Min=50.000000,Max=50.000000),Y=(Min=50.000000,Max=50.000000),Z=(Min=50.000000,Max=50.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=0.701000,Max=0.701000)
InitialDelayRange=(Min=0.040000,Max=0.040000)
StartVelocityRange=(X=(Min=-700.000000,Max=700.000000),Y=(Min=-700.000000,Max=700.000000),Z=(Min=-700.000000,Max=700.000000))
End Object
Emitters(4)=SparkEmitter'UT2341WeaponsReducedv1a.FX_RipperExplosion.SparkEmitter1'
bNoDelete=False
}

View File

@@ -0,0 +1,190 @@
class FX_RipperProjTrail extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter64
UseDirectionAs=PTDU_Normal
FadeOut=True
SpinParticles=True
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=-100.000000,Y=8.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.500000,Max=0.500000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.200000
FadeOutStartTime=0.190000
CoordinateSystem=PTCS_Relative
MaxParticles=13
StartLocationRange=(Y=(Min=-5.000000,Max=-5.000000))
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=2.000000,Max=2.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
ParticlesPerSecond=13.000000
InitialParticlesPerSecond=50000.000000
Texture=Texture'EpicParticles.Flares.SoftFlare'
LifetimeRange=(Min=1.000000,Max=1.000000)
WarmupTicksPerSecond=1.000000
RelativeWarmupTime=1.000000
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperProjTrail.SpriteEmitter64'
Begin Object Class=SpriteEmitter Name=SpriteEmitter66
UseCollision=True
FadeOut=True
FadeIn=True
SpinParticles=True
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=-10.000000,Z=-40.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.700000,Max=0.700000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.320000
FadeOutStartTime=0.110000
FadeInEndTime=0.110000
CoordinateSystem=PTCS_Relative
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=2.000000,Max=2.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=12.000000,Max=15.000000),Y=(Min=12.000000,Max=15.000000),Z=(Min=12.000000,Max=15.000000))
ParticlesPerSecond=1.000000
InitialParticlesPerSecond=50000.000000
Texture=Texture'EpicParticles.Flares.FlickerFlare'
LifetimeRange=(Min=1.400000,Max=1.400000)
StartVelocityRange=(X=(Min=-30.000000,Max=-30.000000),Y=(Min=-20.000000,Max=20.000000),Z=(Max=10.000000))
WarmupTicksPerSecond=1.000000
RelativeWarmupTime=1.000000
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperProjTrail.SpriteEmitter66'
Begin Object Class=SpriteEmitter Name=SpriteEmitter67
UseDirectionAs=PTDU_Normal
FadeOut=True
FadeIn=True
SpinParticles=True
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=-100.000000,Y=-12.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.500000,Max=0.500000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.200000
FadeOutStartTime=0.350000
FadeInEndTime=0.020000
CoordinateSystem=PTCS_Relative
MaxParticles=13
StartLocationRange=(Y=(Min=6.000000,Max=6.000000))
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=2.000000,Max=2.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
ParticlesPerSecond=13.000000
InitialParticlesPerSecond=50000.000000
Texture=Texture'EpicParticles.Flares.SoftFlare'
LifetimeRange=(Min=1.000000,Max=1.000000)
WarmupTicksPerSecond=1.000000
RelativeWarmupTime=1.000000
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperProjTrail.SpriteEmitter67'
Begin Object Class=SpriteEmitter Name=SpriteEmitter68
UseDirectionAs=PTDU_Normal
FadeOut=True
FadeIn=True
SpinParticles=True
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=-110.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.500000,Max=0.500000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.200000
FadeOutStartTime=0.350000
FadeInEndTime=0.020000
CoordinateSystem=PTCS_Relative
MaxParticles=13
StartLocationRange=(X=(Min=-4.000000,Max=-4.000000))
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=2.000000,Max=2.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=15.000000,Max=15.000000),Y=(Min=15.000000,Max=15.000000),Z=(Min=15.000000,Max=15.000000))
ParticlesPerSecond=13.000000
InitialParticlesPerSecond=50000.000000
Texture=Texture'EpicParticles.Flares.SoftFlare'
LifetimeRange=(Min=1.000000,Max=1.000000)
WarmupTicksPerSecond=1.000000
RelativeWarmupTime=1.000000
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperProjTrail.SpriteEmitter68'
Begin Object Class=SpriteEmitter Name=SpriteEmitter69
FadeOut=True
FadeIn=True
SpinParticles=True
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=-70.000000,Y=-10.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.500000,Max=0.500000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.700000
FadeOutStartTime=0.800000
FadeInEndTime=0.020000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartLocationRange=(X=(Min=-1.000000,Max=-1.000000),Y=(Min=6.000000,Max=6.000000))
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=2.000000,Max=2.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=9.000000,Max=9.000000),Y=(Min=9.000000,Max=9.000000),Z=(Min=9.000000,Max=9.000000))
ParticlesPerSecond=1.000000
InitialParticlesPerSecond=50000.000000
Texture=Texture'EpicParticles.Flares.SoftFlare'
LifetimeRange=(Min=1.000000,Max=1.000000)
StartVelocityRange=(Y=(Min=-1.000000,Max=-1.000000))
WarmupTicksPerSecond=1.000000
RelativeWarmupTime=1.000000
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperProjTrail.SpriteEmitter69'
Begin Object Class=SpriteEmitter Name=SpriteEmitter70
FadeOut=True
FadeIn=True
SpinParticles=True
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=-70.000000,Y=10.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.500000,Max=0.500000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.700000
FadeOutStartTime=0.350000
FadeInEndTime=0.020000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartLocationRange=(X=(Min=-1.000000,Max=-1.000000),Y=(Min=-5.000000,Max=-5.000000))
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=2.000000,Max=2.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=9.000000,Max=9.000000),Y=(Min=9.000000,Max=9.000000),Z=(Min=9.000000,Max=9.000000))
ParticlesPerSecond=1.000000
InitialParticlesPerSecond=50000.000000
Texture=Texture'EpicParticles.Flares.SoftFlare'
LifetimeRange=(Min=1.000000,Max=1.000000)
StartVelocityRange=(Y=(Min=-1.000000,Max=-1.000000))
WarmupTicksPerSecond=1.000000
RelativeWarmupTime=1.000000
End Object
Emitters(5)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RipperProjTrail.SpriteEmitter70'
bNoDelete=False
bDirectional=True
}

View File

@@ -0,0 +1,196 @@
class FX_RocketExplosion extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
BlendBetweenSubdivisions=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.900000,Max=0.900000),Z=(Min=0.600000,Max=0.600000))
Opacity=0.720000
FadeOutStartTime=0.380000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=16.000000,Max=16.000000),Y=(Min=16.000000,Max=16.000000),Z=(Min=16.000000,Max=16.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'ExplosionTex.Framed.exp7_frames'
TextureUSubdivisions=4
TextureVSubdivisions=4
LifetimeRange=(Min=0.601000,Max=0.601000)
InitialDelayRange=(Min=0.400000,Max=0.400000)
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketExplosion.SpriteEmitter0'
Begin Object Class=SpriteEmitter Name=SpriteEmitter16
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
Disabled=True
Backup_Disabled=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.740000
FadeOutStartTime=0.080000
FadeInEndTime=0.080000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=28.000000,Max=28.000000),Y=(Min=28.000000,Max=28.000000),Z=(Min=28.000000,Max=28.000000))
InitialParticlesPerSecond=1000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketExplosion.SpriteEmitter16'
Begin Object Class=SpriteEmitter Name=SpriteEmitter18
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
BlendBetweenSubdivisions=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.800000,Max=0.800000),Z=(Min=0.500000,Max=0.500000))
Opacity=0.820000
FadeOutStartTime=0.380000
CoordinateSystem=PTCS_Relative
MaxParticles=2
StartLocationRange=(X=(Min=4.000000,Max=4.000000),Y=(Min=4.000000,Max=4.000000),Z=(Min=4.000000,Max=4.000000))
SpinsPerSecondRange=(X=(Min=-0.100000,Max=-0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=14.000000,Max=14.000000),Y=(Min=14.000000,Max=14.000000),Z=(Min=14.000000,Max=14.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'ExplosionTex.Framed.exp2_frames'
TextureUSubdivisions=4
TextureVSubdivisions=4
LifetimeRange=(Min=0.801000,Max=0.801000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketExplosion.SpriteEmitter18'
Begin Object Class=SpriteEmitter Name=SpriteEmitter21
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=60.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.140000
FadeOutStartTime=0.250000
FadeInEndTime=0.160000
MaxParticles=2
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=6.000000)
StartSizeRange=(X=(Min=25.000000,Max=25.000000),Y=(Min=25.000000,Max=25.000000),Z=(Min=25.000000,Max=25.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'EpicParticles.Smoke.Smokepuff2'
LifetimeRange=(Min=2.400000,Max=2.400000)
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketExplosion.SpriteEmitter21'
Begin Object Class=SpriteEmitter Name=SpriteEmitter22
UseCollision=True
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.480000,Max=0.480000),Z=(Min=0.260000,Max=0.260000))
Opacity=0.730000
FadeOutStartTime=0.030000
FadeInEndTime=0.015000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=13.000000)
StartSizeRange=(X=(Min=25.000000,Max=25.000000),Y=(Min=25.000000,Max=25.000000),Z=(Min=25.000000,Max=25.000000))
InitialParticlesPerSecond=1000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=1.300000,Max=1.300000)
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketExplosion.SpriteEmitter22'
Begin Object Class=SpriteEmitter Name=SpriteEmitter5
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-1500.000000)
DampingFactorRange=(X=(Min=0.450000,Max=0.450000),Y=(Min=0.450000,Max=0.450000),Z=(Min=0.450000,Max=0.450000))
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.700000,Max=0.700000),Z=(Min=0.500000,Max=0.500000))
Opacity=0.860000
FadeOutStartTime=0.800000
MaxParticles=12
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=0.100000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=6.000000,Max=6.000000),Y=(Min=6.000000,Max=6.000000),Z=(Min=6.000000,Max=6.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.HardSpot'
LifetimeRange=(Min=0.950000,Max=0.950000)
InitialDelayRange=(Min=0.140000,Max=0.140000)
StartVelocityRange=(X=(Min=-300.000000,Max=400.000000),Y=(Min=-400.000000,Max=400.000000),Z=(Min=-400.000000,Max=700.000000))
End Object
Emitters(5)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketExplosion.SpriteEmitter5'
Begin Object Class=SparkEmitter Name=SparkEmitter1
LineSegmentsRange=(Min=1.000000,Max=1.000000)
TimeBetweenSegmentsRange=(Min=0.200000,Max=0.200000)
FadeOut=True
RespawnDeadParticles=False
AutomaticInitialSpawning=False
Acceleration=(Z=-1200.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.700000,Max=0.700000),Z=(Min=0.300000,Max=0.300000))
Opacity=0.540000
FadeOutStartTime=0.282470
MaxParticles=14
StartSizeRange=(X=(Min=50.000000,Max=50.000000),Y=(Min=50.000000,Max=50.000000),Z=(Min=50.000000,Max=50.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=0.801000,Max=0.801000)
InitialDelayRange=(Min=0.100000,Max=0.100000)
StartVelocityRange=(X=(Min=-700.000000,Max=700.000000),Y=(Min=-700.000000,Max=700.000000),Z=(Min=-700.000000,Max=700.000000))
End Object
Emitters(6)=SparkEmitter'UT2341WeaponsReducedv1a.FX_RocketExplosion.SparkEmitter1'
bNoDelete=False
}

View File

@@ -0,0 +1,159 @@
class FX_RocketTrail extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter8
FadeOut=True
SpinParticles=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.500000,Max=0.500000),Z=(Min=0.300000,Max=0.300000))
Opacity=0.200000
FadeOutStartTime=0.520000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartLocationRange=(X=(Min=-18.000000,Max=-18.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=13.000000)
StartSizeRange=(X=(Min=55.000000,Max=55.000000),Y=(Min=55.000000,Max=55.000000),Z=(Min=55.000000,Max=55.000000))
InitialParticlesPerSecond=1.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Flares.BurnFlare1'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketTrail.SpriteEmitter8'
Begin Object Class=SpriteEmitter Name=SpriteEmitter11
FadeOut=True
SpinParticles=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.880000,Max=0.880000),Z=(Min=0.680000,Max=0.680000))
Opacity=0.430000
FadeOutStartTime=0.460000
CoordinateSystem=PTCS_Relative
MaxParticles=2
StartLocationRange=(X=(Min=-18.000000,Max=-18.000000))
SpinsPerSecondRange=(X=(Max=0.100000))
StartSpinRange=(X=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=13.000000)
StartSizeRange=(X=(Min=55.000000,Max=55.000000),Y=(Min=55.000000,Max=55.000000),Z=(Min=55.000000,Max=55.000000))
InitialParticlesPerSecond=2.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketTrail.SpriteEmitter11'
Begin Object Class=SpriteEmitter Name=SpriteEmitter12
FadeOut=True
SpinParticles=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.700000,Max=0.700000),Z=(Min=0.500000,Max=0.500000))
Opacity=0.430000
FadeOutStartTime=0.460000
CoordinateSystem=PTCS_Relative
MaxParticles=2
StartLocationRange=(X=(Min=-18.000000,Max=-18.000000))
SpinsPerSecondRange=(X=(Max=0.100000))
StartSpinRange=(X=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=13.000000)
StartSizeRange=(X=(Min=85.000000,Max=85.000000),Y=(Min=85.000000,Max=85.000000),Z=(Min=85.000000,Max=85.000000))
InitialParticlesPerSecond=2.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Flares.FlickerFlare'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketTrail.SpriteEmitter12'
Begin Object Class=SpriteEmitter Name=SpriteEmitter13
FadeOut=True
FadeIn=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
Acceleration=(Z=100.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.800000,Max=0.800000),Y=(Min=0.800000,Max=0.800000),Z=(Min=0.800000,Max=0.800000))
Opacity=0.360000
FadeOutStartTime=0.460000
FadeInEndTime=0.100000
MaxParticles=30
SpinsPerSecondRange=(X=(Max=0.100000))
StartSpinRange=(X=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=0.900000)
StartSizeRange=(X=(Min=7.000000,Max=15.000000),Y=(Min=7.000000,Max=15.000000),Z=(Min=7.000000,Max=15.000000))
InitialParticlesPerSecond=20.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Smoke.Smokepuff'
LifetimeRange=(Min=1.000000,Max=1.000000)
StartVelocityRange=(Y=(Min=-20.000000,Max=20.000000),Z=(Min=-20.000000,Max=10.000000))
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketTrail.SpriteEmitter13'
Begin Object Class=SpriteEmitter Name=SpriteEmitter14
FadeOut=True
FadeIn=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
Acceleration=(Z=100.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.100000,Max=0.100000),Y=(Min=0.100000,Max=0.100000),Z=(Min=0.100000,Max=0.100000))
Opacity=0.200000
FadeOutStartTime=0.040080
FadeInEndTime=0.100000
MaxParticles=30
StartLocationRange=(X=(Min=-18.000000,Max=-18.000000))
SpinsPerSecondRange=(X=(Max=0.100000))
StartSpinRange=(X=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=0.200000)
StartSizeRange=(X=(Min=6.000000,Max=12.000000),Y=(Min=6.000000,Max=12.000000),Z=(Min=6.000000,Max=12.000000))
InitialParticlesPerSecond=20.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Smoke.Smokepuff'
LifetimeRange=(Min=0.501000,Max=0.501000)
InitialDelayRange=(Min=0.010000,Max=0.010000)
StartVelocityRange=(Y=(Min=-20.000000,Max=20.000000),Z=(Min=-20.000000,Max=10.000000))
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketTrail.SpriteEmitter14'
Begin Object Class=SpriteEmitter Name=SpriteEmitter15
SpinParticles=True
UseRegularSizeScale=False
UniformSize=True
Acceleration=(Z=60.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.600000,Max=0.600000),Z=(Min=0.300000,Max=0.300000))
Opacity=0.170000
FadeOutStartTime=0.501000
CoordinateSystem=PTCS_Relative
MaxParticles=30
StartLocationRange=(X=(Min=-18.000000,Max=-18.000000))
SpinsPerSecondRange=(X=(Max=0.100000))
StartSpinRange=(X=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=0.500000)
StartSizeRange=(X=(Min=1.000000,Max=13.000000),Y=(Min=1.000000,Max=13.000000),Z=(Min=1.000000,Max=13.000000))
InitialParticlesPerSecond=20.000000
Texture=Texture'EpicParticles.Flares.SoftFlare'
LifetimeRange=(Min=0.500000,Max=0.500000)
StartVelocityRange=(X=(Min=-150.000000,Max=-50.000000),Y=(Min=-20.000000,Max=20.000000),Z=(Min=-20.000000,Max=10.000000))
End Object
Emitters(5)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_RocketTrail.SpriteEmitter15'
bNoDelete=False
}

View File

@@ -0,0 +1,164 @@
/*************************************************************
*
*
*
*************************************************************/
/*
class FX_ShockRifleBeamEffect extends Emitter;
defaultproperties
{
Begin Object Class=BeamEmitter Name=BeamEmitter0
BeamDistanceRange=(Min=800.000000,Max=800.000000)
DetermineEndPointBy=PTEP_Distance
LowFrequencyNoiseRange=(Z=(Max=1.000000))
FadeOut=True
UseSizeScale=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000))
Opacity=0.200000
FadeOutStartTime=1.500000
MaxParticles=8
Name="ShockBeam"
StartSizeRange=(X=(Min=16.000000,Max=16.000000),Y=(Min=16.000000,Max=16.000000),Z=(Min=16.000000,Max=16.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'EpicParticles.Beams.WhiteStreak01aw'
LifetimeRange=(Min=3.000000,Max=3.000000)
StartVelocityRange=(X=(Min=20.000000,Max=20.000000))
End Object
Emitters(0)=BeamEmitter'BeamEmitter0'
Begin Object Class=BeamEmitter Name=BeamEmitter1
BeamDistanceRange=(Min=800.000000,Max=800.000000)
DetermineEndPointBy=PTEP_Distance
LowFrequencyNoiseRange=(X=(Max=1.000000),Y=(Min=-0.500000,Max=0.500000),Z=(Max=1.000000))
HighFrequencyPoints=17
HFScaleFactors(0)=(FrequencyScale=(X=1.000000,Y=1.000000,Z=3.000000),RelativeLength=0.520000)
FadeOut=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.500000,Max=0.500000),Y=(Min=0.600000,Max=0.600000))
Opacity=0.070000
FadeOutStartTime=1.500000
MaxParticles=8
Name="ShockBeam2"
StartSizeRange=(X=(Min=3.000000,Max=3.000000),Y=(Min=3.000000,Max=3.000000),Z=(Min=3.000000,Max=3.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AS_FX_TX.Beams.HotBolt_1'
LifetimeRange=(Min=3.000000,Max=3.000000)
StartVelocityRange=(X=(Min=20.000000,Max=20.000000))
End Object
Emitters(1)=BeamEmitter'BeamEmitter1'
Begin Object Class=BeamEmitter Name=BeamEmitter2
BeamDistanceRange=(Min=800.000000,Max=800.000000)
DetermineEndPointBy=PTEP_Distance
LowFrequencyNoiseRange=(X=(Min=-10.000000,Max=-1.000000),Y=(Min=-10.000000,Max=-0.500000),Z=(Min=-10.000000,Max=-1.000000))
HighFrequencyPoints=17
HFScaleFactors(0)=(FrequencyScale=(X=1.000000,Y=1.000000,Z=3.000000),RelativeLength=0.520000)
FadeOut=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.500000,Max=0.500000),Y=(Min=0.600000,Max=0.600000))
Opacity=0.030000
FadeOutStartTime=1.500000
MaxParticles=8
Name="ShockBeam3"
StartSizeRange=(X=(Min=3.000000,Max=3.000000),Y=(Min=3.000000,Max=3.000000),Z=(Min=3.000000,Max=3.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AS_FX_TX.Beams.HotBolt_1'
LifetimeRange=(Min=3.000000,Max=3.000000)
StartVelocityRange=(X=(Min=20.000000,Max=20.000000))
End Object
Emitters(2)=BeamEmitter'BeamEmitter2'
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
FadeOut=True
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Y=(Min=0.400000,Max=0.400000))
Opacity=0.330000
FadeOutStartTime=0.540000
MaxParticles=15
Name="ShockTrail"
SpinsPerSecondRange=(X=(Max=0.200000))
StartSpinRange=(X=(Max=0.100000))
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=30.000000,Max=30.000000),Z=(Min=30.000000,Max=30.000000))
InitialParticlesPerSecond=10.000000
Texture=Texture'AS_FX_TX.Flares.Laser_Flare'
LifetimeRange=(Min=3.000000,Max=3.000000)
StartVelocityRange=(X=(Min=680.000000,Max=680.000000))
End Object
Emitters(3)=SpriteEmitter'SpriteEmitter1'
Begin Object Class=SpriteEmitter Name=SpriteEmitter2
FadeOut=True
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.600000,Max=0.600000))
Opacity=0.270000
FadeOutStartTime=0.540000
MaxParticles=15
Name="ShockTrail2"
SpinsPerSecondRange=(X=(Max=0.200000))
StartSpinRange=(X=(Max=1.000000))
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=30.000000,Max=30.000000),Z=(Min=30.000000,Max=30.000000))
InitialParticlesPerSecond=10.000000
Texture=Texture'AS_FX_TX.Flares.Laser_Flare'
LifetimeRange=(Min=3.000000,Max=3.000000)
StartVelocityRange=(X=(Max=480.000000))
End Object
Emitters(4)=SpriteEmitter'SpriteEmitter2'
Begin Object Class=SpriteEmitter Name=SpriteEmitter3
FadeOut=True
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.300000,Max=0.300000),Y=(Min=0.400000,Max=0.400000))
Opacity=0.340000
FadeOutStartTime=0.540000
MaxParticles=15
Name="ShockTrailfaint"
SpinsPerSecondRange=(X=(Max=0.100000))
StartSpinRange=(X=(Max=1.000000))
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=30.000000,Max=30.000000),Z=(Min=30.000000,Max=30.000000))
InitialParticlesPerSecond=13.000000
Texture=Texture'EpicParticles.Flares.SoftFlare'
LifetimeRange=(Min=3.000000,Max=3.000000)
StartVelocityRange=(X=(Max=480.000000))
End Object
Emitters(5)=SpriteEmitter'SpriteEmitter3'
}
*/
// xEmitter version
class FX_ShockRifleBeamEffect extends ShockBeamEffect;
simulated function SpawnImpactEffects(rotator HitRot, vector EffectLoc)
{
//Spawn(class'ShockImpactFlare',,, EffectLoc, HitRot);
//Spawn(class'ShockImpactRing',,, EffectLoc, HitRot);
//Spawn(class'ShockImpactScorch',,, EffectLoc, Rotator(-HitNormal));
//Spawn(class'ShockExplosionCore',,, EffectLoc+HitNormal*8, HitRot);
Spawn(class'FX_ShockRifleImpact',,, EffectLoc, HitRot);
}
defaultproperties
{
Texture=Texture'UT2341Weapons_Tex.ASMD.ASMDBeamTex'
Skins(0)=Texture'UT2341Weapons_Tex.ASMD.ASMDBeamTex'
}

View File

@@ -0,0 +1,75 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_ShockRifleBeamMuzFlash extends ShockBeamMuzFlash;
/*
Begin Object Class=SpriteEmitter Name=SpriteEmitter22
FadeOut=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.300000,Max=0.300000),Y=(Min=0.700000,Max=0.700000))
FadeOutStartTime=0.060000
MaxParticles=1
Name="ShockMuzzle"
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=6.000000,Max=6.000000),Y=(Min=6.000000,Max=6.000000),Z=(Min=6.000000,Max=6.000000))
Texture=Texture'XEffectMat.Shock.ShockComboFlash'
LifetimeRange=(Min=0.400000,Max=0.400000)
End Object
Emitters(0)=SpriteEmitter'SpriteEmitter22'
Begin Object Class=SpriteEmitter Name=SpriteEmitter23
FadeOut=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Y=(Min=0.800000,Max=0.800000))
Opacity=0.800000
FadeOutStartTime=0.060000
MaxParticles=1
Name="ShockFlare"
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=12.000000,Max=12.000000),Y=(Min=12.000000,Max=12.000000),Z=(Min=12.000000,Max=12.000000))
Texture=Texture'EpicParticles.Flares.BurnFlare1'
LifetimeRange=(Min=0.400000,Max=0.400000)
End Object
Emitters(1)=SpriteEmitter'SpriteEmitter23'
Begin Object Class=SpriteEmitter Name=SpriteEmitter24
FadeOut=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.700000,Max=0.700000),Y=(Min=0.600000,Max=0.600000))
Opacity=0.590000
FadeOutStartTime=0.060000
MaxParticles=1
Name="SpriteEmitter24"
SpinsPerSecondRange=(X=(Max=0.010000))
StartSpinRange=(X=(Max=0.700000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=16.000000,Max=16.000000),Y=(Min=16.000000,Max=16.000000),Z=(Min=16.000000,Max=16.000000))
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar2'
LifetimeRange=(Min=0.400000,Max=0.400000)
End Object
Emitters(2)=SpriteEmitter'SpriteEmitter24'
*/
defaultproperties
{
Skins(0)=FinalBlend'UT2341Weapons_Tex.ASMD.ASMDFlashFB'
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,281 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_ShockRifleImpact extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter27
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=-1500.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.500000,Max=0.500000),Y=(Min=0.800000,Max=0.800000))
FadeOutStartTime=0.800000
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=0.100000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=12.000000,Max=12.000000),Y=(Min=12.000000,Max=12.000000),Z=(Min=12.000000,Max=12.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=2.000000,Max=2.000000)
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.SpriteEmitter27'
Begin Object Class=SpriteEmitter Name=SpriteEmitter28
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-1500.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.500000,Max=0.500000))
Opacity=0.860000
FadeOutStartTime=0.800000
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=0.100000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=18.000000,Max=18.000000),Y=(Min=18.000000,Max=18.000000),Z=(Min=18.000000,Max=18.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=2.000000,Max=2.000000)
StartVelocityRange=(X=(Min=-400.000000,Max=700.000000),Y=(Min=-400.000000,Max=400.000000),Z=(Min=-300.000000,Max=400.000000))
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.SpriteEmitter28'
Begin Object Class=SpriteEmitter Name=SpriteEmitter29
UseDirectionAs=PTDU_Normal
ProjectionNormal=(X=1.000000,Z=0.000000)
FadeOut=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.500000,Max=0.500000))
Opacity=0.490000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.200000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=30.000000,Max=30.000000),Z=(Min=30.000000,Max=30.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.AirBlast'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.SpriteEmitter29'
Begin Object Class=SpriteEmitter Name=SpriteEmitter31
UseDirectionAs=PTDU_Normal
ProjectionNormal=(X=1.000000,Z=0.000000)
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.500000,Max=0.500000))
Opacity=0.880000
FadeOutStartTime=0.600000
FadeInEndTime=0.060000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.200000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=50.000000,Max=50.000000),Y=(Min=50.000000,Max=50.000000),Z=(Min=50.000000,Max=50.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.HardSpot'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.SpriteEmitter31'
Begin Object Class=SpriteEmitter Name=SpriteEmitter32
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.500000,Max=0.500000))
Opacity=0.790000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartLocationRange=(Z=(Min=10.000000,Max=10.000000))
SpinsPerSecondRange=(X=(Min=0.500000,Max=0.900000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=20.000000,Max=20.000000),Y=(Min=20.000000,Max=20.000000),Z=(Min=20.000000,Max=20.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.SpriteEmitter32'
Begin Object Class=SpriteEmitter Name=SpriteEmitter33
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.500000,Max=0.500000))
Opacity=0.790000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartLocationRange=(Z=(Min=10.000000,Max=10.000000))
SpinsPerSecondRange=(X=(Min=0.900000,Max=2.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=20.000000,Max=20.000000),Y=(Min=20.000000,Max=20.000000),Z=(Min=20.000000,Max=20.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(5)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.SpriteEmitter33'
Begin Object Class=SpriteEmitter Name=SpriteEmitter34
UseDirectionAs=PTDU_Normal
ProjectionNormal=(X=1.000000,Z=0.000000)
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.500000,Max=0.500000))
Opacity=0.790000
FadeOutStartTime=0.600000
FadeInEndTime=0.060000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.200000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=74.000000,Max=74.000000),Y=(Min=74.000000,Max=74.000000),Z=(Min=74.000000,Max=74.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar2'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(6)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.SpriteEmitter34'
Begin Object Class=SpriteEmitter Name=SpriteEmitter35
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Y=(Min=0.700000,Max=0.700000))
Opacity=0.490000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartLocationRange=(Z=(Min=20.000000,Max=20.000000))
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=20.000000,Max=20.000000),Y=(Min=20.000000,Max=20.000000),Z=(Min=20.000000,Max=20.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(7)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.SpriteEmitter35'
Begin Object Class=SpriteEmitter Name=SpriteEmitter41
UseDirectionAs=PTDU_Normal
ProjectionNormal=(X=1.000000,Z=0.000000)
FadeOut=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.500000,Max=0.500000))
Opacity=0.370000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.200000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=34.000000,Max=34.000000),Y=(Min=34.000000,Max=34.000000),Z=(Min=34.000000,Max=34.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.AirBlast'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(8)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.SpriteEmitter41'
Begin Object Class=BeamEmitter Name=BeamEmitter6
BeamDistanceRange=(Min=200.000000,Max=200.000000)
DetermineEndPointBy=PTEP_Distance
LowFrequencyNoiseRange=(X=(Max=10.000000),Y=(Max=10.000000),Z=(Max=10.000000))
LowFrequencyPoints=2
HighFrequencyNoiseRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=-10.000000,Max=10.000000))
HFScaleFactors(0)=(FrequencyScale=(X=0.400000,Y=0.400000,Z=0.400000),RelativeLength=0.280000)
UseHighFrequencyScale=True
BranchProbability=(Min=1.000000,Max=1.000000)
BranchSpawnAmountRange=(Min=5.000000,Max=5.000000)
LinkupLifetime=True
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.500000,Max=0.500000))
Opacity=0.380000
FadeOutStartTime=2.000000
FadeInEndTime=2.000000
CoordinateSystem=PTCS_Relative
StartLocationShape=PTLS_Sphere
SphereRadiusRange=(Max=25.000000)
SizeScale(0)=(RelativeTime=0.520000,RelativeSize=-1.000000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.BeamBolt1a'
LifetimeRange=(Min=0.500000,Max=0.750000)
StartVelocityRange=(X=(Min=-20.000000,Max=20.000000),Y=(Min=-20.000000,Max=20.000000),Z=(Min=-20.000000,Max=20.000000))
End Object
Emitters(9)=BeamEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleImpact.BeamEmitter6'
bNoDelete=False
}

View File

@@ -0,0 +1,42 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_ShockRifleMuzFlash3rd extends ShockProjMuzFlash3rd;
/*
defaultproperties
{
mNumPerFlash=1
mParticleType=PT_Mesh
mStartParticles=0
mMaxParticles=6
mLifeRange(0)=0.130000
mLifeRange(1)=0.130000
mRegenRange(0)=0.000000
mRegenRange(1)=0.000000
mSpawnVecB=(Z=0.000000)
mSpeedRange(0)=0.000000
mSpeedRange(1)=0.000000
mPosRelative=True
mAirResistance=0.000000
mRandOrient=True
mSizeRange(0)=0.350000
mSizeRange(1)=0.400000
mGrowthRate=3.200000
mColorRange(0)=(R=50)
mColorRange(1)=(R=50)
mAttenKa=0.000000
mRandTextures=True
mMeshNodes(0)=StaticMesh'XEffects.MinigunFlashMesh'
Skins(0)=FinalBlend'XGameShaders.WeaponShaders.ShockMuzFlash3rdFinal'
Style=STY_Additive
}
*/
defaultproperties
{
Skins(0)=FinalBlend'UT2341Weapons_Tex.ASMD.ASMDMuzFlash3rdFinal'
}

View File

@@ -0,0 +1,125 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_ShockRifleProjectile extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.100000,Max=0.100000),Y=(Min=0.500000,Max=0.500000))
Opacity=0.400000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=9.000000,Max=9.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=90.000000,Max=90.000000),Y=(Min=90.000000,Max=90.000000),Z=(Min=60.000000,Max=60.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleProjectile.SpriteEmitter0'
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.800000,Max=0.800000))
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=9.000000,Max=9.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=14.60000,Max=14.60000),Y=(Min=14.60000,Max=14.60000),Z=(Min=14.60000,Max=14.600000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'XEffectMat.Shock.shock_mark_heat'
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleProjectile.SpriteEmitter1'
Begin Object Class=SpriteEmitter Name=SpriteEmitter2
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.000000,Max=0.000000),Y=(Min=0.450000,Max=0.450000))
Opacity=0.400000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=-9.000000,Max=-9.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=90.000000,Max=90.000000),Y=(Min=90.000000,Max=90.000000),Z=(Min=90.000000,Max=90.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleProjectile.SpriteEmitter2'
Begin Object Class=SpriteEmitter Name=SpriteEmitter3
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.840000,Max=0.840000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.800000,Max=0.800000))
Opacity=0.260000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=-9.000000,Max=-9.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=40.000000,Max=40.000000),Y=(Min=40.000000,Max=40.000000),Z=(Min=40.000000,Max=40.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.EclipseCircle'
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleProjectile.SpriteEmitter3'
Begin Object Class=SpriteEmitter Name=SpriteEmitter4
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.800000,Max=0.800000))
Opacity=0.200000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=0.680000)
SpinsPerSecondRange=(X=(Min=9.000000,Max=9.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=20.000000,Max=20.000000),Y=(Min=20.000000,Max=20.000000),Z=(Min=20.000000,Max=20.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.PurpleSwell'
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleProjectile.SpriteEmitter4'
Begin Object Class=SpriteEmitter Name=SpriteEmitter5
SpinParticles=True
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.800000,Max=0.800000))
Opacity=0.130000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinCCWorCW=(X=1.000000)
SpinsPerSecondRange=(X=(Min=0.050000,Max=0.050000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(Y=(Max=1.000000),Z=(Max=1.000000))
StartSizeRange=(X=(Min=100.000000,Max=100.000000),Y=(Min=100.000000,Max=100.000000),Z=(Min=100.000000,Max=100.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'EpicParticles.Flares.FlickerFlare2'
End Object
Emitters(5)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_ShockRifleProjectile.SpriteEmitter5'
bNoDelete=False
}

View File

@@ -0,0 +1,12 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_ShockRifleProjectileMuzFlash extends ShockProjMuzFlash;
defaultproperties
{
Skins(0)=FinalBlend'UT2341Weapons_Tex.ASMD.ASMDMuzFlash1stFinal'
}

View File

@@ -0,0 +1,88 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_SniperRifleBeamEffect extends xEmitter;
var vector HitNormal;
replication
{
reliable if(bNetInitial && Role == ROLE_Authority)
HitNormal;
}
simulated function PostNetBeginPlay()
{
if (Role < ROLE_Authority)
SpawnEffects();
}
function AimAt(Vector hl, Vector hn, float Charge)
{
HitNormal = hn;
mSpawnVecA = hl;
if (Level.NetMode != NM_DedicatedServer)
SpawnEffects();
}
simulated function SpawnImpactEffects(rotator HitRot, vector EffectLoc)
{
Spawn(class'pclImpactSmoke',,, EffectLoc, HitRot);
}
simulated function bool CheckMaxEffectDistance(PlayerController P, vector SpawnLocation)
{
return !P.BeyondViewDistance(SpawnLocation,3000);
}
simulated function SpawnEffects()
{
local xWeaponAttachment Attachment;
if (Instigator != None)
{
if ( Instigator.IsFirstPerson() )
{
if ( (Instigator.Weapon == None) || Instigator.Weapon.WeaponCentered() || (Instigator.Weapon.Instigator == None) )
SetLocation( Instigator.Location );
else
SetLocation( Instigator.Weapon.GetEffectStart() );
}
else
{
Attachment = xPawn(Instigator).WeaponAttachment;
if ( Attachment != None && (Level.TimeSeconds - Attachment.LastRenderTime) < 1 )
SetLocation( Attachment.GetTipLocation() );
else
SetLocation( Instigator.Location );
}
}
if (EffectIsRelevant(mSpawnVecA + HitNormal*2,false) && HitNormal != Vect(0,0,0))
SpawnImpactEffects(Rotator(HitNormal), mSpawnVecA + HitNormal*2);
}
defaultproperties
{
mParticleType=PT_Beam
mMaxParticles=3
mLifeRange(0)=0.100000
mRegenDist=150.000000
mSizeRange(0)=2.000000
mSizeRange(1)=2.000000
mColorRange(0)=(B=0)
mColorRange(1)=(B=0)
mAttenKa=0.100000
bReplicateInstigator=True
bReplicateMovement=False
RemoteRole=ROLE_SimulatedProxy
NetPriority=3.000000
LifeSpan=0.100000
Skins(0)=Texture'XEffectMat.Ion.painter_beam'
Style=STY_Additive
}

View File

@@ -0,0 +1,11 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_SniperRifleBeamEffectBlue extends FX_SniperRifleBeamEffect;
defaultproperties
{
}

View File

@@ -0,0 +1,120 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_SniperRifleMuzFlash extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter10
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
Acceleration=(X=6.000000,Z=80.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.080000
FadeOutStartTime=0.120000
FadeInEndTime=0.120000
MaxParticles=16
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
StartSpinRange=(X=(Max=1.000000))
SizeScale(0)=(RelativeTime=0.610000,RelativeSize=-2.000000)
StartSizeRange=(X=(Min=14.000000,Max=14.000000),Y=(Min=14.000000,Max=14.000000),Z=(Min=14.000000,Max=14.000000))
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Smoke.Smokepuff'
LifetimeRange=(Min=1.100000,Max=1.100000)
SpawnOnTriggerRange=(Min=7.000000,Max=7.000000)
SpawnOnTriggerPPS=7.000000
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SniperRifleMuzFlash.SpriteEmitter10'
Begin Object Class=SpriteEmitter Name=SpriteEmitter14
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.070000
FadeOutStartTime=0.800000
FadeInEndTime=0.240000
MaxParticles=7
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=16.000000,Max=16.000000),Y=(Min=16.000000,Max=16.000000),Z=(Min=16.000000,Max=16.000000))
DrawStyle=PTDS_AlphaBlend
Texture=Texture'EpicParticles.Smoke.Smokepuff'
LifetimeRange=(Min=2.000000,Max=2.000000)
SpawnOnTriggerRange=(Min=7.000000,Max=7.000000)
SpawnOnTriggerPPS=7.000000
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SniperRifleMuzFlash.SpriteEmitter14'
Begin Object Class=SpriteEmitter Name=SpriteEmitter12
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.800000,Max=0.800000),Z=(Min=0.400000,Max=0.400000))
Opacity=0.500000
FadeOutStartTime=0.110550
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.500000,Max=0.500000))
SizeScale(0)=(RelativeTime=0.280000,RelativeSize=2.000000)
StartSizeRange=(X=(Min=20.000000,Max=20.000000),Y=(Min=20.000000,Max=20.000000),Z=(Min=20.000000,Max=20.000000))
Texture=Texture'XEffects.Skins.MuzFlashFlak_t'
LifetimeRange=(Min=0.201000,Max=0.201000)
SpawnOnTriggerRange=(Min=1.000000,Max=1.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SniperRifleMuzFlash.SpriteEmitter12'
Begin Object Class=SpriteEmitter Name=SpriteEmitter13
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
TriggerDisabled=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.700000,Max=0.700000),Z=(Min=0.300000,Max=0.300000))
Opacity=0.600000
FadeOutStartTime=0.110550
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Min=0.300000,Max=0.300000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=2.000000)
StartSizeRange=(X=(Min=80.000000,Max=80.000000),Y=(Min=80.000000,Max=80.000000),Z=(Min=80.000000,Max=80.000000))
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=0.201000,Max=0.201000)
SpawnOnTriggerRange=(Min=1.000000,Max=1.000000)
SpawnOnTriggerPPS=50000.000000
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SniperRifleMuzFlash.SpriteEmitter13'
bNoDelete=False
bHardAttach=True
}

View File

@@ -0,0 +1,15 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_SniperTracerTrail extends TransTrail;
defaultproperties
{
mLifeRange(0)=0.250000
mLifeRange(1)=0.250000
mColorRange(0)=(B=10,G=10,R=180)
mColorRange(1)=(B=10,G=10,R=180)
}

View File

@@ -0,0 +1,13 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_SniperTracerTrailBlue extends FX_SniperTracerTrail;
defaultproperties
{
mColorRange(0)=(B=180,R=10)
mColorRange(1)=(B=180,R=10)
}

View File

@@ -0,0 +1,56 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_SniperWallHitEffect extends SniperWallHitEffect;
simulated function SpawnEffects()
{
local rotator ReverseRot;
local PlayerController PC;
local vector Dir, LinePos, LineDir;
local bool bViewed;
PlaySound(ImpactSounds[Rand(6)],, 2.5*TransientSoundVolume,,200);
PC = Level.GetLocalPlayerController();
if ( (PC != None) && (PC.ViewTarget != None) && (VSize(PC.Viewtarget.Location - Location) < 3000*PC.FOVBias) )
{
Spawn(class'LongBulletDecal');
bViewed = true;
}
if ( !PhysicsVolume.bWaterVolume )
{
ReverseRot = rotator(-1 * vector(Rotation));
if ( bViewed )
Spawn(class'pclImpactSmoke',,,,ReverseRot);
Spawn(class'SmallExplosion',,,,ReverseRot);
Spawn(class'WallSparks',,,,ReverseRot);
}
if ( FireStart != vect(0,0,0) )
{
// see if local player controller near bullet, but missed
if ( (PC != None) && (PC.Pawn != None) )
{
Dir = Normal(Location - FireStart);
LinePos = (FireStart + (Dir dot (PC.Pawn.Location - FireStart)) * Dir);
LineDir = PC.Pawn.Location - LinePos;
if ( VSize(LineDir) < 150 )
{
SetLocation(LinePos);
if ( FRand() < 0.5 )
PlaySound(sound'Impact3Snd',,,,80);
else
PlaySound(sound'Impact7Snd',,,,80);
}
}
}
}
defaultproperties
{
}

View File

@@ -0,0 +1,8 @@
class FX_SuperShockMuzFlash extends ShockMuzFlash;
#exec OBJ LOAD FILE=XEffectMat.utx
defaultproperties
{
Skins(0)=Texture'UT2341Weapons_Tex.SuperShock.SuperShockSparkle'
}

View File

@@ -0,0 +1,6 @@
class FX_SuperShockMuzFlash3rd extends ShockMuzFlash3rd;
defaultproperties
{
Skins(0)=Texture'UT2341Weapons_Tex.SuperShock.SuperShockSparkle'
}

View File

@@ -0,0 +1,60 @@
// xEmitter version
class FX_SuperShockRifleBeamEffect extends ShockBeamEffect;
simulated function SpawnImpactEffects(rotator HitRot, vector EffectLoc)
{
//Spawn(class'ShockImpactFlare',,, EffectLoc, HitRot);
//Spawn(class'ShockImpactRing',,, EffectLoc, HitRot);
//Spawn(class'ShockImpactScorch',,, EffectLoc, Rotator(-HitNormal));
//Spawn(class'ShockExplosionCore',,, EffectLoc+HitNormal*8, HitRot);
Spawn(class'FX_SuperShockRifleImpact',,, EffectLoc, HitRot);
}
simulated function SpawnEffects()
{
local ShockBeamCoil Coil;
local xWeaponAttachment Attachment;
if (Instigator != None)
{
if ( Instigator.IsFirstPerson() )
{
if ( (Instigator.Weapon != None) && (Instigator.Weapon.Instigator == Instigator) )
SetLocation(Instigator.Weapon.GetEffectStart());
else
SetLocation(Instigator.Location);
log("Attempting to spawn MuzFlash");
Spawn(MuzFlashClass,,, Location);
}
else
{
Attachment = xPawn(Instigator).WeaponAttachment;
if (Attachment != None && (Level.TimeSeconds - Attachment.LastRenderTime) < 1)
SetLocation(Attachment.GetTipLocation());
else
SetLocation(Instigator.Location + Instigator.EyeHeight*Vect(0,0,1) + Normal(mSpawnVecA - Instigator.Location) * 25.0);
log("Attempting to spawn MuzFlash3");
Spawn(MuzFlash3Class);
}
}
if ( EffectIsRelevant(mSpawnVecA + HitNormal*2,false) && (HitNormal != Vect(0,0,0)) )
SpawnImpactEffects(Rotator(HitNormal),mSpawnVecA + HitNormal*2);
if ( (!Level.bDropDetail && (Level.DetailMode != DM_Low) && (VSize(Location - mSpawnVecA) > 40) && !Level.GetLocalPlayerController().BeyondViewDistance(Location,0))
|| ((Instigator != None) && Instigator.IsFirstPerson()) )
{
Coil = Spawn(CoilClass,,, Location, Rotation);
if (Coil != None)
Coil.mSpawnVecA = mSpawnVecA;
}
}
defaultproperties
{
CoilClass=Class'XEffects.ShockBeamCoilB'
MuzFlashClass=Class'UT2341WeaponsReducedv1a.FX_SuperShockMuzFlash'
MuzFlash3Class=Class'UT2341WeaponsReducedv1a.FX_SuperShockMuzFlash3rd'
Texture=Texture'UT2341Weapons_Tex.SuperShock.SuperShockBeamTex'
Skins(0)=Texture'UT2341Weapons_Tex.SuperShock.SuperShockBeamTex'
}

View File

@@ -0,0 +1,75 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_SuperShockRifleBeamMuzFlash extends ShockBeamMuzFlash;
/*
Begin Object Class=SpriteEmitter Name=SpriteEmitter22
FadeOut=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.300000,Max=0.300000),Y=(Min=0.700000,Max=0.700000))
FadeOutStartTime=0.060000
MaxParticles=1
Name="ShockMuzzle"
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=6.000000,Max=6.000000),Y=(Min=6.000000,Max=6.000000),Z=(Min=6.000000,Max=6.000000))
Texture=Texture'XEffectMat.Shock.ShockComboFlash'
LifetimeRange=(Min=0.400000,Max=0.400000)
End Object
Emitters(0)=SpriteEmitter'SpriteEmitter22'
Begin Object Class=SpriteEmitter Name=SpriteEmitter23
FadeOut=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.600000,Max=0.600000),Y=(Min=0.800000,Max=0.800000))
Opacity=0.800000
FadeOutStartTime=0.060000
MaxParticles=1
Name="ShockFlare"
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=12.000000,Max=12.000000),Y=(Min=12.000000,Max=12.000000),Z=(Min=12.000000,Max=12.000000))
Texture=Texture'EpicParticles.Flares.BurnFlare1'
LifetimeRange=(Min=0.400000,Max=0.400000)
End Object
Emitters(1)=SpriteEmitter'SpriteEmitter23'
Begin Object Class=SpriteEmitter Name=SpriteEmitter24
FadeOut=True
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.700000,Max=0.700000),Y=(Min=0.600000,Max=0.600000))
Opacity=0.590000
FadeOutStartTime=0.060000
MaxParticles=1
Name="SpriteEmitter24"
SpinsPerSecondRange=(X=(Max=0.010000))
StartSpinRange=(X=(Max=0.700000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.000000)
StartSizeRange=(X=(Min=16.000000,Max=16.000000),Y=(Min=16.000000,Max=16.000000),Z=(Min=16.000000,Max=16.000000))
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar2'
LifetimeRange=(Min=0.400000,Max=0.400000)
End Object
Emitters(2)=SpriteEmitter'SpriteEmitter24'
*/
defaultproperties
{
Skins(0)=FinalBlend'UT2341Weapons_Tex.SuperShock.SuperShockFlashFinal'
}

View File

@@ -0,0 +1,281 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_SuperShockRifleImpact extends Emitter;
defaultproperties
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter27
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=-1500.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.400000,Max=0.400000),Z=(Min=0.000000,Max=0.000000))
FadeOutStartTime=0.800000
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=0.100000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=12.000000,Max=12.000000),Y=(Min=12.000000,Max=12.000000),Z=(Min=12.000000,Max=12.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=2.000000,Max=2.000000)
End Object
Emitters(0)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.SpriteEmitter27'
Begin Object Class=SpriteEmitter Name=SpriteEmitter28
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-1500.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.400000,Max=0.400000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.860000
FadeOutStartTime=0.800000
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=0.140000,RelativeSize=0.100000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=18.000000,Max=18.000000),Y=(Min=18.000000,Max=18.000000),Z=(Min=18.000000,Max=18.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=2.000000,Max=2.000000)
StartVelocityRange=(X=(Min=-400.000000,Max=700.000000),Y=(Min=-400.000000,Max=400.000000),Z=(Min=-300.000000,Max=400.000000))
End Object
Emitters(1)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.SpriteEmitter28'
Begin Object Class=SpriteEmitter Name=SpriteEmitter29
UseDirectionAs=PTDU_Normal
ProjectionNormal=(X=1.000000,Z=0.000000)
FadeOut=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.400000,Max=0.400000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.490000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.200000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=30.000000,Max=30.000000),Z=(Min=30.000000,Max=30.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.AirBlast'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(2)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.SpriteEmitter29'
Begin Object Class=SpriteEmitter Name=SpriteEmitter31
UseDirectionAs=PTDU_Normal
ProjectionNormal=(X=1.000000,Z=0.000000)
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.400000,Max=0.400000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.880000
FadeOutStartTime=0.600000
FadeInEndTime=0.060000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.200000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=50.000000,Max=50.000000),Y=(Min=50.000000,Max=50.000000),Z=(Min=50.000000,Max=50.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.HardSpot'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.SpriteEmitter31'
Begin Object Class=SpriteEmitter Name=SpriteEmitter32
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.400000,Max=0.400000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.790000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartLocationRange=(Z=(Min=10.000000,Max=10.000000))
SpinsPerSecondRange=(X=(Min=0.500000,Max=0.900000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=20.000000,Max=20.000000),Y=(Min=20.000000,Max=20.000000),Z=(Min=20.000000,Max=20.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.SpriteEmitter32'
Begin Object Class=SpriteEmitter Name=SpriteEmitter33
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.400000,Max=0.400000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.790000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartLocationRange=(Z=(Min=10.000000,Max=10.000000))
SpinsPerSecondRange=(X=(Min=0.900000,Max=2.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=20.000000,Max=20.000000),Y=(Min=20.000000,Max=20.000000),Z=(Min=20.000000,Max=20.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(5)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.SpriteEmitter33'
Begin Object Class=SpriteEmitter Name=SpriteEmitter34
UseDirectionAs=PTDU_Normal
ProjectionNormal=(X=1.000000,Z=0.000000)
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.400000,Max=0.400000),Z=(Min=0.000000,Max=0.000000))
Opacity=0.790000
FadeOutStartTime=0.600000
FadeInEndTime=0.060000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.200000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=74.000000,Max=74.000000),Y=(Min=74.000000,Max=74.000000),Z=(Min=74.000000,Max=74.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar2'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(6)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.SpriteEmitter34'
Begin Object Class=SpriteEmitter Name=SpriteEmitter35
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.600000,Max=0.600000),Z=(Min=0.200000,Max=0.200000))
Opacity=0.490000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
StartLocationRange=(Z=(Min=20.000000,Max=20.000000))
SpinsPerSecondRange=(X=(Min=0.100000,Max=0.100000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=20.000000,Max=20.000000),Y=(Min=20.000000,Max=20.000000),Z=(Min=20.000000,Max=20.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'EpicParticles.Flares.FlashFlare1'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(7)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.SpriteEmitter35'
Begin Object Class=SpriteEmitter Name=SpriteEmitter41
UseDirectionAs=PTDU_Normal
ProjectionNormal=(X=1.000000,Z=0.000000)
FadeOut=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.600000,Max=0.600000),Z=(Min=0.200000,Max=0.200000))
Opacity=0.370000
FadeOutStartTime=0.600000
CoordinateSystem=PTCS_Relative
MaxParticles=1
SpinsPerSecondRange=(X=(Max=0.200000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=34.000000,Max=34.000000),Y=(Min=34.000000,Max=34.000000),Z=(Min=34.000000,Max=34.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.AirBlast'
LifetimeRange=(Min=1.000000,Max=1.000000)
End Object
Emitters(8)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.SpriteEmitter41'
Begin Object Class=BeamEmitter Name=BeamEmitter6
BeamDistanceRange=(Min=200.000000,Max=200.000000)
DetermineEndPointBy=PTEP_Distance
LowFrequencyNoiseRange=(X=(Max=10.000000),Y=(Max=10.000000),Z=(Max=10.000000))
LowFrequencyPoints=2
HighFrequencyNoiseRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=-10.000000,Max=10.000000))
HFScaleFactors(0)=(FrequencyScale=(X=0.400000,Y=0.400000,Z=0.400000),RelativeLength=0.280000)
UseHighFrequencyScale=True
BranchProbability=(Min=1.000000,Max=1.000000)
BranchSpawnAmountRange=(Min=5.000000,Max=5.000000)
LinkupLifetime=True
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.600000,Max=0.600000),Z=(Min=0.200000,Max=0.200000))
Opacity=0.380000
FadeOutStartTime=2.000000
FadeInEndTime=2.000000
CoordinateSystem=PTCS_Relative
StartLocationShape=PTLS_Sphere
SphereRadiusRange=(Max=25.000000)
SizeScale(0)=(RelativeTime=0.520000,RelativeSize=-1.000000)
SizeScaleRepeats=1.000000
StartSizeRange=(X=(Min=10.000000,Max=10.000000),Y=(Min=10.000000,Max=10.000000),Z=(Min=10.000000,Max=10.000000))
InitialParticlesPerSecond=1000.000000
Texture=Texture'AW-2004Particles.Energy.BeamBolt1a'
LifetimeRange=(Min=0.500000,Max=0.750000)
StartVelocityRange=(X=(Min=-20.000000,Max=20.000000),Y=(Min=-20.000000,Max=20.000000),Z=(Min=-20.000000,Max=20.000000))
End Object
Emitters(9)=BeamEmitter'UT2341WeaponsReducedv1a.FX_SuperShockRifleImpact.BeamEmitter6'
bNoDelete=False
}

View File

@@ -0,0 +1,42 @@
/*************************************************************
*
*
*
*************************************************************/
class FX_SuperShockRifleMuzFlash3rd extends ShockProjMuzFlash3rd;
/*
defaultproperties
{
mNumPerFlash=1
mParticleType=PT_Mesh
mStartParticles=0
mMaxParticles=6
mLifeRange(0)=0.130000
mLifeRange(1)=0.130000
mRegenRange(0)=0.000000
mRegenRange(1)=0.000000
mSpawnVecB=(Z=0.000000)
mSpeedRange(0)=0.000000
mSpeedRange(1)=0.000000
mPosRelative=True
mAirResistance=0.000000
mRandOrient=True
mSizeRange(0)=0.350000
mSizeRange(1)=0.400000
mGrowthRate=3.200000
mColorRange(0)=(R=50)
mColorRange(1)=(R=50)
mAttenKa=0.000000
mRandTextures=True
mMeshNodes(0)=StaticMesh'XEffects.MinigunFlashMesh'
Skins(0)=FinalBlend'XGameShaders.WeaponShaders.ShockMuzFlash3rdFinal'
Style=STY_Additive
}
*/
defaultproperties
{
Skins(0)=FinalBlend'UT2341Weapons_Tex.SuperShock.SuperShockFlash3rdFinal'
}

View File

@@ -0,0 +1,190 @@
class FX_UT2341WarpEffectBlue extends Emitter;
function PostBeginPlay()
{
If ( Role == ROLE_Authority )
Instigator = Pawn(Owner);
if ( Level.NetMode == NM_DedicatedServer )
LifeSpan = 0.15;
Super.PostBeginPlay();
}
simulated function PostNetBeginPlay()
{
local PlayerController PC;
local float Dist;
if ( Instigator != None )
{
SetLocation(Instigator.Location);
SetBase(Instigator);
if ( (Level.NetMode == NM_Standalone) || (Level.NetMode == NM_Client) )
{
PC = Level.GetLocalPlayerController();
if ( (PC != None) && (PC.ViewTarget != None) )
{
Dist = VSize(PC.ViewTarget.Location - Location);
if ( Dist > PC.Region.Zone.DistanceFogEnd )
LifeSpan = 0.01;
}
}
}
PlaySound(Sound'UT2341Weapons_Sounds.General.Resp2a',SLOT_None);
Super.PostNetBeginPlay();
}
defaultproperties
{
Begin Object Class=MeshEmitter Name=MeshEmitter0
StaticMesh=StaticMesh'XEffects.TeleRing'
RenderTwoSided=True
UseParticleColor=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
Acceleration=(Z=12.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.080000,Max=0.080000),Y=(Min=0.190000,Max=0.190000))
FadeOutStartTime=0.200000
MaxParticles=3
SpinCCWorCW=(Y=0.000000,Z=0.000000)
SpinsPerSecondRange=(X=(Min=1.000000,Max=2.000000),Z=(Min=0.010000,Max=0.020000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=1.100000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=1.200000)
StartSizeRange=(X=(Min=0.800000,Max=0.800000),Y=(Min=0.800000,Max=0.800000),Z=(Min=0.800000,Max=0.800000))
InitialParticlesPerSecond=5000.000000
LifetimeRange=(Min=1.250000,Max=1.250000)
StartVelocityRange=(Z=(Min=-10.000000,Max=-10.000000))
End Object
Emitters(0)=MeshEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectBlue.MeshEmitter0'
Begin Object Class=MeshEmitter Name=MeshEmitter1
StaticMesh=StaticMesh'XEffects.TeleRing'
RenderTwoSided=True
UseParticleColor=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
Acceleration=(Z=12.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.080000,Max=0.080000),Y=(Min=0.290000,Max=0.290000))
FadeOutStartTime=0.200000
MaxParticles=3
StartLocationRange=(Z=(Min=40.000000,Max=40.000000))
SpinCCWorCW=(Y=0.000000,Z=0.000000)
SpinsPerSecondRange=(X=(Min=1.000000,Max=2.000000),Z=(Min=0.010000,Max=0.020000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=1.100000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=1.200000)
StartSizeRange=(X=(Min=0.750000,Max=0.750000),Y=(Min=0.750000,Max=0.750000),Z=(Min=0.750000,Max=0.750000))
InitialParticlesPerSecond=5000.000000
LifetimeRange=(Min=1.250000,Max=1.250000)
InitialDelayRange=(Max=0.100000)
StartVelocityRange=(Z=(Min=-10.000000,Max=-10.000000))
End Object
Emitters(1)=MeshEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectBlue.MeshEmitter1'
Begin Object Class=MeshEmitter Name=MeshEmitter2
StaticMesh=StaticMesh'XEffects.TeleRing'
RenderTwoSided=True
UseParticleColor=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
Acceleration=(Z=12.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.180000,Max=0.180000),Y=(Min=0.300000,Max=0.300000))
FadeOutStartTime=0.200000
MaxParticles=3
StartLocationRange=(Z=(Min=-40.000000,Max=-40.000000))
SpinCCWorCW=(Y=0.000000,Z=0.000000)
SpinsPerSecondRange=(X=(Min=1.000000,Max=2.000000),Z=(Min=0.010000,Max=0.020000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=1.050000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=1.200000)
StartSizeRange=(X=(Min=0.750000,Max=0.750000),Y=(Min=0.750000,Max=0.750000),Z=(Min=0.750000,Max=0.750000))
InitialParticlesPerSecond=5000.000000
LifetimeRange=(Min=1.250000,Max=1.250000)
InitialDelayRange=(Max=0.100000)
StartVelocityRange=(Z=(Min=-10.000000,Max=-10.000000))
End Object
Emitters(2)=MeshEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectBlue.MeshEmitter2'
Begin Object Class=SpriteEmitter Name=SpriteEmitter2
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=10.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.800000
FadeOutFactor=(Z=0.000000)
FadeOutStartTime=1.360000
MaxParticles=15
StartLocationRange=(X=(Min=-20.100000,Max=20.100000),Y=(Min=-20.000000,Max=20.000000),Z=(Min=-60.000000,Max=60.000000))
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=0.100000)
StartSizeRange=(X=(Min=16.000000,Max=16.000000),Y=(Min=16.000000,Max=16.000000),Z=(Min=16.000000,Max=16.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.300000,Max=1.300000)
StartVelocityRange=(X=(Min=-30.000000,Max=40.000000),Y=(Min=-60.000000,Max=60.000000),Z=(Min=-20.000000,Max=20.000000))
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectBlue.SpriteEmitter2'
Begin Object Class=SpriteEmitter Name=SpriteEmitter3
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=10.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(X=(Min=0.400000,Max=0.400000),Y=(Min=0.600000,Max=0.600000))
Opacity=0.800000
FadeOutStartTime=0.400000
MaxParticles=15
StartLocationRange=(X=(Min=-20.000000,Max=20.000000),Y=(Min=-30.000000,Max=30.000000),Z=(Min=-60.000000,Max=60.000000))
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=0.100000)
StartSizeRange=(X=(Min=21.000000,Max=21.000000),Y=(Min=21.000000,Max=21.000000),Z=(Min=21.000000,Max=21.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.600000,Max=1.600000)
InitialDelayRange=(Max=0.100000)
StartVelocityRange=(X=(Min=-30.000000,Max=40.000000),Y=(Min=-60.000000,Max=60.000000),Z=(Min=-20.000000,Max=20.000000))
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectBlue.SpriteEmitter3'
AutoDestroy=True
bNoDelete=False
bNetTemporary=True
bReplicateInstigator=True
RemoteRole=ROLE_SimulatedProxy
}

View File

@@ -0,0 +1,194 @@
class FX_UT2341WarpEffectRed extends Emitter;
function PostBeginPlay()
{
If ( Role == ROLE_Authority )
Instigator = Pawn(Owner);
if ( Level.NetMode == NM_DedicatedServer )
LifeSpan = 0.15;
Super.PostBeginPlay();
}
simulated function PostNetBeginPlay()
{
local PlayerController PC;
local float Dist;
if ( Instigator != None )
{
SetLocation(Instigator.Location);
SetBase(Instigator);
if ( (Level.NetMode == NM_Standalone) || (Level.NetMode == NM_Client) )
{
PC = Level.GetLocalPlayerController();
if ( (PC != None) && (PC.ViewTarget != None) )
{
Dist = VSize(PC.ViewTarget.Location - Location);
if ( Dist > PC.Region.Zone.DistanceFogEnd )
LifeSpan = 0.01;
}
}
}
PlaySound(Sound'UT2341Weapons_Sounds.General.Resp2a',SLOT_None);
Super.PostNetBeginPlay();
}
defaultproperties
{
Begin Object Class=MeshEmitter Name=MeshEmitter0
StaticMesh=StaticMesh'XEffects.TeleRing'
RenderTwoSided=True
UseParticleColor=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
Acceleration=(Z=12.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.190000,Max=0.190000),Z=(Min=0.080000,Max=0.080000))
FadeOutStartTime=0.800000
MaxParticles=3
SpinCCWorCW=(Y=0.000000,Z=0.000000)
SpinsPerSecondRange=(X=(Min=1.000000,Max=2.000000),Z=(Min=0.010000,Max=0.020000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=1.100000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=1.200000)
StartSizeRange=(X=(Min=0.800000,Max=0.800000),Y=(Min=0.800000,Max=0.800000),Z=(Min=0.800000,Max=0.800000))
InitialParticlesPerSecond=5000.000000
LifetimeRange=(Min=1.250000,Max=1.250000)
StartVelocityRange=(Z=(Min=-10.000000,Max=-10.000000))
End Object
Emitters(0)=MeshEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectRed.MeshEmitter0'
Begin Object Class=MeshEmitter Name=MeshEmitter1
StaticMesh=StaticMesh'XEffects.TeleRing'
RenderTwoSided=True
UseParticleColor=True
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
Acceleration=(Z=12.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.190000,Max=0.190000),Z=(Min=0.080000,Max=0.080000))
FadeOutStartTime=1.000000
FadeInEndTime=0.120000
MaxParticles=3
StartLocationRange=(Z=(Min=40.000000,Max=40.000000))
SpinCCWorCW=(Y=0.000000,Z=0.000000)
SpinsPerSecondRange=(X=(Min=1.000000,Max=2.000000),Z=(Min=0.010000,Max=0.020000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=1.100000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=1.200000)
StartSizeRange=(X=(Min=0.750000,Max=0.750000),Y=(Min=0.750000,Max=0.750000),Z=(Min=0.750000,Max=0.750000))
InitialParticlesPerSecond=5000.000000
LifetimeRange=(Min=1.250000,Max=1.250000)
InitialDelayRange=(Max=0.100000)
StartVelocityRange=(Z=(Min=-10.000000,Max=-10.000000))
End Object
Emitters(1)=MeshEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectRed.MeshEmitter1'
Begin Object Class=MeshEmitter Name=MeshEmitter2
StaticMesh=StaticMesh'XEffects.TeleRing'
RenderTwoSided=True
UseParticleColor=True
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
AutomaticInitialSpawning=False
Acceleration=(Z=12.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.190000,Max=0.190000),Z=(Min=0.080000,Max=0.080000))
FadeOutStartTime=1.000000
FadeInEndTime=0.120000
MaxParticles=3
StartLocationRange=(Z=(Min=-40.000000,Max=-40.000000))
SpinCCWorCW=(Y=0.000000,Z=0.000000)
SpinsPerSecondRange=(X=(Min=1.000000,Max=2.000000),Z=(Min=0.010000,Max=0.020000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeTime=0.370000,RelativeSize=1.050000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=1.200000)
StartSizeRange=(X=(Min=0.750000,Max=0.750000),Y=(Min=0.750000,Max=0.750000),Z=(Min=0.750000,Max=0.750000))
InitialParticlesPerSecond=5000.000000
LifetimeRange=(Min=1.250000,Max=1.250000)
InitialDelayRange=(Max=0.100000)
StartVelocityRange=(Z=(Min=-10.000000,Max=-10.000000))
End Object
Emitters(2)=MeshEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectRed.MeshEmitter2'
Begin Object Class=SpriteEmitter Name=SpriteEmitter2
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=10.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
Opacity=0.800000
FadeOutFactor=(Z=0.000000)
FadeOutStartTime=1.360000
MaxParticles=15
StartLocationRange=(X=(Min=-20.100000,Max=20.100000),Y=(Min=-20.000000,Max=20.000000),Z=(Min=-60.000000,Max=60.000000))
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=0.100000)
StartSizeRange=(X=(Min=16.000000,Max=16.000000),Y=(Min=16.000000,Max=16.000000),Z=(Min=16.000000,Max=16.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.300000,Max=1.300000)
StartVelocityRange=(X=(Min=-30.000000,Max=40.000000),Y=(Min=-60.000000,Max=60.000000),Z=(Min=-20.000000,Max=20.000000))
End Object
Emitters(3)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectRed.SpriteEmitter2'
Begin Object Class=SpriteEmitter Name=SpriteEmitter3
UseCollision=True
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(X=10.000000)
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
ColorMultiplierRange=(Y=(Min=0.600000,Max=0.600000),Z=(Min=0.400000,Max=0.400000))
Opacity=0.800000
FadeOutStartTime=0.400000
MaxParticles=15
StartLocationRange=(X=(Min=-20.000000,Max=20.000000),Y=(Min=-30.000000,Max=30.000000),Z=(Min=-60.000000,Max=60.000000))
SpinCCWorCW=(X=0.750000)
SpinsPerSecondRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
StartSpinRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(Max=1.000000))
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=0.100000)
StartSizeRange=(X=(Min=21.000000,Max=21.000000),Y=(Min=21.000000,Max=21.000000),Z=(Min=21.000000,Max=21.000000))
InitialParticlesPerSecond=5000.000000
Texture=Texture'AW-2004Particles.Weapons.PlasmaStar'
LifetimeRange=(Min=1.600000,Max=1.600000)
InitialDelayRange=(Max=0.100000)
StartVelocityRange=(X=(Min=-30.000000,Max=40.000000),Y=(Min=-60.000000,Max=60.000000),Z=(Min=-20.000000,Max=20.000000))
End Object
Emitters(4)=SpriteEmitter'UT2341WeaponsReducedv1a.FX_UT2341WarpEffectRed.SpriteEmitter3'
AutoDestroy=True
bNoDelete=False
bNetTemporary=True
bReplicateInstigator=True
RemoteRole=ROLE_SimulatedProxy
}

View File

@@ -0,0 +1,12 @@
class Mut_UT2341Instagib extends MutInstaGib;
defaultproperties
{
WeaponName="UT2341SuperShockRifle"
AmmoName="UT2341SuperShockAmmo"
WeaponString="UT2341WeaponsReducedv1a.UT2341SuperShockRifle"
AmmoString="UT2341WeaponsReducedv1a.UT2341SuperShockAmmo"
DefaultWeaponName="UT2341WeaponsReducedv1a.UT2341SuperShockRifle"
FriendlyName="UT2341: Instagib"
Description="Instagib, UT2341-style."
}

View File

@@ -0,0 +1,371 @@
class Mut_UT2341Replacement extends Mutator;
var config bool bReplaceAssaultRifle;
var config bool bReplaceBioRifle;
var config bool bReplaceONSMineLayer;
var config bool bReplaceShockRifle;
var config bool bReplaceLinkGun;
var config bool bReplaceMinigun;
var config bool bReplaceFlakCannon;
var config bool bReplaceONSGrenadeLauncer;
var config bool bReplaceRocketLauncher;
var config bool bReplaceSniperRifle;
var config bool bReplaceClassicSniperRifle;
var config bool bReplaceRedeemer;
var config bool bReplacePainter;
var config bool bReplaceStartWeapons;
simulated function PreBeginPlay()
{
local xPickupBase P;
Super.PreBeginPlay();
//Apparently CheckReplacement doesn't work on the client side
foreach AllActors (class'xPickupBase', P)
{
P.bHidden = True;
P.myEmitter.bHidden = True;
P.SetDrawType(DT_None);
P.SetStaticMesh(None);
}
}
function string GetInventoryClassOverride(string InventoryClassName)
{
switch(InventoryClassName)
{
case "XWeapons.AssaultRifle":
if(bReplaceAssaultRifle)
return "UT2341WeaponsReducedv1a.UT2341Ripper";
break;
case "XWeapons.BioRifle":
if(bReplaceBioRifle)
return "UT2341WeaponsReducedv1a.UT2341BioRifle";
break;
case "XWeapons.ONSMineLayer":
if(bReplaceONSMineLayer)
return "UT2341WeaponsReducedv1a.UT2341Ripper";
break;
case "XWeapons.ShockRifle":
if(bReplaceShockRifle)
return "UT2341WeaponsReducedv1a.UT2341ShockRifle";
break;
case "XWeapons.LinkGun":
if(bReplaceLinkGun)
return "UT2341WeaponsReducedv1a.UT2341PulseGun";
break;
case "XWeapons.Minigun":
if(bReplaceMinigun)
return "UT2341WeaponsReducedv1a.UT2341Minigun";
break;
case "XWeapons.FlakCannon":
if(bReplaceFlakCannon)
return "UT2341WeaponsReducedv1a.UT2341FlakCannon";
break;
case "XWeapons.ONSGrenadeLauncher":
if(bReplaceONSGrenadeLauncer)
return "UT2341WeaponsReducedv1a.UT2341Ripper";
break;
case "XWeapons.RocketLauncher":
if(bReplaceRocketLauncher)
return "UT2341WeaponsReducedv1a.UT2341RocketLauncher";
break;
case "XWeapons.SniperRifle":
if(bReplaceSniperRifle)
return "UT2341WeaponsReducedv1a.UT2341SniperRifle";
break;
case "XWeapons.ClassicSniperRifle":
if(bReplaceClassicSniperRifle)
return "UT2341WeaponsReducedv1a.UT2341SniperRifle";
break;
case "XWeapons.Redeemer":
if(bReplaceRedeemer)
return "UT2341WeaponsReducedv1a.UT2341Redeemer";
break;
case "XWeapons.Painter":
if(bReplacePainter)
return "UT2341WeaponsReducedv1a.UT2341Redeemer";
break;
case "XWeapons.ONSPainter":
if(bReplacePainter)
return "UT2341WeaponsReducedv1a.UT2341Redeemer";
break;
}
if ( NextMutator != None )
return NextMutator.GetInventoryClassOverride(InventoryClassName);
return InventoryClassName;
}
function bool CheckReplacement( Actor Other, out byte bSuperRelevant )
{
local int i;
local WeaponLocker L;
local PhysicsVolume PV;
bSuperRelevant = 0;
PV = PhysicsVolume(Other);
if ( PV != None )
{
PV.bAlwaysRelevant = true;
PV.RemoteRole = ROLE_DumbProxy;
return true;
}
if (xPawn(Other) != None)
{
if(bReplaceStartWeapons)
{
xPawn(Other).RequiredEquipment[0] = "UT2341WeaponsReducedv1a.UT2341Enforcer";
xPawn(Other).RequiredEquipment[1] = "UT2341WeaponsReducedv1a.UT2341Hammer";
if (xLastManStandingGame(Level.Game) != None)
xPawn(Other).RequiredEquipment[2] = "UT2341WeaponsReducedv1a.UT2341Ripper";
}
return true;
}
else if (xPickupBase(Other) != None)
{
Other.bHidden = True;
Other.SetDrawType(DT_None);
Other.SetStaticMesh(None);
if ( xWeaponBase(Other) != None )
{
switch(xWeaponBase(Other).WeaponType)
{
case class'AssaultRifle':
if(bReplaceAssaultRifle)
xWeaponBase(Other).WeaponType = class'UT2341Ripper';
break;
case class'BioRifle':
if(bReplaceBioRifle)
xWeaponBase(Other).WeaponType = class'UT2341BioRifle';
break;
case class'ONSMineLayer':
if(bReplaceONSMineLayer)
xWeaponBase(Other).WeaponType = class'UT2341Ripper';
break;
case class'ShockRifle':
if(bReplaceShockRifle)
xWeaponBase(Other).WeaponType = class'UT2341ShockRifle';
break;
case class'LinkGun':
if(bReplaceLinkGun)
xWeaponBase(Other).WeaponType = class'UT2341PulseGun';
break;
case class'Minigun':
if(bReplaceMinigun)
xWeaponBase(Other).WeaponType = class'UT2341Minigun';
break;
case class'FlakCannon':
if(bReplaceFlakCannon)
xWeaponBase(Other).WeaponType = class'UT2341FlakCannon';
break;
case class'ONSGrenadeLauncher':
if(bReplaceONSGrenadeLauncer)
xWeaponBase(Other).WeaponType = class'UT2341Ripper';
break;
case class'RocketLauncher':
if(bReplaceRocketLauncher)
xWeaponBase(Other).WeaponType = class'UT2341RocketLauncher';
break;
case class'SniperRifle':
if(bReplaceSniperRifle)
xWeaponBase(Other).WeaponType = class'UT2341SniperRifle';
break;
case class'ClassicSniperRifle':
if(bReplaceClassicSniperRifle)
xWeaponBase(Other).WeaponType = class'UT2341SniperRifle';
break;
case class'Redeemer':
if(bReplaceRedeemer)
xWeaponBase(Other).WeaponType = class'UT2341Redeemer';
break;
case class'Painter':
if(bReplacePainter)
xWeaponBase(Other).WeaponType = class'UT2341Redeemer';
break;
case class'ONSPainter':
if(bReplacePainter)
xWeaponBase(Other).WeaponType = class'UT2341Redeemer';
break;
}
}
return true;
}
else if (Pickup(Other) != None)
{
if ( WeaponLocker(Other) != None )
{
L = WeaponLocker(Other);
for (i = 0; i < L.Weapons.Length; i++)
{
switch(L.Weapons[i].WeaponClass)
{
case class'BioRifle':
if(bReplaceAssaultRifle)
L.Weapons[i].WeaponClass = class'UT2341BioRifle';
break;
case class'AssaultRifle':
if(bReplaceBioRifle)
L.Weapons[i].WeaponClass = class'UT2341Ripper';
break;
case class'ONSMineLayer':
if(bReplaceONSMineLayer)
L.Weapons[i].WeaponClass = class'UT2341Ripper';
break;
case class'ShockRifle':
if(bReplaceShockRifle)
L.Weapons[i].WeaponClass = class'UT2341ShockRifle';
break;
case class'LinkGun':
if(bReplaceLinkGun)
L.Weapons[i].WeaponClass = class'UT2341PulseGun';
break;
case class'Minigun':
if(bReplaceMinigun)
L.Weapons[i].WeaponClass = class'UT2341Minigun';
break;
case class'FlakCannon':
if(bReplaceFlakCannon)
L.Weapons[i].WeaponClass = class'UT2341FlakCannon';
break;
case class'RocketLauncher':
if(bReplaceRocketLauncher)
L.Weapons[i].WeaponClass = class'UT2341RocketLauncher';
break;
case class'SniperRifle':
if(bReplaceSniperRifle)
L.Weapons[i].WeaponClass = class'UT2341SniperRifle';
break;
case class'ClassicSniperRifle':
if(bReplaceClassicSniperRifle)
L.Weapons[i].WeaponClass = class'UT2341SniperRifle';
break;
}
}
return true;
}
else if (UTAmmoPickup(Other) != None)
{
switch(UTAmmoPickup(Other).Class)
{
case class'AssaultAmmoPickup':
if(bReplaceAssaultRifle)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341RipperAmmoPickup");
break;
case class'BioAmmoPickup':
if(bReplaceBioRifle)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341BioAmmoPickup");
break;
case class'ONSMineAmmoPickup':
if(bReplaceONSMineLayer)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341RipperAmmoPickup");
break;
case class'ShockAmmoPickup':
if(bReplaceShockRifle)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341ShockRifleAmmoPickup");
break;
case class'LinkAmmoPickup':
if(bReplaceLinkGun)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341PulseAmmoPickup");
break;
case class'MinigunAmmoPickup':
if(bReplaceMinigun)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341MinigunAmmoPickup");
break;
case class'FlakAmmoPickup':
if(bReplaceFlakCannon)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341FlakAmmoPickup");
break;
case class'ONSGrenadeAmmoPickup':
if(bReplaceONSGrenadeLauncer)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341RipperAmmoPickup");
break;
case class'RocketAmmoPickup':
if(bReplaceRocketLauncher)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341RocketAmmoPickup");
break;
case class'SniperAmmoPickup':
if(bReplaceSniperRifle)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341SniperAmmoPickup");
break;
case class'ClassicSniperAmmoPickup':
if(bReplaceClassicSniperRifle)
ReplaceWith( Other, "UT2341WeaponsReducedv1a.UT2341SniperAmmoPickup");
break;
}
return true;
}
else
return true;
return false;
}
else
return true;
return false;
}
defaultproperties
{
GroupName = "Arena"
FriendlyName = "Unreal Tournament 2341"
Description = "Replaces the standard weapons with UT99 equivalents."
bNetTemporary = True
bAlwaysRelevant = True
RemoteRole = ROLE_SimulatedProxy
bReplaceAssaultRifle = True
bReplaceBioRifle = True
bReplaceONSMineLayer = True
bReplaceShockRifle = True
bReplaceLinkGun = True
bReplaceMinigun = True
bReplaceFlakCannon = True
bReplaceONSGrenadeLauncer = True
bReplaceRocketLauncher = True
bReplaceSniperRifle = True
bReplaceClassicSniperRifle = True
bReplaceRedeemer = True
bReplacePainter = True
bReplaceStartWeapons = True
}

View File

@@ -0,0 +1,13 @@
class UT2341BioAmmo extends Ammunition;
#EXEC OBJ LOAD FILE=InterfaceContent.utx
defaultproperties
{
MaxAmmo=100
InitialAmount=25
PickupClass=Class'UT2341WeaponsReducedv1a.UT2341BioAmmoPickup'
IconMaterial=Texture'HUDContent.Generic.HUD'
IconCoords=(X1=383,Y1=82,X2=412,Y2=129)
ItemName="Bio-Rifle Goop"
}

View File

@@ -0,0 +1,24 @@
class UT2341BioAmmoPickup extends UTAmmoPickup;
#exec OBJ LOAD FILE=PickupSounds.uax
function RespawnEffect()
{
spawn(class'FX_PickupRespawn');
}
defaultproperties
{
AmmoAmount=25
MaxDesireability=0.320000
InventoryType=Class'UT2341WeaponsReducedv1a.UT2341BioAmmo'
PickupMessage="You picked up some Tarydium sludge."
PickupSound=Sound'UT2341Weapons_Sounds.General.AmmoSnd'
PickupForce="FlakAmmoPickup"
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'UT2341Weapons_SM.General.UTBioAmmo'
DrawScale=0.300000
PrePivot=(Z=40.000000)
AmbientGlow=64
CollisionHeight=8.250000
}

View File

@@ -0,0 +1,40 @@
class UT2341BioAttachment extends xWeaponAttachment;
var xEmitter MuzFlash3rd;
simulated function Destroyed()
{
if (MuzFlash3rd != None)
MuzFlash3rd.Destroy();
Super.Destroyed();
}
simulated event ThirdPersonEffects()
{
local Rotator R;
if ( Level.NetMode != NM_DedicatedServer && FlashCount > 0 )
{
if (MuzFlash3rd == None)
{
MuzFlash3rd = Spawn(class'XEffects.BioMuzFlash1st');
MuzFlash3rd.bHidden = false;
AttachToBone(MuzFlash3rd, 'tip');
}
if (MuzFlash3rd != None)
{
R.Roll = Rand(65536);
SetBoneRotation('Bone_Flesh', R, 0, 1.0); //Easy to see how this mistake was made, eh?
MuzFlash3rd.mStartParticles++;
}
}
Super.ThirdPersonEffects();
}
defaultproperties
{
bHeavy=True
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTGESBioRifle3rd'
DrawScale=0.250000
}

View File

@@ -0,0 +1,152 @@
class UT2341BioChargedFire extends ProjectileFire;
var() float GoopUpRate;
var() int MaxGoopLoad;
var() int GoopLoad;
var() Sound HoldSound;
function InitEffects()
{
Super.InitEffects();
if( FlashEmitter == None )
FlashEmitter = Weapon.GetFireMode(0).FlashEmitter;
}
function DrawMuzzleFlash(Canvas Canvas)
{
if ( FlashEmitter != None )
FlashEmitter.SetRotation(Weapon.Rotation);
Super.DrawMuzzleFlash(Canvas);
}
function ModeHoldFire()
{
if ( Weapon.AmmoAmount(ThisModeNum) > 0 )
{
Super.ModeHoldFire();
GotoState('Hold');
}
}
function float MaxRange()
{
return 1500;
}
simulated function bool AllowFire()
{
return (Weapon.AmmoAmount(ThisModeNum) > 0 || GoopLoad > 0);
}
simulated function PlayStartHold()
{
Weapon.PlayAnim('FireLoop', 1.0 / (GoopUpRate*MaxGoopLoad), 0.1);
}
simulated function PlayFiring()
{
Super.PlayFiring();
Weapon.OutOfAmmo();
}
state Hold
{
simulated function BeginState()
{
GoopLoad = 0;
SetTimer(GoopUpRate, true);
Weapon.PlayOwnedSound(HoldSound,SLOT_Interact,TransientSoundVolume);
Weapon.ClientPlayForceFeedback( "BioRiflePowerUp" ); // jdf
Timer();
}
simulated function Timer()
{
if ( Weapon.AmmoAmount(ThisModeNum) > 0 )
GoopLoad++;
Weapon.ConsumeAmmo(ThisModeNum, 1);
if (GoopLoad == MaxGoopLoad || Weapon.AmmoAmount(ThisModeNum) == 0)
{
SetTimer(0.0, false);
Instigator.AmbientSound = sound'NewWeaponSounds.BioGoopLoop';
Instigator.SoundRadius = 50;
Instigator.SoundVolume = 50;
}
}
simulated function EndState()
{
if ( (Instigator != None) && (Instigator.AmbientSound == sound'NewWeaponSounds.BioGoopLoop') )
Instigator.AmbientSound = None;
Instigator.SoundRadius = Instigator.Default.SoundRadius;
Instigator.SoundVolume = Instigator.Default.SoundVolume;
StopForceFeedback( "BioRiflePowerUp" ); // jdf
}
}
function projectile SpawnProjectile(Vector Start, Rotator Dir)
{
local UT2341BioGlob Glob;
GotoState('');
if (GoopLoad == 0) return None;
Glob = Weapon.Spawn(class'UT2341BioGlob',,, Start, Dir);
if ( Glob != None )
{
Glob.Damage *= DamageAtten;
Glob.SetGoopLevel(GoopLoad);
Glob.AdjustSpeed();
}
GoopLoad = 0;
if ( Weapon.AmmoAmount(ThisModeNum) <= 0 )
Weapon.OutOfAmmo();
return Glob;
}
function StartBerserk()
{
if ( (Level.GRI != None) && (Level.GRI.WeaponBerserk > 1.0) )
return;
GoopUpRate = default.GoopUpRate*0.75;
}
function StopBerserk()
{
if ( (Level.GRI != None) && (Level.GRI.WeaponBerserk > 1.0) )
return;
GoopUpRate = default.GoopUpRate;
}
function StartSuperBerserk()
{
GoopUpRate = default.GoopUpRate/Level.GRI.WeaponBerserk;
}
defaultproperties
{
GoopUpRate=0.550000
MaxGoopLoad=10
HoldSound=Sound'UT2341Weapons_Sounds.BioRifle.GelLoad'
ProjSpawnOffset=(X=20.000000,Y=9.000000,Z=-6.000000)
bSplashDamage=True
bRecommendSplashDamage=True
bTossed=True
bFireOnRelease=True
FireEndAnim=
FireSound=Sound'UT2341Weapons_Sounds.BioRifle.GelShot'
FireForce="BioRifleFire"
FireRate=0.330000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341BioAmmo'
ShakeRotMag=(X=100.000000)
ShakeRotRate=(X=1000.000000)
ShakeRotTime=2.000000
ShakeOffsetMag=(X=-4.000000,Z=-4.000000)
ShakeOffsetRate=(X=1000.000000,Z=1000.000000)
ShakeOffsetTime=2.000000
ProjectileClass=Class'UT2341WeaponsReducedv1a.UT2341BioGlob'
BotRefireRate=0.500000
WarnTargetPct=0.800000
}

View File

@@ -0,0 +1,37 @@
class UT2341BioFire extends ProjectileFire;
function DrawMuzzleFlash(Canvas Canvas)
{
if (FlashEmitter != None)
FlashEmitter.SetRotation(Weapon.Rotation);
Super.DrawMuzzleFlash(Canvas);
}
function float MaxRange()
{
return 1500;
}
defaultproperties
{
ProjSpawnOffset=(X=20.000000,Y=9.000000,Z=-6.000000)
bSplashDamage=True
bRecommendSplashDamage=True
bTossed=True
FireLoopAnim=
FireEndAnim=
FireSound=Sound'UT2341Weapons_Sounds.BioRifle.GelShot'
FireForce="BioRifleFire"
FireRate=0.280000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341BioAmmo'
AmmoPerFire=1
ShakeRotMag=(X=70.000000)
ShakeRotRate=(X=1000.000000)
ShakeRotTime=1.800000
ShakeOffsetMag=(Z=-2.000000)
ShakeOffsetRate=(Z=1000.000000)
ShakeOffsetTime=1.800000
ProjectileClass=Class'UT2341WeaponsReducedv1a.UT2341BioGlob'
BotRefireRate=0.800000
FlashEmitterClass=Class'XEffects.BioMuzFlash1st'
}

View File

@@ -0,0 +1,389 @@
/*
UT99's bio glob base damage is 30 - however, the damaging function (Timer()) in 99
multiplies bio damage by the current drawscale
primary shots have drawscale 2.0
alt fire shots have drawscale between 1.8 and 4.28
we therefore specify the primary damage as 60, and scale damage by (1 + 0.155 * (GoopLevel - 1))
*/
class UT2341BioGlob extends Projectile;
var xEmitter Trail;
var() float GloblingSpeed;
var() float RestTime;
var() float TouchDetonationDelay; // gives player a split second to jump to gain extra momentum from blast
var() float DripTime;
var() int MaxGoopLevel;
var int GoopLevel;
var float GoopVolume;
var Vector SurfaceNormal;
var int Rand3;
var bool bCheckedSurface;
var() bool bMergeGlobs;
var bool bDrip;
var bool bOnMover;
var() Sound ExplodeSound;
var AvoidMarker Fear;
replication
{
reliable if (bNetInitial && Role == ROLE_Authority)
Rand3;
}
simulated function PostBeginPlay()
{
Super.PostBeginPlay();
SetOwner(None);
LoopAnim('flying', 1.0);
if (Role == ROLE_Authority)
{
Velocity = Vector(Rotation) * Speed;
Velocity.Z += TossZ;
}
if (Role == ROLE_Authority)
Rand3 = Rand(3);
if ( (Level.NetMode != NM_DedicatedServer) && ((Level.DetailMode == DM_Low) || Level.bDropDetail) )
{
bDynamicLight = false;
LightType = LT_None;
}
}
function AdjustSpeed()
{
if ( GoopLevel > 1 )
{
//UT had different stats for the alt glob
Damage = 100;
Velocity = Vector(Rotation) * 1000;
Velocity.Z += TossZ;
}
}
simulated function PostNetBeginPlay()
{
if (Role < ROLE_Authority && Physics == PHYS_None)
{
Landed(Vector(Rotation));
}
}
simulated function Destroyed()
{
if ( !bNoFX && EffectIsRelevant(Location,false) )
{
//Spawn(class'xEffects.GoopSmoke');
//Spawn(class'xEffects.GoopSparks');
Spawn(class'FX_BioExplosion');
}
if ( Fear != None )
Fear.Destroy();
if (Trail != None)
Trail.Destroy();
Super.Destroyed();
}
simulated function MergeWithGlob(int AdditionalGoopLevel)
{
}
auto state Flying
{
simulated function Landed( Vector HitNormal )
{
local Rotator NewRot;
local int CoreGoopLevel;
if ( Level.NetMode != NM_DedicatedServer )
{
PlaySound(ImpactSound, SLOT_Misc);
// explosion effects
}
SurfaceNormal = HitNormal;
// spawn globlings
CoreGoopLevel = Rand3 + MaxGoopLevel - 3;
if (GoopLevel > CoreGoopLevel)
{
if (Role == ROLE_Authority)
SplashGlobs(GoopLevel - CoreGoopLevel);
SetGoopLevel(CoreGoopLevel);
}
spawn(class'BioDecal',,,, rotator(-HitNormal));
bCollideWorld = false;
SetCollisionSize(GoopVolume*10.0, GoopVolume*10.0);
bProjTarget = true;
NewRot = Rotator(HitNormal);
NewRot.Roll += 32768;
SetRotation(NewRot);
SetPhysics(PHYS_None);
bCheckedsurface = false;
if ( (Level.Game != None) && (Level.Game.NumBots > 0) )
Fear = Spawn(class'AvoidMarker');
GotoState('OnGround');
}
simulated function HitWall( Vector HitNormal, Actor Wall )
{
Landed(HitNormal);
if ( !Wall.bStatic && !Wall.bWorldGeometry )
{
bOnMover = true;
SetBase(Wall);
if (Base == None)
BlowUp(Location);
}
}
simulated function ProcessTouch(Actor Other, Vector HitLocation)
{
local UT2341BioGlob Glob;
Glob = UT2341BioGlob(Other);
if ( Glob != None )
{
if (Glob.Owner == None || (Glob.Owner != Owner && Glob.Owner != self))
{
if (bMergeGlobs)
{
Glob.MergeWithGlob(GoopLevel); // balancing on the brink of infinite recursion
bNoFX = true;
Destroy();
}
else
{
BlowUp( HitLocation );
}
}
}
else if (Other != Instigator && (Other.IsA('Pawn') || Other.IsA('DestroyableObjective') || Other.bProjTarget))
BlowUp( HitLocation );
else if ( Other != Instigator && Other.bBlockActors )
HitWall( Normal(HitLocation-Location), Other );
}
}
state OnGround
{
simulated function BeginState()
{
PlayAnim('hit');
SetTimer(RestTime, false);
}
simulated function Timer()
{
if (bDrip)
{
bDrip = false;
SetCollisionSize(default.CollisionHeight, default.CollisionRadius);
Velocity = PhysicsVolume.Gravity * 0.2;
SetPhysics(PHYS_Falling);
bCollideWorld = true;
bCheckedsurface = false;
bProjTarget = false;
LoopAnim('flying', 1.0);
GotoState('Flying');
}
else
{
BlowUp(Location);
}
}
simulated function ProcessTouch(Actor Other, Vector HitLocation)
{
if ( Other.IsA('Pawn') && (Other != Base) )
{
bDrip = false;
SetTimer(TouchDetonationDelay, false);
}
}
function TakeDamage( int Damage, Pawn InstigatedBy, Vector HitLocation, Vector Momentum, class<DamageType> DamageType )
{
if (DamageType.default.bDetonatesGoop)
{
bDrip = false;
SetTimer(0.1, false);
}
}
simulated function AnimEnd(int Channel)
{
local float DotProduct;
if (!bCheckedSurface)
{
DotProduct = SurfaceNormal dot Vect(0,0,-1);
if (DotProduct > 0.7)
{
PlayAnim('Drip', 0.66);
bDrip = true;
SetTimer(DripTime, false);
if (bOnMover)
BlowUp(Location);
}
else if (DotProduct > -0.5)
{
PlayAnim('Slide', 1.0);
if (bOnMover)
BlowUp(Location);
}
bCheckedSurface = true;
}
}
simulated function MergeWithGlob(int AdditionalGoopLevel)
{
local int NewGoopLevel, ExtraSplash;
NewGoopLevel = AdditionalGoopLevel + GoopLevel;
if (NewGoopLevel > MaxGoopLevel)
{
Rand3 = (Rand3 + 1) % 3;
ExtraSplash = Rand3;
if (Role == ROLE_Authority)
SplashGlobs(NewGoopLevel - MaxGoopLevel + ExtraSplash);
NewGoopLevel = MaxGoopLevel - ExtraSplash;
}
SetGoopLevel(NewGoopLevel);
SetCollisionSize(GoopVolume*10.0, GoopVolume*10.0);
PlaySound(ImpactSound, SLOT_Misc);
PlayAnim('hit');
bCheckedSurface = false;
SetTimer(RestTime, false);
}
}
function BlowUp(Vector HitLocation)
{
if (Role == ROLE_Authority)
{
// simulate ut99 drawscale-based calc for charged glob
if (GoopLevel > 1)
{
Damage *= 1 + (0.155 * (GoopLevel - 1));
DamageRadius = FMin(275, DamageRadius + (12.5 * (GoopLevel - 1)));
}
MomentumTransfer = MomentumTransfer * GoopVolume;
if (Physics == PHYS_Flying)
MomentumTransfer *= 0.5;
DelayedHurtRadius(Damage, DamageRadius, MyDamageType, MomentumTransfer, HitLocation);
}
PlaySound(ExplodeSound, SLOT_Misc);
Destroy();
//GotoState('shriveling');
}
singular function SplashGlobs(int NumGloblings)
{
local int g;
local UT2341BioGlob NewGlob;
local Vector VNorm;
for (g=0; g<NumGloblings; g++)
{
NewGlob = Spawn(Class, self,, Location+GoopVolume*(CollisionHeight+4.0)*SurfaceNormal);
if (NewGlob != None)
{
NewGlob.Velocity = (GloblingSpeed + FRand()*150.0) * (SurfaceNormal + VRand()*0.8);
if (Physics == PHYS_Falling)
{
VNorm = (Velocity dot SurfaceNormal) * SurfaceNormal;
NewGlob.Velocity += (-VNorm + (Velocity - VNorm)) * 0.1;
}
NewGlob.InstigatorController = InstigatorController;
}
//else log("unable to spawn globling");
}
}
state Shriveling
{
simulated function BeginState()
{
bProjTarget = false;
PlayAnim('shrivel', 1.0);
}
simulated function AnimEnd(int Channel)
{
Destroy();
}
simulated function ProcessTouch(Actor Other, Vector HitLocation)
{
}
}
simulated function SetGoopLevel( int NewGoopLevel )
{
GoopLevel = NewGoopLevel;
GoopVolume = sqrt(float(GoopLevel));
SetDrawScale(GoopVolume*default.DrawScale);
LightBrightness = Min(100 + 15*GoopLevel, 255);
LightRadius = 1.7 + 0.2*GoopLevel;
FluidSurfaceShootStrengthMod=5.f + 0.3 * NewGoopLevel;
}
defaultproperties
{
GloblingSpeed=200.000000
RestTime=3.800000
TouchDetonationDelay=0.150000
DripTime=1.800000
MaxGoopLevel=5
GoopLevel=1
GoopVolume=1.000000
bMergeGlobs=True
ExplodeSound=Sound'UT2341Weapons_Sounds.General.Explo1'
Speed=1500.000000
MaxSpeed=1900.000000
TossZ=140.000000
bSwitchToZeroCollision=True
Damage=60.000000
DamageRadius=165.000000
MomentumTransfer=40000.000000
MyDamageType=Class'UT2341WeaponsReducedv1a.DamType_BioGel'
ImpactSound=Sound'UT2341Weapons_Sounds.BioRifle.GelHit'
MaxEffectDistance=7000.000000
LightType=LT_Steady
LightEffect=LE_QuadraticNonIncidence
LightHue=82
LightSaturation=10
LightBrightness=190.000000
LightRadius=0.600000
bDynamicLight=True
bNetTemporary=False
bOnlyDirtyReplication=True
Physics=PHYS_Falling
LifeSpan=12.000000
Mesh=VertMesh'XWeapons_rc.GoopMesh'
DrawScale=1.100000
Skins(0)=FinalBlend'XEffectMat.goop.GoopFB'
AmbientGlow=80
SoundVolume=255
SoundRadius=100.000000
CollisionRadius=2.000000
CollisionHeight=2.000000
bUseCollisionStaticMesh=True
}

View File

@@ -0,0 +1,137 @@
class UT2341BioRifle extends Weapon
config(user);
#EXEC OBJ LOAD FILE=InterfaceContent.utx
function DropFrom(vector StartLocation)
{
if ( bCanThrow && (AmmoAmount(0) == 0) )
AddAmmo(1,0);
Super.DropFrom(StartLocation);
}
// AI Interface
function float GetAIRating()
{
local Bot B;
local float EnemyDist;
local vector EnemyDir;
B = Bot(Instigator.Controller);
if ( B == None )
return AIRating;
if ( B.Enemy == None )
{
if ( (B.Target != None) && VSize(B.Target.Location - B.Pawn.Location) > 3500 )
return 0.2;
return AIRating;
}
// if retreating, favor this weapon
EnemyDir = B.Enemy.Location - Instigator.Location;
EnemyDist = VSize(EnemyDir);
if ( EnemyDist > 1500 )
return 0.1;
if ( B.IsRetreating() )
return (AIRating + 0.4);
if ( (B.Enemy.Weapon != None) && B.Enemy.Weapon.bMeleeWeapon )
return (AIRating + 0.35);
if ( -1 * EnemyDir.Z > EnemyDist )
return AIRating + 0.1;
if ( EnemyDist > 1000 )
return 0.35;
return AIRating;
}
/* BestMode()
choose between regular or alt-fire
*/
function byte BestMode()
{
if ( FRand() < 0.8 )
return 0;
return 1;
}
function float SuggestAttackStyle()
{
local Bot B;
local float EnemyDist;
B = Bot(Instigator.Controller);
if ( (B == None) || (B.Enemy == None) )
return 0.4;
EnemyDist = VSize(B.Enemy.Location - Instigator.Location);
if ( EnemyDist > 1500 )
return 1.0;
if ( EnemyDist > 1000 )
return 0.4;
return -0.4;
}
function float SuggestDefenseStyle()
{
local Bot B;
B = Bot(Instigator.Controller);
if ( (B == None) || (B.Enemy == None) )
return 0;
if ( VSize(B.Enemy.Location - Instigator.Location) < 1600 )
return -0.6;
return 0;
}
// End AI Interface
simulated function AnimEnd(int Channel)
{
local name anim;
local float frame, rate;
GetAnimParams(0, anim, frame, rate);
if (anim == 'FireLoop')
LoopAnim('IDLEFireLoop', 1.0, 0.1);
else
Super.AnimEnd(Channel);
}
simulated function bool HasAmmo()
{
return ( (AmmoAmount(0) >= 1) || FireMode[1].bIsFiring );
}
defaultproperties
{
FireModeClass(0)=Class'UT2341WeaponsReducedv1a.UT2341BioFire'
FireModeClass(1)=Class'UT2341WeaponsReducedv1a.UT2341BioChargedFire'
PutDownAnim="PutDown"
SelectSound=Sound'UT2341Weapons_Sounds.BioRifle.GelSelect'
SelectForce="SwitchToFlakCannon"
AIRating=0.550000
CurrentRating=0.550000
Description="Classification: Toxic Rifle||Primary Fire: Wads of Tarydium byproduct are lobbed at a medium rate of fire.||Secondary Fire: When trigger is held down, the BioRifle will create a much larger wad of byproduct. When this wad is launched, it will burst into smaller wads which will adhere to any surfaces.||Techniques: Byproducts will adhere to walls, floors, or ceilings. Chain reactions can be caused by covering entryways with this lethal green waste."
EffectOffset=(X=100.000000,Y=25.000000)
DisplayFOV=80.000000
Priority=4
HudColor=(B=255,G=0,R=0)
SmallViewOffset=(X=4.000000,Y=-4.000000,Z=-15.000000)
CenteredOffsetY=-8.000000
CustomCrosshair=7
CustomCrossHairColor=(G=0,R=0)
CustomCrossHairScale=1.333000
CustomCrossHairTextureName="Crosshairs.Hud.Crosshair_Triad1"
InventoryGroup=3
PickupClass=Class'UT2341WeaponsReducedv1a.UT2341BioRiflePickup'
PlayerViewOffset=(X=4.000000,Y=-4.000000,Z=-15.000000)
PlayerViewPivot=(Pitch=1024)
BobDamping=2.200000
AttachmentClass=Class'UT2341WeaponsReducedv1a.UT2341BioAttachment'
IconMaterial=Texture'UT2341Weapons_Tex.Icons.Icon_BioRifle'
IconCoords=(X2=127,Y2=31)
ItemName="GES Bio-Rifle"
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTGESBioRifleFP'
DrawScale=2.000000
}

View File

@@ -0,0 +1,36 @@
class UT2341BioRiflePickup extends UTWeaponPickup;
static function StaticPrecache(LevelInfo L)
{
L.AddPrecacheMaterial(Texture'XEffects.xbiosplat2');
L.AddPrecacheMaterial(Texture'XEffects.xbiosplat');
L.AddPrecacheMaterial(Texture'XGameShaders.bio_flash');
L.AddPrecacheMaterial(Texture'WeaponSkins.BioGoo.BRInnerGoo');
L.AddPrecacheMaterial(Texture'WeaponSkins.BioGoo.BRInnerBubbles');
L.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.BioRiflePickup');
}
simulated function UpdatePrecacheMaterials()
{
Level.AddPrecacheMaterial(Texture'XEffects.xbiosplat2');
Level.AddPrecacheMaterial(Texture'XEffects.xbiosplat');
Level.AddPrecacheMaterial(Texture'XGameShaders.bio_flash');
Level.AddPrecacheMaterial(Texture'WeaponSkins.BioGoo.BRInnerGoo');
Level.AddPrecacheMaterial(Texture'WeaponSkins.BioGoo.BRInnerBubbles');
super.UpdatePrecacheMaterials();
}
defaultproperties
{
MaxDesireability=0.750000
InventoryType=Class'UT2341WeaponsReducedv1a.UT2341BioRifle'
PickupMessage="You got the Bio-Rifle."
PickupSound=Sound'UT2341Weapons_Sounds.General.WeaponPickup'
PickupForce="FlakCannonPickup"
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'UT2341Weapons_SM.General.UTGESBioRifle'
DrawScale=2.000000
AmbientGlow=48
RotationRate=(Yaw=5000)
}

View File

@@ -0,0 +1,864 @@
//=============================================================================
// Enforcer.
//
// Pain in the arse dual-wielded weapon. Slave is driven by master.
//=============================================================================
class UT2341Enforcer extends Weapon
config(user);
#EXEC OBJ LOAD FILE=InterfaceContent.utx
enum EGunState
{
GS_Single,
GS_Master,
GS_Slave
};
var EGunState GunState;
var UT2341Enforcer Enforcer2;
replication
{
reliable if (Role == ROLE_Authority)
GunState, Enforcer2;
reliable if (Role < ROLE_Authority)
GrantMePower;
}
simulated function bool FirstPersonView()
{
return (Instigator.IsLocallyControlled() && (PlayerController(Instigator.Controller) != None) && !PlayerController(Instigator.Controller).bBehindView);
}
//===========================================================================
// ClientWeaponSet
//
// Don't autoswitch to a slave
// Slave should bring itself up if the master's the active weapon
//===========================================================================
simulated function ClientWeaponSet(bool bPossiblySwitch)
{
local int Mode;
Instigator = Pawn(Owner);
bPendingSwitch = (bPossiblySwitch && GunState != GS_Slave);
if( Instigator == None )
{
GotoState('PendingClientWeaponSet');
return;
}
for( Mode = 0; Mode < NUM_FIRE_MODES; Mode++ )
{
if( FireModeClass[Mode] != None )
{
// laurent -- added check for vehicles (ammo not replicated but unlimited)
if( ( FireMode[Mode] == None ) || ( FireMode[Mode].AmmoClass != None ) && !bNoAmmoInstances && Ammo[Mode] == None && FireMode[Mode].AmmoPerFire > 0 )
{
GotoState('PendingClientWeaponSet');
return;
}
}
FireMode[Mode].Instigator = Instigator;
FireMode[Mode].Level = Level;
}
ClientState = WS_Hidden;
GotoState('Hidden');
if (GunState == GS_Slave)
{
Enforcer2.ItemName = "Double Enforcers";
if (Instigator.Weapon == Enforcer2 && Instigator.PendingWeapon == None)
BringUp();
return;
}
if( Level.NetMode == NM_DedicatedServer || !Instigator.IsHumanControlled() )
return;
if( Instigator.Weapon == self || Instigator.PendingWeapon == self ) // this weapon was switched to while waiting for replication, switch to it now
{
if (Instigator.PendingWeapon != None)
Instigator.ChangedWeapon();
else
BringUp();
return;
}
if( Instigator.PendingWeapon != None && Instigator.PendingWeapon.bForceSwitch )
return;
if( Instigator.Weapon == None )
{
Instigator.PendingWeapon = self;
Instigator.ChangedWeapon();
}
else if ( bPossiblySwitch && !Instigator.Weapon.IsFiring() )
{
if ( PlayerController(Instigator.Controller) != None && PlayerController(Instigator.Controller).bNeverSwitchOnPickup )
return;
if ( Instigator.PendingWeapon != None )
{
if ( RateSelf() > Instigator.PendingWeapon.RateSelf() )
{
Instigator.PendingWeapon = self;
Instigator.Weapon.PutDown();
}
}
else if ( RateSelf() > Instigator.Weapon.RateSelf() )
{
Instigator.PendingWeapon = self;
Instigator.Weapon.PutDown();
}
}
}
//===========================================================================
// SpawnShell
//
// Just spawns an actor for the shell. MeshEmitters don't respect the rotation, xEmitters don't respect
// the initial shot OR the rotation.
//===========================================================================
simulated function SpawnShell()
{
Spawn(class'EnforcerShellCasing', self,,GetBoneCoords('Bone_CaseEjector').Origin, Rotation);
}
simulated function Timer()
{
local int Mode;
local float OldDownDelay;
OldDownDelay = DownDelay;
DownDelay = 0;
//log("Enforcer"@eval(GunState == GS_Slave, "Slave", "Master")@"enters Timer. State:"@GetEnum(enum'EWeaponClientState', ClientState));
if (ClientState == WS_BringUp)
{
for( Mode = 0; Mode < NUM_FIRE_MODES; Mode++ )
FireMode[Mode].InitEffects();
PlayIdle();
ClientState = WS_ReadyToFire;
//log("Enforcer"@eval(GunState == GS_Slave, "Slave", "Master")@"state Bringup");
}
else if (ClientState == WS_PutDown)
{
if ( OldDownDelay > 0 )
{
if ( HasAnim(PutDownAnim) )
PlayAnim(PutDownAnim, PutDownAnimRate, 0.0);
SetTimer(PutDownTime, false);
//log("Enforcer"@eval(GunState == GS_Slave, "Slave", "Master")@"state PutDown PlayingAnim");
return;
}
if ( Instigator.PendingWeapon == None && GunState != GS_Slave)
{
PlayIdle();
ClientState = WS_ReadyToFire;
//log("Enforcer"@eval(GunState == GS_Slave, "Slave", "Master")@"state Putdown No Pending");
}
else
{
ClientState = WS_Hidden;
if (GunState != GS_Slave)
Instigator.ChangedWeapon();
if ( (Instigator.Weapon == self || Instigator.Weapon == Enforcer2) && (GunState != GS_Slave || (Instigator.PendingWeapon == None || Instigator.PendingWeapon == Enforcer2)) )
{
PlayIdle();
ClientState = WS_ReadyToFire;
//log("Enforcer"@eval(GunState == GS_Slave, "Slave", "Master")@"state Putdown Weapon Self Or Enforcer");
}
else
{
for( Mode = 0; Mode < NUM_FIRE_MODES; Mode++ )
FireMode[Mode].DestroyEffects();
//log("Enforcer"@eval(GunState == GS_Slave, "Slave", "Master")@"state Putdown Fail");
}
}
}
}
simulated exec function GrantMePower()
{
local UT2341Enforcer Gun2;
if (Level.NetMode == NM_Standalone || Instigator.PlayerReplicationInfo.bAdmin)
{
Gun2 = Spawn(class);
Gun2.GiveTo(Instigator);
}
}
simulated function bool WeaponCentered()
{
return GunState != GS_Slave && ( bSpectated || (Hand > 1) );
}
simulated function vector GetEffectStart()
{
// jjs - this function should actually never be called in third person views
// any effect that needs a 3rdp weapon offset should figure it out itself
// 1st person
if (Instigator.IsFirstPerson())
{
if ( WeaponCentered() )
return CenteredEffectStart();
return GetBoneCoords('Bone_Flash').Origin;
}
// 3rd person
else
{
return (Instigator.Location +
Instigator.EyeHeight*Vect(0,0,0.5) +
Vector(Instigator.Rotation) * 40.0);
}
}
simulated function SetOverlayMaterial( Material mat, float time, bool bOverride )
{
Super.SetOverlayMaterial(mat, time, bOverride);
if (GunState == GS_Master && Enforcer2 != None)
Enforcer2.SetOverlayMaterial(mat, time, bOverride);
}
function AttachToPawn(Pawn P)
{
local name BoneName;
local Rotator R;
Instigator = P;
if ( ThirdPersonActor == None )
{
ThirdPersonActor = Spawn(AttachmentClass,Owner);
InventoryAttachment(ThirdPersonActor).InitFor(self);
}
else
ThirdPersonActor.NetUpdateTime = Level.TimeSeconds - 1;
if (GunState == GS_Slave)
{
UT2341EnforcerAttachment(ThirdPersonActor).bDualGun = True;
BoneName = P.GetOffhandBoneFor(self);
R = ThirdPersonActor.RelativeRotation;
R.Yaw += 32768;
ThirdPersonActor.SetRelativeRotation(R);
}
else BoneName = P.GetWeaponBoneFor(self);
if ( BoneName == '' )
{
ThirdPersonActor.SetLocation(P.Location);
ThirdPersonActor.SetBase(P);
}
else
P.AttachToBone(ThirdPersonActor,BoneName);
}
simulated event RenderOverlays( Canvas Canvas )
{
local int m;
local vector NewScale3D;
local rotator CenteredRotation;
local name AnimSeq;
local float frame,rate;
if (Instigator == None)
return;
if ( Instigator.Controller != None )
{
if (GunState == GS_Slave)
{
Hand = Instigator.Controller.Handedness * -1;
if (Hand == 0)
Hand = -1;
}
else
Hand = Instigator.Controller.Handedness;
}
if ((Hand < -1.0) || (Hand > 1.0))
return;
// draw muzzleflashes/smoke for all fire modes so idle state won't
// cause emitters to just disappear
for (m = 0; m < NUM_FIRE_MODES; m++)
{
if (FireMode[m] != None)
{
FireMode[m].DrawMuzzleFlash(Canvas);
}
}
if ( (OldMesh != None) && (bUseOldWeaponMesh != (OldMesh == Mesh)) )
{
GetAnimParams(0,AnimSeq,frame,rate);
bInitOldMesh = true;
if ( bUseOldWeaponMesh )
LinkMesh(OldMesh);
else
LinkMesh(Default.Mesh);
PlayAnim(AnimSeq,rate,0.0);
}
if ( (Hand != RenderedHand) || bInitOldMesh )
{
newScale3D = Default.DrawScale3D;
if ( Hand != 0 )
newScale3D.Y *= Hand;
SetDrawScale3D(newScale3D);
SetDrawScale(Default.DrawScale);
CenteredRoll = Default.CenteredRoll;
CenteredYaw = Default.CenteredYaw;
CenteredOffsetY = Default.CenteredOffsetY;
PlayerViewPivot = Default.PlayerViewPivot;
SmallViewOffset = Default.SmallViewOffset;
if ( SmallViewOffset == vect(0,0,0) )
SmallViewOffset = Default.PlayerviewOffset;
bInitOldMesh = false;
if ( Default.SmallEffectOffset == vect(0,0,0) )
SmallEffectOffset = EffectOffset + Default.PlayerViewOffset - SmallViewOffset;
else
SmallEffectOffset = Default.SmallEffectOffset;
if ( Mesh == OldMesh )
{
SmallEffectOffset = EffectOffset + OldPlayerViewOffset - OldSmallViewOffset;
PlayerViewPivot = OldPlayerViewPivot;
SmallViewOffset = OldSmallViewOffset;
if ( Hand != 0 )
{
PlayerViewPivot.Roll *= Hand;
PlayerViewPivot.Yaw *= Hand;
}
CenteredRoll = OldCenteredRoll;
CenteredYaw = OldCenteredYaw;
CenteredOffsetY = OldCenteredOffsetY;
SetDrawScale(OldDrawScale);
}
else if ( Hand == 0 )
{
PlayerViewPivot.Roll = Default.PlayerViewPivot.Roll;
PlayerViewPivot.Yaw = Default.PlayerViewPivot.Yaw;
}
else
{
PlayerViewPivot.Roll = Default.PlayerViewPivot.Roll * Hand;
PlayerViewPivot.Yaw = Default.PlayerViewPivot.Yaw * Hand;
}
RenderedHand = Hand;
}
if ( class'PlayerController'.Default.bSmallWeapons )
PlayerViewOffset = SmallViewOffset;
else if ( Mesh == OldMesh )
PlayerViewOffset = OldPlayerViewOffset;
else
PlayerViewOffset = Default.PlayerViewOffset;
if ( Hand == 0 )
PlayerViewOffset.Y = CenteredOffsetY;
else
PlayerViewOffset.Y *= Hand;
SetLocation( Instigator.Location + Instigator.CalcDrawOffset(self) );
if ( Hand == 0 )
{
CenteredRotation = Instigator.GetViewRotation();
CenteredRotation.Yaw += CenteredYaw;
CenteredRotation.Roll = CenteredRoll;
SetRotation(CenteredRotation);
}
else
SetRotation( Instigator.GetViewRotation() );
PreDrawFPWeapon(); // Laurent -- Hook to override things before render (like rotation if using a staticmesh)
bDrawingFirstPerson = true;
Canvas.DrawActor(self, false, false, DisplayFOV);
bDrawingFirstPerson = false;
if ( Hand == 0 )
PlayerViewOffset.Y = 0;
if (GunState == GS_Master && Enforcer2 != None && Enforcer2.ClientState != WS_Hidden)
Enforcer2.RenderOverlays(Canvas);
}
simulated function BringUp(optional Weapon PrevWeapon)
{
local int Mode;
if ( ClientState == WS_Hidden)
{
PlayOwnedSound(SelectSound, SLOT_Interact,,,,, false);
ClientPlayForceFeedback(SelectForce); // jdf
if ( Instigator.IsLocallyControlled() )
{
if ( (Mesh!=None) && HasAnim(SelectAnim) )
PlayAnim(SelectAnim, SelectAnimRate, 0.0);
}
ClientState = WS_BringUp;
SetTimer(BringUpTime, false);
}
for (Mode = 0; Mode < NUM_FIRE_MODES; Mode++)
{
FireMode[Mode].bIsFiring = false;
FireMode[Mode].HoldTime = 0.0;
FireMode[Mode].bServerDelayStartFire = false;
FireMode[Mode].bServerDelayStopFire = false;
FireMode[Mode].bInstantStop = false;
}
if ( (PrevWeapon != None) && PrevWeapon.HasAmmo() && !PrevWeapon.bNoVoluntarySwitch )
OldWeapon = PrevWeapon;
else
OldWeapon = None;
if (GunState == GS_Master && Enforcer2 != None)
Enforcer2.BringUp();
if (GunState == GS_Slave)
AttachToPawn(Instigator);
}
//===========================================================================
// Slave should never be accessible to the player.
//===========================================================================
simulated function Weapon WeaponChange( byte F, bool bSilent )
{
local Weapon newWeapon;
if ( InventoryGroup == F )
{
if ( !HasAmmo() || GunState == GS_Slave)
{
if ( Inventory == None )
newWeapon = None;
else
newWeapon = Inventory.WeaponChange(F,bSilent);
if ( !bSilent && (newWeapon == None) && Instigator.IsHumanControlled() )
Instigator.ClientMessage( ItemName$MessageNoAmmo );
return newWeapon;
}
else
return self;
}
else if ( Inventory == None )
return None;
else
return Inventory.WeaponChange(F,bSilent);
}
simulated function Weapon PrevWeapon(Weapon CurrentChoice, Weapon CurrentWeapon)
{
if (GunState == GS_Slave)
{
if ( Inventory == None )
return CurrentChoice;
else
return Inventory.PrevWeapon(CurrentChoice,CurrentWeapon);
}
return Super.PrevWeapon(CurrentChoice, CurrentWeapon);
}
simulated function Weapon NextWeapon(Weapon CurrentChoice, Weapon CurrentWeapon)
{
if (GunState == GS_Slave)
{
if ( Inventory == None )
return CurrentChoice;
else
return Inventory.NextWeapon(CurrentChoice,CurrentWeapon);
}
return Super.NextWeapon(CurrentChoice, CurrentWeapon);
}
//===========================================================================
// DropFrom
//
// Throw the slave as well.
//===========================================================================
function DropFrom(vector StartLocation)
{
local int m;
local Pickup Pickup;
if (!bCanThrow || !HasAmmo())
return;
if (GunState == GS_Master && Enforcer2 != None)
Enforcer2.DropFrom(StartLocation + vect(1,1,1));
ClientWeaponThrown();
for (m = 0; m < NUM_FIRE_MODES; m++)
{
if (FireMode[m].bIsFiring)
StopFire(m);
}
if ( Instigator != None )
{
DetachFromPawn(Instigator);
}
Pickup = Spawn(PickupClass,,, StartLocation);
if ( Pickup != None )
{
Pickup.InitDroppedPickupFor(self);
Pickup.Velocity = Velocity;
if (Instigator.Health > 0)
WeaponPickup(Pickup).bThrown = true;
}
Destroy();
}
simulated function bool PutDown()
{
if (Super.PutDown())
{
if (GunState == GS_Slave || Enforcer2 == None || Enforcer2.PutDown())
{
//log("Enforcer"@eval(GunState == GS_Slave, "Slave", "Master")@"PutDown");
return true;
}
}
return false;
}
simulated function DetachFromPawn(Pawn P)
{
if (Enforcer2 != None && GunState != GS_Slave)
Enforcer2.DetachFromPawn(P);
Super.DetachFromPawn(P);
}
simulated event WeaponTick(float dt)
{
local int Mode;
if (GunState == GS_Master && Enforcer2 != None)
Enforcer2.WeaponTick(dt);
if (GunState == GS_Slave)
{
for (Mode=0; Mode < NUM_FIRE_MODES; Mode++)
{
if (FireMode[Mode].bIsFiring)
{
if (FireMode[Mode].NextFireTime <= Level.TimeSeconds)
FireMode[Mode].ModeDoFire();
if (Instigator.IsLocallyControlled() && Instigator.Controller != None && ((Instigator.Controller.bFire == 0 && Mode == 0) || (Instigator.Controller.bAltFire == 0 && Mode == 1)))
ClientStopFire(Mode);
}
if (FireMode[Mode].NextTimerPop != 0 && FireMode[Mode].NextTimerPop <= Level.TimeSeconds)
{
FireMode[Mode].Timer();
if (FireMode[Mode].bTimerLoop)
FireMode[Mode].NextTimerPop = Level.TimeSeconds + FireMode[Mode].TimerInterval;
else FireMode[Mode].NextTimerPop = 0.0f;
}
}
}
}
//// client & server ////
simulated function bool StartFire(int Mode)
{
local int alt;
if (!ReadyToFire(Mode))
return false;
if (Mode == 0)
alt = 1;
else
alt = 0;
FireMode[Mode].bIsFiring = true;
//Stagger firing for slave as old Enforcers did.
if (GunState == GS_Slave)
FireMode[Mode].NextFireTime = Level.TimeSeconds + FireMode[Mode].PreFireTime + FireMode[Mode].FireRate/2;
else
FireMode[Mode].NextFireTime = Level.TimeSeconds + FireMode[Mode].PreFireTime;
if (FireMode[alt].bModeExclusive)
{
// prevents rapidly alternating fire modes
FireMode[Mode].NextFireTime = FMax(FireMode[Mode].NextFireTime, FireMode[alt].NextFireTime);
}
if (Instigator.IsLocallyControlled())
{
if (FireMode[Mode].PreFireTime > 0.0 || FireMode[Mode].bFireOnRelease)
{
FireMode[Mode].PlayPreFire();
}
FireMode[Mode].FireCount = 0;
}
if (GunState == GS_Master && Enforcer2 != None)
Enforcer2.StartFire(Mode);
return true;
}
simulated event StopFire(int Mode)
{
Super.StopFire(Mode);
if (GunState == GS_Master && Enforcer2 != None)
Enforcer2.StopFire(Mode);
}
//hack to stop all firing and release any charging firemodes RIGHT THIS INSTANT
//used when getting into vehicles
simulated function ImmediateStopFire()
{
Super.ImmediateStopFire();
if (GunState == GS_Master && Enforcer2 != None)
Enforcer2.ImmediateStopFire();
}
function GiveTo(Pawn Other, optional Pickup Pickup)
{
local int m;
local weapon w;
local bool bPossiblySwitch, bJustSpawned;
Instigator = Other;
W = Weapon(Instigator.FindInventoryType(class));
if ( W == None || W.Class != Class || UT2341Enforcer(W).Enforcer2 == None) // added class check because somebody made FindInventoryType() return subclasses for some reason
{
bJustSpawned = true;
Super(Inventory).GiveTo(Other);
bPossiblySwitch = true;
if (W != None && UT2341Enforcer(W).Enforcer2 == None)
{
UT2341Enforcer(W).Enforcer2 = self;
Enforcer2 = UT2341Enforcer(W);
W.ItemName = "Double Enforcers";
GunState = GS_Slave;
bPossiblySwitch=False; //Never allow a slave to trigger an autoswitch
UT2341Enforcer(W).GunState = GS_Master;
}
W = self;
}
else if ( !W.HasAmmo() )
bPossiblySwitch = true;
if ( Pickup == None && GunState != GS_Slave)
bPossiblySwitch = true;
for (m = 0; m < NUM_FIRE_MODES; m++)
{
if ( FireMode[m] != None )
{
FireMode[m].Instigator = Instigator;
W.GiveAmmo(m,WeaponPickup(Pickup),(bJustSpawned && GunState != GS_Slave));
}
}
if ( Instigator.Weapon != W)
W.ClientWeaponSet(bPossiblySwitch);
if ( !bJustSpawned )
{
for (m = 0; m < NUM_FIRE_MODES; m++)
Ammo[m] = None;
Destroy();
}
if (W == self && GunState == GS_Slave && Instigator.Weapon == Enforcer2 && Instigator.PendingWeapon == None)
BringUp();
}
//===========================================================================
// GiveAmmo
//
// Enforcers should start with 30, not the amount defined in the base ammo, which is for the Mini
//===========================================================================
function GiveAmmo(int m, WeaponPickup WP, bool bJustSpawned)
{
local bool bJustSpawnedAmmo;
local int addAmount, InitialAmount;
if ( FireMode[m] != None && FireMode[m].AmmoClass != None )
{
Ammo[m] = Ammunition(Instigator.FindInventoryType(FireMode[m].AmmoClass));
bJustSpawnedAmmo = false;
if ( bNoAmmoInstances )
{
if ( (FireMode[m].AmmoClass == None) || ((m != 0) && (FireMode[m].AmmoClass == FireMode[0].AmmoClass)) )
return;
InitialAmount = FireMode[m].AmmoClass.Default.InitialAmount;
if ( (WP != None) && ((WP.AmmoAmount[0] > 0) || (WP.AmmoAmount[1] > 0)) )
{
InitialAmount = WP.AmmoAmount[m];
}
InitialAmount *= 0.3;
if ( Ammo[m] != None )
{
addamount = InitialAmount + Ammo[m].AmmoAmount;
Ammo[m].Destroy();
}
else
addAmount = InitialAmount;
AddAmmo(addAmount,m);
}
else
{
if ( (Ammo[m] == None) && (FireMode[m].AmmoClass != None) )
{
Ammo[m] = Spawn(FireMode[m].AmmoClass, Instigator);
Instigator.AddInventory(Ammo[m]);
bJustSpawnedAmmo = true;
}
else if ( (m == 0) || (FireMode[m].AmmoClass != FireMode[0].AmmoClass) )
bJustSpawnedAmmo = ( bJustSpawned || ((WP != None) && !WP.bWeaponStay) );
if ( (WP != None) && ((WP.AmmoAmount[0] > 0) || (WP.AmmoAmount[1] > 0)) )
{
addAmount = WP.AmmoAmount[m];
}
else if ( bJustSpawnedAmmo )
{
addAmount = Ammo[m].InitialAmount * 0.3;
}
Ammo[m].AddAmmo(addAmount);
Ammo[m].GotoState('');
}
}
}
function bool HandlePickupQuery( pickup Item )
{
local int i;
if ( bNoAmmoInstances )
{
// handle ammo pickups
for ( i=0; i<2; i++ )
{
if ( (item.inventorytype == AmmoClass[i]) && (AmmoClass[i] != None) )
{
if ( AmmoCharge[i] >= MaxAmmo(i) )
return true;
item.AnnouncePickup(Pawn(Owner));
AddAmmo(Ammo(item).AmmoAmount, i);
item.SetRespawn();
return true;
}
}
}
if (class == Item.InventoryType)
{
if(WeaponPickup(Item) != None && !WeaponPickup(Item).AllowRepeatPickup())
return true;
//if (Enforcer2 == None)
return false;
//return true;
}
if ( Inventory == None )
return false;
return Inventory.HandlePickupQuery(Item);
}
simulated function DisplayDebug(Canvas Canvas, out float YL, out float YPos)
{
super.DisplayDebug(Canvas, YL, YPos);
if (GunState == GS_Master)
Enforcer2.DisplayDebug(Canvas, YL, YPos);
}
function byte BestMode()
{
local Bot B;
B = Bot(Instigator.Controller);
if ( (B != None) && (B.Enemy != None) )
{
if ( VSize(B.Location - B.Enemy.Location) < 1024 )
return 1;
}
return 0;
}
function float GetAIRating()
{
local Bot B;
if ( Enforcer2 == None )
return AIRating;
B = Bot(Instigator.Controller);
if ( B == None )
return AIRating;
if ( B.Enemy == None )
return AIRating;
return (AIRating + 0.0003 * FClamp(1500 - VSize(B.Enemy.Location - Instigator.Location),0,1000));
}
defaultproperties
{
FireModeClass(0)=Class'UT2341WeaponsReducedv1a.UT2341EnforcerFire'
FireModeClass(1)=Class'UT2341WeaponsReducedv1a.UT2341EnforcerAltFire'
PutDownAnim="PutDown"
SelectSound=Sound'UT2341Weapons_Sounds.Enforcer.Cocking'
SelectForce="SwitchToMiniGun"
AIRating=0.400000
CurrentRating=0.400000
bNoAmmoInstances=False
Description="Classification: Light PistolnnPrimary Fire: Accurate but slow firing instant hit.nnSecondary Fire: Sideways, or 'Gangsta' firing mode, shoots faster and less accurately than the primary fire.nnTechniques: Collect two for twice the damage."
EffectOffset=(X=100.000000,Y=30.000000,Z=-16.000000)
Priority=9
HudColor=(B=255)
SmallViewOffset=(X=-2.000000,Z=-13.000000)
CenteredOffsetY=-6.000000
CenteredRoll=0
CenteredYaw=-500
CustomCrosshair=12
CustomCrossHairTextureName="Crosshairs.Hud.Crosshair_Circle1"
InventoryGroup=2
PickupClass=Class'UT2341WeaponsReducedv1a.UT2341EnforcerPickup'
PlayerViewOffset=(X=-2.000000,Z=-13.000000)
BobDamping=2.250000
AttachmentClass=Class'UT2341WeaponsReducedv1a.UT2341EnforcerAttachment'
IconMaterial=Texture'UT2341Weapons_Tex.Icons.Icon_Enforcer'
IconCoords=(X2=128,Y2=32)
ItemName="Enforcer"
LightType=LT_Pulse
LightEffect=LE_NonIncidence
LightHue=30
LightSaturation=150
LightBrightness=255.000000
LightRadius=5.000000
LightPeriod=3
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTEnforcer_FP'
DrawScale=2.000000
SoundRadius=400.000000
}

View File

@@ -0,0 +1,169 @@
/*************************************************************
*
*
*
*************************************************************/
class UT2341EnforcerAltFire extends InstantFire;
var() class<Emitter> NewFlashClass;
var Emitter NewFlashEmitter;
function InitEffects()
{
// don't even spawn on server
if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
return;
if ( (NewFlashClass != None) && ((NewFlashEmitter == None) || NewFlashEmitter.bDeleteMe) )
{
NewFlashEmitter = Weapon.Spawn(NewFlashClass);
Weapon.AttachToBone(NewFlashEmitter, 'tip');
}
if ( (SmokeEmitterClass != None) && ((SmokeEmitter == None) || SmokeEmitter.bDeleteMe) )
{
SmokeEmitter = Weapon.Spawn(SmokeEmitterClass);
}
}
function DrawMuzzleFlash(Canvas Canvas)
{
// Draw smoke first
if (SmokeEmitter != None && SmokeEmitter.Base != Weapon)
{
SmokeEmitter.SetLocation( Weapon.GetEffectStart() );
Canvas.DrawActor( SmokeEmitter, false, false, Weapon.DisplayFOV );
}
if (NewFlashEmitter != None && NewFlashEmitter.Base != Weapon)
{
NewFlashEmitter.SetLocation( Weapon.GetEffectStart() );
Canvas.DrawActor( NewFlashEmitter, false, false, Weapon.DisplayFOV );
}
}
function FlashMuzzleFlash()
{
local rotator r;
r.Roll = Rand(65535);
Weapon.SetBoneRotation('Bone_Flash', r, 0, 1.f);
if (NewFlashEmitter != None)
NewFlashEmitter.Trigger(Weapon, Instigator);
}
simulated function DestroyEffects()
{
if (NewFlashEmitter != None)
NewFlashEmitter.Destroy();
if (SmokeEmitter != None)
SmokeEmitter.Destroy();
}
function DoFireEffect()
{
local Vector StartTrace;
local Rotator R, Aim;
local Vector X,Y,Z;
Instigator.MakeNoise(1.0);
StartTrace = Instigator.Location + Instigator.EyePosition();
Aim = AdjustAim(StartTrace, AimError);
Weapon.GetViewAxes(X, Y, Z);
Spread = FMin(default.Spread + (0.05 * FireCount), 0.3);
if (UT2341Enforcer(Weapon).GunState != GS_Single)
Spread = FClamp(3 * Spread, 0.075, 0.3);
R = rotator(Vector(Aim) + (Spread * (FRand() -0.5) * Y) + (Spread * (FRand() -0.5) * Z));
DoTrace(StartTrace, R);
}
function PlayFireEnd()
{
//no pls
}
function DoTrace(Vector Start, Rotator Dir)
{
local Vector X,Y,Z, End, HitLocation, HitNormal;
local Actor Other;
local SniperWallHitEffect S;
Weapon.GetViewAxes(X, Y, Z);
X = Vector(Dir);
End = Start + TraceRange * X;
Other = Weapon.Trace(HitLocation, HitNormal, End, Start, true);
if ( Other != None && (Other != Instigator) )
{
if ( !Other.bWorldGeometry && Other.bCanBeDamaged )
Other.TakeDamage(DamageMax, Instigator, HitLocation, Momentum*X, DamageType);
else
HitLocation = HitLocation + 2.0 * HitNormal;
}
else
{
HitLocation = End;
HitNormal = Normal(Start - End);
}
if ( (HitNormal != Vect(0,0,0)) && (HitScanBlockingVolume(Other) == None) )
{
S = Weapon.Spawn(class'SniperWallHitEffect',,, HitLocation, rotator(-1 * HitNormal));
if ( S != None )
S.FireStart = Start;
}
}
function PlayFiring()
{
Super.PlayFiring();
if (Weapon.Role == ROLE_Authority)
{
Spread = FMin(default.Spread + (0.05 * FireCount), 0.3);
if (UT2341Enforcer(Weapon).GunState != GS_Single)
Spread = FClamp(3 * Spread, 0.075, 0.3);
}
UT2341Enforcer(Weapon).SpawnShell();
}
function ServerPlayFiring()
{
FireCount++;
}
function StopFiring()
{
Spread = default.Spread;
FireCount = 0;
}
defaultproperties
{
NewFlashClass=Class'UT2341WeaponsReducedv1a.FX_EnforcerMuzFlash'
DamageType=Class'UT2341WeaponsReducedv1a.DamType_Enforcer'
DamageMin=25
DamageMax=25
PreFireTime=0.200000
PreFireAnim="PreAlt"
FireAnim="FireAlt"
FireEndAnim="AltEnd"
PreFireAnimRate=2.000000
FireAnimRate=2.000000
FireEndAnimRate=2.000000
FireSound=Sound'UT2341Weapons_Sounds.Enforcer.Shot'
FireRate=0.290000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341MinigunAmmo'
AmmoPerFire=1
BotRefireRate=0.400000
WarnTargetPct=0.500000
aimerror=850.000000
Spread=0.040000
SpreadStyle=SS_Random
}

View File

@@ -0,0 +1,112 @@
class UT2341EnforcerAttachment extends xWeaponAttachment;
var Emitter mMuzFlash3rd;
var bool bDualGun;
var UT2341EnforcerAttachment Enforcer2Attachment;
var float AimAlpha;
replication
{
reliable if ( Role == ROLE_Authority )
bDualGun, Enforcer2Attachment;
}
simulated function Hide(bool NewbHidden)
{
bHidden = NewbHidden;
if ( Enforcer2Attachment != None )
Enforcer2Attachment.bHidden = bHidden;
}
simulated function Tick(float deltatime)
{
local rotator newRot;
if ( !bDualGun || (Level.NetMode == NM_DedicatedServer) )
{
Disable('Tick');
return;
}
AimAlpha = AimAlpha * ( 1 - 2*DeltaTime);
// point in firing direction
if ( Instigator != None )
{
newRot = Instigator.Rotation;
if ( AimAlpha < 0.5 )
newRot.Yaw += 4500 * (1 - 2*AimAlpha);
Instigator.SetBoneDirection('lfarm', newRot,, 1.0, 1);
newRot.Roll += 32768;
Instigator.SetBoneDirection(AttachmentBone, newRot,, 1.0, 1);
}
}
simulated function Destroyed()
{
if ( bDualGun )
{
if ( Instigator != None )
{
Instigator.SetBoneDirection(AttachmentBone, Rotation,, 0, 0);
Instigator.SetBoneDirection('lfarm', Rotation,, 0, 0);
}
}
if (mMuzFlash3rd != None)
mMuzFlash3rd.Destroy();
Super.Destroyed();
}
simulated function SetOverlayMaterial( Material mat, float time, bool bOverride )
{
Super.SetOverlayMaterial(mat, time, bOverride);
if ( !bDualGun && (Enforcer2Attachment != None) )
Enforcer2Attachment.SetOverlayMaterial(mat, time, bOverride);
}
simulated event ThirdPersonEffects()
{
if ( (FlashCount != 0) && (Level.NetMode != NM_DedicatedServer) )
{
if (FiringMode == 0)
WeaponLight();
if ( Level.TimeSeconds - Instigator.LastRenderTime < 0.2 )
{
if (mMuzFlash3rd == None)
{
mMuzFlash3rd = Spawn(class'FX_EnforcerMuzFlash');
AttachToBone(mMuzFlash3rd, 'tip');
}
if (mMuzFlash3rd != None)
mMuzFlash3rd.Trigger(Self, None);
}
}
Super.ThirdPersonEffects();
}
simulated function Vector GetTipLocation()
{
local Coords C;
C = GetBoneCoords('tip');
return C.Origin;
}
defaultproperties
{
LightType=LT_Steady
LightEffect=LE_NonIncidence
LightHue=30
LightSaturation=224
LightBrightness=255.000000
LightRadius=5.000000
LightPeriod=3
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTEnforcer3rd'
RelativeLocation=(X=3.000000,Z=3.000000)
DrawScale=0.120000
}

View File

@@ -0,0 +1,143 @@
/*************************************************************
*
*
*
*************************************************************/
class UT2341EnforcerFire extends InstantFire;
var() class<Emitter> NewFlashClass;
var Emitter NewFlashEmitter;
function InitEffects()
{
// don't even spawn on server
if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
return;
if ( (NewFlashClass != None) && ((NewFlashEmitter == None) || NewFlashEmitter.bDeleteMe) )
{
NewFlashEmitter = Weapon.Spawn(NewFlashClass);
Weapon.AttachToBone(NewFlashEmitter, 'tip');
}
if ( (SmokeEmitterClass != None) && ((SmokeEmitter == None) || SmokeEmitter.bDeleteMe) )
{
SmokeEmitter = Weapon.Spawn(SmokeEmitterClass);
}
}
function DrawMuzzleFlash(Canvas Canvas)
{
// Draw smoke first
if (SmokeEmitter != None && SmokeEmitter.Base != Weapon)
{
SmokeEmitter.SetLocation( Weapon.GetEffectStart() );
Canvas.DrawActor( SmokeEmitter, false, false, Weapon.DisplayFOV );
}
if (NewFlashEmitter != None && NewFlashEmitter.Base != Weapon)
{
NewFlashEmitter.SetLocation( Weapon.GetEffectStart() );
Canvas.DrawActor( NewFlashEmitter, false, false, Weapon.DisplayFOV );
}
}
function FlashMuzzleFlash()
{
local rotator r;
r.Roll = Rand(65535);
Weapon.SetBoneRotation('Bone_Flash', r, 0, 1.f);
if (NewFlashEmitter != None)
NewFlashEmitter.Trigger(Weapon, Instigator);
}
function DoFireEffect()
{
local Vector StartTrace;
local Rotator R, Aim;
local Vector X,Y,Z;
Instigator.MakeNoise(1.0);
StartTrace = Instigator.Location + Instigator.EyePosition();
Aim = AdjustAim(StartTrace, AimError);
Weapon.GetViewAxes(X, Y, Z);
//R = rotator(vector(Aim) + VRand()*FRand()*Spread);
//UT99 Enforcer spread implementation - Spread == UT99's Accuracy value/10
if (UT2341Enforcer(Weapon).GunState != GS_Single)
Spread = 0.075;
R = rotator(Vector(Aim) + (Spread * (FRand() -0.5) * Y) + (Spread * (FRand() -0.5) * Z));
DoTrace(StartTrace, R);
}
simulated function DestroyEffects()
{
if (NewFlashEmitter != None)
NewFlashEmitter.Destroy();
if (SmokeEmitter != None)
SmokeEmitter.Destroy();
}
function DoTrace(Vector Start, Rotator Dir)
{
local Vector X,Y,Z, End, HitLocation, HitNormal;
local Actor Other;
local SniperWallHitEffect S;
Weapon.GetViewAxes(X, Y, Z);
X = Vector(Dir);
End = Start + TraceRange * X;
Other = Weapon.Trace(HitLocation, HitNormal, End, Start, true);
if ( Other != None && (Other != Instigator) )
{
if ( !Other.bWorldGeometry && Other.bCanBeDamaged )
Other.TakeDamage(DamageMax, Instigator, HitLocation, Momentum*X, DamageType);
else
HitLocation = HitLocation + 2.0 * HitNormal;
}
else
{
HitLocation = End;
HitNormal = Normal(Start - End);
}
if ( (HitNormal != Vect(0,0,0)) && (HitScanBlockingVolume(Other) == None) )
{
S = Weapon.Spawn(class'SniperWallHitEffect',,, HitLocation, rotator(-1 * HitNormal));
if ( S != None )
S.FireStart = Start;
}
}
function PlayFiring()
{
Super.PlayFiring();
UT2341Enforcer(Weapon).SpawnShell();
}
function StopFiring()
{
Spread = default.Spread;
}
defaultproperties
{
NewFlashClass=Class'UT2341WeaponsReducedv1a.FX_EnforcerMuzFlash'
DamageType=Class'UT2341WeaponsReducedv1a.DamType_Enforcer'
DamageMin=25
DamageMax=25
FireSound=Sound'UT2341Weapons_Sounds.Enforcer.Shot'
FireRate=0.400000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341MinigunAmmo'
AmmoPerFire=1
BotRefireRate=0.400000
WarnTargetPct=0.500000
aimerror=850.000000
Spread=0.020000
SpreadStyle=SS_Random
}

View File

@@ -0,0 +1,35 @@
//=============================================================================
// Minigun.
//=============================================================================
class UT2341EnforcerPickup extends UTWeaponPickup;
static function StaticPrecache(LevelInfo L)
{
L.AddPrecacheMaterial(Texture'XEffects.ShellCasingTex');
L.AddPrecacheMaterial(Texture'AW-2004Explosions.Part_explode2s');
L.AddPrecacheMaterial(Texture'AW-2004Particles.TracerShot');
L.AddPrecacheStaticMesh(StaticMesh'UT2341Weapons_SM.UTMinigun');
}
simulated function UpdatePrecacheMaterials()
{
Level.AddPrecacheMaterial(Texture'XEffects.ShellCasingTex');
Level.AddPrecacheMaterial(Texture'AW-2004Explosions.Part_explode2s');
Level.AddPrecacheMaterial(Texture'AW-2004Particles.TracerShot');
super.UpdatePrecacheMaterials();
}
defaultproperties
{
MaxDesireability=0.730000
InventoryType=Class'UT2341WeaponsReducedv1a.UT2341Enforcer'
PickupMessage="You got an Enforcer."
PickupSound=Sound'UT2341Weapons_Sounds.General.WeaponPickup'
PickupForce="MinigunPickup"
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'UT2341Weapons_SM.General.UTEnforcer'
DrawScale=0.220000
AmbientGlow=64
RotationRate=(Yaw=5000)
}

View File

@@ -0,0 +1,31 @@
class UT2341FlakAltFire extends ProjectileFire;
function InitEffects()
{
Super.InitEffects();
if ( FlashEmitter == None )
FlashEmitter = Weapon.GetFireMode(0).FlashEmitter;
}
defaultproperties
{
ProjSpawnOffset=(X=25.000000,Y=9.000000,Z=-12.000000)
bSplashDamage=True
bRecommendSplashDamage=True
bTossed=True
FireAnim="FireAltLoad"
FireEndAnim=
FireAnimRate=0.900000
FireSound=Sound'UT2341Weapons_Sounds.flak.Explode1'
FireForce="FlakCannonAltFire"
FireRate=1.000000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341FlakAmmo'
AmmoPerFire=1
ShakeRotTime=2.000000
ShakeOffsetMag=(X=-20.000000)
ShakeOffsetRate=(X=-1000.000000)
ShakeOffsetTime=2.000000
ProjectileClass=Class'UT2341WeaponsReducedv1a.UT2341FlakShell'
BotRefireRate=0.500000
WarnTargetPct=0.900000
}

View File

@@ -0,0 +1,12 @@
class UT2341FlakAmmo extends Ammunition;
#EXEC OBJ LOAD FILE=InterfaceContent.utx
defaultproperties
{
MaxAmmo=50
PickupClass=Class'UT2341WeaponsReducedv1a.UT2341FlakAmmoPickup'
IconMaterial=Texture'HUDContent.Generic.HUD'
IconCoords=(X1=394,Y1=40,X2=457,Y2=81)
ItemName="Flak Shells"
}

View File

@@ -0,0 +1,22 @@
class UT2341FlakAmmoPickup extends UTAmmoPickup;
function RespawnEffect()
{
spawn(class'FX_PickupRespawn');
}
defaultproperties
{
AmmoAmount=10
MaxDesireability=0.320000
InventoryType=Class'UT2341WeaponsReducedv1a.UT2341FlakAmmo'
PickupMessage="You picked up 10 Flak Shells."
PickupSound=Sound'UT2341Weapons_Sounds.General.AmmoSnd'
PickupForce="FlakAmmoPickup"
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'UT2341Weapons_SM.General.UTFlakAmmo'
DrawScale=0.250000
PrePivot=(Z=40.000000)
AmbientGlow=48
CollisionHeight=8.250000
}

View File

@@ -0,0 +1,64 @@
class UT2341FlakAttachment extends xWeaponAttachment;
var class<FlakMuzFlash3rd> mMuzFlashClass;
var xEmitter mMuzFlash3rd;
simulated function PostNetBeginPlay()
{
Super.PostNetBeginPlay();
PlayAnim('Select', 1.35);
}
simulated function Destroyed()
{
if (mMuzFlash3rd != None)
mMuzFlash3rd.Destroy();
Super.Destroyed();
}
simulated event ThirdPersonEffects()
{
local rotator r;
if ( Level.NetMode != NM_DedicatedServer && FlashCount > 0 )
{
WeaponLight();
if (mMuzFlash3rd == None)
{
mMuzFlash3rd = Spawn(mMuzFlashClass);
AttachToBone(mMuzFlash3rd, 'tip');
}
if (mMuzFlash3rd != None)
{
r.Roll = Rand(65536);
SetBoneRotation('Bone_Flash', r, 0, 1.f);
mMuzFlash3rd.mStartParticles++;
}
}
if (FiringMode == 0)
PlayAnim('FireLoad',1.35);
else PlayAnim('FireAltLoad',1.25);
Super.ThirdPersonEffects();
}
simulated function Notify_AttachmentLoad()
{
if (Level.NetMode != NM_DedicatedServer && !Instigator.IsLocallyControlled())
PlaySound(Sound'UT2341Weapons_Sounds.Flak.load1', SLOT_None,0.65,,,,false);
}
defaultproperties
{
mMuzFlashClass=Class'XEffects.FlakMuzFlash3rd'
bHeavy=True
LightType=LT_Steady
LightEffect=LE_NonIncidence
LightHue=30
LightSaturation=150
LightBrightness=255.000000
LightRadius=4.000000
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTFlakCannon3rd'
DrawScale=0.100000
}

View File

@@ -0,0 +1,142 @@
//=============================================================================
// Flak Cannon
//=============================================================================
class UT2341FlakCannon extends Weapon
config(user);
#EXEC OBJ LOAD FILE=InterfaceContent.utx
simulated function Notify_Hydraulic()
{
if (Instigator.IsLocallyControlled())
PlaySound(Sound'UT2341Weapons_Sounds.Flak.load1', SLOT_None,0.65,,,,false);
}
simulated function Notify_HydraulicSelect()
{
PlayOwnedSound(Sound'UT2341Weapons_Sounds.Flak.Hidraul2', SLOT_None,0.8,,,,false);
}
// AI Interface
function float GetAIRating()
{
local Bot B;
local float EnemyDist;
local vector EnemyDir;
B = Bot(Instigator.Controller);
if ( B == None )
return AIRating;
if ( (B.Target != None) && (Pawn(B.Target) == None) && (VSize(B.Target.Location - Instigator.Location) < 1250) )
return 0.9;
if ( B.Enemy == None )
{
if ( (B.Target != None) && VSize(B.Target.Location - B.Pawn.Location) > 3500 )
return 0.2;
return AIRating;
}
EnemyDir = B.Enemy.Location - Instigator.Location;
EnemyDist = VSize(EnemyDir);
if ( EnemyDist > 750 )
{
if ( EnemyDist > 2000 )
{
if ( EnemyDist > 3500 )
return 0.2;
return (AIRating - 0.3);
}
if ( EnemyDir.Z < -0.5 * EnemyDist )
return (AIRating - 0.3);
}
else if ( (B.Enemy.Weapon != None) && B.Enemy.Weapon.bMeleeWeapon )
return (AIRating + 0.35);
else if ( EnemyDist < 400 )
return (AIRating + 0.2);
return FMax(AIRating + 0.2 - (EnemyDist - 400) * 0.0008, 0.2);
}
/* BestMode()
choose between regular or alt-fire
*/
function byte BestMode()
{
local vector EnemyDir;
local float EnemyDist;
local bot B;
B = Bot(Instigator.Controller);
if ( (B == None) || (B.Enemy == None) )
return 0;
EnemyDir = B.Enemy.Location - Instigator.Location;
EnemyDist = VSize(EnemyDir);
if ( EnemyDist > 750 )
{
if ( EnemyDir.Z < -0.5 * EnemyDist )
return 1;
return 0;
}
else if ( (B.Enemy.Weapon != None) && B.Enemy.Weapon.bMeleeWeapon )
return 0;
else if ( (EnemyDist < 400) || (EnemyDir.Z > 30) )
return 0;
else if ( FRand() < 0.65 )
return 1;
return 0;
}
function float SuggestAttackStyle()
{
if ( (AIController(Instigator.Controller) != None)
&& (AIController(Instigator.Controller).Skill < 3) )
return 0.4;
return 0.8;
}
function float SuggestDefenseStyle()
{
return -0.4;
}
// End AI Interface
defaultproperties
{
FireModeClass(0)=Class'UT2341WeaponsReducedv1a.UT2341FlakFire'
FireModeClass(1)=Class'UT2341WeaponsReducedv1a.UT2341FlakAltFire'
PutDownAnim="PutDown"
BringUpTime=1.000000
SelectSound=Sound'UT2341Weapons_Sounds.flak.pdown'
SelectForce="SwitchToFlakCannon"
AIRating=0.750000
CurrentRating=0.750000
Description="Classification: Heavy Shrapnel||Primary Fire: White hot chunks of scrap metal are sprayed forth, shotgun style.||Secondary Fire: A grenade full of shrapnel is lobbed at the enemy.||Techniques: The Flak Cannon is far more useful in close range combat situations."
EffectOffset=(X=200.000000,Y=32.000000,Z=-25.000000)
DisplayFOV=80.000000
Priority=13
HudColor=(G=128)
SmallViewOffset=(X=5.000000,Z=-7.000000)
CenteredOffsetY=-4.000000
CenteredRoll=3000
CenteredYaw=-500
CustomCrosshair=9
CustomCrossHairColor=(B=0,G=128)
CustomCrossHairTextureName="Crosshairs.Hud.Crosshair_Triad3"
InventoryGroup=8
PickupClass=Class'UT2341WeaponsReducedv1a.UT2341FlakCannonPickup'
PlayerViewOffset=(X=5.000000,Z=-7.000000)
BobDamping=1.400000
AttachmentClass=Class'UT2341WeaponsReducedv1a.UT2341FlakAttachment'
IconMaterial=Texture'UT2341Weapons_Tex.Icons.Icon_FlakCannon'
IconCoords=(X2=128,Y2=32)
ItemName="Flak Cannon"
LightType=LT_Steady
LightEffect=LE_NonIncidence
LightHue=30
LightSaturation=150
LightBrightness=255.000000
LightRadius=4.000000
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTFlakCannonFP'
}

View File

@@ -0,0 +1,61 @@
//=============================================================================
// FlakCannonPickup.
//=============================================================================
class UT2341FlakCannonPickup extends UTWeaponPickup;
#exec OBJ LOAD FILE=WeaponStaticMesh.usx
static function StaticPrecache(LevelInfo L)
{
L.AddPrecacheMaterial(Texture'XEffects.FlakTrailTex');
if ( L.DetailMode != DM_Low )
L.AddPrecacheMaterial(Texture'XEffects.fexpt');
L.AddPrecacheMaterial(Texture'XEffects.ExplosionFlashTex');
L.AddPrecacheMaterial(Texture'XEffects.GoldGlow');
L.AddPrecacheMaterial(Texture'WeaponSkins.FlakTex0');
L.AddPrecacheMaterial(Texture'WeaponSkins.FlakTex1');
L.AddPrecacheMaterial(Texture'WeaponSkins.FlakChunkTex');
L.AddPrecacheMaterial(Texture'XWeapons.NewFlakSkin');
L.AddPrecacheMaterial(Texture'XGameShaders.flak_flash');
L.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.flakchunk');
L.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.flakshell');
L.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.FlakCannonPickup');
}
simulated function UpdatePrecacheMaterials()
{
Level.AddPrecacheMaterial(Texture'XEffects.FlakTrailTex');
if ( Level.DetailMode != DM_Low )
Level.AddPrecacheMaterial(Texture'XEffects.fexpt');
Level.AddPrecacheMaterial(Texture'XEffects.ExplosionFlashTex');
Level.AddPrecacheMaterial(Texture'XEffects.GoldGlow');
Level.AddPrecacheMaterial(Texture'WeaponSkins.FlakTex0');
Level.AddPrecacheMaterial(Texture'WeaponSkins.FlakTex1');
Level.AddPrecacheMaterial(Texture'WeaponSkins.FlakChunkTex');
Level.AddPrecacheMaterial(Texture'XWeapons.NewFlakSkin');
Level.AddPrecacheMaterial(Texture'XGameShaders.flak_flash');
super.UpdatePrecacheMaterials();
}
simulated function UpdatePrecacheStaticMeshes()
{
Level.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.flakchunk');
Level.AddPrecacheStaticMesh(StaticMesh'WeaponStaticMesh.flakshell');
Super.UpdatePrecacheStaticMeshes();
}
defaultproperties
{
MaxDesireability=0.750000
InventoryType=Class'UT2341WeaponsReducedv1a.UT2341FlakCannon'
PickupMessage="You got the Flak Cannon."
PickupSound=Sound'UT2341Weapons_Sounds.General.WeaponPickup'
PickupForce="FlakCannonPickup"
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'UT2341Weapons_SM.General.UTFlakCannon'
DrawScale=1.500000
AmbientGlow=48
RotationRate=(Yaw=5000)
}

View File

@@ -0,0 +1,208 @@
//=============================================================================
// FlakChunk.
//=============================================================================
class UT2341FlakChunk extends Projectile;
var Emitter Glow;
var byte Bounces;
var float DamageAtten;
var sound ImpactSounds[3];
var ConstantColor myConstantColor;
var Combiner myCombiner;
replication
{
reliable if (bNetInitial && Role == ROLE_Authority)
Bounces;
}
simulated function Destroyed()
{
if (Glow!=None)
Glow.Destroy();
if (Level.NetMode != NM_DedicatedServer)
{
myCombiner.Material1 = None;
myCombiner.Material2 = None;
myCombiner.Mask = None;
Level.ObjectPool.FreeObject(myCombiner);
Level.ObjectPool.FreeObject(myConstantColor);
}
Super.Destroyed();
}
simulated function PostBeginPlay()
{
local float r;
if ( Level.NetMode != NM_DedicatedServer )
{
if ( !PhysicsVolume.bWaterVolume )
{
Glow = Spawn(class'FX_FlakChunkGlow',self);
Glow.SetBase(self);
}
}
if (Role == ROLE_Authority)
{
Velocity = Vector(Rotation) * (Speed + (FRand() * 200 - 100));
if (PhysicsVolume.bWaterVolume)
Velocity *= 0.65;
}
r = FRand();
if (r > 0.75)
Bounces = 2;
else if (r > 0.25)
Bounces = 1;
else
Bounces = 0;
SetRotation(RotRand());
Super.PostBeginPlay();
}
//===========================================================================
// PostNetBeginPlay
//
// Apparently, SetOverlayMaterial doesn't work for this class.
// Hence, this irritating and convoluted method!
//===========================================================================
simulated function PostNetBeginPlay()
{
if (Level.NetMode != NM_DedicatedServer)
{
myConstantColor = ConstantColor(Level.ObjectPool.AllocateObject(class'ConstantColor'));
myConstantColor.Color.R = 255;
myConstantColor.Color.G = 255;
myConstantColor.Color.B = 255;
myConstantColor.Color.A = 0;
myCombiner = Combiner(Level.ObjectPool.AllocateObject(class'Combiner'));
myCombiner.CombineOperation = CO_AlphaBlend_With_Mask;
myCombiner.AlphaOperation = AO_Use_Mask;
myCombiner.Material2 = Texture'WeaponSkins.Skins.FlakChunkTex';
myCombiner.Material1 = Texture'UT2341Weapons_Tex.Flak.FlakChunkHot';
myCombiner.Mask = myConstantColor;
Skins[0] = myCombiner;
}
}
simulated function ProcessTouch (Actor Other, vector HitLocation)
{
if ( (FlakChunk(Other) == None) && ((Physics == PHYS_Falling) || (Other != Instigator)) )
{
speed = VSize(Velocity);
if ( speed > 200 )
{
if (FRand() > 0.5)
PlaySound(Sound'UT2341Weapons_Sounds.Flak.ChunkHit');
if ( Role == ROLE_Authority )
{
if ( Instigator == None || Instigator.Controller == None )
Other.SetDelayedDamageInstigatorController( InstigatorController );
Other.TakeDamage( Damage, Instigator, HitLocation,
(MomentumTransfer * Velocity/speed), MyDamageType );
}
}
Destroy();
}
}
simulated function Landed( Vector HitNormal )
{
SetPhysics(PHYS_None);
LifeSpan = 1.0;
}
simulated function HitWall( vector HitNormal, actor Wall )
{
if ( !Wall.bStatic && !Wall.bWorldGeometry
&& ((Mover(Wall) == None) || Mover(Wall).bDamageTriggered) )
{
if ( Level.NetMode != NM_Client )
{
if ( Instigator == None || Instigator.Controller == None )
Wall.SetDelayedDamageInstigatorController( InstigatorController );
Wall.TakeDamage( Damage, instigator, Location, MomentumTransfer * Normal(Velocity), MyDamageType);
}
Destroy();
return;
}
SetPhysics(PHYS_Falling);
if (Bounces > 0)
{
if ( !Level.bDropDetail && (FRand() < 0.4) )
Playsound(ImpactSounds[Rand(3)]);
Velocity = 0.65 * (Velocity - 2.0*HitNormal*(Velocity dot HitNormal));
Bounces = Bounces - 1;
return;
}
bBounce = false;
}
simulated function PhysicsVolumeChange( PhysicsVolume Volume )
{
if (Volume.bWaterVolume)
{
if ( Glow != None )
Glow.Destroy();
Velocity *= 0.65;
}
}
simulated function Tick(float DeltaTime)
{
Super.Tick(DeltaTime);
if (Level.NetMode == NM_DedicatedServer)
return;
if (myConstantColor != None)
{
if ( (DeltaTime * 255 + myConstantColor.Color.A) > 255)
{
MyConstantColor.Color.A = 255;
Disable('Tick');
}
else myConstantColor.Color.A += DeltaTime * 2 * 255;
AmbientGlow = 255 - myConstantColor.Color.A;
}
}
/*
n.b
flak chunk speed values match ut99 exactly, with no compensatory mechanism,
because flak was too strong
*/
defaultproperties
{
Bounces=1
ImpactSounds(0)=Sound'UT2341Weapons_Sounds.flak.Hit1'
ImpactSounds(1)=Sound'UT2341Weapons_Sounds.flak.Hit3'
ImpactSounds(2)=Sound'UT2341Weapons_Sounds.flak.Hit5'
Speed=2750.000000
MaxSpeed=2970.000000
Damage=24.000000
MomentumTransfer=10000.000000
MyDamageType=Class'UT2341WeaponsReducedv1a.DamType_Flak'
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'WeaponStaticMesh.FlakChunk'
CullDistance=3000.000000
LifeSpan=2.000000
DrawScale=21.000000
AmbientGlow=64
bBounce=True
}

View File

@@ -0,0 +1,31 @@
class UT2341FlakFire extends ProjectileFire;
function InitEffects()
{
Super.InitEffects();
if ( FlashEmitter != None )
Weapon.AttachToBone(FlashEmitter, 'tip');
}
defaultproperties
{
ProjPerFire=8
ProjSpawnOffset=(X=15.000000,Y=5.000000,Z=-6.000000)
FireAnim="FireLoad"
FireEndAnim=
FireAnimRate=1.250000
FireSound=Sound'UT2341Weapons_Sounds.flak.shot1'
FireForce="FlakCannonFire"
FireRate=0.785000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341FlakAmmo'
AmmoPerFire=1
ShakeRotTime=2.000000
ShakeOffsetMag=(X=-20.000000)
ShakeOffsetRate=(X=-1000.000000)
ShakeOffsetTime=2.000000
ProjectileClass=Class'UT2341WeaponsReducedv1a.UT2341FlakChunk'
BotRefireRate=0.700000
FlashEmitterClass=Class'XEffects.FlakMuzFlash1st'
Spread=2000.000000
SpreadStyle=SS_Random
}

View File

@@ -0,0 +1,127 @@
//=============================================================================
// flakshell
//=============================================================================
class UT2341FlakShell extends Projectile;
#exec OBJ LOAD File=UT2341Weapons_Sounds.uax
var xEmitter Trail;
var vector initialDir;
var actor Glow;
simulated function PostBeginPlay()
{
local Rotator R;
local PlayerController PC;
if ( !PhysicsVolume.bWaterVolume && (Level.NetMode != NM_DedicatedServer) )
{
PC = Level.GetLocalPlayerController();
if ( (PC.ViewTarget != None) && VSize(PC.ViewTarget.Location - Location) < 6000 )
Trail = Spawn(class'FlakShellTrail',self);
Glow = Spawn(class'FlakGlow', self);
}
Super.PostBeginPlay();
Velocity = Vector(Rotation) * Speed;
R = Rotation;
R.Roll = 32768;
SetRotation(R);
Velocity.z += TossZ;
initialDir = Velocity;
}
simulated function destroyed()
{
if ( Trail != None )
Trail.mRegen=False;
if ( glow != None )
Glow.Destroy();
Super.Destroyed();
}
simulated function ProcessTouch(Actor Other, Vector HitLocation)
{
if ( Other != Instigator )
{
SpawnEffects(HitLocation, -1 * Normal(Velocity) );
Explode(HitLocation,Normal(HitLocation-Other.Location));
}
}
simulated function SpawnEffects( vector HitLocation, vector HitNormal )
{
local PlayerController PC;
PlaySound (Sound'UT2341Weapons_Sounds.General.Expl04',,3*TransientSoundVolume);
if ( EffectIsRelevant(Location,false) )
{
PC = Level.GetLocalPlayerController();
if ( (PC.ViewTarget != None) && VSize(PC.ViewTarget.Location - Location) < 3000 )
spawn(class'FlakExplosion',,,HitLocation + HitNormal*16 );
spawn(class'FlashExplosion',,,HitLocation + HitNormal*16 );
spawn(class'RocketSmokeRing',,,HitLocation + HitNormal*16, rotator(HitNormal) );
if ( (ExplosionDecal != None) && (Level.NetMode != NM_DedicatedServer) )
Spawn(ExplosionDecal,self,,HitLocation, rotator(-HitNormal));
}
}
simulated function Landed( vector HitNormal )
{
SpawnEffects( Location, HitNormal );
Explode(Location,HitNormal);
}
simulated function HitWall (vector HitNormal, actor Wall)
{
Landed(HitNormal);
}
simulated function Explode(vector HitLocation, vector HitNormal)
{
local vector start;
local rotator rot;
local int i;
local UT2341FlakChunk NewChunk;
start = Location + 10 * HitNormal;
if ( Role == ROLE_Authority )
{
HurtRadius(damage, 220, MyDamageType, MomentumTransfer, HitLocation);
for (i=0; i<4; i++)
{
rot = Rotation;
rot.yaw += FRand()*32000-16000;
rot.pitch += FRand()*32000-16000;
rot.roll += FRand()*32000-16000;
NewChunk = Spawn( class 'UT2341FlakChunk',, '', Start, rot);
}
}
Destroy();
}
defaultproperties
{
Speed=1380.000000
TossZ=225.000000
Damage=105.000000
MomentumTransfer=75000.000000
MyDamageType=Class'UT2341WeaponsReducedv1a.DamType_FlakShell'
ExplosionDecal=Class'XEffects.ShockAltDecal'
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'WeaponStaticMesh.FlakShell'
CullDistance=4000.000000
Physics=PHYS_Falling
AmbientSound=Sound'WeaponSounds.BaseProjectileSounds.BFlakCannonProjectile'
LifeSpan=6.000000
DrawScale=8.000000
Skins(0)=Texture'XWeapons.Skins.NewFlakSkin'
AmbientGlow=100
SoundVolume=255
SoundRadius=100.000000
bProjTarget=True
ForceType=FT_Constant
ForceRadius=60.000000
ForceScale=5.000000
}

View File

@@ -0,0 +1,167 @@
//=============================================================================
// Shield Gun
//=============================================================================
class UT2341Hammer extends Weapon
config(user)
HideDropDown;
replication
{
reliable if (Role == ROLE_Authority)
ClientForceRelease;
}
simulated function ClientForceRelease(byte Mode)
{
if (Role < ROLE_Authority)
StopFire(Mode);
}
// AI Interface
function GiveTo(Pawn Other, optional Pickup Pickup)
{
Super.GiveTo(Other, Pickup);
if ( Bot(Other.Controller) != None )
Bot(Other.Controller).bHasImpactHammer = true;
}
function bool CanAttack(Actor Other)
{
return true;
}
simulated function Timer()
{
local Bot B;
if (ClientState == WS_BringUp)
{
// check if owner is bot waiting to do impact jump
B = Bot(Instigator.Controller);
if ( (B != None) && B.bPreparingMove && (B.ImpactTarget != None) )
{
B.ImpactJump();
B = None;
}
}
Super.Timer();
if ( (B != None) && (B.Enemy != None) )
BotFire(false);
}
function FireHack(byte Mode)
{
if ( Mode == 0 )
{
FireMode[0].PlayFiring();
FireMode[0].FlashMuzzleFlash();
FireMode[0].StartMuzzleSmoke();
IncrementFlashCount(0);
}
}
/* BestMode()
choose between regular or alt-fire
*/
function byte BestMode()
{
return 0;
}
// super desireable for bot waiting to impact jump
function float GetAIRating()
{
local Bot B;
local float EnemyDist;
B = Bot(Instigator.Controller);
if ( B == None )
return AIRating;
if ( B.bPreparingMove && (B.ImpactTarget != None) )
return 9;
if ( B.Enemy == None )
return AIRating;
EnemyDist = VSize(B.Enemy.Location - Instigator.Location);
if ( B.Stopped() && (EnemyDist > 100) )
return 0.1;
if ( (EnemyDist < 750) && (B.Skill <= 2) && !B.Enemy.IsA('Bot') && (UT2341Hammer(B.Enemy.Weapon) != None) )
return FClamp(300/(EnemyDist + 1), 0.6, 0.75);
if ( EnemyDist > 400 )
return 0.1;
if ( (Instigator.Weapon != self) && (EnemyDist < 120) )
return 0.25;
return ( FMin(0.6, 90/(EnemyDist + 1)) );
}
// End AI interface
simulated function AnimEnd(int channel)
{
if (FireMode[0].bIsFiring)
{
LoopAnim('FireLoop', 2);
Instigator.AmbientSound = UT2341HammerFire(FireMode[0]).ChargingSound;
Instigator.SoundVolume = UT2341HammerFire(FireMode[0]).ChargingSoundVolume;
}
else
Super.AnimEnd(channel);
}
function float SuggestAttackStyle()
{
return 0.8;
}
function float SuggestDefenseStyle()
{
return -0.8;
}
simulated function float ChargeBar()
{
return FMin(1,FireMode[0].HoldTime/UT2341HammerFire(FireMode[0]).FullyChargedTime);
}
defaultproperties
{
FireModeClass(0)=Class'UT2341WeaponsReducedv1a.UT2341HammerFire'
FireModeClass(1)=Class'UT2341WeaponsReducedv1a.UT2341HammerAltFire'
PutDownAnim="PutDown"
BringUpTime=0.500000
SelectSound=Sound'UT2341Weapons_Sounds.Hammer.ImpactPickup'
SelectForce="ShieldGun_change"
AIRating=0.350000
CurrentRating=0.350000
bMeleeWeapon=True
bShowChargingBar=True
bCanThrow=False
Description="Classification: Melee Piston||Primary Fire: When trigger is held down, touch opponents with this piston to inflict massive damage.||Secondary Fire: Damages opponents at close range and has the ability to deflect projectiles.||Techniques: Shoot at the ground while jumping to jump extra high."
EffectOffset=(X=15.000000,Y=5.500000,Z=2.000000)
DisplayFOV=80.000000
Priority=2
HudColor=(G=150)
SmallViewOffset=(Z=-13.000000)
CenteredOffsetY=-9.000000
CenteredRoll=1000
CustomCrosshair=6
CustomCrossHairColor=(B=121,G=188)
CustomCrossHairTextureName="Crosshairs.Hud.Crosshair_Pointer"
PickupClass=Class'XWeapons.ShieldGunPickup'
PlayerViewOffset=(Z=-13.000000)
PlayerViewPivot=(Pitch=1024)
BobDamping=2.200000
AttachmentClass=Class'UT2341WeaponsReducedv1a.UT2341HammerAttachment'
IconMaterial=Texture'UT2341Weapons_Tex.Icons.Icon_ImpactHammer'
IconCoords=(X2=127,Y2=31)
ItemName="Impact Hammer"
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTImpactHammerFP'
DrawScale=1.500000
TransientSoundVolume=1.000000
}

View File

@@ -0,0 +1,85 @@
class UT2341HammerAltFire extends WeaponFire;
var class<DamageType> DamageType; // weapon fire damage type (no projectile, so we put this here)
var float HammerLongRange; // from pawn centre
var float Force; // force to other players
var float Damage;
var float SelfDamageScale; // %damage to self (when shielding a wall)
simulated function InitEffects()
{
}
function Rotator AdjustAim(Vector Start, float InAimError)
{
local rotator Aim, EnemyAim;
if ( AIController(Instigator.Controller) != None )
{
Aim = Instigator.Rotation;
if ( Instigator.Controller.Enemy != None )
{
EnemyAim = rotator(Instigator.Controller.Enemy.Location - Start);
Aim.Pitch = EnemyAim.Pitch;
}
return Aim;
}
else
return super.AdjustAim(Start,InAimError);
}
function DoFireEffect()
{
local Vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local Rotator Aim;
local Actor Other;
Instigator.MakeNoise(1.0);
Weapon.GetViewAxes(X,Y,Z);
StartTrace = Instigator.Location + Instigator.EyePosition();
Aim = AdjustAim(StartTrace, AimError);
EndTrace = StartTrace + HammerLongRange * Vector(Aim);
Other = Weapon.Trace(HitLocation, HitNormal, EndTrace, StartTrace, true);
if ( Other != None && Other != Instigator )
{
if ( Pawn(Other) != None || (Decoration(Other) != None && Decoration(Other).bDamageable) || TranslocatorBeacon(Other) != None)
{
if (Pawn(Other) == None || Pawn(Other).Controller == None || !Pawn(Other).Controller.SameTeamAs(Instigator.Controller))
Other.TakeDamage(Damage , Instigator, HitLocation, Force*(X+vect(0,0,0.5)), DamageType);
}
else
{
if ( xPawn(Instigator).bBerserk )
Force *= 2.0;
Instigator.TakeDamage(SelfDamageScale*Damage, Instigator, HitLocation, -Force*X, DamageType);
if ( DestroyableObjective(Other) != None )
Other.TakeDamage(Damage, Instigator, HitLocation, Force*(X+vect(0,0,0.5)), DamageType);
}
}
}
defaultproperties
{
DamageType=Class'UT2341WeaponsReducedv1a.DamType_Hammer'
HammerLongRange=200.000000
Force=35000.000000
Damage=30.000000
SelfDamageScale=1.200000
TransientSoundVolume=1.000000
FireLoopAnim=
FireEndAnim=
TweenTime=0.000000
FireSound=Sound'UT2341Weapons_Sounds.Hammer.ImpactAltFire'
FireForce="ShieldGunFire"
FireRate=0.810000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341HammerAmmo'
ShakeRotTime=2.000000
ShakeOffsetMag=(X=-20.000000)
ShakeOffsetRate=(X=-1000.000000)
ShakeOffsetTime=2.000000
BotRefireRate=1.000000
WarnTargetPct=0.100000
FlashEmitterClass=Class'XEffects.ForceRingA'
}

View File

@@ -0,0 +1,8 @@
class UT2341HammerAmmo extends Ammunition;
defaultproperties
{
MaxAmmo=1
InitialAmount=1
ItemName="HammerCharge"
}

View File

@@ -0,0 +1,8 @@
class UT2341HammerAttachment extends xWeaponAttachment;
defaultproperties
{
bHeavy=True
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTImpactHammer3rd'
DrawScale=0.200000
}

View File

@@ -0,0 +1,240 @@
class UT2341HammerFire extends WeaponFire;
var class<DamageType> DamageType; // weapon fire damage type (no projectile, so we put this here)
var float AutoCheckRange, HammerLongRange; // from pawn centre
var float Force; // force to other players
var float Damage;
var float SelfDamageScale; // %damage to self (when shielding a wall)
var float MinSelfDamage;
var Sound ChargingSound; // charging sound
var float AutoFireTestFreq;
var float FullyChargedTime; // held for this long will do max damage
var bool bAutoRelease;
var bool bStartedChargingForce;
var byte ChargingSoundVolume;
var Pawn AutoHitPawn;
var float AutoHitTime;
var bool bCheckingHit;
var sound PreFireSound;
// jdf ---
var String ChargingForce;
// --- jdf
simulated function InitEffects()
{
bStartedChargingForce = false; // jdf
}
function Rotator AdjustAim(Vector Start, float InAimError)
{
local rotator Aim, EnemyAim;
if ( AIController(Instigator.Controller) != None )
{
Aim = Instigator.Rotation;
if ( Instigator.Controller.Enemy != None )
{
EnemyAim = rotator(Instigator.Controller.Enemy.Location - Start);
Aim.Pitch = EnemyAim.Pitch;
}
return Aim;
}
else
return super.AdjustAim(Start,InAimError);
}
function DoFireEffect()
{
local Vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z;
local Rotator Aim;
local Actor Other;
local float Scale;
Instigator.MakeNoise(1.0);
Weapon.GetViewAxes(X,Y,Z);
bAutoRelease = false;
if ( (AutoHitPawn != None) && (Level.TimeSeconds - AutoHitTime < 0.15) )
{
Other = AutoHitPawn;
HitLocation = Other.Location;
AutoHitPawn = None;
}
else
{
StartTrace = Instigator.Location + Instigator.EyePosition();
Aim = AdjustAim(StartTrace, AimError);
EndTrace = StartTrace + HammerLongRange * Vector(Aim);
Other = Weapon.Trace(HitLocation, HitNormal, EndTrace, StartTrace, true);
}
Scale = FMin(HoldTime, FullyChargedTime);
Instigator.AmbientSound = None;
Instigator.SoundVolume = Instigator.Default.SoundVolume;
if ( Other != None && Other != Instigator )
{
if ( Pawn(Other) != None || (Decoration(Other) != None && Decoration(Other).bDamageable) || TranslocatorBeacon(Other) != None)
{
if (Pawn(Other) == None || Pawn(Other).Controller == None || !Pawn(Other).Controller.SameTeamAs(Instigator.Controller))
Other.TakeDamage(Damage * Scale, Instigator, HitLocation, Scale*Force*(X+vect(0,0,0.5)), DamageType);
}
else
{
Scale = FMax(Scale, 1);
if ( xPawn(Instigator).bBerserk )
Force *= 2.0;
Instigator.TakeDamage(SelfDamageScale*Damage, Instigator, HitLocation, -Scale*Force*X, DamageType);
if ( DestroyableObjective(Other) != None )
Other.TakeDamage(Damage*Scale, Instigator, HitLocation, Scale*Force*(X+vect(0,0,0.5)), DamageType);
}
}
UT2341Hammer(Weapon).ClientForceRelease(ThisModeNum);
bCheckingHit=False;
SetTimer(0, false);
}
function ModeHoldFire()
{
bCheckingHit = False;
SetTimer(1.33, false);
Weapon.PlayAnim(PreFireAnim);
Weapon.PlayOwnedSound(PreFireSound, SLOT_Interact, 1);
}
function bool IsFiring()
{
return ( bIsFiring || bAutoRelease );
}
function Timer()
{
local Actor Other;
local Vector HitLocation, HitNormal, StartTrace, EndTrace;
local Rotator Aim;
local float ChargeScale;
if (HoldTime > 0.0 && !bNowWaiting)
{
StartTrace = Instigator.Location;
Aim = AdjustAim(StartTrace, AimError);
EndTrace = StartTrace + AutoCheckRange * Vector(Aim);
Other = Weapon.Trace(HitLocation, HitNormal, EndTrace, StartTrace, true);
if ( (Pawn(Other) != None) && (Other != Instigator) )
{
bAutoRelease = true;
bIsFiring = false;
Instigator.AmbientSound = None;
Instigator.SoundVolume = Instigator.Default.SoundVolume;
AutoHitPawn = Pawn(Other);
AutoHitTime = Level.TimeSeconds;
}
else
{
ChargeScale = FMin(HoldTime, FullyChargedTime);
if (!bStartedChargingForce)
{
bStartedChargingForce = true;
ClientPlayForceFeedback( ChargingForce );
}
}
}
else
{
if ( Instigator.AmbientSound == ChargingSound )
{
Instigator.AmbientSound = None;
Instigator.SoundVolume = Instigator.Default.SoundVolume;
}
SetTimer(0, false);
}
if (!bCheckingHit)
{
bCheckingHit=True;
SetTimer(AutoFireTestFreq, true);
}
}
simulated function vector GetFireStart(vector X, vector Y, vector Z)
{
return Instigator.Location;
}
function StartBerserk()
{
if ( (Level.GRI != None) && (Level.GRI.WeaponBerserk > 1.0) )
return;
MaxHoldTime = default.MaxHoldTime * 0.75;
FullyChargedTime = default.FullyChargedTime * 0.75;
}
function StopBerserk()
{
if ( (Level.GRI != None) && (Level.GRI.WeaponBerserk > 1.0) )
return;
MaxHoldTime = default.MaxHoldTime;
FullyChargedTime = default.FullyChargedTime;
}
function StartSuperBerserk()
{
MaxHoldTime = default.MaxHoldTime/Level.GRI.WeaponBerserk;
FullyChargedTime = default.FullyChargedTime/Level.GRI.WeaponBerserk;
Damage = Default.Damage * Level.GRI.WeaponBerserk;
}
// jdf ---
function PlayFiring()
{
bStartedChargingForce = false;
StopForceFeedback(ChargingForce);
Super.PlayFiring();
}
// --- jdf
function PlayPreFire();
defaultproperties
{
DamageType=Class'UT2341WeaponsReducedv1a.DamType_Hammer'
AutoCheckRange=82.000000
HammerLongRange=120.000000
Force=79000.000000
Damage=90.000000
SelfDamageScale=0.600000
ChargingSound=Sound'UT2341Weapons_Sounds.Hammer.ImpactLoop'
AutoFireTestFreq=0.150000
FullyChargedTime=1.500000
ChargingSoundVolume=200
PreFireSound=Sound'UT2341Weapons_Sounds.Hammer.ImpactFireStart'
ChargingForce="shieldgun_charge"
bFireOnRelease=True
bWaitForRelease=True
TransientSoundVolume=1.000000
PreFireAnim="FireLoad"
FireLoopAnim=
FireEndAnim=
PreFireAnimRate=2.000000
TweenTime=0.000000
FireSound=Sound'UT2341Weapons_Sounds.Hammer.ImpactFireRelease'
FireForce="ShieldGunFire"
FireRate=0.600000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341HammerAmmo'
ShakeRotTime=2.000000
ShakeOffsetMag=(X=-20.000000)
ShakeOffsetRate=(X=-1000.000000)
ShakeOffsetTime=2.000000
BotRefireRate=1.000000
WarnTargetPct=0.100000
FlashEmitterClass=Class'XEffects.ForceRingA'
}

View File

@@ -0,0 +1,141 @@
//=============================================================================
// Minigun
//=============================================================================
class UT2341Minigun extends Minigun
config(user);
#EXEC OBJ LOAD FILE=InterfaceContent.utx
simulated function PostBeginPlay()
{
Super.PostBeginPlay();
if ( Level.NetMode == NM_DedicatedServer )
return;
ShellCaseEmitter = spawn(class'ShellSpewer');
if ( ShellCaseEmitter != None )
{
ShellCaseEmitter.Trigger(Self, Instigator); //turn off
AttachToBone(ShellCaseEmitter, 'Bone_CaseEjector');
}
}
simulated function bool ConsumeAmmo(int Mode, float load, optional bool bAmountNeededIsMax)
{
local int AmountNeeded;
if ( bNoAmmoInstances )
{
if ( AmmoClass[0] == AmmoClass[mode] )
mode = 0;
AmountNeeded = int(load);
if (bAmountNeededIsMax && AmmoCharge[mode] < AmountNeeded)
AmountNeeded = AmmoCharge[mode];
if (AmmoCharge[mode] < AmountNeeded)
{
CheckOutOfAmmo();
return false; // Can't do it
}
AmmoCharge[mode] -= AmountNeeded;
NetUpdateTime = Level.TimeSeconds - 1;
if (Level.NetMode == NM_StandAlone || Level.NetMode == NM_ListenServer)
CheckOutOfAmmo();
return true;
}
if (Ammo[Mode] != None)
return Ammo[Mode].UseAmmo(int(load), bAmountNeededIsMax);
return true;
}
simulated function OutOfAmmo()
{
log("OUTOFAMMO");
if ( (Instigator == None) || !Instigator.IsLocallyControlled() || HasAmmo() )
return;
Instigator.AmbientSound = None;
Instigator.SoundVolume = Instigator.default.SoundVolume;
DoAutoSwitch();
}
function byte BestMode()
{
local float EnemyDist;
local bot B;
B = Bot(Instigator.Controller);
if ( (B == None) || (B.Enemy == None) )
return 0;
if ( FireMode[0].bIsFiring )
return 0;
else if ( FireMode[1].bIsFiring )
return 1;
EnemyDist = VSize(B.Enemy.Location - Instigator.Location);
if ( EnemyDist < 2000 )
return 1;
return 0;
}
// end AI Interface
simulated function SpawnShells(float amountPerSec)
{
if(ShellCaseEmitter == None || !FirstPersonView())
return;
if ( Bot(Instigator.Controller) != None )
{
ShellCaseEmitter.Destroy();
return;
}
ShellCaseEmitter.mRegenRange[0] = amountPerSec;
ShellCaseEmitter.mRegenRange[1] = amountPerSec;
ShellCaseEmitter.Trigger(self, Instigator);
}
// Client-side only: update the first person barrel rotation
simulated function UpdateRoll(float dt, float speed, int mode)
{
local rotator r;
if (Level.NetMode == NM_DedicatedServer)
return;
if (mode == CurrentMode) // to limit to one mode
{
// log(self$" updateroll (mode="$mode$") speed="$speed);
RollSpeed = speed;
CurrentRoll += dt*RollSpeed;
CurrentRoll = CurrentRoll % 65536.f;
r.Roll = int(CurrentRoll);
SetBoneRotation('Bone_Barrels', r, 0, Blend);
}
}
defaultproperties
{
FireModeClass(0)=Class'UT2341WeaponsReducedv1a.UT2341MinigunFire'
FireModeClass(1)=Class'UT2341WeaponsReducedv1a.UT2341MinigunAltFire'
SelectSound=Sound'UT2341Weapons_Sounds.Minigun.MiniSelect'
bNoAmmoInstances=False
Description="Classification: Gatling Gun||Primary Fire: Bullets are sprayed forth at a medium to fast rate of fire and good accuracy.||Secondary Fire: Minigun fires twice as fast and is half as accurate.||Techniques: Secondary fire is much more useful at close range, but can eat up tons of ammunition."
EffectOffset=(Y=22.000000,Z=-10.000000)
DisplayFOV=80.000000
SmallViewOffset=(X=0.000000,Y=2.000000,Z=-5.000000)
InventoryGroup=7
PickupClass=Class'UT2341WeaponsReducedv1a.UT2341MinigunPickup'
PlayerViewOffset=(X=0.000000,Y=2.000000,Z=-5.000000)
AttachmentClass=Class'UT2341WeaponsReducedv1a.UT2341MinigunAttachment'
IconMaterial=Texture'UT2341Weapons_Tex.Icons.Icon_Minigun'
IconCoords=(X1=0,Y1=0,X2=128,Y2=32)
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTminigun_FP'
DrawScale=1.000000
HighDetailOverlay=None
}

View File

@@ -0,0 +1,14 @@
class UT2341MinigunAltFire extends UT2341MinigunFire;
defaultproperties
{
WindDownModifier=1.000000
BarrelRotationsPerSec=2.500000
FiringSound=Sound'UT2341Weapons_Sounds.Minigun.M2AltFire'
MinigunSoundVolume=240
WindUpTime=0.500000
FiringForce="minialtfireb"
PreFireTime=0.100000
FireLoopAnimRate=3.000000
Spread=0.120000
}

View File

@@ -0,0 +1,20 @@
class UT2341MinigunAmmo extends Ammunition;
#EXEC OBJ LOAD FILE=InterfaceContent.utx
simulated function PostNetReceive()
{
if (AmmoAmount == 0)
Pawn(Owner).Weapon.OutOfAmmo();
}
defaultproperties
{
MaxAmmo=199
InitialAmount=100
PickupClass=Class'UT2341WeaponsReducedv1a.UT2341MinigunAmmoPickup'
IconMaterial=Texture'HUDContent.Generic.HUD'
IconCoords=(X1=338,Y1=40,X2=393,Y2=79)
ItemName="Bullets"
bNetNotify=True
}

View File

@@ -0,0 +1,21 @@
class UT2341MinigunAmmoPickup extends UTAmmoPickup;
function RespawnEffect()
{
spawn(class'FX_PickupRespawn');
}
defaultproperties
{
AmmoAmount=50
InventoryType=Class'UT2341WeaponsReducedv1a.UT2341MinigunAmmo'
PickupMessage="You picked up 50 bullets."
PickupSound=Sound'UT2341Weapons_Sounds.General.AmmoSnd'
PickupForce="MinigunAmmoPickup"
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'UT2341Weapons_SM.General.UTminigunammo'
DrawScale=0.300000
PrePivot=(Z=44.000000)
AmbientGlow=64
CollisionHeight=12.750000
}

View File

@@ -0,0 +1,133 @@
class UT2341MinigunAttachment extends MinigunAttachment;
var Emitter MuzFlashNew;
var class<Emitter> NewFlashClass;
function Destroyed()
{
if (mTracer != None)
mTracer.Destroy();
if (MuzFlashNew != None)
MuzFlashNew.Destroy();
if (mShellCaseEmitter != None)
mShellCaseEmitter.Destroy();
Super(xWeaponAttachment).Destroyed();
}
simulated function UpdateRoll(float dt)
{
local rotator r;
UpdateRollTime(false);
if (mRollInc <= 0.f)
return;
mCurrentRoll += dt*mRollInc;
mCurrentRoll = mCurrentRoll % 65536.f;
r.Roll = int(mCurrentRoll);
SetBoneRotation('Bone_Barrels', r, 0, 1.f);
}
simulated function vector GetTracerStart()
{
local Pawn p;
p = Pawn(Owner);
if ( (p != None) && p.IsFirstPerson() && p.Weapon != None )
{
// 1st person
return p.Weapon.GetEffectStart();
}
// 3rd person
if ( MuzFlashNew != None )
return MuzFlashNew.Location;
else
return Location;
}
simulated event ThirdPersonEffects()
{
local PlayerController PC;
if ( (Level.NetMode == NM_DedicatedServer) || (Instigator == None) )
return;
if ( FlashCount > 0 )
{
PC = Level.GetLocalPlayerController();
if ( OldSpawnHitCount != SpawnHitCount )
{
OldSpawnHitCount = SpawnHitCount;
GetHitInfo();
PC = Level.GetLocalPlayerController();
if ( (Instigator.Controller == PC) || (VSize(PC.ViewTarget.Location - mHitLocation) < 2000) )
{
Spawn(class'HitEffect'.static.GetHitEffect(mHitActor, mHitLocation, mHitNormal),,, mHitLocation, Rotator(mHitNormal));
CheckForSplash();
}
}
if ( (Level.TimeSeconds - LastRenderTime > 0.2) && (Instigator.Controller != PC) )
return;
WeaponLight();
if (FiringMode == 0)
{
mTracerInterval = mTracerIntervalPrimary;
mRollInc = 65536.f*2.f;
}
else
{
mTracerInterval = mTracerIntervalSecondary;
mRollInc = 65536.f *4.f;
}
if ( Level.bDropDetail || Level.DetailMode == DM_Low )
mTracerInterval *= 2.0;
UpdateRollTime(true);
UpdateTracer();
if (MuzFlashNew == None)
{
MuzFlashNew = Spawn(NewFlashClass);
AttachToBone(MuzFlashNew, 'tip');
}
if (MuzFlashNew != None)
{
MuzFlashNew.Trigger(self, None);
}
if ( (mShellCaseEmitter == None) && (Level.DetailMode != DM_Low) && !Level.bDropDetail )
{
mShellCaseEmitter = Spawn(mShellCaseEmitterClass);
if ( mShellCaseEmitter != None )
AttachToBone(mShellCaseEmitter, 'Bone_CaseEjector');
}
if (mShellCaseEmitter != None)
mShellCaseEmitter.mStartParticles++;
}
else
{
GotoState('');
}
Super(xWeaponAttachment).ThirdPersonEffects();
}
defaultproperties
{
NewFlashClass=Class'UT2341WeaponsReducedv1a.FX_EnforcerMuzFlash'
mTracerIntervalPrimary=0.130000
mTracerIntervalSecondary=0.080000
Mesh=SkeletalMesh'UT2341Weapons_Anims.UTminigun3rd'
DrawScale=0.900000
}

View File

@@ -0,0 +1,195 @@
class UT2341MinigunFire extends MinigunFire;
var float WindDownModifier;
var() class<Emitter> NewFlashClass;
var Emitter NewFlashEmitter;
var Sound WindUpSound;
function InitEffects()
{
// don't even spawn on server
if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
return;
if ( (NewFlashClass != None) && ((NewFlashEmitter == None) || NewFlashEmitter.bDeleteMe) )
{
NewFlashEmitter = Weapon.Spawn(NewFlashClass);
Weapon.AttachToBone(NewFlashEmitter, 'Flash');
}
if ( (SmokeEmitterClass != None) && ((SmokeEmitter == None) || SmokeEmitter.bDeleteMe) )
{
SmokeEmitter = Weapon.Spawn(SmokeEmitterClass);
}
}
function DrawMuzzleFlash(Canvas Canvas)
{
// Draw smoke first
if (SmokeEmitter != None && SmokeEmitter.Base != Weapon)
{
SmokeEmitter.SetLocation( Weapon.GetEffectStart() );
Canvas.DrawActor( SmokeEmitter, false, false, Weapon.DisplayFOV );
}
if (NewFlashEmitter != None && NewFlashEmitter.Base != Weapon)
{
NewFlashEmitter.SetLocation( Weapon.GetEffectStart() );
Canvas.DrawActor( NewFlashEmitter, false, false, Weapon.DisplayFOV );
}
}
function FlashMuzzleFlash()
{
local rotator r;
r.Roll = Rand(65535);
Weapon.SetBoneRotation('Bone_Flash', r, 0, 1.f);
if (NewFlashEmitter != None)
NewFlashEmitter.Trigger(Weapon, Instigator);
}
simulated function DestroyEffects()
{
if (NewFlashEmitter != None)
NewFlashEmitter.Destroy();
if (SmokeEmitter != None)
SmokeEmitter.Destroy();
}
auto state Idle
{
function bool IsIdle()
{
return true;
}
function BeginState()
{
PlayAmbientSound(None);
StopRolling();
}
function EndState()
{
PlayAmbientSound(WindUpSound);
}
function StartFiring()
{
RollSpeed = 0;
FireTime = (RollSpeed/MaxRollSpeed) * WindUpTime;
GotoState('WindUp');
}
}
state WindUp
{
function BeginState()
{
ClientPlayForceFeedback(WindingForce); // jdf
}
function EndState()
{
if (ThisModeNum == 0)
{
if ( (Weapon == None) || !Weapon.GetFireMode(1).bIsFiring )
StopForceFeedback(WindingForce);
}
else
{
if ( (Weapon == None) || !Weapon.GetFireMode(0).bIsFiring )
StopForceFeedback(WindingForce);
}
}
function ModeTick(float dt)
{
FireTime += dt;
RollSpeed = (FireTime/WindUpTime) * MaxRollSpeed;
if ( !bIsFiring )
{
GotoState('WindDown');
return;
}
if (RollSpeed >= MaxRollSpeed)
{
RollSpeed = MaxRollSpeed;
FireTime = WindUpTime;
Gun.UpdateRoll(dt, RollSpeed, ThisModeNum);
GotoState('FireLoop');
return;
}
Gun.UpdateRoll(dt, RollSpeed, ThisModeNum);
}
function StopFiring()
{
GotoState('WindDown');
}
}
state WindDown
{
function BeginState()
{
ClientPlayForceFeedback(WindingForce); // jdf
}
function EndState()
{
if (ThisModeNum == 0)
{
if ( (Weapon == None) || !Weapon.GetFireMode(1).bIsFiring )
StopForceFeedback(WindingForce);
}
else
{
if ( (Weapon == None) || !Weapon.GetFireMode(0).bIsFiring )
StopForceFeedback(WindingForce);
}
}
function ModeTick(float dt)
{
FireTime -= dt / WindDownModifier;
RollSpeed = (FireTime/WindUpTime) * MaxRollSpeed;
if (RollSpeed <= 0.f)
{
RollSpeed = 0.f;
FireTime = 0.f;
Gun.UpdateRoll(dt, RollSpeed, ThisModeNum);
GotoState('Idle');
return;
}
Gun.UpdateRoll(dt, RollSpeed, ThisModeNum);
}
function StartFiring()
{
GotoState('WindUp');
}
}
defaultproperties
{
WindDownModifier=12.000000
NewFlashClass=Class'UT2341WeaponsReducedv1a.FX_EnforcerMuzFlash'
WindUpSound=Sound'UT2341Weapons_Sounds.Minigun.M2WindUp'
BarrelRotationsPerSec=1.250000
WindingSound=Sound'UT2341Weapons_Sounds.Minigun.M2WindDown'
FiringSound=Sound'UT2341Weapons_Sounds.Minigun.M2RegFire'
WindUpTime=0.050000
DamageType=Class'UT2341WeaponsReducedv1a.DamType_MinigunBullet'
DamageMin=15
DamageMax=21
PreFireTime=0.100000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341MinigunAmmo'
Spread=0.050000
}

View File

@@ -0,0 +1,36 @@
//=============================================================================
// Minigun.
//=============================================================================
class UT2341MinigunPickup extends UTWeaponPickup;
static function StaticPrecache(LevelInfo L)
{
L.AddPrecacheMaterial(Texture'XEffects.ShellCasingTex');
L.AddPrecacheMaterial(Texture'AW-2004Explosions.Part_explode2s');
L.AddPrecacheMaterial(Texture'AW-2004Particles.TracerShot');
L.AddPrecacheStaticMesh(StaticMesh'UT2341Weapons_SM.UTMinigun');
}
simulated function UpdatePrecacheMaterials()
{
Level.AddPrecacheMaterial(Texture'XEffects.ShellCasingTex');
Level.AddPrecacheMaterial(Texture'AW-2004Explosions.Part_explode2s');
Level.AddPrecacheMaterial(Texture'AW-2004Particles.TracerShot');
super.UpdatePrecacheMaterials();
}
defaultproperties
{
MaxDesireability=0.730000
InventoryType=Class'UT2341WeaponsReducedv1a.UT2341Minigun'
PickupMessage="You got the Minigun."
PickupSound=Sound'UT2341Weapons_Sounds.General.WeaponPickup'
PickupForce="MinigunPickup"
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'UT2341Weapons_SM.General.UTminigun'
DrawScale=0.150000
PrePivot=(Z=40.000000)
AmbientGlow=64
RotationRate=(Yaw=5000)
}

View File

@@ -0,0 +1,366 @@
class UT2341PulseAltFire extends WeaponFire;
var UT2341PulseBeamEffect Beam;
var class<UT2341PulseBeamEffect> BeamEffectClass;
var() class<DamageType> DamageType;
var() int Damage;
var() float MomentumTransfer;
var() float TraceRange;
var float UpTime;
var bool bDoHit;
var() bool bFeedbackDeath;
var bool bInitAimError;
var bool bLinkFeedbackPlaying;
var bool bStartFire;
var byte LinkVolume;
var byte SentLinkVolume;
var rotator DesiredAimError, CurrentAimError;
var Sound BeamSound;
var() class<Emitter> PulseFlashClass;
var Emitter PulseFlashEmitter;
simulated function InitEffects()
{
// don't even spawn on server
if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
return;
if ( (PulseFlashClass != None) && ((PulseFlashEmitter == None) || PulseFlashEmitter.bDeleteMe) )
{
PulseFlashEmitter = Weapon.Spawn(PulseFlashClass);
Weapon.AttachToBone(PulseFlashEmitter, 'tip');
}
if ( (SmokeEmitterClass != None) && ((SmokeEmitter == None) || SmokeEmitter.bDeleteMe) )
{
SmokeEmitter = Weapon.Spawn(SmokeEmitterClass);
}
}
function DrawMuzzleFlash(Canvas Canvas)
{
// Draw smoke first
if (SmokeEmitter != None && SmokeEmitter.Base != Weapon)
{
SmokeEmitter.SetLocation( Weapon.GetEffectStart() );
Canvas.DrawActor( SmokeEmitter, false, false, Weapon.DisplayFOV );
}
if (PulseFlashEmitter != None && PulseFlashEmitter.Base != Weapon)
{
PulseFlashEmitter.SetLocation( Weapon.GetEffectStart() );
Canvas.DrawActor( PulseFlashEmitter, false, false, Weapon.DisplayFOV );
}
}
function FlashMuzzleFlash()
{
if (PulseFlashEmitter != None)
PulseFlashEmitter.Trigger(Weapon, Instigator);
}
simulated function DestroyEffects()
{
if (PulseFlashEmitter != None)
PulseFlashEmitter.Destroy();
if (SmokeEmitter != None)
SmokeEmitter.Destroy();
if ( Level.NetMode != NM_Client )
{
if ( Beam != None )
Beam.Destroy();
}
}
simulated function bool myHasAmmo( )
{
return (Weapon.AmmoAmount(ThisModeNum) >= AmmoPerFire);
}
simulated function Rotator GetPlayerAim( vector StartTrace, float InAimError )
{
return AdjustAim(StartTrace, InAimError);
}
simulated function ModeTick(float dt)
{
local Vector StartTrace, EndTrace, X, Y, Z;
local Vector HitLocation, HitNormal, EndEffect;
local Actor Other;
local Rotator Aim;
local float Step;
local DestroyableObjective HealObjective;
local int AdjustedDamage;
local UT2341PulseBeamEffect LB;
if ( !bIsFiring )
{
bInitAimError = true;
return;
}
if ( myHasAmmo() && ((UpTime > 0.0) || (Instigator.Role < ROLE_Authority)) )
{
UpTime -= dt;
// the to-hit trace always starts right in front of the eye
Weapon.GetViewAxes(X, Y, Z);
StartTrace = GetFireStart( X, Y, Z);
if ( Instigator.Role < ROLE_Authority )
{
if ( Beam == None )
ForEach Weapon.DynamicActors(class'UT2341PulseBeamEffect', LB )
if ( !LB.bDeleteMe && (LB.Instigator != None) && (LB.Instigator == Instigator) )
{
Beam = LB;
break;
}
}
if ( Instigator.Role == ROLE_Authority )
{
if ( bDoHit )
Weapon.ConsumeAmmo(ThisModeNum, AmmoPerFire);
}
if ( Bot(Instigator.Controller) != None )
{
if ( bInitAimError )
{
CurrentAimError = AdjustAim(StartTrace, AimError);
bInitAimError = false;
}
else
{
BoundError();
CurrentAimError.Yaw = CurrentAimError.Yaw + Instigator.Rotation.Yaw;
}
// smooth aim error changes
Step = 7500.0 * dt;
if ( DesiredAimError.Yaw ClockWiseFrom CurrentAimError.Yaw )
{
CurrentAimError.Yaw += Step;
if ( !(DesiredAimError.Yaw ClockWiseFrom CurrentAimError.Yaw) )
{
CurrentAimError.Yaw = DesiredAimError.Yaw;
DesiredAimError = AdjustAim(StartTrace, AimError);
}
}
else
{
CurrentAimError.Yaw -= Step;
if ( DesiredAimError.Yaw ClockWiseFrom CurrentAimError.Yaw )
{
CurrentAimError.Yaw = DesiredAimError.Yaw;
DesiredAimError = AdjustAim(StartTrace, AimError);
}
}
CurrentAimError.Yaw = CurrentAimError.Yaw - Instigator.Rotation.Yaw;
if ( BoundError() )
DesiredAimError = AdjustAim(StartTrace, AimError);
CurrentAimError.Yaw = CurrentAimError.Yaw + Instigator.Rotation.Yaw;
if ( Instigator.Controller.Target == None )
Aim = Rotator(Instigator.Controller.FocalPoint - StartTrace);
else
Aim = Rotator(Instigator.Controller.Target.Location - StartTrace);
Aim.Yaw = CurrentAimError.Yaw;
// save difference
CurrentAimError.Yaw = CurrentAimError.Yaw - Instigator.Rotation.Yaw;
}
else
Aim = GetPlayerAim(StartTrace, AimError);
X = Vector(Aim);
EndTrace = StartTrace + TraceRange * X;
Other = Weapon.Trace(HitLocation, HitNormal, EndTrace, StartTrace, true);
if ( Other != None && Other != Instigator )
EndEffect = HitLocation - X * 15;
else
EndEffect = EndTrace- X * 15;
if ( Beam != None )
Beam.EndEffect = EndEffect;
if (Instigator.Role < ROLE_Authority)
return;
if ( Other != None && Other != Instigator )
{
// beam is updated every frame, but damage is only done based on the firing rate
if ( bDoHit )
{
Instigator.MakeNoise(1.0);
AdjustedDamage = Damage * 1.5;
if ( !Other.bWorldGeometry )
{
HealObjective = DestroyableObjective(Other);
if ( HealObjective == None )
HealObjective = DestroyableObjective(Other.Owner);
if ( HealObjective != None)
{
if ( HealObjective.TeamLink(Instigator.GetTeamNum()) )
{
if (!HealObjective.HealDamage(AdjustedDamage, Instigator.Controller, DamageType))
UT2341PulseGun(Weapon).ConsumeAmmo(ThisModeNum, -AmmoPerFire);
}
}
else if (Vehicle(Other) != None)
{
if(!Vehicle(Other).HealDamage(AdjustedDamage, Instigator.Controller, DamageType))
UT2341PulseGun(Weapon).ConsumeAmmo(ThisModeNum, -AmmoPerFire);
}
else Other.TakeDamage(Damage, Instigator, HitLocation, MomentumTransfer*X, DamageType);
}
}
}
// beam effect is created and destroyed when firing starts and stops
if ( (Beam == None) && bIsFiring )
{
Beam = Weapon.Spawn( BeamEffectClass, Instigator );
// vary link volume to make sure it gets replicated (in case owning player changed it client side)
if ( SentLinkVolume == Default.LinkVolume )
SentLinkVolume = Default.LinkVolume + 1;
else
SentLinkVolume = Default.LinkVolume;
}
if ( Beam != None )
{
Instigator.AmbientSound = BeamSound;
Instigator.SoundVolume = SentLinkVolume;
Beam.bHitSomething = (Other != None);
Beam.EndEffect = EndEffect;
}
}
else
StopFiring();
bStartFire = false;
bDoHit = false;
}
function bool BoundError()
{
CurrentAimError.Yaw = CurrentAimError.Yaw & 65535;
if ( CurrentAimError.Yaw > 2048 )
{
if ( CurrentAimError.Yaw < 32768 )
{
CurrentAimError.Yaw = 2048;
return true;
}
else if ( CurrentAimError.Yaw < 63487 )
{
CurrentAimError.Yaw = 63487;
return true;
}
}
return false;
}
event ModeDoFire()
{
Load = 0; //don't use ammo here - it will be consumed in ModeTick() where it's sync'ed with damage dealing
Super.ModeDoFire();
}
function DoFireEffect()
{
bDoHit = true;
UpTime = FireRate+0.1;
}
function StopFiring()
{
if (Instigator.AmbientSound == BeamSound)
{
Instigator.AmbientSound = None;
Instigator.SoundVolume = Instigator.Default.SoundVolume;
}
if (Beam != None)
{
Beam.Destroy();
Beam = None;
}
bStartFire = true;
bFeedbackDeath = false;
}
simulated function vector GetFireStart(vector X, vector Y, vector Z)
{
return Instigator.Location + Instigator.EyePosition() + X*Instigator.CollisionRadius;
}
function StartBerserk()
{
if ( (Level.GRI != None) && (Level.GRI.WeaponBerserk > 1.0) )
return;
Damage = default.Damage * 1.33;
}
function StopBerserk()
{
if ( (Level.GRI != None) && (Level.GRI.WeaponBerserk > 1.0) )
return;
Damage = default.Damage;
}
function PlayFiring()
{
if ( Weapon.Mesh != None )
{
if (FireCount == 0)
Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
}
Weapon.PlayOwnedSound(FireSound,SLOT_Interact,TransientSoundVolume,,TransientSoundRadius,Default.FireAnimRate/FireAnimRate,false);
ClientPlayForceFeedback(FireForce); // jdf
FireCount++;
}
defaultproperties
{
BeamEffectClass=Class'UT2341WeaponsReducedv1a.UT2341PulseBeamEffect'
DamageType=Class'UT2341WeaponsReducedv1a.DamType_Pulse'
Damage=10
MomentumTransfer=2000.000000
TraceRange=1100.000000
bInitAimError=True
LinkVolume=240
BeamSound=Sound'UT2341Weapons_Sounds.PulseGun.PulseBolt'
PulseFlashClass=Class'UT2341WeaponsReducedv1a.FX_PulseMuzFlash'
bPawnRapidFireAnim=True
FireAnim="FireAltStart"
FireLoopAnim="FireAltLoop"
FireEndAnim="FireAltEnd"
NoAmmoSound=ProceduralSound'WeaponSounds.PReload5.P1Reload5'
FireRate=0.100000
AmmoClass=Class'UT2341WeaponsReducedv1a.UT2341PulseAmmo'
AmmoPerFire=1
ShakeRotMag=(Z=60.000000)
ShakeRotRate=(Z=4000.000000)
ShakeRotTime=6.000000
ShakeOffsetMag=(Y=1.000000,Z=1.000000)
ShakeOffsetRate=(X=1000.000000,Y=1000.000000,Z=1000.000000)
ShakeOffsetTime=3.000000
BotRefireRate=0.990000
WarnTargetPct=0.200000
}

View File

@@ -0,0 +1,13 @@
class UT2341PulseAmmo extends Ammunition;
#EXEC OBJ LOAD FILE=InterfaceContent.utx
defaultproperties
{
MaxAmmo=400
InitialAmount=120
PickupClass=Class'UT2341WeaponsReducedv1a.UT2341PulseAmmoPickup'
IconMaterial=Texture'HUDContent.Generic.HUD'
IconCoords=(X1=413,Y1=82,X2=457,Y2=125)
ItemName="Pulse Ammo"
}

View File

@@ -0,0 +1,30 @@
class UT2341PulseAmmoPickup extends UTAmmoPickup;
function RespawnEffect()
{
spawn(class'FX_PickupRespawn');
}
function PostBeginPlay()
{
Super.PostBeginPlay();
if ( Level.Game.bAllowVehicles )
MaxDesireability *= 1.9;
}
defaultproperties
{
AmmoAmount=50
MaxDesireability=0.240000
InventoryType=Class'UT2341WeaponsReducedv1a.UT2341PulseAmmo'
PickupMessage="You picked up pulse charges."
PickupSound=Sound'UT2341Weapons_Sounds.General.AmmoSnd'
PickupForce="LinkAmmoPickup"
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'UT2341Weapons_SM.General.UTPulseCell'
DrawScale=0.350000
PrePivot=(Z=30.000000)
AmbientGlow=64
CollisionHeight=10.500000
}

Some files were not shown because too many files have changed in this diff Show More