Shadow Dweller Posted July 22, 2009 In map 3 of Hexen there are two rooms that, when a certain event is triggered, numerous sectors of the floor and ceiling all raise and lower at the same time. I'm wondering what the script for this is. I tried opening the map in DB2 and looking at the script in the Script Editor but it would only give me a blank screen. 0 Share this post Link to post
SaladBadger Posted July 22, 2009 The script is compiled, and the text lump used to compile it wasn't left behind. It needs to be decompiled -- Usually a program DEACC is used for it, but I don't have a link handy right now. You can get it from the original Doom Builder though. 0 Share this post Link to post
Kappes Buur Posted July 22, 2009 http://www.doomworld.com/idgames/index.php?id=4012 0 Share this post Link to post
printz Posted July 22, 2009 Doesn't the Doom Builder editor come with an integrated decompiler, as soon as you go to "edit BEHAVIOR lump"? 0 Share this post Link to post
Shadow Dweller Posted July 22, 2009 Kappes Buur said:http://www.doomworld.com/idgames/index.php?id=4012 I tried running the program but closes immediatly after opening command prompt. (pretty common behavior for anything I try to run under command prompt, actually). printz said Doesn't the Doom Builder editor come with an integrated decompiler, as soon as you go to "edit BEHAVIOR lump"? I went into the Script editor and tried importing the hexen.wad file itself thinking maybe that it would display all the scripts used in the game, but doing so only managed to freeze Doom Builder. Doesn't anyone have a sample script that does something similar to this that I could build off of? Or know of a tutorial that covers this? 0 Share this post Link to post
SaladBadger Posted July 22, 2009 Shadow Dweller said:I tried running the program but closes immediatly after opening command prompt. (pretty common behavior for anything I try to run under command prompt, actually). To solve this problem just run DEACC.exe from CMD.EXE. That way the output will stick around after closing. 0 Share this post Link to post
Gez Posted July 22, 2009 printz said:Doesn't the Doom Builder editor come with an integrated decompiler, as soon as you go to "edit BEHAVIOR lump"? Doom Builder does. Doom Builder 2 doesn't. 0 Share this post Link to post
Enjay Posted July 22, 2009 // 23 July 2009 00:05:25 // C:\Doom\zdoom2\hexen.wad // ************************************************************** // ACC script decompiler (c) 1995 Luc Cluitmans * // DeePsea Port 9-16-2004 by Jack Vermeulen (v1.15) * // ************************************************************** #include "common.acs" // BEHAVIOR 29 scripts, 15 strings // ================================================== // List of MAP variables: int mapvar0; int mapvar1; int mapvar2; int mapvar3; int mapvar4; int mapvar5; int mapvar6; int mapvar7; //==================== script 1 ==================== script 1 (void) { int var0; var0 = 0; Floor_LowerByValue(const:49, 16, 80); delay(random(const:8, 32)); var0 = 0; while(var0 < 3) { Floor_LowerByValueTimes8(5+var0, 254, 255); delay(random(const:8, 32)); var0++; } Pillar_BuildAndCrush(const:20, 64, 0, 25); delay(random(const:8, 32)); Ceiling_LowerAndCrush(const:21, 128, 20); delay(random(const:8, 32)); Floor_LowerByValue(const:22, 8, 16); delay(random(const:8, 32)); Floor_LowerByValue(const:23, 24, 40); delay(random(const:8, 32)); Floor_RaiseByValue(const:24, 16, 48); delay(random(const:8, 32)); Floor_LowerByValue(const:24, 24, 32); } //==================== script 2 ==================== script 2 (void) { if(gametype() != GAME_NET_DEATHMATCH) { delay(const:64); Stairs_BuildDown(const:3, 8, 16, 0, 0); Floor_LowerByValue(const:2, 8, 128); Floor_LowerByValue(const:98, 8, 128); Floor_LowerByValue(const:99, 8, 128); tagwait(const:99); Thing_Spawn(const:7, T_ETTIN, 224); delay(const:32); Thing_Spawn(const:8, T_ETTIN, 160); delay(const:32); Thing_Spawn(const:9, T_ETTIN, 112); delay(const:32); Thing_Spawn(const:10, T_ETTIN, 45); } } //==================== script 3 ==================== script 3 (void) { if(gametype() != GAME_NET_DEATHMATCH) { Pillar_BuildAndCrush(const:14, 8, 0, 25); Thing_Activate(const:18); } Floor_LowerByValue(const:15, 32, 128); Pillar_Open(const:54, 32, 32, 32); Floor_LowerByValue(const:55, 32, 24); Floor_LowerByValue(const:51, 8, 120); while(1) { Light_ChangeToValue(const:65, 176); Thing_Projectile(17, T_DART, random(55, 71), random(80, 128), 0); thingsound(17, "MaulatorHamSwing", 127); Light_Fade(const:65, 96, 4); delay(random(const:8, 32)); } } //==================== script 4 ==================== script 4 (void) { int var0; if(mapvar3 == 0) { var0 = 0; while(var0 < 9) { Floor_LowerByValue(25+var0, random(const:8, 32), random(const:8, 96)); delay(random(const:8, 32)); var0++; } var0 = 0; while(var0 < 9) { Floor_RaiseByValue(25+var0, random(const:8, 32), random(const:8, 96)); delay(random(const:8, 32)); var0++; } Pillar_BuildAndCrush(const:33, 16, 0, 25); delay(random(const:8, 32)); Pillar_BuildAndCrush(const:34, 16, 0, 25); delay(const:32); Pillar_BuildAndCrush(const:35, 16, 0, 25); Floor_LowerByValue(const:72, 32, 120); mapvar3 = 1; Thing_Activate(const:34); } } //==================== script 5 ==================== script 5 (void) { int var0; if(mapvar1 == 0) { var0 = 0; while(var0 < 4) { Floor_LowerByValue(5+var0, 8, 64); delay(random(const:8, 32)); var0++; } var0 = 0; while(var0 < 5) { Floor_LowerByValue(20+var0, 8, 64); delay(random(const:8, 32)); var0++; } var0 = 0; while(var0 < 4) { Floor_RaiseByValue(5+var0, 8, 64); delay(random(const:8, 32)); var0++; } var0 = 0; while(var0 < 5) { Floor_RaiseByValue(20+var0, 8, 64); delay(random(const:8, 32)); var0++; } Floor_LowerByValue(const:73, 32, 48); mapvar1 = 1; } Plat_DownWaitUpStay(const:4, 32, 64); } //==================== script 6 ==================== script 6 (void) { if(mapvar7 == 0) { mapvar7 = 1; setlinetexture(12, SIDE_FRONT, TEXTURE_MIDDLE, "FIRE14"); Floor_LowerByValue(const:63, 16, 104); changefloor(const:60, "X_001"); Floor_RaiseByValue(const:60, 4, 8); delay(const:64); Floor_LowerByValue(const:61, 2, 64); changefloor(const:62, "X_005"); tagwait(const:61); Floor_LowerByValue(const:61, 4, 128); delay(const:128); Floor_RaiseByValue(const:62, 2, 32); tagwait(const:62); changefloor(const:61, "X_005"); delay(const:64); Floor_RaiseByValue(const:63, 16, 104); Floor_LowerByValue(const:60, 4, 8); changefloor(const:60, "F_032"); mapvar7 = 0; delay(const:1000); sectorsound("FreezeDeath", 127); changefloor(const:61, "F_033"); changefloor(const:62, "F_033"); } } //==================== script 7 ==================== script 7 (void) { int var0; mapvar0 = random(const:1, 4); var0 = 0; while(var0 < 5) { Pillar_Open(45+var0, 16, 56, 56); var0++; } var0 = 0; while(var0 < 5) { Ceiling_CrushRaiseAndStay(45+var0, random(32, 64), 5); delay(random(8, 32)); var0++; } var0 = 0; while(var0 < 5) { Ceiling_CrushRaiseAndStay(45+var0, random(32, 64), 5); delay(random(8, 32)); var0++; } if(mapvar0 == 1) { Light_ChangeToValue(const:36, 192); } else if(mapvar0 == 2) { Light_ChangeToValue(const:37, 192); } else if(mapvar0 == 3) { Light_ChangeToValue(const:38, 192); } else if(mapvar0 == 4) { Light_ChangeToValue(const:39, 192); } if(gametype() != GAME_NET_DEATHMATCH) { ACS_Execute(const:29, 2, 0, 0, 0); } } //==================== script 8 ==================== script 8 (int arg0, int arg1) { if(mapvar0 == arg0) { Teleport_NewMap(const:2, 1); } else { Ceiling_LowerAndCrush(arg1, 200, 100); } } //==================== script 9 ==================== script 9 (void) { int var0; var0 = 1; while(var0 < 9) { FloorAndCeiling_RaiseByValue(79+var0, 32, 16*var0); tagwait(79+var0); var0++; } var0 = 0; while(var0 < 3) { Floor_LowerByValue(90+var0, 16, 128); var0++; } Floor_LowerByValue(const:93, 16, 48); } //==================== script 10 ==================== script 10 (void) { int var0; mapvar2 = mapvar2+1; if(mapvar2 == 1) { Pillar_Open(const:88, 32, 56, 56); Light_Fade(const:53, 144, 32); Light_Fade(const:92, 144, 32); Thing_Activate(const:1); } if(mapvar2 == 2) { Pillar_Open(const:89, 32, 56, 56); Light_Fade(const:53, 176, 32); Thing_Activate(const:2); delay(const:64); var0 = random(const:1, 4); if(var0 == 1) { Thing_Spawn(const:3, T_ITEMHEALTHFLASK, 64); } else if(var0 == 2) { Thing_Spawn(const:3, T_MANA2, 64); } else if(var0 == 3) { Thing_Spawn(const:3, T_MANA1, 64); } else if(var0 == 4) { Thing_Spawn(const:3, T_ETTIN, 64); } Thing_Spawn(const:29, T_ETTIN, 0); Thing_Spawn(const:30, T_ETTIN, 128); } } //==================== script 11 ==================== script 11 (void) { Door_Open(const:74, 32); Light_Fade(const:94, 160, 32); Light_Fade(const:95, 160, 32); } //==================== script 12 ==================== script 12 (void) { int var0; int var1; var0 = random(const:4, 5); if(var0 == 4) { while(var1 < 3) { Thing_Projectile(4, T_ICESHARD, 0, 80, var1*8); thingsound(4, "IceGuyAttack", 127); delay(const:4); Thing_Projectile(4, T_ICESHARD, 0, 80, var1*8); thingsound(4, "IceGuyAttack", 127); delay(const:4); Thing_Projectile(4, T_ICESHARD, 0, 80, var1*8); thingsound(4, "IceGuyAttack", 127); delay(const:4); var1++; } var1 = 3; while(var1 > 0) { Thing_Projectile(4, T_ICESHARD, 0, 80, var1*8); thingsound(4, "IceGuyAttack", 127); delay(const:4); Thing_Projectile(4, T_ICESHARD, 0, 80, var1*8); thingsound(4, "IceGuyAttack", 127); delay(const:4); Thing_Projectile(4, T_ICESHARD, 0, 80, var1*8); thingsound(4, "IceGuyAttack", 127); delay(const:4); var1--; } } if(var0 == 5) { while(var1 < 3) { Thing_Projectile(5, T_ICESHARD, 128, 80, var1*8); thingsound(5, "IceGuyAttack", 127); delay(const:4); Thing_Projectile(5, T_ICESHARD, 128, 80, var1*8); thingsound(5, "IceGuyAttack", 127); delay(const:4); Thing_Projectile(5, T_ICESHARD, 128, 80, var1*8); thingsound(5, "IceGuyAttack", 127); delay(const:4); var1++; } var1 = 3; while(var1 > 0) { Thing_Projectile(5, T_ICESHARD, 128, 80, var1*8); thingsound(5, "IceGuyAttack", 127); delay(const:4); Thing_Projectile(5, T_ICESHARD, 128, 80, var1*8); thingsound(5, "IceGuyAttack", 127); delay(const:4); Thing_Projectile(5, T_ICESHARD, 128, 80, var1*8); thingsound(5, "IceGuyAttack", 127); delay(const:4); var1--; } } } //==================== script 13 ==================== script 13 (void) { int var0; Door_Open(const:13, 8); Thing_Activate(const:6); while(var0 < 3) { Light_ChangeToValue(40+var0, 144); var0++; } while(1) { Thing_ProjectileGravity(15, T_FIREBALL1, 0, random(8, 32), random(32, 48)); thingsound(15, "FireDemonAttack", 127); delay(random(8, 48)); Thing_ProjectileGravity(16, T_FIREBALL1, 128, random(8, 32), random(32, 48)); thingsound(16, "FireDemonAttack", 127); delay(random(8, 48)); } } //==================== script 14 ==================== script 14 (void) { Door_Open(const:71, 32); Thing_Spawn(const:12, T_ETTIN, 64); Thing_Spawn(const:13, T_ETTIN, 224); Thing_Spawn(const:14, T_ETTIN, 160); } //==================== script 15 ==================== script 15 (void) { while(1) { setlinetexture(1, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(1, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(19, T_RIPPERBALL, 64, 96, 0); thingsound(19, "FireDemonAttack", 127); Light_ChangeToValue(const:56, 160); delay(const:3); Light_Fade(const:56, 128, 5); setlinetexture(1, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(1, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); setlinetexture(2, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(2, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(21, T_RIPPERBALL, 64, 96, 0); thingsound(21, "FireDemonAttack", 127); Light_ChangeToValue(const:57, 160); delay(const:3); Light_Fade(const:57, 128, 5); setlinetexture(2, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(2, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); setlinetexture(3, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(3, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(23, T_RIPPERBALL, 64, 96, 0); thingsound(23, "FireDemonAttack", 127); Light_ChangeToValue(const:58, 160); delay(const:3); Light_Fade(const:58, 128, 4); setlinetexture(3, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(3, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); setlinetexture(4, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(4, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(25, T_RIPPERBALL, 64, 96, 0); thingsound(25, "FireDemonAttack", 127); Light_ChangeToValue(const:59, 160); delay(const:3); Light_Fade(const:59, 128, 4); setlinetexture(4, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(4, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); setlinetexture(5, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(5, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(27, T_RIPPERBALL, 64, 96, 0); thingsound(27, "FireDemonAttack", 127); Light_ChangeToValue(const:64, 160); delay(const:3); Light_Fade(const:64, 128, 4); setlinetexture(5, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(5, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); setlinetexture(6, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(6, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(28, T_RIPPERBALL, 192, 96, 0); thingsound(28, "FireDemonAttack", 127); Light_ChangeToValue(const:64, 160); delay(const:3); Light_Fade(const:64, 128, 5); setlinetexture(6, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(6, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); setlinetexture(7, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(7, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(26, T_RIPPERBALL, 192, 96, 0); thingsound(26, "FireDemonAttack", 127); Light_ChangeToValue(const:59, 160); delay(const:3); Light_Fade(const:59, 128, 5); setlinetexture(7, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(7, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); setlinetexture(8, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(8, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(24, T_RIPPERBALL, 192, 96, 0); thingsound(24, "FireDemonAttack", 127); Light_ChangeToValue(const:58, 160); delay(const:3); Light_Fade(const:58, 128, 5); setlinetexture(8, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(8, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); setlinetexture(9, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(9, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(22, T_RIPPERBALL, 192, 96, 0); thingsound(22, "FireDemonAttack", 127); Light_ChangeToValue(const:57, 160); delay(const:3); Light_Fade(const:57, 128, 5); setlinetexture(9, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(9, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); setlinetexture(10, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(10, SIDE_FRONT, TEXTURE_MIDDLE, "spawn07"); Thing_Projectile(20, T_RIPPERBALL, 192, 96, 0); thingsound(20, "FireDemonAttack", 127); Light_ChangeToValue(const:56, 160); delay(const:3); Light_Fade(const:56, 128, 5); setlinetexture(10, SIDE_FRONT, TEXTURE_MIDDLE, "spawn06"); delay(const:4); setlinetexture(10, SIDE_FRONT, TEXTURE_MIDDLE, "spawn05"); delay(const:2); } } //==================== script 16 ==================== script 16 (void) { Thing_Spawn(const:31, T_BRIDGE, 0); Thing_Spawn(const:32, T_BRIDGE, 0); } //==================== script 17 ==================== script 17 (void) { if(mapvar4 == 1) { Plat_DownWaitUpStay(4, 32, 64); } } //==================== script 18 ==================== script 18 (void) { if(mapvar5 == 1) { Floor_LowerByValue(const:44, 16, 128); mapvar5 = 0; } } //==================== script 19 ==================== script 19 (void) { mapvar5 = 1; Light_Fade(const:98, 208, 32); mapvar4 = 1; Light_Fade(const:99, 208, 32); Light_Fade(const:2, 128, 32); Thing_Deactivate(const:35); } //==================== script 20 ==================== script 20 (void) { if(gametype() != GAME_NET_DEATHMATCH) { if(++mapvar6 == 2) { ACS_Execute(const:16, 2, 0, 0, 0); } } } //==================== script 21 ==================== script 21 (void) { Door_Open(const:100, 16); } //==================== script 22 ==================== script 22 (void) { Door_Open(const:101, 16); } //==================== script 23 ==================== script 23 (void) { if(mapvar7 == 0) { mapvar7 = 1; Floor_LowerByValue(const:63, 16, 104); delay(const:210); Floor_RaiseByValue(const:63, 16, 104); mapvar7 = 0; } } //==================== script 24 ==================== script 24 (void) { print(s:"THIS PATH IS BARRED"); } //==================== script 25 ==================== script 25 (void) { if(gametype() == GAME_NET_DEATHMATCH) { terminate; } Ceiling_RaiseByValue(const:10, 8, 32); } //==================== script 100 ==================== script 100 OPEN { Light_Glow(const:96, 160, 144, 8); setlinespecial(12, 129 /*UsePuzzleItem*/, 9, 6, 0, 0, 0); } //==================== script 200 ==================== script 200 OPEN { if(gametype() != GAME_NET_DEATHMATCH) { terminate; } ACS_Execute(21, 3, 0, 0, 0); ACS_Execute(22, 3, 0, 0, 0); Stairs_BuildDown(const:3, 8, 16, 0, 0); Floor_LowerByValue(const:2, 8, 128); Floor_LowerByValue(const:98, 8, 128); Floor_LowerByValue(const:99, 8, 128); delay(const:128); Ceiling_RaiseByValue(const:10, 8, 32); } //==================== script 254 ==================== script 254 OPEN { int var0; delay(random(4, 7)*100); var0 = random(1, 5); switch(var0) { case 1: ambientsound("IceStartMove", random(const:20, 90)); break; case 2: ambientsound("EarthStartMove", random(const:50, 80)); break; case 3: ambientsound("IceStartMove", random(const:50, 90)); break; case 4: ambientsound("EarthStartMove", random(const:50, 80)); break; case 5: ambientsound("IceStartMove", random(const:20, 60)); break; } restart; } //==================== script 255 ==================== script 255 OPEN { int var0; delay(const:8400); var0 = random(const:0, 1); if(var0 == 1) { Thing_Spawn(255, T_ETTIN, 64); } var0 = random(const:0, 1); if(var0 == 1) { Thing_Spawn(254, T_ETTIN, 196); } var0 = random(const:0, 1); if(var0 == 1) { Thing_Spawn(253, T_ICEGOLEM, 0); } var0 = random(const:0, 1); if(var0 == 1) { Thing_Spawn(252, T_FIREGARGOYLE, 128); } var0 = random(const:0, 1); if(var0 == 1) { Thing_Spawn(251, T_ETTIN, 64); } var0 = random(const:0, 1); if(var0 == 1) { Thing_Spawn(250, T_ETTIN, 0); } var0 = random(const:0, 1); if(var0 == 1) { Thing_Spawn(249, T_ETTIN, 0); } var0 = random(const:0, 1); if(var0 == 1) { Thing_Spawn(248, T_FIREGARGOYLE, 64); } restart; } // ================================================== // Strings: // [ 0] 'MaulatorHamSwing' // [ 1] 'FIRE14' // [ 2] 'X_001' // [ 3] 'X_005' // [ 4] 'F_032' // [ 5] 'FreezeDeath' // [ 6] 'F_033' // [ 7] 'IceGuyAttack' // [ 8] 'FireDemonAttack' // [ 9] 'spawn06' // [ 10] 'spawn07' // [ 11] 'spawn05' // [ 12] 'THIS PATH IS BARRED' // [ 13] 'IceStartMove' // [ 14] 'EarthStartMove' 0 Share this post Link to post
Shadow Dweller Posted July 23, 2009 Holy crap, lol! Yeah, I think that's all for questions, Thanks guys! Also DEACC.exe is working fine now, thanks again! 0 Share this post Link to post
printz Posted July 23, 2009 Gez said:Doom Builder does. Doom Builder 2 doesn't. Well I hope it does by the time I switch to DB2. -_- 0 Share this post Link to post
fraggle Posted July 24, 2009 printz said:Well I hope it does by the time I switch to DB2. -_- I wouldn't have thought it would be an issue anyway - it's not like you should be decompiling things constantly anyway. If you have a map that you don't have the source code for because you've lost it or someone else made it, you can just do a one-off run of the decompiler and copy the generated code. You certainly shouldn't be constantly compiling and decompiling scripts. 0 Share this post Link to post