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:
Marisa the Magician 2020-01-04 22:30:14 +01:00
commit 94cba843e4
42 changed files with 272 additions and 179 deletions

View file

@ -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?).

View file

@ -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

Before After
Before After

BIN
graphics/UTBg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
graphics/UTBg_Moon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
graphics/UTBg_Stars.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

BIN
graphics/UTProtoBg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -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"

21
shaders/glsl/utbg.fp Normal file
View 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
View 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.

View file

@ -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"

View file

@ -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);

View file

@ -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()

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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 )
{

View file

@ -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();
}

View file

@ -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();

View file

@ -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;

View file

@ -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;

View file

@ -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);
}
}

View file

@ -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++;
}

View file

@ -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++ )

View file

@ -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;
}

View file

@ -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();