1.1.1 update (to be made stable after GZDoom updates):
- Sound overhaul, migrated everything to A_StartSound, new sound channels, CHANF_OVERLAP where needed. - Fancy titlemap (two variants, one based on the ps2 menu, one based on the v222 menu).
This commit is contained in:
parent
da8f6fc4b2
commit
94cba843e4
42 changed files with 272 additions and 179 deletions
|
|
@ -59,15 +59,16 @@ This mod requires GZDoom 4.2.4 or later.
|
|||
- Liquid splashes
|
||||
- Original Invulnerability and Night Vision items
|
||||
- Hexen compatibility
|
||||
- Fancy titlemap
|
||||
- Semi-accurate UT sound behaviour
|
||||
|
||||
## In progress
|
||||
|
||||
- N/A, this is the 1.1 release.
|
||||
- N/A this is the 1.1.1 release.
|
||||
|
||||
## Planned
|
||||
|
||||
- Stuff for 1.2
|
||||
- Fancy titlemap with intro narration.
|
||||
- Touch up blood/gibbing features. At the moment, Nashgore is still a
|
||||
superior alternative.
|
||||
- Help screens describing items and stuff (maybe?).
|
||||
|
|
|
|||
10
gldefs.txt
10
gldefs.txt
|
|
@ -882,6 +882,16 @@ HardwareShader Texture "models/S_Ammo.png"
|
|||
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
|
||||
Texture brighttex "brightmaps/S_Ammo.png"
|
||||
}
|
||||
HardwareShader Texture "graphics/UTBg.png"
|
||||
{
|
||||
Shader "shaders/glsl/UTBg.fp"
|
||||
Texture starstex "graphics/UTBg_Stars.png"
|
||||
Texture moontex "graphics/UTBg_Moon.png"
|
||||
}
|
||||
HardwareShader Texture "graphics/UTProtoBg.png"
|
||||
{
|
||||
Shader "shaders/glsl/UTProtoBg.fp"
|
||||
}
|
||||
// PP shaders
|
||||
HardwareShader PostProcess scene
|
||||
{
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 173 KiB |
BIN
graphics/UTBg.png
Normal file
BIN
graphics/UTBg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 109 KiB |
BIN
graphics/UTBg_Moon.png
Normal file
BIN
graphics/UTBg_Moon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 51 KiB |
BIN
graphics/UTBg_Stars.png
Normal file
BIN
graphics/UTBg_Stars.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1 KiB |
BIN
graphics/UTProtoBg.png
Normal file
BIN
graphics/UTProtoBg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
|
|
@ -98,9 +98,9 @@ OptionMenu "UTCreditsMenu"
|
|||
StaticText "Epic Games", "White"
|
||||
StaticText " "
|
||||
StaticText "$FLAK_CPATRON", "Gold"
|
||||
StaticText "Aisamai, Alexa Jones-Gonzales, Jonas Höglund,", "White"
|
||||
StaticText "Zard1084, Jonathan Nemo, NekoMithos, 3d0xp0xy", "White"
|
||||
StaticText "Xada Xephron, m8f, john", "White"
|
||||
StaticText "john, Alexa Jones-Gonzales, Jonas Höglund,", "White"
|
||||
StaticText "Xada Xephron, Zard1084, Jonathan Nemo,", "White"
|
||||
StaticText "NekoMithos, m8f, 3d0xp0xy", "White"
|
||||
StaticText " "
|
||||
StaticText "$FLAK_CTHANK", "Gold"
|
||||
StaticText "KynikossDragonn, Raffine52, KeksDose, Skerion", "White"
|
||||
|
|
@ -132,4 +132,4 @@ OptionMenu "UTCreditsMenu"
|
|||
StaticText "$FLAK_CBIZ", "Gold"
|
||||
StaticText "Jay Wilbur, Mark Rein", "White"
|
||||
StaticText " "
|
||||
}
|
||||
}
|
||||
|
|
|
|||
21
shaders/glsl/utbg.fp
Normal file
21
shaders/glsl/utbg.fp
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
vec4 ProcessTexel()
|
||||
{
|
||||
vec2 uv = vTexCoord.st;
|
||||
vec2 ccoord = uv-vec2(.5,1.1);
|
||||
ccoord.y = abs(ccoord.y);
|
||||
vec3 pt = vec3(ccoord.x,ccoord.y-1.,ccoord.y);
|
||||
vec2 proj = pt.xy/pt.z;
|
||||
vec2 coord = uv*4.;
|
||||
vec3 bcol = texture(starstex,fract(coord)).rgb;
|
||||
coord = uv*1.5;
|
||||
coord = (coord-vec2(.8,.3))*2.;
|
||||
vec4 mcol = texture(moontex,coord);
|
||||
bcol = mix(bcol*.3,mcol.rgb*.7,mcol.a);
|
||||
coord = proj*.5+vec2(-.5,-1.)*timer*.1;
|
||||
coord = fract(coord);
|
||||
vec3 col = getTexel(coord).rgb;
|
||||
col *= mix(vec3(1.9,.4,.2),vec3(1.),pow(pt.z,.5));
|
||||
col *= mix(vec3(1.3,.5,.3),vec3(1.),pow(pt.x+.8,.5));
|
||||
col *= mix(vec3(1.1,1.4,1.3),vec3(.3),clamp(1.3*pow(distance(pt.xy,vec2(.2,-.25)),.9),0.,1.));
|
||||
return vec4(bcol+col,1.);
|
||||
}
|
||||
22
shaders/glsl/utprotobg.fp
Normal file
22
shaders/glsl/utprotobg.fp
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// based on https://www.shadertoy.com/view/Ms2SWW
|
||||
|
||||
vec4 ProcessTexel()
|
||||
{
|
||||
vec2 uv = vTexCoord.st;
|
||||
vec2 p = 2.*(uv-.5);
|
||||
p.x += sin(timer*.2)*.3;
|
||||
p.y += cos(timer*.2)*.3;
|
||||
float a = atan(p.y,p.x);
|
||||
a += timer*.1;
|
||||
float r = length(p);
|
||||
vec2 ccoord = fract(vec2(.25/r+.1*timer,a/3.14169265)*4.);
|
||||
vec3 col = getTexel(ccoord).rgb;
|
||||
a += .125*3.14159265;
|
||||
ccoord = fract(vec2(.25/r+.05*timer,a/3.14169265)*4.);
|
||||
col += getTexel(ccoord).rgb;
|
||||
col *= vec3(.3,.6,1.);
|
||||
col += pow(max(0.,1.2-r),1.5);
|
||||
col *= vec3(1.,1.2,1.5);
|
||||
col = clamp(col,vec3(0.),vec3(1.));
|
||||
return vec4(col,1.);
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,4 +1,4 @@
|
|||
version "4.2.4"
|
||||
version "4.3"
|
||||
|
||||
#include "zscript/dt_libeye/projector.txt"
|
||||
#include "zscript/dt_libeye/projector gl.txt"
|
||||
|
|
@ -6,8 +6,8 @@ version "4.2.4"
|
|||
#include "zscript/dt_libeye/viewport.txt"
|
||||
#include "zscript/dt_coordutil.zsc"
|
||||
#include "zscript/dt_quaternion.zsc"
|
||||
#include "zscript/utgore.zsc"
|
||||
#include "zscript/utcommon.zsc"
|
||||
#include "zscript/utgore.zsc"
|
||||
#include "zscript/impacthammer.zsc"
|
||||
#include "zscript/chainsaw.zsc"
|
||||
#include "zscript/translocator.zsc"
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ Class UTShieldBelt : UTArmor
|
|||
{
|
||||
if ( (amount > 0) && !DamageTypeDefinition.IgnoreArmor(damageType) )
|
||||
{
|
||||
Owner.A_PlaySound("belt/absorb",CHAN_7);
|
||||
Owner.A_StartSound("belt/absorb",CHAN_POWERUP4,CHANF_OVERLAP);
|
||||
UTMainHandler.DoFlash(Owner,Color(80,255,224,0),5);
|
||||
}
|
||||
Super.AbsorbDamage(damage,damageType,newdamage);
|
||||
|
|
|
|||
|
|
@ -505,7 +505,7 @@ Class BioGel : Actor
|
|||
}
|
||||
b = Spawn("BioHitbox",pos);
|
||||
b.target = self;
|
||||
A_PlaySound("bio/hit");
|
||||
A_StartSound("bio/hit",CHAN_BODY);
|
||||
A_SprayDecal("BioSplat",-172);
|
||||
int numpt = Min(100,int(Scale.x*10))+Random[GES](-5,5);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
|
|
@ -538,7 +538,7 @@ Class BioGel : Actor
|
|||
if ( invoker.atline ) invoker.atline.RemoteActivate(target,invoker.atside,SPAC_Impact,pos);
|
||||
UTMainHandler.DoBlast(self,Min(175,int(Scale.x*50)),20000*Scale.x);
|
||||
A_Explode(int(Args[0]*Scale.x),Min(175,int(Scale.x*50)));
|
||||
A_PlaySound("bio/explode",CHAN_VOICE);
|
||||
A_StartSound("bio/explode",CHAN_VOICE);
|
||||
int numpt = Min(300,int(Scale.x*30))+Random[GES](-10,10);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
|
|
@ -704,7 +704,8 @@ Class BioRifle : UTWeapon
|
|||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
}
|
||||
A_PlaySound("bio/fire",CHAN_WEAPON);
|
||||
A_StopSound(CHAN_WEAPONMISC);
|
||||
A_StartSound("bio/fire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(48,0,255,0),1);
|
||||
A_AlertMonsters();
|
||||
|
|
@ -749,7 +750,7 @@ Class BioRifle : UTWeapon
|
|||
if ( !weap ) return;
|
||||
invoker.charge = 0;
|
||||
invoker.special1 = 0;
|
||||
A_PlaySound("bio/charge",CHAN_WEAPON);
|
||||
A_StartSound("bio/charge",CHAN_WEAPONMISC);
|
||||
invoker.bCharging = true;
|
||||
}
|
||||
action void A_ChargeUp()
|
||||
|
|
|
|||
|
|
@ -166,8 +166,8 @@ Class UTChainsaw : UTWeapon
|
|||
bool quitout = false;
|
||||
if ( invoker.Ammo1 && (invoker.Ammo1.Amount <= 0) )
|
||||
{
|
||||
A_StopSound(CHAN_6);
|
||||
A_PlaySound("chainsaw/lower",CHAN_WEAPON);
|
||||
A_StopSound(CHAN_WEAPONMISC);
|
||||
A_StartSound("chainsaw/lower",CHAN_WEAPON);
|
||||
quitout = true;
|
||||
}
|
||||
else if ( !(player.cmd.buttons&BT_ATTACK) ) quitout = true;
|
||||
|
|
@ -218,9 +218,9 @@ Class UTChainsaw : UTWeapon
|
|||
}
|
||||
override void DetachFromOwner()
|
||||
{
|
||||
if ( Owner ) Owner.A_StopSound(CHAN_6);
|
||||
if ( Owner ) Owner.A_StopSound(CHAN_WEAPONMISC);
|
||||
if ( !Ammo1 || (Ammo1.Amount > 0) )
|
||||
A_PlaySound("chainsaw/lower",CHAN_6);
|
||||
A_StartSound("chainsaw/lower",CHAN_WEAPONMISC);
|
||||
Super.DetachFromOwner();
|
||||
}
|
||||
action void A_Vibrate( bool bAlt = false )
|
||||
|
|
@ -287,7 +287,7 @@ Class UTChainsaw : UTWeapon
|
|||
CSWI A 0
|
||||
{
|
||||
if ( !invoker.Ammo1 || (invoker.Ammo1.Amount > 0) )
|
||||
A_PlaySound("chainsaw/idle",CHAN_6,looping:true);
|
||||
A_StartSound("chainsaw/idle",CHAN_WEAPONMISC,CHANF_LOOPING);
|
||||
else
|
||||
return ResolveState("DryIdle");
|
||||
return ResolveState(null);
|
||||
|
|
@ -298,8 +298,8 @@ Class UTChainsaw : UTWeapon
|
|||
A_WeaponReady();
|
||||
if ( invoker.Ammo1 && (invoker.Ammo1.Amount <= 0) )
|
||||
{
|
||||
A_StopSound(CHAN_6);
|
||||
A_PlaySound("chainsaw/lower",CHAN_WEAPON);
|
||||
A_StopSound(CHAN_WEAPONMISC);
|
||||
A_StartSound("chainsaw/lower",CHAN_WEAPON);
|
||||
return ResolveState("DryIdle");
|
||||
}
|
||||
return ResolveState(null);
|
||||
|
|
@ -311,7 +311,7 @@ Class UTChainsaw : UTWeapon
|
|||
A_WeaponReady(WRF_NOFIRE);
|
||||
if ( !invoker.Ammo1 || (invoker.Ammo1.Amount > 0) )
|
||||
{
|
||||
A_PlaySound("chainsaw/select",CHAN_WEAPON);
|
||||
A_StartSound("chainsaw/select",CHAN_WEAPON);
|
||||
return ResolveState("Idle");
|
||||
}
|
||||
else if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) )
|
||||
|
|
@ -320,7 +320,7 @@ Class UTChainsaw : UTWeapon
|
|||
}
|
||||
Wait;
|
||||
Fire:
|
||||
CSWJ A 1 A_PlaySound("chainsaw/fire",CHAN_6,looping:true);
|
||||
CSWJ A 1 A_StartSound("chainsaw/fire",CHAN_WEAPONMISC,CHANF_LOOPING);
|
||||
CSWJ BCDEF 1 A_Vibrate();
|
||||
Goto Hold;
|
||||
Hold:
|
||||
|
|
@ -332,7 +332,8 @@ Class UTChainsaw : UTWeapon
|
|||
AltFire:
|
||||
CSWA A 0
|
||||
{
|
||||
A_PlaySound("chainsaw/fire",CHAN_6);
|
||||
A_StopSound(CHAN_WEAPONMISC);
|
||||
A_StartSound("chainsaw/fire",CHAN_WEAPON);
|
||||
UTMainHandler.DoSwing(self,(FRandom[Chainsaw](-0.8,-1.2),FRandom[Chainsaw](-0.4,-0.7)),0,1,5,SWING_Spring,6,3);
|
||||
}
|
||||
CSWA ABCDE 2 A_Vibrate(true);
|
||||
|
|
@ -347,10 +348,14 @@ Class UTChainsaw : UTWeapon
|
|||
{
|
||||
if ( invoker.Ammo1 && (invoker.Ammo1.Amount <= 0) )
|
||||
{
|
||||
A_StopSound(CHAN_6);
|
||||
A_PlaySound("chainsaw/lower",CHAN_WEAPON);
|
||||
A_StopSound(CHAN_WEAPONMISC);
|
||||
A_StartSound("chainsaw/lower",CHAN_WEAPON);
|
||||
}
|
||||
else
|
||||
{
|
||||
A_StopSound(CHAN_WEAPON);
|
||||
A_StartSound("chainsaw/idle",CHAN_WEAPONMISC,CHANF_LOOPING);
|
||||
}
|
||||
else A_PlaySound("chainsaw/idle",CHAN_6,looping:true);
|
||||
}
|
||||
Goto Ready;
|
||||
AltFireSwipes:
|
||||
|
|
@ -361,7 +366,7 @@ Class UTChainsaw : UTWeapon
|
|||
CSWD A 0
|
||||
{
|
||||
if ( !invoker.Ammo1 || (invoker.Ammo1.Amount > 0) )
|
||||
A_PlaySound("chainsaw/lower",CHAN_6);
|
||||
A_StartSound("chainsaw/lower",CHAN_WEAPONMISC);
|
||||
}
|
||||
CSWD ABCDEF 1;
|
||||
CSWD F 1 A_Lower(int.max);
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ Class UTActivatable : Inventory
|
|||
let i = GetDefaultByType(GiveItem);
|
||||
if ( Owner.GiveInventory(GiveItem,i.Amount) )
|
||||
{
|
||||
Owner.A_PlaySound(i.PickupSound,CHAN_ITEM);
|
||||
Owner.A_StartSound(i.PickupSound,CHAN_ITEM);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ Class UTRocket : Actor
|
|||
Super.PostBeginPlay();
|
||||
let l = Spawn("UTRocketTrail",pos);
|
||||
l.target = self;
|
||||
A_PlaySound("utrl/fly",CHAN_VOICE,1.0,true,2.5,pitch:1.5625);
|
||||
A_StartSound("utrl/fly",CHAN_VOICE,CHANF_LOOPING,1.,2.5,1.5625);
|
||||
if ( tracer ) vel *= 0.9;
|
||||
Acceleration = vel.unit()*50;
|
||||
}
|
||||
|
|
@ -141,7 +141,7 @@ Class UTRocket : Actor
|
|||
UTMainHandler.DoBlast(self,rad,80000);
|
||||
A_Explode(dmg,rad);
|
||||
A_QuakeEx(3,3,3,8,0,rad+50,"",QF_RELATIVE|QF_SCALEDOWN,falloff:rad,rollIntensity:0.2);
|
||||
A_PlaySound("utrl/explode",CHAN_VOICE);
|
||||
A_StartSound("utrl/explode",CHAN_VOICE);
|
||||
A_AlertMonsters();
|
||||
Spawn("RocketExplLight",pos);
|
||||
int numpt = Random[Eightball](15,30);
|
||||
|
|
@ -266,7 +266,7 @@ Class UTGrenade : UTRocket
|
|||
RCKT A 0
|
||||
{
|
||||
bHITOWNER = true;
|
||||
A_PlaySound("utrl/bounce");
|
||||
A_StartSound("utrl/bounce",CHAN_BODY);
|
||||
rollvel = FRandom[Eightball](-16,16);
|
||||
pitchvel = FRandom[Eightball](-16,16);
|
||||
anglevel = FRandom[Eightball](-16,16);
|
||||
|
|
@ -321,7 +321,7 @@ Class UTRocketLauncher : UTWeapon
|
|||
LockedTarget = null;
|
||||
LockedOn = false;
|
||||
if ( Owner.player.ReadyWeapon == self )
|
||||
Owner.A_PlaySound("utrl/seeklost",CHAN_WEAPON);
|
||||
Owner.A_StartSound("utrl/seeklost",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
}
|
||||
if ( LockedTarget ) crosshair = 99;
|
||||
else crosshair = 0;
|
||||
|
|
@ -358,8 +358,8 @@ Class UTRocketLauncher : UTWeapon
|
|||
Weapon weap = Weapon(invoker);
|
||||
if ( !weap ) return;
|
||||
invoker.special1 = 0;
|
||||
if ( weap.bAltFire ) A_PlaySound("utrl/altfire",CHAN_WEAPON);
|
||||
else A_PlaySound("utrl/fire",CHAN_WEAPON);
|
||||
if ( weap.bAltFire ) A_StartSound("utrl/altfire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
else A_StartSound("utrl/fire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(64,255,0,0),1);
|
||||
if ( self is 'UTPlayer' )
|
||||
|
|
@ -427,7 +427,7 @@ Class UTRocketLauncher : UTWeapon
|
|||
}
|
||||
}
|
||||
// lose lock-on
|
||||
if ( invoker.LockedOn ) A_PlaySound("utrl/seeklost",CHAN_6);
|
||||
if ( invoker.LockedOn ) A_StartSound("utrl/seeklost",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
invoker.LockedTarget = null;
|
||||
invoker.LockedOn = false;
|
||||
for ( int i=0; i<12; i++ )
|
||||
|
|
@ -462,8 +462,8 @@ Class UTRocketLauncher : UTWeapon
|
|||
invoker.LockedTarget = a;
|
||||
}
|
||||
}
|
||||
if ( invoker.LockedTarget ) A_PlaySound("utrl/seeklock",CHAN_WEAPON);
|
||||
else if ( invoker.LockedOn ) A_PlaySound("utrl/seeklost",CHAN_WEAPON);
|
||||
if ( invoker.LockedTarget ) A_StartSound("utrl/seeklock",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
else if ( invoker.LockedOn ) A_StartSound("utrl/seeklost",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
if ( invoker.LockedTarget ) invoker.LockedOn = true;
|
||||
}
|
||||
|
||||
|
|
@ -524,7 +524,7 @@ Class UTRocketLauncher : UTWeapon
|
|||
Reload:
|
||||
EBLI A 5
|
||||
{
|
||||
A_PlaySound("utrl/load",CHAN_6,0.3);
|
||||
A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP,0.3);
|
||||
if ( invoker.bSingleRocket = !invoker.bSingleRocket )
|
||||
A_Print(StringTable.Localize("$M_SINGLEROCKETON"));
|
||||
else A_Print(StringTable.Localize("$M_SINGLEROCKETOFF"));
|
||||
|
|
@ -537,57 +537,57 @@ Class UTRocketLauncher : UTWeapon
|
|||
EBLI A 2 A_JumpIf((!invoker.bAltFire&&invoker.bSingleRocket)||(invoker.Ammo1.Amount<=0)||FireCheck(),"FireOne");
|
||||
EBLI A 0; // no tween
|
||||
// load two
|
||||
EBR1 A 0 A_PlaySound("utrl/rotate",CHAN_6,0.1);
|
||||
EBR1 A 0 A_StartSound("utrl/rotate",CHAN_WEAPONMISC,CHANF_OVERLAP,0.1);
|
||||
EBR1 ABCDEFG 2 A_JumpIf(FireCheck(),"FireOne");
|
||||
EBL2 A 0 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL2 ABCDEFG 3 A_JumpIf(FireCheck(),"FireOne");
|
||||
EBL2 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL2 ABCDEFG 2 A_JumpIf(FireCheck(),"FireOne");
|
||||
EBR2 A 0
|
||||
{
|
||||
A_LoadRocket();
|
||||
return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireTwo");
|
||||
}
|
||||
// load three
|
||||
EBR2 A 0 A_PlaySound("utrl/rotate",CHAN_6,0.1);
|
||||
EBR2 A 0 A_StartSound("utrl/rotate",CHAN_WEAPONMISC,CHANF_OVERLAP,0.1);
|
||||
EBR2 ABCDEFG 2 A_JumpIf(FireCheck(),"FireTwo");
|
||||
EBL3 A 0 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL3 ABCDEFG 3 A_JumpIf(FireCheck(),"FireTwo");
|
||||
EBL3 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL3 ABCDEFG 2 A_JumpIf(FireCheck(),"FireTwo");
|
||||
EBR3 A 0
|
||||
{
|
||||
A_LoadRocket();
|
||||
return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireThree");
|
||||
}
|
||||
// load four
|
||||
EBR3 A 0 A_PlaySound("utrl/rotate",CHAN_6,0.1);
|
||||
EBR3 A 0 A_StartSound("utrl/rotate",CHAN_WEAPONMISC,CHANF_OVERLAP,0.1);
|
||||
EBR3 ABCDEFG 2 A_JumpIf(FireCheck(),"FireThree");
|
||||
EBL4 A 0 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL4 ABCDEFG 3 A_JumpIf(FireCheck(),"FireThree");
|
||||
EBL4 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL4 ABCDEFG 2 A_JumpIf(FireCheck(),"FireThree");
|
||||
EBR4 A 0
|
||||
{
|
||||
A_LoadRocket();
|
||||
return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireFour");
|
||||
}
|
||||
// load five
|
||||
EBR4 A 0 A_PlaySound("utrl/rotate",CHAN_6,0.1);
|
||||
EBR4 A 0 A_StartSound("utrl/rotate",CHAN_WEAPONMISC,CHANF_OVERLAP,0.1);
|
||||
EBR4 ABCDEFG 2 A_JumpIf(FireCheck(),"FireFour");
|
||||
EBL5 A 0 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL5 ABCDEFG 3 A_JumpIf(FireCheck(),"FireFour");
|
||||
EBL5 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL5 ABCDEFG 2 A_JumpIf(FireCheck(),"FireFour");
|
||||
EBR5 A 0
|
||||
{
|
||||
A_LoadRocket();
|
||||
return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireFive");
|
||||
}
|
||||
// load six
|
||||
EBR5 A 0 A_PlaySound("utrl/rotate",CHAN_6,0.1);
|
||||
EBR5 A 0 A_StartSound("utrl/rotate",CHAN_WEAPONMISC,CHANF_OVERLAP,0.1);
|
||||
EBR5 ABCDEFG 2 A_JumpIf(FireCheck(),"FireFive");
|
||||
EBL6 A 0 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL6 ABCDEF 3 A_JumpIf(FireCheck(),"FireFive");
|
||||
EBL6 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL6 ABCDEF 2 A_JumpIf(FireCheck(),"FireFive");
|
||||
EBL6 F 0 A_LoadRocket();
|
||||
Goto FireSix;
|
||||
FireOne:
|
||||
EBF1 A 0 A_FireRockets(1);
|
||||
EBF1 ABCDEFGH 2;
|
||||
EBL1 A 0 A_CheckReload();
|
||||
EBL1 A 2 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL1 A 2 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL1 BCDEFG 2;
|
||||
EBLI A 0;
|
||||
Goto Idle;
|
||||
|
|
@ -595,7 +595,7 @@ Class UTRocketLauncher : UTWeapon
|
|||
EBF2 A 0 A_FireRockets(2);
|
||||
EBF2 ABCDEFGHIJK 2;
|
||||
EBL1 A 0 A_CheckReload();
|
||||
EBL1 A 2 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL1 A 2 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL1 BCDEFG 2;
|
||||
EBLI A 0;
|
||||
Goto Idle;
|
||||
|
|
@ -603,7 +603,7 @@ Class UTRocketLauncher : UTWeapon
|
|||
EBF3 A 0 A_FireRockets(3);
|
||||
EBF3 ABCDEFGHIJ 2;
|
||||
EBL1 A 0 A_CheckReload();
|
||||
EBL1 A 2 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL1 A 2 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL1 BCDEFG 2;
|
||||
EBLI A 0;
|
||||
Goto Idle;
|
||||
|
|
@ -611,7 +611,7 @@ Class UTRocketLauncher : UTWeapon
|
|||
EBF4 A 0 A_FireRockets(4);
|
||||
EBF4 ABCDEFGHIJK 2;
|
||||
EBL1 A 0 A_CheckReload();
|
||||
EBL1 A 2 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL1 A 2 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL1 BCDEFG 2;
|
||||
EBLI A 0;
|
||||
Goto Idle;
|
||||
|
|
@ -619,7 +619,7 @@ Class UTRocketLauncher : UTWeapon
|
|||
EBF5 A 0 A_FireRockets(5);
|
||||
EBF5 ABCDEFGHIJKLM 2;
|
||||
EBL1 A 0 A_CheckReload();
|
||||
EBL1 A 2 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL1 A 2 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL1 BCDEFG 2;
|
||||
EBLI A 0;
|
||||
Goto Idle;
|
||||
|
|
@ -627,7 +627,7 @@ Class UTRocketLauncher : UTWeapon
|
|||
EBF6 A 0 A_FireRockets(6);
|
||||
EBF6 ABCDEFGHIJKLMNOP 2;
|
||||
EBL1 A 0 A_CheckReload();
|
||||
EBL1 A 2 A_PlaySound("utrl/load",CHAN_6);
|
||||
EBL1 A 2 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
EBL1 BCDEFG 2;
|
||||
EBLI A 0;
|
||||
Goto Idle;
|
||||
|
|
|
|||
|
|
@ -83,7 +83,8 @@ Class BulletImpact : Actor
|
|||
let s = Spawn("UTChip",pos+x*2);
|
||||
s.vel = pvel;
|
||||
}
|
||||
A_PlaySound("bullet/hit",CHAN_VOICE,attenuation:3.0);
|
||||
if ( !Random[Enforcer](0,3) ) A_StartSound("flak/hit",CHAN_VOICE,attenuation:2.5);
|
||||
else A_StartSound("bullet/hit",CHAN_VOICE,attenuation:3.0);
|
||||
let s = Spawn("Splasher",Vec3Offset(0,0,2));
|
||||
s.vel = (0,0,-4);
|
||||
}
|
||||
|
|
@ -274,7 +275,7 @@ Class Enforcer : UTWeapon
|
|||
if ( invoker.altaccuracy < 0.2 ) invoker.altaccuracy += 0.05;
|
||||
if ( slave )
|
||||
{
|
||||
if ( flak_enforcerreload && (invoker.slaveclipcount < 5) ) A_PlaySound("enforcer/click",CHAN_6);
|
||||
if ( flak_enforcerreload && (invoker.slaveclipcount < 5) ) A_StartSound("enforcer/click",CHAN_LEFTWEAPONMISC);
|
||||
if ( (invoker.slaveclipcount <= 0) || (weap.Ammo1.Amount <= 0) )
|
||||
{
|
||||
invoker.slaverefire = 0;
|
||||
|
|
@ -301,7 +302,7 @@ Class Enforcer : UTWeapon
|
|||
}
|
||||
else
|
||||
{
|
||||
if ( flak_enforcerreload && (invoker.clipcount < 5) ) A_PlaySound("enforcer/click",CHAN_WEAPON);
|
||||
if ( flak_enforcerreload && (invoker.clipcount < 5) ) A_StartSound("enforcer/click",CHAN_WEAPONMISC);
|
||||
if ( (invoker.clipcount <= 0) || (weap.Ammo1.Amount <= 0) )
|
||||
{
|
||||
A_ClearRefire();
|
||||
|
|
@ -357,7 +358,7 @@ Class Enforcer : UTWeapon
|
|||
}
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(32,255,128,0),1);
|
||||
A_PlaySound("enforcer/shoot",slave?CHAN_6:CHAN_WEAPON);
|
||||
A_StartSound("enforcer/shoot",slave?CHAN_LEFTWEAPON:CHAN_WEAPON,CHANF_OVERLAP);
|
||||
A_AlertMonsters();
|
||||
A_QuakeEx(2,2,2,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.08);
|
||||
if ( slave )
|
||||
|
|
@ -518,7 +519,7 @@ Class Enforcer : UTWeapon
|
|||
LeftReady:
|
||||
2NFS A 0
|
||||
{
|
||||
A_PlaySound("enforcer/select",CHAN_6);
|
||||
A_StartSound("enforcer/select",CHAN_LEFTWEAPON);
|
||||
invoker.slaveactive = true;
|
||||
}
|
||||
2NFS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_JumpIf(invoker.slavedown,"LeftDeselect");
|
||||
|
|
@ -619,7 +620,7 @@ Class Enforcer : UTWeapon
|
|||
invoker.clipout = true;
|
||||
invoker.clipcount = 0;
|
||||
A_Overlay(-9999,null);
|
||||
A_PlaySound("enforcer/click",CHAN_WEAPON);
|
||||
A_StartSound("enforcer/click",CHAN_WEAPONMISC);
|
||||
}
|
||||
ENFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1;
|
||||
ENR2 AB 1;
|
||||
|
|
@ -627,7 +628,7 @@ Class Enforcer : UTWeapon
|
|||
{
|
||||
invoker.clipout = false;
|
||||
invoker.clipcount = min(invoker.default.clipcount,invoker.Ammo1.Amount);
|
||||
A_PlaySound("enforcer/reload",CHAN_WEAPON);
|
||||
A_StartSound("enforcer/reload",CHAN_WEAPON);
|
||||
if ( self is 'UTPlayer' )
|
||||
UTPlayer(self).PlayReloading();
|
||||
invoker.slavereload = (flak_enforcerreload&&invoker.slaveactive&&(invoker.slaveclipcount<min(invoker.default.slaveclipcount,invoker.Ammo1.Amount)));
|
||||
|
|
@ -639,7 +640,7 @@ Class Enforcer : UTWeapon
|
|||
c.pitch = pitch;
|
||||
c.vel = vel*.5+x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-z*FRandom[Junk](1,2);
|
||||
}
|
||||
ENFS A 0 A_PlaySound("enforcer/select",CHAN_WEAPON);
|
||||
ENFS A 0 A_StartSound("enforcer/select",CHAN_WEAPON);
|
||||
Goto Ready;
|
||||
LeftReload:
|
||||
2NFR A 0
|
||||
|
|
@ -652,7 +653,7 @@ Class Enforcer : UTWeapon
|
|||
invoker.slaveclipout = true;
|
||||
invoker.slaveclipcount = 0;
|
||||
A_Overlay(-9998,null);
|
||||
A_PlaySound("enforcer/click",CHAN_6);
|
||||
A_StartSound("enforcer/click",CHAN_LEFTWEAPONMISC);
|
||||
return ResolveState(null);
|
||||
}
|
||||
2NFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1;
|
||||
|
|
@ -661,7 +662,7 @@ Class Enforcer : UTWeapon
|
|||
{
|
||||
invoker.slaveclipout = false;
|
||||
invoker.slaveclipcount = min(invoker.default.slaveclipcount,invoker.Ammo1.Amount);
|
||||
A_PlaySound("enforcer/reload",CHAN_6);
|
||||
A_StartSound("enforcer/reload",CHAN_LEFTWEAPON);
|
||||
if ( self is 'UTPlayer' )
|
||||
UTPlayer(self).PlayReloading();
|
||||
invoker.slavereload = false;
|
||||
|
|
@ -673,7 +674,7 @@ Class Enforcer : UTWeapon
|
|||
c.pitch = pitch;
|
||||
c.vel = vel*.5+x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-z*FRandom[Junk](1,2);
|
||||
}
|
||||
2NFS A 0 A_PlaySound("enforcer/select",CHAN_6);
|
||||
2NFS A 0 A_StartSound("enforcer/select",CHAN_LEFTWEAPON);
|
||||
Goto LeftReady;
|
||||
Deselect:
|
||||
ENFD A 0
|
||||
|
|
|
|||
|
|
@ -341,7 +341,7 @@ Class FlakChunk : Actor
|
|||
rollvel = FRandom[Flak](50,100)*RandomPick[Flak](-1,1)*(vel.length()/speed);
|
||||
pitchvel = FRandom[Flak](50,100)*RandomPick[Flak](-1,1)*(vel.length()/speed);
|
||||
yawvel = FRandom[Flak](50,100)*RandomPick[Flak](-1,1)*(vel.length()/speed);
|
||||
A_PlaySound("flak/bounce",volume:0.3);
|
||||
A_StartSound("flak/bounce",volume:0.3);
|
||||
A_AlertMonsters();
|
||||
if ( vel.length() < 5 ) ExplodeMissile();
|
||||
}
|
||||
|
|
@ -351,7 +351,7 @@ Class FlakChunk : Actor
|
|||
if ( !target.bNOBLOOD )
|
||||
{
|
||||
target.SpawnBlood(pos,AngleTo(target),damage);
|
||||
A_PlaySound("flak/meat",volume:0.3);
|
||||
A_StartSound("flak/meat",volume:0.3);
|
||||
A_AlertMonsters();
|
||||
}
|
||||
return -1;
|
||||
|
|
@ -373,7 +373,7 @@ Class FlakChunk : Actor
|
|||
if ( !victim.bNOBLOOD && (victim.health-amt > victim.GetGibHealth()) )
|
||||
{
|
||||
victim.SpawnBlood(pos,AngleTo(victim),damage);
|
||||
A_PlaySound("flak/meat",volume:0.3);
|
||||
A_StartSound("flak/meat",volume:0.3);
|
||||
A_AlertMonsters();
|
||||
}
|
||||
return 1;
|
||||
|
|
@ -418,7 +418,7 @@ Class FlakChunk : Actor
|
|||
else dir = vel.unit();
|
||||
l.angle = atan2(dir.y,dir.x);
|
||||
l.pitch = asin(-dir.z);
|
||||
A_PlaySound("flak/hit",volume:0.3);
|
||||
A_StartSound("flak/hit",volume:0.3);
|
||||
A_AlertMonsters();
|
||||
}
|
||||
XDeath:
|
||||
|
|
@ -519,7 +519,7 @@ Class FlakSlug : Actor
|
|||
UTMainHandler.DoBlast(self,120,75000);
|
||||
A_Explode(70,120);
|
||||
A_QuakeEx(4,4,4,8,0,170,"",QF_RELATIVE|QF_SCALEDOWN,falloff:120,rollIntensity:0.2);
|
||||
A_PlaySound("flak/explode",CHAN_VOICE);
|
||||
A_StartSound("flak/explode",CHAN_VOICE);
|
||||
A_AlertMonsters();
|
||||
if ( !Tracer ) Spawn("SlugSmoke",pos);
|
||||
Spawn("SlugLight",pos);
|
||||
|
|
@ -639,8 +639,8 @@ Class FlakCannon : UTWeapon
|
|||
{
|
||||
action void A_Loading( bool first = false )
|
||||
{
|
||||
if ( first ) A_PlaySound("flak/load",CHAN_WEAPON);
|
||||
else A_PlaySound("flak/reload",CHAN_6);
|
||||
if ( first ) A_StartSound("flak/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
else A_StartSound("flak/reload",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
}
|
||||
action void A_FireChunks()
|
||||
{
|
||||
|
|
@ -648,7 +648,7 @@ Class FlakCannon : UTWeapon
|
|||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
A_PlaySound("flak/fire",CHAN_WEAPON);
|
||||
A_StartSound("flak/fire",CHAN_WEAPON);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(160,255,96,0),1);
|
||||
UTMainHandler.DoSwing(self,(FRandom[Flak](-0.3,-0.8),FRandom[Flak](-0.5,0.5)),4,-1.5,2,SWING_Spring,2,2);
|
||||
|
|
@ -707,7 +707,7 @@ Class FlakCannon : UTWeapon
|
|||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
A_PlaySound("flak/altfire",CHAN_WEAPON);
|
||||
A_StartSound("flak/altfire",CHAN_WEAPON);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(128,255,96,0),1);
|
||||
UTMainHandler.DoSwing(self,(FRandom[Flak](-0.4,-0.8),FRandom[Flak](0.4,0.8)),4,-1,3,SWING_Spring,3,5);
|
||||
|
|
|
|||
|
|
@ -87,7 +87,8 @@ Class ImpactHammer : UTWeapon
|
|||
{
|
||||
Weapon weap = Weapon(invoker);
|
||||
if ( !weap ) return;
|
||||
A_PlaySound("impact/release",CHAN_WEAPON);
|
||||
A_StopSound(CHAN_WEAPONMISC);
|
||||
A_StartSound("impact/release",CHAN_WEAPON);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoSwing(self,(FRandom[Impact](-0.3,-1.5),FRandom[Impact](-1.2,-0.4)),3,-0.8,3,SWING_Spring,3,2);
|
||||
A_AlertMonsters(gameinfo.gametype&GAME_Strife?100:0);
|
||||
|
|
@ -152,7 +153,7 @@ Class ImpactHammer : UTWeapon
|
|||
{
|
||||
Weapon weap = Weapon(invoker);
|
||||
if ( !weap ) return;
|
||||
A_PlaySound("impact/fire",CHAN_WEAPON);
|
||||
A_StartSound("impact/fire",CHAN_WEAPON);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoSwing(self,(FRandom[Impact](-0.3,-1.5),FRandom[Impact](-1.2,-0.4)),2,-0.6,2,SWING_Spring,1,2);
|
||||
A_AlertMonsters(gameinfo.gametype&GAME_Strife?100:0);
|
||||
|
|
@ -249,10 +250,10 @@ Class ImpactHammer : UTWeapon
|
|||
{
|
||||
A_ResetCharge();
|
||||
A_Overlay(-9999,"Charging");
|
||||
A_PlaySound("impact/pull",CHAN_WEAPON);
|
||||
A_StartSound("impact/pull",CHAN_WEAPON);
|
||||
}
|
||||
IMPL ABCDE 5;
|
||||
IMPR A 0 A_PlaySound("impact/loop",CHAN_WEAPON,looping:true);
|
||||
IMPR A 0 A_StartSound("impact/loop",CHAN_WEAPONMISC,CHANF_LOOPING);
|
||||
Goto Hold;
|
||||
Hold:
|
||||
IMPR ABCDEFGHIJ 1;
|
||||
|
|
|
|||
|
|
@ -247,23 +247,27 @@ Class Minigun : UTWeapon
|
|||
Hold:
|
||||
MGNF A 0
|
||||
{
|
||||
A_PlaySound("minigun/fire",CHAN_WEAPON,1.0,true);
|
||||
A_StartSound("minigun/fire",CHAN_WEAPONMISC,CHANF_LOOPING);
|
||||
A_Overlay(-9999,"FireDummy");
|
||||
}
|
||||
MGNF ABCDEFGHIJKLMNOPQRS 1 A_FireBullet();
|
||||
MGNF A 0 A_JumpIf(player.cmd.buttons&BT_ALTATTACK,1);
|
||||
Goto Hold+1;
|
||||
AltHold:
|
||||
MGNF B 0 A_PlaySound("minigun/altfire",CHAN_WEAPON,1.0,true);
|
||||
MGNF B 0 A_StartSound("minigun/altfire",CHAN_WEAPONMISC,CHANF_LOOPING);
|
||||
MGNF ADGJMPSCFILORBEHKNQ 1 A_FireBullet(true);
|
||||
Goto AltHold+1;
|
||||
Unwind:
|
||||
MGNU A 0 A_PlaySound("minigun/unwind",CHAN_WEAPON);
|
||||
MGNU A 0
|
||||
{
|
||||
A_StopSound(CHAN_WEAPONMISC);
|
||||
A_StartSound("minigun/unwind",CHAN_WEAPON);
|
||||
}
|
||||
MGNU ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_MinigunRefire();
|
||||
MGU2 ABCDEFGHIJKLM 1 A_MinigunRefire();
|
||||
Goto Idle;
|
||||
Deselect:
|
||||
MGND A 1 A_StopSound(CHAN_WEAPON);
|
||||
MGND A 1 A_StopSound(CHAN_WEAPONMISC);
|
||||
MGND BCDEFGHIJ 1;
|
||||
MGND J 1 A_Lower(int.max);
|
||||
Wait;
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ Class DamageAmplifier : Powerup
|
|||
{
|
||||
Super.DoEffect();
|
||||
if ( (EffectTics == 175) || (EffectTics == 140) || (EffectTics == 105) || (EffectTics == 70) || (EffectTics == 35) )
|
||||
Owner.A_PlaySound("udamage/drain",CHAN_7,1.0,false,0.25);
|
||||
Owner.A_StartSound("udamage/drain",CHAN_POWERUP2,attenuation:.25);
|
||||
}
|
||||
|
||||
override void EndEffect()
|
||||
|
|
@ -91,8 +91,8 @@ Class DamageAmplifier : Powerup
|
|||
void FireEffect()
|
||||
{
|
||||
if ( gametic < lasteffect ) return;
|
||||
if ( EffectTics < 350 ) Owner.A_PlaySound("udamage/fire2",CHAN_7,1.0,false,0.25);
|
||||
else Owner.A_PlaySound("udamage/fire1",CHAN_7,1.0,false,0.25);
|
||||
if ( EffectTics < 350 ) Owner.A_StartSound("udamage/fire2",CHAN_POWERUP,attenuation:.25);
|
||||
else Owner.A_StartSound("udamage/fire1",CHAN_POWERUP,attenuation:.25);
|
||||
UTMainHandler.DoFlash(Owner,Color(48,238,0,255),6);
|
||||
lasteffect = gametic+5; // prevent excess flash
|
||||
}
|
||||
|
|
@ -181,7 +181,7 @@ Class UTInvulPower : Powerup
|
|||
{
|
||||
Super.DoEffect();
|
||||
if ( (EffectTics == 175) || (EffectTics == 140) || (EffectTics == 105) || (EffectTics == 70) || (EffectTics == 35) )
|
||||
Owner.A_PlaySound("uinvul/drain",CHAN_7,1.0,false,0.25);
|
||||
Owner.A_StartSound("uinvul/drain",CHAN_POWERUP2,attenuation:.25);
|
||||
}
|
||||
|
||||
override void EndEffect()
|
||||
|
|
@ -200,7 +200,7 @@ Class UTInvulPower : Powerup
|
|||
if ( !passive || (damage <= 0) ) return;
|
||||
newdamage = 0;
|
||||
if ( gametic < lasteffect ) return;
|
||||
Owner.A_PlaySound("uinvul/hit",CHAN_7,1.0,false,0.25);
|
||||
Owner.A_StartSound("uinvul/hit",CHAN_POWERUP4,attenuation:.25);
|
||||
UTMainHandler.DoFlash(Owner,Color(48,255,238,0),6);
|
||||
lasteffect = gametic+5; // prevent excess flash
|
||||
}
|
||||
|
|
@ -441,7 +441,7 @@ Class UTJumpBoots : Inventory
|
|||
if ( (amount > 0) && (owner.player.jumptics == -1) )
|
||||
{
|
||||
Amount = max(0,Amount-700);
|
||||
Owner.A_PlaySound("boot/jump",CHAN_BODY);
|
||||
Owner.A_StartSound("boot/jump",CHAN_POWERUP3);
|
||||
}
|
||||
else if ( (Amount <= 0) && owner.player.onground )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -161,14 +161,14 @@ Class PulseBall : Actor
|
|||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
A_PlaySound("pulse/fly",CHAN_BODY,0.8,true,8.0);
|
||||
A_StartSound("pulse/fly",CHAN_BODY,CHANF_LOOPING,.8,8.);
|
||||
let l = Spawn("PulseBallLight",pos);
|
||||
l.target = self;
|
||||
}
|
||||
action void A_BallExp()
|
||||
{
|
||||
A_SetScale(0.45);
|
||||
A_PlaySound("pulse/hit",CHAN_BODY);
|
||||
A_StartSound("pulse/hit");
|
||||
A_SprayDecal("BoltScorch");
|
||||
Spawn("PulseExplLight",pos);
|
||||
int numpt = Random[Pulse](20,40);
|
||||
|
|
@ -692,7 +692,7 @@ Class PulseGun : UTWeapon
|
|||
action void A_StartBeam()
|
||||
{
|
||||
invoker.special1 = 0;
|
||||
A_PlaySound("pulse/bolt",CHAN_WEAPON,1.0,true);
|
||||
A_StartSound("pulse/bolt",CHAN_WEAPON,CHANF_LOOPING);
|
||||
Vector3 x, y, z, origin;
|
||||
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+4.1*y-2.7*z);
|
||||
|
|
@ -778,13 +778,13 @@ Class PulseGun : UTWeapon
|
|||
PGNI A 0
|
||||
{
|
||||
invoker.special1 = 0;
|
||||
A_PlaySound("pulse/fire",CHAN_WEAPON,1.0,true);
|
||||
A_StartSound("pulse/fire",CHAN_WEAPON,CHANF_LOOPING);
|
||||
}
|
||||
PGNF ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_PulseFire();
|
||||
PGF2 ABCDEFGHIJKLMN 1 A_PulseFire();
|
||||
Goto Fire+1;
|
||||
Release:
|
||||
PGNC A 0 A_PlaySound("pulse/down",CHAN_WEAPON);
|
||||
PGNC A 0 A_StartSound("pulse/down",CHAN_WEAPON);
|
||||
PGNC ABCDEFGHIJKLMNOPQRSTUVWXY 1 A_PulseRefire();
|
||||
PGNC Y 0;
|
||||
Goto Idle;
|
||||
|
|
@ -804,7 +804,7 @@ Class PulseGun : UTWeapon
|
|||
PGNI A 0 A_JumpIf(invoker.clipcount >= Min(invoker.default.clipcount,invoker.Ammo1.Amount),"Idle");
|
||||
PGNR A 1
|
||||
{
|
||||
A_PlaySound("pulse/reload",CHAN_WEAPON);
|
||||
A_StartSound("pulse/reload",CHAN_WEAPONMISC);
|
||||
if ( self is 'UTPlayer' )
|
||||
UTPlayer(self).PlayReloading();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ Class Razor2 : Actor
|
|||
Super.PostBeginPlay();
|
||||
let t = Spawn("Razor2Trail",pos);
|
||||
t.target = self;
|
||||
A_PlaySound("ripper/hum",CHAN_VOICE,1.0,true,3.0,pitch:3.125);
|
||||
A_StartSound("ripper/hum",CHAN_VOICE,CHANF_LOOPING,1.,3.,3.125);
|
||||
Vector3 dir = vel.unit();
|
||||
A_SetAngle(atan2(dir.y,dir.x));
|
||||
A_SetPitch(asin(-dir.z));
|
||||
|
|
@ -91,7 +91,7 @@ Class Razor2 : Actor
|
|||
if ( !target.bNOBLOOD )
|
||||
{
|
||||
target.SpawnBlood(pos,AngleTo(target),damage);
|
||||
A_PlaySound("ripper/flesh");
|
||||
A_StartSound("ripper/flesh");
|
||||
A_AlertMonsters();
|
||||
}
|
||||
UTMainHandler.DoKnockback(target,vel.unit(),15000);
|
||||
|
|
@ -99,7 +99,7 @@ Class Razor2 : Actor
|
|||
}
|
||||
action void A_RazorHit()
|
||||
{
|
||||
A_PlaySound("ripper/hit");
|
||||
A_StartSound("ripper/hit");
|
||||
A_AlertMonsters();
|
||||
A_SprayDecal("WallCrack",-20);
|
||||
int numpt = Random[Ripper](5,10);
|
||||
|
|
@ -175,7 +175,7 @@ Class Razor2Alt : Razor2
|
|||
bFORCEXYBILLBOARD = true;
|
||||
Scale *= 0.65;
|
||||
A_StopSound(CHAN_VOICE);
|
||||
A_PlaySound("ripper/althit",CHAN_VOICE);
|
||||
A_StartSound("ripper/althit",CHAN_VOICE);
|
||||
Spawn("Razor2AltLight",pos);
|
||||
A_AlertMonsters();
|
||||
A_SprayDecal("RazorBlast",20);
|
||||
|
|
@ -246,8 +246,8 @@ Class Ripper2 : UTWeapon
|
|||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
if ( alt ) A_PlaySound("ripper/altfire",CHAN_WEAPON);
|
||||
else A_PlaySound("ripper/fire",CHAN_WEAPON);
|
||||
if ( alt ) A_StartSound("ripper/altfire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
else A_StartSound("ripper/fire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(8,0,255,255),1);
|
||||
A_AlertMonsters();
|
||||
|
|
|
|||
|
|
@ -361,7 +361,7 @@ Class ShockBeam : Actor
|
|||
let r = Spawn("ShockBlastRing",b.pos);
|
||||
r.angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x);
|
||||
r.pitch = asin(-t.Results.HitVector.z);
|
||||
A_PlaySound("shock/blast",CHAN_WEAPON,attenuation:0.5,pitch:0.6);
|
||||
A_StartSound("shock/blast",CHAN_WEAPON,attenuation:0.5,pitch:0.6);
|
||||
int numpt = Random[ASMD](200,300);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
|
|
@ -414,7 +414,7 @@ Class ShockBeam : Actor
|
|||
{
|
||||
Spawn("ShockBeamLight",pos);
|
||||
A_QuakeEx(2,2,2,5,0,120,"",QF_RELATIVE|QF_SCALEDOWN,falloff:60,rollIntensity:0.1);
|
||||
A_PlaySound("shock/hit",CHAN_VOICE);
|
||||
A_StartSound("shock/hit",CHAN_VOICE);
|
||||
A_AlertMonsters();
|
||||
int numpt = Random[ASMD](20,50);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
|
|
@ -598,8 +598,8 @@ Class SuperShockBeam : Actor
|
|||
let r = Spawn("SuperShockBlastRing",b.pos);
|
||||
r.angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x);
|
||||
r.pitch = asin(-t.Results.HitVector.z);
|
||||
A_PlaySound("shock/blast",CHAN_WEAPON,attenuation:0.5,pitch:0.6);
|
||||
A_PlaySound("sshock/blast",CHAN_6,attenuation:0.5);
|
||||
A_StartSound("shock/blast",CHAN_WEAPON,attenuation:0.5,pitch:0.6);
|
||||
A_StartSound("sshock/blast",CHAN_6,attenuation:0.5);
|
||||
int numpt = Random[ASMD](200,300);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
|
|
@ -664,8 +664,8 @@ Class SuperShockBeam : Actor
|
|||
A_Explode(int.max,50);
|
||||
}
|
||||
A_QuakeEx(6,6,6,5,0,100,"",QF_RELATIVE|QF_SCALEDOWN,falloff:50,rollIntensity:0.2);
|
||||
A_PlaySound("shock/hit",CHAN_VOICE,attenuation:0.5);
|
||||
A_PlaySound("sshock/blast",CHAN_6,attenuation:0.5);
|
||||
A_StartSound("shock/hit",CHAN_VOICE,attenuation:0.5);
|
||||
A_StartSound("sshock/blast",CHAN_6,attenuation:0.5);
|
||||
A_AlertMonsters();
|
||||
int numpt = Random[ASMD](20,50);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
|
|
@ -881,8 +881,8 @@ Class ShockBall : Actor
|
|||
r.angle = atan2(HitNormal.y,HitNormal.x);
|
||||
r.pitch = asin(-HitNormal.z);
|
||||
r.scale *= 1.5;
|
||||
A_PlaySound("shock/hit",CHAN_VOICE);
|
||||
A_PlaySound("shock/ball",CHAN_WEAPON,pitch:FRandom[ASMD](0.5,1.5));
|
||||
A_StartSound("shock/hit",CHAN_VOICE);
|
||||
A_StartSound("shock/ball",CHAN_WEAPON,pitch:FRandom[ASMD](0.5,1.5));
|
||||
A_QuakeEx(4,4,4,30,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:70,rollIntensity:0.15);
|
||||
A_AlertMonsters();
|
||||
int numpt = Random[ASMD](50,100);
|
||||
|
|
@ -974,9 +974,9 @@ Class SuperShockBall : Actor
|
|||
r.angle = atan2(HitNormal.y,HitNormal.x);
|
||||
r.pitch = asin(-HitNormal.z);
|
||||
r.scale *= 1.5;
|
||||
A_PlaySound("shock/hit",CHAN_VOICE,attenuation:0.5);
|
||||
A_PlaySound("shock/ball",CHAN_WEAPON,attenuation:0.5,pitch:FRandom[ASMD](0.5,1.5));
|
||||
A_PlaySound("sshock/blast",CHAN_6,attenuation:0.5);
|
||||
A_StartSound("shock/hit",CHAN_VOICE,attenuation:0.5);
|
||||
A_StartSound("shock/ball",CHAN_WEAPON,attenuation:0.5,pitch:FRandom[ASMD](0.5,1.5));
|
||||
A_StartSound("sshock/blast",CHAN_6,attenuation:0.5);
|
||||
A_QuakeEx(8,8,8,30,0,300,"",QF_RELATIVE|QF_SCALEDOWN,falloff:120,rollIntensity:0.25);
|
||||
A_AlertMonsters();
|
||||
int numpt = Random[ASMD](50,100);
|
||||
|
|
@ -1066,7 +1066,7 @@ Class ShockRifle : UTWeapon
|
|||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
A_PlaySound("shock/fire",CHAN_WEAPON);
|
||||
A_StartSound("shock/fire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(128,128,0,255),1);
|
||||
UTMainHandler.DoSwing(self,(FRandom[ASMD](-0.1,-0.6),FRandom[ASMD](-0.1,0.5)),2,-0.3,3,SWING_Spring,0,4);
|
||||
|
|
@ -1104,7 +1104,7 @@ Class ShockRifle : UTWeapon
|
|||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
A_PlaySound("shock/altfire",CHAN_WEAPON);
|
||||
A_StartSound("shock/altfire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(128,128,0,255),1);
|
||||
UTMainHandler.DoSwing(self,(FRandom[ASMD](-0.1,-0.6),FRandom[ASMD](-0.1,0.5)),3,-0.4,3,SWING_Spring,0,4);
|
||||
|
|
@ -1249,7 +1249,7 @@ Class EnhancedShockRifle : UTWeapon
|
|||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
A_PlaySound("shock/fire",CHAN_WEAPON);
|
||||
A_StartSound("shock/fire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(128,255,128,0),1);
|
||||
UTMainHandler.DoSwing(self,(FRandom[ASMD](-0.1,-0.6),FRandom[ASMD](-0.1,0.5)),4,-0.6,3,SWING_Spring,0,4);
|
||||
|
|
@ -1287,7 +1287,7 @@ Class EnhancedShockRifle : UTWeapon
|
|||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
A_PlaySound("shock/altfire",CHAN_WEAPON);
|
||||
A_StartSound("shock/altfire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(128,255,128,0),1);
|
||||
UTMainHandler.DoSwing(self,(FRandom[ASMD](-0.1,-0.6),FRandom[ASMD](-0.1,0.5)),6,-0.8,3,SWING_Spring,0,4);
|
||||
|
|
@ -1370,7 +1370,7 @@ Class EnhancedShockRifle : UTWeapon
|
|||
DryFire:
|
||||
ASMA I 3
|
||||
{
|
||||
A_PlaySound("sshock/dryfire",CHAN_WEAPON);
|
||||
A_StartSound("sshock/dryfire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
A_AlertMonsters();
|
||||
}
|
||||
ASMA J 4;
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ Class SniperRifle : UTWeapon
|
|||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(32,0,0,255),1);
|
||||
A_PlaySound("sniper/fire",CHAN_WEAPON);
|
||||
A_StartSound("sniper/fire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
A_AlertMonsters();
|
||||
if ( zoomed )
|
||||
{
|
||||
|
|
@ -255,11 +255,11 @@ Class SniperRifle : UTWeapon
|
|||
if ( invoker.sniperzoom > 1. )
|
||||
{
|
||||
if ( CVar.GetCVar('flak_zoomsound',players[consoleplayer]).GetBool() && CheckLocalView() )
|
||||
A_PlaySound("sniper/zoomdown",CHAN_WEAPON);
|
||||
A_StartSound("sniper/zoomdown",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
return ResolveState("AltHold2");
|
||||
}
|
||||
if ( CVar.GetCVar('flak_zoomsound',players[consoleplayer]).GetBool() && CheckLocalView() )
|
||||
A_PlaySound("sniper/zoomup",CHAN_WEAPON);
|
||||
A_StartSound("sniper/zoomup",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
return ResolveState(null);
|
||||
}
|
||||
AltHold:
|
||||
|
|
@ -279,7 +279,7 @@ Class SniperRifle : UTWeapon
|
|||
SRFD A 0
|
||||
{
|
||||
if ( (invoker.sniperzoom>1.0) && CVar.GetCVar('flak_zoomsound',players[consoleplayer]).GetBool() && CheckLocalView() )
|
||||
A_PlaySound("sniper/zoomdown",CHAN_WEAPON);
|
||||
A_StartSound("sniper/zoomdown",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT);
|
||||
}
|
||||
SRFD ABCDEFG 1;
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ Class ModuleHitbox : Actor
|
|||
if ( !bi.Thing || (bi.Thing != master.target) ) continue;
|
||||
if ( (Distance2D(bi.Thing)-bi.Thing.radius <= radius) && ((bi.Thing.pos.z <= pos.z+height) && (bi.Thing.pos.z+bi.Thing.height >= pos.z-height)) )
|
||||
{
|
||||
A_PlaySound("misc/i_pkup");
|
||||
A_StartSound("misc/i_pkup",CHAN_ITEM);
|
||||
master.Destroy();
|
||||
return;
|
||||
}
|
||||
|
|
@ -154,7 +154,7 @@ Class TranslocatorModule : Actor
|
|||
}
|
||||
b = Spawn("ModuleHitbox",pos);
|
||||
b.master = self;
|
||||
A_PlaySound("transloc/hum",CHAN_VOICE,0.5,true,2.0);
|
||||
A_StartSound("transloc/hum",CHAN_VOICE,CHANF_LOOPING,.5,2.);
|
||||
}
|
||||
|
||||
override bool CanCollideWith( Actor other, bool passive )
|
||||
|
|
@ -188,7 +188,7 @@ Class TranslocatorModule : Actor
|
|||
Super.Tick();
|
||||
if ( bAMBUSH && !Random[Transloc](0,40) )
|
||||
{
|
||||
A_PlaySound("transloc/spark");
|
||||
A_StartSound("transloc/spark",CHAN_BODY,CHANF_OVERLAP);
|
||||
int numpt = Random[Transloc](20,40);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
|
|
@ -223,7 +223,7 @@ Class TranslocatorModule : Actor
|
|||
else
|
||||
{
|
||||
A_SetPitch(0);
|
||||
A_PlaySound("transloc/bounce");
|
||||
A_StartSound("transloc/bounce");
|
||||
if ( BlockingFloor || (tracer && (pos.z >= tracer.pos.z+tracer.height) && tracer.bACTLIKEBRIDGE) ) alreadyhit = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -391,7 +391,7 @@ Class Translocator : UTWeapon
|
|||
{
|
||||
Weapon weap = Weapon(invoker);
|
||||
if ( !weap ) return;
|
||||
A_PlaySound("transloc/throw",CHAN_WEAPON);
|
||||
A_StartSound("transloc/throw",CHAN_WEAPON);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoSwing(self,(FRandom[Translocator](-0.2,0.4),FRandom[Translocator](-0.2,0.7)),2,-0.3,3,SWING_Spring,2,3);
|
||||
A_AlertMonsters();
|
||||
|
|
@ -413,14 +413,15 @@ Class Translocator : UTWeapon
|
|||
{
|
||||
Weapon weap = Weapon(invoker);
|
||||
if ( !weap ) return;
|
||||
A_PlaySound("transloc/return",CHAN_WEAPON);
|
||||
A_StartSound("transloc/return",CHAN_WEAPON);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoSwing(self,(FRandom[Translocator](-0.2,-0.4),FRandom[Translocator](-0.2,0.7)),3,-1,2,SWING_Spring,2,2);
|
||||
A_AlertMonsters();
|
||||
if ( invoker.module && invoker.module.bAMBUSH )
|
||||
{
|
||||
UTMainHandler.DoFlash(self,Color(255,255,255,255),50);
|
||||
A_PlaySound("transloc/spark",CHAN_WEAPON);
|
||||
for ( int i=0; i<3; i++ )
|
||||
A_StartSound("transloc/spark",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
DamageMobj(invoker,self,int.max,'Telefrag',DMG_THRUSTLESS);
|
||||
}
|
||||
if ( invoker.module ) invoker.module.Destroy();
|
||||
|
|
@ -434,7 +435,7 @@ Class Translocator : UTWeapon
|
|||
{
|
||||
invoker.FireEffect();
|
||||
A_AlertMonsters();
|
||||
A_PlaySound("transloc/return",CHAN_WEAPON);
|
||||
A_StartSound("transloc/return",CHAN_WEAPON);
|
||||
return;
|
||||
}
|
||||
// consume ammo if any
|
||||
|
|
@ -468,7 +469,7 @@ Class Translocator : UTWeapon
|
|||
SpawnTeleportFog(newpos,false,false);
|
||||
player.fov = min(175,player.desiredfov+60);
|
||||
}
|
||||
else A_PlaySound("transloc/return",CHAN_WEAPON);
|
||||
else A_StartSound("transloc/return",CHAN_WEAPON);
|
||||
for ( int i=0; i<MAXPLAYERS; i++ )
|
||||
{
|
||||
if ( !playeringame[i] || !players[i].mo ) continue;
|
||||
|
|
@ -477,7 +478,8 @@ Class Translocator : UTWeapon
|
|||
if ( bBroken )
|
||||
{
|
||||
UTMainHandler.DoFlash(self,Color(255,255,255,255),50);
|
||||
A_PlaySound("transloc/spark",CHAN_WEAPON);
|
||||
for ( int i=0; i<3; i++ )
|
||||
A_StartSound("transloc/spark",CHAN_WEAPONMISC,CHANF_OVERLAP);
|
||||
DamageMobj(invoker,self,int.max,'Telefrag',DMG_THRUSTLESS);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
// constants for extra sound stuff, all starting at 0x4360 (436 was the last official UT version)
|
||||
const CHAN_ANNOUNCER = 0x4360; // announcer voices
|
||||
const CHAN_FOOTSTEP = 0x4361; // footsteps and splashes (should have OVERLAP flag)
|
||||
const CHAN_LEFTWEAPON = 0x4362; // for dual wielded weapons
|
||||
const CHAN_WEAPONMISC = 0x4363; // extra sounds (e.g.: idle loops)
|
||||
const CHAN_LEFTWEAPONMISC = 0x4364; // ... for dual wielded weapons
|
||||
const CHAN_POWERUP = 0x4365; // powerup/item use sounds
|
||||
const CHAN_POWERUP2 = 0x4366; // auxiliary powerup sounds
|
||||
const CHAN_POWERUP3 = 0x4367; // even more powerup sounds (used by jump boots, mainly)
|
||||
const CHAN_POWERUP4 = 0x4368; // even more (used by shield belt / invuln hit sounds)
|
||||
|
||||
Class UTPlayer : DoomPlayer
|
||||
{
|
||||
bool doprintnoammo;
|
||||
|
|
@ -288,7 +299,7 @@ Class UTPlayer : DoomPlayer
|
|||
{
|
||||
double vol = clamp((-lastvelz-8)*0.05,0.01,1.0);
|
||||
if ( ((waterlevel > 0) || GetFloorTerrain().IsLiquid) && !bOnMobj ) PlaySplash(vol);
|
||||
else A_PlaySound("*uland",CHAN_AUTO,vol);
|
||||
else A_StartSound("*uland",CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
|
||||
PlayLanding();
|
||||
}
|
||||
else forcefootstep = true;
|
||||
|
|
@ -491,7 +502,7 @@ Class UTPlayer : DoomPlayer
|
|||
}
|
||||
bOnMobj = false;
|
||||
if ( !(player.cheats&CF_PREDICTING) )
|
||||
A_PlaySound("*jump",CHAN_BODY);
|
||||
A_StartSound("*jump",CHAN_VOICE);
|
||||
if ( player.cheats & CF_REVERTPLEASE )
|
||||
{
|
||||
player.cheats &= ~CF_REVERTPLEASE;
|
||||
|
|
@ -701,7 +712,7 @@ Class UTPlayer : DoomPlayer
|
|||
bOnMobj = false;
|
||||
player.jumpTics = -1;
|
||||
if ( !(player.cheats&CF_PREDICTING) )
|
||||
A_PlaySound("*jump",CHAN_BODY);
|
||||
A_StartSound("*jump",CHAN_VOICE);
|
||||
}
|
||||
last_jump_held = gametic;
|
||||
}
|
||||
|
|
@ -770,7 +781,7 @@ Class UTPlayer : DoomPlayer
|
|||
|
||||
virtual void PlayFootstep( double vol )
|
||||
{
|
||||
A_PlaySound("ut/playerfootstep",CHAN_AUTO,vol);
|
||||
A_StartSound("ut/playerfootstep",CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
|
||||
}
|
||||
|
||||
virtual void PlaySplash( double vol )
|
||||
|
|
@ -791,7 +802,7 @@ Class UTPlayer : DoomPlayer
|
|||
snd = "ut/slimesplash";
|
||||
break;
|
||||
}
|
||||
A_PlaySound(snd,CHAN_AUTO,vol);
|
||||
A_StartSound(snd,CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
|
||||
}
|
||||
|
||||
virtual void PlaySurface()
|
||||
|
|
@ -812,7 +823,7 @@ Class UTPlayer : DoomPlayer
|
|||
snd = "ut/slimesurface";
|
||||
break;
|
||||
}
|
||||
A_PlaySound(snd,CHAN_AUTO);
|
||||
A_StartSound(snd,CHAN_FOOTSTEP,CHANF_OVERLAP);
|
||||
}
|
||||
|
||||
virtual void PlayWetFootstep( double vol )
|
||||
|
|
@ -833,7 +844,7 @@ Class UTPlayer : DoomPlayer
|
|||
snd = "ut/playerfootstepslime";
|
||||
break;
|
||||
}
|
||||
A_PlaySound(snd,CHAN_AUTO,vol);
|
||||
A_StartSound(snd,CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
|
||||
}
|
||||
|
||||
override void PlayIdle()
|
||||
|
|
@ -1052,7 +1063,7 @@ Class UTPlayer : DoomPlayer
|
|||
return;
|
||||
}
|
||||
vel = (0,0,0);
|
||||
A_PlaySound ("misc/icebreak",CHAN_BODY);
|
||||
A_StartSound("misc/icebreak");
|
||||
// [RH] In Hexen, this creates a random number of shards (range [24,56])
|
||||
// with no relation to the size of the self shattering. I think it should
|
||||
// base the number of shards on the size of the dead thing, so bigger
|
||||
|
|
@ -1080,19 +1091,19 @@ Class UTPlayer : DoomPlayer
|
|||
|
||||
void A_PainDT()
|
||||
{
|
||||
if ( waterlevel > 2 ) A_PlaySound("*death-drowning",CHAN_VOICE);
|
||||
if ( waterlevel > 2 ) A_StartSound("*death-drowning",CHAN_VOICE);
|
||||
else A_Pain();
|
||||
}
|
||||
|
||||
void A_PlayerScreamDT()
|
||||
{
|
||||
if ( waterlevel > 2 ) A_PlaySound("*death-drowning",CHAN_VOICE);
|
||||
if ( waterlevel > 2 ) A_StartSound("*death-drowning",CHAN_VOICE);
|
||||
else A_PlayerScream();
|
||||
}
|
||||
|
||||
void A_XScreamDT()
|
||||
{
|
||||
if ( waterlevel > 2 ) A_PlaySound("*death-drowning",CHAN_VOICE);
|
||||
if ( waterlevel > 2 ) A_StartSound("*death-drowning",CHAN_VOICE);
|
||||
else A_XScream();
|
||||
}
|
||||
|
||||
|
|
@ -1334,7 +1345,7 @@ Class UTUnderSound : Actor
|
|||
fluidsounds[1] = 'ut/underslime';
|
||||
fluidsounds[2] = 'ut/underlava';
|
||||
fluidsounds[3] = 'ut/undernitro';
|
||||
A_PlaySound(fluidsounds[curfluid],CHAN_VOICE|CHAN_LISTENERZ,1.,true,0.);
|
||||
A_StartSound(fluidsounds[curfluid],CHAN_VOICE,CHANF_LOOPING|CHANF_LISTENERZ,1.,0.);
|
||||
A_SoundVolume(CHAN_VOICE,(players[consoleplayer].camera==target)?1.:0.);
|
||||
}
|
||||
override void OnDestroy()
|
||||
|
|
@ -1353,7 +1364,7 @@ Class UTUnderSound : Actor
|
|||
SetOrigin(target.pos,true);
|
||||
curfluid = GetFluid();
|
||||
if ( curfluid != lastfluid )
|
||||
A_PlaySound(fluidsounds[curfluid],CHAN_VOICE|CHAN_LISTENERZ,1.,true,0.);
|
||||
A_StartSound(fluidsounds[curfluid],CHAN_VOICE,CHANF_LOOPING|CHANF_LISTENERZ,1.,0.);
|
||||
lastfluid = curfluid;
|
||||
A_SoundVolume(CHAN_VOICE,(players[consoleplayer].camera==target)?1.:0.);
|
||||
}
|
||||
|
|
@ -1540,7 +1551,7 @@ Class FlameExplosion : Actor
|
|||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
A_PlaySound("ut/lavaex",CHAN_VOICE);
|
||||
A_StartSound("ut/lavaex",CHAN_VOICE);
|
||||
Spawn("SlugSmoke",pos);
|
||||
Spawn("SlugLight",pos);
|
||||
}
|
||||
|
|
@ -1743,7 +1754,7 @@ Class UTPlayerTBoss : UTPlayer
|
|||
override void PlayFootstep( double vol )
|
||||
{
|
||||
if ( !bossfootsteps ) bossfootsteps = CVar.GetCVar('flak_bossfootsteps',players[consoleplayer]);
|
||||
if ( bossfootsteps.GetBool() ) A_PlaySound("ut/bossfootstep",CHAN_5,vol);
|
||||
if ( bossfootsteps.GetBool() ) A_StartSound("ut/bossfootstep",CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
|
||||
else Super.PlayFootstep(vol);
|
||||
}
|
||||
States
|
||||
|
|
@ -1810,12 +1821,20 @@ Class UTWeapon : Weapon
|
|||
override void DetachFromOwner()
|
||||
{
|
||||
Owner.A_StopSound(CHAN_WEAPON);
|
||||
Owner.A_StopSound(CHAN_WEAPONMISC);
|
||||
Owner.A_StopSound(CHAN_LEFTWEAPON);
|
||||
Owner.A_StopSound(CHAN_LEFTWEAPONMISC);
|
||||
Super.DetachFromOwner();
|
||||
}
|
||||
override void OwnerDied()
|
||||
{
|
||||
if ( Owner.player && (Owner.player.ReadyWeapon == self) )
|
||||
{
|
||||
Owner.A_StopSound(CHAN_WEAPON);
|
||||
Owner.A_StopSound(CHAN_WEAPONMISC);
|
||||
Owner.A_StopSound(CHAN_LEFTWEAPON);
|
||||
Owner.A_StopSound(CHAN_LEFTWEAPONMISC);
|
||||
}
|
||||
A_ClearRefire();
|
||||
Super.OwnerDied();
|
||||
}
|
||||
|
|
@ -1991,7 +2010,7 @@ Class UTTeleportFog : Actor
|
|||
{
|
||||
Super.PostBeginPlay();
|
||||
Spawn("UTTeleportLight",Vec3Offset(0,0,16));
|
||||
A_PlaySound ("misc/teleport");
|
||||
A_StartSound("misc/teleport");
|
||||
Spawn("UTTeleportParticles",Vec3Offset(0,0,16));
|
||||
}
|
||||
States
|
||||
|
|
@ -2491,7 +2510,7 @@ Class ShredCorpseHitbox : Actor
|
|||
{
|
||||
if ( wasonair )
|
||||
{
|
||||
A_PlaySound("misc/corpsefall",CHAN_BODY,clamp(-lastvel.z*0.2,0.1,1.0));
|
||||
A_StartSound("misc/corpsefall",CHAN_BODY,CHANF_DEFAULT,clamp(-lastvel.z*.2,.1,1.));
|
||||
if ( lastvel.z < -20 ) DamageMobj(null,null,int.max,'Falling');
|
||||
}
|
||||
wasonair = false;
|
||||
|
|
@ -2908,24 +2927,26 @@ Class QueuedFlash
|
|||
|
||||
Class UTStaticHandler : StaticEventHandler
|
||||
{
|
||||
ui TextureID tex[2];
|
||||
ui TextureID tex[3];
|
||||
|
||||
ui void StartMenu()
|
||||
{
|
||||
tex[0] = TexMan.CheckForTexture("DTLogo",TexMan.Type_Any);
|
||||
tex[1] = TexMan.CheckForTexture("graphics/DTLogo.png",TexMan.Type_Any);
|
||||
CVar protomenu = CVar.GetCVar('flak_protomenu',players[consoleplayer]);
|
||||
if ( !protomenu ) return; // this can happen
|
||||
int proto = protomenu.GetInt();
|
||||
if ( proto )
|
||||
{
|
||||
tex[1] = TexMan.CheckForTexture("protobg",TexMan.Type_Any);
|
||||
tex[0] = TexMan.CheckForTexture("graphics/UTProtoBg.png",TexMan.Type_Any);
|
||||
tex[2] = TexMan.CheckForTexture("graphics/protobg.png",TexMan.Type_Any);
|
||||
if ( gamestate != GS_TITLELEVEL ) return;
|
||||
if ( proto > 1 ) S_ChangeMusic("menu2");
|
||||
else S_ChangeMusic("xyzdMenu");
|
||||
}
|
||||
else
|
||||
{
|
||||
tex[1] = TexMan.CheckForTexture("finalbg",TexMan.Type_Any);
|
||||
tex[0] = TexMan.CheckForTexture("graphics/UTBg.png",TexMan.Type_Any);
|
||||
tex[2] = TexMan.CheckForTexture("graphics/finalbg.png",TexMan.Type_Any);
|
||||
if ( gamestate != GS_TITLELEVEL ) return;
|
||||
S_ChangeMusic("utmenu23");
|
||||
}
|
||||
|
|
@ -2948,22 +2969,26 @@ Class UTStaticHandler : StaticEventHandler
|
|||
Vector2 tsize = TexMan.GetScaledSize(tex[0]);
|
||||
double sar = tsize.x/tsize.y;
|
||||
Vector2 vsize;
|
||||
if ( sar > ar ) vsize = (tsize.y*ar,tsize.y);
|
||||
else if ( sar < ar ) vsize = (tsize.x,tsize.x/ar);
|
||||
else vsize = tsize;
|
||||
Screen.DrawTexture(tex[0],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true);
|
||||
tsize = TexMan.GetScaledSize(tex[1]);
|
||||
sar = tsize.x/tsize.y;
|
||||
if ( sar > ar ) vsize = (tsize.x,tsize.x/ar);
|
||||
else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y);
|
||||
else vsize = tsize;
|
||||
Screen.Dim("Black",1.0,0,0,Screen.GetWidth(),Screen.GetHeight());
|
||||
Screen.DrawTexture(tex[0],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true);
|
||||
Screen.DrawTexture(tex[1],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true);
|
||||
}
|
||||
|
||||
override void RenderOverlay( RenderEvent e )
|
||||
{
|
||||
// well this if sure is a long one
|
||||
if ( players[consoleplayer].camera.player && players[consoleplayer].camera.player.ReadyWeapon && (players[consoleplayer].camera.player.ReadyWeapon is 'UTWeapon') )
|
||||
UTWeapon(players[consoleplayer].camera.player.ReadyWeapon).RenderOverlay(e);
|
||||
if ( !menuactive || (Menu.GetCurrentMenu() is 'ConversationMenu') ) return;
|
||||
if ( !CVar.GetCVar('flak_showmenu',players[consoleplayer]).GetBool() ) return;
|
||||
Screen.Dim("Black",1.0,0,0,Screen.GetWidth(),Screen.GetHeight());
|
||||
Screen.DrawTexture(tex[1],true,0,0,DTA_VirtualWidth,1024,DTA_VirtualHeight,768);
|
||||
Screen.Dim("Black",1.,0,0,Screen.GetWidth(),Screen.GetHeight());
|
||||
Screen.DrawTexture(tex[2],true,0,0,DTA_VirtualWidth,1024,DTA_VirtualHeight,768);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3086,7 +3111,7 @@ Class UTMainHandler : EventHandler
|
|||
else if ( e.Replacee == 'RadSuit' ) e.Replacement = 'UTJumpBoots';
|
||||
else if ( (e.Replacee == 'ArtiFly') || (e.Replacee == 'ArtiSpeedBoots') ) e.Replacement = 'ActJumpBoots';
|
||||
else if ( (e.Replacee == 'Backpack') || (e.Replacee == 'BagOfHolding') || (e.Replacee == 'ArtiHealingRadius') ) e.Replacement = 'UTBackpack';
|
||||
else if ( (e.Replacee == 'ArmorBonus') || (e.Replacee == 'ArtiTimeBomb') || (e.Replacee is 'ArtiPoisonBag') || (e.Replacee is 'ArtiBlastRadius') ) e.Replacement = 'UTArmorBonus';
|
||||
else if ( (e.Replacee == 'ArmorBonus') || (e.Replacee == 'ArtiTimeBomb') || (e.Replacee == 'ArtiBlastRadius') ) e.Replacement = 'UTArmorBonus';
|
||||
else if ( (e.Replacee == 'HealthBonus') || (e.Replacee == 'CrystalVial') ) e.Replacement = 'UTHealthBonus';
|
||||
else if ( (e.Replacee == 'GreenArmor') || (e.Replacee == 'AmuletOfWarding') || (e.Replacee == 'PlatinumHelm') ) e.Replacement = 'UTThighPads';
|
||||
else if ( e.Replacee == 'Silvershield' )
|
||||
|
|
@ -3145,7 +3170,7 @@ Class UTMainHandler : EventHandler
|
|||
else if ( e.Replacee == 'FWeaponPiece1' ) e.Replacement = 'WarheadAmmo';
|
||||
else if ( e.Replacee == 'CWeaponPiece1' ) e.Replacement = 'UTBackpack';
|
||||
else if ( (e.Replacee == 'MWeaponPiece1') || (e.Replacee == 'MWeapBloodscourge') || (e.Replacee.GetClassName() == 'mkFullBloodscourge') ) e.Replacement = 'WarheadLauncher';
|
||||
else if ( e.Replacee == 'Mana1' ) e.Replacement = 'UTMinorAmmoBox';
|
||||
else if ( (e.Replacee == 'Mana1') || (e.Replacee is 'ArtiPoisonBag') ) e.Replacement = 'UTMinorAmmoBox';
|
||||
else if ( e.Replacee == 'Mana2' ) e.Replacement = 'UTMediumAmmoBox';
|
||||
else if ( e.Replacee == 'Mana3' ) e.Replacement = 'UTMajorAmmoBox';
|
||||
else if ( e.Replacee == 'ArtiBoostMana' ) e.Replacement = 'ActUTFullAmmoBox';
|
||||
|
|
@ -3167,7 +3192,7 @@ Class UTMainHandler : EventHandler
|
|||
{
|
||||
Actor a = Actor.Spawn("MapSpot",pos);
|
||||
if ( !a ) return null;
|
||||
a.A_PlaySound(snd,CHAN_BODY,volume,true,attenuation);
|
||||
a.A_StartSound(snd,CHAN_BODY,CHANF_LOOPING,volume,attenuation);
|
||||
return a;
|
||||
}
|
||||
|
||||
|
|
@ -3585,15 +3610,15 @@ Class UTMainHandler : EventHandler
|
|||
{
|
||||
if ( !(gframe%11) && gframe < 160 )
|
||||
{
|
||||
S_Sound("ut/malejump",CHAN_VOICE|CHAN_UI,(gframe>100)?.5:1.);
|
||||
S_Sound("ut/malejump",CHAN_WEAPON|CHAN_UI,(gframe>100)?.5:1.);
|
||||
S_StartSound("ut/malejump",CHAN_VOICE,CHANF_UI|CHANF_MAYBE_LOCAL,(gframe>100)?.5:1.);
|
||||
S_StartSound("ut/malejump",CHAN_WEAPON,CHANF_UI|CHANF_MAYBE_LOCAL,(gframe>100)?.5:1.);
|
||||
}
|
||||
if ( ((gframe >= 37) && (gframe < 49) && !((gframe-37)%3))
|
||||
|| ((gframe >= 89) && (gframe < 101) && !((gframe-89)%3))
|
||||
|| ((gframe >= 141) && (gframe < 153) && !((gframe-141)%3)) )
|
||||
{
|
||||
S_Sound("ut/land",CHAN_BODY|CHAN_UI,(gframe>100)?.5:1.);
|
||||
S_Sound("ut/land",CHAN_ITEM|CHAN_UI,(gframe>100)?.5:1.);
|
||||
S_StartSound("ut/land",CHAN_BODY,CHANF_UI|CHANF_MAYBE_LOCAL,(gframe>100)?.5:1.);
|
||||
S_StartSound("ut/land",CHAN_ITEM,CHANF_UI|CHANF_MAYBE_LOCAL,(gframe>100)?.5:1.);
|
||||
}
|
||||
gframe++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -284,7 +284,7 @@ Class UTGibber : Actor
|
|||
States
|
||||
{
|
||||
Spawn:
|
||||
TNT1 A 0 NoDelay A_PlaySound("misc/gibbed");
|
||||
TNT1 A 0 NoDelay A_StartSound("misc/gibbed");
|
||||
TNT1 A 1 BurstGibs();
|
||||
Wait;
|
||||
}
|
||||
|
|
@ -491,7 +491,7 @@ Class UTGib : Actor
|
|||
if ( tracer ) tracer.Destroy();
|
||||
}
|
||||
else if ( spd > 20 ) vel *= 0.8;
|
||||
A_PlaySound("misc/gibp");
|
||||
A_StartSound("misc/gibp");
|
||||
double ang, pt;
|
||||
int max = flak_blood?6:2;
|
||||
for ( int i=0; i<max; i++ )
|
||||
|
|
|
|||
|
|
@ -1088,7 +1088,7 @@ Class UTHud : BaseStatusBar
|
|||
{
|
||||
PickupMsg = CPlayer.mo.InvSel.GetTag();
|
||||
PickupMsgTic = gametic+50;
|
||||
S_Sound("misc/hud_sel",CHAN_UI);
|
||||
S_StartSound("misc/hud_sel",CHAN_BODY,CHANF_UI|CHANF_MAYBE_LOCAL);
|
||||
}
|
||||
}
|
||||
if ( CPlayer.inventorytics > 0 ) justselected = false;
|
||||
|
|
@ -1097,7 +1097,7 @@ Class UTHud : BaseStatusBar
|
|||
if ( !justselected && CPlayer.mo.InvSel )
|
||||
{
|
||||
Console.Printf(StringTable.Localize("$M_ISELECT"),CPlayer.mo.InvSel.GetTag());
|
||||
S_Sound("misc/hud_sel",CHAN_UI);
|
||||
S_StartSound("misc/hud_sel",CHAN_BODY,CHANF_UI|CHANF_MAYBE_LOCAL);
|
||||
}
|
||||
justselected = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ Class ShockWave : Actor
|
|||
override void PostBeginPlay()
|
||||
{
|
||||
lifespan = ReactionTime;
|
||||
A_PlaySound("warhead/explode",CHAN_VOICE,attenuation:ATTN_NONE);
|
||||
A_StartSound("warhead/explode",CHAN_VOICE,attenuation:ATTN_NONE);
|
||||
A_QuakeEx(9,9,9,100,0,12000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:1200,rollIntensity:0.5);
|
||||
}
|
||||
override void Tick()
|
||||
|
|
@ -250,7 +250,7 @@ Class WarShell : Actor
|
|||
l.target = self;
|
||||
b = Spawn("WarheadHitbox",pos);
|
||||
b.target = self;
|
||||
A_PlaySound("warhead/fly",CHAN_VOICE,1.0,true);
|
||||
A_StartSound("warhead/fly",CHAN_VOICE,CHANF_LOOPING);
|
||||
destangle = angle;
|
||||
destpitch = pitch;
|
||||
}
|
||||
|
|
@ -306,7 +306,7 @@ Class WarShell : Actor
|
|||
A_Explode(1000,180);
|
||||
A_SprayDecal("BigBlast");
|
||||
A_QuakeEx(8,8,8,20,0,300,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.35);
|
||||
A_PlaySound("shock/hit",CHAN_VOICE,attenuation:0.5);
|
||||
A_StartSound("shock/hit",CHAN_VOICE,attenuation:0.5);
|
||||
A_AlertMonsters();
|
||||
A_SetRenderStyle(1.0,STYLE_Add);
|
||||
Spawn("WarheadExplodLight",pos);
|
||||
|
|
@ -320,7 +320,7 @@ Class WarShell : Actor
|
|||
A_Explode(1000,220);
|
||||
A_SprayDecal("BigBlast");
|
||||
A_QuakeEx(8,8,8,20,0,300,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.35);
|
||||
A_PlaySound("shock/hit",CHAN_VOICE,attenuation:0.5);
|
||||
A_StartSound("shock/hit",CHAN_VOICE,attenuation:0.5);
|
||||
A_AlertMonsters();
|
||||
A_SetRenderStyle(1.0,STYLE_Add);
|
||||
Spawn("WarheadExplodLight",pos);
|
||||
|
|
@ -352,7 +352,7 @@ Class GuidedWarShell : WarShell
|
|||
{
|
||||
Super.PostBeginPlay();
|
||||
if ( target && target.player ) target.player.camera = self;
|
||||
A_PlaySound("warhead/altfire",CHAN_WEAPON,local:true);
|
||||
A_StartSound("warhead/altfire",CHAN_WEAPON,CHANF_LOCAL);
|
||||
justleft = true;
|
||||
}
|
||||
override void Tick()
|
||||
|
|
@ -682,7 +682,7 @@ Class WarheadLauncher : UTWeapon
|
|||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
A_PlaySound("warhead/fire",CHAN_WEAPON);
|
||||
A_StartSound("warhead/fire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(128,255,128,128),1);
|
||||
UTMainHandler.DoSwing(self,(FRandom[Warhead](0.6,1.2),FRandom[Warhead](0.2,0.5)),4,-1,3,SWING_Spring,2,5);
|
||||
|
|
@ -722,7 +722,7 @@ Class WarheadLauncher : UTWeapon
|
|||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
A_PlaySound("warhead/altfire",CHAN_WEAPON);
|
||||
A_StartSound("warhead/altfire",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
invoker.FireEffect();
|
||||
UTMainHandler.DoFlash(self,Color(128,255,128,128),1);
|
||||
A_AlertMonsters();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue