1.2 update, w/ GZDoom 4.9 stuff:

- Customizable player skins here too.
 - Integrated re-skin add-ons ("Old Sounds" is still separate).
 - The usual fixes and optimizations.
 - All weapons are now left-handed, where possible.
This commit is contained in:
Marisa the Magician 2022-11-06 00:02:46 +01:00
commit a21aa43f35
1485 changed files with 1157 additions and 380 deletions

View file

@ -304,6 +304,15 @@ Class UPlayer : UTPlayer
if ( boot ) A_StartSound("u1/bootfootstep",CHAN_FOOTSTEP,CHANF_OVERLAP,min(1.,vol*2));
else A_StartSound("ut/playerfootstep",CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
}
override void A_SetPlayerSkin()
{
A_ChangeModel("",0,"","",1,"models","GunPick1.png",CMDL_USESURFACESKIN,-1);
}
override void SetFreezeSkin()
{
A_ChangeModel("",0,"","",1,"models","GunPick1ice.png",CMDL_USESURFACESKIN,-1);
}
}
Class UFemaleArmGibber : UTGibber
@ -318,19 +327,22 @@ Class UFemaleArmGibber : UTGibber
if ( !firstgib )
{
firstgib = true;
Actor a = Spawn("UTFemaleArm",Vec3Offset(-14*sin(angle),14*cos(angle),36));
Vector3 pofs = (0,14,36);
pofs.xy = RotateVector(pofs.xy,angle);
Actor a = Spawn("UTFemaleArm",level.Vec3Offset(pos,pofs));
ang = FRandom[Blod](0,360);
pt = FRandom[Blod](-90,90);
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
dir = dt_Utility.Vec3FromAngle(ang,pt);
a.vel = rvel*0.6+dir*FRandom[Blod](3.0,6.0);
}
for ( int i=0; i<gibsize; i++ )
{
Vector3 box = (FRandom[Blod](-4,4),FRandom[Blod](12,18),FRandom[Blod](32,40));
let a = Spawn("UTBloodPuff",Vec3Offset(box.x*cos(angle)-box.y*sin(angle),box.x*sin(angle)+box.y*cos(angle),box.z));
box.xy = RotateVector(box.xy,angle);
let a = Spawn("UTBloodPuff",level.Vec3Offset(pos,box));
ang = FRandom[Blod](0,360);
pt = FRandom[Blod](-90,90);
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
dir = dt_Utility.Vec3FromAngle(ang,pt);
a.vel = rvel*0.2+dir*FRandom[Blod](1.5,3.0);
}
A_CountDown();
@ -458,6 +470,17 @@ Class UPlayerFemale1 : UPlayerFemale
UTPlayer.VoiceType VOICE_FemaleTwo;
-NOMENU;
}
override void A_SetPlayerSkin()
{
Super.A_SetPlayerSkin();
String skin = player?CVar.GetCVar('sting_female1skin',player).GetString():"Gina";
A_ChangeModel("",0,"","",0,"models/Female1",skin..".png",CMDL_USESURFACESKIN,-1);
}
override void SetFreezeSkin()
{
Super.SetFreezeSkin();
A_ChangeModel("",0,"","",0,"models/Female1","Ice.png",CMDL_USESURFACESKIN,-1);
}
States
{
See:
@ -473,6 +496,17 @@ Class UPlayerFemale2 : UPlayerFemale
Player.DisplayName "$N_FEMALE2";
-NOMENU;
}
override void A_SetPlayerSkin()
{
Super.A_SetPlayerSkin();
String skin = player?CVar.GetCVar('sting_female2skin',player).GetString():"Sonya";
A_ChangeModel("",0,"","",0,"models/Female2",skin..".png",CMDL_USESURFACESKIN,-1);
}
override void SetFreezeSkin()
{
Super.SetFreezeSkin();
A_ChangeModel("",0,"","",0,"models/Female2","Ice.png",CMDL_USESURFACESKIN,-1);
}
States
{
See:
@ -498,20 +532,23 @@ Class UMaleTorsoGibber : UTGibber
firstgib = true;
for ( int i=0; i<7; i++ )
{
Actor a = Spawn(parts[i],Vec3Offset(-partofsy[i]*sin(angle),partofsy[i]*cos(angle),partofsz[i]));
Vector3 pofs = (0,partofsy[i],partofsz[i]);
pofs.xy = RotateVector(pofs.xy,angle);
Actor a = Spawn(parts[i],level.Vec3Offset(pos,pofs));
ang = FRandom[Blod](0,360);
pt = FRandom[Blod](-90,90);
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
dir = dt_Utility.Vec3FromAngle(ang,pt);
a.vel = rvel*0.6+dir*FRandom[Blod](3.0,6.0);
}
}
for ( int i=0; i<gibsize; i++ )
{
Vector3 box = (FRandom[Blod](-15,15),FRandom[Blod](15,15),FRandom[Blod](30,50));
let a = Spawn("UTBloodPuff",Vec3Offset(box.x*cos(angle)-box.y*sin(angle),box.x*sin(angle)+box.y*cos(angle),box.z));
box.xy = RotateVector(box.xy,angle);
let a = Spawn("UTBloodPuff",level.Vec3Offset(pos,box));
ang = FRandom[Blod](0,360);
pt = FRandom[Blod](-90,90);
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
dir = dt_Utility.Vec3FromAngle(ang,pt);
a.vel = rvel*0.2+dir*FRandom[Blod](1.5,3.0);
}
A_CountDown();
@ -603,6 +640,17 @@ Class UPlayerMale1 : UPlayerMale
else A_StartSound("ut/playerfootstep",CHAN_FOOTSTEP,CHANF_OVERLAP,vol);
}
}
override void A_SetPlayerSkin()
{
Super.A_SetPlayerSkin();
String skin = player?CVar.GetCVar('sting_male1skin',player).GetString():"Kurgan";
A_ChangeModel("",0,"","",0,"models/Male1",skin..".png",CMDL_USESURFACESKIN,-1);
}
override void SetFreezeSkin()
{
Super.SetFreezeSkin();
A_ChangeModel("",0,"","",0,"models/Male1","Ice.png",CMDL_USESURFACESKIN,-1);
}
Default
{
Player.DisplayName "$N_MALE1";
@ -623,6 +671,17 @@ Class UPlayerMale2 : UPlayerMale
Player.DisplayName "$N_MALE2";
-NOMENU;
}
override void A_SetPlayerSkin()
{
Super.A_SetPlayerSkin();
String skin = player?CVar.GetCVar('sting_male1skin',player).GetString():"Ash";
A_ChangeModel("",0,"","",0,"models/Male2",skin..".png",CMDL_USESURFACESKIN,-1);
}
override void SetFreezeSkin()
{
Super.SetFreezeSkin();
A_ChangeModel("",0,"","",0,"models/Male2","Ice.png",CMDL_USESURFACESKIN,-1);
}
States
{
See:
@ -639,6 +698,17 @@ Class UPlayerMale3 : UPlayerMale
UTPlayer.VoiceType VOICE_MaleTwo;
-NOMENU;
}
override void A_SetPlayerSkin()
{
Super.A_SetPlayerSkin();
String skin = player?CVar.GetCVar('sting_male1skin',player).GetString():"Dante";
A_ChangeModel("",0,"","",0,"models/Male3",skin..".png",CMDL_USESURFACESKIN,-1);
}
override void SetFreezeSkin()
{
Super.SetFreezeSkin();
A_ChangeModel("",0,"","",0,"models/Male3","Ice.png",CMDL_USESURFACESKIN,-1);
}
States
{
See:
@ -860,9 +930,6 @@ Class UnrealStaticHandler : StaticEventHandler
ui void StartMenu()
{
CVar protomenu = CVar.GetCVar('sting_introtype',players[consoleplayer]);
if ( !protomenu ) return; // this can happen
int proto = protomenu.GetInt();
tex[0] = TexMan.CheckForTexture("graphics/UnLogo0.png",TexMan.Type_Any);
tex[1] = TexMan.CheckForTexture("graphics/UnLogo1.png",TexMan.Type_Any);
tex[2] = TexMan.CheckForTexture("graphics/UnLogo3.png",TexMan.Type_Any);
@ -871,19 +938,26 @@ Class UnrealStaticHandler : StaticEventHandler
tex[5] = TexMan.CheckForTexture("graphics/97Bg.png",TexMan.Type_Any);
tex[6] = TexMan.CheckForTexture("graphics/96Bg.png",TexMan.Type_Any);
tex[7] = TexMan.CheckForTexture("graphics/95Bg.png",TexMan.Type_Any);
if ( gamestate == GS_TITLELEVEL ) StartMenuMusic();
cur = clamp(sting_introtype,0,3);
}
clearscope void StartMenuMusic()
{
int proto = sting_introtype;
if ( proto > 3 ) S_ChangeMusic("music/Unreal_Extended.it");
else if ( proto == 3 ) S_ChangeMusic("music/Unreal.it");
else if ( proto == 2 ) S_ChangeMusic("music/isotox96.s3m");
else if ( proto == 1 ) S_ChangeMusic("music/Unreal2.it");
else S_ChangeMusic("music/FlyBy.it");
cur = clamp(proto,0,3);
}
override void OnRegister()
override void WorldLoaded( WorldEvent e )
{
// remove the UT static handler
let hnd = UTStaticHandler(StaticEventHandler.Find("UTStaticHandler"));
if ( hnd ) hnd.Destroy();
if ( gamestate == GS_TITLELEVEL ) StartMenuMusic();
}
override void ConsoleProcess( ConsoleEvent e )
@ -895,7 +969,6 @@ Class UnrealStaticHandler : StaticEventHandler
override void PostUiTick()
{
if ( gamestate != GS_TITLELEVEL ) return;
if ( gametic <= 0 ) StartMenu();
if ( musplaying.Name != lastmusic )
{
mtics = 0;
@ -907,6 +980,7 @@ Class UnrealStaticHandler : StaticEventHandler
override void RenderUnderlay( RenderEvent e )
{
if ( gamestate != GS_TITLELEVEL ) return;
if ( tex[0].IsNull() ) StartMenu();
double ar = Screen.GetAspectRatio();
Vector2 tsize = TexMan.GetScaledSize(tex[cur+4]);
double sar = tsize.x/tsize.y;
@ -925,14 +999,6 @@ Class UnrealStaticHandler : StaticEventHandler
double alf = clamp(((mtics+e.FracTic)/Thinker.TICRATE)-8,0.,1.);
Screen.DrawTexture(tex[cur],false,(vsize.x-tsize.x)/2,(vsize.y-tsize.y)/2,DTA_VirtualWidthF,vsize.x,DTA_VirtualHeightF,vsize.y,DTA_KeepRatio,true,DTA_Alpha,alf);
}
override void RenderOverlay( RenderEvent e )
{
// we have to stand in for the UT handler on this function
// although it doesn't make much sense yet
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);
}
}
Class AmmoUsedInSlot