Divided2 Posted May 30 For my mod, I've created a level where you wake up in an abandoned woods full of invisible demons. I want it to be that whenever you kill 70 enemies in this level, it exits, shows the intermission screen, and then goes to the next map. If anyone could help me out with this, I would be very happy! 2 Quote Share this post Link to post
Kappes Buur Posted May 30 (edited) You could do this with GZDoom, ZDoom, Zandro, probably Eternity or any port which sufforts ACS scripting. https://zdoom.org/wiki/ACS https://zdoom.org/wiki/ThingCount Or GZDoom which supports ZSCRIPT https://zdoom.org/wiki/ZScript Edited May 30 by Kappes Buur 2 Quote Share this post Link to post
DiavoJinx Posted May 31 (edited) As a thought experiment (I don't actually know the answer; I'm no genius with scripting/programming) I feel like this idea may work: Give every monster the same tag number. Write a script that runs on a loop where it checks if a tag# monster dies, and if so then increment a counter. Another script continually checking that counter so when it hits 70, it exits level. That would be with GZDoom & ACS scripting, which is all I know. Hopefully I'm basically right, and someone experienced can lay that out for you. Edited May 31 by DiavoJinx 0 Quote Share this post Link to post
DeetOpianSky Posted May 31 (edited) The map format and target port would help greatly in how you would accomplish this. In ACS you'd probably want a While loop running that delays a few tics if less than 70 enemies have been killed, or executes the level exit if 70 enemies have been killed. Some of the above examples touch upon this and Chubz has a great tutorial on how these work. In MBF21 with UMAPINFO you could use a bossaction or combination of boss actions that trigger a door(s) across voodoo closets; this would entail having set numbers of enemies of each type, then when 35 X enemies and 35 Y enemies (the totals of each) are killed, the doors open and the voodoo walks over the level exit. Bossactions will only occur when all the enemies of the specified type are killed so it can get complicated or require several closets (one for each possible combination of the totals across several types to get to 70). If they're all pinkies it would like this: bossaction = Demon, (switch/action you want for whatever is blocking your voodoo), (whatever tag is on the wall/door) -Quoted from the UMAPINFO article linked above: "bossaction = thingtype, linespecial, tag: Defines a boss death action, overriding any map default actions. Tag 0 is not allowed except for level exits. Shoot triggers, teleporters and locked doors are not supported. A map may define multiple death actions. Thingtype uses ZDoom's class names (see list below.)" In vanilla, you'd make your map a level where the exe has hard coded bossactions for that level, and use the appropriate enemy type. Edited May 31 by DeetOpianSky additional link/info. 0 Quote Share this post Link to post
kalensar Posted May 31 Theres some really decent Ideas going on here, and it is a cool mechanic that is definitely underutilized in DOOM/ Doom 2 specifically due to the game's base build. In fact, one of the earliest example in FPS history that I can recall that does this would Halo 1 on map 343 Guilty Spark. So the easiest place implement this is in ZDoom/GZDoom. Then next route is to make it as painless as possible when coding the even to happen. THere are a few options available in the form of MAPINFO Flags and MOnster Flags. https://zdoom.org/wiki/MAPINFO/Map_defi Spoiler NOw this tactic with MAPINFO says it relies on the A_BossDeath function. So on Vanilla Monsters thats : Mancubus, Arachnotron, CyberDemon, Baron of Hell and SpiderMasterMind. YOu can also use some custom monsters that have the A_BossDeath used in their Death State. So in MAPINFO it would look similar to this, if Im understading this correctly Spoiler Map06 "Run Forest Run" { Next = Map07 SpecialAction = "BossIMP" , "SpecialAction_ExitLevel" } 0 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.