Fix Hellblazer having no crosshair.

Rebalance ammo drops/spawns again.
Add random chance for ammo drops to not spawn.
Minor adjustment to forced bilinear shader.
This commit is contained in:
Mari the Deer 2021-05-21 10:42:19 +02:00
commit b98b80667f
7 changed files with 74 additions and 50 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r497 \cu(Tue 18 May 17:17:15 CEST 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r497 \cu(2021-05-18 17:17:15)\c-";
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r498 \cu(Fri 21 May 10:42:19 CEST 2021)\c-";
SWWM_SHORTVER="\cw0.9.11b-pre r498 \cu(2021-05-21 10:42:19)\c-";

View file

@ -5,13 +5,13 @@ vec4 ProcessTexel()
vec2 size = textureSize(tex,0);
vec2 pxsize = vec2(1./size.x,1./size.y);
vec2 pos = vTexCoord.st;
float a = fract(pos.x*size.x);
float b = fract(pos.y*size.y);
vec2 f = fract(pos*size);
pos += (.5-f)*pxsize;
vec4 p0q0 = texture(tex,pos);
vec4 p1q0 = texture(tex,pos+vec2(pxsize.x,0));
vec4 p0q1 = texture(tex,pos+vec2(0,pxsize.y));
vec4 p1q1 = texture(tex,pos+vec2(pxsize.x,pxsize.y));
vec4 pInterp_q0 = mix(p0q0,p1q0,a);
vec4 pInterp_q1 = mix(p0q1,p1q1,a);
return mix(pInterp_q0,pInterp_q1,b);
vec4 pInterp_q0 = mix(p0q0,p1q0,f.x);
vec4 pInterp_q1 = mix(p0q1,p1q1,f.x);
return mix(pInterp_q0,pInterp_q1,f.y);
}

View file

@ -14,11 +14,12 @@ Class SMW05Ammo : Ammo
Inventory.Icon "graphics/HUD/Icons/A_SMW05Ammo.png";
Inventory.Amount 1;
Inventory.MaxAmount 60;
Ammo.BackpackAmount 6;
Ammo.BackpackAmount 3;
Ammo.BackpackMaxAmount 150;
Ammo.DropAmount 3;
+FLOATBOB;
FloatBobStrength 0.25;
Accuracy 20;
}
States
{
@ -93,9 +94,10 @@ Class SheenAmmo : Ammo
Inventory.MaxAmount 600;
Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 1200;
Ammo.DropAmount 20;
Ammo.DropAmount 10;
+FLOATBOB;
FloatBobStrength 0.25;
Accuracy 35;
}
States
{
@ -148,6 +150,7 @@ Class QuadravolAmmo : Ammo
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Accuracy 45;
}
override void ModifyDropAmount( int dropamount )
{
@ -204,6 +207,7 @@ Class DarkCanister : Ammo
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Accuracy 60;
}
override void ModifyDropAmount( int dropamount )
{
@ -237,6 +241,7 @@ Class EMPCore : Ammo
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Accuracy 80;
}
override void ModifyDropAmount( int dropamount )
{
@ -336,6 +341,7 @@ Class RayAmmo : Ammo
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Accuracy 90;
}
override void ModifyDropAmount( int dropamount )
{
@ -371,6 +377,7 @@ Class RayBattery : Ammo
+INVENTORY.IGNORESKILL;
+FLOATBOB;
FloatBobStrength 0.25;
Accuracy 90;
}
override void ModifyDropAmount( int dropamount )
{

View file

@ -556,12 +556,11 @@ extend Class SWWMHandler
return;
}
// shell types (sorted by rarity
static const Class<Actor> redpool[] = {"RedShell","RedShell2","RedShell4"};
static const Class<Actor> greenpool[] = {"GreenShell","GreenShell2","GreenShell4"};
static const Class<Actor> whitepool[] = {"WhiteShell","WhiteShell2"};
static const Class<Actor> purplepool[] = {"PurpleShell","PurpleShell2","PurpleShell4"};
static const Class<Actor> bluepool[] = {"BlueShell","BlueShell2","BlueShell4"};
static const Class<Actor> blackpool[] = {"BlackShell","BlackShell2"};
static const Class<Actor> redpool[] = {'RedShell','RedShell2','RedShell4'};
static const Class<Actor> greenpool[] = {'GreenShell','GreenShell2','GreenShell4'};
static const Class<Actor> whitepool[] = {'WhiteShell','WhiteShell2'};
static const Class<Actor> purplepool[] = {'PurpleShell','PurpleShell2','PurpleShell4'};
static const Class<Actor> bluepool[] = {'BlueShell','BlueShell2','BlueShell4'};
// DRLA Monsters stuff
if ( hasdrlamonsters )
{
@ -651,74 +650,72 @@ extend Class SWWMHandler
else if ( (e.Replacee is 'ShellBox') || (e.Replacee is 'CrossbowHefty') )
{
/*if ( Random[Replacements](0,1) ) e.Replacement = Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BigAmmo';
else */switch( Random[Replacements](0,14) )
else */switch( Random[Replacements](0,20) )
{
case 0:
case 1:
case 2:
e.Replacement = redpool[Random[Replacements](1,2)];
break;
case 3:
case 4:
case 5:
e.Replacement = greenpool[Random[Replacements](1,2)];
e.Replacement = redpool[Random[Replacements](1,2)];
break;
case 6:
case 7:
case 8:
e.Replacement = whitepool[Random[Replacements](0,1)];
break;
case 9:
case 10:
case 11:
e.Replacement = purplepool[Random[Replacements](0,2)];
e.Replacement = greenpool[Random[Replacements](1,2)];
break;
case 11:
case 12:
case 13:
case 14:
e.Replacement = purplepool[Random[Replacements](0,2)];
break;
case 15:
case 16:
case 17:
e.Replacement = bluepool[Random[Replacements](0,2)];
break;
case 14:
e.Replacement = blackpool[Random[Replacements](0,1)];
case 18:
case 19:
e.Replacement = whitepool[Random[Replacements](0,1)];
break;
case 20:
e.Replacement = 'BlackShell';
break;
}
}
else if ( (e.Replacee is 'Shell') || (e.Replacee is 'CrossbowAmmo') )
{
/*if ( Random[Replacements](0,1) ) e.Replacement = Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BundleSpawn';
else */switch( Random[Replacements](0,13) )
else */switch( Random[Replacements](0,9) )
{
case 0:
case 1:
case 2:
e.Replacement = redpool[Random[Replacements](0,1)];
break;
case 3:
e.Replacement = redpool[0];
break;
case 4:
case 5:
e.Replacement = greenpool[Random[Replacements](0,1)];
break;
case 6:
e.Replacement = greenpool[0];
break;
case 7:
e.Replacement = whitepool[0];
break;
case 8:
e.Replacement = purplepool[0];
break;
case 9:
case 10:
e.Replacement = purplepool[Random[Replacements](0,1)];
break;
case 11:
case 12:
e.Replacement = bluepool[Random[Replacements](0,1)];
break;
case 13:
e.Replacement = blackpool[0];
e.Replacement = bluepool[0];
break;
}
}
else if ( e.Replacee is 'ClipBox' )
{
/*if ( Random[Replacements](0,1) ) e.Replacement = Random[Replacements](0,2)?'SheenSmallAmmo':'SheenBigAmmo';
else */e.Replacement = Random[Replacements](0,4)?'EvisceratorShell':Random[Replacements](0,6)?'EvisceratorTrioSpawn':'EvisceratorSixPack';
else */e.Replacement = Random[Replacements](0,5)?'EvisceratorShell':Random[Replacements](0,9)?'EvisceratorTrioSpawn':'EvisceratorSixPack';
}
else if ( (e.Replacee is 'Clip') || (e.Replacee is 'GoldWandAmmo') ) e.Replacement = /*(e.Replacee is 'GoldWandHefty')?'SheenSmallAmmo':'SheenTinyAmmo'*/'SWWMNothing';
else if ( e.Replacee is 'BlasterHefty' )

View file

@ -23,6 +23,7 @@ Class RedShell : Ammo
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 30;
}
States
{
@ -69,6 +70,7 @@ Class GreenShell : Ammo
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 35;
}
States
{
@ -108,12 +110,13 @@ Class WhiteShell : Ammo
Inventory.Icon "graphics/HUD/Icons/A_ShellsDragon.png";
Inventory.Amount 1;
Inventory.MaxAmount 10;
Ammo.BackpackAmount 1;
Ammo.BackpackAmount 0;
Ammo.BackpackMaxAmount 30;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 4;
Accuracy 50;
}
States
{
@ -155,11 +158,12 @@ Class BlueShell : Ammo
Inventory.MaxAmount 15;
Ammo.BackpackAmount 1;
Ammo.BackpackMaxAmount 40;
Ammo.DropAmount 2;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 45;
}
States
{
@ -206,6 +210,7 @@ Class BlackShell : Ammo
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 60;
}
States
{
@ -245,13 +250,14 @@ Class PurpleShell : Ammo
Inventory.Icon "graphics/HUD/Icons/A_ShellsBall.png";
Inventory.Amount 1;
Inventory.MaxAmount 20;
Ammo.BackpackAmount 2;
Ammo.BackpackAmount 1;
Ammo.BackpackMaxAmount 60;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 40;
}
States
{
@ -382,13 +388,14 @@ Class EvisceratorShell : Ammo
Inventory.Icon "graphics/HUD/Icons/A_Eviscerator.png";
Inventory.Amount 1;
Inventory.MaxAmount 20;
Ammo.BackpackAmount 3;
Ammo.BackpackAmount 2;
Ammo.BackpackMaxAmount 60;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 8;
Height 22;
Accuracy 40;
}
override void ModifyDropAmount( int dropamount )
{
@ -455,13 +462,14 @@ Class HellblazerMissiles : Ammo
Inventory.Icon "graphics/HUD/Icons/A_HellblazerMissile.png";
Inventory.Amount 1;
Inventory.MaxAmount 24;
Ammo.BackpackAmount 3;
Ammo.BackpackAmount 1;
Ammo.BackpackMaxAmount 48;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 6;
Height 22;
Accuracy 60;
}
override void ModifyDropAmount( int dropamount )
{
@ -522,13 +530,14 @@ Class HellblazerCrackshots : Ammo
Inventory.Icon "graphics/HUD/Icons/A_HellblazerCrackshot.png";
Inventory.Amount 1;
Inventory.MaxAmount 15;
Ammo.BackpackAmount 2;
Ammo.BackpackAmount 1;
Ammo.BackpackMaxAmount 30;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 6;
Height 22;
Accuracy 70;
}
override void ModifyDropAmount( int dropamount )
{
@ -568,13 +577,14 @@ Class HellblazerRavagers : Ammo
Inventory.Icon "graphics/HUD/Icons/A_HellblazerRavager.png";
Inventory.Amount 1;
Inventory.MaxAmount 9;
Ammo.BackpackAmount 1;
Ammo.BackpackAmount 0;
Ammo.BackpackMaxAmount 18;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 6;
Height 22;
Accuracy 80;
}
override void ModifyDropAmount( int dropamount )
{
@ -621,6 +631,7 @@ Class HellblazerWarheads : Ammo
FloatBobStrength 0.25;
Radius 6;
Height 22;
Accuracy 90;
}
override void ModifyDropAmount( int dropamount )
{
@ -671,6 +682,7 @@ Class SparkUnit : Ammo
FloatBobStrength 0.25;
Radius 6;
Height 22;
Accuracy 50;
}
override void ModifyDropAmount( int dropamount )
{
@ -710,6 +722,7 @@ Class SilverBulletAmmo : Ammo
FloatBobStrength 0.25;
Radius 10;
Height 26;
Accuracy 60;
}
override void ModifyDropAmount( int dropamount )
{
@ -756,6 +769,7 @@ Class SilverBulletAmmo2 : Ammo
FloatBobStrength 0.25;
Radius 10;
Height 26;
Accuracy 70;
}
override void ModifyDropAmount( int dropamount )
{
@ -896,6 +910,7 @@ Class CandyGunAmmo : Ammo
FloatBobStrength 0.25;
Radius 6;
Height 24;
Accuracy 80;
}
override void ModifyDropAmount( int dropamount )
{

View file

@ -23,6 +23,8 @@ Mixin Class SWWMAmmo
{
if ( swwm_enemydrops >= 0 )
{
// random chance to not drop
if ( Random[DropChance](1,100) <= Accuracy ) return true;
if ( Amount == default.Amount ) return false;
// subdivide
Owner = dropper; // needed for positioning to work
@ -255,6 +257,8 @@ Class MagAmmo : Inventory abstract
{
if ( swwm_enemydrops >= 0 )
{
// random chance to not drop
if ( Random[DropChance](1,100) <= Accuracy ) return true;
if ( Amount == default.Amount ) return false;
// subdivide
Owner = dropper; // needed for positioning to work
@ -372,6 +376,6 @@ Mixin Class SWWMShellAmmo
override void ModifyDropAmount( int dropamount )
{
Super.ModifyDropAmount(dropamount);
Amount = max(1,Amount+Random[ShellDrop](-2,1));
Amount = Random[ShellDrop](1,clamp(dropamount,1,4));
}
}

View file

@ -108,6 +108,7 @@ Class Hellblazer : SWWMWeapon
override void RenderUnderlay( RenderEvent e )
{
Super.RenderUnderlay(e);
static const Class<Ammo> types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"};
if ( !LockIcon[0] )
{