Chud Posted August 14, 2022 Hello mappers and modders, I'm a noob to Doom mapping and am almost done with my first full map. One thing I still have to clean up is in regards to a 'prison cell' I have in my map. My intention here is to have a cell with a gate that is impassible and blocks projectiles, until an item is collected, and the gate raises, allowing monsters to leave the cell...the pics show what I am working with. Originally, I had a 3D floor in that empty space above that was textured as a gate. So when a key was taken it raised the bottom of the 3D floor and could let the monsters out. This worked functionally, however, with the grate texture, it left void holes on the side. I can't figure out how to get around these void holes. I tried using midtextures, and visually it looks fine, however since there's no 3d floor I cant figure out how to raise the gate and let things through. Can anyone think of a workaround for this? Is there a way to apply a midtexture just to a 3D floor so its moveable? Maybe a way to remove the midtexture and make the line passable when the object is collected? I'm open to a script however I have no experience with ACS and would have no idea where to start. Otherwise I can't think of a way around this. I actually originally also had a small 3D floor directly above that one that made a sort of fence on the platform above but that was confusing things and also had void holes so I've removed it for now. Would be great if i could have both. Maybe i should just deal with the void holes or find another style for this room? Let me know what you think or if you want more info. Thanks 0 Quote Share this post Link to post
Lucius Wooding Posted August 15, 2022 Is there a reason you can't just make individual bars out of sectors with the same tag, then trigger that tag to raise/lower? If there's small enough space between them no projectiles can escape. However if you also want to prevent hitscan shots from going through you might need to use self referencing/crystal sectors to make a solid invisible barrier. It's a little bit of a workaround but worth learning for vanilla/Boom targeted maps to achieve that effect. Or if you're mapping for more modern ports, there is a "block shots" linedef flag. 0 Quote Share this post Link to post
Z0k Posted August 15, 2022 (edited) 1) if the 3d floor worked for you then maybe reduce the thickness so you dont see the void on the sides, it usually works wonder when you use it with 1 witdh of thickness because its barely noticeable. 2) use a script, you can make the lines impassable and block everything so projectiles and hitscan cant get trought (however sounds wouldnt get trought so your enemies wouldnt hear and see player) once the player take the thing you want to activate the trap you change the properties of the line to remove the texture of the gate and the impassible and "block" everything properties. and then this script which its from the example wad i made for you: #include "zcommon.acs" script 1 (void) { SetLineBlocking(3, BLOCK_NOTHING); SetLineTexture(3, Side_Front, Texture_Middle, "-"); } as soon player take the chainsaw, the line with tag 3 will not block anything and the texture will be remove letting enemies go outside. testorino.zip Edited August 15, 2022 by Z0k Forgot to add the example wad. 0 Quote Share this post Link to post
SMG_Man Posted August 15, 2022 2 hours ago, Chud said: Maybe a way to remove the midtexture and make the line passable when the object is collected? This is probably the easiest way to accomplish it. You would start with a line that has a midtexture, the impassable flag set, and a unique ID/tag. Next you give your item action 80 (script execute). Last, all you have to do is make a script that does exactly what you mentioned. For example, #include "zcommon.acs" script "gate_open" (int line_id) { Line_SetBlocking(line_id, 0, 1); SetLineTexture(line_id, SIDE_FRONT, TEXTURE_MIDDLE, "-"); SetLineTexture(line_id, SIDE_BACK, TEXTURE_MIDDLE, "-"); } This script will remove the middle texture(s) and remove the impassable flag from whatever line ID/tag you provide for the first argument. Simple as that. Alternatively, if you would like to see the prison gate(s) in motion, that could also be accomplished with a few 3D floors and a simple script. Here's an example I whipped up in a few minutes: prison_bars.zip 0 Quote Share this post Link to post
Chud Posted August 15, 2022 1 hour ago, Z0k said: 1) if the 3d floor worked for you then maybe reduce the thickness so you dont see the void on the sides, it usually works wonder when you use it with 1 witdh of thickness because its barely noticeable. 2) use a script, you can make the lines impassable and block everything so projectiles and hitscan cant get trought (however sounds wouldnt get trought so your enemies wouldnt hear and see player) once the player take the thing you want to activate the trap you change the properties of the line to remove the texture of the gate and the impassible and "block" everything properties. and then this script which its from the example wad i made for you: #include "zcommon.acs" script 1 (void) { SetLineBlocking(3, BLOCK_NOTHING); SetLineTexture(3, Side_Front, Texture_Middle, "-"); } as soon player take the chainsaw, the line with tag 3 will not block anything and the texture will be remove letting enemies go outside. testorino.zip Thanks for the great response. I can't believe I didn't think of just making it really small. I used a line width of 0.5 and yea you can barely see it. This is probably going to be best for me since it doesn't block the area above the gate as well. But I'll keep that script in my toolbox maybe for my next map. Cheers! 0 Quote Share this post Link to post
Chud Posted August 15, 2022 1 hour ago, SMG_Man said: This is probably the easiest way to accomplish it. You would start with a line that has a midtexture, the impassable flag set, and a unique ID/tag. Next you give your item action 80 (script execute). Last, all you have to do is make a script that does exactly what you mentioned. For example, #include "zcommon.acs" script "gate_open" (int line_id) { Line_SetBlocking(line_id, 0, 1); SetLineTexture(line_id, SIDE_FRONT, TEXTURE_MIDDLE, "-"); SetLineTexture(line_id, SIDE_BACK, TEXTURE_MIDDLE, "-"); } This script will remove the middle texture(s) and remove the impassable flag from whatever line ID/tag you provide for the first argument. Simple as that. Alternatively, if you would like to see the prison gate(s) in motion, that could also be accomplished with a few 3D floors and a simple script. Here's an example I whipped up in a few minutes: prison_bars.zip I ended up going with another workaround, but thank you so much for the script writeup and the example. I'll keep this one in mind for my next map. Honestly now that you wrote it out it doesn't seem nearly as difficult as I expected it to be. Maybe ACS isn't so scary after all lol. Programming of any kind (even just doom scripting) always just seemed like it went over my head but I'll give it another go. 0 Quote Share this post Link to post
Chud Posted August 15, 2022 1 hour ago, Lucius Wooding said: Is there a reason you can't just make individual bars out of sectors with the same tag, then trigger that tag to raise/lower? If there's small enough space between them no projectiles can escape. However if you also want to prevent hitscan shots from going through you might need to use self referencing/crystal sectors to make a solid invisible barrier. It's a little bit of a workaround but worth learning for vanilla/Boom targeted maps to achieve that effect. Or if you're mapping for more modern ports, there is a "block shots" linedef flag. Mostly because I like the grate texture and wanted to use that haha. I'll look into that kind of thing as well just to have in my toolbox though. Thanks for the reply. 1 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.