From bbc8e55afd505a1869f79235583486150a787617 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sun, 27 Mar 2022 01:11:30 +0100 Subject: [PATCH] Un-hide DLC content (even if not implemented). --- README.md | 215 +++++++++++++++++++++++++++++-- achievements.lst | 39 ++++-- language.version | 4 +- menudef.txt | 2 +- readme.txt | 7 +- zscript/items/swwm_ammospawn.zsc | 54 ++++---- zscript/menu/swwm_credits.zsc | 2 +- zscript/menu/swwm_inter.zsc | 9 +- zscript/utility/swwm_utility.zsc | 77 +++-------- 9 files changed, 289 insertions(+), 120 deletions(-) diff --git a/README.md b/README.md index 0a3975544..39341bf30 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ All weapons also have a quick melee attack using the **Weapon State 1** button, If a weapon has no actions on either the reload or zoom buttons, it may be replaced with some special idle action, such as spinning or fiddling around with it. -For now, the following are all weapons available. More will be added afterwards, in future updates *(oh boy)*. +Do note that *(with the exception of the **Deep Impact**)*, you can only have one of each weapon per slot. Make sure you think things through with how to set up your loadout, 'cause you can't carry everything *(that is, unless you toggle the option to do so, which completely defeats this attempt at balance)*. ### Deep Impact (slot 1) ~ Replaces Fist, Staff, Hexen starting weapons ![](docimg/deepimpact.png) @@ -92,6 +92,19 @@ What was going to be the new melee weapon in **Ultra Suite 2**, but it never hap **Secondary fire:** Pull the drill bit back all the way in, then on button release push it back out with immense force. This will pretty much pierce a hole through anything, but if you miss there's a chance you'll lose grip on the weapon and it'll go flying until it hits something. +### Combat Hammer (slot 1) ~ Replaces Chainsaw, Gauntlets, Timon's Axe +![](docimg/hammer.png) + +A hefty sledgehammer, built to smash things with extreme prejudice. + +**Primary fire:** Swing it around, from side to side. + +**Secondary fire:** Hold to lift it up, release to let it drop. + +**Tertiary Fire:** Spin the damn thing, hitting all targets around you. Note that you have to keep tapping the button whenever the speed starts to drop so you can keep going, for as long as you want *(be wary of motion sickness)*. + +Do note one important thing: This weapon benefits from the effects of the **Ragekit**. Yeah, have fun dealing *8X THE DAMAGE* swingin' it. + ### Explodium Gun (slot 2) ~ Replaces Pistol, Elven Wand, Hexen starting weapons ![](docimg/explodiumgun.png) @@ -107,6 +120,19 @@ Equipped by default on spawned players. Has infinite ammo. If you manage to get a second one, you can dual wield them, in which case secondary fire instead shoots your off-hand gun. +### Plasma Blaster (slot 2) ~ Replaces Pistol, Elven Wand, Hexen starting weapons +![](docimg/plasmablast.png) + +Energy sidearm, for those times when you just want to let 'em burn. What it lacks in explosive potential compared to the **Explodium Gun**, it compensates by packing one hell of a scorching bite on direct hits. + +**Primary fire:** Let loose some pew-pews. The projectiles aren't very fast, nor get very far. + +**Secondary fire:** Hold firmly with both hands and charge up a potent shot. This one is a lot more lethal, as you may imagine. + +**Reload:** Change up the plasma cell. Don't freak out if the display powers off, it's also powered by that same cell. + +Likewise, also has infinite ammo, so go wild. And yeah, it can also be dual wielded, working the same way. + ### Spreadgun (slot 3) ~ Replaces Shotgun, Ethereal Crossbow, Serpent Staff ![](docimg/spreadgun.png) @@ -134,6 +160,22 @@ on replaced item, may also come in bundles: - ***"The ball"* (purple):** A big lead ball, 'nuff said. Somewhat rare. - **Golden shell (self-explanatory color):** An extremely rare, but very valuable type. Fires a sabot packed with a very dense, high-grade **Explodium** charge, the shell also contains some gold glitter, but it's just for show. Clearly designed by someone completely insane, and definitely guaranteed to not fail catastrophically and blow up your gun, your hands, your arms, and the rest of your upper body. Unlike the others, this one is only available as a rare drop from powerful monsters (over 1000HP) and bosses. They may also appear in **Chanceboxes**. +### Puntzer Beta (slot 3) ~ Replaces Shotgun, Ethereal Crossbow, Serpent Staff +![](docimg/puntzerbeta.png) + +A fine six-shooter for the gunslinger at heart. Single-action for that ol' fanning goodness. + +**Primary fire:** It do the shoot. + +**Secondary fire:** Hold for fast-fire mode, after which continuous tapping of primary will keep on slamming that hammer. + +**Reload:** You can guess what it does. And hey, look, it's top-break. Ain't that a rarity nowadays... + +### SMW.05 rounds ~ Replaces Clip / Shells, Wand Crystal / Ethereal Arrows +![](docimg/smwammo.png) + +These 6.9mm **(nice)** corkscrew-shaped bullets have some fine drilling power, being capable of piercing nicely through various surfaces. You may find them in various forms, sometimes as speedloaders for the **Beta**, and other times as magazines for the **Gamma**. + ### Wallbuster (slot 4) ~ Replaces SSG, Ethereal Crossbow, Frost Shards ![](docimg/wallbuster.png) @@ -154,6 +196,19 @@ A ludicrously overkill weapon, courtesy of the always-overkill **Blackmann Arms* Should you make use of its multi-fire functionality, you will soon learn why it bears the name of ***"Wallbuster"***. +### Puntzer Gamma (slot 4) ~ Replaces SSG, Ethereal Crossbow, Frost Shards +![](docimg/puntzergamma.png) + +Just your friendly neighborhood bullpup SMG, with a somewhat unconventional feeding system. + +**Primary fire:** It shoots, what else. Note that you'll gradually lose accuracy the longer you keep firing. + +**Secondary fire:** Toggles between full auto and... Fuller auto? + +**Reload:** Ah yes, it reloads. + +As its ammunition is interchangeable with the **Beta**, you won't be missing much *(other than the SPEED and the mag capacity)* if you decide to keep a **Wallbuster** in this slot. + ### Eviscerator (slot 5) ~ Replaces Chaingun, Dragon Claw, Quietus (hilt) ![](docimg/eviscerator.png) @@ -172,6 +227,24 @@ This weapon made the **Unreal Engine** cry, so **GZDoom** may suffer a lot too. Little bundles of fun (in hot lead form) found either as single units *(sometimes bunched up)* or six-packs. There is no explanation for why they have an **OwO** face scribbled on. +### Sheen HMG (slot 5) ~ Replaces Chaingun, Dragon Claw, Quietus (hilt) +![](docimg/sheenhmg.png) + +**HEAVY MAH-SHEEN GUN!** The **Sheen** is one big bad son of a gun, letting you unload lead uninterrupted thanks to also feeding directly from **Hammerspace**. + +**Primary fire:** It shoots, at a steady 700 RPM. Not very fast, but it's the most stable. + +**Secondary fire:** 1050 RPM shooting. Things are speeding up, and you may notice some heat problems with extended use. + +**Tertiary fire:** 2100 RPM shooting. Absolute curtain fire, gun's gonna catch on fire if you keep this up. + +As you may guess, there is heat buildup to worry about with this thing. Despite its efficient heat dissipation, there's nothing that can be done against the sheer density of dakka you can deliver. + +### 14.5mmMT bullets ~ Replaces Clip / Ammo Box, Wand Crystal / Claw Orb +![](docimg/sheenammo.png) + +Things get intense when even your bullets have to be built with special, exotic materials made to resist extreme heat. You're gonna find plenty of these around, for sure. By the way, they're not tracer rounds, they just get so hot they literally set the air on fire. Ain't that metal... + ### Hellblazer (slot 6) ~ Replaces Rocket Launcher, Phoenix Rod, Hammer of Retribution ![](docimg/hellblazer.png) @@ -197,6 +270,26 @@ Ammo for the **Hellblazer**, found either as single units or packs. There are fo - ***"Ravager"* incendiary bombs:** Wide range, the flames will engulf pretty much everything around itself. - ***"Slayer"* warheads:** Frickin' nukes, you better keep your distance, because they are ***STRONG***. +### Quadravol (slot 6) ~ Replaces Rocket Launcher, Phoenix Rod, Hammer of Retribution +![](docimg/quadravol.png) + +One mighty relic of the beginnings of **UnSX**. This beefy handcannon spews potent fireballs that burn stuff up good, while also blasting it all into the air with extreme prejudice. And what's even better, it's lever-action! + +**Primary fire:** Shoot 'em. + +**Secondary fire:** Pumps more rounds into the gun, for extra potency *(up to 5x)*. Do note that the shot not only will become stronger, but also more unstable. + +**Tertiary fire:** Hold for extended features with either fire button. Tapping primary fire will switch between single-shot and scatter-shot modes, and tapping secondary fire lets you switch the weapon stance, from two-handing to single-handing, you know, so you can give it a full-on spin like in the action movies. + +**Reload:** Loads more rounds in reserve. + +There's one special technique that you can make use of, should you decide to melee with this weapon. Yeah, timing it just right as you stab those bayonets into an enemy and then fire the gun, you'll release a potent point-blank blast for added damage and knockback. Smite those fools, smite them good. + +### Quadravol cells ~ Replaces Rockets, Flame Orb +![](docimg/quadammo.png) + +Each of these lil' things contains a mixture of high-incendiary exotic elements. The stuff's so powerful it even burns underwater, somehow. + ### Biospark Carbine (slot 7) ~ Replaces Plasma Rifle, Hellstaff, Firestorm ![](docimg/biospark.png) @@ -217,6 +310,33 @@ If the beam hits either of the other energy blobs, they will detonate with highl Ammunition for the Biospark Carbine. They contain a lot of energy, despite the small size. +### Sparkster Rifle (slot 7) ~ Replaces Plasma Rifle, Hellstaff, Firestorm +![](docimg/sparkster.png) + +You've seen the granddaddy, now meet its young and promising descendant. The **Sparkster** is yet another signature weapon of the **UnSX** series, and you will not be disappointed with the mighty power you'll wield in your hands. + +**Primary fire:** Kinylum plasma shots. Stable, steady, and quite explosive. + +**Secondary fire:** Nokron plasma shots. A chaotic, scorching cloud of burnination. + +**Primary fire + Secondary fire:** Holding both buttons at once will mix both compounds to produce a lethal orb of violet plasma. + +**Primary reload:** Load in more Kinylum cells. + +**Secondary reload:** Load in more Nokron cells. + +Yes, this portable plasma artillery has two ammo types, handled separately. And yes also, they can be combined. Ain't that neat. + +### Kinylum cells ~ Replaces Cells, Runes +![](docimg/sparksterammoblue.png) + +Neatly packaged single-shot charges of Kinylum. Recognizable by its cyan color and fresh mint scent. + +### Nokron cells ~ Replaces Cells, Runes +![](docimg/sparksterammored.png) + +Neatly packaged single-shot charges of Nokron. Recognizable by its red color and delicious cheese aroma. + ### Silver Bullet JET (slot 8) ~ Replaces Plasma Rifle, Hellstaff, Arc of Death ![](docimg/silverbullet.png) @@ -248,6 +368,31 @@ The more directly explosive counterpart of the **XSB**. Personally baptized by * Same spawn conditions as the standard bullets. +### Mortal Rifle (slot 8) ~ Replaces Plasma Rifle, Hellstaff, Arc of Death +![](docimg/mortalrifle.png) + +An experiment in creating the most definitive battle rifle for all armies across the universe. This thing came out of the **University of Nos-Kora**, so you can expect some things won't make a whole lot of sense with it. + +**Primary fire:** The weapon is shot. + +**Secondary fire:** Fire the under-barrel grenade. Or load one if empty. + +**Tertiary fire:** Switch fire modes. There's the usual semi-auto, as well as... A shotgun? A stream of micro-bullets?? And a railgun??? Yeah, I don't even. + +**Reload:** At least this does what you'd expect. + +Don't rely too much on this thing, the ammo tends to be scarce. + +### Mortal Bullets ~ Replaces Cells, Runes +![](docimg/mrbullet.png) + +These 4.44x44.4mm, square-shaped telescoped rounds have a lot of *"fours"* in them for sure. You can find 'em as-is or rarely in full mags. + +### Mortal Grenades ~ Replaces Cells, Runes +![](docimg/mrgrenade.png) + +44.4mm grenades that burst into target-seeking micro-bombs. That sure is a thing, yes. They're more rare than the standard ammo, however. + ### Candy Gun (slot 9) ~ Replaces BFG9000, Firemace, Bloodscourge (stub) ![](docimg/candygun.png) @@ -268,6 +413,31 @@ The ammo for this beast. Mags don't pop up on **Embiggeners**, and in Hexen only In the world, you may find either spare bullets or full mags. Each seven bullets picked up will be automatically converted to a full mag in your inventory. +### Ray-Khom (slot 9) ~ Replaces BFG9000, Firemace, Bloodscourge (stub) +![](docimg/raykhom.png) + +So, you are about to witness a weapon of legend from the ancient **UnSX** arsenal. This is a very, VERY big gun you've got here. Naturally, it serves as a staple of the **Xekkian** armies, being the standard-issue sidearm *(yes, sidearm)* of many soldiers and mercenaries alike. ~~It's also the most silent way to eliminate **Manderley**.~~ + +**Primary fire:** Silent plasma grenade shot. Goes quite far, and blows up good. Your enemies won't even hear it coming. + +**Secondary fire:** Short-range arc lightning discharge. Stuns hard, with deadly potential on lesser targets. Make sure you're not standing in water when letting loose *(it's common sense)*. + +**Primary reload:** Ammo reloading. + +**Secondary reload:** Battery reloading. Yes, this is battery powered. It's a coilgun, after all. Note that for safety reasons the battery can't be removed unless it's almost depleted. + +By the way, those sharp claws aren't just for show, they hurt real bad when you use quick melee with this thing. + +### Ray-Khom Bolts ~ Replaces Cells, Runes +![](docimg/raybolt.png) + +40mm magnetized bolts with a plasma payload. They're basically just grenades, really. + +### Ray-Khom Battery ~ Replaces Cells, Runes +![](docimg/raybattery.png) + +You're gonna need spares of these if you plan on using the **Ray-Khom** for a very extended period of time. Too bad they're kind of rare. + ### Ynykron Artifact (slot 0) ~ Replaces BFG9000, Firemace, Wraithverge (arc) ![](docimg/ynykron.png) @@ -290,6 +460,24 @@ Additional ammo charge for the **Ynykron Artifact**. Contains a rod of polarized These spawn VERY rarely and, like the weapon that uses them, you can't buy them either. It's also possible to find them in **Chanceboxes**, if you're lucky. +### Rafan-Kos (slot 0) ~ Replaces BFG9000, Firemace, Wraithverge (arc) +![](docimg/rafankos.png) + +Yet another very legendary **UnSX** weapon of old that never saw the light of day... Until today. The name of this peculiar artifact translates to **Ultimate Weapon** in the language of the **Nukuri**. As you may expect, it's meant to be the last word in weaponry, that's why it shares the same slot as the other big fuck-off gun. + +**Primary fire:** A very big, very thick, very DEADLY beam of plasma. + +**Secondary fire:** Scattered beams, pure chaos, everything they touch just melts. + +**Reload:** Reload reloads, very reloadingly. + +You ever wanted a nice and concise way to tell someone to fuck off? Just use this. But something like this can't be bought in stores, oh no, it's so niche that only ONE of it exists in the whole world. Try to find it, have fun. + +### Rafan-Kos Pods ~ Replaces Cell Pack, Greater Rune +![](docimg/rafankospod.png) + +Don't eat them. Each of these contains star stuff, basically. They're just as rare as you might expect. If you're lucky, you'll see a full mag of four somewhere, maybe. + ## The Pickups ![](docimg/demolitionist_items.png) @@ -391,7 +579,7 @@ You're fucking invincible for a total of 20 seconds. Each of these you pick up increases your ammo capacity *(not necessarily doubling it)*, stacking up to 8 times. They also give you some extra ammo, like a vanilla backpack would *(though not for all weapons)*. -In some special cases you may find "Bulk" versions. These generally only pop up if the mapper decided to spawn several overlapping backpacks in one spot, as they result from all of those items merging together. +In some special cases you may find *"Bulk"* versions. These generally only pop up if the mapper decided to spawn several overlapping backpacks in one spot, as they result from all of those items merging together. Note: In multiplayer, these can be traded between players, but do note that the receiver will not get any extra ammo from it. @@ -413,7 +601,7 @@ Reveals the entire layout of the map and shows key locations in the HUD. Also al ### Safety Tether ~ Replaces Chaos Device ![](docimg/tether.png) -On use, teleports you back to the start of the map. Basically acts exactly the same as a Chaos Device, although it also resets you to max health should you be under the weather. Additionally it also generates shockwaves on both ends, making your escape more dramatic. +On use, teleports you back to the start of the map. Basically acts exactly the same as a **Chaos Device**, although it also resets you to max health should you be under the weather. Additionally it also generates shockwaves on both ends, making your escape more dramatic. ### Mykradvo Artifact ~ May randomly replace Ghost Artifact or Invinciball ![](docimg/mykradvo.png) @@ -439,29 +627,29 @@ Same conditions as the other two. Make sure you find the perfect chance to unlea ## The Collectibles ![](docimg/chancebox.png) -Every now and then you will find these strange ***"Lucky Chance Boxes"*** in secret areas, which you can open by pressing Use. In Hexen, they will also replace Dark Servants, Banishment Devices and Porkalators *(as the game generally doesn't have secret areas)*. +Every now and then you will find these strange ***"Lucky Chance Boxes"*** in secret areas, which you can open by pressing Use. In **Hexen**, they will also replace **Dark Servants**, **Banishment Devices** and **Porkalators** *(as the game generally doesn't have secret areas)*. -While some will drop very useful goodies, others may provide you instead with a randomly selected item from a pool of various *"collectibles"*. On pickup, these will give you a nice extra score based on their estimated market price. Some of these collectibles will only appear when you play specific IWADs (or those that go chronologically after them, e.g.: Heretic collectibles appearing in Hexen). +While some will drop very useful goodies, others may provide you instead with a randomly selected item from a pool of various *"collectibles"*. On pickup, these will give you a nice extra score based on their estimated market price. Some of these collectibles will only appear when you play specific IWADs (or those that go chronologically after them, e.g.: **Heretic** collectibles appearing in **Hexen**). ### NUTATCO™ Chocolate Bar ![](docimg/nutatcobar.png) -A light snack, said to have a "savage taste". The branding was entirely Saya's doing thanks to her position as #1 sponsor of Vestal Foods. +A light snack, said to have a *"savage taste"*. The branding was entirely **Saya**'s doing thanks to her position as #1 sponsor of Vestal Foods. ### Frispy™ Tasty Corn Snack ![](docimg/frispycorn.png) -Saya's favorite barbecue-flavored corn nuts. She snacks on so many bags of these that their tasty scent has stuck to her permanently, becoming a walking advertisement for them. Kirin likes it, at least. +**Saya**'s favorite barbecue-flavored corn nuts. She snacks on so many bags of these that their tasty scent has stuck to her permanently, becoming a walking advertisement for them. **Kirin** likes it, at least. ### The Akari Project ![](docimg/akariproject.png) -A copy of Saya's famous sci-fi novel about interdimensional travel. Saya has frequently cited it to dab hard on the UAC and their failures. The interportal system devised by Saya in 2171 was named after this. +A copy of **Saya**'s famous sci-fi novel about interdimensional travel. **Saya** has frequently cited it to dab hard on the **UAC** and their failures. The interportal system devised by **Saya** in 2171 was named after this. ### Meidobot - Love Signals ![](docimg/lovesignals.png) -Debut album of Maidbot Miyamoto. Very cute and romantic J-Pop. Yes, it's a CD, and yes, some people still have CD drives out there. The album is considered a declaration of love to Saya, although it should be noted that this predates Maidbot gaining sentience *(not that it makes much of a difference, as her feelings for Saya turned out to be very real)*. +Debut album of **Meido Miyamoto**. Very cute and romantic J-Pop. Yes, it's a CD, and yes, some people still have CD drives out there. The album is considered a declaration of love to **Saya**, although it should be noted that this predates **Meido** gaining sentience *(not that it makes much of a difference, as her feelings for **Saya** turned out to be very real)*. ### Perfectly Generic Cube ![](docimg/generic.png) @@ -471,12 +659,17 @@ A perfectly generic cube. It is exactly 128mm across each side, sports a pure gr ### Haunted Saya Bean Plush ![](docimg/sayabean.png) -Eats your snacks and calls you a horny. Emits a giggle when you squeeze it. Yet another of Nukritas 2xx's little handcrafted dolls. May or may not be really haunted. +Eats your snacks and calls you a horny. Emits a giggle when you squeeze it. Yet another of **Nukritas 2xx**'s little handcrafted dolls. May or may not be really haunted. ### Mashiro Plush ![](docimg/mothplushy.png) -A cute plush doll of Saya's favorite moth girl. Apparently the Nukritas brothers give her one of these every time they piss her off, so she's got an entire pile in her bedroom. It appears that this one bears with it some sort of "contract", whatever that means. +A cute plush doll of **Saya**'s favorite moth girl. Apparently the **Nukritas** brothers give her one of these every time they piss her off, so she's got an entire pile in her bedroom. It appears that this one bears with it some sort of *"contract"*, whatever that means. + +### Saya's Mug +![](docimg/sayasmug.png) + +A personalized coffee mug that **Saya** uses to totally drink black coffee, without any sugar. Gifted by her brother **Taro** on her 16th birthday. ### Demolitionist Plush (Heretic) ![](docimg/demoplush.png) diff --git a/achievements.lst b/achievements.lst index 687fbaeb9..1ef20b0d0 100644 --- a/achievements.lst +++ b/achievements.lst @@ -9,12 +9,17 @@ # gametype: the game this belongs to (any, doom, heretic, hexen, raven, etc.) acid,40,yes,any allcoll,-1,no,any +#allinv,-1,yes,any allitems,30,yes,nothexen allkills,30,yes,nothexen allsecrets,30,yes,nothexen +#allweapons,-21,yes,any anom,10,yes,any anone,0,no,any +#ara,100,yes,any +#arse,-8,yes,any balls,10,yes,any +#ballself,0,no,any barrel,500,yes,doom barrier,20,yes,doom baseball,0,no,doom @@ -28,40 +33,46 @@ butts,100,yes,any candy,500,yes,any cliffyb,0,no,nothexen clonk,0,no,any +#combo,0,no,any conga,10,yes,any crush,0,no,any cybully,0,no,doom -#cum,500,yes,any -#dab,200,yes,any -#dakka,60,no,any +cum,500,yes,any +dab,200,yes,any +dakka,60,no,any +#dbsucc,0,no,any deadeye,7,yes,any deva,10,yes,any dime,0,no,any divine,10,yes,any doodle,20,yes,doom +#engine,0,no,any everything,0,no,any ezkill,50,yes,doom ezkill,30,yes,raven flight,2000,yes,any +#fluffy,50,yes,any friend,20,yes,any fuel,400,yes,any -#fuller,0,no,any +fuller,0,no,any gcsandwich,10,yes,any -#gepgun,30,yes,any +gepgun,30,yes,any ghost,20,yes,any gib,1500,yes,any golden,24,yes,any gravity,10,yes,raven grenade,20,yes,any -#hnd,6,yes,any +hnd,6,yes,any hurry,0,no,any jump,100,yes,any kancho,0,no,hexen keen,0,no,doom +#kirin,500,yes,hexen lead,1500,yes,any -#lightning,0,no,any +lightning,0,no,any ligma,0,no,any love,10,yes,any +#marisa,0,no,doom #mashiro,0,no,any matryoshka,0,no,any mbf,0,no,doom @@ -72,33 +83,38 @@ oneguy,0,no,any onehp,10,yes,any onestanding,0,no,nothexen oopsie,0,no,any +#pachinko,0,no,any par,15,yes,doom parry,100,yes,any peace,0,no,nothexen -#plasma,30,yes,any +plasma,30,yes,any plush,10,yes,any puzzle,0,no,hexen rage,20,yes,any -#rail,16,yes,any +rail,16,yes,any reflect,20,yes,any refresh,30,yes,any -#roast,40,yes,any +roast,40,yes,any salt,0,no,any sanic,800,yes,any sekiro,0,no,any shame,0,no,any shock,30,yes,any +#shuffle,100,yes,any slayer,40,yes,doom slayer,20,yes,raven slemg,100,yes,any sneaky,10,yes,raven sneeze,20,yes,any -#spark,30,yes,any +spark,30,yes,any +#speen,60,yes,any step,30,yes,any stomp,40,yes,any sunny,15,yes,any +#tbd,0,no,doom tele,0,no,any tender,100,yes,any +#tennis,0,no,any thicc,100,yes,any thruwall,20,yes,any tornado,0,no,heretic @@ -107,4 +123,5 @@ travel,1000,yes,any untouchable,0,no,nothexen wantdie,0,no,any wave,0,no,any +#words,100,yes,any yeet,0,no,doom diff --git a/language.version b/language.version index dd00275b3..8cac0571d 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre \cu(Sat 26 Mar 21:53:04 CET 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre \cu(2022-03-26 21:53:04)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1 \cu(Sun 27 Mar 01:12:47 CET 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r1 \cu(2022-03-27 01:12:47)\c-"; diff --git a/menudef.txt b/menudef.txt index 7cdfaca39..29a9199ce 100644 --- a/menudef.txt +++ b/menudef.txt @@ -219,7 +219,7 @@ OptionMenu "SWWMOptionMenu" Option "$SWWM_SIMPLEFOG", "swwm_simplefog", "YesNo" Option "$SWWM_SHOTGIB", "swwm_shotgib", "YesNo" Option "$SWWM_STRICTUNTOUCHABLE", "swwm_strictuntouchable", "SWWMUntouchableStrictness" - //Option "$SWWM_SWAPWEAPONS", "swwm_swapweapons", "YesNo" // comment out until DLC1 + Option "$SWWM_SWAPWEAPONS", "swwm_swapweapons", "YesNo" // comment out until DLC1 StaticText " " StaticText "$SWWM_ITITLE", 1 Option "$SWWM_USETOPICKUP", "swwm_usetopickup", "YesNo" diff --git a/readme.txt b/readme.txt index e6b4036b4..954801b6f 100644 --- a/readme.txt +++ b/readme.txt @@ -43,7 +43,7 @@ Index of contents: 2.3. Armors 2.4. Health 2.5. Others - 2.6. DLC Weapon Set 1 + 2.6. DLC Weapon Set 2.6.1. Itamex Hammer 2.6.2. Plasma Blaster 2.6.3. Puntzer Beta @@ -335,7 +335,10 @@ very valuable. 2.6. DLC Weapon Set - - - - - - - - - - -Coming soon. But here's a tease. +An additional set of 10 weapons to spice things up. Note that you can only have +one of each in every slot, so make sure you pick the right options for the +battles ahead (or you could just disable that mechanic entirely, if you're the +kinda person who prefers to carry EVERYTHING). 2.6.1. Itamex Hammer diff --git a/zscript/items/swwm_ammospawn.zsc b/zscript/items/swwm_ammospawn.zsc index b17023be9..ac1fb0a39 100644 --- a/zscript/items/swwm_ammospawn.zsc +++ b/zscript/items/swwm_ammospawn.zsc @@ -49,8 +49,8 @@ Class SWWMShellAmmoSmall : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) - return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05Ammo3';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) + return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05Ammo3'; switch( Random[Replacements](0,9) ) { case 0: @@ -75,8 +75,8 @@ Class SWWMShellAmmoBig : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) - return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BigAmmo';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) + return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BigAmmo'; switch( Random[Replacements](0,17) ) { case 0: @@ -113,13 +113,13 @@ Class SWWMClipAmmoSmall : SWWMAmmoSpawner { if ( !Random[Replacements](0,4) ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenAmmo3':'SheenTinyAmmo';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) + return Random[Replacements](0,2)?'SheenAmmo3':'SheenTinyAmmo'; if ( notondemand || SWWMUtility.ItemExists('Eviscerator') ) return 'EvisceratorShell'; } - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) - return Random[Replacements](0,2)?'SMW05Ammo':'SMW05Ammo2';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) + return Random[Replacements](0,2)?'SMW05Ammo':'SMW05Ammo2'; return Random[Replacements](0,1)?'RedShell':'GreenShell'; } } @@ -129,8 +129,8 @@ Class SWWMClipAmmoBig : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenBigAmmo';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) + return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenBigAmmo'; return Random[Replacements](0,5)?'EvisceratorShell':Random[Replacements](0,2)?'EvisceratorShell2':'EvisceratorShell3'; } } @@ -140,8 +140,8 @@ Class SWWMBlastAmmoSmall : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenTinyAmmo';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) + return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenTinyAmmo'; return 'EvisceratorShell'; } } @@ -151,8 +151,8 @@ Class SWWMBlastAmmoBig : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenBigAmmo':'SheenSmallAmmo';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) + return Random[Replacements](0,2)?'SheenBigAmmo':'SheenSmallAmmo'; return Random[Replacements](0,2)?'EvisceratorShell':Random[Replacements](0,1)?'EvisceratorShell2':'EvisceratorShell3'; } } @@ -162,7 +162,7 @@ Class SWWMRocketAmmoSmall : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) return 'QuadravolAmmo';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) return 'QuadravolAmmo'; return Random[Replacements](0,2)?'HellblazerMissiles':'HellblazerCrackshots'; } } @@ -172,8 +172,8 @@ Class SWWMRocketAmmoBig : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) - return Random[Replacements](0,4)?'QuadravolAmmo2':'QuadravolAmmo3';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('Quadravol')) ) + return Random[Replacements](0,4)?'QuadravolAmmo2':'QuadravolAmmo3'; switch ( Random[Replacements](0,11) ) { case 0: @@ -201,18 +201,18 @@ Class SWWMCellAmmoSmall : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { - /*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('RayKhom') || SWWMUtility.ItemExists('GrandLance')) ) return 'RayBattery';*/ + if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('RayKhom')) ) return 'RayBattery'; if ( !Random[Replacements](0,2) ) { if ( !Random[Replacements](0,3) ) { - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RayKhom')) ) return 'RayBolt2';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RayKhom')) ) return 'RayBolt2'; if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return 'CandyGunBullets'; } - /*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return 'MisterGAmmo';*/ + if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return 'MisterGAmmo'; if ( notondemand || SWWMUtility.ItemExists('SilverBullet') ) return Random[Replacements](0,2)?'SilverBullets':'SilverBullets2'; } - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) return Random[Replacements](0,2)?'SparksterBAmmo':'SparksterRAmmo';*/ + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) return Random[Replacements](0,2)?'SparksterBAmmo':'SparksterRAmmo'; return 'SparkUnit'; } } @@ -224,27 +224,27 @@ Class SWWMCellAmmoBig : SWWMAmmoSpawner { if ( !Random[Replacements](0,3) ) { - //if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RafanKos')) && SWWMUtility.CheckNeedsItem('UltimateAmmo',true) && !SWWMUtility.ItemExists('UltimateAmmo',worldonly:true) && !SWWMUtility.ItemExists('RafanKos',worldonly:true) ) - // return 'UltimateAmmo'; + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('RafanKos')) && SWWMUtility.CheckNeedsItem('UltimateAmmo',true) && !SWWMUtility.ItemExists('UltimateAmmo',worldonly:true) && !SWWMUtility.ItemExists('RafanKos',worldonly:true) ) + return 'UltimateAmmo'; if ( (notondemand || SWWMUtility.ItemExists('Ynykron')) && SWWMUtility.CheckNeedsItem('YnykronAmmo',true) && !SWWMUtility.ItemExists('YnykronAmmo',worldonly:true) && !SWWMUtility.ItemExists('Ynykron',worldonly:true) ) return 'YnykronAmmo'; } - /*if ( Random[Replacements](0,1) ) + if ( Random[Replacements](0,1) ) { if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('MisterRifle')) ) return Random[Replacements](0,2)?'MisterRound5':'MisterAmmo'; if ( notondemand || SWWMUtility.ItemExists('RayKhom') ) return Random[Replacements](0,2)?'RayBolt5':'RayAmmo'; - }*/ + } if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('SilverBullet')) ) { if ( Random[Replacements](0,3) ) return Random[Replacements](0,2)?'SilverBullets_2':'SilverBullets2_2'; return Random[Replacements](0,2)?'SilverBulletAmmo':'SilverBulletAmmo2'; } if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return Random[Replacements](0,3)?'CandyGunBullets3':'CandyGunAmmo'; - /*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) + if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('ModernSparkster')) ) { if ( Random[Replacements](0,1) ) return Random[Replacements](0,2)?'SparksterBAmmo2':'SparksterBAmmo3'; return Random[Replacements](0,2)?'SparksterRAmmo2':'SparksterRAmmo3'; - }*/ + } return Random[Replacements](0,3)?'SparkUnit':'SparkUnit2'; } } diff --git a/zscript/menu/swwm_credits.zsc b/zscript/menu/swwm_credits.zsc index 6d2d59946..ace2e3834 100644 --- a/zscript/menu/swwm_credits.zsc +++ b/zscript/menu/swwm_credits.zsc @@ -172,7 +172,7 @@ Class SWWMCreditsMenu : GenericMenu cassets.Push(new("SWWMCreditsEntry").Init("Nash","WidePix")); cmusic.Push(new("SWWMCreditsEntry").Init("Teque","Traumatic State\nDragony\nHidden Tune #242\nHypercardish 1.1")); cmusic.Push(new("SWWMCreditsEntry").Init("BouncyTEM","Solitary Apprehension")); - cvoice.Push(new("SWWMCreditsEntry").Init("Vyolette","$SWWM_VOICENAME_DEFAULT")); + cvoice.Push(new("SWWMCreditsEntry").Init("Vyolette","$T_DEMOLITIONIST")); cfanart.Push(new("SWWMCreditsEntry").Init("Substance20 (@S20TBL)")); cfanart.Push(new("SWWMCreditsEntry").Init("Captain J (@Jho7835)")); cfanart.Push(new("SWWMCreditsEntry").Init("Redead-ITA")); diff --git a/zscript/menu/swwm_inter.zsc b/zscript/menu/swwm_inter.zsc index 565cf0cad..b760a61b3 100644 --- a/zscript/menu/swwm_inter.zsc +++ b/zscript/menu/swwm_inter.zsc @@ -120,14 +120,7 @@ Class SWWMStatScreen : StatusScreen abstract int maxtip = StringTable.Localize("$SWWM_NINTERTIP").ToInt(); Array ents; ents.Clear(); - for ( int i=1; i<=maxtip; i++ ) - { - // skip DLC tips for now - if ( (i >= 59) && (i <= 68) ) continue; - ents.Push(i); - } - // account for skipped dlc tips (important, will crash otherwise) - maxtip -= 10; + for ( int i=1; i<=maxtip; i++ ) ents.Push(i); if ( pdata.lasttip.Size() >= maxtip ) { // exclude last one, start over diff --git a/zscript/utility/swwm_utility.zsc b/zscript/utility/swwm_utility.zsc index 64d2efe6b..e0e59486a 100644 --- a/zscript/utility/swwm_utility.zsc +++ b/zscript/utility/swwm_utility.zsc @@ -2096,99 +2096,65 @@ Class SWWMUtility if ( ItemExists(a,mapstart:true) ) return b; return Random[Replacements](0,1)?a:b; } - static private Class PickTrio( Class a, Class b, Class c ) - { - if ( ItemExists(a,mapstart:true) ) - { - if ( ItemExists(b,mapstart:true) ) - return c; - return Random[Replacements](0,1)?b:c; - } - if ( ItemExists(b,mapstart:true) ) - { - if ( ItemExists(c,mapstart:true) ) - return a; - return Random[Replacements](0,1)?a:c; - } - if ( ItemExists(c,mapstart:true) ) - Random[Replacements](0,1)?a:b; - switch ( Random[Replacements](0,2) ) - { - case 0: - return a; - case 1: - return b; - } - return c; - } // melee weapons + extra slot 2 guns (50% chance) static Class PickSWWMSlot1() { // so the player can recover it if they decided to drop it in a previous map, or they didn't start with it if ( CheckNeedsItem('DeepImpact') ) return 'DeepImpact'; - bool hasmelee = (!CheckNeedsItem('PusherWeapon')/*||!CheckNeedsItem('ItamexHammer')*/); - bool hasallmelee = (!CheckNeedsItem('PusherWeapon')/*&&!CheckNeedsItem('ItamexHammer')*/); - bool gunexists = ItemExists('ExplodiumGun',worldonly:true)/*||ItemExists('PlasmaBlast',worldonly:true)*/; + bool hasmelee = (!CheckNeedsItem('PusherWeapon')||!CheckNeedsItem('ItamexHammer')); + bool hasallmelee = (!CheckNeedsItem('PusherWeapon')&&!CheckNeedsItem('ItamexHammer')); + bool gunexists = ItemExists('ExplodiumGun',worldonly:true)||ItemExists('PlasmaBlast',worldonly:true); // if the player already has a melee weapon, 50% chance to spawn either slot 2 weapon as long as one doesn't exist in the map already // if the player has ALL melee weapons (somehow), that chance becomes 100% if ( hasmelee && !gunexists && (hasallmelee || Random[Replacements](0,1)) ) return PickSWWMSlot2(); - //return PickPair('PusherWeapon','ItamexHammer'); - return 'PusherWeapon'; + return PickPair('PusherWeapon','ItamexHammer'); } // pistol spawn, pretty simple static Class PickSWWMSlot2() { - //return PickPair('ExplodiumGun','PlasmaBlast'); - return 'ExplodiumGun'; + return PickPair('ExplodiumGun','PlasmaBlast'); } // shotgun spawn static Class PickSWWMSlot3() { - //return PickPair('Spreadgun','PuntzerBeta'); - return 'Spreadgun'; + return PickPair('Spreadgun','PuntzerBeta'); } // super shotgun spawn static Class PickSWWMSlot4() { - //return PickPair('Wallbuster','PuntzerGamma'); - return 'Wallbuster'; + return PickPair('Wallbuster','PuntzerGamma'); } // chaingun spawn static Class PickSWWMSlot5() { - //return PickPair('Eviscerator','HeavyMahSheenGun'); - return 'Eviscerator'; + return PickPair('Eviscerator','HeavyMahSheenGun'); } // rocket launcher spawn static Class PickSWWMSlot6() { - //return PickPair('Hellblazer','Quadravol'); - return 'Hellblazer'; + return PickPair('Hellblazer','Quadravol'); } // first plasma rifle spawn static Class PickSWWMSlot7() { - //return PickPair('Sparkster','ModernSparkster'); - return 'Sparkster'; + return PickPair('Sparkster','ModernSparkster'); } // second plasma rifle spawn static Class PickSWWMSlot8() { - //return PickPair('SilverBullet','MisterRifle'); - return 'SilverBullet'; + return PickPair('SilverBullet','MisterRifle'); } // first bfg spawn static Class PickSWWMSlot9() { - //return PickPair('CandyGun','RayKhom'); - return 'CandyGun'; + return PickPair('CandyGun','RayKhom'); } // second bfg spawn (each weapon can only exist once) static Class PickSWWMSlot0( bool fallback = true ) { - /*if ( ItemExists('Ynykron',mapstart:true) ) + if ( ItemExists('Ynykron',mapstart:true) ) { if ( ItemExists('RafanKos',mapstart:true) ) return fallback?PickSWWMSlot9():null; @@ -2196,15 +2162,13 @@ Class SWWMUtility } if ( ItemExists('RafanKos',mapstart:true) ) return 'Ynykron'; - return Random[Replacements](0,1)?'Ynykron':'RafanKos';*/ - if ( ItemExists('Ynykron',mapstart:true) ) return fallback?PickSWWMSlot9():null; - return 'Ynykron'; + return Random[Replacements](0,1)?'Ynykron':'RafanKos'; } // either plasma rifle spawn static Class PickDoomSlot6() { - bool hasslot7 = (!CheckNeedsItem('Sparkster')/*||!CheckNeedsItem('ModernSparkster')*/); - bool hasslot8 = (!CheckNeedsItem('SilverBullet')/*||!CheckNeedsItem('MortalRifle')*/); + bool hasslot7 = (!CheckNeedsItem('Sparkster')||!CheckNeedsItem('ModernSparkster')); + bool hasslot8 = (!CheckNeedsItem('SilverBullet')||!CheckNeedsItem('MisterRifle')); // if the player already has a slot 7 weapon... if ( hasslot7 ) { @@ -2215,13 +2179,12 @@ Class SWWMUtility } // otherwise, always spawn a slot 7 weapon first return PickSWWMSlot7(); - } // either bfg spawn static Class PickDoomSlot7() { - bool hasslot9 = (!CheckNeedsItem('CandyGun')/*||!CheckNeedsItem('RayKhom')*/); - bool hasslot0 = (!CheckNeedsItem('Ynykron')/*||!CheckNeedsItem('RafanKos')*/); + bool hasslot9 = (!CheckNeedsItem('CandyGun')||!CheckNeedsItem('RayKhom')); + bool hasslot0 = (!CheckNeedsItem('Ynykron')||!CheckNeedsItem('RafanKos')); let rep = PickSWWMSlot0(false); // if the player already has a slot 9 weapon (and a slot 0 weapon can still spawn)... if ( hasslot9 && rep ) @@ -2239,8 +2202,8 @@ Class SWWMUtility { // always slot 3 after map start, prevents shotgun guys from dropping wallbusters, which is weird af if ( level.maptime ) return PickSWWMSlot3(); - bool hasslot3 = (!CheckNeedsItem('Spreadgun')/*||!CheckNeedsItem('PuntzerBeta')*/); - bool hasslot4 = (!CheckNeedsItem('Wallbuster')/*||!CheckNeedsItem('PuntzerGamma')*/); + bool hasslot3 = (!CheckNeedsItem('Spreadgun')||!CheckNeedsItem('PuntzerBeta')); + bool hasslot4 = (!CheckNeedsItem('Wallbuster')||!CheckNeedsItem('PuntzerGamma')); // if the player already has a slot 3 weapon... if ( hasslot3 ) {