Much more stuff and things, also Candy Gun sounds.

This commit is contained in:
Mari the Deer 2020-01-27 02:41:51 +01:00
commit 2ee1a2580f
37 changed files with 147 additions and 49 deletions

View file

@ -4,6 +4,10 @@ Most of the work here is original, but there are some notable exceptions:
- Many sounds have been mixed and matched and filtered and whatnot from the following games:
* Fallout New Vegas
* Fallout 4
* Unreal
* Unreal Tournament
* Unreal Tournament 2004
* Deus Ex
- This mod uses libeye, by KeksDose. Big thanks.
- Title theme, "Traumatic State", by Teque (which a lot of people just know as "the AS-Golgotha music").
- Intermission theme, "Dragony", also by Teque (very comfy music considering the rest of his repertoire).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

After

Width:  |  Height:  |  Size: 129 B

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

View file

@ -105,12 +105,27 @@ D_LAMP = "The Lamp ran out of oil.";
D_RAGEKIT = "The Ragekit has ragequit.";
D_REFRESHER = "The Refresher boost has ended.";
D_WARARMOR = "The War Armor is no more.";
// messages
// score messages
SWWM_FINDSECRET = "\cf%s\cf found a secret. +%d\c-";
SWWM_FINDKEY = "\cf%s\cf got the %s. +%d\c-";
SWWM_LASTSECRET = "\cf%s\cf found the last secret. +%d\c-";
SWWM_LASTITEM = "\cf%s\cf got the last item. +%d\c-";
SWWM_LASTMONSTER = "\cf%s\cf killed the last monster. +%d\c-";
// intermission tips
SWWM_INTERTIP1 = "The Demolitionist is immune to drowning, poison and even fall damage (excluding instant kill pits, e.g. in Hexen).";
SWWM_INTERTIP2 = "The Explodium Gun's altfire has an explosive yield proportional to the bullets left in the clip.";
SWWM_INTERTIP3 = "Your fuel regenerates over time, but the more you use dashing and boosting, the longer this will take.";
SWWM_INTERTIP4 = "The Pusher will slip off your hands on altfire if it doesn't land a hit, however as a ranged attack it may still be effective.";
SWWM_INTERTIP5 = "Spare copies of items will be stashed away in your inventory if they can't be immediately used, this even includes health and armor.";
SWWM_INTERTIP6 = "The Omnisight makes secret hunting a breeze by highlighting any usable objects in the map.";
SWWM_INTERTIP7 = "True to its name, the Wallbuster's tertiary fire can be used to completely obliterate doors and other obstacles.";
SWWM_INTERTIP8 = "The Eviscerator can easily clear entire rooms and corridors, but keep in mind that some of the shrapnel might bounce right back at you if you're not careful.";
SWWM_INTERTIP9 = "When on the move, the Silver Bullet's jet compensators will reduce most of the recoil from firing, but will also deal some damage if you're not wearing armor.";
SWWM_INTERTIP10 = "Just like other energy weapons of similar function, the Sparkster's primary and secondary fires can be combined with deadly results.";
SWWM_INTERTIP11 = "The Lämp has a chance to attract a rare type of moth that is much more aggressive than others in its attacks.";
SWWM_INTERTIP12 = "Most healing items will auto-activate if you're about to die, though sometimes they may not be enough to really save you... unless it's a Grilled Cheese Sandwich.";
SWWM_INTERTIP13 = "The Ynykron Artifact will instantly kill everything you aim it at, unless it's really unkillable, though usually that's only the case for gods. You're not planning on going after any gods, right?";
SWWM_INTERTIP14 = "Do not be deceived by the Candy Gun, it may seem like a simple recolor, but it is A LOT stronger than your starting weapon.";
/* SUBTITLES */
// new weapon received

BIN
models/CandyGun_mask.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
music/GW2.XM Normal file

Binary file not shown.

View file

@ -1,8 +1,8 @@
$pitchshiftrange 0
crash/glass glasscrk
crash/curb curb
brutal/ezmodo easymodo
crash/glass sounds/GLASSCRK.ogg
crash/curb sounds/CURB.ogg
brutal/ezmodo sounds/EASYMODO.ogg
voice/default/death1 sounds/voice/default/death1.ogg
voice/default/death2 sounds/voice/default/death2.ogg
@ -257,18 +257,53 @@ explodium/slideforward sounds/explodiumgun/expl_slideforward.ogg
explodium/speen sounds/explodiumgun/expl_speen.ogg
explodium/throwmag sounds/explodiumgun/expl_throwmag.ogg
$playersound demolitionist neutral *grunt DSEMPTY
$playeralias demolitionist neutral *pain100 demolitionist/lopain
$playeralias demolitionist neutral *pain75 demolitionist/pain
$playeralias demolitionist neutral *pain50 demolitionist/pain
$playeralias demolitionist neutral *pain25 demolitionist/hipain
$playersound demolitionist neutral *usefail DSEMPTY
$playeralias demolitionist neutral *death demolitionist/death
$playeralias demolitionist neutral *xdeath demolitionist/xdeath
$playeralias demolitionist neutral *gibbed demolitionist/xdeath
$playeralias demolitionist neutral *wimpydeath demolitionist/wdeath
$playersound demolitionist neutral *land DSEMPTY
$playersound demolitionist neutral *falling DSEMPTY
$playersound demolitionist neutral *puzzfail DSEMPTY
candygun/fire1 sounds/candygun/candy_fire1.ogg
candygun/fire2 sounds/candygun/candy_fire2.ogg
candygun/fire3 sounds/candygun/candy_fire3.ogg
$random candygun/fire { candygun/fire1 candygun/fire2 candygun/fire3 }
candygun/hit1 sounds/candygun/candy_hit1.ogg
candygun/hit2 sounds/candygun/candy_hit2.ogg
$random candygun/hit { candygun/hit1 candygun/hit2 }
candygun/maghit1 sounds/candygun/candy_maghit1.ogg
candygun/maghit2 sounds/candygun/candy_maghit2.ogg
$random candygun/maghit { candygun/maghit1 candygun/maghit2 }
candygun/gunhit1 sounds/candygun/candy_gunhit1.ogg
candygun/gunhit2 sounds/candygun/candy_gunhit2.ogg
$random candygun/gunhit { candygun/gunhit1 candygun/gunhit2 }
$alias misc/keytry DSEMPTY
$playersound demolitionist neutral *grunt DSEMPTY
$playeralias demolitionist neutral *pain100 demolitionist/lopain
$playeralias demolitionist neutral *pain75 demolitionist/pain
$playeralias demolitionist neutral *pain50 demolitionist/pain
$playeralias demolitionist neutral *pain25 demolitionist/hipain
$playersound demolitionist neutral *usefail sounds/menu/failuse.ogg
$playeralias demolitionist neutral *death demolitionist/death
$playeralias demolitionist neutral *xdeath demolitionist/xdeath
$playeralias demolitionist neutral *gibbed demolitionist/xdeath
$playeralias demolitionist neutral *wimpydeath demolitionist/wdeath
$playersound demolitionist neutral *land DSEMPTY
$playersound demolitionist neutral *falling DSEMPTY
$playersound demolitionist neutral *puzzfail sounds/menu/failuse.ogg
misc/secret sounds/menu/findsecret.ogg
misc/keytry sounds/menu/failuse.ogg
misc/w_pkup sounds/general/wpickup.ogg
misc/p_pkup DSEMPTY
misc/i_pkup DSEMPTY
misc/k_pkup DSEMPTY
misc/ammo_pkup sounds/general/apickup.ogg
misc/armor_pkup DSEMPTY
misc/health_pkup DSEMPTY
misc/spawn sounds/CORK.ogg
misc/chat sounds/menu/chatsnd.ogg
misc/chat2 sounds/menu/chatsnd.ogg
menu/activate sounds/hmenu/hmenu1.ogg
menu/backup sounds/hmenu/hmenu2.ogg
menu/prompt sounds/hmenu/hmenu1.ogg
menu/cursor sounds/hmenu/hmenu1.ogg
menu/change sounds/hmenu/hmenu1.ogg
menu/invalid sounds/hmenu/hmenu2.ogg
menu/dismiss sounds/hmenu/hmenu2.ogg
menu/choose sounds/hmenu/hmenu1.ogg
menu/clear sounds/hmenu/hmenu2.ogg

BIN
sounds/CORK.ogg Normal file

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.

BIN
sounds/general/apickup.ogg Normal file

Binary file not shown.

BIN
sounds/general/wpickup.ogg Normal file

Binary file not shown.

BIN
sounds/hmenu/hmenu1.ogg Normal file

Binary file not shown.

BIN
sounds/hmenu/hmenu2.ogg Normal file

Binary file not shown.

BIN
sounds/menu/chatsnd.ogg Normal file

Binary file not shown.

BIN
sounds/menu/failinv.ogg Normal file

Binary file not shown.

BIN
sounds/menu/failuse.ogg Normal file

Binary file not shown.

BIN
sounds/menu/findsecret.ogg Normal file

Binary file not shown.

BIN
sounds/menu/invsel.ogg Normal file

Binary file not shown.

BIN
sounds/menu/menuscroll.ogg Normal file

Binary file not shown.

BIN
sounds/menu/menuset.ogg Normal file

Binary file not shown.

BIN
sounds/menu/menutab.ogg Normal file

Binary file not shown.

BIN
sounds/menu/openkbase.ogg Normal file

Binary file not shown.

BIN
sprites/BLPFB0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -84,12 +84,26 @@ Class SWWMOneLiner : HUDMessageBase
Vector2 hs = StatusBar.GetHUDScale();
Vector2 ss = (Screen.GetWidth()/hs.x,Screen.GetHeight()/hs.y);
String locs = "\""..StringTable.Localize(whichline).."\"";
int len = mTewiFont.mFont.StringWidth(locs);
// split so it can fit
BrokenLines l = mTewiFont.mFont.BreakLines(locs,int(ss.x*.5));
int maxlen = 0;
for ( int i=0; i<l.Count(); i++ )
{
int len = mTewiFont.mFont.StringWidth(l.StringAt(i));
if ( len > maxlen ) maxlen = len;
}
int h = mTewiFont.mFont.GetHeight();
int fh = h*l.Count();
double alph = clamp((curtime/20.)+1.,0.,1.);
alph *= clamp((lifespan-curtime)/10.,0.,1.);
Screen.Dim("Black",alph*.8,int((Screen.GetWidth()-(len+12)*hs.x)/2.),int(bottom-(margin+2+h)*hs.y),int((len+12)*hs.x),int((h+4)*hs.y));
Screen.DrawText(mTewiFont.mFont,Font.CR_FIRE,(ss.x-len)/2.,(bottom/hs.y)-(margin+h),locs,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph);
Screen.Dim("Black",alph*.8,int((Screen.GetWidth()-(maxlen+12)*hs.x)/2.),int(bottom-(margin+2+fh)*hs.y),int((maxlen+12)*hs.x),int((fh+4)*hs.y));
int yy = margin+fh;
for ( int i=0; i<l.Count(); i++ )
{
int len = mTewiFont.mFont.StringWidth(l.StringAt(i));
Screen.DrawText(mTewiFont.mFont,Font.CR_FIRE,(ss.x-len)/2.,(bottom/hs.y)-yy,l.StringAt(i),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph);
yy -= h;
}
}
}

View file

@ -8,7 +8,7 @@ Class MsgLine
Class SWWMStatusBar : BaseStatusBar
{
TextureID StatusTex, WeaponTex, ScoreTex, InventoryTex, ChatTex[3],
TextureID StatusTex, WeaponTex, ScoreTex, InventoryTex, ChatTex[6],
HealthTex[4], FuelTex, DashTex;
HUDFont mTewiFont;
@ -42,20 +42,14 @@ Class SWWMStatusBar : BaseStatusBar
override bool ProcessNotify( EPrintLevel printlevel, String outline )
{
if ( !chatduration ) chatduration = CVar.GetCVar('swwm_chatduration',players[consoleplayer]);
if ( !msgduration ) msgduration = CVar.GetCVar('swwm_msgduration',players[consoleplayer]);
if ( !pickduration ) pickduration = CVar.GetCVar('swwm_pickduration',players[consoleplayer]);
let m = new("MsgLine");
m.str = outline.Left(outline.Length()-1); // strip newline
m.type = printlevel;
m.tic = gametic;
// set lifespan for each type
if ( printlevel == PRINT_LOW ) m.tic += pickduration.GetInt();
else if ( printlevel <= PRINT_HIGH ) m.tic += msgduration.GetInt();
else m.tic += chatduration.GetInt();
m.rep = 1;
// append to full history
FullHistory.Push(m);
// append chat messages to full history
if ( (printlevel == PRINT_CHAT) || (printlevel == PRINT_TEAMCHAT) )
FullHistory.Push(m);
// ignore during intermission
if ( gamestate != GS_LEVEL ) return false;
if ( (printlevel < PRINT_LOW) || (printlevel > PRINT_TEAMCHAT) ) return true; // we couldn't care less about these
@ -90,17 +84,21 @@ Class SWWMStatusBar : BaseStatusBar
override void Tick()
{
if ( !chatduration ) chatduration = CVar.GetCVar('swwm_chatduration',players[consoleplayer]);
if ( !msgduration ) msgduration = CVar.GetCVar('swwm_msgduration',players[consoleplayer]);
if ( !pickduration ) pickduration = CVar.GetCVar('swwm_pickduration',players[consoleplayer]);
Super.Tick();
// prune old messages
for ( int i=0; i<PickupQueue.Size(); i++ )
{
if ( gametic < PickupQueue[i].tic ) continue;
if ( gametic < (PickupQueue[i].tic+pickduration.GetInt()) ) continue;
PickupQueue.Delete(i);
i--;
}
for ( int i=0; i<MainQueue.Size(); i++ )
{
if ( gametic < MainQueue[i].tic ) continue;
if ( (MainQueue[i].type <= PRINT_HIGH) && (gametic < (MainQueue[i].tic+msgduration.GetInt())) ) continue;
else if ( (MainQueue[i].type > PRINT_HIGH) && (gametic < (MainQueue[i].tic+chatduration.GetInt())) ) continue;
MainQueue.Delete(i);
i--;
}
@ -127,7 +125,7 @@ Class SWWMStatusBar : BaseStatusBar
override void Init()
{
Super.Init();
SetSize(0,640,400);
SetSize(0,640,360);
StatusTex = TexMan.CheckForTexture("graphics/HUD/StatusBox.png",TexMan.Type_Any);
DashTex = TexMan.CheckForTexture("graphics/HUD/DashBar.png",TexMan.Type_Any);
FuelTex = TexMan.CheckForTexture("graphics/HUD/FuelBar.png",TexMan.Type_Any);
@ -140,6 +138,9 @@ Class SWWMStatusBar : BaseStatusBar
ChatTex[0] = TexMan.CheckForTexture("graphics/HUD/ChatBoxTop.png",TexMan.Type_Any);
ChatTex[1] = TexMan.CheckForTexture("graphics/HUD/ChatBoxLine.png",TexMan.Type_Any);
ChatTex[2] = TexMan.CheckForTexture("graphics/HUD/ChatBoxBottom.png",TexMan.Type_Any);
ChatTex[3] = TexMan.CheckForTexture("graphics/HUD/ChatBoxTop_Smol.png",TexMan.Type_Any);
ChatTex[4] = TexMan.CheckForTexture("graphics/HUD/ChatBoxLine_Smol.png",TexMan.Type_Any);
ChatTex[5] = TexMan.CheckForTexture("graphics/HUD/ChatBoxBottom_Smol.png",TexMan.Type_Any);
mTewiFont = HUDFont.Create("TewiShaded");
HealthInter = DynamicValueInterpolator.Create(100,.1,1,100);
ScoreInter = DynamicValueInterpolator.Create(0,.1,1,1000);
@ -242,6 +243,9 @@ Class SWWMStatusBar : BaseStatusBar
private void DrawMessages()
{
if ( !chatduration ) chatduration = CVar.GetCVar('swwm_chatduration',players[consoleplayer]);
if ( !msgduration ) msgduration = CVar.GetCVar('swwm_msgduration',players[consoleplayer]);
if ( !pickduration ) pickduration = CVar.GetCVar('swwm_pickduration',players[consoleplayer]);
if ( !pickcol ) pickcol = CVar.GetCVar('msg0color',players[consoleplayer]);
if ( !obitcol ) obitcol = CVar.GetCVar('msg1color',players[consoleplayer]);
if ( !critcol ) critcol = CVar.GetCVar('msg2color',players[consoleplayer]);
@ -252,7 +256,8 @@ Class SWWMStatusBar : BaseStatusBar
{
int mstart = max(0,MainQueue.Size()-(1+maxchat[chatopen>=gametic].GetInt()));
double xx = margin, yy = margin;
Screen.DrawTexture(ChatTex[0],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
bool smol = (ss.x<640);
Screen.DrawTexture(ChatTex[smol?3:0],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
yy++;
for ( int i=mstart; i<MainQueue.Size(); i++ )
{
@ -262,35 +267,50 @@ Class SWWMStatusBar : BaseStatusBar
else if ( MainQueue[i].type == PRINT_TEAMCHAT ) col = teamcol.GetInt();
String cstr = MainQueue[i].str;
if ( MainQueue[i].rep > 1 ) cstr.AppendFormat(" (x%d)",MainQueue[i].rep);
BrokenLines l = mTewiFont.mFont.BreakLines(cstr,361);
int curtime = MainQueue[i].tic-gametic;
if ( MainQueue[i].type < PRINT_CHAT ) curtime += msgduration.GetInt();
else curtime += chatduration.GetInt();
double alph = clamp(curtime/20.,0.,1.);
BrokenLines l = mTewiFont.mFont.BreakLines(cstr,smol?211:361);
for ( int j=0; j<l.Count(); j++ )
{
Screen.DrawTexture(ChatTex[1],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
Screen.DrawText(mTewiFont.mFont,col,xx+4,yy,l.StringAt(j),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
Screen.DrawTexture(ChatTex[smol?4:1],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
Screen.DrawText(mTewiFont.mFont,col,xx+4,yy,l.StringAt(j),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph);
yy += 13;
}
}
Screen.DrawTexture(ChatTex[2],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
Screen.DrawTexture(ChatTex[smol?5:2],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
}
// pickup messages
if ( PickupQueue.Size() > 0 )
{
// reverse order since they're drawn bottom to top
int mend = max(0,PickupQueue.Size()-(1+maxpick.GetInt()));
double yy = ss.y-(margin+40);
double yy = ss.y-(margin+50);
for ( int i=PickupQueue.Size()-1; i>=mend; i-- )
{
String cstr = PickupQueue[i].str;
if ( PickupQueue[i].rep > 1 ) cstr.AppendFormat(" (x%d)",PickupQueue[i].rep);
int curtime = (PickupQueue[i].tic+pickduration.GetInt())-gametic;
double alph = clamp(curtime/20.,0.,1.);
BrokenLines l = mTewiFont.mFont.BreakLines(cstr,int(ss.x*.75));
int maxlen = 0;
for ( int j=0; j<l.Count(); j++ )
{
int len = mTewiFont.mFont.StringWidth(l.StringAt(j));
if ( len > maxlen ) maxlen = len;
}
int h = mTewiFont.mFont.GetHeight();
double xx = (ss.x-maxlen)/2.;
Screen.Dim("Black",.8*alph,int((xx-6)*hs.x),int((yy-h*(l.Count()-1))*hs.y),int((maxlen+12)*hs.x),int((h*l.Count()+4)*hs.y));
for ( int j=l.Count()-1; j>=0; j-- )
{
int len = mTewiFont.mFont.StringWidth(l.StringAt(j));
double xx = (ss.x-len)/2.;
Screen.Dim("Black",.8,int((xx-6)*hs.x),int(yy*hs.y),int((len+12)*hs.x),int(15*hs.y));
Screen.DrawText(mTewiFont.mFont,pickcol.GetInt(),xx,yy+1,l.StringAt(j),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true);
yy -= 15;
xx = (ss.x-len)/2.;
Screen.DrawText(mTewiFont.mFont,pickcol.GetInt(),xx,yy+2,l.StringAt(j),DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_Alpha,alph);
yy -= h;
}
yy -= 6;
}
}
}
@ -344,7 +364,7 @@ Class SWWMStatusBar : BaseStatusBar
BeginHUD();
hs = GetHUDScale();
ss = (Screen.GetWidth()/hs.x,Screen.GetHeight()/hs.y);
margin = clamp(safezone.GetInt(),0,40);
margin = clamp(safezone.GetInt(),0,(ss.x<640)?10:40);
FracTic = TicFrac;
DrawTarget();
DrawScore();

View file

@ -7,8 +7,13 @@ Class SWWMKnowledgeBaseMenu : GenericMenu
override void Init( Menu parent )
{
Super.Init(parent);
if ( gamestate != GS_LEVEL )
{
// can't open this menu outside of the game
Close();
return;
}
TewiFont = Font.GetFont('TewiShaded');
MenuSound("menu/activate");
}
override bool MenuEvent( int mkey, bool fromcontroller )

View file

@ -255,12 +255,16 @@ Class Demolitionist : PlayerPawn
}
}
if ( jumpfac > 0 ) jumpvelz *= jumpfac;
vel.z = max(0,vel.z)+jumpvelz;
double pvelz = vel.z;
if ( !player.onground )
{
// check for wall kicks
if ( walljump )
{
vel.z = max(-abs(vel.z)*.1,vel.z);
vel.z += jumpvelz;
vel.xy = (cos(angle),sin(angle))*20*Speed;
}
}
bOnMobj = false;
player.jumpTics = -1;
@ -270,12 +274,13 @@ Class Demolitionist : PlayerPawn
{
dashboost = 3.;
boostcooldown = 20;
vel.z += jumpvelz+clamp(-pvelz,0.,30.);
A_StartSound("demolitionist/jet",CHAN_JETPACK,CHANF_LOOP);
}
else
{
dashboost = 0.;
vel.z *= 1.25;
vel.z += jumpvelz*1.25;
}
SetStateLabel("Jump");
}
@ -467,7 +472,7 @@ Class Demolitionist : PlayerPawn
else Console.Printf(StringTable.Localize("$SWWM_FINDSECRET"),player.GetUserName(),score);
if ( CheckLocalView() && (mute.GetInt() < 2) ) SWWMHandler.AddOneliner("findsecret",40);
SWWMCredits.GiveCredits(player,score);
return false;
return true;
}
override void AddInventory( Inventory item )
{