everennui Posted March 22, 2017 47 minutes ago, scifista42 said: ZDoom tends to treat tag 0 as special, so I doubt that Thing_Remove called with tag 0 would actually remove everything tagged 0 from the map. That actually makes sense, since the player is, "0" too. 0 Share this post Link to post
Gez Posted March 22, 2017 The SWITCHES format check in SLADE is rather simple: entry is named SWITCHES entry size is a multiple of 20 last two bytes are 00. I presume it's the third item that fails here. You can force SLADE to treat it as a SWITCHES lump anyway, damn the consequences, by selecting it, opening the console, and using the command type switches force Then you can go back to it and check that the last row has its type set to 0. 1 Share this post Link to post
everennui Posted March 22, 2017 33 minutes ago, Gez said: The SWITCHES format check in SLADE is rather simple: entry is named SWITCHES entry size is a multiple of 20 last two bytes are 00. I presume it's the third item that fails here. You can force SLADE to treat it as a SWITCHES lump anyway, damn the consequences, by selecting it, opening the console, and using the command type switches force Then you can go back to it and check that the last row has its type set to 0. I literally have no idea what any of that means, and trying to find a tutorial on Google is an exercise in futility. The switches animate for me. I just can go in and add things. This might as well be it's own language.https://zdoom.org/wiki/SWITCHES I think Boom is maybe just for the l33ts. I'll just stick with GZDoom. I guess I'm just, "Another ZDoom mapper that doesn't know the basics of Doom mapping." (As some asshole suggested when I asked for a link to a reference. God forbid anyone try to learn it. If it isn't innate knowledge for you, you should just fuck off, right?) 0 Share this post Link to post
Gez Posted March 22, 2017 SLADE has a console. You can open it with View->Console, or with the Ctrl-2 shortcut. 1 Share this post Link to post
Albertoni Posted March 22, 2017 2 hours ago, scifista42 said: Nothing specific to monster corpses, just Thing_Remove for arbitrarily tagged things, so call that with the tag of the monsters at some point(s) in time. I was going to give them a tag anyway... I don't know if the tag is removed when the thing dies, but lemme go and do some scientific experimentation to them. Thanks a lot. For those in the future who get here by google: In case this works out and I don't need to come back, the method I'm thinking of is: Spawn monster, give it a UniqueTID(); Give it action special Script_Execute; Do a Thing_Remove(ActivatorTID()); If that doesn't work, either the monster didn't keep its thing ID when dying or the activator of a dead monster's script is who killed it. In which case, good luck. The second case might even make ZDoom crash. 0 Share this post Link to post
everennui Posted March 22, 2017 (edited) That's exactly what it was. I was taking apart an engine and thinking, "I don't need these extra parts." Thank you, Gez. @Albertoni The parameters of Thing_SpawnFacing are (tid, type, nofog, newtid) <--- This is where your new TID will be (for spawned monsters). You could use a line to do action 80 and call on Thing_Remove from there. That might be what you just said. I'm confused by, "UniqueTID();" as I've never seen it before or thought to use it. (If it's an ACS function.) I'll just google it quick. Yeah. Don't use that. Use Thing_Spawn or Thing_SpawnFacing and give it a TID through there. I think UniqueTID will give every monsters a different TID so it'd be really hard to target them for the Thing_Remove You could probably do a While loop (if that's even what it's called) so that While TID(#) is more than X it waits until it goes over that number and then when it goes over X it will execute Thing_Remove. That's beyond my ability though. Edited March 23, 2017 by everennui 0 Share this post Link to post
Albertoni Posted March 23, 2017 2 hours ago, everennui said: Yeah. Don't use that. Use Thing_Spawn or Thing_SpawnFacing and give it a TID through there. I think UniqueTID will give every monsters a different TID so it'd be really hard to target them for the Thing_Remove [...] That's beyond my ability though. And that's way under my ability. :P Here's how I'll do it, more or less. I'll try ActivatorTID first since it's simpler, but if that doesn't work this one will certainly. script 1 (){ // spawns the monster int id = UniqueTID(); Thing_Spawn (placeID, monsterType, 0, id); Thing_SetSpecial (id, ACS_ExecuteAlways, 2, id); // Unsure if ExecuteAlways is required or even a good idea here... // Also, note how I'm passing the id as an argument for script 2. } script 2 (int myId){ Delay(300*35); Thing_Remove(myId); } 0 Share this post Link to post
everennui Posted March 23, 2017 (edited) 1 hour ago, Albertoni said: And that's way under my ability. :P Here's how I'll do it, more or less. I'll try ActivatorTID first since it's simpler, but if that doesn't work this one will certainly. script 1 (){ // spawns the monster int id = UniqueTID(); Thing_Spawn (placeID, monsterType, 0, id); Thing_SetSpecial (id, ACS_ExecuteAlways, 2, id); // Unsure if ExecuteAlways is required or even a good idea here... // Also, note how I'm passing the id as an argument for script 2. } script 2 (int myId){ Delay(300*35); Thing_Remove(myId); } Just make sure you're using the same variable. You've got it as two here. id & myId. I might be wrong and probably am, but I think you want the integer outside of Script 1. Something about global scope. (I'm probably wrong.) Edited March 23, 2017 by everennui 0 Share this post Link to post
Albertoni Posted March 24, 2017 (edited) Solved, see my next post if you were interested in this Edited March 26, 2017 by Albertoni 0 Share this post Link to post
Misty Posted March 25, 2017 Can someone explain why I get this visual error in non hardware ports? I put textures everywhere,where I saw HOM. Second question,how to make monster teleporter which triggers with switch? 0 Share this post Link to post
Bauul Posted March 25, 2017 2 hours ago, MysteriousHaruko said: Can someone explain why I get this visual error in non hardware ports? I put textures everywhere,where I saw HOM. Second question,how to make monster teleporter which triggers with switch? For your first question, is this on Chocolate Doom or a more recent port just running in Software Mode? For your second question, have the switch lower the bars of a caged monster somewhere off-map that is surrounded by teleport lines. The bars raise, the monster walks over the teleport lines and teleports in. Just make sure you use a pipe sector or merged sector to wake the monster up with player sounds before the player hits the switch. 0 Share this post Link to post
Misty Posted March 25, 2017 1 minute ago, Bauul said: For your first question, is this on Chocolate Doom or a more recent port just running in Software Mode? I use boom format in this map. I tested that place with prboom+ and zdoom,which don't have hardware options. In Qzdoom and Gzdoom,this place doesn't show any visual bugs like this. 0 Share this post Link to post
Albertoni Posted March 25, 2017 Could be a nodebuilder being dumb. Open your editor and figure out where to change that. For GZDoom builder, it's in Tools -> Game Configuration -> Choose your format on the left -> Nodebuilder, then switch both to ZDBSP - Normal (zero reject). 1 Share this post Link to post
Misty Posted March 25, 2017 Yeah,I changed nodebuilder as you said and this problem went away. I was using zenmode for nodebuilding. Thank you. 0 Share this post Link to post
Albertoni Posted March 26, 2017 (edited) Edit: Turns out you need a +ISMONSTER flag to be dormant. Nevermind this yet again. So I got into a pickle with QZDoom's latest version. Dormant monsters don't stay dormant. https://www.dropbox.com/s/se39akxqhjoqrnr/example.wad?dl=1 You should see only one source of rockets as 2 are marked dormant. Yet you see 3. Why? Are friendly monsters un-dormant-able or something? Decorate code is here: Spoiler actor UpgradeableTurret 7800 { spawnid 170 obituary "%o was somehow killed by his own devices???" health 450 radius 32 height 64 meleeDamage 0 mass 100 speed 0 +DONTTHRUST +FRIENDLY +NODAMAGE +NOGRAVITY +NOBLOOD -SOLID var int user_firingSpeed; var int user_weapon; states { Spawn: TNT1 A 0 NoDelay { user_firingSpeed = 35; user_weapon = 0; } TNT1 A 10 Goto Look Look: TNT1 A 10 A_Look Loop See: TNT1 A 1 TNT1 A 0 A_JumpIf(user_weapon == 0,"Pistol") TNT1 A 0 A_JumpIf(user_weapon == 1,"Shotgun") TNT1 A 0 A_JumpIf(user_weapon == 2,"SuperShotgun") TNT1 A 0 A_JumpIf(user_weapon == 3,"Rocket") TNT1 A 0 A_JumpIf(user_weapon == 4,"Plasma") TNT1 A 0 A_JumpIf(user_weapon == 5,"BFG") Loop Pistol: TNT1 A 1 A_SetTics(user_firingSpeed) TNT1 A 0 A_FaceTarget TNT1 A 0 A_CustomBulletAttack(5.6, 0, 1, 5) TNT1 A 1 A_PlaySound("weapons/pistol", CHAN_WEAPON) Goto look Shotgun: TNT1 A 1 A_SetTics(user_firingSpeed) TNT1 A 0 A_FaceTarget TNT1 A 0 A_CustomBulletAttack(5.6, 0, 7, 5) TNT1 A 1 A_PlaySound("weapons/shotgf", CHAN_WEAPON) Goto look SuperShotgun: TNT1 A 1 A_SetTics(user_firingSpeed) TNT1 A 0 A_FaceTarget TNT1 A 0 A_CustomBulletAttack(11.2, 7.1, 20, 5) TNT1 A 1 A_PlaySound("weapons/sshotf", CHAN_WEAPON) Goto look Rocket: TNT1 A 1 A_SetTics(user_firingSpeed) TNT1 A 0 A_FaceTarget TNT1 A 0 A_SpawnProjectile("Rocket") TNT1 A 1 A_PlaySound("weapons/rocklf", CHAN_WEAPON) Goto look Plasma: TNT1 A 1 A_SetTics(user_firingSpeed) TNT1 A 0 A_FaceTarget TNT1 A 0 A_SpawnProjectile("PlasmaBall") TNT1 A 1 A_PlaySound("weapons/plasmaf", CHAN_WEAPON) Goto look BFG: TNT1 A 1 A_SetTics(user_firingSpeed) TNT1 A 0 A_FaceTarget TNT1 A 0 A_SpawnProjectile("BFGBall") TNT1 A 1 A_PlaySound("weapons/bfgf", CHAN_WEAPON) Goto look Pain: Goto See Death: TNT1 A -1 Stop } } Edited March 26, 2017 by Albertoni 0 Share this post Link to post
Misty Posted March 28, 2017 I've tried rename textures inside TEXTUREx lump(I touched only custom textures) and now my ports can't recognize them. Before I did this thing,I've cleared unused patches,textures and flats. What I did wrong here?Should I first rename outside textures before I go into TEXTUREx lump? 0 Share this post Link to post
Gez Posted March 28, 2017 What did you do exactly? I'm a bit confused with what you call "outside textures"... 0 Share this post Link to post
Misty Posted March 28, 2017 Just now, Gez said: What did you do exactly? I'm a bit confused with what you call "outside textures"... I'm talking about textures which are in PP_START marks. I know it's the same thing,but easier for me to recognize. Well,first I've cleared unused things and later tried rename textures inside TEXTUREx and now boom port can't find them. Zandronum shows "checkboard" instead of textures. 0 Share this post Link to post
Gez Posted March 28, 2017 The graphics between PP_START/PP_END aren't textures, they're patches. You're supposed to be building composite textures by assembling together one or more patches. Textures don't need to have the same name as their patch. Example: the Doom II texture "ASHWALL2" is made of the patch "RW22_1". Now if you were to rename ASHWALL2 into, say RENAMETX, and don't change its definition so it still uses RW22_1, then everything should be fine. Maps that used texture ASHWALL2 will have to be updated to use RENAMETX instead, obviously, but otherwise everything will work. If you instead changed ASHWALL2 to use a patch named RENPAT instead of RW22_1, then of course you'll have to rename RW22_1 if you want the texture to be successfully created. My best guess is that you've renamed textures and forgot to update the maps that used them. Renaming the patches will not fix that! It'll just mean that your maps will use textures that no longer exist (under the name they expect), and that the textures that replaced them are built from patches that no longer exist (under the name they expect). Two wrongs ending up making a bigger wrong. 0 Share this post Link to post
Misty Posted March 28, 2017 7 minutes ago, Gez said: The graphics between PP_START/PP_END aren't textures, they're patches. You're supposed to be building composite textures by assembling together one or more patches. Textures don't need to have the same name as their patch. Example: the Doom II texture "ASHWALL2" is made of the patch "RW22_1". Now if you were to rename ASHWALL2 into, say RENAMETX, and don't change its definition so it still uses RW22_1, then everything should be fine. Maps that used texture ASHWALL2 will have to be updated to use RENAMETX instead, obviously, but otherwise everything will work. If you instead changed ASHWALL2 to use a patch named RENPAT instead of RW22_1, then of course you'll have to rename RW22_1 if you want the texture to be successfully created. My best guess is that you've renamed textures and forgot to update the maps that used them. Renaming the patches will not fix that! It'll just mean that your maps will use textures that no longer exist (under the name they expect), and that the textures that replaced them are built from patches that no longer exist (under the name they expect). Two wrongs ending up making a bigger wrong. So,how to rename textures or patches safely and not get any error and messages? I have copies of my map without any changes. Anyway, I didn't know about this,I shouldn't be so straightfoward. 0 Share this post Link to post
Gez Posted March 28, 2017 Open your map and do a search & replace for the old texture name with the new. If you also rename the patch, you'll have to update the texture definition to use the new patch name, too. Really it's like if I told you to go meet Bob in Smolton, but in the meanwhile Smolton had been renamed to Lilburg and Bob changed his name to Alfred. If your instructions aren't updated to "meet Alfred in Lilburg" you're never going to find him. 3 Share this post Link to post
everennui Posted March 28, 2017 In map two of, Ancient Aliens there is a generalized action of 15226 for a floor that drops with the use of any blue key. I looked at it and it is using a locked door trigger. I have no idea how this works. How can I use a Blue Skull Key to trigger a set of stairs that rise? ...or is this impossible? 0 Share this post Link to post
scifista42 Posted March 28, 2017 (edited) Look carefully at which sector does the switch actually affect. There is a dummy sector outside the map bounds with a voodoo doll, a scrolling floor, and a closed door. Pressing the switch opens this door (if you have the respective key, as it uses a locked door open action), which makes the voodoo doll be pushed by the scrolling floor across a linedef that does the action that you'll note to happen within the map. This action could be anything, even a sequence of actions could be triggered this way if multiple linedefs were placed in a row and the voodoo doll crossed all of them. 1 Share this post Link to post
everennui Posted March 28, 2017 Okay. Now I understand why people use them. So the key opens a door and then the voodoo doll goes across a conveyor belt with a W1 Line with an action to Floor Lower. That's pretty clever. Thank you so much. This works great. Mind = blown. 0 Share this post Link to post
Albertoni Posted March 28, 2017 Voodoo dolls are <3. With enough of them and a lot of ingenuity, you can do 90% of what ACS scripting can do. 0 Share this post Link to post
Linguica Posted March 28, 2017 I know I have said this many many times but I feel like voodoo conveyor scripts were an absolute stroke of genius for Boom, and all the more so for being basically unintentional. They allow you to set up simple actions without too much trouble, but setting up big and complex "scripts" is a real pain in the ass. This helps enforce the KISS formula - you *want* everything to be simple, and if you're trying to do something that is overly complex, it forces you to think about it. You can "spawn in" monsters, but you have to actually place all the monsters on the map at the start. Again, this makes it more difficult to overuse them, or do something like "spawn in 100 Cyberdemons at these 100 points" without a huge amount of busywork. Because the "scripts" are composed of Doom gameplay elements, it is basically impossible to use them to create something "un-Doomy." Which is not to say that there is something wrong with modding Doom to do something different, but in Boom you can't make long stupid "cutscenes" of freezing the player in place and having a lot of dumb poorly written hudmessages to advance a "story," which is an aspect of ZDoom mapping that has not aged well at all. Because all the "scripts" are physical, they aren't intimidating in the same way scripting is - a lot of people will just refuse to even look at a scripting language, but a voodoo doll on a conveyor belt being pushed through tripwires is a "physical" thing that is relatively intuitive and easy to grasp. Because the "scripts" are physical constructs, they are impossible to obfuscate or result in code being lost - contra ZDoom maps where ACS scripts are compiled bytecode and you can't examine the original scripts unless the author includes them. It's inherently "open source." It scratches the same itch children have from constructing / watching Rube Goldberg contraptions. 7 Share this post Link to post
everennui Posted March 28, 2017 So I got the stairs to lift, and now I want to create a lift that works in the same fashion. My problem is that the door opens and stays open long enough for the voodoo doll to pass through several times before the door closes again. This makes it so that lift goes down and up 2-3 times. I tried putting a lift on the conveyor belt so that their'd be a little bit of a delay before the the player can pass to get to the teleport line, but if the player presses the use button on the lift before the lift lowers all the way, he'll get stuck on the lift, and since there is a WR before this, the voodoo doll will never cross that line again which breaks the lift. I tried to make the conveyor belt longer, but it seems like the longer you make it, the faster it goes. I'm looking at boomedit.wad and there's one that moves when the sector changes height, but I can't figure how I'd do that with a key. 0 Share this post Link to post
Not Jabba Posted March 28, 2017 1 hour ago, Linguica said: They allow you to set up simple actions without too much trouble, but setting up big and complex "scripts" is a real pain in the ass. This helps enforce the KISS formula - you *want* everything to be simple, and if you're trying to do something that is overly complex, it forces you to think about it. Because the "scripts" are composed of Doom gameplay elements, it is basically impossible to use them to create something "un-Doomy." Well said! This is why I've been using conveyors/dummy sectors for all my effects so far, even though I'm mapping in Hexen format. Boom-style compatibility just feels right. 0 Share this post Link to post
baja blast rd. Posted March 28, 2017 (edited) 51 minutes ago, everennui said: I tried to make the conveyor belt longer, but it seems like the longer you make it, the faster it goes. The key is to keep the linedef with the scrolling action of a fixed length (I usually work with multiples of 32). As a reference for studying timing-based Voodoo doll scripts, some time ago I made a wad with toilets that 'work'. Here's the wad if you want to study the mechanisms (I'll warn you that UV is really hard, in case you feel like playing it too). I often use tiny one-second Boom lifts as a gating mechanism in these. This wasn't too tricky to figure out how to do (I was still a relative Voodoo doll noob back then), but it did involve a decent amount of testing to get the distance between actions in the scroller just right. Edited March 28, 2017 by rdwpa 1 Share this post Link to post
baja blast rd. Posted March 28, 2017 (edited) Question: if I have a wad open in GZDB (say btsx_e1a.wad), which needs a resource wad specified in Map Options to view textures and stuff (say btsx_e2a.wad), it seems like I have to specify the resource wad again when I change levels. Is there a way to get GZDB to keep the resource wad active for every level after I specify it once? (I use a 2015 build of GZDB, if you are wondering, just in case newer GZDBs can do this.) 0 Share this post Link to post