From da48b8ea631969ddb4259542e5e1ef2dc93f7f60 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Sun, 24 Sep 2023 18:43:53 +0200 Subject: [PATCH] Chanceboxes won't drop ammo that's already full. --- language.version | 4 +- zscript/items/swwm_funstuff.zsc | 69 ++++++++++++++++++++++++++------- 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/language.version b/language.version index a3bd42810..d5fc8d991 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r957 \cu(Wed 20 Sep 22:16:31 CEST 2023)\c-"; -SWWM_SHORTVER="\cw1.3pre r957 \cu(2023-09-20 22:16:31)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r958 \cu(Sun 24 Sep 18:43:53 CEST 2023)\c-"; +SWWM_SHORTVER="\cw1.3pre r958 \cu(2023-09-24 18:43:53)\c-"; diff --git a/zscript/items/swwm_funstuff.zsc b/zscript/items/swwm_funstuff.zsc index 1b2700017..bc141353d 100644 --- a/zscript/items/swwm_funstuff.zsc +++ b/zscript/items/swwm_funstuff.zsc @@ -832,7 +832,7 @@ Class RewardMisterRifle : ChanceboxReward { override bool CheckRequirements() { - return SWWMUtility.ItemExists("MisterRifle",ownedonly:true); + return SWWMUtility.ItemExists("MisterRifle",ownedonly:true)&&(SWWMUtility.CheckNeedsItem("MisterGAmmo",true)||SWWMUtility.CheckNeedsItem("MisterAmmo",true)||SWWMUtility.CheckNeedsItem("MisterRound",true)); } override void SpawnReward( Vector3 pos ) @@ -847,7 +847,7 @@ Class RewardCandyGun : ChanceboxReward { override bool CheckRequirements() { - return SWWMUtility.ItemExists("CandyGun",ownedonly:true); + return SWWMUtility.ItemExists("CandyGun",ownedonly:true)&&(SWWMUtility.CheckNeedsItem("CandyGunAmmo",true)||SWWMUtility.CheckNeedsItem("CandyGunBullets",true)||SWWMUtility.CheckNeedsItem("CandyGunSpares",true)); } override void SpawnReward( Vector3 pos ) @@ -856,13 +856,27 @@ Class RewardCandyGun : ChanceboxReward SpawnCircle(pos,7,"CandyGunBullets"); } } -// TODO ray-khom bolts all over +// them big bolts +Class RewardThiccBolts : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists("RayKhom",ownedonly:true)&&(SWWMUtility.CheckNeedsItem("RayAmmo",true)||SWWMUtility.CheckNeedsItem("RayBolt",true)); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,"RayAmmo",true); + SpawnCircle(pos,4,"RayBolt"); + SpawnCircle(pos,6,"RayBolt",3.); + } +} // them silver bullets Class RewardSilverBullets : ChanceboxReward { override bool CheckRequirements() { - return SWWMUtility.ItemExists("SilverBullet",ownedonly:true); + return SWWMUtility.ItemExists("SilverBullet",ownedonly:true)&&(SWWMUtility.CheckNeedsItem("SilverBulletAmmo",true)||SWWMUtility.CheckNeedsItem("SilverBullets",true)); } override void SpawnReward( Vector3 pos ) @@ -871,13 +885,25 @@ Class RewardSilverBullets : ChanceboxReward SpawnCircle(pos,6,"SilverBullets",3.); } } -// TODO cyan/red plasma cells for the sparkster +// blues 'n reds +Class RewardSparkCells : ChanceboxReward +{ + override bool CheckRequirements() + { + return SWWMUtility.ItemExists("ModernSparkster",ownedonly:true)&&(SWWMUtility.CheckNeedsItem("SparksterBAmmo",true)||SWWMUtility.CheckNeedsItem("SparksterRAmmo",true)); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCircle(pos,6,"SparksterBAmmo",item2:"SparksterRAmmo"); + } +} // buncha spark units Class RewardSparkUnits : ChanceboxReward { override bool CheckRequirements() { - return SWWMUtility.ItemExists("Sparkster",ownedonly:true); + return SWWMUtility.ItemExists("Sparkster",ownedonly:true&&SWWMUtility.CheckNeedsItem("SparkUnit",true)); } override void SpawnReward( Vector3 pos ) @@ -891,7 +917,7 @@ Class RewardQuadCells : ChanceboxReward { override bool CheckRequirements() { - return SWWMUtility.ItemExists("Quadravol",ownedonly:true); + return SWWMUtility.ItemExists("Quadravol",ownedonly:true)&&SWWMUtility.CheckNeedsItem("QuadravolAmmo",true); } override void SpawnReward( Vector3 pos ) @@ -906,7 +932,7 @@ Class RewardHellblazers : ChanceboxReward { override bool CheckRequirements() { - return SWWMUtility.ItemExists("Hellblazer",ownedonly:true); + return SWWMUtility.ItemExists("Hellblazer",ownedonly:true)&&SWWMUtility.CheckNeedsItem("HellblazerMissiles",true); } override void SpawnReward( Vector3 pos ) @@ -921,7 +947,7 @@ Class RewardSheenAmmo : ChanceboxReward { override bool CheckRequirements() { - return SWWMUtility.ItemExists("HeavyMahSheenGun",ownedonly:true); + return SWWMUtility.ItemExists("HeavyMahSheenGun",ownedonly:true)&&SWWMUtility.CheckNeedsItem("SheenAmmo",true); } override void SpawnReward( Vector3 pos ) @@ -936,7 +962,7 @@ Class RewardFlakShells : ChanceboxReward { override bool CheckRequirements() { - return SWWMUtility.ItemExists("Eviscerator",ownedonly:true); + return SWWMUtility.ItemExists("Eviscerator",ownedonly:true)&&SWWMUtility.CheckNeedsItem("EvisceratorShell",true); } override void SpawnReward( Vector3 pos ) @@ -945,19 +971,34 @@ Class RewardFlakShells : ChanceboxReward SpawnCircle(pos,6,"EvisceratorShell",3.); } } -// TODO screwbullet droppage for the puntzers +// screwbullet droppage +Class RewardScrews : ChanceboxReward +{ + override bool CheckRequirements() + { + return (SWWMUtility.ItemExists("PuntzerBeta",ownedonly:true)||SWWMUtility.ItemExists("PuntzerGamma",ownedonly:true))&&SWWMUtility.CheckNeedsItem("SMW05Ammo",true); + } + + override void SpawnReward( Vector3 pos ) + { + SpawnCenter(pos,"SMW05SmallAmmo",true); + SpawnCircle(pos,6,"SMW05Ammo2",2.); + SpawnCircle(pos,12,"SMW05Ammo",4.); + } +} // Lotta shells Class RewardShells : ChanceboxReward { override bool CheckRequirements() { - return SWWMUtility.ItemExists("Spreadgun",ownedonly:true)||SWWMUtility.ItemExists("Wallbuster",ownedonly:true); + return (SWWMUtility.ItemExists("Spreadgun",ownedonly:true)||SWWMUtility.ItemExists("Wallbuster",ownedonly:true))&&SWWMUtility.CheckNeedsItem("RedShell",true); } override void SpawnReward( Vector3 pos ) { - SpawnCircle(pos,8,"RedShell",2.); - SpawnCircle(pos,12,"RedShell",4.,item2:"RedShell"); + SpawnCenter(pos,"RedShell4",true); + SpawnCircle(pos,4,"RedShell2",2.); + SpawnCircle(pos,8,"RedShell",4.); } } // Buncha nuggets