1.1.3 mini-update:

- Added hacky ammo displays.
 - Removed swingers.
 - Updated patron credits.
This commit is contained in:
Marisa the Magician 2021-01-24 14:32:13 +01:00
commit eaf19d3007
55 changed files with 293 additions and 199 deletions

192
zscript/ammoled.zsc Normal file
View file

@ -0,0 +1,192 @@
const PULSELEDBASE = 60000;
const FLAKLEDBASE = 61000;
const MINILEDBASE = 62000;
const ROCKETLEDBASE = 63000;
Class PulseGunLED : Actor
{
Actor base, digits[3], bar;
transient PulseGun mygun;
override void PostBeginPlay()
{
SetOrigin((PULSELEDBASE+64,128,99),false);
pitch = 90;
if ( !base ) base = Spawn("AmmoLEDScreen",(PULSELEDBASE+128,0,0));
for ( int i=0; i<3; i++ ) if ( !digits[i] ) digits[i] = Spawn("LEDFont",(PULSELEDBASE+99,104+48*i,1));
if ( !bar ) bar = Spawn("AmmoCountBar",(PULSELEDBASE+110,30,1));
}
override void Tick()
{
if ( !mygun ) return;
base.SetState(base.SpawnState);
int amo = flak_pulsereload?mygun.ClipCount:mygun.Ammo1.Amount;
int mamo = flak_pulsereload?mygun.default.ClipCount:mygun.Ammo1.MaxAmount;
digits[0].SetState(digits[0].SpawnState+1+((amo/100)%10));
digits[1].SetState(digits[1].SpawnState+1+((amo/10)%10));
digits[2].SetState(digits[2].SpawnState+1+(amo%10));
if ( amo < 10 )
{
digits[0].SetShade(Color(255,0,0));
digits[1].SetShade(Color(255,0,0));
digits[2].SetShade(Color(255,0,0));
}
else
{
digits[0].SetShade(Color(0,0,255));
digits[1].SetShade(Color(0,0,255));
digits[2].SetShade(Color(0,0,255));
}
bar.scale.x = amo/double(mamo);
}
}
Class FlakCannonLED : Actor
{
Actor base, digits[3];
transient FlakCannon mygun;
override void PostBeginPlay()
{
SetOrigin((FLAKLEDBASE+32,64,45),false);
pitch = 90;
if ( !base ) base = Spawn("AmmoLEDScreen",(FLAKLEDBASE+64,0,0));
for ( int i=0; i<3; i++ ) if ( !digits[i] ) digits[i] = Spawn("LEDFont",(FLAKLEDBASE+51,54+20*i,1));
}
override void Tick()
{
if ( !mygun ) return;
base.SetState(base.SpawnState+1);
int amo = mygun.Ammo1.Amount;
digits[0].SetState(digits[0].SpawnState+11+((amo/100)%10));
digits[1].SetState(digits[1].SpawnState+11+((amo/10)%10));
digits[2].SetState(digits[2].SpawnState+11+(amo%10));
digits[0].SetShade(Color(255,0,0));
digits[1].SetShade(Color(255,0,0));
digits[2].SetShade(Color(255,0,0));
}
}
Class MinigunLED : Actor
{
Actor base, digits[3];
transient Minigun mygun;
override void PostBeginPlay()
{
SetOrigin((MINILEDBASE+32,32,18),false);
pitch = 90;
if ( !base ) base = Spawn("AmmoLEDScreen",(MINILEDBASE+64,0,0));
for ( int i=0; i<3; i++ ) if ( !digits[i] ) digits[i] = Spawn("LEDFont",(MINILEDBASE+51,22+20*i,1));
}
override void Tick()
{
if ( !mygun ) return;
base.SetState(base.SpawnState+2);
int amo = mygun.Ammo1.Amount;
digits[0].SetState(digits[0].SpawnState+11+((amo/100)%10));
digits[1].SetState(digits[1].SpawnState+11+((amo/10)%10));
digits[2].SetState(digits[2].SpawnState+11+(amo%10));
digits[0].SetShade(Color(255,0,0));
digits[1].SetShade(Color(255,0,0));
digits[2].SetShade(Color(255,0,0));
}
}
Class UTRocketLauncherLED : Actor
{
Actor base, digits[3];
transient UTRocketLauncher mygun;
override void PostBeginPlay()
{
SetOrigin((ROCKETLEDBASE+32,32,18),false);
pitch = 90;
if ( !base ) base = Spawn("AmmoLEDScreen",(ROCKETLEDBASE+64,0,0));
for ( int i=0; i<3; i++ ) if ( !digits[i] ) digits[i] = Spawn("LEDFont",(ROCKETLEDBASE+51,22+20*i,1));
}
override void Tick()
{
if ( !mygun ) return;
base.SetState(base.SpawnState+3);
int amo = mygun.Ammo1.Amount;
digits[0].SetState(digits[0].SpawnState+11+((amo/100)%10));
digits[1].SetState(digits[1].SpawnState+11+((amo/10)%10));
digits[2].SetState(digits[2].SpawnState+11+(amo%10));
digits[0].SetShade(Color(255,0,0));
digits[1].SetShade(Color(255,0,0));
digits[2].SetShade(Color(255,0,0));
}
}
Class LEDFont : Actor
{
Default
{
RenderStyle "Shaded";
StencilColor "FF 00 00";
Radius .1;
Height 0.;
RenderRadius 256;
+NOBLOCKMAP;
+NOGRAVITY;
+NOINTERACTION;
+DONTSPLASH;
+FLATSPRITE;
+YFLIP; // flatsprites™
}
States
{
Spawn:
TNT1 A -1;
LFN1 ABCDEFGHIJ -1 Bright;
LFN2 ABCDEFGHIJ -1 Bright;
Stop;
}
}
Class AmmoCountBar : Actor
{
Default
{
Radius .1;
Height 0.;
RenderRadius 256;
+NOBLOCKMAP;
+NOGRAVITY;
+NOINTERACTION;
+DONTSPLASH;
+FLATSPRITE;
+XFLIP; // flatsprites™
+YFLIP; // flatsprites™
}
States
{
Spawn:
AMCB A -1 Bright;
Stop;
}
}
Class AmmoLEDScreen : Actor
{
Default
{
Radius .1;
Height 0.;
RenderRadius 256;
+NOBLOCKMAP;
+NOGRAVITY;
+NOINTERACTION;
+DONTSPLASH;
+FLATSPRITE;
+XFLIP; // flatsprites™
+YFLIP; // flatsprites™
}
States
{
Spawn:
AMLD ABCD -1 Bright;
Stop;
}
}