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 - Liquid splashes
- Original Invulnerability and Night Vision items - Original Invulnerability and Night Vision items
- Hexen compatibility - Hexen compatibility
- Fancy titlemap
- Semi-accurate UT sound behaviour
## In progress ## In progress
- N/A, this is the 1.1 release. - N/A this is the 1.1.1 release.
## Planned ## Planned
- Stuff for 1.2 - Stuff for 1.2
- Fancy titlemap with intro narration.
- Touch up blood/gibbing features. At the moment, Nashgore is still a - Touch up blood/gibbing features. At the moment, Nashgore is still a
superior alternative. superior alternative.
- Help screens describing items and stuff (maybe?). - 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" Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
Texture brighttex "brightmaps/S_Ammo.png" 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 // PP shaders
HardwareShader PostProcess scene 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 "Epic Games", "White"
StaticText " " StaticText " "
StaticText "$FLAK_CPATRON", "Gold" StaticText "$FLAK_CPATRON", "Gold"
StaticText "Aisamai, Alexa Jones-Gonzales, Jonas Höglund,", "White" StaticText "john, Alexa Jones-Gonzales, Jonas Höglund,", "White"
StaticText "Zard1084, Jonathan Nemo, NekoMithos, 3d0xp0xy", "White" StaticText "Xada Xephron, Zard1084, Jonathan Nemo,", "White"
StaticText "Xada Xephron, m8f, john", "White" StaticText "NekoMithos, m8f, 3d0xp0xy", "White"
StaticText " " StaticText " "
StaticText "$FLAK_CTHANK", "Gold" StaticText "$FLAK_CTHANK", "Gold"
StaticText "KynikossDragonn, Raffine52, KeksDose, Skerion", "White" StaticText "KynikossDragonn, Raffine52, KeksDose, Skerion", "White"
@ -132,4 +132,4 @@ OptionMenu "UTCreditsMenu"
StaticText "$FLAK_CBIZ", "Gold" StaticText "$FLAK_CBIZ", "Gold"
StaticText "Jay Wilbur, Mark Rein", "White" StaticText "Jay Wilbur, Mark Rein", "White"
StaticText " " StaticText " "
} }

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.txt"
#include "zscript/dt_libeye/projector gl.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_libeye/viewport.txt"
#include "zscript/dt_coordutil.zsc" #include "zscript/dt_coordutil.zsc"
#include "zscript/dt_quaternion.zsc" #include "zscript/dt_quaternion.zsc"
#include "zscript/utgore.zsc"
#include "zscript/utcommon.zsc" #include "zscript/utcommon.zsc"
#include "zscript/utgore.zsc"
#include "zscript/impacthammer.zsc" #include "zscript/impacthammer.zsc"
#include "zscript/chainsaw.zsc" #include "zscript/chainsaw.zsc"
#include "zscript/translocator.zsc" #include "zscript/translocator.zsc"

View file

@ -164,7 +164,7 @@ Class UTShieldBelt : UTArmor
{ {
if ( (amount > 0) && !DamageTypeDefinition.IgnoreArmor(damageType) ) 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); UTMainHandler.DoFlash(Owner,Color(80,255,224,0),5);
} }
Super.AbsorbDamage(damage,damageType,newdamage); Super.AbsorbDamage(damage,damageType,newdamage);

View file

@ -505,7 +505,7 @@ Class BioGel : Actor
} }
b = Spawn("BioHitbox",pos); b = Spawn("BioHitbox",pos);
b.target = self; b.target = self;
A_PlaySound("bio/hit"); A_StartSound("bio/hit",CHAN_BODY);
A_SprayDecal("BioSplat",-172); A_SprayDecal("BioSplat",-172);
int numpt = Min(100,int(Scale.x*10))+Random[GES](-5,5); int numpt = Min(100,int(Scale.x*10))+Random[GES](-5,5);
for ( int i=0; i<numpt; i++ ) 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); if ( invoker.atline ) invoker.atline.RemoteActivate(target,invoker.atside,SPAC_Impact,pos);
UTMainHandler.DoBlast(self,Min(175,int(Scale.x*50)),20000*Scale.x); 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_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); int numpt = Min(300,int(Scale.x*30))+Random[GES](-10,10);
for ( int i=0; i<numpt; i++ ) for ( int i=0; i<numpt; i++ )
{ {
@ -704,7 +704,8 @@ Class BioRifle : UTWeapon
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) 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(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(48,0,255,0),1); UTMainHandler.DoFlash(self,Color(48,0,255,0),1);
A_AlertMonsters(); A_AlertMonsters();
@ -749,7 +750,7 @@ Class BioRifle : UTWeapon
if ( !weap ) return; if ( !weap ) return;
invoker.charge = 0; invoker.charge = 0;
invoker.special1 = 0; invoker.special1 = 0;
A_PlaySound("bio/charge",CHAN_WEAPON); A_StartSound("bio/charge",CHAN_WEAPONMISC);
invoker.bCharging = true; invoker.bCharging = true;
} }
action void A_ChargeUp() action void A_ChargeUp()

View file

@ -166,8 +166,8 @@ Class UTChainsaw : UTWeapon
bool quitout = false; bool quitout = false;
if ( invoker.Ammo1 && (invoker.Ammo1.Amount <= 0) ) if ( invoker.Ammo1 && (invoker.Ammo1.Amount <= 0) )
{ {
A_StopSound(CHAN_6); A_StopSound(CHAN_WEAPONMISC);
A_PlaySound("chainsaw/lower",CHAN_WEAPON); A_StartSound("chainsaw/lower",CHAN_WEAPON);
quitout = true; quitout = true;
} }
else if ( !(player.cmd.buttons&BT_ATTACK) ) quitout = true; else if ( !(player.cmd.buttons&BT_ATTACK) ) quitout = true;
@ -218,9 +218,9 @@ Class UTChainsaw : UTWeapon
} }
override void DetachFromOwner() override void DetachFromOwner()
{ {
if ( Owner ) Owner.A_StopSound(CHAN_6); if ( Owner ) Owner.A_StopSound(CHAN_WEAPONMISC);
if ( !Ammo1 || (Ammo1.Amount > 0) ) if ( !Ammo1 || (Ammo1.Amount > 0) )
A_PlaySound("chainsaw/lower",CHAN_6); A_StartSound("chainsaw/lower",CHAN_WEAPONMISC);
Super.DetachFromOwner(); Super.DetachFromOwner();
} }
action void A_Vibrate( bool bAlt = false ) action void A_Vibrate( bool bAlt = false )
@ -287,7 +287,7 @@ Class UTChainsaw : UTWeapon
CSWI A 0 CSWI A 0
{ {
if ( !invoker.Ammo1 || (invoker.Ammo1.Amount > 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 else
return ResolveState("DryIdle"); return ResolveState("DryIdle");
return ResolveState(null); return ResolveState(null);
@ -298,8 +298,8 @@ Class UTChainsaw : UTWeapon
A_WeaponReady(); A_WeaponReady();
if ( invoker.Ammo1 && (invoker.Ammo1.Amount <= 0) ) if ( invoker.Ammo1 && (invoker.Ammo1.Amount <= 0) )
{ {
A_StopSound(CHAN_6); A_StopSound(CHAN_WEAPONMISC);
A_PlaySound("chainsaw/lower",CHAN_WEAPON); A_StartSound("chainsaw/lower",CHAN_WEAPON);
return ResolveState("DryIdle"); return ResolveState("DryIdle");
} }
return ResolveState(null); return ResolveState(null);
@ -311,7 +311,7 @@ Class UTChainsaw : UTWeapon
A_WeaponReady(WRF_NOFIRE); A_WeaponReady(WRF_NOFIRE);
if ( !invoker.Ammo1 || (invoker.Ammo1.Amount > 0) ) if ( !invoker.Ammo1 || (invoker.Ammo1.Amount > 0) )
{ {
A_PlaySound("chainsaw/select",CHAN_WEAPON); A_StartSound("chainsaw/select",CHAN_WEAPON);
return ResolveState("Idle"); return ResolveState("Idle");
} }
else if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) ) else if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) )
@ -320,7 +320,7 @@ Class UTChainsaw : UTWeapon
} }
Wait; Wait;
Fire: 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(); CSWJ BCDEF 1 A_Vibrate();
Goto Hold; Goto Hold;
Hold: Hold:
@ -332,7 +332,8 @@ Class UTChainsaw : UTWeapon
AltFire: AltFire:
CSWA A 0 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); 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); CSWA ABCDE 2 A_Vibrate(true);
@ -347,10 +348,14 @@ Class UTChainsaw : UTWeapon
{ {
if ( invoker.Ammo1 && (invoker.Ammo1.Amount <= 0) ) if ( invoker.Ammo1 && (invoker.Ammo1.Amount <= 0) )
{ {
A_StopSound(CHAN_6); A_StopSound(CHAN_WEAPONMISC);
A_PlaySound("chainsaw/lower",CHAN_WEAPON); 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; Goto Ready;
AltFireSwipes: AltFireSwipes:
@ -361,7 +366,7 @@ Class UTChainsaw : UTWeapon
CSWD A 0 CSWD A 0
{ {
if ( !invoker.Ammo1 || (invoker.Ammo1.Amount > 0) ) if ( !invoker.Ammo1 || (invoker.Ammo1.Amount > 0) )
A_PlaySound("chainsaw/lower",CHAN_6); A_StartSound("chainsaw/lower",CHAN_WEAPONMISC);
} }
CSWD ABCDEF 1; CSWD ABCDEF 1;
CSWD F 1 A_Lower(int.max); CSWD F 1 A_Lower(int.max);

View file

@ -77,7 +77,7 @@ Class UTActivatable : Inventory
let i = GetDefaultByType(GiveItem); let i = GetDefaultByType(GiveItem);
if ( Owner.GiveInventory(GiveItem,i.Amount) ) if ( Owner.GiveInventory(GiveItem,i.Amount) )
{ {
Owner.A_PlaySound(i.PickupSound,CHAN_ITEM); Owner.A_StartSound(i.PickupSound,CHAN_ITEM);
return true; return true;
} }
return false; return false;

View file

@ -127,7 +127,7 @@ Class UTRocket : Actor
Super.PostBeginPlay(); Super.PostBeginPlay();
let l = Spawn("UTRocketTrail",pos); let l = Spawn("UTRocketTrail",pos);
l.target = self; 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; if ( tracer ) vel *= 0.9;
Acceleration = vel.unit()*50; Acceleration = vel.unit()*50;
} }
@ -141,7 +141,7 @@ Class UTRocket : Actor
UTMainHandler.DoBlast(self,rad,80000); UTMainHandler.DoBlast(self,rad,80000);
A_Explode(dmg,rad); A_Explode(dmg,rad);
A_QuakeEx(3,3,3,8,0,rad+50,"",QF_RELATIVE|QF_SCALEDOWN,falloff:rad,rollIntensity:0.2); 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(); A_AlertMonsters();
Spawn("RocketExplLight",pos); Spawn("RocketExplLight",pos);
int numpt = Random[Eightball](15,30); int numpt = Random[Eightball](15,30);
@ -266,7 +266,7 @@ Class UTGrenade : UTRocket
RCKT A 0 RCKT A 0
{ {
bHITOWNER = true; bHITOWNER = true;
A_PlaySound("utrl/bounce"); A_StartSound("utrl/bounce",CHAN_BODY);
rollvel = FRandom[Eightball](-16,16); rollvel = FRandom[Eightball](-16,16);
pitchvel = FRandom[Eightball](-16,16); pitchvel = FRandom[Eightball](-16,16);
anglevel = FRandom[Eightball](-16,16); anglevel = FRandom[Eightball](-16,16);
@ -321,7 +321,7 @@ Class UTRocketLauncher : UTWeapon
LockedTarget = null; LockedTarget = null;
LockedOn = false; LockedOn = false;
if ( Owner.player.ReadyWeapon == self ) 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; if ( LockedTarget ) crosshair = 99;
else crosshair = 0; else crosshair = 0;
@ -358,8 +358,8 @@ Class UTRocketLauncher : UTWeapon
Weapon weap = Weapon(invoker); Weapon weap = Weapon(invoker);
if ( !weap ) return; if ( !weap ) return;
invoker.special1 = 0; invoker.special1 = 0;
if ( weap.bAltFire ) A_PlaySound("utrl/altfire",CHAN_WEAPON); if ( weap.bAltFire ) A_StartSound("utrl/altfire",CHAN_WEAPON,CHANF_OVERLAP);
else A_PlaySound("utrl/fire",CHAN_WEAPON); else A_StartSound("utrl/fire",CHAN_WEAPON,CHANF_OVERLAP);
invoker.FireEffect(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(64,255,0,0),1); UTMainHandler.DoFlash(self,Color(64,255,0,0),1);
if ( self is 'UTPlayer' ) if ( self is 'UTPlayer' )
@ -427,7 +427,7 @@ Class UTRocketLauncher : UTWeapon
} }
} }
// lose lock-on // 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.LockedTarget = null;
invoker.LockedOn = false; invoker.LockedOn = false;
for ( int i=0; i<12; i++ ) for ( int i=0; i<12; i++ )
@ -462,8 +462,8 @@ Class UTRocketLauncher : UTWeapon
invoker.LockedTarget = a; invoker.LockedTarget = a;
} }
} }
if ( invoker.LockedTarget ) A_PlaySound("utrl/seeklock",CHAN_WEAPON); if ( invoker.LockedTarget ) A_StartSound("utrl/seeklock",CHAN_WEAPONMISC,CHANF_OVERLAP);
else if ( invoker.LockedOn ) A_PlaySound("utrl/seeklost",CHAN_WEAPON); else if ( invoker.LockedOn ) A_StartSound("utrl/seeklost",CHAN_WEAPONMISC,CHANF_OVERLAP);
if ( invoker.LockedTarget ) invoker.LockedOn = true; if ( invoker.LockedTarget ) invoker.LockedOn = true;
} }
@ -524,7 +524,7 @@ Class UTRocketLauncher : UTWeapon
Reload: Reload:
EBLI A 5 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 ) if ( invoker.bSingleRocket = !invoker.bSingleRocket )
A_Print(StringTable.Localize("$M_SINGLEROCKETON")); A_Print(StringTable.Localize("$M_SINGLEROCKETON"));
else A_Print(StringTable.Localize("$M_SINGLEROCKETOFF")); 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 2 A_JumpIf((!invoker.bAltFire&&invoker.bSingleRocket)||(invoker.Ammo1.Amount<=0)||FireCheck(),"FireOne");
EBLI A 0; // no tween EBLI A 0; // no tween
// load two // 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"); EBR1 ABCDEFG 2 A_JumpIf(FireCheck(),"FireOne");
EBL2 A 0 A_PlaySound("utrl/load",CHAN_6); EBL2 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
EBL2 ABCDEFG 3 A_JumpIf(FireCheck(),"FireOne"); EBL2 ABCDEFG 2 A_JumpIf(FireCheck(),"FireOne");
EBR2 A 0 EBR2 A 0
{ {
A_LoadRocket(); A_LoadRocket();
return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireTwo"); return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireTwo");
} }
// load three // 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"); EBR2 ABCDEFG 2 A_JumpIf(FireCheck(),"FireTwo");
EBL3 A 0 A_PlaySound("utrl/load",CHAN_6); EBL3 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
EBL3 ABCDEFG 3 A_JumpIf(FireCheck(),"FireTwo"); EBL3 ABCDEFG 2 A_JumpIf(FireCheck(),"FireTwo");
EBR3 A 0 EBR3 A 0
{ {
A_LoadRocket(); A_LoadRocket();
return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireThree"); return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireThree");
} }
// load four // 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"); EBR3 ABCDEFG 2 A_JumpIf(FireCheck(),"FireThree");
EBL4 A 0 A_PlaySound("utrl/load",CHAN_6); EBL4 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
EBL4 ABCDEFG 3 A_JumpIf(FireCheck(),"FireThree"); EBL4 ABCDEFG 2 A_JumpIf(FireCheck(),"FireThree");
EBR4 A 0 EBR4 A 0
{ {
A_LoadRocket(); A_LoadRocket();
return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireFour"); return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireFour");
} }
// load five // 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"); EBR4 ABCDEFG 2 A_JumpIf(FireCheck(),"FireFour");
EBL5 A 0 A_PlaySound("utrl/load",CHAN_6); EBL5 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
EBL5 ABCDEFG 3 A_JumpIf(FireCheck(),"FireFour"); EBL5 ABCDEFG 2 A_JumpIf(FireCheck(),"FireFour");
EBR5 A 0 EBR5 A 0
{ {
A_LoadRocket(); A_LoadRocket();
return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireFive"); return A_JumpIf((invoker.Ammo1.Amount<=0)||FireCheck(),"FireFive");
} }
// load six // 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"); EBR5 ABCDEFG 2 A_JumpIf(FireCheck(),"FireFive");
EBL6 A 0 A_PlaySound("utrl/load",CHAN_6); EBL6 A 0 A_StartSound("utrl/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
EBL6 ABCDEF 3 A_JumpIf(FireCheck(),"FireFive"); EBL6 ABCDEF 2 A_JumpIf(FireCheck(),"FireFive");
EBL6 F 0 A_LoadRocket(); EBL6 F 0 A_LoadRocket();
Goto FireSix; Goto FireSix;
FireOne: FireOne:
EBF1 A 0 A_FireRockets(1); EBF1 A 0 A_FireRockets(1);
EBF1 ABCDEFGH 2; EBF1 ABCDEFGH 2;
EBL1 A 0 A_CheckReload(); 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; EBL1 BCDEFG 2;
EBLI A 0; EBLI A 0;
Goto Idle; Goto Idle;
@ -595,7 +595,7 @@ Class UTRocketLauncher : UTWeapon
EBF2 A 0 A_FireRockets(2); EBF2 A 0 A_FireRockets(2);
EBF2 ABCDEFGHIJK 2; EBF2 ABCDEFGHIJK 2;
EBL1 A 0 A_CheckReload(); 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; EBL1 BCDEFG 2;
EBLI A 0; EBLI A 0;
Goto Idle; Goto Idle;
@ -603,7 +603,7 @@ Class UTRocketLauncher : UTWeapon
EBF3 A 0 A_FireRockets(3); EBF3 A 0 A_FireRockets(3);
EBF3 ABCDEFGHIJ 2; EBF3 ABCDEFGHIJ 2;
EBL1 A 0 A_CheckReload(); 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; EBL1 BCDEFG 2;
EBLI A 0; EBLI A 0;
Goto Idle; Goto Idle;
@ -611,7 +611,7 @@ Class UTRocketLauncher : UTWeapon
EBF4 A 0 A_FireRockets(4); EBF4 A 0 A_FireRockets(4);
EBF4 ABCDEFGHIJK 2; EBF4 ABCDEFGHIJK 2;
EBL1 A 0 A_CheckReload(); 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; EBL1 BCDEFG 2;
EBLI A 0; EBLI A 0;
Goto Idle; Goto Idle;
@ -619,7 +619,7 @@ Class UTRocketLauncher : UTWeapon
EBF5 A 0 A_FireRockets(5); EBF5 A 0 A_FireRockets(5);
EBF5 ABCDEFGHIJKLM 2; EBF5 ABCDEFGHIJKLM 2;
EBL1 A 0 A_CheckReload(); 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; EBL1 BCDEFG 2;
EBLI A 0; EBLI A 0;
Goto Idle; Goto Idle;
@ -627,7 +627,7 @@ Class UTRocketLauncher : UTWeapon
EBF6 A 0 A_FireRockets(6); EBF6 A 0 A_FireRockets(6);
EBF6 ABCDEFGHIJKLMNOP 2; EBF6 ABCDEFGHIJKLMNOP 2;
EBL1 A 0 A_CheckReload(); 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; EBL1 BCDEFG 2;
EBLI A 0; EBLI A 0;
Goto Idle; Goto Idle;

View file

@ -83,7 +83,8 @@ Class BulletImpact : Actor
let s = Spawn("UTChip",pos+x*2); let s = Spawn("UTChip",pos+x*2);
s.vel = pvel; 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)); let s = Spawn("Splasher",Vec3Offset(0,0,2));
s.vel = (0,0,-4); s.vel = (0,0,-4);
} }
@ -274,7 +275,7 @@ Class Enforcer : UTWeapon
if ( invoker.altaccuracy < 0.2 ) invoker.altaccuracy += 0.05; if ( invoker.altaccuracy < 0.2 ) invoker.altaccuracy += 0.05;
if ( slave ) 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) ) if ( (invoker.slaveclipcount <= 0) || (weap.Ammo1.Amount <= 0) )
{ {
invoker.slaverefire = 0; invoker.slaverefire = 0;
@ -301,7 +302,7 @@ Class Enforcer : UTWeapon
} }
else 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) ) if ( (invoker.clipcount <= 0) || (weap.Ammo1.Amount <= 0) )
{ {
A_ClearRefire(); A_ClearRefire();
@ -357,7 +358,7 @@ Class Enforcer : UTWeapon
} }
invoker.FireEffect(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(32,255,128,0),1); 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_AlertMonsters();
A_QuakeEx(2,2,2,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.08); A_QuakeEx(2,2,2,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.08);
if ( slave ) if ( slave )
@ -518,7 +519,7 @@ Class Enforcer : UTWeapon
LeftReady: LeftReady:
2NFS A 0 2NFS A 0
{ {
A_PlaySound("enforcer/select",CHAN_6); A_StartSound("enforcer/select",CHAN_LEFTWEAPON);
invoker.slaveactive = true; invoker.slaveactive = true;
} }
2NFS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_JumpIf(invoker.slavedown,"LeftDeselect"); 2NFS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_JumpIf(invoker.slavedown,"LeftDeselect");
@ -619,7 +620,7 @@ Class Enforcer : UTWeapon
invoker.clipout = true; invoker.clipout = true;
invoker.clipcount = 0; invoker.clipcount = 0;
A_Overlay(-9999,null); A_Overlay(-9999,null);
A_PlaySound("enforcer/click",CHAN_WEAPON); A_StartSound("enforcer/click",CHAN_WEAPONMISC);
} }
ENFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; ENFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1;
ENR2 AB 1; ENR2 AB 1;
@ -627,7 +628,7 @@ Class Enforcer : UTWeapon
{ {
invoker.clipout = false; invoker.clipout = false;
invoker.clipcount = min(invoker.default.clipcount,invoker.Ammo1.Amount); 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' ) if ( self is 'UTPlayer' )
UTPlayer(self).PlayReloading(); UTPlayer(self).PlayReloading();
invoker.slavereload = (flak_enforcerreload&&invoker.slaveactive&&(invoker.slaveclipcount<min(invoker.default.slaveclipcount,invoker.Ammo1.Amount))); 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.pitch = pitch;
c.vel = vel*.5+x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-z*FRandom[Junk](1,2); 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; Goto Ready;
LeftReload: LeftReload:
2NFR A 0 2NFR A 0
@ -652,7 +653,7 @@ Class Enforcer : UTWeapon
invoker.slaveclipout = true; invoker.slaveclipout = true;
invoker.slaveclipcount = 0; invoker.slaveclipcount = 0;
A_Overlay(-9998,null); A_Overlay(-9998,null);
A_PlaySound("enforcer/click",CHAN_6); A_StartSound("enforcer/click",CHAN_LEFTWEAPONMISC);
return ResolveState(null); return ResolveState(null);
} }
2NFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; 2NFR ABCDEFGHIJKLMNOPQRSTUVWXYZ 1;
@ -661,7 +662,7 @@ Class Enforcer : UTWeapon
{ {
invoker.slaveclipout = false; invoker.slaveclipout = false;
invoker.slaveclipcount = min(invoker.default.slaveclipcount,invoker.Ammo1.Amount); 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' ) if ( self is 'UTPlayer' )
UTPlayer(self).PlayReloading(); UTPlayer(self).PlayReloading();
invoker.slavereload = false; invoker.slavereload = false;
@ -673,7 +674,7 @@ Class Enforcer : UTWeapon
c.pitch = pitch; c.pitch = pitch;
c.vel = vel*.5+x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-z*FRandom[Junk](1,2); 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; Goto LeftReady;
Deselect: Deselect:
ENFD A 0 ENFD A 0

View file

@ -341,7 +341,7 @@ Class FlakChunk : Actor
rollvel = FRandom[Flak](50,100)*RandomPick[Flak](-1,1)*(vel.length()/speed); rollvel = FRandom[Flak](50,100)*RandomPick[Flak](-1,1)*(vel.length()/speed);
pitchvel = 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); 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(); A_AlertMonsters();
if ( vel.length() < 5 ) ExplodeMissile(); if ( vel.length() < 5 ) ExplodeMissile();
} }
@ -351,7 +351,7 @@ Class FlakChunk : Actor
if ( !target.bNOBLOOD ) if ( !target.bNOBLOOD )
{ {
target.SpawnBlood(pos,AngleTo(target),damage); target.SpawnBlood(pos,AngleTo(target),damage);
A_PlaySound("flak/meat",volume:0.3); A_StartSound("flak/meat",volume:0.3);
A_AlertMonsters(); A_AlertMonsters();
} }
return -1; return -1;
@ -373,7 +373,7 @@ Class FlakChunk : Actor
if ( !victim.bNOBLOOD && (victim.health-amt > victim.GetGibHealth()) ) if ( !victim.bNOBLOOD && (victim.health-amt > victim.GetGibHealth()) )
{ {
victim.SpawnBlood(pos,AngleTo(victim),damage); victim.SpawnBlood(pos,AngleTo(victim),damage);
A_PlaySound("flak/meat",volume:0.3); A_StartSound("flak/meat",volume:0.3);
A_AlertMonsters(); A_AlertMonsters();
} }
return 1; return 1;
@ -418,7 +418,7 @@ Class FlakChunk : Actor
else dir = vel.unit(); else dir = vel.unit();
l.angle = atan2(dir.y,dir.x); l.angle = atan2(dir.y,dir.x);
l.pitch = asin(-dir.z); l.pitch = asin(-dir.z);
A_PlaySound("flak/hit",volume:0.3); A_StartSound("flak/hit",volume:0.3);
A_AlertMonsters(); A_AlertMonsters();
} }
XDeath: XDeath:
@ -519,7 +519,7 @@ Class FlakSlug : Actor
UTMainHandler.DoBlast(self,120,75000); UTMainHandler.DoBlast(self,120,75000);
A_Explode(70,120); A_Explode(70,120);
A_QuakeEx(4,4,4,8,0,170,"",QF_RELATIVE|QF_SCALEDOWN,falloff:120,rollIntensity:0.2); 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(); A_AlertMonsters();
if ( !Tracer ) Spawn("SlugSmoke",pos); if ( !Tracer ) Spawn("SlugSmoke",pos);
Spawn("SlugLight",pos); Spawn("SlugLight",pos);
@ -639,8 +639,8 @@ Class FlakCannon : UTWeapon
{ {
action void A_Loading( bool first = false ) action void A_Loading( bool first = false )
{ {
if ( first ) A_PlaySound("flak/load",CHAN_WEAPON); if ( first ) A_StartSound("flak/load",CHAN_WEAPONMISC,CHANF_OVERLAP);
else A_PlaySound("flak/reload",CHAN_6); else A_StartSound("flak/reload",CHAN_WEAPONMISC,CHANF_OVERLAP);
} }
action void A_FireChunks() action void A_FireChunks()
{ {
@ -648,7 +648,7 @@ Class FlakCannon : UTWeapon
if ( !weap ) return; if ( !weap ) return;
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
A_PlaySound("flak/fire",CHAN_WEAPON); A_StartSound("flak/fire",CHAN_WEAPON);
invoker.FireEffect(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(160,255,96,0),1); 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); 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 ) return;
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
A_PlaySound("flak/altfire",CHAN_WEAPON); A_StartSound("flak/altfire",CHAN_WEAPON);
invoker.FireEffect(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,96,0),1); 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); 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); Weapon weap = Weapon(invoker);
if ( !weap ) return; if ( !weap ) return;
A_PlaySound("impact/release",CHAN_WEAPON); A_StopSound(CHAN_WEAPONMISC);
A_StartSound("impact/release",CHAN_WEAPON);
invoker.FireEffect(); 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); 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); A_AlertMonsters(gameinfo.gametype&GAME_Strife?100:0);
@ -152,7 +153,7 @@ Class ImpactHammer : UTWeapon
{ {
Weapon weap = Weapon(invoker); Weapon weap = Weapon(invoker);
if ( !weap ) return; if ( !weap ) return;
A_PlaySound("impact/fire",CHAN_WEAPON); A_StartSound("impact/fire",CHAN_WEAPON);
invoker.FireEffect(); 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); 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); A_AlertMonsters(gameinfo.gametype&GAME_Strife?100:0);
@ -249,10 +250,10 @@ Class ImpactHammer : UTWeapon
{ {
A_ResetCharge(); A_ResetCharge();
A_Overlay(-9999,"Charging"); A_Overlay(-9999,"Charging");
A_PlaySound("impact/pull",CHAN_WEAPON); A_StartSound("impact/pull",CHAN_WEAPON);
} }
IMPL ABCDE 5; 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; Goto Hold;
Hold: Hold:
IMPR ABCDEFGHIJ 1; IMPR ABCDEFGHIJ 1;

View file

@ -247,23 +247,27 @@ Class Minigun : UTWeapon
Hold: Hold:
MGNF A 0 MGNF A 0
{ {
A_PlaySound("minigun/fire",CHAN_WEAPON,1.0,true); A_StartSound("minigun/fire",CHAN_WEAPONMISC,CHANF_LOOPING);
A_Overlay(-9999,"FireDummy"); A_Overlay(-9999,"FireDummy");
} }
MGNF ABCDEFGHIJKLMNOPQRS 1 A_FireBullet(); MGNF ABCDEFGHIJKLMNOPQRS 1 A_FireBullet();
MGNF A 0 A_JumpIf(player.cmd.buttons&BT_ALTATTACK,1); MGNF A 0 A_JumpIf(player.cmd.buttons&BT_ALTATTACK,1);
Goto Hold+1; Goto Hold+1;
AltHold: 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); MGNF ADGJMPSCFILORBEHKNQ 1 A_FireBullet(true);
Goto AltHold+1; Goto AltHold+1;
Unwind: 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(); MGNU ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_MinigunRefire();
MGU2 ABCDEFGHIJKLM 1 A_MinigunRefire(); MGU2 ABCDEFGHIJKLM 1 A_MinigunRefire();
Goto Idle; Goto Idle;
Deselect: Deselect:
MGND A 1 A_StopSound(CHAN_WEAPON); MGND A 1 A_StopSound(CHAN_WEAPONMISC);
MGND BCDEFGHIJ 1; MGND BCDEFGHIJ 1;
MGND J 1 A_Lower(int.max); MGND J 1 A_Lower(int.max);
Wait; Wait;

View file

@ -74,7 +74,7 @@ Class DamageAmplifier : Powerup
{ {
Super.DoEffect(); Super.DoEffect();
if ( (EffectTics == 175) || (EffectTics == 140) || (EffectTics == 105) || (EffectTics == 70) || (EffectTics == 35) ) 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() override void EndEffect()
@ -91,8 +91,8 @@ Class DamageAmplifier : Powerup
void FireEffect() void FireEffect()
{ {
if ( gametic < lasteffect ) return; if ( gametic < lasteffect ) return;
if ( EffectTics < 350 ) Owner.A_PlaySound("udamage/fire2",CHAN_7,1.0,false,0.25); if ( EffectTics < 350 ) Owner.A_StartSound("udamage/fire2",CHAN_POWERUP,attenuation:.25);
else Owner.A_PlaySound("udamage/fire1",CHAN_7,1.0,false,0.25); else Owner.A_StartSound("udamage/fire1",CHAN_POWERUP,attenuation:.25);
UTMainHandler.DoFlash(Owner,Color(48,238,0,255),6); UTMainHandler.DoFlash(Owner,Color(48,238,0,255),6);
lasteffect = gametic+5; // prevent excess flash lasteffect = gametic+5; // prevent excess flash
} }
@ -181,7 +181,7 @@ Class UTInvulPower : Powerup
{ {
Super.DoEffect(); Super.DoEffect();
if ( (EffectTics == 175) || (EffectTics == 140) || (EffectTics == 105) || (EffectTics == 70) || (EffectTics == 35) ) 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() override void EndEffect()
@ -200,7 +200,7 @@ Class UTInvulPower : Powerup
if ( !passive || (damage <= 0) ) return; if ( !passive || (damage <= 0) ) return;
newdamage = 0; newdamage = 0;
if ( gametic < lasteffect ) return; 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); UTMainHandler.DoFlash(Owner,Color(48,255,238,0),6);
lasteffect = gametic+5; // prevent excess flash lasteffect = gametic+5; // prevent excess flash
} }
@ -441,7 +441,7 @@ Class UTJumpBoots : Inventory
if ( (amount > 0) && (owner.player.jumptics == -1) ) if ( (amount > 0) && (owner.player.jumptics == -1) )
{ {
Amount = max(0,Amount-700); 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 ) else if ( (Amount <= 0) && owner.player.onground )
{ {

View file

@ -161,14 +161,14 @@ Class PulseBall : Actor
} }
override void PostBeginPlay() 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); let l = Spawn("PulseBallLight",pos);
l.target = self; l.target = self;
} }
action void A_BallExp() action void A_BallExp()
{ {
A_SetScale(0.45); A_SetScale(0.45);
A_PlaySound("pulse/hit",CHAN_BODY); A_StartSound("pulse/hit");
A_SprayDecal("BoltScorch"); A_SprayDecal("BoltScorch");
Spawn("PulseExplLight",pos); Spawn("PulseExplLight",pos);
int numpt = Random[Pulse](20,40); int numpt = Random[Pulse](20,40);
@ -692,7 +692,7 @@ Class PulseGun : UTWeapon
action void A_StartBeam() action void A_StartBeam()
{ {
invoker.special1 = 0; 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; Vector3 x, y, z, origin;
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll); [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); 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 PGNI A 0
{ {
invoker.special1 = 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(); PGNF ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_PulseFire();
PGF2 ABCDEFGHIJKLMN 1 A_PulseFire(); PGF2 ABCDEFGHIJKLMN 1 A_PulseFire();
Goto Fire+1; Goto Fire+1;
Release: 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 ABCDEFGHIJKLMNOPQRSTUVWXY 1 A_PulseRefire();
PGNC Y 0; PGNC Y 0;
Goto Idle; Goto Idle;
@ -804,7 +804,7 @@ Class PulseGun : UTWeapon
PGNI A 0 A_JumpIf(invoker.clipcount >= Min(invoker.default.clipcount,invoker.Ammo1.Amount),"Idle"); PGNI A 0 A_JumpIf(invoker.clipcount >= Min(invoker.default.clipcount,invoker.Ammo1.Amount),"Idle");
PGNR A 1 PGNR A 1
{ {
A_PlaySound("pulse/reload",CHAN_WEAPON); A_StartSound("pulse/reload",CHAN_WEAPONMISC);
if ( self is 'UTPlayer' ) if ( self is 'UTPlayer' )
UTPlayer(self).PlayReloading(); UTPlayer(self).PlayReloading();
} }

View file

@ -76,7 +76,7 @@ Class Razor2 : Actor
Super.PostBeginPlay(); Super.PostBeginPlay();
let t = Spawn("Razor2Trail",pos); let t = Spawn("Razor2Trail",pos);
t.target = self; 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(); Vector3 dir = vel.unit();
A_SetAngle(atan2(dir.y,dir.x)); A_SetAngle(atan2(dir.y,dir.x));
A_SetPitch(asin(-dir.z)); A_SetPitch(asin(-dir.z));
@ -91,7 +91,7 @@ Class Razor2 : Actor
if ( !target.bNOBLOOD ) if ( !target.bNOBLOOD )
{ {
target.SpawnBlood(pos,AngleTo(target),damage); target.SpawnBlood(pos,AngleTo(target),damage);
A_PlaySound("ripper/flesh"); A_StartSound("ripper/flesh");
A_AlertMonsters(); A_AlertMonsters();
} }
UTMainHandler.DoKnockback(target,vel.unit(),15000); UTMainHandler.DoKnockback(target,vel.unit(),15000);
@ -99,7 +99,7 @@ Class Razor2 : Actor
} }
action void A_RazorHit() action void A_RazorHit()
{ {
A_PlaySound("ripper/hit"); A_StartSound("ripper/hit");
A_AlertMonsters(); A_AlertMonsters();
A_SprayDecal("WallCrack",-20); A_SprayDecal("WallCrack",-20);
int numpt = Random[Ripper](5,10); int numpt = Random[Ripper](5,10);
@ -175,7 +175,7 @@ Class Razor2Alt : Razor2
bFORCEXYBILLBOARD = true; bFORCEXYBILLBOARD = true;
Scale *= 0.65; Scale *= 0.65;
A_StopSound(CHAN_VOICE); A_StopSound(CHAN_VOICE);
A_PlaySound("ripper/althit",CHAN_VOICE); A_StartSound("ripper/althit",CHAN_VOICE);
Spawn("Razor2AltLight",pos); Spawn("Razor2AltLight",pos);
A_AlertMonsters(); A_AlertMonsters();
A_SprayDecal("RazorBlast",20); A_SprayDecal("RazorBlast",20);
@ -246,8 +246,8 @@ Class Ripper2 : UTWeapon
if ( !weap ) return; if ( !weap ) return;
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
if ( alt ) A_PlaySound("ripper/altfire",CHAN_WEAPON); if ( alt ) A_StartSound("ripper/altfire",CHAN_WEAPON,CHANF_OVERLAP);
else A_PlaySound("ripper/fire",CHAN_WEAPON); else A_StartSound("ripper/fire",CHAN_WEAPON,CHANF_OVERLAP);
invoker.FireEffect(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(8,0,255,255),1); UTMainHandler.DoFlash(self,Color(8,0,255,255),1);
A_AlertMonsters(); A_AlertMonsters();

View file

@ -361,7 +361,7 @@ Class ShockBeam : Actor
let r = Spawn("ShockBlastRing",b.pos); let r = Spawn("ShockBlastRing",b.pos);
r.angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x); r.angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x);
r.pitch = asin(-t.Results.HitVector.z); 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); int numpt = Random[ASMD](200,300);
for ( int i=0; i<numpt; i++ ) for ( int i=0; i<numpt; i++ )
{ {
@ -414,7 +414,7 @@ Class ShockBeam : Actor
{ {
Spawn("ShockBeamLight",pos); Spawn("ShockBeamLight",pos);
A_QuakeEx(2,2,2,5,0,120,"",QF_RELATIVE|QF_SCALEDOWN,falloff:60,rollIntensity:0.1); 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(); A_AlertMonsters();
int numpt = Random[ASMD](20,50); int numpt = Random[ASMD](20,50);
for ( int i=0; i<numpt; i++ ) for ( int i=0; i<numpt; i++ )
@ -598,8 +598,8 @@ Class SuperShockBeam : Actor
let r = Spawn("SuperShockBlastRing",b.pos); let r = Spawn("SuperShockBlastRing",b.pos);
r.angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x); r.angle = atan2(t.Results.HitVector.y,t.Results.HitVector.x);
r.pitch = asin(-t.Results.HitVector.z); 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);
A_PlaySound("sshock/blast",CHAN_6,attenuation:0.5); A_StartSound("sshock/blast",CHAN_6,attenuation:0.5);
int numpt = Random[ASMD](200,300); int numpt = Random[ASMD](200,300);
for ( int i=0; i<numpt; i++ ) for ( int i=0; i<numpt; i++ )
{ {
@ -664,8 +664,8 @@ Class SuperShockBeam : Actor
A_Explode(int.max,50); A_Explode(int.max,50);
} }
A_QuakeEx(6,6,6,5,0,100,"",QF_RELATIVE|QF_SCALEDOWN,falloff:50,rollIntensity:0.2); 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_StartSound("shock/hit",CHAN_VOICE,attenuation:0.5);
A_PlaySound("sshock/blast",CHAN_6,attenuation:0.5); A_StartSound("sshock/blast",CHAN_6,attenuation:0.5);
A_AlertMonsters(); A_AlertMonsters();
int numpt = Random[ASMD](20,50); int numpt = Random[ASMD](20,50);
for ( int i=0; i<numpt; i++ ) for ( int i=0; i<numpt; i++ )
@ -881,8 +881,8 @@ Class ShockBall : Actor
r.angle = atan2(HitNormal.y,HitNormal.x); r.angle = atan2(HitNormal.y,HitNormal.x);
r.pitch = asin(-HitNormal.z); r.pitch = asin(-HitNormal.z);
r.scale *= 1.5; r.scale *= 1.5;
A_PlaySound("shock/hit",CHAN_VOICE); A_StartSound("shock/hit",CHAN_VOICE);
A_PlaySound("shock/ball",CHAN_WEAPON,pitch:FRandom[ASMD](0.5,1.5)); 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_QuakeEx(4,4,4,30,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:70,rollIntensity:0.15);
A_AlertMonsters(); A_AlertMonsters();
int numpt = Random[ASMD](50,100); int numpt = Random[ASMD](50,100);
@ -974,9 +974,9 @@ Class SuperShockBall : Actor
r.angle = atan2(HitNormal.y,HitNormal.x); r.angle = atan2(HitNormal.y,HitNormal.x);
r.pitch = asin(-HitNormal.z); r.pitch = asin(-HitNormal.z);
r.scale *= 1.5; r.scale *= 1.5;
A_PlaySound("shock/hit",CHAN_VOICE,attenuation:0.5); A_StartSound("shock/hit",CHAN_VOICE,attenuation:0.5);
A_PlaySound("shock/ball",CHAN_WEAPON,attenuation:0.5,pitch:FRandom[ASMD](0.5,1.5)); A_StartSound("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("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_QuakeEx(8,8,8,30,0,300,"",QF_RELATIVE|QF_SCALEDOWN,falloff:120,rollIntensity:0.25);
A_AlertMonsters(); A_AlertMonsters();
int numpt = Random[ASMD](50,100); int numpt = Random[ASMD](50,100);
@ -1066,7 +1066,7 @@ Class ShockRifle : UTWeapon
if ( !weap ) return; if ( !weap ) return;
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) 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(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,128,0,255),1); 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); 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 ) return;
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) 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(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,128,0,255),1); 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); 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 ) return;
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) 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(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,128,0),1); 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); 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 ) return;
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) 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(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,128,0),1); 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); 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: DryFire:
ASMA I 3 ASMA I 3
{ {
A_PlaySound("sshock/dryfire",CHAN_WEAPON); A_StartSound("sshock/dryfire",CHAN_WEAPON,CHANF_OVERLAP);
A_AlertMonsters(); A_AlertMonsters();
} }
ASMA J 4; ASMA J 4;

View file

@ -82,7 +82,7 @@ Class SniperRifle : UTWeapon
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
invoker.FireEffect(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(32,0,0,255),1); 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(); A_AlertMonsters();
if ( zoomed ) if ( zoomed )
{ {
@ -255,11 +255,11 @@ Class SniperRifle : UTWeapon
if ( invoker.sniperzoom > 1. ) if ( invoker.sniperzoom > 1. )
{ {
if ( CVar.GetCVar('flak_zoomsound',players[consoleplayer]).GetBool() && CheckLocalView() ) 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"); return ResolveState("AltHold2");
} }
if ( CVar.GetCVar('flak_zoomsound',players[consoleplayer]).GetBool() && CheckLocalView() ) 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); return ResolveState(null);
} }
AltHold: AltHold:
@ -279,7 +279,7 @@ Class SniperRifle : UTWeapon
SRFD A 0 SRFD A 0
{ {
if ( (invoker.sniperzoom>1.0) && CVar.GetCVar('flak_zoomsound',players[consoleplayer]).GetBool() && CheckLocalView() ) 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); A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT);
} }
SRFD ABCDEFG 1; SRFD ABCDEFG 1;

View file

@ -40,7 +40,7 @@ Class ModuleHitbox : Actor
if ( !bi.Thing || (bi.Thing != master.target) ) continue; 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)) ) 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(); master.Destroy();
return; return;
} }
@ -154,7 +154,7 @@ Class TranslocatorModule : Actor
} }
b = Spawn("ModuleHitbox",pos); b = Spawn("ModuleHitbox",pos);
b.master = self; 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 ) override bool CanCollideWith( Actor other, bool passive )
@ -188,7 +188,7 @@ Class TranslocatorModule : Actor
Super.Tick(); Super.Tick();
if ( bAMBUSH && !Random[Transloc](0,40) ) if ( bAMBUSH && !Random[Transloc](0,40) )
{ {
A_PlaySound("transloc/spark"); A_StartSound("transloc/spark",CHAN_BODY,CHANF_OVERLAP);
int numpt = Random[Transloc](20,40); int numpt = Random[Transloc](20,40);
for ( int i=0; i<numpt; i++ ) for ( int i=0; i<numpt; i++ )
{ {
@ -223,7 +223,7 @@ Class TranslocatorModule : Actor
else else
{ {
A_SetPitch(0); 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; 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); Weapon weap = Weapon(invoker);
if ( !weap ) return; if ( !weap ) return;
A_PlaySound("transloc/throw",CHAN_WEAPON); A_StartSound("transloc/throw",CHAN_WEAPON);
invoker.FireEffect(); 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); 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(); A_AlertMonsters();
@ -413,14 +413,15 @@ Class Translocator : UTWeapon
{ {
Weapon weap = Weapon(invoker); Weapon weap = Weapon(invoker);
if ( !weap ) return; if ( !weap ) return;
A_PlaySound("transloc/return",CHAN_WEAPON); A_StartSound("transloc/return",CHAN_WEAPON);
invoker.FireEffect(); invoker.FireEffect();
UTMainHandler.DoSwing(self,(FRandom[Translocator](-0.2,-0.4),FRandom[Translocator](-0.2,0.7)),3,-1,2,SWING_Spring,2,2); UTMainHandler.DoSwing(self,(FRandom[Translocator](-0.2,-0.4),FRandom[Translocator](-0.2,0.7)),3,-1,2,SWING_Spring,2,2);
A_AlertMonsters(); A_AlertMonsters();
if ( invoker.module && invoker.module.bAMBUSH ) if ( invoker.module && invoker.module.bAMBUSH )
{ {
UTMainHandler.DoFlash(self,Color(255,255,255,255),50); 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); DamageMobj(invoker,self,int.max,'Telefrag',DMG_THRUSTLESS);
} }
if ( invoker.module ) invoker.module.Destroy(); if ( invoker.module ) invoker.module.Destroy();
@ -434,7 +435,7 @@ Class Translocator : UTWeapon
{ {
invoker.FireEffect(); invoker.FireEffect();
A_AlertMonsters(); A_AlertMonsters();
A_PlaySound("transloc/return",CHAN_WEAPON); A_StartSound("transloc/return",CHAN_WEAPON);
return; return;
} }
// consume ammo if any // consume ammo if any
@ -468,7 +469,7 @@ Class Translocator : UTWeapon
SpawnTeleportFog(newpos,false,false); SpawnTeleportFog(newpos,false,false);
player.fov = min(175,player.desiredfov+60); 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++ ) for ( int i=0; i<MAXPLAYERS; i++ )
{ {
if ( !playeringame[i] || !players[i].mo ) continue; if ( !playeringame[i] || !players[i].mo ) continue;
@ -477,7 +478,8 @@ Class Translocator : UTWeapon
if ( bBroken ) if ( bBroken )
{ {
UTMainHandler.DoFlash(self,Color(255,255,255,255),50); 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); 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 Class UTPlayer : DoomPlayer
{ {
bool doprintnoammo; bool doprintnoammo;
@ -288,7 +299,7 @@ Class UTPlayer : DoomPlayer
{ {
double vol = clamp((-lastvelz-8)*0.05,0.01,1.0); double vol = clamp((-lastvelz-8)*0.05,0.01,1.0);
if ( ((waterlevel > 0) || GetFloorTerrain().IsLiquid) && !bOnMobj ) PlaySplash(vol); 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(); PlayLanding();
} }
else forcefootstep = true; else forcefootstep = true;
@ -491,7 +502,7 @@ Class UTPlayer : DoomPlayer
} }
bOnMobj = false; bOnMobj = false;
if ( !(player.cheats&CF_PREDICTING) ) if ( !(player.cheats&CF_PREDICTING) )
A_PlaySound("*jump",CHAN_BODY); A_StartSound("*jump",CHAN_VOICE);
if ( player.cheats & CF_REVERTPLEASE ) if ( player.cheats & CF_REVERTPLEASE )
{ {
player.cheats &= ~CF_REVERTPLEASE; player.cheats &= ~CF_REVERTPLEASE;
@ -701,7 +712,7 @@ Class UTPlayer : DoomPlayer
bOnMobj = false; bOnMobj = false;
player.jumpTics = -1; player.jumpTics = -1;
if ( !(player.cheats&CF_PREDICTING) ) if ( !(player.cheats&CF_PREDICTING) )
A_PlaySound("*jump",CHAN_BODY); A_StartSound("*jump",CHAN_VOICE);
} }
last_jump_held = gametic; last_jump_held = gametic;
} }
@ -770,7 +781,7 @@ Class UTPlayer : DoomPlayer
virtual void PlayFootstep( double vol ) 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 ) virtual void PlaySplash( double vol )
@ -791,7 +802,7 @@ Class UTPlayer : DoomPlayer
snd = "ut/slimesplash"; snd = "ut/slimesplash";
break; break;
} }
A_PlaySound(snd,CHAN_AUTO,vol); A_StartSound(snd,CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
} }
virtual void PlaySurface() virtual void PlaySurface()
@ -812,7 +823,7 @@ Class UTPlayer : DoomPlayer
snd = "ut/slimesurface"; snd = "ut/slimesurface";
break; break;
} }
A_PlaySound(snd,CHAN_AUTO); A_StartSound(snd,CHAN_FOOTSTEP,CHANF_OVERLAP);
} }
virtual void PlayWetFootstep( double vol ) virtual void PlayWetFootstep( double vol )
@ -833,7 +844,7 @@ Class UTPlayer : DoomPlayer
snd = "ut/playerfootstepslime"; snd = "ut/playerfootstepslime";
break; break;
} }
A_PlaySound(snd,CHAN_AUTO,vol); A_StartSound(snd,CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
} }
override void PlayIdle() override void PlayIdle()
@ -1052,7 +1063,7 @@ Class UTPlayer : DoomPlayer
return; return;
} }
vel = (0,0,0); 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]) // [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 // 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 // base the number of shards on the size of the dead thing, so bigger
@ -1080,19 +1091,19 @@ Class UTPlayer : DoomPlayer
void A_PainDT() void A_PainDT()
{ {
if ( waterlevel > 2 ) A_PlaySound("*death-drowning",CHAN_VOICE); if ( waterlevel > 2 ) A_StartSound("*death-drowning",CHAN_VOICE);
else A_Pain(); else A_Pain();
} }
void A_PlayerScreamDT() void A_PlayerScreamDT()
{ {
if ( waterlevel > 2 ) A_PlaySound("*death-drowning",CHAN_VOICE); if ( waterlevel > 2 ) A_StartSound("*death-drowning",CHAN_VOICE);
else A_PlayerScream(); else A_PlayerScream();
} }
void A_XScreamDT() void A_XScreamDT()
{ {
if ( waterlevel > 2 ) A_PlaySound("*death-drowning",CHAN_VOICE); if ( waterlevel > 2 ) A_StartSound("*death-drowning",CHAN_VOICE);
else A_XScream(); else A_XScream();
} }
@ -1334,7 +1345,7 @@ Class UTUnderSound : Actor
fluidsounds[1] = 'ut/underslime'; fluidsounds[1] = 'ut/underslime';
fluidsounds[2] = 'ut/underlava'; fluidsounds[2] = 'ut/underlava';
fluidsounds[3] = 'ut/undernitro'; 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.); A_SoundVolume(CHAN_VOICE,(players[consoleplayer].camera==target)?1.:0.);
} }
override void OnDestroy() override void OnDestroy()
@ -1353,7 +1364,7 @@ Class UTUnderSound : Actor
SetOrigin(target.pos,true); SetOrigin(target.pos,true);
curfluid = GetFluid(); curfluid = GetFluid();
if ( curfluid != lastfluid ) 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; lastfluid = curfluid;
A_SoundVolume(CHAN_VOICE,(players[consoleplayer].camera==target)?1.:0.); A_SoundVolume(CHAN_VOICE,(players[consoleplayer].camera==target)?1.:0.);
} }
@ -1540,7 +1551,7 @@ Class FlameExplosion : Actor
override void PostBeginPlay() override void PostBeginPlay()
{ {
Super.PostBeginPlay(); Super.PostBeginPlay();
A_PlaySound("ut/lavaex",CHAN_VOICE); A_StartSound("ut/lavaex",CHAN_VOICE);
Spawn("SlugSmoke",pos); Spawn("SlugSmoke",pos);
Spawn("SlugLight",pos); Spawn("SlugLight",pos);
} }
@ -1743,7 +1754,7 @@ Class UTPlayerTBoss : UTPlayer
override void PlayFootstep( double vol ) override void PlayFootstep( double vol )
{ {
if ( !bossfootsteps ) bossfootsteps = CVar.GetCVar('flak_bossfootsteps',players[consoleplayer]); 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); else Super.PlayFootstep(vol);
} }
States States
@ -1810,12 +1821,20 @@ Class UTWeapon : Weapon
override void DetachFromOwner() override void DetachFromOwner()
{ {
Owner.A_StopSound(CHAN_WEAPON); Owner.A_StopSound(CHAN_WEAPON);
Owner.A_StopSound(CHAN_WEAPONMISC);
Owner.A_StopSound(CHAN_LEFTWEAPON);
Owner.A_StopSound(CHAN_LEFTWEAPONMISC);
Super.DetachFromOwner(); Super.DetachFromOwner();
} }
override void OwnerDied() override void OwnerDied()
{ {
if ( Owner.player && (Owner.player.ReadyWeapon == self) ) if ( Owner.player && (Owner.player.ReadyWeapon == self) )
{
Owner.A_StopSound(CHAN_WEAPON); Owner.A_StopSound(CHAN_WEAPON);
Owner.A_StopSound(CHAN_WEAPONMISC);
Owner.A_StopSound(CHAN_LEFTWEAPON);
Owner.A_StopSound(CHAN_LEFTWEAPONMISC);
}
A_ClearRefire(); A_ClearRefire();
Super.OwnerDied(); Super.OwnerDied();
} }
@ -1991,7 +2010,7 @@ Class UTTeleportFog : Actor
{ {
Super.PostBeginPlay(); Super.PostBeginPlay();
Spawn("UTTeleportLight",Vec3Offset(0,0,16)); Spawn("UTTeleportLight",Vec3Offset(0,0,16));
A_PlaySound ("misc/teleport"); A_StartSound("misc/teleport");
Spawn("UTTeleportParticles",Vec3Offset(0,0,16)); Spawn("UTTeleportParticles",Vec3Offset(0,0,16));
} }
States States
@ -2491,7 +2510,7 @@ Class ShredCorpseHitbox : Actor
{ {
if ( wasonair ) 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'); if ( lastvel.z < -20 ) DamageMobj(null,null,int.max,'Falling');
} }
wasonair = false; wasonair = false;
@ -2908,24 +2927,26 @@ Class QueuedFlash
Class UTStaticHandler : StaticEventHandler Class UTStaticHandler : StaticEventHandler
{ {
ui TextureID tex[2]; ui TextureID tex[3];
ui void StartMenu() 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]); CVar protomenu = CVar.GetCVar('flak_protomenu',players[consoleplayer]);
if ( !protomenu ) return; // this can happen if ( !protomenu ) return; // this can happen
int proto = protomenu.GetInt(); int proto = protomenu.GetInt();
if ( proto ) 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 ( gamestate != GS_TITLELEVEL ) return;
if ( proto > 1 ) S_ChangeMusic("menu2"); if ( proto > 1 ) S_ChangeMusic("menu2");
else S_ChangeMusic("xyzdMenu"); else S_ChangeMusic("xyzdMenu");
} }
else 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; if ( gamestate != GS_TITLELEVEL ) return;
S_ChangeMusic("utmenu23"); S_ChangeMusic("utmenu23");
} }
@ -2948,22 +2969,26 @@ Class UTStaticHandler : StaticEventHandler
Vector2 tsize = TexMan.GetScaledSize(tex[0]); Vector2 tsize = TexMan.GetScaledSize(tex[0]);
double sar = tsize.x/tsize.y; double sar = tsize.x/tsize.y;
Vector2 vsize; 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); if ( sar > ar ) vsize = (tsize.x,tsize.x/ar);
else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y); else if ( sar < ar ) vsize = (tsize.y*ar,tsize.y);
else vsize = tsize; else vsize = tsize;
Screen.Dim("Black",1.0,0,0,Screen.GetWidth(),Screen.GetHeight()); 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);
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);
} }
override void RenderOverlay( RenderEvent e ) 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') ) 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); UTWeapon(players[consoleplayer].camera.player.ReadyWeapon).RenderOverlay(e);
if ( !menuactive || (Menu.GetCurrentMenu() is 'ConversationMenu') ) return; if ( !menuactive || (Menu.GetCurrentMenu() is 'ConversationMenu') ) return;
if ( !CVar.GetCVar('flak_showmenu',players[consoleplayer]).GetBool() ) return; if ( !CVar.GetCVar('flak_showmenu',players[consoleplayer]).GetBool() ) return;
Screen.Dim("Black",1.0,0,0,Screen.GetWidth(),Screen.GetHeight()); Screen.Dim("Black",1.,0,0,Screen.GetWidth(),Screen.GetHeight());
Screen.DrawTexture(tex[1],true,0,0,DTA_VirtualWidth,1024,DTA_VirtualHeight,768); 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 == 'RadSuit' ) e.Replacement = 'UTJumpBoots';
else if ( (e.Replacee == 'ArtiFly') || (e.Replacee == 'ArtiSpeedBoots') ) e.Replacement = 'ActJumpBoots'; 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 == '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 == '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 == 'GreenArmor') || (e.Replacee == 'AmuletOfWarding') || (e.Replacee == 'PlatinumHelm') ) e.Replacement = 'UTThighPads';
else if ( e.Replacee == 'Silvershield' ) else if ( e.Replacee == 'Silvershield' )
@ -3145,7 +3170,7 @@ Class UTMainHandler : EventHandler
else if ( e.Replacee == 'FWeaponPiece1' ) e.Replacement = 'WarheadAmmo'; else if ( e.Replacee == 'FWeaponPiece1' ) e.Replacement = 'WarheadAmmo';
else if ( e.Replacee == 'CWeaponPiece1' ) e.Replacement = 'UTBackpack'; 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 == '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 == 'Mana2' ) e.Replacement = 'UTMediumAmmoBox';
else if ( e.Replacee == 'Mana3' ) e.Replacement = 'UTMajorAmmoBox'; else if ( e.Replacee == 'Mana3' ) e.Replacement = 'UTMajorAmmoBox';
else if ( e.Replacee == 'ArtiBoostMana' ) e.Replacement = 'ActUTFullAmmoBox'; else if ( e.Replacee == 'ArtiBoostMana' ) e.Replacement = 'ActUTFullAmmoBox';
@ -3167,7 +3192,7 @@ Class UTMainHandler : EventHandler
{ {
Actor a = Actor.Spawn("MapSpot",pos); Actor a = Actor.Spawn("MapSpot",pos);
if ( !a ) return null; 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; return a;
} }
@ -3585,15 +3610,15 @@ Class UTMainHandler : EventHandler
{ {
if ( !(gframe%11) && gframe < 160 ) if ( !(gframe%11) && gframe < 160 )
{ {
S_Sound("ut/malejump",CHAN_VOICE|CHAN_UI,(gframe>100)?.5:1.); S_StartSound("ut/malejump",CHAN_VOICE,CHANF_UI|CHANF_MAYBE_LOCAL,(gframe>100)?.5:1.);
S_Sound("ut/malejump",CHAN_WEAPON|CHAN_UI,(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)) if ( ((gframe >= 37) && (gframe < 49) && !((gframe-37)%3))
|| ((gframe >= 89) && (gframe < 101) && !((gframe-89)%3)) || ((gframe >= 89) && (gframe < 101) && !((gframe-89)%3))
|| ((gframe >= 141) && (gframe < 153) && !((gframe-141)%3)) ) || ((gframe >= 141) && (gframe < 153) && !((gframe-141)%3)) )
{ {
S_Sound("ut/land",CHAN_BODY|CHAN_UI,(gframe>100)?.5:1.); S_StartSound("ut/land",CHAN_BODY,CHANF_UI|CHANF_MAYBE_LOCAL,(gframe>100)?.5:1.);
S_Sound("ut/land",CHAN_ITEM|CHAN_UI,(gframe>100)?.5:1.); S_StartSound("ut/land",CHAN_ITEM,CHANF_UI|CHANF_MAYBE_LOCAL,(gframe>100)?.5:1.);
} }
gframe++; gframe++;
} }

View file

@ -284,7 +284,7 @@ Class UTGibber : Actor
States States
{ {
Spawn: Spawn:
TNT1 A 0 NoDelay A_PlaySound("misc/gibbed"); TNT1 A 0 NoDelay A_StartSound("misc/gibbed");
TNT1 A 1 BurstGibs(); TNT1 A 1 BurstGibs();
Wait; Wait;
} }
@ -491,7 +491,7 @@ Class UTGib : Actor
if ( tracer ) tracer.Destroy(); if ( tracer ) tracer.Destroy();
} }
else if ( spd > 20 ) vel *= 0.8; else if ( spd > 20 ) vel *= 0.8;
A_PlaySound("misc/gibp"); A_StartSound("misc/gibp");
double ang, pt; double ang, pt;
int max = flak_blood?6:2; int max = flak_blood?6:2;
for ( int i=0; i<max; i++ ) for ( int i=0; i<max; i++ )

View file

@ -1088,7 +1088,7 @@ Class UTHud : BaseStatusBar
{ {
PickupMsg = CPlayer.mo.InvSel.GetTag(); PickupMsg = CPlayer.mo.InvSel.GetTag();
PickupMsgTic = gametic+50; 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; if ( CPlayer.inventorytics > 0 ) justselected = false;
@ -1097,7 +1097,7 @@ Class UTHud : BaseStatusBar
if ( !justselected && CPlayer.mo.InvSel ) if ( !justselected && CPlayer.mo.InvSel )
{ {
Console.Printf(StringTable.Localize("$M_ISELECT"),CPlayer.mo.InvSel.GetTag()); 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; justselected = true;
} }

View file

@ -43,7 +43,7 @@ Class ShockWave : Actor
override void PostBeginPlay() override void PostBeginPlay()
{ {
lifespan = ReactionTime; 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); A_QuakeEx(9,9,9,100,0,12000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:1200,rollIntensity:0.5);
} }
override void Tick() override void Tick()
@ -250,7 +250,7 @@ Class WarShell : Actor
l.target = self; l.target = self;
b = Spawn("WarheadHitbox",pos); b = Spawn("WarheadHitbox",pos);
b.target = self; b.target = self;
A_PlaySound("warhead/fly",CHAN_VOICE,1.0,true); A_StartSound("warhead/fly",CHAN_VOICE,CHANF_LOOPING);
destangle = angle; destangle = angle;
destpitch = pitch; destpitch = pitch;
} }
@ -306,7 +306,7 @@ Class WarShell : Actor
A_Explode(1000,180); A_Explode(1000,180);
A_SprayDecal("BigBlast"); A_SprayDecal("BigBlast");
A_QuakeEx(8,8,8,20,0,300,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.35); 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_AlertMonsters();
A_SetRenderStyle(1.0,STYLE_Add); A_SetRenderStyle(1.0,STYLE_Add);
Spawn("WarheadExplodLight",pos); Spawn("WarheadExplodLight",pos);
@ -320,7 +320,7 @@ Class WarShell : Actor
A_Explode(1000,220); A_Explode(1000,220);
A_SprayDecal("BigBlast"); A_SprayDecal("BigBlast");
A_QuakeEx(8,8,8,20,0,300,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.35); 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_AlertMonsters();
A_SetRenderStyle(1.0,STYLE_Add); A_SetRenderStyle(1.0,STYLE_Add);
Spawn("WarheadExplodLight",pos); Spawn("WarheadExplodLight",pos);
@ -352,7 +352,7 @@ Class GuidedWarShell : WarShell
{ {
Super.PostBeginPlay(); Super.PostBeginPlay();
if ( target && target.player ) target.player.camera = self; 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; justleft = true;
} }
override void Tick() override void Tick()
@ -682,7 +682,7 @@ Class WarheadLauncher : UTWeapon
if ( !weap ) return; if ( !weap ) return;
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) 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(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,128,128),1); 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); 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 ) return;
if ( weap.Ammo1.Amount <= 0 ) return; if ( weap.Ammo1.Amount <= 0 ) return;
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) 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(); invoker.FireEffect();
UTMainHandler.DoFlash(self,Color(128,255,128,128),1); UTMainHandler.DoFlash(self,Color(128,255,128,128),1);
A_AlertMonsters(); A_AlertMonsters();