Additional model progress.
Bump required version to 4.2.0. Added Hexen style loading screen and other gameinfo stuff. Small changes to fullscreen HUD. Added 0.83 style status bar (incomplete). Added player models. Old file cleanup. Ran all models through texnumsq, for convenience (skin indices are all over the place on some models). PNG optimization pass.
This commit is contained in:
parent
5256c548d5
commit
3a8925f3c0
178 changed files with 1887 additions and 356 deletions
|
|
@ -156,57 +156,318 @@ Class UPlayer : UTPlayer
|
|||
}
|
||||
else GiveInventory(type,amount,true);
|
||||
}
|
||||
|
||||
override void PlayAttacking()
|
||||
{
|
||||
// no animation if crouched
|
||||
if ( (player && (player.mo == self)) && (player.crouchdir == -1) ) return;
|
||||
// check weapon type
|
||||
let psp = player.FindPSprite(PSP_WEAPON);
|
||||
if ( (player.ReadyWeapon is 'Stinger') && psp
|
||||
&& psp.CurState.InStateSequence(player.ReadyWeapon.FindState("Hold")) )
|
||||
{
|
||||
if ( !InStateSequence(CurState,FindState("MissileRep")) )
|
||||
SetStateLabel("MissileRep");
|
||||
}
|
||||
else SetStateLabel("Missile");
|
||||
}
|
||||
}
|
||||
|
||||
Class UPlayerFemale1 : UPlayer
|
||||
Class UFemaleArmGibber : UTGibber
|
||||
{
|
||||
bool firstgib;
|
||||
|
||||
override void BurstGibs()
|
||||
{
|
||||
Actor a;
|
||||
double ang, pt;
|
||||
Vector3 dir;
|
||||
if ( !firstgib )
|
||||
{
|
||||
firstgib = true;
|
||||
Actor a = Spawn("UTFemaleArm",Vec3Offset(-14*sin(angle),14*cos(angle),36));
|
||||
ang = FRandom[Blod](0,360);
|
||||
pt = FRandom[Blod](-90,90);
|
||||
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-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));
|
||||
ang = FRandom[Blod](0,360);
|
||||
pt = FRandom[Blod](-90,90);
|
||||
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
|
||||
a.vel = rvel*0.2+dir*FRandom[Blod](1.5,3.0);
|
||||
}
|
||||
A_CountDown();
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
gibsize = 3;
|
||||
reactiontime = 5;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
TNT1 A 0 NoDelay; // no sound, done by player
|
||||
TNT1 A 1 BurstGibs();
|
||||
Wait;
|
||||
}
|
||||
}
|
||||
|
||||
Class UPlayerFemale : UPlayer
|
||||
{
|
||||
Default
|
||||
{
|
||||
Player.SoundClass "ufemale";
|
||||
UTPlayer.VoiceType VOICE_FemaleOne;
|
||||
}
|
||||
|
||||
void A_ArmPop()
|
||||
{
|
||||
armlessL = true;
|
||||
let a = Actor.Spawn("UFemaleArmGibber",pos);
|
||||
a.vel = vel;
|
||||
a.Scale = Scale;
|
||||
a.A_SetSize(radius,height);
|
||||
UTGibber(a).Gibbed = self;
|
||||
}
|
||||
|
||||
States
|
||||
{
|
||||
Reload:
|
||||
#### # 3;
|
||||
PLYR ABCDEF 4;
|
||||
Goto Spawn;
|
||||
Death.Zapped:
|
||||
#### # 0;
|
||||
Goto Death;
|
||||
Death.Decapitated:
|
||||
#### # 0 A_HeadPop();
|
||||
PLD6 A 3 A_PlayerScream();
|
||||
PLD6 B 3 A_NoBlocking();
|
||||
PLD6 CDEFGHIJ 3;
|
||||
PLD6 K 1 A_DMFade();
|
||||
Wait;
|
||||
Death:
|
||||
#### # 0 A_JumpIf(Health<(GetGibHealth()/3),"Death7");
|
||||
#### # 0 A_JumpIf(vel.length()>20,"Death2");
|
||||
#### # 0 A_JumpIf(vel.length()>10,"Death5");
|
||||
#### # 0 A_Jump(256,"Death1","Death3","Death4");
|
||||
Death1:
|
||||
#### # 3;
|
||||
PLD1 A 3 A_PlayerScream();
|
||||
PLD1 B 3 A_NoBlocking();
|
||||
PLD1 CDEFGHIJKLMNOPQRSTU 3;
|
||||
PLD1 V 1 A_DMFade();
|
||||
Wait;
|
||||
Death2:
|
||||
#### # 3;
|
||||
PLD2 A 3 A_PlayerScream();
|
||||
PLD2 B 3 A_NoBlocking();
|
||||
PLD2 CDEFGHIJKLMNOPQ 3;
|
||||
PLD2 R 1 A_DMFade();
|
||||
Wait;
|
||||
Death3:
|
||||
#### # 3;
|
||||
PLD3 A 3 A_PlayerScream();
|
||||
PLD3 B 3 A_NoBlocking();
|
||||
PLD3 CDEFGHIJKLMNO 3;
|
||||
PLD3 P 1 A_DMFade();
|
||||
Wait;
|
||||
Death4:
|
||||
#### # 3;
|
||||
PLD4 A 3 A_PlayerScream();
|
||||
PLD4 B 3 A_NoBlocking();
|
||||
PLD4 CDEFGHIJKL 3;
|
||||
PLD4 M 1 A_DMFade();
|
||||
Wait;
|
||||
Death5:
|
||||
#### # 3;
|
||||
PLD5 A 3 A_PlayerScream();
|
||||
PLD5 B 3 A_NoBlocking();
|
||||
PLD5 CDEFGHIJKLMNO 3;
|
||||
PLD5 P 1 A_DMFade();
|
||||
Wait;
|
||||
Death7:
|
||||
#### # 0 A_ArmPop();
|
||||
PLD7 A 3 A_PlayerScream();
|
||||
PLD7 B 3 A_NoBlocking();
|
||||
PLD7 CDEFGHIJKLMNOPQRSTUV 3;
|
||||
PLD7 W 1 A_DMFade();
|
||||
Wait;
|
||||
Taunt1:
|
||||
#### # 5;
|
||||
PLT1 ABCDEFGHIJKLMNO 3;
|
||||
Goto Spawn+1;
|
||||
Taunt2:
|
||||
#### # 5;
|
||||
PLT2 ABCDEFGHIJKLMNOPQR 4;
|
||||
Goto Spawn+1;
|
||||
Taunt3:
|
||||
#### # 5;
|
||||
PLT3 ABCDEFGHIJKLMNO 3;
|
||||
Goto Spawn+1;
|
||||
Taunt4:
|
||||
#### # 0;
|
||||
Goto Spawn;
|
||||
}
|
||||
}
|
||||
|
||||
Class UPlayerFemale1 : UPlayerFemale
|
||||
{
|
||||
Default
|
||||
{
|
||||
Player.DisplayName "$N_FEMALE1";
|
||||
Player.Portrait "";
|
||||
UTPlayer.VoiceType VOICE_FemaleTwo;
|
||||
-NOMENU;
|
||||
}
|
||||
}
|
||||
Class UPlayerFemale2 : UPlayer
|
||||
Class UPlayerFemale2 : UPlayerFemale
|
||||
{
|
||||
Default
|
||||
{
|
||||
Player.SoundClass "ufemale";
|
||||
Player.DisplayName "$N_FEMALE2";
|
||||
Player.Portrait "";
|
||||
UTPlayer.VoiceType VOICE_FemaleOne;
|
||||
-NOMENU;
|
||||
}
|
||||
}
|
||||
Class UPlayerMale1 : UPlayer
|
||||
|
||||
Class UMaleTorsoGibber : UTGibber
|
||||
{
|
||||
bool firstgib;
|
||||
|
||||
override void BurstGibs()
|
||||
{
|
||||
static const class<Actor> parts[] = {"UTMaleArm","UTMaleArm","UTMaleTorso","UTHeadMale","UTHeart","UTLiver","UTStomach"};
|
||||
static const double partofsy[] = {14,-14,0,0,-2,5,-3};
|
||||
static const double partofsz[] = {36,36,32,48,40,32,35};
|
||||
Actor a;
|
||||
double ang, pt;
|
||||
Vector3 dir;
|
||||
if ( !firstgib )
|
||||
{
|
||||
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]));
|
||||
ang = FRandom[Blod](0,360);
|
||||
pt = FRandom[Blod](-90,90);
|
||||
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-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));
|
||||
ang = FRandom[Blod](0,360);
|
||||
pt = FRandom[Blod](-90,90);
|
||||
dir = (cos(pt)*cos(ang),cos(pt)*sin(ang),sin(-pt));
|
||||
a.vel = rvel*0.2+dir*FRandom[Blod](1.5,3.0);
|
||||
}
|
||||
A_CountDown();
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
gibsize = 3;
|
||||
reactiontime = 5;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
TNT1 A 0 NoDelay; // no sound, done by player
|
||||
TNT1 A 1 BurstGibs();
|
||||
Wait;
|
||||
}
|
||||
}
|
||||
|
||||
Class UPlayerMale : UPlayer
|
||||
{
|
||||
Default
|
||||
{
|
||||
Player.SoundClass "umale";
|
||||
UTPlayer.VoiceType VOICE_MaleOne;
|
||||
}
|
||||
|
||||
void A_TorsoPop()
|
||||
{
|
||||
headless = true;
|
||||
armlessL = true;
|
||||
armlessR = true;
|
||||
torsoless = true;
|
||||
let a = Actor.Spawn("UMaleTorsoGibber",pos);
|
||||
a.vel = vel;
|
||||
a.Scale = Scale;
|
||||
a.A_SetSize(radius,height);
|
||||
UTGibber(a).Gibbed = self;
|
||||
}
|
||||
|
||||
States
|
||||
{
|
||||
Death:
|
||||
#### # 0 A_JumpIf(Health<(GetGibHealth()/3),"Death5");
|
||||
#### # 0 A_JumpIf(vel.length()>20,"Death6");
|
||||
#### # 0 A_JumpIf(vel.length()>10,"Death1");
|
||||
#### # 0 A_Jump(256,"Death2","Death3","Death7");
|
||||
Death5:
|
||||
#### # 0 A_TorsoPop();
|
||||
PLD5 A 3 A_PlayerScream();
|
||||
PLD5 B 3 A_NoBlocking();
|
||||
PLD5 CDEFGHIJKLMNOPQRSTUV 3;
|
||||
PLD5 W 1 A_DMFade();
|
||||
Wait;
|
||||
Death6:
|
||||
#### # 3;
|
||||
PLD6 A 3 A_PlayerScream();
|
||||
PLD6 B 3 A_NoBlocking();
|
||||
PLD6 CDEFGHIJKLMNOPQRSTUVWXYZ[ 3;
|
||||
PLD6 \ 1 A_DMFade();
|
||||
Wait;
|
||||
Taunt1:
|
||||
#### # 5;
|
||||
PLT1 ABCDEFG 6;
|
||||
Goto Spawn+1;
|
||||
Taunt2:
|
||||
#### # 5;
|
||||
PLT2 ABCDEFGHIJKLMNOPQRSTUVWXY 3;
|
||||
Goto Spawn+1;
|
||||
Taunt3:
|
||||
#### # 5;
|
||||
PLT3 ABCDEFGHIJKLMNO 3;
|
||||
Goto Spawn+1;
|
||||
Taunt4:
|
||||
#### # 0;
|
||||
Goto Spawn;
|
||||
}
|
||||
}
|
||||
Class UPlayerMale1 : UPlayerMale
|
||||
{
|
||||
Default
|
||||
{
|
||||
Player.DisplayName "$N_MALE1";
|
||||
Player.Portrait "";
|
||||
UTPlayer.VoiceType VOICE_MaleOne;
|
||||
-NOMENU;
|
||||
}
|
||||
}
|
||||
Class UPlayerMale2 : UPlayer
|
||||
Class UPlayerMale2 : UPlayerMale
|
||||
{
|
||||
Default
|
||||
{
|
||||
Player.SoundClass "umale";
|
||||
Player.DisplayName "$N_MALE2";
|
||||
Player.Portrait "";
|
||||
UTPlayer.VoiceType VOICE_MaleOne;
|
||||
-NOMENU;
|
||||
}
|
||||
}
|
||||
Class UPlayerMale3 : UPlayer
|
||||
Class UPlayerMale3 : UPlayerMale
|
||||
{
|
||||
Default
|
||||
{
|
||||
Player.SoundClass "umale";
|
||||
Player.DisplayName "$N_MALE3";
|
||||
Player.Portrait "";
|
||||
UTPlayer.VoiceType VOICE_MaleTwo;
|
||||
|
|
@ -282,12 +543,8 @@ Class UnrealStaticHandler : StaticEventHandler
|
|||
else mtics++;
|
||||
}
|
||||
|
||||
override void RenderOverlay( RenderEvent e )
|
||||
override void RenderUnderlay( 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);
|
||||
if ( gamestate != GS_TITLELEVEL ) return;
|
||||
double ar = Screen.GetAspectRatio();
|
||||
Vector2 tsize = TexMan.GetScaledSize(tex[cur+3]);
|
||||
|
|
@ -307,6 +564,14 @@ 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 UnrealMainHandler : EventHandler
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue