/* To begin, type in the console: include dump_used_assets enableevent all Open your map. In 2D mode, press CTRL+V to search for the tiles and sounds used in the current map. You can set the gamevar "verbose" to 1 if you want verbose .csv formatted information that would normally clog up the output. Tip: With pk_quickmapcycling enabled, Ctrl-(LShift-)X loads the next (previous) map in a directory. The results from every map will be accumulated into master lists. When you have searched for tiles in all desired maps, press CTRL+D to print the finished lists. The results will be printed in mapster32.log. */ include names.h gamearray usedTiles MAXTILES gamearray usedSounds MAXSOUNDS definequote 0 definequote 1 %ld definequote 11 sprite,%ld, definequote 12 floor,%ld, definequote 13 ceiling,%ld, definequote 14 wall,%ld, definequote 15 overwall,%ld, definequote 21 MUSICANDSFX triggered,%ld, definequote 22 MUSICANDSFX ambient,%ld, definequote 23 sector one-time,%ld, definequote 24 MIKE,%ld, definequote 25 switch,%ld, definequote 26 MIRROR,%ld, definequote 27 sector 65534,%ld, definequote 28 doortile,%ld, definequote 101 Searching for tiles used in current map... definequote 102 Tile search finished. definequote 103 Dumping tiles, cumulatively... definequote 104 Tile dump finished. definequote 105 Searching for sounds used in current map... definequote 106 Sound search finished. definequote 107 Dumping sounds, cumulatively... definequote 108 Sound dump finished. definequote 109 Search finished. definequote 110 Dump finished. gamevar variable 0 0 gamevar verbose 0 0 gamevar index 0 0 gamevar flag 0 0 gamevar input 0 0 defstate tile_search quote 101 for variable allsprites { set index .picnum ifge index 0 ifle index MAXTILES set usedTiles[index] 1 ife verbose 1 { qsprintf 0 11 .picnum quote 0 } } for variable allsectors { set index sector[variable].floorpicnum ifge index 0 ifle index MAXTILES set usedTiles[index] 2 set index sector[variable].ceilingpicnum ifge index 0 ifle index MAXTILES set usedTiles[index] 3 ife verbose 1 { qsprintf 0 12 sector[variable].floorpicnum quote 0 qsprintf 0 13 sector[variable].ceilingpicnum quote 0 } } for variable allwalls { set index wall[variable].picnum ifge index 0 ifle index MAXTILES set usedTiles[index] 4 set index wall[variable].overpicnum ifge index 0 ifle index MAXTILES set usedTiles[index] 5 ife verbose 1 { qsprintf 0 14 wall[variable].picnum quote 0 qsprintf 0 15 wall[variable].overpicnum quote 0 } } quote 102 ends defstate tile_dump quote 103 for variable range MAXTILES ifn usedTiles[variable] 0 { qsprintf 0 1 variable quote 0 } quote 104 ends // these long "ife" lists exist because switch/case is broken/was broken at the original time of writing // the three commented switches do not play sounds because their hitag is used for setting a multi-switch combination defstate switch_identify ife input ACCESSSWITCH set flag 1 ife input SLOTDOOR set flag 1 ife input 133 set flag 1 ife input LIGHTSWITCH set flag 1 ife input 135 set flag 1 ife input SPACEDOORSWITCH set flag 1 ife input 137 set flag 1 ife input SPACELIGHTSWITCH set flag 1 ife input 139 set flag 1 ife input FRANKENSTINESWITCH set flag 1 ife input 141 set flag 1 ife input MULTISWITCH set flag 1 ife input 147 set flag 1 ife input 148 set flag 1 ife input 149 set flag 1 // ife input DIPSWITCH set flag 1 ife input 163 set flag 1 ife input DIPSWITCH2 set flag 1 ife input 165 set flag 1 // ife input TECHSWITCH set flag 1 ife input 167 set flag 1 ife input DIPSWITCH3 set flag 1 ife input 169 set flag 1 ife input ACCESSSWITCH2 set flag 1 ife input LIGHTSWITCH2 set flag 1 ife input 713 set flag 1 ife input POWERSWITCH1 set flag 1 ife input 861 set flag 1 ife input LOCKSWITCH1 set flag 1 ife input 863 set flag 1 ife input POWERSWITCH2 set flag 1 ife input 865 set flag 1 ife input HANDSWITCH set flag 1 ife input 1112 set flag 1 ife input PULLSWITCH set flag 1 ife input 1123 set flag 1 // ife input ALIENSWITCH set flag 1 ife input 1143 set flag 1 ends defstate doortile_identify ife input DOORTILE1 set flag 1 ife input DOORTILE2 set flag 1 ife input DOORTILE3 set flag 1 ife input DOORTILE4 set flag 1 ife input DOORTILE5 set flag 1 ife input DOORTILE6 set flag 1 ife input DOORTILE7 set flag 1 ife input DOORTILE8 set flag 1 ife input DOORTILE9 set flag 1 ife input DOORTILE10 set flag 1 ife input DOORTILE11 set flag 1 ife input DOORTILE12 set flag 1 ife input DOORTILE14 set flag 1 ife input DOORTILE15 set flag 1 ife input DOORTILE16 set flag 1 ife input DOORTILE17 set flag 1 ife input DOORTILE18 set flag 1 ife input DOORTILE19 set flag 1 ife input DOORTILE20 set flag 1 ife input DOORTILE21 set flag 1 ife input DOORTILE22 set flag 1 ife input DOORTILE23 set flag 1 ends defstate sound_search quote 105 for variable allsprites, ifactor MUSICANDSFX, ifl .lotag 1000 // rule out echo effect { // This is how the code SHOULD be: // activation sounds / triggered sounds (e.g. elevators) sectgetlotag ifn LOTAG 0, ifl LOTAG 10000 { ifn .lotag 0 ifl .lotag 500 { set index .lotag ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 1 ife verbose 1 { qsprintf 0 21 .lotag quote 0 } } ifn .hitag 0 ifl .hitag 500 { set index .hitag ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 1 ife verbose 1 { qsprintf 0 21 .hitag quote 0 } } } // ambient sounds else { ifn .lotag 0 ifl .lotag 500 { set index .lotag ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 2 ife verbose 1 { qsprintf 0 22 .lotag quote 0 } } } } // one-time sector sounds for variable allsectors, ifge sector[variable].lotag 10000, ifl sector[variable].lotag 16383 { set index sector[variable].lotag subvar index 10000 ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 3 ife verbose 1 { qsprintf 0 23 index quote 0 } } // mikesnd for variable allsprites, ifactor MIKE { set index .hitag // this one's clever -- by default it will play sound 0, as seen in E4L7 ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 4 ife verbose 1 { qsprintf 0 24 .hitag quote 0 } } // switches for variable allsprites { set flag 0 set input .picnum state switch_identify ife flag 1, ifn .hitag 0 { set index .hitag ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 5 ife verbose 1 { qsprintf 0 25 .hitag quote 0 } } } // mirror for variable allwalls { set index 0 ife wall[variable].picnum MIRROR set index wall[variable].lotag ife wall[variable].overpicnum MIRROR set index wall[variable].lotag ifn index 0 { ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 6 ife verbose 1 { qsprintf 0 26 index quote 0 } } } // sector lotag 65534 (E1L2 ending) customexitsound for variable allsectors, ife sector[variable].lotag 65534 { set index sector[variable].hitag ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 7 ife verbose 1 { qsprintf 0 27 sector[variable].hitag quote 0 } } // doortiles for variable allsprites { set flag 0 set input .picnum state doortile_identify ife flag 1, ifn .hitag 0 { set index .hitag ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 8 ife verbose 1 { qsprintf 0 28 .hitag quote 0 } } } for variable allwalls { set flag 0 set input wall[variable].picnum state doortile_identify set input wall[variable].overpicnum state doortile_identify ife flag 1, ifn wall[variable].lotag 0, ifn wall[variable].hitag 0 { set index wall[variable].hitag ifge index 0 ifle index MAXSOUNDS set usedSounds[index] 8 ife verbose 1 { qsprintf 0 28 wall[variable].hitag quote 0 } } } quote 106 ends defstate sound_dump quote 107 for variable range MAXSOUNDS ifn usedSounds[variable] 0 { qsprintf 0 1 variable quote 0 } quote 108 ends onevent EVENT_KEYS2D ifeitherctrl { ifhitkey KEY_V // find { state tile_search state sound_search quote 109 } ifhitkey KEY_D // dump { state tile_dump state sound_dump quote 110 } } endevent