Jump to content

ChebSkies: Extermination Day perfected and maxable, works with BDv22test3


Recommended Posts

I'm *still* working on this "hellfire update" -- I think I am about 70% done now.

Was delayed by a severe case of cold, then by realization my approach was unsustainable (had to redo everything from scratch).

I have imported what feels like half the BDv21 code into my project to edit classes in situ -- that "standalone BD fix" I am planning feels more like a full-fledged version now, say, BDv21-che.

Because of massive editing to code base, I also went to town on several bugs I was postponing for "some day later".

Share this post


Link to post

Done November 03, 2023:
    - general: this is the Hellfire update, Chebskies v 1.06
    - general: made the gore pieces lava-aware, any gore landing on lava now burns or carbonizes (this will be a part of my standalone BDv21 patch). It was a *ton* of work as it required me to hunt EVERY gore piece class in the BD code -- eyes, teeth, blood, meat chunks, meat chunks dripping from the ceiling, meat chunks sliding down walls, organs, guts, imp arms, caco horns and so on and so forth ad infinitum -- teaching them how to detect lava and how to react, which required lots of individual approach. Added new sprites for carbonized gore pieces and monsters: CARBU0..CARBY0. Mind you, this detection relies 100% on floor texture, unrelated to sector damage.
    - general: fixed a bug in my fix for the small fountain sound
    - general: found and fixed a bug with one of the arachnotron deaths (the brain torn off and crawling around) being invisible while it tumbles through the air before landing
    - general: fixed a bug in archvile death (the variant that results in a severed arm flying and one-armed archvile standing and crying in agony) only the arm remained while the archvile would vanish
    - general: fixed the severe BD bug with certain monsters (revenant, knight, baron) falling off ledges and into pits when you are out of their line of sight. This was *very* annoying in maps generated using Oblige 6 and was ruining EDAY as well.
    - general: fixed the knight's state machine being a weird mess. One side effect was him repeatedly roaring in rage when player was invisible. Now only flies into rage if detects target after some time spent searching for it. And forgets target properly.
    - general: changed burn death sequences for some variations of dead mancubus. There are now more cases where his weapon arm flies off instead of burning with the body
    - general: fixed the bug with immortal fatalized mancubus endlessly resurrecting himself and writhing in pain each time you walked through him. This was an esoteric pitfall of inheritance in object-oriented programming, a clever trick for player stepping on corpses backfired in this case.
    - general: restored the axe murder of arachnotron (guaranteed to cut the living brain off the chassis), was commented out
    - general: restored the rare arachnotron explosive death (with living brain flying off) by raising its probability from zero to 10%
    - general: fixed the axe labguy zombie not dropping his axe on many of his death variations. Which was vexing because this zombie is so very rare in normal play outside EDAY
    - general: recolored my Duke of Hell to be more distinct from barons. He is now monochrome black.
    - general: fixed the sprite scale on my edition of BD mummy: was too small
    - map 22: made your tank suffer massive damage if you try driving it across that lava lake (200 per second)
    - map 22: made the lava lake burn monsters (including NPC marines)
    - map 27: fixed black polygons showing far below in the skybox (were visible from the berserk secret)
    - map 31: rehauled the skybox, added a top layer with a huge mountain looming ahead. Reasons: 1. To match narrative with the next map, set on a mountaintop; 2. Map named "Peak of the Gods" did not have a *peak*, which was just wrong. The new skybox includes a low-flying cloud layer (similar to map 22 but transparent), the surrounding mountains are higher up so that they can actually be seen.
    - map 31: made the lava hurt monsters (29 fire damage per second). Now if some pinky falls in one of those inescapable pits or you kick an imp into one, they burn to death.
    - map 31: minor automap fixes
    - map 31: fixed the inacessible secret -- ASSUMING it broke due to the jumping height nerf. I raised the ledge you teleport to from the secret telepad (next to the secret backpack) by 16. Also rearranged some terrain making jumping around the top ways less of a chore and blocked jumping into skybox from there
    - map 31: marked two small ammo stashes along the top ways as secrets thus increasing the number of secrets from 5 to 7.
 Hint: that ledge with two revenants is actually a ledge with two revenants and a rocket launcher.
    - map 31: marked the megasphere as secret raising their number from 7 to 8. It was so obvious I kept missing the fact it is actually hidden.
    - map 31: maxability confirmed. 8/8 secrets reachable, 152/152 monsters killable. You'd probably have to harm yourself for perfect score as there are more ammo and health that you'd ever need. Secrets include: rocket launcher +ammo; rocket launcher; blue armor; megasphere; plasma gun; bfg; box of shells; super shotgun. This map could easily be beaten from a bare-assed start with an assault rifle.
    - map 50: shape and texturing correction for the lava moat edges
    - map 50: damage correction for the lava moat. Now kills the player quicker and pinkies burn properly instead of splattering
    - map 50: scale correction for the cloud wall
    - map 50: minor automap fixes
    - map 32: fixed the boss making his idle sound at twice the designed frequency (was a typo on my part)
    - map 32: moved the music change to earlier moment: not when the boss sees you but when the ground shakes. Music change is slow anyway.

 

 

I think my work is finally ready to pack that standalone "brutalv21che" patch I was going to make, but I will fall down and lie flat instead.

Screenshot_Doom_20231101_024350.png

Share this post


Link to post

While working on the next update, which focuses on maxability, I have discovered a very silly bug that ruins your kill count:

Some light special effects (notably, fuzzy reflections in shiny floors) are, for some reason, flagged as monsters -- which automatically adds them to the kill count thus making 100% kills impossible.

I will include a fix for this patching them all with

-COUNTKILL

.

 

Discovered this while testing map 03, killed everything that moves but found my count kill at 111/118. Hmm, I thought, what could those seven suspects could be...?

Breakable monitors? Nope.

Breakable cubicle walls? Nope.

Toilets in the bathroom? Nope.

IDDT cast twice showed the monster closet delightfully empty.

But then my eyes fell on the special effects floor portal area... With number of things in it suspiciously like SEVEN.
Patched it, restarted the game, entered the map... Yep, kill count 0/111.

Edited by chebmaster

Share this post


Link to post

Done November 07, 2023:
    - general: This is the Mars Maxima update, Chebskies v 1.07
    - general: maxability confirmed for maps 01..06, 49, 07..10.
    - general: maps polished to perfection: 01..06, 49, 07..10. I am playing each map from start to finish many times and correcting any issues I could notice. Aiming to reach gold status in two or three more updates.
    - general: removed a deprecated junk script file that got into the PK3 somehow and was causing all sorts of problems with the editor
    - general: fixed several minor bugs with my maggot-removal fixes that conflicted with the mass-rehauled code after the hellfire update
    - general: wrote a detailed walkthrough for maps 01..06, 49, 07..10. DO NOT READ. Because spoilers.
    - map 01: fixed ladder texture sticking too far up in the yard
    - map 01: general automap prettification
    - map 02: general automap prettification. Made the inacessible areas not show on automap.
    - map 02: marked the armor bonus pile as a secret, thus increasing their number from 5 to 6, and blocked the easy access to it from beyond the blue door (marked the small door as requiring "impossible" key). Now you can only access it the hard way.
    - map 02: upgraded the monster closet to my advanced design with 100% reliable deployment, for guaranteed maxability. A change in gameplay: those monsters deploy still sleeping because the old hearing tunnel is gone. Also, the pattern of their deployment has changed.
    - map 02: changed the exit elevator to a realistic elevator with sliding doors that makes a loud ding when it arrives
    - map 02: changed the terrain outside the hall with exit elevator: instead of a channel with nukage floor this is an outdoors area compatible with the next map
    - map 03: changed the starting elevator to a realistic elevator with sliding doors, matched its texturing to the previous map.
    - map 03: replaced the terrain visible outside the entrance hall with a sky portal with a copy of the same terrain from the previous map, with dead imps on balconies and on the ground. Now the map transition feels like you rode that elevator 512 map units down and are now on the lower floor of the same building.
    - map 03: fixed a horrible sky portal blunder in the outdoors area with bridges and satellite dishes that was causing FPS drop to 14..18 making the area unplayable. When upgrading the portal to linedef-based I forgot to remove the old portal anchor things, which caused who knows how much recursion in the upper layer rendering, probably, a bazillion times over. While fixing that, moved the opposite building from the area's geometry into the top layer, which necessitated some changes to its looks.
    - map 03: upgraded the monster closet to my advanced design with 100% reliable deployment, for guaranteed maxability. A change in gameplay: those monsters deploy still sleeping. Also, the pattern of their deployment has changed radically.
    - map 04: guarded one problematic ladder, blocking monsters from touching it: they would get stuck on it as if glued, twitching helplessly.
    - map 05: cleaned automap from random skybox lines not hidden for some reason
    - map 05: restored light flickering in one place where Mark forgot to convert it from the old Boom format to the Hexen format in the ancient times (was showing in the editor as unknown sector special 12)
    - map 05: fixed some walls not showing on the automap
    - map 05: fixed some air ducts requiring pressing crouch to climb in some places, also fixed texture alignment there
    - map 05: added "block monsters" to the air ducts openings. I don't know *how* that frakking imp managed to get in there, but hunting the last mob for 100% kills was FUN >:(
    - map 06: removed the secret flag from inacessible part of the map geometry that represents the next map (forgot to, when split the map into two)
    - map 06: marked one door requiring blue key with blue side panels (was annoyingly unmarked)
    - map 06: fixed many monitors in the computer rooms not breaking properly (were emitting glass shards with a sound of breaking glass but the screen texture wasn't changing). This was a primeval EDAY bug.
    - map 06: updated the post-exit arena decoration to match the changes to the next map
    - map 49: rehauled the skybox moving most surrounding buildings to a new top layer and adding much detail to it. Much lower now, roofs visible from up on the cargo containers, and better fitting the previous maps in style.
    - map 07: general automap prettification; automap unification (all bridges are highlighted with "1-sided" for better visibility)
    - map 07: added a breadcrumb trail of armor bonuses in the only place where railroading wasn't obvious enough
    - map 07: added a box of shells to the starting area. Reson: map becomes impossible from a fresh start if a grenade launcher spawns instead of rocket launcher because in such case the mancubi require much more rockets to kill resulting in you RUNNING OUT OF AMMO.
    - map 07: fixed small HOM effect in the exit vent fan and fixed texturing inside the vent
    - map 07: made the cave a bit darker (was too well lit)
    - map 08: made the most insanely, frustratingly, unfairly obscure secret of this whole megawad a tad less impossible by making it show as a (very hard to notice) irregularity on automap
    - map 08: made that one prop elevator (many of us I'm sure spent lots of time trying to figure how to access) blatantly jammed, on fire and full of rubble. Because it is a decoration never intended to be usable.
    - map 08: improved the infighting scripts to make mosters concentrate on each other more
    - map 08: fixed HOM effect behind the big fans' blades
    - map 08: fixed one big fan's shadow being too bright
    - map 08: replaced one insurmountable waist-high fence with one that could be jumped over
    - map 08: improved light effects in the smelter hall
    - map 08: marked one poorly hidden invulnerability sphere as a secret thus increasing their number from 4 to 5
    - map 08: replaced the second yellow key card under that crusher with a computer area map: it was meaningles, you cannot avoid the main yellow key area anyway because all return routes from the red key area pass though it.
    - map 08: replaced the exit door with sliding polyobject doors to match its appearance
    - map 08: fixed some textures in the elevator shafts
    - map 09: improved the soulsphere secret trigger for better reliability
    - map 09: made it so that the free plasma gun (without solving the secret) is only available on the easiest difficulty.
    - map 09: reworked lighting effect in the double corridor separated by specimen tanks. Now based on 3d floors, the wall above the lit opening is not lit, the ceiling above is dark as well.
    - map 09: upgraded the monster closets to my advanced design with 100% reliable deployment, for guaranteed maxability. The pattern of their deployment has changed as a result.
    - map 09: added sparks to the bfg secret's activation
    - map 09: moved the rocket launcher a little, it was sunk in that flower pot.
    - map 10: fixed a sub-pixel misalignment of the portal hall on the grid
    - map 10: upgraded the bosses' monster closet to my advanced design with 100% reliable deployment
    - map 10: copied the arrival hall from the next map and attached it to the portal as a sky portal. Also created a hellscape that shows in the portal when the bosses are about to appear. Shmuck bait: walk closer to examine.
    - map 10: reworked the portal texture into a better, flickering portal texture, red and blue colors flashing. Hope no one has epileptic seizure because of it... Just kidding: no such people could play BD anyway.
    - map 11: changed the portal texture to match
    - map 11: fixed a minor bug, two consoles had outdoor light color changing applied to them by mistake.

Screenshot_Doom_20231106_131344.png

Screenshot_Doom_20231107_004605.png

Screenshot_Doom_20231107_003256.png

Share this post


Link to post

While reworking map 19 into a *timed* mission (we all love timed missions and jumping puzzles, don't we?) I encountered something ridiculous:

If you pass a speed of *zero* to Polyobj_MoveTo() in your ACS, Zandronum immediately performs a crash-to-desktop. Probably, divides by zero or something.

Go figure.

I know zero speed is meaningless, but I was calculating it in a loop, matching the movement of the wall off rubble your train is about to crash into with the speed of walls and floor scrolling. If you stop the train in a  nick of time... Zandronum crashes as soon as your train comes to a stop.

Do you have any idea, how many scripts I checked, rechecked and modified trying to find a suspected runaway recursion that wasn't there? And how many tries it took?

 

Know this, kids: debugging is FUN! :D...

Share this post


Link to post

Done November 10, 2023:
    - general: This is the Derailed update, Chebskies v 1.08
    - general: maxability confirmed for map 19.
    - general: map polished to perfection: 19.
    - general: added map 19 to the walkthrough.
    - general: added new sounds: a moving train sound TRAINOTH; a groaning of big metal object being crushed in 4 variations misc/traincrush; more elevator door stop sound variations to elevator door stop sound misc/elevator_door inceasing their number from 4 to 8; a sliding door sound KYDOOR01
    - map 19: fixed a bug: the train sound source was marked as a monster thus preventing 100% kills
    - map 19: removed several leftover monsters from Mark's scratchpad areas with test versions of train cars that were making 100% kils inachievable.    
    - map 19: changed all train side doors from solid doors to doors with windows in them
    - map 19: changed all doors between train cars from normal doom doors to double sliding doors for more fun.
    - map 19: corrected texture alignment in derailed cars standing at an angle (the ceiling lights were particularly broken)
    - map 19: added trains incoming down the right track as you enter the platform at regular intervals (of course it's the same train, looping). There is no invisible wall at the platform edge anymore, you can fall down to the track and be splattered by this train, yay.
    - map 19: turned it into a *timed* mission (countdown is displayed like boss health) with no one but two consecutive gauntlets forcing you to fight extremely recklessly. First, the train you ride now crashes into a collapsed tunnel and IMPLODES until you go grab the blue key and backtrack (in 2:15 on UV). Then, just as you exit the train, a following train gives you about thirty seconds (on UV) to get through the monsters of be crushed together with them.
    - map 19: fixed some rubble in the second half of the map, some specimens were very annoying to fight around because their hitbox is much larger than their sprite.

 

Screenshot: the absolute limit of what Zandronum could do. A moving train you can interact with (splat!). The engine still can't do horizontal surfaces so the upper and lower edges of the windows are faked by using solid color areas on walls stretching up and down.

This train also glitches when you load a save because the ACS function PolyWait() fires instantly thinking the moving polyobject has reached its destination. In this case, it caused the train to vanish and cycle back to the start.

Screenshot_Doom_20231110_220029.png.04041d05301649f20765512fe1638c46.png

 

Screenshot: there is light at the end of this tunnel... Waitaminute!

Screenshot_Doom_20231110_073840.png.d5bedf922c8cdc0c545c270adf871ffe.png

 

Screenshot: too slow, gg. You were crushed when your train imploded:

Screenshot_Doom_20231110_213321.png.544f9437aa3594ef4a1e11609b63e86c.png

Share this post


Link to post

Done November 13, 2023:
    - general: this is the Mini Maxing update, Chebskies v 1.09
    - general: maxability confirmed for maps 11, 12, 13
    - general: maps polished to perfection: 11, 12, 13, 19.
    - general: fixed typos in the walkthrough    
    - general: added maps 11, 12, 13 to the walkthrough.    
    - map 11: fixed misaligned texture on the outside wall
    - map 11: fixed outside fog not applied to the control tower's doorframe
    - map 11: made the first cyberdemon deaf. Reason: he tended to come near the entrance if you did the reasonable thing and fought the cacoes from the safety of the doorframe. Which, in turn, made him a sitting duck due to terrain: he couldn't hit you while you could cheese him with assault rifle headshots.
    - map 12: fixed a gameplay issue, you can no longer wake monsters from that notorious switch under the power line tower. You have to exit the blue door before they could hear your shots. Reason: was still too easy to make crowding monsters infight as they gathered under the fence. But could not block with a line, that would block cacoes from going over fences.
    - map 12: fixed a monster accessibility problem, a step in the terrain was too steeep for them
    - map 12: added sound propagation boundaries and removed the deaf flag from monsters in one of the ambushes. Reason: they were easy pickings one by one. Now they wake all at once - but only when you reach the ambush.
    - map 12: fixed a bug with a bogus secret that could never be achieved preventing maxability
    - map 12: unmarked two secrets on the trucks (trivialized by my modifications to the cabs) thus leaving this map with only two good hard secrets
    - map 12: fixed one zombieman who could fall through his watchtower's floor or get stuck in it. Also serves as a nasty surprise ambush since he is now only visible (and notices you) from the most inconvenient angle.
    - map 12: replaced two boxes of rockets with a rocket launcher: this map was brutally starved of weapons if played from a fresh start.
    - map 12: fixed some awkward edges between terrain and sky
    - map 12: general automap prettification
    - map 12: made fences show on automap as impassable -- now the automap is not useles anymore for figuring where to go
    - map 12: improved lighting of the hole in the cave roof
    - map 12: fixed the one-texel crack between the watchtower windows and roof
    - map 12: fixed the smoke above the suspicious minivan being too dark
    - map 12: renamed the map from "Return to Earth" to "Quiet. Too quiet.". Reason: the old name was a leftower from early HESP where it was really the first map on Earth, you coming out of the portal in the wilderness instead of the air base. Not true now.
    - map 12: fixed armor bonus breadcrumbs stretching through impassable terrain
    - map 12: fixed light falling through the gate as it opens illuminating upwards and the ceiling
    - map 13: marked the computer area map in the bathroom as a secret
    - map 13: marked the plasma gun in the very dark room as a secret
    - map 13: made the monsters crushed by the train in the outro not count towards kill count.
    - map 13: fixed the red light emanating from the red button (broke due to conversion to UDMF, all such lights require manual conversion)
    - map 13: uniformity fix, changed the elevator in the sewer from a classic doom-style elevator to one controlled via buttons.
    - map 19: fixed misaligned textures on ceiling lights
    - map 19: replaced messed up texturing of the outside of the train with uniform black (never seen normally, but that pesky 3d person camera *loves* clipping through walls)
    - map 47: added a secret exit (requires all 3 keys) that leads to map 48 - thus avoiding skipping a map (previously you only could do ONE of them per run, either 47 or 48). Also serves as a red herring to the purpose of the keys, distracting from the *hidden* unmaker that also requires all keys. Marked that secret exit as a secret.
    - map 47: fixed a broken geometry near the soulsphere secret that was resulting in some HOM cracks
    - map 47: modified the skybox to make the castle design uniform across maps 23, 47 and 48
    - map 48: added alternate player start activated by coming from map 47, easy mode (the yellow key teleports there making the stash immediately available)
    - map 48: changed one teleporting monster closet to manually teleporting monsters by script, for guaranteed maxability
    - map 48: added one "block monsters" line to the arena to prevent them crowding and choking the bridge if you manage to leave without killing them all
    - map 48: moved the exit sign to the actual exit.

Share this post


Link to post

I.. have no words. I play BD *for ages*, since 2016 at least - but I nerver saw nor played in a mech. Which was there from the start, very polished and perfectly balanced (it's a mega glass cannon with measly 500 HP that shreds a cyberdemon in one second and dies to cyberdemon in one second unless you circle-strafe). I am convinced this would even work in multiplayer deathmatch, so well balanced it is.

 

And it is NEVER USED ANYWHERE! Arrgh.

 

In short, I stuck one in the map that fits it best, map 18. Go hump the red door building in the side alley behind it.

Also added motorcycles to several large maps. Because why the heck not.

 

Done November 15, 2023:
    - general: this is the Bite-sized Maxing update, Chebskies v 1.10. Aaaand... This project will probably slow to a crawl: Vacation ending, new horizons waiting at work. Just as I hit a stretch of truly gargantuan maps (17,18,20).
    - general: added several antenna sprites. Reason: those communication towers everywhere... wre shamefully bare.
    - general: changed the purple demon rune to count towards item count when used as a placeable (which I do in several maps). Changed the pickup sound to dramatic chant. Made its pickup message localizable.
    - general: added golden soulsphere (+75HP, up to 200; +75 green armor, up to 150) and pink soulsphere (+75HP up to 150) with unique pickup sounds. Reason: secrets rebalancing. Sometimes soulsphere is too little and megasphere is too much (and the purple haxx sphere replacing the demon rune isn't really weaker than megasphere, it's simply different).
    - general: maxability confirmed for maps 14, 15, 16
    - general: maps polished to perfection: 14, 15, 16
    - general: added maps 14, 15, 16 to the walkthrough.
    - map 13: added antenna sprites to comm towers
    - map 13: recompiled the skybox cubemap using a hires city image from BDv21 skies
    - map 13: added a motorcycle. Mark put so much effort into it and it is never used! The only thing left to add is the mecha...
    - map 14: moved the skybox to the other side of the main geometry. Reason: the sounds of fighter jets flying by were coming from wrond direction.
    - map 14: changed pedestrian zebras and road center lines to baked-in textures to reduce geometry
    - map 14: fixed texturing on the broken ends of bridge
    - map 14: created a simple top layer, moved the power line and one communication tower there and added a couple tall buildings and a set of chimneys. Very basic but creates great illusion of surrounding landscape.
    - map 14: fixed texturing on the green brick building, made the building two stories taller in the top layer and placed a communication tower on top. Now seen from everywhere.
    - map 14: upgraded all communication towers with antenna sprites
    - map 14: added a motorcycle.
    - map 14: upgraded most fences from impassable to walkable + shootable midtex. Also fixed one such as not projectile-shootable.
    - map 14: reverted one truck to fender-lecc model, recolored it gray and re-marked the plasma on top of it as a secret
    - map 14: marked that pile of armor bonuses in that completely unremarkable side street as a secret. It was all too easy to overlook and then wonder why isn't your item count 100% and why haven't you perfected this map.
    - map 14: marked the backpack on that shelf as a secret. I have completely missed it while playtesting (beat this map about 30 times to iron all kinks out) but backpacks are Serious Business if you play from a fresh start.
    - map 14: fixed a jumping puzzle that (presumably) broke due to jumping height nerf (the computer area map ONLY becoming accessible from the exit, making it useles) and marked it as a secret, thus increasing their number to 9.
    - map 14: upgraded the skybox replacing the texture from DooM2 sky with hires one from BDv21 skies
    - map 15: created a simple top layer, moved some buildings there and added a cliff with a tall comm mast on top.
    - map 15: upgraded all communication towers with antenna sprites
    - map 15: disabled the fug the arachnotrons accompanying the spider mastermind (not present at any difficulty level now). Mark was in the right when he disabled them and I was wrong when I re-enabled. Were turning the mastermind fight into a lown show. Not anymore.
    - map 15: marked the shotgun in the starting room as a secret thus increasing their numbet to 2.
    - map 15: added minuscule fire damage to the burning buses' roof
    - map 15: recompiled the skybox cubemap using a hires city image from BDv21 skies
    - map 16: recompiled the skybox cubemap using a hires city image from BDv21 skies
    - map 16: fixed the empty secret near the start by stuffing it with rocket boxes
    - map 16: changed the hardest secret of this map replacing the berserk with a golden soulsphere
    - map 16: added antenna sprites to comm towers
    - map 16: upgraded the monster closet to my advanced design with 100% reliable deployment, for guaranteed maxability.
    - map 16: changed pedestrian zebras from geometry to textures and added some road markings
    - map 16: fixed a funny blunder where the bridge did not have a sidewalk, zebras leading into to canal fence.
    - map 16: fixed sky showing through bottom surface of some vents
    - map 16: huge work fixing shadows, were messed up and not matching the narrative told by the skybox (a wide gap into daylight in a black wall of smoke). Reworked them, also made them deeper
    - map 16: fixed a messed up couch cushion in one of the rooms
    - map 18: added two motorcycles
    - map 18: added a secret mech. That's right, folks: Mark had created not only tanks but also a huge humanoid robot to stomp demons. And it was never used anywhere!
    - map 19: fixed a blunder stemming from long and evolutionary development of these maps: there were windows into clear sky inside the subway station's hall... while in the next map you emerge from the base of a tall building surrounded by scyscrapers. I simply changed those sky windows to ceiling lights.
    - map 19: fixed texture alignment on the tiled walls in the hall
    - map 19: added a simplistic top layer, only visible through one hole in the tunnel roof (a dumbed down piece of map 20 with tall buildings surrounding the hole)
    - map 19: fixed a bug, player 4 start was stuck in a wall

 

 

Screenshot_Doom_20231114_034143.png

Screenshot_Doom_20231115_185431.png

Share this post


Link to post

Done November 18, 2023:
    - general: this is the Vile update, Chebskies v 1.11.
    - general: discovered and fixed a bug with archviles, spider masterminds and evil marines (who become ss nazis on wolfenstein maps) losing their TID thus breaking any maps where scripting relied on it. They were calling poorly coded script 177 which changed their TID in the process of detecting wolfenstein. I had to recompile that library (finally learned to use standalone scripts compiler!) and include it in my pk3 -- see ACS\DYNAMICLEV.o (source code SCRIPTS\DYNAMICLEV.txt)
    - general: discovered another BDv21 bug, will fix in the next update: demon strength rune and invisibility dropped by spectres *count towards iterms count!* This is unacceptable, they could easily drop in inaccessible locations ruining your maxing run!
    - general: made MG42 a placeable, (originally bfg spawner becomes it if placed on specific wolfenstein textures and that is all)
    - general: made MG42 ammo box a placeable (intended to be included in secrets) and removed +20 MG42 ammo from backpacks (originally, you get full 600 ammo from picking the machinegun itself but it only recharges via backpacks)
    - general: maxability confirmed for map 48
    - general: map polished to perfection: 48
    - general: added map 48 to the walkthrough.
    - map 48: added some MG42 ammo to the loot
    - map 48: replaced purple sphere in one of the secrets with a golden soulsphere
    - map 48: moved the loot to the platform the archvile loiters on
    - map 48: changed the platform from grate to ice so that the archvile can see and attack you but you can't harm him
    - map 48: changed the former reward room's bars from yellow to red
    - map 48: made the double blue + red button that formerly lowered the yellow key holder open the bars former reward room's bars instead
    - map 48: changed the reward pedestal into a button that lowers the yellow key holder
    - map 48: added a yellow door that leads to the monster shelf in the arena (to the left of the exit, where imps loiter initially). Added a button there that lowers the loot platform but also initiates round two: lowers the bridges, raises the bars to block the tower entrance, closes the yellow door (not openable from this side), resets the central button and makes two more buttons available, teleports the archvile in, teleports a second archvile on UV, theleports a third archvile from the blue key area who may not be dead yet in case of an alt-start with yellow key
    - map 48: moved purple sphere in the arena from the floor in front of the central button to the top of the column -- you get there by teleporting from the moat of boiling blood.
    - map 48: rearranged and modified the arena: this was a very old map, after all, designed without the flying kick in mind. Which sequence-breaks the too-short bridges easily. Now the far side has a much wider moat with a longer bridge and the near side is sloped down, with bridge being part steps. Also removed teleporters on the near side: you could easily jump onto the edge instead.
    - map 48: remade the arena bridges into 3d floors by necessity (the ACS scripting language lacks specific action  special, floor lower to lowest + copy floor texture and sector special, required for the old bridge to function properly)
    - map 48: upgraded the monster closets to my advanced design with 100% reliable deployment, for guaranteed maxability.
    - map 48: changed the arena by moving *all* monsters and *all* items into teleporting closets. Now it is empty until you press that button.
    - map 48: fixed one of the doors incorrectly marked on the automap as requiring the blue key
    - map 48: optimized the top layer sky portal linking
    - map 48: made the ble armor secret deeper for guaranteed maxability: was possible to pick the armor up without registering the secret
    - map 48: retextured some bars and doors to make orienting easier (this map's hub hall is too symmetrical) and added "this opens elsewhere" to doors that opens elsewhere
    - map 48: made the southernmost doors openable from the other side in case the player sequence-breaks by destroying the bodies on sticks and falling down outside. This was a piece of really ancient map not designed with many modern BD features in mind!

Share this post


Link to post

P.S. The current state:

 

The list of maps to be guaranteed maxable:
    01..06, 49, 07..16, 19, 48, 50
    
The list of maps to be checked (possibly not maxable or with other issues):
    17, 18, 40..42, 20..23, 47, 24..31, 32

 

The final sequence of maps (I'm NOT renumbering them into order because reasons):

    01..06, 49, 07..18, 40 (secret), 41 (secret secret), 42 (secret secret secret), 19..23, 47 (secret), 48 (regular from 23, secret secret from 47), 24..31, 50, 32 (the final boss)

Share this post


Link to post

Dev log: I think I am near the confirmation that map 17 is maxable.

Still a colossal pain, both for tester and for the players wanting to max it. Because it contains dead end rooms with monsters sleeeping in there forever, even some *literal* monster closets that you have to open by hand. Ten detailed houses with labyrinthine floor plans and secret nooks, with fenced yards around them... And a lot of *deaf* zombies.

 

The true horror, my friends, is that most BD monsters, after they lose you, begin *wandering*. Randomly. >:( So those zombies could end up *anywhere*, and spinning your minigun is useless because, deaf ambushers.

You will FEEL the pain of hunting "that last enemy". Agonizing pain.

 

On the plus side, while hunting for a bug that wasn't there, I've found a real bug: zombie tanks counted as two monsters, and two kills. One for the hull and one for the turret :D

 

Also, the archvile is such a chad monster who COULD that you should never try deploying them using my advanced monster closets. The vile never tires, never slows down and keeps moving, overcoming the closet's pushing force out of sheer SPITE towards all mortals, including the map developer. An awake archvile is never gets deployed. I had to get creative for map 48, teleporting them into a space *surrounded* by a ring of a door and making *all* walls of the closet "teleport when monster bumps". Damn prima donnas demanding special treatment.

Share this post


Link to post

Dev log: while applying my new plethora of sound effects to Mars maps, I made a detour adding safety cage and sliding doors to the cargo elevators in map 04, found an awesome new method of coding elevator doors, much better than my old one in map 18, aaaand... Spent hours debugging the reason why my new awesome doors were working awesomely but IN UTTER SILENCE

Guess what? There's a bug in the game engine: https://forum.zdoom.org/viewtopic.php?p=1144979#p1144979

 

Had to get my hands dirty and code a (hacky) replacement for the built-in function:

 

function int PolyMoveToSpotWithSound (int polynum, int speed, int spottid) {
	// there is a bug in Polyobj_MoveTo() and Polyobj_MoveToSpot(): polyobject does not make any sounds

	Polyobj_Stop(polynum);
	int dx = GetActorX(spottid) - GetPolyobjX(polynum);
	int dy = GetActorY(spottid) - GetPolyobjY(polynum);
	int dxi = dx / 1.0; //1.0 is 65536
	int dyi = dy / 1.0;
	int bangle;
	int dist;
	if (dxi || dyi) {
		if (!dxi) {
			// Most cases are along axes. By avoiding angle calculations
			//   (byte angle's precision is shit) we avoid the poly
			//   wobbling along the other axis +/- 1 map unit like a turd in the surf.
			// Sure, repeated moves are auto-correcting, but that +/- one map unit still looks ugly.
			if (dyi < 0) {
				dist = -dyi;
				bangle = 192; // south
			} else {
				dist = dyi;
				bangle = 64; // north
			}
		} else {
			if (!dyi) {
				if (dxi < 0) {
					dist = -dxi;
					bangle = 128; // west
				} else {
					dist = dxi;
					bangle = 0; // east
				}
			} else {
				// really calculate the angle and stuff
				bangle = VectorAngle(dx, dy) / 256; // oh the discretization, the horror :((((
				dist = VectorLength(dxi, dyi);
			}
		}
		Polyobj_Move(polynum, speed, bangle, dist);
	}
	return FALSE;
}

 

Now the doors rattle properly:

 

Screenshot_Doom_20231123_215130.png.8c5dee47a8c2df41c2e8de97cc1f3145.png

 

 

Also, if you make a typo in SNDINFO, specifically a non-closed $random <sound> { ..sound list.. } you get NO error messages, parser just swallows the rest down to the end of the file for that random list and doesn't even complain about the missing closing curly bracket, the cheeky git. The definitions below your typo are just silently awol >:(

Share this post


Link to post

Dev log:

 

The next release may take some time, because the current format (a pk3 that patches two other pk3s) grew unmanageable and very bad for code quality and stability.

I am reformatting it by merging my bugfixes into a fully standalone version of Brutal Doom, by editing Mark's sources (i've already done so) and merging the methods of my descendant bugfix classes into the base BD classes. This should reduce the class menagerie and stop GZDoom Builder from screaming in pain every time it parses my resources.

 

I also added a bazillion sound effects and ambient sounds, edited Mars maps again (elevators... sliding doors...) and that requires a *very* thorough re-checking, which is only about halfway done yet (01..03 , 49, 07), with many maps still pending or being tweaked (04..06, 08..10).

 

Every time I think i am done with a map I went a thousand times over, I find a new bug (case in point: the double-sided breakable fan in map 01 was actually a hack holding together with duct tape and prayers -- hello, another detour into research of new methods of making reliable breakable surfaces)

 

I hope to finish this year, if nothing drastic happens.

 

On the plus side, a fully standalone, fixed BD v21che_gold seems within reach.

 

Share this post


Link to post

P.S. Integrating code took much less time than I feared - and it even seems working right off the bat!.
Hereby I upload this: http://chebmaster.com/downloads/chebskies/brutalv21che-2023-11-26-BETA.pk3

(I heard Chrome refuses opening plain http links nowadays, you can use a retro browser to download it, e.g. PaleMoon - since I am STILL too lazy to fix the encryption on my server)

 

UPD: fixed a couple nasty typos (classes double-defined). Re-uploaded with the same name.

 

Use this BDv21che at your own risk because beta: did not test much, only made sure DooM 2 runs without crashing.

Do not try this in combination with the most recent available chebskies: they would conflict horribly.

 

The real chebskies update is still at least a week of playtesting away.

 

    - general: fixed my version of BD PK3 removing duplicate lumps
    - general: fixed bugs in my bug fixes (some classes were replaced several times by different bug fixes)
    - general: integrated all my BDV21 bug fixes into a standalone BD PK3 (v21che)
    - general: fixed BDv21 bug with demon strength rune and the invisibility dropped by spectres counting towards item count
    - general: fixed BDv21 bug with the enemy tank counting as two monsters and two kills (thechnically, the hull and the turret *are* two separate monsters, the hull roaming and the turret being warped to it with each animation frame).
    - general: fixed BDv21... let's call it a bug, where revolver's alt fire was unloading and reloading with different ammo (shotgun shells / rifle bullets). A cool idea but conflicting with player's reflexes to aim with iron sights. "Oops, I unloaded it again and got eaten". I changed the revolver to do this on "special action/dual wield" in stead. The animation is a bit wonky, will address that later.
    - general: fixed BDv21 bug with fire deaths trying to play a missing sound (Mark removed it since v20 because it was really ill fitting). I crafted a replacement crackling sound for these
    - general: fixed a bug in my revenant restoration: his dumb rockets were becoming homing if underwater!
    - general: made the revenant missile launcher's primary fire seeking fireballs instead of homing rockets nefring their fire rate 3 times while making the alt fire dumb rocket spam fire in a volleys of 4 rockets at the cost of one ammo) The endless rocket spam (400 rockets, bro!) is perfectly balanced by impediment to your dodging and the risk of monsters rishing you; you cannot stop firing until it fired all 4 rockets in a volley. If you turn around or duck behind a wall or a pinkie gets in your face... BOOM.

 

Edited by chebmaster
quick fix

Share this post


Link to post
On 7/5/2023 at 10:38 AM, chebmaster said:

The creator had last updated years ago, his masterwork lays unfinished. He may or maybe not have burned out, be busy making a game of his own, or be finishing EDAY right now with stuff a thousand times better than I do. We may never know since doom-related forums had banned him a decade ago for <reasons>. What an overreaction. (I can totally see myself in his place)

you do know he's active on here, right? he's not banned

Share this post


Link to post

You know I can never drop this, the sunken cost fallacy has me firmly in its clutches. I will rip imperfections and tear bugs until it is done.

 

...anyway. Today was a great day. Things left to do before release:

 

1. Apply my new ambient and door sounds to maps 11..13 (is as easy as sowing them with appropriate things -- i am NOT going to change them in any way, unlike the ten Mars maps)

2. Playtest maps 17, 18 and 20, confirming maxability and absence of bugs.

Edited by chebmaster
my bad, maps 14 & 16 already done and 15 has no doors to upgrade

Share this post


Link to post

I have yet to comment in this thread, mainly just because it's so frequently updated, I simply just can't keep up and offer quality feedback. I do want to say though, thank you very much for all the work you've put into this. You're an absolute machine and what you've done so far is beyond amazing. I appreciate it greatly. Looking forward to your finished version of Brutalv21-che as well to say the least.

Share this post


Link to post
13 hours ago, Shulbocka said:

You're an absolute machine and what you've done so far is beyond amazing.

Merely what happens to a man who suddenly realizes his own mortality and decides to live each day as if it was his last, so that if he dies tomorrow he dies with no regrets. Well, realistically, with sufficiently minimized regrets. As I said, three real close calls in the span of one year... Put things in perspective.

 

This... Year? -- I think it was a year -- was amazing, I seriously surprised myself. Coding for Zandronum, rather than GZDoom... Let's say, I have newfound RESPECT for Sergeant Mark IV: doing such amazing things while all you have are crap and sticks and faulty/missing documentation, with your only tool being a stone axe... I was first simply amazed how much could be done when you have so little but apply it creatively. Then aped after him. Then learned from him - and, dare I say, may even have surpassed Mark-sensei in some areas.

 

This insane level of focus has its downsides, of course. All my fanfiction stories are hanging in limbo, my habitat resembles pigsty after bombardment and my desk is littered with things I piled there temporarily in April to get sorted an hour later (my cats approve, tho).

 

I am currently running out of steam: I am dead tired of this mode, and new projects at work demand -- BUT I have gained so much momentum, have learned SO MUCH, that I could easily finish polishing this thing up while simply coasting and chilling. There are no more new techniques to research, no more features to add. Two thirds of the maps are DONE... These final touching steps I can do in my sleep (and will, likely, do in the evenings when my brain is already off-line).

 

Two updates remaining after the current one (not counting low-probability sudden bugfixes): the Enigma update dealing with the four secret maps (three of which I haven't touched yet), and the Inferno update dealing with the thirteen Hell maps (most of which are done anyway).

 

ALL my modifications, both the code and the maps, are literally littered with comments, sometimes explaining, sometimes even ranting at length. Because  my intent from the very beginning was to people grab resources I made, study and copy the code I made, as working samples or inspiration, because there are so many things that could be done with Zandronum 3.0 but no one knows about because documentation is shit, wikis are woefully incomplete or describe things as they are in GZDoom instead.

 

P.S. Map 17: aced. Maxable. Also fixed an extremely rare and extremely stupid bug with the tank boss getting stuck in a monster closet and crushing its population. *YAWN*. 18 and 20 to go -- two more evenings and I'm ready to upload.

Edited by chebmaster

Share this post


Link to post

That idiotic "same as type 0" for type 4 in https://zdoom.org/wiki/Thing_Hate  makes me see red.

Browsing through Zandronum's and GZDoom's source code (and those are nearly identical, only differing in Zandronum commanding to transmit some state changes over network in multiplayer) reveals that that wiki page is total, despicable BS.

 

type 4: *if* hatee TID is given, hunt those things like a super persistent predator ignoring line of sight but also aggro at players who come into line of sight. Meaning it will behave like a normal monster after it runs of things with given hatee TID to hunt (who are shootable, not dormant and with health above zero)

Honestly >:(

 

Will fix several scripts now. Adding the following comment to them:

 

Quote

    // type 0: only hate *one* specific thing (If TID is given,
    //   willl hate the first thing with this TID the iterator finds,
    //   but nothing more - doesn't change the hater's reaction to
    //   any other things this TID)
    // types 1..6: if TID is given, hate *all* things with this TID
    //   also forces to forget current target and last enemy
    //   if their TID doesn't match -- i.e. it force-switches target.
    // types 2,4,6: no sight check (super persistent predator)
    // types 1,2: ignore players unless attacked by them
    // types 3,4: aggro also at players that come into LOS
    // types 5,6: ignore players attacks, do not aggro

 

 

Share this post


Link to post

Done November 30, 2023:
    - general: this is the Terra Maximus update, Chebskies v 1.12.
    - general: changed the project's composition. Now includes a fully functional Brutal Doom v 21che with all fixes embedded internally - and chebskies.pk3 force-loads the appropriate version of it, not the original BD v21 . The final form will most likely be modified BD + modified EDAY incorporating all my modifications, with no separate chebskies.pk3
    - general: fixed my version of BD PK3 removing duplicate lumps
    - general: fixed bugs in my bug fixes (some classes were replaced several times by different bug fixes)
    - general: integrated all my BDV21 bug fixes into a standalone BD PK3 (v21che). A sad day for download sizes because BD weight 83 megabytes while all my modifications combined weigh only 0.7
    - general: fixed BDv21 bug with demon strength rune and the invisibility dropped by spectres counting towards item count
    - general: fixed BDv21 bug with the enemy tank counting as two monsters and two kills (thechnically, the hull and the turret *are* two separate monsters, the hull roaming and the turret being warped to it with each animation frame).
    - general: fixed BDv21... let's call it a bug, where revolver's alt fire was unloading and reloading with different ammo (shotgun shells / rifle bullets). A cool idea but conflicting with player's reflexes to aim with iron sights. "Oops, I unloaded it again and got eaten". I changed the revolver to do this on "special action/dual wield" in stead. The animation is a bit wonky, will address that later.
    - general: fixed BDv21 bug with fire deaths trying to play a missing sound (Mark removed it since v20 because it was really ill fitting). I crafted a replacement crackling sound for these
    - general: fixed a bug in my revenant restoration: his dumb missiles were becoming homing if underwater!
    - general: made the revenant missile launcher's primary fire seeking fireballs instead of homing rockets nefring their fire rate 3 times while making the alt fire dumb rocket spam fire in a volleys of 4 rockets at the cost of one ammo) The endless rocket spam (400 rockets, bro!) is perfectly balanced by impediment to your dodging and the risk of monsters rishing you; you cannot stop firing until it fired all 4 rockets in a volley. If you turn around or duck behind a wall or a pinkie gets in your face... BOOM.
    - general fixed my friendly fire fix missing baron's death by being killed by a friendly tank registering as generic instead of explosive
    - general: fixed the golden soulsphere using blue glow instead of yellow
    - general: added helluvalot of new sound sequences, to be used from now on and applied to all maps I perfected prior and used for later, to make all doors and elevators in hell sound radically different. Rolling door remade anew; +heavy rolling door; + eday sci fi door; + skulltag door on sounds pilfered from skulltag; + wooden door ; + extra creaky wooden door; + grinding stone ; collapsing ceiling platform sound remade anew; rattling hell elevator 1; rattling hell elevator 2; heavy metal door stops with a splash; industrial elevator; rolling door always stops with a slam; bassy low-pitch variation of EDAY scifi door; locker door.
    - general: added new ambient sound sources: server humming; large transformer humming and crackling; reactor in map 06 making sci-fi vroom vroom; water gurgling in pipes; steam hissing in pipes;  EDAY waterfall1 but short ranged; EDAY waterfall2 but short ranged; a batery of fans running (the 6-fan jumppad in map 06); big murderfan spinning; small breakable fan spinning; fireplace crackling; big fire raging
    - general: added even more antennas, appropriate for Mars.
    - general: added a thrice faster animation for the breakable small fan texture
    - general: reworked the mechanics of breaking fans: all existing methods were ill suitable for *double-sided* fans like the one in map 01, failing in one way and another. Which became too noticeable when I added sounds to those fans. Now my project has a LOADACS lump :D. Also learned (by trial and error, no documentation anywhere) how to pass actor arguments to ACS_Execute() from DECORATE. You simply wtite "args[4]" or whatever number you use.
    - general: maps re-checked: 01..06, 49, 07..10 confirming playability and maxability after upgrading, by playtesting until my brain started leaking out of my nostrils
    - general: maxability confirmed for maps 17, 18, *20, 21
    - general: maps polished to perfection: 01, 04, 06, 07, 08, 10, 17, 18, 20, 21
    - general: added maps 17, 18, 20, 21 to the walkthrough.
    - general: changed all map IDs from CHE?? to EDAY?? so that they override the original EDAY maps instead of co-existing with them, to avoid confusion.
    - general: fixed light posts to have forced Y-billboard: tall objects, you can walk close up to, create weird and disorienting effects when you look up and down if you have XY-billboards set by default. This is the same as I did with some trees earlier.
    - general: edited some walkthrough entries adding missing detail
    - general: corrected a blunder in the walkthrough for map 08: i was being an idiot solving the puzzle NOT as intended but doing the impossible through sheer determination. That solution did not always work and was very dependent on framerate.
    - map 01: applied new sound sequences to some doors
    - map 01: added sounds to fans
    - map 01: changed the walls shape around the big fan: that imp tended to hug the walls, kicking him into the fan as intended had *very* low probability of success as he was simply hitting the side frame of the fan, again and again
    - map 01: remade scripting of the window that imps break through, so that the wiindow is initially transparent, like all other windows
    - map 01: restoring cut content: the ship you have supposedly arrived on sitting on one of the landing pads - it was there in earlier installations but Mark removed it by some reason.
    - map 01: added a scripted imp shredding a marine to the starting area
    - map 01: remade the pitched battle outside from pure sound to that plus actual battle: 4 marines with airsoft guns doing 0..1 damage, with their dodging reflexes nerfed, versus 9 imps. No chance to interact: they are all scripted to die when you go further and the airship explodes.
    - map 01: fixed one monster closet never opening if you traverse the map in a very unusual but possible way
    - map 01: applied my new mechanics to the breakable fans.
    - map 01: removed two explosive barrels to avoid one secret being discovered by accidental (90% guaranteed) explosion
    - map 01: added safety cage and doors to the control tower elevator
    - map 02: applied new sound sequences to some doors
    - map 02: changed the id to EDAY02
    - map 02: added nukage sloshing effects to the bridge submerging (water ripple 3d model force on)
    - map 02: added nukage sloshing effects to the big stream of nukage falling from big pipe
    - map 02: changed one bridge's mechanics to an ACS script to fix it not making sounds while moving
    - map 02: moved one armor bonus into an easily overlooked corner to inflict more pain and suffering on people trying to max this map
    - map 02: changed the shape of landscape beyond the windows to break all too obvious straight cutoff line
    - map 03: applied new sound sequences to some doors
    - map 03: changed the id to EDAY03
    - map 03: modified the top layer to match the next map's geometry near perfectly
    - map 03: added antennas to comm towers
    - map 04: added antennas to comm towers
    - map 04: changed the id to EDAY04
    - map 04: rehauled the cargo elevators adding safety cages and sliding doors
    - map 04: moved the terrain outside the entrance area's windows to a top layer. Reason: with the introduction of antennas, the centrall hallway cutting the towers with sky became too obvious.
    - map 04: rehauled the terrain outside the entrance area's windows to match the previous map near perfectly
    - map 04: applied my new mechanics to the breakable fans.
    - map 04: fixed two armor bonuses that were under 3d floor walkways, not on them.
    - map 05: added antennas to comm towers
    - map 05: reshaped the outdoors area to improve view out of the office area's eastern windows.
    - map 05: changed the id to EDAY05
    - map 05: applied new sound sequences to some doors    (the locker doors, all 32 of them... :(... ); added ambient sounds.
    - map 05: added ambient sounds
    - map 05: automap fixes
    - map 06: changed the id to EDAY06
    - map 06: applied new sound sequences to some doors and elevators; added ambient sounds.
    - map 06: changed the giant entrance door to sliding doors. I am sorry, I just could not help myself. That door was irritating me horribly. I resisted for a long time, since I had to reshape the secret elevator as well, but... At least getting the blue armor should be easier now.
    - map 49: added antennas to comm towers
    - map 49: added ambient sounds
    - map 49: changed the id to EDAY49
    - map 07: applied my new mechanics to the breakable fans.
    - map 07: rehauled the building with the only elevator to add safety cage and doors
    - map 07: changed the id to EDAY07
    - map 08: changed the id to EDAY08
    - map 08: fixed missed textures on the sides of the ramp in the northern badaboom room (when? :( )
    - map 08: retextured insides of the burning elevator pitch black
    - map 08: applied new sound sequences to some doors; added ambient sounds
    - map 08: applied my new mechanics to the breakable fans.
    - map 08: tightened timings on those crushers, to make head-on approach *really* unpossible.
    - map 08: fixed the infighting scripts (was using whong hating mode due to faulty wiki documentation). Monsters should now ignore the player unless he shoots them.
    - map 09: changed the id to EDAY09
    - map 09: applied new sound sequences to some doors; added ambient sounds
    - map 09: changed a certain explosive thing to a hand crafted special effect of electric fire, new sounds added SPARKSY
    - map 09: applied new sound sequences to some doors;
    - map 10: changed the id to EDAY10
    - map 10: added ambient sounds
    - map 10: replaced a blocking rubble pile with map geometry. Reason: hitbox dissonance. Thing RubbleLarge 1333 should never be used because its sprite is much smaller than its humongous hitbox. Replaced them all with RubbleLargeFake and invisible walls.
    - map 10: fenced the big pit off and added a ton of pushing lines to the edges of the bridge, and closed it off with sliding doors that only open when the bridge is fully up. Because that pit was the sole reason you could not keep your companion marines til the end. Damn jump-prone lemmings! The side effects include marines and monsters walking out onto the bridge sometimes ping-ponging between its edges at high speeds, but... WHO CARES. They are not falling off anymore! (And if someone asks, NO, "block monsters" would not work because BD uses a lot of movements that outright ignore this flag. Include, among other things, imp pouncing, revenant punching, marines dodge-rolling and marines backpedaling to get away from the enemy).
    - map 10: fixed minor texture misalignments around the pit
    - map 11: applied my new mechanics to the breakable fans.
    - map 11: applied new sound sequences to some doors; added ambient sounds
    - map 11: changed the id to EDAY11
    - map 11: fixed outdoor lightning not applied to the small fan's opening of the shed with the tank
    - map 12: applied new sound sequences to some doors; added ambient sounds
    - map 12: changed the id to EDAY12
    - map 12: fixed misaligned textures on one fence
    - map 13: applied my new mechanics to the breakable fans.
    - map 13: applied new sound sequences to some doors; added ambient sounds
    - map 13: changed the id to EDAY13    
    - map 14: applied new sound sequences to some doors; added ambient sounds
    - map 14: changed the id to EDAY14
    - map 14: changed one ambient sound of water flowing to a short-distanced one: could be heard from where it shouldn't be
    - map 15: applied new sound sequences to some doors; added ambient sounds
    - map 15: changed the id to EDAY15
    - map 15: fixed sky visible through of one building's eaves
    - map 16: applied new sound sequences to some doors
    - map 16: changed the id to EDAY16
    - map 16: made the burger joint's doors open inwards rather than outwards due to bad interaction with 3d floor lightning tricks there
    - map 16: fixed wall tiles moving with bathroom stall doors
    - map 17: applied new sound sequences to some doors; added ambient sounds
    - map 17: changed the id to EDAY17
    - map 17: found the *true* reason of spider mastermind being stuck in a tiny room on the top floor. There was a *weird* solution of an inward corner, where if monsters touch the wall they get silently teleported inside, to the top floor near a window. The mastermind, theoretically, could NOT get caught in this because the line was "when monster walks over" and mastermind's radius is larger than the gap between that line and the wall. But, I guess, he always found a way. I solved this one by eliminating that inward corner: expanded that house with two first story rooms made of 3d floors. With furniture and stuff (the framerate screamed horribly and fell silent). As an upside, the archwile now tends to walk out onto the roof of those rooms which gives him excellent view of you >:D
    - map 17: fixed slightly misaligned windows in the yellow door building (using UDMF texture scaling)
    - map 17: upgraded the teleporting monster closets to my advanced design with 100% reliable deployment, for guaranteed maxability.
    - map 17: fixed one secret counting as two. While at it, changed some secrets from the floor registering it by being stepped on to items themselves registering it by being picked up (UDMF supports this and items that always pick up allow for reliable registering without failure for 100% secrets).
    - map 17: made that one dangerous secret easier to get out alive, via rearranging its ceiling and adding an invisible step
    - map 17: marked the captured marine as a secret
    - map 17: changed one of the cryptic clues on the quest for the shotolver: I had completely misread one texture when making it and the clue was utterly misleading!
    - map 17: fixed one of the three enemy tanks not spawning because I moved its spawning spot too close to a wall
    - map 17: scripted a partial solution for the "hunting that last straggler" problem. All monsters most likely to get lost in the terrain or get overlooked will try rushing the player who enters the final building. Won't help much, likely, but would at least get them moving.
    - map 17: made one wardrobe deeper. The shotgun in it was showing weird behavior when you open it, it felt like it was falling from the ceiling.
    - map 17: fixed HOM effect in one wardrobe.
    - map 17: added a sign to the gun shop. New textures: KYSIGN1
    - map 17: added a grandfather clock to one house. New animdefs: GTCLOCK
    - map 17: added posters and pinups in many places (existing EDAY textures lay woefully unused)
    - map 17: added a locker in one of the garages
    - map 17: added a motorcycle parked in a random driveway
    - map 17: added antenna sprite to the only comm tower
    - map 17: fixed the revenantful of a parking garage being always opened prematurely by roaming monsters bumping into its doors. I even made its door connecting to the house not openable from the house.
    - map 17: changed juggernaut deployment from being spawned by script to a normal DEAF monster sleeping in his advanced closet. Reason: I dawdled in the blue key room, and he managed to roll INTO the revenant garage, crushed them all and got stuck to boot. I also made that garage double-door (although each side door is still wider that juggernaut's girth, he's surprisingly slim for a tank)
    - map 18: applied new sound sequences to some doors
    - map 18: changed the id to EDAY18
    - map 18: modified the mech secret: instead of humping a random wall you open the mech bay by pressing a Mechagodzilla II poster
    - map 18: added toilet paper dispensers next to all toilets
    - map 18: marked the twin teleporters as red and blue
    - map 18: improved the cafe's sign and renamed it to cater to fans of a certain franchise. New textures: BURG09Y, BURG0Y
    - map 18: crammed as many posters and pinups everywhere as I could without it looking ridiculous
    - map 18: upgraded all "a lone toilet in an empty football field" bathrooms with sinks. Hilariously, I saw one of those IRL. One of the bathrooms in the clinic had only a single stall. But boy, that stall was two meters wide and seven meters deep, more like an utterly empty immaculately clean corridor covered in beautiful tile, with a lone toilet in the distance, like a throne in a throne room :D The only time I regretted I use a dumb cellular telephone without a camera :p
    - map 18: improved texturing of one building's facade
    - map 18: upgraded the teleporting monster closets to my advanced design with 100% reliable deployment, for guaranteed maxability. The horde deployment pattern had changed as a result.
    - map 18: added antenna sprites to comm towers
    - map 18: finally made elevators make the elevator moving sound while moving: by some reason, Zandronum 3.0 staunchly refuses to play it as a platform moving sound, so had to manage sound sources by hand
    - map 18: fixed one door messing up light levels in an unrelated building across the map
    - map 18: marked one ammo-in-a-dumpster as secret
    - map 18: marked the secret exit as a secret; marked one secret soulsphere as a secret.
    - map 18: fixed one secret soulsphere secret erroneously marked as sector tag 1024 (which does nothing) instead of sector special 1024 (secret: yes). Final number of secrets: 10
    - map 18: retextured two dumpster's floors to GARBAGE
    - map 40: imported into my project as is (without converting to UDMF yet)
    - map 40: fixed the secret exit to the super secret map 41 being forever inacessible: broke when Mark nerfed the jumping height.
    - map 40: restored the normal exit to exit to map 19 (I made it also exit to the super secret map 41 earlier, as a quick and dirty fix for that inacessible secret exit)
    - map 41: imported into my project as is (without converting to UDMF yet)
    - map 41: marked the secret exit to the super super secret map 42 as a secret
    - map 42: imported into my project as is (without converting to UDMF yet)
    - map 42: fixed broken sky as seen through a couple windows
    - map 19: fixed a blunder in my train sounds management: there was a chance the train moving sound would keep sounding after the train crash
    - map 19: changed the id to EDAY19 and re-integrated it back into the main maps wad
    - map 20: applied elevator sound sequences to mall elevators
    - map 20: changed the id to EDAY20
    - map 20: finished one rough and unfinished overpass crosing with an out-of-playable-boundaries street that let you look into the skyboxes' unmentionables. Plugged those areas with simple architecture, fixed broken architecture around that spot. It seems I was out of steam when working on this map the previous time and decided not to polish it to perfection.
    - map 20: fixed the cyberdemon and mastermind's infight by changing their hating mode from default to "ignore players unless attacked by them" + "no line of sight check". Should be more focused on each other now.
    - map 20: added several motorcycles along the way (if you screw up and lose your tank and want to go back to grab the second one)
    - map 21: added antenna sprites to comm towers
    - map 21: rearranged the skybox
    - map 21: changed the portal texture to my flickery portal texture
    - map 21: changed the id to EDAY21
    - map 22: applied new sound sequences to some doors / elevators
    - map 22: changed the portal texture to my flickery portal texture
    - map 22: changed the id to EDAY22
    - map 23: applied new sound sequences to some doors
    - map 23: changed the id to EDAY23
    - map 47: changed the id to EDAY47
    - map 48: changed the id to EDAY48
    - map 24: changed the id to EDAY24
    - map 25: changed the id to EDAY25
    - map 26: changed the id to EDAY26
    - map 27: changed the id to EDAY27
    - map 28: changed the id to EDAY28
    - map 29: changed the id to EDAY29
    - map 30: changed the id to EDAY30
    - map 31: changed the id to EDAY31
    - map 50: changed the id to EDAY50
    - map 50: hopefully fixed the feral pinkie infighting to reliably ignore player unless he attacks them
    - map 32: changed the id to EDAY32

 

 

-- and now I will rest and switch to IRL issues demanding my attention. Maybe til the next summer, even. What is, has to be enough for now.

Share this post


Link to post

My gosh brother, that is so much stuff just in one update! Rest well though, you definitely earned it. I should be done reading all this by the time you get back next summer. Also, sorry, I'm a little confused. We should now be using "brutalv21che-2023-11-26.pk3' with the "chebskies-v1_12-2023-11-30.pk3" file, or only use the "chebskies-v1_12-2023-11-30.pk3" file with the Eday mapset?

Share this post


Link to post

Here,

This is the GAMEINFO lump of chebskies.pk3:

IWAD = "doom2.wad"
LOAD = "brutalv21che-2023-11-26.pk3","EdayTest001.pk3","EdayMusic001.wad"
STARTUPTITLE = "Sergeant_Mark_IV's Extermination Day with Cheb's fixes"

It lists the files the game engine will load and their order. If any of them are missing, the mod won't start.
Meaning, you only drag chebskies.pk3 onto zandronum.exe and nothing more, but other files must be present, They will be simply force - autoloaded.

Share this post


Link to post

Ha. It seems for me "rest" means only 1 map a week. And having fun during the weekend means working on the hideously incomplete BD mummy.

What could I say? That map was in *really* bad shape, all buggy and broken. As was the mummy -- who, by the way, already debuted in my map 29.

NOW, though, the mummy is a proper monster, with its own character. Very strong (uses revenant punches as means of attack, 25 dmg per punch) but feather weight: easy to knock down with a single kick. Just like zombies, it takes a second before it gets up. Unlike imps, for example, who get up immediately.

Backslide works wonders: if you are surrounded by mummies in a corner, you'd die in less than a second... Unless you backslide, throwing those bones around like ragdolls.

It also has proper headsot death now, instead of just exploding into gore.

All without touching a single sprite. Just using what is in store creatively.

 

Sooo... I replaced all the pinkies in map 27 with half again as many mummies -- and it was FUN :D

This map, now properly fixed and maxable, holds 10 secrets.

Also the first smart secret: the loot closet scans the inventory of the player who activated its door and spawns whatever weapon he is lacking from a list of 4 variants.

 

Also, I now have a full sound set for hell - how it should sound, in my opinion. All creaky and clanky and grindy -- in short, MEDIEVAL, without a trace oft hose sci-fi sounds.

 

- general: this is the Necro update, Chebskies v 1.13.
    - general: new sound sequences: clanker slow; clanker fast; scraper long and resounding; scraper hell everydoor; super secret mechanism gears; rattling hell elevator #3; rattling hell evevator #4; flesh platform reimagined and fixed
    - general: fixed a blunder in my placeable MG42. The weapon picked up did not have a weapon slot assigned and could never be selected.
    - general: improved the clones of BD mummies I am using in  acouple maps here: set their radius to 16; set their pain sound to revenant pain; decresaed their weight from 500 to 150 (dem bones!); added headshot death variation (instead of simply asploding on headshots); made it kickable (each BD monster has to support a kicked state and propel himself in appropriate direction -- this is no player's mechanic) and made it react to backsliding properly (something between an imp and a zombie - mummy is strong but light, easy to knock down); set proper zero damage vunrerabilities for non-damage AOE damage types (like applying blood to player's melee weapons or making splashes in water -- a ton of stuff in BD is expressed as custom damage types)
    - general: maxability confirmed for maps 59, 27
    - general: maps polished to perfection: 27
    - general: added maps 59, 27 to the walkthrough.
    - map 40: changed the normal exit back to leading straight to map 41, the secret exit I fixed earlier now leads to map 59 instead
    - map 59: imported PSMAP59 "Club Doom" as PSXM59 into my project to play the role of yet anoter secret map, thus increasing the number of secrert maps to 5. A silly tiny map with only 3 rooms :) Normally works as a super secret map injected into the Doom2 campaign by BDv21. I doubt anyone ever saw it because the secret that leads to it is of the "hump all the walls" variety. The part of doom that did not age well (some may disagree).
    - map 27: fixed a shameful blunder of mine with the bottoms of abysses missing action 115 instant death
    - map 27: fixed an error caused by me implanting a half of HESP map 28 into it: one of the actions of the hardest secret was also opening a wall in that area prematurely.
    - map 27: fixed horrible blunders in my optimized multi-part skybox that made it murder the framerate instead of helping it
    - map 27: automap fixes
    - map 27: fixed a bug with two monster closets never opening thus preventing 100% kills (my oversight while porting HESP28 by hand from Boom to UDMF format). Those poor chaingunners, unloved and abandoned to never see action :(...
    - map 27: changed the super secret's mechanics from line specials to scripts; gave it it unique sounds; increased its elements timeouts from 6s to 7s; changed the loot inside: now the Unmaker only shows at low skill levels and there are BFG 10K and MG42 instead.
    - map 27: fixed the BROKEN bfg secret / escape from the moat of hurt (was impossible to get out, joined sectors it relied upon  de-joined at some point without me noticing) My fault again :(
    - map 27: fixed the only teleporting monster closet's door to open repeatedly (for the astronomically small chance the chaingunners inside failed to see you) and added another trigger to it.
    - map 27: fixed some cosmetic details I forgot to convert while porting HESP28 by hand
    - map 27: replaced the 20 pinkies with 30 mummies. They play roughly the same role, are slower (thus less dangerous) and much les polished -- BUT! The crypts, man! Must have undedad!
    - map 27: prettied some teleporters up
    - map 27: fixed the exit door of the soulsphere + blue armor secret not functioning properly when the crusher on the other side was active (required a lot of tries and guessing crusher timings to open it).
    - map 27: fixed misaligned gray stone ceiling in the area ported from HESP28 (those areas were designed with some stones missing, specifically for this texture -- I did realingn imperfectly when porting, it seems)
    - map 27: fixed two monster closets with variable monsters: cacoes and revenents would spawn inside each other on "Hurt me plenty".
    - map 27: upgraded the teleporting monster closets to my advanced design with 100% reliable deployment, for guaranteed maxability.
    - map 27: fixed the purple sphere in the purple sphere secret being too far away to pick up and the secret itself not marked as a secret
   - map 27: applied new sound effects to all doors and elevators.

 

Share this post


Link to post

Some actions can be performed while sleeping.
Those two maps were already near perfect, it was like applying polish and removing blemishes. Incredibly lazy work -- and playtesting against the boss in map 23 was FUN. Sooo brutal :D

 

I will write an essay on methods of perfecting your maps someday (checking for maxability and writing a walkthrough even if you don' plan to show it to anybody -- two mighty tools of quality control)

 

Done December 04, 2023:
    - general: this is the Gauntlet update, Chebskies v 1.14.
    - general: introduced variations of pink, regular and gold soulspheres that do not count as items
    - general: maxability confirmed for maps 22, 23
    - general: maps polished to perfection: 22, 23
    - general: added maps 22, 23 to the walkthrough.    
    - map 22: removed two pain elemental closets at map start: the tanks smashed them instantly, then resulting lost souls could get lost and go dormant thus ruining your kill count
    - map 22: fixed one ambushing imp at map start never waking up thus ruining your kill count
    - map 22: fixed several spectres in a cave never waking up unless you walked inside -- thus ruining your kill count
    - map 22: replaced soulspheres along the route with specialized versions that do not count as items (you travel it in a vehicle, no time to grab them -- thus ruining your item count), also varying with difficulty: gold on ITYTD, regular on HMP, weaksause pink on UV.
    - map 22: fixed the exit elevator making no sounds (broke with the previous updates)
    - map 22: introduced additional scripting that makes straggler demons that are most likely to be overlooked by the marine NPCs march towards the castle.
    - map 22: removed one large rock shelf near the passage between the map's halves. Reason: the helicopter was glitching and falling through it if you landed on it to disembark.
    - map 22: improved texturing in the exit elevator
    - map 23: improved texturing in the entrance elevator
    - map 23: fixed the bosses health indicator not showing in his second stage (UV only) and him not roaring as designed.
    - map 23: applied new sound effects to all doors and elevators.
    - map 23: synced the castle's looks with the next map (48) by removing the old skybox facsimile and inserting simplified architecture copied from the next map's top layer.

Share this post


Link to post

Dev log:

A new word: "sleepmapping" :?

I decided using assembly line method: performing a single operation on many maps in a row. Quick, efficient, you do a lot wit no distractions. Also boring.

So I was sitting late in the evening, adding door sounds to map after map (as simple as sticking a thing 1411 into each door sector and assigning it a suitable sound sequence number). On the sixth map I... kinda... fell asleep while still working the Builder.

 

When I came to, the secret UAC base in hell had a functioning aquarium, with unique thing types (seaweed, bubble generators) and textures (photo wallpaper with fishes on the back wall)

 

Eh...? Eeeeeh...? 8(

Share this post


Link to post

Dev log:

Let me tell you about one *undocumented* pitfall of the DECORATE scripting language.

 

The ACTOR classes are classes that support inheritance and states are like virtual methods, very familiar to those practicing Object-Oriented Programming, like me.

 

BUT.

 

The Goto operator breaks this paradigm against its knee.

The Goto operator passes control to the method of the class it was declared in, completely disregarding the overriding version of the ancestor class.

 

So, to my shame, I found this just now, and instead of a quick and dirty sounds-only update I got mired in reworking the final boss, adjusting his lethality (because when I fixed the issue it turned out he was absolutely unbeatable on UV) and that requires tons of playtesting.

 

On the positive side, he now Turns Red properly (and literally), and his summon lists are adjustable, I can easily tweak him to start summoning cyberdemons when he is on his last legs (haha, no, that wasn't playable at all).

 

In short, if you try OOP like this:

ACTOR MyAncestor {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 <some common logic>
			Goto MyVirtualMethod
		MyVirtualMethod:
			TNT1 A 0
			TNT1 A 0 <do something>
			Stop
	}
}
              
ACTOR MyDescendant {
	States {
		MyVirtualMethod:
			TNT1 A 0
			TNT1 A 0 <do something ELSE>
			Stop
	}              
}              

It will NOT WORK. Your descendant will be doing something, not something ELSE.
You have to use A_Jump:
 

ACTOR MyAncestor {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 <some common logic>
			TNT1 A 0 A_Jump(256, "MyVirtualMethod") // works like a charm
			Stop
		MyVirtualMethod:
			TNT1 A 0
			TNT1 A 0 <do something>
			Stop
	}
}

 

Edited by chebmaster
code alignment was wrong

Share this post


Link to post

Dev log:

Fixed another epic blunder in my final bosses' code.

As a result, his state machine FINALLY started working as designed... and he went Super Sayan on my ass massacring me during playtesting.

...that was supposed to be the wussiest version for "i am too young to die" :(...

 

..oh, wait, that was *another* typo. Who in their right mind writes "<" in the comparison operator instead of ">=" ?

Of course he misplaced ITYTD and UV.

Then again, who said I'm in the right mind? *groan* Its midnight, forgot to go home from work because fought the bosses code, buses not running anymore.

I should stop doing this to myself :D :p %(

The long march towards subway through the snow begins...

Share this post


Link to post

Dev Log:

Me scaling the boss up from the original 9.0x to 10.0x caused some minor problems, annoying for a perfectionist like me. Namely, his sprite clipping through the map corners if you look to the side while he rises (no source port has a good solution to sprites scaled to enormous sizes), or his thundering animation being above the screen edge most of the time (because it only involved his upper arms) thus depriving the player of clue to what he was doing.

 

BUT. I rather liked the opportunities for skillful evasion arising from the steeper angle at which his missiles hit the arena in this incarnation of him.

So, I found two solutions:

 

1. a dirty hack: the boss is 0.8x by default, during the most problematic phase, but when he sees you, he launches a script that smoothly increases his sprite scale to 10.0. No extra complexity here since the script runs in parallel, unrelated to his animations. The end result looks like him shuffling closer to loom over you.

 

2. a new set of thundering animations -- nothing but some boring frankensteining and retouching in The GIMP, then setting offsets in SLADE... And then doing it all over again because my first attempt at  "animation" looked like wooden crap as expressive as a brick wall.

 

All in all, I strongly doubt my ability to release this weekend. Besides bosses' cooldowns still requiring some fine-tuning, there are about six maps to playtest (making sure nothing broke after me applying sound effects) and two problematic maps with complex scripted archvile behavior I need to re-check a lot before I can declare them ready.

 

Or should I polish the boss, just test the maps for playability and relegate those viles to a later update?

P.S. Arachnob whom I pulled from what I suspect was Mark-senei's equivalent of a trash bin, turned out to be stronger than a cacodemon. Despite having half his HP.

 

 

FZDYA0.png.78a8aeca1c8f614d25b438b4a393b92a.png

 

 

 

 

ICOTM0.png

ICOTN0.png

FZDYB0.png

Share this post


Link to post

Dev log:

An updated version of BDv21che is coming , you'll have to download that 83 Mb pk3 anew.

 

Reason: I gazed into the BD code under the hood that spawns companion marine NPCs after a map change. The code gazed back. Horrified, I rewrote it and recompiled it and also made it compatible with my alt map starts (otherwise the NPC companions spawned at the real start and tried making their way to you on foot and got themselves killed.

 

The original BD code (part of the "BDInitialize" script) trying to spawn all in one spot (and using int 32 instead of fixed 32.0 to boot!)

	//Spawn surviving marines
	
	//Rifle Marines
	if (checkinventory("NumberOfAllies") == 1){	Spawn("Marine_Rifle", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAllies") > 1){	Spawn("Marine_Rifle", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAllies") > 2){	Spawn("Marine_Rifle", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAllies") > 3){	Spawn("Marine_Rifle", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAllies") > 4){	Spawn("Marine_Rifle", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAllies") > 5){	Spawn("Marine_Rifle", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAllies") > 6){	Spawn("Marine_Rifle", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAllies") > 7){	Spawn("Marine_Rifle", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	
	//Shotgun Marines
	if (checkinventory("NumberOfAlliesShotgun") == 1){	Spawn("Marine_Shotgun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesShotgun") > 1){	Spawn("Marine_Shotgun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesShotgun") > 2){	Spawn("Marine_Shotgun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesShotgun") > 3){	Spawn("Marine_Shotgun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesShotgun") > 4){	Spawn("Marine_Shotgun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesShotgun") > 5){	Spawn("Marine_Shotgun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesShotgun") > 6){	Spawn("Marine_Shotgun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesShotgun") > 7){	Spawn("Marine_Shotgun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	
	//Minigun Marines
	if (checkinventory("NumberOfAlliesMinigun") == 1){	Spawn("Marine_Minigun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesMinigun") > 1){	Spawn("Marine_Minigun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesMinigun") > 2){	Spawn("Marine_Minigun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesMinigun") > 3){	Spawn("Marine_Minigun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesMinigun") > 4){	Spawn("Marine_Minigun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesMinigun") > 5){	Spawn("Marine_Minigun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesMinigun") > 6){	Spawn("Marine_Minigun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesMinigun") > 7){	Spawn("Marine_Minigun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	
	
	//Rocket Marines
	if (checkinventory("NumberOfAlliesRocket") == 1){	Spawn("Marine_Rocket", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesRocket") > 1){	Spawn("Marine_Rocket", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesRocket") > 2){	Spawn("Marine_Rocket", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesRocket") > 3){	Spawn("Marine_Rocket", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesRocket") > 4){	Spawn("Marine_Rocket", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesRocket") > 5){	Spawn("Marine_Rocket", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesRocket") > 6){	Spawn("Marine_Rocket", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesRocket") > 7){	Spawn("Marine_Rocket", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	
	
	//Plasmagun Marines
	if (checkinventory("NumberOfAlliesPlasmagun") == 1){	Spawn("Marine_Plasmagun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesPlasmagun") > 1){	Spawn("Marine_Plasmagun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesPlasmagun") > 2){	Spawn("Marine_Plasmagun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesPlasmagun") > 3){	Spawn("Marine_Plasmagun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesPlasmagun") > 4){	Spawn("Marine_Plasmagun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesPlasmagun") > 5){	Spawn("Marine_Plasmagun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesPlasmagun") > 6){	Spawn("Marine_Plasmagun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}
	if (checkinventory("NumberOfAlliesPlasmagun") > 7){	Spawn("Marine_Plasmagun", GetActorX(0)-32, GetActorY(0), GetActorZ(0), 0, 0);}

 

My code, with a NPC cap, beginning with the strongest, using a "breadcrumbs" approach: it your position as the NPC spawning spot but waits until you move 33 map units away. Then repeats. Resulting in the NPCs spawning behind you like breadcrumbs.

#define NPC_FLLW_CLSS_NUM 5
int NPCFollowerCounterThing[NPC_FLLW_CLSS_NUM] = {
	"NumberOfAllies","NumberOfAlliesShotgun", "NumberOfAlliesMinigun","NumberOfAlliesRocket","NumberOfAlliesPlasmagun"
	};
int NPCFollowerClass[NPC_FLLW_CLSS_NUM] = {
	"Marine_Rifle", "Marine_Shotgun", "Marine_Minigun", "Marine_Rocket", "Marine_Plasmagun"
	};
#define NPC_FLLW_LIMIT 6

Script "SpawnNPCCompanions" ENTER
{
	int i, num, dx, dy;
	int total = 0;
	
	delay(70); // give the "MovePlayerToAltStart..." scripts time to run
	
	for (int t = NPC_FLLW_CLSS_NUM - 1; t >= 0; t--) { // begin from the tail to
		// spawn the most powerful first in case we hit the total limit
		num = checkinventory(NPCFollowerCounterThing[t]);
		if (num > 5) { num = 5; } // limit of each type as well
		i = 0;
		while (i < num) {
			// unlike BD spaghetti code, will keep trying until spawning *all* of them

			// try spawning *exactly* at player's position
			int x = GetActorX(0);
			int y = GetActorY(0);
			int z = GetActorZ(0);
			dx = 0;
			dy = 0;
			while (dx < 33.0 && dy < 33.0) { // wait for player to MOVE AWAY from that spot
				delay(35); // wait one second
				dx = x - GetActorX(0);
				if (dx < 0) { dx = -dx; } // function abs() - where? >:(
				dy = y - GetActorY(0);
				if (dy < 0) { dy = - dy; }
			}
			if (Spawn(NPCFollowerClass[t], x, y, z, 0, 0)) {
				// only proceed if succeeded. If failed for some reason, keep trying
				i++;
				total++;
			}
			if (total >= NPC_FLLW_LIMIT) { break; } // do not flood the map if player has too many
		}
		if (total >= NPC_FLLW_LIMIT) { break; }
	}
}

 

Debugging: a testing herd of NPCs.. and only the strongest few spawning with me at the alt start of the next map! :D

 

Screenshot_Doom_20231210_134022.png

Screenshot_Doom_20231210_134143.png

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...