/* Custom BDv21 build, modded and fixed by ChebMaster === NEW FEATURES ADDED ================================================================================= 1 --- Any gore that lands in lava, chars and burns ----------------------------------------------------- Reason: because why the fug not. Dead bodies, severed limbs, chunks of bodies, blood splashes, falling maggots, dropping blood - all now invoke "BDCheckFloorType" and smoke or flame or char on contact with floor if "IsOverLava" === CHANGES TO GAMEPLAY ================================================================================ 1 --- Nerfed the crap out of Lost Souls ---------------------------------------------------------------- Reason: because BDv21 turned them into Demonic Spiders - exceptionally OP and decidedly UNfun to fight. All other monsters have strengts counterbalanced with weaknesses. The BDv21 Lost Soul, on the other hand : a) has high health; b) is immune to flame forcing you to switch weapons; c) *avoids* your melee attacks forcing you to chase after it possibly into bad situations; d) has ungodly attack rate allowing it to spam melee attacks with no telegraphing and no wind-up. Something from that list had to go. So, I: a) reduced its fire immunity to mere 75% resistance - it *is* killable with a flamethrower, it's just wasteful to do so. b) removed it retreating in response to you closing in b) removed its ability to spam point-blank attacks: if it tries attacking at closer than 160 map units, it retreats to that range before attacking. So if you see a lost soul backing away, that's a wind-up for an attack. If it gets stuck and can't retreat to desired distance it runs out of patience in one second and attacks anyway. 2 --- Made revenants fire homing fireballs but unguided rockets ---------------------------------------- Reason: more visually distinuishable, you see right away if it fired a homing projectile or started firing an unguided volley, those require different dodging. 3 --- Changed the revenant missile launcher ------------------------------------------------------------ Reason: to match my changed revenants and to give it real alt-fire. a) halved the primary fire rate and made it fire homing fireballs b) increased ammo count four times (to 400 with a backpack) and made the primary fire cost 4 ammo, with alt fire unguided rockets costing 1 ammo. Now you have a real devastator with up to 400 shots - with a tiny caveat of being hard to aim because it has no iron sights. === BUG FIXES ========================================================================================== 1 ------ Nazis, archviles and spider masterminds were losing their TID on spawn ------------------------ The trouble: all those monsters got their TID changed to 736 on spawn thus BREAKING any maps that relied on scripting them! Details: I fixed script 177 (void) in DYNAMICLEV they all run to check for Wolfenstein to restore the previous actor's TID after performing its Wolfenstein check. 2 ------ Nazis were dropping dead shortly after teleporting -------------------------------------------- The trouble: the nazis (and their dogs, but that's a separate EDAY fix) were rapidly drained of health shortly after teleporting until they dropped dead Details: unlike all other BD monsters, they did not have damage immunity for damage types "GibRemoving" and "TeleportRemover" 3 ------ Revolver ammo change via alt fire was conflicting with player's reflexes to aim down iron sights The trouble: changing ammo type is a cool and insane idea, I like, BUT any trained BD player has a reflex to aim down iron sights via alt fire (because crosshair is for weaklings) so, me playtesting it resulted in lots of "oops, I unloaded it again and got eaten" moments Details: I changed revolver ammo change from alt fire to Dual wield/special action 4 ------ Demon strength rune was counting towards item count ------------------------------------------- The trouble: could ruin peoples perfect runs if dropped, say, in a cage or other inaccessible place 5 ------ Universal fix for several AOE friendly fire related bugs -------------------------------------- The trouble: friendly tanks would kill the player with their AOE cannon blast, also dead pain elementals would explode and kill the player Details: had to add a new damage type "FriendlyExplosion" and mod Player.txt: the player is specifically excluded from any mechanisms that prevent AOE friendly fire, so these mechanisms only work between monsters (which the marine NPCs are) but would *never* work between monsters and player. Sad, but true (I studied source code of Zandronum and GZDoom to confirm). All those checks in the code are wrapped in "if () { ... }" 6 ------ Fixed the NPC companions spawning at entering a new map --------------------------------------- The trouble: the old spaghetti code was not working properly (used integer offset of 32 instead of fixed-point offset of 32.0, with no checks whatsoever) , also was resulting in HERDS of those NPCs spawning if you had a misfortune of accumulating too many. Also: having no delay, was conflicting with alternate map starts I invented in a couple places in my build of EDAY Details: I commented out the old code in Script "BDInitialize" ENTER in CVARS, and created a brand new Script "SpawnNPCCompanions" ENTER , which a) works with a 2 second delay so any shenanigans relocating the player around the map on entering have a chance to finish. b) uses breadcrumbs method: the NPCs are spawned at player's former positions after he moves 32 units away. Then repeats. c) the total number of NPCs spawned is limited to 6 d) the spawning begins with the strongest NPSc, along the list of plasma, rocket, minigun, shotgun, rifle marines e) the number of any specific number of marines is limited to 5 -- so, if you had 17 plasma and 8 minigun marines following you, you get 5 plasma and 1 minigun at the start of the next map f) the script is easily modifable because the lists it uses are organized in string array constants 7 ------ Invulnerable revenants ---------------------------------------------------------------------- The trouble: the revenant-on-imp fatality could sometimes get interrupted (I still have no idea how) BUT revenant was only checking if it had an imp in his pocket when he performed a melee attack. So he stayed invulnerable (a very BAD thing for a glass cannon that fires homing projectlles that can kill you in two hits) until you got into his melee range - THEN he pulled that imp out of his pocket to proceed with the beatdown. Details: added missing checks like TNT1 A 0 A_JumpIfInventory("ImpFatality", 1, "FatalityImp") to his "LookingForPlayer" and "Missile" states 8 ------ Revenants, knights and barons falling off high places into pits ------------------------------- The trouble: if those monsters were placed in high places they could fall off of, they would do so, disregarding any blocking from "blocks monsters", if you woke them up then went away and they lost you and started wandering. Affected lots of places in EDAY with barons falling into nukage channel in map 6 and revenants jumping off their raised sniping positions in maps 11, 14, 31 and so on. The maps generated using Oblige 6.x would have most revenants, knights and barons down in lava pits. Details: Mark-sensei used A_Recoil to simulate slow movement of monsters walking around unhurriedly. Turns out, you can't do that for the following reasons: A) recoil happily ignores the "block monsters" linedef flag B) recoil happily ignores the height difference causing the monsters to fall into abysses So I simply commented all those lines out. The wandering monsters' movement became a bit jerky, BUT the trouble was fixed! 9 ------ Invisible arachnotron brain ------------------------------------------------------------------- The trouble: one of the two variations of arachnotron's brain (the one that leaves a crawling moaning brain) was invisible while in flight because it relied on old sprites NAHA* that were removed in BDv21 Details: copied those from older versions of BD 10 ----- Dead mancubi blocking polyobjects ------------------------------------------------------------- The trouble: unlike all other monsters, dead mancubi were guaranteed to block polyobjects, thus breaking my advanced elevators (EDAY map 18) and horizontal crushers Details: changed flags of Actor NoGutsFatso in Mancubus.txt 11 ----- Huge self damage from minigun casings landing in blood underfoot ------------------------------ The trouble: firing your minigun while walking across blood floor backwards left was causing massive self-damage Details: actor BloodSplashBaseSmall : BloodSplashBase3 from Splashes.txt did not have DamageType Blood set, so it was causing 1 regular damage Thus each empty casing landing under your feet was causing 1 self-damage without compensating it with healing you back for 1 hp as player's Pain.Blood state is designed to do 12 ----- Maggot-ridden corpses becoming charred corpses when hanging in fire NOT WORKING --------------- The trouble: various bodies full of writing maggots hanging in raging fires, with flies buzzing Details: Mark-sensei had an ingenious mechanism where fire sources (burning barrel, torches) at spawn spammed a cloud of projectiles "HumanBBQ" that exploded immediately inflicting "HumanBBQ" damage type. The maggot-laden corpses take 50000% damage from this damage type and have a specific death for it, which spawns actor HumanBBQ1, a generic charred hanging body. SADLY, this genius sistem was badly miscalibrated and was NOT working 95% of the time :( A) the explosion radius was *infinitesimal* (5) making it miss (as in case of actor FirePitsOfHell from EDAY 001, which spawned *one* projectile at its base. Of course it misses the bodies surrounding it with perfect reliability! B) the charred bodies were very plain and detracting from the variety C) many actors didn't have a delay between spawn and spawning a maggot spawner (a separate object) - so they got replaced with a charred body... that was still raining maggots! D) when it worked they were dropping health bonuses and other loot on switch My fix: A) Buffed the wimpy AOE damage radius from 5 to 128 B) Instead of replacing with the same charred body, created with maggot-less variants for each of the bodies to replace with. Thus hitting bodies too far from the fire is not really a problem. C) Replaced A_NoBlocking with A_ChangeFlag("SHOOTABLE", 0) + A_ChangeFlag("SOLID", 0) to prevent item drops on this specific death 13 ----- Imps thrown by revenants do no damage --------------------------------------------------------- The trouble: Mark-sensei had disabled collision with marines for all thrown monster projectiles after I buried him in bug reports "I killed myself with an imp as it bounced off the wall". Details: I returned marine collision for the variants thrown by monsters - for which I created also clones of the ricocheting variants specific to projectiles fired by monsters rather than the player */