diff --git a/language.version b/language.version index 6f37d14a8..2141b4499 100644 --- a/language.version +++ b/language.version @@ -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-"; diff --git a/shaders/glsl/Bilinear.fp b/shaders/glsl/Bilinear.fp index afb735fcf..b31d3b0b2 100644 --- a/shaders/glsl/Bilinear.fp +++ b/shaders/glsl/Bilinear.fp @@ -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); } diff --git a/zscript/dlc1/swwm_ammoitems_dlc.zsc b/zscript/dlc1/swwm_ammoitems_dlc.zsc index d68209236..889ad52ee 100644 --- a/zscript/dlc1/swwm_ammoitems_dlc.zsc +++ b/zscript/dlc1/swwm_ammoitems_dlc.zsc @@ -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 ) { diff --git a/zscript/handler/swwm_handler_replacements.zsc b/zscript/handler/swwm_handler_replacements.zsc index 8f445d443..b8dee53c4 100644 --- a/zscript/handler/swwm_handler_replacements.zsc +++ b/zscript/handler/swwm_handler_replacements.zsc @@ -556,12 +556,11 @@ extend Class SWWMHandler return; } // shell types (sorted by rarity - static const Class redpool[] = {"RedShell","RedShell2","RedShell4"}; - static const Class greenpool[] = {"GreenShell","GreenShell2","GreenShell4"}; - static const Class whitepool[] = {"WhiteShell","WhiteShell2"}; - static const Class purplepool[] = {"PurpleShell","PurpleShell2","PurpleShell4"}; - static const Class bluepool[] = {"BlueShell","BlueShell2","BlueShell4"}; - static const Class blackpool[] = {"BlackShell","BlackShell2"}; + static const Class redpool[] = {'RedShell','RedShell2','RedShell4'}; + static const Class greenpool[] = {'GreenShell','GreenShell2','GreenShell4'}; + static const Class whitepool[] = {'WhiteShell','WhiteShell2'}; + static const Class purplepool[] = {'PurpleShell','PurpleShell2','PurpleShell4'}; + static const Class 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' ) diff --git a/zscript/items/swwm_ammoitems.zsc b/zscript/items/swwm_ammoitems.zsc index 6beebe4c8..0d8d7a436 100644 --- a/zscript/items/swwm_ammoitems.zsc +++ b/zscript/items/swwm_ammoitems.zsc @@ -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 ) { diff --git a/zscript/items/swwm_baseammo.zsc b/zscript/items/swwm_baseammo.zsc index 50309a3be..21653801c 100644 --- a/zscript/items/swwm_baseammo.zsc +++ b/zscript/items/swwm_baseammo.zsc @@ -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)); } } diff --git a/zscript/weapons/swwm_blazeit.zsc b/zscript/weapons/swwm_blazeit.zsc index ef8a864a7..9c0f39b19 100644 --- a/zscript/weapons/swwm_blazeit.zsc +++ b/zscript/weapons/swwm_blazeit.zsc @@ -108,6 +108,7 @@ Class Hellblazer : SWWMWeapon override void RenderUnderlay( RenderEvent e ) { + Super.RenderUnderlay(e); static const Class types[] = {"HellblazerMissiles","HellblazerCrackshots","HellblazerRavagers","HellblazerWarheads"}; if ( !LockIcon[0] ) {