Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

chebmaster

Members
  • Content count

    93
  • Joined

  • Last visited

About chebmaster

  • Rank
    Mini-Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. The terrible cost of ChebSkies: There were two periods: June to August and the crunch of late October to mid-December :(...
  2. What do you mean "make ON" ? Take on? Make one? The answer is a resounding NO. As far as I know, Brutality requires GZDoom, it is written in ZScript, a completely different scripting language from the ancient DECORATE and ACS duo this project uses (siznce it aims at Zandronum, which is a decade behind in technologies supported). Well, GZDoom won't run on my favorite laptop I have used, am using and will keep using forever and ever: GZDoom requires a higher OpenGL version than 3.1 the integrated video on this machine has (with latest drivers, dated 2015). So I simply won't play GZDoom or any megawad that requires GZDoom -- including Project Brutality. Because the idea of replacing your laptop every ten or fifteen years because it becomes "obsolete" is just ridiculous. I have faith in this little machine, I believe it can easily push 20 years of age still kicking. "get in map" in what sense? If you want to use it in mapping, copy all related classes from DECORATE.skies into your project, attach resource file when editing map in builder and simply place thing 17561 "GoldLifeSphere" where required. The powerups, as they are declared in DECORATE, each powerup is actually a family of items: one that you see in game and pick up and ones that it add stuff to your inventory. These virtual items define amount and ceiling of the actual health or armor they add. Since the gold life sphere is unique, it uses custom such items: one adds 75 health up to 200, another adds 75 green armor up to 150. If you want to find it during play, it is exceedingly rare, I created it as an intermediate power-up stronger that soulsphere but weaker than megasphere, for rare cases when balancing powerup composition required it. I only used it AFAIR in two or three maps, mostly in secrets.
  3. Oh the shame, the humiliation! I forgot the walkthrough for maps 30 and 31 was postponed for later. So the walkthrough is NOT complete yet. Will finish someday later: now I return to my long neglected fanfiction!
  4. I considered such thing as momentum. I had a great momentum, if I stopped to finish in January who knows how long it would take of how much extra effort waste to restart my dormant brain processes. So I decided to sacrifice one weekend but finish all the maps -- then only minor BD bugs would remain to be fixed in January. It *should* have been only a saturday sacrificed, but... The wolfenstein map fought back tooth and nail. Up to the point where everything finally worked... Until nazis and their dogs started dropping dead after being teleported. It looked like they were being killed by falling snowflakes, but... What killed all the dogs in the castle corridor, then? I checked on monsters in teleporting closets using noclip -- they looked fine. I temporarily moved both the player start and the trigger line close to the deployment area... NOPE, they were teleporting alive but dropping dead shortly after, at very random delay. More, they were losing their health gradually as if something was draining them. AAaaAaaAaaRRRgGhhhh. In short, it was a sleeper BD bug: unlile all other monsters, nazis & dogs did NOT have zero damage vulnerability multiplier declared for such damage types as gore janitor and teleport remover. So the janitor kicked in due to kilotons of things spawning and despawning in that area (the falling snow... Each snowflake is a thing) so it began trying to clean up... And killing all the buggy monsters in the process. Lol...? Lol. Hilariously Lol. I'm frothing at my mouth, that's how amused I am. So here we are, it's 5 in the morning MSK I am about to drop ded but keep uproeight on sheer will power. IT'S GOLD, BABY! ALL MAPS ARE MAXABLE! (and you wouldn't believe how much of my blood those "last straggler" bonuses drank each time I overlooked ONE during testing) Well, excuse me for switching to God Mode after my eight or so run of this map in a row. Quality control blows :( P.S. Will go celebrate now, the collection of moonshine samples in my fridge is all lonely, untouched since october. Done December 17, 2023: - general: this is the Enigma update, Chebskies v 1.16 - general: I hereby declare chebskies having achieved the Gold status. There shall be bug fixes, because nothing is ever perfect, and final BDv21che bugfixes I promised earlier, but that will *really* be somewhere in 2024. And then, after time unknown, it shall ascend to Platinum. But that is a tale for another time. - general: fixed a BD bug: nazis were being killed by the gore janitor script (a very hard to catch, it only activated after they teleported). The BDv21che version required updated! - general: patched a EDAY bug, german dogs were being killed by the gore janitor script - general: maxability confirmed for maps 40, 59, 41, 42 -- meaning the set is now COMPLETE - general: maps polished to perfection: 40, 41, 42 - general: added maps 40, 41, 42 to the walkthrough -- meaning the walkthrough in now complete. - map 40: converted to UDMF - map 40: made the berserk secret reliably registering - map 40: automap prettification - map 40: redesigned the movie teather hall: twice more rows (this map isn't a perfect copy of the Duke map anyway), halved the seat back's height and restored low light levels. New textures: TLITE6_Y (a clone of TLITE6_1 without glow attached) - map 40: redesigned the projector room area using 3d floors. New textures: DOOR05E - map 40: added antenna to the comm tower - map 40: redesigned the area around the exit. Reason: sanity check. Doom has no jetpack and so no jetpack-related secrets high up so making buildings more solid was a possibility. - map 40: redesigned the secret window a little (the one matching Duke's aappartment secret in duke 3d e1m1), less standing out - map 40: added more buildings to the starting area's fringes to prevent looking in to the skyboxes underpants - map 40: added 20 damage to the dumpster on fire, including edges - map 40: fixed the messed up texturing on the breached movie screen - map 40: removed the "mars ambience" from the exit signs: was creating stupid columns of fog. Replaced with specialized light shafts from EDAY repertoire. - map 40: renamed the map from the iconic "Hollywood Holocaust" to "Movie Night Out". Because sirisly. - map 59: marked the megasphere cage as a secret thus increasing their number to 1 - map 41: converted to UDMF - map 41: automap prettification - map 41: corrected texture scale on the condemned building - map 41: evicted moved most of the surrounding cityscape (except the chunk of the trailer park cacodemons come from) to a top layer, added several simple buildings to it and added antennas to comm towers. - map 41: added a climbable ladder to the sewer hatch - map 41: added a *fourth* variation of demon porn to the adult film cabins (those with paper towels in them) and a special zombie suffering from it. Delightfully offensive and decidedly hilarious. Reason: H-Doom moved ahead from the point Mark was quoting it... With more monster designs... New textures: ZZPORNT..Y; new sprite frames: FRAA T..X - map 41: added posters and replaced the secret to Wolfenstein from a misaligned wall texture to a wall with a poster that is not a movie or game poster but an actual ww2 nazi poster copied from EDAY resources and downscaled -- and its overal color matches that of the wall making easy to overlook. New textures: ZZNAZIY, POSTERW, POSTERV, POSTERX - map 41: made player unable to be catapulted out of playable boundaries into the trailer park over the fence - map 41: made the porn booth entrances soundproof and their curtains NOT openable by monsters from the outside (the herd of shotgunners just outside was activating them by walking around and bumping into them) - map 41: marked the blue armor as a secret thus increasing their number to 6 - map 41: fixed the shotgunners behind the red door waking up prematurely and grunting through it (both sides of the doorframe were a single joined sector, thus screwing up sound zone boundaries) - map 41: retextured the secret exit room to obsidian. Reason: I put so much effort into creating this obsidian tileset back in 2018, but it is too dark to use anywhere! Well, not anymore. - map 41: moved some monsters on distant rooftops to the front edges. Reason: a lost soul ruined my test run's kill count by being so deep the roof edge blocked its line of sight and it never woke. - map 42: converted to UDMF - map 42: automap prettification - map 42: replaced the MG42 generated from a bfg spawner detecting wolfenstein map to a placeable MG42 + 200 ammo - map 42: replaced ammo clips in the ammo storage with placeable mp40 ammo and ammo boxes with shotgun shell boxes. Why would nazis, all armed with mp40s, keep stocked up on NATO intermediate cartridge? - map 42: replaced a plasmagun surrounded by rocket boxes with a rocket launcher: assumed it was a mistake. - map 42: set all ceilings of prison cell doors to undefined: were generating ugly parallax effect when rising above you, the grates filled with a sliding cobble texture. - map 42: added a most sadistic new secret with three armor bonuses hidden inside, not showing on the automap unlike all other secrets. Also serves as a red herring for the MG42 secret. - map 42: fixed and rearranged paintings in the library secret - map 42: upgraded the backtracking ambush with my advanced teleporting closet. As the monsters are deployed still sleeping, I used different spots: hand-picked ambush positions for nazis (whom I made deaf) and tightly packed packs of teleporter dests for dogs, who are NOT deaf and will hear you when you fight in appropriate sound zone, wake up and swarm towards you. - map 42: replaced all evil marine spawners (TID 736) with regular placeable nazis (TID 0). Purists would have to DEAL WITH IT. That setup was an unstable scripting nightmare. - map 42: improved abyss fringes where player can fall off the wall: no more splattering against the sky with the bottoms of castle walls hanging in it. - map 42: replaced kitchen doors with swinging polyobject doors - map 42: applies sound effects to all doors and elevators. Now this castle sounds real medieval. - map 42: made the invulnerability secret shallower - map 42: various minor texturing fixes - map 42: fixed a STUPID case of you never getting 100% kills unless you activated the crusher in the torture room. Trivia: there was a lone nazi in a detached room in the void, the floor and ceiling combination marking textures marking it as a "wolfenstein" map thus making *all* evil marines to spawn as nazis and the bfg to spawn as a MG42. That room was also a crusher activated by the same switch -- an ingenious way to eliminate that dummy "marker" nazi. Buuut, what if the player haven't activated that crusher? - map 42: moved one dog in a dead end kennels room. Reason: it was deaf, never waking up until you checked that entire room thus causing a nasty "last straggler" problem for perfectionists. - map 42: fixed many sound zone boundaries - map 42: fixed lightposts from randomly rotated 3d models (fluorescent too!) to their historical sprite forms. Sprite frame PSTE B ripped from EDAY as PSTE Y - map 42: transformed bookcases with tops higher than room ceilings into solid voids. Reason: were creating false impression of possible secrets showing on automap as non-solid walls - map 42: fixed the inescapable corner behind the chair in the torture room
  5. Done December 13, 2023: - general: shortened one sound effect in half (forgot to do this in the big update, remembered just now) - map 50: remembered to fix one blunder in the minion infighting mechanics (I was going to, but forgot to do in the big update) - fixing it took actually less time than launching the game to see if it worked.
  6. P.S. Oopsie, uploaded the wrong version :( Re-uploaded wit h the same file name. Relesing when dead tired is bad idea >_<.... ZzzzZZzzzz....
  7. Losing... consciousness... It is done. I was ripping and tearing for nearly a full year and it is finally done. The secret maps and non-critical BD bugs could take a short hike til January: I did not want to stretch the work until my hair turns gray... Waitaminute, my beard is *already* halfway gray! :(... The only maps NOT guaranteed maxable are secret maps 40..42 (two Duke maps and one Wolfenstein map) It can be played. Done December 11, 2023: - general: this is the Inferno update, Chebskies v 1.15 -- a preliminary release candidate of EDAY 001 Gold - general found out my favorite stuffed bear was stuffed with dirty socks (in other words, gazed into the BD code under the hood. The code gazed back.) The BDv21che version required updated! Reason: fixed the CVARS script. Sorry that you have to download 80+ megabytes again because of a change that weighs less than one kilobyte, but I simply... coudn't... - general: maxability confirmed for maps 47, 24..26, 28..30, 32 (i.e. now ALL mainstream maps are maxable, with the sole exception of the old secret maps 40..42) - general: maps polished to perfection: 47, 24..26, 28..30, 32 - general: added maps 47, 24..26, 28..29, 50, 32 to the walkthrough. - general: imported music D_BUNNY from HESP. Reason: the finale after you beat the end boss is very old (dates back to HESP) but it tries playing that victory music... And fails because it is missing from both BDv21 and EDAY001. - general: changed rolloff for some sounds from default to having full volume at longer distances: dragging metal squealing; metallic door slam; stone door slam - general: new sound sequences: stone grinding ends in a splash - general: fixed errors in sound definitions (like flesh sound not working for doors) and increased lousdness of some by merciles compression - general: added a variation of mech that cannot jump (says jump jets offline). New sounds: KYSNDBZZ - general: added permafrost deaths to mummy, duke of hell, arachnorb, volcabus, ancient arachnotron. New sprites: FZDYA0, FZDYB0, FZDYC0, FZDYD0 - general: tweaked mummy's extreme death. Less meat, more bones. - general: improved the purple sphere pickup sound - general: fixed Duke of hell a bit, does not try replacing himself with a vanilla cyberdemon when vanilla monsters are on. He stays as he is because there is nothing in vanilla to replace him with. "Vanilla" itself is a stupid idea, in my (definitely opinionated) opinion. - general: increased the required version of Zandronum 3.0 to 3.1 Everything still works in 3.0, but the final boss may look a bit smaller than normal in multiplayer. - general: fixed the fountain sound to pre-existing BD water flowing sound but short distance (500). No more fountains setting the ambience for half the map! - map 01: fixed the scripted fight between marines and imps outside not working properly (by some weird reason, the marines were fighting a single empty spot while the imps were completely missing) - map 03: fixed a bug in my ATCs (advanced teleporter closets). First my upgraded version Mk II (with shape improved to guarantee thicc mobs like mancubi and arachnotrons never ever getting stuck) failed craptacularly when applied to map 24. A lot of those thicc mobs got stuck on their first try :( Truly "better is the enemy of good". I haven't noticed it before because all the maps where I used Mk II had enough space that monsters never cycle en masse waiting for a free spot. Then I looked back and realized that Mk I could malfunction in a similar manner (the tip of the main belt and the edge of the safety margin pushing two monsters in opposite directions resulting in a deadlock) it was just so improbable I never saw it happen. The requirement: the distance between that tip and the margin must be larger than the diameter (two radii) of the thicciest mob in the closet. - map 09: fixed the ATC bug - map 12: fixed the ATC bug - map 17: fixed the ATC bug (now each cyberdemon has his own ATC, special solo version for extra thicc bosses). - map 17: fixed one pillow on one bed in one building having been accidentally deleted resulting in a bedsheet-colored pillar in its place - map 18: fixed the ATC bug - map 47: retextured doorframes and elevators, got rid of DOORTRAK everywhere replacing it with GTOLDF02 and METAL10 , whichever fit better. Reason: not medieval enough. Also added chains moving with the floor to some elevators (and will do the same for other Hell maps) - map 47: applied new sound effects to all doors and elevators. - map 47: fixed one bogus secret preventing maxability - map 47: maxability confirmed - map 48: fixed the ATC bug - map 48: fixed the alt entrance potentially trapping coop players inside - map 48: hunted DOORTRAK to extinction - map 48: applied new sound effects to all doors and elevators. - map 48: changed the blue key area with some more doors for more player suffering (also removed the deaf flag from three monsters) - map 24: hunted DOORTRAK to extinction - map 24: applied new sound effects to all doors and elevators. - map 24: made the coffin trap undetectable and unnoticeable until sprung - map 24: upgraded the teleporting monster closets (all six of them!) to my advanced design with 100% reliable deployment, for guaranteed maxability. - map 24: marked one door requiring blue skull key with appropriate skull side panels - map 24: fixed one candle inside an bookcase, now a proper bookcase with a candle on its empty shelf - map 24: fixed health bonus breadcrumb row under a 3d floor bridge instead of on top of it - map 24: maxability confirmed - map 25: hunted DOORTRAK to extinction - map 25: applied new sound effects to all doors and elevators; added ambient sounds. - map 25: restored some roasting humans to non-charred variations - map 25: fixed the indestructible fireball trap counting as a monster thus ruining your kill count - map 25: fixed the revenant marching algorithm - map 25: fixed texturing errors - map 25 maxability confirmed - map 26: hunted DOORTRAK to extinction - map 26: applied new sound effects to all doors and elevators; added ambient sounds. - map 26: restored some roasting humans to non-charred variations - map 26: upgraded some railings in the cellars from *really* ancient "custom invisible bridge" things to walkable+ shootable midtex - map 26: fixed two armor bonuses stuck inside walls ruining your item count (my fault :( ) - map 26: fixed three armor bonuses under a 3d floor bridge instead of on it - map 26: fixed ceiling height of the bfg secret - map 26: maxability confirmed - map 28: hunted DOORTRAK to extinction - map 28: applied new sound effects to all doors and elevators - map 28: reworked the four-archvile surprise: now two of them teleport away when they leave their niches -- to begin a scripted march across corpse fields to meet you somewhere on the sky bridges! :D - map 28: added two health bonuses to the altar as a shmuck bait for the player to release the archviles prematurely. - map 28: reworket the lost souls trap to use my advanced teleporter closet, for guaranteed maxability. - map 28: fixed minor texturing issues - map 28: reshaped bridges in the yard where the red key niche is. Now are not ugly (were because of me fighting to resucitate dying framerate and thus adding dog-legs to the map) - map 28: added +200 MG42 ammo to the blue armor secret - map 28: partly get rid of the pre-UDMF textures with scale and rotation set from TEXTURES. - map 28: maxability confirmed - map 29: hunted DOORTRAK to extinction - map 29: applied new sound effects to all doors and elevators - map 29: improved the yellow key trap algorithm - map 29: removed one unnecessary volcabus replacing him back with a mancubus - map 29: reworked the Wham episode into actual game mechanic: mercy-killing all the tortured marines also kills the FUN archviles - map 29: doubled the number of mummies in the monster closet (replaced pinkies with them earlier this year): mummies are not pinkies, their strenth is their numbers! - map 29: marked two secrets as secrets, thus increasing their number to 5 - map 29: connected one room to another room's monster closet so that when it opens they become one. Reason: the annoying last straggler problem, normal backtracking route was bypassing the five pain elementals trap leaving those sad and unloved. - map 29: maxability confirmed - map 30: added instant death to the bottom of the abyss - map 30: fixed two armor bonuses stuck in the void thus ruining your item count - map 30: applied new sound effects to all doors and elevators - map 30: exterminated DOORTRAK everywhere outside the UAC base - map 30: added an aquarium and a secret mech bay to the UAC base - map 30: widened many passages and heightened some doors so that you can bring the mech to the central round hub area. - map 30 fixed several texturing errors - map 30: maxability confirmed - map 31: hunted DOORTRAK to extinction - map 31: applied new sound effects to all doors and elevators - map 50: hunted DOORTRAK to extinction - map 50: applied new sound effects to all doors and elevators - map 32: changed the bosses' minion spawning mechanic and the crowd composition. Reason: to reach maxability, had to make all monsters explode when the boss dies -- for which I needed to give them a TID when they spawn. BUT their spawning mechanics, turns out, were buried so deep in the hardcoded engine innards (the Doom2 boss cube) so I'd have to recreate all that jazz by hand. Too lazy, I simply made my own mechanism with gambling and loose women. My spawner cubes are monsters whom the boss spawns inside an advanced teleporter closet. They are then teleported to random spots mid-air and fall slowly to the ground. When they see the player they make a "Boo!" sound. These cubes are physical, they can be shot and perform monster spawning on death. What gets spawned is controlled via lists I composed myself. Include some really rare monsters never seen before. So as you can see, you will NEVER get telefragged again, and no monster will never pop in your face unexpectedly when you are about to shoot a rocket. They can fall on your head, though :p As a downside (or FUN, decide for yourself) I amped those lists that can now include mini-bosses when the Boss goes into his last stand mode. Ancient arachnotrons, dukes of hell, volcabi, archviles -- that sort of "fun and balanced". New sounds: KYBOCUB1, KYBOCUB3 - map 32: finally noticed and fixed a great blunder in bosses' attack patterns (inheritance was NOT working -- DECORATE classes do not behave like classes with virtual methods, ancestor's state's Goto leads to ancestor' states instead of inherited ones). As a result, ITYTD version became WEAKER and the UV version became STRONGER, and the coop version is INSANE. I have completely reorganized the code gathering every state in a single class, and key parameters are now controlled via arguments you set in the map editor. - map 32: made the boss turn literally red (performs a palette swap) when he goes into the last stand mode, emitting an unholy roar. I was unaware this was even possible until I noticed Mark-sensei's scripts for coloring dresses on mannequins in map 20. - map 32: fixed a tiny problem with the boss retaliating each time he flinches, by clearing attack cooldowns: using a minigun resulted in... him spamming a powerful attack non-stop because he was flinching non-stop. I added a cooldown to that cooldown-clearing retaliation. - map 32: fixed a blunder where you could flinch the boss before he roars, thus preventing both the roar and the health indicator from appearing (minigun again) - map 32: improved bosses' nuke launch sound - map 32: changed map geometry (more open sky, less cave ceiling) and made bosses' seeking thunderbolts die if they touch the edge of said ceiling -- e.g. they can only exist under open sky now - map 32: changed the map geometry again adding a tunnel below the southern part of the arena connecting the "horns" of the icy lake so they stop being deathtraps. Moved some ammo there. Don't get over yourself about having cover: if you hide there, what would happen? You get swarmed, the tunnel is narrow and slippery, the boss switches to spamming thunderbolts nonstop... It's a deathtrap :D - map 32: replaced the bosses' thunder attack animation. Reason: with him enlarged, his flashing upper arms remained above the upper screen edge most of the time, leaving you with no clue to the bosses' actions. New sprites via simple retouching and frankensteining: ICOT frames ABCDEFGHIKLMNOPQRSTUVWXYZ, all front only of course. The animation is still inexpressive crap but it gets the job done. - map 32: tweaked the thunderbolts appearance, mostly their death animation - map 32: fixed the bosses' fire breathing animation (ICOA frames E nnd F): I desaturated the yellow flame, to look like frost breath then added mist-like whitish overlay. - map 32: fixed the bosses' sprite clipping through the arena edges if you looked around while he was still rising. I decreased his initial scale from 10.0 to 8.0, a script enlarges his sprite slowly from 8.0 to 10.0 starting at the moment he sees you, creating also an impression of him coming closer to loom. Requires Zandronum 3.1 to work in multiplayer, see Zandronum 3.0 bug https://zandronum.com/tracker/view.php?id=3847 fixed in 3.1 - map 32: maxability confirmed
  8. 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
  9. 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.
  10. 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...
  11. 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 } }
  12. 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(
  13. 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.
  14. 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.
  15. 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.
×